Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
services
t3o sites
typo3.org
typo3_roadmap
Commits
28e257af
Commit
28e257af
authored
Jun 14, 2018
by
Thomas Löffler
Browse files
Use local amcharts
parent
bcd1e38a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Classes/Controller/RoadmapController.php
View file @
28e257af
...
...
@@ -77,12 +77,12 @@ class RoadmapController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControll
*/
protected
function
renderCharts
(
$majorVersions
)
{
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts'
,
'
https://www.amcharts.com/lib/3
/amcharts.js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_serial'
,
'
https://www.amcharts.com/lib/3
/serial.js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_gantt'
,
'
https://www.amcharts.com/lib/3
/gantt.js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_lightheme'
,
'
https://www.amcharts.com/lib/3/themes/light
.js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_export'
,
'
https://www.amcharts.com/lib/3/plugins/expor
t/export.js'
);
$this
->
pageRenderer
->
addCssFile
(
'
https://www.amcharts.com/lib/3/plugins/export
/export.css'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts'
,
'
EXT:typo3_roadmap/Resources/Public/JavaScript
/amcharts.
min.
js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_serial'
,
'
EXT:typo3_roadmap/Resources/Public/JavaScript
/serial.
min.
js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_gantt'
,
'
EXT:typo3_roadmap/Resources/Public/JavaScript
/gantt.
min.
js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_lightheme'
,
'
EXT:typo3_roadmap/Resources/Public/JavaScript/lighttheme.min
.js'
);
$this
->
pageRenderer
->
addJsLibrary
(
'amcharts_export'
,
'
EXT:typo3_roadmap/Resources/Public/JavaScrip
t/export.
min.
js'
);
$this
->
pageRenderer
->
addCssFile
(
'
EXT:typo3_roadmap/Resources/Public/Css
/export.css'
);
// @TODO comment css
$data
=
$this
->
generateChartArray
(
$majorVersions
);
$this
->
view
->
assign
(
'data'
,
$data
);
...
...
Resources/Public/Css/export.css
0 → 100644
View file @
28e257af
.amcharts-export-canvas
{
position
:
absolute
;
display
:
none
;
z-index
:
1
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
background-color
:
#fff
}
.amcharts-export-canvas.active
{
display
:
block
}
.amcharts-export-menu
{
position
:
absolute
;
z-index
:
2
;
opacity
:
.5
;
color
:
#000
}
.amcharts-main-div
:hover
.amcharts-export-menu
,
.amcharts-stock-div
:hover
.amcharts-export-menu
,
.amcharts-export-menu.active
{
opacity
:
1
}
.amcharts-export-menu-top-left
>
ul
>
li
>
ul
:after
{
content
:
""
;
position
:
absolute
;
top
:
13px
;
right
:
100%
;
z-index
:
1000
;
border-top
:
7px
solid
transparent
;
border-left
:
7px
solid
transparent
;
border-right
:
7px
solid
#fff
;
border-bottom
:
7px
solid
transparent
}
.amcharts-export-menu-top-left
>
ul
>
li
>
ul
>
li
:first-child
>
a
:after
{
content
:
""
;
position
:
absolute
;
top
:
12px
;
right
:
100%
;
z-index
:
1001
;
border-top
:
8px
solid
transparent
;
border-left
:
8px
solid
transparent
;
border-right
:
8px
solid
#e2e2e2
;
border-bottom
:
8px
solid
transparent
}
.amcharts-export-menu-top-right
>
ul
>
li
>
ul
:after
{
content
:
""
;
position
:
absolute
;
top
:
13px
;
left
:
100%
;
z-index
:
1000
;
border-top
:
7px
solid
transparent
;
border-left
:
7px
solid
#fff
;
border-right
:
7px
solid
transparent
;
border-bottom
:
7px
solid
transparent
}
.amcharts-export-menu-top-right
>
ul
>
li
>
ul
>
li
:first-child
>
a
:after
{
content
:
""
;
position
:
absolute
;
top
:
12px
;
left
:
100%
;
z-index
:
1001
;
border-top
:
8px
solid
transparent
;
border-left
:
8px
solid
#e2e2e2
;
border-right
:
8px
solid
transparent
;
border-bottom
:
8px
solid
transparent
}
.amcharts-export-menu-bottom-left
>
ul
>
li
>
ul
:after
{
content
:
""
;
position
:
absolute
;
bottom
:
13px
;
right
:
100%
;
z-index
:
1000
;
border-top
:
7px
solid
transparent
;
border-left
:
7px
solid
transparent
;
border-right
:
7px
solid
#fff
;
border-bottom
:
7px
solid
transparent
}
.amcharts-export-menu-bottom-left
>
ul
>
li
>
ul
>
li
:last-child
>
a
:after
{
content
:
""
;
position
:
absolute
;
bottom
:
12px
;
right
:
100%
;
z-index
:
1001
;
border-top
:
8px
solid
transparent
;
border-left
:
8px
solid
transparent
;
border-right
:
8px
solid
#e2e2e2
;
border-bottom
:
8px
solid
transparent
}
.amcharts-export-menu-bottom-right
>
ul
>
li
>
ul
:after
{
content
:
""
;
position
:
absolute
;
bottom
:
13px
;
left
:
100%
;
z-index
:
1000
;
border-top
:
7px
solid
transparent
;
border-left
:
7px
solid
#fff
;
border-right
:
7px
solid
transparent
;
border-bottom
:
7px
solid
transparent
}
.amcharts-export-menu-bottom-right
>
ul
>
li
>
ul
>
li
:last-child
>
a
:after
{
content
:
""
;
position
:
absolute
;
bottom
:
12px
;
left
:
100%
;
z-index
:
1001
;
border-top
:
8px
solid
transparent
;
border-left
:
8px
solid
#e2e2e2
;
border-right
:
8px
solid
transparent
;
border-bottom
:
8px
solid
transparent
}
.amcharts-export-menu
ul
{
list-style
:
none
;
margin
:
0
;
padding
:
0
}
.amcharts-export-menu
li
{
position
:
relative
;
display
:
block
;
z-index
:
1
}
.amcharts-export-menu
li
>
ul
{
position
:
absolute
;
display
:
none
;
border
:
1px
solid
#e2e2e2
;
margin-top
:
-1px
;
background
:
#fff
}
.amcharts-export-menu
li
>
a
{
position
:
relative
;
display
:
block
;
color
:
#000
;
text-decoration
:
none
;
padding
:
12px
;
z-index
:
2
;
white-space
:
nowrap
;
border-bottom
:
1px
solid
#f2f2f2
}
.amcharts-export-menu
li
:last-child
>
a
{
border-bottom
:
0
}
.amcharts-export-menu
li
>
a
>
img
{
border
:
0
}
.amcharts-export-menu-top-left
{
top
:
0
;
left
:
0
}
.amcharts-export-menu-bottom-left
{
bottom
:
0
;
left
:
0
}
.amcharts-export-menu-top-right
{
top
:
0
;
right
:
0
}
.amcharts-export-menu-bottom-right
{
bottom
:
0
;
right
:
0
}
.amcharts-export-menu
li
:hover
>
ul
,
.amcharts-export-menu
li
.active
>
ul
{
display
:
block
}
.amcharts-export-menu
li
:hover
>
a
,
.amcharts-export-menu
li
.active
>
a
{
color
:
#fff
;
background-color
:
#636363
}
.amcharts-export-menu-top-left
li
:hover
>
ul
,
.amcharts-export-menu-top-left
li
.active
>
ul
{
left
:
100%
;
top
:
0
}
.amcharts-export-menu-bottom-left
li
:hover
>
ul
,
.amcharts-export-menu-bottom-left
li
.active
>
ul
{
left
:
100%
;
bottom
:
0
}
.amcharts-export-menu-top-right
li
:hover
>
ul
,
.amcharts-export-menu-top-right
li
.active
>
ul
{
top
:
0
;
right
:
100%
}
.amcharts-export-menu-bottom-right
li
:hover
>
ul
,
.amcharts-export-menu-bottom-right
li
.active
>
ul
{
bottom
:
0
;
right
:
100%
}
.amcharts-export-menu
.export-main
>
a
,
.amcharts-export-menu
.export-drawing
>
a
,
.amcharts-export-menu
.export-delayed-capturing
>
a
{
display
:
block
;
overflow
:
hidden
;
text-indent
:
-13333337px
;
width
:
36px
;
height
:
36px
;
padding
:
0
;
background-repeat
:
no-repeat
;
background-image
:
url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTEiIGhlaWdodD0iMTQiPjxwYXRoIGQ9Ik0zIDBIOFY1aDNMNS41IDEwIDAgNUgzVjAiIGZpbGw9IiM4ODgiLz48cGF0aCBmaWxsPSIjODg4IiBkPSJNMCAxMmgxMXYySDB6Ii8+PC9zdmc+)
;
background-color
:
#fff
;
background-position
:
center
;
-webkit-box-shadow
:
1px
1px
3px
0
rgba
(
0
,
0
,
0
,
.5
);
-moz-box-shadow
:
1px
1px
3px
0
rgba
(
0
,
0
,
0
,
.5
);
box-shadow
:
1px
1px
3px
0
rgba
(
0
,
0
,
0
,
.5
);
border-radius
:
18px
;
margin
:
8px
8px
0
10px
}
.amcharts-export-menu
.export-drawing
>
a
{
background-image
:
url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTYiIGhlaWdodD0iMTciPjxwYXRoIGZpbGw9IiM4ODgiIGQ9Ik0wIDE2aDE0djFIMHoiLz48cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTIsLTEwKSIgZmlsbD0iIzg4OCIgZD0iTTE3LjA5OCAyMC4zMDVjLS4xNDIuMTQ2LjEwMS4wNC4xMzcuMDA0LjAyNy0uMDI4LjIwNC0uMDkuNDg0LS4wOS4zMzguMC42MjYuMDkyLjc4Ny4yNTUuNDczLjQ3Mi40MjQuOTMyLjM5MyAxLjA3OGwtMi41MjEgMS4wNTUtMS41NzctMS41NzcgMS4wNTQtMi41MmMuMDM5LS4wMDkuMTA1LS4wMTguMTg4LS4wMTguMjE5LjAuNTU1LjA2OS44OTMuNDA3LjM3OC4zNzguMjQ2IDEuMTg4LjE2NiAxLjI3MUMxNy4wNjIgMjAuMjA3IDE3LjA2MiAyMC4yNjkgMTcuMDk4IDIwLjMwNXpNMjYuOTg0IDE0LjQ3MmMtLjAwOC0uNjc0LS42MS0xLjI1Ny0xLjMxLTEuOTMzLS4xMzQtLjEyOS0uNjc5LS42NzMtLjgwOS0uODA4LS42NzktLjcwMi0xLjI2Ni0xLjMxLTEuOTQzLTEuMzEtLjM3LjAtLjczNC4yMDctMS4xMTQuNTg3bC02Ljg1MiA2Ljg0N2MtLjAxMi4wMTYtMi44NzcgNy4zNTQtMi44NzcgNy4zNTQtLjAxMi4wMzIuMC4wNjMuMDIyLjA5MS4wMjEuMDIxLjA0NC4wMjkuMDY3LjAyOS4wMS4wLjAxOC0uMDAzLjAyOC0uMDA3LjAuMCA3LjM1Ny0yLjg2NCA3LjM2OS0yLjg3N2w2Ljg1NC02Ljg0N0MyNi44MDMgMTUuMjE2IDI2Ljk4OCAxNC44NDggMjYuOTg0IDE0LjQ3MnoiLz48L3N2Zz4=)
}
.amcharts-export-menu
.export-main
:hover
,
.amcharts-export-menu
.export-drawing
:hover
,
.amcharts-export-menu
.export-main.active
,
.amcharts-export-menu
.export-drawing.active
{
padding-bottom
:
100px
}
.amcharts-export-menu.amcharts-export-menu-bottom-left
.export-main
:hover
,
.amcharts-export-menu.amcharts-export-menu-bottom-left
.export-drawing
:hover
,
.amcharts-export-menu.amcharts-export-menu-bottom-right
.export-main
:hover
,
.amcharts-export-menu.amcharts-export-menu-bottom-right
.export-drawing
:hover
,
.amcharts-export-menu.amcharts-export-menu-bottom-left
.export-main.active
,
.amcharts-export-menu.amcharts-export-menu-bottom-left
.export-drawing.active
,
.amcharts-export-menu.amcharts-export-menu-bottom-right
.export-main.active
,
.amcharts-export-menu.amcharts-export-menu-bottom-right
.export-drawing.active
{
padding-bottom
:
0
;
padding-top
:
100px
}
.amcharts-export-menu
.export-main
:hover
>
a
,
.amcharts-export-menu
.export-main.active
>
a
{
background-image
:
url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTEiIGhlaWdodD0iMTQiPjxwYXRoIGQ9Ik0zIDBIOFY1aDNMNS41IDEwIDAgNUgzVjAiIGZpbGw9IiNmZmYiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAxMmgxMXYySDB6Ii8+PC9zdmc+)
}
.amcharts-export-menu
.export-drawing
:hover
>
a
,
.amcharts-export-menu
.export-drawing.active
>
a
{
background-image
:
url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTYiIGhlaWdodD0iMTciPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDE2aDE0djFIMHoiLz48cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTIsLTEwKSIgZmlsbD0iI2ZmZiIgZD0iTTE3LjA5OCAyMC4zMDVjLS4xNDIuMTQ2LjEwMS4wNC4xMzcuMDA0LjAyNy0uMDI4LjIwNC0uMDkuNDg0LS4wOS4zMzguMC42MjYuMDkyLjc4Ny4yNTUuNDczLjQ3Mi40MjQuOTMyLjM5MyAxLjA3OGwtMi41MjEgMS4wNTUtMS41NzctMS41NzcgMS4wNTQtMi41MmMuMDM5LS4wMDkuMTA1LS4wMTguMTg4LS4wMTguMjE5LjAuNTU1LjA2OS44OTMuNDA3LjM3OC4zNzguMjQ2IDEuMTg4LjE2NiAxLjI3MUMxNy4wNjIgMjAuMjA3IDE3LjA2MiAyMC4yNjkgMTcuMDk4IDIwLjMwNXpNMjYuOTg0IDE0LjQ3MmMtLjAwOC0uNjc0LS42MS0xLjI1Ny0xLjMxLTEuOTMzLS4xMzQtLjEyOS0uNjc5LS42NzMtLjgwOS0uODA4LS42NzktLjcwMi0xLjI2Ni0xLjMxLTEuOTQzLTEuMzEtLjM3LjAtLjczNC4yMDctMS4xMTQuNTg3bC02Ljg1MiA2Ljg0N2MtLjAxMi4wMTYtMi44NzcgNy4zNTQtMi44NzcgNy4zNTQtLjAxMi4wMzIuMC4wNjMuMDIyLjA5MS4wMjEuMDIxLjA0NC4wMjkuMDY3LjAyOS4wMS4wLjAxOC0uMDAzLjAyOC0uMDA3LjAuMCA3LjM1Ny0yLjg2NCA3LjM2OS0yLjg3N2w2Ljg1NC02Ljg0N0MyNi44MDMgMTUuMjE2IDI2Ljk4OCAxNC44NDggMjYuOTg0IDE0LjQ3MnoiLz48L3N2Zz4=)
}
.amcharts-export-menu
.export-close
>
a
,
.amcharts-export-menu
.export-close
:hover
>
a
,
.amcharts-export-menu
.export-close.active
>
a
{
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAQCAYAAADNo/U5AAAACXBIWXMAAAsTAAALEwEAmpwYAABBsGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU1NzcyLCAyMDE0LzAxLzEzLTE5OjQ0OjAwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo4M2Q5NDllYS1lMjE3LTQ3Y2QtYTU1Ni04MTQ3NmRjNWEwYWQ8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjZhMTQ5MTc1LTNiODItMTE3OC05ZjZmLWY0MWMwNTYyYzQxYTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDpkZGFhNTJkMi1mZDRiLTRkMmMtODEzOC01ZTEzNmQ4NGFjMDE8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6MDdhZmI1Y2UtYzQ1OS00YzQxLWJkMjItMTllMDJlMGE5YzVjPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOjA3YWZiNWNlLWM0NTktNGM0MS1iZDIyLTE5ZTAyZTBhOWM1Yzwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjgzZDk0OWVhLWUyMTctNDdjZC1hNTU2LTgxNDc2ZGM1YTBhZDwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6YmY3ZmRlNGYtZDk2MS00Njk4LWI0ZjAtMDJlYjEwOWE4OTA4PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA1LTE1VDEzOjE3OjQ5KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAyMSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5mcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+ZGVyaXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5jb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcDwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MDdhZmI1Y2UtYzQ1OS00YzQxLWJkMjItMTllMDJlMGE5YzVjPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA1LTE1VDEzOjE3OjQ5KzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAyMSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmRkYWE1MmQyLWZkNGItNGQyYy04MTM4LTVlMTM2ZDg0YWMwMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wNS0xNVQxMzoyMToyMSswMjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxNS0wNS0xNVQxMzoxMzoxNyswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE1LTA1LTE1VDEzOjIxOjIxKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNS0wNS0xNVQxMzoyMToyMSswMjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpUZXh0TGF5ZXJzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxwaG90b3Nob3A6TGF5ZXJOYW1lPlg8L3Bob3Rvc2hvcDpMYXllck5hbWU+CiAgICAgICAgICAgICAgICAgIDxwaG90b3Nob3A6TGF5ZXJUZXh0Plg8L3Bob3Rvc2hvcDpMYXllclRleHQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgIDwvcGhvdG9zaG9wOlRleHRMYXllcnM+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMzwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xNjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+HyMp+AAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA3UlEQVR42rSSXZECQQyEPygMrIVFAidhkQASQEIjYVsCSOAksBJAAlhAwvKSWcJBUQVVl6fM5Ke7k4z6vudTG/OFTQAktcAs/ja2TyVBUgVsgQq42F5PItYBCn8PTFNjAYvw5wM92x3gCNSSFCh1araLvAdNBi53VgMtgCuweRqE7RyogAPQxHsdcQBGf0cuaZ80APzaXn468urtniQ1CaXoayStct5AL4QfgToKfoBzIF2BadGVkVZRkIU7UdQDkqRZoDwJl3ROzea2u4LUvtpHOavkty9H/m9XfhsA0l9VuzQDWrIAAAAASUVORK5CYII=)
}
.amcharts-export-menu
.export-drawing-color
{
background
:
#000
;
width
:
35px
}
.amcharts-export-menu
.export-drawing-color
>
a
{
display
:
block
;
overflow
:
hidden
;
text-indent
:
-13333337px
}
.amcharts-export-menu
.export-drawing-color-red
{
background
:
red
}
.amcharts-export-menu
.export-drawing-color-green
{
background
:
#0f0
}
.amcharts-export-menu
.export-drawing-color-blue
{
background
:
#00f
}
.amcharts-export-menu
.export-drawing-color-white
{
background
:
#fff
}
.amcharts-export-fallback
{
position
:
absolute
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
background-color
:
#fff
}
.amcharts-export-fallback
textarea
{
border
:
0
;
outline
:
0
;
position
:
absolute
;
overflow
:
hidden
;
width
:
100%
;
height
:
100%
;
padding
:
20px
}
.amcharts-export-fallback-message
{
position
:
absolute
;
z-index
:
1
;
padding
:
20px
;
width
:
100%
;
background-color
:
#fff
}
.amcharts-export-menu
.export-delayed-capturing
>
a
{
text-indent
:
0
;
line-height
:
36px
;
vertical-align
:
middle
;
text-align
:
center
;
background-image
:
none
}
.amcharts-export-menu
,
.amcharts-export-canvas
.canvas-container
{
-webkit-transition
:
opacity
.5s
ease-out
;
-moz-transition
:
opacity
.5s
ease-out
;
-ms-transition
:
opacity
.5s
ease-out
;
-o-transition
:
opacity
.5s
ease-out
;
transition
:
opacity
.5s
ease-out
}
.amcharts-export-canvas.dropbox
.canvas-container
{
opacity
:
.5
}
.amcharts-export-menu
.export-drawing-shape
a
{
font
:
0
/
0
a
;
text-shadow
:
none
;
color
:
transparent
}
.amcharts-export-menu
li
img
{
height
:
20px
}
.amcharts-export-menu
.export-drawing-width
a
{
text-align
:
center
}
.amcharts-export-menu
.export-drawing-width
span
{
display
:
block
;
margin
:
0
auto
}
.amcharts-export-menu
.export-drawing-width
span
>
span
{
display
:
block
;
background
:
#000
;
border-radius
:
100%
}
.amcharts-export-menu
.export-drawing-shape
a
:hover
img
,
.amcharts-export-menu
.export-drawing-shape.active
a
img
{
-webkit-filter
:
invert
(
100%
);
filter
:
invert
(
100%
)
}
Resources/Public/JavaScript/amcharts.min.js
0 → 100644
View file @
28e257af
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Resources/Public/JavaScript/export.min.js
0 → 100644
View file @
28e257af
if
(
!
AmCharts
.
translations
[
"
export
"
])
{
AmCharts
.
translations
[
"
export
"
]
=
{}
}
if
(
!
AmCharts
.
translations
[
"
export
"
][
"
en
"
])
{
AmCharts
.
translations
[
"
export
"
][
"
en
"
]
=
{
"
fallback.save.text
"
:
"
CTRL + C to copy the data into the clipboard.
"
,
"
fallback.save.image
"
:
"
Rightclick -> Save picture as... to save the image.
"
,
"
capturing.delayed.menu.label
"
:
"
{{duration}}
"
,
"
capturing.delayed.menu.title
"
:
"
Click to cancel
"
,
"
menu.label.print
"
:
"
Print
"
,
"
menu.label.undo
"
:
"
Undo
"
,
"
menu.label.redo
"
:
"
Redo
"
,
"
menu.label.cancel
"
:
"
Cancel
"
,
"
menu.label.save.image
"
:
"
Download as ...
"
,
"
menu.label.save.data
"
:
"
Save as ...
"
,
"
menu.label.draw
"
:
"
Annotate ...
"
,
"
menu.label.draw.change
"
:
"
Change ...
"
,
"
menu.label.draw.add
"
:
"
Add ...
"
,
"
menu.label.draw.shapes
"
:
"
Shape ...
"
,
"
menu.label.draw.colors
"
:
"
Color ...
"
,
"
menu.label.draw.widths
"
:
"
Size ...
"
,
"
menu.label.draw.opacities
"
:
"
Opacity ...
"
,
"
menu.label.draw.text
"
:
"
Text
"
,
"
menu.label.draw.modes
"
:
"
Mode ...
"
,
"
menu.label.draw.modes.pencil
"
:
"
Pencil
"
,
"
menu.label.draw.modes.line
"
:
"
Line
"
,
"
menu.label.draw.modes.arrow
"
:
"
Arrow
"
,
"
label.saved.from
"
:
"
Saved from:
"
}
}
(
function
()
{
AmCharts
[
"
export
"
]
=
function
(
chart
,
config
)
{
var
_timer
;
var
_this
=
{
name
:
"
export
"
,
version
:
"
1.4.76
"
,
libs
:
{
async
:
true
,
autoLoad
:
true
,
reload
:
false
,
resources
:
[
"
fabric.js/fabric.min.js
"
,
"
FileSaver.js/FileSaver.min.js
"
,
{
"
jszip/jszip.min.js
"
:
[
"
xlsx/xlsx.min.js
"
],
"
pdfmake/pdfmake.min.js
"
:
[
"
pdfmake/vfs_fonts.js
"
]
}],
namespaces
:
{
"
pdfmake.min.js
"
:
"
pdfMake
"
,
"
jszip.min.js
"
:
"
JSZip
"
,
"
xlsx.min.js
"
:
"
XLSX
"
,
"
fabric.min.js
"
:
"
fabric
"
,
"
FileSaver.min.js
"
:
"
saveAs
"
},
loadTimeout
:
10000
,
unsupportedIE9libs
:
[
"
pdfmake.min.js
"
,
"
jszip.min.js
"
,
"
xlsx.min.js
"
]
},
config
:
{},
setup
:
{
chart
:
chart
,
hasBlob
:
false
,
wrapper
:
false
,
isIE
:
!!
window
.
document
.
documentMode
,
IEversion
:
window
.
document
.
documentMode
,
hasTouch
:
typeof
window
.
Touch
==
"
object
"
,
focusedMenuItem
:
undefined
,
hasClasslist
:
(
"
classList
"
in
document
.
createElement
(
"
_
"
))
},
drawing
:
{
enabled
:
false
,
undos
:
[],
redos
:
[],
buffer
:
{
position
:
{
x1
:
0
,
y1
:
0
,
x2
:
0
,
y2
:
0
,
xD
:
0
,
yD
:
0
}},
handler
:
{
undo
:
function
()
{
var
item
=
_this
.
drawing
.
undos
.
pop
();
if
(
item
)
{
item
.
selectable
=
true
;
_this
.
drawing
.
redos
.
push
(
item
);
if
(
item
.
action
==
"
added
"
)
{
_this
.
setup
.
fabric
.
remove
(
item
.
target
);
}
else
if
(
!
item
.
target
.
changed
&&
item
.
action
==
"
added:modified
"
)
{
_this
.
drawing
.
handler
.
undo
();
return
;
}
else
{
var
state
=
JSON
.
parse
(
item
.
state
);
item
.
target
.
recentState
=
item
.
state
;
if
(
item
.
target
instanceof
fabric
.
Group
)
{
state
=
_this
.
prepareGroupState
(
state
);
item
.
target
.
set
(
state
);
_this
.
drawing
.
handler
.
change
({
color
:
state
.
cfg
.
color
,
width
:
state
.
cfg
.
width
,
opacity
:
state
.
cfg
.
opacity
},
true
,
item
.
target
);
}
else
{
item
.
target
.
set
(
state
);
}
}
_this
.
setup
.
fabric
.
renderAll
();
}
},
redo
:
function
()
{
var
item
=
_this
.
drawing
.
redos
.
pop
();
if
(
item
)
{
item
.
selectable
=
true
;
_this
.
drawing
.
undos
.
push
(
item
);
if
(
item
.
action
==
"
added
"
)
{
_this
.
setup
.
fabric
.
add
(
item
.
target
);
}
else
if
(
item
.
action
==
"
added:modified
"
)
{
_this
.
drawing
.
handler
.
redo
();
return
;
}
var
state
=
JSON
.
parse
(
item
.
state
);
item
.
target
.
recentState
=
item
.
state
;
if
(
item
.
target
instanceof
fabric
.
Group
)
{
state
=
_this
.
prepareGroupState
(
state
);
item
.
target
.
set
(
state
);
_this
.
drawing
.
handler
.
change
({
color
:
state
.
cfg
.
color
,
width
:
state
.
cfg
.
width
,
opacity
:
state
.
cfg
.
opacity
},
true
,
item
.
target
);
}
else
{
item
.
target
.
set
(
state
);
}
_this
.
setup
.
fabric
.
renderAll
();
}
},
done
:
function
(
options
)
{
_this
.
drawing
.
enabled
=
false
;
_this
.
drawing
.
buffer
.
enabled
=
false
;
_this
.
drawing
.
undos
=
[];
_this
.
drawing
.
redos
=
[];
_this
.
createMenu
(
_this
.
config
.
menu
);
_this
.
setup
.
fabric
.
deactivateAll
();
if
(
_this
.
isElement
(
_this
.
setup
.
wrapper
)
&&
_this
.
isElement
(
_this
.
setup
.
wrapper
.
parentNode
)
&&
_this
.
setup
.
wrapper
.
parentNode
.
removeChild
)
{
_this
.
setup
.
wrapper
.
parentNode
.
removeChild
(
_this
.
setup
.
wrapper
);
_this
.
setup
.
wrapper
=
false
;
}
},
add
:
function
(
options
)
{
var
cfg
=
_this
.
deepMerge
({
top
:
_this
.
setup
.
fabric
.
height
/
2
,
left
:
_this
.
setup
.
fabric
.
width
/
2
},
options
||
{});
var
method
=
cfg
.
url
.
indexOf
(
"
.svg
"
)
!=
-
1
?
fabric
.
loadSVGFromURL
:
fabric
.
Image
.
fromURL
;
method
(
cfg
.
url
,
function
(
objects
,
options
)
{
var
group
=
options
!==
undefined
?
fabric
.
util
.
groupSVGElements
(
objects
,
options
)
:
objects
;
var
ratio
=
false
;
if
(
group
.
height
>
_this
.
setup
.
fabric
.
height
||
group
.
width
>
_this
.
setup
.
fabric
.
width
)
{
ratio
=
(
_this
.
setup
.
fabric
.
height
/
2
)
/
group
.
height
;
}
if
(
cfg
.
top
>
_this
.
setup
.
fabric
.
height
)
{
cfg
.
top
=
_this
.
setup
.
fabric
.
height
/
2
;
}
if
(
cfg
.
left
>
_this
.
setup
.
fabric
.
width
)
{
cfg
.
left
=
_this
.
setup
.
fabric
.
width
/
2
;
}
_this
.
drawing
.
buffer
.
isDrawing
=
true
;
group
.
set
({
originX
:
"
center
"
,
originY
:
"
center
"
,
top
:
cfg
.
top
,
left
:
cfg
.
left
,
width
:
ratio
?
group
.
width
*
ratio
:
group
.
width
,
height
:
ratio
?
group
.
height
*
ratio
:
group
.
height
,
fill
:
_this
.
drawing
.
color
});
_this
.
setup
.
fabric
.
add
(
group
);
});
},
change
:
function
(
options
,
skipped
,
target
)
{
var
cfg
=
_this
.
deepMerge
({},
options
||
{});
var
state
,
i1
,
rgba
;
var
current
=
target
||
_this
.
drawing
.
buffer
.
target
;
var
objects
=
current
?
current
.
_objects
?
current
.
_objects
:
[
current
]
:
null
;
if
(
cfg
.
mode
)
{
_this
.
drawing
.
mode
=
cfg
.
mode
;
}
if
(
cfg
.
width
)
{
_this
.
drawing
.
width
=
cfg
.
width
;
_this
.
drawing
.
fontSize
=
cfg
.
fontSize
=
cfg
.
width
*
3
;
if
(
_this
.
drawing
.
width
==
1
)
{
_this
.
drawing
.
fontSize
=
cfg
.
fontSize
=
_this
.
defaults
.
fabric
.
drawing
.
fontSize
;
}
}
if
(
cfg
.
fontSize
)
{
_this
.
drawing
.
fontSize
=
cfg
.
fontSize
;
}
if
(
cfg
.
color
)
{
_this
.
drawing
.
color
=
cfg
.
color
;
}
if
(
cfg
.
opacity
)
{
_this
.
drawing
.
opacity
=
cfg
.
opacity
;
}
rgba
=
_this
.
getRGBA
(
_this
.
drawing
.
color
);
rgba
.
pop
();
rgba
.
push
(
_this
.
drawing
.
opacity
);
_this
.
drawing
.
color
=
"
rgba(
"
+
rgba
.
join
()
+
"
)
"
;
_this
.
setup
.
fabric
.
freeDrawingBrush
.
color
=
_this
.
drawing
.
color
;
_this
.
setup
.
fabric
.
freeDrawingBrush
.
width
=
_this
.
drawing
.
width
;
if
(
current
)
{
state
=
JSON
.
parse
(
current
.
recentState
).
cfg
;
if
(
state
)
{
cfg
.
color
=
cfg
.
color
||
state
.
color
;
cfg
.
width
=
cfg
.
width
||
state
.
width
;
cfg
.
opacity
=
cfg
.
opacity
||
state
.
opacity
;
cfg
.
fontSize
=
cfg
.
fontSize
||
state
.
fontSize
;
rgba
=
_this
.
getRGBA
(
cfg