Version Description
Download this release
Release Info
Developer | bmarshall511 |
Plugin | WordPress Zero Spam |
Version | 5.4.1 |
Comparing to | |
See all releases |
Code changes from version 5.4.0 to 5.4.1
- assets/css/admin.css +262 -23
- assets/css/admin.css.map +1 -1
- assets/css/jquery-jvectormap-2.0.5.css +78 -74
- assets/img/icon-memberpress.svg +0 -21
- assets/js/Chart.bundle.min.js +4053 -3809
- assets/js/jquery-jvectormap-world-merc.js +1 -0
- assets/js/jquery-jvectormap-world-mill.js +0 -1
- assets/src/scss/admin.scss +144 -31
- core/admin/class-dashboard.php +63 -33
- core/admin/tables/class-logtable.php +53 -53
- core/class-utilities.php +18 -12
- includes/class-cli.php +11 -8
- includes/class-plugin.php +3 -6
- includes/templates/admin-bar-chart.php +101 -0
- includes/templates/admin-header.php +89 -90
- includes/templates/admin-hours-list.php +52 -0
- includes/templates/admin-ips.php +41 -31
- includes/templates/admin-line-chart.php +87 -26
- includes/templates/admin-map.php +52 -33
- includes/templates/admin-modal-details.php +1 -1
- includes/templates/admin-pie.php +40 -51
- modules/class-security.php +15 -4
- modules/class-zerospam.php +98 -67
- modules/comments/class-comments.php +4 -1
- modules/contactform7/class-contactform7.php +4 -1
- modules/davidwalsh/class-davidwalsh.php +0 -13
- modules/fluentforms/class-fluentforms.php +4 -1
- modules/formidable/class-formidable.php +4 -1
- modules/give/class-give.php +4 -1
- modules/gravityforms/class-gravityforms.php +40 -36
- modules/login/class-login.php +4 -1
- modules/mailchimpforwp/class-mailchimpforwp.php +4 -1
- modules/memberpress/class-memberpress.php +0 -375
- modules/registration/class-registration.php +4 -1
- modules/woocommerce/class-woocommerce.php +4 -1
- modules/wpforms/class-wpforms.php +4 -1
- readme.txt +12 -5
- uninstall.php +23 -2
- wordpress-zero-spam.php +2 -2
assets/css/admin.css
CHANGED
@@ -56,7 +56,7 @@
|
|
56 |
color: #fff;
|
57 |
}
|
58 |
|
59 |
-
.zerospam-list--data-actions .button, .zerospam-table-form .column-actions .button {
|
60 |
font-size: 11px;
|
61 |
padding: 0.4rem 0.5rem;
|
62 |
}
|
@@ -106,13 +106,16 @@
|
|
106 |
.zerospam-dashboard {
|
107 |
column-gap: 3rem;
|
108 |
display: grid;
|
109 |
-
grid-template-columns:
|
110 |
grid-template-rows: auto;
|
111 |
}
|
112 |
}
|
113 |
.zerospam-dashboard a {
|
114 |
color: var(--zerospam-accent);
|
115 |
}
|
|
|
|
|
|
|
116 |
|
117 |
a.zerospam-dashboard__menu-link {
|
118 |
align-items: center;
|
@@ -246,12 +249,37 @@ a.zerospam-dashboard__menu-link--active {
|
|
246 |
}
|
247 |
@media (min-width: 782px) {
|
248 |
.zerospam-block--map {
|
249 |
-
width: calc(
|
250 |
}
|
251 |
}
|
252 |
@media (min-width: 782px) {
|
253 |
.zerospam-block--list {
|
254 |
-
width: calc(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
}
|
256 |
}
|
257 |
|
@@ -265,21 +293,6 @@ a.zerospam-dashboard__menu-link--active {
|
|
265 |
.zerospam-blocks .zerospam-block, .zerospam-blocks .zerospam-form tr, .zerospam-form .zerospam-blocks tr {
|
266 |
margin: calc(var(--zerospam-block-gap) / 2);
|
267 |
}
|
268 |
-
.zerospam-blocks .zerospam-block--facebook, .zerospam-blocks .zerospam-block--twitter {
|
269 |
-
background-color: transparent;
|
270 |
-
border: 0;
|
271 |
-
box-shadow: none;
|
272 |
-
}
|
273 |
-
@media (min-width: 782px) {
|
274 |
-
.zerospam-blocks .zerospam-block--facebook {
|
275 |
-
width: 340px;
|
276 |
-
}
|
277 |
-
}
|
278 |
-
@media (min-width: 782px) {
|
279 |
-
.zerospam-blocks .zerospam-block--twitter {
|
280 |
-
width: calc(100% - var(--zerospam-block-gap) * 2 - 340px);
|
281 |
-
}
|
282 |
-
}
|
283 |
|
284 |
.zerospam-table-form .column-actions {
|
285 |
column-gap: 5px;
|
@@ -388,6 +401,10 @@ a.zerospam-dashboard__menu-link--active {
|
|
388 |
border: 1px solid var(--zerospam-trinary);
|
389 |
box-shadow: none;
|
390 |
}
|
|
|
|
|
|
|
|
|
391 |
.zerospam-table-form input[type=radio],
|
392 |
.zerospam-table-form input[type=checkbox],
|
393 |
.zerospam-form input[type=radio],
|
@@ -467,6 +484,10 @@ a.zerospam-dashboard__menu-link--active {
|
|
467 |
left: 1.7rem;
|
468 |
}
|
469 |
|
|
|
|
|
|
|
|
|
470 |
.zerospam-form-field-container {
|
471 |
align-items: center;
|
472 |
column-gap: 10px;
|
@@ -568,7 +589,7 @@ a.zerospam-dashboard__menu-link--active {
|
|
568 |
transform: rotate(-45deg);
|
569 |
}
|
570 |
|
571 |
-
.zerospam-type-blocked::before, .zerospam-type-login::before, .zerospam-type-registration::before, .zerospam-type-comment::before, .zerospam-type-fluent_form::before, .zerospam-type-wpforms::before, .zerospam-type-contactform7::before, .zerospam-type-givewp::before, .zerospam-type-
|
572 |
background-position: center;
|
573 |
background-repeat: no-repeat;
|
574 |
background-size: contain;
|
@@ -600,9 +621,6 @@ a.zerospam-dashboard__menu-link--active {
|
|
600 |
.zerospam-type-contactform7::before {
|
601 |
background-image: url("../../modules/contactform7/icon-cf7.png");
|
602 |
}
|
603 |
-
.zerospam-type-memberpress_registration::before, .zerospam-type-memberpress_login::before {
|
604 |
-
background-image: url("../img/icon-memberpress.svg");
|
605 |
-
}
|
606 |
.zerospam-type-givewp::before {
|
607 |
background-image: url("../../modules/give/icon-givewp.png");
|
608 |
}
|
@@ -616,11 +634,232 @@ a.zerospam-dashboard__menu-link--active {
|
|
616 |
background-image: url("../../modules/gravityforms/icon-gravity-forms.svg");
|
617 |
}
|
618 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
619 |
.zerospam-list {
|
620 |
list-style: none;
|
621 |
margin: 0;
|
622 |
padding: 0;
|
623 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
624 |
.zerospam-list--data-actions li, .zerospam-list--data li {
|
625 |
align-items: center;
|
626 |
column-gap: 15px;
|
56 |
color: #fff;
|
57 |
}
|
58 |
|
59 |
+
.zerospam-list--data-actions .button, .zerospam-list--top .button, .zerospam-table-form .column-actions .button {
|
60 |
font-size: 11px;
|
61 |
padding: 0.4rem 0.5rem;
|
62 |
}
|
106 |
.zerospam-dashboard {
|
107 |
column-gap: 3rem;
|
108 |
display: grid;
|
109 |
+
grid-template-columns: 300px minmax(0, 1fr);
|
110 |
grid-template-rows: auto;
|
111 |
}
|
112 |
}
|
113 |
.zerospam-dashboard a {
|
114 |
color: var(--zerospam-accent);
|
115 |
}
|
116 |
+
.zerospam-dashboard__sections {
|
117 |
+
margin-bottom: 40px;
|
118 |
+
}
|
119 |
|
120 |
a.zerospam-dashboard__menu-link {
|
121 |
align-items: center;
|
249 |
}
|
250 |
@media (min-width: 782px) {
|
251 |
.zerospam-block--map {
|
252 |
+
width: calc(65% - var(--zerospam-block-gap));
|
253 |
}
|
254 |
}
|
255 |
@media (min-width: 782px) {
|
256 |
.zerospam-block--list {
|
257 |
+
width: calc(35% - var(--zerospam-block-gap));
|
258 |
+
}
|
259 |
+
}
|
260 |
+
@media (min-width: 782px) {
|
261 |
+
.zerospam-block--line-chart {
|
262 |
+
width: calc(65% - var(--zerospam-block-gap));
|
263 |
+
}
|
264 |
+
}
|
265 |
+
@media (min-width: 782px) {
|
266 |
+
.zerospam-block--pie-chart {
|
267 |
+
width: calc(35% - var(--zerospam-block-gap));
|
268 |
+
}
|
269 |
+
}
|
270 |
+
@media (min-width: 782px) {
|
271 |
+
.zerospam-block--review .zerospam-block__content, .zerospam-block--review .zerospam-form td, .zerospam-form .zerospam-block--review td {
|
272 |
+
column-gap: 40px;
|
273 |
+
display: flex;
|
274 |
+
}
|
275 |
+
}
|
276 |
+
.zerospam-block--review .zerospam-block__content-col:first-child {
|
277 |
+
flex-grow: 1;
|
278 |
+
}
|
279 |
+
@media (min-width: 782px) {
|
280 |
+
.zerospam-block--review .zerospam-block__content-col:last-child {
|
281 |
+
flex-shrink: 0;
|
282 |
+
width: 32%;
|
283 |
}
|
284 |
}
|
285 |
|
293 |
.zerospam-blocks .zerospam-block, .zerospam-blocks .zerospam-form tr, .zerospam-form .zerospam-blocks tr {
|
294 |
margin: calc(var(--zerospam-block-gap) / 2);
|
295 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
296 |
|
297 |
.zerospam-table-form .column-actions {
|
298 |
column-gap: 5px;
|
401 |
border: 1px solid var(--zerospam-trinary);
|
402 |
box-shadow: none;
|
403 |
}
|
404 |
+
.zerospam-table-form select,
|
405 |
+
.zerospam-form select {
|
406 |
+
padding-right: 33px;
|
407 |
+
}
|
408 |
.zerospam-table-form input[type=radio],
|
409 |
.zerospam-table-form input[type=checkbox],
|
410 |
.zerospam-form input[type=radio],
|
484 |
left: 1.7rem;
|
485 |
}
|
486 |
|
487 |
+
.check-column input[type=checkbox] {
|
488 |
+
display: block;
|
489 |
+
}
|
490 |
+
|
491 |
.zerospam-form-field-container {
|
492 |
align-items: center;
|
493 |
column-gap: 10px;
|
589 |
transform: rotate(-45deg);
|
590 |
}
|
591 |
|
592 |
+
.zerospam-type-blocked::before, .zerospam-type-login::before, .zerospam-type-registration::before, .zerospam-type-comment::before, .zerospam-type-fluent_form::before, .zerospam-type-wpforms::before, .zerospam-type-contactform7::before, .zerospam-type-givewp::before, .zerospam-type-mailchimp4wp::before, .zerospam-type-woocommerce_registration::before, .zerospam-type-gravityforms::before, .zerospam-type-formidable::before {
|
593 |
background-position: center;
|
594 |
background-repeat: no-repeat;
|
595 |
background-size: contain;
|
621 |
.zerospam-type-contactform7::before {
|
622 |
background-image: url("../../modules/contactform7/icon-cf7.png");
|
623 |
}
|
|
|
|
|
|
|
624 |
.zerospam-type-givewp::before {
|
625 |
background-image: url("../../modules/give/icon-givewp.png");
|
626 |
}
|
634 |
background-image: url("../../modules/gravityforms/icon-gravity-forms.svg");
|
635 |
}
|
636 |
|
637 |
+
@keyframes row1 {
|
638 |
+
0% {
|
639 |
+
background-position: 0% 0%;
|
640 |
+
}
|
641 |
+
50% {
|
642 |
+
background-position: 50% 0%;
|
643 |
+
}
|
644 |
+
100% {
|
645 |
+
background-position: 0% 0%;
|
646 |
+
}
|
647 |
+
}
|
648 |
+
@keyframes row2 {
|
649 |
+
0% {
|
650 |
+
background-position: 0% 0%;
|
651 |
+
}
|
652 |
+
50% {
|
653 |
+
background-position: 55% 0%;
|
654 |
+
}
|
655 |
+
100% {
|
656 |
+
background-position: 0% 0%;
|
657 |
+
}
|
658 |
+
}
|
659 |
+
@keyframes row3 {
|
660 |
+
0% {
|
661 |
+
background-position: 0% 0%;
|
662 |
+
}
|
663 |
+
50% {
|
664 |
+
background-position: 60% 0%;
|
665 |
+
}
|
666 |
+
100% {
|
667 |
+
background-position: 0% 0%;
|
668 |
+
}
|
669 |
+
}
|
670 |
+
@keyframes row4 {
|
671 |
+
0% {
|
672 |
+
background-position: 0% 0%;
|
673 |
+
}
|
674 |
+
50% {
|
675 |
+
background-position: 65% 0%;
|
676 |
+
}
|
677 |
+
100% {
|
678 |
+
background-position: 0% 0%;
|
679 |
+
}
|
680 |
+
}
|
681 |
+
@keyframes row5 {
|
682 |
+
0% {
|
683 |
+
background-position: 0% 0%;
|
684 |
+
}
|
685 |
+
50% {
|
686 |
+
background-position: 70% 0%;
|
687 |
+
}
|
688 |
+
100% {
|
689 |
+
background-position: 0% 0%;
|
690 |
+
}
|
691 |
+
}
|
692 |
+
@keyframes row6 {
|
693 |
+
0% {
|
694 |
+
background-position: 0% 0%;
|
695 |
+
}
|
696 |
+
50% {
|
697 |
+
background-position: 75% 0%;
|
698 |
+
}
|
699 |
+
100% {
|
700 |
+
background-position: 0% 0%;
|
701 |
+
}
|
702 |
+
}
|
703 |
+
@keyframes row7 {
|
704 |
+
0% {
|
705 |
+
background-position: 0% 0%;
|
706 |
+
}
|
707 |
+
50% {
|
708 |
+
background-position: 80% 0%;
|
709 |
+
}
|
710 |
+
100% {
|
711 |
+
background-position: 0% 0%;
|
712 |
+
}
|
713 |
+
}
|
714 |
+
@keyframes row8 {
|
715 |
+
0% {
|
716 |
+
background-position: 0% 0%;
|
717 |
+
}
|
718 |
+
50% {
|
719 |
+
background-position: 85% 0%;
|
720 |
+
}
|
721 |
+
100% {
|
722 |
+
background-position: 0% 0%;
|
723 |
+
}
|
724 |
+
}
|
725 |
+
@keyframes row9 {
|
726 |
+
0% {
|
727 |
+
background-position: 0% 0%;
|
728 |
+
}
|
729 |
+
50% {
|
730 |
+
background-position: 90% 0%;
|
731 |
+
}
|
732 |
+
100% {
|
733 |
+
background-position: 0% 0%;
|
734 |
+
}
|
735 |
+
}
|
736 |
+
@keyframes row10 {
|
737 |
+
0% {
|
738 |
+
background-position: 0% 0%;
|
739 |
+
}
|
740 |
+
50% {
|
741 |
+
background-position: 95% 0%;
|
742 |
+
}
|
743 |
+
100% {
|
744 |
+
background-position: 0% 0%;
|
745 |
+
}
|
746 |
+
}
|
747 |
+
.zerospam-tag {
|
748 |
+
background-color: var(--zerospam-accent);
|
749 |
+
border-radius: 2px;
|
750 |
+
color: #fff;
|
751 |
+
display: inline-block;
|
752 |
+
padding: 3px;
|
753 |
+
font-size: 10px;
|
754 |
+
line-height: 1;
|
755 |
+
margin: 3px;
|
756 |
+
vertical-align: middle;
|
757 |
+
}
|
758 |
+
|
759 |
+
.zerospam-list__item--blocked {
|
760 |
+
background: rgba(255, 41, 41, 0.25) !important;
|
761 |
+
}
|
762 |
+
|
763 |
.zerospam-list {
|
764 |
list-style: none;
|
765 |
margin: 0;
|
766 |
padding: 0;
|
767 |
}
|
768 |
+
.zerospam-list--top {
|
769 |
+
font-size: 12px;
|
770 |
+
line-height: 1;
|
771 |
+
}
|
772 |
+
.zerospam-list--top li {
|
773 |
+
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
774 |
+
align-items: center;
|
775 |
+
display: flex;
|
776 |
+
margin: 0;
|
777 |
+
padding: 6px;
|
778 |
+
}
|
779 |
+
.zerospam-list--top li:nth-child(1) {
|
780 |
+
animation: row1 5s ease infinite;
|
781 |
+
animation-delay: 0.1s;
|
782 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 35%, rgba(255, 41, 41, calc(0.6 / 1)) 100%);
|
783 |
+
background-size: 200%;
|
784 |
+
}
|
785 |
+
.zerospam-list--top li:nth-child(2) {
|
786 |
+
animation: row2 5s ease infinite;
|
787 |
+
animation-delay: 0.2s;
|
788 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 40%, rgba(255, 41, 41, calc(0.6 / 2)) 100%);
|
789 |
+
background-size: 200%;
|
790 |
+
}
|
791 |
+
.zerospam-list--top li:nth-child(3) {
|
792 |
+
animation: row3 5s ease infinite;
|
793 |
+
animation-delay: 0.3s;
|
794 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 45%, rgba(255, 41, 41, calc(0.6 / 3)) 100%);
|
795 |
+
background-size: 200%;
|
796 |
+
}
|
797 |
+
.zerospam-list--top li:nth-child(4) {
|
798 |
+
animation: row4 5s ease infinite;
|
799 |
+
animation-delay: 0.4s;
|
800 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 50%, rgba(255, 41, 41, calc(0.6 / 4)) 100%);
|
801 |
+
background-size: 200%;
|
802 |
+
}
|
803 |
+
.zerospam-list--top li:nth-child(5) {
|
804 |
+
animation: row5 5s ease infinite;
|
805 |
+
animation-delay: 0.5s;
|
806 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 55%, rgba(255, 41, 41, calc(0.6 / 5)) 100%);
|
807 |
+
background-size: 200%;
|
808 |
+
}
|
809 |
+
.zerospam-list--top li:nth-child(6) {
|
810 |
+
animation: row6 5s ease infinite;
|
811 |
+
animation-delay: 0.6s;
|
812 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 60%, rgba(255, 41, 41, calc(0.6 / 6)) 100%);
|
813 |
+
background-size: 200%;
|
814 |
+
}
|
815 |
+
.zerospam-list--top li:nth-child(7) {
|
816 |
+
animation: row7 5s ease infinite;
|
817 |
+
animation-delay: 0.7s;
|
818 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 65%, rgba(255, 41, 41, calc(0.6 / 7)) 100%);
|
819 |
+
background-size: 200%;
|
820 |
+
}
|
821 |
+
.zerospam-list--top li:nth-child(8) {
|
822 |
+
animation: row8 5s ease infinite;
|
823 |
+
animation-delay: 0.8s;
|
824 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 70%, rgba(255, 41, 41, calc(0.6 / 8)) 100%);
|
825 |
+
background-size: 200%;
|
826 |
+
}
|
827 |
+
.zerospam-list--top li:nth-child(9) {
|
828 |
+
animation: row9 5s ease infinite;
|
829 |
+
animation-delay: 0.9s;
|
830 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 75%, rgba(255, 41, 41, calc(0.6 / 9)) 100%);
|
831 |
+
background-size: 200%;
|
832 |
+
}
|
833 |
+
.zerospam-list--top li:nth-child(10) {
|
834 |
+
animation: row10 5s ease infinite;
|
835 |
+
animation-delay: 1s;
|
836 |
+
background: linear-gradient(90deg, rgb(255, 255, 255) 0%, #fff 80%, rgba(255, 41, 41, calc(0.6 / 10)) 100%);
|
837 |
+
background-size: 200%;
|
838 |
+
}
|
839 |
+
.zerospam-list--top .zerospam-list__value--label {
|
840 |
+
flex-grow: 1;
|
841 |
+
overflow: hidden;
|
842 |
+
text-overflow: ellipsis;
|
843 |
+
white-space: nowrap;
|
844 |
+
}
|
845 |
+
.zerospam-list--top .zerospam-list__value--count {
|
846 |
+
font-size: 0.95em;
|
847 |
+
font-weight: bold;
|
848 |
+
margin: 0 20px;
|
849 |
+
text-align: right;
|
850 |
+
width: 35px;
|
851 |
+
}
|
852 |
+
.zerospam-list--top .zerospam-list__value--actions, .zerospam-list--top .zerospam-list__value--count {
|
853 |
+
flex-grow: 0;
|
854 |
+
flex-shrink: 0;
|
855 |
+
}
|
856 |
+
.zerospam-list--top .zerospam-list__value--actions {
|
857 |
+
text-align: right;
|
858 |
+
width: 85px;
|
859 |
+
}
|
860 |
+
.zerospam-list--top .zerospam-list__value img {
|
861 |
+
vertical-align: sub;
|
862 |
+
}
|
863 |
.zerospam-list--data-actions li, .zerospam-list--data li {
|
864 |
align-items: center;
|
865 |
column-gap: 15px;
|
assets/css/admin.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sourceRoot":"","sources":["../src/scss/admin.scss"],"names":[],"mappings":"AAkCA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;AAAA;EAEE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;;AAEA;AAAA;EACE;;;AAKN;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AA/FE;EAyFJ;IASI;IACA;IACA;;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAjHA;EAqHJ;IAEI;IACA;IACA;IACA;;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;
|
1 |
+
{"version":3,"sourceRoot":"","sources":["../src/scss/admin.scss"],"names":[],"mappings":"AAkCA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;AAAA;EAEE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;;AAEA;AAAA;EACE;;;AAKN;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AA/FE;EAyFJ;IASI;IACA;IACA;;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAjHA;EAqHJ;IAEI;IACA;IACA;IACA;;;AAGF;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AA9KE;EAyKJ;IAQI;;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAMA;EAEE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAQJ;EACE;EACA;EACA;EACA;;AAIJ;EACE;;AAGF;EAEE;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMJ;EACE;EACA;;AAEA;EACE;EACA;;AAvSJ;EA4SF;IAEI;;;AA9SF;EAkTF;IAEI;;;AApTF;EAwTF;IAEI;;;AA1TF;EA8TF;IAEI;;;AAhUF;EAqUA;IAEI;IACA;;;AAKF;EACE;;AA9UJ;EAiVE;IAEI;IACA;;;;AAOV;EACE;EAEA;EACA;EACA;EACA;;AAEA;EACE;;;AAKF;EACE;EACA;;AAQA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;;AAOJ;AAAA;EACE;;AAGF;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAIJ;AAAA;EACE;;AAOF;AAAA;AAAA;AAAA;EAEE;;AAEA;AAAA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;EACA;;;AAQR;EACE;;;AAIJ;EACE;EACA;EACA;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EAEA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;;AAMJ;EACE;;AAOF;EACE;EACA;EACA;EACA;;AA7kBA;EAykBF;IAOI;;;AAIJ;EACE;EACA;EACA;;AAcJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAiBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;;AAEA;EACE;;AAOF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;;AAMJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AARJ;EACE;IACE;;EAEF;IACE;;EAEF;IACE;;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGE;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AATF;EACE;EACA;EACA;EAMA;;AAUJ;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAOJ;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAOE;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAMJ;AAAA;EAEE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMR;EACE;EACA;;;AAGF;AACA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AACA;AAAA;EAEE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAGF;EACE;EACA;EACA","file":"admin.css"}
|
assets/css/jquery-jvectormap-2.0.5.css
CHANGED
@@ -1,135 +1,139 @@
|
|
1 |
svg {
|
2 |
-
|
3 |
}
|
4 |
|
5 |
.jvectormap-container {
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
}
|
12 |
|
13 |
.jvectormap-tip {
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
24 |
-
|
25 |
-
.jvectormap-zoomin,
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
.jvectormap-zoomin {
|
44 |
-
|
45 |
}
|
46 |
|
47 |
.jvectormap-zoomout {
|
48 |
-
|
49 |
}
|
50 |
|
51 |
.jvectormap-goback {
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
}
|
56 |
|
57 |
.jvectormap-spinner {
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
64 |
}
|
65 |
|
66 |
.jvectormap-legend-title {
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
}
|
71 |
|
72 |
.jvectormap-legend-cnt {
|
73 |
-
|
74 |
}
|
75 |
|
76 |
.jvectormap-legend-cnt-h {
|
77 |
-
|
78 |
-
|
79 |
}
|
80 |
|
81 |
.jvectormap-legend-cnt-v {
|
82 |
-
|
83 |
-
|
84 |
}
|
85 |
|
86 |
.jvectormap-legend {
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
}
|
91 |
|
92 |
.jvectormap-legend-cnt-h .jvectormap-legend {
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
}
|
97 |
|
98 |
.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick {
|
99 |
-
|
100 |
}
|
101 |
|
102 |
.jvectormap-legend-cnt-v .jvectormap-legend {
|
103 |
-
|
104 |
-
|
105 |
}
|
106 |
|
107 |
.jvectormap-legend-cnt-h .jvectormap-legend-tick {
|
108 |
-
|
109 |
}
|
110 |
|
111 |
.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample {
|
112 |
-
|
113 |
}
|
114 |
|
115 |
.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample {
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
}
|
121 |
|
122 |
.jvectormap-legend-tick-text {
|
123 |
-
|
124 |
}
|
125 |
|
126 |
.jvectormap-legend-cnt-h .jvectormap-legend-tick-text {
|
127 |
-
|
128 |
}
|
129 |
|
130 |
.jvectormap-legend-cnt-v .jvectormap-legend-tick-text {
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
}
|
1 |
svg {
|
2 |
+
touch-action: none;
|
3 |
}
|
4 |
|
5 |
.jvectormap-container {
|
6 |
+
width: 100%;
|
7 |
+
height: 100%;
|
8 |
+
position: relative;
|
9 |
+
overflow: hidden;
|
10 |
+
touch-action: none;
|
11 |
}
|
12 |
|
13 |
.jvectormap-tip {
|
14 |
+
position: absolute;
|
15 |
+
display: none;
|
16 |
+
border: solid 1px #cdcdcd;
|
17 |
+
border-radius: 3px;
|
18 |
+
background: #292929;
|
19 |
+
color: white;
|
20 |
+
font-family: sans-serif, Verdana;
|
21 |
+
font-size: smaller;
|
22 |
+
padding: 3px;
|
23 |
+
}
|
24 |
+
|
25 |
+
.jvectormap-zoomin,
|
26 |
+
.jvectormap-zoomout,
|
27 |
+
.jvectormap-goback {
|
28 |
+
position: absolute;
|
29 |
+
left: 10px;
|
30 |
+
border-radius: 3px;
|
31 |
+
background: #292929;
|
32 |
+
padding: 3px;
|
33 |
+
color: white;
|
34 |
+
cursor: pointer;
|
35 |
+
line-height: 10px;
|
36 |
+
text-align: center;
|
37 |
+
box-sizing: content-box;
|
38 |
+
}
|
39 |
+
|
40 |
+
.jvectormap-zoomin,
|
41 |
+
.jvectormap-zoomout {
|
42 |
+
width: 10px;
|
43 |
+
height: 10px;
|
44 |
}
|
45 |
|
46 |
.jvectormap-zoomin {
|
47 |
+
top: 10px;
|
48 |
}
|
49 |
|
50 |
.jvectormap-zoomout {
|
51 |
+
top: 30px;
|
52 |
}
|
53 |
|
54 |
.jvectormap-goback {
|
55 |
+
bottom: 10px;
|
56 |
+
z-index: 1000;
|
57 |
+
padding: 6px;
|
58 |
}
|
59 |
|
60 |
.jvectormap-spinner {
|
61 |
+
position: absolute;
|
62 |
+
left: 0;
|
63 |
+
top: 0;
|
64 |
+
right: 0;
|
65 |
+
bottom: 0;
|
66 |
+
background: center no-repeat
|
67 |
+
url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==);
|
68 |
}
|
69 |
|
70 |
.jvectormap-legend-title {
|
71 |
+
font-weight: bold;
|
72 |
+
font-size: 14px;
|
73 |
+
text-align: center;
|
74 |
}
|
75 |
|
76 |
.jvectormap-legend-cnt {
|
77 |
+
position: absolute;
|
78 |
}
|
79 |
|
80 |
.jvectormap-legend-cnt-h {
|
81 |
+
bottom: 0;
|
82 |
+
right: 0;
|
83 |
}
|
84 |
|
85 |
.jvectormap-legend-cnt-v {
|
86 |
+
top: 0;
|
87 |
+
right: 0;
|
88 |
}
|
89 |
|
90 |
.jvectormap-legend {
|
91 |
+
background: black;
|
92 |
+
color: white;
|
93 |
+
border-radius: 3px;
|
94 |
}
|
95 |
|
96 |
.jvectormap-legend-cnt-h .jvectormap-legend {
|
97 |
+
float: left;
|
98 |
+
margin: 0 10px 10px 0;
|
99 |
+
padding: 3px 3px 1px 3px;
|
100 |
}
|
101 |
|
102 |
.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick {
|
103 |
+
float: left;
|
104 |
}
|
105 |
|
106 |
.jvectormap-legend-cnt-v .jvectormap-legend {
|
107 |
+
margin: 10px 10px 0 0;
|
108 |
+
padding: 3px;
|
109 |
}
|
110 |
|
111 |
.jvectormap-legend-cnt-h .jvectormap-legend-tick {
|
112 |
+
width: 40px;
|
113 |
}
|
114 |
|
115 |
.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample {
|
116 |
+
height: 15px;
|
117 |
}
|
118 |
|
119 |
.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample {
|
120 |
+
height: 20px;
|
121 |
+
width: 20px;
|
122 |
+
display: inline-block;
|
123 |
+
vertical-align: middle;
|
124 |
}
|
125 |
|
126 |
.jvectormap-legend-tick-text {
|
127 |
+
font-size: 12px;
|
128 |
}
|
129 |
|
130 |
.jvectormap-legend-cnt-h .jvectormap-legend-tick-text {
|
131 |
+
text-align: center;
|
132 |
}
|
133 |
|
134 |
.jvectormap-legend-cnt-v .jvectormap-legend-tick-text {
|
135 |
+
display: inline-block;
|
136 |
+
vertical-align: middle;
|
137 |
+
line-height: 20px;
|
138 |
+
padding-left: 3px;
|
139 |
+
}
|
assets/img/icon-memberpress.svg
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<svg width="73px" height="41px" viewBox="0 0 73 41" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
-
<title>memberpress-logo-color</title>
|
4 |
-
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
5 |
-
<g id="memberpress-logo-color" transform="translate(0.700000, 0.000000)" fill-rule="nonzero">
|
6 |
-
<g id="Group">
|
7 |
-
<g id="Path">
|
8 |
-
<path d="M47.3,17.5 C47.3,13.4 50.6,10.1 54.7,10.1 C58.8,10.1 62.1,13.4 62.1,17.5 L62.1,35 C62.1,37.8 64.4,40 67.1,40 C69.9,40 72.1,37.7 72.1,35 L72.1,17.5 C72.2,7.8 64.4,0 54.7,0 C49.9,0 45.5,2 42.3,5.2 C45.4,8.4 47.3,12.7 47.3,17.5 L47.3,17.5 Z" fill="#20D1CC"></path>
|
9 |
-
<path d="M37.3,17.5 C37.3,12.7 39.2,8.4 42.3,5.2 C39.1,2 34.7,0 29.9,0 C25,0 20.6,2 17.5,5.2 C20.6,8.3 22.5,12.7 22.5,17.4 C22.5,13.3 25.8,10 29.9,10 C34,10.1 37.3,13.4 37.3,17.5 L37.3,17.5 Z" fill="#05D0E0"></path>
|
10 |
-
<path d="M47.3,35 L47.3,17.5 C47.3,12.7 45.4,8.4 42.3,5.2 C39.2,8.4 37.3,12.7 37.3,17.5 L37.3,35 C37.3,36.4 37.9,37.6 38.8,38.6 C39.7,39.5 41,40.1 42.4,40.1 C45.1,40 47.3,37.7 47.3,35 Z" fill="#01A9B2"></path>
|
11 |
-
<path d="M5,0 C2.2,0 -2.66453526e-15,2.3 -2.66453526e-15,5 C-2.66453526e-15,7.8 2.3,10 5,10 C9.1,10 12.4,13.3 12.4,17.4 C12.4,12.6 14.3,8.3 17.4,5.2 C14.3,2 9.9,0 5,0 Z" fill="#0282C9"></path>
|
12 |
-
<path d="M12.4,17.4 C12.4,17.4 12.4,17.4 12.4,17.4 L12.4,34.9 C12.4,37.7 14.7,39.9 17.4,39.9 C18.3,39.9 19.1,39.7 19.8,39.3 C21.4,38.4 22.4,36.8 22.4,34.9 L22.4,17.5 C22.4,17.5 22.4,17.5 22.4,17.5 C22.4,12.7 20.5,8.4 17.4,5.3 C14.3,8.4 12.4,12.7 12.4,17.4 Z" fill="#016BB1"></path>
|
13 |
-
</g>
|
14 |
-
<circle id="Oval" fill="#06429E" cx="5" cy="5" r="5"></circle>
|
15 |
-
<circle id="Oval" fill="#01569A" cx="17.4" cy="35" r="5"></circle>
|
16 |
-
<circle id="Oval" fill="#008C9D" cx="42.3" cy="35" r="5"></circle>
|
17 |
-
<circle id="Oval" fill="#03ABA3" cx="67.2" cy="35" r="5"></circle>
|
18 |
-
</g>
|
19 |
-
</g>
|
20 |
-
</g>
|
21 |
-
</svg>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/Chart.bundle.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Chart.js v3.
|
3 |
* https://www.chartjs.org
|
4 |
* (c) 2022 Chart.js Contributors
|
5 |
* Released under the MIT License
|
@@ -13,26 +13,318 @@
|
|
13 |
e());
|
14 |
})(this, function () {
|
15 |
"use strict";
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
"undefined" == typeof window
|
18 |
? function (t) {
|
19 |
return t();
|
20 |
}
|
21 |
: window.requestAnimationFrame;
|
22 |
-
function
|
23 |
-
const
|
24 |
-
let
|
25 |
-
|
26 |
-
return function (...
|
27 |
-
(
|
28 |
-
|
29 |
-
((
|
30 |
-
|
31 |
-
(
|
32 |
}));
|
33 |
};
|
34 |
}
|
35 |
-
function
|
36 |
let i;
|
37 |
return function (...s) {
|
38 |
return (
|
@@ -40,11 +332,52 @@
|
|
40 |
);
|
41 |
};
|
42 |
}
|
43 |
-
const
|
44 |
-
|
45 |
-
|
46 |
t === (s ? "left" : "right") ? i : "center" === t ? (e + i) / 2 : e;
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
constructor() {
|
49 |
(this._request = null),
|
50 |
(this._charts = new Map()),
|
@@ -66,7 +399,7 @@
|
|
66 |
_refresh() {
|
67 |
this._request ||
|
68 |
((this._running = !0),
|
69 |
-
(this._request =
|
70 |
this._update(),
|
71 |
(this._request = null),
|
72 |
this._running && this._refresh();
|
@@ -147,11 +480,27 @@
|
|
147 |
}
|
148 |
})();
|
149 |
/*!
|
150 |
-
* @kurkle/color v0.1
|
151 |
* https://github.com/kurkle/color#readme
|
152 |
-
* (c)
|
153 |
* Released under the MIT License
|
154 |
-
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
0: 0,
|
156 |
1: 1,
|
157 |
2: 2,
|
@@ -175,51 +524,35 @@
|
|
175 |
e: 14,
|
176 |
f: 15,
|
177 |
},
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
function
|
183 |
-
var e = (
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
const g = (t, e, i) => Math.max(Math.min(t, i), e);
|
194 |
-
function p(t) {
|
195 |
-
return g(f(2.55 * t), 0, 255);
|
196 |
-
}
|
197 |
-
function m(t) {
|
198 |
-
return g(f(255 * t), 0, 255);
|
199 |
-
}
|
200 |
-
function x(t) {
|
201 |
-
return g(f(t / 2.55) / 100, 0, 1);
|
202 |
-
}
|
203 |
-
function b(t) {
|
204 |
-
return g(f(100 * t), 0, 100);
|
205 |
-
}
|
206 |
-
const _ =
|
207 |
-
/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;
|
208 |
-
const y =
|
209 |
/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;
|
210 |
-
function
|
211 |
const s = e * Math.min(i, 1 - i),
|
212 |
n = (e, n = (e + t / 30) % 12) =>
|
213 |
i - s * Math.max(Math.min(n - 3, 9 - n, 1), -1);
|
214 |
return [n(0), n(8), n(4)];
|
215 |
}
|
216 |
-
function
|
217 |
const s = (s, n = (s + t / 60) % 6) =>
|
218 |
i - i * e * Math.max(Math.min(n, 4 - n, 1), 0);
|
219 |
return [s(5), s(3), s(1)];
|
220 |
}
|
221 |
-
function
|
222 |
-
const s =
|
223 |
let n;
|
224 |
for (
|
225 |
e + i > 1 && ((n = 1 / (e + i)), (e *= n), (i *= n)), n = 0;
|
@@ -229,7 +562,7 @@
|
|
229 |
(s[n] *= 1 - e - i), (s[n] += e);
|
230 |
return s;
|
231 |
}
|
232 |
-
function
|
233 |
const e = t.r / 255,
|
234 |
i = t.g / 255,
|
235 |
s = t.b / 255,
|
@@ -241,49 +574,50 @@
|
|
241 |
n !== o &&
|
242 |
((h = n - o),
|
243 |
(l = a > 0.5 ? h / (2 - n - o) : h / (n + o)),
|
244 |
-
(r =
|
245 |
-
|
246 |
-
? (
|
247 |
-
:
|
248 |
-
? (
|
249 |
-
: (
|
|
|
250 |
(r = 60 * r + 0.5)),
|
251 |
[0 | r, l || 0, a]
|
252 |
);
|
253 |
}
|
254 |
-
function
|
255 |
-
return (Array.isArray(e) ? t(e[0], e[1], e[2]) : t(e, i, s)).map(
|
256 |
}
|
257 |
-
function
|
258 |
-
return
|
259 |
}
|
260 |
-
function
|
261 |
return ((t % 360) + 360) % 360;
|
262 |
}
|
263 |
-
function
|
264 |
-
const e =
|
265 |
let i,
|
266 |
s = 255;
|
267 |
if (!e) return;
|
268 |
-
e[5] !== i && (s = e[6] ?
|
269 |
-
const n =
|
270 |
o = +e[3] / 100,
|
271 |
a = +e[4] / 100;
|
272 |
return (
|
273 |
(i =
|
274 |
"hwb" === e[1]
|
275 |
? (function (t, e, i) {
|
276 |
-
return
|
277 |
})(n, o, a)
|
278 |
: "hsv" === e[1]
|
279 |
? (function (t, e, i) {
|
280 |
-
return
|
281 |
})(n, o, a)
|
282 |
-
:
|
283 |
{ r: i[0], g: i[1], b: i[2], a: s }
|
284 |
);
|
285 |
}
|
286 |
-
const
|
287 |
x: "dark",
|
288 |
Z: "light",
|
289 |
Y: "re",
|
@@ -312,7 +646,7 @@
|
|
312 |
I: "ightg",
|
313 |
J: "wh",
|
314 |
},
|
315 |
-
|
316 |
OiceXe: "f0f8ff",
|
317 |
antiquewEte: "faebd7",
|
318 |
aqua: "ffff",
|
@@ -462,54 +796,59 @@
|
|
462 |
Lw: "ffff00",
|
463 |
LwgYF: "9acd32",
|
464 |
};
|
465 |
-
let
|
466 |
-
function
|
467 |
-
|
468 |
-
((
|
469 |
const t = {},
|
470 |
-
e = Object.keys(
|
471 |
-
i = Object.keys(
|
472 |
let s, n, o, a, r;
|
473 |
for (s = 0; s < e.length; s++) {
|
474 |
for (a = r = e[s], n = 0; n < i.length; n++)
|
475 |
-
(o = i[n]), (r = r.replace(o,
|
476 |
-
(o = parseInt(
|
477 |
(t[r] = [(o >> 16) & 255, (o >> 8) & 255, 255 & o]);
|
478 |
}
|
479 |
return t;
|
480 |
})()),
|
481 |
-
(
|
482 |
-
const e =
|
483 |
return e && { r: e[0], g: e[1], b: e[2], a: 4 === e.length ? e[3] : 255 };
|
484 |
}
|
485 |
-
|
|
|
|
|
|
|
|
|
|
|
486 |
if (t) {
|
487 |
-
let s =
|
488 |
(s[e] = Math.max(0, Math.min(s[e] + s[e] * i, 0 === e ? 360 : 1))),
|
489 |
-
(s =
|
490 |
(t.r = s[0]),
|
491 |
(t.g = s[1]),
|
492 |
(t.b = s[2]);
|
493 |
}
|
494 |
}
|
495 |
-
function
|
496 |
return t ? Object.assign(e || {}, t) : t;
|
497 |
}
|
498 |
-
function
|
499 |
var e = { r: 0, g: 0, b: 0, a: 255 };
|
500 |
return (
|
501 |
Array.isArray(t)
|
502 |
? t.length >= 3 &&
|
503 |
((e = { r: t[0], g: t[1], b: t[2], a: 255 }),
|
504 |
-
t.length > 3 && (e.a =
|
505 |
-
: ((e =
|
506 |
e
|
507 |
);
|
508 |
}
|
509 |
-
function
|
510 |
return "r" === t.charAt(0)
|
511 |
? (function (t) {
|
512 |
-
const e =
|
513 |
let i,
|
514 |
s,
|
515 |
n,
|
@@ -517,47 +856,47 @@
|
|
517 |
if (e) {
|
518 |
if (e[7] !== i) {
|
519 |
const t = +e[7];
|
520 |
-
o =
|
521 |
}
|
522 |
return (
|
523 |
(i = +e[1]),
|
524 |
(s = +e[3]),
|
525 |
(n = +e[5]),
|
526 |
-
(i = 255 & (e[2] ?
|
527 |
-
(s = 255 & (e[4] ?
|
528 |
-
(n = 255 & (e[6] ?
|
529 |
{ r: i, g: s, b: n, a: o }
|
530 |
);
|
531 |
}
|
532 |
})(t)
|
533 |
-
:
|
534 |
}
|
535 |
-
class
|
536 |
constructor(t) {
|
537 |
-
if (t instanceof
|
538 |
const e = typeof t;
|
539 |
let i;
|
540 |
var s, n, o;
|
541 |
"object" === e
|
542 |
-
? (i =
|
543 |
: "string" === e &&
|
544 |
((o = (s = t).length),
|
545 |
"#" === s[0] &&
|
546 |
(4 === o || 5 === o
|
547 |
? (n = {
|
548 |
-
r: 255 & (17 *
|
549 |
-
g: 255 & (17 *
|
550 |
-
b: 255 & (17 *
|
551 |
-
a: 5 === o ? 17 *
|
552 |
})
|
553 |
: (7 !== o && 9 !== o) ||
|
554 |
(n = {
|
555 |
-
r: (
|
556 |
-
g: (
|
557 |
-
b: (
|
558 |
-
a: 9 === o ? (
|
559 |
})),
|
560 |
-
(i = n ||
|
561 |
(this._rgb = i),
|
562 |
(this._valid = !!i);
|
563 |
}
|
@@ -565,69 +904,85 @@
|
|
565 |
return this._valid;
|
566 |
}
|
567 |
get rgb() {
|
568 |
-
var t =
|
569 |
-
return t && (t.a =
|
570 |
}
|
571 |
set rgb(t) {
|
572 |
-
this._rgb =
|
573 |
}
|
574 |
rgbString() {
|
575 |
return this._valid
|
576 |
? (t = this._rgb) &&
|
577 |
(t.a < 255
|
578 |
-
? `rgba(${t.r}, ${t.g}, ${t.b}, ${
|
579 |
: `rgb(${t.r}, ${t.g}, ${t.b})`)
|
580 |
-
:
|
581 |
var t;
|
582 |
}
|
583 |
hexString() {
|
584 |
-
return this._valid ?
|
585 |
}
|
586 |
hslString() {
|
587 |
return this._valid
|
588 |
? (function (t) {
|
589 |
if (!t) return;
|
590 |
-
const e =
|
591 |
i = e[0],
|
592 |
-
s =
|
593 |
-
n =
|
594 |
return t.a < 255
|
595 |
-
? `hsla(${i}, ${s}%, ${n}%, ${
|
596 |
: `hsl(${i}, ${s}%, ${n}%)`;
|
597 |
})(this._rgb)
|
598 |
-
:
|
599 |
}
|
600 |
mix(t, e) {
|
601 |
-
const i = this;
|
602 |
if (t) {
|
603 |
-
const
|
604 |
-
|
605 |
-
let
|
606 |
-
const
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
(
|
611 |
-
(
|
612 |
-
(
|
613 |
-
(
|
614 |
-
(
|
615 |
-
(
|
616 |
}
|
617 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
618 |
}
|
619 |
clone() {
|
620 |
-
return new
|
621 |
}
|
622 |
alpha(t) {
|
623 |
-
return (this._rgb.a =
|
624 |
}
|
625 |
clearer(t) {
|
626 |
return (this._rgb.a *= 1 - t), this;
|
627 |
}
|
628 |
greyscale() {
|
629 |
const t = this._rgb,
|
630 |
-
e =
|
631 |
return (t.r = t.g = t.b = e), this;
|
632 |
}
|
633 |
opaquer(t) {
|
@@ -638,23 +993,23 @@
|
|
638 |
return (t.r = 255 - t.r), (t.g = 255 - t.g), (t.b = 255 - t.b), this;
|
639 |
}
|
640 |
lighten(t) {
|
641 |
-
return
|
642 |
}
|
643 |
darken(t) {
|
644 |
-
return
|
645 |
}
|
646 |
saturate(t) {
|
647 |
-
return
|
648 |
}
|
649 |
desaturate(t) {
|
650 |
-
return
|
651 |
}
|
652 |
rotate(t) {
|
653 |
return (
|
654 |
(function (t, e) {
|
655 |
-
var i =
|
656 |
-
(i[0] =
|
657 |
-
(i =
|
658 |
(t.r = i[0]),
|
659 |
(t.g = i[1]),
|
660 |
(t.b = i[2]);
|
@@ -663,158 +1018,37 @@
|
|
663 |
);
|
664 |
}
|
665 |
}
|
666 |
-
function
|
667 |
-
return new
|
668 |
-
}
|
669 |
-
const V = (t) => t instanceof CanvasGradient || t instanceof CanvasPattern;
|
670 |
-
function W(t) {
|
671 |
-
return V(t) ? t : B(t);
|
672 |
-
}
|
673 |
-
function N(t) {
|
674 |
-
return V(t) ? t : B(t).saturate(0.5).darken(0.1).hexString();
|
675 |
-
}
|
676 |
-
function H() {}
|
677 |
-
const j = (function () {
|
678 |
-
let t = 0;
|
679 |
-
return function () {
|
680 |
-
return t++;
|
681 |
-
};
|
682 |
-
})();
|
683 |
-
function $(t) {
|
684 |
-
return null == t;
|
685 |
-
}
|
686 |
-
function Y(t) {
|
687 |
-
if (Array.isArray && Array.isArray(t)) return !0;
|
688 |
-
const e = Object.prototype.toString.call(t);
|
689 |
-
return "[object" === e.substr(0, 7) && "Array]" === e.substr(-6);
|
690 |
-
}
|
691 |
-
function U(t) {
|
692 |
-
return (
|
693 |
-
null !== t && "[object Object]" === Object.prototype.toString.call(t)
|
694 |
-
);
|
695 |
-
}
|
696 |
-
const X = (t) =>
|
697 |
-
("number" == typeof t || t instanceof Number) && isFinite(+t);
|
698 |
-
function q(t, e) {
|
699 |
-
return X(t) ? t : e;
|
700 |
-
}
|
701 |
-
function K(t, e) {
|
702 |
-
return void 0 === t ? e : t;
|
703 |
}
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
"
|
708 |
-
|
709 |
-
|
710 |
}
|
711 |
-
function
|
712 |
-
|
713 |
-
if (Y(t))
|
714 |
-
if (((o = t.length), s)) for (n = o - 1; n >= 0; n--) e.call(i, t[n], n);
|
715 |
-
else for (n = 0; n < o; n++) e.call(i, t[n], n);
|
716 |
-
else if (U(t))
|
717 |
-
for (a = Object.keys(t), o = a.length, n = 0; n < o; n++)
|
718 |
-
e.call(i, t[a[n]], a[n]);
|
719 |
}
|
720 |
-
function
|
721 |
-
|
722 |
-
if (!t || !e || t.length !== e.length) return !1;
|
723 |
-
for (i = 0, s = t.length; i < s; ++i)
|
724 |
-
if (
|
725 |
-
((n = t[i]),
|
726 |
-
(o = e[i]),
|
727 |
-
n.datasetIndex !== o.datasetIndex || n.index !== o.index)
|
728 |
-
)
|
729 |
-
return !1;
|
730 |
-
return !0;
|
731 |
}
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
return e;
|
741 |
}
|
742 |
return t;
|
743 |
}
|
744 |
-
function
|
745 |
-
return
|
746 |
}
|
747 |
-
|
748 |
-
if (!it(t)) return;
|
749 |
-
const n = e[t],
|
750 |
-
o = i[t];
|
751 |
-
U(n) && U(o) ? nt(n, o, s) : (e[t] = et(o));
|
752 |
-
}
|
753 |
-
function nt(t, e, i) {
|
754 |
-
const s = Y(e) ? e : [e],
|
755 |
-
n = s.length;
|
756 |
-
if (!U(t)) return t;
|
757 |
-
const o = (i = i || {}).merger || st;
|
758 |
-
for (let a = 0; a < n; ++a) {
|
759 |
-
if (!U((e = s[a]))) continue;
|
760 |
-
const n = Object.keys(e);
|
761 |
-
for (let s = 0, a = n.length; s < a; ++s) o(n[s], t, e, i);
|
762 |
-
}
|
763 |
-
return t;
|
764 |
-
}
|
765 |
-
function ot(t, e) {
|
766 |
-
return nt(t, e, { merger: at });
|
767 |
-
}
|
768 |
-
function at(t, e, i) {
|
769 |
-
if (!it(t)) return;
|
770 |
-
const s = e[t],
|
771 |
-
n = i[t];
|
772 |
-
U(s) && U(n)
|
773 |
-
? ot(s, n)
|
774 |
-
: Object.prototype.hasOwnProperty.call(e, t) || (e[t] = et(n));
|
775 |
-
}
|
776 |
-
function rt(t, e) {
|
777 |
-
const i = t.indexOf(".", e);
|
778 |
-
return -1 === i ? t.length : i;
|
779 |
-
}
|
780 |
-
function lt(t, e) {
|
781 |
-
if ("" === e) return t;
|
782 |
-
let i = 0,
|
783 |
-
s = rt(e, i);
|
784 |
-
for (; t && s > i; )
|
785 |
-
(t = t[e.substr(i, s - i)]), (i = s + 1), (s = rt(e, i));
|
786 |
-
return t;
|
787 |
-
}
|
788 |
-
function ht(t) {
|
789 |
-
return t.charAt(0).toUpperCase() + t.slice(1);
|
790 |
-
}
|
791 |
-
const ct = (t) => void 0 !== t,
|
792 |
-
dt = (t) => "function" == typeof t,
|
793 |
-
ut = (t, e) => {
|
794 |
-
if (t.size !== e.size) return !1;
|
795 |
-
for (const i of t) if (!e.has(i)) return !1;
|
796 |
-
return !0;
|
797 |
-
};
|
798 |
-
function ft(t) {
|
799 |
-
return (
|
800 |
-
"mouseup" === t.type || "click" === t.type || "contextmenu" === t.type
|
801 |
-
);
|
802 |
-
}
|
803 |
-
const gt = Object.create(null),
|
804 |
-
pt = Object.create(null);
|
805 |
-
function mt(t, e) {
|
806 |
-
if (!e) return t;
|
807 |
-
const i = e.split(".");
|
808 |
-
for (let e = 0, s = i.length; e < s; ++e) {
|
809 |
-
const s = i[e];
|
810 |
-
t = t[s] || (t[s] = Object.create(null));
|
811 |
-
}
|
812 |
-
return t;
|
813 |
-
}
|
814 |
-
function xt(t, e, i) {
|
815 |
-
return "string" == typeof e ? nt(mt(t, e), i) : nt(mt(t, ""), e);
|
816 |
-
}
|
817 |
-
var bt = new (class {
|
818 |
constructor(t) {
|
819 |
(this.animation = void 0),
|
820 |
(this.backgroundColor = "rgba(0,0,0,0.1)"),
|
@@ -838,11 +1072,15 @@
|
|
838 |
weight: null,
|
839 |
}),
|
840 |
(this.hover = {}),
|
841 |
-
(this.hoverBackgroundColor = (t, e) =>
|
842 |
-
(this.hoverBorderColor = (t, e) =>
|
843 |
-
(this.hoverColor = (t, e) =>
|
844 |
(this.indexAxis = "x"),
|
845 |
-
(this.interaction = {
|
|
|
|
|
|
|
|
|
846 |
(this.maintainAspectRatio = !0),
|
847 |
(this.onHover = null),
|
848 |
(this.onClick = null),
|
@@ -856,32 +1094,32 @@
|
|
856 |
this.describe(t);
|
857 |
}
|
858 |
set(t, e) {
|
859 |
-
return
|
860 |
}
|
861 |
get(t) {
|
862 |
-
return
|
863 |
}
|
864 |
describe(t, e) {
|
865 |
-
return
|
866 |
}
|
867 |
override(t, e) {
|
868 |
-
return
|
869 |
}
|
870 |
route(t, e, i, s) {
|
871 |
-
const
|
872 |
-
|
873 |
-
|
874 |
-
Object.defineProperties(
|
875 |
-
[
|
876 |
[e]: {
|
877 |
enumerable: !0,
|
878 |
get() {
|
879 |
-
const t = this[
|
880 |
-
e =
|
881 |
-
return
|
882 |
},
|
883 |
set(t) {
|
884 |
-
this[
|
885 |
},
|
886 |
},
|
887 |
});
|
@@ -892,97 +1130,156 @@
|
|
892 |
hover: { _fallback: "interaction" },
|
893 |
interaction: { _scriptable: !1, _indexable: !1 },
|
894 |
});
|
895 |
-
|
896 |
-
|
897 |
-
vt = yt + _t,
|
898 |
-
wt = Number.POSITIVE_INFINITY,
|
899 |
-
Mt = _t / 180,
|
900 |
-
kt = _t / 2,
|
901 |
-
St = _t / 4,
|
902 |
-
Pt = (2 * _t) / 3,
|
903 |
-
Dt = Math.log10,
|
904 |
-
Ct = Math.sign;
|
905 |
-
function Ot(t) {
|
906 |
-
const e = Math.round(t);
|
907 |
-
t = Lt(t, e, t / 1e3) ? e : t;
|
908 |
-
const i = Math.pow(10, Math.floor(Dt(t))),
|
909 |
-
s = t / i;
|
910 |
-
return (s <= 1 ? 1 : s <= 2 ? 2 : s <= 5 ? 5 : 10) * i;
|
911 |
-
}
|
912 |
-
function At(t) {
|
913 |
-
const e = [],
|
914 |
-
i = Math.sqrt(t);
|
915 |
-
let s;
|
916 |
-
for (s = 1; s < i; s++) t % s == 0 && (e.push(s), e.push(t / s));
|
917 |
-
return i === (0 | i) && e.push(i), e.sort((t, e) => t - e).pop(), e;
|
918 |
-
}
|
919 |
-
function Tt(t) {
|
920 |
-
return !isNaN(parseFloat(t)) && isFinite(t);
|
921 |
-
}
|
922 |
-
function Lt(t, e, i) {
|
923 |
-
return Math.abs(t - e) < i;
|
924 |
-
}
|
925 |
-
function Rt(t, e) {
|
926 |
-
const i = Math.round(t);
|
927 |
-
return i - e <= t && i + e >= t;
|
928 |
-
}
|
929 |
-
function Et(t, e, i) {
|
930 |
-
let s, n, o;
|
931 |
-
for (s = 0, n = t.length; s < n; s++)
|
932 |
-
(o = t[s][i]),
|
933 |
-
isNaN(o) ||
|
934 |
-
((e.min = Math.min(e.min, o)), (e.max = Math.max(e.max, o)));
|
935 |
-
}
|
936 |
-
function It(t) {
|
937 |
-
return t * (_t / 180);
|
938 |
-
}
|
939 |
-
function zt(t) {
|
940 |
-
return t * (180 / _t);
|
941 |
-
}
|
942 |
-
function Ft(t) {
|
943 |
-
if (!X(t)) return;
|
944 |
-
let e = 1,
|
945 |
-
i = 0;
|
946 |
-
for (; Math.round(t * e) / e !== t; ) (e *= 10), i++;
|
947 |
-
return i;
|
948 |
}
|
949 |
-
function
|
950 |
-
|
951 |
-
|
952 |
-
n = Math.sqrt(i * i + s * s);
|
953 |
-
let o = Math.atan2(s, i);
|
954 |
-
return o < -0.5 * _t && (o += yt), { angle: o, distance: n };
|
955 |
}
|
956 |
-
function
|
957 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
958 |
}
|
959 |
-
|
960 |
-
|
|
|
961 |
}
|
962 |
-
|
963 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
964 |
}
|
965 |
-
function
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
974 |
}
|
975 |
-
|
976 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
977 |
}
|
978 |
-
function
|
979 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
980 |
}
|
981 |
-
|
982 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
983 |
}
|
984 |
-
function
|
985 |
-
return !t ||
|
986 |
? null
|
987 |
: (t.style ? t.style + " " : "") +
|
988 |
(t.weight ? t.weight + " " : "") +
|
@@ -990,142 +1287,148 @@
|
|
990 |
"px " +
|
991 |
t.family;
|
992 |
}
|
993 |
-
function
|
994 |
let o = e[n];
|
995 |
return (
|
996 |
o || ((o = e[n] = t.measureText(n).width), i.push(n)), o > s && (s = o), s
|
997 |
);
|
998 |
}
|
999 |
-
function
|
1000 |
-
let
|
1001 |
-
|
1002 |
-
|
1003 |
-
((
|
1004 |
t.save(),
|
1005 |
(t.font = e);
|
1006 |
-
let
|
1007 |
-
const
|
1008 |
-
let
|
1009 |
-
for (
|
1010 |
-
if (((
|
1011 |
-
else if (
|
1012 |
-
for (
|
1013 |
-
(
|
1014 |
t.restore();
|
1015 |
-
const
|
1016 |
-
if (
|
1017 |
-
for (
|
1018 |
-
|
1019 |
}
|
1020 |
-
return
|
1021 |
}
|
1022 |
-
function
|
1023 |
const s = t.currentDevicePixelRatio,
|
1024 |
n = 0 !== i ? Math.max(i / 2, 0.5) : 0;
|
1025 |
return Math.round((e - n) * s) / s + n;
|
1026 |
}
|
1027 |
-
function
|
1028 |
(e = e || t.getContext("2d")).save(),
|
1029 |
e.resetTransform(),
|
1030 |
e.clearRect(0, 0, t.width, t.height),
|
1031 |
e.restore();
|
1032 |
}
|
1033 |
-
function
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
|
|
|
|
|
|
1039 |
if (
|
1040 |
-
|
1041 |
-
"object" == typeof
|
1042 |
-
((
|
1043 |
-
"[object HTMLImageElement]" ===
|
1044 |
)
|
1045 |
return (
|
1046 |
t.save(),
|
1047 |
t.translate(i, s),
|
1048 |
-
t.rotate(
|
1049 |
-
t.drawImage(
|
1050 |
void t.restore()
|
1051 |
);
|
1052 |
-
if (!(isNaN(
|
1053 |
-
switch ((t.beginPath(),
|
1054 |
default:
|
1055 |
-
t.
|
|
|
1056 |
break;
|
1057 |
case "triangle":
|
1058 |
-
t.moveTo(i + Math.sin(
|
1059 |
-
(
|
1060 |
-
t.lineTo(i + Math.sin(
|
1061 |
-
(
|
1062 |
-
t.lineTo(i + Math.sin(
|
1063 |
t.closePath();
|
1064 |
break;
|
1065 |
case "rectRounded":
|
1066 |
-
(
|
1067 |
-
(
|
1068 |
-
(
|
1069 |
-
(
|
1070 |
-
t.arc(i -
|
1071 |
-
t.arc(i +
|
1072 |
-
t.arc(i +
|
1073 |
-
t.arc(i -
|
1074 |
t.closePath();
|
1075 |
break;
|
1076 |
case "rect":
|
1077 |
-
if (!
|
1078 |
-
(
|
|
|
|
|
1079 |
break;
|
1080 |
}
|
1081 |
-
|
1082 |
case "rectRot":
|
1083 |
-
(
|
1084 |
-
(
|
1085 |
-
t.moveTo(i -
|
1086 |
-
t.lineTo(i +
|
1087 |
-
t.lineTo(i +
|
1088 |
-
t.lineTo(i -
|
1089 |
t.closePath();
|
1090 |
break;
|
1091 |
case "crossRot":
|
1092 |
-
|
1093 |
case "cross":
|
1094 |
-
(
|
1095 |
-
(
|
1096 |
-
t.moveTo(i -
|
1097 |
-
t.lineTo(i +
|
1098 |
-
t.moveTo(i +
|
1099 |
-
t.lineTo(i -
|
1100 |
break;
|
1101 |
case "star":
|
1102 |
-
(
|
1103 |
-
(
|
1104 |
-
t.moveTo(i -
|
1105 |
-
t.lineTo(i +
|
1106 |
-
t.moveTo(i +
|
1107 |
-
t.lineTo(i -
|
1108 |
-
(
|
1109 |
-
(
|
1110 |
-
(
|
1111 |
-
t.moveTo(i -
|
1112 |
-
t.lineTo(i +
|
1113 |
-
t.moveTo(i +
|
1114 |
-
t.lineTo(i -
|
1115 |
break;
|
1116 |
case "line":
|
1117 |
-
(
|
1118 |
-
(
|
1119 |
-
t.moveTo(i -
|
1120 |
-
t.lineTo(i +
|
1121 |
break;
|
1122 |
case "dash":
|
1123 |
-
t.moveTo(i, s), t.lineTo(i + Math.cos(
|
1124 |
}
|
1125 |
t.fill(), e.borderWidth > 0 && t.stroke();
|
1126 |
}
|
1127 |
}
|
1128 |
-
function
|
1129 |
return (
|
1130 |
(i = i || 0.5),
|
1131 |
!e ||
|
@@ -1136,16 +1439,16 @@
|
|
1136 |
t.y < e.bottom + i)
|
1137 |
);
|
1138 |
}
|
1139 |
-
function
|
1140 |
t.save(),
|
1141 |
t.beginPath(),
|
1142 |
t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top),
|
1143 |
t.clip();
|
1144 |
}
|
1145 |
-
function
|
1146 |
t.restore();
|
1147 |
}
|
1148 |
-
function
|
1149 |
if (!e) return t.lineTo(i.x, i.y);
|
1150 |
if ("middle" === n) {
|
1151 |
const s = (e.x + i.x) / 2;
|
@@ -1153,7 +1456,7 @@
|
|
1153 |
} else ("after" === n) != !!s ? t.lineTo(e.x, i.y) : t.lineTo(i.x, e.y);
|
1154 |
t.lineTo(i.x, i.y);
|
1155 |
}
|
1156 |
-
function
|
1157 |
if (!e) return t.lineTo(i.x, i.y);
|
1158 |
t.bezierCurveTo(
|
1159 |
s ? e.cp1x : e.cp2x,
|
@@ -1164,35 +1467,35 @@
|
|
1164 |
i.y
|
1165 |
);
|
1166 |
}
|
1167 |
-
function
|
1168 |
-
const
|
1169 |
-
|
1170 |
-
let
|
1171 |
for (
|
1172 |
t.save(),
|
1173 |
-
t.font =
|
1174 |
(function (t, e) {
|
1175 |
e.translation && t.translate(e.translation[0], e.translation[1]);
|
1176 |
-
|
1177 |
e.color && (t.fillStyle = e.color);
|
1178 |
e.textAlign && (t.textAlign = e.textAlign);
|
1179 |
e.textBaseline && (t.textBaseline = e.textBaseline);
|
1180 |
-
})(t,
|
1181 |
-
|
1182 |
-
|
1183 |
-
++
|
1184 |
)
|
1185 |
-
(
|
1186 |
-
|
1187 |
-
(
|
1188 |
-
|
1189 |
-
t.strokeText(
|
1190 |
-
t.fillText(
|
1191 |
-
|
1192 |
-
(
|
1193 |
t.restore();
|
1194 |
}
|
1195 |
-
function
|
1196 |
if (n.strikethrough || n.underline) {
|
1197 |
const o = t.measureText(s),
|
1198 |
a = e - o.actualBoundingBoxLeft,
|
@@ -1208,735 +1511,26 @@
|
|
1208 |
t.stroke();
|
1209 |
}
|
1210 |
}
|
1211 |
-
function
|
1212 |
const { x: i, y: s, w: n, h: o, radius: a } = e;
|
1213 |
-
t.arc(i + a.topLeft, s + a.topLeft, a.topLeft, -
|
1214 |
t.lineTo(i, s + o - a.bottomLeft),
|
1215 |
-
t.arc(i + a.bottomLeft, s + o - a.bottomLeft, a.bottomLeft,
|
1216 |
t.lineTo(i + n - a.bottomRight, s + o),
|
1217 |
t.arc(
|
1218 |
i + n - a.bottomRight,
|
1219 |
s + o - a.bottomRight,
|
1220 |
a.bottomRight,
|
1221 |
-
|
1222 |
0,
|
1223 |
!0
|
1224 |
),
|
1225 |
t.lineTo(i + n, s + a.topRight),
|
1226 |
-
t.arc(i + n - a.topRight, s + a.topRight, a.topRight, 0, -
|
1227 |
t.lineTo(i + a.topLeft, s);
|
1228 |
}
|
1229 |
-
function
|
1230 |
-
|
1231 |
-
let s,
|
1232 |
-
n = t.length - 1,
|
1233 |
-
o = 0;
|
1234 |
-
for (; n - o > 1; ) (s = (o + n) >> 1), i(s) ? (o = s) : (n = s);
|
1235 |
-
return { lo: o, hi: n };
|
1236 |
-
}
|
1237 |
-
const re = (t, e, i) => ae(t, i, (s) => t[s][e] < i),
|
1238 |
-
le = (t, e, i) => ae(t, i, (s) => t[s][e] >= i);
|
1239 |
-
function he(t, e, i) {
|
1240 |
-
let s = 0,
|
1241 |
-
n = t.length;
|
1242 |
-
for (; s < n && t[s] < e; ) s++;
|
1243 |
-
for (; n > s && t[n - 1] > i; ) n--;
|
1244 |
-
return s > 0 || n < t.length ? t.slice(s, n) : t;
|
1245 |
-
}
|
1246 |
-
const ce = ["push", "pop", "shift", "splice", "unshift"];
|
1247 |
-
function de(t, e) {
|
1248 |
-
t._chartjs
|
1249 |
-
? t._chartjs.listeners.push(e)
|
1250 |
-
: (Object.defineProperty(t, "_chartjs", {
|
1251 |
-
configurable: !0,
|
1252 |
-
enumerable: !1,
|
1253 |
-
value: { listeners: [e] },
|
1254 |
-
}),
|
1255 |
-
ce.forEach((e) => {
|
1256 |
-
const i = "_onData" + ht(e),
|
1257 |
-
s = t[e];
|
1258 |
-
Object.defineProperty(t, e, {
|
1259 |
-
configurable: !0,
|
1260 |
-
enumerable: !1,
|
1261 |
-
value(...e) {
|
1262 |
-
const n = s.apply(this, e);
|
1263 |
-
return (
|
1264 |
-
t._chartjs.listeners.forEach((t) => {
|
1265 |
-
"function" == typeof t[i] && t[i](...e);
|
1266 |
-
}),
|
1267 |
-
n
|
1268 |
-
);
|
1269 |
-
},
|
1270 |
-
});
|
1271 |
-
}));
|
1272 |
-
}
|
1273 |
-
function ue(t, e) {
|
1274 |
-
const i = t._chartjs;
|
1275 |
-
if (!i) return;
|
1276 |
-
const s = i.listeners,
|
1277 |
-
n = s.indexOf(e);
|
1278 |
-
-1 !== n && s.splice(n, 1),
|
1279 |
-
s.length > 0 ||
|
1280 |
-
(ce.forEach((e) => {
|
1281 |
-
delete t[e];
|
1282 |
-
}),
|
1283 |
-
delete t._chartjs);
|
1284 |
-
}
|
1285 |
-
function fe(t) {
|
1286 |
-
const e = new Set();
|
1287 |
-
let i, s;
|
1288 |
-
for (i = 0, s = t.length; i < s; ++i) e.add(t[i]);
|
1289 |
-
return e.size === s ? t : Array.from(e);
|
1290 |
-
}
|
1291 |
-
function ge() {
|
1292 |
-
return "undefined" != typeof window && "undefined" != typeof document;
|
1293 |
-
}
|
1294 |
-
function pe(t) {
|
1295 |
-
let e = t.parentNode;
|
1296 |
-
return e && "[object ShadowRoot]" === e.toString() && (e = e.host), e;
|
1297 |
-
}
|
1298 |
-
function me(t, e, i) {
|
1299 |
-
let s;
|
1300 |
-
return (
|
1301 |
-
"string" == typeof t
|
1302 |
-
? ((s = parseInt(t, 10)),
|
1303 |
-
-1 !== t.indexOf("%") && (s = (s / 100) * e.parentNode[i]))
|
1304 |
-
: (s = t),
|
1305 |
-
s
|
1306 |
-
);
|
1307 |
-
}
|
1308 |
-
const xe = (t) => window.getComputedStyle(t, null);
|
1309 |
-
function be(t, e) {
|
1310 |
-
return xe(t).getPropertyValue(e);
|
1311 |
-
}
|
1312 |
-
const _e = ["top", "right", "bottom", "left"];
|
1313 |
-
function ye(t, e, i) {
|
1314 |
-
const s = {};
|
1315 |
-
i = i ? "-" + i : "";
|
1316 |
-
for (let n = 0; n < 4; n++) {
|
1317 |
-
const o = _e[n];
|
1318 |
-
s[o] = parseFloat(t[e + "-" + o + i]) || 0;
|
1319 |
-
}
|
1320 |
-
return (s.width = s.left + s.right), (s.height = s.top + s.bottom), s;
|
1321 |
-
}
|
1322 |
-
function ve(t, e) {
|
1323 |
-
const { canvas: i, currentDevicePixelRatio: s } = e,
|
1324 |
-
n = xe(i),
|
1325 |
-
o = "border-box" === n.boxSizing,
|
1326 |
-
a = ye(n, "padding"),
|
1327 |
-
r = ye(n, "border", "width"),
|
1328 |
-
{
|
1329 |
-
x: l,
|
1330 |
-
y: h,
|
1331 |
-
box: c,
|
1332 |
-
} = (function (t, e) {
|
1333 |
-
const i = t.native || t,
|
1334 |
-
s = i.touches,
|
1335 |
-
n = s && s.length ? s[0] : i,
|
1336 |
-
{ offsetX: o, offsetY: a } = n;
|
1337 |
-
let r,
|
1338 |
-
l,
|
1339 |
-
h = !1;
|
1340 |
-
if (
|
1341 |
-
((t, e, i) => (t > 0 || e > 0) && (!i || !i.shadowRoot))(
|
1342 |
-
o,
|
1343 |
-
a,
|
1344 |
-
i.target
|
1345 |
-
)
|
1346 |
-
)
|
1347 |
-
(r = o), (l = a);
|
1348 |
-
else {
|
1349 |
-
const t = e.getBoundingClientRect();
|
1350 |
-
(r = n.clientX - t.left), (l = n.clientY - t.top), (h = !0);
|
1351 |
-
}
|
1352 |
-
return { x: r, y: l, box: h };
|
1353 |
-
})(t, i),
|
1354 |
-
d = a.left + (c && r.left),
|
1355 |
-
u = a.top + (c && r.top);
|
1356 |
-
let { width: f, height: g } = e;
|
1357 |
-
return (
|
1358 |
-
o && ((f -= a.width + r.width), (g -= a.height + r.height)),
|
1359 |
-
{
|
1360 |
-
x: Math.round((((l - d) / f) * i.width) / s),
|
1361 |
-
y: Math.round((((h - u) / g) * i.height) / s),
|
1362 |
-
}
|
1363 |
-
);
|
1364 |
-
}
|
1365 |
-
const we = (t) => Math.round(10 * t) / 10;
|
1366 |
-
function Me(t, e, i, s) {
|
1367 |
-
const n = xe(t),
|
1368 |
-
o = ye(n, "margin"),
|
1369 |
-
a = me(n.maxWidth, t, "clientWidth") || wt,
|
1370 |
-
r = me(n.maxHeight, t, "clientHeight") || wt,
|
1371 |
-
l = (function (t, e, i) {
|
1372 |
-
let s, n;
|
1373 |
-
if (void 0 === e || void 0 === i) {
|
1374 |
-
const o = pe(t);
|
1375 |
-
if (o) {
|
1376 |
-
const t = o.getBoundingClientRect(),
|
1377 |
-
a = xe(o),
|
1378 |
-
r = ye(a, "border", "width"),
|
1379 |
-
l = ye(a, "padding");
|
1380 |
-
(e = t.width - l.width - r.width),
|
1381 |
-
(i = t.height - l.height - r.height),
|
1382 |
-
(s = me(a.maxWidth, o, "clientWidth")),
|
1383 |
-
(n = me(a.maxHeight, o, "clientHeight"));
|
1384 |
-
} else (e = t.clientWidth), (i = t.clientHeight);
|
1385 |
-
}
|
1386 |
-
return { width: e, height: i, maxWidth: s || wt, maxHeight: n || wt };
|
1387 |
-
})(t, e, i);
|
1388 |
-
let { width: h, height: c } = l;
|
1389 |
-
if ("content-box" === n.boxSizing) {
|
1390 |
-
const t = ye(n, "border", "width"),
|
1391 |
-
e = ye(n, "padding");
|
1392 |
-
(h -= e.width + t.width), (c -= e.height + t.height);
|
1393 |
-
}
|
1394 |
-
return (
|
1395 |
-
(h = Math.max(0, h - o.width)),
|
1396 |
-
(c = Math.max(0, s ? Math.floor(h / s) : c - o.height)),
|
1397 |
-
(h = we(Math.min(h, a, l.maxWidth))),
|
1398 |
-
(c = we(Math.min(c, r, l.maxHeight))),
|
1399 |
-
h && !c && (c = we(h / 2)),
|
1400 |
-
{ width: h, height: c }
|
1401 |
-
);
|
1402 |
-
}
|
1403 |
-
function ke(t, e, i) {
|
1404 |
-
const s = e || 1,
|
1405 |
-
n = Math.floor(t.height * s),
|
1406 |
-
o = Math.floor(t.width * s);
|
1407 |
-
(t.height = n / s), (t.width = o / s);
|
1408 |
-
const a = t.canvas;
|
1409 |
-
return (
|
1410 |
-
a.style &&
|
1411 |
-
(i || (!a.style.height && !a.style.width)) &&
|
1412 |
-
((a.style.height = `${t.height}px`), (a.style.width = `${t.width}px`)),
|
1413 |
-
(t.currentDevicePixelRatio !== s || a.height !== n || a.width !== o) &&
|
1414 |
-
((t.currentDevicePixelRatio = s),
|
1415 |
-
(a.height = n),
|
1416 |
-
(a.width = o),
|
1417 |
-
t.ctx.setTransform(s, 0, 0, s, 0, 0),
|
1418 |
-
!0)
|
1419 |
-
);
|
1420 |
-
}
|
1421 |
-
const Se = (function () {
|
1422 |
-
let t = !1;
|
1423 |
-
try {
|
1424 |
-
const e = {
|
1425 |
-
get passive() {
|
1426 |
-
return (t = !0), !1;
|
1427 |
-
},
|
1428 |
-
};
|
1429 |
-
window.addEventListener("test", null, e),
|
1430 |
-
window.removeEventListener("test", null, e);
|
1431 |
-
} catch (t) {}
|
1432 |
-
return t;
|
1433 |
-
})();
|
1434 |
-
function Pe(t, e) {
|
1435 |
-
const i = be(t, e),
|
1436 |
-
s = i && i.match(/^(\d+)(\.\d+)?px$/);
|
1437 |
-
return s ? +s[1] : void 0;
|
1438 |
-
}
|
1439 |
-
function De(t, e) {
|
1440 |
-
return "native" in t ? { x: t.x, y: t.y } : ve(t, e);
|
1441 |
-
}
|
1442 |
-
function Ce(t, e, i, s) {
|
1443 |
-
const { controller: n, data: o, _sorted: a } = t,
|
1444 |
-
r = n._cachedMeta.iScale;
|
1445 |
-
if (r && e === r.axis && "r" !== e && a && o.length) {
|
1446 |
-
const t = r._reversePixels ? le : re;
|
1447 |
-
if (!s) return t(o, e, i);
|
1448 |
-
if (n._sharedOptions) {
|
1449 |
-
const s = o[0],
|
1450 |
-
n = "function" == typeof s.getRange && s.getRange(e);
|
1451 |
-
if (n) {
|
1452 |
-
const s = t(o, e, i - n),
|
1453 |
-
a = t(o, e, i + n);
|
1454 |
-
return { lo: s.lo, hi: a.hi };
|
1455 |
-
}
|
1456 |
-
}
|
1457 |
-
}
|
1458 |
-
return { lo: 0, hi: o.length - 1 };
|
1459 |
-
}
|
1460 |
-
function Oe(t, e, i, s, n) {
|
1461 |
-
const o = t.getSortedVisibleDatasetMetas(),
|
1462 |
-
a = i[e];
|
1463 |
-
for (let t = 0, i = o.length; t < i; ++t) {
|
1464 |
-
const { index: i, data: r } = o[t],
|
1465 |
-
{ lo: l, hi: h } = Ce(o[t], e, a, n);
|
1466 |
-
for (let t = l; t <= h; ++t) {
|
1467 |
-
const e = r[t];
|
1468 |
-
e.skip || s(e, i, t);
|
1469 |
-
}
|
1470 |
-
}
|
1471 |
-
}
|
1472 |
-
function Ae(t, e, i, s) {
|
1473 |
-
const n = [];
|
1474 |
-
if (!Jt(e, t.chartArea, t._minPadding)) return n;
|
1475 |
-
return (
|
1476 |
-
Oe(
|
1477 |
-
t,
|
1478 |
-
i,
|
1479 |
-
e,
|
1480 |
-
function (t, i, o) {
|
1481 |
-
t.inRange(e.x, e.y, s) &&
|
1482 |
-
n.push({ element: t, datasetIndex: i, index: o });
|
1483 |
-
},
|
1484 |
-
!0
|
1485 |
-
),
|
1486 |
-
n
|
1487 |
-
);
|
1488 |
-
}
|
1489 |
-
function Te(t, e, i, s, n) {
|
1490 |
-
let o = [];
|
1491 |
-
const a = (function (t) {
|
1492 |
-
const e = -1 !== t.indexOf("x"),
|
1493 |
-
i = -1 !== t.indexOf("y");
|
1494 |
-
return function (t, s) {
|
1495 |
-
const n = e ? Math.abs(t.x - s.x) : 0,
|
1496 |
-
o = i ? Math.abs(t.y - s.y) : 0;
|
1497 |
-
return Math.sqrt(Math.pow(n, 2) + Math.pow(o, 2));
|
1498 |
-
};
|
1499 |
-
})(i);
|
1500 |
-
let r = Number.POSITIVE_INFINITY;
|
1501 |
-
return (
|
1502 |
-
Oe(t, i, e, function (i, l, h) {
|
1503 |
-
const c = i.inRange(e.x, e.y, n);
|
1504 |
-
if (s && !c) return;
|
1505 |
-
const d = i.getCenterPoint(n);
|
1506 |
-
if (!Jt(d, t.chartArea, t._minPadding) && !c) return;
|
1507 |
-
const u = a(e, d);
|
1508 |
-
u < r
|
1509 |
-
? ((o = [{ element: i, datasetIndex: l, index: h }]), (r = u))
|
1510 |
-
: u === r && o.push({ element: i, datasetIndex: l, index: h });
|
1511 |
-
}),
|
1512 |
-
o
|
1513 |
-
);
|
1514 |
-
}
|
1515 |
-
function Le(t, e, i, s, n) {
|
1516 |
-
return Jt(e, t.chartArea, t._minPadding)
|
1517 |
-
? "r" !== i || s
|
1518 |
-
? Te(t, e, i, s, n)
|
1519 |
-
: (function (t, e, i, s) {
|
1520 |
-
let n = [];
|
1521 |
-
return (
|
1522 |
-
Oe(t, i, e, function (t, i, o) {
|
1523 |
-
const { startAngle: a, endAngle: r } = t.getProps(
|
1524 |
-
["startAngle", "endAngle"],
|
1525 |
-
s
|
1526 |
-
),
|
1527 |
-
{ angle: l } = Bt(t, { x: e.x, y: e.y });
|
1528 |
-
Ht(l, a, r) &&
|
1529 |
-
n.push({ element: t, datasetIndex: i, index: o });
|
1530 |
-
}),
|
1531 |
-
n
|
1532 |
-
);
|
1533 |
-
})(t, e, i, n)
|
1534 |
-
: [];
|
1535 |
-
}
|
1536 |
-
function Re(t, e, i, s) {
|
1537 |
-
const n = De(e, t),
|
1538 |
-
o = [],
|
1539 |
-
a = i.axis,
|
1540 |
-
r = "x" === a ? "inXRange" : "inYRange";
|
1541 |
-
let l = !1;
|
1542 |
-
return (
|
1543 |
-
(function (t, e) {
|
1544 |
-
const i = t.getSortedVisibleDatasetMetas();
|
1545 |
-
let s, n, o;
|
1546 |
-
for (let t = 0, a = i.length; t < a; ++t) {
|
1547 |
-
({ index: s, data: n } = i[t]);
|
1548 |
-
for (let t = 0, i = n.length; t < i; ++t)
|
1549 |
-
(o = n[t]), o.skip || e(o, s, t);
|
1550 |
-
}
|
1551 |
-
})(t, (t, e, i) => {
|
1552 |
-
t[r](n[a], s) && o.push({ element: t, datasetIndex: e, index: i }),
|
1553 |
-
t.inRange(n.x, n.y, s) && (l = !0);
|
1554 |
-
}),
|
1555 |
-
i.intersect && !l ? [] : o
|
1556 |
-
);
|
1557 |
-
}
|
1558 |
-
var Ee = {
|
1559 |
-
modes: {
|
1560 |
-
index(t, e, i, s) {
|
1561 |
-
const n = De(e, t),
|
1562 |
-
o = i.axis || "x",
|
1563 |
-
a = i.intersect ? Ae(t, n, o, s) : Le(t, n, o, !1, s),
|
1564 |
-
r = [];
|
1565 |
-
return a.length
|
1566 |
-
? (t.getSortedVisibleDatasetMetas().forEach((t) => {
|
1567 |
-
const e = a[0].index,
|
1568 |
-
i = t.data[e];
|
1569 |
-
i &&
|
1570 |
-
!i.skip &&
|
1571 |
-
r.push({ element: i, datasetIndex: t.index, index: e });
|
1572 |
-
}),
|
1573 |
-
r)
|
1574 |
-
: [];
|
1575 |
-
},
|
1576 |
-
dataset(t, e, i, s) {
|
1577 |
-
const n = De(e, t),
|
1578 |
-
o = i.axis || "xy";
|
1579 |
-
let a = i.intersect ? Ae(t, n, o, s) : Le(t, n, o, !1, s);
|
1580 |
-
if (a.length > 0) {
|
1581 |
-
const e = a[0].datasetIndex,
|
1582 |
-
i = t.getDatasetMeta(e).data;
|
1583 |
-
a = [];
|
1584 |
-
for (let t = 0; t < i.length; ++t)
|
1585 |
-
a.push({ element: i[t], datasetIndex: e, index: t });
|
1586 |
-
}
|
1587 |
-
return a;
|
1588 |
-
},
|
1589 |
-
point: (t, e, i, s) => Ae(t, De(e, t), i.axis || "xy", s),
|
1590 |
-
nearest: (t, e, i, s) => Le(t, De(e, t), i.axis || "xy", i.intersect, s),
|
1591 |
-
x: (t, e, i, s) => Re(t, e, { axis: "x", intersect: i.intersect }, s),
|
1592 |
-
y: (t, e, i, s) => Re(t, e, { axis: "y", intersect: i.intersect }, s),
|
1593 |
-
},
|
1594 |
-
};
|
1595 |
-
const Ie = new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),
|
1596 |
-
ze = new RegExp(
|
1597 |
-
/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/
|
1598 |
-
);
|
1599 |
-
function Fe(t, e) {
|
1600 |
-
const i = ("" + t).match(Ie);
|
1601 |
-
if (!i || "normal" === i[1]) return 1.2 * e;
|
1602 |
-
switch (((t = +i[2]), i[3])) {
|
1603 |
-
case "px":
|
1604 |
-
return t;
|
1605 |
-
case "%":
|
1606 |
-
t /= 100;
|
1607 |
-
}
|
1608 |
-
return e * t;
|
1609 |
-
}
|
1610 |
-
function Be(t, e) {
|
1611 |
-
const i = {},
|
1612 |
-
s = U(e),
|
1613 |
-
n = s ? Object.keys(e) : e,
|
1614 |
-
o = U(t) ? (s ? (i) => K(t[i], t[e[i]]) : (e) => t[e]) : () => t;
|
1615 |
-
for (const t of n) i[t] = +o(t) || 0;
|
1616 |
-
return i;
|
1617 |
-
}
|
1618 |
-
function Ve(t) {
|
1619 |
-
return Be(t, { top: "y", right: "x", bottom: "y", left: "x" });
|
1620 |
-
}
|
1621 |
-
function We(t) {
|
1622 |
-
return Be(t, ["topLeft", "topRight", "bottomLeft", "bottomRight"]);
|
1623 |
-
}
|
1624 |
-
function Ne(t) {
|
1625 |
-
const e = Ve(t);
|
1626 |
-
return (e.width = e.left + e.right), (e.height = e.top + e.bottom), e;
|
1627 |
-
}
|
1628 |
-
function He(t, e) {
|
1629 |
-
(t = t || {}), (e = e || bt.font);
|
1630 |
-
let i = K(t.size, e.size);
|
1631 |
-
"string" == typeof i && (i = parseInt(i, 10));
|
1632 |
-
let s = K(t.style, e.style);
|
1633 |
-
s &&
|
1634 |
-
!("" + s).match(ze) &&
|
1635 |
-
(console.warn('Invalid font style specified: "' + s + '"'), (s = ""));
|
1636 |
-
const n = {
|
1637 |
-
family: K(t.family, e.family),
|
1638 |
-
lineHeight: Fe(K(t.lineHeight, e.lineHeight), i),
|
1639 |
-
size: i,
|
1640 |
-
style: s,
|
1641 |
-
weight: K(t.weight, e.weight),
|
1642 |
-
string: "",
|
1643 |
-
};
|
1644 |
-
return (n.string = Ut(n)), n;
|
1645 |
-
}
|
1646 |
-
function je(t, e, i, s) {
|
1647 |
-
let n,
|
1648 |
-
o,
|
1649 |
-
a,
|
1650 |
-
r = !0;
|
1651 |
-
for (n = 0, o = t.length; n < o; ++n)
|
1652 |
-
if (
|
1653 |
-
((a = t[n]),
|
1654 |
-
void 0 !== a &&
|
1655 |
-
(void 0 !== e && "function" == typeof a && ((a = a(e)), (r = !1)),
|
1656 |
-
void 0 !== i && Y(a) && ((a = a[i % a.length]), (r = !1)),
|
1657 |
-
void 0 !== a))
|
1658 |
-
)
|
1659 |
-
return s && !r && (s.cacheable = !1), a;
|
1660 |
-
}
|
1661 |
-
function $e(t, e, i) {
|
1662 |
-
const { min: s, max: n } = t,
|
1663 |
-
o = Z(e, (n - s) / 2),
|
1664 |
-
a = (t, e) => (i && 0 === t ? 0 : t + e);
|
1665 |
-
return { min: a(s, -Math.abs(o)), max: a(n, o) };
|
1666 |
-
}
|
1667 |
-
function Ye(t, e) {
|
1668 |
-
return Object.assign(Object.create(t), e);
|
1669 |
-
}
|
1670 |
-
const Ue = ["left", "top", "right", "bottom"];
|
1671 |
-
function Xe(t, e) {
|
1672 |
-
return t.filter((t) => t.pos === e);
|
1673 |
-
}
|
1674 |
-
function qe(t, e) {
|
1675 |
-
return t.filter((t) => -1 === Ue.indexOf(t.pos) && t.box.axis === e);
|
1676 |
-
}
|
1677 |
-
function Ke(t, e) {
|
1678 |
-
return t.sort((t, i) => {
|
1679 |
-
const s = e ? i : t,
|
1680 |
-
n = e ? t : i;
|
1681 |
-
return s.weight === n.weight ? s.index - n.index : s.weight - n.weight;
|
1682 |
-
});
|
1683 |
-
}
|
1684 |
-
function Ge(t, e) {
|
1685 |
-
const i = (function (t) {
|
1686 |
-
const e = {};
|
1687 |
-
for (const i of t) {
|
1688 |
-
const { stack: t, pos: s, stackWeight: n } = i;
|
1689 |
-
if (!t || !Ue.includes(s)) continue;
|
1690 |
-
const o =
|
1691 |
-
e[t] || (e[t] = { count: 0, placed: 0, weight: 0, size: 0 });
|
1692 |
-
o.count++, (o.weight += n);
|
1693 |
-
}
|
1694 |
-
return e;
|
1695 |
-
})(t),
|
1696 |
-
{ vBoxMaxWidth: s, hBoxMaxHeight: n } = e;
|
1697 |
-
let o, a, r;
|
1698 |
-
for (o = 0, a = t.length; o < a; ++o) {
|
1699 |
-
r = t[o];
|
1700 |
-
const { fullSize: a } = r.box,
|
1701 |
-
l = i[r.stack],
|
1702 |
-
h = l && r.stackWeight / l.weight;
|
1703 |
-
r.horizontal
|
1704 |
-
? ((r.width = h ? h * s : a && e.availableWidth), (r.height = n))
|
1705 |
-
: ((r.width = s), (r.height = h ? h * n : a && e.availableHeight));
|
1706 |
-
}
|
1707 |
-
return i;
|
1708 |
-
}
|
1709 |
-
function Ze(t, e, i, s) {
|
1710 |
-
return Math.max(t[i], e[i]) + Math.max(t[s], e[s]);
|
1711 |
-
}
|
1712 |
-
function Je(t, e) {
|
1713 |
-
(t.top = Math.max(t.top, e.top)),
|
1714 |
-
(t.left = Math.max(t.left, e.left)),
|
1715 |
-
(t.bottom = Math.max(t.bottom, e.bottom)),
|
1716 |
-
(t.right = Math.max(t.right, e.right));
|
1717 |
-
}
|
1718 |
-
function Qe(t, e, i, s) {
|
1719 |
-
const { pos: n, box: o } = i,
|
1720 |
-
a = t.maxPadding;
|
1721 |
-
if (!U(n)) {
|
1722 |
-
i.size && (t[n] -= i.size);
|
1723 |
-
const e = s[i.stack] || { size: 0, count: 1 };
|
1724 |
-
(e.size = Math.max(e.size, i.horizontal ? o.height : o.width)),
|
1725 |
-
(i.size = e.size / e.count),
|
1726 |
-
(t[n] += i.size);
|
1727 |
-
}
|
1728 |
-
o.getPadding && Je(a, o.getPadding());
|
1729 |
-
const r = Math.max(0, e.outerWidth - Ze(a, t, "left", "right")),
|
1730 |
-
l = Math.max(0, e.outerHeight - Ze(a, t, "top", "bottom")),
|
1731 |
-
h = r !== t.w,
|
1732 |
-
c = l !== t.h;
|
1733 |
-
return (
|
1734 |
-
(t.w = r),
|
1735 |
-
(t.h = l),
|
1736 |
-
i.horizontal ? { same: h, other: c } : { same: c, other: h }
|
1737 |
-
);
|
1738 |
-
}
|
1739 |
-
function ti(t, e) {
|
1740 |
-
const i = e.maxPadding;
|
1741 |
-
function s(t) {
|
1742 |
-
const s = { left: 0, top: 0, right: 0, bottom: 0 };
|
1743 |
-
return (
|
1744 |
-
t.forEach((t) => {
|
1745 |
-
s[t] = Math.max(e[t], i[t]);
|
1746 |
-
}),
|
1747 |
-
s
|
1748 |
-
);
|
1749 |
-
}
|
1750 |
-
return s(t ? ["left", "right"] : ["top", "bottom"]);
|
1751 |
-
}
|
1752 |
-
function ei(t, e, i, s) {
|
1753 |
-
const n = [];
|
1754 |
-
let o, a, r, l, h, c;
|
1755 |
-
for (o = 0, a = t.length, h = 0; o < a; ++o) {
|
1756 |
-
(r = t[o]),
|
1757 |
-
(l = r.box),
|
1758 |
-
l.update(r.width || e.w, r.height || e.h, ti(r.horizontal, e));
|
1759 |
-
const { same: a, other: d } = Qe(e, i, r, s);
|
1760 |
-
(h |= a && n.length), (c = c || d), l.fullSize || n.push(r);
|
1761 |
-
}
|
1762 |
-
return (h && ei(n, e, i, s)) || c;
|
1763 |
-
}
|
1764 |
-
function ii(t, e, i, s, n) {
|
1765 |
-
(t.top = i),
|
1766 |
-
(t.left = e),
|
1767 |
-
(t.right = e + s),
|
1768 |
-
(t.bottom = i + n),
|
1769 |
-
(t.width = s),
|
1770 |
-
(t.height = n);
|
1771 |
-
}
|
1772 |
-
function si(t, e, i, s) {
|
1773 |
-
const n = i.padding;
|
1774 |
-
let { x: o, y: a } = e;
|
1775 |
-
for (const r of t) {
|
1776 |
-
const t = r.box,
|
1777 |
-
l = s[r.stack] || { count: 1, placed: 0, weight: 1 },
|
1778 |
-
h = r.stackWeight / l.weight || 1;
|
1779 |
-
if (r.horizontal) {
|
1780 |
-
const s = e.w * h,
|
1781 |
-
o = l.size || t.height;
|
1782 |
-
ct(l.start) && (a = l.start),
|
1783 |
-
t.fullSize
|
1784 |
-
? ii(t, n.left, a, i.outerWidth - n.right - n.left, o)
|
1785 |
-
: ii(t, e.left + l.placed, a, s, o),
|
1786 |
-
(l.start = a),
|
1787 |
-
(l.placed += s),
|
1788 |
-
(a = t.bottom);
|
1789 |
-
} else {
|
1790 |
-
const s = e.h * h,
|
1791 |
-
a = l.size || t.width;
|
1792 |
-
ct(l.start) && (o = l.start),
|
1793 |
-
t.fullSize
|
1794 |
-
? ii(t, o, n.top, a, i.outerHeight - n.bottom - n.top)
|
1795 |
-
: ii(t, o, e.top + l.placed, a, s),
|
1796 |
-
(l.start = o),
|
1797 |
-
(l.placed += s),
|
1798 |
-
(o = t.right);
|
1799 |
-
}
|
1800 |
-
}
|
1801 |
-
(e.x = o), (e.y = a);
|
1802 |
-
}
|
1803 |
-
bt.set("layout", {
|
1804 |
-
autoPadding: !0,
|
1805 |
-
padding: { top: 0, right: 0, bottom: 0, left: 0 },
|
1806 |
-
});
|
1807 |
-
var ni = {
|
1808 |
-
addBox(t, e) {
|
1809 |
-
t.boxes || (t.boxes = []),
|
1810 |
-
(e.fullSize = e.fullSize || !1),
|
1811 |
-
(e.position = e.position || "top"),
|
1812 |
-
(e.weight = e.weight || 0),
|
1813 |
-
(e._layers =
|
1814 |
-
e._layers ||
|
1815 |
-
function () {
|
1816 |
-
return [
|
1817 |
-
{
|
1818 |
-
z: 0,
|
1819 |
-
draw(t) {
|
1820 |
-
e.draw(t);
|
1821 |
-
},
|
1822 |
-
},
|
1823 |
-
];
|
1824 |
-
}),
|
1825 |
-
t.boxes.push(e);
|
1826 |
-
},
|
1827 |
-
removeBox(t, e) {
|
1828 |
-
const i = t.boxes ? t.boxes.indexOf(e) : -1;
|
1829 |
-
-1 !== i && t.boxes.splice(i, 1);
|
1830 |
-
},
|
1831 |
-
configure(t, e, i) {
|
1832 |
-
(e.fullSize = i.fullSize),
|
1833 |
-
(e.position = i.position),
|
1834 |
-
(e.weight = i.weight);
|
1835 |
-
},
|
1836 |
-
update(t, e, i, s) {
|
1837 |
-
if (!t) return;
|
1838 |
-
const n = Ne(t.options.layout.padding),
|
1839 |
-
o = Math.max(e - n.width, 0),
|
1840 |
-
a = Math.max(i - n.height, 0),
|
1841 |
-
r = (function (t) {
|
1842 |
-
const e = (function (t) {
|
1843 |
-
const e = [];
|
1844 |
-
let i, s, n, o, a, r;
|
1845 |
-
for (i = 0, s = (t || []).length; i < s; ++i)
|
1846 |
-
(n = t[i]),
|
1847 |
-
({
|
1848 |
-
position: o,
|
1849 |
-
options: { stack: a, stackWeight: r = 1 },
|
1850 |
-
} = n),
|
1851 |
-
e.push({
|
1852 |
-
index: i,
|
1853 |
-
box: n,
|
1854 |
-
pos: o,
|
1855 |
-
horizontal: n.isHorizontal(),
|
1856 |
-
weight: n.weight,
|
1857 |
-
stack: a && o + a,
|
1858 |
-
stackWeight: r,
|
1859 |
-
});
|
1860 |
-
return e;
|
1861 |
-
})(t),
|
1862 |
-
i = Ke(
|
1863 |
-
e.filter((t) => t.box.fullSize),
|
1864 |
-
!0
|
1865 |
-
),
|
1866 |
-
s = Ke(Xe(e, "left"), !0),
|
1867 |
-
n = Ke(Xe(e, "right")),
|
1868 |
-
o = Ke(Xe(e, "top"), !0),
|
1869 |
-
a = Ke(Xe(e, "bottom")),
|
1870 |
-
r = qe(e, "x"),
|
1871 |
-
l = qe(e, "y");
|
1872 |
-
return {
|
1873 |
-
fullSize: i,
|
1874 |
-
leftAndTop: s.concat(o),
|
1875 |
-
rightAndBottom: n.concat(l).concat(a).concat(r),
|
1876 |
-
chartArea: Xe(e, "chartArea"),
|
1877 |
-
vertical: s.concat(n).concat(l),
|
1878 |
-
horizontal: o.concat(a).concat(r),
|
1879 |
-
};
|
1880 |
-
})(t.boxes),
|
1881 |
-
l = r.vertical,
|
1882 |
-
h = r.horizontal;
|
1883 |
-
Q(t.boxes, (t) => {
|
1884 |
-
"function" == typeof t.beforeLayout && t.beforeLayout();
|
1885 |
-
});
|
1886 |
-
const c =
|
1887 |
-
l.reduce(
|
1888 |
-
(t, e) =>
|
1889 |
-
e.box.options && !1 === e.box.options.display ? t : t + 1,
|
1890 |
-
0
|
1891 |
-
) || 1,
|
1892 |
-
d = Object.freeze({
|
1893 |
-
outerWidth: e,
|
1894 |
-
outerHeight: i,
|
1895 |
-
padding: n,
|
1896 |
-
availableWidth: o,
|
1897 |
-
availableHeight: a,
|
1898 |
-
vBoxMaxWidth: o / 2 / c,
|
1899 |
-
hBoxMaxHeight: a / 2,
|
1900 |
-
}),
|
1901 |
-
u = Object.assign({}, n);
|
1902 |
-
Je(u, Ne(s));
|
1903 |
-
const f = Object.assign(
|
1904 |
-
{ maxPadding: u, w: o, h: a, x: n.left, y: n.top },
|
1905 |
-
n
|
1906 |
-
),
|
1907 |
-
g = Ge(l.concat(h), d);
|
1908 |
-
ei(r.fullSize, f, d, g),
|
1909 |
-
ei(l, f, d, g),
|
1910 |
-
ei(h, f, d, g) && ei(l, f, d, g),
|
1911 |
-
(function (t) {
|
1912 |
-
const e = t.maxPadding;
|
1913 |
-
function i(i) {
|
1914 |
-
const s = Math.max(e[i] - t[i], 0);
|
1915 |
-
return (t[i] += s), s;
|
1916 |
-
}
|
1917 |
-
(t.y += i("top")), (t.x += i("left")), i("right"), i("bottom");
|
1918 |
-
})(f),
|
1919 |
-
si(r.leftAndTop, f, d, g),
|
1920 |
-
(f.x += f.w),
|
1921 |
-
(f.y += f.h),
|
1922 |
-
si(r.rightAndBottom, f, d, g),
|
1923 |
-
(t.chartArea = {
|
1924 |
-
left: f.left,
|
1925 |
-
top: f.top,
|
1926 |
-
right: f.left + f.w,
|
1927 |
-
bottom: f.top + f.h,
|
1928 |
-
height: f.h,
|
1929 |
-
width: f.w,
|
1930 |
-
}),
|
1931 |
-
Q(r.chartArea, (e) => {
|
1932 |
-
const i = e.box;
|
1933 |
-
Object.assign(i, t.chartArea),
|
1934 |
-
i.update(f.w, f.h, { left: 0, top: 0, right: 0, bottom: 0 });
|
1935 |
-
});
|
1936 |
-
},
|
1937 |
-
};
|
1938 |
-
function oi(t, e = [""], i = t, s, n = () => t[0]) {
|
1939 |
-
ct(s) || (s = mi("_fallback", t));
|
1940 |
const o = {
|
1941 |
[Symbol.toStringTag]: "Object",
|
1942 |
_cacheable: !0,
|
@@ -1944,53 +1538,53 @@
|
|
1944 |
_rootScopes: i,
|
1945 |
_fallback: s,
|
1946 |
_getTarget: n,
|
1947 |
-
override: (n) =>
|
1948 |
};
|
1949 |
return new Proxy(o, {
|
1950 |
deleteProperty: (e, i) => (
|
1951 |
delete e[i], delete e._keys, delete t[0][i], !0
|
1952 |
),
|
1953 |
get: (i, s) =>
|
1954 |
-
|
1955 |
(function (t, e, i, s) {
|
1956 |
let n;
|
1957 |
for (const o of e)
|
1958 |
-
if (((n =
|
1959 |
-
return
|
1960 |
})(s, e, t, i)
|
1961 |
),
|
1962 |
getOwnPropertyDescriptor: (t, e) =>
|
1963 |
Reflect.getOwnPropertyDescriptor(t._scopes[0], e),
|
1964 |
getPrototypeOf: () => Reflect.getPrototypeOf(t[0]),
|
1965 |
-
has: (t, e) =>
|
1966 |
-
ownKeys: (t) =>
|
1967 |
set(t, e, i) {
|
1968 |
const s = t._storage || (t._storage = n());
|
1969 |
return (t[e] = s[e] = i), delete t._keys, !0;
|
1970 |
},
|
1971 |
});
|
1972 |
}
|
1973 |
-
function
|
1974 |
-
const
|
1975 |
_cacheable: !1,
|
1976 |
_proxy: t,
|
1977 |
_context: e,
|
1978 |
_subProxy: i,
|
1979 |
_stack: new Set(),
|
1980 |
-
_descriptors:
|
1981 |
-
setContext: (e) =>
|
1982 |
-
override: (
|
1983 |
};
|
1984 |
-
return new Proxy(
|
1985 |
deleteProperty: (e, i) => (delete e[i], delete t[i], !0),
|
1986 |
get: (t, e, i) =>
|
1987 |
-
|
1988 |
(function (t, e, i) {
|
1989 |
-
const { _proxy:
|
1990 |
-
let
|
1991 |
-
|
1992 |
-
|
1993 |
-
(
|
1994 |
const { _proxy: n, _context: o, _subProxy: a, _stack: r } = i;
|
1995 |
if (r.has(t))
|
1996 |
throw new Error(
|
@@ -1999,32 +1593,32 @@
|
|
1999 |
r.add(t),
|
2000 |
(e = e(o, a || s)),
|
2001 |
r.delete(t),
|
2002 |
-
|
2003 |
return e;
|
2004 |
-
})(e,
|
2005 |
-
|
2006 |
-
|
2007 |
-
(
|
2008 |
const {
|
2009 |
-
_proxy:
|
2010 |
-
_context:
|
2011 |
-
_subProxy:
|
2012 |
-
_descriptors:
|
2013 |
} = i;
|
2014 |
-
if (
|
2015 |
-
else if (
|
2016 |
const i = e,
|
2017 |
-
s =
|
2018 |
e = [];
|
2019 |
-
for (const
|
2020 |
-
const i =
|
2021 |
-
e.push(
|
2022 |
}
|
2023 |
}
|
2024 |
return e;
|
2025 |
-
})(e,
|
2026 |
-
|
2027 |
-
return
|
2028 |
})(t, e, i)
|
2029 |
),
|
2030 |
getOwnPropertyDescriptor: (e, i) =>
|
@@ -2039,7 +1633,7 @@
|
|
2039 |
set: (e, i, s) => ((t[i] = s), delete e[i], !0),
|
2040 |
});
|
2041 |
}
|
2042 |
-
function
|
2043 |
const {
|
2044 |
_scriptable: i = e.scriptable,
|
2045 |
_indexable: s = e.indexable,
|
@@ -2049,69 +1643,68 @@
|
|
2049 |
allKeys: n,
|
2050 |
scriptable: i,
|
2051 |
indexable: s,
|
2052 |
-
isScriptable:
|
2053 |
-
isIndexable:
|
2054 |
};
|
2055 |
}
|
2056 |
-
const
|
2057 |
-
|
2058 |
-
|
2059 |
"adapters" !== t &&
|
2060 |
(null === Object.getPrototypeOf(e) || e.constructor === Object);
|
2061 |
-
function
|
2062 |
if (Object.prototype.hasOwnProperty.call(t, e)) return t[e];
|
2063 |
const s = i();
|
2064 |
return (t[e] = s), s;
|
2065 |
}
|
2066 |
-
function
|
2067 |
-
return
|
2068 |
}
|
2069 |
-
const
|
2070 |
-
|
2071 |
-
function fi(t, e, i, s, n) {
|
2072 |
for (const o of e) {
|
2073 |
-
const e =
|
2074 |
if (e) {
|
2075 |
t.add(e);
|
2076 |
-
const o =
|
2077 |
-
if (
|
2078 |
-
} else if (!1 === e &&
|
2079 |
}
|
2080 |
return !1;
|
2081 |
}
|
2082 |
-
function
|
2083 |
-
const
|
2084 |
-
|
2085 |
-
|
2086 |
-
|
2087 |
-
|
2088 |
-
let
|
2089 |
return (
|
2090 |
-
null !==
|
2091 |
-
(!
|
2092 |
-
|
2093 |
(function (t, e, i) {
|
2094 |
-
const
|
2095 |
-
e in
|
2096 |
-
const
|
2097 |
-
if (
|
2098 |
-
return
|
2099 |
-
})(e, i,
|
2100 |
)
|
2101 |
);
|
2102 |
}
|
2103 |
-
function
|
2104 |
-
for (; i; ) i =
|
2105 |
return i;
|
2106 |
}
|
2107 |
-
function
|
2108 |
for (const i of e) {
|
2109 |
if (!i) continue;
|
2110 |
const e = i[t];
|
2111 |
-
if (
|
2112 |
}
|
2113 |
}
|
2114 |
-
function
|
2115 |
let e = t._keys;
|
2116 |
return (
|
2117 |
e ||
|
@@ -2126,15 +1719,24 @@
|
|
2126 |
e
|
2127 |
);
|
2128 |
}
|
2129 |
-
|
2130 |
-
|
2131 |
-
|
2132 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2133 |
const n = t.skip ? e : t,
|
2134 |
o = e,
|
2135 |
a = i.skip ? e : i,
|
2136 |
-
r =
|
2137 |
-
l =
|
2138 |
let h = r / (r + l),
|
2139 |
c = l / (r + l);
|
2140 |
(h = isNaN(h) ? 0 : h), (c = isNaN(c) ? 0 : c);
|
@@ -2145,24 +1747,24 @@
|
|
2145 |
next: { x: o.x + u * (a.x - n.x), y: o.y + u * (a.y - n.y) },
|
2146 |
};
|
2147 |
}
|
2148 |
-
function
|
2149 |
-
const i =
|
2150 |
s = t.length,
|
2151 |
n = Array(s).fill(0),
|
2152 |
o = Array(s);
|
2153 |
let a,
|
2154 |
r,
|
2155 |
l,
|
2156 |
-
h =
|
2157 |
for (a = 0; a < s; ++a)
|
2158 |
-
if (((r = l), (l = h), (h =
|
2159 |
if (h) {
|
2160 |
const t = h[e] - l[e];
|
2161 |
n[a] = 0 !== t ? (h[i] - l[i]) / t : 0;
|
2162 |
}
|
2163 |
o[a] = r
|
2164 |
? h
|
2165 |
-
?
|
2166 |
? 0
|
2167 |
: (n[a - 1] + n[a]) / 2
|
2168 |
: n[a - 1]
|
@@ -2175,13 +1777,13 @@
|
|
2175 |
a,
|
2176 |
r,
|
2177 |
l,
|
2178 |
-
h =
|
2179 |
for (let c = 0; c < s - 1; ++c)
|
2180 |
(l = h),
|
2181 |
-
(h =
|
2182 |
l &&
|
2183 |
h &&
|
2184 |
-
(
|
2185 |
? (i[c] = i[c + 1] = 0)
|
2186 |
: ((n = i[c] / e[c]),
|
2187 |
(o = i[c + 1] / e[c]),
|
@@ -2192,14 +1794,14 @@
|
|
2192 |
(i[c + 1] = o * a * e[c]))));
|
2193 |
})(t, n, o),
|
2194 |
(function (t, e, i = "x") {
|
2195 |
-
const s =
|
2196 |
n = t.length;
|
2197 |
let o,
|
2198 |
a,
|
2199 |
r,
|
2200 |
-
l =
|
2201 |
for (let h = 0; h < n; ++h) {
|
2202 |
-
if (((a = r), (r = l), (l =
|
2203 |
const n = r[i],
|
2204 |
c = r[s];
|
2205 |
a &&
|
@@ -2213,21 +1815,21 @@
|
|
2213 |
}
|
2214 |
})(t, o, e);
|
2215 |
}
|
2216 |
-
function
|
2217 |
return Math.max(Math.min(t, i), e);
|
2218 |
}
|
2219 |
-
function
|
2220 |
let o, a, r, l;
|
2221 |
if (
|
2222 |
(e.spanGaps && (t = t.filter((t) => !t.skip)),
|
2223 |
"monotone" === e.cubicInterpolationMode)
|
2224 |
)
|
2225 |
-
|
2226 |
else {
|
2227 |
let i = s ? t[t.length - 1] : t[0];
|
2228 |
for (o = 0, a = t.length; o < a; ++o)
|
2229 |
(r = t[o]),
|
2230 |
-
(l =
|
2231 |
(r.cp1x = l.previous.x),
|
2232 |
(r.cp1y = l.previous.y),
|
2233 |
(r.cp2x = l.next.x),
|
@@ -2241,26 +1843,25 @@
|
|
2241 |
n,
|
2242 |
o,
|
2243 |
a,
|
2244 |
-
r =
|
2245 |
for (i = 0, s = t.length; i < s; ++i)
|
2246 |
(a = o),
|
2247 |
(o = r),
|
2248 |
-
(r = i < s - 1 &&
|
2249 |
o &&
|
2250 |
((n = t[i]),
|
2251 |
a &&
|
2252 |
-
((n.cp1x =
|
2253 |
-
(n.cp1y =
|
2254 |
r &&
|
2255 |
-
((n.cp2x =
|
2256 |
-
(n.cp2y =
|
2257 |
})(t, i);
|
2258 |
}
|
2259 |
-
const
|
2260 |
-
|
2261 |
-
|
2262 |
-
|
2263 |
-
Ci = {
|
2264 |
linear: (t) => t,
|
2265 |
easeInQuad: (t) => t * t,
|
2266 |
easeOutQuad: (t) => -t * (t - 2),
|
@@ -2282,13 +1883,13 @@
|
|
2282 |
(t /= 0.5) < 1
|
2283 |
? 0.5 * t * t * t * t * t
|
2284 |
: 0.5 * ((t -= 2) * t * t * t * t + 2),
|
2285 |
-
easeInSine: (t) => 1 - Math.cos(t *
|
2286 |
-
easeOutSine: (t) => Math.sin(t *
|
2287 |
-
easeInOutSine: (t) => -0.5 * (Math.cos(
|
2288 |
easeInExpo: (t) => (0 === t ? 0 : Math.pow(2, 10 * (t - 1))),
|
2289 |
easeOutExpo: (t) => (1 === t ? 1 : 1 - Math.pow(2, -10 * t)),
|
2290 |
easeInOutExpo: (t) =>
|
2291 |
-
|
2292 |
? t
|
2293 |
: t < 0.5
|
2294 |
? 0.5 * Math.pow(2, 10 * (2 * t - 1))
|
@@ -2299,15 +1900,15 @@
|
|
2299 |
(t /= 0.5) < 1
|
2300 |
? -0.5 * (Math.sqrt(1 - t * t) - 1)
|
2301 |
: 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),
|
2302 |
-
easeInElastic: (t) => (
|
2303 |
-
easeOutElastic: (t) => (
|
2304 |
easeInOutElastic(t) {
|
2305 |
const e = 0.1125;
|
2306 |
-
return
|
2307 |
? t
|
2308 |
: t < 0.5
|
2309 |
-
? 0.5 *
|
2310 |
-
: 0.5 + 0.5 *
|
2311 |
},
|
2312 |
easeInBack(t) {
|
2313 |
const e = 1.70158;
|
@@ -2323,7 +1924,7 @@
|
|
2323 |
? t * t * ((1 + (e *= 1.525)) * t - e) * 0.5
|
2324 |
: 0.5 * ((t -= 2) * t * ((1 + (e *= 1.525)) * t + e) + 2);
|
2325 |
},
|
2326 |
-
easeInBounce: (t) => 1 -
|
2327 |
easeOutBounce(t) {
|
2328 |
const e = 7.5625,
|
2329 |
i = 2.75;
|
@@ -2337,13 +1938,13 @@
|
|
2337 |
},
|
2338 |
easeInOutBounce: (t) =>
|
2339 |
t < 0.5
|
2340 |
-
? 0.5 *
|
2341 |
-
: 0.5 *
|
2342 |
};
|
2343 |
-
function
|
2344 |
return { x: t.x + i * (e.x - t.x), y: t.y + i * (e.y - t.y) };
|
2345 |
}
|
2346 |
-
function
|
2347 |
return {
|
2348 |
x: t.x + i * (e.x - t.x),
|
2349 |
y:
|
@@ -2360,26 +1961,101 @@
|
|
2360 |
: t.y,
|
2361 |
};
|
2362 |
}
|
2363 |
-
function
|
2364 |
const n = { x: t.cp2x, y: t.cp2y },
|
2365 |
o = { x: e.cp1x, y: e.cp1y },
|
2366 |
-
a =
|
2367 |
-
r =
|
2368 |
-
l =
|
2369 |
-
h =
|
2370 |
-
c =
|
2371 |
-
return
|
2372 |
-
}
|
2373 |
-
const
|
2374 |
-
function
|
2375 |
return (function (t, e) {
|
2376 |
e = e || {};
|
2377 |
const i = t + JSON.stringify(e);
|
2378 |
-
let s =
|
2379 |
-
return s || ((s = new Intl.NumberFormat(t, e)),
|
2380 |
})(e, i).format(t);
|
2381 |
}
|
2382 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2383 |
return t
|
2384 |
? (function (t, e) {
|
2385 |
return {
|
@@ -2401,7 +2077,7 @@
|
|
2401 |
leftForLtr: (t, e) => t,
|
2402 |
};
|
2403 |
}
|
2404 |
-
function
|
2405 |
let i, s;
|
2406 |
("ltr" !== e && "rtl" !== e) ||
|
2407 |
((i = t.canvas.style),
|
@@ -2412,17 +2088,17 @@
|
|
2412 |
i.setProperty("direction", e, "important"),
|
2413 |
(t.prevTextDirection = s));
|
2414 |
}
|
2415 |
-
function
|
2416 |
void 0 !== e &&
|
2417 |
(delete t.prevTextDirection,
|
2418 |
t.canvas.style.setProperty("direction", e[0], e[1]));
|
2419 |
}
|
2420 |
-
function
|
2421 |
return "angle" === t
|
2422 |
-
? { between:
|
2423 |
-
: { between:
|
2424 |
}
|
2425 |
-
function
|
2426 |
return {
|
2427 |
start: t % i,
|
2428 |
end: e % i,
|
@@ -2430,11 +2106,11 @@
|
|
2430 |
style: n,
|
2431 |
};
|
2432 |
}
|
2433 |
-
function
|
2434 |
if (!i) return [t];
|
2435 |
const { property: s, start: n, end: o } = i,
|
2436 |
a = e.length,
|
2437 |
-
{ compare: r, between: l, normalize: h } =
|
2438 |
{
|
2439 |
start: c,
|
2440 |
end: d,
|
@@ -2442,7 +2118,7 @@
|
|
2442 |
style: f,
|
2443 |
} = (function (t, e, i) {
|
2444 |
const { property: s, start: n, end: o } = i,
|
2445 |
-
{ between: a, normalize: r } =
|
2446 |
l = e.length;
|
2447 |
let h,
|
2448 |
c,
|
@@ -2461,40 +2137,40 @@
|
|
2461 |
g = [];
|
2462 |
let p,
|
2463 |
m,
|
2464 |
-
|
2465 |
-
|
2466 |
_ = null;
|
2467 |
-
const y = () =>
|
2468 |
-
v = () => !
|
2469 |
for (let t = c, i = c; t <= d; ++t)
|
2470 |
(m = e[t % a]),
|
2471 |
m.skip ||
|
2472 |
((p = h(m[s])),
|
2473 |
-
p !==
|
2474 |
-
((
|
2475 |
null === _ && y() && (_ = 0 === r(p, n) ? t : i),
|
2476 |
null !== _ &&
|
2477 |
v() &&
|
2478 |
-
(g.push(
|
2479 |
(_ = null)),
|
2480 |
(i = t),
|
2481 |
-
(
|
2482 |
return (
|
2483 |
null !== _ &&
|
2484 |
-
g.push(
|
2485 |
g
|
2486 |
);
|
2487 |
}
|
2488 |
-
function
|
2489 |
const i = [],
|
2490 |
s = t.segments;
|
2491 |
for (let n = 0; n < s.length; n++) {
|
2492 |
-
const o =
|
2493 |
o.length && i.push(...o);
|
2494 |
}
|
2495 |
return i;
|
2496 |
}
|
2497 |
-
function
|
2498 |
const i = t.points,
|
2499 |
s = t.options.spanGaps,
|
2500 |
n = i.length;
|
@@ -2508,8 +2184,8 @@
|
|
2508 |
for (n %= e, i && (o += n); o > n && t[o % e].skip; ) o--;
|
2509 |
return (o %= e), { start: n, end: o };
|
2510 |
})(i, n, o, s);
|
2511 |
-
if (!0 === s) return
|
2512 |
-
return
|
2513 |
t,
|
2514 |
(function (t, e, i, s) {
|
2515 |
const n = t.length,
|
@@ -2533,11 +2209,11 @@
|
|
2533 |
e
|
2534 |
);
|
2535 |
}
|
2536 |
-
function
|
2537 |
return s && s.setContext && i
|
2538 |
? (function (t, e, i, s) {
|
2539 |
const n = t._chart.getContext(),
|
2540 |
-
o =
|
2541 |
{
|
2542 |
_datasetIndex: a,
|
2543 |
options: { spanGaps: r },
|
@@ -2564,9 +2240,9 @@
|
|
2564 |
o = i[d % l];
|
2565 |
for (u = d + 1; u <= t.end; u++) {
|
2566 |
const r = i[u % l];
|
2567 |
-
(e =
|
2568 |
s.setContext(
|
2569 |
-
|
2570 |
type: "segment",
|
2571 |
p0: o,
|
2572 |
p1: r,
|
@@ -2576,7 +2252,7 @@
|
|
2576 |
})
|
2577 |
)
|
2578 |
)),
|
2579 |
-
|
2580 |
(o = r),
|
2581 |
(c = e);
|
2582 |
}
|
@@ -2586,7 +2262,7 @@
|
|
2586 |
})(t, e, i, s)
|
2587 |
: e;
|
2588 |
}
|
2589 |
-
function
|
2590 |
return {
|
2591 |
backgroundColor: t.backgroundColor,
|
2592 |
borderCapStyle: t.borderCapStyle,
|
@@ -2597,135 +2273,562 @@
|
|
2597 |
borderColor: t.borderColor,
|
2598 |
};
|
2599 |
}
|
2600 |
-
function
|
2601 |
return e && JSON.stringify(t) !== JSON.stringify(e);
|
2602 |
}
|
2603 |
-
var
|
2604 |
__proto__: null,
|
2605 |
-
easingEffects:
|
2606 |
-
|
2607 |
-
|
2608 |
-
|
2609 |
-
|
2610 |
-
|
2611 |
-
|
2612 |
-
|
2613 |
-
|
2614 |
-
|
2615 |
-
|
2616 |
-
|
2617 |
-
|
2618 |
-
|
2619 |
-
|
2620 |
-
|
2621 |
-
|
2622 |
-
|
2623 |
-
|
2624 |
-
|
2625 |
-
|
|
|
2626 |
_deprecated: function (t, e, i, s) {
|
2627 |
void 0 !== e &&
|
2628 |
console.warn(
|
2629 |
t + ': "' + i + '" is deprecated. Please use "' + s + '" instead'
|
2630 |
);
|
2631 |
},
|
2632 |
-
resolveObjectKey:
|
2633 |
-
|
2634 |
-
|
2635 |
-
|
2636 |
-
|
2637 |
-
|
2638 |
-
|
2639 |
-
|
2640 |
-
|
2641 |
-
|
2642 |
-
|
2643 |
-
|
2644 |
-
|
2645 |
-
|
2646 |
-
|
2647 |
-
|
2648 |
-
|
2649 |
-
|
2650 |
-
|
2651 |
-
|
2652 |
-
|
2653 |
-
|
2654 |
-
|
2655 |
-
|
2656 |
-
|
2657 |
-
|
2658 |
-
|
2659 |
-
|
2660 |
-
|
2661 |
-
|
2662 |
-
|
2663 |
-
|
2664 |
-
|
2665 |
-
|
2666 |
-
|
2667 |
-
|
2668 |
-
|
2669 |
-
|
2670 |
-
|
2671 |
-
|
2672 |
-
|
2673 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2674 |
},
|
2675 |
-
|
2676 |
-
|
2677 |
-
|
2678 |
-
|
2679 |
-
|
2680 |
-
|
2681 |
-
|
2682 |
-
|
2683 |
-
|
2684 |
-
|
2685 |
-
|
2686 |
-
|
2687 |
-
|
2688 |
-
|
2689 |
-
|
2690 |
-
|
2691 |
-
|
2692 |
-
|
2693 |
-
|
2694 |
-
|
2695 |
-
|
2696 |
-
|
2697 |
-
|
2698 |
-
|
2699 |
-
|
2700 |
-
|
2701 |
-
|
2702 |
-
|
2703 |
-
|
2704 |
-
|
2705 |
-
|
2706 |
-
|
2707 |
-
|
2708 |
-
|
2709 |
-
|
2710 |
-
|
2711 |
-
|
2712 |
-
|
2713 |
-
|
2714 |
-
|
2715 |
-
|
2716 |
-
|
2717 |
-
|
2718 |
-
|
2719 |
-
|
2720 |
-
|
2721 |
-
|
2722 |
-
|
2723 |
-
|
2724 |
-
|
2725 |
-
|
2726 |
-
|
2727 |
-
|
2728 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2729 |
acquireContext(t, e) {}
|
2730 |
releaseContext(t) {
|
2731 |
return !1;
|
@@ -2747,7 +2850,7 @@
|
|
2747 |
}
|
2748 |
updateConfig(t) {}
|
2749 |
}
|
2750 |
-
class
|
2751 |
acquireContext(t) {
|
2752 |
return (t && t.getContext && t.getContext("2d")) || null;
|
2753 |
}
|
@@ -2755,7 +2858,7 @@
|
|
2755 |
t.options.animation = !1;
|
2756 |
}
|
2757 |
}
|
2758 |
-
const
|
2759 |
touchstart: "mousedown",
|
2760 |
touchmove: "mousemove",
|
2761 |
touchend: "mouseup",
|
@@ -2766,82 +2869,82 @@
|
|
2766 |
pointerleave: "mouseout",
|
2767 |
pointerout: "mouseout",
|
2768 |
},
|
2769 |
-
|
2770 |
-
const
|
2771 |
-
function
|
2772 |
-
t.canvas.removeEventListener(e, i,
|
2773 |
}
|
2774 |
-
function
|
2775 |
for (const i of t) if (i === e || i.contains(e)) return !0;
|
2776 |
}
|
2777 |
-
function
|
2778 |
const s = t.canvas,
|
2779 |
n = new MutationObserver((t) => {
|
2780 |
let e = !1;
|
2781 |
for (const i of t)
|
2782 |
-
(e = e ||
|
2783 |
e && i();
|
2784 |
});
|
2785 |
return n.observe(document, { childList: !0, subtree: !0 }), n;
|
2786 |
}
|
2787 |
-
function
|
2788 |
const s = t.canvas,
|
2789 |
n = new MutationObserver((t) => {
|
2790 |
let e = !1;
|
2791 |
for (const i of t)
|
2792 |
-
(e = e ||
|
2793 |
e && i();
|
2794 |
});
|
2795 |
return n.observe(document, { childList: !0, subtree: !0 }), n;
|
2796 |
}
|
2797 |
-
const
|
2798 |
-
let
|
2799 |
-
function
|
2800 |
const t = window.devicePixelRatio;
|
2801 |
-
t !==
|
2802 |
-
((
|
2803 |
-
|
2804 |
i.currentDevicePixelRatio !== t && e();
|
2805 |
}));
|
2806 |
}
|
2807 |
-
function
|
2808 |
-
const
|
2809 |
-
|
2810 |
-
if (!
|
2811 |
-
const
|
2812 |
-
const
|
2813 |
-
|
2814 |
}, window),
|
2815 |
-
|
2816 |
const e = t[0],
|
2817 |
i = e.contentRect.width,
|
2818 |
s = e.contentRect.height;
|
2819 |
-
(0 === i && 0 === s) ||
|
2820 |
});
|
2821 |
return (
|
2822 |
-
|
2823 |
(function (t, e) {
|
2824 |
-
|
2825 |
-
})(t,
|
2826 |
-
|
2827 |
);
|
2828 |
}
|
2829 |
-
function
|
2830 |
i && i.disconnect(),
|
2831 |
"resize" === e &&
|
2832 |
(function (t) {
|
2833 |
-
|
2834 |
})(t);
|
2835 |
}
|
2836 |
-
function
|
2837 |
-
const
|
2838 |
-
|
2839 |
(e) => {
|
2840 |
null !== t.ctx &&
|
2841 |
-
|
2842 |
(function (t, e) {
|
2843 |
-
const i =
|
2844 |
-
{ x: s, y: n } =
|
2845 |
return {
|
2846 |
type: i,
|
2847 |
chart: e,
|
@@ -2860,12 +2963,12 @@
|
|
2860 |
);
|
2861 |
return (
|
2862 |
(function (t, e, i) {
|
2863 |
-
t.addEventListener(e, i,
|
2864 |
-
})(
|
2865 |
-
|
2866 |
);
|
2867 |
}
|
2868 |
-
class
|
2869 |
acquireContext(t, e) {
|
2870 |
const i = t && t.getContext && t.getContext("2d");
|
2871 |
return i && i.canvas === t
|
@@ -2887,15 +2990,15 @@
|
|
2887 |
}),
|
2888 |
(i.display = i.display || "block"),
|
2889 |
(i.boxSizing = i.boxSizing || "border-box"),
|
2890 |
-
|
2891 |
) {
|
2892 |
-
const e =
|
2893 |
void 0 !== e && (t.width = e);
|
2894 |
}
|
2895 |
-
if (
|
2896 |
if ("" === t.style.height) t.height = t.width / (e || 2);
|
2897 |
else {
|
2898 |
-
const e =
|
2899 |
void 0 !== e && (t.height = e);
|
2900 |
}
|
2901 |
})(t, e),
|
@@ -2905,15 +3008,15 @@
|
|
2905 |
releaseContext(t) {
|
2906 |
const e = t.canvas;
|
2907 |
if (!e.$chartjs) return !1;
|
2908 |
-
const
|
2909 |
["height", "width"].forEach((t) => {
|
2910 |
-
const
|
2911 |
-
|
2912 |
});
|
2913 |
-
const
|
2914 |
return (
|
2915 |
-
Object.keys(
|
2916 |
-
e.style[t] =
|
2917 |
}),
|
2918 |
(e.width = e.width),
|
2919 |
delete e.$chartjs,
|
@@ -2923,58 +3026,58 @@
|
|
2923 |
addEventListener(t, e, i) {
|
2924 |
this.removeEventListener(t, e);
|
2925 |
const s = t.$proxies || (t.$proxies = {}),
|
2926 |
-
n = { attach:
|
2927 |
s[e] = n(t, e, i);
|
2928 |
}
|
2929 |
removeEventListener(t, e) {
|
2930 |
const i = t.$proxies || (t.$proxies = {}),
|
2931 |
s = i[e];
|
2932 |
if (!s) return;
|
2933 |
-
(({ attach:
|
2934 |
(i[e] = void 0));
|
2935 |
}
|
2936 |
getDevicePixelRatio() {
|
2937 |
return window.devicePixelRatio;
|
2938 |
}
|
2939 |
getMaximumSize(t, e, i, s) {
|
2940 |
-
return
|
2941 |
}
|
2942 |
isAttached(t) {
|
2943 |
-
const e =
|
2944 |
return !(!e || !e.isConnected);
|
2945 |
}
|
2946 |
}
|
2947 |
-
function
|
2948 |
-
return !
|
2949 |
("undefined" != typeof OffscreenCanvas && t instanceof OffscreenCanvas)
|
2950 |
-
?
|
2951 |
-
:
|
2952 |
}
|
2953 |
-
var
|
2954 |
__proto__: null,
|
2955 |
-
_detectPlatform:
|
2956 |
-
BasePlatform:
|
2957 |
-
BasicPlatform:
|
2958 |
-
DomPlatform:
|
2959 |
});
|
2960 |
-
const
|
2961 |
-
|
2962 |
boolean: (t, e, i) => (i > 0.5 ? e : t),
|
2963 |
color(t, e, i) {
|
2964 |
-
const s =
|
2965 |
-
n = s.valid &&
|
2966 |
return n && n.valid ? n.mix(s, i).hexString() : e;
|
2967 |
},
|
2968 |
number: (t, e, i) => t + (e - t) * i,
|
2969 |
};
|
2970 |
-
class
|
2971 |
constructor(t, e, i, s) {
|
2972 |
const n = e[i];
|
2973 |
-
s =
|
2974 |
-
const o =
|
2975 |
(this._active = !0),
|
2976 |
-
(this._fn = t.fn ||
|
2977 |
-
(this._easing =
|
2978 |
(this._start = Math.floor(Date.now() + (t.delay || 0))),
|
2979 |
(this._duration = this._total = Math.floor(t.duration)),
|
2980 |
(this._loop = !!t.loop),
|
@@ -2997,8 +3100,8 @@
|
|
2997 |
(this._duration = Math.floor(Math.max(o, t.duration))),
|
2998 |
(this._total += n),
|
2999 |
(this._loop = !!t.loop),
|
3000 |
-
(this._to =
|
3001 |
-
(this._from =
|
3002 |
}
|
3003 |
}
|
3004 |
cancel() {
|
@@ -3034,7 +3137,7 @@
|
|
3034 |
for (let t = 0; t < i.length; t++) i[t][e]();
|
3035 |
}
|
3036 |
}
|
3037 |
-
|
3038 |
delay: void 0,
|
3039 |
duration: 1e3,
|
3040 |
easing: "easeOutQuart",
|
@@ -3044,13 +3147,13 @@
|
|
3044 |
to: void 0,
|
3045 |
type: void 0,
|
3046 |
});
|
3047 |
-
const
|
3048 |
-
|
3049 |
_fallback: !1,
|
3050 |
_indexable: !1,
|
3051 |
_scriptable: (t) => "onProgress" !== t && "onComplete" !== t && "fn" !== t,
|
3052 |
}),
|
3053 |
-
|
3054 |
colors: {
|
3055 |
type: "color",
|
3056 |
properties: ["color", "borderColor", "backgroundColor"],
|
@@ -3060,8 +3163,8 @@
|
|
3060 |
properties: ["x", "y", "borderWidth", "radius", "tension"],
|
3061 |
},
|
3062 |
}),
|
3063 |
-
|
3064 |
-
|
3065 |
active: { animation: { duration: 400 } },
|
3066 |
resize: { animation: { duration: 0 } },
|
3067 |
show: {
|
@@ -3077,20 +3180,20 @@
|
|
3077 |
},
|
3078 |
},
|
3079 |
});
|
3080 |
-
class
|
3081 |
constructor(t, e) {
|
3082 |
(this._chart = t), (this._properties = new Map()), this.configure(e);
|
3083 |
}
|
3084 |
configure(t) {
|
3085 |
-
if (!
|
3086 |
const e = this._properties;
|
3087 |
Object.getOwnPropertyNames(t).forEach((i) => {
|
3088 |
-
const
|
3089 |
-
if (!
|
3090 |
-
const
|
3091 |
-
for (const t of
|
3092 |
-
((
|
3093 |
-
(t !== i && e.has(t)) || e.set(t,
|
3094 |
});
|
3095 |
});
|
3096 |
}
|
@@ -3151,7 +3254,7 @@
|
|
3151 |
c.cancel();
|
3152 |
}
|
3153 |
d && d.duration
|
3154 |
-
? ((n[l] = c = new
|
3155 |
: (t[l] = h);
|
3156 |
}
|
3157 |
return s;
|
@@ -3159,55 +3262,54 @@
|
|
3159 |
update(t, e) {
|
3160 |
if (0 === this._properties.size) return void Object.assign(t, e);
|
3161 |
const i = this._createAnimations(t, e);
|
3162 |
-
return i.length ? (
|
3163 |
}
|
3164 |
}
|
3165 |
-
function
|
3166 |
const i = (t && t.options) || {},
|
3167 |
s = i.reverse,
|
3168 |
n = void 0 === i.min ? e : 0,
|
3169 |
o = void 0 === i.max ? e : 0;
|
3170 |
return { start: s ? o : n, end: s ? n : o };
|
3171 |
}
|
3172 |
-
function
|
3173 |
const i = [],
|
3174 |
s = t._getSortedDatasetMetas(e);
|
3175 |
let n, o;
|
3176 |
for (n = 0, o = s.length; n < o; ++n) i.push(s[n].index);
|
3177 |
return i;
|
3178 |
}
|
3179 |
-
function
|
3180 |
const n = t.keys,
|
3181 |
-
|
3182 |
-
let
|
3183 |
if (null !== e) {
|
3184 |
-
for (
|
3185 |
-
if (((
|
3186 |
if (s.all) continue;
|
3187 |
break;
|
3188 |
}
|
3189 |
-
(
|
3190 |
-
X(h) && (o || 0 === e || Ct(e) === Ct(h)) && (e += h);
|
3191 |
}
|
3192 |
return e;
|
3193 |
}
|
3194 |
}
|
3195 |
-
function
|
3196 |
const i = t && t.options.stacked;
|
3197 |
return i || (void 0 === i && void 0 !== e.stack);
|
3198 |
}
|
3199 |
-
function
|
3200 |
const s = t[e] || (t[e] = {});
|
3201 |
return s[i] || (s[i] = {});
|
3202 |
}
|
3203 |
-
function
|
3204 |
for (const n of e.getMatchingVisibleMetas(s).reverse()) {
|
3205 |
const e = t[n.index];
|
3206 |
if ((i && e > 0) || (!i && e < 0)) return n.index;
|
3207 |
}
|
3208 |
return null;
|
3209 |
}
|
3210 |
-
function
|
3211 |
const { chart: i, _cachedMeta: s } = t,
|
3212 |
n = i._stacks || (i._stacks = {}),
|
3213 |
{ iScale: o, vScale: a, index: r } = s,
|
@@ -3221,19 +3323,19 @@
|
|
3221 |
for (let t = 0; t < d; ++t) {
|
3222 |
const i = e[t],
|
3223 |
{ [l]: o, [h]: d } = i;
|
3224 |
-
(u = (i._stacks || (i._stacks = {}))[h] =
|
3225 |
(u[r] = d),
|
3226 |
-
(u._top =
|
3227 |
-
(u._bottom =
|
3228 |
}
|
3229 |
}
|
3230 |
-
function
|
3231 |
const i = t.scales;
|
3232 |
return Object.keys(i)
|
3233 |
.filter((t) => i[t].axis === e)
|
3234 |
.shift();
|
3235 |
}
|
3236 |
-
function
|
3237 |
const i = t.controller.index,
|
3238 |
s = t.vScale && t.vScale.axis;
|
3239 |
if (s) {
|
@@ -3245,9 +3347,9 @@
|
|
3245 |
}
|
3246 |
}
|
3247 |
}
|
3248 |
-
const
|
3249 |
-
|
3250 |
-
class
|
3251 |
constructor(t, e) {
|
3252 |
(this.chart = t),
|
3253 |
(this._ctx = t.ctx),
|
@@ -3263,6 +3365,7 @@
|
|
3263 |
(this._drawStart = void 0),
|
3264 |
(this._drawCount = void 0),
|
3265 |
(this.enableOptionSharing = !1),
|
|
|
3266 |
(this.$context = void 0),
|
3267 |
(this._syncList = []),
|
3268 |
this.initialize();
|
@@ -3271,28 +3374,28 @@
|
|
3271 |
const t = this._cachedMeta;
|
3272 |
this.configure(),
|
3273 |
this.linkScales(),
|
3274 |
-
(t._stacked =
|
3275 |
this.addElements();
|
3276 |
}
|
3277 |
updateIndex(t) {
|
3278 |
-
this.index !== t &&
|
3279 |
}
|
3280 |
linkScales() {
|
3281 |
const t = this.chart,
|
3282 |
e = this._cachedMeta,
|
3283 |
i = this.getDataset(),
|
3284 |
s = (t, e, i, s) => ("x" === t ? e : "r" === t ? s : i),
|
3285 |
-
n = (e.xAxisID =
|
3286 |
-
o = (e.yAxisID =
|
3287 |
-
a = (e.rAxisID =
|
3288 |
-
|
3289 |
-
|
3290 |
-
|
3291 |
(e.xScale = this.getScaleForId(n)),
|
3292 |
(e.yScale = this.getScaleForId(o)),
|
3293 |
(e.rScale = this.getScaleForId(a)),
|
3294 |
-
(e.iScale = this.getScaleForId(
|
3295 |
-
(e.vScale = this.getScaleForId(
|
3296 |
}
|
3297 |
getDataset() {
|
3298 |
return this.chart.data.datasets[this.index];
|
@@ -3312,13 +3415,13 @@
|
|
3312 |
}
|
3313 |
_destroy() {
|
3314 |
const t = this._cachedMeta;
|
3315 |
-
this._data &&
|
3316 |
}
|
3317 |
_dataCheck() {
|
3318 |
const t = this.getDataset(),
|
3319 |
e = t.data || (t.data = []),
|
3320 |
i = this._data;
|
3321 |
-
if (
|
3322 |
this._data = (function (t) {
|
3323 |
const e = Object.keys(t),
|
3324 |
i = new Array(e.length);
|
@@ -3329,11 +3432,11 @@
|
|
3329 |
})(e);
|
3330 |
else if (i !== e) {
|
3331 |
if (i) {
|
3332 |
-
|
3333 |
const t = this._cachedMeta;
|
3334 |
-
|
3335 |
}
|
3336 |
-
e && Object.isExtensible(e) &&
|
3337 |
(this._syncList = []),
|
3338 |
(this._data = e);
|
3339 |
}
|
@@ -3349,10 +3452,10 @@
|
|
3349 |
let s = !1;
|
3350 |
this._dataCheck();
|
3351 |
const n = e._stacked;
|
3352 |
-
(e._stacked =
|
3353 |
-
e.stack !== i.stack && ((s = !0),
|
3354 |
this._resyncElements(t),
|
3355 |
-
(s || n !== e._stacked) &&
|
3356 |
}
|
3357 |
configure() {
|
3358 |
const t = this.chart.config,
|
@@ -3363,27 +3466,27 @@
|
|
3363 |
(this._cachedDataOpts = {});
|
3364 |
}
|
3365 |
parse(t, e) {
|
3366 |
-
const { _cachedMeta: i, _data:
|
3367 |
-
{ iScale:
|
3368 |
-
|
3369 |
-
let
|
3370 |
-
|
3371 |
-
|
3372 |
-
|
3373 |
-
|
3374 |
-
if (!1 === this._parsing) (i._parsed =
|
3375 |
else {
|
3376 |
-
|
3377 |
-
? this.parseArrayData(i,
|
3378 |
-
:
|
3379 |
-
? this.parseObjectData(i,
|
3380 |
-
: this.parsePrimitiveData(i,
|
3381 |
-
const
|
3382 |
-
for (
|
3383 |
-
(i._parsed[
|
3384 |
-
i._sorted =
|
3385 |
}
|
3386 |
-
|
3387 |
}
|
3388 |
parsePrimitiveData(t, e, i, s) {
|
3389 |
const { iScale: n, vScale: o } = t,
|
@@ -3416,7 +3519,7 @@
|
|
3416 |
for (h = 0, c = s; h < c; ++h)
|
3417 |
(d = h + i),
|
3418 |
(u = e[d]),
|
3419 |
-
(l[h] = { x: n.parse(
|
3420 |
return l;
|
3421 |
}
|
3422 |
getParsed(t) {
|
@@ -3429,7 +3532,7 @@
|
|
3429 |
const s = this.chart,
|
3430 |
n = this._cachedMeta,
|
3431 |
o = e[t.axis];
|
3432 |
-
return
|
3433 |
mode: i,
|
3434 |
});
|
3435 |
}
|
@@ -3437,7 +3540,7 @@
|
|
3437 |
const n = i[e.axis];
|
3438 |
let o = null === n ? NaN : n;
|
3439 |
const a = s && i._stacks[e.axis];
|
3440 |
-
s && a && ((s.values = a), (o =
|
3441 |
(t.min = Math.min(t.min, o)),
|
3442 |
(t.max = Math.max(t.max, o));
|
3443 |
}
|
@@ -3445,16 +3548,16 @@
|
|
3445 |
const i = this._cachedMeta,
|
3446 |
s = i._parsed,
|
3447 |
n = i._sorted && t === i.iScale,
|
3448 |
-
|
3449 |
-
|
3450 |
-
|
3451 |
-
t && !e.hidden && e._stacked && { keys:
|
3452 |
e,
|
3453 |
i,
|
3454 |
this.chart
|
3455 |
),
|
3456 |
-
|
3457 |
-
{ min:
|
3458 |
const {
|
3459 |
min: e,
|
3460 |
max: i,
|
@@ -3465,32 +3568,32 @@
|
|
3465 |
min: s ? e : Number.NEGATIVE_INFINITY,
|
3466 |
max: n ? i : Number.POSITIVE_INFINITY,
|
3467 |
};
|
3468 |
-
})(
|
3469 |
-
let
|
3470 |
-
function
|
3471 |
-
|
3472 |
-
const e =
|
3473 |
-
return !
|
3474 |
}
|
3475 |
for (
|
3476 |
-
|
3477 |
-
|
3478 |
-
++
|
3479 |
);
|
3480 |
if (n)
|
3481 |
-
for (
|
3482 |
-
if (!
|
3483 |
-
this.updateRangeFromParsed(
|
3484 |
break;
|
3485 |
}
|
3486 |
-
return
|
3487 |
}
|
3488 |
getAllParsedValues(t) {
|
3489 |
const e = this._cachedMeta._parsed,
|
3490 |
i = [];
|
3491 |
-
let s, n,
|
3492 |
for (s = 0, n = e.length; s < n; ++s)
|
3493 |
-
(
|
3494 |
return i;
|
3495 |
}
|
3496 |
getMaxOverflow() {
|
@@ -3510,20 +3613,20 @@
|
|
3510 |
const e = this._cachedMeta;
|
3511 |
this.update(t || "default"),
|
3512 |
(e._clip = (function (t) {
|
3513 |
-
let e, i, s,
|
3514 |
return (
|
3515 |
-
|
3516 |
-
? ((e = t.top), (i = t.right), (s = t.bottom), (
|
3517 |
-
: (e = i = s =
|
3518 |
-
{ top: e, right: i, bottom: s, left:
|
3519 |
);
|
3520 |
})(
|
3521 |
-
|
3522 |
this.options.clip,
|
3523 |
(function (t, e, i) {
|
3524 |
if (!1 === i) return !1;
|
3525 |
-
const s =
|
3526 |
-
n =
|
3527 |
return {
|
3528 |
top: n.end,
|
3529 |
right: s.end,
|
@@ -3566,7 +3669,7 @@
|
|
3566 |
(n =
|
3567 |
e.$context ||
|
3568 |
(e.$context = (function (t, e, i) {
|
3569 |
-
return
|
3570 |
active: !1,
|
3571 |
dataIndex: e,
|
3572 |
parsed: void 0,
|
@@ -3584,7 +3687,7 @@
|
|
3584 |
(n =
|
3585 |
this.$context ||
|
3586 |
(this.$context = (function (t, e) {
|
3587 |
-
return
|
3588 |
active: !1,
|
3589 |
dataset: void 0,
|
3590 |
datasetIndex: e,
|
@@ -3608,16 +3711,16 @@
|
|
3608 |
n = this._cachedDataOpts,
|
3609 |
o = t + "-" + e,
|
3610 |
a = n[o],
|
3611 |
-
r = this.enableOptionSharing &&
|
3612 |
-
if (a) return
|
3613 |
const l = this.chart.config,
|
3614 |
h = l.datasetElementScopeKeys(this._type, t),
|
3615 |
c = s ? [`${t}Hover`, "hover", t, ""] : [t, ""],
|
3616 |
d = l.getOptionScopes(this.getDataset(), h),
|
3617 |
-
u = Object.keys(
|
3618 |
f = l.resolveNamedOptions(d, u, () => this.getContext(i, s), c);
|
3619 |
return (
|
3620 |
-
f.$shared && ((f.$shared = r), (n[o] = Object.freeze(
|
3621 |
);
|
3622 |
}
|
3623 |
_resolveAnimations(t, e, i) {
|
@@ -3633,7 +3736,7 @@
|
|
3633 |
o = s.getOptionScopes(this.getDataset(), n);
|
3634 |
r = s.createResolver(o, this.getContext(t, i, e));
|
3635 |
}
|
3636 |
-
const l = new
|
3637 |
return r && r._cacheable && (n[o] = Object.freeze(l)), l;
|
3638 |
}
|
3639 |
getSharedOptions(t) {
|
@@ -3643,13 +3746,23 @@
|
|
3643 |
);
|
3644 |
}
|
3645 |
includeOptions(t, e) {
|
3646 |
-
return !e ||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3647 |
}
|
3648 |
updateElement(t, e, i, s) {
|
3649 |
-
|
3650 |
}
|
3651 |
updateSharedOptions(t, e, i) {
|
3652 |
-
t && !
|
3653 |
}
|
3654 |
_setStyle(t, e, i, s) {
|
3655 |
t.active = s;
|
@@ -3703,7 +3816,7 @@
|
|
3703 |
const i = this._cachedMeta;
|
3704 |
if (this._parsing) {
|
3705 |
const s = i._parsed.splice(t, e);
|
3706 |
-
i._stacked &&
|
3707 |
}
|
3708 |
i.data.splice(t, e);
|
3709 |
}
|
@@ -3734,10 +3847,10 @@
|
|
3734 |
this._sync(["_insertElements", 0, arguments.length]);
|
3735 |
}
|
3736 |
}
|
3737 |
-
(
|
3738 |
-
(
|
3739 |
-
(
|
3740 |
-
class
|
3741 |
constructor() {
|
3742 |
(this.x = void 0),
|
3743 |
(this.y = void 0),
|
@@ -3750,7 +3863,7 @@
|
|
3750 |
return { x: e, y: i };
|
3751 |
}
|
3752 |
hasValue() {
|
3753 |
-
return
|
3754 |
}
|
3755 |
getProps(t, e) {
|
3756 |
const i = this.$animations;
|
@@ -3764,9 +3877,9 @@
|
|
3764 |
);
|
3765 |
}
|
3766 |
}
|
3767 |
-
(
|
3768 |
-
const
|
3769 |
-
values: (t) => (
|
3770 |
numeric(t, e, i) {
|
3771 |
if (0 === t) return "0";
|
3772 |
const s = this.chart.options.locale;
|
@@ -3785,24 +3898,24 @@
|
|
3785 |
return i;
|
3786 |
})(t, i));
|
3787 |
}
|
3788 |
-
const a =
|
3789 |
r = Math.max(Math.min(-1 * Math.floor(a), 20), 0),
|
3790 |
l = { notation: n, minimumFractionDigits: r, maximumFractionDigits: r };
|
3791 |
-
return Object.assign(l, this.options.ticks.format),
|
3792 |
},
|
3793 |
logarithmic(t, e, i) {
|
3794 |
if (0 === t) return "0";
|
3795 |
-
const s = t / Math.pow(10, Math.floor(
|
3796 |
return 1 === s || 2 === s || 5 === s
|
3797 |
-
?
|
3798 |
: "";
|
3799 |
},
|
3800 |
};
|
3801 |
-
var
|
3802 |
-
function
|
3803 |
-
const
|
3804 |
-
|
3805 |
-
|
3806 |
(function (t) {
|
3807 |
const e = t.options.offset,
|
3808 |
i = t._tickSize(),
|
@@ -3810,7 +3923,7 @@
|
|
3810 |
n = t._maxLength / i;
|
3811 |
return Math.floor(Math.min(s, n));
|
3812 |
})(t),
|
3813 |
-
|
3814 |
? (function (t) {
|
3815 |
const e = [];
|
3816 |
let i, s;
|
@@ -3818,11 +3931,11 @@
|
|
3818 |
return e;
|
3819 |
})(e)
|
3820 |
: [],
|
3821 |
-
|
3822 |
-
|
3823 |
-
|
3824 |
-
|
3825 |
-
if (
|
3826 |
return (
|
3827 |
(function (t, e, i, s) {
|
3828 |
let n,
|
@@ -3830,10 +3943,10 @@
|
|
3830 |
a = i[0];
|
3831 |
for (s = Math.ceil(s), n = 0; n < t.length; n++)
|
3832 |
n === a && (e.push(t[n]), o++, (a = i[o * s]));
|
3833 |
-
})(e,
|
3834 |
-
|
3835 |
);
|
3836 |
-
const
|
3837 |
const s = (function (t) {
|
3838 |
const e = t.length;
|
3839 |
let i, s;
|
@@ -3844,39 +3957,39 @@
|
|
3844 |
})(t),
|
3845 |
n = e.length / i;
|
3846 |
if (!s) return Math.max(n, 1);
|
3847 |
-
const o =
|
3848 |
for (let t = 0, e = o.length - 1; t < e; t++) {
|
3849 |
const e = o[t];
|
3850 |
if (e > n) return e;
|
3851 |
}
|
3852 |
return Math.max(n, 1);
|
3853 |
-
})(
|
3854 |
-
if (
|
3855 |
-
let t,
|
3856 |
-
const
|
3857 |
-
for (
|
3858 |
-
|
3859 |
-
return
|
3860 |
-
}
|
3861 |
-
return
|
3862 |
-
}
|
3863 |
-
function
|
3864 |
-
const o =
|
3865 |
-
a = Math.min(
|
3866 |
-
let
|
3867 |
-
l,
|
3868 |
h,
|
3869 |
-
c
|
|
|
3870 |
for (
|
3871 |
-
i = Math.ceil(i), n && ((
|
3872 |
-
|
3873 |
|
3874 |
)
|
3875 |
-
|
3876 |
-
for (
|
3877 |
-
|
3878 |
}
|
3879 |
-
|
3880 |
display: !0,
|
3881 |
offset: !1,
|
3882 |
reverse: !1,
|
@@ -3909,7 +4022,7 @@
|
|
3909 |
autoSkip: !0,
|
3910 |
autoSkipPadding: 3,
|
3911 |
labelOffset: 0,
|
3912 |
-
callback:
|
3913 |
minor: {},
|
3914 |
major: {},
|
3915 |
align: "center",
|
@@ -3919,11 +4032,11 @@
|
|
3919 |
backdropPadding: 2,
|
3920 |
},
|
3921 |
}),
|
3922 |
-
|
3923 |
-
|
3924 |
-
|
3925 |
-
|
3926 |
-
|
3927 |
_fallback: !1,
|
3928 |
_scriptable: (t) =>
|
3929 |
!t.startsWith("before") &&
|
@@ -3932,13 +4045,13 @@
|
|
3932 |
"parser" !== t,
|
3933 |
_indexable: (t) => "borderDash" !== t && "tickBorderDash" !== t,
|
3934 |
}),
|
3935 |
-
|
3936 |
-
|
3937 |
_scriptable: (t) => "backdropPadding" !== t && "callback" !== t,
|
3938 |
_indexable: (t) => "backdropPadding" !== t,
|
3939 |
});
|
3940 |
-
const
|
3941 |
-
function
|
3942 |
const i = [],
|
3943 |
s = t.length / e,
|
3944 |
n = t.length;
|
@@ -3946,7 +4059,7 @@
|
|
3946 |
for (; o < n; o += s) i.push(t[Math.floor(o)]);
|
3947 |
return i;
|
3948 |
}
|
3949 |
-
function
|
3950 |
const s = t.ticks.length,
|
3951 |
n = Math.min(e, s - 1),
|
3952 |
o = t._startPixel,
|
@@ -3969,24 +4082,24 @@
|
|
3969 |
)
|
3970 |
return h;
|
3971 |
}
|
3972 |
-
function
|
3973 |
return t.drawTicks ? t.tickLength : 0;
|
3974 |
}
|
3975 |
-
function
|
3976 |
if (!t.display) return 0;
|
3977 |
-
const i =
|
3978 |
-
|
3979 |
-
return (
|
3980 |
}
|
3981 |
-
function
|
3982 |
-
let
|
3983 |
return (
|
3984 |
((i && "right" !== e) || (!i && "right" === e)) &&
|
3985 |
-
(
|
3986 |
-
|
3987 |
);
|
3988 |
}
|
3989 |
-
class
|
3990 |
constructor(t) {
|
3991 |
super(),
|
3992 |
(this.id = t.id),
|
@@ -4051,26 +4164,26 @@
|
|
4051 |
_suggestedMax: s,
|
4052 |
} = this;
|
4053 |
return (
|
4054 |
-
(t =
|
4055 |
-
(e =
|
4056 |
-
(i =
|
4057 |
-
(s =
|
4058 |
-
{ min:
|
4059 |
);
|
4060 |
}
|
4061 |
getMinMax(t) {
|
4062 |
let e,
|
4063 |
{ min: i, max: s, minDefined: n, maxDefined: o } = this.getUserBounds();
|
4064 |
if (n && o) return { min: i, max: s };
|
4065 |
-
const
|
4066 |
-
for (let
|
4067 |
-
(e = a
|
4068 |
n || (i = Math.min(i, e.min)),
|
4069 |
o || (s = Math.max(s, e.max));
|
4070 |
return (
|
4071 |
(i = o && i > s ? s : i),
|
4072 |
(s = n && i > s ? i : s),
|
4073 |
-
{ min:
|
4074 |
);
|
4075 |
}
|
4076 |
getPadding() {
|
@@ -4097,7 +4210,7 @@
|
|
4097 |
(this._cache = {}), (this._dataLimitsCached = !1);
|
4098 |
}
|
4099 |
beforeUpdate() {
|
4100 |
-
|
4101 |
}
|
4102 |
update(t, e, i) {
|
4103 |
const { beginAtZero: s, grace: n, ticks: o } = this.options,
|
@@ -4121,20 +4234,22 @@
|
|
4121 |
(this.beforeDataLimits(),
|
4122 |
this.determineDataLimits(),
|
4123 |
this.afterDataLimits(),
|
4124 |
-
(this._range =
|
4125 |
(this._dataLimitsCached = !0)),
|
4126 |
this.beforeBuildTicks(),
|
4127 |
(this.ticks = this.buildTicks() || []),
|
4128 |
this.afterBuildTicks();
|
4129 |
const r = a < this.ticks.length;
|
4130 |
-
this._convertTicksToLabels(r ?
|
4131 |
this.configure(),
|
4132 |
this.beforeCalculateLabelRotation(),
|
4133 |
this.calculateLabelRotation(),
|
4134 |
this.afterCalculateLabelRotation(),
|
4135 |
o.display &&
|
4136 |
(o.autoSkip || "auto" === o.source) &&
|
4137 |
-
((this.ticks =
|
|
|
|
|
4138 |
r && this._convertTicksToLabels(this.ticks),
|
4139 |
this.beforeFit(),
|
4140 |
this.fit(),
|
@@ -4155,10 +4270,10 @@
|
|
4155 |
(this._alignToPixels = this.options.alignToPixels);
|
4156 |
}
|
4157 |
afterUpdate() {
|
4158 |
-
|
4159 |
}
|
4160 |
beforeSetDimensions() {
|
4161 |
-
|
4162 |
}
|
4163 |
setDimensions() {
|
4164 |
this.isHorizontal()
|
@@ -4174,11 +4289,11 @@
|
|
4174 |
(this.paddingBottom = 0);
|
4175 |
}
|
4176 |
afterSetDimensions() {
|
4177 |
-
|
4178 |
}
|
4179 |
_callHooks(t) {
|
4180 |
this.chart.notifyPlugins(t, this.getContext()),
|
4181 |
-
|
4182 |
}
|
4183 |
beforeDataLimits() {
|
4184 |
this._callHooks("beforeDataLimits");
|
@@ -4197,19 +4312,19 @@
|
|
4197 |
this._callHooks("afterBuildTicks");
|
4198 |
}
|
4199 |
beforeTickToLabelConversion() {
|
4200 |
-
|
4201 |
}
|
4202 |
generateTickLabels(t) {
|
4203 |
const e = this.options.ticks;
|
4204 |
let i, s, n;
|
4205 |
for (i = 0, s = t.length; i < s; i++)
|
4206 |
-
(n = t[i]), (n.label =
|
4207 |
}
|
4208 |
afterTickToLabelConversion() {
|
4209 |
-
|
4210 |
}
|
4211 |
beforeCalculateLabelRotation() {
|
4212 |
-
|
4213 |
}
|
4214 |
calculateLabelRotation() {
|
4215 |
const t = this.options,
|
@@ -4232,30 +4347,31 @@
|
|
4232 |
const h = this._getLabelSizes(),
|
4233 |
c = h.widest.width,
|
4234 |
d = h.highest.height,
|
4235 |
-
u =
|
4236 |
(o = t.offset ? this.maxWidth / i : u / (i - 1)),
|
4237 |
c + 6 > o &&
|
4238 |
((o = u / (i - (t.offset ? 0.5 : 1))),
|
4239 |
(a =
|
4240 |
this.maxHeight -
|
4241 |
-
|
4242 |
e.padding -
|
4243 |
-
|
4244 |
(r = Math.sqrt(c * c + d * d)),
|
4245 |
-
(l =
|
4246 |
Math.min(
|
4247 |
-
Math.asin(
|
4248 |
-
Math.asin(
|
4249 |
)
|
4250 |
)),
|
4251 |
(l = Math.max(s, Math.min(n, l)))),
|
4252 |
(this.labelRotation = l);
|
4253 |
}
|
4254 |
afterCalculateLabelRotation() {
|
4255 |
-
|
4256 |
}
|
|
|
4257 |
beforeFit() {
|
4258 |
-
|
4259 |
}
|
4260 |
fit() {
|
4261 |
const t = { width: 0, height: 0 },
|
@@ -4266,11 +4382,11 @@
|
|
4266 |
o = this._isVisible(),
|
4267 |
a = this.isHorizontal();
|
4268 |
if (o) {
|
4269 |
-
const o =
|
4270 |
if (
|
4271 |
(a
|
4272 |
-
? ((t.width = this.maxWidth), (t.height =
|
4273 |
-
: ((t.height = this.maxHeight), (t.width =
|
4274 |
i.display && this.ticks.length)
|
4275 |
) {
|
4276 |
const {
|
@@ -4280,7 +4396,7 @@
|
|
4280 |
highest: o,
|
4281 |
} = this._getLabelSizes(),
|
4282 |
r = 2 * i.padding,
|
4283 |
-
l =
|
4284 |
h = Math.cos(l),
|
4285 |
c = Math.sin(l);
|
4286 |
if (a) {
|
@@ -4322,7 +4438,7 @@
|
|
4322 |
? (d = e.width)
|
4323 |
: "end" === n
|
4324 |
? (c = t.width)
|
4325 |
-
: ((c = t.width / 2), (d = e.width / 2)),
|
4326 |
(this.paddingLeft = Math.max(
|
4327 |
((c - a + o) * this.width) / (this.width - a),
|
4328 |
0
|
@@ -4355,7 +4471,7 @@
|
|
4355 |
)));
|
4356 |
}
|
4357 |
afterFit() {
|
4358 |
-
|
4359 |
}
|
4360 |
isHorizontal() {
|
4361 |
const { axis: t, position: e } = this.options;
|
@@ -4365,16 +4481,16 @@
|
|
4365 |
return this.options.fullSize;
|
4366 |
}
|
4367 |
_convertTicksToLabels(t) {
|
4368 |
-
let e,
|
4369 |
for (
|
4370 |
this.beforeTickToLabelConversion(),
|
4371 |
this.generateTickLabels(t),
|
4372 |
e = 0,
|
4373 |
-
|
4374 |
-
e <
|
4375 |
e++
|
4376 |
)
|
4377 |
-
|
4378 |
this.afterTickToLabelConversion();
|
4379 |
}
|
4380 |
_getLabelSizes() {
|
@@ -4382,47 +4498,47 @@
|
|
4382 |
if (!t) {
|
4383 |
const e = this.options.ticks.sampleSize;
|
4384 |
let i = this.ticks;
|
4385 |
-
e < i.length && (i =
|
4386 |
(this._labelSizes = t = this._computeLabelSizes(i, i.length));
|
4387 |
}
|
4388 |
return t;
|
4389 |
}
|
4390 |
_computeLabelSizes(t, e) {
|
4391 |
-
const { ctx:
|
4392 |
-
|
4393 |
-
|
4394 |
-
let
|
4395 |
-
r,
|
4396 |
-
l,
|
4397 |
h,
|
4398 |
c,
|
4399 |
-
d,
|
4400 |
u,
|
4401 |
f,
|
4402 |
g,
|
4403 |
p,
|
4404 |
m,
|
4405 |
-
|
4406 |
-
|
4407 |
-
|
|
|
|
|
|
|
4408 |
if (
|
4409 |
-
((
|
4410 |
-
(
|
4411 |
-
(
|
4412 |
-
(
|
4413 |
-
(
|
4414 |
-
(
|
4415 |
-
|
4416 |
) {
|
4417 |
-
if (
|
4418 |
-
for (
|
4419 |
-
(
|
4420 |
-
|
4421 |
-
} else (
|
4422 |
-
|
4423 |
}
|
4424 |
!(function (t, e) {
|
4425 |
-
|
4426 |
const i = t.gc,
|
4427 |
s = i.length / 2;
|
4428 |
let n;
|
@@ -4431,17 +4547,17 @@
|
|
4431 |
i.splice(0, s);
|
4432 |
}
|
4433 |
});
|
4434 |
-
})(
|
4435 |
-
const
|
4436 |
-
|
4437 |
-
|
4438 |
return {
|
4439 |
-
first:
|
4440 |
-
last:
|
4441 |
-
widest:
|
4442 |
-
highest:
|
4443 |
-
widths:
|
4444 |
-
heights:
|
4445 |
};
|
4446 |
}
|
4447 |
getLabelForValue(t) {
|
@@ -4460,7 +4576,7 @@
|
|
4460 |
getPixelForDecimal(t) {
|
4461 |
this._reversePixels && (t = 1 - t);
|
4462 |
const e = this._startPixel + t * this._length;
|
4463 |
-
return
|
4464 |
}
|
4465 |
getDecimalForPixel(t) {
|
4466 |
const e = (t - this._startPixel) / this._length;
|
@@ -4480,13 +4596,13 @@
|
|
4480 |
return (
|
4481 |
i.$context ||
|
4482 |
(i.$context = (function (t, e, i) {
|
4483 |
-
return
|
4484 |
})(this.getContext(), t, i))
|
4485 |
);
|
4486 |
}
|
4487 |
return (
|
4488 |
this.$context ||
|
4489 |
-
(this.$context =
|
4490 |
scale: this,
|
4491 |
type: "scale",
|
4492 |
}))
|
@@ -4494,7 +4610,7 @@
|
|
4494 |
}
|
4495 |
_tickSize() {
|
4496 |
const t = this.options.ticks,
|
4497 |
-
e =
|
4498 |
i = Math.abs(Math.cos(e)),
|
4499 |
s = Math.abs(Math.sin(e)),
|
4500 |
n = this._getLabelSizes(),
|
@@ -4517,112 +4633,110 @@
|
|
4517 |
const e = this.axis,
|
4518 |
i = this.chart,
|
4519 |
s = this.options,
|
4520 |
-
{ grid:
|
4521 |
-
|
4522 |
-
|
4523 |
-
|
4524 |
-
|
4525 |
-
|
4526 |
-
|
4527 |
-
|
4528 |
-
|
4529 |
-
|
4530 |
-
return
|
4531 |
};
|
4532 |
-
let
|
4533 |
-
if ("top" ===
|
4534 |
-
(
|
4535 |
-
(
|
4536 |
-
(
|
4537 |
-
(
|
4538 |
-
(
|
4539 |
-
else if ("bottom" ===
|
4540 |
-
(
|
4541 |
-
(
|
4542 |
-
(
|
4543 |
-
(
|
4544 |
-
(
|
4545 |
-
else if ("left" ===
|
4546 |
-
(
|
4547 |
-
(
|
4548 |
-
(
|
4549 |
-
(
|
4550 |
-
(
|
4551 |
-
else if ("right" ===
|
4552 |
-
(
|
4553 |
-
(
|
4554 |
-
(
|
4555 |
-
(
|
4556 |
-
(
|
4557 |
else if ("x" === e) {
|
4558 |
-
if ("center" ===
|
4559 |
-
else if (
|
4560 |
-
const t = Object.keys(
|
4561 |
-
e =
|
4562 |
-
|
4563 |
}
|
4564 |
-
(
|
4565 |
} else if ("y" === e) {
|
4566 |
-
if ("center" ===
|
4567 |
-
else if (
|
4568 |
-
const t = Object.keys(
|
4569 |
-
e =
|
4570 |
-
|
4571 |
}
|
4572 |
-
(
|
4573 |
}
|
4574 |
-
const
|
4575 |
-
|
4576 |
-
for (
|
4577 |
-
const t =
|
4578 |
e = t.lineWidth,
|
4579 |
s = t.color,
|
4580 |
-
|
4581 |
-
|
4582 |
-
|
4583 |
-
|
4584 |
-
|
4585 |
f = t.tickBorderDashOffset;
|
4586 |
-
(
|
4587 |
-
void 0 !==
|
4588 |
-
((
|
4589 |
-
|
4590 |
-
|
4591 |
-
tx1:
|
4592 |
-
ty1:
|
4593 |
-
tx2:
|
4594 |
-
ty2:
|
4595 |
-
x1:
|
4596 |
-
y1:
|
4597 |
-
x2:
|
4598 |
-
y2:
|
4599 |
width: e,
|
4600 |
color: s,
|
4601 |
-
borderDash:
|
4602 |
-
borderDashOffset:
|
4603 |
-
tickWidth:
|
4604 |
-
tickColor:
|
4605 |
-
tickBorderDash:
|
4606 |
tickBorderDashOffset: f,
|
4607 |
}));
|
4608 |
}
|
4609 |
-
return (this._ticksLength =
|
4610 |
}
|
4611 |
_computeLabelItems(t) {
|
4612 |
const e = this.axis,
|
4613 |
i = this.options,
|
4614 |
-
{ position:
|
4615 |
-
|
4616 |
-
|
4617 |
-
{ align:
|
4618 |
-
|
4619 |
-
|
4620 |
-
|
4621 |
-
|
4622 |
-
|
4623 |
-
let
|
4624 |
-
x,
|
4625 |
-
b,
|
4626 |
_,
|
4627 |
y,
|
4628 |
v,
|
@@ -4632,81 +4746,95 @@
|
|
4632 |
S,
|
4633 |
P,
|
4634 |
D,
|
4635 |
-
|
4636 |
-
|
4637 |
-
|
4638 |
-
|
4639 |
-
(
|
4640 |
-
else if ("
|
4641 |
-
|
4642 |
-
|
4643 |
-
|
4644 |
-
|
4645 |
-
|
|
|
|
|
4646 |
} else if ("x" === e) {
|
4647 |
-
if ("center" ===
|
4648 |
-
else if (
|
4649 |
-
const t = Object.keys(
|
4650 |
-
e =
|
4651 |
-
|
4652 |
}
|
4653 |
-
|
4654 |
} else if ("y" === e) {
|
4655 |
-
if ("center" ===
|
4656 |
-
else if (
|
4657 |
-
const t = Object.keys(
|
4658 |
-
e =
|
4659 |
-
|
4660 |
}
|
4661 |
-
|
4662 |
}
|
4663 |
"y" === e &&
|
4664 |
-
("start" ===
|
4665 |
-
const
|
4666 |
-
for (
|
4667 |
-
(
|
4668 |
-
const t =
|
4669 |
-
(
|
4670 |
-
(
|
4671 |
-
(
|
4672 |
-
(
|
4673 |
-
const e =
|
4674 |
i = t.color,
|
4675 |
-
|
4676 |
h = t.textStrokeWidth;
|
4677 |
-
let d
|
|
|
4678 |
if (
|
4679 |
-
(
|
4680 |
-
? ((
|
4681 |
-
|
4682 |
-
|
4683 |
-
|
4684 |
-
?
|
4685 |
-
|
4686 |
-
|
4687 |
-
:
|
4688 |
-
|
4689 |
-
|
4690 |
-
|
4691 |
-
|
4692 |
-
|
4693 |
-
|
4694 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4695 |
t.showLabelBackdrop)
|
4696 |
) {
|
4697 |
-
const e =
|
4698 |
-
i =
|
4699 |
-
s =
|
4700 |
-
let n =
|
4701 |
-
o =
|
4702 |
-
switch (
|
4703 |
case "middle":
|
4704 |
n -= i / 2;
|
4705 |
break;
|
4706 |
case "bottom":
|
4707 |
n -= i;
|
4708 |
}
|
4709 |
-
switch (
|
4710 |
case "center":
|
4711 |
o -= s / 2;
|
4712 |
break;
|
@@ -4721,28 +4849,32 @@
|
|
4721 |
color: t.backdropColor,
|
4722 |
};
|
4723 |
}
|
4724 |
-
|
4725 |
-
rotation:
|
4726 |
-
label:
|
4727 |
-
font:
|
4728 |
color: i,
|
4729 |
-
strokeColor:
|
4730 |
strokeWidth: h,
|
4731 |
-
textOffset:
|
4732 |
-
textAlign:
|
4733 |
-
textBaseline:
|
4734 |
-
translation: [
|
4735 |
backdrop: d,
|
4736 |
});
|
4737 |
}
|
4738 |
-
return
|
4739 |
}
|
4740 |
_getXAxisLabelAlignment() {
|
4741 |
const { position: t, ticks: e } = this.options;
|
4742 |
-
if (-
|
4743 |
let i = "center";
|
4744 |
return (
|
4745 |
-
"start" === e.align
|
|
|
|
|
|
|
|
|
4746 |
i
|
4747 |
);
|
4748 |
}
|
@@ -4868,11 +5000,11 @@
|
|
4868 |
a = this._borderValue;
|
4869 |
let r, l, h, c;
|
4870 |
this.isHorizontal()
|
4871 |
-
? ((r =
|
4872 |
-
(l =
|
4873 |
(h = c = a))
|
4874 |
-
: ((h =
|
4875 |
-
(c =
|
4876 |
(r = l = a)),
|
4877 |
e.save(),
|
4878 |
(e.lineWidth = s.borderWidth),
|
@@ -4887,7 +5019,7 @@
|
|
4887 |
if (!this.options.ticks.display) return;
|
4888 |
const e = this.ctx,
|
4889 |
i = this._computeLabelArea();
|
4890 |
-
i &&
|
4891 |
const s =
|
4892 |
this._labelItems || (this._labelItems = this._computeLabelItems(t));
|
4893 |
let n, o;
|
@@ -4903,29 +5035,29 @@
|
|
4903 |
t.backdrop.width,
|
4904 |
t.backdrop.height
|
4905 |
)),
|
4906 |
-
|
4907 |
}
|
4908 |
-
i &&
|
4909 |
}
|
4910 |
drawTitle() {
|
4911 |
const {
|
4912 |
ctx: t,
|
4913 |
-
options: { position: e, title: i, reverse:
|
4914 |
} = this;
|
4915 |
if (!i.display) return;
|
4916 |
-
const
|
4917 |
-
|
4918 |
-
|
4919 |
-
let
|
4920 |
-
"bottom" === e || "center" === e ||
|
4921 |
-
? ((
|
4922 |
-
|
4923 |
-
: (
|
4924 |
const {
|
4925 |
-
titleX:
|
4926 |
-
titleY:
|
4927 |
-
maxWidth:
|
4928 |
-
rotation:
|
4929 |
} = (function (t, e, i, s) {
|
4930 |
const { top: o, left: a, bottom: r, right: l, chart: h } = t,
|
4931 |
{ chartArea: c, scales: d } = h;
|
@@ -4934,33 +5066,33 @@
|
|
4934 |
g,
|
4935 |
p = 0;
|
4936 |
const m = r - o,
|
4937 |
-
|
4938 |
if (t.isHorizontal()) {
|
4939 |
-
if (((f =
|
4940 |
const t = Object.keys(i)[0],
|
4941 |
s = i[t];
|
4942 |
g = d[t].getPixelForValue(s) + m - e;
|
4943 |
} else
|
4944 |
-
g = "center" === i ? (c.bottom + c.top) / 2 + m - e :
|
4945 |
u = l - a;
|
4946 |
} else {
|
4947 |
-
if (
|
4948 |
const t = Object.keys(i)[0],
|
4949 |
s = i[t];
|
4950 |
-
f = d[t].getPixelForValue(s) -
|
4951 |
} else
|
4952 |
-
f = "center" === i ? (c.left + c.right) / 2 -
|
4953 |
-
(g =
|
4954 |
}
|
4955 |
return { titleX: f, titleY: g, maxWidth: u, rotation: p };
|
4956 |
-
})(this,
|
4957 |
-
|
4958 |
color: i.color,
|
4959 |
-
maxWidth:
|
4960 |
-
rotation:
|
4961 |
-
textAlign:
|
4962 |
textBaseline: "middle",
|
4963 |
-
translation: [
|
4964 |
});
|
4965 |
}
|
4966 |
draw(t) {
|
@@ -4974,8 +5106,8 @@
|
|
4974 |
_layers() {
|
4975 |
const t = this.options,
|
4976 |
e = (t.ticks && t.ticks.z) || 0,
|
4977 |
-
i =
|
4978 |
-
return this._isVisible() && this.draw ===
|
4979 |
? [
|
4980 |
{
|
4981 |
z: i,
|
@@ -5017,14 +5149,14 @@
|
|
5017 |
return s;
|
5018 |
}
|
5019 |
_resolveTickFontOptions(t) {
|
5020 |
-
return
|
5021 |
}
|
5022 |
_maxDigits() {
|
5023 |
const t = this._resolveTickFontOptions(0).lineHeight;
|
5024 |
return (this.isHorizontal() ? this.width : this.height) / t;
|
5025 |
}
|
5026 |
}
|
5027 |
-
class
|
5028 |
constructor(t, e, i) {
|
5029 |
(this.type = t),
|
5030 |
(this.scope = e),
|
@@ -5051,12 +5183,12 @@
|
|
5051 |
n in s ||
|
5052 |
((s[n] = t),
|
5053 |
(function (t, e, i) {
|
5054 |
-
const s =
|
5055 |
-
i ?
|
5056 |
-
|
5057 |
t.defaults,
|
5058 |
]);
|
5059 |
-
|
5060 |
t.defaultRoutes &&
|
5061 |
(function (t, e) {
|
5062 |
Object.keys(e).forEach((i) => {
|
@@ -5066,12 +5198,12 @@
|
|
5066 |
a = e[i].split("."),
|
5067 |
r = a.pop(),
|
5068 |
l = a.join(".");
|
5069 |
-
|
5070 |
});
|
5071 |
})(e, t.defaultRoutes);
|
5072 |
-
t.descriptors &&
|
5073 |
})(t, o, i),
|
5074 |
-
this.override &&
|
5075 |
o
|
5076 |
);
|
5077 |
}
|
@@ -5083,15 +5215,15 @@
|
|
5083 |
i = t.id,
|
5084 |
s = this.scope;
|
5085 |
i in e && delete e[i],
|
5086 |
-
s && i in
|
5087 |
}
|
5088 |
}
|
5089 |
-
var
|
5090 |
constructor() {
|
5091 |
-
(this.controllers = new
|
5092 |
-
(this.elements = new
|
5093 |
-
(this.plugins = new
|
5094 |
-
(this.scales = new
|
5095 |
(this._typedRegistries = [
|
5096 |
this.controllers,
|
5097 |
this.scales,
|
@@ -5145,15 +5277,15 @@
|
|
5145 |
const s = i || this._getRegistryForType(e);
|
5146 |
i || s.isForType(e) || (s === this.plugins && e.id)
|
5147 |
? this._exec(t, s, e)
|
5148 |
-
:
|
5149 |
const s = i || this._getRegistryForType(e);
|
5150 |
this._exec(t, s, e);
|
5151 |
});
|
5152 |
});
|
5153 |
}
|
5154 |
_exec(t, e, i) {
|
5155 |
-
const s =
|
5156 |
-
|
5157 |
}
|
5158 |
_getRegistryForType(t) {
|
5159 |
for (let e = 0; e < this._typedRegistries.length; e++) {
|
@@ -5169,7 +5301,7 @@
|
|
5169 |
return s;
|
5170 |
}
|
5171 |
})();
|
5172 |
-
class
|
5173 |
constructor() {
|
5174 |
this._init = [];
|
5175 |
}
|
@@ -5190,12 +5322,12 @@
|
|
5190 |
s = s || {};
|
5191 |
for (const n of t) {
|
5192 |
const t = n.plugin;
|
5193 |
-
if (!1 ===
|
5194 |
}
|
5195 |
return !0;
|
5196 |
}
|
5197 |
invalidate() {
|
5198 |
-
|
5199 |
((this._oldCache = this._cache), (this._cache = void 0));
|
5200 |
}
|
5201 |
_descriptors(t) {
|
@@ -5205,29 +5337,33 @@
|
|
5205 |
}
|
5206 |
_createDescriptors(t, e) {
|
5207 |
const i = t && t.config,
|
5208 |
-
s =
|
5209 |
n = (function (t) {
|
5210 |
-
const e =
|
5211 |
-
i =
|
5212 |
-
|
5213 |
-
|
5214 |
-
|
5215 |
-
|
5216 |
-
|
|
|
5217 |
}
|
5218 |
-
return e;
|
5219 |
})(i);
|
5220 |
return !1 !== s || e
|
5221 |
-
? (function (t, e, i, s) {
|
5222 |
-
const
|
5223 |
-
|
5224 |
-
for (
|
5225 |
-
const
|
5226 |
-
l =
|
5227 |
null !== l &&
|
5228 |
-
|
|
|
|
|
|
|
5229 |
}
|
5230 |
-
return
|
5231 |
})(t, n, s, e)
|
5232 |
: [];
|
5233 |
}
|
@@ -5239,20 +5375,23 @@
|
|
5239 |
this._notify(s(e, i), t, "stop"), this._notify(s(i, e), t, "start");
|
5240 |
}
|
5241 |
}
|
5242 |
-
function
|
5243 |
return e || !1 !== t ? (!0 === t ? {} : t) : null;
|
5244 |
}
|
5245 |
-
function
|
5246 |
-
const
|
5247 |
-
|
5248 |
-
return
|
5249 |
-
|
5250 |
-
|
5251 |
-
|
5252 |
-
|
|
|
|
|
|
|
5253 |
}
|
5254 |
-
function
|
5255 |
-
const i =
|
5256 |
return (
|
5257 |
((e.datasets || {})[t] || {}).indexAxis ||
|
5258 |
e.indexAxis ||
|
@@ -5260,7 +5399,7 @@
|
|
5260 |
"x"
|
5261 |
);
|
5262 |
}
|
5263 |
-
function
|
5264 |
return "x" === t || "y" === t
|
5265 |
? t
|
5266 |
: e.axis ||
|
@@ -5272,19 +5411,19 @@
|
|
5272 |
t.charAt(0).toLowerCase();
|
5273 |
var i;
|
5274 |
}
|
5275 |
-
function
|
5276 |
const e = t.options || (t.options = {});
|
5277 |
-
(e.plugins =
|
5278 |
(e.scales = (function (t, e) {
|
5279 |
-
const i =
|
5280 |
s = e.scales || {},
|
5281 |
-
|
5282 |
-
|
5283 |
-
|
5284 |
return (
|
5285 |
Object.keys(s).forEach((t) => {
|
5286 |
const e = s[t];
|
5287 |
-
if (!
|
5288 |
return console.error(
|
5289 |
`Invalid scale configuration for scale: ${t}`
|
5290 |
);
|
@@ -5292,18 +5431,18 @@
|
|
5292 |
return console.warn(
|
5293 |
`Ignoring resolver passed as options for scale: ${t}`
|
5294 |
);
|
5295 |
-
const
|
5296 |
-
|
5297 |
return t === e ? "_index_" : "_value_";
|
5298 |
-
})(
|
5299 |
-
|
5300 |
-
(
|
5301 |
-
(
|
5302 |
}),
|
5303 |
t.data.datasets.forEach((i) => {
|
5304 |
const n = i.type || t.type,
|
5305 |
-
|
5306 |
-
l = (
|
5307 |
Object.keys(l).forEach((t) => {
|
5308 |
const e = (function (t, e) {
|
5309 |
let i = t;
|
@@ -5313,41 +5452,41 @@
|
|
5313 |
: "_value_" === t && (i = "x" === e ? "y" : "x"),
|
5314 |
i
|
5315 |
);
|
5316 |
-
})(t,
|
5317 |
-
n = i[e + "AxisID"] ||
|
5318 |
-
(
|
5319 |
-
|
5320 |
});
|
5321 |
}),
|
5322 |
-
Object.keys(
|
5323 |
-
const e =
|
5324 |
-
|
5325 |
}),
|
5326 |
-
|
5327 |
);
|
5328 |
})(t, e));
|
5329 |
}
|
5330 |
-
function
|
5331 |
return (
|
5332 |
((t = t || {}).datasets = t.datasets || []),
|
5333 |
(t.labels = t.labels || []),
|
5334 |
t
|
5335 |
);
|
5336 |
}
|
5337 |
-
const
|
5338 |
-
|
5339 |
-
function
|
5340 |
-
let i =
|
5341 |
-
return i || ((i = e()),
|
5342 |
}
|
5343 |
-
const
|
5344 |
-
const s =
|
5345 |
void 0 !== s && t.add(s);
|
5346 |
};
|
5347 |
-
class
|
5348 |
constructor(t) {
|
5349 |
(this._config = (function (t) {
|
5350 |
-
return ((t = t || {}).data =
|
5351 |
})(t)),
|
5352 |
(this._scopeCache = new Map()),
|
5353 |
(this._resolverCache = new Map());
|
@@ -5365,7 +5504,7 @@
|
|
5365 |
return this._config.data;
|
5366 |
}
|
5367 |
set data(t) {
|
5368 |
-
this._config.data =
|
5369 |
}
|
5370 |
get options() {
|
5371 |
return this._config.options;
|
@@ -5378,28 +5517,28 @@
|
|
5378 |
}
|
5379 |
update() {
|
5380 |
const t = this._config;
|
5381 |
-
this.clearCache(),
|
5382 |
}
|
5383 |
clearCache() {
|
5384 |
this._scopeCache.clear(), this._resolverCache.clear();
|
5385 |
}
|
5386 |
datasetScopeKeys(t) {
|
5387 |
-
return
|
5388 |
}
|
5389 |
datasetAnimationScopeKeys(t, e) {
|
5390 |
-
return
|
5391 |
[`datasets.${t}.transitions.${e}`, `transitions.${e}`],
|
5392 |
[`datasets.${t}`, ""],
|
5393 |
]);
|
5394 |
}
|
5395 |
datasetElementScopeKeys(t, e) {
|
5396 |
-
return
|
5397 |
[`datasets.${t}.elements.${e}`, `datasets.${t}`, `elements.${e}`, ""],
|
5398 |
]);
|
5399 |
}
|
5400 |
pluginScopeKeys(t) {
|
5401 |
const e = t.id;
|
5402 |
-
return
|
5403 |
[`plugins.${e}`, ...(t.additionalOptionScopes || [])],
|
5404 |
]);
|
5405 |
}
|
@@ -5415,102 +5554,102 @@
|
|
5415 |
if (a) return a;
|
5416 |
const r = new Set();
|
5417 |
e.forEach((e) => {
|
5418 |
-
t && (r.add(t), e.forEach((e) =>
|
5419 |
-
e.forEach((t) =>
|
5420 |
-
e.forEach((t) =>
|
5421 |
-
e.forEach((t) =>
|
5422 |
-
e.forEach((t) =>
|
5423 |
});
|
5424 |
const l = Array.from(r);
|
5425 |
return (
|
5426 |
0 === l.length && l.push(Object.create(null)),
|
5427 |
-
|
5428 |
l
|
5429 |
);
|
5430 |
}
|
5431 |
chartOptionScopes() {
|
5432 |
const { options: t, type: e } = this;
|
5433 |
-
return [t,
|
5434 |
}
|
5435 |
-
resolveNamedOptions(t, e, i,
|
5436 |
-
const
|
5437 |
-
{ resolver:
|
5438 |
-
let
|
5439 |
if (
|
5440 |
(function (t, e) {
|
5441 |
-
const { isScriptable: i, isIndexable:
|
5442 |
-
for (const
|
5443 |
-
const e = i(
|
5444 |
-
|
5445 |
-
|
5446 |
-
if ((e && (
|
5447 |
}
|
5448 |
return !1;
|
5449 |
-
})(
|
5450 |
) {
|
5451 |
-
|
5452 |
-
|
5453 |
}
|
5454 |
-
for (const t of e)
|
5455 |
-
return
|
5456 |
}
|
5457 |
createResolver(t, e, i = [""], s) {
|
5458 |
-
const { resolver:
|
5459 |
-
return
|
5460 |
}
|
5461 |
}
|
5462 |
-
function
|
5463 |
let s = t.get(e);
|
5464 |
s || ((s = new Map()), t.set(e, s));
|
5465 |
const n = i.join();
|
5466 |
let o = s.get(n);
|
5467 |
if (!o) {
|
5468 |
(o = {
|
5469 |
-
resolver:
|
5470 |
subPrefixes: i.filter((t) => !t.toLowerCase().includes("hover")),
|
5471 |
}),
|
5472 |
s.set(n, o);
|
5473 |
}
|
5474 |
return o;
|
5475 |
}
|
5476 |
-
const
|
5477 |
-
|
5478 |
-
const
|
5479 |
-
function
|
5480 |
-
return "top" === t || "bottom" === t || (-1 ===
|
5481 |
}
|
5482 |
-
function
|
5483 |
return function (i, s) {
|
5484 |
return i[t] === s[t] ? i[e] - s[e] : i[t] - s[t];
|
5485 |
};
|
5486 |
}
|
5487 |
-
function
|
5488 |
const e = t.chart,
|
5489 |
i = e.options.animation;
|
5490 |
-
e.notifyPlugins("afterRender"),
|
5491 |
}
|
5492 |
-
function
|
5493 |
const e = t.chart,
|
5494 |
i = e.options.animation;
|
5495 |
-
|
5496 |
}
|
5497 |
-
function
|
5498 |
return (
|
5499 |
-
|
5500 |
? (t = document.getElementById(t))
|
5501 |
: t && t.length && (t = t[0]),
|
5502 |
t && t.canvas && (t = t.canvas),
|
5503 |
t
|
5504 |
);
|
5505 |
}
|
5506 |
-
const
|
5507 |
-
|
5508 |
-
const e =
|
5509 |
-
return Object.values(
|
5510 |
.filter((t) => t.canvas === e)
|
5511 |
.pop();
|
5512 |
};
|
5513 |
-
function
|
5514 |
const s = Object.keys(t);
|
5515 |
for (const n of s) {
|
5516 |
const s = +n;
|
@@ -5520,30 +5659,32 @@
|
|
5520 |
}
|
5521 |
}
|
5522 |
}
|
5523 |
-
class
|
5524 |
-
constructor(t,
|
5525 |
-
const s = (this.config = new
|
5526 |
-
n =
|
5527 |
-
o =
|
5528 |
if (o)
|
5529 |
throw new Error(
|
5530 |
"Canvas is already in use. Chart with ID '" +
|
5531 |
o.id +
|
5532 |
-
"' must be destroyed before the canvas
|
|
|
|
|
5533 |
);
|
5534 |
-
const
|
5535 |
-
(this.platform = new (s.platform ||
|
5536 |
this.platform.updateConfig(s);
|
5537 |
-
const
|
5538 |
-
|
5539 |
-
|
5540 |
-
|
5541 |
-
(this.id =
|
5542 |
-
(this.ctx =
|
5543 |
-
(this.canvas =
|
5544 |
-
(this.width =
|
5545 |
-
(this.height =
|
5546 |
-
(this._options =
|
5547 |
(this._aspectRatio = this.aspectRatio),
|
5548 |
(this._layers = []),
|
5549 |
(this._metasets = []),
|
@@ -5557,18 +5698,18 @@
|
|
5557 |
(this._responsiveListeners = void 0),
|
5558 |
(this._sortedMetasets = []),
|
5559 |
(this.scales = {}),
|
5560 |
-
(this._plugins = new
|
5561 |
(this.$proxies = {}),
|
5562 |
(this._hiddenIndices = {}),
|
5563 |
(this.attached = !1),
|
5564 |
(this._animationsDisabled = void 0),
|
5565 |
(this.$context = void 0),
|
5566 |
-
(this._doResize =
|
5567 |
(this._dataChanges = []),
|
5568 |
-
(
|
5569 |
-
|
5570 |
-
? (
|
5571 |
-
|
5572 |
this._initialize(),
|
5573 |
this.attached && this.update())
|
5574 |
: console.error(
|
@@ -5578,11 +5719,11 @@
|
|
5578 |
get aspectRatio() {
|
5579 |
const {
|
5580 |
options: { aspectRatio: t, maintainAspectRatio: e },
|
5581 |
-
width:
|
5582 |
-
height:
|
5583 |
-
_aspectRatio:
|
5584 |
} = this;
|
5585 |
-
return
|
5586 |
}
|
5587 |
get data() {
|
5588 |
return this.config.data;
|
@@ -5601,20 +5742,20 @@
|
|
5601 |
this.notifyPlugins("beforeInit"),
|
5602 |
this.options.responsive
|
5603 |
? this.resize()
|
5604 |
-
:
|
5605 |
this.bindEvents(),
|
5606 |
this.notifyPlugins("afterInit"),
|
5607 |
this
|
5608 |
);
|
5609 |
}
|
5610 |
clear() {
|
5611 |
-
return
|
5612 |
}
|
5613 |
stop() {
|
5614 |
-
return
|
5615 |
}
|
5616 |
resize(t, e) {
|
5617 |
-
|
5618 |
? (this._resizeBeforeDraw = { width: t, height: e })
|
5619 |
: this._resize(t, e);
|
5620 |
}
|
@@ -5628,13 +5769,13 @@
|
|
5628 |
(this.width = o.width),
|
5629 |
(this.height = o.height),
|
5630 |
(this._aspectRatio = this.aspectRatio),
|
5631 |
-
|
5632 |
(this.notifyPlugins("resize", { size: o }),
|
5633 |
-
|
5634 |
this.attached && this._doResize(r) && this.render());
|
5635 |
}
|
5636 |
ensureScalesHaveIDs() {
|
5637 |
-
|
5638 |
t.id = e;
|
5639 |
});
|
5640 |
}
|
@@ -5648,7 +5789,7 @@
|
|
5648 |
(n = n.concat(
|
5649 |
Object.keys(e).map((t) => {
|
5650 |
const i = e[t],
|
5651 |
-
s =
|
5652 |
n = "r" === s,
|
5653 |
o = "x" === s;
|
5654 |
return {
|
@@ -5658,32 +5799,32 @@
|
|
5658 |
};
|
5659 |
})
|
5660 |
)),
|
5661 |
-
|
5662 |
const n = e.options,
|
5663 |
o = n.id,
|
5664 |
-
a =
|
5665 |
-
|
5666 |
-
(void 0 !== n.position &&
|
5667 |
(n.position = e.dposition),
|
5668 |
(s[o] = !0);
|
5669 |
-
let
|
5670 |
-
if (o in i && i[o].type ===
|
5671 |
else {
|
5672 |
-
(
|
5673 |
id: o,
|
5674 |
-
type:
|
5675 |
ctx: this.ctx,
|
5676 |
chart: this,
|
5677 |
})),
|
5678 |
-
(i[
|
5679 |
}
|
5680 |
-
|
5681 |
}),
|
5682 |
-
|
5683 |
t || delete i[e];
|
5684 |
}),
|
5685 |
-
|
5686 |
-
|
5687 |
});
|
5688 |
}
|
5689 |
_updateMetasets() {
|
@@ -5694,7 +5835,7 @@
|
|
5694 |
for (let t = e; t < i; ++t) this._destroyDatasetMeta(t);
|
5695 |
t.splice(e, i - e);
|
5696 |
}
|
5697 |
-
this._sortedMetasets = t.slice(0).sort(
|
5698 |
}
|
5699 |
_removeUnreferencedMetasets() {
|
5700 |
const {
|
@@ -5724,7 +5865,7 @@
|
|
5724 |
n.type !== o &&
|
5725 |
(this._destroyDatasetMeta(i), (n = this.getDatasetMeta(i))),
|
5726 |
(n.type = o),
|
5727 |
-
(n.indexAxis = s.indexAxis ||
|
5728 |
(n.order = s.order || 0),
|
5729 |
(n.index = i),
|
5730 |
(n.label = "" + s.label),
|
@@ -5733,11 +5874,11 @@
|
|
5733 |
)
|
5734 |
n.controller.updateIndex(i), n.controller.linkScales();
|
5735 |
else {
|
5736 |
-
const e =
|
5737 |
-
{ datasetElementType: s, dataElementType: a } =
|
5738 |
Object.assign(e.prototype, {
|
5739 |
-
dataElementType:
|
5740 |
-
datasetElementType: s &&
|
5741 |
}),
|
5742 |
(n.controller = new e(this, i)),
|
5743 |
t.push(n.controller);
|
@@ -5746,7 +5887,7 @@
|
|
5746 |
return this._updateMetasets(), t;
|
5747 |
}
|
5748 |
_resetElements() {
|
5749 |
-
|
5750 |
this.data.datasets,
|
5751 |
(t, e) => {
|
5752 |
this.getDatasetMeta(e).controller.reset();
|
@@ -5784,12 +5925,12 @@
|
|
5784 |
(o = this._minPadding = i.layout.autoPadding ? o : 0),
|
5785 |
this._updateLayout(o),
|
5786 |
s ||
|
5787 |
-
|
5788 |
t.reset();
|
5789 |
}),
|
5790 |
this._updateDatasets(t),
|
5791 |
this.notifyPlugins("afterUpdate", { mode: t }),
|
5792 |
-
this._layers.sort(
|
5793 |
const { _active: a, _lastEvent: r } = this;
|
5794 |
r
|
5795 |
? this._eventHandler(r, !0)
|
@@ -5797,8 +5938,8 @@
|
|
5797 |
this.render();
|
5798 |
}
|
5799 |
_updateScales() {
|
5800 |
-
|
5801 |
-
|
5802 |
}),
|
5803 |
this.ensureScalesHaveIDs(),
|
5804 |
this.buildOrUpdateScales();
|
@@ -5807,14 +5948,14 @@
|
|
5807 |
const t = this.options,
|
5808 |
e = new Set(Object.keys(this._listeners)),
|
5809 |
i = new Set(t.events);
|
5810 |
-
(
|
5811 |
(this.unbindEvents(), this.bindEvents());
|
5812 |
}
|
5813 |
_updateHiddenIndices() {
|
5814 |
const { _hiddenIndices: t } = this,
|
5815 |
e = this._getUniformDataChanges() || [];
|
5816 |
for (const { method: i, start: s, count: n } of e) {
|
5817 |
-
|
5818 |
}
|
5819 |
}
|
5820 |
_getUniformDataChanges() {
|
@@ -5829,18 +5970,18 @@
|
|
5829 |
.map((t, e) => e + "," + t.splice(1).join(","))
|
5830 |
),
|
5831 |
s = i(0);
|
5832 |
-
for (let t = 1; t < e; t++) if (!
|
5833 |
return Array.from(s)
|
5834 |
.map((t) => t.split(","))
|
5835 |
.map((t) => ({ method: t[1], start: +t[2], count: +t[3] }));
|
5836 |
}
|
5837 |
_updateLayout(t) {
|
5838 |
if (!1 === this.notifyPlugins("beforeLayout", { cancelable: !0 })) return;
|
5839 |
-
|
5840 |
const e = this.chartArea,
|
5841 |
i = e.width <= 0 || e.height <= 0;
|
5842 |
(this._layers = []),
|
5843 |
-
|
5844 |
this.boxes,
|
5845 |
(t) => {
|
5846 |
(i && "chartArea" === t.position) ||
|
@@ -5861,7 +6002,7 @@
|
|
5861 |
for (let t = 0, e = this.data.datasets.length; t < e; ++t)
|
5862 |
this.getDatasetMeta(t).controller.configure();
|
5863 |
for (let e = 0, i = this.data.datasets.length; e < i; ++e)
|
5864 |
-
this._updateDataset(e,
|
5865 |
this.notifyPlugins("afterDatasetsUpdate", { mode: t });
|
5866 |
}
|
5867 |
}
|
@@ -5875,9 +6016,9 @@
|
|
5875 |
}
|
5876 |
render() {
|
5877 |
!1 !== this.notifyPlugins("beforeRender", { cancelable: !0 }) &&
|
5878 |
-
(
|
5879 |
-
? this.attached && !
|
5880 |
-
: (this.draw(),
|
5881 |
}
|
5882 |
draw() {
|
5883 |
let t;
|
@@ -5920,19 +6061,22 @@
|
|
5920 |
o = { meta: t, index: t.index, cancelable: !0 };
|
5921 |
!1 !== this.notifyPlugins("beforeDatasetDraw", o) &&
|
5922 |
(s &&
|
5923 |
-
|
5924 |
left: !1 === i.left ? 0 : n.left - i.left,
|
5925 |
right: !1 === i.right ? this.width : n.right + i.right,
|
5926 |
top: !1 === i.top ? 0 : n.top - i.top,
|
5927 |
bottom: !1 === i.bottom ? this.height : n.bottom + i.bottom,
|
5928 |
}),
|
5929 |
t.controller.draw(),
|
5930 |
-
s &&
|
5931 |
(o.cancelable = !1),
|
5932 |
this.notifyPlugins("afterDatasetDraw", o));
|
5933 |
}
|
|
|
|
|
|
|
5934 |
getElementsAtEventForMode(t, e, i, s) {
|
5935 |
-
const n =
|
5936 |
return "function" == typeof n ? n(this, t, i, s) : [];
|
5937 |
}
|
5938 |
getDatasetMeta(t) {
|
@@ -5962,7 +6106,7 @@
|
|
5962 |
getContext() {
|
5963 |
return (
|
5964 |
this.$context ||
|
5965 |
-
(this.$context =
|
5966 |
);
|
5967 |
}
|
5968 |
getVisibleDatasetCount() {
|
@@ -5987,7 +6131,7 @@
|
|
5987 |
const s = i ? "show" : "hide",
|
5988 |
n = this.getDatasetMeta(t),
|
5989 |
o = n.controller._resolveAnimations(void 0, s);
|
5990 |
-
|
5991 |
? ((n.data[e].hidden = !i), this.update())
|
5992 |
: (this.setDatasetVisibility(t, i),
|
5993 |
o.update(n, { visible: i }),
|
@@ -6006,7 +6150,7 @@
|
|
6006 |
_stop() {
|
6007 |
let t, e;
|
6008 |
for (
|
6009 |
-
this.stop(),
|
6010 |
t < e;
|
6011 |
++t
|
6012 |
)
|
@@ -6019,12 +6163,12 @@
|
|
6019 |
this.config.clearCache(),
|
6020 |
t &&
|
6021 |
(this.unbindEvents(),
|
6022 |
-
|
6023 |
this.platform.releaseContext(e),
|
6024 |
(this.canvas = null),
|
6025 |
(this.ctx = null)),
|
6026 |
this.notifyPlugins("destroy"),
|
6027 |
-
delete
|
6028 |
this.notifyPlugins("afterDestroy");
|
6029 |
}
|
6030 |
toBase64Image(...t) {
|
@@ -6045,7 +6189,7 @@
|
|
6045 |
s = (t, e, i) => {
|
6046 |
(t.offsetX = e), (t.offsetY = i), this._eventHandler(t);
|
6047 |
};
|
6048 |
-
|
6049 |
}
|
6050 |
bindResponsiveEvents() {
|
6051 |
this._responsiveListeners || (this._responsiveListeners = {});
|
@@ -6078,11 +6222,11 @@
|
|
6078 |
e.isAttached(this.canvas) ? a() : o();
|
6079 |
}
|
6080 |
unbindEvents() {
|
6081 |
-
|
6082 |
this.platform.removeEventListener(this, e, t);
|
6083 |
}),
|
6084 |
(this._listeners = {}),
|
6085 |
-
|
6086 |
this.platform.removeEventListener(this, e, t);
|
6087 |
}),
|
6088 |
(this._responsiveListeners = void 0);
|
@@ -6114,7 +6258,7 @@
|
|
6114 |
if (!i) throw new Error("No dataset found at index " + t);
|
6115 |
return { datasetIndex: t, element: i.data[e], index: e };
|
6116 |
});
|
6117 |
-
!
|
6118 |
((this._active = i),
|
6119 |
(this._lastEvent = null),
|
6120 |
this._updateHoverStyles(i, e));
|
@@ -6141,7 +6285,7 @@
|
|
6141 |
event: t,
|
6142 |
replay: e,
|
6143 |
cancelable: !0,
|
6144 |
-
inChartArea:
|
6145 |
},
|
6146 |
s = (e) =>
|
6147 |
(e.options.events || this.options.events).includes(t.native.type);
|
@@ -6158,15 +6302,15 @@
|
|
6158 |
const { _active: s = [], options: n } = this,
|
6159 |
o = e,
|
6160 |
a = this._getActiveElements(t, s, i, o),
|
6161 |
-
r =
|
6162 |
l = (function (t, e, i, s) {
|
6163 |
return i && "mouseout" !== t.type ? (s ? e : t) : null;
|
6164 |
})(t, this._lastEvent, i, r);
|
6165 |
i &&
|
6166 |
((this._lastEvent = null),
|
6167 |
-
|
6168 |
-
r &&
|
6169 |
-
const h = !
|
6170 |
return (
|
6171 |
(h || e) && ((this._active = a), this._updateHoverStyles(a, s, e)),
|
6172 |
(this._lastEvent = l),
|
@@ -6180,64 +6324,65 @@
|
|
6180 |
return this.getElementsAtEventForMode(t, n.mode, n, s);
|
6181 |
}
|
6182 |
}
|
6183 |
-
const
|
6184 |
-
|
6185 |
-
function
|
6186 |
throw new Error(
|
6187 |
"This method is not implemented: Check that a complete date adapter is provided."
|
6188 |
);
|
6189 |
}
|
6190 |
-
Object.defineProperties(
|
6191 |
-
defaults: { enumerable:
|
6192 |
-
instances: { enumerable:
|
6193 |
-
overrides: { enumerable:
|
6194 |
-
registry: { enumerable:
|
6195 |
-
version: { enumerable:
|
6196 |
-
getChart: { enumerable:
|
6197 |
register: {
|
6198 |
-
enumerable:
|
6199 |
value: (...t) => {
|
6200 |
-
|
6201 |
},
|
6202 |
},
|
6203 |
unregister: {
|
6204 |
-
enumerable:
|
6205 |
value: (...t) => {
|
6206 |
-
|
6207 |
},
|
6208 |
},
|
6209 |
});
|
6210 |
-
class
|
6211 |
constructor(t) {
|
6212 |
this.options = t || {};
|
6213 |
}
|
|
|
6214 |
formats() {
|
6215 |
-
return
|
6216 |
}
|
6217 |
parse(t, e) {
|
6218 |
-
return
|
6219 |
}
|
6220 |
format(t, e) {
|
6221 |
-
return
|
6222 |
}
|
6223 |
add(t, e, i) {
|
6224 |
-
return
|
6225 |
}
|
6226 |
diff(t, e, i) {
|
6227 |
-
return
|
6228 |
}
|
6229 |
startOf(t, e, i) {
|
6230 |
-
return
|
6231 |
}
|
6232 |
endOf(t, e) {
|
6233 |
-
return
|
6234 |
}
|
6235 |
}
|
6236 |
-
|
6237 |
-
Object.assign(
|
6238 |
};
|
6239 |
-
var
|
6240 |
-
function
|
6241 |
const e = t.iScale,
|
6242 |
i = (function (t, e) {
|
6243 |
if (!t._cache.$bar) {
|
@@ -6245,7 +6390,7 @@
|
|
6245 |
let s = [];
|
6246 |
for (let e = 0, n = i.length; e < n; e++)
|
6247 |
s = s.concat(i[e].controller.getAllParsedValues(t));
|
6248 |
-
t._cache.$bar =
|
6249 |
}
|
6250 |
return t._cache.$bar;
|
6251 |
})(e, t.type);
|
@@ -6257,16 +6402,16 @@
|
|
6257 |
const l = () => {
|
6258 |
32767 !== o &&
|
6259 |
-32768 !== o &&
|
6260 |
-
(
|
6261 |
};
|
6262 |
for (s = 0, n = i.length; s < n; ++s) (o = e.getPixelForValue(i[s])), l();
|
6263 |
for (a = void 0, s = 0, n = e.ticks.length; s < n; ++s)
|
6264 |
(o = e.getPixelForTick(s)), l();
|
6265 |
return r;
|
6266 |
}
|
6267 |
-
function
|
6268 |
return (
|
6269 |
-
|
6270 |
? (function (t, e, i, s) {
|
6271 |
const n = i.parse(t[0], s),
|
6272 |
o = i.parse(t[1], s),
|
@@ -6284,12 +6429,12 @@
|
|
6284 |
min: a,
|
6285 |
max: r,
|
6286 |
});
|
6287 |
-
})(t, e, i,
|
6288 |
-
: (e[i.axis] = i.parse(t,
|
6289 |
e
|
6290 |
);
|
6291 |
}
|
6292 |
-
function
|
6293 |
const n = t.iScale,
|
6294 |
o = t.vScale,
|
6295 |
a = n.getLabels(),
|
@@ -6300,16 +6445,23 @@
|
|
6300 |
(u = e[h]),
|
6301 |
(d = {}),
|
6302 |
(d[n.axis] = r || n.parse(a[h], h)),
|
6303 |
-
l.push(
|
6304 |
return l;
|
6305 |
}
|
6306 |
-
function
|
6307 |
return t && void 0 !== t.barStart && void 0 !== t.barEnd;
|
6308 |
}
|
6309 |
-
function
|
6310 |
let n = e.borderSkipped;
|
6311 |
const o = {};
|
6312 |
if (!n) return void (t.borderSkipped = o);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6313 |
const {
|
6314 |
start: a,
|
6315 |
end: r,
|
@@ -6333,32 +6485,32 @@
|
|
6333 |
? (n = h)
|
6334 |
: (i._bottom || 0) === s
|
6335 |
? (n = c)
|
6336 |
-
: ((o[
|
6337 |
-
(o[
|
6338 |
(t.borderSkipped = o);
|
6339 |
}
|
6340 |
-
function
|
6341 |
var n, o, a;
|
6342 |
return (
|
6343 |
s
|
6344 |
? ((a = i),
|
6345 |
-
(t =
|
6346 |
-
: (t =
|
6347 |
t
|
6348 |
);
|
6349 |
}
|
6350 |
-
function
|
6351 |
return "start" === t ? e : "end" === t ? i : t;
|
6352 |
}
|
6353 |
-
function
|
6354 |
t.inflateAmount = "auto" === e ? (1 === i ? 0.33 : 0) : e;
|
6355 |
}
|
6356 |
-
class
|
6357 |
parsePrimitiveData(t, e, i, s) {
|
6358 |
-
return
|
6359 |
}
|
6360 |
parseArrayData(t, e, i, s) {
|
6361 |
-
return
|
6362 |
}
|
6363 |
parseObjectData(t, e, i, s) {
|
6364 |
const { iScale: n, vScale: o } = t,
|
@@ -6370,8 +6522,8 @@
|
|
6370 |
for (d = i, u = i + s; d < u; ++d)
|
6371 |
(g = e[d]),
|
6372 |
(f = {}),
|
6373 |
-
(f[n.axis] = n.parse(
|
6374 |
-
c.push(
|
6375 |
return c;
|
6376 |
}
|
6377 |
updateRangeFromParsed(t, e, i, s) {
|
@@ -6389,7 +6541,7 @@
|
|
6389 |
{ iScale: i, vScale: s } = e,
|
6390 |
n = this.getParsed(t),
|
6391 |
o = n._custom,
|
6392 |
-
a =
|
6393 |
? "[" + o.start + ", " + o.end + "]"
|
6394 |
: "" + s.getLabelForValue(n[s.axis]);
|
6395 |
return { label: "" + i.getLabelForValue(n[i.axis]), value: a };
|
@@ -6402,67 +6554,63 @@
|
|
6402 |
const e = this._cachedMeta;
|
6403 |
this.updateElements(e.data, 0, e.data.length, t);
|
6404 |
}
|
6405 |
-
updateElements(t, e,
|
6406 |
-
const
|
6407 |
{
|
6408 |
-
index:
|
6409 |
-
_cachedMeta: { vScale:
|
6410 |
} = this,
|
6411 |
-
|
6412 |
-
|
6413 |
-
|
6414 |
-
|
6415 |
-
|
6416 |
-
|
6417 |
-
|
6418 |
-
|
6419 |
-
|
6420 |
-
|
6421 |
-
|
6422 |
-
|
6423 |
-
|
6424 |
-
|
6425 |
-
|
6426 |
-
p = {
|
6427 |
-
horizontal: l,
|
6428 |
-
base: i.base,
|
6429 |
enableBorderRadius:
|
6430 |
-
!
|
6431 |
-
x:
|
6432 |
-
y:
|
6433 |
-
height:
|
6434 |
-
width:
|
6435 |
};
|
6436 |
u &&
|
6437 |
-
(
|
6438 |
-
d || this.resolveDataElementOptions(
|
6439 |
-
const
|
6440 |
-
|
6441 |
}
|
6442 |
}
|
6443 |
_getStacks(t, e) {
|
6444 |
-
const
|
6445 |
-
|
6446 |
-
|
6447 |
-
|
6448 |
-
|
6449 |
-
|
6450 |
-
|
6451 |
-
|
6452 |
-
|
6453 |
-
|
6454 |
-
|
6455 |
-
|
6456 |
-
|
6457 |
-
|
6458 |
-
|
6459 |
-
|
6460 |
-
|
6461 |
-
|
6462 |
-
|
6463 |
-
|
6464 |
-
|
6465 |
-
}
|
6466 |
return a.length || a.push(void 0), a;
|
6467 |
}
|
6468 |
_getStackCount(t) {
|
@@ -6483,7 +6631,7 @@
|
|
6483 |
s.push(i.getPixelForValue(this.getParsed(n)[i.axis], n));
|
6484 |
const a = t.barThickness;
|
6485 |
return {
|
6486 |
-
min: a ||
|
6487 |
pixels: s,
|
6488 |
start: i._startPixel,
|
6489 |
end: i._endPixel,
|
@@ -6495,55 +6643,60 @@
|
|
6495 |
}
|
6496 |
_calculateBarValuePixels(t) {
|
6497 |
const {
|
6498 |
-
_cachedMeta: { vScale: e, _stacked:
|
6499 |
-
options: { base:
|
6500 |
} = this,
|
6501 |
-
|
6502 |
-
|
6503 |
-
|
6504 |
-
|
6505 |
-
let
|
6506 |
-
|
6507 |
-
|
6508 |
-
|
6509 |
-
|
6510 |
-
|
6511 |
-
|
6512 |
-
((
|
6513 |
-
(
|
6514 |
-
0 !==
|
6515 |
-
(
|
6516 |
-
const
|
6517 |
-
let
|
6518 |
if (
|
6519 |
-
((
|
6520 |
-
(
|
6521 |
-
Math.abs(
|
6522 |
-
((c =
|
6523 |
-
(function (t, e, i) {
|
6524 |
-
return 0 !== t
|
6525 |
-
? Ct(t)
|
6526 |
-
: (e.isHorizontal() ? 1 : -1) * (e.min >= i ? 1 : -1);
|
6527 |
-
})(c, e, o) * n),
|
6528 |
-
d === o && (p -= c / 2),
|
6529 |
-
(h = p + c)),
|
6530 |
-
p === e.getPixelForValue(o))
|
6531 |
) {
|
6532 |
-
|
6533 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6534 |
}
|
6535 |
-
|
|
|
|
|
|
|
|
|
6536 |
}
|
6537 |
_calculateBarIndexPixels(t, e) {
|
6538 |
-
const
|
6539 |
-
|
6540 |
-
|
6541 |
-
|
6542 |
-
let
|
6543 |
if (e.grouped) {
|
6544 |
-
const
|
6545 |
-
|
6546 |
-
"flex" ===
|
6547 |
? (function (t, e, i, s) {
|
6548 |
const n = e.pixels,
|
6549 |
o = n[t];
|
@@ -6559,27 +6712,27 @@
|
|
6559 |
ratio: i.barPercentage,
|
6560 |
start: h,
|
6561 |
};
|
6562 |
-
})(t, e,
|
6563 |
-
: (function (t, e,
|
6564 |
-
const
|
6565 |
-
let
|
6566 |
return (
|
6567 |
-
|
6568 |
-
? ((
|
6569 |
-
(
|
6570 |
-
: ((
|
6571 |
-
{ chunk:
|
6572 |
);
|
6573 |
-
})(t, e,
|
6574 |
-
|
6575 |
this.index,
|
6576 |
this._cachedMeta.stack,
|
6577 |
-
|
6578 |
);
|
6579 |
-
(
|
6580 |
-
(
|
6581 |
-
} else (
|
6582 |
-
return { base:
|
6583 |
}
|
6584 |
draw() {
|
6585 |
const t = this._cachedMeta,
|
@@ -6591,8 +6744,8 @@
|
|
6591 |
null !== this.getParsed(n)[e.axis] && i[n].draw(this._ctx);
|
6592 |
}
|
6593 |
}
|
6594 |
-
(
|
6595 |
-
(
|
6596 |
datasetElementType: !1,
|
6597 |
dataElementType: "bar",
|
6598 |
categoryPercentage: 0.8,
|
@@ -6605,13 +6758,13 @@
|
|
6605 |
},
|
6606 |
},
|
6607 |
}),
|
6608 |
-
(
|
6609 |
scales: {
|
6610 |
_index_: { type: "category", offset: !0, grid: { offset: !0 } },
|
6611 |
_value_: { type: "linear", beginAtZero: !0 },
|
6612 |
},
|
6613 |
});
|
6614 |
-
class
|
6615 |
initialize() {
|
6616 |
(this.enableOptionSharing = !0), super.initialize();
|
6617 |
}
|
@@ -6625,7 +6778,7 @@
|
|
6625 |
const n = super.parseArrayData(t, e, i, s);
|
6626 |
for (let t = 0; t < n.length; t++) {
|
6627 |
const s = e[i + t];
|
6628 |
-
n[t]._custom =
|
6629 |
}
|
6630 |
return n;
|
6631 |
}
|
@@ -6633,7 +6786,7 @@
|
|
6633 |
const n = super.parseObjectData(t, e, i, s);
|
6634 |
for (let t = 0; t < n.length; t++) {
|
6635 |
const s = e[i + t];
|
6636 |
-
n[t]._custom =
|
6637 |
s && s.r && +s.r,
|
6638 |
this.resolveDataElementOptions(t + i).radius
|
6639 |
);
|
@@ -6666,27 +6819,22 @@
|
|
6666 |
updateElements(t, e, i, s) {
|
6667 |
const n = "reset" === s,
|
6668 |
{ iScale: o, vScale: a } = this._cachedMeta,
|
6669 |
-
r = this.
|
6670 |
-
|
6671 |
-
|
6672 |
-
|
6673 |
-
|
6674 |
-
|
6675 |
-
|
6676 |
-
|
6677 |
-
|
6678 |
-
|
6679 |
-
|
6680 |
-
|
6681 |
-
|
6682 |
-
(
|
6683 |
-
|
6684 |
-
e.active ? "active" : s
|
6685 |
-
)),
|
6686 |
-
n && (l.options.radius = 0)),
|
6687 |
-
this.updateElement(e, r, l, s);
|
6688 |
}
|
6689 |
-
this.updateSharedOptions(l, s, r);
|
6690 |
}
|
6691 |
resolveDataElementOptions(t, e) {
|
6692 |
const i = this.getParsed(t);
|
@@ -6694,12 +6842,12 @@
|
|
6694 |
s.$shared && (s = Object.assign({}, s, { $shared: !1 }));
|
6695 |
const n = s.radius;
|
6696 |
return (
|
6697 |
-
"active" !== e && (s.radius = 0), (s.radius +=
|
6698 |
);
|
6699 |
}
|
6700 |
}
|
6701 |
-
(
|
6702 |
-
(
|
6703 |
datasetElementType: !1,
|
6704 |
dataElementType: "point",
|
6705 |
animations: {
|
@@ -6709,11 +6857,11 @@
|
|
6709 |
},
|
6710 |
},
|
6711 |
}),
|
6712 |
-
(
|
6713 |
scales: { x: { type: "linear" }, y: { type: "linear" } },
|
6714 |
plugins: { tooltip: { callbacks: { title: () => "" } } },
|
6715 |
});
|
6716 |
-
class
|
6717 |
constructor(t, e) {
|
6718 |
super(t, e),
|
6719 |
(this.enableOptionSharing = !0),
|
@@ -6728,25 +6876,25 @@
|
|
6728 |
s = this._cachedMeta;
|
6729 |
if (!1 === this._parsing) s._parsed = i;
|
6730 |
else {
|
6731 |
-
let
|
6732 |
-
|
6733 |
-
|
6734 |
-
if (
|
6735 |
const { key: t = "value" } = this._parsing;
|
6736 |
-
|
6737 |
}
|
6738 |
-
for (
|
6739 |
}
|
6740 |
}
|
6741 |
_getRotation() {
|
6742 |
-
return
|
6743 |
}
|
6744 |
_getCircumference() {
|
6745 |
-
return
|
6746 |
}
|
6747 |
_getRotationExtents() {
|
6748 |
-
let t =
|
6749 |
-
e = -
|
6750 |
for (let i = 0; i < this.chart.data.datasets.length; ++i)
|
6751 |
if (this.chart.isDatasetVisible(i)) {
|
6752 |
const s = this.chart.getDatasetMeta(i).controller,
|
@@ -6766,20 +6914,20 @@
|
|
6766 |
this.getMaxOffset(n) +
|
6767 |
this.options.spacing,
|
6768 |
a = Math.max((Math.min(i.width, i.height) - o) / 2, 0),
|
6769 |
-
r = Math.min(
|
6770 |
-
|
6771 |
-
{ circumference:
|
6772 |
{
|
6773 |
-
ratioX:
|
6774 |
-
ratioY:
|
6775 |
-
offsetX:
|
6776 |
-
offsetY:
|
6777 |
} = (function (t, e, i) {
|
6778 |
let s = 1,
|
6779 |
n = 1,
|
6780 |
o = 0,
|
6781 |
a = 0;
|
6782 |
-
if (e <
|
6783 |
const r = t,
|
6784 |
l = r + e,
|
6785 |
h = Math.cos(r),
|
@@ -6787,30 +6935,30 @@
|
|
6787 |
d = Math.cos(l),
|
6788 |
u = Math.sin(l),
|
6789 |
f = (t, e, s) =>
|
6790 |
-
|
6791 |
g = (t, e, s) =>
|
6792 |
-
|
6793 |
p = f(0, h, d),
|
6794 |
-
m = f(
|
6795 |
-
|
6796 |
-
|
6797 |
-
(s = (p -
|
6798 |
-
(n = (m -
|
6799 |
-
(o = -(p +
|
6800 |
-
(a = -(m +
|
6801 |
}
|
6802 |
return { ratioX: s, ratioY: n, offsetX: o, offsetY: a };
|
6803 |
-
})(
|
6804 |
-
|
6805 |
-
|
6806 |
-
|
6807 |
-
|
6808 |
-
|
6809 |
-
(this.offsetX =
|
6810 |
-
(this.offsetY =
|
6811 |
(s.total = this.calculateTotal()),
|
6812 |
-
(this.outerRadius =
|
6813 |
-
(this.innerRadius = Math.max(this.outerRadius -
|
6814 |
this.updateElements(n, 0, n.length, t);
|
6815 |
}
|
6816 |
_circumference(t, e) {
|
@@ -6822,7 +6970,7 @@
|
|
6822 |
null === s._parsed[t] ||
|
6823 |
s.data[t].hidden
|
6824 |
? 0
|
6825 |
-
: this.calculateCircumference((s._parsed[t] * n) /
|
6826 |
}
|
6827 |
updateElements(t, e, i, s) {
|
6828 |
const n = "reset" === s,
|
@@ -6834,31 +6982,28 @@
|
|
6834 |
c = n && r.animateScale,
|
6835 |
d = c ? 0 : this.innerRadius,
|
6836 |
u = c ? 0 : this.outerRadius,
|
6837 |
-
f = this.
|
6838 |
-
|
6839 |
-
|
6840 |
-
|
6841 |
-
|
6842 |
-
|
6843 |
-
|
6844 |
-
const e = this._circumference(m, n),
|
6845 |
-
i = t[m],
|
6846 |
o = {
|
6847 |
x: l + this.offsetX,
|
6848 |
y: h + this.offsetY,
|
6849 |
-
startAngle:
|
6850 |
-
endAngle:
|
6851 |
circumference: e,
|
6852 |
outerRadius: u,
|
6853 |
innerRadius: d,
|
6854 |
};
|
6855 |
-
|
6856 |
(o.options =
|
6857 |
-
|
6858 |
-
(
|
6859 |
-
this.updateElement(i,
|
6860 |
}
|
6861 |
-
this.updateSharedOptions(g, s, f);
|
6862 |
}
|
6863 |
calculateTotal() {
|
6864 |
const t = this._cachedMeta,
|
@@ -6877,13 +7022,13 @@
|
|
6877 |
}
|
6878 |
calculateCircumference(t) {
|
6879 |
const e = this._cachedMeta.total;
|
6880 |
-
return e > 0 && !isNaN(t) ?
|
6881 |
}
|
6882 |
getLabelAndValue(t) {
|
6883 |
const e = this._cachedMeta,
|
6884 |
i = this.chart,
|
6885 |
s = i.data.labels || [],
|
6886 |
-
n =
|
6887 |
return { label: s[t] || "", value: n };
|
6888 |
}
|
6889 |
getMaxBorderWidth(t) {
|
@@ -6918,14 +7063,14 @@
|
|
6918 |
return e;
|
6919 |
}
|
6920 |
_getRingWeight(t) {
|
6921 |
-
return Math.max(
|
6922 |
}
|
6923 |
_getVisibleDatasetWeightTotal() {
|
6924 |
return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;
|
6925 |
}
|
6926 |
}
|
6927 |
-
(
|
6928 |
-
(
|
6929 |
datasetElementType: !1,
|
6930 |
dataElementType: "arc",
|
6931 |
animation: { animateRotate: !0, animateScale: !1 },
|
@@ -6953,11 +7098,11 @@
|
|
6953 |
spacing: 0,
|
6954 |
indexAxis: "r",
|
6955 |
}),
|
6956 |
-
(
|
6957 |
_scriptable: (t) => "spacing" !== t,
|
6958 |
_indexable: (t) => "spacing" !== t,
|
6959 |
}),
|
6960 |
-
(
|
6961 |
aspectRatio: 1,
|
6962 |
plugins: {
|
6963 |
legend: {
|
@@ -6994,68 +7139,26 @@
|
|
6994 |
label(t) {
|
6995 |
let e = t.label;
|
6996 |
const i = ": " + t.formattedValue;
|
6997 |
-
return
|
6998 |
},
|
6999 |
},
|
7000 |
},
|
7001 |
},
|
7002 |
});
|
7003 |
-
class
|
7004 |
initialize() {
|
7005 |
-
(this.enableOptionSharing = !0),
|
|
|
|
|
7006 |
}
|
7007 |
update(t) {
|
7008 |
const e = this._cachedMeta,
|
7009 |
{ dataset: i, data: s = [], _dataset: n } = e,
|
7010 |
o = this.chart._animationsDisabled;
|
7011 |
-
let { start: a, count: r } = (
|
7012 |
-
const s = e.length;
|
7013 |
-
let n = 0,
|
7014 |
-
o = s;
|
7015 |
-
if (t._sorted) {
|
7016 |
-
const { iScale: a, _parsed: r } = t,
|
7017 |
-
l = a.axis,
|
7018 |
-
{
|
7019 |
-
min: h,
|
7020 |
-
max: c,
|
7021 |
-
minDefined: d,
|
7022 |
-
maxDefined: u,
|
7023 |
-
} = a.getUserBounds();
|
7024 |
-
d &&
|
7025 |
-
(n = jt(
|
7026 |
-
Math.min(
|
7027 |
-
re(r, a.axis, h).lo,
|
7028 |
-
i ? s : re(e, l, a.getPixelForValue(h)).lo
|
7029 |
-
),
|
7030 |
-
0,
|
7031 |
-
s - 1
|
7032 |
-
)),
|
7033 |
-
(o = u
|
7034 |
-
? jt(
|
7035 |
-
Math.max(
|
7036 |
-
re(r, a.axis, c).hi + 1,
|
7037 |
-
i ? 0 : re(e, l, a.getPixelForValue(c)).hi + 1
|
7038 |
-
),
|
7039 |
-
n,
|
7040 |
-
s
|
7041 |
-
) - n
|
7042 |
-
: s - n);
|
7043 |
-
}
|
7044 |
-
return { start: n, count: o };
|
7045 |
-
})(e, s, o);
|
7046 |
(this._drawStart = a),
|
7047 |
(this._drawCount = r),
|
7048 |
-
(
|
7049 |
-
const { xScale: e, yScale: i, _scaleRanges: s } = t,
|
7050 |
-
n = { xmin: e.min, xmax: e.max, ymin: i.min, ymax: i.max };
|
7051 |
-
if (!s) return (t._scaleRanges = n), !0;
|
7052 |
-
const o =
|
7053 |
-
s.xmin !== e.min ||
|
7054 |
-
s.xmax !== e.max ||
|
7055 |
-
s.ymin !== i.min ||
|
7056 |
-
s.ymax !== i.max;
|
7057 |
-
return Object.assign(s, n), o;
|
7058 |
-
})(e) && ((a = 0), (r = s.length)),
|
7059 |
(i._chart = this.chart),
|
7060 |
(i._datasetIndex = this.index),
|
7061 |
(i._decimated = !!n._decimated),
|
@@ -7066,38 +7169,35 @@
|
|
7066 |
this.updateElement(i, void 0, { animated: !o, options: l }, t),
|
7067 |
this.updateElements(s, a, r, t);
|
7068 |
}
|
7069 |
-
updateElements(t, e,
|
7070 |
-
const
|
7071 |
-
{ iScale:
|
7072 |
-
|
7073 |
-
|
7074 |
-
|
7075 |
-
u = o.axis,
|
7076 |
-
f = a.axis,
|
7077 |
{ spanGaps: g, segment: p } = this.options,
|
7078 |
-
m =
|
7079 |
-
|
7080 |
-
let
|
7081 |
-
for (let
|
7082 |
-
const e = t[
|
7083 |
-
|
7084 |
-
|
7085 |
-
|
7086 |
-
|
7087 |
-
|
7088 |
-
|
7089 |
-
?
|
7090 |
-
:
|
7091 |
-
(
|
7092 |
-
(
|
7093 |
-
p && ((
|
7094 |
d &&
|
7095 |
-
(
|
7096 |
-
c || this.resolveDataElementOptions(
|
7097 |
-
|
7098 |
-
(
|
7099 |
}
|
7100 |
-
this.updateSharedOptions(c, s, h);
|
7101 |
}
|
7102 |
getMaxOverflow() {
|
7103 |
const t = this._cachedMeta,
|
@@ -7115,17 +7215,17 @@
|
|
7115 |
super.draw();
|
7116 |
}
|
7117 |
}
|
7118 |
-
(
|
7119 |
-
(
|
7120 |
datasetElementType: "line",
|
7121 |
dataElementType: "point",
|
7122 |
showLine: !0,
|
7123 |
spanGaps: !1,
|
7124 |
}),
|
7125 |
-
(
|
7126 |
scales: { _index_: { type: "category" }, _value_: { type: "linear" } },
|
7127 |
});
|
7128 |
-
class
|
7129 |
constructor(t, e) {
|
7130 |
super(t, e), (this.innerRadius = void 0), (this.outerRadius = void 0);
|
7131 |
}
|
@@ -7133,13 +7233,29 @@
|
|
7133 |
const e = this._cachedMeta,
|
7134 |
i = this.chart,
|
7135 |
s = i.data.labels || [],
|
7136 |
-
n =
|
7137 |
return { label: s[t] || "", value: n };
|
7138 |
}
|
|
|
|
|
|
|
7139 |
update(t) {
|
7140 |
const e = this._cachedMeta.data;
|
7141 |
this._updateRadius(), this.updateElements(e, 0, e.length, t);
|
7142 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7143 |
_updateRadius() {
|
7144 |
const t = this.chart,
|
7145 |
e = t.chartArea,
|
@@ -7159,56 +7275,54 @@
|
|
7159 |
updateElements(t, e, i, s) {
|
7160 |
const n = "reset" === s,
|
7161 |
o = this.chart,
|
7162 |
-
a =
|
7163 |
-
r =
|
7164 |
-
l =
|
7165 |
-
h =
|
7166 |
-
c =
|
7167 |
-
|
7168 |
-
|
7169 |
-
|
7170 |
-
|
7171 |
-
for (
|
7172 |
-
|
7173 |
-
|
7174 |
-
|
7175 |
-
p =
|
7176 |
-
|
7177 |
-
? l.getDistanceFromCenterForValue(a.data[u])
|
7178 |
: 0;
|
7179 |
-
(
|
7180 |
-
n && (
|
7181 |
-
const
|
7182 |
-
x:
|
7183 |
-
y:
|
7184 |
innerRadius: 0,
|
7185 |
-
outerRadius:
|
7186 |
startAngle: i,
|
7187 |
-
endAngle:
|
7188 |
-
options: this.resolveDataElementOptions(
|
7189 |
};
|
7190 |
-
this.updateElement(e,
|
7191 |
}
|
7192 |
}
|
7193 |
countVisibleElements() {
|
7194 |
-
const t = this.
|
7195 |
-
|
7196 |
-
let i = 0;
|
7197 |
return (
|
7198 |
-
|
7199 |
-
!isNaN(
|
7200 |
}),
|
7201 |
-
|
7202 |
);
|
7203 |
}
|
7204 |
_computeAngle(t, e, i) {
|
7205 |
return this.chart.getDataVisibility(t)
|
7206 |
-
?
|
7207 |
: 0;
|
7208 |
}
|
7209 |
}
|
7210 |
-
(
|
7211 |
-
(
|
7212 |
dataElementType: "arc",
|
7213 |
animation: { animateRotate: !0, animateScale: !0 },
|
7214 |
animations: {
|
@@ -7227,7 +7341,7 @@
|
|
7227 |
indexAxis: "r",
|
7228 |
startAngle: 0,
|
7229 |
}),
|
7230 |
-
(
|
7231 |
aspectRatio: 1,
|
7232 |
plugins: {
|
7233 |
legend: {
|
@@ -7277,15 +7391,15 @@
|
|
7277 |
},
|
7278 |
},
|
7279 |
});
|
7280 |
-
class
|
7281 |
-
(
|
7282 |
-
(
|
7283 |
cutout: 0,
|
7284 |
rotation: 0,
|
7285 |
circumference: 360,
|
7286 |
radius: "100%",
|
7287 |
});
|
7288 |
-
class
|
7289 |
getLabelAndValue(t) {
|
7290 |
const e = this._cachedMeta.vScale,
|
7291 |
i = this.getParsed(t);
|
@@ -7294,6 +7408,9 @@
|
|
7294 |
value: "" + e.getLabelForValue(i[e.axis]),
|
7295 |
};
|
7296 |
}
|
|
|
|
|
|
|
7297 |
update(t) {
|
7298 |
const e = this._cachedMeta,
|
7299 |
i = e.dataset,
|
@@ -7308,42 +7425,125 @@
|
|
7308 |
this.updateElements(s, 0, s.length, t);
|
7309 |
}
|
7310 |
updateElements(t, e, i, s) {
|
7311 |
-
const n = this.
|
7312 |
-
o =
|
7313 |
-
|
7314 |
-
|
7315 |
-
|
7316 |
-
|
7317 |
-
l = o
|
7318 |
-
h =
|
7319 |
-
c =
|
7320 |
-
|
7321 |
-
|
7322 |
-
|
7323 |
-
|
7324 |
-
skip: isNaN(h) || isNaN(c),
|
7325 |
options: i,
|
7326 |
};
|
7327 |
-
this.updateElement(e,
|
7328 |
}
|
7329 |
}
|
7330 |
}
|
7331 |
-
(
|
7332 |
-
(
|
7333 |
datasetElementType: "line",
|
7334 |
dataElementType: "point",
|
7335 |
indexAxis: "r",
|
7336 |
showLine: !0,
|
7337 |
elements: { line: { fill: "start" } },
|
7338 |
}),
|
7339 |
-
(
|
7340 |
aspectRatio: 1,
|
7341 |
scales: { r: { type: "radialLinear" } },
|
7342 |
});
|
7343 |
-
class
|
7344 |
-
|
7345 |
-
|
7346 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7347 |
interaction: { mode: "point" },
|
7348 |
plugins: {
|
7349 |
tooltip: {
|
@@ -7355,18 +7555,18 @@
|
|
7355 |
},
|
7356 |
scales: { x: { type: "linear" }, y: { type: "linear" } },
|
7357 |
});
|
7358 |
-
var
|
7359 |
__proto__: null,
|
7360 |
-
BarController:
|
7361 |
-
BubbleController:
|
7362 |
-
DoughnutController:
|
7363 |
-
LineController:
|
7364 |
-
PolarAreaController:
|
7365 |
-
PieController:
|
7366 |
-
RadarController:
|
7367 |
-
ScatterController:
|
7368 |
});
|
7369 |
-
function
|
7370 |
const {
|
7371 |
startAngle: s,
|
7372 |
pixelMargin: n,
|
@@ -7380,12 +7580,12 @@
|
|
7380 |
t.arc(o, a, r, s - h, i + h),
|
7381 |
l > n
|
7382 |
? ((h = n / l), t.arc(o, a, l, i + h, s - h, !0))
|
7383 |
-
: t.arc(o, a, n, i +
|
7384 |
t.closePath(),
|
7385 |
t.clip();
|
7386 |
}
|
7387 |
-
function
|
7388 |
-
const n =
|
7389 |
"outerStart",
|
7390 |
"outerEnd",
|
7391 |
"innerStart",
|
@@ -7395,73 +7595,83 @@
|
|
7395 |
a = Math.min(o, (s * e) / 2),
|
7396 |
r = (t) => {
|
7397 |
const e = ((i - Math.min(o, t)) * s) / 2;
|
7398 |
-
return
|
7399 |
};
|
7400 |
return {
|
7401 |
outerStart: r(n.outerStart),
|
7402 |
outerEnd: r(n.outerEnd),
|
7403 |
-
innerStart:
|
7404 |
-
innerEnd:
|
7405 |
};
|
7406 |
}
|
7407 |
-
function
|
7408 |
return { x: i + t * Math.cos(e), y: s + t * Math.sin(e) };
|
7409 |
}
|
7410 |
-
function
|
7411 |
-
const { x:
|
7412 |
-
|
7413 |
-
|
7414 |
-
let
|
7415 |
-
const
|
7416 |
if (s) {
|
7417 |
-
const t = ((
|
7418 |
-
|
7419 |
}
|
7420 |
-
const
|
7421 |
-
|
7422 |
-
|
7423 |
{
|
7424 |
outerStart: x,
|
7425 |
-
outerEnd:
|
7426 |
-
innerStart:
|
7427 |
-
innerEnd:
|
7428 |
-
} =
|
7429 |
-
|
7430 |
-
|
7431 |
-
|
7432 |
-
|
7433 |
-
|
7434 |
-
|
7435 |
-
|
7436 |
-
|
7437 |
-
if ((t.beginPath(),
|
7438 |
-
|
7439 |
-
|
7440 |
-
|
7441 |
-
|
7442 |
-
|
7443 |
-
|
7444 |
-
|
7445 |
-
|
7446 |
-
|
7447 |
-
|
7448 |
-
|
7449 |
-
|
7450 |
-
|
7451 |
-
|
7452 |
-
|
7453 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7454 |
}
|
7455 |
t.closePath();
|
7456 |
}
|
7457 |
-
function
|
7458 |
-
const { options:
|
7459 |
-
{ borderWidth:
|
7460 |
-
|
7461 |
-
|
7462 |
-
(
|
7463 |
-
? ((t.lineWidth = 2 *
|
7464 |
-
: ((t.lineWidth =
|
7465 |
e.fullCircles &&
|
7466 |
(function (t, e, i) {
|
7467 |
const {
|
@@ -7475,22 +7685,22 @@
|
|
7475 |
h = e.innerRadius + a;
|
7476 |
let c;
|
7477 |
for (
|
7478 |
-
i &&
|
7479 |
t.beginPath(),
|
7480 |
-
t.arc(s, n, h, o +
|
7481 |
c = 0;
|
7482 |
c < r;
|
7483 |
++c
|
7484 |
)
|
7485 |
t.stroke();
|
7486 |
-
for (t.beginPath(), t.arc(s, n, l, o, o +
|
7487 |
t.stroke();
|
7488 |
-
})(t, e,
|
7489 |
-
|
7490 |
-
|
7491 |
t.stroke());
|
7492 |
}
|
7493 |
-
class
|
7494 |
constructor(t) {
|
7495 |
super(),
|
7496 |
(this.options = void 0),
|
@@ -7505,13 +7715,13 @@
|
|
7505 |
}
|
7506 |
inRange(t, e, i) {
|
7507 |
const s = this.getProps(["x", "y"], i),
|
7508 |
-
{ angle: n, distance: o } =
|
7509 |
{
|
7510 |
startAngle: a,
|
7511 |
-
endAngle:
|
7512 |
-
innerRadius:
|
7513 |
-
outerRadius:
|
7514 |
-
circumference:
|
7515 |
} = this.getProps(
|
7516 |
[
|
7517 |
"startAngle",
|
@@ -7522,10 +7732,10 @@
|
|
7522 |
],
|
7523 |
i
|
7524 |
),
|
7525 |
-
|
7526 |
-
|
7527 |
-
|
7528 |
-
return
|
7529 |
}
|
7530 |
getCenterPoint(t) {
|
7531 |
const {
|
@@ -7558,47 +7768,48 @@
|
|
7558 |
draw(t) {
|
7559 |
const { options: e, circumference: i } = this,
|
7560 |
s = (e.offset || 0) / 2,
|
7561 |
-
n = (e.spacing || 0) / 2
|
|
|
7562 |
if (
|
7563 |
((this.pixelMargin = "inner" === e.borderAlign ? 0.33 : 0),
|
7564 |
-
(this.fullCircles = i >
|
7565 |
0 === i || this.innerRadius < 0 || this.outerRadius < 0)
|
7566 |
)
|
7567 |
return;
|
7568 |
t.save();
|
7569 |
-
let
|
7570 |
if (s) {
|
7571 |
-
|
7572 |
const e = (this.startAngle + this.endAngle) / 2;
|
7573 |
-
t.translate(Math.cos(e) *
|
7574 |
-
this.circumference >=
|
7575 |
}
|
7576 |
(t.fillStyle = e.backgroundColor), (t.strokeStyle = e.borderColor);
|
7577 |
-
const
|
7578 |
-
const { fullCircles:
|
7579 |
-
let
|
7580 |
-
if (
|
7581 |
-
|
7582 |
-
for (let e = 0; e <
|
7583 |
-
isNaN(
|
7584 |
}
|
7585 |
-
return
|
7586 |
-
})(t, this,
|
7587 |
-
|
7588 |
}
|
7589 |
}
|
7590 |
-
function
|
7591 |
-
(t.lineCap =
|
7592 |
-
t.setLineDash(
|
7593 |
-
(t.lineDashOffset =
|
7594 |
-
(t.lineJoin =
|
7595 |
-
(t.lineWidth =
|
7596 |
-
(t.strokeStyle =
|
7597 |
}
|
7598 |
-
function
|
7599 |
t.lineTo(i.x, i.y);
|
7600 |
}
|
7601 |
-
function
|
7602 |
const s = t.length,
|
7603 |
{ start: n = 0, end: o = s - 1 } = i,
|
7604 |
{ start: a, end: r } = e,
|
@@ -7612,15 +7823,15 @@
|
|
7612 |
ilen: h < l && !c ? s + h - l : h - l,
|
7613 |
};
|
7614 |
}
|
7615 |
-
function
|
7616 |
const { points: n, options: o } = e,
|
7617 |
-
{ count: a, start: r, loop: l, ilen: h } =
|
7618 |
c = (function (t) {
|
7619 |
return t.stepped
|
7620 |
-
?
|
7621 |
: t.tension || "monotone" === t.cubicInterpolationMode
|
7622 |
-
?
|
7623 |
-
:
|
7624 |
})(o);
|
7625 |
let d,
|
7626 |
u,
|
@@ -7633,9 +7844,9 @@
|
|
7633 |
(f = u));
|
7634 |
return l && ((u = n[(r + (p ? h : 0)) % a]), c(t, f, u, p, o.stepped)), !!l;
|
7635 |
}
|
7636 |
-
function
|
7637 |
const n = e.points,
|
7638 |
-
{ count: o, start: a, ilen: r } =
|
7639 |
{ move: l = !0, reverse: h } = s || {};
|
7640 |
let c,
|
7641 |
d,
|
@@ -7644,24 +7855,24 @@
|
|
7644 |
g,
|
7645 |
p,
|
7646 |
m = 0,
|
7647 |
-
|
7648 |
-
const
|
7649 |
_ = () => {
|
7650 |
f !== g && (t.lineTo(m, g), t.lineTo(m, f), t.lineTo(m, p));
|
7651 |
};
|
7652 |
-
for (l && ((d = n[
|
7653 |
-
if (((d = n[
|
7654 |
const e = d.x,
|
7655 |
i = d.y,
|
7656 |
s = 0 | e;
|
7657 |
s === u
|
7658 |
-
? (i < f ? (f = i) : i > g && (g = i), (m = (
|
7659 |
-
: (_(), t.lineTo(e, i), (u = s), (
|
7660 |
(p = i);
|
7661 |
}
|
7662 |
_();
|
7663 |
}
|
7664 |
-
function
|
7665 |
const e = t.options,
|
7666 |
i = e.borderDash && e.borderDash.length;
|
7667 |
return !(
|
@@ -7672,11 +7883,11 @@
|
|
7672 |
e.stepped ||
|
7673 |
i
|
7674 |
)
|
7675 |
-
?
|
7676 |
-
:
|
7677 |
}
|
7678 |
-
(
|
7679 |
-
(
|
7680 |
borderAlign: "center",
|
7681 |
borderColor: "#fff",
|
7682 |
borderJoinStyle: void 0,
|
@@ -7685,28 +7896,29 @@
|
|
7685 |
offset: 0,
|
7686 |
spacing: 0,
|
7687 |
angle: void 0,
|
|
|
7688 |
}),
|
7689 |
-
(
|
7690 |
-
const
|
7691 |
-
function
|
7692 |
-
|
7693 |
? (function (t, e, i, s) {
|
7694 |
let n = e._path;
|
7695 |
n || ((n = e._path = new Path2D()), e.path(n, i, s) && n.closePath()),
|
7696 |
-
|
7697 |
t.stroke(n);
|
7698 |
})(t, e, i, s)
|
7699 |
: (function (t, e, i, s) {
|
7700 |
const { segments: n, options: o } = e,
|
7701 |
-
a =
|
7702 |
for (const r of n)
|
7703 |
-
|
7704 |
t.beginPath(),
|
7705 |
a(t, e, r, { start: i, end: i + s - 1 }) && t.closePath(),
|
7706 |
t.stroke();
|
7707 |
})(t, e, i, s);
|
7708 |
}
|
7709 |
-
class
|
7710 |
constructor(t) {
|
7711 |
super(),
|
7712 |
(this.animated = !0),
|
@@ -7730,7 +7942,7 @@
|
|
7730 |
!this._pointsUpdated
|
7731 |
) {
|
7732 |
const s = i.spanGaps ? this._loop : this._fullLoop;
|
7733 |
-
|
7734 |
}
|
7735 |
}
|
7736 |
set points(t) {
|
@@ -7744,7 +7956,7 @@
|
|
7744 |
}
|
7745 |
get segments() {
|
7746 |
return (
|
7747 |
-
this._segments || (this._segments =
|
7748 |
);
|
7749 |
}
|
7750 |
first() {
|
@@ -7762,15 +7974,15 @@
|
|
7762 |
const i = this.options,
|
7763 |
s = t[e],
|
7764 |
n = this.points,
|
7765 |
-
o =
|
7766 |
if (!o.length) return;
|
7767 |
const a = [],
|
7768 |
r = (function (t) {
|
7769 |
return t.stepped
|
7770 |
-
?
|
7771 |
: t.tension || "monotone" === t.cubicInterpolationMode
|
7772 |
-
?
|
7773 |
-
:
|
7774 |
})(i);
|
7775 |
let l, h;
|
7776 |
for (l = 0, h = o.length; l < h; ++l) {
|
@@ -7787,11 +7999,11 @@
|
|
7787 |
return 1 === a.length ? a[0] : a;
|
7788 |
}
|
7789 |
pathSegment(t, e, i) {
|
7790 |
-
return
|
7791 |
}
|
7792 |
path(t, e, i) {
|
7793 |
const s = this.segments,
|
7794 |
-
n =
|
7795 |
let o = this._loop;
|
7796 |
(e = e || 0), (i = i || this.points.length - e);
|
7797 |
for (const a of s) o &= n(t, this, a, { start: e, end: e + i - 1 });
|
@@ -7801,17 +8013,17 @@
|
|
7801 |
const n = this.options || {};
|
7802 |
(this.points || []).length &&
|
7803 |
n.borderWidth &&
|
7804 |
-
(t.save(),
|
7805 |
this.animated && ((this._pointsUpdated = !1), (this._path = void 0));
|
7806 |
}
|
7807 |
}
|
7808 |
-
function
|
7809 |
const n = t.options,
|
7810 |
{ [i]: o } = t.getProps([i], s);
|
7811 |
return Math.abs(e - o) < n.radius + n.hitRadius;
|
7812 |
}
|
7813 |
-
(
|
7814 |
-
(
|
7815 |
borderCapStyle: "butt",
|
7816 |
borderDash: [],
|
7817 |
borderDashOffset: 0,
|
@@ -7824,15 +8036,15 @@
|
|
7824 |
stepped: !1,
|
7825 |
tension: 0,
|
7826 |
}),
|
7827 |
-
(
|
7828 |
backgroundColor: "backgroundColor",
|
7829 |
borderColor: "borderColor",
|
7830 |
}),
|
7831 |
-
(
|
7832 |
_scriptable: !0,
|
7833 |
_indexable: (t) => "borderDash" !== t && "fill" !== t,
|
7834 |
});
|
7835 |
-
class
|
7836 |
constructor(t) {
|
7837 |
super(),
|
7838 |
(this.options = void 0),
|
@@ -7850,10 +8062,10 @@
|
|
7850 |
);
|
7851 |
}
|
7852 |
inXRange(t, e) {
|
7853 |
-
return
|
7854 |
}
|
7855 |
inYRange(t, e) {
|
7856 |
-
return
|
7857 |
}
|
7858 |
getCenterPoint(t) {
|
7859 |
const { x: e, y: i } = this.getProps(["x", "y"], t);
|
@@ -7868,18 +8080,18 @@
|
|
7868 |
const i = this.options;
|
7869 |
this.skip ||
|
7870 |
i.radius < 0.1 ||
|
7871 |
-
!
|
7872 |
((t.strokeStyle = i.borderColor),
|
7873 |
(t.lineWidth = i.borderWidth),
|
7874 |
(t.fillStyle = i.backgroundColor),
|
7875 |
-
|
7876 |
}
|
7877 |
getRange() {
|
7878 |
const t = this.options || {};
|
7879 |
return t.radius + t.hitRadius;
|
7880 |
}
|
7881 |
}
|
7882 |
-
function
|
7883 |
const {
|
7884 |
x: i,
|
7885 |
y: s,
|
@@ -7903,72 +8115,72 @@
|
|
7903 |
{ left: r, top: h, right: l, bottom: c }
|
7904 |
);
|
7905 |
}
|
7906 |
-
function
|
7907 |
-
return t ? 0 :
|
7908 |
}
|
7909 |
-
function
|
7910 |
-
const e =
|
7911 |
i = e.right - e.left,
|
7912 |
s = e.bottom - e.top,
|
7913 |
-
|
7914 |
const s = t.options.borderWidth,
|
7915 |
n = t.borderSkipped,
|
7916 |
-
o =
|
7917 |
return {
|
7918 |
-
t:
|
7919 |
-
r:
|
7920 |
-
b:
|
7921 |
-
l:
|
7922 |
};
|
7923 |
})(t, i / 2, s / 2),
|
7924 |
-
|
7925 |
const { enableBorderRadius: s } = t.getProps(["enableBorderRadius"]),
|
7926 |
-
|
7927 |
-
|
7928 |
-
|
7929 |
-
|
7930 |
-
|
7931 |
return {
|
7932 |
-
topLeft:
|
7933 |
-
topRight:
|
7934 |
-
bottomLeft:
|
7935 |
-
bottomRight:
|
7936 |
};
|
7937 |
})(t, i / 2, s / 2);
|
7938 |
return {
|
7939 |
-
outer: { x: e.left, y: e.top, w: i, h: s, radius:
|
7940 |
inner: {
|
7941 |
-
x: e.left +
|
7942 |
-
y: e.top +
|
7943 |
-
w: i -
|
7944 |
-
h: s -
|
7945 |
radius: {
|
7946 |
-
topLeft: Math.max(0,
|
7947 |
-
topRight: Math.max(0,
|
7948 |
-
bottomLeft: Math.max(0,
|
7949 |
-
bottomRight: Math.max(0,
|
7950 |
},
|
7951 |
},
|
7952 |
};
|
7953 |
}
|
7954 |
-
function
|
7955 |
const n = null === e,
|
7956 |
o = null === i,
|
7957 |
-
a = t && !(n && o) &&
|
7958 |
-
return a && (n ||
|
7959 |
}
|
7960 |
-
function
|
7961 |
t.rect(e.x, e.y, e.w, e.h);
|
7962 |
}
|
7963 |
-
function
|
7964 |
const s = t.x !== i.x ? -e : 0,
|
7965 |
n = t.y !== i.y ? -e : 0,
|
7966 |
o = (t.x + t.w !== i.x + i.w ? e : 0) - s,
|
7967 |
a = (t.y + t.h !== i.y + i.h ? e : 0) - n;
|
7968 |
return { x: t.x + s, y: t.y + n, w: t.w + o, h: t.h + a, radius: t.radius };
|
7969 |
}
|
7970 |
-
(
|
7971 |
-
(
|
7972 |
borderWidth: 1,
|
7973 |
hitRadius: 1,
|
7974 |
hoverBorderWidth: 1,
|
@@ -7977,11 +8189,11 @@
|
|
7977 |
radius: 3,
|
7978 |
rotation: 0,
|
7979 |
}),
|
7980 |
-
(
|
7981 |
backgroundColor: "backgroundColor",
|
7982 |
borderColor: "borderColor",
|
7983 |
});
|
7984 |
-
class
|
7985 |
constructor(t) {
|
7986 |
super(),
|
7987 |
(this.options = void 0),
|
@@ -7997,34 +8209,34 @@
|
|
7997 |
inflateAmount: e,
|
7998 |
options: { borderColor: i, backgroundColor: s },
|
7999 |
} = this,
|
8000 |
-
{ inner: n, outer: o } =
|
8001 |
a =
|
8002 |
(r = o.radius).topLeft || r.topRight || r.bottomLeft || r.bottomRight
|
8003 |
-
?
|
8004 |
-
:
|
8005 |
var r;
|
8006 |
t.save(),
|
8007 |
(o.w === n.w && o.h === n.h) ||
|
8008 |
(t.beginPath(),
|
8009 |
-
a(t,
|
8010 |
t.clip(),
|
8011 |
-
a(t,
|
8012 |
(t.fillStyle = i),
|
8013 |
t.fill("evenodd")),
|
8014 |
t.beginPath(),
|
8015 |
-
a(t,
|
8016 |
(t.fillStyle = s),
|
8017 |
t.fill(),
|
8018 |
t.restore();
|
8019 |
}
|
8020 |
inRange(t, e, i) {
|
8021 |
-
return
|
8022 |
}
|
8023 |
inXRange(t, e) {
|
8024 |
-
return
|
8025 |
}
|
8026 |
inYRange(t, e) {
|
8027 |
-
return
|
8028 |
}
|
8029 |
getCenterPoint(t) {
|
8030 |
const {
|
@@ -8039,26 +8251,26 @@
|
|
8039 |
return "x" === t ? this.width / 2 : this.height / 2;
|
8040 |
}
|
8041 |
}
|
8042 |
-
(
|
8043 |
-
(
|
8044 |
borderSkipped: "start",
|
8045 |
borderWidth: 0,
|
8046 |
borderRadius: 0,
|
8047 |
inflateAmount: "auto",
|
8048 |
pointStyle: void 0,
|
8049 |
}),
|
8050 |
-
(
|
8051 |
backgroundColor: "backgroundColor",
|
8052 |
borderColor: "borderColor",
|
8053 |
});
|
8054 |
-
var
|
8055 |
__proto__: null,
|
8056 |
-
ArcElement:
|
8057 |
-
LineElement:
|
8058 |
-
PointElement:
|
8059 |
-
BarElement:
|
8060 |
});
|
8061 |
-
function
|
8062 |
if (t._decimated) {
|
8063 |
const e = t._data;
|
8064 |
delete t._decimated,
|
@@ -8066,27 +8278,27 @@
|
|
8066 |
Object.defineProperty(t, "data", { value: e });
|
8067 |
}
|
8068 |
}
|
8069 |
-
function
|
8070 |
t.data.datasets.forEach((t) => {
|
8071 |
-
|
8072 |
});
|
8073 |
}
|
8074 |
-
var
|
8075 |
id: "decimation",
|
8076 |
defaults: { algorithm: "min-max", enabled: !1 },
|
8077 |
-
beforeElementsUpdate: (t, e,
|
8078 |
-
if (!
|
8079 |
-
const
|
8080 |
-
t.data.datasets.forEach((e,
|
8081 |
-
const { _data:
|
8082 |
-
|
8083 |
-
|
8084 |
-
if ("y" ===
|
8085 |
-
if (
|
8086 |
-
const
|
8087 |
-
if ("linear" !==
|
8088 |
if (t.options.parsing) return;
|
8089 |
-
let { start:
|
8090 |
const i = e.length;
|
8091 |
let s,
|
8092 |
n = 0;
|
@@ -8098,16 +8310,16 @@
|
|
8098 |
maxDefined: h,
|
8099 |
} = o.getUserBounds();
|
8100 |
return (
|
8101 |
-
l && (n =
|
8102 |
-
(s = h ?
|
8103 |
{ start: n, count: s }
|
8104 |
);
|
8105 |
-
})(
|
8106 |
-
if (
|
8107 |
-
let
|
8108 |
switch (
|
8109 |
-
(
|
8110 |
-
((e._data =
|
8111 |
delete e.data,
|
8112 |
Object.defineProperty(e, "data", {
|
8113 |
configurable: !0,
|
@@ -8119,10 +8331,10 @@
|
|
8119 |
this._data = t;
|
8120 |
},
|
8121 |
})),
|
8122 |
-
|
8123 |
) {
|
8124 |
case "lttb":
|
8125 |
-
|
8126 |
const o = n.samples || s;
|
8127 |
if (o >= i) return t.slice(e, e + i);
|
8128 |
const a = [],
|
@@ -8141,13 +8353,13 @@
|
|
8141 |
o = 0;
|
8142 |
const h = Math.floor((c + 1) * r) + 1 + e,
|
8143 |
m = Math.min(Math.floor((c + 2) * r) + 1, i) + e,
|
8144 |
-
|
8145 |
for (s = h; s < m; s++) (n += t[s].x), (o += t[s].y);
|
8146 |
-
(n /=
|
8147 |
-
const
|
8148 |
_ = Math.min(Math.floor((c + 1) * r) + 1, i) + e,
|
8149 |
{ x: y, y: v } = t[p];
|
8150 |
-
for (u = f = -1, s =
|
8151 |
(f =
|
8152 |
0.5 *
|
8153 |
Math.abs((y - n) * (t[s].y - v) - (y - t[s].x) * (o - v))),
|
@@ -8155,12 +8367,11 @@
|
|
8155 |
(a[l++] = d), (p = g);
|
8156 |
}
|
8157 |
return (a[l++] = t[h]), a;
|
8158 |
-
})(
|
8159 |
break;
|
8160 |
case "min-max":
|
8161 |
-
|
8162 |
-
let
|
8163 |
-
o,
|
8164 |
a,
|
8165 |
r,
|
8166 |
l,
|
@@ -8169,153 +8380,145 @@
|
|
8169 |
d,
|
8170 |
u,
|
8171 |
f,
|
8172 |
-
g
|
8173 |
-
p = 0
|
8174 |
-
|
8175 |
-
|
8176 |
-
|
8177 |
-
_ = t[
|
8178 |
-
|
8179 |
-
|
8180 |
-
|
8181 |
-
|
8182 |
-
|
8183 |
-
|
|
|
8184 |
else {
|
8185 |
-
const
|
8186 |
-
if (
|
8187 |
-
const e = Math.min(
|
8188 |
-
|
8189 |
-
e !==
|
8190 |
-
|
8191 |
}
|
8192 |
-
|
8193 |
-
|
8194 |
-
(
|
8195 |
-
(
|
8196 |
-
(
|
8197 |
-
(
|
8198 |
}
|
8199 |
}
|
8200 |
-
return
|
8201 |
-
})(
|
8202 |
break;
|
8203 |
default:
|
8204 |
throw new Error(
|
8205 |
-
`Unsupported decimation algorithm '${
|
8206 |
);
|
8207 |
}
|
8208 |
-
e._decimated =
|
8209 |
});
|
8210 |
},
|
8211 |
destroy(t) {
|
8212 |
-
|
8213 |
},
|
8214 |
};
|
8215 |
-
function
|
8216 |
-
|
8217 |
-
|
8218 |
-
|
8219 |
-
|
8220 |
-
|
8221 |
-
|
8222 |
-
|
8223 |
-
);
|
8224 |
-
})(t);
|
8225 |
-
if (U(s)) return !isNaN(s.value) && s;
|
8226 |
-
let n = parseFloat(s);
|
8227 |
-
return X(n) && Math.floor(n) === n
|
8228 |
-
? (("-" !== s[0] && "+" !== s[0]) || (n = e + n),
|
8229 |
-
!(n === e || n < 0 || n >= i) && n)
|
8230 |
-
: ["origin", "start", "end", "stack", "shape"].indexOf(s) >= 0 && s;
|
8231 |
}
|
8232 |
-
|
8233 |
-
|
8234 |
-
|
8235 |
-
|
8236 |
-
pathSegment(t, e, i) {
|
8237 |
-
const { x: s, y: n, radius: o } = this;
|
8238 |
-
return (
|
8239 |
-
(e = e || { start: 0, end: yt }),
|
8240 |
-
t.arc(s, n, o, e.end, e.start, !0),
|
8241 |
-
!i.bounds
|
8242 |
-
);
|
8243 |
-
}
|
8244 |
-
interpolate(t) {
|
8245 |
-
const { x: e, y: i, radius: s } = this,
|
8246 |
-
n = t.angle;
|
8247 |
-
return { x: e + Math.cos(n) * s, y: i + Math.sin(n) * s, angle: n };
|
8248 |
}
|
|
|
8249 |
}
|
8250 |
-
function
|
8251 |
-
return (t
|
8252 |
-
|
8253 |
-
|
8254 |
-
|
8255 |
-
|
8256 |
-
|
8257 |
-
|
8258 |
-
|
8259 |
-
|
8260 |
-
|
8261 |
-
|
8262 |
-
|
8263 |
-
? a
|
8264 |
-
: "end" === i
|
8265 |
-
? r
|
8266 |
-
: U(i)
|
8267 |
-
? i.value
|
8268 |
-
: e.getBaseValue()),
|
8269 |
-
s.grid.circular)
|
8270 |
-
)
|
8271 |
return (
|
8272 |
-
(
|
8273 |
-
|
8274 |
-
|
8275 |
-
|
8276 |
-
|
8277 |
-
|
|
|
|
|
|
|
|
|
8278 |
);
|
8279 |
-
|
8280 |
-
|
8281 |
-
})
|
8282 |
-
|
8283 |
-
|
8284 |
-
let s,
|
8285 |
-
n = null;
|
8286 |
-
return (
|
8287 |
-
"start" === i
|
8288 |
-
? (n = e.bottom)
|
8289 |
-
: "end" === i
|
8290 |
-
? (n = e.top)
|
8291 |
-
: U(i)
|
8292 |
-
? (n = e.getPixelForValue(i.value))
|
8293 |
-
: e.getBasePixel && (n = e.getBasePixel()),
|
8294 |
-
X(n)
|
8295 |
-
? ((s = e.isHorizontal()), { x: s ? n : null, y: s ? null : n })
|
8296 |
-
: null
|
8297 |
-
);
|
8298 |
-
})(t);
|
8299 |
}
|
8300 |
-
function
|
8301 |
-
|
8302 |
-
|
8303 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8304 |
}
|
8305 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8306 |
}
|
8307 |
-
function
|
8308 |
const s = [];
|
8309 |
for (let n = 0; n < i.length; n++) {
|
8310 |
const o = i[n],
|
8311 |
-
{ first: a, last: r, point: l } =
|
8312 |
if (!(!l || (a && r)))
|
8313 |
if (a) s.unshift(l);
|
8314 |
else if ((t.push(l), !r)) break;
|
8315 |
}
|
8316 |
t.push(...s);
|
8317 |
}
|
8318 |
-
function
|
8319 |
const s = t.interpolate(e, i);
|
8320 |
if (!s) return {};
|
8321 |
const n = s[i],
|
@@ -8327,16 +8530,34 @@
|
|
8327 |
const e = o[t],
|
8328 |
s = a[e.start][i],
|
8329 |
h = a[e.end][i];
|
8330 |
-
if (
|
8331 |
(r = n === s), (l = n === h);
|
8332 |
break;
|
8333 |
}
|
8334 |
}
|
8335 |
return { first: r, last: l, point: s };
|
8336 |
}
|
8337 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8338 |
const { chart: e, fill: i, line: s } = t;
|
8339 |
-
if (
|
8340 |
return (function (t, e) {
|
8341 |
const i = t.getDatasetMeta(e);
|
8342 |
return i && t.isDatasetVisible(e) ? i.dataset : null;
|
@@ -8357,59 +8578,108 @@
|
|
8357 |
}
|
8358 |
return i;
|
8359 |
})(e, i);
|
8360 |
-
r.push(
|
8361 |
for (let t = 0; t < o.length; t++) {
|
8362 |
const e = o[t];
|
8363 |
-
for (let t = e.start; t <= e.end; t++)
|
8364 |
}
|
8365 |
-
return new
|
8366 |
})(t);
|
8367 |
if ("shape" === i) return !0;
|
8368 |
-
const
|
8369 |
-
|
8370 |
-
|
8371 |
-
|
8372 |
-
|
8373 |
-
|
8374 |
-
|
8375 |
-
|
8376 |
-
|
8377 |
-
|
8378 |
-
|
8379 |
-
|
8380 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8381 |
return (
|
8382 |
-
|
8383 |
-
|
8384 |
-
|
8385 |
-
|
8386 |
-
|
8387 |
-
|
8388 |
-
|
8389 |
-
|
8390 |
-
}),
|
8391 |
-
o
|
8392 |
);
|
8393 |
-
})(
|
8394 |
-
|
8395 |
-
|
8396 |
-
|
8397 |
-
|
|
|
|
|
|
|
|
|
8398 |
}
|
8399 |
-
function
|
8400 |
-
|
8401 |
-
|
8402 |
-
|
8403 |
-
|
8404 |
-
|
8405 |
-
|
8406 |
-
|
8407 |
-
|
8408 |
-
|
8409 |
-
|
8410 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8411 |
}
|
8412 |
-
function
|
8413 |
const { segments: s, points: n } = e;
|
8414 |
let o = !0,
|
8415 |
a = !1;
|
@@ -8417,7 +8687,7 @@
|
|
8417 |
for (const r of s) {
|
8418 |
const { start: s, end: l } = r,
|
8419 |
h = n[s],
|
8420 |
-
c = n[
|
8421 |
o
|
8422 |
? (t.moveTo(h.x, h.y), (o = !1))
|
8423 |
: (t.lineTo(h.x, i), t.lineTo(h.x, h.y)),
|
@@ -8426,28 +8696,7 @@
|
|
8426 |
}
|
8427 |
t.lineTo(e.first().x, i), t.closePath(), t.clip();
|
8428 |
}
|
8429 |
-
function
|
8430 |
-
if (s) return;
|
8431 |
-
let n = e[t],
|
8432 |
-
o = i[t];
|
8433 |
-
return (
|
8434 |
-
"angle" === t && ((n = Nt(n)), (o = Nt(o))),
|
8435 |
-
{ property: t, start: n, end: o }
|
8436 |
-
);
|
8437 |
-
}
|
8438 |
-
function yo(t, e, i, s) {
|
8439 |
-
return t && e ? s(t[i], e[i]) : t ? t[i] : e ? e[i] : 0;
|
8440 |
-
}
|
8441 |
-
function vo(t, e, i) {
|
8442 |
-
const { top: s, bottom: n } = e.chart.chartArea,
|
8443 |
-
{ property: o, start: a, end: r } = i || {};
|
8444 |
-
"x" === o && (t.beginPath(), t.rect(a, s, r - a, n - s), t.clip());
|
8445 |
-
}
|
8446 |
-
function wo(t, e, i, s) {
|
8447 |
-
const n = e.interpolate(i, s);
|
8448 |
-
n && t.lineTo(n.x, n.y);
|
8449 |
-
}
|
8450 |
-
function Mo(t, e) {
|
8451 |
const { line: i, target: s, property: n, color: o, scale: a } = e,
|
8452 |
r = (function (t, e, i) {
|
8453 |
const s = t.segments,
|
@@ -8456,22 +8705,22 @@
|
|
8456 |
a = [];
|
8457 |
for (const t of s) {
|
8458 |
let { start: s, end: r } = t;
|
8459 |
-
r =
|
8460 |
-
const l =
|
8461 |
if (!e.segments) {
|
8462 |
a.push({ source: t, target: l, start: n[s], end: n[r] });
|
8463 |
continue;
|
8464 |
}
|
8465 |
-
const h =
|
8466 |
for (const e of h) {
|
8467 |
-
const s =
|
8468 |
-
r =
|
8469 |
for (const t of r)
|
8470 |
a.push({
|
8471 |
source: t,
|
8472 |
target: e,
|
8473 |
-
start: { [i]:
|
8474 |
-
end: { [i]:
|
8475 |
});
|
8476 |
}
|
8477 |
}
|
@@ -8480,52 +8729,27 @@
|
|
8480 |
for (const { source: e, target: l, start: h, end: c } of r) {
|
8481 |
const { style: { backgroundColor: r = o } = {} } = e,
|
8482 |
d = !0 !== s;
|
8483 |
-
t.save(), (t.fillStyle = r),
|
8484 |
const u = !!i.pathSegment(t, e);
|
8485 |
let f;
|
8486 |
if (d) {
|
8487 |
-
u ? t.closePath() :
|
8488 |
const e = !!s.pathSegment(t, l, { move: u, reverse: !0 });
|
8489 |
-
(f = u && e), f ||
|
8490 |
}
|
8491 |
t.closePath(), t.fill(f ? "evenodd" : "nonzero"), t.restore();
|
8492 |
}
|
8493 |
}
|
8494 |
-
function
|
8495 |
-
const s =
|
8496 |
-
{
|
8497 |
-
|
8498 |
-
|
8499 |
-
|
8500 |
-
|
8501 |
-
|
8502 |
-
n.points.length &&
|
8503 |
-
(Qt(t, i),
|
8504 |
-
(function (t, e) {
|
8505 |
-
const { line: i, target: s, above: n, below: o, area: a, scale: r } = e,
|
8506 |
-
l = i._loop ? "angle" : e.axis;
|
8507 |
-
t.save(),
|
8508 |
-
"x" === l &&
|
8509 |
-
o !== n &&
|
8510 |
-
(bo(t, s, a.top),
|
8511 |
-
Mo(t, { line: i, target: s, color: n, scale: r, property: l }),
|
8512 |
-
t.restore(),
|
8513 |
-
t.save(),
|
8514 |
-
bo(t, s, a.bottom)),
|
8515 |
-
Mo(t, { line: i, target: s, color: o, scale: r, property: l }),
|
8516 |
-
t.restore();
|
8517 |
-
})(t, {
|
8518 |
-
line: n,
|
8519 |
-
target: s,
|
8520 |
-
above: c,
|
8521 |
-
below: d,
|
8522 |
-
area: i,
|
8523 |
-
scale: o,
|
8524 |
-
axis: a,
|
8525 |
-
}),
|
8526 |
-
te(t));
|
8527 |
}
|
8528 |
-
var
|
8529 |
id: "filler",
|
8530 |
afterDatasetsUpdate(t, e, i) {
|
8531 |
const s = (t.data.datasets || []).length,
|
@@ -8537,11 +8761,11 @@
|
|
8537 |
(l = null),
|
8538 |
r &&
|
8539 |
r.options &&
|
8540 |
-
r instanceof
|
8541 |
(l = {
|
8542 |
visible: t.isDatasetVisible(a),
|
8543 |
index: a,
|
8544 |
-
fill:
|
8545 |
chart: t,
|
8546 |
axis: o.controller.options.indexAxis,
|
8547 |
scale: o.vScale,
|
@@ -8550,7 +8774,7 @@
|
|
8550 |
(o.$filler = l),
|
8551 |
n.push(l);
|
8552 |
for (a = 0; a < s; ++a)
|
8553 |
-
(l = n[a]), l && !1 !== l.fill && (l.fill =
|
8554 |
},
|
8555 |
beforeDraw(t, e, i) {
|
8556 |
const s = "beforeDraw" === i.drawTime,
|
@@ -8558,7 +8782,9 @@
|
|
8558 |
o = t.chartArea;
|
8559 |
for (let e = n.length - 1; e >= 0; --e) {
|
8560 |
const i = n[e].$filler;
|
8561 |
-
i &&
|
|
|
|
|
8562 |
}
|
8563 |
},
|
8564 |
beforeDatasetsDraw(t, e, i) {
|
@@ -8566,26 +8792,24 @@
|
|
8566 |
const s = t.getSortedVisibleDatasetMetas();
|
8567 |
for (let e = s.length - 1; e >= 0; --e) {
|
8568 |
const i = s[e].$filler;
|
8569 |
-
i &&
|
8570 |
}
|
8571 |
},
|
8572 |
beforeDatasetDraw(t, e, i) {
|
8573 |
const s = e.meta.$filler;
|
8574 |
-
s &&
|
8575 |
-
!1 !== s.fill &&
|
8576 |
-
"beforeDatasetDraw" === i.drawTime &&
|
8577 |
-
ko(t.ctx, s, t.chartArea);
|
8578 |
},
|
8579 |
defaults: { propagate: !0, drawTime: "beforeDatasetDraw" },
|
8580 |
};
|
8581 |
-
const
|
8582 |
let { boxHeight: i = e, boxWidth: s = e } = t;
|
8583 |
return (
|
8584 |
-
t.usePointStyle &&
|
|
|
8585 |
{ boxWidth: s, boxHeight: i, itemHeight: Math.max(e, i) }
|
8586 |
);
|
8587 |
};
|
8588 |
-
class
|
8589 |
constructor(t) {
|
8590 |
super(),
|
8591 |
(this._added = !1),
|
@@ -8630,7 +8854,7 @@
|
|
8630 |
}
|
8631 |
buildLabels() {
|
8632 |
const t = this.options.labels || {};
|
8633 |
-
let e =
|
8634 |
t.filter && (e = e.filter((e) => t.filter(e, this.chart.data))),
|
8635 |
t.sort && (e = e.sort((e, i) => t.sort(e, i, this.chart.data))),
|
8636 |
this.options.reverse && e.reverse(),
|
@@ -8640,10 +8864,10 @@
|
|
8640 |
const { options: t, ctx: e } = this;
|
8641 |
if (!t.display) return void (this.width = this.height = 0);
|
8642 |
const i = t.labels,
|
8643 |
-
s =
|
8644 |
n = s.size,
|
8645 |
o = this._computeTitleHeight(),
|
8646 |
-
{ boxWidth: a, itemHeight: r } =
|
8647 |
let l, h;
|
8648 |
(e.font = s.string),
|
8649 |
this.isHorizontal()
|
@@ -8721,35 +8945,35 @@
|
|
8721 |
options: {
|
8722 |
align: i,
|
8723 |
labels: { padding: s },
|
8724 |
-
rtl:
|
8725 |
},
|
8726 |
} = this,
|
8727 |
-
|
8728 |
if (this.isHorizontal()) {
|
8729 |
-
let
|
8730 |
-
|
8731 |
-
for (const
|
8732 |
-
|
8733 |
-
((
|
8734 |
-
(
|
8735 |
-
(
|
8736 |
-
(
|
8737 |
-
(
|
8738 |
} else {
|
8739 |
-
let
|
8740 |
-
|
8741 |
-
for (const
|
8742 |
-
|
8743 |
-
((
|
8744 |
-
(
|
8745 |
i,
|
8746 |
this.top + t + s,
|
8747 |
-
this.bottom - this.columnSizes[
|
8748 |
))),
|
8749 |
-
(
|
8750 |
-
(
|
8751 |
-
(
|
8752 |
-
(
|
8753 |
}
|
8754 |
}
|
8755 |
isHorizontal() {
|
@@ -8760,155 +8984,155 @@
|
|
8760 |
draw() {
|
8761 |
if (this.options.display) {
|
8762 |
const t = this.ctx;
|
8763 |
-
|
8764 |
}
|
8765 |
}
|
8766 |
_draw() {
|
8767 |
const { options: t, columnSizes: e, lineWidths: i, ctx: s } = this,
|
8768 |
-
{ align:
|
8769 |
-
|
8770 |
-
|
8771 |
-
|
8772 |
-
{ color:
|
8773 |
-
|
8774 |
-
|
8775 |
-
let
|
8776 |
this.drawTitle(),
|
8777 |
-
(s.textAlign =
|
8778 |
(s.textBaseline = "middle"),
|
8779 |
(s.lineWidth = 0.5),
|
8780 |
-
(s.font =
|
8781 |
-
const { boxWidth:
|
8782 |
-
|
8783 |
-
|
8784 |
-
(
|
8785 |
? {
|
8786 |
-
x: n
|
8787 |
-
y: this.top +
|
8788 |
line: 0,
|
8789 |
}
|
8790 |
: {
|
8791 |
-
x: this.left +
|
8792 |
-
y: n
|
8793 |
line: 0,
|
8794 |
}),
|
8795 |
-
|
8796 |
-
const
|
8797 |
-
this.legendItems.forEach((
|
8798 |
-
(s.strokeStyle =
|
8799 |
-
const
|
8800 |
-
|
8801 |
-
|
8802 |
-
let
|
8803 |
-
|
8804 |
-
|
8805 |
-
|
8806 |
-
?
|
8807 |
-
|
8808 |
-
((
|
8809 |
-
|
8810 |
-
(
|
8811 |
-
:
|
8812 |
-
|
8813 |
-
((
|
8814 |
-
|
8815 |
-
(
|
8816 |
-
n
|
8817 |
!(function (t, e, i) {
|
8818 |
-
if (isNaN(
|
8819 |
s.save();
|
8820 |
-
const n =
|
8821 |
if (
|
8822 |
-
((s.fillStyle =
|
8823 |
-
(s.lineCap =
|
8824 |
-
(s.lineDashOffset =
|
8825 |
-
(s.lineJoin =
|
8826 |
(s.lineWidth = n),
|
8827 |
-
(s.strokeStyle =
|
8828 |
-
s.setLineDash(
|
8829 |
-
|
8830 |
) {
|
8831 |
-
const
|
8832 |
radius: (m * Math.SQRT2) / 2,
|
8833 |
pointStyle: i.pointStyle,
|
8834 |
rotation: i.rotation,
|
8835 |
borderWidth: n,
|
8836 |
},
|
8837 |
-
|
8838 |
-
|
8839 |
} else {
|
8840 |
-
const o = e + Math.max((
|
8841 |
-
a =
|
8842 |
-
r =
|
8843 |
s.beginPath(),
|
8844 |
Object.values(r).some((t) => 0 !== t)
|
8845 |
-
?
|
8846 |
-
: s.rect(a, o,
|
8847 |
s.fill(),
|
8848 |
0 !== n && s.stroke();
|
8849 |
}
|
8850 |
s.restore();
|
8851 |
-
})(
|
8852 |
-
(
|
8853 |
(function (t, e, i) {
|
8854 |
-
|
8855 |
strikethrough: i.hidden,
|
8856 |
-
textAlign:
|
8857 |
});
|
8858 |
-
})(
|
8859 |
-
|
8860 |
}),
|
8861 |
-
|
8862 |
}
|
8863 |
drawTitle() {
|
8864 |
const t = this.options,
|
8865 |
e = t.title,
|
8866 |
-
i =
|
8867 |
-
|
8868 |
if (!e.display) return;
|
8869 |
-
const
|
8870 |
-
|
8871 |
-
|
8872 |
-
|
8873 |
-
|
8874 |
-
let
|
8875 |
-
|
8876 |
-
|
8877 |
if (this.isHorizontal())
|
8878 |
-
(
|
8879 |
-
(
|
8880 |
-
(
|
8881 |
else {
|
8882 |
const e = this.columnSizes.reduce((t, e) => Math.max(t, e.height), 0);
|
8883 |
-
|
8884 |
-
|
8885 |
-
|
8886 |
t.align,
|
8887 |
this.top,
|
8888 |
this.bottom - e - t.labels.padding - this._computeTitleHeight()
|
8889 |
);
|
8890 |
}
|
8891 |
-
const
|
8892 |
-
(
|
8893 |
-
(
|
8894 |
-
(
|
8895 |
-
(
|
8896 |
-
(
|
8897 |
-
|
8898 |
}
|
8899 |
_computeTitleHeight() {
|
8900 |
const t = this.options.title,
|
8901 |
-
e =
|
8902 |
-
i =
|
8903 |
return t.display ? e.lineHeight + i.height : 0;
|
8904 |
}
|
8905 |
_getLegendItemAt(t, e) {
|
8906 |
let i, s, n;
|
8907 |
-
if (
|
8908 |
for (n = this.legendHitBoxes, i = 0; i < n.length; ++i)
|
8909 |
if (
|
8910 |
((s = n[i]),
|
8911 |
-
|
8912 |
)
|
8913 |
return this.legendItems[i];
|
8914 |
return null;
|
@@ -8917,14 +9141,18 @@
|
|
8917 |
const e = this.options;
|
8918 |
if (
|
8919 |
!(function (t, e) {
|
8920 |
-
if (
|
|
|
|
|
|
|
|
|
8921 |
if (e.onClick && ("click" === t || "mouseup" === t)) return !0;
|
8922 |
return !1;
|
8923 |
})(t.type, e)
|
8924 |
)
|
8925 |
return;
|
8926 |
const i = this._getLegendItemAt(t.x, t.y);
|
8927 |
-
if ("mousemove" === t.type) {
|
8928 |
const o = this._hoveredItem,
|
8929 |
a =
|
8930 |
((n = i),
|
@@ -8932,26 +9160,26 @@
|
|
8932 |
null !== n &&
|
8933 |
s.datasetIndex === n.datasetIndex &&
|
8934 |
s.index === n.index);
|
8935 |
-
o && !a &&
|
8936 |
(this._hoveredItem = i),
|
8937 |
-
i && !a &&
|
8938 |
-
} else i &&
|
8939 |
var s, n;
|
8940 |
}
|
8941 |
}
|
8942 |
-
var
|
8943 |
id: "legend",
|
8944 |
-
_element:
|
8945 |
start(t, e, i) {
|
8946 |
-
const s = (t.legend = new
|
8947 |
-
|
8948 |
},
|
8949 |
stop(t) {
|
8950 |
-
|
8951 |
},
|
8952 |
beforeUpdate(t, e, i) {
|
8953 |
const s = t.legend;
|
8954 |
-
|
8955 |
},
|
8956 |
afterUpdate(t) {
|
8957 |
const e = t.legend;
|
@@ -8992,7 +9220,7 @@
|
|
8992 |
} = t.legend.options;
|
8993 |
return t._getSortedDatasetMetas().map((t) => {
|
8994 |
const a = t.controller.getStyle(i ? 0 : void 0),
|
8995 |
-
r =
|
8996 |
return {
|
8997 |
text: e[t.index].label,
|
8998 |
fillStyle: a.backgroundColor,
|
@@ -9027,7 +9255,7 @@
|
|
9027 |
},
|
9028 |
},
|
9029 |
};
|
9030 |
-
class
|
9031 |
constructor(t) {
|
9032 |
super(),
|
9033 |
(this.chart = t.chart),
|
@@ -9049,65 +9277,65 @@
|
|
9049 |
if (((this.left = 0), (this.top = 0), !i.display))
|
9050 |
return void (this.width = this.height = this.right = this.bottom = 0);
|
9051 |
(this.width = this.right = t), (this.height = this.bottom = e);
|
9052 |
-
const
|
9053 |
-
this._padding =
|
9054 |
-
const
|
9055 |
-
this.isHorizontal() ? (this.height =
|
9056 |
}
|
9057 |
isHorizontal() {
|
9058 |
const t = this.options.position;
|
9059 |
return "top" === t || "bottom" === t;
|
9060 |
}
|
9061 |
_drawArgs(t) {
|
9062 |
-
const { top: e, left: i, bottom: s, right:
|
9063 |
-
|
9064 |
-
let
|
|
|
9065 |
h,
|
9066 |
-
c
|
9067 |
-
d = 0;
|
9068 |
return (
|
9069 |
this.isHorizontal()
|
9070 |
-
? ((
|
9071 |
-
: ("left" ===
|
9072 |
-
? ((
|
9073 |
-
: ((
|
9074 |
-
(
|
9075 |
-
{ titleX:
|
9076 |
);
|
9077 |
}
|
9078 |
draw() {
|
9079 |
const t = this.ctx,
|
9080 |
e = this.options;
|
9081 |
if (!e.display) return;
|
9082 |
-
const i =
|
9083 |
-
|
9084 |
-
{ titleX:
|
9085 |
-
|
9086 |
color: e.color,
|
9087 |
-
maxWidth:
|
9088 |
-
rotation:
|
9089 |
-
textAlign:
|
9090 |
textBaseline: "middle",
|
9091 |
-
translation: [
|
9092 |
});
|
9093 |
}
|
9094 |
}
|
9095 |
-
var
|
9096 |
id: "title",
|
9097 |
-
_element:
|
9098 |
start(t, e, i) {
|
9099 |
!(function (t, e) {
|
9100 |
-
const i = new
|
9101 |
-
|
9102 |
})(t, i);
|
9103 |
},
|
9104 |
stop(t) {
|
9105 |
const e = t.titleBlock;
|
9106 |
-
|
9107 |
},
|
9108 |
beforeUpdate(t, e, i) {
|
9109 |
const s = t.titleBlock;
|
9110 |
-
|
9111 |
},
|
9112 |
defaults: {
|
9113 |
align: "center",
|
@@ -9122,19 +9350,19 @@
|
|
9122 |
defaultRoutes: { color: "color" },
|
9123 |
descriptors: { _scriptable: !0, _indexable: !1 },
|
9124 |
};
|
9125 |
-
const
|
9126 |
-
var
|
9127 |
id: "subtitle",
|
9128 |
start(t, e, i) {
|
9129 |
-
const s = new
|
9130 |
-
|
9131 |
},
|
9132 |
stop(t) {
|
9133 |
-
|
9134 |
},
|
9135 |
beforeUpdate(t, e, i) {
|
9136 |
-
const s =
|
9137 |
-
|
9138 |
},
|
9139 |
defaults: {
|
9140 |
align: "center",
|
@@ -9149,7 +9377,7 @@
|
|
9149 |
defaultRoutes: { color: "color" },
|
9150 |
descriptors: { _scriptable: !0, _indexable: !1 },
|
9151 |
};
|
9152 |
-
const
|
9153 |
average(t) {
|
9154 |
if (!t.length) return !1;
|
9155 |
let e,
|
@@ -9177,7 +9405,7 @@
|
|
9177 |
for (i = 0, s = t.length; i < s; ++i) {
|
9178 |
const s = t[i].element;
|
9179 |
if (s && s.hasValue()) {
|
9180 |
-
const t =
|
9181 |
t < r && ((r = t), (n = s));
|
9182 |
}
|
9183 |
}
|
@@ -9188,15 +9416,15 @@
|
|
9188 |
return { x: o, y: a };
|
9189 |
},
|
9190 |
};
|
9191 |
-
function
|
9192 |
-
return e && (
|
9193 |
}
|
9194 |
-
function
|
9195 |
return ("string" == typeof t || t instanceof String) && t.indexOf("\n") > -1
|
9196 |
? t.split("\n")
|
9197 |
: t;
|
9198 |
}
|
9199 |
-
function
|
9200 |
const { element: i, datasetIndex: s, index: n } = e,
|
9201 |
o = t.getDatasetMeta(s).controller,
|
9202 |
{ label: a, value: r } = o.getLabelAndValue(n);
|
@@ -9212,60 +9440,60 @@
|
|
9212 |
element: i,
|
9213 |
};
|
9214 |
}
|
9215 |
-
function
|
9216 |
const i = t.chart.ctx,
|
9217 |
{ body: s, footer: n, title: o } = t,
|
9218 |
{ boxWidth: a, boxHeight: r } = e,
|
9219 |
-
l =
|
9220 |
-
h =
|
9221 |
-
c =
|
9222 |
-
|
9223 |
-
|
9224 |
-
|
9225 |
-
|
9226 |
-
let
|
9227 |
-
|
9228 |
x = s.reduce(
|
9229 |
(t, e) => t + e.before.length + e.lines.length + e.after.length,
|
9230 |
0
|
9231 |
);
|
9232 |
if (
|
9233 |
((x += t.beforeBody.length + t.afterBody.length),
|
9234 |
-
|
9235 |
-
(
|
9236 |
-
|
9237 |
x)
|
9238 |
) {
|
9239 |
-
|
9240 |
-
|
9241 |
-
(x -
|
9242 |
(x - 1) * e.bodySpacing;
|
9243 |
}
|
9244 |
-
|
9245 |
-
(
|
9246 |
-
let
|
9247 |
-
const
|
9248 |
-
|
9249 |
};
|
9250 |
return (
|
9251 |
i.save(),
|
9252 |
(i.font = h.string),
|
9253 |
-
|
9254 |
(i.font = l.string),
|
9255 |
-
|
9256 |
-
(
|
9257 |
-
|
9258 |
-
|
9259 |
}),
|
9260 |
-
(
|
9261 |
(i.font = c.string),
|
9262 |
-
|
9263 |
i.restore(),
|
9264 |
-
(
|
9265 |
-
{ width:
|
9266 |
);
|
9267 |
}
|
9268 |
-
function
|
9269 |
const { x: n, width: o } = i,
|
9270 |
{
|
9271 |
width: a,
|
@@ -9290,7 +9518,7 @@
|
|
9290 |
h
|
9291 |
);
|
9292 |
}
|
9293 |
-
function
|
9294 |
const s =
|
9295 |
i.yAlign ||
|
9296 |
e.yAlign ||
|
@@ -9298,13 +9526,13 @@
|
|
9298 |
const { y: i, height: s } = e;
|
9299 |
return i < s / 2 ? "top" : i > t.height - s / 2 ? "bottom" : "center";
|
9300 |
})(t, i);
|
9301 |
-
return { xAlign: i.xAlign || e.xAlign ||
|
9302 |
}
|
9303 |
-
function
|
9304 |
const { caretSize: n, caretPadding: o, cornerRadius: a } = t,
|
9305 |
{ xAlign: r, yAlign: l } = i,
|
9306 |
h = n + o,
|
9307 |
-
{ topLeft: c, topRight: d, bottomLeft: u, bottomRight: f } =
|
9308 |
let g = (function (t, e) {
|
9309 |
let { x: i, width: s } = t;
|
9310 |
return "right" === e ? (i -= s) : "center" === e && (i -= s / 2), i;
|
@@ -9321,26 +9549,26 @@
|
|
9321 |
: "left" === r
|
9322 |
? (g -= Math.max(c, u) + n)
|
9323 |
: "right" === r && (g += Math.max(d, f) + n),
|
9324 |
-
{ x:
|
9325 |
);
|
9326 |
}
|
9327 |
-
function
|
9328 |
-
const s =
|
9329 |
return "center" === e
|
9330 |
? t.x + t.width / 2
|
9331 |
: "right" === e
|
9332 |
? t.x + t.width - s.right
|
9333 |
: t.x + s.left;
|
9334 |
}
|
9335 |
-
function
|
9336 |
-
return
|
9337 |
}
|
9338 |
-
function
|
9339 |
const i =
|
9340 |
e && e.dataset && e.dataset.tooltip && e.dataset.tooltip.callbacks;
|
9341 |
return i ? t.override(i) : t;
|
9342 |
}
|
9343 |
-
class
|
9344 |
constructor(t) {
|
9345 |
super(),
|
9346 |
(this.opacity = 0),
|
@@ -9383,7 +9611,7 @@
|
|
9383 |
const e = this.chart,
|
9384 |
i = this.options.setContext(this.getContext()),
|
9385 |
s = i.enabled && e.options.animation && i.animations,
|
9386 |
-
n = new
|
9387 |
return s._cacheable && (this._cachedAnimations = Object.freeze(n)), n;
|
9388 |
}
|
9389 |
getContext() {
|
@@ -9393,7 +9621,7 @@
|
|
9393 |
((t = this.chart.getContext()),
|
9394 |
(e = this),
|
9395 |
(i = this._tooltipItems),
|
9396 |
-
|
9397 |
);
|
9398 |
var t, e, i;
|
9399 |
}
|
@@ -9403,28 +9631,28 @@
|
|
9403 |
n = i.title.apply(this, [t]),
|
9404 |
o = i.afterTitle.apply(this, [t]);
|
9405 |
let a = [];
|
9406 |
-
return (a =
|
9407 |
}
|
9408 |
getBeforeBody(t, e) {
|
9409 |
-
return
|
9410 |
}
|
9411 |
getBody(t, e) {
|
9412 |
const { callbacks: i } = e,
|
9413 |
s = [];
|
9414 |
return (
|
9415 |
-
|
9416 |
const e = { before: [], lines: [], after: [] },
|
9417 |
-
n =
|
9418 |
-
|
9419 |
-
|
9420 |
-
|
9421 |
s.push(e);
|
9422 |
}),
|
9423 |
s
|
9424 |
);
|
9425 |
}
|
9426 |
getAfterBody(t, e) {
|
9427 |
-
return
|
9428 |
}
|
9429 |
getFooter(t, e) {
|
9430 |
const { callbacks: i } = e,
|
@@ -9432,7 +9660,7 @@
|
|
9432 |
n = i.footer.apply(this, [t]),
|
9433 |
o = i.afterFooter.apply(this, [t]);
|
9434 |
let a = [];
|
9435 |
-
return (a =
|
9436 |
}
|
9437 |
_createItems(t) {
|
9438 |
const e = this._active,
|
@@ -9443,12 +9671,12 @@
|
|
9443 |
let a,
|
9444 |
r,
|
9445 |
l = [];
|
9446 |
-
for (a = 0, r = e.length; a < r; ++a) l.push(
|
9447 |
return (
|
9448 |
t.filter && (l = l.filter((e, s, n) => t.filter(e, s, n, i))),
|
9449 |
t.itemSort && (l = l.sort((e, s) => t.itemSort(e, s, i))),
|
9450 |
-
|
9451 |
-
const i =
|
9452 |
s.push(i.labelColor.call(this, e)),
|
9453 |
n.push(i.labelPointStyle.call(this, e)),
|
9454 |
o.push(i.labelTextColor.call(this, e));
|
@@ -9466,17 +9694,17 @@
|
|
9466 |
let n,
|
9467 |
o = [];
|
9468 |
if (s.length) {
|
9469 |
-
const t =
|
9470 |
(o = this._createItems(i)),
|
9471 |
(this.title = this.getTitle(o, i)),
|
9472 |
(this.beforeBody = this.getBeforeBody(o, i)),
|
9473 |
(this.body = this.getBody(o, i)),
|
9474 |
(this.afterBody = this.getAfterBody(o, i)),
|
9475 |
(this.footer = this.getFooter(o, i));
|
9476 |
-
const e = (this._size =
|
9477 |
a = Object.assign({}, t, e),
|
9478 |
-
r =
|
9479 |
-
l =
|
9480 |
(this.xAlign = r.xAlign),
|
9481 |
(this.yAlign = r.yAlign),
|
9482 |
(n = {
|
@@ -9507,17 +9735,17 @@
|
|
9507 |
getCaretPosition(t, e, i) {
|
9508 |
const { xAlign: s, yAlign: n } = this,
|
9509 |
{ caretSize: o, cornerRadius: a } = i,
|
9510 |
-
{ topLeft: r, topRight: l, bottomLeft: h, bottomRight: c } =
|
9511 |
{ x: d, y: u } = t,
|
9512 |
{ width: f, height: g } = e;
|
9513 |
-
let p, m,
|
9514 |
return (
|
9515 |
"center" === n
|
9516 |
? ((_ = u + g / 2),
|
9517 |
"left" === s
|
9518 |
-
? ((p = d), (m = p - o), (
|
9519 |
-
: ((p = d + f), (m = p + o), (
|
9520 |
-
(
|
9521 |
: ((m =
|
9522 |
"left" === s
|
9523 |
? d + Math.max(r, h) + o
|
@@ -9525,10 +9753,10 @@
|
|
9525 |
? d + f - Math.max(l, c) - o
|
9526 |
: this.caretX),
|
9527 |
"top" === n
|
9528 |
-
? ((
|
9529 |
-
: ((
|
9530 |
-
(y =
|
9531 |
-
{ x1: p, x2: m, x3:
|
9532 |
);
|
9533 |
}
|
9534 |
drawTitle(t, e, i) {
|
@@ -9536,12 +9764,12 @@
|
|
9536 |
n = s.length;
|
9537 |
let o, a, r;
|
9538 |
if (n) {
|
9539 |
-
const l =
|
9540 |
for (
|
9541 |
-
t.x =
|
9542 |
e.textAlign = l.textAlign(i.titleAlign),
|
9543 |
e.textBaseline = "middle",
|
9544 |
-
o =
|
9545 |
a = i.titleSpacing,
|
9546 |
e.fillStyle = i.titleColor,
|
9547 |
e.font = o.string,
|
@@ -9554,53 +9782,55 @@
|
|
9554 |
r + 1 === n && (t.y += i.titleMarginBottom - a);
|
9555 |
}
|
9556 |
}
|
9557 |
-
_drawColorBox(t, e, i, s,
|
9558 |
-
const
|
9559 |
-
|
9560 |
-
{ boxHeight:
|
9561 |
-
|
9562 |
-
|
9563 |
-
|
9564 |
-
|
9565 |
-
|
9566 |
-
if (
|
9567 |
const e = {
|
9568 |
-
radius: Math.min(
|
9569 |
-
pointStyle:
|
9570 |
-
rotation:
|
9571 |
borderWidth: 1,
|
9572 |
},
|
9573 |
-
i = s.leftForLtr(
|
9574 |
-
|
9575 |
-
(t.strokeStyle =
|
9576 |
-
(t.fillStyle =
|
9577 |
-
|
9578 |
-
(t.strokeStyle =
|
9579 |
-
(t.fillStyle =
|
9580 |
-
|
9581 |
} else {
|
9582 |
-
(t.lineWidth =
|
9583 |
-
(
|
9584 |
-
|
9585 |
-
(t.
|
9586 |
-
|
9587 |
-
|
9588 |
-
|
9589 |
-
|
|
|
|
|
9590 |
? (t.beginPath(),
|
9591 |
-
(t.fillStyle =
|
9592 |
-
|
9593 |
t.fill(),
|
9594 |
t.stroke(),
|
9595 |
-
(t.fillStyle =
|
9596 |
t.beginPath(),
|
9597 |
-
|
9598 |
t.fill())
|
9599 |
-
: ((t.fillStyle =
|
9600 |
-
t.fillRect(e,
|
9601 |
-
t.strokeRect(e,
|
9602 |
-
(t.fillStyle =
|
9603 |
-
t.fillRect(i,
|
9604 |
}
|
9605 |
t.fillStyle = this.labelTextColors[i];
|
9606 |
}
|
@@ -9614,60 +9844,60 @@
|
|
9614 |
boxWidth: l,
|
9615 |
boxPadding: h,
|
9616 |
} = i,
|
9617 |
-
c =
|
9618 |
-
let
|
9619 |
-
|
9620 |
-
const
|
9621 |
-
|
9622 |
-
e.fillText(i,
|
9623 |
},
|
9624 |
-
|
9625 |
-
let
|
9626 |
for (
|
9627 |
e.textAlign = o,
|
9628 |
e.textBaseline = "middle",
|
9629 |
e.font = c.string,
|
9630 |
-
t.x =
|
9631 |
e.fillStyle = i.bodyColor,
|
9632 |
-
|
9633 |
-
|
9634 |
-
|
9635 |
-
|
9636 |
-
|
9637 |
-
++
|
9638 |
) {
|
9639 |
for (
|
9640 |
-
|
9641 |
-
x = this.labelTextColors[
|
9642 |
e.fillStyle = x,
|
9643 |
-
|
9644 |
-
|
9645 |
a &&
|
9646 |
-
|
9647 |
-
(this._drawColorBox(e, t,
|
9648 |
-
(
|
9649 |
-
|
9650 |
-
|
9651 |
-
|
9652 |
-
++
|
9653 |
)
|
9654 |
-
|
9655 |
-
|
9656 |
}
|
9657 |
-
(
|
9658 |
}
|
9659 |
drawFooter(t, e, i) {
|
9660 |
const s = this.footer,
|
9661 |
n = s.length;
|
9662 |
let o, a;
|
9663 |
if (n) {
|
9664 |
-
const r =
|
9665 |
for (
|
9666 |
-
t.x =
|
9667 |
t.y += i.footerMarginTop,
|
9668 |
e.textAlign = r.textAlign(i.footerAlign),
|
9669 |
e.textBaseline = "middle",
|
9670 |
-
o =
|
9671 |
e.fillStyle = i.footerColor,
|
9672 |
e.font = o.string,
|
9673 |
a = 0;
|
@@ -9687,7 +9917,7 @@
|
|
9687 |
topRight: d,
|
9688 |
bottomLeft: u,
|
9689 |
bottomRight: f,
|
9690 |
-
} =
|
9691 |
(e.fillStyle = s.backgroundColor),
|
9692 |
(e.strokeStyle = s.borderColor),
|
9693 |
(e.lineWidth = s.borderWidth),
|
@@ -9715,12 +9945,12 @@
|
|
9715 |
s = i && i.x,
|
9716 |
n = i && i.y;
|
9717 |
if (s || n) {
|
9718 |
-
const i =
|
9719 |
if (!i) return;
|
9720 |
-
const o = (this._size =
|
9721 |
a = Object.assign({}, i, this._size),
|
9722 |
-
r =
|
9723 |
-
l =
|
9724 |
(s._to === l.x && n._to === l.y) ||
|
9725 |
((this.xAlign = r.xAlign),
|
9726 |
(this.yAlign = r.yAlign),
|
@@ -9731,6 +9961,9 @@
|
|
9731 |
this._resolveAnimations().update(this, l));
|
9732 |
}
|
9733 |
}
|
|
|
|
|
|
|
9734 |
draw(t) {
|
9735 |
const e = this.options.setContext(this.getContext());
|
9736 |
let i = this.opacity;
|
@@ -9739,7 +9972,7 @@
|
|
9739 |
const s = { width: this.width, height: this.height },
|
9740 |
n = { x: this.x, y: this.y };
|
9741 |
i = Math.abs(i) < 0.001 ? 0 : i;
|
9742 |
-
const o =
|
9743 |
a =
|
9744 |
this.title.length ||
|
9745 |
this.beforeBody.length ||
|
@@ -9751,12 +9984,12 @@
|
|
9751 |
(t.save(),
|
9752 |
(t.globalAlpha = i),
|
9753 |
this.drawBackground(n, t, s, e),
|
9754 |
-
|
9755 |
(n.y += o.top),
|
9756 |
this.drawTitle(n, t, e),
|
9757 |
this.drawBody(n, t, e),
|
9758 |
this.drawFooter(n, t, e),
|
9759 |
-
|
9760 |
t.restore());
|
9761 |
}
|
9762 |
getActiveElements() {
|
@@ -9769,7 +10002,7 @@
|
|
9769 |
if (!i) throw new Error("Cannot find a dataset at index " + t);
|
9770 |
return { datasetIndex: t, element: i.data[e], index: e };
|
9771 |
}),
|
9772 |
-
n = !
|
9773 |
o = this._positionChanged(s, e);
|
9774 |
(n || o) &&
|
9775 |
((this._active = s),
|
@@ -9784,7 +10017,7 @@
|
|
9784 |
n = this._active || [],
|
9785 |
o = this._getActiveElements(t, n, e, i),
|
9786 |
a = this._positionChanged(o, t),
|
9787 |
-
r = e || !
|
9788 |
return (
|
9789 |
r &&
|
9790 |
((this._active = o),
|
@@ -9802,17 +10035,17 @@
|
|
9802 |
}
|
9803 |
_positionChanged(t, e) {
|
9804 |
const { caretX: i, caretY: s, options: n } = this,
|
9805 |
-
o =
|
9806 |
return !1 !== o && (i !== o.x || s !== o.y);
|
9807 |
}
|
9808 |
}
|
9809 |
-
|
9810 |
-
var
|
9811 |
id: "tooltip",
|
9812 |
-
_element:
|
9813 |
-
positioners:
|
9814 |
afterInit(t, e, i) {
|
9815 |
-
i && (t.tooltip = new
|
9816 |
},
|
9817 |
beforeUpdate(t, e, i) {
|
9818 |
t.tooltip && t.tooltip.initialize(i);
|
@@ -9821,10 +10054,12 @@
|
|
9821 |
t.tooltip && t.tooltip.initialize(i);
|
9822 |
},
|
9823 |
afterDraw(t) {
|
9824 |
-
const e = t.tooltip
|
9825 |
-
|
9826 |
-
|
9827 |
-
(
|
|
|
|
|
9828 |
},
|
9829 |
afterEvent(t, e) {
|
9830 |
if (t.tooltip) {
|
@@ -9871,7 +10106,7 @@
|
|
9871 |
opacity: { easing: "linear", duration: 200 },
|
9872 |
},
|
9873 |
callbacks: {
|
9874 |
-
beforeTitle:
|
9875 |
title(t) {
|
9876 |
if (t.length > 0) {
|
9877 |
const e = t[0],
|
@@ -9884,16 +10119,16 @@
|
|
9884 |
}
|
9885 |
return "";
|
9886 |
},
|
9887 |
-
afterTitle:
|
9888 |
-
beforeBody:
|
9889 |
-
beforeLabel:
|
9890 |
label(t) {
|
9891 |
if (this && this.options && "dataset" === this.options.mode)
|
9892 |
return t.label + ": " + t.formattedValue || t.formattedValue;
|
9893 |
let e = t.dataset.label || "";
|
9894 |
e && (e += ": ");
|
9895 |
-
const
|
9896 |
-
return
|
9897 |
},
|
9898 |
labelColor(t) {
|
9899 |
const e = t.chart
|
@@ -9917,11 +10152,11 @@
|
|
9917 |
.controller.getStyle(t.dataIndex);
|
9918 |
return { pointStyle: e.pointStyle, rotation: e.rotation };
|
9919 |
},
|
9920 |
-
afterLabel:
|
9921 |
-
afterBody:
|
9922 |
-
beforeFooter:
|
9923 |
-
footer:
|
9924 |
-
afterFooter:
|
9925 |
},
|
9926 |
},
|
9927 |
defaultRoutes: {
|
@@ -9939,16 +10174,16 @@
|
|
9939 |
},
|
9940 |
additionalOptionScopes: ["interaction"],
|
9941 |
},
|
9942 |
-
|
9943 |
__proto__: null,
|
9944 |
-
Decimation:
|
9945 |
-
Filler:
|
9946 |
-
Legend:
|
9947 |
-
SubTitle:
|
9948 |
-
Title:
|
9949 |
-
Tooltip:
|
9950 |
});
|
9951 |
-
function
|
9952 |
const n = t.indexOf(e);
|
9953 |
if (-1 === n)
|
9954 |
return ((t, e, i, s) => (
|
@@ -9959,7 +10194,7 @@
|
|
9959 |
))(t, e, i, s);
|
9960 |
return n !== t.lastIndexOf(e) ? i : n;
|
9961 |
}
|
9962 |
-
class
|
9963 |
constructor(t) {
|
9964 |
super(t),
|
9965 |
(this._startValue = void 0),
|
@@ -9976,16 +10211,16 @@
|
|
9976 |
super.init(t);
|
9977 |
}
|
9978 |
parse(t, e) {
|
9979 |
-
if (
|
9980 |
-
const
|
9981 |
return ((t, e) =>
|
9982 |
null === t
|
9983 |
? null
|
9984 |
-
:
|
9985 |
Math.round(t),
|
9986 |
0,
|
9987 |
e
|
9988 |
-
))((e = isFinite(e) &&
|
9989 |
}
|
9990 |
determineDataLimits() {
|
9991 |
const { minDefined: t, maxDefined: e } = this.getUserBounds();
|
@@ -10038,15 +10273,15 @@
|
|
10038 |
return this.bottom;
|
10039 |
}
|
10040 |
}
|
10041 |
-
function
|
10042 |
-
const n =
|
10043 |
o = (i ? Math.sin(n) : Math.cos(n)) || 0.001,
|
10044 |
a = 0.75 * e * ("" + t).length;
|
10045 |
return Math.min(e / o, a);
|
10046 |
}
|
10047 |
-
(
|
10048 |
-
(
|
10049 |
-
class
|
10050 |
constructor(t) {
|
10051 |
super(t),
|
10052 |
(this.start = void 0),
|
@@ -10056,7 +10291,7 @@
|
|
10056 |
(this._valueRange = 0);
|
10057 |
}
|
10058 |
parse(t, e) {
|
10059 |
-
return
|
10060 |
(("number" == typeof t || t instanceof Number) && !isFinite(+t))
|
10061 |
? null
|
10062 |
: +t;
|
@@ -10068,8 +10303,8 @@
|
|
10068 |
const o = (t) => (s = e ? s : t),
|
10069 |
a = (t) => (n = i ? n : t);
|
10070 |
if (t) {
|
10071 |
-
const t =
|
10072 |
-
e =
|
10073 |
t < 0 && e < 0 ? a(0) : t > 0 && e > 0 && o(0);
|
10074 |
}
|
10075 |
if (s === n) {
|
@@ -10104,78 +10339,78 @@
|
|
10104 |
buildTicks() {
|
10105 |
const t = this.options,
|
10106 |
e = t.ticks;
|
10107 |
-
let
|
10108 |
-
|
10109 |
-
const
|
10110 |
-
const
|
10111 |
{
|
10112 |
-
bounds:
|
10113 |
-
step:
|
10114 |
-
min:
|
10115 |
-
max:
|
10116 |
-
precision:
|
10117 |
-
count:
|
10118 |
-
maxTicks:
|
10119 |
-
maxDigits:
|
10120 |
-
includeBounds:
|
10121 |
} = t,
|
10122 |
-
|
10123 |
-
|
10124 |
-
{ min:
|
10125 |
-
|
10126 |
-
x =
|
10127 |
-
|
10128 |
-
|
10129 |
-
let
|
10130 |
-
v,
|
10131 |
w,
|
10132 |
M,
|
10133 |
-
k
|
10134 |
-
|
10135 |
-
(
|
10136 |
-
|
10137 |
-
|
10138 |
-
|
10139 |
-
|
10140 |
-
|
10141 |
-
|
10142 |
-
|
10143 |
-
|
10144 |
-
(
|
10145 |
-
(w = a)
|
10146 |
-
|
10147 |
-
|
10148 |
-
: (
|
10149 |
-
|
10150 |
-
|
10151 |
-
|
10152 |
-
|
10153 |
-
|
10154 |
-
|
10155 |
-
(w = Math.round(w *
|
10156 |
-
|
|
|
10157 |
for (
|
10158 |
-
|
10159 |
-
(
|
10160 |
-
? (
|
10161 |
-
|
10162 |
-
|
10163 |
-
:
|
10164 |
-
|
10165 |
-
++
|
10166 |
)
|
10167 |
-
|
10168 |
return (
|
10169 |
-
x &&
|
10170 |
-
?
|
10171 |
-
? (
|
10172 |
-
:
|
10173 |
-
: (x &&
|
10174 |
-
|
10175 |
);
|
10176 |
})(
|
10177 |
{
|
10178 |
-
maxTicks:
|
10179 |
bounds: t.bounds,
|
10180 |
min: t.min,
|
10181 |
max: t.max,
|
@@ -10190,11 +10425,11 @@
|
|
10190 |
this._range || this
|
10191 |
);
|
10192 |
return (
|
10193 |
-
"ticks" === t.bounds &&
|
10194 |
t.reverse
|
10195 |
-
? (
|
10196 |
: ((this.start = this.min), (this.end = this.max)),
|
10197 |
-
|
10198 |
);
|
10199 |
}
|
10200 |
configure() {
|
@@ -10208,20 +10443,20 @@
|
|
10208 |
(this._startValue = e), (this._endValue = i), (this._valueRange = i - e);
|
10209 |
}
|
10210 |
getLabelForValue(t) {
|
10211 |
-
return
|
10212 |
}
|
10213 |
}
|
10214 |
-
class
|
10215 |
determineDataLimits() {
|
10216 |
const { min: t, max: e } = this.getMinMax(!0);
|
10217 |
-
(this.min =
|
10218 |
-
(this.max =
|
10219 |
this.handleTickRangeOptions();
|
10220 |
}
|
10221 |
computeTickLimit() {
|
10222 |
const t = this.isHorizontal(),
|
10223 |
e = t ? this.width : this.height,
|
10224 |
-
i =
|
10225 |
s = (t ? Math.sin(i) : Math.cos(i)) || 0.001,
|
10226 |
n = this._resolveTickFontOptions(0);
|
10227 |
return Math.ceil(e / Math.min(40, n.lineHeight / s));
|
@@ -10235,12 +10470,12 @@
|
|
10235 |
return this._startValue + this.getDecimalForPixel(t) * this._valueRange;
|
10236 |
}
|
10237 |
}
|
10238 |
-
function
|
10239 |
-
return 1 === t / Math.pow(10, Math.floor(
|
10240 |
}
|
10241 |
-
(
|
10242 |
-
(
|
10243 |
-
class
|
10244 |
constructor(t) {
|
10245 |
super(t),
|
10246 |
(this.start = void 0),
|
@@ -10249,14 +10484,14 @@
|
|
10249 |
(this._valueRange = 0);
|
10250 |
}
|
10251 |
parse(t, e) {
|
10252 |
-
const i =
|
10253 |
-
if (0 !== i) return
|
10254 |
this._zero = !0;
|
10255 |
}
|
10256 |
determineDataLimits() {
|
10257 |
const { min: t, max: e } = this.getMinMax(!0);
|
10258 |
-
(this.min =
|
10259 |
-
(this.max =
|
10260 |
this.options.beginAtZero && (this._zero = !0),
|
10261 |
this.handleTickRangeOptions();
|
10262 |
}
|
@@ -10266,7 +10501,7 @@
|
|
10266 |
s = this.max;
|
10267 |
const n = (e) => (i = t ? i : e),
|
10268 |
o = (t) => (s = e ? s : t),
|
10269 |
-
a = (t, e) => Math.pow(10, Math.floor(
|
10270 |
i === s && (i <= 0 ? (n(1), o(10)) : (n(a(i, -1)), o(a(s, 1)))),
|
10271 |
i <= 0 && n(a(s, -1)),
|
10272 |
s <= 0 && o(a(i, 1)),
|
@@ -10280,24 +10515,24 @@
|
|
10280 |
buildTicks() {
|
10281 |
const t = this.options,
|
10282 |
e = (function (t, e) {
|
10283 |
-
const i = Math.floor(
|
10284 |
s = Math.ceil(e.max / Math.pow(10, i)),
|
10285 |
n = [];
|
10286 |
-
let o =
|
10287 |
-
|
10288 |
-
|
10289 |
-
|
10290 |
do {
|
10291 |
-
n.push({ value: o, major:
|
10292 |
-
++
|
10293 |
-
10 ===
|
10294 |
-
(o = Math.round(
|
10295 |
-
} while (
|
10296 |
-
const
|
10297 |
-
return n.push({ value:
|
10298 |
})({ min: this._userMin, max: this._userMax }, this);
|
10299 |
return (
|
10300 |
-
"ticks" === t.bounds &&
|
10301 |
t.reverse
|
10302 |
? (e.reverse(), (this.start = this.max), (this.end = this.min))
|
10303 |
: ((this.start = this.min), (this.end = this.max)),
|
@@ -10307,13 +10542,13 @@
|
|
10307 |
getLabelForValue(t) {
|
10308 |
return void 0 === t
|
10309 |
? "0"
|
10310 |
-
:
|
10311 |
}
|
10312 |
configure() {
|
10313 |
const t = this.min;
|
10314 |
super.configure(),
|
10315 |
-
(this._startValue =
|
10316 |
-
(this._valueRange =
|
10317 |
}
|
10318 |
getPixelForValue(t) {
|
10319 |
return (
|
@@ -10321,7 +10556,7 @@
|
|
10321 |
null === t || isNaN(t)
|
10322 |
? NaN
|
10323 |
: this.getPixelForDecimal(
|
10324 |
-
t === this.min ? 0 : (
|
10325 |
)
|
10326 |
);
|
10327 |
}
|
@@ -10330,22 +10565,22 @@
|
|
10330 |
return Math.pow(10, this._startValue + e * this._valueRange);
|
10331 |
}
|
10332 |
}
|
10333 |
-
function
|
10334 |
const e = t.ticks;
|
10335 |
if (e.display && t.display) {
|
10336 |
-
const t =
|
10337 |
-
return
|
10338 |
}
|
10339 |
return 0;
|
10340 |
}
|
10341 |
-
function
|
10342 |
return t === s || t === n
|
10343 |
? { start: e - i / 2, end: e + i / 2 }
|
10344 |
: t < s || t > n
|
10345 |
? { start: e - i, end: e }
|
10346 |
: { start: e, end: e + i };
|
10347 |
}
|
10348 |
-
function
|
10349 |
const e = {
|
10350 |
l: t.left + t._padding.left,
|
10351 |
r: t.right - t._padding.right,
|
@@ -10353,42 +10588,42 @@
|
|
10353 |
b: t.bottom - t._padding.bottom,
|
10354 |
},
|
10355 |
i = Object.assign({}, e),
|
10356 |
-
s = [],
|
10357 |
n = [],
|
10358 |
-
o =
|
10359 |
-
a = t.
|
10360 |
-
r =
|
10361 |
-
|
10362 |
-
|
10363 |
-
|
10364 |
-
|
10365 |
-
|
10366 |
-
g =
|
10367 |
-
|
10368 |
-
(h =
|
10369 |
-
(c =
|
10370 |
-
|
10371 |
-
|
10372 |
-
|
10373 |
-
|
10374 |
-
|
10375 |
-
|
10376 |
-
|
|
|
10377 |
t.setCenterPoint(e.l - i.l, i.r - e.r, e.t - i.t, i.b - e.b),
|
10378 |
(t._pointLabelItems = (function (t, e, i) {
|
10379 |
const s = [],
|
10380 |
n = t._pointLabels.length,
|
10381 |
o = t.options,
|
10382 |
-
a =
|
10383 |
r = t.drawingArea,
|
10384 |
-
l = o.pointLabels.centerPointLabels ?
|
10385 |
for (let o = 0; o < n; o++) {
|
10386 |
const n = t.getPointPosition(o, r + a + i[o], l),
|
10387 |
-
h = Math.round(
|
10388 |
c = e[o],
|
10389 |
-
d =
|
10390 |
-
u =
|
10391 |
-
f =
|
10392 |
s.push({
|
10393 |
x: n.x,
|
10394 |
y: d,
|
@@ -10400,9 +10635,9 @@
|
|
10400 |
});
|
10401 |
}
|
10402 |
return s;
|
10403 |
-
})(t,
|
10404 |
}
|
10405 |
-
function
|
10406 |
const o = Math.abs(Math.sin(i)),
|
10407 |
a = Math.abs(Math.cos(i));
|
10408 |
let r = 0,
|
@@ -10416,20 +10651,20 @@
|
|
10416 |
: n.end > e.b &&
|
10417 |
((l = (n.end - e.b) / a), (t.b = Math.max(t.b, e.b + l)));
|
10418 |
}
|
10419 |
-
function
|
10420 |
return 0 === t || 180 === t ? "center" : t < 180 ? "left" : "right";
|
10421 |
}
|
10422 |
-
function
|
10423 |
return "right" === i ? (t -= e) : "center" === i && (t -= e / 2), t;
|
10424 |
}
|
10425 |
-
function
|
10426 |
return (
|
10427 |
90 === i || 270 === i ? (t -= e / 2) : (i > 270 || i < 90) && (t -= e), t
|
10428 |
);
|
10429 |
}
|
10430 |
-
function
|
10431 |
const { ctx: n } = t;
|
10432 |
-
if (i) n.arc(t.xCenter, t.yCenter, e, 0,
|
10433 |
else {
|
10434 |
let i = t.getPointPosition(0, e);
|
10435 |
n.moveTo(i.x, i.y);
|
@@ -10437,11 +10672,11 @@
|
|
10437 |
(i = t.getPointPosition(o, e)), n.lineTo(i.x, i.y);
|
10438 |
}
|
10439 |
}
|
10440 |
-
(
|
10441 |
-
(
|
10442 |
-
ticks: { callback:
|
10443 |
});
|
10444 |
-
class
|
10445 |
constructor(t) {
|
10446 |
super(t),
|
10447 |
(this.xCenter = void 0),
|
@@ -10451,7 +10686,7 @@
|
|
10451 |
(this._pointLabelItems = []);
|
10452 |
}
|
10453 |
setDimensions() {
|
10454 |
-
const t = (this._padding =
|
10455 |
e = (this.width = this.maxWidth - t.width),
|
10456 |
i = (this.height = this.maxHeight - t.height);
|
10457 |
(this.xCenter = Math.floor(this.left + e / 2 + t.left)),
|
@@ -10460,18 +10695,18 @@
|
|
10460 |
}
|
10461 |
determineDataLimits() {
|
10462 |
const { min: t, max: e } = this.getMinMax(!1);
|
10463 |
-
(this.min =
|
10464 |
-
(this.max =
|
10465 |
this.handleTickRangeOptions();
|
10466 |
}
|
10467 |
computeTickLimit() {
|
10468 |
-
return Math.ceil(this.drawingArea /
|
10469 |
}
|
10470 |
generateTickLabels(t) {
|
10471 |
-
|
10472 |
(this._pointLabels = this.getLabels()
|
10473 |
.map((t, e) => {
|
10474 |
-
const i =
|
10475 |
return i || 0 === i ? i : "";
|
10476 |
})
|
10477 |
.filter((t, e) => this.chart.getDataVisibility(e)));
|
@@ -10479,7 +10714,7 @@
|
|
10479 |
fit() {
|
10480 |
const t = this.options;
|
10481 |
t.display && t.pointLabels.display
|
10482 |
-
?
|
10483 |
: this.setCenterPoint(0, 0, 0, 0);
|
10484 |
}
|
10485 |
setCenterPoint(t, e, i, s) {
|
@@ -10491,18 +10726,18 @@
|
|
10491 |
));
|
10492 |
}
|
10493 |
getIndexAngle(t) {
|
10494 |
-
return
|
10495 |
-
t * (
|
10496 |
-
|
10497 |
);
|
10498 |
}
|
10499 |
getDistanceFromCenterForValue(t) {
|
10500 |
-
if (
|
10501 |
const e = this.drawingArea / (this.max - this.min);
|
10502 |
return this.options.reverse ? (this.max - t) * e : (t - this.min) * e;
|
10503 |
}
|
10504 |
getValueForDistanceFromCenter(t) {
|
10505 |
-
if (
|
10506 |
const e = t / (this.drawingArea / (this.max - this.min));
|
10507 |
return this.options.reverse ? this.max - e : this.min + e;
|
10508 |
}
|
@@ -10511,12 +10746,12 @@
|
|
10511 |
if (t >= 0 && t < e.length) {
|
10512 |
const i = e[t];
|
10513 |
return (function (t, e, i) {
|
10514 |
-
return
|
10515 |
})(this.getContext(), t, i);
|
10516 |
}
|
10517 |
}
|
10518 |
getPointPosition(t, e, i = 0) {
|
10519 |
-
const s = this.getIndexAngle(t) -
|
10520 |
return {
|
10521 |
x: Math.cos(s) * e + this.xCenter,
|
10522 |
y: Math.sin(s) * e + this.yCenter,
|
@@ -10542,7 +10777,7 @@
|
|
10542 |
const i = this.ctx;
|
10543 |
i.save(),
|
10544 |
i.beginPath(),
|
10545 |
-
|
10546 |
this,
|
10547 |
this.getDistanceFromCenterForValue(this._endValue),
|
10548 |
e,
|
@@ -10557,50 +10792,54 @@
|
|
10557 |
drawGrid() {
|
10558 |
const t = this.ctx,
|
10559 |
e = this.options,
|
10560 |
-
{ angleLines:
|
10561 |
-
|
10562 |
-
let
|
10563 |
if (
|
10564 |
(e.pointLabels.display &&
|
10565 |
(function (t, e) {
|
10566 |
const {
|
10567 |
-
ctx:
|
10568 |
-
options: { pointLabels:
|
10569 |
} = t;
|
10570 |
-
for (let
|
10571 |
-
const e =
|
10572 |
-
|
10573 |
{
|
10574 |
-
x:
|
10575 |
-
y:
|
10576 |
-
textAlign:
|
10577 |
-
left:
|
10578 |
-
top:
|
10579 |
-
right:
|
10580 |
-
bottom:
|
10581 |
-
} = t._pointLabelItems[
|
10582 |
-
{ backdropColor:
|
10583 |
-
if (
|
10584 |
-
const t =
|
10585 |
-
|
10586 |
-
|
10587 |
-
|
10588 |
-
|
10589 |
-
|
10590 |
-
|
10591 |
-
|
|
|
|
|
|
|
|
|
10592 |
}
|
10593 |
-
|
10594 |
color: e.color,
|
10595 |
-
textAlign:
|
10596 |
textBaseline: "middle",
|
10597 |
});
|
10598 |
}
|
10599 |
-
})(this,
|
10600 |
-
|
10601 |
this.ticks.forEach((t, e) => {
|
10602 |
if (0 !== e) {
|
10603 |
-
|
10604 |
!(function (t, e, i, s) {
|
10605 |
const n = t.ctx,
|
10606 |
o = e.circular,
|
@@ -10615,31 +10854,31 @@
|
|
10615 |
n.setLineDash(e.borderDash),
|
10616 |
(n.lineDashOffset = e.borderDashOffset),
|
10617 |
n.beginPath(),
|
10618 |
-
|
10619 |
n.closePath(),
|
10620 |
n.stroke(),
|
10621 |
n.restore());
|
10622 |
-
})(this,
|
10623 |
}
|
10624 |
}),
|
10625 |
-
|
10626 |
) {
|
10627 |
-
for (t.save(),
|
10628 |
-
const
|
10629 |
-
{ color: n, lineWidth:
|
10630 |
-
|
10631 |
n &&
|
10632 |
-
((t.lineWidth =
|
10633 |
(t.strokeStyle = n),
|
10634 |
-
t.setLineDash(
|
10635 |
-
(t.lineDashOffset =
|
10636 |
-
(
|
10637 |
e.ticks.reverse ? this.min : this.max
|
10638 |
)),
|
10639 |
-
(
|
10640 |
t.beginPath(),
|
10641 |
t.moveTo(this.xCenter, this.yCenter),
|
10642 |
-
t.lineTo(
|
10643 |
t.stroke());
|
10644 |
}
|
10645 |
t.restore();
|
@@ -10661,7 +10900,7 @@
|
|
10661 |
this.ticks.forEach((s, a) => {
|
10662 |
if (0 === a && !e.reverse) return;
|
10663 |
const r = i.setContext(this.getContext(a)),
|
10664 |
-
l =
|
10665 |
if (
|
10666 |
((n = this.getDistanceFromCenterForValue(this.ticks[a].value)),
|
10667 |
r.showLabelBackdrop)
|
@@ -10669,7 +10908,7 @@
|
|
10669 |
(t.font = l.string),
|
10670 |
(o = t.measureText(s.label).width),
|
10671 |
(t.fillStyle = r.backdropColor);
|
10672 |
-
const e =
|
10673 |
t.fillRect(
|
10674 |
-o / 2 - e.left,
|
10675 |
-n - l.size / 2 - e.top,
|
@@ -10677,14 +10916,14 @@
|
|
10677 |
l.size + e.height
|
10678 |
);
|
10679 |
}
|
10680 |
-
|
10681 |
}),
|
10682 |
t.restore();
|
10683 |
}
|
10684 |
drawTitle() {}
|
10685 |
}
|
10686 |
-
(
|
10687 |
-
(
|
10688 |
display: !0,
|
10689 |
animate: !0,
|
10690 |
position: "chartArea",
|
@@ -10696,7 +10935,7 @@
|
|
10696 |
},
|
10697 |
grid: { circular: !1 },
|
10698 |
startAngle: 0,
|
10699 |
-
ticks: { showLabelBackdrop: !0, callback:
|
10700 |
pointLabels: {
|
10701 |
backdropColor: void 0,
|
10702 |
backdropPadding: 2,
|
@@ -10707,13 +10946,13 @@
|
|
10707 |
centerPointLabels: !1,
|
10708 |
},
|
10709 |
}),
|
10710 |
-
(
|
10711 |
"angleLines.color": "borderColor",
|
10712 |
"pointLabels.color": "color",
|
10713 |
"ticks.color": "color",
|
10714 |
}),
|
10715 |
-
(
|
10716 |
-
const
|
10717 |
millisecond: { common: !0, size: 1, steps: 1e3 },
|
10718 |
second: { common: !0, size: 1e3, steps: 60 },
|
10719 |
minute: { common: !0, size: 6e4, steps: 60 },
|
@@ -10724,46 +10963,46 @@
|
|
10724 |
quarter: { common: !1, size: 7884e6, steps: 4 },
|
10725 |
year: { common: !0, size: 3154e7 },
|
10726 |
},
|
10727 |
-
|
10728 |
-
function
|
10729 |
return t - e;
|
10730 |
}
|
10731 |
-
function
|
10732 |
-
if (
|
10733 |
-
const
|
10734 |
-
{ parser:
|
10735 |
-
let
|
10736 |
return (
|
10737 |
-
"function" == typeof
|
10738 |
-
|
10739 |
-
null ===
|
10740 |
? null
|
10741 |
-
: (
|
10742 |
-
(
|
10743 |
-
"week" !==
|
10744 |
-
?
|
10745 |
-
:
|
10746 |
-
+
|
10747 |
);
|
10748 |
}
|
10749 |
-
function
|
10750 |
-
const n =
|
10751 |
-
for (let o =
|
10752 |
-
const t =
|
10753 |
n = t.steps ? t.steps : Number.MAX_SAFE_INTEGER;
|
10754 |
-
if (t.common && Math.ceil((i - e) / (n * t.size)) <= s) return
|
10755 |
}
|
10756 |
-
return
|
10757 |
}
|
10758 |
-
function
|
10759 |
if (i) {
|
10760 |
if (i.length) {
|
10761 |
-
const { lo: s, hi: n } =
|
10762 |
t[i[s] >= e ? i[s] : i[n]] = !0;
|
10763 |
}
|
10764 |
} else t[e] = !0;
|
10765 |
}
|
10766 |
-
function
|
10767 |
const s = [],
|
10768 |
n = {},
|
10769 |
o = e.length;
|
@@ -10782,7 +11021,7 @@
|
|
10782 |
})(t, s, n, i)
|
10783 |
: s;
|
10784 |
}
|
10785 |
-
class
|
10786 |
constructor(t) {
|
10787 |
super(t),
|
10788 |
(this._cache = { data: [], labels: [], all: [] }),
|
@@ -10794,8 +11033,9 @@
|
|
10794 |
}
|
10795 |
init(t, e) {
|
10796 |
const i = t.time || (t.time = {}),
|
10797 |
-
s = (this._adapter = new
|
10798 |
-
|
|
|
10799 |
(this._parseOpts = {
|
10800 |
parser: i.parser,
|
10801 |
round: i.round,
|
@@ -10805,7 +11045,7 @@
|
|
10805 |
(this._normalized = e.normalized);
|
10806 |
}
|
10807 |
parse(t, e) {
|
10808 |
-
return void 0 === t ? null :
|
10809 |
}
|
10810 |
beforeLayout() {
|
10811 |
super.beforeLayout(), (this._cache = { data: [], labels: [], all: [] });
|
@@ -10817,19 +11057,19 @@
|
|
10817 |
let {
|
10818 |
min: s,
|
10819 |
max: n,
|
10820 |
-
minDefined:
|
10821 |
-
maxDefined:
|
10822 |
} = this.getUserBounds();
|
10823 |
-
function
|
10824 |
-
|
10825 |
-
|
10826 |
}
|
10827 |
-
(
|
10828 |
-
(
|
10829 |
("ticks" === t.bounds && "labels" === t.ticks.source) ||
|
10830 |
-
|
10831 |
-
(s =
|
10832 |
-
(n =
|
10833 |
(this.min = Math.min(s, n - 1)),
|
10834 |
(this.max = Math.max(s + 1, n));
|
10835 |
}
|
@@ -10852,32 +11092,36 @@
|
|
10852 |
((this.min = this._userMin || s[0]),
|
10853 |
(this.max = this._userMax || s[s.length - 1]));
|
10854 |
const n = this.min,
|
10855 |
-
o =
|
10856 |
return (
|
10857 |
(this._unit =
|
10858 |
e.unit ||
|
10859 |
(i.autoSkip
|
10860 |
-
?
|
10861 |
: (function (t, e, i, s, n) {
|
10862 |
-
for (let o =
|
10863 |
-
const i =
|
10864 |
-
if (
|
10865 |
return i;
|
10866 |
}
|
10867 |
-
return
|
10868 |
})(this, o.length, e.minUnit, this.min, this.max))),
|
10869 |
(this._majorUnit =
|
10870 |
i.major.enabled && "year" !== this._unit
|
10871 |
? (function (t) {
|
10872 |
-
for (let e =
|
10873 |
-
if (
|
10874 |
})(this._unit)
|
10875 |
: void 0),
|
10876 |
this.initOffsets(s),
|
10877 |
t.reverse && o.reverse(),
|
10878 |
-
|
10879 |
);
|
10880 |
}
|
|
|
|
|
|
|
|
|
10881 |
initOffsets(t) {
|
10882 |
let e,
|
10883 |
i,
|
@@ -10893,8 +11137,8 @@
|
|
10893 |
? i
|
10894 |
: (i - this.getDecimalForValue(t[t.length - 2])) / 2));
|
10895 |
const o = t.length < 3 ? 0.5 : 0.25;
|
10896 |
-
(s =
|
10897 |
-
(n =
|
10898 |
(this._offsets = { start: s, end: n, factor: 1 / (s + 1 + n) });
|
10899 |
}
|
10900 |
_generate() {
|
@@ -10903,27 +11147,27 @@
|
|
10903 |
i = this.max,
|
10904 |
s = this.options,
|
10905 |
n = s.time,
|
10906 |
-
o = n.unit ||
|
10907 |
-
a =
|
10908 |
-
|
10909 |
-
|
10910 |
-
|
10911 |
-
let
|
10912 |
-
|
10913 |
-
|
10914 |
if (
|
10915 |
-
(
|
10916 |
-
(
|
10917 |
t.diff(i, e, o) > 1e5 * a)
|
10918 |
)
|
10919 |
throw new Error(
|
10920 |
e + " and " + i + " are too far apart with stepSize of " + a + " " + o
|
10921 |
);
|
10922 |
-
const
|
10923 |
-
for (
|
10924 |
return (
|
10925 |
-
(
|
10926 |
-
Object.keys(
|
10927 |
.sort((t, e) => t - e)
|
10928 |
.map((t) => +t)
|
10929 |
);
|
@@ -10942,11 +11186,11 @@
|
|
10942 |
r = this._majorUnit,
|
10943 |
l = a && o[a],
|
10944 |
h = r && o[r],
|
10945 |
-
|
10946 |
-
|
10947 |
-
|
10948 |
-
|
10949 |
-
return
|
10950 |
}
|
10951 |
generateTickLabels(t) {
|
10952 |
let e, i, s;
|
@@ -10969,7 +11213,7 @@
|
|
10969 |
_getLabelSize(t) {
|
10970 |
const e = this.options.ticks,
|
10971 |
i = this.ctx.measureText(t).width,
|
10972 |
-
s =
|
10973 |
n = Math.cos(s),
|
10974 |
o = Math.sin(s),
|
10975 |
a = this._resolveTickFontOptions(0).size;
|
@@ -10979,7 +11223,7 @@
|
|
10979 |
const e = this.options.time,
|
10980 |
i = e.displayFormats,
|
10981 |
s = i[e.unit] || i.millisecond,
|
10982 |
-
n = this._tickFormatFunction(t, 0,
|
10983 |
o = this._getLabelSize(n),
|
10984 |
a =
|
10985 |
Math.floor(
|
@@ -11004,14 +11248,14 @@
|
|
11004 |
let e, i;
|
11005 |
if (t.length) return t;
|
11006 |
const s = this.getLabels();
|
11007 |
-
for (e = 0, i = s.length; e < i; ++e) t.push(
|
11008 |
return (this._cache.labels = this._normalized ? t : this.normalize(t));
|
11009 |
}
|
11010 |
normalize(t) {
|
11011 |
-
return
|
11012 |
}
|
11013 |
}
|
11014 |
-
function
|
11015 |
let s,
|
11016 |
n,
|
11017 |
o,
|
@@ -11019,19 +11263,19 @@
|
|
11019 |
r = 0,
|
11020 |
l = t.length - 1;
|
11021 |
i
|
11022 |
-
? (e >= t[r].pos && e <= t[l].pos && ({ lo: r, hi: l } =
|
11023 |
({ pos: s, time: o } = t[r]),
|
11024 |
({ pos: n, time: a } = t[l]))
|
11025 |
: (e >= t[r].time &&
|
11026 |
e <= t[l].time &&
|
11027 |
-
({ lo: r, hi: l } =
|
11028 |
({ time: s, pos: o } = t[r]),
|
11029 |
({ time: n, pos: a } = t[l]));
|
11030 |
const h = n - s;
|
11031 |
return h ? o + ((a - o) * (e - s)) / h : o;
|
11032 |
}
|
11033 |
-
(
|
11034 |
-
(
|
11035 |
bounds: "data",
|
11036 |
adapters: {},
|
11037 |
time: {
|
@@ -11044,7 +11288,7 @@
|
|
11044 |
},
|
11045 |
ticks: { source: "auto", major: { enabled: !1 } },
|
11046 |
});
|
11047 |
-
class
|
11048 |
constructor(t) {
|
11049 |
super(t),
|
11050 |
(this._table = []),
|
@@ -11054,8 +11298,8 @@
|
|
11054 |
initOffsets() {
|
11055 |
const t = this._getTimestampsForTable(),
|
11056 |
e = (this._table = this.buildLookupTable(t));
|
11057 |
-
(this._minPos =
|
11058 |
-
(this._tableRange =
|
11059 |
super.initOffsets(t);
|
11060 |
}
|
11061 |
buildLookupTable(t) {
|
@@ -11095,43 +11339,43 @@
|
|
11095 |
);
|
11096 |
}
|
11097 |
getDecimalForValue(t) {
|
11098 |
-
return (
|
11099 |
}
|
11100 |
getValueForPixel(t) {
|
11101 |
const e = this._offsets,
|
11102 |
i = this.getDecimalForPixel(t) / e.factor - e.end;
|
11103 |
-
return
|
11104 |
}
|
11105 |
}
|
11106 |
-
(
|
11107 |
-
var
|
11108 |
__proto__: null,
|
11109 |
-
CategoryScale:
|
11110 |
-
LinearScale:
|
11111 |
-
LogarithmicScale:
|
11112 |
-
RadialLinearScale:
|
11113 |
-
TimeScale:
|
11114 |
-
TimeSeriesScale:
|
11115 |
});
|
11116 |
return (
|
11117 |
-
|
11118 |
-
(
|
11119 |
-
(
|
11120 |
-
(
|
11121 |
-
(
|
11122 |
-
(
|
11123 |
-
(
|
11124 |
-
(
|
11125 |
-
(
|
11126 |
-
(
|
11127 |
-
(
|
11128 |
-
(
|
11129 |
-
(
|
11130 |
-
(
|
11131 |
-
(
|
11132 |
-
Object.assign(
|
11133 |
-
(
|
11134 |
-
"undefined" != typeof window && (window.Chart =
|
11135 |
-
|
11136 |
);
|
11137 |
});
|
1 |
/*!
|
2 |
+
* Chart.js v3.9.1
|
3 |
* https://www.chartjs.org
|
4 |
* (c) 2022 Chart.js Contributors
|
5 |
* Released under the MIT License
|
13 |
e());
|
14 |
})(this, function () {
|
15 |
"use strict";
|
16 |
+
function t() {}
|
17 |
+
const e = (function () {
|
18 |
+
let t = 0;
|
19 |
+
return function () {
|
20 |
+
return t++;
|
21 |
+
};
|
22 |
+
})();
|
23 |
+
function i(t) {
|
24 |
+
return null == t;
|
25 |
+
}
|
26 |
+
function s(t) {
|
27 |
+
if (Array.isArray && Array.isArray(t)) return !0;
|
28 |
+
const e = Object.prototype.toString.call(t);
|
29 |
+
return "[object" === e.slice(0, 7) && "Array]" === e.slice(-6);
|
30 |
+
}
|
31 |
+
function n(t) {
|
32 |
+
return (
|
33 |
+
null !== t && "[object Object]" === Object.prototype.toString.call(t)
|
34 |
+
);
|
35 |
+
}
|
36 |
+
const o = (t) =>
|
37 |
+
("number" == typeof t || t instanceof Number) && isFinite(+t);
|
38 |
+
function a(t, e) {
|
39 |
+
return o(t) ? t : e;
|
40 |
+
}
|
41 |
+
function r(t, e) {
|
42 |
+
return void 0 === t ? e : t;
|
43 |
+
}
|
44 |
+
const l = (t, e) =>
|
45 |
+
"string" == typeof t && t.endsWith("%") ? parseFloat(t) / 100 : t / e,
|
46 |
+
h = (t, e) =>
|
47 |
+
"string" == typeof t && t.endsWith("%") ? (parseFloat(t) / 100) * e : +t;
|
48 |
+
function c(t, e, i) {
|
49 |
+
if (t && "function" == typeof t.call) return t.apply(i, e);
|
50 |
+
}
|
51 |
+
function d(t, e, i, o) {
|
52 |
+
let a, r, l;
|
53 |
+
if (s(t))
|
54 |
+
if (((r = t.length), o)) for (a = r - 1; a >= 0; a--) e.call(i, t[a], a);
|
55 |
+
else for (a = 0; a < r; a++) e.call(i, t[a], a);
|
56 |
+
else if (n(t))
|
57 |
+
for (l = Object.keys(t), r = l.length, a = 0; a < r; a++)
|
58 |
+
e.call(i, t[l[a]], l[a]);
|
59 |
+
}
|
60 |
+
function u(t, e) {
|
61 |
+
let i, s, n, o;
|
62 |
+
if (!t || !e || t.length !== e.length) return !1;
|
63 |
+
for (i = 0, s = t.length; i < s; ++i)
|
64 |
+
if (
|
65 |
+
((n = t[i]),
|
66 |
+
(o = e[i]),
|
67 |
+
n.datasetIndex !== o.datasetIndex || n.index !== o.index)
|
68 |
+
)
|
69 |
+
return !1;
|
70 |
+
return !0;
|
71 |
+
}
|
72 |
+
function f(t) {
|
73 |
+
if (s(t)) return t.map(f);
|
74 |
+
if (n(t)) {
|
75 |
+
const e = Object.create(null),
|
76 |
+
i = Object.keys(t),
|
77 |
+
s = i.length;
|
78 |
+
let n = 0;
|
79 |
+
for (; n < s; ++n) e[i[n]] = f(t[i[n]]);
|
80 |
+
return e;
|
81 |
+
}
|
82 |
+
return t;
|
83 |
+
}
|
84 |
+
function g(t) {
|
85 |
+
return -1 === ["__proto__", "prototype", "constructor"].indexOf(t);
|
86 |
+
}
|
87 |
+
function p(t, e, i, s) {
|
88 |
+
if (!g(t)) return;
|
89 |
+
const o = e[t],
|
90 |
+
a = i[t];
|
91 |
+
n(o) && n(a) ? m(o, a, s) : (e[t] = f(a));
|
92 |
+
}
|
93 |
+
function m(t, e, i) {
|
94 |
+
const o = s(e) ? e : [e],
|
95 |
+
a = o.length;
|
96 |
+
if (!n(t)) return t;
|
97 |
+
const r = (i = i || {}).merger || p;
|
98 |
+
for (let s = 0; s < a; ++s) {
|
99 |
+
if (!n((e = o[s]))) continue;
|
100 |
+
const a = Object.keys(e);
|
101 |
+
for (let s = 0, n = a.length; s < n; ++s) r(a[s], t, e, i);
|
102 |
+
}
|
103 |
+
return t;
|
104 |
+
}
|
105 |
+
function b(t, e) {
|
106 |
+
return m(t, e, { merger: x });
|
107 |
+
}
|
108 |
+
function x(t, e, i) {
|
109 |
+
if (!g(t)) return;
|
110 |
+
const s = e[t],
|
111 |
+
o = i[t];
|
112 |
+
n(s) && n(o)
|
113 |
+
? b(s, o)
|
114 |
+
: Object.prototype.hasOwnProperty.call(e, t) || (e[t] = f(o));
|
115 |
+
}
|
116 |
+
const _ = { "": (t) => t, x: (t) => t.x, y: (t) => t.y };
|
117 |
+
function y(t, e) {
|
118 |
+
const i =
|
119 |
+
_[e] ||
|
120 |
+
(_[e] = (function (t) {
|
121 |
+
const e = v(t);
|
122 |
+
return (t) => {
|
123 |
+
for (const i of e) {
|
124 |
+
if ("" === i) break;
|
125 |
+
t = t && t[i];
|
126 |
+
}
|
127 |
+
return t;
|
128 |
+
};
|
129 |
+
})(e));
|
130 |
+
return i(t);
|
131 |
+
}
|
132 |
+
function v(t) {
|
133 |
+
const e = t.split("."),
|
134 |
+
i = [];
|
135 |
+
let s = "";
|
136 |
+
for (const t of e)
|
137 |
+
(s += t),
|
138 |
+
s.endsWith("\\") ? (s = s.slice(0, -1) + ".") : (i.push(s), (s = ""));
|
139 |
+
return i;
|
140 |
+
}
|
141 |
+
function w(t) {
|
142 |
+
return t.charAt(0).toUpperCase() + t.slice(1);
|
143 |
+
}
|
144 |
+
const M = (t) => void 0 !== t,
|
145 |
+
k = (t) => "function" == typeof t,
|
146 |
+
S = (t, e) => {
|
147 |
+
if (t.size !== e.size) return !1;
|
148 |
+
for (const i of t) if (!e.has(i)) return !1;
|
149 |
+
return !0;
|
150 |
+
};
|
151 |
+
function P(t) {
|
152 |
+
return (
|
153 |
+
"mouseup" === t.type || "click" === t.type || "contextmenu" === t.type
|
154 |
+
);
|
155 |
+
}
|
156 |
+
const D = Math.PI,
|
157 |
+
O = 2 * D,
|
158 |
+
C = O + D,
|
159 |
+
A = Number.POSITIVE_INFINITY,
|
160 |
+
T = D / 180,
|
161 |
+
L = D / 2,
|
162 |
+
E = D / 4,
|
163 |
+
R = (2 * D) / 3,
|
164 |
+
I = Math.log10,
|
165 |
+
z = Math.sign;
|
166 |
+
function F(t) {
|
167 |
+
const e = Math.round(t);
|
168 |
+
t = N(t, e, t / 1e3) ? e : t;
|
169 |
+
const i = Math.pow(10, Math.floor(I(t))),
|
170 |
+
s = t / i;
|
171 |
+
return (s <= 1 ? 1 : s <= 2 ? 2 : s <= 5 ? 5 : 10) * i;
|
172 |
+
}
|
173 |
+
function V(t) {
|
174 |
+
const e = [],
|
175 |
+
i = Math.sqrt(t);
|
176 |
+
let s;
|
177 |
+
for (s = 1; s < i; s++) t % s == 0 && (e.push(s), e.push(t / s));
|
178 |
+
return i === (0 | i) && e.push(i), e.sort((t, e) => t - e).pop(), e;
|
179 |
+
}
|
180 |
+
function B(t) {
|
181 |
+
return !isNaN(parseFloat(t)) && isFinite(t);
|
182 |
+
}
|
183 |
+
function N(t, e, i) {
|
184 |
+
return Math.abs(t - e) < i;
|
185 |
+
}
|
186 |
+
function W(t, e) {
|
187 |
+
const i = Math.round(t);
|
188 |
+
return i - e <= t && i + e >= t;
|
189 |
+
}
|
190 |
+
function j(t, e, i) {
|
191 |
+
let s, n, o;
|
192 |
+
for (s = 0, n = t.length; s < n; s++)
|
193 |
+
(o = t[s][i]),
|
194 |
+
isNaN(o) ||
|
195 |
+
((e.min = Math.min(e.min, o)), (e.max = Math.max(e.max, o)));
|
196 |
+
}
|
197 |
+
function H(t) {
|
198 |
+
return t * (D / 180);
|
199 |
+
}
|
200 |
+
function $(t) {
|
201 |
+
return t * (180 / D);
|
202 |
+
}
|
203 |
+
function Y(t) {
|
204 |
+
if (!o(t)) return;
|
205 |
+
let e = 1,
|
206 |
+
i = 0;
|
207 |
+
for (; Math.round(t * e) / e !== t; ) (e *= 10), i++;
|
208 |
+
return i;
|
209 |
+
}
|
210 |
+
function U(t, e) {
|
211 |
+
const i = e.x - t.x,
|
212 |
+
s = e.y - t.y,
|
213 |
+
n = Math.sqrt(i * i + s * s);
|
214 |
+
let o = Math.atan2(s, i);
|
215 |
+
return o < -0.5 * D && (o += O), { angle: o, distance: n };
|
216 |
+
}
|
217 |
+
function X(t, e) {
|
218 |
+
return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2));
|
219 |
+
}
|
220 |
+
function q(t, e) {
|
221 |
+
return ((t - e + C) % O) - D;
|
222 |
+
}
|
223 |
+
function K(t) {
|
224 |
+
return ((t % O) + O) % O;
|
225 |
+
}
|
226 |
+
function G(t, e, i, s) {
|
227 |
+
const n = K(t),
|
228 |
+
o = K(e),
|
229 |
+
a = K(i),
|
230 |
+
r = K(o - n),
|
231 |
+
l = K(a - n),
|
232 |
+
h = K(n - o),
|
233 |
+
c = K(n - a);
|
234 |
+
return n === o || n === a || (s && o === a) || (r > l && h < c);
|
235 |
+
}
|
236 |
+
function Z(t, e, i) {
|
237 |
+
return Math.max(e, Math.min(i, t));
|
238 |
+
}
|
239 |
+
function J(t) {
|
240 |
+
return Z(t, -32768, 32767);
|
241 |
+
}
|
242 |
+
function Q(t, e, i, s = 1e-6) {
|
243 |
+
return t >= Math.min(e, i) - s && t <= Math.max(e, i) + s;
|
244 |
+
}
|
245 |
+
function tt(t, e, i) {
|
246 |
+
i = i || ((i) => t[i] < e);
|
247 |
+
let s,
|
248 |
+
n = t.length - 1,
|
249 |
+
o = 0;
|
250 |
+
for (; n - o > 1; ) (s = (o + n) >> 1), i(s) ? (o = s) : (n = s);
|
251 |
+
return { lo: o, hi: n };
|
252 |
+
}
|
253 |
+
const et = (t, e, i, s) =>
|
254 |
+
tt(t, i, s ? (s) => t[s][e] <= i : (s) => t[s][e] < i),
|
255 |
+
it = (t, e, i) => tt(t, i, (s) => t[s][e] >= i);
|
256 |
+
function st(t, e, i) {
|
257 |
+
let s = 0,
|
258 |
+
n = t.length;
|
259 |
+
for (; s < n && t[s] < e; ) s++;
|
260 |
+
for (; n > s && t[n - 1] > i; ) n--;
|
261 |
+
return s > 0 || n < t.length ? t.slice(s, n) : t;
|
262 |
+
}
|
263 |
+
const nt = ["push", "pop", "shift", "splice", "unshift"];
|
264 |
+
function ot(t, e) {
|
265 |
+
t._chartjs
|
266 |
+
? t._chartjs.listeners.push(e)
|
267 |
+
: (Object.defineProperty(t, "_chartjs", {
|
268 |
+
configurable: !0,
|
269 |
+
enumerable: !1,
|
270 |
+
value: { listeners: [e] },
|
271 |
+
}),
|
272 |
+
nt.forEach((e) => {
|
273 |
+
const i = "_onData" + w(e),
|
274 |
+
s = t[e];
|
275 |
+
Object.defineProperty(t, e, {
|
276 |
+
configurable: !0,
|
277 |
+
enumerable: !1,
|
278 |
+
value(...e) {
|
279 |
+
const n = s.apply(this, e);
|
280 |
+
return (
|
281 |
+
t._chartjs.listeners.forEach((t) => {
|
282 |
+
"function" == typeof t[i] && t[i](...e);
|
283 |
+
}),
|
284 |
+
n
|
285 |
+
);
|
286 |
+
},
|
287 |
+
});
|
288 |
+
}));
|
289 |
+
}
|
290 |
+
function at(t, e) {
|
291 |
+
const i = t._chartjs;
|
292 |
+
if (!i) return;
|
293 |
+
const s = i.listeners,
|
294 |
+
n = s.indexOf(e);
|
295 |
+
-1 !== n && s.splice(n, 1),
|
296 |
+
s.length > 0 ||
|
297 |
+
(nt.forEach((e) => {
|
298 |
+
delete t[e];
|
299 |
+
}),
|
300 |
+
delete t._chartjs);
|
301 |
+
}
|
302 |
+
function rt(t) {
|
303 |
+
const e = new Set();
|
304 |
+
let i, s;
|
305 |
+
for (i = 0, s = t.length; i < s; ++i) e.add(t[i]);
|
306 |
+
return e.size === s ? t : Array.from(e);
|
307 |
+
}
|
308 |
+
const lt =
|
309 |
"undefined" == typeof window
|
310 |
? function (t) {
|
311 |
return t();
|
312 |
}
|
313 |
: window.requestAnimationFrame;
|
314 |
+
function ht(t, e, i) {
|
315 |
+
const s = i || ((t) => Array.prototype.slice.call(t));
|
316 |
+
let n = !1,
|
317 |
+
o = [];
|
318 |
+
return function (...i) {
|
319 |
+
(o = s(i)),
|
320 |
+
n ||
|
321 |
+
((n = !0),
|
322 |
+
lt.call(window, () => {
|
323 |
+
(n = !1), t.apply(e, o);
|
324 |
}));
|
325 |
};
|
326 |
}
|
327 |
+
function ct(t, e) {
|
328 |
let i;
|
329 |
return function (...s) {
|
330 |
return (
|
332 |
);
|
333 |
};
|
334 |
}
|
335 |
+
const dt = (t) => ("start" === t ? "left" : "end" === t ? "right" : "center"),
|
336 |
+
ut = (t, e, i) => ("start" === t ? e : "end" === t ? i : (e + i) / 2),
|
337 |
+
ft = (t, e, i, s) =>
|
338 |
t === (s ? "left" : "right") ? i : "center" === t ? (e + i) / 2 : e;
|
339 |
+
function gt(t, e, i) {
|
340 |
+
const s = e.length;
|
341 |
+
let n = 0,
|
342 |
+
o = s;
|
343 |
+
if (t._sorted) {
|
344 |
+
const { iScale: a, _parsed: r } = t,
|
345 |
+
l = a.axis,
|
346 |
+
{ min: h, max: c, minDefined: d, maxDefined: u } = a.getUserBounds();
|
347 |
+
d &&
|
348 |
+
(n = Z(
|
349 |
+
Math.min(
|
350 |
+
et(r, a.axis, h).lo,
|
351 |
+
i ? s : et(e, l, a.getPixelForValue(h)).lo
|
352 |
+
),
|
353 |
+
0,
|
354 |
+
s - 1
|
355 |
+
)),
|
356 |
+
(o = u
|
357 |
+
? Z(
|
358 |
+
Math.max(
|
359 |
+
et(r, a.axis, c, !0).hi + 1,
|
360 |
+
i ? 0 : et(e, l, a.getPixelForValue(c), !0).hi + 1
|
361 |
+
),
|
362 |
+
n,
|
363 |
+
s
|
364 |
+
) - n
|
365 |
+
: s - n);
|
366 |
+
}
|
367 |
+
return { start: n, count: o };
|
368 |
+
}
|
369 |
+
function pt(t) {
|
370 |
+
const { xScale: e, yScale: i, _scaleRanges: s } = t,
|
371 |
+
n = { xmin: e.min, xmax: e.max, ymin: i.min, ymax: i.max };
|
372 |
+
if (!s) return (t._scaleRanges = n), !0;
|
373 |
+
const o =
|
374 |
+
s.xmin !== e.min ||
|
375 |
+
s.xmax !== e.max ||
|
376 |
+
s.ymin !== i.min ||
|
377 |
+
s.ymax !== i.max;
|
378 |
+
return Object.assign(s, n), o;
|
379 |
+
}
|
380 |
+
var mt = new (class {
|
381 |
constructor() {
|
382 |
(this._request = null),
|
383 |
(this._charts = new Map()),
|
399 |
_refresh() {
|
400 |
this._request ||
|
401 |
((this._running = !0),
|
402 |
+
(this._request = lt.call(window, () => {
|
403 |
this._update(),
|
404 |
(this._request = null),
|
405 |
this._running && this._refresh();
|
480 |
}
|
481 |
})();
|
482 |
/*!
|
483 |
+
* @kurkle/color v0.2.1
|
484 |
* https://github.com/kurkle/color#readme
|
485 |
+
* (c) 2022 Jukka Kurkela
|
486 |
* Released under the MIT License
|
487 |
+
*/ function bt(t) {
|
488 |
+
return (t + 0.5) | 0;
|
489 |
+
}
|
490 |
+
const xt = (t, e, i) => Math.max(Math.min(t, i), e);
|
491 |
+
function _t(t) {
|
492 |
+
return xt(bt(2.55 * t), 0, 255);
|
493 |
+
}
|
494 |
+
function yt(t) {
|
495 |
+
return xt(bt(255 * t), 0, 255);
|
496 |
+
}
|
497 |
+
function vt(t) {
|
498 |
+
return xt(bt(t / 2.55) / 100, 0, 1);
|
499 |
+
}
|
500 |
+
function wt(t) {
|
501 |
+
return xt(bt(100 * t), 0, 100);
|
502 |
+
}
|
503 |
+
const Mt = {
|
504 |
0: 0,
|
505 |
1: 1,
|
506 |
2: 2,
|
524 |
e: 14,
|
525 |
f: 15,
|
526 |
},
|
527 |
+
kt = [..."0123456789ABCDEF"],
|
528 |
+
St = (t) => kt[15 & t],
|
529 |
+
Pt = (t) => kt[(240 & t) >> 4] + kt[15 & t],
|
530 |
+
Dt = (t) => (240 & t) >> 4 == (15 & t);
|
531 |
+
function Ot(t) {
|
532 |
+
var e = ((t) => Dt(t.r) && Dt(t.g) && Dt(t.b) && Dt(t.a))(t) ? St : Pt;
|
533 |
+
return t
|
534 |
+
? "#" +
|
535 |
+
e(t.r) +
|
536 |
+
e(t.g) +
|
537 |
+
e(t.b) +
|
538 |
+
((t, e) => (t < 255 ? e(t) : ""))(t.a, e)
|
539 |
+
: void 0;
|
540 |
+
}
|
541 |
+
const Ct =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;
|
543 |
+
function At(t, e, i) {
|
544 |
const s = e * Math.min(i, 1 - i),
|
545 |
n = (e, n = (e + t / 30) % 12) =>
|
546 |
i - s * Math.max(Math.min(n - 3, 9 - n, 1), -1);
|
547 |
return [n(0), n(8), n(4)];
|
548 |
}
|
549 |
+
function Tt(t, e, i) {
|
550 |
const s = (s, n = (s + t / 60) % 6) =>
|
551 |
i - i * e * Math.max(Math.min(n, 4 - n, 1), 0);
|
552 |
return [s(5), s(3), s(1)];
|
553 |
}
|
554 |
+
function Lt(t, e, i) {
|
555 |
+
const s = At(t, 1, 0.5);
|
556 |
let n;
|
557 |
for (
|
558 |
e + i > 1 && ((n = 1 / (e + i)), (e *= n), (i *= n)), n = 0;
|
562 |
(s[n] *= 1 - e - i), (s[n] += e);
|
563 |
return s;
|
564 |
}
|
565 |
+
function Et(t) {
|
566 |
const e = t.r / 255,
|
567 |
i = t.g / 255,
|
568 |
s = t.b / 255,
|
574 |
n !== o &&
|
575 |
((h = n - o),
|
576 |
(l = a > 0.5 ? h / (2 - n - o) : h / (n + o)),
|
577 |
+
(r = (function (t, e, i, s, n) {
|
578 |
+
return t === n
|
579 |
+
? (e - i) / s + (e < i ? 6 : 0)
|
580 |
+
: e === n
|
581 |
+
? (i - t) / s + 2
|
582 |
+
: (t - e) / s + 4;
|
583 |
+
})(e, i, s, h, n)),
|
584 |
(r = 60 * r + 0.5)),
|
585 |
[0 | r, l || 0, a]
|
586 |
);
|
587 |
}
|
588 |
+
function Rt(t, e, i, s) {
|
589 |
+
return (Array.isArray(e) ? t(e[0], e[1], e[2]) : t(e, i, s)).map(yt);
|
590 |
}
|
591 |
+
function It(t, e, i) {
|
592 |
+
return Rt(At, t, e, i);
|
593 |
}
|
594 |
+
function zt(t) {
|
595 |
return ((t % 360) + 360) % 360;
|
596 |
}
|
597 |
+
function Ft(t) {
|
598 |
+
const e = Ct.exec(t);
|
599 |
let i,
|
600 |
s = 255;
|
601 |
if (!e) return;
|
602 |
+
e[5] !== i && (s = e[6] ? _t(+e[5]) : yt(+e[5]));
|
603 |
+
const n = zt(+e[2]),
|
604 |
o = +e[3] / 100,
|
605 |
a = +e[4] / 100;
|
606 |
return (
|
607 |
(i =
|
608 |
"hwb" === e[1]
|
609 |
? (function (t, e, i) {
|
610 |
+
return Rt(Lt, t, e, i);
|
611 |
})(n, o, a)
|
612 |
: "hsv" === e[1]
|
613 |
? (function (t, e, i) {
|
614 |
+
return Rt(Tt, t, e, i);
|
615 |
})(n, o, a)
|
616 |
+
: It(n, o, a)),
|
617 |
{ r: i[0], g: i[1], b: i[2], a: s }
|
618 |
);
|
619 |
}
|
620 |
+
const Vt = {
|
621 |
x: "dark",
|
622 |
Z: "light",
|
623 |
Y: "re",
|
646 |
I: "ightg",
|
647 |
J: "wh",
|
648 |
},
|
649 |
+
Bt = {
|
650 |
OiceXe: "f0f8ff",
|
651 |
antiquewEte: "faebd7",
|
652 |
aqua: "ffff",
|
796 |
Lw: "ffff00",
|
797 |
LwgYF: "9acd32",
|
798 |
};
|
799 |
+
let Nt;
|
800 |
+
function Wt(t) {
|
801 |
+
Nt ||
|
802 |
+
((Nt = (function () {
|
803 |
const t = {},
|
804 |
+
e = Object.keys(Bt),
|
805 |
+
i = Object.keys(Vt);
|
806 |
let s, n, o, a, r;
|
807 |
for (s = 0; s < e.length; s++) {
|
808 |
for (a = r = e[s], n = 0; n < i.length; n++)
|
809 |
+
(o = i[n]), (r = r.replace(o, Vt[o]));
|
810 |
+
(o = parseInt(Bt[a], 16)),
|
811 |
(t[r] = [(o >> 16) & 255, (o >> 8) & 255, 255 & o]);
|
812 |
}
|
813 |
return t;
|
814 |
})()),
|
815 |
+
(Nt.transparent = [0, 0, 0, 0]));
|
816 |
+
const e = Nt[t.toLowerCase()];
|
817 |
return e && { r: e[0], g: e[1], b: e[2], a: 4 === e.length ? e[3] : 255 };
|
818 |
}
|
819 |
+
const jt =
|
820 |
+
/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;
|
821 |
+
const Ht = (t) =>
|
822 |
+
t <= 0.0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - 0.055,
|
823 |
+
$t = (t) => (t <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4));
|
824 |
+
function Yt(t, e, i) {
|
825 |
if (t) {
|
826 |
+
let s = Et(t);
|
827 |
(s[e] = Math.max(0, Math.min(s[e] + s[e] * i, 0 === e ? 360 : 1))),
|
828 |
+
(s = It(s)),
|
829 |
(t.r = s[0]),
|
830 |
(t.g = s[1]),
|
831 |
(t.b = s[2]);
|
832 |
}
|
833 |
}
|
834 |
+
function Ut(t, e) {
|
835 |
return t ? Object.assign(e || {}, t) : t;
|
836 |
}
|
837 |
+
function Xt(t) {
|
838 |
var e = { r: 0, g: 0, b: 0, a: 255 };
|
839 |
return (
|
840 |
Array.isArray(t)
|
841 |
? t.length >= 3 &&
|
842 |
((e = { r: t[0], g: t[1], b: t[2], a: 255 }),
|
843 |
+
t.length > 3 && (e.a = yt(t[3])))
|
844 |
+
: ((e = Ut(t, { r: 0, g: 0, b: 0, a: 1 })).a = yt(e.a)),
|
845 |
e
|
846 |
);
|
847 |
}
|
848 |
+
function qt(t) {
|
849 |
return "r" === t.charAt(0)
|
850 |
? (function (t) {
|
851 |
+
const e = jt.exec(t);
|
852 |
let i,
|
853 |
s,
|
854 |
n,
|
856 |
if (e) {
|
857 |
if (e[7] !== i) {
|
858 |
const t = +e[7];
|
859 |
+
o = e[8] ? _t(t) : xt(255 * t, 0, 255);
|
860 |
}
|
861 |
return (
|
862 |
(i = +e[1]),
|
863 |
(s = +e[3]),
|
864 |
(n = +e[5]),
|
865 |
+
(i = 255 & (e[2] ? _t(i) : xt(i, 0, 255))),
|
866 |
+
(s = 255 & (e[4] ? _t(s) : xt(s, 0, 255))),
|
867 |
+
(n = 255 & (e[6] ? _t(n) : xt(n, 0, 255))),
|
868 |
{ r: i, g: s, b: n, a: o }
|
869 |
);
|
870 |
}
|
871 |
})(t)
|
872 |
+
: Ft(t);
|
873 |
}
|
874 |
+
class Kt {
|
875 |
constructor(t) {
|
876 |
+
if (t instanceof Kt) return t;
|
877 |
const e = typeof t;
|
878 |
let i;
|
879 |
var s, n, o;
|
880 |
"object" === e
|
881 |
+
? (i = Xt(t))
|
882 |
: "string" === e &&
|
883 |
((o = (s = t).length),
|
884 |
"#" === s[0] &&
|
885 |
(4 === o || 5 === o
|
886 |
? (n = {
|
887 |
+
r: 255 & (17 * Mt[s[1]]),
|
888 |
+
g: 255 & (17 * Mt[s[2]]),
|
889 |
+
b: 255 & (17 * Mt[s[3]]),
|
890 |
+
a: 5 === o ? 17 * Mt[s[4]] : 255,
|
891 |
})
|
892 |
: (7 !== o && 9 !== o) ||
|
893 |
(n = {
|
894 |
+
r: (Mt[s[1]] << 4) | Mt[s[2]],
|
895 |
+
g: (Mt[s[3]] << 4) | Mt[s[4]],
|
896 |
+
b: (Mt[s[5]] << 4) | Mt[s[6]],
|
897 |
+
a: 9 === o ? (Mt[s[7]] << 4) | Mt[s[8]] : 255,
|
898 |
})),
|
899 |
+
(i = n || Wt(t) || qt(t))),
|
900 |
(this._rgb = i),
|
901 |
(this._valid = !!i);
|
902 |
}
|
904 |
return this._valid;
|
905 |
}
|
906 |
get rgb() {
|
907 |
+
var t = Ut(this._rgb);
|
908 |
+
return t && (t.a = vt(t.a)), t;
|
909 |
}
|
910 |
set rgb(t) {
|
911 |
+
this._rgb = Xt(t);
|
912 |
}
|
913 |
rgbString() {
|
914 |
return this._valid
|
915 |
? (t = this._rgb) &&
|
916 |
(t.a < 255
|
917 |
+
? `rgba(${t.r}, ${t.g}, ${t.b}, ${vt(t.a)})`
|
918 |
: `rgb(${t.r}, ${t.g}, ${t.b})`)
|
919 |
+
: void 0;
|
920 |
var t;
|
921 |
}
|
922 |
hexString() {
|
923 |
+
return this._valid ? Ot(this._rgb) : void 0;
|
924 |
}
|
925 |
hslString() {
|
926 |
return this._valid
|
927 |
? (function (t) {
|
928 |
if (!t) return;
|
929 |
+
const e = Et(t),
|
930 |
i = e[0],
|
931 |
+
s = wt(e[1]),
|
932 |
+
n = wt(e[2]);
|
933 |
return t.a < 255
|
934 |
+
? `hsla(${i}, ${s}%, ${n}%, ${vt(t.a)})`
|
935 |
: `hsl(${i}, ${s}%, ${n}%)`;
|
936 |
})(this._rgb)
|
937 |
+
: void 0;
|
938 |
}
|
939 |
mix(t, e) {
|
|
|
940 |
if (t) {
|
941 |
+
const i = this.rgb,
|
942 |
+
s = t.rgb;
|
943 |
+
let n;
|
944 |
+
const o = e === n ? 0.5 : e,
|
945 |
+
a = 2 * o - 1,
|
946 |
+
r = i.a - s.a,
|
947 |
+
l = ((a * r == -1 ? a : (a + r) / (1 + a * r)) + 1) / 2;
|
948 |
+
(n = 1 - l),
|
949 |
+
(i.r = 255 & (l * i.r + n * s.r + 0.5)),
|
950 |
+
(i.g = 255 & (l * i.g + n * s.g + 0.5)),
|
951 |
+
(i.b = 255 & (l * i.b + n * s.b + 0.5)),
|
952 |
+
(i.a = o * i.a + (1 - o) * s.a),
|
953 |
+
(this.rgb = i);
|
954 |
}
|
955 |
+
return this;
|
956 |
+
}
|
957 |
+
interpolate(t, e) {
|
958 |
+
return (
|
959 |
+
t &&
|
960 |
+
(this._rgb = (function (t, e, i) {
|
961 |
+
const s = $t(vt(t.r)),
|
962 |
+
n = $t(vt(t.g)),
|
963 |
+
o = $t(vt(t.b));
|
964 |
+
return {
|
965 |
+
r: yt(Ht(s + i * ($t(vt(e.r)) - s))),
|
966 |
+
g: yt(Ht(n + i * ($t(vt(e.g)) - n))),
|
967 |
+
b: yt(Ht(o + i * ($t(vt(e.b)) - o))),
|
968 |
+
a: t.a + i * (e.a - t.a),
|
969 |
+
};
|
970 |
+
})(this._rgb, t._rgb, e)),
|
971 |
+
this
|
972 |
+
);
|
973 |
}
|
974 |
clone() {
|
975 |
+
return new Kt(this.rgb);
|
976 |
}
|
977 |
alpha(t) {
|
978 |
+
return (this._rgb.a = yt(t)), this;
|
979 |
}
|
980 |
clearer(t) {
|
981 |
return (this._rgb.a *= 1 - t), this;
|
982 |
}
|
983 |
greyscale() {
|
984 |
const t = this._rgb,
|
985 |
+
e = bt(0.3 * t.r + 0.59 * t.g + 0.11 * t.b);
|
986 |
return (t.r = t.g = t.b = e), this;
|
987 |
}
|
988 |
opaquer(t) {
|
993 |
return (t.r = 255 - t.r), (t.g = 255 - t.g), (t.b = 255 - t.b), this;
|
994 |
}
|
995 |
lighten(t) {
|
996 |
+
return Yt(this._rgb, 2, t), this;
|
997 |
}
|
998 |
darken(t) {
|
999 |
+
return Yt(this._rgb, 2, -t), this;
|
1000 |
}
|
1001 |
saturate(t) {
|
1002 |
+
return Yt(this._rgb, 1, t), this;
|
1003 |
}
|
1004 |
desaturate(t) {
|
1005 |
+
return Yt(this._rgb, 1, -t), this;
|
1006 |
}
|
1007 |
rotate(t) {
|
1008 |
return (
|
1009 |
(function (t, e) {
|
1010 |
+
var i = Et(t);
|
1011 |
+
(i[0] = zt(i[0] + e)),
|
1012 |
+
(i = It(i)),
|
1013 |
(t.r = i[0]),
|
1014 |
(t.g = i[1]),
|
1015 |
(t.b = i[2]);
|
1018 |
);
|
1019 |
}
|
1020 |
}
|
1021 |
+
function Gt(t) {
|
1022 |
+
return new Kt(t);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1023 |
}
|
1024 |
+
function Zt(t) {
|
1025 |
+
if (t && "object" == typeof t) {
|
1026 |
+
const e = t.toString();
|
1027 |
+
return "[object CanvasPattern]" === e || "[object CanvasGradient]" === e;
|
1028 |
+
}
|
1029 |
+
return !1;
|
1030 |
}
|
1031 |
+
function Jt(t) {
|
1032 |
+
return Zt(t) ? t : Gt(t);
|
|
|
|
|
|
|
|
|
|
|
|
|
1033 |
}
|
1034 |
+
function Qt(t) {
|
1035 |
+
return Zt(t) ? t : Gt(t).saturate(0.5).darken(0.1).hexString();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
}
|
1037 |
+
const te = Object.create(null),
|
1038 |
+
ee = Object.create(null);
|
1039 |
+
function ie(t, e) {
|
1040 |
+
if (!e) return t;
|
1041 |
+
const i = e.split(".");
|
1042 |
+
for (let e = 0, s = i.length; e < s; ++e) {
|
1043 |
+
const s = i[e];
|
1044 |
+
t = t[s] || (t[s] = Object.create(null));
|
|
|
1045 |
}
|
1046 |
return t;
|
1047 |
}
|
1048 |
+
function se(t, e, i) {
|
1049 |
+
return "string" == typeof e ? m(ie(t, e), i) : m(ie(t, ""), e);
|
1050 |
}
|
1051 |
+
var ne = new (class {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1052 |
constructor(t) {
|
1053 |
(this.animation = void 0),
|
1054 |
(this.backgroundColor = "rgba(0,0,0,0.1)"),
|
1072 |
weight: null,
|
1073 |
}),
|
1074 |
(this.hover = {}),
|
1075 |
+
(this.hoverBackgroundColor = (t, e) => Qt(e.backgroundColor)),
|
1076 |
+
(this.hoverBorderColor = (t, e) => Qt(e.borderColor)),
|
1077 |
+
(this.hoverColor = (t, e) => Qt(e.color)),
|
1078 |
(this.indexAxis = "x"),
|
1079 |
+
(this.interaction = {
|
1080 |
+
mode: "nearest",
|
1081 |
+
intersect: !0,
|
1082 |
+
includeInvisible: !1,
|
1083 |
+
}),
|
1084 |
(this.maintainAspectRatio = !0),
|
1085 |
(this.onHover = null),
|
1086 |
(this.onClick = null),
|
1094 |
this.describe(t);
|
1095 |
}
|
1096 |
set(t, e) {
|
1097 |
+
return se(this, t, e);
|
1098 |
}
|
1099 |
get(t) {
|
1100 |
+
return ie(this, t);
|
1101 |
}
|
1102 |
describe(t, e) {
|
1103 |
+
return se(ee, t, e);
|
1104 |
}
|
1105 |
override(t, e) {
|
1106 |
+
return se(te, t, e);
|
1107 |
}
|
1108 |
route(t, e, i, s) {
|
1109 |
+
const o = ie(this, t),
|
1110 |
+
a = ie(this, i),
|
1111 |
+
l = "_" + e;
|
1112 |
+
Object.defineProperties(o, {
|
1113 |
+
[l]: { value: o[e], writable: !0 },
|
1114 |
[e]: {
|
1115 |
enumerable: !0,
|
1116 |
get() {
|
1117 |
+
const t = this[l],
|
1118 |
+
e = a[s];
|
1119 |
+
return n(t) ? Object.assign({}, e, t) : r(t, e);
|
1120 |
},
|
1121 |
set(t) {
|
1122 |
+
this[l] = t;
|
1123 |
},
|
1124 |
},
|
1125 |
});
|
1130 |
hover: { _fallback: "interaction" },
|
1131 |
interaction: { _scriptable: !1, _indexable: !1 },
|
1132 |
});
|
1133 |
+
function oe() {
|
1134 |
+
return "undefined" != typeof window && "undefined" != typeof document;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1135 |
}
|
1136 |
+
function ae(t) {
|
1137 |
+
let e = t.parentNode;
|
1138 |
+
return e && "[object ShadowRoot]" === e.toString() && (e = e.host), e;
|
|
|
|
|
|
|
1139 |
}
|
1140 |
+
function re(t, e, i) {
|
1141 |
+
let s;
|
1142 |
+
return (
|
1143 |
+
"string" == typeof t
|
1144 |
+
? ((s = parseInt(t, 10)),
|
1145 |
+
-1 !== t.indexOf("%") && (s = (s / 100) * e.parentNode[i]))
|
1146 |
+
: (s = t),
|
1147 |
+
s
|
1148 |
+
);
|
1149 |
}
|
1150 |
+
const le = (t) => window.getComputedStyle(t, null);
|
1151 |
+
function he(t, e) {
|
1152 |
+
return le(t).getPropertyValue(e);
|
1153 |
}
|
1154 |
+
const ce = ["top", "right", "bottom", "left"];
|
1155 |
+
function de(t, e, i) {
|
1156 |
+
const s = {};
|
1157 |
+
i = i ? "-" + i : "";
|
1158 |
+
for (let n = 0; n < 4; n++) {
|
1159 |
+
const o = ce[n];
|
1160 |
+
s[o] = parseFloat(t[e + "-" + o + i]) || 0;
|
1161 |
+
}
|
1162 |
+
return (s.width = s.left + s.right), (s.height = s.top + s.bottom), s;
|
1163 |
}
|
1164 |
+
function ue(t, e) {
|
1165 |
+
if ("native" in t) return t;
|
1166 |
+
const { canvas: i, currentDevicePixelRatio: s } = e,
|
1167 |
+
n = le(i),
|
1168 |
+
o = "border-box" === n.boxSizing,
|
1169 |
+
a = de(n, "padding"),
|
1170 |
+
r = de(n, "border", "width"),
|
1171 |
+
{
|
1172 |
+
x: l,
|
1173 |
+
y: h,
|
1174 |
+
box: c,
|
1175 |
+
} = (function (t, e) {
|
1176 |
+
const i = t.touches,
|
1177 |
+
s = i && i.length ? i[0] : t,
|
1178 |
+
{ offsetX: n, offsetY: o } = s;
|
1179 |
+
let a,
|
1180 |
+
r,
|
1181 |
+
l = !1;
|
1182 |
+
if (
|
1183 |
+
((t, e, i) => (t > 0 || e > 0) && (!i || !i.shadowRoot))(
|
1184 |
+
n,
|
1185 |
+
o,
|
1186 |
+
t.target
|
1187 |
+
)
|
1188 |
+
)
|
1189 |
+
(a = n), (r = o);
|
1190 |
+
else {
|
1191 |
+
const t = e.getBoundingClientRect();
|
1192 |
+
(a = s.clientX - t.left), (r = s.clientY - t.top), (l = !0);
|
1193 |
+
}
|
1194 |
+
return { x: a, y: r, box: l };
|
1195 |
+
})(t, i),
|
1196 |
+
d = a.left + (c && r.left),
|
1197 |
+
u = a.top + (c && r.top);
|
1198 |
+
let { width: f, height: g } = e;
|
1199 |
+
return (
|
1200 |
+
o && ((f -= a.width + r.width), (g -= a.height + r.height)),
|
1201 |
+
{
|
1202 |
+
x: Math.round((((l - d) / f) * i.width) / s),
|
1203 |
+
y: Math.round((((h - u) / g) * i.height) / s),
|
1204 |
+
}
|
1205 |
+
);
|
1206 |
}
|
1207 |
+
const fe = (t) => Math.round(10 * t) / 10;
|
1208 |
+
function ge(t, e, i, s) {
|
1209 |
+
const n = le(t),
|
1210 |
+
o = de(n, "margin"),
|
1211 |
+
a = re(n.maxWidth, t, "clientWidth") || A,
|
1212 |
+
r = re(n.maxHeight, t, "clientHeight") || A,
|
1213 |
+
l = (function (t, e, i) {
|
1214 |
+
let s, n;
|
1215 |
+
if (void 0 === e || void 0 === i) {
|
1216 |
+
const o = ae(t);
|
1217 |
+
if (o) {
|
1218 |
+
const t = o.getBoundingClientRect(),
|
1219 |
+
a = le(o),
|
1220 |
+
r = de(a, "border", "width"),
|
1221 |
+
l = de(a, "padding");
|
1222 |
+
(e = t.width - l.width - r.width),
|
1223 |
+
(i = t.height - l.height - r.height),
|
1224 |
+
(s = re(a.maxWidth, o, "clientWidth")),
|
1225 |
+
(n = re(a.maxHeight, o, "clientHeight"));
|
1226 |
+
} else (e = t.clientWidth), (i = t.clientHeight);
|
1227 |
+
}
|
1228 |
+
return { width: e, height: i, maxWidth: s || A, maxHeight: n || A };
|
1229 |
+
})(t, e, i);
|
1230 |
+
let { width: h, height: c } = l;
|
1231 |
+
if ("content-box" === n.boxSizing) {
|
1232 |
+
const t = de(n, "border", "width"),
|
1233 |
+
e = de(n, "padding");
|
1234 |
+
(h -= e.width + t.width), (c -= e.height + t.height);
|
1235 |
+
}
|
1236 |
+
return (
|
1237 |
+
(h = Math.max(0, h - o.width)),
|
1238 |
+
(c = Math.max(0, s ? Math.floor(h / s) : c - o.height)),
|
1239 |
+
(h = fe(Math.min(h, a, l.maxWidth))),
|
1240 |
+
(c = fe(Math.min(c, r, l.maxHeight))),
|
1241 |
+
h && !c && (c = fe(h / 2)),
|
1242 |
+
{ width: h, height: c }
|
1243 |
+
);
|
1244 |
}
|
1245 |
+
function pe(t, e, i) {
|
1246 |
+
const s = e || 1,
|
1247 |
+
n = Math.floor(t.height * s),
|
1248 |
+
o = Math.floor(t.width * s);
|
1249 |
+
(t.height = n / s), (t.width = o / s);
|
1250 |
+
const a = t.canvas;
|
1251 |
+
return (
|
1252 |
+
a.style &&
|
1253 |
+
(i || (!a.style.height && !a.style.width)) &&
|
1254 |
+
((a.style.height = `${t.height}px`), (a.style.width = `${t.width}px`)),
|
1255 |
+
(t.currentDevicePixelRatio !== s || a.height !== n || a.width !== o) &&
|
1256 |
+
((t.currentDevicePixelRatio = s),
|
1257 |
+
(a.height = n),
|
1258 |
+
(a.width = o),
|
1259 |
+
t.ctx.setTransform(s, 0, 0, s, 0, 0),
|
1260 |
+
!0)
|
1261 |
+
);
|
1262 |
}
|
1263 |
+
const me = (function () {
|
1264 |
+
let t = !1;
|
1265 |
+
try {
|
1266 |
+
const e = {
|
1267 |
+
get passive() {
|
1268 |
+
return (t = !0), !1;
|
1269 |
+
},
|
1270 |
+
};
|
1271 |
+
window.addEventListener("test", null, e),
|
1272 |
+
window.removeEventListener("test", null, e);
|
1273 |
+
} catch (t) {}
|
1274 |
+
return t;
|
1275 |
+
})();
|
1276 |
+
function be(t, e) {
|
1277 |
+
const i = he(t, e),
|
1278 |
+
s = i && i.match(/^(\d+)(\.\d+)?px$/);
|
1279 |
+
return s ? +s[1] : void 0;
|
1280 |
}
|
1281 |
+
function xe(t) {
|
1282 |
+
return !t || i(t.size) || i(t.family)
|
1283 |
? null
|
1284 |
: (t.style ? t.style + " " : "") +
|
1285 |
(t.weight ? t.weight + " " : "") +
|
1287 |
"px " +
|
1288 |
t.family;
|
1289 |
}
|
1290 |
+
function _e(t, e, i, s, n) {
|
1291 |
let o = e[n];
|
1292 |
return (
|
1293 |
o || ((o = e[n] = t.measureText(n).width), i.push(n)), o > s && (s = o), s
|
1294 |
);
|
1295 |
}
|
1296 |
+
function ye(t, e, i, n) {
|
1297 |
+
let o = ((n = n || {}).data = n.data || {}),
|
1298 |
+
a = (n.garbageCollect = n.garbageCollect || []);
|
1299 |
+
n.font !== e &&
|
1300 |
+
((o = n.data = {}), (a = n.garbageCollect = []), (n.font = e)),
|
1301 |
t.save(),
|
1302 |
(t.font = e);
|
1303 |
+
let r = 0;
|
1304 |
+
const l = i.length;
|
1305 |
+
let h, c, d, u, f;
|
1306 |
+
for (h = 0; h < l; h++)
|
1307 |
+
if (((u = i[h]), null != u && !0 !== s(u))) r = _e(t, o, a, r, u);
|
1308 |
+
else if (s(u))
|
1309 |
+
for (c = 0, d = u.length; c < d; c++)
|
1310 |
+
(f = u[c]), null == f || s(f) || (r = _e(t, o, a, r, f));
|
1311 |
t.restore();
|
1312 |
+
const g = a.length / 2;
|
1313 |
+
if (g > i.length) {
|
1314 |
+
for (h = 0; h < g; h++) delete o[a[h]];
|
1315 |
+
a.splice(0, g);
|
1316 |
}
|
1317 |
+
return r;
|
1318 |
}
|
1319 |
+
function ve(t, e, i) {
|
1320 |
const s = t.currentDevicePixelRatio,
|
1321 |
n = 0 !== i ? Math.max(i / 2, 0.5) : 0;
|
1322 |
return Math.round((e - n) * s) / s + n;
|
1323 |
}
|
1324 |
+
function we(t, e) {
|
1325 |
(e = e || t.getContext("2d")).save(),
|
1326 |
e.resetTransform(),
|
1327 |
e.clearRect(0, 0, t.width, t.height),
|
1328 |
e.restore();
|
1329 |
}
|
1330 |
+
function Me(t, e, i, s) {
|
1331 |
+
ke(t, e, i, s, null);
|
1332 |
+
}
|
1333 |
+
function ke(t, e, i, s, n) {
|
1334 |
+
let o, a, r, l, h, c;
|
1335 |
+
const d = e.pointStyle,
|
1336 |
+
u = e.rotation,
|
1337 |
+
f = e.radius;
|
1338 |
+
let g = (u || 0) * T;
|
1339 |
if (
|
1340 |
+
d &&
|
1341 |
+
"object" == typeof d &&
|
1342 |
+
((o = d.toString()),
|
1343 |
+
"[object HTMLImageElement]" === o || "[object HTMLCanvasElement]" === o)
|
1344 |
)
|
1345 |
return (
|
1346 |
t.save(),
|
1347 |
t.translate(i, s),
|
1348 |
+
t.rotate(g),
|
1349 |
+
t.drawImage(d, -d.width / 2, -d.height / 2, d.width, d.height),
|
1350 |
void t.restore()
|
1351 |
);
|
1352 |
+
if (!(isNaN(f) || f <= 0)) {
|
1353 |
+
switch ((t.beginPath(), d)) {
|
1354 |
default:
|
1355 |
+
n ? t.ellipse(i, s, n / 2, f, 0, 0, O) : t.arc(i, s, f, 0, O),
|
1356 |
+
t.closePath();
|
1357 |
break;
|
1358 |
case "triangle":
|
1359 |
+
t.moveTo(i + Math.sin(g) * f, s - Math.cos(g) * f),
|
1360 |
+
(g += R),
|
1361 |
+
t.lineTo(i + Math.sin(g) * f, s - Math.cos(g) * f),
|
1362 |
+
(g += R),
|
1363 |
+
t.lineTo(i + Math.sin(g) * f, s - Math.cos(g) * f),
|
1364 |
t.closePath();
|
1365 |
break;
|
1366 |
case "rectRounded":
|
1367 |
+
(h = 0.516 * f),
|
1368 |
+
(l = f - h),
|
1369 |
+
(a = Math.cos(g + E) * l),
|
1370 |
+
(r = Math.sin(g + E) * l),
|
1371 |
+
t.arc(i - a, s - r, h, g - D, g - L),
|
1372 |
+
t.arc(i + r, s - a, h, g - L, g),
|
1373 |
+
t.arc(i + a, s + r, h, g, g + L),
|
1374 |
+
t.arc(i - r, s + a, h, g + L, g + D),
|
1375 |
t.closePath();
|
1376 |
break;
|
1377 |
case "rect":
|
1378 |
+
if (!u) {
|
1379 |
+
(l = Math.SQRT1_2 * f),
|
1380 |
+
(c = n ? n / 2 : l),
|
1381 |
+
t.rect(i - c, s - l, 2 * c, 2 * l);
|
1382 |
break;
|
1383 |
}
|
1384 |
+
g += E;
|
1385 |
case "rectRot":
|
1386 |
+
(a = Math.cos(g) * f),
|
1387 |
+
(r = Math.sin(g) * f),
|
1388 |
+
t.moveTo(i - a, s - r),
|
1389 |
+
t.lineTo(i + r, s - a),
|
1390 |
+
t.lineTo(i + a, s + r),
|
1391 |
+
t.lineTo(i - r, s + a),
|
1392 |
t.closePath();
|
1393 |
break;
|
1394 |
case "crossRot":
|
1395 |
+
g += E;
|
1396 |
case "cross":
|
1397 |
+
(a = Math.cos(g) * f),
|
1398 |
+
(r = Math.sin(g) * f),
|
1399 |
+
t.moveTo(i - a, s - r),
|
1400 |
+
t.lineTo(i + a, s + r),
|
1401 |
+
t.moveTo(i + r, s - a),
|
1402 |
+
t.lineTo(i - r, s + a);
|
1403 |
break;
|
1404 |
case "star":
|
1405 |
+
(a = Math.cos(g) * f),
|
1406 |
+
(r = Math.sin(g) * f),
|
1407 |
+
t.moveTo(i - a, s - r),
|
1408 |
+
t.lineTo(i + a, s + r),
|
1409 |
+
t.moveTo(i + r, s - a),
|
1410 |
+
t.lineTo(i - r, s + a),
|
1411 |
+
(g += E),
|
1412 |
+
(a = Math.cos(g) * f),
|
1413 |
+
(r = Math.sin(g) * f),
|
1414 |
+
t.moveTo(i - a, s - r),
|
1415 |
+
t.lineTo(i + a, s + r),
|
1416 |
+
t.moveTo(i + r, s - a),
|
1417 |
+
t.lineTo(i - r, s + a);
|
1418 |
break;
|
1419 |
case "line":
|
1420 |
+
(a = n ? n / 2 : Math.cos(g) * f),
|
1421 |
+
(r = Math.sin(g) * f),
|
1422 |
+
t.moveTo(i - a, s - r),
|
1423 |
+
t.lineTo(i + a, s + r);
|
1424 |
break;
|
1425 |
case "dash":
|
1426 |
+
t.moveTo(i, s), t.lineTo(i + Math.cos(g) * f, s + Math.sin(g) * f);
|
1427 |
}
|
1428 |
t.fill(), e.borderWidth > 0 && t.stroke();
|
1429 |
}
|
1430 |
}
|
1431 |
+
function Se(t, e, i) {
|
1432 |
return (
|
1433 |
(i = i || 0.5),
|
1434 |
!e ||
|
1439 |
t.y < e.bottom + i)
|
1440 |
);
|
1441 |
}
|
1442 |
+
function Pe(t, e) {
|
1443 |
t.save(),
|
1444 |
t.beginPath(),
|
1445 |
t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top),
|
1446 |
t.clip();
|
1447 |
}
|
1448 |
+
function De(t) {
|
1449 |
t.restore();
|
1450 |
}
|
1451 |
+
function Oe(t, e, i, s, n) {
|
1452 |
if (!e) return t.lineTo(i.x, i.y);
|
1453 |
if ("middle" === n) {
|
1454 |
const s = (e.x + i.x) / 2;
|
1456 |
} else ("after" === n) != !!s ? t.lineTo(e.x, i.y) : t.lineTo(i.x, e.y);
|
1457 |
t.lineTo(i.x, i.y);
|
1458 |
}
|
1459 |
+
function Ce(t, e, i, s) {
|
1460 |
if (!e) return t.lineTo(i.x, i.y);
|
1461 |
t.bezierCurveTo(
|
1462 |
s ? e.cp1x : e.cp2x,
|
1467 |
i.y
|
1468 |
);
|
1469 |
}
|
1470 |
+
function Ae(t, e, n, o, a, r = {}) {
|
1471 |
+
const l = s(e) ? e : [e],
|
1472 |
+
h = r.strokeWidth > 0 && "" !== r.strokeColor;
|
1473 |
+
let c, d;
|
1474 |
for (
|
1475 |
t.save(),
|
1476 |
+
t.font = a.string,
|
1477 |
(function (t, e) {
|
1478 |
e.translation && t.translate(e.translation[0], e.translation[1]);
|
1479 |
+
i(e.rotation) || t.rotate(e.rotation);
|
1480 |
e.color && (t.fillStyle = e.color);
|
1481 |
e.textAlign && (t.textAlign = e.textAlign);
|
1482 |
e.textBaseline && (t.textBaseline = e.textBaseline);
|
1483 |
+
})(t, r),
|
1484 |
+
c = 0;
|
1485 |
+
c < l.length;
|
1486 |
+
++c
|
1487 |
)
|
1488 |
+
(d = l[c]),
|
1489 |
+
h &&
|
1490 |
+
(r.strokeColor && (t.strokeStyle = r.strokeColor),
|
1491 |
+
i(r.strokeWidth) || (t.lineWidth = r.strokeWidth),
|
1492 |
+
t.strokeText(d, n, o, r.maxWidth)),
|
1493 |
+
t.fillText(d, n, o, r.maxWidth),
|
1494 |
+
Te(t, n, o, d, r),
|
1495 |
+
(o += a.lineHeight);
|
1496 |
t.restore();
|
1497 |
}
|
1498 |
+
function Te(t, e, i, s, n) {
|
1499 |
if (n.strikethrough || n.underline) {
|
1500 |
const o = t.measureText(s),
|
1501 |
a = e - o.actualBoundingBoxLeft,
|
1511 |
t.stroke();
|
1512 |
}
|
1513 |
}
|
1514 |
+
function Le(t, e) {
|
1515 |
const { x: i, y: s, w: n, h: o, radius: a } = e;
|
1516 |
+
t.arc(i + a.topLeft, s + a.topLeft, a.topLeft, -L, D, !0),
|
1517 |
t.lineTo(i, s + o - a.bottomLeft),
|
1518 |
+
t.arc(i + a.bottomLeft, s + o - a.bottomLeft, a.bottomLeft, D, L, !0),
|
1519 |
t.lineTo(i + n - a.bottomRight, s + o),
|
1520 |
t.arc(
|
1521 |
i + n - a.bottomRight,
|
1522 |
s + o - a.bottomRight,
|
1523 |
a.bottomRight,
|
1524 |
+
L,
|
1525 |
0,
|
1526 |
!0
|
1527 |
),
|
1528 |
t.lineTo(i + n, s + a.topRight),
|
1529 |
+
t.arc(i + n - a.topRight, s + a.topRight, a.topRight, 0, -L, !0),
|
1530 |
t.lineTo(i + a.topLeft, s);
|
1531 |
}
|
1532 |
+
function Ee(t, e = [""], i = t, s, n = () => t[0]) {
|
1533 |
+
M(s) || (s = $e("_fallback", t));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1534 |
const o = {
|
1535 |
[Symbol.toStringTag]: "Object",
|
1536 |
_cacheable: !0,
|
1538 |
_rootScopes: i,
|
1539 |
_fallback: s,
|
1540 |
_getTarget: n,
|
1541 |
+
override: (n) => Ee([n, ...t], e, i, s),
|
1542 |
};
|
1543 |
return new Proxy(o, {
|
1544 |
deleteProperty: (e, i) => (
|
1545 |
delete e[i], delete e._keys, delete t[0][i], !0
|
1546 |
),
|
1547 |
get: (i, s) =>
|
1548 |
+
Ve(i, s, () =>
|
1549 |
(function (t, e, i, s) {
|
1550 |
let n;
|
1551 |
for (const o of e)
|
1552 |
+
if (((n = $e(ze(o, t), i)), M(n)))
|
1553 |
+
return Fe(t, n) ? je(i, s, t, n) : n;
|
1554 |
})(s, e, t, i)
|
1555 |
),
|
1556 |
getOwnPropertyDescriptor: (t, e) =>
|
1557 |
Reflect.getOwnPropertyDescriptor(t._scopes[0], e),
|
1558 |
getPrototypeOf: () => Reflect.getPrototypeOf(t[0]),
|
1559 |
+
has: (t, e) => Ye(t).includes(e),
|
1560 |
+
ownKeys: (t) => Ye(t),
|
1561 |
set(t, e, i) {
|
1562 |
const s = t._storage || (t._storage = n());
|
1563 |
return (t[e] = s[e] = i), delete t._keys, !0;
|
1564 |
},
|
1565 |
});
|
1566 |
}
|
1567 |
+
function Re(t, e, i, o) {
|
1568 |
+
const a = {
|
1569 |
_cacheable: !1,
|
1570 |
_proxy: t,
|
1571 |
_context: e,
|
1572 |
_subProxy: i,
|
1573 |
_stack: new Set(),
|
1574 |
+
_descriptors: Ie(t, o),
|
1575 |
+
setContext: (e) => Re(t, e, i, o),
|
1576 |
+
override: (s) => Re(t.override(s), e, i, o),
|
1577 |
};
|
1578 |
+
return new Proxy(a, {
|
1579 |
deleteProperty: (e, i) => (delete e[i], delete t[i], !0),
|
1580 |
get: (t, e, i) =>
|
1581 |
+
Ve(t, e, () =>
|
1582 |
(function (t, e, i) {
|
1583 |
+
const { _proxy: o, _context: a, _subProxy: r, _descriptors: l } = t;
|
1584 |
+
let h = o[e];
|
1585 |
+
k(h) &&
|
1586 |
+
l.isScriptable(e) &&
|
1587 |
+
(h = (function (t, e, i, s) {
|
1588 |
const { _proxy: n, _context: o, _subProxy: a, _stack: r } = i;
|
1589 |
if (r.has(t))
|
1590 |
throw new Error(
|
1593 |
r.add(t),
|
1594 |
(e = e(o, a || s)),
|
1595 |
r.delete(t),
|
1596 |
+
Fe(t, e) && (e = je(n._scopes, n, t, e));
|
1597 |
return e;
|
1598 |
+
})(e, h, t, i));
|
1599 |
+
s(h) &&
|
1600 |
+
h.length &&
|
1601 |
+
(h = (function (t, e, i, s) {
|
1602 |
const {
|
1603 |
+
_proxy: o,
|
1604 |
+
_context: a,
|
1605 |
+
_subProxy: r,
|
1606 |
+
_descriptors: l,
|
1607 |
} = i;
|
1608 |
+
if (M(a.index) && s(t)) e = e[a.index % e.length];
|
1609 |
+
else if (n(e[0])) {
|
1610 |
const i = e,
|
1611 |
+
s = o._scopes.filter((t) => t !== i);
|
1612 |
e = [];
|
1613 |
+
for (const n of i) {
|
1614 |
+
const i = je(s, o, t, n);
|
1615 |
+
e.push(Re(i, a, r && r[t], l));
|
1616 |
}
|
1617 |
}
|
1618 |
return e;
|
1619 |
+
})(e, h, t, l.isIndexable));
|
1620 |
+
Fe(e, h) && (h = Re(h, a, r && r[e], l));
|
1621 |
+
return h;
|
1622 |
})(t, e, i)
|
1623 |
),
|
1624 |
getOwnPropertyDescriptor: (e, i) =>
|
1633 |
set: (e, i, s) => ((t[i] = s), delete e[i], !0),
|
1634 |
});
|
1635 |
}
|
1636 |
+
function Ie(t, e = { scriptable: !0, indexable: !0 }) {
|
1637 |
const {
|
1638 |
_scriptable: i = e.scriptable,
|
1639 |
_indexable: s = e.indexable,
|
1643 |
allKeys: n,
|
1644 |
scriptable: i,
|
1645 |
indexable: s,
|
1646 |
+
isScriptable: k(i) ? i : () => i,
|
1647 |
+
isIndexable: k(s) ? s : () => s,
|
1648 |
};
|
1649 |
}
|
1650 |
+
const ze = (t, e) => (t ? t + w(e) : e),
|
1651 |
+
Fe = (t, e) =>
|
1652 |
+
n(e) &&
|
1653 |
"adapters" !== t &&
|
1654 |
(null === Object.getPrototypeOf(e) || e.constructor === Object);
|
1655 |
+
function Ve(t, e, i) {
|
1656 |
if (Object.prototype.hasOwnProperty.call(t, e)) return t[e];
|
1657 |
const s = i();
|
1658 |
return (t[e] = s), s;
|
1659 |
}
|
1660 |
+
function Be(t, e, i) {
|
1661 |
+
return k(t) ? t(e, i) : t;
|
1662 |
}
|
1663 |
+
const Ne = (t, e) => (!0 === t ? e : "string" == typeof t ? y(e, t) : void 0);
|
1664 |
+
function We(t, e, i, s, n) {
|
|
|
1665 |
for (const o of e) {
|
1666 |
+
const e = Ne(i, o);
|
1667 |
if (e) {
|
1668 |
t.add(e);
|
1669 |
+
const o = Be(e._fallback, i, n);
|
1670 |
+
if (M(o) && o !== i && o !== s) return o;
|
1671 |
+
} else if (!1 === e && M(s) && i !== s) return null;
|
1672 |
}
|
1673 |
return !1;
|
1674 |
}
|
1675 |
+
function je(t, e, i, o) {
|
1676 |
+
const a = e._rootScopes,
|
1677 |
+
r = Be(e._fallback, i, o),
|
1678 |
+
l = [...t, ...a],
|
1679 |
+
h = new Set();
|
1680 |
+
h.add(o);
|
1681 |
+
let c = He(h, l, i, r || i, o);
|
1682 |
return (
|
1683 |
+
null !== c &&
|
1684 |
+
(!M(r) || r === i || ((c = He(h, l, r, c, o)), null !== c)) &&
|
1685 |
+
Ee(Array.from(h), [""], a, r, () =>
|
1686 |
(function (t, e, i) {
|
1687 |
+
const o = t._getTarget();
|
1688 |
+
e in o || (o[e] = {});
|
1689 |
+
const a = o[e];
|
1690 |
+
if (s(a) && n(i)) return i;
|
1691 |
+
return a;
|
1692 |
+
})(e, i, o)
|
1693 |
)
|
1694 |
);
|
1695 |
}
|
1696 |
+
function He(t, e, i, s, n) {
|
1697 |
+
for (; i; ) i = We(t, e, i, s, n);
|
1698 |
return i;
|
1699 |
}
|
1700 |
+
function $e(t, e) {
|
1701 |
for (const i of e) {
|
1702 |
if (!i) continue;
|
1703 |
const e = i[t];
|
1704 |
+
if (M(e)) return e;
|
1705 |
}
|
1706 |
}
|
1707 |
+
function Ye(t) {
|
1708 |
let e = t._keys;
|
1709 |
return (
|
1710 |
e ||
|
1719 |
e
|
1720 |
);
|
1721 |
}
|
1722 |
+
function Ue(t, e, i, s) {
|
1723 |
+
const { iScale: n } = t,
|
1724 |
+
{ key: o = "r" } = this._parsing,
|
1725 |
+
a = new Array(s);
|
1726 |
+
let r, l, h, c;
|
1727 |
+
for (r = 0, l = s; r < l; ++r)
|
1728 |
+
(h = r + i), (c = e[h]), (a[r] = { r: n.parse(y(c, o), h) });
|
1729 |
+
return a;
|
1730 |
+
}
|
1731 |
+
const Xe = Number.EPSILON || 1e-14,
|
1732 |
+
qe = (t, e) => e < t.length && !t[e].skip && t[e],
|
1733 |
+
Ke = (t) => ("x" === t ? "y" : "x");
|
1734 |
+
function Ge(t, e, i, s) {
|
1735 |
const n = t.skip ? e : t,
|
1736 |
o = e,
|
1737 |
a = i.skip ? e : i,
|
1738 |
+
r = X(o, n),
|
1739 |
+
l = X(a, o);
|
1740 |
let h = r / (r + l),
|
1741 |
c = l / (r + l);
|
1742 |
(h = isNaN(h) ? 0 : h), (c = isNaN(c) ? 0 : c);
|
1747 |
next: { x: o.x + u * (a.x - n.x), y: o.y + u * (a.y - n.y) },
|
1748 |
};
|
1749 |
}
|
1750 |
+
function Ze(t, e = "x") {
|
1751 |
+
const i = Ke(e),
|
1752 |
s = t.length,
|
1753 |
n = Array(s).fill(0),
|
1754 |
o = Array(s);
|
1755 |
let a,
|
1756 |
r,
|
1757 |
l,
|
1758 |
+
h = qe(t, 0);
|
1759 |
for (a = 0; a < s; ++a)
|
1760 |
+
if (((r = l), (l = h), (h = qe(t, a + 1)), l)) {
|
1761 |
if (h) {
|
1762 |
const t = h[e] - l[e];
|
1763 |
n[a] = 0 !== t ? (h[i] - l[i]) / t : 0;
|
1764 |
}
|
1765 |
o[a] = r
|
1766 |
? h
|
1767 |
+
? z(n[a - 1]) !== z(n[a])
|
1768 |
? 0
|
1769 |
: (n[a - 1] + n[a]) / 2
|
1770 |
: n[a - 1]
|
1777 |
a,
|
1778 |
r,
|
1779 |
l,
|
1780 |
+
h = qe(t, 0);
|
1781 |
for (let c = 0; c < s - 1; ++c)
|
1782 |
(l = h),
|
1783 |
+
(h = qe(t, c + 1)),
|
1784 |
l &&
|
1785 |
h &&
|
1786 |
+
(N(e[c], 0, Xe)
|
1787 |
? (i[c] = i[c + 1] = 0)
|
1788 |
: ((n = i[c] / e[c]),
|
1789 |
(o = i[c + 1] / e[c]),
|
1794 |
(i[c + 1] = o * a * e[c]))));
|
1795 |
})(t, n, o),
|
1796 |
(function (t, e, i = "x") {
|
1797 |
+
const s = Ke(i),
|
1798 |
n = t.length;
|
1799 |
let o,
|
1800 |
a,
|
1801 |
r,
|
1802 |
+
l = qe(t, 0);
|
1803 |
for (let h = 0; h < n; ++h) {
|
1804 |
+
if (((a = r), (r = l), (l = qe(t, h + 1)), !r)) continue;
|
1805 |
const n = r[i],
|
1806 |
c = r[s];
|
1807 |
a &&
|
1815 |
}
|
1816 |
})(t, o, e);
|
1817 |
}
|
1818 |
+
function Je(t, e, i) {
|
1819 |
return Math.max(Math.min(t, i), e);
|
1820 |
}
|
1821 |
+
function Qe(t, e, i, s, n) {
|
1822 |
let o, a, r, l;
|
1823 |
if (
|
1824 |
(e.spanGaps && (t = t.filter((t) => !t.skip)),
|
1825 |
"monotone" === e.cubicInterpolationMode)
|
1826 |
)
|
1827 |
+
Ze(t, n);
|
1828 |
else {
|
1829 |
let i = s ? t[t.length - 1] : t[0];
|
1830 |
for (o = 0, a = t.length; o < a; ++o)
|
1831 |
(r = t[o]),
|
1832 |
+
(l = Ge(i, r, t[Math.min(o + 1, a - (s ? 0 : 1)) % a], e.tension)),
|
1833 |
(r.cp1x = l.previous.x),
|
1834 |
(r.cp1y = l.previous.y),
|
1835 |
(r.cp2x = l.next.x),
|
1843 |
n,
|
1844 |
o,
|
1845 |
a,
|
1846 |
+
r = Se(t[0], e);
|
1847 |
for (i = 0, s = t.length; i < s; ++i)
|
1848 |
(a = o),
|
1849 |
(o = r),
|
1850 |
+
(r = i < s - 1 && Se(t[i + 1], e)),
|
1851 |
o &&
|
1852 |
((n = t[i]),
|
1853 |
a &&
|
1854 |
+
((n.cp1x = Je(n.cp1x, e.left, e.right)),
|
1855 |
+
(n.cp1y = Je(n.cp1y, e.top, e.bottom))),
|
1856 |
r &&
|
1857 |
+
((n.cp2x = Je(n.cp2x, e.left, e.right)),
|
1858 |
+
(n.cp2y = Je(n.cp2y, e.top, e.bottom))));
|
1859 |
})(t, i);
|
1860 |
}
|
1861 |
+
const ti = (t) => 0 === t || 1 === t,
|
1862 |
+
ei = (t, e, i) => -Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - e) * O) / i),
|
1863 |
+
ii = (t, e, i) => Math.pow(2, -10 * t) * Math.sin(((t - e) * O) / i) + 1,
|
1864 |
+
si = {
|
|
|
1865 |
linear: (t) => t,
|
1866 |
easeInQuad: (t) => t * t,
|
1867 |
easeOutQuad: (t) => -t * (t - 2),
|
1883 |
(t /= 0.5) < 1
|
1884 |
? 0.5 * t * t * t * t * t
|
1885 |
: 0.5 * ((t -= 2) * t * t * t * t + 2),
|
1886 |
+
easeInSine: (t) => 1 - Math.cos(t * L),
|
1887 |
+
easeOutSine: (t) => Math.sin(t * L),
|
1888 |
+
easeInOutSine: (t) => -0.5 * (Math.cos(D * t) - 1),
|
1889 |
easeInExpo: (t) => (0 === t ? 0 : Math.pow(2, 10 * (t - 1))),
|
1890 |
easeOutExpo: (t) => (1 === t ? 1 : 1 - Math.pow(2, -10 * t)),
|
1891 |
easeInOutExpo: (t) =>
|
1892 |
+
ti(t)
|
1893 |
? t
|
1894 |
: t < 0.5
|
1895 |
? 0.5 * Math.pow(2, 10 * (2 * t - 1))
|
1900 |
(t /= 0.5) < 1
|
1901 |
? -0.5 * (Math.sqrt(1 - t * t) - 1)
|
1902 |
: 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),
|
1903 |
+
easeInElastic: (t) => (ti(t) ? t : ei(t, 0.075, 0.3)),
|
1904 |
+
easeOutElastic: (t) => (ti(t) ? t : ii(t, 0.075, 0.3)),
|
1905 |
easeInOutElastic(t) {
|
1906 |
const e = 0.1125;
|
1907 |
+
return ti(t)
|
1908 |
? t
|
1909 |
: t < 0.5
|
1910 |
+
? 0.5 * ei(2 * t, e, 0.45)
|
1911 |
+
: 0.5 + 0.5 * ii(2 * t - 1, e, 0.45);
|
1912 |
},
|
1913 |
easeInBack(t) {
|
1914 |
const e = 1.70158;
|
1924 |
? t * t * ((1 + (e *= 1.525)) * t - e) * 0.5
|
1925 |
: 0.5 * ((t -= 2) * t * ((1 + (e *= 1.525)) * t + e) + 2);
|
1926 |
},
|
1927 |
+
easeInBounce: (t) => 1 - si.easeOutBounce(1 - t),
|
1928 |
easeOutBounce(t) {
|
1929 |
const e = 7.5625,
|
1930 |
i = 2.75;
|
1938 |
},
|
1939 |
easeInOutBounce: (t) =>
|
1940 |
t < 0.5
|
1941 |
+
? 0.5 * si.easeInBounce(2 * t)
|
1942 |
+
: 0.5 * si.easeOutBounce(2 * t - 1) + 0.5,
|
1943 |
};
|
1944 |
+
function ni(t, e, i, s) {
|
1945 |
return { x: t.x + i * (e.x - t.x), y: t.y + i * (e.y - t.y) };
|
1946 |
}
|
1947 |
+
function oi(t, e, i, s) {
|
1948 |
return {
|
1949 |
x: t.x + i * (e.x - t.x),
|
1950 |
y:
|
1961 |
: t.y,
|
1962 |
};
|
1963 |
}
|
1964 |
+
function ai(t, e, i, s) {
|
1965 |
const n = { x: t.cp2x, y: t.cp2y },
|
1966 |
o = { x: e.cp1x, y: e.cp1y },
|
1967 |
+
a = ni(t, n, i),
|
1968 |
+
r = ni(n, o, i),
|
1969 |
+
l = ni(o, e, i),
|
1970 |
+
h = ni(a, r, i),
|
1971 |
+
c = ni(r, l, i);
|
1972 |
+
return ni(h, c, i);
|
1973 |
+
}
|
1974 |
+
const ri = new Map();
|
1975 |
+
function li(t, e, i) {
|
1976 |
return (function (t, e) {
|
1977 |
e = e || {};
|
1978 |
const i = t + JSON.stringify(e);
|
1979 |
+
let s = ri.get(i);
|
1980 |
+
return s || ((s = new Intl.NumberFormat(t, e)), ri.set(i, s)), s;
|
1981 |
})(e, i).format(t);
|
1982 |
}
|
1983 |
+
const hi = new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),
|
1984 |
+
ci = new RegExp(
|
1985 |
+
/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/
|
1986 |
+
);
|
1987 |
+
function di(t, e) {
|
1988 |
+
const i = ("" + t).match(hi);
|
1989 |
+
if (!i || "normal" === i[1]) return 1.2 * e;
|
1990 |
+
switch (((t = +i[2]), i[3])) {
|
1991 |
+
case "px":
|
1992 |
+
return t;
|
1993 |
+
case "%":
|
1994 |
+
t /= 100;
|
1995 |
+
}
|
1996 |
+
return e * t;
|
1997 |
+
}
|
1998 |
+
function ui(t, e) {
|
1999 |
+
const i = {},
|
2000 |
+
s = n(e),
|
2001 |
+
o = s ? Object.keys(e) : e,
|
2002 |
+
a = n(t) ? (s ? (i) => r(t[i], t[e[i]]) : (e) => t[e]) : () => t;
|
2003 |
+
for (const t of o) i[t] = +a(t) || 0;
|
2004 |
+
return i;
|
2005 |
+
}
|
2006 |
+
function fi(t) {
|
2007 |
+
return ui(t, { top: "y", right: "x", bottom: "y", left: "x" });
|
2008 |
+
}
|
2009 |
+
function gi(t) {
|
2010 |
+
return ui(t, ["topLeft", "topRight", "bottomLeft", "bottomRight"]);
|
2011 |
+
}
|
2012 |
+
function pi(t) {
|
2013 |
+
const e = fi(t);
|
2014 |
+
return (e.width = e.left + e.right), (e.height = e.top + e.bottom), e;
|
2015 |
+
}
|
2016 |
+
function mi(t, e) {
|
2017 |
+
(t = t || {}), (e = e || ne.font);
|
2018 |
+
let i = r(t.size, e.size);
|
2019 |
+
"string" == typeof i && (i = parseInt(i, 10));
|
2020 |
+
let s = r(t.style, e.style);
|
2021 |
+
s &&
|
2022 |
+
!("" + s).match(ci) &&
|
2023 |
+
(console.warn('Invalid font style specified: "' + s + '"'), (s = ""));
|
2024 |
+
const n = {
|
2025 |
+
family: r(t.family, e.family),
|
2026 |
+
lineHeight: di(r(t.lineHeight, e.lineHeight), i),
|
2027 |
+
size: i,
|
2028 |
+
style: s,
|
2029 |
+
weight: r(t.weight, e.weight),
|
2030 |
+
string: "",
|
2031 |
+
};
|
2032 |
+
return (n.string = xe(n)), n;
|
2033 |
+
}
|
2034 |
+
function bi(t, e, i, n) {
|
2035 |
+
let o,
|
2036 |
+
a,
|
2037 |
+
r,
|
2038 |
+
l = !0;
|
2039 |
+
for (o = 0, a = t.length; o < a; ++o)
|
2040 |
+
if (
|
2041 |
+
((r = t[o]),
|
2042 |
+
void 0 !== r &&
|
2043 |
+
(void 0 !== e && "function" == typeof r && ((r = r(e)), (l = !1)),
|
2044 |
+
void 0 !== i && s(r) && ((r = r[i % r.length]), (l = !1)),
|
2045 |
+
void 0 !== r))
|
2046 |
+
)
|
2047 |
+
return n && !l && (n.cacheable = !1), r;
|
2048 |
+
}
|
2049 |
+
function xi(t, e, i) {
|
2050 |
+
const { min: s, max: n } = t,
|
2051 |
+
o = h(e, (n - s) / 2),
|
2052 |
+
a = (t, e) => (i && 0 === t ? 0 : t + e);
|
2053 |
+
return { min: a(s, -Math.abs(o)), max: a(n, o) };
|
2054 |
+
}
|
2055 |
+
function _i(t, e) {
|
2056 |
+
return Object.assign(Object.create(t), e);
|
2057 |
+
}
|
2058 |
+
function yi(t, e, i) {
|
2059 |
return t
|
2060 |
? (function (t, e) {
|
2061 |
return {
|
2077 |
leftForLtr: (t, e) => t,
|
2078 |
};
|
2079 |
}
|
2080 |
+
function vi(t, e) {
|
2081 |
let i, s;
|
2082 |
("ltr" !== e && "rtl" !== e) ||
|
2083 |
((i = t.canvas.style),
|
2088 |
i.setProperty("direction", e, "important"),
|
2089 |
(t.prevTextDirection = s));
|
2090 |
}
|
2091 |
+
function wi(t, e) {
|
2092 |
void 0 !== e &&
|
2093 |
(delete t.prevTextDirection,
|
2094 |
t.canvas.style.setProperty("direction", e[0], e[1]));
|
2095 |
}
|
2096 |
+
function Mi(t) {
|
2097 |
return "angle" === t
|
2098 |
+
? { between: G, compare: q, normalize: K }
|
2099 |
+
: { between: Q, compare: (t, e) => t - e, normalize: (t) => t };
|
2100 |
}
|
2101 |
+
function ki({ start: t, end: e, count: i, loop: s, style: n }) {
|
2102 |
return {
|
2103 |
start: t % i,
|
2104 |
end: e % i,
|
2106 |
style: n,
|
2107 |
};
|
2108 |
}
|
2109 |
+
function Si(t, e, i) {
|
2110 |
if (!i) return [t];
|
2111 |
const { property: s, start: n, end: o } = i,
|
2112 |
a = e.length,
|
2113 |
+
{ compare: r, between: l, normalize: h } = Mi(s),
|
2114 |
{
|
2115 |
start: c,
|
2116 |
end: d,
|
2118 |
style: f,
|
2119 |
} = (function (t, e, i) {
|
2120 |
const { property: s, start: n, end: o } = i,
|
2121 |
+
{ between: a, normalize: r } = Mi(s),
|
2122 |
l = e.length;
|
2123 |
let h,
|
2124 |
c,
|
2137 |
g = [];
|
2138 |
let p,
|
2139 |
m,
|
2140 |
+
b,
|
2141 |
+
x = !1,
|
2142 |
_ = null;
|
2143 |
+
const y = () => x || (l(n, b, p) && 0 !== r(n, b)),
|
2144 |
+
v = () => !x || 0 === r(o, p) || l(o, b, p);
|
2145 |
for (let t = c, i = c; t <= d; ++t)
|
2146 |
(m = e[t % a]),
|
2147 |
m.skip ||
|
2148 |
((p = h(m[s])),
|
2149 |
+
p !== b &&
|
2150 |
+
((x = l(p, n, o)),
|
2151 |
null === _ && y() && (_ = 0 === r(p, n) ? t : i),
|
2152 |
null !== _ &&
|
2153 |
v() &&
|
2154 |
+
(g.push(ki({ start: _, end: t, loop: u, count: a, style: f })),
|
2155 |
(_ = null)),
|
2156 |
(i = t),
|
2157 |
+
(b = p)));
|
2158 |
return (
|
2159 |
null !== _ &&
|
2160 |
+
g.push(ki({ start: _, end: d, loop: u, count: a, style: f })),
|
2161 |
g
|
2162 |
);
|
2163 |
}
|
2164 |
+
function Pi(t, e) {
|
2165 |
const i = [],
|
2166 |
s = t.segments;
|
2167 |
for (let n = 0; n < s.length; n++) {
|
2168 |
+
const o = Si(s[n], t.points, e);
|
2169 |
o.length && i.push(...o);
|
2170 |
}
|
2171 |
return i;
|
2172 |
}
|
2173 |
+
function Di(t, e) {
|
2174 |
const i = t.points,
|
2175 |
s = t.options.spanGaps,
|
2176 |
n = i.length;
|
2184 |
for (n %= e, i && (o += n); o > n && t[o % e].skip; ) o--;
|
2185 |
return (o %= e), { start: n, end: o };
|
2186 |
})(i, n, o, s);
|
2187 |
+
if (!0 === s) return Oi(t, [{ start: a, end: r, loop: o }], i, e);
|
2188 |
+
return Oi(
|
2189 |
t,
|
2190 |
(function (t, e, i, s) {
|
2191 |
const n = t.length,
|
2209 |
e
|
2210 |
);
|
2211 |
}
|
2212 |
+
function Oi(t, e, i, s) {
|
2213 |
return s && s.setContext && i
|
2214 |
? (function (t, e, i, s) {
|
2215 |
const n = t._chart.getContext(),
|
2216 |
+
o = Ci(t.options),
|
2217 |
{
|
2218 |
_datasetIndex: a,
|
2219 |
options: { spanGaps: r },
|
2240 |
o = i[d % l];
|
2241 |
for (u = d + 1; u <= t.end; u++) {
|
2242 |
const r = i[u % l];
|
2243 |
+
(e = Ci(
|
2244 |
s.setContext(
|
2245 |
+
_i(n, {
|
2246 |
type: "segment",
|
2247 |
p0: o,
|
2248 |
p1: r,
|
2252 |
})
|
2253 |
)
|
2254 |
)),
|
2255 |
+
Ai(e, c) && f(d, u - 1, t.loop, c),
|
2256 |
(o = r),
|
2257 |
(c = e);
|
2258 |
}
|
2262 |
})(t, e, i, s)
|
2263 |
: e;
|
2264 |
}
|
2265 |
+
function Ci(t) {
|
2266 |
return {
|
2267 |
backgroundColor: t.backgroundColor,
|
2268 |
borderCapStyle: t.borderCapStyle,
|
2273 |
borderColor: t.borderColor,
|
2274 |
};
|
2275 |
}
|
2276 |
+
function Ai(t, e) {
|
2277 |
return e && JSON.stringify(t) !== JSON.stringify(e);
|
2278 |
}
|
2279 |
+
var Ti = Object.freeze({
|
2280 |
__proto__: null,
|
2281 |
+
easingEffects: si,
|
2282 |
+
isPatternOrGradient: Zt,
|
2283 |
+
color: Jt,
|
2284 |
+
getHoverColor: Qt,
|
2285 |
+
noop: t,
|
2286 |
+
uid: e,
|
2287 |
+
isNullOrUndef: i,
|
2288 |
+
isArray: s,
|
2289 |
+
isObject: n,
|
2290 |
+
isFinite: o,
|
2291 |
+
finiteOrDefault: a,
|
2292 |
+
valueOrDefault: r,
|
2293 |
+
toPercentage: l,
|
2294 |
+
toDimension: h,
|
2295 |
+
callback: c,
|
2296 |
+
each: d,
|
2297 |
+
_elementsEqual: u,
|
2298 |
+
clone: f,
|
2299 |
+
_merger: p,
|
2300 |
+
merge: m,
|
2301 |
+
mergeIf: b,
|
2302 |
+
_mergerIf: x,
|
2303 |
_deprecated: function (t, e, i, s) {
|
2304 |
void 0 !== e &&
|
2305 |
console.warn(
|
2306 |
t + ': "' + i + '" is deprecated. Please use "' + s + '" instead'
|
2307 |
);
|
2308 |
},
|
2309 |
+
resolveObjectKey: y,
|
2310 |
+
_splitKey: v,
|
2311 |
+
_capitalize: w,
|
2312 |
+
defined: M,
|
2313 |
+
isFunction: k,
|
2314 |
+
setsEqual: S,
|
2315 |
+
_isClickEvent: P,
|
2316 |
+
toFontString: xe,
|
2317 |
+
_measureText: _e,
|
2318 |
+
_longestText: ye,
|
2319 |
+
_alignPixel: ve,
|
2320 |
+
clearCanvas: we,
|
2321 |
+
drawPoint: Me,
|
2322 |
+
drawPointLegend: ke,
|
2323 |
+
_isPointInArea: Se,
|
2324 |
+
clipArea: Pe,
|
2325 |
+
unclipArea: De,
|
2326 |
+
_steppedLineTo: Oe,
|
2327 |
+
_bezierCurveTo: Ce,
|
2328 |
+
renderText: Ae,
|
2329 |
+
addRoundedRectPath: Le,
|
2330 |
+
_lookup: tt,
|
2331 |
+
_lookupByKey: et,
|
2332 |
+
_rlookupByKey: it,
|
2333 |
+
_filterBetween: st,
|
2334 |
+
listenArrayEvents: ot,
|
2335 |
+
unlistenArrayEvents: at,
|
2336 |
+
_arrayUnique: rt,
|
2337 |
+
_createResolver: Ee,
|
2338 |
+
_attachContext: Re,
|
2339 |
+
_descriptors: Ie,
|
2340 |
+
_parseObjectDataRadialScale: Ue,
|
2341 |
+
splineCurve: Ge,
|
2342 |
+
splineCurveMonotone: Ze,
|
2343 |
+
_updateBezierControlPoints: Qe,
|
2344 |
+
_isDomSupported: oe,
|
2345 |
+
_getParentNode: ae,
|
2346 |
+
getStyle: he,
|
2347 |
+
getRelativePosition: ue,
|
2348 |
+
getMaximumSize: ge,
|
2349 |
+
retinaScale: pe,
|
2350 |
+
supportsEventListenerOptions: me,
|
2351 |
+
readUsedSize: be,
|
2352 |
+
fontString: function (t, e, i) {
|
2353 |
+
return e + " " + t + "px " + i;
|
2354 |
+
},
|
2355 |
+
requestAnimFrame: lt,
|
2356 |
+
throttled: ht,
|
2357 |
+
debounce: ct,
|
2358 |
+
_toLeftRightCenter: dt,
|
2359 |
+
_alignStartEnd: ut,
|
2360 |
+
_textX: ft,
|
2361 |
+
_getStartAndCountOfVisiblePoints: gt,
|
2362 |
+
_scaleRangesChanged: pt,
|
2363 |
+
_pointInLine: ni,
|
2364 |
+
_steppedInterpolation: oi,
|
2365 |
+
_bezierInterpolation: ai,
|
2366 |
+
formatNumber: li,
|
2367 |
+
toLineHeight: di,
|
2368 |
+
_readValueToProps: ui,
|
2369 |
+
toTRBL: fi,
|
2370 |
+
toTRBLCorners: gi,
|
2371 |
+
toPadding: pi,
|
2372 |
+
toFont: mi,
|
2373 |
+
resolve: bi,
|
2374 |
+
_addGrace: xi,
|
2375 |
+
createContext: _i,
|
2376 |
+
PI: D,
|
2377 |
+
TAU: O,
|
2378 |
+
PITAU: C,
|
2379 |
+
INFINITY: A,
|
2380 |
+
RAD_PER_DEG: T,
|
2381 |
+
HALF_PI: L,
|
2382 |
+
QUARTER_PI: E,
|
2383 |
+
TWO_THIRDS_PI: R,
|
2384 |
+
log10: I,
|
2385 |
+
sign: z,
|
2386 |
+
niceNum: F,
|
2387 |
+
_factorize: V,
|
2388 |
+
isNumber: B,
|
2389 |
+
almostEquals: N,
|
2390 |
+
almostWhole: W,
|
2391 |
+
_setMinAndMaxByKey: j,
|
2392 |
+
toRadians: H,
|
2393 |
+
toDegrees: $,
|
2394 |
+
_decimalPlaces: Y,
|
2395 |
+
getAngleFromPoint: U,
|
2396 |
+
distanceBetweenPoints: X,
|
2397 |
+
_angleDiff: q,
|
2398 |
+
_normalizeAngle: K,
|
2399 |
+
_angleBetween: G,
|
2400 |
+
_limitValue: Z,
|
2401 |
+
_int16Range: J,
|
2402 |
+
_isBetween: Q,
|
2403 |
+
getRtlAdapter: yi,
|
2404 |
+
overrideTextDirection: vi,
|
2405 |
+
restoreTextDirection: wi,
|
2406 |
+
_boundSegment: Si,
|
2407 |
+
_boundSegments: Pi,
|
2408 |
+
_computeSegments: Di,
|
2409 |
+
});
|
2410 |
+
function Li(t, e, i, s) {
|
2411 |
+
const { controller: n, data: o, _sorted: a } = t,
|
2412 |
+
r = n._cachedMeta.iScale;
|
2413 |
+
if (r && e === r.axis && "r" !== e && a && o.length) {
|
2414 |
+
const t = r._reversePixels ? it : et;
|
2415 |
+
if (!s) return t(o, e, i);
|
2416 |
+
if (n._sharedOptions) {
|
2417 |
+
const s = o[0],
|
2418 |
+
n = "function" == typeof s.getRange && s.getRange(e);
|
2419 |
+
if (n) {
|
2420 |
+
const s = t(o, e, i - n),
|
2421 |
+
a = t(o, e, i + n);
|
2422 |
+
return { lo: s.lo, hi: a.hi };
|
2423 |
+
}
|
2424 |
+
}
|
2425 |
+
}
|
2426 |
+
return { lo: 0, hi: o.length - 1 };
|
2427 |
+
}
|
2428 |
+
function Ei(t, e, i, s, n) {
|
2429 |
+
const o = t.getSortedVisibleDatasetMetas(),
|
2430 |
+
a = i[e];
|
2431 |
+
for (let t = 0, i = o.length; t < i; ++t) {
|
2432 |
+
const { index: i, data: r } = o[t],
|
2433 |
+
{ lo: l, hi: h } = Li(o[t], e, a, n);
|
2434 |
+
for (let t = l; t <= h; ++t) {
|
2435 |
+
const e = r[t];
|
2436 |
+
e.skip || s(e, i, t);
|
2437 |
+
}
|
2438 |
+
}
|
2439 |
+
}
|
2440 |
+
function Ri(t, e, i, s, n) {
|
2441 |
+
const o = [];
|
2442 |
+
if (!n && !t.isPointInArea(e)) return o;
|
2443 |
+
return (
|
2444 |
+
Ei(
|
2445 |
+
t,
|
2446 |
+
i,
|
2447 |
+
e,
|
2448 |
+
function (i, a, r) {
|
2449 |
+
(n || Se(i, t.chartArea, 0)) &&
|
2450 |
+
i.inRange(e.x, e.y, s) &&
|
2451 |
+
o.push({ element: i, datasetIndex: a, index: r });
|
2452 |
+
},
|
2453 |
+
!0
|
2454 |
+
),
|
2455 |
+
o
|
2456 |
+
);
|
2457 |
+
}
|
2458 |
+
function Ii(t, e, i, s, n, o) {
|
2459 |
+
let a = [];
|
2460 |
+
const r = (function (t) {
|
2461 |
+
const e = -1 !== t.indexOf("x"),
|
2462 |
+
i = -1 !== t.indexOf("y");
|
2463 |
+
return function (t, s) {
|
2464 |
+
const n = e ? Math.abs(t.x - s.x) : 0,
|
2465 |
+
o = i ? Math.abs(t.y - s.y) : 0;
|
2466 |
+
return Math.sqrt(Math.pow(n, 2) + Math.pow(o, 2));
|
2467 |
+
};
|
2468 |
+
})(i);
|
2469 |
+
let l = Number.POSITIVE_INFINITY;
|
2470 |
+
return (
|
2471 |
+
Ei(t, i, e, function (i, h, c) {
|
2472 |
+
const d = i.inRange(e.x, e.y, n);
|
2473 |
+
if (s && !d) return;
|
2474 |
+
const u = i.getCenterPoint(n);
|
2475 |
+
if (!(!!o || t.isPointInArea(u)) && !d) return;
|
2476 |
+
const f = r(e, u);
|
2477 |
+
f < l
|
2478 |
+
? ((a = [{ element: i, datasetIndex: h, index: c }]), (l = f))
|
2479 |
+
: f === l && a.push({ element: i, datasetIndex: h, index: c });
|
2480 |
+
}),
|
2481 |
+
a
|
2482 |
+
);
|
2483 |
+
}
|
2484 |
+
function zi(t, e, i, s, n, o) {
|
2485 |
+
return o || t.isPointInArea(e)
|
2486 |
+
? "r" !== i || s
|
2487 |
+
? Ii(t, e, i, s, n, o)
|
2488 |
+
: (function (t, e, i, s) {
|
2489 |
+
let n = [];
|
2490 |
+
return (
|
2491 |
+
Ei(t, i, e, function (t, i, o) {
|
2492 |
+
const { startAngle: a, endAngle: r } = t.getProps(
|
2493 |
+
["startAngle", "endAngle"],
|
2494 |
+
s
|
2495 |
+
),
|
2496 |
+
{ angle: l } = U(t, { x: e.x, y: e.y });
|
2497 |
+
G(l, a, r) && n.push({ element: t, datasetIndex: i, index: o });
|
2498 |
+
}),
|
2499 |
+
n
|
2500 |
+
);
|
2501 |
+
})(t, e, i, n)
|
2502 |
+
: [];
|
2503 |
+
}
|
2504 |
+
function Fi(t, e, i, s, n) {
|
2505 |
+
const o = [],
|
2506 |
+
a = "x" === i ? "inXRange" : "inYRange";
|
2507 |
+
let r = !1;
|
2508 |
+
return (
|
2509 |
+
Ei(t, i, e, (t, s, l) => {
|
2510 |
+
t[a](e[i], n) &&
|
2511 |
+
(o.push({ element: t, datasetIndex: s, index: l }),
|
2512 |
+
(r = r || t.inRange(e.x, e.y, n)));
|
2513 |
+
}),
|
2514 |
+
s && !r ? [] : o
|
2515 |
+
);
|
2516 |
+
}
|
2517 |
+
var Vi = {
|
2518 |
+
evaluateInteractionItems: Ei,
|
2519 |
+
modes: {
|
2520 |
+
index(t, e, i, s) {
|
2521 |
+
const n = ue(e, t),
|
2522 |
+
o = i.axis || "x",
|
2523 |
+
a = i.includeInvisible || !1,
|
2524 |
+
r = i.intersect ? Ri(t, n, o, s, a) : zi(t, n, o, !1, s, a),
|
2525 |
+
l = [];
|
2526 |
+
return r.length
|
2527 |
+
? (t.getSortedVisibleDatasetMetas().forEach((t) => {
|
2528 |
+
const e = r[0].index,
|
2529 |
+
i = t.data[e];
|
2530 |
+
i &&
|
2531 |
+
!i.skip &&
|
2532 |
+
l.push({ element: i, datasetIndex: t.index, index: e });
|
2533 |
+
}),
|
2534 |
+
l)
|
2535 |
+
: [];
|
2536 |
+
},
|
2537 |
+
dataset(t, e, i, s) {
|
2538 |
+
const n = ue(e, t),
|
2539 |
+
o = i.axis || "xy",
|
2540 |
+
a = i.includeInvisible || !1;
|
2541 |
+
let r = i.intersect ? Ri(t, n, o, s, a) : zi(t, n, o, !1, s, a);
|
2542 |
+
if (r.length > 0) {
|
2543 |
+
const e = r[0].datasetIndex,
|
2544 |
+
i = t.getDatasetMeta(e).data;
|
2545 |
+
r = [];
|
2546 |
+
for (let t = 0; t < i.length; ++t)
|
2547 |
+
r.push({ element: i[t], datasetIndex: e, index: t });
|
2548 |
+
}
|
2549 |
+
return r;
|
2550 |
+
},
|
2551 |
+
point: (t, e, i, s) =>
|
2552 |
+
Ri(t, ue(e, t), i.axis || "xy", s, i.includeInvisible || !1),
|
2553 |
+
nearest(t, e, i, s) {
|
2554 |
+
const n = ue(e, t),
|
2555 |
+
o = i.axis || "xy",
|
2556 |
+
a = i.includeInvisible || !1;
|
2557 |
+
return zi(t, n, o, i.intersect, s, a);
|
2558 |
+
},
|
2559 |
+
x: (t, e, i, s) => Fi(t, ue(e, t), "x", i.intersect, s),
|
2560 |
+
y: (t, e, i, s) => Fi(t, ue(e, t), "y", i.intersect, s),
|
2561 |
+
},
|
2562 |
+
};
|
2563 |
+
const Bi = ["left", "top", "right", "bottom"];
|
2564 |
+
function Ni(t, e) {
|
2565 |
+
return t.filter((t) => t.pos === e);
|
2566 |
+
}
|
2567 |
+
function Wi(t, e) {
|
2568 |
+
return t.filter((t) => -1 === Bi.indexOf(t.pos) && t.box.axis === e);
|
2569 |
+
}
|
2570 |
+
function ji(t, e) {
|
2571 |
+
return t.sort((t, i) => {
|
2572 |
+
const s = e ? i : t,
|
2573 |
+
n = e ? t : i;
|
2574 |
+
return s.weight === n.weight ? s.index - n.index : s.weight - n.weight;
|
2575 |
+
});
|
2576 |
+
}
|
2577 |
+
function Hi(t, e) {
|
2578 |
+
const i = (function (t) {
|
2579 |
+
const e = {};
|
2580 |
+
for (const i of t) {
|
2581 |
+
const { stack: t, pos: s, stackWeight: n } = i;
|
2582 |
+
if (!t || !Bi.includes(s)) continue;
|
2583 |
+
const o =
|
2584 |
+
e[t] || (e[t] = { count: 0, placed: 0, weight: 0, size: 0 });
|
2585 |
+
o.count++, (o.weight += n);
|
2586 |
+
}
|
2587 |
+
return e;
|
2588 |
+
})(t),
|
2589 |
+
{ vBoxMaxWidth: s, hBoxMaxHeight: n } = e;
|
2590 |
+
let o, a, r;
|
2591 |
+
for (o = 0, a = t.length; o < a; ++o) {
|
2592 |
+
r = t[o];
|
2593 |
+
const { fullSize: a } = r.box,
|
2594 |
+
l = i[r.stack],
|
2595 |
+
h = l && r.stackWeight / l.weight;
|
2596 |
+
r.horizontal
|
2597 |
+
? ((r.width = h ? h * s : a && e.availableWidth), (r.height = n))
|
2598 |
+
: ((r.width = s), (r.height = h ? h * n : a && e.availableHeight));
|
2599 |
+
}
|
2600 |
+
return i;
|
2601 |
+
}
|
2602 |
+
function $i(t, e, i, s) {
|
2603 |
+
return Math.max(t[i], e[i]) + Math.max(t[s], e[s]);
|
2604 |
+
}
|
2605 |
+
function Yi(t, e) {
|
2606 |
+
(t.top = Math.max(t.top, e.top)),
|
2607 |
+
(t.left = Math.max(t.left, e.left)),
|
2608 |
+
(t.bottom = Math.max(t.bottom, e.bottom)),
|
2609 |
+
(t.right = Math.max(t.right, e.right));
|
2610 |
+
}
|
2611 |
+
function Ui(t, e, i, s) {
|
2612 |
+
const { pos: o, box: a } = i,
|
2613 |
+
r = t.maxPadding;
|
2614 |
+
if (!n(o)) {
|
2615 |
+
i.size && (t[o] -= i.size);
|
2616 |
+
const e = s[i.stack] || { size: 0, count: 1 };
|
2617 |
+
(e.size = Math.max(e.size, i.horizontal ? a.height : a.width)),
|
2618 |
+
(i.size = e.size / e.count),
|
2619 |
+
(t[o] += i.size);
|
2620 |
+
}
|
2621 |
+
a.getPadding && Yi(r, a.getPadding());
|
2622 |
+
const l = Math.max(0, e.outerWidth - $i(r, t, "left", "right")),
|
2623 |
+
h = Math.max(0, e.outerHeight - $i(r, t, "top", "bottom")),
|
2624 |
+
c = l !== t.w,
|
2625 |
+
d = h !== t.h;
|
2626 |
+
return (
|
2627 |
+
(t.w = l),
|
2628 |
+
(t.h = h),
|
2629 |
+
i.horizontal ? { same: c, other: d } : { same: d, other: c }
|
2630 |
+
);
|
2631 |
+
}
|
2632 |
+
function Xi(t, e) {
|
2633 |
+
const i = e.maxPadding;
|
2634 |
+
function s(t) {
|
2635 |
+
const s = { left: 0, top: 0, right: 0, bottom: 0 };
|
2636 |
+
return (
|
2637 |
+
t.forEach((t) => {
|
2638 |
+
s[t] = Math.max(e[t], i[t]);
|
2639 |
+
}),
|
2640 |
+
s
|
2641 |
+
);
|
2642 |
+
}
|
2643 |
+
return s(t ? ["left", "right"] : ["top", "bottom"]);
|
2644 |
+
}
|
2645 |
+
function qi(t, e, i, s) {
|
2646 |
+
const n = [];
|
2647 |
+
let o, a, r, l, h, c;
|
2648 |
+
for (o = 0, a = t.length, h = 0; o < a; ++o) {
|
2649 |
+
(r = t[o]),
|
2650 |
+
(l = r.box),
|
2651 |
+
l.update(r.width || e.w, r.height || e.h, Xi(r.horizontal, e));
|
2652 |
+
const { same: a, other: d } = Ui(e, i, r, s);
|
2653 |
+
(h |= a && n.length), (c = c || d), l.fullSize || n.push(r);
|
2654 |
+
}
|
2655 |
+
return (h && qi(n, e, i, s)) || c;
|
2656 |
+
}
|
2657 |
+
function Ki(t, e, i, s, n) {
|
2658 |
+
(t.top = i),
|
2659 |
+
(t.left = e),
|
2660 |
+
(t.right = e + s),
|
2661 |
+
(t.bottom = i + n),
|
2662 |
+
(t.width = s),
|
2663 |
+
(t.height = n);
|
2664 |
+
}
|
2665 |
+
function Gi(t, e, i, s) {
|
2666 |
+
const n = i.padding;
|
2667 |
+
let { x: o, y: a } = e;
|
2668 |
+
for (const r of t) {
|
2669 |
+
const t = r.box,
|
2670 |
+
l = s[r.stack] || { count: 1, placed: 0, weight: 1 },
|
2671 |
+
h = r.stackWeight / l.weight || 1;
|
2672 |
+
if (r.horizontal) {
|
2673 |
+
const s = e.w * h,
|
2674 |
+
o = l.size || t.height;
|
2675 |
+
M(l.start) && (a = l.start),
|
2676 |
+
t.fullSize
|
2677 |
+
? Ki(t, n.left, a, i.outerWidth - n.right - n.left, o)
|
2678 |
+
: Ki(t, e.left + l.placed, a, s, o),
|
2679 |
+
(l.start = a),
|
2680 |
+
(l.placed += s),
|
2681 |
+
(a = t.bottom);
|
2682 |
+
} else {
|
2683 |
+
const s = e.h * h,
|
2684 |
+
a = l.size || t.width;
|
2685 |
+
M(l.start) && (o = l.start),
|
2686 |
+
t.fullSize
|
2687 |
+
? Ki(t, o, n.top, a, i.outerHeight - n.bottom - n.top)
|
2688 |
+
: Ki(t, o, e.top + l.placed, a, s),
|
2689 |
+
(l.start = o),
|
2690 |
+
(l.placed += s),
|
2691 |
+
(o = t.right);
|
2692 |
+
}
|
2693 |
+
}
|
2694 |
+
(e.x = o), (e.y = a);
|
2695 |
+
}
|
2696 |
+
ne.set("layout", {
|
2697 |
+
autoPadding: !0,
|
2698 |
+
padding: { top: 0, right: 0, bottom: 0, left: 0 },
|
2699 |
+
});
|
2700 |
+
var Zi = {
|
2701 |
+
addBox(t, e) {
|
2702 |
+
t.boxes || (t.boxes = []),
|
2703 |
+
(e.fullSize = e.fullSize || !1),
|
2704 |
+
(e.position = e.position || "top"),
|
2705 |
+
(e.weight = e.weight || 0),
|
2706 |
+
(e._layers =
|
2707 |
+
e._layers ||
|
2708 |
+
function () {
|
2709 |
+
return [
|
2710 |
+
{
|
2711 |
+
z: 0,
|
2712 |
+
draw(t) {
|
2713 |
+
e.draw(t);
|
2714 |
+
},
|
2715 |
+
},
|
2716 |
+
];
|
2717 |
+
}),
|
2718 |
+
t.boxes.push(e);
|
2719 |
+
},
|
2720 |
+
removeBox(t, e) {
|
2721 |
+
const i = t.boxes ? t.boxes.indexOf(e) : -1;
|
2722 |
+
-1 !== i && t.boxes.splice(i, 1);
|
2723 |
},
|
2724 |
+
configure(t, e, i) {
|
2725 |
+
(e.fullSize = i.fullSize),
|
2726 |
+
(e.position = i.position),
|
2727 |
+
(e.weight = i.weight);
|
2728 |
+
},
|
2729 |
+
update(t, e, i, s) {
|
2730 |
+
if (!t) return;
|
2731 |
+
const n = pi(t.options.layout.padding),
|
2732 |
+
o = Math.max(e - n.width, 0),
|
2733 |
+
a = Math.max(i - n.height, 0),
|
2734 |
+
r = (function (t) {
|
2735 |
+
const e = (function (t) {
|
2736 |
+
const e = [];
|
2737 |
+
let i, s, n, o, a, r;
|
2738 |
+
for (i = 0, s = (t || []).length; i < s; ++i)
|
2739 |
+
(n = t[i]),
|
2740 |
+
({
|
2741 |
+
position: o,
|
2742 |
+
options: { stack: a, stackWeight: r = 1 },
|
2743 |
+
} = n),
|
2744 |
+
e.push({
|
2745 |
+
index: i,
|
2746 |
+
box: n,
|
2747 |
+
pos: o,
|
2748 |
+
horizontal: n.isHorizontal(),
|
2749 |
+
weight: n.weight,
|
2750 |
+
stack: a && o + a,
|
2751 |
+
stackWeight: r,
|
2752 |
+
});
|
2753 |
+
return e;
|
2754 |
+
})(t),
|
2755 |
+
i = ji(
|
2756 |
+
e.filter((t) => t.box.fullSize),
|
2757 |
+
!0
|
2758 |
+
),
|
2759 |
+
s = ji(Ni(e, "left"), !0),
|
2760 |
+
n = ji(Ni(e, "right")),
|
2761 |
+
o = ji(Ni(e, "top"), !0),
|
2762 |
+
a = ji(Ni(e, "bottom")),
|
2763 |
+
r = Wi(e, "x"),
|
2764 |
+
l = Wi(e, "y");
|
2765 |
+
return {
|
2766 |
+
fullSize: i,
|
2767 |
+
leftAndTop: s.concat(o),
|
2768 |
+
rightAndBottom: n.concat(l).concat(a).concat(r),
|
2769 |
+
chartArea: Ni(e, "chartArea"),
|
2770 |
+
vertical: s.concat(n).concat(l),
|
2771 |
+
horizontal: o.concat(a).concat(r),
|
2772 |
+
};
|
2773 |
+
})(t.boxes),
|
2774 |
+
l = r.vertical,
|
2775 |
+
h = r.horizontal;
|
2776 |
+
d(t.boxes, (t) => {
|
2777 |
+
"function" == typeof t.beforeLayout && t.beforeLayout();
|
2778 |
+
});
|
2779 |
+
const c =
|
2780 |
+
l.reduce(
|
2781 |
+
(t, e) =>
|
2782 |
+
e.box.options && !1 === e.box.options.display ? t : t + 1,
|
2783 |
+
0
|
2784 |
+
) || 1,
|
2785 |
+
u = Object.freeze({
|
2786 |
+
outerWidth: e,
|
2787 |
+
outerHeight: i,
|
2788 |
+
padding: n,
|
2789 |
+
availableWidth: o,
|
2790 |
+
availableHeight: a,
|
2791 |
+
vBoxMaxWidth: o / 2 / c,
|
2792 |
+
hBoxMaxHeight: a / 2,
|
2793 |
+
}),
|
2794 |
+
f = Object.assign({}, n);
|
2795 |
+
Yi(f, pi(s));
|
2796 |
+
const g = Object.assign(
|
2797 |
+
{ maxPadding: f, w: o, h: a, x: n.left, y: n.top },
|
2798 |
+
n
|
2799 |
+
),
|
2800 |
+
p = Hi(l.concat(h), u);
|
2801 |
+
qi(r.fullSize, g, u, p),
|
2802 |
+
qi(l, g, u, p),
|
2803 |
+
qi(h, g, u, p) && qi(l, g, u, p),
|
2804 |
+
(function (t) {
|
2805 |
+
const e = t.maxPadding;
|
2806 |
+
function i(i) {
|
2807 |
+
const s = Math.max(e[i] - t[i], 0);
|
2808 |
+
return (t[i] += s), s;
|
2809 |
+
}
|
2810 |
+
(t.y += i("top")), (t.x += i("left")), i("right"), i("bottom");
|
2811 |
+
})(g),
|
2812 |
+
Gi(r.leftAndTop, g, u, p),
|
2813 |
+
(g.x += g.w),
|
2814 |
+
(g.y += g.h),
|
2815 |
+
Gi(r.rightAndBottom, g, u, p),
|
2816 |
+
(t.chartArea = {
|
2817 |
+
left: g.left,
|
2818 |
+
top: g.top,
|
2819 |
+
right: g.left + g.w,
|
2820 |
+
bottom: g.top + g.h,
|
2821 |
+
height: g.h,
|
2822 |
+
width: g.w,
|
2823 |
+
}),
|
2824 |
+
d(r.chartArea, (e) => {
|
2825 |
+
const i = e.box;
|
2826 |
+
Object.assign(i, t.chartArea),
|
2827 |
+
i.update(g.w, g.h, { left: 0, top: 0, right: 0, bottom: 0 });
|
2828 |
+
});
|
2829 |
+
},
|
2830 |
+
};
|
2831 |
+
class Ji {
|
2832 |
acquireContext(t, e) {}
|
2833 |
releaseContext(t) {
|
2834 |
return !1;
|
2850 |
}
|
2851 |
updateConfig(t) {}
|
2852 |
}
|
2853 |
+
class Qi extends Ji {
|
2854 |
acquireContext(t) {
|
2855 |
return (t && t.getContext && t.getContext("2d")) || null;
|
2856 |
}
|
2858 |
t.options.animation = !1;
|
2859 |
}
|
2860 |
}
|
2861 |
+
const ts = {
|
2862 |
touchstart: "mousedown",
|
2863 |
touchmove: "mousemove",
|
2864 |
touchend: "mouseup",
|
2869 |
pointerleave: "mouseout",
|
2870 |
pointerout: "mouseout",
|
2871 |
},
|
2872 |
+
es = (t) => null === t || "" === t;
|
2873 |
+
const is = !!me && { passive: !0 };
|
2874 |
+
function ss(t, e, i) {
|
2875 |
+
t.canvas.removeEventListener(e, i, is);
|
2876 |
}
|
2877 |
+
function ns(t, e) {
|
2878 |
for (const i of t) if (i === e || i.contains(e)) return !0;
|
2879 |
}
|
2880 |
+
function os(t, e, i) {
|
2881 |
const s = t.canvas,
|
2882 |
n = new MutationObserver((t) => {
|
2883 |
let e = !1;
|
2884 |
for (const i of t)
|
2885 |
+
(e = e || ns(i.addedNodes, s)), (e = e && !ns(i.removedNodes, s));
|
2886 |
e && i();
|
2887 |
});
|
2888 |
return n.observe(document, { childList: !0, subtree: !0 }), n;
|
2889 |
}
|
2890 |
+
function as(t, e, i) {
|
2891 |
const s = t.canvas,
|
2892 |
n = new MutationObserver((t) => {
|
2893 |
let e = !1;
|
2894 |
for (const i of t)
|
2895 |
+
(e = e || ns(i.removedNodes, s)), (e = e && !ns(i.addedNodes, s));
|
2896 |
e && i();
|
2897 |
});
|
2898 |
return n.observe(document, { childList: !0, subtree: !0 }), n;
|
2899 |
}
|
2900 |
+
const rs = new Map();
|
2901 |
+
let ls = 0;
|
2902 |
+
function hs() {
|
2903 |
const t = window.devicePixelRatio;
|
2904 |
+
t !== ls &&
|
2905 |
+
((ls = t),
|
2906 |
+
rs.forEach((e, i) => {
|
2907 |
i.currentDevicePixelRatio !== t && e();
|
2908 |
}));
|
2909 |
}
|
2910 |
+
function cs(t, e, i) {
|
2911 |
+
const s = t.canvas,
|
2912 |
+
n = s && ae(s);
|
2913 |
+
if (!n) return;
|
2914 |
+
const o = ht((t, e) => {
|
2915 |
+
const s = n.clientWidth;
|
2916 |
+
i(t, e), s < n.clientWidth && i();
|
2917 |
}, window),
|
2918 |
+
a = new ResizeObserver((t) => {
|
2919 |
const e = t[0],
|
2920 |
i = e.contentRect.width,
|
2921 |
s = e.contentRect.height;
|
2922 |
+
(0 === i && 0 === s) || o(i, s);
|
2923 |
});
|
2924 |
return (
|
2925 |
+
a.observe(n),
|
2926 |
(function (t, e) {
|
2927 |
+
rs.size || window.addEventListener("resize", hs), rs.set(t, e);
|
2928 |
+
})(t, o),
|
2929 |
+
a
|
2930 |
);
|
2931 |
}
|
2932 |
+
function ds(t, e, i) {
|
2933 |
i && i.disconnect(),
|
2934 |
"resize" === e &&
|
2935 |
(function (t) {
|
2936 |
+
rs.delete(t), rs.size || window.removeEventListener("resize", hs);
|
2937 |
})(t);
|
2938 |
}
|
2939 |
+
function us(t, e, i) {
|
2940 |
+
const s = t.canvas,
|
2941 |
+
n = ht(
|
2942 |
(e) => {
|
2943 |
null !== t.ctx &&
|
2944 |
+
i(
|
2945 |
(function (t, e) {
|
2946 |
+
const i = ts[t.type] || t.type,
|
2947 |
+
{ x: s, y: n } = ue(t, e);
|
2948 |
return {
|
2949 |
type: i,
|
2950 |
chart: e,
|
2963 |
);
|
2964 |
return (
|
2965 |
(function (t, e, i) {
|
2966 |
+
t.addEventListener(e, i, is);
|
2967 |
+
})(s, e, n),
|
2968 |
+
n
|
2969 |
);
|
2970 |
}
|
2971 |
+
class fs extends Ji {
|
2972 |
acquireContext(t, e) {
|
2973 |
const i = t && t.getContext && t.getContext("2d");
|
2974 |
return i && i.canvas === t
|
2990 |
}),
|
2991 |
(i.display = i.display || "block"),
|
2992 |
(i.boxSizing = i.boxSizing || "border-box"),
|
2993 |
+
es(n))
|
2994 |
) {
|
2995 |
+
const e = be(t, "width");
|
2996 |
void 0 !== e && (t.width = e);
|
2997 |
}
|
2998 |
+
if (es(s))
|
2999 |
if ("" === t.style.height) t.height = t.width / (e || 2);
|
3000 |
else {
|
3001 |
+
const e = be(t, "height");
|
3002 |
void 0 !== e && (t.height = e);
|
3003 |
}
|
3004 |
})(t, e),
|
3008 |
releaseContext(t) {
|
3009 |
const e = t.canvas;
|
3010 |
if (!e.$chartjs) return !1;
|
3011 |
+
const s = e.$chartjs.initial;
|
3012 |
["height", "width"].forEach((t) => {
|
3013 |
+
const n = s[t];
|
3014 |
+
i(n) ? e.removeAttribute(t) : e.setAttribute(t, n);
|
3015 |
});
|
3016 |
+
const n = s.style || {};
|
3017 |
return (
|
3018 |
+
Object.keys(n).forEach((t) => {
|
3019 |
+
e.style[t] = n[t];
|
3020 |
}),
|
3021 |
(e.width = e.width),
|
3022 |
delete e.$chartjs,
|
3026 |
addEventListener(t, e, i) {
|
3027 |
this.removeEventListener(t, e);
|
3028 |
const s = t.$proxies || (t.$proxies = {}),
|
3029 |
+
n = { attach: os, detach: as, resize: cs }[e] || us;
|
3030 |
s[e] = n(t, e, i);
|
3031 |
}
|
3032 |
removeEventListener(t, e) {
|
3033 |
const i = t.$proxies || (t.$proxies = {}),
|
3034 |
s = i[e];
|
3035 |
if (!s) return;
|
3036 |
+
(({ attach: ds, detach: ds, resize: ds }[e] || ss)(t, e, s),
|
3037 |
(i[e] = void 0));
|
3038 |
}
|
3039 |
getDevicePixelRatio() {
|
3040 |
return window.devicePixelRatio;
|
3041 |
}
|
3042 |
getMaximumSize(t, e, i, s) {
|
3043 |
+
return ge(t, e, i, s);
|
3044 |
}
|
3045 |
isAttached(t) {
|
3046 |
+
const e = ae(t);
|
3047 |
return !(!e || !e.isConnected);
|
3048 |
}
|
3049 |
}
|
3050 |
+
function gs(t) {
|
3051 |
+
return !oe() ||
|
3052 |
("undefined" != typeof OffscreenCanvas && t instanceof OffscreenCanvas)
|
3053 |
+
? Qi
|
3054 |
+
: fs;
|
3055 |
}
|
3056 |
+
var ps = Object.freeze({
|
3057 |
__proto__: null,
|
3058 |
+
_detectPlatform: gs,
|
3059 |
+
BasePlatform: Ji,
|
3060 |
+
BasicPlatform: Qi,
|
3061 |
+
DomPlatform: fs,
|
3062 |
});
|
3063 |
+
const ms = "transparent",
|
3064 |
+
bs = {
|
3065 |
boolean: (t, e, i) => (i > 0.5 ? e : t),
|
3066 |
color(t, e, i) {
|
3067 |
+
const s = Jt(t || ms),
|
3068 |
+
n = s.valid && Jt(e || ms);
|
3069 |
return n && n.valid ? n.mix(s, i).hexString() : e;
|
3070 |
},
|
3071 |
number: (t, e, i) => t + (e - t) * i,
|
3072 |
};
|
3073 |
+
class xs {
|
3074 |
constructor(t, e, i, s) {
|
3075 |
const n = e[i];
|
3076 |
+
s = bi([t.to, s, n, t.from]);
|
3077 |
+
const o = bi([t.from, n, s]);
|
3078 |
(this._active = !0),
|
3079 |
+
(this._fn = t.fn || bs[t.type || typeof o]),
|
3080 |
+
(this._easing = si[t.easing] || si.linear),
|
3081 |
(this._start = Math.floor(Date.now() + (t.delay || 0))),
|
3082 |
(this._duration = this._total = Math.floor(t.duration)),
|
3083 |
(this._loop = !!t.loop),
|
3100 |
(this._duration = Math.floor(Math.max(o, t.duration))),
|
3101 |
(this._total += n),
|
3102 |
(this._loop = !!t.loop),
|
3103 |
+
(this._to = bi([t.to, e, s, t.from])),
|
3104 |
+
(this._from = bi([t.from, s, e]));
|
3105 |
}
|
3106 |
}
|
3107 |
cancel() {
|
3137 |
for (let t = 0; t < i.length; t++) i[t][e]();
|
3138 |
}
|
3139 |
}
|
3140 |
+
ne.set("animation", {
|
3141 |
delay: void 0,
|
3142 |
duration: 1e3,
|
3143 |
easing: "easeOutQuart",
|
3147 |
to: void 0,
|
3148 |
type: void 0,
|
3149 |
});
|
3150 |
+
const _s = Object.keys(ne.animation);
|
3151 |
+
ne.describe("animation", {
|
3152 |
_fallback: !1,
|
3153 |
_indexable: !1,
|
3154 |
_scriptable: (t) => "onProgress" !== t && "onComplete" !== t && "fn" !== t,
|
3155 |
}),
|
3156 |
+
ne.set("animations", {
|
3157 |
colors: {
|
3158 |
type: "color",
|
3159 |
properties: ["color", "borderColor", "backgroundColor"],
|
3163 |
properties: ["x", "y", "borderWidth", "radius", "tension"],
|
3164 |
},
|
3165 |
}),
|
3166 |
+
ne.describe("animations", { _fallback: "animation" }),
|
3167 |
+
ne.set("transitions", {
|
3168 |
active: { animation: { duration: 400 } },
|
3169 |
resize: { animation: { duration: 0 } },
|
3170 |
show: {
|
3180 |
},
|
3181 |
},
|
3182 |
});
|
3183 |
+
class ys {
|
3184 |
constructor(t, e) {
|
3185 |
(this._chart = t), (this._properties = new Map()), this.configure(e);
|
3186 |
}
|
3187 |
configure(t) {
|
3188 |
+
if (!n(t)) return;
|
3189 |
const e = this._properties;
|
3190 |
Object.getOwnPropertyNames(t).forEach((i) => {
|
3191 |
+
const o = t[i];
|
3192 |
+
if (!n(o)) return;
|
3193 |
+
const a = {};
|
3194 |
+
for (const t of _s) a[t] = o[t];
|
3195 |
+
((s(o.properties) && o.properties) || [i]).forEach((t) => {
|
3196 |
+
(t !== i && e.has(t)) || e.set(t, a);
|
3197 |
});
|
3198 |
});
|
3199 |
}
|
3254 |
c.cancel();
|
3255 |
}
|
3256 |
d && d.duration
|
3257 |
+
? ((n[l] = c = new xs(d, t, l, h)), s.push(c))
|
3258 |
: (t[l] = h);
|
3259 |
}
|
3260 |
return s;
|
3262 |
update(t, e) {
|
3263 |
if (0 === this._properties.size) return void Object.assign(t, e);
|
3264 |
const i = this._createAnimations(t, e);
|
3265 |
+
return i.length ? (mt.add(this._chart, i), !0) : void 0;
|
3266 |
}
|
3267 |
}
|
3268 |
+
function vs(t, e) {
|
3269 |
const i = (t && t.options) || {},
|
3270 |
s = i.reverse,
|
3271 |
n = void 0 === i.min ? e : 0,
|
3272 |
o = void 0 === i.max ? e : 0;
|
3273 |
return { start: s ? o : n, end: s ? n : o };
|
3274 |
}
|
3275 |
+
function ws(t, e) {
|
3276 |
const i = [],
|
3277 |
s = t._getSortedDatasetMetas(e);
|
3278 |
let n, o;
|
3279 |
for (n = 0, o = s.length; n < o; ++n) i.push(s[n].index);
|
3280 |
return i;
|
3281 |
}
|
3282 |
+
function Ms(t, e, i, s = {}) {
|
3283 |
const n = t.keys,
|
3284 |
+
a = "single" === s.mode;
|
3285 |
+
let r, l, h, c;
|
3286 |
if (null !== e) {
|
3287 |
+
for (r = 0, l = n.length; r < l; ++r) {
|
3288 |
+
if (((h = +n[r]), h === i)) {
|
3289 |
if (s.all) continue;
|
3290 |
break;
|
3291 |
}
|
3292 |
+
(c = t.values[h]), o(c) && (a || 0 === e || z(e) === z(c)) && (e += c);
|
|
|
3293 |
}
|
3294 |
return e;
|
3295 |
}
|
3296 |
}
|
3297 |
+
function ks(t, e) {
|
3298 |
const i = t && t.options.stacked;
|
3299 |
return i || (void 0 === i && void 0 !== e.stack);
|
3300 |
}
|
3301 |
+
function Ss(t, e, i) {
|
3302 |
const s = t[e] || (t[e] = {});
|
3303 |
return s[i] || (s[i] = {});
|
3304 |
}
|
3305 |
+
function Ps(t, e, i, s) {
|
3306 |
for (const n of e.getMatchingVisibleMetas(s).reverse()) {
|
3307 |
const e = t[n.index];
|
3308 |
if ((i && e > 0) || (!i && e < 0)) return n.index;
|
3309 |
}
|
3310 |
return null;
|
3311 |
}
|
3312 |
+
function Ds(t, e) {
|
3313 |
const { chart: i, _cachedMeta: s } = t,
|
3314 |
n = i._stacks || (i._stacks = {}),
|
3315 |
{ iScale: o, vScale: a, index: r } = s,
|
3323 |
for (let t = 0; t < d; ++t) {
|
3324 |
const i = e[t],
|
3325 |
{ [l]: o, [h]: d } = i;
|
3326 |
+
(u = (i._stacks || (i._stacks = {}))[h] = Ss(n, c, o)),
|
3327 |
(u[r] = d),
|
3328 |
+
(u._top = Ps(u, a, !0, s.type)),
|
3329 |
+
(u._bottom = Ps(u, a, !1, s.type));
|
3330 |
}
|
3331 |
}
|
3332 |
+
function Os(t, e) {
|
3333 |
const i = t.scales;
|
3334 |
return Object.keys(i)
|
3335 |
.filter((t) => i[t].axis === e)
|
3336 |
.shift();
|
3337 |
}
|
3338 |
+
function Cs(t, e) {
|
3339 |
const i = t.controller.index,
|
3340 |
s = t.vScale && t.vScale.axis;
|
3341 |
if (s) {
|
3347 |
}
|
3348 |
}
|
3349 |
}
|
3350 |
+
const As = (t) => "reset" === t || "none" === t,
|
3351 |
+
Ts = (t, e) => (e ? t : Object.assign({}, t));
|
3352 |
+
class Ls {
|
3353 |
constructor(t, e) {
|
3354 |
(this.chart = t),
|
3355 |
(this._ctx = t.ctx),
|
3365 |
(this._drawStart = void 0),
|
3366 |
(this._drawCount = void 0),
|
3367 |
(this.enableOptionSharing = !1),
|
3368 |
+
(this.supportsDecimation = !1),
|
3369 |
(this.$context = void 0),
|
3370 |
(this._syncList = []),
|
3371 |
this.initialize();
|
3374 |
const t = this._cachedMeta;
|
3375 |
this.configure(),
|
3376 |
this.linkScales(),
|
3377 |
+
(t._stacked = ks(t.vScale, t)),
|
3378 |
this.addElements();
|
3379 |
}
|
3380 |
updateIndex(t) {
|
3381 |
+
this.index !== t && Cs(this._cachedMeta), (this.index = t);
|
3382 |
}
|
3383 |
linkScales() {
|
3384 |
const t = this.chart,
|
3385 |
e = this._cachedMeta,
|
3386 |
i = this.getDataset(),
|
3387 |
s = (t, e, i, s) => ("x" === t ? e : "r" === t ? s : i),
|
3388 |
+
n = (e.xAxisID = r(i.xAxisID, Os(t, "x"))),
|
3389 |
+
o = (e.yAxisID = r(i.yAxisID, Os(t, "y"))),
|
3390 |
+
a = (e.rAxisID = r(i.rAxisID, Os(t, "r"))),
|
3391 |
+
l = e.indexAxis,
|
3392 |
+
h = (e.iAxisID = s(l, n, o, a)),
|
3393 |
+
c = (e.vAxisID = s(l, o, n, a));
|
3394 |
(e.xScale = this.getScaleForId(n)),
|
3395 |
(e.yScale = this.getScaleForId(o)),
|
3396 |
(e.rScale = this.getScaleForId(a)),
|
3397 |
+
(e.iScale = this.getScaleForId(h)),
|
3398 |
+
(e.vScale = this.getScaleForId(c));
|
3399 |
}
|
3400 |
getDataset() {
|
3401 |
return this.chart.data.datasets[this.index];
|
3415 |
}
|
3416 |
_destroy() {
|
3417 |
const t = this._cachedMeta;
|
3418 |
+
this._data && at(this._data, this), t._stacked && Cs(t);
|
3419 |
}
|
3420 |
_dataCheck() {
|
3421 |
const t = this.getDataset(),
|
3422 |
e = t.data || (t.data = []),
|
3423 |
i = this._data;
|
3424 |
+
if (n(e))
|
3425 |
this._data = (function (t) {
|
3426 |
const e = Object.keys(t),
|
3427 |
i = new Array(e.length);
|
3432 |
})(e);
|
3433 |
else if (i !== e) {
|
3434 |
if (i) {
|
3435 |
+
at(i, this);
|
3436 |
const t = this._cachedMeta;
|
3437 |
+
Cs(t), (t._parsed = []);
|
3438 |
}
|
3439 |
+
e && Object.isExtensible(e) && ot(e, this),
|
3440 |
(this._syncList = []),
|
3441 |
(this._data = e);
|
3442 |
}
|
3452 |
let s = !1;
|
3453 |
this._dataCheck();
|
3454 |
const n = e._stacked;
|
3455 |
+
(e._stacked = ks(e.vScale, e)),
|
3456 |
+
e.stack !== i.stack && ((s = !0), Cs(e), (e.stack = i.stack)),
|
3457 |
this._resyncElements(t),
|
3458 |
+
(s || n !== e._stacked) && Ds(this, e._parsed);
|
3459 |
}
|
3460 |
configure() {
|
3461 |
const t = this.chart.config,
|
3466 |
(this._cachedDataOpts = {});
|
3467 |
}
|
3468 |
parse(t, e) {
|
3469 |
+
const { _cachedMeta: i, _data: o } = this,
|
3470 |
+
{ iScale: a, _stacked: r } = i,
|
3471 |
+
l = a.axis;
|
3472 |
+
let h,
|
3473 |
+
c,
|
3474 |
+
d,
|
3475 |
+
u = (0 === t && e === o.length) || i._sorted,
|
3476 |
+
f = t > 0 && i._parsed[t - 1];
|
3477 |
+
if (!1 === this._parsing) (i._parsed = o), (i._sorted = !0), (d = o);
|
3478 |
else {
|
3479 |
+
d = s(o[t])
|
3480 |
+
? this.parseArrayData(i, o, t, e)
|
3481 |
+
: n(o[t])
|
3482 |
+
? this.parseObjectData(i, o, t, e)
|
3483 |
+
: this.parsePrimitiveData(i, o, t, e);
|
3484 |
+
const a = () => null === c[l] || (f && c[l] < f[l]);
|
3485 |
+
for (h = 0; h < e; ++h)
|
3486 |
+
(i._parsed[h + t] = c = d[h]), u && (a() && (u = !1), (f = c));
|
3487 |
+
i._sorted = u;
|
3488 |
}
|
3489 |
+
r && Ds(this, d);
|
3490 |
}
|
3491 |
parsePrimitiveData(t, e, i, s) {
|
3492 |
const { iScale: n, vScale: o } = t,
|
3519 |
for (h = 0, c = s; h < c; ++h)
|
3520 |
(d = h + i),
|
3521 |
(u = e[d]),
|
3522 |
+
(l[h] = { x: n.parse(y(u, a), d), y: o.parse(y(u, r), d) });
|
3523 |
return l;
|
3524 |
}
|
3525 |
getParsed(t) {
|
3532 |
const s = this.chart,
|
3533 |
n = this._cachedMeta,
|
3534 |
o = e[t.axis];
|
3535 |
+
return Ms({ keys: ws(s, !0), values: e._stacks[t.axis] }, o, n.index, {
|
3536 |
mode: i,
|
3537 |
});
|
3538 |
}
|
3540 |
const n = i[e.axis];
|
3541 |
let o = null === n ? NaN : n;
|
3542 |
const a = s && i._stacks[e.axis];
|
3543 |
+
s && a && ((s.values = a), (o = Ms(s, n, this._cachedMeta.index))),
|
3544 |
(t.min = Math.min(t.min, o)),
|
3545 |
(t.max = Math.max(t.max, o));
|
3546 |
}
|
3548 |
const i = this._cachedMeta,
|
3549 |
s = i._parsed,
|
3550 |
n = i._sorted && t === i.iScale,
|
3551 |
+
a = s.length,
|
3552 |
+
r = this._getOtherScale(t),
|
3553 |
+
l = ((t, e, i) =>
|
3554 |
+
t && !e.hidden && e._stacked && { keys: ws(i, !0), values: null })(
|
3555 |
e,
|
3556 |
i,
|
3557 |
this.chart
|
3558 |
),
|
3559 |
+
h = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY },
|
3560 |
+
{ min: c, max: d } = (function (t) {
|
3561 |
const {
|
3562 |
min: e,
|
3563 |
max: i,
|
3568 |
min: s ? e : Number.NEGATIVE_INFINITY,
|
3569 |
max: n ? i : Number.POSITIVE_INFINITY,
|
3570 |
};
|
3571 |
+
})(r);
|
3572 |
+
let u, f;
|
3573 |
+
function g() {
|
3574 |
+
f = s[u];
|
3575 |
+
const e = f[r.axis];
|
3576 |
+
return !o(f[t.axis]) || c > e || d < e;
|
3577 |
}
|
3578 |
for (
|
3579 |
+
u = 0;
|
3580 |
+
u < a && (g() || (this.updateRangeFromParsed(h, t, f, l), !n));
|
3581 |
+
++u
|
3582 |
);
|
3583 |
if (n)
|
3584 |
+
for (u = a - 1; u >= 0; --u)
|
3585 |
+
if (!g()) {
|
3586 |
+
this.updateRangeFromParsed(h, t, f, l);
|
3587 |
break;
|
3588 |
}
|
3589 |
+
return h;
|
3590 |
}
|
3591 |
getAllParsedValues(t) {
|
3592 |
const e = this._cachedMeta._parsed,
|
3593 |
i = [];
|
3594 |
+
let s, n, a;
|
3595 |
for (s = 0, n = e.length; s < n; ++s)
|
3596 |
+
(a = e[s][t.axis]), o(a) && i.push(a);
|
3597 |
return i;
|
3598 |
}
|
3599 |
getMaxOverflow() {
|
3613 |
const e = this._cachedMeta;
|
3614 |
this.update(t || "default"),
|
3615 |
(e._clip = (function (t) {
|
3616 |
+
let e, i, s, o;
|
3617 |
return (
|
3618 |
+
n(t)
|
3619 |
+
? ((e = t.top), (i = t.right), (s = t.bottom), (o = t.left))
|
3620 |
+
: (e = i = s = o = t),
|
3621 |
+
{ top: e, right: i, bottom: s, left: o, disabled: !1 === t }
|
3622 |
);
|
3623 |
})(
|
3624 |
+
r(
|
3625 |
this.options.clip,
|
3626 |
(function (t, e, i) {
|
3627 |
if (!1 === i) return !1;
|
3628 |
+
const s = vs(t, i),
|
3629 |
+
n = vs(e, i);
|
3630 |
return {
|
3631 |
top: n.end,
|
3632 |
right: s.end,
|
3669 |
(n =
|
3670 |
e.$context ||
|
3671 |
(e.$context = (function (t, e, i) {
|
3672 |
+
return _i(t, {
|
3673 |
active: !1,
|
3674 |
dataIndex: e,
|
3675 |
parsed: void 0,
|
3687 |
(n =
|
3688 |
this.$context ||
|
3689 |
(this.$context = (function (t, e) {
|
3690 |
+
return _i(t, {
|
3691 |
active: !1,
|
3692 |
dataset: void 0,
|
3693 |
datasetIndex: e,
|
3711 |
n = this._cachedDataOpts,
|
3712 |
o = t + "-" + e,
|
3713 |
a = n[o],
|
3714 |
+
r = this.enableOptionSharing && M(i);
|
3715 |
+
if (a) return Ts(a, r);
|
3716 |
const l = this.chart.config,
|
3717 |
h = l.datasetElementScopeKeys(this._type, t),
|
3718 |
c = s ? [`${t}Hover`, "hover", t, ""] : [t, ""],
|
3719 |
d = l.getOptionScopes(this.getDataset(), h),
|
3720 |
+
u = Object.keys(ne.elements[t]),
|
3721 |
f = l.resolveNamedOptions(d, u, () => this.getContext(i, s), c);
|
3722 |
return (
|
3723 |
+
f.$shared && ((f.$shared = r), (n[o] = Object.freeze(Ts(f, r)))), f
|
3724 |
);
|
3725 |
}
|
3726 |
_resolveAnimations(t, e, i) {
|
3736 |
o = s.getOptionScopes(this.getDataset(), n);
|
3737 |
r = s.createResolver(o, this.getContext(t, i, e));
|
3738 |
}
|
3739 |
+
const l = new ys(s, r && r.animations);
|
3740 |
return r && r._cacheable && (n[o] = Object.freeze(l)), l;
|
3741 |
}
|
3742 |
getSharedOptions(t) {
|
3746 |
);
|
3747 |
}
|
3748 |
includeOptions(t, e) {
|
3749 |
+
return !e || As(t) || this.chart._animationsDisabled;
|
3750 |
+
}
|
3751 |
+
_getSharedOptions(t, e) {
|
3752 |
+
const i = this.resolveDataElementOptions(t, e),
|
3753 |
+
s = this._sharedOptions,
|
3754 |
+
n = this.getSharedOptions(i),
|
3755 |
+
o = this.includeOptions(e, n) || n !== s;
|
3756 |
+
return (
|
3757 |
+
this.updateSharedOptions(n, e, i),
|
3758 |
+
{ sharedOptions: n, includeOptions: o }
|
3759 |
+
);
|
3760 |
}
|
3761 |
updateElement(t, e, i, s) {
|
3762 |
+
As(s) ? Object.assign(t, i) : this._resolveAnimations(e, s).update(t, i);
|
3763 |
}
|
3764 |
updateSharedOptions(t, e, i) {
|
3765 |
+
t && !As(e) && this._resolveAnimations(void 0, e).update(t, i);
|
3766 |
}
|
3767 |
_setStyle(t, e, i, s) {
|
3768 |
t.active = s;
|
3816 |
const i = this._cachedMeta;
|
3817 |
if (this._parsing) {
|
3818 |
const s = i._parsed.splice(t, e);
|
3819 |
+
i._stacked && Cs(i, s);
|
3820 |
}
|
3821 |
i.data.splice(t, e);
|
3822 |
}
|
3847 |
this._sync(["_insertElements", 0, arguments.length]);
|
3848 |
}
|
3849 |
}
|
3850 |
+
(Ls.defaults = {}),
|
3851 |
+
(Ls.prototype.datasetElementType = null),
|
3852 |
+
(Ls.prototype.dataElementType = null);
|
3853 |
+
class Es {
|
3854 |
constructor() {
|
3855 |
(this.x = void 0),
|
3856 |
(this.y = void 0),
|
3863 |
return { x: e, y: i };
|
3864 |
}
|
3865 |
hasValue() {
|
3866 |
+
return B(this.x) && B(this.y);
|
3867 |
}
|
3868 |
getProps(t, e) {
|
3869 |
const i = this.$animations;
|
3877 |
);
|
3878 |
}
|
3879 |
}
|
3880 |
+
(Es.defaults = {}), (Es.defaultRoutes = void 0);
|
3881 |
+
const Rs = {
|
3882 |
+
values: (t) => (s(t) ? t : "" + t),
|
3883 |
numeric(t, e, i) {
|
3884 |
if (0 === t) return "0";
|
3885 |
const s = this.chart.options.locale;
|
3898 |
return i;
|
3899 |
})(t, i));
|
3900 |
}
|
3901 |
+
const a = I(Math.abs(o)),
|
3902 |
r = Math.max(Math.min(-1 * Math.floor(a), 20), 0),
|
3903 |
l = { notation: n, minimumFractionDigits: r, maximumFractionDigits: r };
|
3904 |
+
return Object.assign(l, this.options.ticks.format), li(t, s, l);
|
3905 |
},
|
3906 |
logarithmic(t, e, i) {
|
3907 |
if (0 === t) return "0";
|
3908 |
+
const s = t / Math.pow(10, Math.floor(I(t)));
|
3909 |
return 1 === s || 2 === s || 5 === s
|
3910 |
+
? Rs.numeric.call(this, t, e, i)
|
3911 |
: "";
|
3912 |
},
|
3913 |
};
|
3914 |
+
var Is = { formatters: Rs };
|
3915 |
+
function zs(t, e) {
|
3916 |
+
const s = t.options.ticks,
|
3917 |
+
n =
|
3918 |
+
s.maxTicksLimit ||
|
3919 |
(function (t) {
|
3920 |
const e = t.options.offset,
|
3921 |
i = t._tickSize(),
|
3923 |
n = t._maxLength / i;
|
3924 |
return Math.floor(Math.min(s, n));
|
3925 |
})(t),
|
3926 |
+
o = s.major.enabled
|
3927 |
? (function (t) {
|
3928 |
const e = [];
|
3929 |
let i, s;
|
3931 |
return e;
|
3932 |
})(e)
|
3933 |
: [],
|
3934 |
+
a = o.length,
|
3935 |
+
r = o[0],
|
3936 |
+
l = o[a - 1],
|
3937 |
+
h = [];
|
3938 |
+
if (a > n)
|
3939 |
return (
|
3940 |
(function (t, e, i, s) {
|
3941 |
let n,
|
3943 |
a = i[0];
|
3944 |
for (s = Math.ceil(s), n = 0; n < t.length; n++)
|
3945 |
n === a && (e.push(t[n]), o++, (a = i[o * s]));
|
3946 |
+
})(e, h, o, a / n),
|
3947 |
+
h
|
3948 |
);
|
3949 |
+
const c = (function (t, e, i) {
|
3950 |
const s = (function (t) {
|
3951 |
const e = t.length;
|
3952 |
let i, s;
|
3957 |
})(t),
|
3958 |
n = e.length / i;
|
3959 |
if (!s) return Math.max(n, 1);
|
3960 |
+
const o = V(s);
|
3961 |
for (let t = 0, e = o.length - 1; t < e; t++) {
|
3962 |
const e = o[t];
|
3963 |
if (e > n) return e;
|
3964 |
}
|
3965 |
return Math.max(n, 1);
|
3966 |
+
})(o, e, n);
|
3967 |
+
if (a > 0) {
|
3968 |
+
let t, s;
|
3969 |
+
const n = a > 1 ? Math.round((l - r) / (a - 1)) : null;
|
3970 |
+
for (Fs(e, h, c, i(n) ? 0 : r - n, r), t = 0, s = a - 1; t < s; t++)
|
3971 |
+
Fs(e, h, c, o[t], o[t + 1]);
|
3972 |
+
return Fs(e, h, c, l, i(n) ? e.length : l + n), h;
|
3973 |
+
}
|
3974 |
+
return Fs(e, h, c), h;
|
3975 |
+
}
|
3976 |
+
function Fs(t, e, i, s, n) {
|
3977 |
+
const o = r(s, 0),
|
3978 |
+
a = Math.min(r(n, t.length), t.length);
|
3979 |
+
let l,
|
|
|
3980 |
h,
|
3981 |
+
c,
|
3982 |
+
d = 0;
|
3983 |
for (
|
3984 |
+
i = Math.ceil(i), n && ((l = n - s), (i = l / Math.floor(l / i))), c = o;
|
3985 |
+
c < 0;
|
3986 |
|
3987 |
)
|
3988 |
+
d++, (c = Math.round(o + d * i));
|
3989 |
+
for (h = Math.max(o, 0); h < a; h++)
|
3990 |
+
h === c && (e.push(t[h]), d++, (c = Math.round(o + d * i)));
|
3991 |
}
|
3992 |
+
ne.set("scale", {
|
3993 |
display: !0,
|
3994 |
offset: !1,
|
3995 |
reverse: !1,
|
4022 |
autoSkip: !0,
|
4023 |
autoSkipPadding: 3,
|
4024 |
labelOffset: 0,
|
4025 |
+
callback: Is.formatters.values,
|
4026 |
minor: {},
|
4027 |
major: {},
|
4028 |
align: "center",
|
4032 |
backdropPadding: 2,
|
4033 |
},
|
4034 |
}),
|
4035 |
+
ne.route("scale.ticks", "color", "", "color"),
|
4036 |
+
ne.route("scale.grid", "color", "", "borderColor"),
|
4037 |
+
ne.route("scale.grid", "borderColor", "", "borderColor"),
|
4038 |
+
ne.route("scale.title", "color", "", "color"),
|
4039 |
+
ne.describe("scale", {
|
4040 |
_fallback: !1,
|
4041 |
_scriptable: (t) =>
|
4042 |
!t.startsWith("before") &&
|
4045 |
"parser" !== t,
|
4046 |
_indexable: (t) => "borderDash" !== t && "tickBorderDash" !== t,
|
4047 |
}),
|
4048 |
+
ne.describe("scales", { _fallback: "scale" }),
|
4049 |
+
ne.describe("scale.ticks", {
|
4050 |
_scriptable: (t) => "backdropPadding" !== t && "callback" !== t,
|
4051 |
_indexable: (t) => "backdropPadding" !== t,
|
4052 |
});
|
4053 |
+
const Vs = (t, e, i) => ("top" === e || "left" === e ? t[e] + i : t[e] - i);
|
4054 |
+
function Bs(t, e) {
|
4055 |
const i = [],
|
4056 |
s = t.length / e,
|
4057 |
n = t.length;
|
4059 |
for (; o < n; o += s) i.push(t[Math.floor(o)]);
|
4060 |
return i;
|
4061 |
}
|
4062 |
+
function Ns(t, e, i) {
|
4063 |
const s = t.ticks.length,
|
4064 |
n = Math.min(e, s - 1),
|
4065 |
o = t._startPixel,
|
4082 |
)
|
4083 |
return h;
|
4084 |
}
|
4085 |
+
function Ws(t) {
|
4086 |
return t.drawTicks ? t.tickLength : 0;
|
4087 |
}
|
4088 |
+
function js(t, e) {
|
4089 |
if (!t.display) return 0;
|
4090 |
+
const i = mi(t.font, e),
|
4091 |
+
n = pi(t.padding);
|
4092 |
+
return (s(t.text) ? t.text.length : 1) * i.lineHeight + n.height;
|
4093 |
}
|
4094 |
+
function Hs(t, e, i) {
|
4095 |
+
let s = dt(t);
|
4096 |
return (
|
4097 |
((i && "right" !== e) || (!i && "right" === e)) &&
|
4098 |
+
(s = ((t) => ("left" === t ? "right" : "right" === t ? "left" : t))(s)),
|
4099 |
+
s
|
4100 |
);
|
4101 |
}
|
4102 |
+
class $s extends Es {
|
4103 |
constructor(t) {
|
4104 |
super(),
|
4105 |
(this.id = t.id),
|
4164 |
_suggestedMax: s,
|
4165 |
} = this;
|
4166 |
return (
|
4167 |
+
(t = a(t, Number.POSITIVE_INFINITY)),
|
4168 |
+
(e = a(e, Number.NEGATIVE_INFINITY)),
|
4169 |
+
(i = a(i, Number.POSITIVE_INFINITY)),
|
4170 |
+
(s = a(s, Number.NEGATIVE_INFINITY)),
|
4171 |
+
{ min: a(t, i), max: a(e, s), minDefined: o(t), maxDefined: o(e) }
|
4172 |
);
|
4173 |
}
|
4174 |
getMinMax(t) {
|
4175 |
let e,
|
4176 |
{ min: i, max: s, minDefined: n, maxDefined: o } = this.getUserBounds();
|
4177 |
if (n && o) return { min: i, max: s };
|
4178 |
+
const r = this.getMatchingVisibleMetas();
|
4179 |
+
for (let a = 0, l = r.length; a < l; ++a)
|
4180 |
+
(e = r[a].controller.getMinMax(this, t)),
|
4181 |
n || (i = Math.min(i, e.min)),
|
4182 |
o || (s = Math.max(s, e.max));
|
4183 |
return (
|
4184 |
(i = o && i > s ? s : i),
|
4185 |
(s = n && i > s ? i : s),
|
4186 |
+
{ min: a(i, a(s, i)), max: a(s, a(i, s)) }
|
4187 |
);
|
4188 |
}
|
4189 |
getPadding() {
|
4210 |
(this._cache = {}), (this._dataLimitsCached = !1);
|
4211 |
}
|
4212 |
beforeUpdate() {
|
4213 |
+
c(this.options.beforeUpdate, [this]);
|
4214 |
}
|
4215 |
update(t, e, i) {
|
4216 |
const { beginAtZero: s, grace: n, ticks: o } = this.options,
|
4234 |
(this.beforeDataLimits(),
|
4235 |
this.determineDataLimits(),
|
4236 |
this.afterDataLimits(),
|
4237 |
+
(this._range = xi(this, n, s)),
|
4238 |
(this._dataLimitsCached = !0)),
|
4239 |
this.beforeBuildTicks(),
|
4240 |
(this.ticks = this.buildTicks() || []),
|
4241 |
this.afterBuildTicks();
|
4242 |
const r = a < this.ticks.length;
|
4243 |
+
this._convertTicksToLabels(r ? Bs(this.ticks, a) : this.ticks),
|
4244 |
this.configure(),
|
4245 |
this.beforeCalculateLabelRotation(),
|
4246 |
this.calculateLabelRotation(),
|
4247 |
this.afterCalculateLabelRotation(),
|
4248 |
o.display &&
|
4249 |
(o.autoSkip || "auto" === o.source) &&
|
4250 |
+
((this.ticks = zs(this, this.ticks)),
|
4251 |
+
(this._labelSizes = null),
|
4252 |
+
this.afterAutoSkip()),
|
4253 |
r && this._convertTicksToLabels(this.ticks),
|
4254 |
this.beforeFit(),
|
4255 |
this.fit(),
|
4270 |
(this._alignToPixels = this.options.alignToPixels);
|
4271 |
}
|
4272 |
afterUpdate() {
|
4273 |
+
c(this.options.afterUpdate, [this]);
|
4274 |
}
|
4275 |
beforeSetDimensions() {
|
4276 |
+
c(this.options.beforeSetDimensions, [this]);
|
4277 |
}
|
4278 |
setDimensions() {
|
4279 |
this.isHorizontal()
|
4289 |
(this.paddingBottom = 0);
|
4290 |
}
|
4291 |
afterSetDimensions() {
|
4292 |
+
c(this.options.afterSetDimensions, [this]);
|
4293 |
}
|
4294 |
_callHooks(t) {
|
4295 |
this.chart.notifyPlugins(t, this.getContext()),
|
4296 |
+
c(this.options[t], [this]);
|
4297 |
}
|
4298 |
beforeDataLimits() {
|
4299 |
this._callHooks("beforeDataLimits");
|
4312 |
this._callHooks("afterBuildTicks");
|
4313 |
}
|
4314 |
beforeTickToLabelConversion() {
|
4315 |
+
c(this.options.beforeTickToLabelConversion, [this]);
|
4316 |
}
|
4317 |
generateTickLabels(t) {
|
4318 |
const e = this.options.ticks;
|
4319 |
let i, s, n;
|
4320 |
for (i = 0, s = t.length; i < s; i++)
|
4321 |
+
(n = t[i]), (n.label = c(e.callback, [n.value, i, t], this));
|
4322 |
}
|
4323 |
afterTickToLabelConversion() {
|
4324 |
+
c(this.options.afterTickToLabelConversion, [this]);
|
4325 |
}
|
4326 |
beforeCalculateLabelRotation() {
|
4327 |
+
c(this.options.beforeCalculateLabelRotation, [this]);
|
4328 |
}
|
4329 |
calculateLabelRotation() {
|
4330 |
const t = this.options,
|
4347 |
const h = this._getLabelSizes(),
|
4348 |
c = h.widest.width,
|
4349 |
d = h.highest.height,
|
4350 |
+
u = Z(this.chart.width - c, 0, this.maxWidth);
|
4351 |
(o = t.offset ? this.maxWidth / i : u / (i - 1)),
|
4352 |
c + 6 > o &&
|
4353 |
((o = u / (i - (t.offset ? 0.5 : 1))),
|
4354 |
(a =
|
4355 |
this.maxHeight -
|
4356 |
+
Ws(t.grid) -
|
4357 |
e.padding -
|
4358 |
+
js(t.title, this.chart.options.font)),
|
4359 |
(r = Math.sqrt(c * c + d * d)),
|
4360 |
+
(l = $(
|
4361 |
Math.min(
|
4362 |
+
Math.asin(Z((h.highest.height + 6) / o, -1, 1)),
|
4363 |
+
Math.asin(Z(a / r, -1, 1)) - Math.asin(Z(d / r, -1, 1))
|
4364 |
)
|
4365 |
)),
|
4366 |
(l = Math.max(s, Math.min(n, l)))),
|
4367 |
(this.labelRotation = l);
|
4368 |
}
|
4369 |
afterCalculateLabelRotation() {
|
4370 |
+
c(this.options.afterCalculateLabelRotation, [this]);
|
4371 |
}
|
4372 |
+
afterAutoSkip() {}
|
4373 |
beforeFit() {
|
4374 |
+
c(this.options.beforeFit, [this]);
|
4375 |
}
|
4376 |
fit() {
|
4377 |
const t = { width: 0, height: 0 },
|
4382 |
o = this._isVisible(),
|
4383 |
a = this.isHorizontal();
|
4384 |
if (o) {
|
4385 |
+
const o = js(s, e.options.font);
|
4386 |
if (
|
4387 |
(a
|
4388 |
+
? ((t.width = this.maxWidth), (t.height = Ws(n) + o))
|
4389 |
+
: ((t.height = this.maxHeight), (t.width = Ws(n) + o)),
|
4390 |
i.display && this.ticks.length)
|
4391 |
) {
|
4392 |
const {
|
4396 |
highest: o,
|
4397 |
} = this._getLabelSizes(),
|
4398 |
r = 2 * i.padding,
|
4399 |
+
l = H(this.labelRotation),
|
4400 |
h = Math.cos(l),
|
4401 |
c = Math.sin(l);
|
4402 |
if (a) {
|
4438 |
? (d = e.width)
|
4439 |
: "end" === n
|
4440 |
? (c = t.width)
|
4441 |
+
: "inner" !== n && ((c = t.width / 2), (d = e.width / 2)),
|
4442 |
(this.paddingLeft = Math.max(
|
4443 |
((c - a + o) * this.width) / (this.width - a),
|
4444 |
0
|
4471 |
)));
|
4472 |
}
|
4473 |
afterFit() {
|
4474 |
+
c(this.options.afterFit, [this]);
|
4475 |
}
|
4476 |
isHorizontal() {
|
4477 |
const { axis: t, position: e } = this.options;
|
4481 |
return this.options.fullSize;
|
4482 |
}
|
4483 |
_convertTicksToLabels(t) {
|
4484 |
+
let e, s;
|
4485 |
for (
|
4486 |
this.beforeTickToLabelConversion(),
|
4487 |
this.generateTickLabels(t),
|
4488 |
e = 0,
|
4489 |
+
s = t.length;
|
4490 |
+
e < s;
|
4491 |
e++
|
4492 |
)
|
4493 |
+
i(t[e].label) && (t.splice(e, 1), s--, e--);
|
4494 |
this.afterTickToLabelConversion();
|
4495 |
}
|
4496 |
_getLabelSizes() {
|
4498 |
if (!t) {
|
4499 |
const e = this.options.ticks.sampleSize;
|
4500 |
let i = this.ticks;
|
4501 |
+
e < i.length && (i = Bs(i, e)),
|
4502 |
(this._labelSizes = t = this._computeLabelSizes(i, i.length));
|
4503 |
}
|
4504 |
return t;
|
4505 |
}
|
4506 |
_computeLabelSizes(t, e) {
|
4507 |
+
const { ctx: n, _longestTextCache: o } = this,
|
4508 |
+
a = [],
|
4509 |
+
r = [];
|
4510 |
+
let l,
|
|
|
|
|
4511 |
h,
|
4512 |
c,
|
|
|
4513 |
u,
|
4514 |
f,
|
4515 |
g,
|
4516 |
p,
|
4517 |
m,
|
4518 |
+
b,
|
4519 |
+
x,
|
4520 |
+
_,
|
4521 |
+
y = 0,
|
4522 |
+
v = 0;
|
4523 |
+
for (l = 0; l < e; ++l) {
|
4524 |
if (
|
4525 |
+
((u = t[l].label),
|
4526 |
+
(f = this._resolveTickFontOptions(l)),
|
4527 |
+
(n.font = g = f.string),
|
4528 |
+
(p = o[g] = o[g] || { data: {}, gc: [] }),
|
4529 |
+
(m = f.lineHeight),
|
4530 |
+
(b = x = 0),
|
4531 |
+
i(u) || s(u))
|
4532 |
) {
|
4533 |
+
if (s(u))
|
4534 |
+
for (h = 0, c = u.length; h < c; ++h)
|
4535 |
+
(_ = u[h]),
|
4536 |
+
i(_) || s(_) || ((b = _e(n, p.data, p.gc, b, _)), (x += m));
|
4537 |
+
} else (b = _e(n, p.data, p.gc, b, u)), (x = m);
|
4538 |
+
a.push(b), r.push(x), (y = Math.max(b, y)), (v = Math.max(x, v));
|
4539 |
}
|
4540 |
!(function (t, e) {
|
4541 |
+
d(t, (t) => {
|
4542 |
const i = t.gc,
|
4543 |
s = i.length / 2;
|
4544 |
let n;
|
4547 |
i.splice(0, s);
|
4548 |
}
|
4549 |
});
|
4550 |
+
})(o, e);
|
4551 |
+
const w = a.indexOf(y),
|
4552 |
+
M = r.indexOf(v),
|
4553 |
+
k = (t) => ({ width: a[t] || 0, height: r[t] || 0 });
|
4554 |
return {
|
4555 |
+
first: k(0),
|
4556 |
+
last: k(e - 1),
|
4557 |
+
widest: k(w),
|
4558 |
+
highest: k(M),
|
4559 |
+
widths: a,
|
4560 |
+
heights: r,
|
4561 |
};
|
4562 |
}
|
4563 |
getLabelForValue(t) {
|
4576 |
getPixelForDecimal(t) {
|
4577 |
this._reversePixels && (t = 1 - t);
|
4578 |
const e = this._startPixel + t * this._length;
|
4579 |
+
return J(this._alignToPixels ? ve(this.chart, e, 0) : e);
|
4580 |
}
|
4581 |
getDecimalForPixel(t) {
|
4582 |
const e = (t - this._startPixel) / this._length;
|
4596 |
return (
|
4597 |
i.$context ||
|
4598 |
(i.$context = (function (t, e, i) {
|
4599 |
+
return _i(t, { tick: i, index: e, type: "tick" });
|
4600 |
})(this.getContext(), t, i))
|
4601 |
);
|
4602 |
}
|
4603 |
return (
|
4604 |
this.$context ||
|
4605 |
+
(this.$context = _i(this.chart.getContext(), {
|
4606 |
scale: this,
|
4607 |
type: "scale",
|
4608 |
}))
|
4610 |
}
|
4611 |
_tickSize() {
|
4612 |
const t = this.options.ticks,
|
4613 |
+
e = H(this.labelRotation),
|
4614 |
i = Math.abs(Math.cos(e)),
|
4615 |
s = Math.abs(Math.sin(e)),
|
4616 |
n = this._getLabelSizes(),
|
4633 |
const e = this.axis,
|
4634 |
i = this.chart,
|
4635 |
s = this.options,
|
4636 |
+
{ grid: o, position: a } = s,
|
4637 |
+
l = o.offset,
|
4638 |
+
h = this.isHorizontal(),
|
4639 |
+
c = this.ticks.length + (l ? 1 : 0),
|
4640 |
+
d = Ws(o),
|
4641 |
+
u = [],
|
4642 |
+
f = o.setContext(this.getContext()),
|
4643 |
+
g = f.drawBorder ? f.borderWidth : 0,
|
4644 |
+
p = g / 2,
|
4645 |
+
m = function (t) {
|
4646 |
+
return ve(i, t, g);
|
4647 |
};
|
4648 |
+
let b, x, _, y, v, w, M, k, S, P, D, O;
|
4649 |
+
if ("top" === a)
|
4650 |
+
(b = m(this.bottom)),
|
4651 |
+
(w = this.bottom - d),
|
4652 |
+
(k = b - p),
|
4653 |
+
(P = m(t.top) + p),
|
4654 |
+
(O = t.bottom);
|
4655 |
+
else if ("bottom" === a)
|
4656 |
+
(b = m(this.top)),
|
4657 |
+
(P = t.top),
|
4658 |
+
(O = m(t.bottom) - p),
|
4659 |
+
(w = b + p),
|
4660 |
+
(k = this.top + d);
|
4661 |
+
else if ("left" === a)
|
4662 |
+
(b = m(this.right)),
|
4663 |
+
(v = this.right - d),
|
4664 |
+
(M = b - p),
|
4665 |
+
(S = m(t.left) + p),
|
4666 |
+
(D = t.right);
|
4667 |
+
else if ("right" === a)
|
4668 |
+
(b = m(this.left)),
|
4669 |
+
(S = t.left),
|
4670 |
+
(D = m(t.right) - p),
|
4671 |
+
(v = b + p),
|
4672 |
+
(M = this.left + d);
|
4673 |
else if ("x" === e) {
|
4674 |
+
if ("center" === a) b = m((t.top + t.bottom) / 2 + 0.5);
|
4675 |
+
else if (n(a)) {
|
4676 |
+
const t = Object.keys(a)[0],
|
4677 |
+
e = a[t];
|
4678 |
+
b = m(this.chart.scales[t].getPixelForValue(e));
|
4679 |
}
|
4680 |
+
(P = t.top), (O = t.bottom), (w = b + p), (k = w + d);
|
4681 |
} else if ("y" === e) {
|
4682 |
+
if ("center" === a) b = m((t.left + t.right) / 2);
|
4683 |
+
else if (n(a)) {
|
4684 |
+
const t = Object.keys(a)[0],
|
4685 |
+
e = a[t];
|
4686 |
+
b = m(this.chart.scales[t].getPixelForValue(e));
|
4687 |
}
|
4688 |
+
(v = b - p), (M = v - d), (S = t.left), (D = t.right);
|
4689 |
}
|
4690 |
+
const C = r(s.ticks.maxTicksLimit, c),
|
4691 |
+
A = Math.max(1, Math.ceil(c / C));
|
4692 |
+
for (x = 0; x < c; x += A) {
|
4693 |
+
const t = o.setContext(this.getContext(x)),
|
4694 |
e = t.lineWidth,
|
4695 |
s = t.color,
|
4696 |
+
n = t.borderDash || [],
|
4697 |
+
a = t.borderDashOffset,
|
4698 |
+
r = t.tickWidth,
|
4699 |
+
c = t.tickColor,
|
4700 |
+
d = t.tickBorderDash || [],
|
4701 |
f = t.tickBorderDashOffset;
|
4702 |
+
(_ = Ns(this, x, l)),
|
4703 |
+
void 0 !== _ &&
|
4704 |
+
((y = ve(i, _, e)),
|
4705 |
+
h ? (v = M = S = D = y) : (w = k = P = O = y),
|
4706 |
+
u.push({
|
4707 |
+
tx1: v,
|
4708 |
+
ty1: w,
|
4709 |
+
tx2: M,
|
4710 |
+
ty2: k,
|
4711 |
+
x1: S,
|
4712 |
+
y1: P,
|
4713 |
+
x2: D,
|
4714 |
+
y2: O,
|
4715 |
width: e,
|
4716 |
color: s,
|
4717 |
+
borderDash: n,
|
4718 |
+
borderDashOffset: a,
|
4719 |
+
tickWidth: r,
|
4720 |
+
tickColor: c,
|
4721 |
+
tickBorderDash: d,
|
4722 |
tickBorderDashOffset: f,
|
4723 |
}));
|
4724 |
}
|
4725 |
+
return (this._ticksLength = c), (this._borderValue = b), u;
|
4726 |
}
|
4727 |
_computeLabelItems(t) {
|
4728 |
const e = this.axis,
|
4729 |
i = this.options,
|
4730 |
+
{ position: o, ticks: a } = i,
|
4731 |
+
r = this.isHorizontal(),
|
4732 |
+
l = this.ticks,
|
4733 |
+
{ align: h, crossAlign: c, padding: d, mirror: u } = a,
|
4734 |
+
f = Ws(i.grid),
|
4735 |
+
g = f + d,
|
4736 |
+
p = u ? -d : g,
|
4737 |
+
m = -H(this.labelRotation),
|
4738 |
+
b = [];
|
4739 |
+
let x,
|
|
|
|
|
4740 |
_,
|
4741 |
y,
|
4742 |
v,
|
4746 |
S,
|
4747 |
P,
|
4748 |
D,
|
4749 |
+
O,
|
4750 |
+
C,
|
4751 |
+
A = "middle";
|
4752 |
+
if ("top" === o)
|
4753 |
+
(M = this.bottom - p), (k = this._getXAxisLabelAlignment());
|
4754 |
+
else if ("bottom" === o)
|
4755 |
+
(M = this.top + p), (k = this._getXAxisLabelAlignment());
|
4756 |
+
else if ("left" === o) {
|
4757 |
+
const t = this._getYAxisLabelAlignment(f);
|
4758 |
+
(k = t.textAlign), (w = t.x);
|
4759 |
+
} else if ("right" === o) {
|
4760 |
+
const t = this._getYAxisLabelAlignment(f);
|
4761 |
+
(k = t.textAlign), (w = t.x);
|
4762 |
} else if ("x" === e) {
|
4763 |
+
if ("center" === o) M = (t.top + t.bottom) / 2 + g;
|
4764 |
+
else if (n(o)) {
|
4765 |
+
const t = Object.keys(o)[0],
|
4766 |
+
e = o[t];
|
4767 |
+
M = this.chart.scales[t].getPixelForValue(e) + g;
|
4768 |
}
|
4769 |
+
k = this._getXAxisLabelAlignment();
|
4770 |
} else if ("y" === e) {
|
4771 |
+
if ("center" === o) w = (t.left + t.right) / 2 - g;
|
4772 |
+
else if (n(o)) {
|
4773 |
+
const t = Object.keys(o)[0],
|
4774 |
+
e = o[t];
|
4775 |
+
w = this.chart.scales[t].getPixelForValue(e);
|
4776 |
}
|
4777 |
+
k = this._getYAxisLabelAlignment(f).textAlign;
|
4778 |
}
|
4779 |
"y" === e &&
|
4780 |
+
("start" === h ? (A = "top") : "end" === h && (A = "bottom"));
|
4781 |
+
const T = this._getLabelSizes();
|
4782 |
+
for (x = 0, _ = l.length; x < _; ++x) {
|
4783 |
+
(y = l[x]), (v = y.label);
|
4784 |
+
const t = a.setContext(this.getContext(x));
|
4785 |
+
(S = this.getPixelForTick(x) + a.labelOffset),
|
4786 |
+
(P = this._resolveTickFontOptions(x)),
|
4787 |
+
(D = P.lineHeight),
|
4788 |
+
(O = s(v) ? v.length : 1);
|
4789 |
+
const e = O / 2,
|
4790 |
i = t.color,
|
4791 |
+
n = t.textStrokeColor,
|
4792 |
h = t.textStrokeWidth;
|
4793 |
+
let d,
|
4794 |
+
f = k;
|
4795 |
if (
|
4796 |
+
(r
|
4797 |
+
? ((w = S),
|
4798 |
+
"inner" === k &&
|
4799 |
+
(f =
|
4800 |
+
x === _ - 1
|
4801 |
+
? this.options.reverse
|
4802 |
+
? "left"
|
4803 |
+
: "right"
|
4804 |
+
: 0 === x
|
4805 |
+
? this.options.reverse
|
4806 |
+
? "right"
|
4807 |
+
: "left"
|
4808 |
+
: "center"),
|
4809 |
+
(C =
|
4810 |
+
"top" === o
|
4811 |
+
? "near" === c || 0 !== m
|
4812 |
+
? -O * D + D / 2
|
4813 |
+
: "center" === c
|
4814 |
+
? -T.highest.height / 2 - e * D + D
|
4815 |
+
: -T.highest.height + D / 2
|
4816 |
+
: "near" === c || 0 !== m
|
4817 |
+
? D / 2
|
4818 |
+
: "center" === c
|
4819 |
+
? T.highest.height / 2 - e * D
|
4820 |
+
: T.highest.height - O * D),
|
4821 |
+
u && (C *= -1))
|
4822 |
+
: ((M = S), (C = ((1 - O) * D) / 2)),
|
4823 |
t.showLabelBackdrop)
|
4824 |
) {
|
4825 |
+
const e = pi(t.backdropPadding),
|
4826 |
+
i = T.heights[x],
|
4827 |
+
s = T.widths[x];
|
4828 |
+
let n = M + C - e.top,
|
4829 |
+
o = w - e.left;
|
4830 |
+
switch (A) {
|
4831 |
case "middle":
|
4832 |
n -= i / 2;
|
4833 |
break;
|
4834 |
case "bottom":
|
4835 |
n -= i;
|
4836 |
}
|
4837 |
+
switch (k) {
|
4838 |
case "center":
|
4839 |
o -= s / 2;
|
4840 |
break;
|
4849 |
color: t.backdropColor,
|
4850 |
};
|
4851 |
}
|
4852 |
+
b.push({
|
4853 |
+
rotation: m,
|
4854 |
+
label: v,
|
4855 |
+
font: P,
|
4856 |
color: i,
|
4857 |
+
strokeColor: n,
|
4858 |
strokeWidth: h,
|
4859 |
+
textOffset: C,
|
4860 |
+
textAlign: f,
|
4861 |
+
textBaseline: A,
|
4862 |
+
translation: [w, M],
|
4863 |
backdrop: d,
|
4864 |
});
|
4865 |
}
|
4866 |
+
return b;
|
4867 |
}
|
4868 |
_getXAxisLabelAlignment() {
|
4869 |
const { position: t, ticks: e } = this.options;
|
4870 |
+
if (-H(this.labelRotation)) return "top" === t ? "left" : "right";
|
4871 |
let i = "center";
|
4872 |
return (
|
4873 |
+
"start" === e.align
|
4874 |
+
? (i = "left")
|
4875 |
+
: "end" === e.align
|
4876 |
+
? (i = "right")
|
4877 |
+
: "inner" === e.align && (i = "inner"),
|
4878 |
i
|
4879 |
);
|
4880 |
}
|
5000 |
a = this._borderValue;
|
5001 |
let r, l, h, c;
|
5002 |
this.isHorizontal()
|
5003 |
+
? ((r = ve(t, this.left, n) - n / 2),
|
5004 |
+
(l = ve(t, this.right, o) + o / 2),
|
5005 |
(h = c = a))
|
5006 |
+
: ((h = ve(t, this.top, n) - n / 2),
|
5007 |
+
(c = ve(t, this.bottom, o) + o / 2),
|
5008 |
(r = l = a)),
|
5009 |
e.save(),
|
5010 |
(e.lineWidth = s.borderWidth),
|
5019 |
if (!this.options.ticks.display) return;
|
5020 |
const e = this.ctx,
|
5021 |
i = this._computeLabelArea();
|
5022 |
+
i && Pe(e, i);
|
5023 |
const s =
|
5024 |
this._labelItems || (this._labelItems = this._computeLabelItems(t));
|
5025 |
let n, o;
|
5035 |
t.backdrop.width,
|
5036 |
t.backdrop.height
|
5037 |
)),
|
5038 |
+
Ae(e, o, 0, t.textOffset, i, t);
|
5039 |
}
|
5040 |
+
i && De(e);
|
5041 |
}
|
5042 |
drawTitle() {
|
5043 |
const {
|
5044 |
ctx: t,
|
5045 |
+
options: { position: e, title: i, reverse: o },
|
5046 |
} = this;
|
5047 |
if (!i.display) return;
|
5048 |
+
const a = mi(i.font),
|
5049 |
+
r = pi(i.padding),
|
5050 |
+
l = i.align;
|
5051 |
+
let h = a.lineHeight / 2;
|
5052 |
+
"bottom" === e || "center" === e || n(e)
|
5053 |
+
? ((h += r.bottom),
|
5054 |
+
s(i.text) && (h += a.lineHeight * (i.text.length - 1)))
|
5055 |
+
: (h += r.top);
|
5056 |
const {
|
5057 |
+
titleX: c,
|
5058 |
+
titleY: d,
|
5059 |
+
maxWidth: u,
|
5060 |
+
rotation: f,
|
5061 |
} = (function (t, e, i, s) {
|
5062 |
const { top: o, left: a, bottom: r, right: l, chart: h } = t,
|
5063 |
{ chartArea: c, scales: d } = h;
|
5066 |
g,
|
5067 |
p = 0;
|
5068 |
const m = r - o,
|
5069 |
+
b = l - a;
|
5070 |
if (t.isHorizontal()) {
|
5071 |
+
if (((f = ut(s, a, l)), n(i))) {
|
5072 |
const t = Object.keys(i)[0],
|
5073 |
s = i[t];
|
5074 |
g = d[t].getPixelForValue(s) + m - e;
|
5075 |
} else
|
5076 |
+
g = "center" === i ? (c.bottom + c.top) / 2 + m - e : Vs(t, i, e);
|
5077 |
u = l - a;
|
5078 |
} else {
|
5079 |
+
if (n(i)) {
|
5080 |
const t = Object.keys(i)[0],
|
5081 |
s = i[t];
|
5082 |
+
f = d[t].getPixelForValue(s) - b + e;
|
5083 |
} else
|
5084 |
+
f = "center" === i ? (c.left + c.right) / 2 - b + e : Vs(t, i, e);
|
5085 |
+
(g = ut(s, r, o)), (p = "left" === i ? -L : L);
|
5086 |
}
|
5087 |
return { titleX: f, titleY: g, maxWidth: u, rotation: p };
|
5088 |
+
})(this, h, e, l);
|
5089 |
+
Ae(t, i.text, 0, 0, a, {
|
5090 |
color: i.color,
|
5091 |
+
maxWidth: u,
|
5092 |
+
rotation: f,
|
5093 |
+
textAlign: Hs(l, e, o),
|
5094 |
textBaseline: "middle",
|
5095 |
+
translation: [c, d],
|
5096 |
});
|
5097 |
}
|
5098 |
draw(t) {
|
5106 |
_layers() {
|
5107 |
const t = this.options,
|
5108 |
e = (t.ticks && t.ticks.z) || 0,
|
5109 |
+
i = r(t.grid && t.grid.z, -1);
|
5110 |
+
return this._isVisible() && this.draw === $s.prototype.draw
|
5111 |
? [
|
5112 |
{
|
5113 |
z: i,
|
5149 |
return s;
|
5150 |
}
|
5151 |
_resolveTickFontOptions(t) {
|
5152 |
+
return mi(this.options.ticks.setContext(this.getContext(t)).font);
|
5153 |
}
|
5154 |
_maxDigits() {
|
5155 |
const t = this._resolveTickFontOptions(0).lineHeight;
|
5156 |
return (this.isHorizontal() ? this.width : this.height) / t;
|
5157 |
}
|
5158 |
}
|
5159 |
+
class Ys {
|
5160 |
constructor(t, e, i) {
|
5161 |
(this.type = t),
|
5162 |
(this.scope = e),
|
5183 |
n in s ||
|
5184 |
((s[n] = t),
|
5185 |
(function (t, e, i) {
|
5186 |
+
const s = m(Object.create(null), [
|
5187 |
+
i ? ne.get(i) : {},
|
5188 |
+
ne.get(e),
|
5189 |
t.defaults,
|
5190 |
]);
|
5191 |
+
ne.set(e, s),
|
5192 |
t.defaultRoutes &&
|
5193 |
(function (t, e) {
|
5194 |
Object.keys(e).forEach((i) => {
|
5198 |
a = e[i].split("."),
|
5199 |
r = a.pop(),
|
5200 |
l = a.join(".");
|
5201 |
+
ne.route(o, n, l, r);
|
5202 |
});
|
5203 |
})(e, t.defaultRoutes);
|
5204 |
+
t.descriptors && ne.describe(e, t.descriptors);
|
5205 |
})(t, o, i),
|
5206 |
+
this.override && ne.override(t.id, t.overrides)),
|
5207 |
o
|
5208 |
);
|
5209 |
}
|
5215 |
i = t.id,
|
5216 |
s = this.scope;
|
5217 |
i in e && delete e[i],
|
5218 |
+
s && i in ne[s] && (delete ne[s][i], this.override && delete te[i]);
|
5219 |
}
|
5220 |
}
|
5221 |
+
var Us = new (class {
|
5222 |
constructor() {
|
5223 |
+
(this.controllers = new Ys(Ls, "datasets", !0)),
|
5224 |
+
(this.elements = new Ys(Es, "elements")),
|
5225 |
+
(this.plugins = new Ys(Object, "plugins")),
|
5226 |
+
(this.scales = new Ys($s, "scales")),
|
5227 |
(this._typedRegistries = [
|
5228 |
this.controllers,
|
5229 |
this.scales,
|
5277 |
const s = i || this._getRegistryForType(e);
|
5278 |
i || s.isForType(e) || (s === this.plugins && e.id)
|
5279 |
? this._exec(t, s, e)
|
5280 |
+
: d(e, (e) => {
|
5281 |
const s = i || this._getRegistryForType(e);
|
5282 |
this._exec(t, s, e);
|
5283 |
});
|
5284 |
});
|
5285 |
}
|
5286 |
_exec(t, e, i) {
|
5287 |
+
const s = w(t);
|
5288 |
+
c(i["before" + s], [], i), e[t](i), c(i["after" + s], [], i);
|
5289 |
}
|
5290 |
_getRegistryForType(t) {
|
5291 |
for (let e = 0; e < this._typedRegistries.length; e++) {
|
5301 |
return s;
|
5302 |
}
|
5303 |
})();
|
5304 |
+
class Xs {
|
5305 |
constructor() {
|
5306 |
this._init = [];
|
5307 |
}
|
5322 |
s = s || {};
|
5323 |
for (const n of t) {
|
5324 |
const t = n.plugin;
|
5325 |
+
if (!1 === c(t[i], [e, s, n.options], t) && s.cancelable) return !1;
|
5326 |
}
|
5327 |
return !0;
|
5328 |
}
|
5329 |
invalidate() {
|
5330 |
+
i(this._cache) ||
|
5331 |
((this._oldCache = this._cache), (this._cache = void 0));
|
5332 |
}
|
5333 |
_descriptors(t) {
|
5337 |
}
|
5338 |
_createDescriptors(t, e) {
|
5339 |
const i = t && t.config,
|
5340 |
+
s = r(i.options && i.options.plugins, {}),
|
5341 |
n = (function (t) {
|
5342 |
+
const e = {},
|
5343 |
+
i = [],
|
5344 |
+
s = Object.keys(Us.plugins.items);
|
5345 |
+
for (let t = 0; t < s.length; t++) i.push(Us.getPlugin(s[t]));
|
5346 |
+
const n = t.plugins || [];
|
5347 |
+
for (let t = 0; t < n.length; t++) {
|
5348 |
+
const s = n[t];
|
5349 |
+
-1 === i.indexOf(s) && (i.push(s), (e[s.id] = !0));
|
5350 |
}
|
5351 |
+
return { plugins: i, localIds: e };
|
5352 |
})(i);
|
5353 |
return !1 !== s || e
|
5354 |
+
? (function (t, { plugins: e, localIds: i }, s, n) {
|
5355 |
+
const o = [],
|
5356 |
+
a = t.getContext();
|
5357 |
+
for (const r of e) {
|
5358 |
+
const e = r.id,
|
5359 |
+
l = qs(s[e], n);
|
5360 |
null !== l &&
|
5361 |
+
o.push({
|
5362 |
+
plugin: r,
|
5363 |
+
options: Ks(t.config, { plugin: r, local: i[e] }, l, a),
|
5364 |
+
});
|
5365 |
}
|
5366 |
+
return o;
|
5367 |
})(t, n, s, e)
|
5368 |
: [];
|
5369 |
}
|
5375 |
this._notify(s(e, i), t, "stop"), this._notify(s(i, e), t, "start");
|
5376 |
}
|
5377 |
}
|
5378 |
+
function qs(t, e) {
|
5379 |
return e || !1 !== t ? (!0 === t ? {} : t) : null;
|
5380 |
}
|
5381 |
+
function Ks(t, { plugin: e, local: i }, s, n) {
|
5382 |
+
const o = t.pluginScopeKeys(e),
|
5383 |
+
a = t.getOptionScopes(s, o);
|
5384 |
+
return (
|
5385 |
+
i && e.defaults && a.push(e.defaults),
|
5386 |
+
t.createResolver(a, n, [""], {
|
5387 |
+
scriptable: !1,
|
5388 |
+
indexable: !1,
|
5389 |
+
allKeys: !0,
|
5390 |
+
})
|
5391 |
+
);
|
5392 |
}
|
5393 |
+
function Gs(t, e) {
|
5394 |
+
const i = ne.datasets[t] || {};
|
5395 |
return (
|
5396 |
((e.datasets || {})[t] || {}).indexAxis ||
|
5397 |
e.indexAxis ||
|
5399 |
"x"
|
5400 |
);
|
5401 |
}
|
5402 |
+
function Zs(t, e) {
|
5403 |
return "x" === t || "y" === t
|
5404 |
? t
|
5405 |
: e.axis ||
|
5411 |
t.charAt(0).toLowerCase();
|
5412 |
var i;
|
5413 |
}
|
5414 |
+
function Js(t) {
|
5415 |
const e = t.options || (t.options = {});
|
5416 |
+
(e.plugins = r(e.plugins, {})),
|
5417 |
(e.scales = (function (t, e) {
|
5418 |
+
const i = te[t.type] || { scales: {} },
|
5419 |
s = e.scales || {},
|
5420 |
+
o = Gs(t.type, e),
|
5421 |
+
a = Object.create(null),
|
5422 |
+
r = Object.create(null);
|
5423 |
return (
|
5424 |
Object.keys(s).forEach((t) => {
|
5425 |
const e = s[t];
|
5426 |
+
if (!n(e))
|
5427 |
return console.error(
|
5428 |
`Invalid scale configuration for scale: ${t}`
|
5429 |
);
|
5431 |
return console.warn(
|
5432 |
`Ignoring resolver passed as options for scale: ${t}`
|
5433 |
);
|
5434 |
+
const l = Zs(t, e),
|
5435 |
+
h = (function (t, e) {
|
5436 |
return t === e ? "_index_" : "_value_";
|
5437 |
+
})(l, o),
|
5438 |
+
c = i.scales || {};
|
5439 |
+
(a[l] = a[l] || t),
|
5440 |
+
(r[t] = b(Object.create(null), [{ axis: l }, e, c[l], c[h]]));
|
5441 |
}),
|
5442 |
t.data.datasets.forEach((i) => {
|
5443 |
const n = i.type || t.type,
|
5444 |
+
o = i.indexAxis || Gs(n, e),
|
5445 |
+
l = (te[n] || {}).scales || {};
|
5446 |
Object.keys(l).forEach((t) => {
|
5447 |
const e = (function (t, e) {
|
5448 |
let i = t;
|
5452 |
: "_value_" === t && (i = "x" === e ? "y" : "x"),
|
5453 |
i
|
5454 |
);
|
5455 |
+
})(t, o),
|
5456 |
+
n = i[e + "AxisID"] || a[e] || e;
|
5457 |
+
(r[n] = r[n] || Object.create(null)),
|
5458 |
+
b(r[n], [{ axis: e }, s[n], l[t]]);
|
5459 |
});
|
5460 |
}),
|
5461 |
+
Object.keys(r).forEach((t) => {
|
5462 |
+
const e = r[t];
|
5463 |
+
b(e, [ne.scales[e.type], ne.scale]);
|
5464 |
}),
|
5465 |
+
r
|
5466 |
);
|
5467 |
})(t, e));
|
5468 |
}
|
5469 |
+
function Qs(t) {
|
5470 |
return (
|
5471 |
((t = t || {}).datasets = t.datasets || []),
|
5472 |
(t.labels = t.labels || []),
|
5473 |
t
|
5474 |
);
|
5475 |
}
|
5476 |
+
const tn = new Map(),
|
5477 |
+
en = new Set();
|
5478 |
+
function sn(t, e) {
|
5479 |
+
let i = tn.get(t);
|
5480 |
+
return i || ((i = e()), tn.set(t, i), en.add(i)), i;
|
5481 |
}
|
5482 |
+
const nn = (t, e, i) => {
|
5483 |
+
const s = y(e, i);
|
5484 |
void 0 !== s && t.add(s);
|
5485 |
};
|
5486 |
+
class on {
|
5487 |
constructor(t) {
|
5488 |
(this._config = (function (t) {
|
5489 |
+
return ((t = t || {}).data = Qs(t.data)), Js(t), t;
|
5490 |
})(t)),
|
5491 |
(this._scopeCache = new Map()),
|
5492 |
(this._resolverCache = new Map());
|
5504 |
return this._config.data;
|
5505 |
}
|
5506 |
set data(t) {
|
5507 |
+
this._config.data = Qs(t);
|
5508 |
}
|
5509 |
get options() {
|
5510 |
return this._config.options;
|
5517 |
}
|
5518 |
update() {
|
5519 |
const t = this._config;
|
5520 |
+
this.clearCache(), Js(t);
|
5521 |
}
|
5522 |
clearCache() {
|
5523 |
this._scopeCache.clear(), this._resolverCache.clear();
|
5524 |
}
|
5525 |
datasetScopeKeys(t) {
|
5526 |
+
return sn(t, () => [[`datasets.${t}`, ""]]);
|
5527 |
}
|
5528 |
datasetAnimationScopeKeys(t, e) {
|
5529 |
+
return sn(`${t}.transition.${e}`, () => [
|
5530 |
[`datasets.${t}.transitions.${e}`, `transitions.${e}`],
|
5531 |
[`datasets.${t}`, ""],
|
5532 |
]);
|
5533 |
}
|
5534 |
datasetElementScopeKeys(t, e) {
|
5535 |
+
return sn(`${t}-${e}`, () => [
|
5536 |
[`datasets.${t}.elements.${e}`, `datasets.${t}`, `elements.${e}`, ""],
|
5537 |
]);
|
5538 |
}
|
5539 |
pluginScopeKeys(t) {
|
5540 |
const e = t.id;
|
5541 |
+
return sn(`${this.type}-plugin-${e}`, () => [
|
5542 |
[`plugins.${e}`, ...(t.additionalOptionScopes || [])],
|
5543 |
]);
|
5544 |
}
|
5554 |
if (a) return a;
|
5555 |
const r = new Set();
|
5556 |
e.forEach((e) => {
|
5557 |
+
t && (r.add(t), e.forEach((e) => nn(r, t, e))),
|
5558 |
+
e.forEach((t) => nn(r, s, t)),
|
5559 |
+
e.forEach((t) => nn(r, te[n] || {}, t)),
|
5560 |
+
e.forEach((t) => nn(r, ne, t)),
|
5561 |
+
e.forEach((t) => nn(r, ee, t));
|
5562 |
});
|
5563 |
const l = Array.from(r);
|
5564 |
return (
|
5565 |
0 === l.length && l.push(Object.create(null)),
|
5566 |
+
en.has(e) && o.set(e, l),
|
5567 |
l
|
5568 |
);
|
5569 |
}
|
5570 |
chartOptionScopes() {
|
5571 |
const { options: t, type: e } = this;
|
5572 |
+
return [t, te[e] || {}, ne.datasets[e] || {}, { type: e }, ne, ee];
|
5573 |
}
|
5574 |
+
resolveNamedOptions(t, e, i, n = [""]) {
|
5575 |
+
const o = { $shared: !0 },
|
5576 |
+
{ resolver: a, subPrefixes: r } = an(this._resolverCache, t, n);
|
5577 |
+
let l = a;
|
5578 |
if (
|
5579 |
(function (t, e) {
|
5580 |
+
const { isScriptable: i, isIndexable: n } = Ie(t);
|
5581 |
+
for (const o of e) {
|
5582 |
+
const e = i(o),
|
5583 |
+
a = n(o),
|
5584 |
+
r = (a || e) && t[o];
|
5585 |
+
if ((e && (k(r) || rn(r))) || (a && s(r))) return !0;
|
5586 |
}
|
5587 |
return !1;
|
5588 |
+
})(a, e)
|
5589 |
) {
|
5590 |
+
o.$shared = !1;
|
5591 |
+
l = Re(a, (i = k(i) ? i() : i), this.createResolver(t, i, r));
|
5592 |
}
|
5593 |
+
for (const t of e) o[t] = l[t];
|
5594 |
+
return o;
|
5595 |
}
|
5596 |
createResolver(t, e, i = [""], s) {
|
5597 |
+
const { resolver: o } = an(this._resolverCache, t, i);
|
5598 |
+
return n(e) ? Re(o, e, void 0, s) : o;
|
5599 |
}
|
5600 |
}
|
5601 |
+
function an(t, e, i) {
|
5602 |
let s = t.get(e);
|
5603 |
s || ((s = new Map()), t.set(e, s));
|
5604 |
const n = i.join();
|
5605 |
let o = s.get(n);
|
5606 |
if (!o) {
|
5607 |
(o = {
|
5608 |
+
resolver: Ee(e, i),
|
5609 |
subPrefixes: i.filter((t) => !t.toLowerCase().includes("hover")),
|
5610 |
}),
|
5611 |
s.set(n, o);
|
5612 |
}
|
5613 |
return o;
|
5614 |
}
|
5615 |
+
const rn = (t) =>
|
5616 |
+
n(t) && Object.getOwnPropertyNames(t).reduce((e, i) => e || k(t[i]), !1);
|
5617 |
+
const ln = ["top", "bottom", "left", "right", "chartArea"];
|
5618 |
+
function hn(t, e) {
|
5619 |
+
return "top" === t || "bottom" === t || (-1 === ln.indexOf(t) && "x" === e);
|
5620 |
}
|
5621 |
+
function cn(t, e) {
|
5622 |
return function (i, s) {
|
5623 |
return i[t] === s[t] ? i[e] - s[e] : i[t] - s[t];
|
5624 |
};
|
5625 |
}
|
5626 |
+
function dn(t) {
|
5627 |
const e = t.chart,
|
5628 |
i = e.options.animation;
|
5629 |
+
e.notifyPlugins("afterRender"), c(i && i.onComplete, [t], e);
|
5630 |
}
|
5631 |
+
function un(t) {
|
5632 |
const e = t.chart,
|
5633 |
i = e.options.animation;
|
5634 |
+
c(i && i.onProgress, [t], e);
|
5635 |
}
|
5636 |
+
function fn(t) {
|
5637 |
return (
|
5638 |
+
oe() && "string" == typeof t
|
5639 |
? (t = document.getElementById(t))
|
5640 |
: t && t.length && (t = t[0]),
|
5641 |
t && t.canvas && (t = t.canvas),
|
5642 |
t
|
5643 |
);
|
5644 |
}
|
5645 |
+
const gn = {},
|
5646 |
+
pn = (t) => {
|
5647 |
+
const e = fn(t);
|
5648 |
+
return Object.values(gn)
|
5649 |
.filter((t) => t.canvas === e)
|
5650 |
.pop();
|
5651 |
};
|
5652 |
+
function mn(t, e, i) {
|
5653 |
const s = Object.keys(t);
|
5654 |
for (const n of s) {
|
5655 |
const s = +n;
|
5659 |
}
|
5660 |
}
|
5661 |
}
|
5662 |
+
class bn {
|
5663 |
+
constructor(t, i) {
|
5664 |
+
const s = (this.config = new on(i)),
|
5665 |
+
n = fn(t),
|
5666 |
+
o = pn(n);
|
5667 |
if (o)
|
5668 |
throw new Error(
|
5669 |
"Canvas is already in use. Chart with ID '" +
|
5670 |
o.id +
|
5671 |
+
"' must be destroyed before the canvas with ID '" +
|
5672 |
+
o.canvas.id +
|
5673 |
+
"' can be reused."
|
5674 |
);
|
5675 |
+
const a = s.createResolver(s.chartOptionScopes(), this.getContext());
|
5676 |
+
(this.platform = new (s.platform || gs(n))()),
|
5677 |
this.platform.updateConfig(s);
|
5678 |
+
const r = this.platform.acquireContext(n, a.aspectRatio),
|
5679 |
+
l = r && r.canvas,
|
5680 |
+
h = l && l.height,
|
5681 |
+
c = l && l.width;
|
5682 |
+
(this.id = e()),
|
5683 |
+
(this.ctx = r),
|
5684 |
+
(this.canvas = l),
|
5685 |
+
(this.width = c),
|
5686 |
+
(this.height = h),
|
5687 |
+
(this._options = a),
|
5688 |
(this._aspectRatio = this.aspectRatio),
|
5689 |
(this._layers = []),
|
5690 |
(this._metasets = []),
|
5698 |
(this._responsiveListeners = void 0),
|
5699 |
(this._sortedMetasets = []),
|
5700 |
(this.scales = {}),
|
5701 |
+
(this._plugins = new Xs()),
|
5702 |
(this.$proxies = {}),
|
5703 |
(this._hiddenIndices = {}),
|
5704 |
(this.attached = !1),
|
5705 |
(this._animationsDisabled = void 0),
|
5706 |
(this.$context = void 0),
|
5707 |
+
(this._doResize = ct((t) => this.update(t), a.resizeDelay || 0)),
|
5708 |
(this._dataChanges = []),
|
5709 |
+
(gn[this.id] = this),
|
5710 |
+
r && l
|
5711 |
+
? (mt.listen(this, "complete", dn),
|
5712 |
+
mt.listen(this, "progress", un),
|
5713 |
this._initialize(),
|
5714 |
this.attached && this.update())
|
5715 |
: console.error(
|
5719 |
get aspectRatio() {
|
5720 |
const {
|
5721 |
options: { aspectRatio: t, maintainAspectRatio: e },
|
5722 |
+
width: s,
|
5723 |
+
height: n,
|
5724 |
+
_aspectRatio: o,
|
5725 |
} = this;
|
5726 |
+
return i(t) ? (e && o ? o : n ? s / n : null) : t;
|
5727 |
}
|
5728 |
get data() {
|
5729 |
return this.config.data;
|
5742 |
this.notifyPlugins("beforeInit"),
|
5743 |
this.options.responsive
|
5744 |
? this.resize()
|
5745 |
+
: pe(this, this.options.devicePixelRatio),
|
5746 |
this.bindEvents(),
|
5747 |
this.notifyPlugins("afterInit"),
|
5748 |
this
|
5749 |
);
|
5750 |
}
|
5751 |
clear() {
|
5752 |
+
return we(this.canvas, this.ctx), this;
|
5753 |
}
|
5754 |
stop() {
|
5755 |
+
return mt.stop(this), this;
|
5756 |
}
|
5757 |
resize(t, e) {
|
5758 |
+
mt.running(this)
|
5759 |
? (this._resizeBeforeDraw = { width: t, height: e })
|
5760 |
: this._resize(t, e);
|
5761 |
}
|
5769 |
(this.width = o.width),
|
5770 |
(this.height = o.height),
|
5771 |
(this._aspectRatio = this.aspectRatio),
|
5772 |
+
pe(this, a, !0) &&
|
5773 |
(this.notifyPlugins("resize", { size: o }),
|
5774 |
+
c(i.onResize, [this, o], this),
|
5775 |
this.attached && this._doResize(r) && this.render());
|
5776 |
}
|
5777 |
ensureScalesHaveIDs() {
|
5778 |
+
d(this.options.scales || {}, (t, e) => {
|
5779 |
t.id = e;
|
5780 |
});
|
5781 |
}
|
5789 |
(n = n.concat(
|
5790 |
Object.keys(e).map((t) => {
|
5791 |
const i = e[t],
|
5792 |
+
s = Zs(t, i),
|
5793 |
n = "r" === s,
|
5794 |
o = "x" === s;
|
5795 |
return {
|
5799 |
};
|
5800 |
})
|
5801 |
)),
|
5802 |
+
d(n, (e) => {
|
5803 |
const n = e.options,
|
5804 |
o = n.id,
|
5805 |
+
a = Zs(o, n),
|
5806 |
+
l = r(n.type, e.dtype);
|
5807 |
+
(void 0 !== n.position && hn(n.position, a) === hn(e.dposition)) ||
|
5808 |
(n.position = e.dposition),
|
5809 |
(s[o] = !0);
|
5810 |
+
let h = null;
|
5811 |
+
if (o in i && i[o].type === l) h = i[o];
|
5812 |
else {
|
5813 |
+
(h = new (Us.getScale(l))({
|
5814 |
id: o,
|
5815 |
+
type: l,
|
5816 |
ctx: this.ctx,
|
5817 |
chart: this,
|
5818 |
})),
|
5819 |
+
(i[h.id] = h);
|
5820 |
}
|
5821 |
+
h.init(n, t);
|
5822 |
}),
|
5823 |
+
d(s, (t, e) => {
|
5824 |
t || delete i[e];
|
5825 |
}),
|
5826 |
+
d(i, (t) => {
|
5827 |
+
Zi.configure(this, t, t.options), Zi.addBox(this, t);
|
5828 |
});
|
5829 |
}
|
5830 |
_updateMetasets() {
|
5835 |
for (let t = e; t < i; ++t) this._destroyDatasetMeta(t);
|
5836 |
t.splice(e, i - e);
|
5837 |
}
|
5838 |
+
this._sortedMetasets = t.slice(0).sort(cn("order", "index"));
|
5839 |
}
|
5840 |
_removeUnreferencedMetasets() {
|
5841 |
const {
|
5865 |
n.type !== o &&
|
5866 |
(this._destroyDatasetMeta(i), (n = this.getDatasetMeta(i))),
|
5867 |
(n.type = o),
|
5868 |
+
(n.indexAxis = s.indexAxis || Gs(o, this.options)),
|
5869 |
(n.order = s.order || 0),
|
5870 |
(n.index = i),
|
5871 |
(n.label = "" + s.label),
|
5874 |
)
|
5875 |
n.controller.updateIndex(i), n.controller.linkScales();
|
5876 |
else {
|
5877 |
+
const e = Us.getController(o),
|
5878 |
+
{ datasetElementType: s, dataElementType: a } = ne.datasets[o];
|
5879 |
Object.assign(e.prototype, {
|
5880 |
+
dataElementType: Us.getElement(a),
|
5881 |
+
datasetElementType: s && Us.getElement(s),
|
5882 |
}),
|
5883 |
(n.controller = new e(this, i)),
|
5884 |
t.push(n.controller);
|
5887 |
return this._updateMetasets(), t;
|
5888 |
}
|
5889 |
_resetElements() {
|
5890 |
+
d(
|
5891 |
this.data.datasets,
|
5892 |
(t, e) => {
|
5893 |
this.getDatasetMeta(e).controller.reset();
|
5925 |
(o = this._minPadding = i.layout.autoPadding ? o : 0),
|
5926 |
this._updateLayout(o),
|
5927 |
s ||
|
5928 |
+
d(n, (t) => {
|
5929 |
t.reset();
|
5930 |
}),
|
5931 |
this._updateDatasets(t),
|
5932 |
this.notifyPlugins("afterUpdate", { mode: t }),
|
5933 |
+
this._layers.sort(cn("z", "_idx"));
|
5934 |
const { _active: a, _lastEvent: r } = this;
|
5935 |
r
|
5936 |
? this._eventHandler(r, !0)
|
5938 |
this.render();
|
5939 |
}
|
5940 |
_updateScales() {
|
5941 |
+
d(this.scales, (t) => {
|
5942 |
+
Zi.removeBox(this, t);
|
5943 |
}),
|
5944 |
this.ensureScalesHaveIDs(),
|
5945 |
this.buildOrUpdateScales();
|
5948 |
const t = this.options,
|
5949 |
e = new Set(Object.keys(this._listeners)),
|
5950 |
i = new Set(t.events);
|
5951 |
+
(S(e, i) && !!this._responsiveListeners === t.responsive) ||
|
5952 |
(this.unbindEvents(), this.bindEvents());
|
5953 |
}
|
5954 |
_updateHiddenIndices() {
|
5955 |
const { _hiddenIndices: t } = this,
|
5956 |
e = this._getUniformDataChanges() || [];
|
5957 |
for (const { method: i, start: s, count: n } of e) {
|
5958 |
+
mn(t, s, "_removeElements" === i ? -n : n);
|
5959 |
}
|
5960 |
}
|
5961 |
_getUniformDataChanges() {
|
5970 |
.map((t, e) => e + "," + t.splice(1).join(","))
|
5971 |
),
|
5972 |
s = i(0);
|
5973 |
+
for (let t = 1; t < e; t++) if (!S(s, i(t))) return;
|
5974 |
return Array.from(s)
|
5975 |
.map((t) => t.split(","))
|
5976 |
.map((t) => ({ method: t[1], start: +t[2], count: +t[3] }));
|
5977 |
}
|
5978 |
_updateLayout(t) {
|
5979 |
if (!1 === this.notifyPlugins("beforeLayout", { cancelable: !0 })) return;
|
5980 |
+
Zi.update(this, this.width, this.height, t);
|
5981 |
const e = this.chartArea,
|
5982 |
i = e.width <= 0 || e.height <= 0;
|
5983 |
(this._layers = []),
|
5984 |
+
d(
|
5985 |
this.boxes,
|
5986 |
(t) => {
|
5987 |
(i && "chartArea" === t.position) ||
|
6002 |
for (let t = 0, e = this.data.datasets.length; t < e; ++t)
|
6003 |
this.getDatasetMeta(t).controller.configure();
|
6004 |
for (let e = 0, i = this.data.datasets.length; e < i; ++e)
|
6005 |
+
this._updateDataset(e, k(t) ? t({ datasetIndex: e }) : t);
|
6006 |
this.notifyPlugins("afterDatasetsUpdate", { mode: t });
|
6007 |
}
|
6008 |
}
|
6016 |
}
|
6017 |
render() {
|
6018 |
!1 !== this.notifyPlugins("beforeRender", { cancelable: !0 }) &&
|
6019 |
+
(mt.has(this)
|
6020 |
+
? this.attached && !mt.running(this) && mt.start(this)
|
6021 |
+
: (this.draw(), dn({ chart: this })));
|
6022 |
}
|
6023 |
draw() {
|
6024 |
let t;
|
6061 |
o = { meta: t, index: t.index, cancelable: !0 };
|
6062 |
!1 !== this.notifyPlugins("beforeDatasetDraw", o) &&
|
6063 |
(s &&
|
6064 |
+
Pe(e, {
|
6065 |
left: !1 === i.left ? 0 : n.left - i.left,
|
6066 |
right: !1 === i.right ? this.width : n.right + i.right,
|
6067 |
top: !1 === i.top ? 0 : n.top - i.top,
|
6068 |
bottom: !1 === i.bottom ? this.height : n.bottom + i.bottom,
|
6069 |
}),
|
6070 |
t.controller.draw(),
|
6071 |
+
s && De(e),
|
6072 |
(o.cancelable = !1),
|
6073 |
this.notifyPlugins("afterDatasetDraw", o));
|
6074 |
}
|
6075 |
+
isPointInArea(t) {
|
6076 |
+
return Se(t, this.chartArea, this._minPadding);
|
6077 |
+
}
|
6078 |
getElementsAtEventForMode(t, e, i, s) {
|
6079 |
+
const n = Vi.modes[e];
|
6080 |
return "function" == typeof n ? n(this, t, i, s) : [];
|
6081 |
}
|
6082 |
getDatasetMeta(t) {
|
6106 |
getContext() {
|
6107 |
return (
|
6108 |
this.$context ||
|
6109 |
+
(this.$context = _i(null, { chart: this, type: "chart" }))
|
6110 |
);
|
6111 |
}
|
6112 |
getVisibleDatasetCount() {
|
6131 |
const s = i ? "show" : "hide",
|
6132 |
n = this.getDatasetMeta(t),
|
6133 |
o = n.controller._resolveAnimations(void 0, s);
|
6134 |
+
M(e)
|
6135 |
? ((n.data[e].hidden = !i), this.update())
|
6136 |
: (this.setDatasetVisibility(t, i),
|
6137 |
o.update(n, { visible: i }),
|
6150 |
_stop() {
|
6151 |
let t, e;
|
6152 |
for (
|
6153 |
+
this.stop(), mt.remove(this), t = 0, e = this.data.datasets.length;
|
6154 |
t < e;
|
6155 |
++t
|
6156 |
)
|
6163 |
this.config.clearCache(),
|
6164 |
t &&
|
6165 |
(this.unbindEvents(),
|
6166 |
+
we(t, e),
|
6167 |
this.platform.releaseContext(e),
|
6168 |
(this.canvas = null),
|
6169 |
(this.ctx = null)),
|
6170 |
this.notifyPlugins("destroy"),
|
6171 |
+
delete gn[this.id],
|
6172 |
this.notifyPlugins("afterDestroy");
|
6173 |
}
|
6174 |
toBase64Image(...t) {
|
6189 |
s = (t, e, i) => {
|
6190 |
(t.offsetX = e), (t.offsetY = i), this._eventHandler(t);
|
6191 |
};
|
6192 |
+
d(this.options.events, (t) => i(t, s));
|
6193 |
}
|
6194 |
bindResponsiveEvents() {
|
6195 |
this._responsiveListeners || (this._responsiveListeners = {});
|
6222 |
e.isAttached(this.canvas) ? a() : o();
|
6223 |
}
|
6224 |
unbindEvents() {
|
6225 |
+
d(this._listeners, (t, e) => {
|
6226 |
this.platform.removeEventListener(this, e, t);
|
6227 |
}),
|
6228 |
(this._listeners = {}),
|
6229 |
+
d(this._responsiveListeners, (t, e) => {
|
6230 |
this.platform.removeEventListener(this, e, t);
|
6231 |
}),
|
6232 |
(this._responsiveListeners = void 0);
|
6258 |
if (!i) throw new Error("No dataset found at index " + t);
|
6259 |
return { datasetIndex: t, element: i.data[e], index: e };
|
6260 |
});
|
6261 |
+
!u(i, e) &&
|
6262 |
((this._active = i),
|
6263 |
(this._lastEvent = null),
|
6264 |
this._updateHoverStyles(i, e));
|
6285 |
event: t,
|
6286 |
replay: e,
|
6287 |
cancelable: !0,
|
6288 |
+
inChartArea: this.isPointInArea(t),
|
6289 |
},
|
6290 |
s = (e) =>
|
6291 |
(e.options.events || this.options.events).includes(t.native.type);
|
6302 |
const { _active: s = [], options: n } = this,
|
6303 |
o = e,
|
6304 |
a = this._getActiveElements(t, s, i, o),
|
6305 |
+
r = P(t),
|
6306 |
l = (function (t, e, i, s) {
|
6307 |
return i && "mouseout" !== t.type ? (s ? e : t) : null;
|
6308 |
})(t, this._lastEvent, i, r);
|
6309 |
i &&
|
6310 |
((this._lastEvent = null),
|
6311 |
+
c(n.onHover, [t, a, this], this),
|
6312 |
+
r && c(n.onClick, [t, a, this], this));
|
6313 |
+
const h = !u(a, s);
|
6314 |
return (
|
6315 |
(h || e) && ((this._active = a), this._updateHoverStyles(a, s, e)),
|
6316 |
(this._lastEvent = l),
|
6324 |
return this.getElementsAtEventForMode(t, n.mode, n, s);
|
6325 |
}
|
6326 |
}
|
6327 |
+
const xn = () => d(bn.instances, (t) => t._plugins.invalidate()),
|
6328 |
+
_n = !0;
|
6329 |
+
function yn() {
|
6330 |
throw new Error(
|
6331 |
"This method is not implemented: Check that a complete date adapter is provided."
|
6332 |
);
|
6333 |
}
|
6334 |
+
Object.defineProperties(bn, {
|
6335 |
+
defaults: { enumerable: _n, value: ne },
|
6336 |
+
instances: { enumerable: _n, value: gn },
|
6337 |
+
overrides: { enumerable: _n, value: te },
|
6338 |
+
registry: { enumerable: _n, value: Us },
|
6339 |
+
version: { enumerable: _n, value: "3.9.1" },
|
6340 |
+
getChart: { enumerable: _n, value: pn },
|
6341 |
register: {
|
6342 |
+
enumerable: _n,
|
6343 |
value: (...t) => {
|
6344 |
+
Us.add(...t), xn();
|
6345 |
},
|
6346 |
},
|
6347 |
unregister: {
|
6348 |
+
enumerable: _n,
|
6349 |
value: (...t) => {
|
6350 |
+
Us.remove(...t), xn();
|
6351 |
},
|
6352 |
},
|
6353 |
});
|
6354 |
+
class vn {
|
6355 |
constructor(t) {
|
6356 |
this.options = t || {};
|
6357 |
}
|
6358 |
+
init(t) {}
|
6359 |
formats() {
|
6360 |
+
return yn();
|
6361 |
}
|
6362 |
parse(t, e) {
|
6363 |
+
return yn();
|
6364 |
}
|
6365 |
format(t, e) {
|
6366 |
+
return yn();
|
6367 |
}
|
6368 |
add(t, e, i) {
|
6369 |
+
return yn();
|
6370 |
}
|
6371 |
diff(t, e, i) {
|
6372 |
+
return yn();
|
6373 |
}
|
6374 |
startOf(t, e, i) {
|
6375 |
+
return yn();
|
6376 |
}
|
6377 |
endOf(t, e) {
|
6378 |
+
return yn();
|
6379 |
}
|
6380 |
}
|
6381 |
+
vn.override = function (t) {
|
6382 |
+
Object.assign(vn.prototype, t);
|
6383 |
};
|
6384 |
+
var wn = { _date: vn };
|
6385 |
+
function Mn(t) {
|
6386 |
const e = t.iScale,
|
6387 |
i = (function (t, e) {
|
6388 |
if (!t._cache.$bar) {
|
6390 |
let s = [];
|
6391 |
for (let e = 0, n = i.length; e < n; e++)
|
6392 |
s = s.concat(i[e].controller.getAllParsedValues(t));
|
6393 |
+
t._cache.$bar = rt(s.sort((t, e) => t - e));
|
6394 |
}
|
6395 |
return t._cache.$bar;
|
6396 |
})(e, t.type);
|
6402 |
const l = () => {
|
6403 |
32767 !== o &&
|
6404 |
-32768 !== o &&
|
6405 |
+
(M(a) && (r = Math.min(r, Math.abs(o - a) || r)), (a = o));
|
6406 |
};
|
6407 |
for (s = 0, n = i.length; s < n; ++s) (o = e.getPixelForValue(i[s])), l();
|
6408 |
for (a = void 0, s = 0, n = e.ticks.length; s < n; ++s)
|
6409 |
(o = e.getPixelForTick(s)), l();
|
6410 |
return r;
|
6411 |
}
|
6412 |
+
function kn(t, e, i, n) {
|
6413 |
return (
|
6414 |
+
s(t)
|
6415 |
? (function (t, e, i, s) {
|
6416 |
const n = i.parse(t[0], s),
|
6417 |
o = i.parse(t[1], s),
|
6429 |
min: a,
|
6430 |
max: r,
|
6431 |
});
|
6432 |
+
})(t, e, i, n)
|
6433 |
+
: (e[i.axis] = i.parse(t, n)),
|
6434 |
e
|
6435 |
);
|
6436 |
}
|
6437 |
+
function Sn(t, e, i, s) {
|
6438 |
const n = t.iScale,
|
6439 |
o = t.vScale,
|
6440 |
a = n.getLabels(),
|
6445 |
(u = e[h]),
|
6446 |
(d = {}),
|
6447 |
(d[n.axis] = r || n.parse(a[h], h)),
|
6448 |
+
l.push(kn(u, d, o, h));
|
6449 |
return l;
|
6450 |
}
|
6451 |
+
function Pn(t) {
|
6452 |
return t && void 0 !== t.barStart && void 0 !== t.barEnd;
|
6453 |
}
|
6454 |
+
function Dn(t, e, i, s) {
|
6455 |
let n = e.borderSkipped;
|
6456 |
const o = {};
|
6457 |
if (!n) return void (t.borderSkipped = o);
|
6458 |
+
if (!0 === n)
|
6459 |
+
return void (t.borderSkipped = {
|
6460 |
+
top: !0,
|
6461 |
+
right: !0,
|
6462 |
+
bottom: !0,
|
6463 |
+
left: !0,
|
6464 |
+
});
|
6465 |
const {
|
6466 |
start: a,
|
6467 |
end: r,
|
6485 |
? (n = h)
|
6486 |
: (i._bottom || 0) === s
|
6487 |
? (n = c)
|
6488 |
+
: ((o[On(c, a, r, l)] = !0), (n = h))),
|
6489 |
+
(o[On(n, a, r, l)] = !0),
|
6490 |
(t.borderSkipped = o);
|
6491 |
}
|
6492 |
+
function On(t, e, i, s) {
|
6493 |
var n, o, a;
|
6494 |
return (
|
6495 |
s
|
6496 |
? ((a = i),
|
6497 |
+
(t = Cn((t = (n = t) === (o = e) ? a : n === a ? o : n), i, e)))
|
6498 |
+
: (t = Cn(t, e, i)),
|
6499 |
t
|
6500 |
);
|
6501 |
}
|
6502 |
+
function Cn(t, e, i) {
|
6503 |
return "start" === t ? e : "end" === t ? i : t;
|
6504 |
}
|
6505 |
+
function An(t, { inflateAmount: e }, i) {
|
6506 |
t.inflateAmount = "auto" === e ? (1 === i ? 0.33 : 0) : e;
|
6507 |
}
|
6508 |
+
class Tn extends Ls {
|
6509 |
parsePrimitiveData(t, e, i, s) {
|
6510 |
+
return Sn(t, e, i, s);
|
6511 |
}
|
6512 |
parseArrayData(t, e, i, s) {
|
6513 |
+
return Sn(t, e, i, s);
|
6514 |
}
|
6515 |
parseObjectData(t, e, i, s) {
|
6516 |
const { iScale: n, vScale: o } = t,
|
6522 |
for (d = i, u = i + s; d < u; ++d)
|
6523 |
(g = e[d]),
|
6524 |
(f = {}),
|
6525 |
+
(f[n.axis] = n.parse(y(g, l), d)),
|
6526 |
+
c.push(kn(y(g, h), f, o, d));
|
6527 |
return c;
|
6528 |
}
|
6529 |
updateRangeFromParsed(t, e, i, s) {
|
6541 |
{ iScale: i, vScale: s } = e,
|
6542 |
n = this.getParsed(t),
|
6543 |
o = n._custom,
|
6544 |
+
a = Pn(o)
|
6545 |
? "[" + o.start + ", " + o.end + "]"
|
6546 |
: "" + s.getLabelForValue(n[s.axis]);
|
6547 |
return { label: "" + i.getLabelForValue(n[i.axis]), value: a };
|
6554 |
const e = this._cachedMeta;
|
6555 |
this.updateElements(e.data, 0, e.data.length, t);
|
6556 |
}
|
6557 |
+
updateElements(t, e, s, n) {
|
6558 |
+
const o = "reset" === n,
|
6559 |
{
|
6560 |
+
index: a,
|
6561 |
+
_cachedMeta: { vScale: r },
|
6562 |
} = this,
|
6563 |
+
l = r.getBasePixel(),
|
6564 |
+
h = r.isHorizontal(),
|
6565 |
+
c = this._getRuler(),
|
6566 |
+
{ sharedOptions: d, includeOptions: u } = this._getSharedOptions(e, n);
|
6567 |
+
for (let f = e; f < e + s; f++) {
|
6568 |
+
const e = this.getParsed(f),
|
6569 |
+
s =
|
6570 |
+
o || i(e[r.axis])
|
6571 |
+
? { base: l, head: l }
|
6572 |
+
: this._calculateBarValuePixels(f),
|
6573 |
+
g = this._calculateBarIndexPixels(f, c),
|
6574 |
+
p = (e._stacks || {})[r.axis],
|
6575 |
+
m = {
|
6576 |
+
horizontal: h,
|
6577 |
+
base: s.base,
|
|
|
|
|
|
|
6578 |
enableBorderRadius:
|
6579 |
+
!p || Pn(e._custom) || a === p._top || a === p._bottom,
|
6580 |
+
x: h ? s.head : g.center,
|
6581 |
+
y: h ? g.center : s.head,
|
6582 |
+
height: h ? g.size : Math.abs(s.size),
|
6583 |
+
width: h ? Math.abs(s.size) : g.size,
|
6584 |
};
|
6585 |
u &&
|
6586 |
+
(m.options =
|
6587 |
+
d || this.resolveDataElementOptions(f, t[f].active ? "active" : n));
|
6588 |
+
const b = m.options || t[f].options;
|
6589 |
+
Dn(m, b, p, a), An(m, b, c.ratio), this.updateElement(t[f], f, m, n);
|
6590 |
}
|
6591 |
}
|
6592 |
_getStacks(t, e) {
|
6593 |
+
const { iScale: s } = this._cachedMeta,
|
6594 |
+
n = s
|
6595 |
+
.getMatchingVisibleMetas(this._type)
|
6596 |
+
.filter((t) => t.controller.options.grouped),
|
6597 |
+
o = s.options.stacked,
|
6598 |
+
a = [],
|
6599 |
+
r = (t) => {
|
6600 |
+
const s = t.controller.getParsed(e),
|
6601 |
+
n = s && s[t.vScale.axis];
|
6602 |
+
if (i(n) || isNaN(n)) return !0;
|
6603 |
+
};
|
6604 |
+
for (const i of n)
|
6605 |
+
if (
|
6606 |
+
(void 0 === e || !r(i)) &&
|
6607 |
+
((!1 === o ||
|
6608 |
+
-1 === a.indexOf(i.stack) ||
|
6609 |
+
(void 0 === o && void 0 === i.stack)) &&
|
6610 |
+
a.push(i.stack),
|
6611 |
+
i.index === t)
|
6612 |
+
)
|
6613 |
+
break;
|
|
|
6614 |
return a.length || a.push(void 0), a;
|
6615 |
}
|
6616 |
_getStackCount(t) {
|
6631 |
s.push(i.getPixelForValue(this.getParsed(n)[i.axis], n));
|
6632 |
const a = t.barThickness;
|
6633 |
return {
|
6634 |
+
min: a || Mn(e),
|
6635 |
pixels: s,
|
6636 |
start: i._startPixel,
|
6637 |
end: i._endPixel,
|
6643 |
}
|
6644 |
_calculateBarValuePixels(t) {
|
6645 |
const {
|
6646 |
+
_cachedMeta: { vScale: e, _stacked: s },
|
6647 |
+
options: { base: n, minBarLength: o },
|
6648 |
} = this,
|
6649 |
+
a = n || 0,
|
6650 |
+
r = this.getParsed(t),
|
6651 |
+
l = r._custom,
|
6652 |
+
h = Pn(l);
|
6653 |
+
let c,
|
6654 |
+
d,
|
6655 |
+
u = r[e.axis],
|
6656 |
+
f = 0,
|
6657 |
+
g = s ? this.applyStack(e, r, s) : u;
|
6658 |
+
g !== u && ((f = g - u), (g = u)),
|
6659 |
+
h &&
|
6660 |
+
((u = l.barStart),
|
6661 |
+
(g = l.barEnd - l.barStart),
|
6662 |
+
0 !== u && z(u) !== z(l.barEnd) && (f = 0),
|
6663 |
+
(f += u));
|
6664 |
+
const p = i(n) || h ? f : n;
|
6665 |
+
let m = e.getPixelForValue(p);
|
6666 |
if (
|
6667 |
+
((c = this.chart.getDataVisibility(t) ? e.getPixelForValue(f + g) : m),
|
6668 |
+
(d = c - m),
|
6669 |
+
Math.abs(d) < o)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6670 |
) {
|
6671 |
+
(d =
|
6672 |
+
(function (t, e, i) {
|
6673 |
+
return 0 !== t
|
6674 |
+
? z(t)
|
6675 |
+
: (e.isHorizontal() ? 1 : -1) * (e.min >= i ? 1 : -1);
|
6676 |
+
})(d, e, a) * o),
|
6677 |
+
u === a && (m -= d / 2);
|
6678 |
+
const t = e.getPixelForDecimal(0),
|
6679 |
+
i = e.getPixelForDecimal(1),
|
6680 |
+
s = Math.min(t, i),
|
6681 |
+
n = Math.max(t, i);
|
6682 |
+
(m = Math.max(Math.min(m, n), s)), (c = m + d);
|
6683 |
}
|
6684 |
+
if (m === e.getPixelForValue(a)) {
|
6685 |
+
const t = (z(d) * e.getLineWidthForValue(a)) / 2;
|
6686 |
+
(m += t), (d -= t);
|
6687 |
+
}
|
6688 |
+
return { size: d, base: m, head: c, center: c + d / 2 };
|
6689 |
}
|
6690 |
_calculateBarIndexPixels(t, e) {
|
6691 |
+
const s = e.scale,
|
6692 |
+
n = this.options,
|
6693 |
+
o = n.skipNull,
|
6694 |
+
a = r(n.maxBarThickness, 1 / 0);
|
6695 |
+
let l, h;
|
6696 |
if (e.grouped) {
|
6697 |
+
const s = o ? this._getStackCount(t) : e.stackCount,
|
6698 |
+
r =
|
6699 |
+
"flex" === n.barThickness
|
6700 |
? (function (t, e, i, s) {
|
6701 |
const n = e.pixels,
|
6702 |
o = n[t];
|
6712 |
ratio: i.barPercentage,
|
6713 |
start: h,
|
6714 |
};
|
6715 |
+
})(t, e, n, s)
|
6716 |
+
: (function (t, e, s, n) {
|
6717 |
+
const o = s.barThickness;
|
6718 |
+
let a, r;
|
6719 |
return (
|
6720 |
+
i(o)
|
6721 |
+
? ((a = e.min * s.categoryPercentage),
|
6722 |
+
(r = s.barPercentage))
|
6723 |
+
: ((a = o * n), (r = 1)),
|
6724 |
+
{ chunk: a / n, ratio: r, start: e.pixels[t] - a / 2 }
|
6725 |
);
|
6726 |
+
})(t, e, n, s),
|
6727 |
+
c = this._getStackIndex(
|
6728 |
this.index,
|
6729 |
this._cachedMeta.stack,
|
6730 |
+
o ? t : void 0
|
6731 |
);
|
6732 |
+
(l = r.start + r.chunk * c + r.chunk / 2),
|
6733 |
+
(h = Math.min(a, r.chunk * r.ratio));
|
6734 |
+
} else (l = s.getPixelForValue(this.getParsed(t)[s.axis], t)), (h = Math.min(a, e.min * e.ratio));
|
6735 |
+
return { base: l - h / 2, head: l + h / 2, center: l, size: h };
|
6736 |
}
|
6737 |
draw() {
|
6738 |
const t = this._cachedMeta,
|
6744 |
null !== this.getParsed(n)[e.axis] && i[n].draw(this._ctx);
|
6745 |
}
|
6746 |
}
|
6747 |
+
(Tn.id = "bar"),
|
6748 |
+
(Tn.defaults = {
|
6749 |
datasetElementType: !1,
|
6750 |
dataElementType: "bar",
|
6751 |
categoryPercentage: 0.8,
|
6758 |
},
|
6759 |
},
|
6760 |
}),
|
6761 |
+
(Tn.overrides = {
|
6762 |
scales: {
|
6763 |
_index_: { type: "category", offset: !0, grid: { offset: !0 } },
|
6764 |
_value_: { type: "linear", beginAtZero: !0 },
|
6765 |
},
|
6766 |
});
|
6767 |
+
class Ln extends Ls {
|
6768 |
initialize() {
|
6769 |
(this.enableOptionSharing = !0), super.initialize();
|
6770 |
}
|
6778 |
const n = super.parseArrayData(t, e, i, s);
|
6779 |
for (let t = 0; t < n.length; t++) {
|
6780 |
const s = e[i + t];
|
6781 |
+
n[t]._custom = r(s[2], this.resolveDataElementOptions(t + i).radius);
|
6782 |
}
|
6783 |
return n;
|
6784 |
}
|
6786 |
const n = super.parseObjectData(t, e, i, s);
|
6787 |
for (let t = 0; t < n.length; t++) {
|
6788 |
const s = e[i + t];
|
6789 |
+
n[t]._custom = r(
|
6790 |
s && s.r && +s.r,
|
6791 |
this.resolveDataElementOptions(t + i).radius
|
6792 |
);
|
6819 |
updateElements(t, e, i, s) {
|
6820 |
const n = "reset" === s,
|
6821 |
{ iScale: o, vScale: a } = this._cachedMeta,
|
6822 |
+
{ sharedOptions: r, includeOptions: l } = this._getSharedOptions(e, s),
|
6823 |
+
h = o.axis,
|
6824 |
+
c = a.axis;
|
6825 |
+
for (let d = e; d < e + i; d++) {
|
6826 |
+
const e = t[d],
|
6827 |
+
i = !n && this.getParsed(d),
|
6828 |
+
u = {},
|
6829 |
+
f = (u[h] = n ? o.getPixelForDecimal(0.5) : o.getPixelForValue(i[h])),
|
6830 |
+
g = (u[c] = n ? a.getBasePixel() : a.getPixelForValue(i[c]));
|
6831 |
+
(u.skip = isNaN(f) || isNaN(g)),
|
6832 |
+
l &&
|
6833 |
+
((u.options =
|
6834 |
+
r || this.resolveDataElementOptions(d, e.active ? "active" : s)),
|
6835 |
+
n && (u.options.radius = 0)),
|
6836 |
+
this.updateElement(e, d, u, s);
|
|
|
|
|
|
|
|
|
6837 |
}
|
|
|
6838 |
}
|
6839 |
resolveDataElementOptions(t, e) {
|
6840 |
const i = this.getParsed(t);
|
6842 |
s.$shared && (s = Object.assign({}, s, { $shared: !1 }));
|
6843 |
const n = s.radius;
|
6844 |
return (
|
6845 |
+
"active" !== e && (s.radius = 0), (s.radius += r(i && i._custom, n)), s
|
6846 |
);
|
6847 |
}
|
6848 |
}
|
6849 |
+
(Ln.id = "bubble"),
|
6850 |
+
(Ln.defaults = {
|
6851 |
datasetElementType: !1,
|
6852 |
dataElementType: "point",
|
6853 |
animations: {
|
6857 |
},
|
6858 |
},
|
6859 |
}),
|
6860 |
+
(Ln.overrides = {
|
6861 |
scales: { x: { type: "linear" }, y: { type: "linear" } },
|
6862 |
plugins: { tooltip: { callbacks: { title: () => "" } } },
|
6863 |
});
|
6864 |
+
class En extends Ls {
|
6865 |
constructor(t, e) {
|
6866 |
super(t, e),
|
6867 |
(this.enableOptionSharing = !0),
|
6876 |
s = this._cachedMeta;
|
6877 |
if (!1 === this._parsing) s._parsed = i;
|
6878 |
else {
|
6879 |
+
let o,
|
6880 |
+
a,
|
6881 |
+
r = (t) => +i[t];
|
6882 |
+
if (n(i[t])) {
|
6883 |
const { key: t = "value" } = this._parsing;
|
6884 |
+
r = (e) => +y(i[e], t);
|
6885 |
}
|
6886 |
+
for (o = t, a = t + e; o < a; ++o) s._parsed[o] = r(o);
|
6887 |
}
|
6888 |
}
|
6889 |
_getRotation() {
|
6890 |
+
return H(this.options.rotation - 90);
|
6891 |
}
|
6892 |
_getCircumference() {
|
6893 |
+
return H(this.options.circumference);
|
6894 |
}
|
6895 |
_getRotationExtents() {
|
6896 |
+
let t = O,
|
6897 |
+
e = -O;
|
6898 |
for (let i = 0; i < this.chart.data.datasets.length; ++i)
|
6899 |
if (this.chart.isDatasetVisible(i)) {
|
6900 |
const s = this.chart.getDatasetMeta(i).controller,
|
6914 |
this.getMaxOffset(n) +
|
6915 |
this.options.spacing,
|
6916 |
a = Math.max((Math.min(i.width, i.height) - o) / 2, 0),
|
6917 |
+
r = Math.min(l(this.options.cutout, a), 1),
|
6918 |
+
c = this._getRingWeight(this.index),
|
6919 |
+
{ circumference: d, rotation: u } = this._getRotationExtents(),
|
6920 |
{
|
6921 |
+
ratioX: f,
|
6922 |
+
ratioY: g,
|
6923 |
+
offsetX: p,
|
6924 |
+
offsetY: m,
|
6925 |
} = (function (t, e, i) {
|
6926 |
let s = 1,
|
6927 |
n = 1,
|
6928 |
o = 0,
|
6929 |
a = 0;
|
6930 |
+
if (e < O) {
|
6931 |
const r = t,
|
6932 |
l = r + e,
|
6933 |
h = Math.cos(r),
|
6935 |
d = Math.cos(l),
|
6936 |
u = Math.sin(l),
|
6937 |
f = (t, e, s) =>
|
6938 |
+
G(t, r, l, !0) ? 1 : Math.max(e, e * i, s, s * i),
|
6939 |
g = (t, e, s) =>
|
6940 |
+
G(t, r, l, !0) ? -1 : Math.min(e, e * i, s, s * i),
|
6941 |
p = f(0, h, d),
|
6942 |
+
m = f(L, c, u),
|
6943 |
+
b = g(D, h, d),
|
6944 |
+
x = g(D + L, c, u);
|
6945 |
+
(s = (p - b) / 2),
|
6946 |
+
(n = (m - x) / 2),
|
6947 |
+
(o = -(p + b) / 2),
|
6948 |
+
(a = -(m + x) / 2);
|
6949 |
}
|
6950 |
return { ratioX: s, ratioY: n, offsetX: o, offsetY: a };
|
6951 |
+
})(u, d, r),
|
6952 |
+
b = (i.width - o) / f,
|
6953 |
+
x = (i.height - o) / g,
|
6954 |
+
_ = Math.max(Math.min(b, x) / 2, 0),
|
6955 |
+
y = h(this.options.radius, _),
|
6956 |
+
v = (y - Math.max(y * r, 0)) / this._getVisibleDatasetWeightTotal();
|
6957 |
+
(this.offsetX = p * y),
|
6958 |
+
(this.offsetY = m * y),
|
6959 |
(s.total = this.calculateTotal()),
|
6960 |
+
(this.outerRadius = y - v * this._getRingWeightOffset(this.index)),
|
6961 |
+
(this.innerRadius = Math.max(this.outerRadius - v * c, 0)),
|
6962 |
this.updateElements(n, 0, n.length, t);
|
6963 |
}
|
6964 |
_circumference(t, e) {
|
6970 |
null === s._parsed[t] ||
|
6971 |
s.data[t].hidden
|
6972 |
? 0
|
6973 |
+
: this.calculateCircumference((s._parsed[t] * n) / O);
|
6974 |
}
|
6975 |
updateElements(t, e, i, s) {
|
6976 |
const n = "reset" === s,
|
6982 |
c = n && r.animateScale,
|
6983 |
d = c ? 0 : this.innerRadius,
|
6984 |
u = c ? 0 : this.outerRadius,
|
6985 |
+
{ sharedOptions: f, includeOptions: g } = this._getSharedOptions(e, s);
|
6986 |
+
let p,
|
6987 |
+
m = this._getRotation();
|
6988 |
+
for (p = 0; p < e; ++p) m += this._circumference(p, n);
|
6989 |
+
for (p = e; p < e + i; ++p) {
|
6990 |
+
const e = this._circumference(p, n),
|
6991 |
+
i = t[p],
|
|
|
|
|
6992 |
o = {
|
6993 |
x: l + this.offsetX,
|
6994 |
y: h + this.offsetY,
|
6995 |
+
startAngle: m,
|
6996 |
+
endAngle: m + e,
|
6997 |
circumference: e,
|
6998 |
outerRadius: u,
|
6999 |
innerRadius: d,
|
7000 |
};
|
7001 |
+
g &&
|
7002 |
(o.options =
|
7003 |
+
f || this.resolveDataElementOptions(p, i.active ? "active" : s)),
|
7004 |
+
(m += e),
|
7005 |
+
this.updateElement(i, p, o, s);
|
7006 |
}
|
|
|
7007 |
}
|
7008 |
calculateTotal() {
|
7009 |
const t = this._cachedMeta,
|
7022 |
}
|
7023 |
calculateCircumference(t) {
|
7024 |
const e = this._cachedMeta.total;
|
7025 |
+
return e > 0 && !isNaN(t) ? O * (Math.abs(t) / e) : 0;
|
7026 |
}
|
7027 |
getLabelAndValue(t) {
|
7028 |
const e = this._cachedMeta,
|
7029 |
i = this.chart,
|
7030 |
s = i.data.labels || [],
|
7031 |
+
n = li(e._parsed[t], i.options.locale);
|
7032 |
return { label: s[t] || "", value: n };
|
7033 |
}
|
7034 |
getMaxBorderWidth(t) {
|
7063 |
return e;
|
7064 |
}
|
7065 |
_getRingWeight(t) {
|
7066 |
+
return Math.max(r(this.chart.data.datasets[t].weight, 1), 0);
|
7067 |
}
|
7068 |
_getVisibleDatasetWeightTotal() {
|
7069 |
return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;
|
7070 |
}
|
7071 |
}
|
7072 |
+
(En.id = "doughnut"),
|
7073 |
+
(En.defaults = {
|
7074 |
datasetElementType: !1,
|
7075 |
dataElementType: "arc",
|
7076 |
animation: { animateRotate: !0, animateScale: !1 },
|
7098 |
spacing: 0,
|
7099 |
indexAxis: "r",
|
7100 |
}),
|
7101 |
+
(En.descriptors = {
|
7102 |
_scriptable: (t) => "spacing" !== t,
|
7103 |
_indexable: (t) => "spacing" !== t,
|
7104 |
}),
|
7105 |
+
(En.overrides = {
|
7106 |
aspectRatio: 1,
|
7107 |
plugins: {
|
7108 |
legend: {
|
7139 |
label(t) {
|
7140 |
let e = t.label;
|
7141 |
const i = ": " + t.formattedValue;
|
7142 |
+
return s(e) ? ((e = e.slice()), (e[0] += i)) : (e += i), e;
|
7143 |
},
|
7144 |
},
|
7145 |
},
|
7146 |
},
|
7147 |
});
|
7148 |
+
class Rn extends Ls {
|
7149 |
initialize() {
|
7150 |
+
(this.enableOptionSharing = !0),
|
7151 |
+
(this.supportsDecimation = !0),
|
7152 |
+
super.initialize();
|
7153 |
}
|
7154 |
update(t) {
|
7155 |
const e = this._cachedMeta,
|
7156 |
{ dataset: i, data: s = [], _dataset: n } = e,
|
7157 |
o = this.chart._animationsDisabled;
|
7158 |
+
let { start: a, count: r } = gt(e, s, o);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7159 |
(this._drawStart = a),
|
7160 |
(this._drawCount = r),
|
7161 |
+
pt(e) && ((a = 0), (r = s.length)),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7162 |
(i._chart = this.chart),
|
7163 |
(i._datasetIndex = this.index),
|
7164 |
(i._decimated = !!n._decimated),
|
7169 |
this.updateElement(i, void 0, { animated: !o, options: l }, t),
|
7170 |
this.updateElements(s, a, r, t);
|
7171 |
}
|
7172 |
+
updateElements(t, e, s, n) {
|
7173 |
+
const o = "reset" === n,
|
7174 |
+
{ iScale: a, vScale: r, _stacked: l, _dataset: h } = this._cachedMeta,
|
7175 |
+
{ sharedOptions: c, includeOptions: d } = this._getSharedOptions(e, n),
|
7176 |
+
u = a.axis,
|
7177 |
+
f = r.axis,
|
|
|
|
|
7178 |
{ spanGaps: g, segment: p } = this.options,
|
7179 |
+
m = B(g) ? g : Number.POSITIVE_INFINITY,
|
7180 |
+
b = this.chart._animationsDisabled || o || "none" === n;
|
7181 |
+
let x = e > 0 && this.getParsed(e - 1);
|
7182 |
+
for (let g = e; g < e + s; ++g) {
|
7183 |
+
const e = t[g],
|
7184 |
+
s = this.getParsed(g),
|
7185 |
+
_ = b ? e : {},
|
7186 |
+
y = i(s[f]),
|
7187 |
+
v = (_[u] = a.getPixelForValue(s[u], g)),
|
7188 |
+
w = (_[f] =
|
7189 |
+
o || y
|
7190 |
+
? r.getBasePixel()
|
7191 |
+
: r.getPixelForValue(l ? this.applyStack(r, s, l) : s[f], g));
|
7192 |
+
(_.skip = isNaN(v) || isNaN(w) || y),
|
7193 |
+
(_.stop = g > 0 && Math.abs(s[u] - x[u]) > m),
|
7194 |
+
p && ((_.parsed = s), (_.raw = h.data[g])),
|
7195 |
d &&
|
7196 |
+
(_.options =
|
7197 |
+
c || this.resolveDataElementOptions(g, e.active ? "active" : n)),
|
7198 |
+
b || this.updateElement(e, g, _, n),
|
7199 |
+
(x = s);
|
7200 |
}
|
|
|
7201 |
}
|
7202 |
getMaxOverflow() {
|
7203 |
const t = this._cachedMeta,
|
7215 |
super.draw();
|
7216 |
}
|
7217 |
}
|
7218 |
+
(Rn.id = "line"),
|
7219 |
+
(Rn.defaults = {
|
7220 |
datasetElementType: "line",
|
7221 |
dataElementType: "point",
|
7222 |
showLine: !0,
|
7223 |
spanGaps: !1,
|
7224 |
}),
|
7225 |
+
(Rn.overrides = {
|
7226 |
scales: { _index_: { type: "category" }, _value_: { type: "linear" } },
|
7227 |
});
|
7228 |
+
class In extends Ls {
|
7229 |
constructor(t, e) {
|
7230 |
super(t, e), (this.innerRadius = void 0), (this.outerRadius = void 0);
|
7231 |
}
|
7233 |
const e = this._cachedMeta,
|
7234 |
i = this.chart,
|
7235 |
s = i.data.labels || [],
|
7236 |
+
n = li(e._parsed[t].r, i.options.locale);
|
7237 |
return { label: s[t] || "", value: n };
|
7238 |
}
|
7239 |
+
parseObjectData(t, e, i, s) {
|
7240 |
+
return Ue.bind(this)(t, e, i, s);
|
7241 |
+
}
|
7242 |
update(t) {
|
7243 |
const e = this._cachedMeta.data;
|
7244 |
this._updateRadius(), this.updateElements(e, 0, e.length, t);
|
7245 |
}
|
7246 |
+
getMinMax() {
|
7247 |
+
const t = this._cachedMeta,
|
7248 |
+
e = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY };
|
7249 |
+
return (
|
7250 |
+
t.data.forEach((t, i) => {
|
7251 |
+
const s = this.getParsed(i).r;
|
7252 |
+
!isNaN(s) &&
|
7253 |
+
this.chart.getDataVisibility(i) &&
|
7254 |
+
(s < e.min && (e.min = s), s > e.max && (e.max = s));
|
7255 |
+
}),
|
7256 |
+
e
|
7257 |
+
);
|
7258 |
+
}
|
7259 |
_updateRadius() {
|
7260 |
const t = this.chart,
|
7261 |
e = t.chartArea,
|
7275 |
updateElements(t, e, i, s) {
|
7276 |
const n = "reset" === s,
|
7277 |
o = this.chart,
|
7278 |
+
a = o.options.animation,
|
7279 |
+
r = this._cachedMeta.rScale,
|
7280 |
+
l = r.xCenter,
|
7281 |
+
h = r.yCenter,
|
7282 |
+
c = r.getIndexAngle(0) - 0.5 * D;
|
7283 |
+
let d,
|
7284 |
+
u = c;
|
7285 |
+
const f = 360 / this.countVisibleElements();
|
7286 |
+
for (d = 0; d < e; ++d) u += this._computeAngle(d, s, f);
|
7287 |
+
for (d = e; d < e + i; d++) {
|
7288 |
+
const e = t[d];
|
7289 |
+
let i = u,
|
7290 |
+
g = u + this._computeAngle(d, s, f),
|
7291 |
+
p = o.getDataVisibility(d)
|
7292 |
+
? r.getDistanceFromCenterForValue(this.getParsed(d).r)
|
|
|
7293 |
: 0;
|
7294 |
+
(u = g),
|
7295 |
+
n && (a.animateScale && (p = 0), a.animateRotate && (i = g = c));
|
7296 |
+
const m = {
|
7297 |
+
x: l,
|
7298 |
+
y: h,
|
7299 |
innerRadius: 0,
|
7300 |
+
outerRadius: p,
|
7301 |
startAngle: i,
|
7302 |
+
endAngle: g,
|
7303 |
+
options: this.resolveDataElementOptions(d, e.active ? "active" : s),
|
7304 |
};
|
7305 |
+
this.updateElement(e, d, m, s);
|
7306 |
}
|
7307 |
}
|
7308 |
countVisibleElements() {
|
7309 |
+
const t = this._cachedMeta;
|
7310 |
+
let e = 0;
|
|
|
7311 |
return (
|
7312 |
+
t.data.forEach((t, i) => {
|
7313 |
+
!isNaN(this.getParsed(i).r) && this.chart.getDataVisibility(i) && e++;
|
7314 |
}),
|
7315 |
+
e
|
7316 |
);
|
7317 |
}
|
7318 |
_computeAngle(t, e, i) {
|
7319 |
return this.chart.getDataVisibility(t)
|
7320 |
+
? H(this.resolveDataElementOptions(t, e).angle || i)
|
7321 |
: 0;
|
7322 |
}
|
7323 |
}
|
7324 |
+
(In.id = "polarArea"),
|
7325 |
+
(In.defaults = {
|
7326 |
dataElementType: "arc",
|
7327 |
animation: { animateRotate: !0, animateScale: !0 },
|
7328 |
animations: {
|
7341 |
indexAxis: "r",
|
7342 |
startAngle: 0,
|
7343 |
}),
|
7344 |
+
(In.overrides = {
|
7345 |
aspectRatio: 1,
|
7346 |
plugins: {
|
7347 |
legend: {
|
7391 |
},
|
7392 |
},
|
7393 |
});
|
7394 |
+
class zn extends En {}
|
7395 |
+
(zn.id = "pie"),
|
7396 |
+
(zn.defaults = {
|
7397 |
cutout: 0,
|
7398 |
rotation: 0,
|
7399 |
circumference: 360,
|
7400 |
radius: "100%",
|
7401 |
});
|
7402 |
+
class Fn extends Ls {
|
7403 |
getLabelAndValue(t) {
|
7404 |
const e = this._cachedMeta.vScale,
|
7405 |
i = this.getParsed(t);
|
7408 |
value: "" + e.getLabelForValue(i[e.axis]),
|
7409 |
};
|
7410 |
}
|
7411 |
+
parseObjectData(t, e, i, s) {
|
7412 |
+
return Ue.bind(this)(t, e, i, s);
|
7413 |
+
}
|
7414 |
update(t) {
|
7415 |
const e = this._cachedMeta,
|
7416 |
i = e.dataset,
|
7425 |
this.updateElements(s, 0, s.length, t);
|
7426 |
}
|
7427 |
updateElements(t, e, i, s) {
|
7428 |
+
const n = this._cachedMeta.rScale,
|
7429 |
+
o = "reset" === s;
|
7430 |
+
for (let a = e; a < e + i; a++) {
|
7431 |
+
const e = t[a],
|
7432 |
+
i = this.resolveDataElementOptions(a, e.active ? "active" : s),
|
7433 |
+
r = n.getPointPositionForValue(a, this.getParsed(a).r),
|
7434 |
+
l = o ? n.xCenter : r.x,
|
7435 |
+
h = o ? n.yCenter : r.y,
|
7436 |
+
c = {
|
7437 |
+
x: l,
|
7438 |
+
y: h,
|
7439 |
+
angle: r.angle,
|
7440 |
+
skip: isNaN(l) || isNaN(h),
|
|
|
7441 |
options: i,
|
7442 |
};
|
7443 |
+
this.updateElement(e, a, c, s);
|
7444 |
}
|
7445 |
}
|
7446 |
}
|
7447 |
+
(Fn.id = "radar"),
|
7448 |
+
(Fn.defaults = {
|
7449 |
datasetElementType: "line",
|
7450 |
dataElementType: "point",
|
7451 |
indexAxis: "r",
|
7452 |
showLine: !0,
|
7453 |
elements: { line: { fill: "start" } },
|
7454 |
}),
|
7455 |
+
(Fn.overrides = {
|
7456 |
aspectRatio: 1,
|
7457 |
scales: { r: { type: "radialLinear" } },
|
7458 |
});
|
7459 |
+
class Vn extends Ls {
|
7460 |
+
update(t) {
|
7461 |
+
const e = this._cachedMeta,
|
7462 |
+
{ data: i = [] } = e,
|
7463 |
+
s = this.chart._animationsDisabled;
|
7464 |
+
let { start: n, count: o } = gt(e, i, s);
|
7465 |
+
if (
|
7466 |
+
((this._drawStart = n),
|
7467 |
+
(this._drawCount = o),
|
7468 |
+
pt(e) && ((n = 0), (o = i.length)),
|
7469 |
+
this.options.showLine)
|
7470 |
+
) {
|
7471 |
+
const { dataset: n, _dataset: o } = e;
|
7472 |
+
(n._chart = this.chart),
|
7473 |
+
(n._datasetIndex = this.index),
|
7474 |
+
(n._decimated = !!o._decimated),
|
7475 |
+
(n.points = i);
|
7476 |
+
const a = this.resolveDatasetElementOptions(t);
|
7477 |
+
(a.segment = this.options.segment),
|
7478 |
+
this.updateElement(n, void 0, { animated: !s, options: a }, t);
|
7479 |
+
}
|
7480 |
+
this.updateElements(i, n, o, t);
|
7481 |
+
}
|
7482 |
+
addElements() {
|
7483 |
+
const { showLine: t } = this.options;
|
7484 |
+
!this.datasetElementType &&
|
7485 |
+
t &&
|
7486 |
+
(this.datasetElementType = Us.getElement("line")),
|
7487 |
+
super.addElements();
|
7488 |
+
}
|
7489 |
+
updateElements(t, e, s, n) {
|
7490 |
+
const o = "reset" === n,
|
7491 |
+
{ iScale: a, vScale: r, _stacked: l, _dataset: h } = this._cachedMeta,
|
7492 |
+
c = this.resolveDataElementOptions(e, n),
|
7493 |
+
d = this.getSharedOptions(c),
|
7494 |
+
u = this.includeOptions(n, d),
|
7495 |
+
f = a.axis,
|
7496 |
+
g = r.axis,
|
7497 |
+
{ spanGaps: p, segment: m } = this.options,
|
7498 |
+
b = B(p) ? p : Number.POSITIVE_INFINITY,
|
7499 |
+
x = this.chart._animationsDisabled || o || "none" === n;
|
7500 |
+
let _ = e > 0 && this.getParsed(e - 1);
|
7501 |
+
for (let c = e; c < e + s; ++c) {
|
7502 |
+
const e = t[c],
|
7503 |
+
s = this.getParsed(c),
|
7504 |
+
p = x ? e : {},
|
7505 |
+
y = i(s[g]),
|
7506 |
+
v = (p[f] = a.getPixelForValue(s[f], c)),
|
7507 |
+
w = (p[g] =
|
7508 |
+
o || y
|
7509 |
+
? r.getBasePixel()
|
7510 |
+
: r.getPixelForValue(l ? this.applyStack(r, s, l) : s[g], c));
|
7511 |
+
(p.skip = isNaN(v) || isNaN(w) || y),
|
7512 |
+
(p.stop = c > 0 && Math.abs(s[f] - _[f]) > b),
|
7513 |
+
m && ((p.parsed = s), (p.raw = h.data[c])),
|
7514 |
+
u &&
|
7515 |
+
(p.options =
|
7516 |
+
d || this.resolveDataElementOptions(c, e.active ? "active" : n)),
|
7517 |
+
x || this.updateElement(e, c, p, n),
|
7518 |
+
(_ = s);
|
7519 |
+
}
|
7520 |
+
this.updateSharedOptions(d, n, c);
|
7521 |
+
}
|
7522 |
+
getMaxOverflow() {
|
7523 |
+
const t = this._cachedMeta,
|
7524 |
+
e = t.data || [];
|
7525 |
+
if (!this.options.showLine) {
|
7526 |
+
let t = 0;
|
7527 |
+
for (let i = e.length - 1; i >= 0; --i)
|
7528 |
+
t = Math.max(t, e[i].size(this.resolveDataElementOptions(i)) / 2);
|
7529 |
+
return t > 0 && t;
|
7530 |
+
}
|
7531 |
+
const i = t.dataset,
|
7532 |
+
s = (i.options && i.options.borderWidth) || 0;
|
7533 |
+
if (!e.length) return s;
|
7534 |
+
const n = e[0].size(this.resolveDataElementOptions(0)),
|
7535 |
+
o = e[e.length - 1].size(this.resolveDataElementOptions(e.length - 1));
|
7536 |
+
return Math.max(s, n, o) / 2;
|
7537 |
+
}
|
7538 |
+
}
|
7539 |
+
(Vn.id = "scatter"),
|
7540 |
+
(Vn.defaults = {
|
7541 |
+
datasetElementType: !1,
|
7542 |
+
dataElementType: "point",
|
7543 |
+
showLine: !1,
|
7544 |
+
fill: !1,
|
7545 |
+
}),
|
7546 |
+
(Vn.overrides = {
|
7547 |
interaction: { mode: "point" },
|
7548 |
plugins: {
|
7549 |
tooltip: {
|
7555 |
},
|
7556 |
scales: { x: { type: "linear" }, y: { type: "linear" } },
|
7557 |
});
|
7558 |
+
var Bn = Object.freeze({
|
7559 |
__proto__: null,
|
7560 |
+
BarController: Tn,
|
7561 |
+
BubbleController: Ln,
|
7562 |
+
DoughnutController: En,
|
7563 |
+
LineController: Rn,
|
7564 |
+
PolarAreaController: In,
|
7565 |
+
PieController: zn,
|
7566 |
+
RadarController: Fn,
|
7567 |
+
ScatterController: Vn,
|
7568 |
});
|
7569 |
+
function Nn(t, e, i) {
|
7570 |
const {
|
7571 |
startAngle: s,
|
7572 |
pixelMargin: n,
|
7580 |
t.arc(o, a, r, s - h, i + h),
|
7581 |
l > n
|
7582 |
? ((h = n / l), t.arc(o, a, l, i + h, s - h, !0))
|
7583 |
+
: t.arc(o, a, n, i + L, s - L),
|
7584 |
t.closePath(),
|
7585 |
t.clip();
|
7586 |
}
|
7587 |
+
function Wn(t, e, i, s) {
|
7588 |
+
const n = ui(t.options.borderRadius, [
|
7589 |
"outerStart",
|
7590 |
"outerEnd",
|
7591 |
"innerStart",
|
7595 |
a = Math.min(o, (s * e) / 2),
|
7596 |
r = (t) => {
|
7597 |
const e = ((i - Math.min(o, t)) * s) / 2;
|
7598 |
+
return Z(t, 0, Math.min(o, e));
|
7599 |
};
|
7600 |
return {
|
7601 |
outerStart: r(n.outerStart),
|
7602 |
outerEnd: r(n.outerEnd),
|
7603 |
+
innerStart: Z(n.innerStart, 0, a),
|
7604 |
+
innerEnd: Z(n.innerEnd, 0, a),
|
7605 |
};
|
7606 |
}
|
7607 |
+
function jn(t, e, i, s) {
|
7608 |
return { x: i + t * Math.cos(e), y: s + t * Math.sin(e) };
|
7609 |
}
|
7610 |
+
function Hn(t, e, i, s, n, o) {
|
7611 |
+
const { x: a, y: r, startAngle: l, pixelMargin: h, innerRadius: c } = e,
|
7612 |
+
d = Math.max(e.outerRadius + s + i - h, 0),
|
7613 |
+
u = c > 0 ? c + s + i + h : 0;
|
7614 |
+
let f = 0;
|
7615 |
+
const g = n - l;
|
7616 |
if (s) {
|
7617 |
+
const t = ((c > 0 ? c - s : 0) + (d > 0 ? d - s : 0)) / 2;
|
7618 |
+
f = (g - (0 !== t ? (g * t) / (t + s) : g)) / 2;
|
7619 |
}
|
7620 |
+
const p = (g - Math.max(0.001, g * d - i / D) / d) / 2,
|
7621 |
+
m = l + p + f,
|
7622 |
+
b = n - p - f,
|
7623 |
{
|
7624 |
outerStart: x,
|
7625 |
+
outerEnd: _,
|
7626 |
+
innerStart: y,
|
7627 |
+
innerEnd: v,
|
7628 |
+
} = Wn(e, u, d, b - m),
|
7629 |
+
w = d - x,
|
7630 |
+
M = d - _,
|
7631 |
+
k = m + x / w,
|
7632 |
+
S = b - _ / M,
|
7633 |
+
P = u + y,
|
7634 |
+
O = u + v,
|
7635 |
+
C = m + y / P,
|
7636 |
+
A = b - v / O;
|
7637 |
+
if ((t.beginPath(), o)) {
|
7638 |
+
if ((t.arc(a, r, d, k, S), _ > 0)) {
|
7639 |
+
const e = jn(M, S, a, r);
|
7640 |
+
t.arc(e.x, e.y, _, S, b + L);
|
7641 |
+
}
|
7642 |
+
const e = jn(O, b, a, r);
|
7643 |
+
if ((t.lineTo(e.x, e.y), v > 0)) {
|
7644 |
+
const e = jn(O, A, a, r);
|
7645 |
+
t.arc(e.x, e.y, v, b + L, A + Math.PI);
|
7646 |
+
}
|
7647 |
+
if ((t.arc(a, r, u, b - v / u, m + y / u, !0), y > 0)) {
|
7648 |
+
const e = jn(P, C, a, r);
|
7649 |
+
t.arc(e.x, e.y, y, C + Math.PI, m - L);
|
7650 |
+
}
|
7651 |
+
const i = jn(w, m, a, r);
|
7652 |
+
if ((t.lineTo(i.x, i.y), x > 0)) {
|
7653 |
+
const e = jn(w, k, a, r);
|
7654 |
+
t.arc(e.x, e.y, x, m - L, k);
|
7655 |
+
}
|
7656 |
+
} else {
|
7657 |
+
t.moveTo(a, r);
|
7658 |
+
const e = Math.cos(k) * d + a,
|
7659 |
+
i = Math.sin(k) * d + r;
|
7660 |
+
t.lineTo(e, i);
|
7661 |
+
const s = Math.cos(S) * d + a,
|
7662 |
+
n = Math.sin(S) * d + r;
|
7663 |
+
t.lineTo(s, n);
|
7664 |
}
|
7665 |
t.closePath();
|
7666 |
}
|
7667 |
+
function $n(t, e, i, s, n, o) {
|
7668 |
+
const { options: a } = e,
|
7669 |
+
{ borderWidth: r, borderJoinStyle: l } = a,
|
7670 |
+
h = "inner" === a.borderAlign;
|
7671 |
+
r &&
|
7672 |
+
(h
|
7673 |
+
? ((t.lineWidth = 2 * r), (t.lineJoin = l || "round"))
|
7674 |
+
: ((t.lineWidth = r), (t.lineJoin = l || "bevel")),
|
7675 |
e.fullCircles &&
|
7676 |
(function (t, e, i) {
|
7677 |
const {
|
7685 |
h = e.innerRadius + a;
|
7686 |
let c;
|
7687 |
for (
|
7688 |
+
i && Nn(t, e, o + O),
|
7689 |
t.beginPath(),
|
7690 |
+
t.arc(s, n, h, o + O, o, !0),
|
7691 |
c = 0;
|
7692 |
c < r;
|
7693 |
++c
|
7694 |
)
|
7695 |
t.stroke();
|
7696 |
+
for (t.beginPath(), t.arc(s, n, l, o, o + O), c = 0; c < r; ++c)
|
7697 |
t.stroke();
|
7698 |
+
})(t, e, h),
|
7699 |
+
h && Nn(t, e, n),
|
7700 |
+
Hn(t, e, i, s, n, o),
|
7701 |
t.stroke());
|
7702 |
}
|
7703 |
+
class Yn extends Es {
|
7704 |
constructor(t) {
|
7705 |
super(),
|
7706 |
(this.options = void 0),
|
7715 |
}
|
7716 |
inRange(t, e, i) {
|
7717 |
const s = this.getProps(["x", "y"], i),
|
7718 |
+
{ angle: n, distance: o } = U(s, { x: t, y: e }),
|
7719 |
{
|
7720 |
startAngle: a,
|
7721 |
+
endAngle: l,
|
7722 |
+
innerRadius: h,
|
7723 |
+
outerRadius: c,
|
7724 |
+
circumference: d,
|
7725 |
} = this.getProps(
|
7726 |
[
|
7727 |
"startAngle",
|
7732 |
],
|
7733 |
i
|
7734 |
),
|
7735 |
+
u = this.options.spacing / 2,
|
7736 |
+
f = r(d, l - a) >= O || G(n, a, l),
|
7737 |
+
g = Q(o, h + u, c + u);
|
7738 |
+
return f && g;
|
7739 |
}
|
7740 |
getCenterPoint(t) {
|
7741 |
const {
|
7768 |
draw(t) {
|
7769 |
const { options: e, circumference: i } = this,
|
7770 |
s = (e.offset || 0) / 2,
|
7771 |
+
n = (e.spacing || 0) / 2,
|
7772 |
+
o = e.circular;
|
7773 |
if (
|
7774 |
((this.pixelMargin = "inner" === e.borderAlign ? 0.33 : 0),
|
7775 |
+
(this.fullCircles = i > O ? Math.floor(i / O) : 0),
|
7776 |
0 === i || this.innerRadius < 0 || this.outerRadius < 0)
|
7777 |
)
|
7778 |
return;
|
7779 |
t.save();
|
7780 |
+
let a = 0;
|
7781 |
if (s) {
|
7782 |
+
a = s / 2;
|
7783 |
const e = (this.startAngle + this.endAngle) / 2;
|
7784 |
+
t.translate(Math.cos(e) * a, Math.sin(e) * a),
|
7785 |
+
this.circumference >= D && (a = s);
|
7786 |
}
|
7787 |
(t.fillStyle = e.backgroundColor), (t.strokeStyle = e.borderColor);
|
7788 |
+
const r = (function (t, e, i, s, n) {
|
7789 |
+
const { fullCircles: o, startAngle: a, circumference: r } = e;
|
7790 |
+
let l = e.endAngle;
|
7791 |
+
if (o) {
|
7792 |
+
Hn(t, e, i, s, a + O, n);
|
7793 |
+
for (let e = 0; e < o; ++e) t.fill();
|
7794 |
+
isNaN(r) || ((l = a + (r % O)), r % O == 0 && (l += O));
|
7795 |
}
|
7796 |
+
return Hn(t, e, i, s, l, n), t.fill(), l;
|
7797 |
+
})(t, this, a, n, o);
|
7798 |
+
$n(t, this, a, n, r, o), t.restore();
|
7799 |
}
|
7800 |
}
|
7801 |
+
function Un(t, e, i = e) {
|
7802 |
+
(t.lineCap = r(i.borderCapStyle, e.borderCapStyle)),
|
7803 |
+
t.setLineDash(r(i.borderDash, e.borderDash)),
|
7804 |
+
(t.lineDashOffset = r(i.borderDashOffset, e.borderDashOffset)),
|
7805 |
+
(t.lineJoin = r(i.borderJoinStyle, e.borderJoinStyle)),
|
7806 |
+
(t.lineWidth = r(i.borderWidth, e.borderWidth)),
|
7807 |
+
(t.strokeStyle = r(i.borderColor, e.borderColor));
|
7808 |
}
|
7809 |
+
function Xn(t, e, i) {
|
7810 |
t.lineTo(i.x, i.y);
|
7811 |
}
|
7812 |
+
function qn(t, e, i = {}) {
|
7813 |
const s = t.length,
|
7814 |
{ start: n = 0, end: o = s - 1 } = i,
|
7815 |
{ start: a, end: r } = e,
|
7823 |
ilen: h < l && !c ? s + h - l : h - l,
|
7824 |
};
|
7825 |
}
|
7826 |
+
function Kn(t, e, i, s) {
|
7827 |
const { points: n, options: o } = e,
|
7828 |
+
{ count: a, start: r, loop: l, ilen: h } = qn(n, i, s),
|
7829 |
c = (function (t) {
|
7830 |
return t.stepped
|
7831 |
+
? Oe
|
7832 |
: t.tension || "monotone" === t.cubicInterpolationMode
|
7833 |
+
? Ce
|
7834 |
+
: Xn;
|
7835 |
})(o);
|
7836 |
let d,
|
7837 |
u,
|
7844 |
(f = u));
|
7845 |
return l && ((u = n[(r + (p ? h : 0)) % a]), c(t, f, u, p, o.stepped)), !!l;
|
7846 |
}
|
7847 |
+
function Gn(t, e, i, s) {
|
7848 |
const n = e.points,
|
7849 |
+
{ count: o, start: a, ilen: r } = qn(n, i, s),
|
7850 |
{ move: l = !0, reverse: h } = s || {};
|
7851 |
let c,
|
7852 |
d,
|
7855 |
g,
|
7856 |
p,
|
7857 |
m = 0,
|
7858 |
+
b = 0;
|
7859 |
+
const x = (t) => (a + (h ? r - t : t)) % o,
|
7860 |
_ = () => {
|
7861 |
f !== g && (t.lineTo(m, g), t.lineTo(m, f), t.lineTo(m, p));
|
7862 |
};
|
7863 |
+
for (l && ((d = n[x(0)]), t.moveTo(d.x, d.y)), c = 0; c <= r; ++c) {
|
7864 |
+
if (((d = n[x(c)]), d.skip)) continue;
|
7865 |
const e = d.x,
|
7866 |
i = d.y,
|
7867 |
s = 0 | e;
|
7868 |
s === u
|
7869 |
+
? (i < f ? (f = i) : i > g && (g = i), (m = (b * m + e) / ++b))
|
7870 |
+
: (_(), t.lineTo(e, i), (u = s), (b = 0), (f = g = i)),
|
7871 |
(p = i);
|
7872 |
}
|
7873 |
_();
|
7874 |
}
|
7875 |
+
function Zn(t) {
|
7876 |
const e = t.options,
|
7877 |
i = e.borderDash && e.borderDash.length;
|
7878 |
return !(
|
7883 |
e.stepped ||
|
7884 |
i
|
7885 |
)
|
7886 |
+
? Gn
|
7887 |
+
: Kn;
|
7888 |
}
|
7889 |
+
(Yn.id = "arc"),
|
7890 |
+
(Yn.defaults = {
|
7891 |
borderAlign: "center",
|
7892 |
borderColor: "#fff",
|
7893 |
borderJoinStyle: void 0,
|
7896 |
offset: 0,
|
7897 |
spacing: 0,
|
7898 |
angle: void 0,
|
7899 |
+
circular: !0,
|
7900 |
}),
|
7901 |
+
(Yn.defaultRoutes = { backgroundColor: "backgroundColor" });
|
7902 |
+
const Jn = "function" == typeof Path2D;
|
7903 |
+
function Qn(t, e, i, s) {
|
7904 |
+
Jn && !e.options.segment
|
7905 |
? (function (t, e, i, s) {
|
7906 |
let n = e._path;
|
7907 |
n || ((n = e._path = new Path2D()), e.path(n, i, s) && n.closePath()),
|
7908 |
+
Un(t, e.options),
|
7909 |
t.stroke(n);
|
7910 |
})(t, e, i, s)
|
7911 |
: (function (t, e, i, s) {
|
7912 |
const { segments: n, options: o } = e,
|
7913 |
+
a = Zn(e);
|
7914 |
for (const r of n)
|
7915 |
+
Un(t, o, r.style),
|
7916 |
t.beginPath(),
|
7917 |
a(t, e, r, { start: i, end: i + s - 1 }) && t.closePath(),
|
7918 |
t.stroke();
|
7919 |
})(t, e, i, s);
|
7920 |
}
|
7921 |
+
class to extends Es {
|
7922 |
constructor(t) {
|
7923 |
super(),
|
7924 |
(this.animated = !0),
|
7942 |
!this._pointsUpdated
|
7943 |
) {
|
7944 |
const s = i.spanGaps ? this._loop : this._fullLoop;
|
7945 |
+
Qe(this._points, i, t, s, e), (this._pointsUpdated = !0);
|
7946 |
}
|
7947 |
}
|
7948 |
set points(t) {
|
7956 |
}
|
7957 |
get segments() {
|
7958 |
return (
|
7959 |
+
this._segments || (this._segments = Di(this, this.options.segment))
|
7960 |
);
|
7961 |
}
|
7962 |
first() {
|
7974 |
const i = this.options,
|
7975 |
s = t[e],
|
7976 |
n = this.points,
|
7977 |
+
o = Pi(this, { property: e, start: s, end: s });
|
7978 |
if (!o.length) return;
|
7979 |
const a = [],
|
7980 |
r = (function (t) {
|
7981 |
return t.stepped
|
7982 |
+
? oi
|
7983 |
: t.tension || "monotone" === t.cubicInterpolationMode
|
7984 |
+
? ai
|
7985 |
+
: ni;
|
7986 |
})(i);
|
7987 |
let l, h;
|
7988 |
for (l = 0, h = o.length; l < h; ++l) {
|
7999 |
return 1 === a.length ? a[0] : a;
|
8000 |
}
|
8001 |
pathSegment(t, e, i) {
|
8002 |
+
return Zn(this)(t, this, e, i);
|
8003 |
}
|
8004 |
path(t, e, i) {
|
8005 |
const s = this.segments,
|
8006 |
+
n = Zn(this);
|
8007 |
let o = this._loop;
|
8008 |
(e = e || 0), (i = i || this.points.length - e);
|
8009 |
for (const a of s) o &= n(t, this, a, { start: e, end: e + i - 1 });
|
8013 |
const n = this.options || {};
|
8014 |
(this.points || []).length &&
|
8015 |
n.borderWidth &&
|
8016 |
+
(t.save(), Qn(t, this, i, s), t.restore()),
|
8017 |
this.animated && ((this._pointsUpdated = !1), (this._path = void 0));
|
8018 |
}
|
8019 |
}
|
8020 |
+
function eo(t, e, i, s) {
|
8021 |
const n = t.options,
|
8022 |
{ [i]: o } = t.getProps([i], s);
|
8023 |
return Math.abs(e - o) < n.radius + n.hitRadius;
|
8024 |
}
|
8025 |
+
(to.id = "line"),
|
8026 |
+
(to.defaults = {
|
8027 |
borderCapStyle: "butt",
|
8028 |
borderDash: [],
|
8029 |
borderDashOffset: 0,
|
8036 |
stepped: !1,
|
8037 |
tension: 0,
|
8038 |
}),
|
8039 |
+
(to.defaultRoutes = {
|
8040 |
backgroundColor: "backgroundColor",
|
8041 |
borderColor: "borderColor",
|
8042 |
}),
|
8043 |
+
(to.descriptors = {
|
8044 |
_scriptable: !0,
|
8045 |
_indexable: (t) => "borderDash" !== t && "fill" !== t,
|
8046 |
});
|
8047 |
+
class io extends Es {
|
8048 |
constructor(t) {
|
8049 |
super(),
|
8050 |
(this.options = void 0),
|
8062 |
);
|
8063 |
}
|
8064 |
inXRange(t, e) {
|
8065 |
+
return eo(this, t, "x", e);
|
8066 |
}
|
8067 |
inYRange(t, e) {
|
8068 |
+
return eo(this, t, "y", e);
|
8069 |
}
|
8070 |
getCenterPoint(t) {
|
8071 |
const { x: e, y: i } = this.getProps(["x", "y"], t);
|
8080 |
const i = this.options;
|
8081 |
this.skip ||
|
8082 |
i.radius < 0.1 ||
|
8083 |
+
!Se(this, e, this.size(i) / 2) ||
|
8084 |
((t.strokeStyle = i.borderColor),
|
8085 |
(t.lineWidth = i.borderWidth),
|
8086 |
(t.fillStyle = i.backgroundColor),
|
8087 |
+
Me(t, i, this.x, this.y));
|
8088 |
}
|
8089 |
getRange() {
|
8090 |
const t = this.options || {};
|
8091 |
return t.radius + t.hitRadius;
|
8092 |
}
|
8093 |
}
|
8094 |
+
function so(t, e) {
|
8095 |
const {
|
8096 |
x: i,
|
8097 |
y: s,
|
8115 |
{ left: r, top: h, right: l, bottom: c }
|
8116 |
);
|
8117 |
}
|
8118 |
+
function no(t, e, i, s) {
|
8119 |
+
return t ? 0 : Z(e, i, s);
|
8120 |
}
|
8121 |
+
function oo(t) {
|
8122 |
+
const e = so(t),
|
8123 |
i = e.right - e.left,
|
8124 |
s = e.bottom - e.top,
|
8125 |
+
o = (function (t, e, i) {
|
8126 |
const s = t.options.borderWidth,
|
8127 |
n = t.borderSkipped,
|
8128 |
+
o = fi(s);
|
8129 |
return {
|
8130 |
+
t: no(n.top, o.top, 0, i),
|
8131 |
+
r: no(n.right, o.right, 0, e),
|
8132 |
+
b: no(n.bottom, o.bottom, 0, i),
|
8133 |
+
l: no(n.left, o.left, 0, e),
|
8134 |
};
|
8135 |
})(t, i / 2, s / 2),
|
8136 |
+
a = (function (t, e, i) {
|
8137 |
const { enableBorderRadius: s } = t.getProps(["enableBorderRadius"]),
|
8138 |
+
o = t.options.borderRadius,
|
8139 |
+
a = gi(o),
|
8140 |
+
r = Math.min(e, i),
|
8141 |
+
l = t.borderSkipped,
|
8142 |
+
h = s || n(o);
|
8143 |
return {
|
8144 |
+
topLeft: no(!h || l.top || l.left, a.topLeft, 0, r),
|
8145 |
+
topRight: no(!h || l.top || l.right, a.topRight, 0, r),
|
8146 |
+
bottomLeft: no(!h || l.bottom || l.left, a.bottomLeft, 0, r),
|
8147 |
+
bottomRight: no(!h || l.bottom || l.right, a.bottomRight, 0, r),
|
8148 |
};
|
8149 |
})(t, i / 2, s / 2);
|
8150 |
return {
|
8151 |
+
outer: { x: e.left, y: e.top, w: i, h: s, radius: a },
|
8152 |
inner: {
|
8153 |
+
x: e.left + o.l,
|
8154 |
+
y: e.top + o.t,
|
8155 |
+
w: i - o.l - o.r,
|
8156 |
+
h: s - o.t - o.b,
|
8157 |
radius: {
|
8158 |
+
topLeft: Math.max(0, a.topLeft - Math.max(o.t, o.l)),
|
8159 |
+
topRight: Math.max(0, a.topRight - Math.max(o.t, o.r)),
|
8160 |
+
bottomLeft: Math.max(0, a.bottomLeft - Math.max(o.b, o.l)),
|
8161 |
+
bottomRight: Math.max(0, a.bottomRight - Math.max(o.b, o.r)),
|
8162 |
},
|
8163 |
},
|
8164 |
};
|
8165 |
}
|
8166 |
+
function ao(t, e, i, s) {
|
8167 |
const n = null === e,
|
8168 |
o = null === i,
|
8169 |
+
a = t && !(n && o) && so(t, s);
|
8170 |
+
return a && (n || Q(e, a.left, a.right)) && (o || Q(i, a.top, a.bottom));
|
8171 |
}
|
8172 |
+
function ro(t, e) {
|
8173 |
t.rect(e.x, e.y, e.w, e.h);
|
8174 |
}
|
8175 |
+
function lo(t, e, i = {}) {
|
8176 |
const s = t.x !== i.x ? -e : 0,
|
8177 |
n = t.y !== i.y ? -e : 0,
|
8178 |
o = (t.x + t.w !== i.x + i.w ? e : 0) - s,
|
8179 |
a = (t.y + t.h !== i.y + i.h ? e : 0) - n;
|
8180 |
return { x: t.x + s, y: t.y + n, w: t.w + o, h: t.h + a, radius: t.radius };
|
8181 |
}
|
8182 |
+
(io.id = "point"),
|
8183 |
+
(io.defaults = {
|
8184 |
borderWidth: 1,
|
8185 |
hitRadius: 1,
|
8186 |
hoverBorderWidth: 1,
|
8189 |
radius: 3,
|
8190 |
rotation: 0,
|
8191 |
}),
|
8192 |
+
(io.defaultRoutes = {
|
8193 |
backgroundColor: "backgroundColor",
|
8194 |
borderColor: "borderColor",
|
8195 |
});
|
8196 |
+
class ho extends Es {
|
8197 |
constructor(t) {
|
8198 |
super(),
|
8199 |
(this.options = void 0),
|
8209 |
inflateAmount: e,
|
8210 |
options: { borderColor: i, backgroundColor: s },
|
8211 |
} = this,
|
8212 |
+
{ inner: n, outer: o } = oo(this),
|
8213 |
a =
|
8214 |
(r = o.radius).topLeft || r.topRight || r.bottomLeft || r.bottomRight
|
8215 |
+
? Le
|
8216 |
+
: ro;
|
8217 |
var r;
|
8218 |
t.save(),
|
8219 |
(o.w === n.w && o.h === n.h) ||
|
8220 |
(t.beginPath(),
|
8221 |
+
a(t, lo(o, e, n)),
|
8222 |
t.clip(),
|
8223 |
+
a(t, lo(n, -e, o)),
|
8224 |
(t.fillStyle = i),
|
8225 |
t.fill("evenodd")),
|
8226 |
t.beginPath(),
|
8227 |
+
a(t, lo(n, e)),
|
8228 |
(t.fillStyle = s),
|
8229 |
t.fill(),
|
8230 |
t.restore();
|
8231 |
}
|
8232 |
inRange(t, e, i) {
|
8233 |
+
return ao(this, t, e, i);
|
8234 |
}
|
8235 |
inXRange(t, e) {
|
8236 |
+
return ao(this, t, null, e);
|
8237 |
}
|
8238 |
inYRange(t, e) {
|
8239 |
+
return ao(this, null, t, e);
|
8240 |
}
|
8241 |
getCenterPoint(t) {
|
8242 |
const {
|
8251 |
return "x" === t ? this.width / 2 : this.height / 2;
|
8252 |
}
|
8253 |
}
|
8254 |
+
(ho.id = "bar"),
|
8255 |
+
(ho.defaults = {
|
8256 |
borderSkipped: "start",
|
8257 |
borderWidth: 0,
|
8258 |
borderRadius: 0,
|
8259 |
inflateAmount: "auto",
|
8260 |
pointStyle: void 0,
|
8261 |
}),
|
8262 |
+
(ho.defaultRoutes = {
|
8263 |
backgroundColor: "backgroundColor",
|
8264 |
borderColor: "borderColor",
|
8265 |
});
|
8266 |
+
var co = Object.freeze({
|
8267 |
__proto__: null,
|
8268 |
+
ArcElement: Yn,
|
8269 |
+
LineElement: to,
|
8270 |
+
PointElement: io,
|
8271 |
+
BarElement: ho,
|
8272 |
});
|
8273 |
+
function uo(t) {
|
8274 |
if (t._decimated) {
|
8275 |
const e = t._data;
|
8276 |
delete t._decimated,
|
8278 |
Object.defineProperty(t, "data", { value: e });
|
8279 |
}
|
8280 |
}
|
8281 |
+
function fo(t) {
|
8282 |
t.data.datasets.forEach((t) => {
|
8283 |
+
uo(t);
|
8284 |
});
|
8285 |
}
|
8286 |
+
var go = {
|
8287 |
id: "decimation",
|
8288 |
defaults: { algorithm: "min-max", enabled: !1 },
|
8289 |
+
beforeElementsUpdate: (t, e, s) => {
|
8290 |
+
if (!s.enabled) return void fo(t);
|
8291 |
+
const n = t.width;
|
8292 |
+
t.data.datasets.forEach((e, o) => {
|
8293 |
+
const { _data: a, indexAxis: r } = e,
|
8294 |
+
l = t.getDatasetMeta(o),
|
8295 |
+
h = a || e.data;
|
8296 |
+
if ("y" === bi([r, t.options.indexAxis])) return;
|
8297 |
+
if (!l.controller.supportsDecimation) return;
|
8298 |
+
const c = t.scales[l.xAxisID];
|
8299 |
+
if ("linear" !== c.type && "time" !== c.type) return;
|
8300 |
if (t.options.parsing) return;
|
8301 |
+
let { start: d, count: u } = (function (t, e) {
|
8302 |
const i = e.length;
|
8303 |
let s,
|
8304 |
n = 0;
|
8310 |
maxDefined: h,
|
8311 |
} = o.getUserBounds();
|
8312 |
return (
|
8313 |
+
l && (n = Z(et(e, o.axis, a).lo, 0, i - 1)),
|
8314 |
+
(s = h ? Z(et(e, o.axis, r).hi + 1, n, i) - n : i - n),
|
8315 |
{ start: n, count: s }
|
8316 |
);
|
8317 |
+
})(l, h);
|
8318 |
+
if (u <= (s.threshold || 4 * n)) return void uo(e);
|
8319 |
+
let f;
|
8320 |
switch (
|
8321 |
+
(i(a) &&
|
8322 |
+
((e._data = h),
|
8323 |
delete e.data,
|
8324 |
Object.defineProperty(e, "data", {
|
8325 |
configurable: !0,
|
8331 |
this._data = t;
|
8332 |
},
|
8333 |
})),
|
8334 |
+
s.algorithm)
|
8335 |
) {
|
8336 |
case "lttb":
|
8337 |
+
f = (function (t, e, i, s, n) {
|
8338 |
const o = n.samples || s;
|
8339 |
if (o >= i) return t.slice(e, e + i);
|
8340 |
const a = [],
|
8353 |
o = 0;
|
8354 |
const h = Math.floor((c + 1) * r) + 1 + e,
|
8355 |
m = Math.min(Math.floor((c + 2) * r) + 1, i) + e,
|
8356 |
+
b = m - h;
|
8357 |
for (s = h; s < m; s++) (n += t[s].x), (o += t[s].y);
|
8358 |
+
(n /= b), (o /= b);
|
8359 |
+
const x = Math.floor(c * r) + 1 + e,
|
8360 |
_ = Math.min(Math.floor((c + 1) * r) + 1, i) + e,
|
8361 |
{ x: y, y: v } = t[p];
|
8362 |
+
for (u = f = -1, s = x; s < _; s++)
|
8363 |
(f =
|
8364 |
0.5 *
|
8365 |
Math.abs((y - n) * (t[s].y - v) - (y - t[s].x) * (o - v))),
|
8367 |
(a[l++] = d), (p = g);
|
8368 |
}
|
8369 |
return (a[l++] = t[h]), a;
|
8370 |
+
})(h, d, u, n, s);
|
8371 |
break;
|
8372 |
case "min-max":
|
8373 |
+
f = (function (t, e, s, n) {
|
8374 |
+
let o,
|
|
|
8375 |
a,
|
8376 |
r,
|
8377 |
l,
|
8380 |
d,
|
8381 |
u,
|
8382 |
f,
|
8383 |
+
g,
|
8384 |
+
p = 0,
|
8385 |
+
m = 0;
|
8386 |
+
const b = [],
|
8387 |
+
x = e + s - 1,
|
8388 |
+
_ = t[e].x,
|
8389 |
+
y = t[x].x - _;
|
8390 |
+
for (o = e; o < e + s; ++o) {
|
8391 |
+
(a = t[o]), (r = ((a.x - _) / y) * n), (l = a.y);
|
8392 |
+
const e = 0 | r;
|
8393 |
+
if (e === h)
|
8394 |
+
l < f ? ((f = l), (c = o)) : l > g && ((g = l), (d = o)),
|
8395 |
+
(p = (m * p + a.x) / ++m);
|
8396 |
else {
|
8397 |
+
const s = o - 1;
|
8398 |
+
if (!i(c) && !i(d)) {
|
8399 |
+
const e = Math.min(c, d),
|
8400 |
+
i = Math.max(c, d);
|
8401 |
+
e !== u && e !== s && b.push({ ...t[e], x: p }),
|
8402 |
+
i !== u && i !== s && b.push({ ...t[i], x: p });
|
8403 |
}
|
8404 |
+
o > 0 && s !== u && b.push(t[s]),
|
8405 |
+
b.push(a),
|
8406 |
+
(h = e),
|
8407 |
+
(m = 0),
|
8408 |
+
(f = g = l),
|
8409 |
+
(c = d = u = o);
|
8410 |
}
|
8411 |
}
|
8412 |
+
return b;
|
8413 |
+
})(h, d, u, n);
|
8414 |
break;
|
8415 |
default:
|
8416 |
throw new Error(
|
8417 |
+
`Unsupported decimation algorithm '${s.algorithm}'`
|
8418 |
);
|
8419 |
}
|
8420 |
+
e._decimated = f;
|
8421 |
});
|
8422 |
},
|
8423 |
destroy(t) {
|
8424 |
+
fo(t);
|
8425 |
},
|
8426 |
};
|
8427 |
+
function po(t, e, i, s) {
|
8428 |
+
if (s) return;
|
8429 |
+
let n = e[t],
|
8430 |
+
o = i[t];
|
8431 |
+
return (
|
8432 |
+
"angle" === t && ((n = K(n)), (o = K(o))),
|
8433 |
+
{ property: t, start: n, end: o }
|
8434 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8435 |
}
|
8436 |
+
function mo(t, e, i) {
|
8437 |
+
for (; e > t; e--) {
|
8438 |
+
const t = i[e];
|
8439 |
+
if (!isNaN(t.x) && !isNaN(t.y)) break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8440 |
}
|
8441 |
+
return e;
|
8442 |
}
|
8443 |
+
function bo(t, e, i, s) {
|
8444 |
+
return t && e ? s(t[i], e[i]) : t ? t[i] : e ? e[i] : 0;
|
8445 |
+
}
|
8446 |
+
function xo(t, e) {
|
8447 |
+
let i = [],
|
8448 |
+
n = !1;
|
8449 |
+
return (
|
8450 |
+
s(t)
|
8451 |
+
? ((n = !0), (i = t))
|
8452 |
+
: (i = (function (t, e) {
|
8453 |
+
const { x: i = null, y: s = null } = t || {},
|
8454 |
+
n = e.points,
|
8455 |
+
o = [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8456 |
return (
|
8457 |
+
e.segments.forEach(({ start: t, end: e }) => {
|
8458 |
+
e = mo(t, e, n);
|
8459 |
+
const a = n[t],
|
8460 |
+
r = n[e];
|
8461 |
+
null !== s
|
8462 |
+
? (o.push({ x: a.x, y: s }), o.push({ x: r.x, y: s }))
|
8463 |
+
: null !== i &&
|
8464 |
+
(o.push({ x: i, y: a.y }), o.push({ x: i, y: r.y }));
|
8465 |
+
}),
|
8466 |
+
o
|
8467 |
);
|
8468 |
+
})(t, e)),
|
8469 |
+
i.length
|
8470 |
+
? new to({ points: i, options: { tension: 0 }, _loop: n, _fullLoop: n })
|
8471 |
+
: null
|
8472 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8473 |
}
|
8474 |
+
function _o(t) {
|
8475 |
+
return t && !1 !== t.fill;
|
8476 |
+
}
|
8477 |
+
function yo(t, e, i) {
|
8478 |
+
let s = t[e].fill;
|
8479 |
+
const n = [e];
|
8480 |
+
let a;
|
8481 |
+
if (!i) return s;
|
8482 |
+
for (; !1 !== s && -1 === n.indexOf(s); ) {
|
8483 |
+
if (!o(s)) return s;
|
8484 |
+
if (((a = t[s]), !a)) return !1;
|
8485 |
+
if (a.visible) return s;
|
8486 |
+
n.push(s), (s = a.fill);
|
8487 |
}
|
8488 |
+
return !1;
|
8489 |
+
}
|
8490 |
+
function vo(t, e, i) {
|
8491 |
+
const s = (function (t) {
|
8492 |
+
const e = t.options,
|
8493 |
+
i = e.fill;
|
8494 |
+
let s = r(i && i.target, i);
|
8495 |
+
void 0 === s && (s = !!e.backgroundColor);
|
8496 |
+
if (!1 === s || null === s) return !1;
|
8497 |
+
if (!0 === s) return "origin";
|
8498 |
+
return s;
|
8499 |
+
})(t);
|
8500 |
+
if (n(s)) return !isNaN(s.value) && s;
|
8501 |
+
let a = parseFloat(s);
|
8502 |
+
return o(a) && Math.floor(a) === a
|
8503 |
+
? (function (t, e, i, s) {
|
8504 |
+
("-" !== t && "+" !== t) || (i = e + i);
|
8505 |
+
if (i === e || i < 0 || i >= s) return !1;
|
8506 |
+
return i;
|
8507 |
+
})(s[0], e, a, i)
|
8508 |
+
: ["origin", "start", "end", "stack", "shape"].indexOf(s) >= 0 && s;
|
8509 |
}
|
8510 |
+
function wo(t, e, i) {
|
8511 |
const s = [];
|
8512 |
for (let n = 0; n < i.length; n++) {
|
8513 |
const o = i[n],
|
8514 |
+
{ first: a, last: r, point: l } = Mo(o, e, "x");
|
8515 |
if (!(!l || (a && r)))
|
8516 |
if (a) s.unshift(l);
|
8517 |
else if ((t.push(l), !r)) break;
|
8518 |
}
|
8519 |
t.push(...s);
|
8520 |
}
|
8521 |
+
function Mo(t, e, i) {
|
8522 |
const s = t.interpolate(e, i);
|
8523 |
if (!s) return {};
|
8524 |
const n = s[i],
|
8530 |
const e = o[t],
|
8531 |
s = a[e.start][i],
|
8532 |
h = a[e.end][i];
|
8533 |
+
if (Q(n, s, h)) {
|
8534 |
(r = n === s), (l = n === h);
|
8535 |
break;
|
8536 |
}
|
8537 |
}
|
8538 |
return { first: r, last: l, point: s };
|
8539 |
}
|
8540 |
+
class ko {
|
8541 |
+
constructor(t) {
|
8542 |
+
(this.x = t.x), (this.y = t.y), (this.radius = t.radius);
|
8543 |
+
}
|
8544 |
+
pathSegment(t, e, i) {
|
8545 |
+
const { x: s, y: n, radius: o } = this;
|
8546 |
+
return (
|
8547 |
+
(e = e || { start: 0, end: O }),
|
8548 |
+
t.arc(s, n, o, e.end, e.start, !0),
|
8549 |
+
!i.bounds
|
8550 |
+
);
|
8551 |
+
}
|
8552 |
+
interpolate(t) {
|
8553 |
+
const { x: e, y: i, radius: s } = this,
|
8554 |
+
n = t.angle;
|
8555 |
+
return { x: e + Math.cos(n) * s, y: i + Math.sin(n) * s, angle: n };
|
8556 |
+
}
|
8557 |
+
}
|
8558 |
+
function So(t) {
|
8559 |
const { chart: e, fill: i, line: s } = t;
|
8560 |
+
if (o(i))
|
8561 |
return (function (t, e) {
|
8562 |
const i = t.getDatasetMeta(e);
|
8563 |
return i && t.isDatasetVisible(e) ? i.dataset : null;
|
8578 |
}
|
8579 |
return i;
|
8580 |
})(e, i);
|
8581 |
+
r.push(xo({ x: null, y: e.bottom }, s));
|
8582 |
for (let t = 0; t < o.length; t++) {
|
8583 |
const e = o[t];
|
8584 |
+
for (let t = e.start; t <= e.end; t++) wo(n, a[t], r);
|
8585 |
}
|
8586 |
+
return new to({ points: n, options: {} });
|
8587 |
})(t);
|
8588 |
if ("shape" === i) return !0;
|
8589 |
+
const a = (function (t) {
|
8590 |
+
if ((t.scale || {}).getPointPositionForValue)
|
8591 |
+
return (function (t) {
|
8592 |
+
const { scale: e, fill: i } = t,
|
8593 |
+
s = e.options,
|
8594 |
+
o = e.getLabels().length,
|
8595 |
+
a = s.reverse ? e.max : e.min,
|
8596 |
+
r = (function (t, e, i) {
|
8597 |
+
let s;
|
8598 |
+
return (
|
8599 |
+
(s =
|
8600 |
+
"start" === t
|
8601 |
+
? i
|
8602 |
+
: "end" === t
|
8603 |
+
? e.options.reverse
|
8604 |
+
? e.min
|
8605 |
+
: e.max
|
8606 |
+
: n(t)
|
8607 |
+
? t.value
|
8608 |
+
: e.getBaseValue()),
|
8609 |
+
s
|
8610 |
+
);
|
8611 |
+
})(i, e, a),
|
8612 |
+
l = [];
|
8613 |
+
if (s.grid.circular) {
|
8614 |
+
const t = e.getPointPositionForValue(0, a);
|
8615 |
+
return new ko({
|
8616 |
+
x: t.x,
|
8617 |
+
y: t.y,
|
8618 |
+
radius: e.getDistanceFromCenterForValue(r),
|
8619 |
+
});
|
8620 |
+
}
|
8621 |
+
for (let t = 0; t < o; ++t) l.push(e.getPointPositionForValue(t, r));
|
8622 |
+
return l;
|
8623 |
+
})(t);
|
8624 |
+
return (function (t) {
|
8625 |
+
const { scale: e = {}, fill: i } = t,
|
8626 |
+
s = (function (t, e) {
|
8627 |
+
let i = null;
|
8628 |
return (
|
8629 |
+
"start" === t
|
8630 |
+
? (i = e.bottom)
|
8631 |
+
: "end" === t
|
8632 |
+
? (i = e.top)
|
8633 |
+
: n(t)
|
8634 |
+
? (i = e.getPixelForValue(t.value))
|
8635 |
+
: e.getBasePixel && (i = e.getBasePixel()),
|
8636 |
+
i
|
|
|
|
|
8637 |
);
|
8638 |
+
})(i, e);
|
8639 |
+
if (o(s)) {
|
8640 |
+
const t = e.isHorizontal();
|
8641 |
+
return { x: t ? s : null, y: t ? null : s };
|
8642 |
+
}
|
8643 |
+
return null;
|
8644 |
+
})(t);
|
8645 |
+
})(t);
|
8646 |
+
return a instanceof ko ? a : xo(a, s);
|
8647 |
}
|
8648 |
+
function Po(t, e, i) {
|
8649 |
+
const s = So(e),
|
8650 |
+
{ line: n, scale: o, axis: a } = e,
|
8651 |
+
r = n.options,
|
8652 |
+
l = r.fill,
|
8653 |
+
h = r.backgroundColor,
|
8654 |
+
{ above: c = h, below: d = h } = l || {};
|
8655 |
+
s &&
|
8656 |
+
n.points.length &&
|
8657 |
+
(Pe(t, i),
|
8658 |
+
(function (t, e) {
|
8659 |
+
const { line: i, target: s, above: n, below: o, area: a, scale: r } = e,
|
8660 |
+
l = i._loop ? "angle" : e.axis;
|
8661 |
+
t.save(),
|
8662 |
+
"x" === l &&
|
8663 |
+
o !== n &&
|
8664 |
+
(Do(t, s, a.top),
|
8665 |
+
Oo(t, { line: i, target: s, color: n, scale: r, property: l }),
|
8666 |
+
t.restore(),
|
8667 |
+
t.save(),
|
8668 |
+
Do(t, s, a.bottom));
|
8669 |
+
Oo(t, { line: i, target: s, color: o, scale: r, property: l }),
|
8670 |
+
t.restore();
|
8671 |
+
})(t, {
|
8672 |
+
line: n,
|
8673 |
+
target: s,
|
8674 |
+
above: c,
|
8675 |
+
below: d,
|
8676 |
+
area: i,
|
8677 |
+
scale: o,
|
8678 |
+
axis: a,
|
8679 |
+
}),
|
8680 |
+
De(t));
|
8681 |
}
|
8682 |
+
function Do(t, e, i) {
|
8683 |
const { segments: s, points: n } = e;
|
8684 |
let o = !0,
|
8685 |
a = !1;
|
8687 |
for (const r of s) {
|
8688 |
const { start: s, end: l } = r,
|
8689 |
h = n[s],
|
8690 |
+
c = n[mo(s, l, n)];
|
8691 |
o
|
8692 |
? (t.moveTo(h.x, h.y), (o = !1))
|
8693 |
: (t.lineTo(h.x, i), t.lineTo(h.x, h.y)),
|
8696 |
}
|
8697 |
t.lineTo(e.first().x, i), t.closePath(), t.clip();
|
8698 |
}
|
8699 |
+
function Oo(t, e) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8700 |
const { line: i, target: s, property: n, color: o, scale: a } = e,
|
8701 |
r = (function (t, e, i) {
|
8702 |
const s = t.segments,
|
8705 |
a = [];
|
8706 |
for (const t of s) {
|
8707 |
let { start: s, end: r } = t;
|
8708 |
+
r = mo(s, r, n);
|
8709 |
+
const l = po(i, n[s], n[r], t.loop);
|
8710 |
if (!e.segments) {
|
8711 |
a.push({ source: t, target: l, start: n[s], end: n[r] });
|
8712 |
continue;
|
8713 |
}
|
8714 |
+
const h = Pi(e, l);
|
8715 |
for (const e of h) {
|
8716 |
+
const s = po(i, o[e.start], o[e.end], e.loop),
|
8717 |
+
r = Si(t, n, s);
|
8718 |
for (const t of r)
|
8719 |
a.push({
|
8720 |
source: t,
|
8721 |
target: e,
|
8722 |
+
start: { [i]: bo(l, s, "start", Math.max) },
|
8723 |
+
end: { [i]: bo(l, s, "end", Math.min) },
|
8724 |
});
|
8725 |
}
|
8726 |
}
|
8729 |
for (const { source: e, target: l, start: h, end: c } of r) {
|
8730 |
const { style: { backgroundColor: r = o } = {} } = e,
|
8731 |
d = !0 !== s;
|
8732 |
+
t.save(), (t.fillStyle = r), Co(t, a, d && po(n, h, c)), t.beginPath();
|
8733 |
const u = !!i.pathSegment(t, e);
|
8734 |
let f;
|
8735 |
if (d) {
|
8736 |
+
u ? t.closePath() : Ao(t, s, c, n);
|
8737 |
const e = !!s.pathSegment(t, l, { move: u, reverse: !0 });
|
8738 |
+
(f = u && e), f || Ao(t, s, h, n);
|
8739 |
}
|
8740 |
t.closePath(), t.fill(f ? "evenodd" : "nonzero"), t.restore();
|
8741 |
}
|
8742 |
}
|
8743 |
+
function Co(t, e, i) {
|
8744 |
+
const { top: s, bottom: n } = e.chart.chartArea,
|
8745 |
+
{ property: o, start: a, end: r } = i || {};
|
8746 |
+
"x" === o && (t.beginPath(), t.rect(a, s, r - a, n - s), t.clip());
|
8747 |
+
}
|
8748 |
+
function Ao(t, e, i, s) {
|
8749 |
+
const n = e.interpolate(i, s);
|
8750 |
+
n && t.lineTo(n.x, n.y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8751 |
}
|
8752 |
+
var To = {
|
8753 |
id: "filler",
|
8754 |
afterDatasetsUpdate(t, e, i) {
|
8755 |
const s = (t.data.datasets || []).length,
|
8761 |
(l = null),
|
8762 |
r &&
|
8763 |
r.options &&
|
8764 |
+
r instanceof to &&
|
8765 |
(l = {
|
8766 |
visible: t.isDatasetVisible(a),
|
8767 |
index: a,
|
8768 |
+
fill: vo(r, a, s),
|
8769 |
chart: t,
|
8770 |
axis: o.controller.options.indexAxis,
|
8771 |
scale: o.vScale,
|
8774 |
(o.$filler = l),
|
8775 |
n.push(l);
|
8776 |
for (a = 0; a < s; ++a)
|
8777 |
+
(l = n[a]), l && !1 !== l.fill && (l.fill = yo(n, a, i.propagate));
|
8778 |
},
|
8779 |
beforeDraw(t, e, i) {
|
8780 |
const s = "beforeDraw" === i.drawTime,
|
8782 |
o = t.chartArea;
|
8783 |
for (let e = n.length - 1; e >= 0; --e) {
|
8784 |
const i = n[e].$filler;
|
8785 |
+
i &&
|
8786 |
+
(i.line.updateControlPoints(o, i.axis),
|
8787 |
+
s && i.fill && Po(t.ctx, i, o));
|
8788 |
}
|
8789 |
},
|
8790 |
beforeDatasetsDraw(t, e, i) {
|
8792 |
const s = t.getSortedVisibleDatasetMetas();
|
8793 |
for (let e = s.length - 1; e >= 0; --e) {
|
8794 |
const i = s[e].$filler;
|
8795 |
+
_o(i) && Po(t.ctx, i, t.chartArea);
|
8796 |
}
|
8797 |
},
|
8798 |
beforeDatasetDraw(t, e, i) {
|
8799 |
const s = e.meta.$filler;
|
8800 |
+
_o(s) && "beforeDatasetDraw" === i.drawTime && Po(t.ctx, s, t.chartArea);
|
|
|
|
|
|
|
8801 |
},
|
8802 |
defaults: { propagate: !0, drawTime: "beforeDatasetDraw" },
|
8803 |
};
|
8804 |
+
const Lo = (t, e) => {
|
8805 |
let { boxHeight: i = e, boxWidth: s = e } = t;
|
8806 |
return (
|
8807 |
+
t.usePointStyle &&
|
8808 |
+
((i = Math.min(i, e)), (s = t.pointStyleWidth || Math.min(s, e))),
|
8809 |
{ boxWidth: s, boxHeight: i, itemHeight: Math.max(e, i) }
|
8810 |
);
|
8811 |
};
|
8812 |
+
class Eo extends Es {
|
8813 |
constructor(t) {
|
8814 |
super(),
|
8815 |
(this._added = !1),
|
8854 |
}
|
8855 |
buildLabels() {
|
8856 |
const t = this.options.labels || {};
|
8857 |
+
let e = c(t.generateLabels, [this.chart], this) || [];
|
8858 |
t.filter && (e = e.filter((e) => t.filter(e, this.chart.data))),
|
8859 |
t.sort && (e = e.sort((e, i) => t.sort(e, i, this.chart.data))),
|
8860 |
this.options.reverse && e.reverse(),
|
8864 |
const { options: t, ctx: e } = this;
|
8865 |
if (!t.display) return void (this.width = this.height = 0);
|
8866 |
const i = t.labels,
|
8867 |
+
s = mi(i.font),
|
8868 |
n = s.size,
|
8869 |
o = this._computeTitleHeight(),
|
8870 |
+
{ boxWidth: a, itemHeight: r } = Lo(i, n);
|
8871 |
let l, h;
|
8872 |
(e.font = s.string),
|
8873 |
this.isHorizontal()
|
8945 |
options: {
|
8946 |
align: i,
|
8947 |
labels: { padding: s },
|
8948 |
+
rtl: n,
|
8949 |
},
|
8950 |
} = this,
|
8951 |
+
o = yi(n, this.left, this.width);
|
8952 |
if (this.isHorizontal()) {
|
8953 |
+
let n = 0,
|
8954 |
+
a = ut(i, this.left + s, this.right - this.lineWidths[n]);
|
8955 |
+
for (const r of e)
|
8956 |
+
n !== r.row &&
|
8957 |
+
((n = r.row),
|
8958 |
+
(a = ut(i, this.left + s, this.right - this.lineWidths[n]))),
|
8959 |
+
(r.top += this.top + t + s),
|
8960 |
+
(r.left = o.leftForLtr(o.x(a), r.width)),
|
8961 |
+
(a += r.width + s);
|
8962 |
} else {
|
8963 |
+
let n = 0,
|
8964 |
+
a = ut(i, this.top + t + s, this.bottom - this.columnSizes[n].height);
|
8965 |
+
for (const r of e)
|
8966 |
+
r.col !== n &&
|
8967 |
+
((n = r.col),
|
8968 |
+
(a = ut(
|
8969 |
i,
|
8970 |
this.top + t + s,
|
8971 |
+
this.bottom - this.columnSizes[n].height
|
8972 |
))),
|
8973 |
+
(r.top = a),
|
8974 |
+
(r.left += this.left + s),
|
8975 |
+
(r.left = o.leftForLtr(o.x(r.left), r.width)),
|
8976 |
+
(a += r.height + s);
|
8977 |
}
|
8978 |
}
|
8979 |
isHorizontal() {
|
8984 |
draw() {
|
8985 |
if (this.options.display) {
|
8986 |
const t = this.ctx;
|
8987 |
+
Pe(t, this), this._draw(), De(t);
|
8988 |
}
|
8989 |
}
|
8990 |
_draw() {
|
8991 |
const { options: t, columnSizes: e, lineWidths: i, ctx: s } = this,
|
8992 |
+
{ align: n, labels: o } = t,
|
8993 |
+
a = ne.color,
|
8994 |
+
l = yi(t.rtl, this.left, this.width),
|
8995 |
+
h = mi(o.font),
|
8996 |
+
{ color: c, padding: d } = o,
|
8997 |
+
u = h.size,
|
8998 |
+
f = u / 2;
|
8999 |
+
let g;
|
9000 |
this.drawTitle(),
|
9001 |
+
(s.textAlign = l.textAlign("left")),
|
9002 |
(s.textBaseline = "middle"),
|
9003 |
(s.lineWidth = 0.5),
|
9004 |
+
(s.font = h.string);
|
9005 |
+
const { boxWidth: p, boxHeight: m, itemHeight: b } = Lo(o, u),
|
9006 |
+
x = this.isHorizontal(),
|
9007 |
+
_ = this._computeTitleHeight();
|
9008 |
+
(g = x
|
9009 |
? {
|
9010 |
+
x: ut(n, this.left + d, this.right - i[0]),
|
9011 |
+
y: this.top + d + _,
|
9012 |
line: 0,
|
9013 |
}
|
9014 |
: {
|
9015 |
+
x: this.left + d,
|
9016 |
+
y: ut(n, this.top + _ + d, this.bottom - e[0].height),
|
9017 |
line: 0,
|
9018 |
}),
|
9019 |
+
vi(this.ctx, t.textDirection);
|
9020 |
+
const y = b + d;
|
9021 |
+
this.legendItems.forEach((v, w) => {
|
9022 |
+
(s.strokeStyle = v.fontColor || c), (s.fillStyle = v.fontColor || c);
|
9023 |
+
const M = s.measureText(v.text).width,
|
9024 |
+
k = l.textAlign(v.textAlign || (v.textAlign = o.textAlign)),
|
9025 |
+
S = p + f + M;
|
9026 |
+
let P = g.x,
|
9027 |
+
D = g.y;
|
9028 |
+
l.setWidth(this.width),
|
9029 |
+
x
|
9030 |
+
? w > 0 &&
|
9031 |
+
P + S + d > this.right &&
|
9032 |
+
((D = g.y += y),
|
9033 |
+
g.line++,
|
9034 |
+
(P = g.x = ut(n, this.left + d, this.right - i[g.line])))
|
9035 |
+
: w > 0 &&
|
9036 |
+
D + y > this.bottom &&
|
9037 |
+
((P = g.x = P + e[g.line].width + d),
|
9038 |
+
g.line++,
|
9039 |
+
(D = g.y =
|
9040 |
+
ut(n, this.top + _ + d, this.bottom - e[g.line].height)));
|
9041 |
!(function (t, e, i) {
|
9042 |
+
if (isNaN(p) || p <= 0 || isNaN(m) || m < 0) return;
|
9043 |
s.save();
|
9044 |
+
const n = r(i.lineWidth, 1);
|
9045 |
if (
|
9046 |
+
((s.fillStyle = r(i.fillStyle, a)),
|
9047 |
+
(s.lineCap = r(i.lineCap, "butt")),
|
9048 |
+
(s.lineDashOffset = r(i.lineDashOffset, 0)),
|
9049 |
+
(s.lineJoin = r(i.lineJoin, "miter")),
|
9050 |
(s.lineWidth = n),
|
9051 |
+
(s.strokeStyle = r(i.strokeStyle, a)),
|
9052 |
+
s.setLineDash(r(i.lineDash, [])),
|
9053 |
+
o.usePointStyle)
|
9054 |
) {
|
9055 |
+
const a = {
|
9056 |
radius: (m * Math.SQRT2) / 2,
|
9057 |
pointStyle: i.pointStyle,
|
9058 |
rotation: i.rotation,
|
9059 |
borderWidth: n,
|
9060 |
},
|
9061 |
+
r = l.xPlus(t, p / 2);
|
9062 |
+
ke(s, a, r, e + f, o.pointStyleWidth && p);
|
9063 |
} else {
|
9064 |
+
const o = e + Math.max((u - m) / 2, 0),
|
9065 |
+
a = l.leftForLtr(t, p),
|
9066 |
+
r = gi(i.borderRadius);
|
9067 |
s.beginPath(),
|
9068 |
Object.values(r).some((t) => 0 !== t)
|
9069 |
+
? Le(s, { x: a, y: o, w: p, h: m, radius: r })
|
9070 |
+
: s.rect(a, o, p, m),
|
9071 |
s.fill(),
|
9072 |
0 !== n && s.stroke();
|
9073 |
}
|
9074 |
s.restore();
|
9075 |
+
})(l.x(P), D, v),
|
9076 |
+
(P = ft(k, P + p + f, x ? P + S : this.right, t.rtl)),
|
9077 |
(function (t, e, i) {
|
9078 |
+
Ae(s, i.text, t, e + b / 2, h, {
|
9079 |
strikethrough: i.hidden,
|
9080 |
+
textAlign: l.textAlign(i.textAlign),
|
9081 |
});
|
9082 |
+
})(l.x(P), D, v),
|
9083 |
+
x ? (g.x += S + d) : (g.y += y);
|
9084 |
}),
|
9085 |
+
wi(this.ctx, t.textDirection);
|
9086 |
}
|
9087 |
drawTitle() {
|
9088 |
const t = this.options,
|
9089 |
e = t.title,
|
9090 |
+
i = mi(e.font),
|
9091 |
+
s = pi(e.padding);
|
9092 |
if (!e.display) return;
|
9093 |
+
const n = yi(t.rtl, this.left, this.width),
|
9094 |
+
o = this.ctx,
|
9095 |
+
a = e.position,
|
9096 |
+
r = i.size / 2,
|
9097 |
+
l = s.top + r;
|
9098 |
+
let h,
|
9099 |
+
c = this.left,
|
9100 |
+
d = this.width;
|
9101 |
if (this.isHorizontal())
|
9102 |
+
(d = Math.max(...this.lineWidths)),
|
9103 |
+
(h = this.top + l),
|
9104 |
+
(c = ut(t.align, c, this.right - d));
|
9105 |
else {
|
9106 |
const e = this.columnSizes.reduce((t, e) => Math.max(t, e.height), 0);
|
9107 |
+
h =
|
9108 |
+
l +
|
9109 |
+
ut(
|
9110 |
t.align,
|
9111 |
this.top,
|
9112 |
this.bottom - e - t.labels.padding - this._computeTitleHeight()
|
9113 |
);
|
9114 |
}
|
9115 |
+
const u = ut(a, c, c + d);
|
9116 |
+
(o.textAlign = n.textAlign(dt(a))),
|
9117 |
+
(o.textBaseline = "middle"),
|
9118 |
+
(o.strokeStyle = e.color),
|
9119 |
+
(o.fillStyle = e.color),
|
9120 |
+
(o.font = i.string),
|
9121 |
+
Ae(o, e.text, u, h, i);
|
9122 |
}
|
9123 |
_computeTitleHeight() {
|
9124 |
const t = this.options.title,
|
9125 |
+
e = mi(t.font),
|
9126 |
+
i = pi(t.padding);
|
9127 |
return t.display ? e.lineHeight + i.height : 0;
|
9128 |
}
|
9129 |
_getLegendItemAt(t, e) {
|
9130 |
let i, s, n;
|
9131 |
+
if (Q(t, this.left, this.right) && Q(e, this.top, this.bottom))
|
9132 |
for (n = this.legendHitBoxes, i = 0; i < n.length; ++i)
|
9133 |
if (
|
9134 |
((s = n[i]),
|
9135 |
+
Q(t, s.left, s.left + s.width) && Q(e, s.top, s.top + s.height))
|
9136 |
)
|
9137 |
return this.legendItems[i];
|
9138 |
return null;
|
9141 |
const e = this.options;
|
9142 |
if (
|
9143 |
!(function (t, e) {
|
9144 |
+
if (
|
9145 |
+
("mousemove" === t || "mouseout" === t) &&
|
9146 |
+
(e.onHover || e.onLeave)
|
9147 |
+
)
|
9148 |
+
return !0;
|
9149 |
if (e.onClick && ("click" === t || "mouseup" === t)) return !0;
|
9150 |
return !1;
|
9151 |
})(t.type, e)
|
9152 |
)
|
9153 |
return;
|
9154 |
const i = this._getLegendItemAt(t.x, t.y);
|
9155 |
+
if ("mousemove" === t.type || "mouseout" === t.type) {
|
9156 |
const o = this._hoveredItem,
|
9157 |
a =
|
9158 |
((n = i),
|
9160 |
null !== n &&
|
9161 |
s.datasetIndex === n.datasetIndex &&
|
9162 |
s.index === n.index);
|
9163 |
+
o && !a && c(e.onLeave, [t, o, this], this),
|
9164 |
(this._hoveredItem = i),
|
9165 |
+
i && !a && c(e.onHover, [t, i, this], this);
|
9166 |
+
} else i && c(e.onClick, [t, i, this], this);
|
9167 |
var s, n;
|
9168 |
}
|
9169 |
}
|
9170 |
+
var Ro = {
|
9171 |
id: "legend",
|
9172 |
+
_element: Eo,
|
9173 |
start(t, e, i) {
|
9174 |
+
const s = (t.legend = new Eo({ ctx: t.ctx, options: i, chart: t }));
|
9175 |
+
Zi.configure(t, s, i), Zi.addBox(t, s);
|
9176 |
},
|
9177 |
stop(t) {
|
9178 |
+
Zi.removeBox(t, t.legend), delete t.legend;
|
9179 |
},
|
9180 |
beforeUpdate(t, e, i) {
|
9181 |
const s = t.legend;
|
9182 |
+
Zi.configure(t, s, i), (s.options = i);
|
9183 |
},
|
9184 |
afterUpdate(t) {
|
9185 |
const e = t.legend;
|
9220 |
} = t.legend.options;
|
9221 |
return t._getSortedDatasetMetas().map((t) => {
|
9222 |
const a = t.controller.getStyle(i ? 0 : void 0),
|
9223 |
+
r = pi(a.borderWidth);
|
9224 |
return {
|
9225 |
text: e[t.index].label,
|
9226 |
fillStyle: a.backgroundColor,
|
9255 |
},
|
9256 |
},
|
9257 |
};
|
9258 |
+
class Io extends Es {
|
9259 |
constructor(t) {
|
9260 |
super(),
|
9261 |
(this.chart = t.chart),
|
9277 |
if (((this.left = 0), (this.top = 0), !i.display))
|
9278 |
return void (this.width = this.height = this.right = this.bottom = 0);
|
9279 |
(this.width = this.right = t), (this.height = this.bottom = e);
|
9280 |
+
const n = s(i.text) ? i.text.length : 1;
|
9281 |
+
this._padding = pi(i.padding);
|
9282 |
+
const o = n * mi(i.font).lineHeight + this._padding.height;
|
9283 |
+
this.isHorizontal() ? (this.height = o) : (this.width = o);
|
9284 |
}
|
9285 |
isHorizontal() {
|
9286 |
const t = this.options.position;
|
9287 |
return "top" === t || "bottom" === t;
|
9288 |
}
|
9289 |
_drawArgs(t) {
|
9290 |
+
const { top: e, left: i, bottom: s, right: n, options: o } = this,
|
9291 |
+
a = o.align;
|
9292 |
+
let r,
|
9293 |
+
l,
|
9294 |
h,
|
9295 |
+
c = 0;
|
|
|
9296 |
return (
|
9297 |
this.isHorizontal()
|
9298 |
+
? ((l = ut(a, i, n)), (h = e + t), (r = n - i))
|
9299 |
+
: ("left" === o.position
|
9300 |
+
? ((l = i + t), (h = ut(a, s, e)), (c = -0.5 * D))
|
9301 |
+
: ((l = n - t), (h = ut(a, e, s)), (c = 0.5 * D)),
|
9302 |
+
(r = s - e)),
|
9303 |
+
{ titleX: l, titleY: h, maxWidth: r, rotation: c }
|
9304 |
);
|
9305 |
}
|
9306 |
draw() {
|
9307 |
const t = this.ctx,
|
9308 |
e = this.options;
|
9309 |
if (!e.display) return;
|
9310 |
+
const i = mi(e.font),
|
9311 |
+
s = i.lineHeight / 2 + this._padding.top,
|
9312 |
+
{ titleX: n, titleY: o, maxWidth: a, rotation: r } = this._drawArgs(s);
|
9313 |
+
Ae(t, e.text, 0, 0, i, {
|
9314 |
color: e.color,
|
9315 |
+
maxWidth: a,
|
9316 |
+
rotation: r,
|
9317 |
+
textAlign: dt(e.align),
|
9318 |
textBaseline: "middle",
|
9319 |
+
translation: [n, o],
|
9320 |
});
|
9321 |
}
|
9322 |
}
|
9323 |
+
var zo = {
|
9324 |
id: "title",
|
9325 |
+
_element: Io,
|
9326 |
start(t, e, i) {
|
9327 |
!(function (t, e) {
|
9328 |
+
const i = new Io({ ctx: t.ctx, options: e, chart: t });
|
9329 |
+
Zi.configure(t, i, e), Zi.addBox(t, i), (t.titleBlock = i);
|
9330 |
})(t, i);
|
9331 |
},
|
9332 |
stop(t) {
|
9333 |
const e = t.titleBlock;
|
9334 |
+
Zi.removeBox(t, e), delete t.titleBlock;
|
9335 |
},
|
9336 |
beforeUpdate(t, e, i) {
|
9337 |
const s = t.titleBlock;
|
9338 |
+
Zi.configure(t, s, i), (s.options = i);
|
9339 |
},
|
9340 |
defaults: {
|
9341 |
align: "center",
|
9350 |
defaultRoutes: { color: "color" },
|
9351 |
descriptors: { _scriptable: !0, _indexable: !1 },
|
9352 |
};
|
9353 |
+
const Fo = new WeakMap();
|
9354 |
+
var Vo = {
|
9355 |
id: "subtitle",
|
9356 |
start(t, e, i) {
|
9357 |
+
const s = new Io({ ctx: t.ctx, options: i, chart: t });
|
9358 |
+
Zi.configure(t, s, i), Zi.addBox(t, s), Fo.set(t, s);
|
9359 |
},
|
9360 |
stop(t) {
|
9361 |
+
Zi.removeBox(t, Fo.get(t)), Fo.delete(t);
|
9362 |
},
|
9363 |
beforeUpdate(t, e, i) {
|
9364 |
+
const s = Fo.get(t);
|
9365 |
+
Zi.configure(t, s, i), (s.options = i);
|
9366 |
},
|
9367 |
defaults: {
|
9368 |
align: "center",
|
9377 |
defaultRoutes: { color: "color" },
|
9378 |
descriptors: { _scriptable: !0, _indexable: !1 },
|
9379 |
};
|
9380 |
+
const Bo = {
|
9381 |
average(t) {
|
9382 |
if (!t.length) return !1;
|
9383 |
let e,
|
9405 |
for (i = 0, s = t.length; i < s; ++i) {
|
9406 |
const s = t[i].element;
|
9407 |
if (s && s.hasValue()) {
|
9408 |
+
const t = X(e, s.getCenterPoint());
|
9409 |
t < r && ((r = t), (n = s));
|
9410 |
}
|
9411 |
}
|
9416 |
return { x: o, y: a };
|
9417 |
},
|
9418 |
};
|
9419 |
+
function No(t, e) {
|
9420 |
+
return e && (s(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t;
|
9421 |
}
|
9422 |
+
function Wo(t) {
|
9423 |
return ("string" == typeof t || t instanceof String) && t.indexOf("\n") > -1
|
9424 |
? t.split("\n")
|
9425 |
: t;
|
9426 |
}
|
9427 |
+
function jo(t, e) {
|
9428 |
const { element: i, datasetIndex: s, index: n } = e,
|
9429 |
o = t.getDatasetMeta(s).controller,
|
9430 |
{ label: a, value: r } = o.getLabelAndValue(n);
|
9440 |
element: i,
|
9441 |
};
|
9442 |
}
|
9443 |
+
function Ho(t, e) {
|
9444 |
const i = t.chart.ctx,
|
9445 |
{ body: s, footer: n, title: o } = t,
|
9446 |
{ boxWidth: a, boxHeight: r } = e,
|
9447 |
+
l = mi(e.bodyFont),
|
9448 |
+
h = mi(e.titleFont),
|
9449 |
+
c = mi(e.footerFont),
|
9450 |
+
u = o.length,
|
9451 |
+
f = n.length,
|
9452 |
+
g = s.length,
|
9453 |
+
p = pi(e.padding);
|
9454 |
+
let m = p.height,
|
9455 |
+
b = 0,
|
9456 |
x = s.reduce(
|
9457 |
(t, e) => t + e.before.length + e.lines.length + e.after.length,
|
9458 |
0
|
9459 |
);
|
9460 |
if (
|
9461 |
((x += t.beforeBody.length + t.afterBody.length),
|
9462 |
+
u &&
|
9463 |
+
(m +=
|
9464 |
+
u * h.lineHeight + (u - 1) * e.titleSpacing + e.titleMarginBottom),
|
9465 |
x)
|
9466 |
) {
|
9467 |
+
m +=
|
9468 |
+
g * (e.displayColors ? Math.max(r, l.lineHeight) : l.lineHeight) +
|
9469 |
+
(x - g) * l.lineHeight +
|
9470 |
(x - 1) * e.bodySpacing;
|
9471 |
}
|
9472 |
+
f &&
|
9473 |
+
(m += e.footerMarginTop + f * c.lineHeight + (f - 1) * e.footerSpacing);
|
9474 |
+
let _ = 0;
|
9475 |
+
const y = function (t) {
|
9476 |
+
b = Math.max(b, i.measureText(t).width + _);
|
9477 |
};
|
9478 |
return (
|
9479 |
i.save(),
|
9480 |
(i.font = h.string),
|
9481 |
+
d(t.title, y),
|
9482 |
(i.font = l.string),
|
9483 |
+
d(t.beforeBody.concat(t.afterBody), y),
|
9484 |
+
(_ = e.displayColors ? a + 2 + e.boxPadding : 0),
|
9485 |
+
d(s, (t) => {
|
9486 |
+
d(t.before, y), d(t.lines, y), d(t.after, y);
|
9487 |
}),
|
9488 |
+
(_ = 0),
|
9489 |
(i.font = c.string),
|
9490 |
+
d(t.footer, y),
|
9491 |
i.restore(),
|
9492 |
+
(b += p.width),
|
9493 |
+
{ width: b, height: m }
|
9494 |
);
|
9495 |
}
|
9496 |
+
function $o(t, e, i, s) {
|
9497 |
const { x: n, width: o } = i,
|
9498 |
{
|
9499 |
width: a,
|
9518 |
h
|
9519 |
);
|
9520 |
}
|
9521 |
+
function Yo(t, e, i) {
|
9522 |
const s =
|
9523 |
i.yAlign ||
|
9524 |
e.yAlign ||
|
9526 |
const { y: i, height: s } = e;
|
9527 |
return i < s / 2 ? "top" : i > t.height - s / 2 ? "bottom" : "center";
|
9528 |
})(t, i);
|
9529 |
+
return { xAlign: i.xAlign || e.xAlign || $o(t, e, i, s), yAlign: s };
|
9530 |
}
|
9531 |
+
function Uo(t, e, i, s) {
|
9532 |
const { caretSize: n, caretPadding: o, cornerRadius: a } = t,
|
9533 |
{ xAlign: r, yAlign: l } = i,
|
9534 |
h = n + o,
|
9535 |
+
{ topLeft: c, topRight: d, bottomLeft: u, bottomRight: f } = gi(a);
|
9536 |
let g = (function (t, e) {
|
9537 |
let { x: i, width: s } = t;
|
9538 |
return "right" === e ? (i -= s) : "center" === e && (i -= s / 2), i;
|
9549 |
: "left" === r
|
9550 |
? (g -= Math.max(c, u) + n)
|
9551 |
: "right" === r && (g += Math.max(d, f) + n),
|
9552 |
+
{ x: Z(g, 0, s.width - e.width), y: Z(p, 0, s.height - e.height) }
|
9553 |
);
|
9554 |
}
|
9555 |
+
function Xo(t, e, i) {
|
9556 |
+
const s = pi(i.padding);
|
9557 |
return "center" === e
|
9558 |
? t.x + t.width / 2
|
9559 |
: "right" === e
|
9560 |
? t.x + t.width - s.right
|
9561 |
: t.x + s.left;
|
9562 |
}
|
9563 |
+
function qo(t) {
|
9564 |
+
return No([], Wo(t));
|
9565 |
}
|
9566 |
+
function Ko(t, e) {
|
9567 |
const i =
|
9568 |
e && e.dataset && e.dataset.tooltip && e.dataset.tooltip.callbacks;
|
9569 |
return i ? t.override(i) : t;
|
9570 |
}
|
9571 |
+
class Go extends Es {
|
9572 |
constructor(t) {
|
9573 |
super(),
|
9574 |
(this.opacity = 0),
|
9611 |
const e = this.chart,
|
9612 |
i = this.options.setContext(this.getContext()),
|
9613 |
s = i.enabled && e.options.animation && i.animations,
|
9614 |
+
n = new ys(this.chart, s);
|
9615 |
return s._cacheable && (this._cachedAnimations = Object.freeze(n)), n;
|
9616 |
}
|
9617 |
getContext() {
|
9621 |
((t = this.chart.getContext()),
|
9622 |
(e = this),
|
9623 |
(i = this._tooltipItems),
|
9624 |
+
_i(t, { tooltip: e, tooltipItems: i, type: "tooltip" })))
|
9625 |
);
|
9626 |
var t, e, i;
|
9627 |
}
|
9631 |
n = i.title.apply(this, [t]),
|
9632 |
o = i.afterTitle.apply(this, [t]);
|
9633 |
let a = [];
|
9634 |
+
return (a = No(a, Wo(s))), (a = No(a, Wo(n))), (a = No(a, Wo(o))), a;
|
9635 |
}
|
9636 |
getBeforeBody(t, e) {
|
9637 |
+
return qo(e.callbacks.beforeBody.apply(this, [t]));
|
9638 |
}
|
9639 |
getBody(t, e) {
|
9640 |
const { callbacks: i } = e,
|
9641 |
s = [];
|
9642 |
return (
|
9643 |
+
d(t, (t) => {
|
9644 |
const e = { before: [], lines: [], after: [] },
|
9645 |
+
n = Ko(i, t);
|
9646 |
+
No(e.before, Wo(n.beforeLabel.call(this, t))),
|
9647 |
+
No(e.lines, n.label.call(this, t)),
|
9648 |
+
No(e.after, Wo(n.afterLabel.call(this, t))),
|
9649 |
s.push(e);
|
9650 |
}),
|
9651 |
s
|
9652 |
);
|
9653 |
}
|
9654 |
getAfterBody(t, e) {
|
9655 |
+
return qo(e.callbacks.afterBody.apply(this, [t]));
|
9656 |
}
|
9657 |
getFooter(t, e) {
|
9658 |
const { callbacks: i } = e,
|
9660 |
n = i.footer.apply(this, [t]),
|
9661 |
o = i.afterFooter.apply(this, [t]);
|
9662 |
let a = [];
|
9663 |
+
return (a = No(a, Wo(s))), (a = No(a, Wo(n))), (a = No(a, Wo(o))), a;
|
9664 |
}
|
9665 |
_createItems(t) {
|
9666 |
const e = this._active,
|
9671 |
let a,
|
9672 |
r,
|
9673 |
l = [];
|
9674 |
+
for (a = 0, r = e.length; a < r; ++a) l.push(jo(this.chart, e[a]));
|
9675 |
return (
|
9676 |
t.filter && (l = l.filter((e, s, n) => t.filter(e, s, n, i))),
|
9677 |
t.itemSort && (l = l.sort((e, s) => t.itemSort(e, s, i))),
|
9678 |
+
d(l, (e) => {
|
9679 |
+
const i = Ko(t.callbacks, e);
|
9680 |
s.push(i.labelColor.call(this, e)),
|
9681 |
n.push(i.labelPointStyle.call(this, e)),
|
9682 |
o.push(i.labelTextColor.call(this, e));
|
9694 |
let n,
|
9695 |
o = [];
|
9696 |
if (s.length) {
|
9697 |
+
const t = Bo[i.position].call(this, s, this._eventPosition);
|
9698 |
(o = this._createItems(i)),
|
9699 |
(this.title = this.getTitle(o, i)),
|
9700 |
(this.beforeBody = this.getBeforeBody(o, i)),
|
9701 |
(this.body = this.getBody(o, i)),
|
9702 |
(this.afterBody = this.getAfterBody(o, i)),
|
9703 |
(this.footer = this.getFooter(o, i));
|
9704 |
+
const e = (this._size = Ho(this, i)),
|
9705 |
a = Object.assign({}, t, e),
|
9706 |
+
r = Yo(this.chart, i, a),
|
9707 |
+
l = Uo(i, a, r, this.chart);
|
9708 |
(this.xAlign = r.xAlign),
|
9709 |
(this.yAlign = r.yAlign),
|
9710 |
(n = {
|
9735 |
getCaretPosition(t, e, i) {
|
9736 |
const { xAlign: s, yAlign: n } = this,
|
9737 |
{ caretSize: o, cornerRadius: a } = i,
|
9738 |
+
{ topLeft: r, topRight: l, bottomLeft: h, bottomRight: c } = gi(a),
|
9739 |
{ x: d, y: u } = t,
|
9740 |
{ width: f, height: g } = e;
|
9741 |
+
let p, m, b, x, _, y;
|
9742 |
return (
|
9743 |
"center" === n
|
9744 |
? ((_ = u + g / 2),
|
9745 |
"left" === s
|
9746 |
+
? ((p = d), (m = p - o), (x = _ + o), (y = _ - o))
|
9747 |
+
: ((p = d + f), (m = p + o), (x = _ - o), (y = _ + o)),
|
9748 |
+
(b = p))
|
9749 |
: ((m =
|
9750 |
"left" === s
|
9751 |
? d + Math.max(r, h) + o
|
9753 |
? d + f - Math.max(l, c) - o
|
9754 |
: this.caretX),
|
9755 |
"top" === n
|
9756 |
+
? ((x = u), (_ = x - o), (p = m - o), (b = m + o))
|
9757 |
+
: ((x = u + g), (_ = x + o), (p = m + o), (b = m - o)),
|
9758 |
+
(y = x)),
|
9759 |
+
{ x1: p, x2: m, x3: b, y1: x, y2: _, y3: y }
|
9760 |
);
|
9761 |
}
|
9762 |
drawTitle(t, e, i) {
|
9764 |
n = s.length;
|
9765 |
let o, a, r;
|
9766 |
if (n) {
|
9767 |
+
const l = yi(i.rtl, this.x, this.width);
|
9768 |
for (
|
9769 |
+
t.x = Xo(this, i.titleAlign, i),
|
9770 |
e.textAlign = l.textAlign(i.titleAlign),
|
9771 |
e.textBaseline = "middle",
|
9772 |
+
o = mi(i.titleFont),
|
9773 |
a = i.titleSpacing,
|
9774 |
e.fillStyle = i.titleColor,
|
9775 |
e.font = o.string,
|
9782 |
r + 1 === n && (t.y += i.titleMarginBottom - a);
|
9783 |
}
|
9784 |
}
|
9785 |
+
_drawColorBox(t, e, i, s, o) {
|
9786 |
+
const a = this.labelColors[i],
|
9787 |
+
r = this.labelPointStyles[i],
|
9788 |
+
{ boxHeight: l, boxWidth: h, boxPadding: c } = o,
|
9789 |
+
d = mi(o.bodyFont),
|
9790 |
+
u = Xo(this, "left", o),
|
9791 |
+
f = s.x(u),
|
9792 |
+
g = l < d.lineHeight ? (d.lineHeight - l) / 2 : 0,
|
9793 |
+
p = e.y + g;
|
9794 |
+
if (o.usePointStyle) {
|
9795 |
const e = {
|
9796 |
+
radius: Math.min(h, l) / 2,
|
9797 |
+
pointStyle: r.pointStyle,
|
9798 |
+
rotation: r.rotation,
|
9799 |
borderWidth: 1,
|
9800 |
},
|
9801 |
+
i = s.leftForLtr(f, h) + h / 2,
|
9802 |
+
n = p + l / 2;
|
9803 |
+
(t.strokeStyle = o.multiKeyBackground),
|
9804 |
+
(t.fillStyle = o.multiKeyBackground),
|
9805 |
+
Me(t, e, i, n),
|
9806 |
+
(t.strokeStyle = a.borderColor),
|
9807 |
+
(t.fillStyle = a.backgroundColor),
|
9808 |
+
Me(t, e, i, n);
|
9809 |
} else {
|
9810 |
+
(t.lineWidth = n(a.borderWidth)
|
9811 |
+
? Math.max(...Object.values(a.borderWidth))
|
9812 |
+
: a.borderWidth || 1),
|
9813 |
+
(t.strokeStyle = a.borderColor),
|
9814 |
+
t.setLineDash(a.borderDash || []),
|
9815 |
+
(t.lineDashOffset = a.borderDashOffset || 0);
|
9816 |
+
const e = s.leftForLtr(f, h - c),
|
9817 |
+
i = s.leftForLtr(s.xPlus(f, 1), h - c - 2),
|
9818 |
+
r = gi(a.borderRadius);
|
9819 |
+
Object.values(r).some((t) => 0 !== t)
|
9820 |
? (t.beginPath(),
|
9821 |
+
(t.fillStyle = o.multiKeyBackground),
|
9822 |
+
Le(t, { x: e, y: p, w: h, h: l, radius: r }),
|
9823 |
t.fill(),
|
9824 |
t.stroke(),
|
9825 |
+
(t.fillStyle = a.backgroundColor),
|
9826 |
t.beginPath(),
|
9827 |
+
Le(t, { x: i, y: p + 1, w: h - 2, h: l - 2, radius: r }),
|
9828 |
t.fill())
|
9829 |
+
: ((t.fillStyle = o.multiKeyBackground),
|
9830 |
+
t.fillRect(e, p, h, l),
|
9831 |
+
t.strokeRect(e, p, h, l),
|
9832 |
+
(t.fillStyle = a.backgroundColor),
|
9833 |
+
t.fillRect(i, p + 1, h - 2, l - 2));
|
9834 |
}
|
9835 |
t.fillStyle = this.labelTextColors[i];
|
9836 |
}
|
9844 |
boxWidth: l,
|
9845 |
boxPadding: h,
|
9846 |
} = i,
|
9847 |
+
c = mi(i.bodyFont);
|
9848 |
+
let u = c.lineHeight,
|
9849 |
+
f = 0;
|
9850 |
+
const g = yi(i.rtl, this.x, this.width),
|
9851 |
+
p = function (i) {
|
9852 |
+
e.fillText(i, g.x(t.x + f), t.y + u / 2), (t.y += u + n);
|
9853 |
},
|
9854 |
+
m = g.textAlign(o);
|
9855 |
+
let b, x, _, y, v, w, M;
|
9856 |
for (
|
9857 |
e.textAlign = o,
|
9858 |
e.textBaseline = "middle",
|
9859 |
e.font = c.string,
|
9860 |
+
t.x = Xo(this, m, i),
|
9861 |
e.fillStyle = i.bodyColor,
|
9862 |
+
d(this.beforeBody, p),
|
9863 |
+
f = a && "right" !== m ? ("center" === o ? l / 2 + h : l + 2 + h) : 0,
|
9864 |
+
y = 0,
|
9865 |
+
w = s.length;
|
9866 |
+
y < w;
|
9867 |
+
++y
|
9868 |
) {
|
9869 |
for (
|
9870 |
+
b = s[y],
|
9871 |
+
x = this.labelTextColors[y],
|
9872 |
e.fillStyle = x,
|
9873 |
+
d(b.before, p),
|
9874 |
+
_ = b.lines,
|
9875 |
a &&
|
9876 |
+
_.length &&
|
9877 |
+
(this._drawColorBox(e, t, y, g, i),
|
9878 |
+
(u = Math.max(c.lineHeight, r))),
|
9879 |
+
v = 0,
|
9880 |
+
M = _.length;
|
9881 |
+
v < M;
|
9882 |
+
++v
|
9883 |
)
|
9884 |
+
p(_[v]), (u = c.lineHeight);
|
9885 |
+
d(b.after, p);
|
9886 |
}
|
9887 |
+
(f = 0), (u = c.lineHeight), d(this.afterBody, p), (t.y -= n);
|
9888 |
}
|
9889 |
drawFooter(t, e, i) {
|
9890 |
const s = this.footer,
|
9891 |
n = s.length;
|
9892 |
let o, a;
|
9893 |
if (n) {
|
9894 |
+
const r = yi(i.rtl, this.x, this.width);
|
9895 |
for (
|
9896 |
+
t.x = Xo(this, i.footerAlign, i),
|
9897 |
t.y += i.footerMarginTop,
|
9898 |
e.textAlign = r.textAlign(i.footerAlign),
|
9899 |
e.textBaseline = "middle",
|
9900 |
+
o = mi(i.footerFont),
|
9901 |
e.fillStyle = i.footerColor,
|
9902 |
e.font = o.string,
|
9903 |
a = 0;
|
9917 |
topRight: d,
|
9918 |
bottomLeft: u,
|
9919 |
bottomRight: f,
|
9920 |
+
} = gi(s.cornerRadius);
|
9921 |
(e.fillStyle = s.backgroundColor),
|
9922 |
(e.strokeStyle = s.borderColor),
|
9923 |
(e.lineWidth = s.borderWidth),
|
9945 |
s = i && i.x,
|
9946 |
n = i && i.y;
|
9947 |
if (s || n) {
|
9948 |
+
const i = Bo[t.position].call(this, this._active, this._eventPosition);
|
9949 |
if (!i) return;
|
9950 |
+
const o = (this._size = Ho(this, t)),
|
9951 |
a = Object.assign({}, i, this._size),
|
9952 |
+
r = Yo(e, t, a),
|
9953 |
+
l = Uo(t, a, r, e);
|
9954 |
(s._to === l.x && n._to === l.y) ||
|
9955 |
((this.xAlign = r.xAlign),
|
9956 |
(this.yAlign = r.yAlign),
|
9961 |
this._resolveAnimations().update(this, l));
|
9962 |
}
|
9963 |
}
|
9964 |
+
_willRender() {
|
9965 |
+
return !!this.opacity;
|
9966 |
+
}
|
9967 |
draw(t) {
|
9968 |
const e = this.options.setContext(this.getContext());
|
9969 |
let i = this.opacity;
|
9972 |
const s = { width: this.width, height: this.height },
|
9973 |
n = { x: this.x, y: this.y };
|
9974 |
i = Math.abs(i) < 0.001 ? 0 : i;
|
9975 |
+
const o = pi(e.padding),
|
9976 |
a =
|
9977 |
this.title.length ||
|
9978 |
this.beforeBody.length ||
|
9984 |
(t.save(),
|
9985 |
(t.globalAlpha = i),
|
9986 |
this.drawBackground(n, t, s, e),
|
9987 |
+
vi(t, e.textDirection),
|
9988 |
(n.y += o.top),
|
9989 |
this.drawTitle(n, t, e),
|
9990 |
this.drawBody(n, t, e),
|
9991 |
this.drawFooter(n, t, e),
|
9992 |
+
wi(t, e.textDirection),
|
9993 |
t.restore());
|
9994 |
}
|
9995 |
getActiveElements() {
|
10002 |
if (!i) throw new Error("Cannot find a dataset at index " + t);
|
10003 |
return { datasetIndex: t, element: i.data[e], index: e };
|
10004 |
}),
|
10005 |
+
n = !u(i, s),
|
10006 |
o = this._positionChanged(s, e);
|
10007 |
(n || o) &&
|
10008 |
((this._active = s),
|
10017 |
n = this._active || [],
|
10018 |
o = this._getActiveElements(t, n, e, i),
|
10019 |
a = this._positionChanged(o, t),
|
10020 |
+
r = e || !u(o, n) || a;
|
10021 |
return (
|
10022 |
r &&
|
10023 |
((this._active = o),
|
10035 |
}
|
10036 |
_positionChanged(t, e) {
|
10037 |
const { caretX: i, caretY: s, options: n } = this,
|
10038 |
+
o = Bo[n.position].call(this, t, e);
|
10039 |
return !1 !== o && (i !== o.x || s !== o.y);
|
10040 |
}
|
10041 |
}
|
10042 |
+
Go.positioners = Bo;
|
10043 |
+
var Zo = {
|
10044 |
id: "tooltip",
|
10045 |
+
_element: Go,
|
10046 |
+
positioners: Bo,
|
10047 |
afterInit(t, e, i) {
|
10048 |
+
i && (t.tooltip = new Go({ chart: t, options: i }));
|
10049 |
},
|
10050 |
beforeUpdate(t, e, i) {
|
10051 |
t.tooltip && t.tooltip.initialize(i);
|
10054 |
t.tooltip && t.tooltip.initialize(i);
|
10055 |
},
|
10056 |
afterDraw(t) {
|
10057 |
+
const e = t.tooltip;
|
10058 |
+
if (e && e._willRender()) {
|
10059 |
+
const i = { tooltip: e };
|
10060 |
+
if (!1 === t.notifyPlugins("beforeTooltipDraw", i)) return;
|
10061 |
+
e.draw(t.ctx), t.notifyPlugins("afterTooltipDraw", i);
|
10062 |
+
}
|
10063 |
},
|
10064 |
afterEvent(t, e) {
|
10065 |
if (t.tooltip) {
|
10106 |
opacity: { easing: "linear", duration: 200 },
|
10107 |
},
|
10108 |
callbacks: {
|
10109 |
+
beforeTitle: t,
|
10110 |
title(t) {
|
10111 |
if (t.length > 0) {
|
10112 |
const e = t[0],
|
10119 |
}
|
10120 |
return "";
|
10121 |
},
|
10122 |
+
afterTitle: t,
|
10123 |
+
beforeBody: t,
|
10124 |
+
beforeLabel: t,
|
10125 |
label(t) {
|
10126 |
if (this && this.options && "dataset" === this.options.mode)
|
10127 |
return t.label + ": " + t.formattedValue || t.formattedValue;
|
10128 |
let e = t.dataset.label || "";
|
10129 |
e && (e += ": ");
|
10130 |
+
const s = t.formattedValue;
|
10131 |
+
return i(s) || (e += s), e;
|
10132 |
},
|
10133 |
labelColor(t) {
|
10134 |
const e = t.chart
|
10152 |
.controller.getStyle(t.dataIndex);
|
10153 |
return { pointStyle: e.pointStyle, rotation: e.rotation };
|
10154 |
},
|
10155 |
+
afterLabel: t,
|
10156 |
+
afterBody: t,
|
10157 |
+
beforeFooter: t,
|
10158 |
+
footer: t,
|
10159 |
+
afterFooter: t,
|
10160 |
},
|
10161 |
},
|
10162 |
defaultRoutes: {
|
10174 |
},
|
10175 |
additionalOptionScopes: ["interaction"],
|
10176 |
},
|
10177 |
+
Jo = Object.freeze({
|
10178 |
__proto__: null,
|
10179 |
+
Decimation: go,
|
10180 |
+
Filler: To,
|
10181 |
+
Legend: Ro,
|
10182 |
+
SubTitle: Vo,
|
10183 |
+
Title: zo,
|
10184 |
+
Tooltip: Zo,
|
10185 |
});
|
10186 |
+
function Qo(t, e, i, s) {
|
10187 |
const n = t.indexOf(e);
|
10188 |
if (-1 === n)
|
10189 |
return ((t, e, i, s) => (
|
10194 |
))(t, e, i, s);
|
10195 |
return n !== t.lastIndexOf(e) ? i : n;
|
10196 |
}
|
10197 |
+
class ta extends $s {
|
10198 |
constructor(t) {
|
10199 |
super(t),
|
10200 |
(this._startValue = void 0),
|
10211 |
super.init(t);
|
10212 |
}
|
10213 |
parse(t, e) {
|
10214 |
+
if (i(t)) return null;
|
10215 |
+
const s = this.getLabels();
|
10216 |
return ((t, e) =>
|
10217 |
null === t
|
10218 |
? null
|
10219 |
+
: Z(
|
10220 |
Math.round(t),
|
10221 |
0,
|
10222 |
e
|
10223 |
+
))((e = isFinite(e) && s[e] === t ? e : Qo(s, t, r(e, t), this._addedLabels)), s.length - 1);
|
10224 |
}
|
10225 |
determineDataLimits() {
|
10226 |
const { minDefined: t, maxDefined: e } = this.getUserBounds();
|
10273 |
return this.bottom;
|
10274 |
}
|
10275 |
}
|
10276 |
+
function ea(t, e, { horizontal: i, minRotation: s }) {
|
10277 |
+
const n = H(s),
|
10278 |
o = (i ? Math.sin(n) : Math.cos(n)) || 0.001,
|
10279 |
a = 0.75 * e * ("" + t).length;
|
10280 |
return Math.min(e / o, a);
|
10281 |
}
|
10282 |
+
(ta.id = "category"),
|
10283 |
+
(ta.defaults = { ticks: { callback: ta.prototype.getLabelForValue } });
|
10284 |
+
class ia extends $s {
|
10285 |
constructor(t) {
|
10286 |
super(t),
|
10287 |
(this.start = void 0),
|
10291 |
(this._valueRange = 0);
|
10292 |
}
|
10293 |
parse(t, e) {
|
10294 |
+
return i(t) ||
|
10295 |
(("number" == typeof t || t instanceof Number) && !isFinite(+t))
|
10296 |
? null
|
10297 |
: +t;
|
10303 |
const o = (t) => (s = e ? s : t),
|
10304 |
a = (t) => (n = i ? n : t);
|
10305 |
if (t) {
|
10306 |
+
const t = z(s),
|
10307 |
+
e = z(n);
|
10308 |
t < 0 && e < 0 ? a(0) : t > 0 && e > 0 && o(0);
|
10309 |
}
|
10310 |
if (s === n) {
|
10339 |
buildTicks() {
|
10340 |
const t = this.options,
|
10341 |
e = t.ticks;
|
10342 |
+
let s = this.getTickLimit();
|
10343 |
+
s = Math.max(2, s);
|
10344 |
+
const n = (function (t, e) {
|
10345 |
+
const s = [],
|
10346 |
{
|
10347 |
+
bounds: n,
|
10348 |
+
step: o,
|
10349 |
+
min: a,
|
10350 |
+
max: r,
|
10351 |
+
precision: l,
|
10352 |
+
count: h,
|
10353 |
+
maxTicks: c,
|
10354 |
+
maxDigits: d,
|
10355 |
+
includeBounds: u,
|
10356 |
} = t,
|
10357 |
+
f = o || 1,
|
10358 |
+
g = c - 1,
|
10359 |
+
{ min: p, max: m } = e,
|
10360 |
+
b = !i(a),
|
10361 |
+
x = !i(r),
|
10362 |
+
_ = !i(h),
|
10363 |
+
y = (m - p) / (d + 1);
|
10364 |
+
let v,
|
|
|
10365 |
w,
|
10366 |
M,
|
10367 |
+
k,
|
10368 |
+
S = F((m - p) / g / f) * f;
|
10369 |
+
if (S < 1e-14 && !b && !x) return [{ value: p }, { value: m }];
|
10370 |
+
(k = Math.ceil(m / S) - Math.floor(p / S)),
|
10371 |
+
k > g && (S = F((k * S) / g / f) * f),
|
10372 |
+
i(l) || ((v = Math.pow(10, l)), (S = Math.ceil(S * v) / v)),
|
10373 |
+
"ticks" === n
|
10374 |
+
? ((w = Math.floor(p / S) * S), (M = Math.ceil(m / S) * S))
|
10375 |
+
: ((w = p), (M = m)),
|
10376 |
+
b && x && o && W((r - a) / o, S / 1e3)
|
10377 |
+
? ((k = Math.round(Math.min((r - a) / S, c))),
|
10378 |
+
(S = (r - a) / k),
|
10379 |
+
(w = a),
|
10380 |
+
(M = r))
|
10381 |
+
: _
|
10382 |
+
? ((w = b ? a : w), (M = x ? r : M), (k = h - 1), (S = (M - w) / k))
|
10383 |
+
: ((k = (M - w) / S),
|
10384 |
+
(k = N(k, Math.round(k), S / 1e3)
|
10385 |
+
? Math.round(k)
|
10386 |
+
: Math.ceil(k)));
|
10387 |
+
const P = Math.max(Y(S), Y(w));
|
10388 |
+
(v = Math.pow(10, i(l) ? P : l)),
|
10389 |
+
(w = Math.round(w * v) / v),
|
10390 |
+
(M = Math.round(M * v) / v);
|
10391 |
+
let D = 0;
|
10392 |
for (
|
10393 |
+
b &&
|
10394 |
+
(u && w !== a
|
10395 |
+
? (s.push({ value: a }),
|
10396 |
+
w < a && D++,
|
10397 |
+
N(Math.round((w + D * S) * v) / v, a, ea(a, y, t)) && D++)
|
10398 |
+
: w < a && D++);
|
10399 |
+
D < k;
|
10400 |
+
++D
|
10401 |
)
|
10402 |
+
s.push({ value: Math.round((w + D * S) * v) / v });
|
10403 |
return (
|
10404 |
+
x && u && M !== r
|
10405 |
+
? s.length && N(s[s.length - 1].value, r, ea(r, y, t))
|
10406 |
+
? (s[s.length - 1].value = r)
|
10407 |
+
: s.push({ value: r })
|
10408 |
+
: (x && M !== r) || s.push({ value: M }),
|
10409 |
+
s
|
10410 |
);
|
10411 |
})(
|
10412 |
{
|
10413 |
+
maxTicks: s,
|
10414 |
bounds: t.bounds,
|
10415 |
min: t.min,
|
10416 |
max: t.max,
|
10425 |
this._range || this
|
10426 |
);
|
10427 |
return (
|
10428 |
+
"ticks" === t.bounds && j(n, this, "value"),
|
10429 |
t.reverse
|
10430 |
+
? (n.reverse(), (this.start = this.max), (this.end = this.min))
|
10431 |
: ((this.start = this.min), (this.end = this.max)),
|
10432 |
+
n
|
10433 |
);
|
10434 |
}
|
10435 |
configure() {
|
10443 |
(this._startValue = e), (this._endValue = i), (this._valueRange = i - e);
|
10444 |
}
|
10445 |
getLabelForValue(t) {
|
10446 |
+
return li(t, this.chart.options.locale, this.options.ticks.format);
|
10447 |
}
|
10448 |
}
|
10449 |
+
class sa extends ia {
|
10450 |
determineDataLimits() {
|
10451 |
const { min: t, max: e } = this.getMinMax(!0);
|
10452 |
+
(this.min = o(t) ? t : 0),
|
10453 |
+
(this.max = o(e) ? e : 1),
|
10454 |
this.handleTickRangeOptions();
|
10455 |
}
|
10456 |
computeTickLimit() {
|
10457 |
const t = this.isHorizontal(),
|
10458 |
e = t ? this.width : this.height,
|
10459 |
+
i = H(this.options.ticks.minRotation),
|
10460 |
s = (t ? Math.sin(i) : Math.cos(i)) || 0.001,
|
10461 |
n = this._resolveTickFontOptions(0);
|
10462 |
return Math.ceil(e / Math.min(40, n.lineHeight / s));
|
10470 |
return this._startValue + this.getDecimalForPixel(t) * this._valueRange;
|
10471 |
}
|
10472 |
}
|
10473 |
+
function na(t) {
|
10474 |
+
return 1 === t / Math.pow(10, Math.floor(I(t)));
|
10475 |
}
|
10476 |
+
(sa.id = "linear"),
|
10477 |
+
(sa.defaults = { ticks: { callback: Is.formatters.numeric } });
|
10478 |
+
class oa extends $s {
|
10479 |
constructor(t) {
|
10480 |
super(t),
|
10481 |
(this.start = void 0),
|
10484 |
(this._valueRange = 0);
|
10485 |
}
|
10486 |
parse(t, e) {
|
10487 |
+
const i = ia.prototype.parse.apply(this, [t, e]);
|
10488 |
+
if (0 !== i) return o(i) && i > 0 ? i : null;
|
10489 |
this._zero = !0;
|
10490 |
}
|
10491 |
determineDataLimits() {
|
10492 |
const { min: t, max: e } = this.getMinMax(!0);
|
10493 |
+
(this.min = o(t) ? Math.max(0, t) : null),
|
10494 |
+
(this.max = o(e) ? Math.max(0, e) : null),
|
10495 |
this.options.beginAtZero && (this._zero = !0),
|
10496 |
this.handleTickRangeOptions();
|
10497 |
}
|
10501 |
s = this.max;
|
10502 |
const n = (e) => (i = t ? i : e),
|
10503 |
o = (t) => (s = e ? s : t),
|
10504 |
+
a = (t, e) => Math.pow(10, Math.floor(I(t)) + e);
|
10505 |
i === s && (i <= 0 ? (n(1), o(10)) : (n(a(i, -1)), o(a(s, 1)))),
|
10506 |
i <= 0 && n(a(s, -1)),
|
10507 |
s <= 0 && o(a(i, 1)),
|
10515 |
buildTicks() {
|
10516 |
const t = this.options,
|
10517 |
e = (function (t, e) {
|
10518 |
+
const i = Math.floor(I(e.max)),
|
10519 |
s = Math.ceil(e.max / Math.pow(10, i)),
|
10520 |
n = [];
|
10521 |
+
let o = a(t.min, Math.pow(10, Math.floor(I(e.min)))),
|
10522 |
+
r = Math.floor(I(o)),
|
10523 |
+
l = Math.floor(o / Math.pow(10, r)),
|
10524 |
+
h = r < 0 ? Math.pow(10, Math.abs(r)) : 1;
|
10525 |
do {
|
10526 |
+
n.push({ value: o, major: na(o) }),
|
10527 |
+
++l,
|
10528 |
+
10 === l && ((l = 1), ++r, (h = r >= 0 ? 1 : h)),
|
10529 |
+
(o = Math.round(l * Math.pow(10, r) * h) / h);
|
10530 |
+
} while (r < i || (r === i && l < s));
|
10531 |
+
const c = a(t.max, o);
|
10532 |
+
return n.push({ value: c, major: na(o) }), n;
|
10533 |
})({ min: this._userMin, max: this._userMax }, this);
|
10534 |
return (
|
10535 |
+
"ticks" === t.bounds && j(e, this, "value"),
|
10536 |
t.reverse
|
10537 |
? (e.reverse(), (this.start = this.max), (this.end = this.min))
|
10538 |
: ((this.start = this.min), (this.end = this.max)),
|
10542 |
getLabelForValue(t) {
|
10543 |
return void 0 === t
|
10544 |
? "0"
|
10545 |
+
: li(t, this.chart.options.locale, this.options.ticks.format);
|
10546 |
}
|
10547 |
configure() {
|
10548 |
const t = this.min;
|
10549 |
super.configure(),
|
10550 |
+
(this._startValue = I(t)),
|
10551 |
+
(this._valueRange = I(this.max) - I(t));
|
10552 |
}
|
10553 |
getPixelForValue(t) {
|
10554 |
return (
|
10556 |
null === t || isNaN(t)
|
10557 |
? NaN
|
10558 |
: this.getPixelForDecimal(
|
10559 |
+
t === this.min ? 0 : (I(t) - this._startValue) / this._valueRange
|
10560 |
)
|
10561 |
);
|
10562 |
}
|
10565 |
return Math.pow(10, this._startValue + e * this._valueRange);
|
10566 |
}
|
10567 |
}
|
10568 |
+
function aa(t) {
|
10569 |
const e = t.ticks;
|
10570 |
if (e.display && t.display) {
|
10571 |
+
const t = pi(e.backdropPadding);
|
10572 |
+
return r(e.font && e.font.size, ne.font.size) + t.height;
|
10573 |
}
|
10574 |
return 0;
|
10575 |
}
|
10576 |
+
function ra(t, e, i, s, n) {
|
10577 |
return t === s || t === n
|
10578 |
? { start: e - i / 2, end: e + i / 2 }
|
10579 |
: t < s || t > n
|
10580 |
? { start: e - i, end: e }
|
10581 |
: { start: e, end: e + i };
|
10582 |
}
|
10583 |
+
function la(t) {
|
10584 |
const e = {
|
10585 |
l: t.left + t._padding.left,
|
10586 |
r: t.right - t._padding.right,
|
10588 |
b: t.bottom - t._padding.bottom,
|
10589 |
},
|
10590 |
i = Object.assign({}, e),
|
|
|
10591 |
n = [],
|
10592 |
+
o = [],
|
10593 |
+
a = t._pointLabels.length,
|
10594 |
+
r = t.options.pointLabels,
|
10595 |
+
l = r.centerPointLabels ? D / a : 0;
|
10596 |
+
for (let u = 0; u < a; u++) {
|
10597 |
+
const a = r.setContext(t.getPointLabelContext(u));
|
10598 |
+
o[u] = a.padding;
|
10599 |
+
const f = t.getPointPosition(u, t.drawingArea + o[u], l),
|
10600 |
+
g = mi(a.font),
|
10601 |
+
p =
|
10602 |
+
((h = t.ctx),
|
10603 |
+
(c = g),
|
10604 |
+
(d = s((d = t._pointLabels[u])) ? d : [d]),
|
10605 |
+
{ w: ye(h, c.string, d), h: d.length * c.lineHeight });
|
10606 |
+
n[u] = p;
|
10607 |
+
const m = K(t.getIndexAngle(u) + l),
|
10608 |
+
b = Math.round($(m));
|
10609 |
+
ha(i, e, m, ra(b, f.x, p.w, 0, 180), ra(b, f.y, p.h, 90, 270));
|
10610 |
+
}
|
10611 |
+
var h, c, d;
|
10612 |
t.setCenterPoint(e.l - i.l, i.r - e.r, e.t - i.t, i.b - e.b),
|
10613 |
(t._pointLabelItems = (function (t, e, i) {
|
10614 |
const s = [],
|
10615 |
n = t._pointLabels.length,
|
10616 |
o = t.options,
|
10617 |
+
a = aa(o) / 2,
|
10618 |
r = t.drawingArea,
|
10619 |
+
l = o.pointLabels.centerPointLabels ? D / n : 0;
|
10620 |
for (let o = 0; o < n; o++) {
|
10621 |
const n = t.getPointPosition(o, r + a + i[o], l),
|
10622 |
+
h = Math.round($(K(n.angle + L))),
|
10623 |
c = e[o],
|
10624 |
+
d = ua(n.y, c.h, h),
|
10625 |
+
u = ca(h),
|
10626 |
+
f = da(n.x, c.w, u);
|
10627 |
s.push({
|
10628 |
x: n.x,
|
10629 |
y: d,
|
10635 |
});
|
10636 |
}
|
10637 |
return s;
|
10638 |
+
})(t, n, o));
|
10639 |
}
|
10640 |
+
function ha(t, e, i, s, n) {
|
10641 |
const o = Math.abs(Math.sin(i)),
|
10642 |
a = Math.abs(Math.cos(i));
|
10643 |
let r = 0,
|
10651 |
: n.end > e.b &&
|
10652 |
((l = (n.end - e.b) / a), (t.b = Math.max(t.b, e.b + l)));
|
10653 |
}
|
10654 |
+
function ca(t) {
|
10655 |
return 0 === t || 180 === t ? "center" : t < 180 ? "left" : "right";
|
10656 |
}
|
10657 |
+
function da(t, e, i) {
|
10658 |
return "right" === i ? (t -= e) : "center" === i && (t -= e / 2), t;
|
10659 |
}
|
10660 |
+
function ua(t, e, i) {
|
10661 |
return (
|
10662 |
90 === i || 270 === i ? (t -= e / 2) : (i > 270 || i < 90) && (t -= e), t
|
10663 |
);
|
10664 |
}
|
10665 |
+
function fa(t, e, i, s) {
|
10666 |
const { ctx: n } = t;
|
10667 |
+
if (i) n.arc(t.xCenter, t.yCenter, e, 0, O);
|
10668 |
else {
|
10669 |
let i = t.getPointPosition(0, e);
|
10670 |
n.moveTo(i.x, i.y);
|
10672 |
(i = t.getPointPosition(o, e)), n.lineTo(i.x, i.y);
|
10673 |
}
|
10674 |
}
|
10675 |
+
(oa.id = "logarithmic"),
|
10676 |
+
(oa.defaults = {
|
10677 |
+
ticks: { callback: Is.formatters.logarithmic, major: { enabled: !0 } },
|
10678 |
});
|
10679 |
+
class ga extends ia {
|
10680 |
constructor(t) {
|
10681 |
super(t),
|
10682 |
(this.xCenter = void 0),
|
10686 |
(this._pointLabelItems = []);
|
10687 |
}
|
10688 |
setDimensions() {
|
10689 |
+
const t = (this._padding = pi(aa(this.options) / 2)),
|
10690 |
e = (this.width = this.maxWidth - t.width),
|
10691 |
i = (this.height = this.maxHeight - t.height);
|
10692 |
(this.xCenter = Math.floor(this.left + e / 2 + t.left)),
|
10695 |
}
|
10696 |
determineDataLimits() {
|
10697 |
const { min: t, max: e } = this.getMinMax(!1);
|
10698 |
+
(this.min = o(t) && !isNaN(t) ? t : 0),
|
10699 |
+
(this.max = o(e) && !isNaN(e) ? e : 0),
|
10700 |
this.handleTickRangeOptions();
|
10701 |
}
|
10702 |
computeTickLimit() {
|
10703 |
+
return Math.ceil(this.drawingArea / aa(this.options));
|
10704 |
}
|
10705 |
generateTickLabels(t) {
|
10706 |
+
ia.prototype.generateTickLabels.call(this, t),
|
10707 |
(this._pointLabels = this.getLabels()
|
10708 |
.map((t, e) => {
|
10709 |
+
const i = c(this.options.pointLabels.callback, [t, e], this);
|
10710 |
return i || 0 === i ? i : "";
|
10711 |
})
|
10712 |
.filter((t, e) => this.chart.getDataVisibility(e)));
|
10714 |
fit() {
|
10715 |
const t = this.options;
|
10716 |
t.display && t.pointLabels.display
|
10717 |
+
? la(this)
|
10718 |
: this.setCenterPoint(0, 0, 0, 0);
|
10719 |
}
|
10720 |
setCenterPoint(t, e, i, s) {
|
10726 |
));
|
10727 |
}
|
10728 |
getIndexAngle(t) {
|
10729 |
+
return K(
|
10730 |
+
t * (O / (this._pointLabels.length || 1)) +
|
10731 |
+
H(this.options.startAngle || 0)
|
10732 |
);
|
10733 |
}
|
10734 |
getDistanceFromCenterForValue(t) {
|
10735 |
+
if (i(t)) return NaN;
|
10736 |
const e = this.drawingArea / (this.max - this.min);
|
10737 |
return this.options.reverse ? (this.max - t) * e : (t - this.min) * e;
|
10738 |
}
|
10739 |
getValueForDistanceFromCenter(t) {
|
10740 |
+
if (i(t)) return NaN;
|
10741 |
const e = t / (this.drawingArea / (this.max - this.min));
|
10742 |
return this.options.reverse ? this.max - e : this.min + e;
|
10743 |
}
|
10746 |
if (t >= 0 && t < e.length) {
|
10747 |
const i = e[t];
|
10748 |
return (function (t, e, i) {
|
10749 |
+
return _i(t, { label: i, index: e, type: "pointLabel" });
|
10750 |
})(this.getContext(), t, i);
|
10751 |
}
|
10752 |
}
|
10753 |
getPointPosition(t, e, i = 0) {
|
10754 |
+
const s = this.getIndexAngle(t) - L + i;
|
10755 |
return {
|
10756 |
x: Math.cos(s) * e + this.xCenter,
|
10757 |
y: Math.sin(s) * e + this.yCenter,
|
10777 |
const i = this.ctx;
|
10778 |
i.save(),
|
10779 |
i.beginPath(),
|
10780 |
+
fa(
|
10781 |
this,
|
10782 |
this.getDistanceFromCenterForValue(this._endValue),
|
10783 |
e,
|
10792 |
drawGrid() {
|
10793 |
const t = this.ctx,
|
10794 |
e = this.options,
|
10795 |
+
{ angleLines: s, grid: n } = e,
|
10796 |
+
o = this._pointLabels.length;
|
10797 |
+
let a, r, l;
|
10798 |
if (
|
10799 |
(e.pointLabels.display &&
|
10800 |
(function (t, e) {
|
10801 |
const {
|
10802 |
+
ctx: s,
|
10803 |
+
options: { pointLabels: n },
|
10804 |
} = t;
|
10805 |
+
for (let o = e - 1; o >= 0; o--) {
|
10806 |
+
const e = n.setContext(t.getPointLabelContext(o)),
|
10807 |
+
a = mi(e.font),
|
10808 |
{
|
10809 |
+
x: r,
|
10810 |
+
y: l,
|
10811 |
+
textAlign: h,
|
10812 |
+
left: c,
|
10813 |
+
top: d,
|
10814 |
+
right: u,
|
10815 |
+
bottom: f,
|
10816 |
+
} = t._pointLabelItems[o],
|
10817 |
+
{ backdropColor: g } = e;
|
10818 |
+
if (!i(g)) {
|
10819 |
+
const t = gi(e.borderRadius),
|
10820 |
+
i = pi(e.backdropPadding);
|
10821 |
+
s.fillStyle = g;
|
10822 |
+
const n = c - i.left,
|
10823 |
+
o = d - i.top,
|
10824 |
+
a = u - c + i.width,
|
10825 |
+
r = f - d + i.height;
|
10826 |
+
Object.values(t).some((t) => 0 !== t)
|
10827 |
+
? (s.beginPath(),
|
10828 |
+
Le(s, { x: n, y: o, w: a, h: r, radius: t }),
|
10829 |
+
s.fill())
|
10830 |
+
: s.fillRect(n, o, a, r);
|
10831 |
}
|
10832 |
+
Ae(s, t._pointLabels[o], r, l + a.lineHeight / 2, a, {
|
10833 |
color: e.color,
|
10834 |
+
textAlign: h,
|
10835 |
textBaseline: "middle",
|
10836 |
});
|
10837 |
}
|
10838 |
+
})(this, o),
|
10839 |
+
n.display &&
|
10840 |
this.ticks.forEach((t, e) => {
|
10841 |
if (0 !== e) {
|
10842 |
+
r = this.getDistanceFromCenterForValue(t.value);
|
10843 |
!(function (t, e, i, s) {
|
10844 |
const n = t.ctx,
|
10845 |
o = e.circular,
|
10854 |
n.setLineDash(e.borderDash),
|
10855 |
(n.lineDashOffset = e.borderDashOffset),
|
10856 |
n.beginPath(),
|
10857 |
+
fa(t, i, o, s),
|
10858 |
n.closePath(),
|
10859 |
n.stroke(),
|
10860 |
n.restore());
|
10861 |
+
})(this, n.setContext(this.getContext(e - 1)), r, o);
|
10862 |
}
|
10863 |
}),
|
10864 |
+
s.display)
|
10865 |
) {
|
10866 |
+
for (t.save(), a = o - 1; a >= 0; a--) {
|
10867 |
+
const i = s.setContext(this.getPointLabelContext(a)),
|
10868 |
+
{ color: n, lineWidth: o } = i;
|
10869 |
+
o &&
|
10870 |
n &&
|
10871 |
+
((t.lineWidth = o),
|
10872 |
(t.strokeStyle = n),
|
10873 |
+
t.setLineDash(i.borderDash),
|
10874 |
+
(t.lineDashOffset = i.borderDashOffset),
|
10875 |
+
(r = this.getDistanceFromCenterForValue(
|
10876 |
e.ticks.reverse ? this.min : this.max
|
10877 |
)),
|
10878 |
+
(l = this.getPointPosition(a, r)),
|
10879 |
t.beginPath(),
|
10880 |
t.moveTo(this.xCenter, this.yCenter),
|
10881 |
+
t.lineTo(l.x, l.y),
|
10882 |
t.stroke());
|
10883 |
}
|
10884 |
t.restore();
|
10900 |
this.ticks.forEach((s, a) => {
|
10901 |
if (0 === a && !e.reverse) return;
|
10902 |
const r = i.setContext(this.getContext(a)),
|
10903 |
+
l = mi(r.font);
|
10904 |
if (
|
10905 |
((n = this.getDistanceFromCenterForValue(this.ticks[a].value)),
|
10906 |
r.showLabelBackdrop)
|
10908 |
(t.font = l.string),
|
10909 |
(o = t.measureText(s.label).width),
|
10910 |
(t.fillStyle = r.backdropColor);
|
10911 |
+
const e = pi(r.backdropPadding);
|
10912 |
t.fillRect(
|
10913 |
-o / 2 - e.left,
|
10914 |
-n - l.size / 2 - e.top,
|
10916 |
l.size + e.height
|
10917 |
);
|
10918 |
}
|
10919 |
+
Ae(t, s.label, 0, -n, l, { color: r.color });
|
10920 |
}),
|
10921 |
t.restore();
|
10922 |
}
|
10923 |
drawTitle() {}
|
10924 |
}
|
10925 |
+
(ga.id = "radialLinear"),
|
10926 |
+
(ga.defaults = {
|
10927 |
display: !0,
|
10928 |
animate: !0,
|
10929 |
position: "chartArea",
|
10935 |
},
|
10936 |
grid: { circular: !1 },
|
10937 |
startAngle: 0,
|
10938 |
+
ticks: { showLabelBackdrop: !0, callback: Is.formatters.numeric },
|
10939 |
pointLabels: {
|
10940 |
backdropColor: void 0,
|
10941 |
backdropPadding: 2,
|
10946 |
centerPointLabels: !1,
|
10947 |
},
|
10948 |
}),
|
10949 |
+
(ga.defaultRoutes = {
|
10950 |
"angleLines.color": "borderColor",
|
10951 |
"pointLabels.color": "color",
|
10952 |
"ticks.color": "color",
|
10953 |
}),
|
10954 |
+
(ga.descriptors = { angleLines: { _fallback: "grid" } });
|
10955 |
+
const pa = {
|
10956 |
millisecond: { common: !0, size: 1, steps: 1e3 },
|
10957 |
second: { common: !0, size: 1e3, steps: 60 },
|
10958 |
minute: { common: !0, size: 6e4, steps: 60 },
|
10963 |
quarter: { common: !1, size: 7884e6, steps: 4 },
|
10964 |
year: { common: !0, size: 3154e7 },
|
10965 |
},
|
10966 |
+
ma = Object.keys(pa);
|
10967 |
+
function ba(t, e) {
|
10968 |
return t - e;
|
10969 |
}
|
10970 |
+
function xa(t, e) {
|
10971 |
+
if (i(e)) return null;
|
10972 |
+
const s = t._adapter,
|
10973 |
+
{ parser: n, round: a, isoWeekday: r } = t._parseOpts;
|
10974 |
+
let l = e;
|
10975 |
return (
|
10976 |
+
"function" == typeof n && (l = n(l)),
|
10977 |
+
o(l) || (l = "string" == typeof n ? s.parse(l, n) : s.parse(l)),
|
10978 |
+
null === l
|
10979 |
? null
|
10980 |
+
: (a &&
|
10981 |
+
(l =
|
10982 |
+
"week" !== a || (!B(r) && !0 !== r)
|
10983 |
+
? s.startOf(l, a)
|
10984 |
+
: s.startOf(l, "isoWeek", r)),
|
10985 |
+
+l)
|
10986 |
);
|
10987 |
}
|
10988 |
+
function _a(t, e, i, s) {
|
10989 |
+
const n = ma.length;
|
10990 |
+
for (let o = ma.indexOf(t); o < n - 1; ++o) {
|
10991 |
+
const t = pa[ma[o]],
|
10992 |
n = t.steps ? t.steps : Number.MAX_SAFE_INTEGER;
|
10993 |
+
if (t.common && Math.ceil((i - e) / (n * t.size)) <= s) return ma[o];
|
10994 |
}
|
10995 |
+
return ma[n - 1];
|
10996 |
}
|
10997 |
+
function ya(t, e, i) {
|
10998 |
if (i) {
|
10999 |
if (i.length) {
|
11000 |
+
const { lo: s, hi: n } = tt(i, e);
|
11001 |
t[i[s] >= e ? i[s] : i[n]] = !0;
|
11002 |
}
|
11003 |
} else t[e] = !0;
|
11004 |
}
|
11005 |
+
function va(t, e, i) {
|
11006 |
const s = [],
|
11007 |
n = {},
|
11008 |
o = e.length;
|
11021 |
})(t, s, n, i)
|
11022 |
: s;
|
11023 |
}
|
11024 |
+
class wa extends $s {
|
11025 |
constructor(t) {
|
11026 |
super(t),
|
11027 |
(this._cache = { data: [], labels: [], all: [] }),
|
11033 |
}
|
11034 |
init(t, e) {
|
11035 |
const i = t.time || (t.time = {}),
|
11036 |
+
s = (this._adapter = new wn._date(t.adapters.date));
|
11037 |
+
s.init(e),
|
11038 |
+
b(i.displayFormats, s.formats()),
|
11039 |
(this._parseOpts = {
|
11040 |
parser: i.parser,
|
11041 |
round: i.round,
|
11045 |
(this._normalized = e.normalized);
|
11046 |
}
|
11047 |
parse(t, e) {
|
11048 |
+
return void 0 === t ? null : xa(this, t);
|
11049 |
}
|
11050 |
beforeLayout() {
|
11051 |
super.beforeLayout(), (this._cache = { data: [], labels: [], all: [] });
|
11057 |
let {
|
11058 |
min: s,
|
11059 |
max: n,
|
11060 |
+
minDefined: a,
|
11061 |
+
maxDefined: r,
|
11062 |
} = this.getUserBounds();
|
11063 |
+
function l(t) {
|
11064 |
+
a || isNaN(t.min) || (s = Math.min(s, t.min)),
|
11065 |
+
r || isNaN(t.max) || (n = Math.max(n, t.max));
|
11066 |
}
|
11067 |
+
(a && r) ||
|
11068 |
+
(l(this._getLabelBounds()),
|
11069 |
("ticks" === t.bounds && "labels" === t.ticks.source) ||
|
11070 |
+
l(this.getMinMax(!1))),
|
11071 |
+
(s = o(s) && !isNaN(s) ? s : +e.startOf(Date.now(), i)),
|
11072 |
+
(n = o(n) && !isNaN(n) ? n : +e.endOf(Date.now(), i) + 1),
|
11073 |
(this.min = Math.min(s, n - 1)),
|
11074 |
(this.max = Math.max(s + 1, n));
|
11075 |
}
|
11092 |
((this.min = this._userMin || s[0]),
|
11093 |
(this.max = this._userMax || s[s.length - 1]));
|
11094 |
const n = this.min,
|
11095 |
+
o = st(s, n, this.max);
|
11096 |
return (
|
11097 |
(this._unit =
|
11098 |
e.unit ||
|
11099 |
(i.autoSkip
|
11100 |
+
? _a(e.minUnit, this.min, this.max, this._getLabelCapacity(n))
|
11101 |
: (function (t, e, i, s, n) {
|
11102 |
+
for (let o = ma.length - 1; o >= ma.indexOf(i); o--) {
|
11103 |
+
const i = ma[o];
|
11104 |
+
if (pa[i].common && t._adapter.diff(n, s, i) >= e - 1)
|
11105 |
return i;
|
11106 |
}
|
11107 |
+
return ma[i ? ma.indexOf(i) : 0];
|
11108 |
})(this, o.length, e.minUnit, this.min, this.max))),
|
11109 |
(this._majorUnit =
|
11110 |
i.major.enabled && "year" !== this._unit
|
11111 |
? (function (t) {
|
11112 |
+
for (let e = ma.indexOf(t) + 1, i = ma.length; e < i; ++e)
|
11113 |
+
if (pa[ma[e]].common) return ma[e];
|
11114 |
})(this._unit)
|
11115 |
: void 0),
|
11116 |
this.initOffsets(s),
|
11117 |
t.reverse && o.reverse(),
|
11118 |
+
va(this, o, this._majorUnit)
|
11119 |
);
|
11120 |
}
|
11121 |
+
afterAutoSkip() {
|
11122 |
+
this.options.offsetAfterAutoskip &&
|
11123 |
+
this.initOffsets(this.ticks.map((t) => +t.value));
|
11124 |
+
}
|
11125 |
initOffsets(t) {
|
11126 |
let e,
|
11127 |
i,
|
11137 |
? i
|
11138 |
: (i - this.getDecimalForValue(t[t.length - 2])) / 2));
|
11139 |
const o = t.length < 3 ? 0.5 : 0.25;
|
11140 |
+
(s = Z(s, 0, o)),
|
11141 |
+
(n = Z(n, 0, o)),
|
11142 |
(this._offsets = { start: s, end: n, factor: 1 / (s + 1 + n) });
|
11143 |
}
|
11144 |
_generate() {
|
11147 |
i = this.max,
|
11148 |
s = this.options,
|
11149 |
n = s.time,
|
11150 |
+
o = n.unit || _a(n.minUnit, e, i, this._getLabelCapacity(e)),
|
11151 |
+
a = r(n.stepSize, 1),
|
11152 |
+
l = "week" === o && n.isoWeekday,
|
11153 |
+
h = B(l) || !0 === l,
|
11154 |
+
c = {};
|
11155 |
+
let d,
|
11156 |
+
u,
|
11157 |
+
f = e;
|
11158 |
if (
|
11159 |
+
(h && (f = +t.startOf(f, "isoWeek", l)),
|
11160 |
+
(f = +t.startOf(f, h ? "day" : o)),
|
11161 |
t.diff(i, e, o) > 1e5 * a)
|
11162 |
)
|
11163 |
throw new Error(
|
11164 |
e + " and " + i + " are too far apart with stepSize of " + a + " " + o
|
11165 |
);
|
11166 |
+
const g = "data" === s.ticks.source && this.getDataTimestamps();
|
11167 |
+
for (d = f, u = 0; d < i; d = +t.add(d, a, o), u++) ya(c, d, g);
|
11168 |
return (
|
11169 |
+
(d !== i && "ticks" !== s.bounds && 1 !== u) || ya(c, d, g),
|
11170 |
+
Object.keys(c)
|
11171 |
.sort((t, e) => t - e)
|
11172 |
.map((t) => +t)
|
11173 |
);
|
11186 |
r = this._majorUnit,
|
11187 |
l = a && o[a],
|
11188 |
h = r && o[r],
|
11189 |
+
d = i[e],
|
11190 |
+
u = r && h && d && d.major,
|
11191 |
+
f = this._adapter.format(t, s || (u ? h : l)),
|
11192 |
+
g = n.ticks.callback;
|
11193 |
+
return g ? c(g, [f, e, i], this) : f;
|
11194 |
}
|
11195 |
generateTickLabels(t) {
|
11196 |
let e, i, s;
|
11213 |
_getLabelSize(t) {
|
11214 |
const e = this.options.ticks,
|
11215 |
i = this.ctx.measureText(t).width,
|
11216 |
+
s = H(this.isHorizontal() ? e.maxRotation : e.minRotation),
|
11217 |
n = Math.cos(s),
|
11218 |
o = Math.sin(s),
|
11219 |
a = this._resolveTickFontOptions(0).size;
|
11223 |
const e = this.options.time,
|
11224 |
i = e.displayFormats,
|
11225 |
s = i[e.unit] || i.millisecond,
|
11226 |
+
n = this._tickFormatFunction(t, 0, va(this, [t], this._majorUnit), s),
|
11227 |
o = this._getLabelSize(n),
|
11228 |
a =
|
11229 |
Math.floor(
|
11248 |
let e, i;
|
11249 |
if (t.length) return t;
|
11250 |
const s = this.getLabels();
|
11251 |
+
for (e = 0, i = s.length; e < i; ++e) t.push(xa(this, s[e]));
|
11252 |
return (this._cache.labels = this._normalized ? t : this.normalize(t));
|
11253 |
}
|
11254 |
normalize(t) {
|
11255 |
+
return rt(t.sort(ba));
|
11256 |
}
|
11257 |
}
|
11258 |
+
function Ma(t, e, i) {
|
11259 |
let s,
|
11260 |
n,
|
11261 |
o,
|
11263 |
r = 0,
|
11264 |
l = t.length - 1;
|
11265 |
i
|
11266 |
+
? (e >= t[r].pos && e <= t[l].pos && ({ lo: r, hi: l } = et(t, "pos", e)),
|
11267 |
({ pos: s, time: o } = t[r]),
|
11268 |
({ pos: n, time: a } = t[l]))
|
11269 |
: (e >= t[r].time &&
|
11270 |
e <= t[l].time &&
|
11271 |
+
({ lo: r, hi: l } = et(t, "time", e)),
|
11272 |
({ time: s, pos: o } = t[r]),
|
11273 |
({ time: n, pos: a } = t[l]));
|
11274 |
const h = n - s;
|
11275 |
return h ? o + ((a - o) * (e - s)) / h : o;
|
11276 |
}
|
11277 |
+
(wa.id = "time"),
|
11278 |
+
(wa.defaults = {
|
11279 |
bounds: "data",
|
11280 |
adapters: {},
|
11281 |
time: {
|
11288 |
},
|
11289 |
ticks: { source: "auto", major: { enabled: !1 } },
|
11290 |
});
|
11291 |
+
class ka extends wa {
|
11292 |
constructor(t) {
|
11293 |
super(t),
|
11294 |
(this._table = []),
|
11298 |
initOffsets() {
|
11299 |
const t = this._getTimestampsForTable(),
|
11300 |
e = (this._table = this.buildLookupTable(t));
|
11301 |
+
(this._minPos = Ma(e, this.min)),
|
11302 |
+
(this._tableRange = Ma(e, this.max) - this._minPos),
|
11303 |
super.initOffsets(t);
|
11304 |
}
|
11305 |
buildLookupTable(t) {
|
11339 |
);
|
11340 |
}
|
11341 |
getDecimalForValue(t) {
|
11342 |
+
return (Ma(this._table, t) - this._minPos) / this._tableRange;
|
11343 |
}
|
11344 |
getValueForPixel(t) {
|
11345 |
const e = this._offsets,
|
11346 |
i = this.getDecimalForPixel(t) / e.factor - e.end;
|
11347 |
+
return Ma(this._table, i * this._tableRange + this._minPos, !0);
|
11348 |
}
|
11349 |
}
|
11350 |
+
(ka.id = "timeseries"), (ka.defaults = wa.defaults);
|
11351 |
+
var Sa = Object.freeze({
|
11352 |
__proto__: null,
|
11353 |
+
CategoryScale: ta,
|
11354 |
+
LinearScale: sa,
|
11355 |
+
LogarithmicScale: oa,
|
11356 |
+
RadialLinearScale: ga,
|
11357 |
+
TimeScale: wa,
|
11358 |
+
TimeSeriesScale: ka,
|
11359 |
});
|
11360 |
return (
|
11361 |
+
bn.register(Bn, Sa, co, Jo),
|
11362 |
+
(bn.helpers = { ...Ti }),
|
11363 |
+
(bn._adapters = wn),
|
11364 |
+
(bn.Animation = xs),
|
11365 |
+
(bn.Animations = ys),
|
11366 |
+
(bn.animator = mt),
|
11367 |
+
(bn.controllers = Us.controllers.items),
|
11368 |
+
(bn.DatasetController = Ls),
|
11369 |
+
(bn.Element = Es),
|
11370 |
+
(bn.elements = co),
|
11371 |
+
(bn.Interaction = Vi),
|
11372 |
+
(bn.layouts = Zi),
|
11373 |
+
(bn.platforms = ps),
|
11374 |
+
(bn.Scale = $s),
|
11375 |
+
(bn.Ticks = Is),
|
11376 |
+
Object.assign(bn, Bn, Sa, co, Jo, ps),
|
11377 |
+
(bn.Chart = bn),
|
11378 |
+
"undefined" != typeof window && (window.Chart = bn),
|
11379 |
+
bn
|
11380 |
);
|
11381 |
});
|
assets/js/jquery-jvectormap-world-merc.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery.fn.vectorMap('addMap', 'world_merc',{"insets": [{"width": 900, "top": 0, "height": 583.0802520919394, "bbox": [{"y": -18449355.69035302, "x": -20004297.151525836}, {"y": 7485321.539093307, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M651.84,359.63l-0.6,-2.05l-1.36,-1.76l-2.31,-0.11l-0.41,0.48l0.2,0.98l-0.54,1.03l-0.71,-0.37l-0.68,0.36l-1.19,-0.37l-0.37,-2.06l-0.81,-1.92l0.39,-1.52l-0.21,-0.46l-1.16,-0.55l0.3,-0.55l1.48,-0.98l0.03,-0.64l-1.56,-1.27l0.56,-1.2l1.6,0.97l1.04,0.16l0.18,1.62l0.33,0.35l5.65,0.65l-0.86,1.73l-1.21,0.35l-0.77,1.56l0.07,0.46l1.37,1.41l0.68,-0.19l0.42,-1.44l1.21,3.96l-0.03,1.26l-0.32,-0.15l-0.41,0.28Z", "name": "Bangladesh"}, "BE": {"path": "M429.3,264.88l1.93,0.28l2.07,-0.74l1.41,1.55l1.25,0.86l-0.23,2.13l-0.68,0.42l-0.18,1.46l-1.63,-1.32l-1.4,0.17l-2.72,-3.22l-1.17,-0.21l-0.2,-0.77l1.57,-0.62Z", "name": "Belgium"}, "BF": {"path": "M421.42,377.38l-0.11,0.96l0.34,1.18l1.4,1.73l0.07,1.11l0.32,0.37l2.56,0.52l-0.04,1.3l-0.38,0.54l-1.07,0.21l-0.73,1.19l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.75l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.73l-0.13,-1.12l0.61,-0.96l0.01,-0.93l1.87,-2.0l0.44,-1.83l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.1l0.55,-0.84l2.2,-1.01l1.15,-0.31l0.72,0.46l1.13,-0.01Z", "name": "Burkina Faso"}, "BG": {"path": "M491.72,293.09l-0.93,1.06l-0.91,2.45l0.52,1.52l-1.65,-0.27l-2.55,1.06l-0.27,1.69l-1.79,0.25l-2.03,-1.11l-1.92,0.88l-1.4,-0.07l-0.15,-1.87l-1.09,-1.09l0.34,-1.71l0.91,-1.02l0.01,-0.52l-1.15,-1.41l-0.06,-1.14l0.44,0.87l0.46,0.21l0.87,-0.23l1.91,0.53l3.68,0.18l1.44,-0.92l2.7,-0.74l1.67,1.16l0.95,0.26Z", "name": "Bulgaria"}, "BA": {"path": "M463.49,287.91l2.09,0.57l1.72,-0.03l1.56,0.78l-0.4,0.99l1.14,1.61l-0.27,1.19l-1.82,1.31l-0.37,1.54l-1.65,-0.96l-0.89,-1.36l-2.11,-2.07l-1.65,-2.57l0.25,-0.7l0.45,0.41l0.59,-0.06l0.43,-0.59l0.92,-0.06Z", "name": "Bosnia and Herz."}, "BN": {"path": "M707.48,403.47l0.69,-0.65l1.41,-0.91l-0.15,1.64l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z", "name": "Brunei"}, "BO": {"path": "M263.83,471.11l-3.09,-0.24l-0.38,0.24l-0.7,1.56l-1.31,-1.57l-3.28,-0.66l-2.38,2.47l-1.3,0.27l-0.88,-3.36l-1.31,-2.93l0.74,-2.43l-0.12,-0.42l-1.2,-1.03l-0.37,-1.92l-1.09,-1.59l1.46,-2.61l-0.97,-2.36l0.48,-1.07l-0.35,-0.74l0.91,-1.33l0.16,-3.89l0.5,-1.18l-1.81,-3.45l2.46,0.08l0.8,-0.85l3.4,-1.92l2.66,-0.35l-0.19,1.39l0.3,1.07l-0.05,1.98l2.72,2.29l2.88,0.49l0.89,0.87l1.79,0.59l0.98,0.71l1.71,0.05l1.17,0.61l0.6,2.74l-0.7,0.54l0.96,3.03l0.37,0.28l4.3,0.1l-0.25,1.22l0.27,1.03l1.43,0.92l0.5,1.38l-0.41,1.9l-0.65,1.11l0.13,1.37l-2.69,-1.68l-2.4,-0.03l-4.36,0.77l-1.49,2.56l-0.1,1.55l-0.75,2.44Z", "name": "Bolivia"}, "JP": {"path": "M781.1,291.58l1.81,0.77l1.63,-1.08l0.4,2.83l-3.6,1.02l-1.98,3.05l-3.61,-2.12l-0.58,0.21l-1.27,3.44l-2.14,0.04l-0.3,-2.88l1.09,-2.32l2.44,-0.17l0.37,-0.34l1.26,-6.78l2.45,3.07l2.03,1.27ZM773.56,314.42l-0.92,2.42l0.38,1.64l-1.15,1.91l-3.02,1.35l-4.59,0.3l-3.33,3.22l-1.25,-0.86l-0.09,-2.06l-0.46,-0.38l-4.35,0.67l-3.0,1.42l-2.84,0.06l-0.37,0.26l0.11,0.44l2.34,2.04l-1.55,4.67l-1.25,0.95l-0.8,-0.75l0.56,-2.43l-0.2,-0.44l-1.47,-0.8l-0.77,-1.54l2.14,-0.91l1.27,-1.83l2.45,-1.53l1.83,-2.06l4.77,-0.88l2.6,0.61l0.45,-0.22l2.39,-5.05l1.27,1.14l0.53,0.01l5.1,-4.39l1.68,-4.08l-0.39,-3.75l0.92,-1.82l2.11,-0.49l1.24,4.16l-0.07,2.45l-2.25,3.13l-0.03,3.43ZM757.77,324.02l0.2,0.64l-1.01,1.31l-1.17,-0.72l-1.28,0.7l-0.69,1.54l-1.01,-0.53l0.01,-1.04l1.14,-1.49l1.58,0.15l0.85,-1.05l1.38,0.49Z", "name": "Japan"}, "BI": {"path": "M495.45,425.39l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.37Z", "name": "Burundi"}, "BJ": {"path": "M429.57,385.57l-0.05,0.81l0.5,1.35l-0.42,0.87l0.17,0.79l-1.82,2.14l-0.57,1.77l-0.08,5.44l-1.41,0.2l-0.48,-1.36l0.11,-5.73l-0.52,-0.7l-0.2,-1.35l-1.48,-1.49l0.22,-0.91l0.89,-0.43l0.42,-0.93l1.27,-0.36l1.22,-1.35l0.61,-0.0l1.62,1.25Z", "name": "Benin"}, "BT": {"path": "M650.32,342.67l0.85,0.75l-0.12,1.18l-3.76,-0.12l-1.57,0.41l-1.93,-0.91l1.49,-2.09l1.12,-0.6l1.62,0.6l1.33,0.09l0.98,0.68Z", "name": "Bhutan"}, "JM": {"path": "M228.38,368.9l-0.8,0.41l-2.27,-1.09l0.84,-0.25l2.14,0.31l1.18,0.59l-1.09,0.03Z", "name": "Jamaica"}, "BW": {"path": "M483.92,460.24l2.27,4.08l2.83,2.92l0.96,0.32l0.77,2.5l2.13,0.63l1.04,0.8l-3.01,1.7l-2.32,2.09l-1.54,2.79l-1.52,0.46l-0.64,2.01l-1.34,0.54l-1.84,-0.12l-1.21,-0.77l-1.36,-0.31l-1.22,0.64l-0.75,1.42l-2.31,1.98l-1.39,0.22l-0.36,-0.63l0.16,-1.82l-1.48,-2.63l-0.62,-0.44l-0.0,-7.35l2.08,-0.08l0.38,-0.4l0.07,-9.12l1.56,-0.08l3.63,-0.87l0.8,0.91l0.52,0.07l1.5,-0.97l2.2,-0.5Z", "name": "Botswana"}, "BR": {"path": "M259.98,404.95l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.64l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.46l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.73l2.12,0.12l0.71,0.62l1.21,4.52l-0.95,4.0l-4.72,5.09l-1.64,2.95l-1.72,2.07l-0.8,0.3l-0.72,2.05l0.18,4.81l-0.94,5.62l-0.81,1.15l-0.43,3.44l-2.55,3.58l-0.4,2.59l-1.86,1.08l-0.67,1.57l-2.54,0.01l-3.94,1.05l-1.83,1.24l-2.87,0.85l-3.03,2.27l-2.2,2.92l-0.36,2.08l0.4,1.64l-0.45,2.73l-0.52,1.26l-1.77,1.62l-2.75,5.05l-3.83,3.63l-1.23,2.92l-1.18,1.22l-0.37,-0.92l0.96,-1.23l0.01,-0.48l-1.52,-2.09l-4.56,-3.52l-1.03,-0.01l-2.38,-2.13l-0.85,0.0l5.38,-5.77l3.77,-2.69l0.21,-2.55l-1.34,-1.86l-0.92,0.07l0.59,-2.44l0.01,-1.59l-1.11,-0.85l-1.75,0.31l-0.44,-3.22l-0.52,-0.97l-1.88,-0.9l-1.24,0.48l-2.17,-0.43l0.15,-3.31l-0.63,-1.37l0.67,-0.74l-0.22,-1.37l0.66,-1.16l0.44,-2.08l-0.61,-1.86l-1.4,-0.87l-0.2,-0.77l0.34,-1.41l-0.38,-0.49l-4.52,-0.1l-0.72,-2.27l0.59,-0.42l-0.03,-1.12l-0.5,-0.87l-0.32,-1.71l-1.45,-0.76l-1.63,-0.02l-1.05,-0.73l-1.6,-0.48l-1.13,-1.0l-2.69,-0.41l-2.47,-2.08l0.13,-4.38l-0.45,-0.45l-3.46,0.5l-3.44,1.95l-0.6,0.74l-2.89,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.54l-0.64,-0.34l-1.94,1.42l-1.87,-0.06l-0.83,-1.19l-1.38,-0.27l0.21,-1.01l-1.35,-1.5l-0.88,-1.92l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.83l-1.83,-0.19l-0.36,-3.22Z", "name": "Brazil"}, "BS": {"path": "M227.69,345.88l0.0,-0.01l0.0,0.0l-0.0,0.01ZM226.4,353.1l-0.48,-1.18l-0.85,-0.78l0.36,-1.17l0.95,2.03l0.01,1.1ZM225.65,345.38l-1.96,0.32l-0.04,-0.26l0.74,-0.14l1.26,0.08Z", "name": "Bahamas"}, "BY": {"path": "M493.82,245.43l0.3,0.93l0.53,0.25l1.16,-0.47l2.08,0.9l0.2,1.73l-0.48,1.43l1.57,2.82l0.93,0.75l0.13,0.97l1.58,0.7l0.48,0.74l-0.6,0.57l-1.85,-0.13l-0.76,0.48l-0.12,0.47l1.08,3.5l-1.96,0.33l-0.87,1.12l-0.12,1.49l-0.67,-0.22l-2.03,0.17l-0.52,-0.75l-0.57,-0.09l-0.72,0.54l-0.9,-0.5l-1.91,-0.08l-2.74,-0.95l-2.61,-0.34l-2.01,0.09l-1.52,1.11l-0.65,0.08l-0.07,-1.5l-0.64,-1.57l1.4,-1.01l0.01,-1.65l-0.7,-1.69l-0.08,-1.37l2.2,-0.03l2.72,-1.61l0.73,-2.54l2.1,-1.69l-0.2,-1.69l3.82,-2.26l2.27,0.97Z", "name": "Belarus"}, "BZ": {"path": "M198.03,374.09l0.1,-4.57l0.69,-0.06l0.74,-1.32l0.34,0.28l-0.4,1.33l0.17,0.59l-0.34,2.3l-1.3,1.44Z", "name": "Belize"}, "RU": {"path": "M491.5,228.55l2.65,-2.55l-0.01,-0.58l-2.35,-2.15l7.46,-9.43l1.0,-2.89l-0.09,-0.41l-3.55,-3.64l0.93,-3.78l-2.18,-4.19l1.62,-5.27l-2.85,-6.95l2.24,-4.74l-0.06,-0.43l-3.73,-4.33l0.33,-4.4l1.87,-0.61l4.26,-2.85l2.35,-2.28l3.83,4.05l6.96,1.77l9.34,7.63l1.83,2.99l0.16,4.03l-2.62,3.11l-3.84,1.55l-11.03,-4.69l-2.16,0.81l-0.14,0.63l3.99,4.45l0.31,8.71l5.34,3.55l0.64,-0.27l0.32,-2.78l-1.43,-2.53l1.23,-1.72l5.74,3.47l0.43,-0.01l2.11,-1.42l0.15,-0.48l-1.59,-4.12l5.51,-5.69l1.99,0.31l2.25,2.09l0.65,-0.16l1.46,-4.3l-2.03,-4.0l1.18,-3.78l-1.5,-3.67l5.98,1.86l1.2,3.14l-2.74,0.7l-0.3,0.39l0.02,3.61l2.07,2.45l0.43,0.11l3.87,-1.38l0.85,-4.25l13.69,-8.82l1.16,0.21l-2.17,3.65l0.26,0.59l3.11,0.7l0.4,-0.14l1.68,-2.16l4.51,-0.18l3.61,-2.68l2.61,3.78l0.67,-0.02l2.85,-4.55l-0.0,-0.43l-2.5,-3.89l1.03,-1.89l7.03,2.08l3.39,2.18l9.05,7.85l0.62,-0.13l1.64,-3.95l-2.48,-3.58l-0.07,-1.39l-0.31,-0.37l-2.62,-0.61l0.73,-3.21l-1.33,-5.76l-0.07,-2.28l4.55,-7.04l1.67,-7.53l1.59,-1.44l6.17,2.09l0.48,4.29l-2.34,6.42l1.55,2.76l0.79,5.18l-0.57,9.85l2.73,4.33l-1.02,4.26l-4.88,9.07l0.23,0.57l2.86,0.92l0.49,-0.22l0.94,-2.13l2.83,-1.82l0.65,-3.1l2.12,-3.05l-1.37,-4.06l1.14,-4.42l-0.31,-0.49l-2.47,-0.52l-0.55,-3.59l1.95,-7.61l-3.13,-6.05l4.31,-5.2l-0.45,-5.83l0.53,-0.08l1.2,4.22l-0.98,7.66l0.21,0.4l2.68,1.42l0.58,-0.43l-1.09,-5.45l3.9,-2.98l4.9,-0.41l4.5,4.5l0.49,0.06l0.17,-0.47l-2.21,-6.76l-0.24,-8.85l4.01,-1.66l5.93,0.39l5.54,-1.19l0.28,-0.55l-1.97,-4.64l2.73,-5.9l2.89,-0.36l4.78,-4.84l6.49,-1.33l1.07,-2.85l6.11,-0.9l1.91,2.17l0.58,0.02l5.5,-5.45l4.43,0.17l0.41,-0.34l0.68,-4.62l2.32,-4.63l5.58,-4.48l3.69,3.23l-3.04,2.5l0.14,0.69l5.42,1.64l0.64,5.13l0.7,0.21l2.17,-2.49l6.98,0.14l5.48,5.07l1.92,3.72l-0.59,4.98l-2.66,2.78l-6.56,5.27l-1.96,2.84l0.18,0.6l3.08,1.27l3.68,2.26l0.45,-0.02l1.76,-1.33l1.14,5.11l0.34,0.31l0.41,-0.22l1.03,-2.14l3.75,-1.32l7.65,1.4l0.57,3.81l0.35,0.34l10.47,1.28l0.45,-0.39l0.13,-6.16l4.81,1.41l3.93,-0.03l3.85,4.37l1.1,5.17l-1.42,3.65l3.15,6.24l4.05,3.25l0.63,-0.2l2.24,-7.6l3.55,3.15l0.44,0.06l4.09,-2.03l4.67,2.34l0.49,-0.1l1.68,-2.01l3.85,1.04l0.49,-0.48l-1.76,-7.3l3.0,-3.3l22.19,5.31l2.15,4.74l6.55,5.95l10.36,-1.34l4.76,1.21l1.93,2.89l-0.3,5.24l3.26,2.4l3.66,-1.4l4.3,-0.18l4.84,1.4l4.5,-0.75l4.22,6.04l0.56,0.1l3.1,-2.22l0.13,-0.49l-1.96,-4.39l0.94,-2.74l7.63,1.95l5.23,-0.41l7.05,3.36l9.59,8.27l6.43,6.42l-0.21,3.79l1.82,1.88l0.45,0.06l0.21,-0.41l-0.52,-4.08l6.13,0.86l4.58,5.48l-2.15,2.3l-3.97,0.6l-0.34,0.39l-0.06,5.64l-0.78,0.94l-1.98,-0.15l-1.91,-1.99l-3.16,-1.63l-0.77,-2.69l-2.54,-0.99l-2.81,0.69l-1.11,-1.73l0.5,-2.12l-0.56,-0.45l-3.0,1.46l-0.2,0.51l1.06,2.68l-1.31,2.33l-3.03,2.42l-3.08,-0.41l-0.37,0.63l2.22,3.03l1.47,4.59l1.16,1.53l0.26,2.04l-0.46,1.02l-4.64,-1.05l-6.95,4.01l-2.18,0.6l-7.62,6.88l-0.81,1.88l-3.15,-3.07l-0.49,-0.06l-6.18,3.75l-0.93,-1.52l-0.61,-0.09l-2.26,2.01l-3.15,-0.64l-0.47,0.3l-0.79,3.18l-3.03,4.85l0.09,1.91l0.26,0.36l2.58,0.95l-0.3,6.03l-1.97,0.14l-0.36,0.29l-1.07,3.72l0.87,1.82l-4.01,2.02l-1.04,4.88l-3.49,0.95l-0.29,0.32l-0.73,4.06l-3.07,3.18l-0.71,-2.11l-2.45,-15.41l1.17,-6.06l2.06,-2.67l0.2,-2.12l3.83,-1.13l4.47,-6.06l4.28,-5.09l4.48,-4.07l2.13,-7.67l-0.45,-0.5l-3.36,0.72l-1.47,4.3l-5.81,5.21l-1.86,-5.8l-0.49,-0.26l-6.68,1.94l-6.27,8.55l-0.01,0.46l1.74,2.54l-8.37,1.57l0.16,-3.05l-0.32,-0.41l-3.89,-0.75l-3.3,2.39l-7.61,-0.82l-8.47,1.58l-17.7,19.78l0.24,0.67l3.73,0.52l1.14,2.49l2.65,1.15l0.46,-0.13l1.47,-1.95l2.35,0.24l3.43,4.41l0.08,3.28l-1.96,4.11l-0.21,4.69l-1.11,6.02l-3.72,5.32l-0.87,2.56l-8.3,10.17l-3.18,1.92l-1.29,0.04l-1.45,-1.54l-0.53,-0.05l-2.48,1.84l0.28,-0.27l0.36,-4.08l-0.6,-2.85l1.77,-1.03l2.89,0.6l0.44,-0.22l1.71,-3.57l0.84,-3.92l0.97,-1.37l1.32,-3.37l-0.48,-0.53l-4.14,1.11l-2.19,1.46l-3.38,-0.0l-1.05,-3.43l-2.97,-2.72l-4.29,-1.26l-1.76,-6.1l-2.63,-6.06l-2.3,-1.58l-3.75,-1.25l-3.46,0.09l-3.19,0.77l-2.26,2.18l0.05,0.61l1.21,0.86l0.03,1.88l-1.34,1.28l-2.26,4.23l-0.03,1.71l-3.16,2.2l-2.8,-1.36l-3.02,0.27l-1.18,-1.17l-1.68,-0.52l-3.94,2.75l-3.21,0.62l-2.27,0.93l-3.04,-0.6l-2.21,0.03l-1.47,-1.89l-2.61,-1.95l-2.65,-0.52l-5.44,1.21l-3.23,-1.49l-0.71,-3.08l-5.2,-1.5l-2.75,-1.64l-0.54,0.13l-2.59,4.17l0.89,2.46l-2.1,2.34l-3.38,-0.91l-2.42,-0.14l-1.85,-1.84l-2.51,-0.06l-2.46,-1.17l-3.86,1.89l-4.72,3.31l-3.26,0.87l-1.17,-2.07l-0.41,-0.2l-2.97,0.48l-1.1,-1.58l-1.62,-0.7l-1.31,-2.32l-1.38,-0.72l-3.71,0.94l-3.3,-2.2l-0.56,0.12l-0.97,1.52l-5.27,-9.77l-3.03,-3.13l0.73,-1.08l-0.04,-0.5l-0.5,-0.06l-6.2,3.97l-1.82,0.18l0.16,-1.83l-0.23,-0.4l-3.22,-1.46l-2.47,0.85l-0.7,-4.0l-0.31,-0.32l-4.5,-0.95l-2.52,1.84l-6.18,1.58l-1.3,1.08l-9.51,1.62l-1.15,1.45l-0.03,0.46l1.56,2.48l-1.98,0.89l-0.21,0.52l0.35,0.85l-2.18,1.8l0.03,0.64l3.81,2.6l-0.44,1.31l-3.21,-0.16l-0.87,1.02l-3.08,-1.9l-3.97,0.08l-2.66,1.61l-8.29,-4.28l-4.1,0.06l-5.42,4.44l-0.37,2.36l-2.0,-1.76l-0.63,0.13l-2.0,4.27l0.61,1.02l-1.32,2.63l0.05,0.44l2.13,2.54l1.95,0.05l1.39,2.15l-0.23,1.74l1.12,0.83l-0.86,1.61l-2.49,0.71l-2.49,3.66l0.0,0.45l2.19,3.19l-0.16,2.44l2.54,3.7l-1.62,1.81l-0.67,-0.14l-1.63,-1.93l-2.29,-0.94l-0.94,-1.47l-2.34,-0.71l-1.48,0.44l-0.42,-0.51l-3.52,-1.68l-5.76,-1.14l-0.47,0.2l-2.87,-2.64l-2.9,-1.36l-1.63,-1.56l1.39,-0.52l2.08,-3.01l-0.04,-0.51l-0.98,-1.01l3.14,-1.27l0.25,-0.4l-0.07,-0.8l-0.5,-0.35l-1.72,0.45l0.04,-0.92l1.06,-0.85l2.31,-0.26l0.34,-0.28l0.4,-1.47l-0.51,-1.94l0.95,-1.86l0.01,-1.32l-0.27,-0.37l-3.69,-1.26l-1.41,0.02l-1.42,-1.68l-0.43,-0.12l-1.78,0.57l-2.78,-1.21l-0.01,-0.71l-0.89,-1.73l-2.01,-0.38l-0.13,-0.77l0.53,-1.15l-1.6,-2.31l-3.58,0.03l-0.92,0.88l-0.42,-0.07l-1.05,-3.54l2.29,-0.07l0.97,-0.92l0.06,-0.51l-0.9,-1.27l-1.4,-0.62l-0.06,-0.85l-0.95,-0.73l-1.43,-2.57l0.49,-1.21l-0.25,-2.07l-2.69,-1.38l-1.22,0.37l-0.45,-0.94l-2.46,-1.05l-0.74,-2.46l-0.21,-2.19l-1.07,-1.09l0.93,-1.49l-0.72,-4.29l1.7,-2.67l-0.24,-0.98ZM749.34,295.94l-0.76,0.56l-0.11,0.15l-0.01,-0.65l0.87,-0.06ZM871.96,154.57l2.04,-0.2l3.29,2.04l-0.13,0.64l-2.37,1.7l-5.54,0.79l-0.34,-1.85l3.05,-3.11ZM797.75,123.25l-2.42,3.18l-3.66,-0.78l-4.39,-3.6l0.47,-2.52l10.01,3.72ZM783.79,118.53l-1.81,6.68l-8.92,-0.26l-4.06,2.13l-4.64,-5.86l1.28,-6.57l3.04,-1.79l6.39,0.44l8.71,5.22ZM778.23,253.99l-0.64,-1.28l0.31,-0.17l0.33,1.45ZM778.36,254.55l0.92,4.28l-0.05,4.08l1.05,4.08l2.23,6.09l-2.91,-0.99l-0.51,0.27l-1.54,5.47l2.42,4.01l-0.04,1.39l-1.22,-1.41l-0.65,0.06l-1.07,1.83l-0.29,-1.88l0.28,-3.61l-0.28,-4.01l0.58,-2.92l0.11,-5.24l-1.46,-4.02l0.21,-5.38l2.23,-2.09ZM780.09,139.86l-3.31,0.05l-5.09,-1.07l2.11,-3.11l2.77,-0.74l3.29,3.15l0.23,1.71ZM683.7,87.54l-13.17,4.38l4.34,-15.76l1.75,-1.29l1.59,0.74l6.17,7.25l-0.68,4.69ZM670.82,80.26l-5.03,1.48l-6.76,-3.64l-4.04,-4.98l-1.9,-10.03l-3.29,-2.93l6.28,-10.21l5.0,-3.39l4.63,7.67l5.72,14.22l-0.6,11.8ZM564.4,160.28l-0.92,0.41l-7.78,-0.94l-0.83,-3.41l-4.32,-2.0l-0.33,-3.85l2.54,-1.96l-0.08,-4.42l4.9,-7.29l-0.16,-0.58l-1.86,-0.88l5.7,-7.68l-0.57,-4.44l5.43,-5.07l8.18,-6.55l8.25,-1.96l4.4,-4.05l4.43,-1.3l1.54,3.81l-1.55,3.04l-16.43,9.84l-7.93,9.27l-7.69,17.13l0.59,6.93l4.49,5.95ZM548.68,56.87l-5.47,3.05l-0.54,2.57l-2.49,2.05l-2.33,-2.98l1.37,-4.49l-0.35,-0.52l-4.3,-0.36l3.7,-2.13l3.34,-0.17l0.47,3.78l0.35,0.35l0.42,-0.25l1.41,-3.62l2.04,-2.24l3.21,2.97l-0.81,1.96ZM477.39,251.71l-4.1,0.06l-2.6,-0.41l0.38,-1.28l3.15,-1.29l3.25,1.22l-0.09,1.7Z", "name": "Russia"}, "RW": {"path": "M497.0,418.15l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z", "name": "Rwanda"}, "RS": {"path": "M469.33,288.43l0.49,-1.17l-1.2,-1.97l1.47,-0.73l1.3,0.13l1.18,1.23l0.45,1.29l1.35,0.74l0.34,1.53l1.46,1.02l0.76,-0.3l0.25,0.82l-0.51,0.87l0.22,1.27l1.08,1.41l-0.8,0.94l-0.38,1.72l-1.22,0.09l0.27,-0.81l-2.46,-2.38l-0.93,0.06l-0.47,1.05l-2.15,-1.58l0.57,-1.85l-1.13,-1.51l0.53,-1.32l-0.49,-0.55Z", "name": "Serbia"}, "TL": {"path": "M734.55,437.87l-0.09,-0.98l4.5,-0.86l-2.82,1.28l-1.59,0.55Z", "name": "Timor-Leste"}, "TM": {"path": "M553.03,299.38l-0.05,0.44l-0.1,-0.29l0.15,-0.15ZM555.85,298.15l0.46,-0.11l1.47,0.82l2.08,2.72l4.07,-0.21l0.38,-0.49l-0.34,-1.39l1.95,-1.07l1.9,-1.78l2.93,1.56l0.41,2.75l1.21,0.76l2.57,-0.15l0.62,0.45l1.32,3.46l4.54,3.8l2.67,1.6l3.07,1.26l-0.04,1.22l-1.32,-0.81l-0.61,0.19l-0.32,0.93l-2.19,0.86l-0.47,2.34l-1.21,0.81l-1.91,0.45l-0.73,1.44l-1.54,0.33l-2.22,-1.01l-0.2,-2.37l-0.37,-0.37l-1.72,-0.1l-2.76,-2.67l-2.14,-0.44l-2.84,-1.62l-1.78,-0.29l-1.25,0.58l-1.56,-0.09l-2.01,1.85l-1.69,0.47l-0.37,-1.75l0.36,-3.28l-0.2,-0.39l-1.68,-0.94l0.55,-1.92l-0.34,-0.51l-1.23,-0.14l0.38,-1.9l2.23,0.64l2.2,-1.06l0.12,-0.63l-1.77,-1.94l-0.69,-1.85Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.8,305.02l-0.08,0.09l-2.5,-0.5l-0.48,0.34l-0.24,1.88l0.43,0.45l2.63,-0.24l3.18,1.04l4.38,-0.45l0.56,2.63l0.54,0.29l0.66,-0.26l1.12,0.54l0.21,2.4l-3.76,-0.23l-1.81,1.45l-1.74,0.8l-0.62,-0.64l0.22,-2.47l-0.65,-0.49l-0.04,-1.02l-1.36,-0.73l-0.48,0.07l-1.08,1.11l-0.54,1.62l-1.3,-0.06l-0.96,1.26l-0.91,-0.37l-1.63,0.91l-0.24,-0.12l1.28,-3.1l-0.54,-2.38l-1.69,-0.89l0.36,-0.8l2.18,-0.05l1.19,-1.8l0.76,-1.99l2.44,-0.56l-0.28,1.13l0.36,0.91l0.43,0.25Z", "name": "Tajikistan"}, "RO": {"path": "M487.52,276.99l0.59,0.28l2.89,4.68l-0.18,3.12l0.45,1.64l1.3,0.9l1.37,-0.47l0.76,0.41l0.03,0.46l-0.83,0.52l-0.57,-0.25l-0.55,0.3l-0.63,3.8l-0.98,-0.24l-2.1,-1.28l-2.95,0.81l-1.25,0.86l-3.49,-0.17l-1.88,-0.53l-0.87,0.17l-0.86,-1.54l0.34,-0.35l-0.05,-0.61l-0.62,-0.44l-0.51,0.04l-0.55,0.55l-1.04,-0.73l-0.17,-1.29l-1.58,-1.05l-0.34,-1.15l-0.92,-0.96l1.63,-0.65l2.66,-4.89l2.39,-1.44l2.93,0.39l1.06,0.83l0.47,0.02l0.79,-0.53l1.77,-0.34l0.76,-0.87l0.76,0.0Z", "name": "Romania"}, "GW": {"path": "M386.23,383.41l-0.29,0.84l0.15,0.61l-2.21,0.6l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.07l-0.66,-0.5l2.41,-0.49l4.13,0.1Z", "name": "Guinea-Bissau"}, "GT": {"path": "M195.08,379.54l-2.48,-0.37l-1.03,-0.46l-1.14,-0.9l0.3,-1.01l-0.24,-0.68l0.96,-1.69l2.98,-0.01l0.4,-0.37l-0.19,-1.29l-1.68,-1.44l0.53,-0.4l0.0,-1.08l3.85,0.02l-0.21,4.61l0.4,0.43l1.48,0.38l-1.5,1.01l-0.34,0.71l0.12,0.57l-2.2,1.98Z", "name": "Guatemala"}, "GR": {"path": "M487.09,300.31l-0.62,1.67l-0.37,0.23l-2.84,-0.38l-3.03,0.86l-0.18,0.66l1.34,1.43l-0.67,0.28l-1.12,0.0l-1.2,-1.54l-0.65,0.03l-0.52,1.05l0.56,1.95l1.06,1.34l-0.61,0.46l-0.05,0.59l2.53,2.34l0.02,1.02l-1.77,-0.64l-0.5,0.54l0.53,1.16l-1.1,0.23l-0.3,0.52l0.77,2.24l-0.99,0.02l-1.84,-1.22l-1.37,-4.59l-2.21,-3.25l-0.12,-0.67l1.06,-1.44l0.2,-1.06l0.84,-0.7l0.03,-0.55l1.33,-0.24l1.01,-0.71l1.21,0.06l0.67,-0.62l2.26,-0.01l1.8,-0.83l1.85,1.11l2.28,-0.31l0.35,-0.39l0.01,-0.9l0.35,0.26ZM480.49,319.61l0.67,0.51l-0.8,-0.16l0.13,-0.35ZM482.3,320.35l2.74,0.05l0.29,0.4l-2.04,0.15l-0.32,-0.47l-0.67,-0.13Z", "name": "Greece"}, "GQ": {"path": "M448.79,409.52l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z", "name": "Eq. Guinea"}, "GY": {"path": "M277.42,399.96l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.01l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.91l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.5l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.87Z", "name": "Guyana"}, "GE": {"path": "M521.61,293.9l5.38,1.03l3.26,1.57l0.84,0.7l1.39,-0.49l2.05,0.63l0.69,1.25l1.15,0.65l-0.2,0.63l1.05,1.54l-1.06,-0.15l-1.81,-0.93l-0.97,0.52l-3.21,0.48l-2.28,-1.55l-2.37,0.06l0.23,-1.11l-0.75,-2.51l-1.45,-1.26l-1.43,-0.44l-0.53,-0.61Z", "name": "Georgia"}, "GB": {"path": "M412.72,233.04l-2.32,4.44l0.45,0.57l2.5,-0.63l2.22,0.02l-0.56,3.24l-2.22,4.0l0.31,0.59l2.36,0.26l2.34,5.43l1.76,0.84l2.21,6.35l2.96,0.93l-0.25,2.13l-1.17,1.09l-0.09,0.47l0.87,1.82l-1.92,1.78l-3.29,-0.02l-4.09,1.04l-1.02,-0.68l-0.52,0.07l-1.5,1.67l-2.09,-0.4l-1.88,1.4l-0.67,-0.39l3.29,-3.71l2.15,-0.83l0.25,-0.41l-0.33,-0.35l-3.72,-0.64l-0.47,-1.06l2.27,-1.1l0.17,-0.57l-1.29,-2.09l0.39,-2.22l3.35,0.34l0.44,-0.34l0.37,-2.46l-1.77,-2.98l-3.1,-0.89l-0.43,-0.84l0.8,-2.18l-0.82,-1.22l-0.67,0.01l-0.66,1.02l-0.1,-3.02l-1.24,-2.37l0.87,-4.6l1.78,-3.54l1.83,0.33l2.26,-0.3ZM406.3,251.21l-1.06,2.32l-1.53,-0.71l-1.21,0.0l0.4,-1.97l-0.42,-1.89l1.46,-0.13l2.36,2.36Z", "name": "United Kingdom"}, "GA": {"path": "M453.24,409.42l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.98l-3.94,-4.31l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z", "name": "Gabon"}, "GN": {"path": "M391.8,383.91l0.47,0.81l1.11,-0.32l0.98,0.71l1.07,0.2l2.26,-1.23l0.63,0.44l1.13,1.58l-0.48,1.41l0.8,0.3l-0.08,0.48l0.46,0.69l-0.35,1.37l1.05,2.63l-1.0,0.69l0.03,1.42l-0.72,-0.06l-1.07,1.01l-0.24,-0.27l0.07,-1.11l-1.05,-1.55l-0.49,-0.14l-1.3,0.36l-0.35,-2.01l-1.6,-2.19l-2.0,-0.0l-1.31,0.54l-1.95,2.19l-1.86,-2.2l-1.2,-0.78l-0.3,-1.12l-0.8,-0.86l0.65,-0.73l0.81,-0.03l1.64,-0.8l0.23,-1.88l2.67,0.64l0.89,-0.31l1.21,0.15Z", "name": "Guinea"}, "GM": {"path": "M379.31,381.18l0.1,-0.36l2.43,-0.07l0.74,-0.62l0.5,-0.03l0.83,0.53l-1.08,-0.33l-1.87,0.91l-1.65,-0.04ZM384.0,380.68l0.95,0.06l0.76,-0.23l-0.59,0.32l-1.11,-0.15Z", "name": "Gambia"}, "GL": {"path": "M352.9,3.19l15.35,16.28l-4.35,6.99l-9.4,0.81l-13.48,1.81l-0.32,0.54l1.26,3.26l0.46,0.25l8.67,-1.96l7.39,6.05l0.55,-0.04l4.4,-4.95l1.83,5.61l-2.72,9.68l0.18,0.45l0.48,-0.06l6.34,-6.15l11.94,-6.62l7.14,3.24l1.33,6.85l-10.07,11.17l-1.42,3.42l-7.83,2.5l-0.28,0.42l0.35,0.36l5.33,0.65l-2.8,9.83l-2.03,8.69l0.08,13.63l2.84,7.11l-3.6,0.49l-4.12,3.47l-0.05,0.56l4.54,5.53l0.56,8.17l-2.39,0.81l-0.24,0.53l3.05,7.7l-5.05,0.6l-0.27,0.64l2.78,3.54l-0.72,2.75l-3.27,1.26l-3.42,0.02l-0.35,0.59l3.09,5.7l0.03,2.82l-4.32,-2.99l-0.57,0.13l-1.29,2.22l0.14,0.54l3.3,2.0l3.18,4.75l0.88,5.79l-3.85,1.25l-4.86,-7.12l-0.48,-0.14l-0.24,0.44l0.83,5.08l-2.81,3.81l0.3,0.64l9.17,0.61l-6.07,5.68l-6.74,5.42l-7.2,2.3l-2.98,0.14l-2.66,2.67l-3.44,6.75l-5.23,4.25l-1.73,0.27l-7.11,3.08l-2.15,3.69l-0.09,4.21l-1.22,3.58l-4.03,4.36l0.89,4.48l-2.31,8.95l-3.05,0.26l-3.56,-4.0l-5.12,-0.16l-2.26,-2.64l-1.69,-5.21l-4.31,-6.82l-1.24,-3.62l-0.4,-5.4l-3.39,-5.47l0.87,-4.47l-1.62,-2.41l2.37,-7.41l3.81,-2.67l1.01,-3.01l0.52,-5.6l-0.22,-0.39l-0.45,0.06l-4.16,3.58l-1.99,0.9l-2.73,-2.07l-0.16,-4.72l0.9,-3.66l1.94,-0.09l5.03,1.98l0.47,-0.14l-0.03,-0.49l-6.54,-7.53l-0.47,-0.11l-2.25,1.0l-1.7,-1.6l2.69,-7.67l-1.51,-3.12l-4.99,-15.74l-3.17,-3.76l-0.11,-4.29l-6.93,-6.07l-5.4,-0.76l-12.62,1.16l-2.75,-3.16l-4.1,-6.46l6.13,-3.31l4.96,-0.6l0.35,-0.37l-0.29,-0.42l-10.63,-2.99l-5.42,-4.66l0.32,-4.37l9.32,-6.03l9.34,-6.65l0.97,-5.04l-0.15,-0.39l-6.52,-4.97l2.06,-5.6l8.57,-10.89l3.56,-1.73l0.22,-0.41l-1.01,-7.43l5.7,-4.5l7.58,-2.82l7.37,-0.16l2.62,5.4l0.69,0.04l6.35,-9.67l5.63,6.55l3.58,1.5l5.14,5.66l0.54,0.05l0.1,-0.53l-5.89,-9.52l0.33,-7.89l8.21,-11.86l8.55,0.93l0.41,-0.25l3.12,-7.8l8.58,-2.09l19.79,2.78Z", "name": "Greenland"}, "GH": {"path": "M420.53,387.35l-0.01,0.72l0.96,1.2l0.24,3.75l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.22l-6.97,2.85l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.66l1.07,-2.33l-0.96,-6.5l5.01,0.07l0.94,-0.39l0.61,0.11Z", "name": "Ghana"}, "OM": {"path": "M568.09,360.37l-0.91,1.71l-1.22,0.04l-0.59,0.78l-0.41,1.53l0.26,1.63l-1.16,0.05l-1.56,0.99l-0.76,1.78l-1.62,0.05l-0.98,0.66l-0.17,1.17l-0.89,0.53l-1.49,-0.18l-2.4,0.95l-2.48,-5.51l7.35,-2.77l1.67,-5.36l-1.12,-2.14l0.05,-0.87l0.67,-1.04l0.07,-1.08l0.91,-0.43l-0.05,-2.14l0.7,-0.01l1.01,1.68l1.51,1.12l3.3,0.87l1.73,2.37l0.81,0.38l-1.23,2.44l-0.99,0.81ZM561.83,347.23l-0.0,-0.01l0.01,-0.01l-0.0,0.02Z", "name": "Oman"}, "TN": {"path": "M448.18,315.32l-1.08,1.46l-0.02,1.43l0.84,0.93l-0.29,2.3l-1.65,1.83l0.48,1.65l1.41,0.33l0.53,1.2l0.9,0.55l-0.11,1.83l-3.54,2.81l-0.09,2.52l-0.58,0.32l-0.96,-4.72l-1.54,-1.32l-0.15,-0.82l-1.93,-1.68l-0.19,-1.93l1.52,-1.74l0.59,-2.52l-0.38,-3.0l0.43,-1.35l2.45,-1.14l1.29,0.28l-0.06,1.25l0.59,0.37l1.54,-0.84Z", "name": "Tunisia"}, "JO": {"path": "M518.65,329.54l-5.15,1.67l-0.19,0.64l2.19,2.56l-0.58,0.44l-0.33,0.78l-1.71,0.36l-1.71,1.89l-2.34,-0.38l1.21,-4.6l0.56,-4.33l2.81,0.99l4.45,-2.88l0.8,2.87Z", "name": "Jordan"}, "HR": {"path": "M455.59,286.98l1.42,0.1l0.57,-0.46l0.74,0.44l0.98,0.07l0.43,-0.4l-0.01,-0.73l0.86,-0.57l0.21,-1.25l1.62,-0.78l2.55,1.93l2.07,0.69l0.88,-0.35l1.09,1.85l-0.56,0.77l-1.05,-0.63l-1.67,0.05l-2.1,-0.57l-1.3,0.07l-0.58,0.54l-0.57,-0.52l-0.65,0.16l-0.47,1.84l1.79,2.75l2.11,2.07l0.81,1.23l-1.27,-1.06l-2.2,-0.99l-1.73,-2.1l0.2,-0.63l-1.06,-1.38l-0.31,-1.43l-1.61,-0.56l-0.49,0.2l-0.45,0.89l-0.26,-1.24Z", "name": "Croatia"}, "HT": {"path": "M238.65,368.15l-1.58,-0.17l-1.19,0.44l-0.91,-0.56l0.06,-0.21l3.62,0.5ZM239.22,368.07l0.82,-0.54l0.06,-0.62l-1.02,-1.03l0.02,-0.84l-0.3,-0.39l-0.93,-0.35l3.16,0.46l0.02,1.9l-0.48,0.35l-0.07,0.58l0.54,0.74l-1.81,-0.26Z", "name": "Haiti"}, "HU": {"path": "M462.05,281.37l0.68,-1.93l-0.16,-0.54l0.71,-0.0l0.39,-0.35l0.1,-0.84l1.72,1.0l2.35,-0.43l0.43,-0.77l3.49,-0.92l0.69,-0.91l0.54,-0.15l2.55,1.09l0.69,-0.26l1.03,0.76l0.1,0.55l-1.45,0.83l-2.6,4.82l-1.79,0.61l-1.69,-0.11l-2.72,1.41l-1.83,-0.61l-2.55,-1.92l-0.7,-1.3Z", "name": "Hungary"}, "HN": {"path": "M199.6,379.29l-1.71,-1.22l0.07,-0.96l3.04,-2.17l2.37,0.29l1.27,-0.09l1.1,-0.53l1.3,0.28l1.14,-0.26l1.37,0.37l2.25,1.39l-2.37,0.95l-1.23,-0.4l-0.88,1.31l-1.28,1.0l-0.43,-0.3l-0.55,0.08l-0.42,0.53l-0.96,0.05l-0.36,0.41l0.04,0.89l-0.52,0.6l-0.3,0.04l-0.3,-0.56l-0.66,-0.32l0.12,-0.68l-0.48,-0.66l-0.63,-0.25l-0.97,0.2Z", "name": "Honduras"}, "PR": {"path": "M256.17,368.34l-0.27,0.28l-2.83,0.06l-0.07,-0.57l1.95,-0.1l1.23,0.34Z", "name": "Puerto Rico"}, "PS": {"path": "M509.06,331.4l0.27,-0.17l-0.04,0.09l-0.23,0.08ZM509.37,331.14l-0.03,-0.63l-0.35,-0.18l0.32,-1.21l0.24,0.11l-0.19,1.91Z", "name": "Palestine"}, "PT": {"path": "M401.85,314.47l-0.65,0.52l-1.11,-0.37l-0.93,0.18l0.29,-1.97l-0.24,-1.95l-1.24,-0.59l-0.47,-0.95l0.18,-1.87l1.01,-1.29l0.69,-3.25l-0.04,-1.52l-0.59,-2.16l1.29,-0.96l0.85,1.5l3.09,-0.33l0.49,1.17l-1.07,1.02l-0.03,2.43l-0.41,0.6l-0.08,1.25l-0.8,0.2l-0.26,0.57l0.93,1.79l-0.64,1.95l0.78,1.16l-1.12,1.72l0.08,1.13Z", "name": "Portugal"}, "PY": {"path": "M274.9,466.41l0.74,1.55l-0.16,3.55l0.32,0.41l2.64,0.52l1.11,-0.48l1.4,0.6l0.36,0.62l0.53,3.53l1.27,0.41l0.98,-0.39l0.52,0.28l-0.0,1.23l-1.21,5.54l-2.09,1.99l-1.8,0.41l-4.72,-1.03l2.21,-3.81l-0.32,-1.54l-2.77,-1.32l-3.03,-2.01l-2.07,-0.45l-4.34,-4.19l0.91,-2.99l0.08,-1.45l1.07,-2.09l4.13,-0.73l2.18,0.04l2.06,1.2l0.03,0.61Z", "name": "Paraguay"}, "PA": {"path": "M213.79,393.56l0.26,-1.53l-0.36,-0.26l-0.01,-0.5l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.5l1.38,-0.24l2.51,-1.12l0.86,-0.72l3.45,0.85l1.4,1.19l0.41,1.75l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.47Z", "name": "Panama"}, "PG": {"path": "M808.58,428.76l2.54,2.57l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.17ZM801.41,422.94l0.51,0.29l0.26,0.27l-0.49,-0.36l-0.28,-0.21ZM803.17,424.48l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,428.31l0.52,0.75l1.43,-0.19l2.27,-1.82l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,433.47l2.31,1.81l1.59,2.62l1.34,0.14l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.66l2.25,1.06l-1.21,0.13l-0.72,-0.64l-4.56,-0.65l-3.22,-2.89l-1.49,-2.35l-3.27,-1.11l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.56l-1.55,0.69l-1.36,-0.4l-2.21,-0.09l-0.08,-15.44l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.5l0.31,0.69l-1.76,0.21l-0.33,0.52l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M244.97,425.11l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.76l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.6l-0.22,1.22l-0.62,0.84l1.04,2.28l1.28,1.44l-0.41,0.85l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.04l0.3,0.4l1.14,0.29l1.31,-0.35l1.9,3.62l-0.48,0.86l-0.17,3.89l-0.94,1.6l0.35,0.76l-0.48,1.08l0.98,2.0l-2.1,3.89l-0.97,0.51l-2.17,-1.31l-0.39,-1.18l-4.95,-2.62l-4.46,-2.82l-1.85,-1.53l-0.91,-1.87l0.3,-0.97l-2.11,-3.36l-4.82,-9.74l-1.04,-1.2l-0.87,-1.95l-3.4,-2.49l0.58,-1.18l-1.13,-2.23l0.66,-1.5l1.45,-1.15l-0.6,0.99l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z", "name": "Peru"}, "PK": {"path": "M615.13,319.81l-1.88,2.0l-2.59,0.42l-3.73,-0.73l-1.6,1.43l-0.09,0.4l1.77,4.7l1.73,1.32l-1.73,1.38l-0.11,2.26l-2.34,2.8l-1.59,2.95l-2.46,2.8l-3.03,-0.07l-2.76,2.96l0.05,0.59l1.51,1.16l0.26,1.98l1.44,1.55l0.37,1.77l-5.02,-0.01l-1.78,1.76l-1.41,-0.53l-0.76,-1.94l-2.27,-2.23l-11.61,0.89l0.72,-2.47l3.43,-1.37l0.25,-0.43l-0.21,-1.29l-1.2,-0.67l-0.28,-2.57l-2.29,-1.2l-1.32,-2.09l2.85,1.0l2.62,-0.4l1.42,0.35l0.77,-0.59l1.71,0.2l3.25,-1.2l0.26,-0.36l0.08,-2.33l1.19,-1.41l1.68,0.0l0.58,-0.87l1.59,-0.32l1.2,0.17l0.98,-0.83l0.01,-1.99l0.94,-1.58l1.48,-0.71l0.19,-0.54l-0.69,-1.39l2.06,-0.12l0.69,-1.09l-0.03,-1.23l1.12,-1.15l-0.18,-1.88l-0.5,-1.14l1.17,-1.09l5.42,-0.99l2.59,-0.89l1.6,1.26l0.97,2.53l3.5,1.06Z", "name": "Pakistan"}, "PH": {"path": "M737.01,393.71l0.39,2.98l-0.44,1.19l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.1l-0.42,0.69l-2.48,-1.23l-0.58,-1.49l0.66,-1.03l-0.1,-0.53l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.81l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.12l1.5,-0.06l0.38,-0.43l-0.09,-1.2l1.21,0.72l0.36,2.03ZM733.59,386.41l0.05,0.76l0.08,0.27l-0.8,-0.42l-0.18,-0.72l0.85,0.12ZM734.08,385.93l-0.12,-1.13l-1.01,-1.29l1.36,0.03l0.53,0.73l0.51,2.06l-1.27,-0.4ZM733.76,387.52l0.39,0.99l-0.32,0.15l-0.07,-1.14ZM724.65,368.03l1.46,0.71l0.72,-0.31l-0.32,1.19l0.79,1.74l-0.57,1.88l-1.53,1.06l-0.39,2.27l0.56,2.06l1.63,0.57l1.16,-0.27l2.72,1.24l-0.19,1.1l0.77,0.85l-0.08,0.37l-1.4,-0.9l-0.88,-1.29l-0.66,0.0l-0.38,0.55l-1.6,-1.32l-2.15,0.36l-0.87,-0.4l0.07,-0.62l0.66,-0.56l-0.01,-0.62l-0.75,-0.6l-0.72,0.44l-0.73,-0.88l-0.39,-2.53l0.32,0.27l0.66,-0.28l0.26,-4.04l0.71,-2.06l1.14,0.0ZM731.03,388.72l-0.88,0.85l-1.19,1.95l-1.05,-1.2l0.93,-1.11l0.32,-1.48l0.52,-0.06l-0.27,1.16l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.86ZM726.83,385.61l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.41l0.02,-2.28ZM724.81,381.88l-0.39,1.29l-1.42,-1.98l1.2,0.05l0.6,0.64ZM716.54,391.7l1.12,-0.97l0.03,-0.03l-0.28,0.38l-0.87,0.63ZM719.21,388.91l0.04,-0.07l0.8,-1.54l0.16,0.76l-1.01,0.85Z", "name": "Philippines"}, "PL": {"path": "M468.45,271.45l-1.1,-1.82l-1.87,-0.39l-0.48,-1.25l-1.72,-0.44l-0.47,0.25l-0.21,0.56l-0.72,-0.43l0.12,-0.82l-0.32,-0.45l-1.74,-0.32l-1.05,-1.13l-0.96,-2.4l0.17,-1.46l-0.62,-2.19l-0.82,-1.37l0.61,-1.22l-0.51,-1.88l1.46,-1.07l6.88,-3.37l2.12,0.62l0.15,0.81l0.38,0.33l5.51,0.54l4.53,-0.06l1.06,0.38l0.5,1.09l0.14,1.93l0.66,1.51l-0.01,1.34l-1.3,0.73l-0.17,0.5l0.74,1.83l0.07,1.86l1.22,3.37l-0.19,0.78l-1.23,0.53l-2.27,3.23l0.24,1.15l-1.99,-1.23l-2.01,0.46l-1.38,-0.32l-1.2,0.67l-1.05,-1.13l-1.17,0.27Z", "name": "Poland"}, "ZM": {"path": "M481.47,443.27l0.39,0.31l2.52,0.15l0.99,1.18l2.01,0.36l1.4,-0.64l0.69,1.18l1.78,0.33l1.84,2.38l2.24,0.19l0.4,-0.43l-0.21,-2.77l-0.62,-0.3l-0.48,0.33l-1.98,-1.18l0.72,-5.32l-0.51,-1.19l0.58,-1.31l3.68,-0.62l0.26,0.64l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.89l-0.88,2.72l0.43,2.1l-0.73,0.88l-0.76,2.39l0.6,0.68l-6.61,1.85l-0.29,0.44l0.19,1.47l-1.69,0.36l-1.43,1.04l-0.38,0.89l-0.87,0.26l-3.48,3.75l-4.15,-0.54l-1.52,-1.01l-1.77,-0.14l-1.82,0.53l-3.04,-3.46l0.11,-7.69l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.84l-0.4,-1.37l0.24,-1.06Z", "name": "Zambia"}, "EH": {"path": "M384.42,359.7l0.26,-0.83l1.06,-1.32l0.8,-3.63l3.38,-2.88l0.69,-1.87l0.06,5.03l-1.98,0.21l-0.94,1.63l0.39,3.66l-3.71,-0.01ZM392.0,347.13l0.72,-1.91l1.77,-0.25l2.09,0.35l0.96,-0.65l1.27,-0.07l-0.0,2.65l-6.8,-0.12Z", "name": "W. Sahara"}, "EE": {"path": "M485.7,228.2l2.62,0.79l2.44,-0.11l0.18,0.41l-1.67,2.62l0.66,4.56l-0.85,1.18l-1.72,-0.01l-3.21,-2.27l-1.85,0.58l0.22,-2.14l-0.62,-0.38l-0.64,0.42l-1.26,-1.35l-0.18,-2.36l2.87,-1.24l3.02,-0.69Z", "name": "Estonia"}, "EG": {"path": "M492.06,333.38l1.47,0.44l2.95,-1.74l2.03,-0.22l1.52,0.32l0.6,1.27l0.7,0.04l0.41,-0.68l1.8,0.61l1.95,0.17l1.04,-0.54l1.43,4.34l-2.03,4.78l-1.66,-1.85l-1.76,-4.05l-0.65,-0.12l-0.35,0.67l1.04,3.03l3.44,7.26l1.77,3.16l2.04,2.76l-0.37,0.54l0.22,2.06l2.73,2.28l-28.43,0.0l0.0,-19.72l-0.73,-2.31l0.6,-1.66l-0.33,-1.32l0.69,-1.07l3.05,-0.04l4.82,1.62Z", "name": "Egypt"}, "ZA": {"path": "M467.15,505.21l-0.13,-2.11l-0.69,-1.7l0.71,-0.7l-0.12,-2.46l-4.57,-8.67l0.78,-0.92l0.59,0.47l0.69,1.37l2.83,0.75l1.5,-0.27l2.24,-1.46l0.18,-9.94l1.35,2.39l-0.21,1.57l0.61,1.24l0.41,0.2l1.79,-0.29l2.61,-2.16l0.69,-1.37l0.95,-0.5l2.19,1.08l2.04,0.14l1.78,-0.67l0.85,-2.2l1.38,-0.34l1.59,-2.85l2.15,-1.95l3.41,-1.92l1.99,0.46l1.02,-0.28l0.99,0.2l1.75,5.47l-0.37,3.39l-0.82,-0.24l-1.0,0.47l-0.87,1.75l-0.04,1.2l1.98,1.91l1.47,-0.3l0.7,-1.24l1.09,0.01l-0.77,3.89l-0.58,1.15l-2.2,1.88l-3.17,5.02l-2.8,3.01l-3.57,3.07l-2.53,1.12l-1.22,0.15l-0.51,0.75l-1.17,-0.34l-1.4,0.54l-2.58,-0.55l-1.62,0.35l-1.19,-0.11l-2.54,1.18l-2.1,0.47l-1.6,1.15l-0.84,0.05l-0.93,-0.95l-0.93,-0.16l-0.97,-1.21l-0.25,0.05ZM491.46,495.56l0.62,-0.98l1.48,-0.62l1.18,-2.31l-0.07,-0.48l-1.99,-1.77l-1.68,0.59l-1.42,1.19l-1.34,1.82l0.02,0.49l1.88,2.23l1.32,-0.17Z", "name": "South Africa"}, "EC": {"path": "M231.86,415.43l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z", "name": "Ecuador"}, "IT": {"path": "M451.58,282.14l3.5,1.08l-0.22,1.43l0.34,1.0l-1.55,-0.28l-2.22,1.64l0.13,1.69l-0.27,1.22l0.82,1.78l2.39,1.84l1.3,2.87l2.79,2.73l2.05,0.1l0.25,0.31l-0.43,0.41l0.09,0.64l4.05,2.19l2.2,2.0l-0.17,0.42l-1.16,-1.17l-2.18,-0.54l-0.45,0.21l-1.05,2.12l0.14,0.51l1.59,1.06l-0.2,1.15l-1.06,0.36l-1.25,2.57l-0.36,0.08l0.0,-0.41l1.01,-2.65l-1.73,-3.5l-1.12,-0.56l-0.67,-1.29l-1.72,-0.75l-1.01,-1.25l-2.01,-0.35l-4.11,-3.59l-1.63,-1.87l-1.03,-3.6l-3.56,-1.55l-1.3,0.58l-1.68,1.6l0.17,-0.9l-0.27,-0.45l-1.14,-0.37l-0.55,-2.31l0.78,-1.37l-0.66,-1.44l0.81,0.44l1.41,-0.27l1.08,-0.94l0.53,0.39l1.19,-0.11l0.75,-1.38l1.51,0.37l1.39,-0.65l0.34,-1.31l1.06,0.36l0.5,-0.22l0.21,-0.51l1.95,-0.5l0.42,0.96ZM459.21,311.54l-0.67,1.87l0.33,1.12l-0.32,0.99l-1.48,-0.91l-4.52,-1.83l0.21,-0.97l2.67,0.25l3.8,-0.53ZM443.92,301.94l1.19,1.86l-0.3,3.74l-1.07,-0.01l-0.75,0.79l-0.53,-0.48l-0.1,-3.76l-0.41,-1.41l1.07,0.0l0.9,-0.74Z", "name": "Italy"}, "VN": {"path": "M690.58,359.66l-2.72,1.89l-2.09,2.52l-0.63,1.98l4.31,6.55l2.32,1.68l1.44,1.97l1.11,4.65l-0.32,4.28l-1.93,1.55l-2.84,1.62l-2.11,2.17l-2.73,2.07l-0.59,-1.06l0.63,-1.54l-0.12,-0.47l-1.34,-1.05l1.51,-0.72l2.55,-0.18l0.3,-0.63l-0.82,-1.16l4.0,-2.09l0.31,-3.08l-0.57,-1.79l0.42,-2.69l-0.73,-1.99l-1.86,-1.79l-3.63,-5.38l-2.73,-1.5l0.37,-0.5l1.5,-0.65l0.21,-0.52l-0.97,-2.33l-0.37,-0.25l-2.83,-0.02l-2.25,-4.02l0.84,-0.42l4.39,-0.3l2.06,-1.35l1.15,0.91l1.88,0.41l-0.18,1.55l1.36,1.19l1.69,0.47Z", "name": "Vietnam"}, "SB": {"path": "M826.68,441.55l-0.6,0.09l-0.2,-0.34l0.37,0.15l0.44,0.09ZM824.18,437.32l-0.26,-0.31l-0.31,-0.91l0.03,0.0l0.54,1.22ZM823.04,439.28l-1.66,-0.22l-0.2,-0.53l1.16,0.28l0.7,0.47ZM819.26,434.58l1.17,0.66l0.03,0.04l-0.82,-0.45l-0.38,-0.25Z", "name": "Solomon Is."}, "ET": {"path": "M516.04,377.54l1.1,0.85l1.63,-0.46l0.68,0.48l1.63,0.03l2.01,0.96l1.73,1.68l1.64,2.1l-1.52,2.06l0.16,1.73l0.39,0.38l2.05,0.01l-0.36,1.03l2.86,3.6l8.32,3.09l1.32,0.02l-6.33,6.76l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.6l-1.19,-0.69l-0.47,-1.01l-1.27,-1.23l-1.16,-0.22l0.43,-0.73l1.45,-0.28l0.41,-0.95l-0.03,-2.22l0.68,-2.45l1.05,-0.63l1.43,-3.08l1.57,-1.38l1.02,-2.53l0.35,-1.9l2.52,0.47l0.44,-0.24l0.58,-1.44Z", "name": "Ethiopia"}, "SO": {"path": "M525.13,418.38l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.57l2.91,-3.71l0.08,-4.85l2.98,-0.67l1.24,-0.87l0.45,-0.0l-0.2,3.03l-1.21,3.64l-2.73,6.0l-2.13,3.66l-5.03,6.17l-8.56,6.4l-2.78,3.08l-0.8,1.56Z", "name": "Somalia"}, "ZW": {"path": "M498.91,471.53l-1.1,-0.22l-0.92,0.29l-2.09,-0.46l-1.49,-1.14l-1.89,-0.44l-0.62,-1.44l-0.01,-0.86l-0.3,-0.38l-0.97,-0.26l-2.72,-2.8l-1.93,-3.41l3.83,0.46l3.74,-3.89l1.08,-0.44l0.26,-0.78l1.25,-0.91l1.41,-0.26l0.5,0.9l1.99,-0.05l1.72,1.19l1.11,0.18l1.05,0.68l0.01,3.05l-0.59,3.84l0.38,0.87l-0.23,1.26l-0.39,0.36l-0.64,1.86l-2.43,2.82Z", "name": "Zimbabwe"}, "ES": {"path": "M415.99,294.24l1.08,1.32l4.61,1.55l1.08,-0.64l2.58,1.41l2.72,-0.33l0.09,1.34l-2.15,2.02l-3.1,0.68l-0.31,0.31l-0.2,1.01l-1.54,1.87l-0.97,2.65l0.86,1.9l-1.34,1.4l-0.49,1.86l-1.88,0.7l-1.66,2.25l-5.35,-0.01l-1.81,1.17l-0.88,1.06l-0.86,-0.18l-0.79,-0.9l-0.68,-1.73l-2.37,-0.68l-0.12,-0.6l1.21,-2.0l-0.78,-1.19l0.62,-1.89l-0.8,-1.8l0.89,-0.51l0.09,-1.41l0.42,-0.63l0.03,-2.39l1.01,-0.78l0.12,-0.47l-1.04,-1.93l-1.46,-0.12l-0.63,0.42l-1.04,0.0l-0.53,-1.39l-0.55,-0.22l-1.31,0.73l0.07,-1.41l-0.87,-1.4l3.08,-2.16l2.98,0.6l3.32,-0.02l2.62,0.58l6.01,-0.06Z", "name": "Spain"}, "ER": {"path": "M520.38,375.96l3.42,2.46l3.5,3.81l0.85,0.55l-0.95,-0.01l-3.51,-3.92l-2.33,-1.16l-1.73,-0.07l-0.91,-0.51l-1.25,0.52l-1.34,-1.03l-0.62,0.17l-0.66,1.63l-2.34,-0.43l-0.18,-0.68l1.29,-5.37l0.62,-0.63l1.95,-0.54l0.87,-1.03l1.17,2.45l0.68,2.36l1.49,1.45Z", "name": "Eritrea"}, "ME": {"path": "M468.91,298.06l-1.24,-1.13l0.5,-2.11l0.88,-0.81l2.29,1.73l-0.52,0.71l-0.77,-0.3l-1.14,1.91Z", "name": "Montenegro"}, "MD": {"path": "M491.9,285.98l-0.28,-1.04l0.25,-1.54l-0.15,-1.8l-3.32,-5.2l1.4,-0.31l1.71,1.08l1.07,0.18l0.88,0.78l0.03,1.44l0.78,0.52l0.33,1.38l0.81,0.94l0.0,0.67l-1.14,-0.08l-0.7,-0.47l-0.52,0.29l-0.06,0.94l-1.08,2.21Z", "name": "Moldova"}, "MG": {"path": "M545.91,449.15l0.4,3.06l0.63,1.22l-0.21,1.04l-0.56,-0.81l-0.69,-0.01l-0.47,0.77l0.41,2.15l-0.18,0.89l-0.72,0.79l-0.15,2.18l-5.77,18.57l-3.92,1.7l-3.12,-1.54l-0.6,-1.26l-0.19,-2.48l-0.86,-2.12l-0.21,-1.83l0.39,-1.67l1.21,-0.76l0.01,-0.79l1.19,-2.08l0.23,-1.69l-1.06,-3.05l-0.19,-2.26l0.81,-1.36l0.32,-1.49l4.63,-1.23l3.44,-3.04l0.85,-1.42l-0.09,-0.71l0.78,-0.04l1.38,-1.79l0.13,-1.65l0.45,-0.62l1.16,1.7l0.59,1.62Z", "name": "Madagascar"}, "MA": {"path": "M378.77,359.44l0.06,-0.63l0.93,-0.75l0.82,-1.41l-0.09,-1.07l0.79,-1.77l1.31,-1.64l0.95,-0.61l0.66,-1.61l0.09,-1.52l0.81,-1.54l1.72,-1.11l1.55,-2.81l1.16,-1.0l2.44,-0.41l1.94,-1.91l1.31,-0.82l2.09,-2.4l-0.51,-3.84l1.25,-3.95l1.5,-1.88l4.46,-2.74l2.37,-4.82l1.43,0.01l1.7,1.31l2.31,-0.21l3.46,0.7l0.81,1.67l0.16,1.84l0.86,3.17l0.57,0.63l-0.27,0.69l-3.05,0.46l-1.26,1.11l-1.33,0.24l-0.33,0.37l-0.09,1.91l-2.69,1.06l-1.07,1.5l-1.89,0.72l-2.58,0.47l-4.04,2.12l-0.53,4.86l-1.16,0.07l-0.92,0.64l-1.96,-0.36l-2.42,0.56l-0.74,1.99l-0.86,0.41l-1.14,3.39l-3.53,3.11l-0.81,3.66l-0.96,1.14l-0.29,0.84l-4.94,0.19Z", "name": "Morocco"}, "UZ": {"path": "M598.64,298.24l-1.64,1.79l0.06,0.61l1.85,1.26l1.99,-0.71l2.27,1.34l-2.58,1.91l-2.57,-0.24l-0.2,-0.5l0.47,-1.39l-0.47,-0.52l-3.35,0.77l-2.1,3.89l-1.86,-0.14l-0.39,0.23l-0.65,1.43l0.21,0.53l1.65,0.69l0.47,2.05l-1.21,2.74l-1.54,-0.54l-1.11,-0.04l0.05,-1.53l-0.25,-0.38l-3.3,-1.35l-2.56,-1.53l-4.4,-3.69l-1.33,-3.48l-1.1,-0.68l-2.57,0.15l-0.7,-0.5l-0.46,-2.81l-3.37,-1.79l-0.46,0.06l-2.07,1.94l-2.09,1.14l-0.2,0.45l0.29,1.2l-1.92,0.03l-0.09,-11.97l5.98,-1.95l6.18,4.04l2.35,3.08l7.41,-0.61l2.72,2.28l-0.18,3.21l0.39,0.42l0.89,0.02l0.45,2.42l0.38,0.33l2.93,0.1l0.96,1.58l1.29,-0.25l1.05,-2.28l3.18,-2.25l1.24,-0.54Z", "name": "Uzbekistan"}, "MM": {"path": "M673.9,359.64l-1.97,1.62l-0.57,0.98l-1.4,0.62l-1.36,1.08l-1.99,0.36l-1.08,2.72l-0.91,0.41l-0.19,0.55l1.21,2.31l2.52,3.49l-0.79,1.95l-0.74,0.41l-0.17,0.52l0.65,1.39l1.61,1.98l0.25,2.61l0.9,2.15l-1.92,3.6l0.68,-2.27l-0.81,-1.75l0.19,-2.68l-1.05,-1.54l-1.24,-6.25l-1.12,-2.29l-0.61,-0.13l-4.33,3.06l-2.39,-0.66l0.77,-2.89l-0.52,-2.65l-1.92,-3.02l0.25,-0.78l-0.29,-0.51l-1.33,-0.31l-1.61,-1.97l-0.1,-1.35l0.82,-0.23l0.04,-1.7l1.03,-0.53l0.21,-0.44l-0.23,-0.99l0.54,-0.98l0.08,-2.3l1.45,0.46l0.48,-0.2l1.12,-2.26l0.16,-1.4l1.34,-2.25l-0.01,-1.58l2.89,-1.73l1.62,0.46l0.51,-0.43l-0.17,-1.48l0.65,-0.39l0.07,-1.08l0.77,-0.11l0.71,1.41l1.06,0.72l-0.03,4.05l-2.38,2.46l-0.3,3.26l0.47,0.43l2.27,-0.39l0.51,2.15l1.47,0.69l-0.61,1.87l0.19,0.47l2.97,1.52l1.64,-0.56l0.02,0.35Z", "name": "Myanmar"}, "ML": {"path": "M392.61,383.9l-0.19,-2.39l-0.99,-0.88l-0.44,-1.31l-0.09,-1.3l0.81,-0.59l0.35,-1.26l2.37,0.66l1.31,-0.48l0.86,0.15l0.66,-0.57l9.83,-0.04l0.38,-0.28l0.56,-1.82l-0.44,-0.66l-2.35,-22.51l3.26,-0.04l16.7,11.72l0.74,1.34l2.5,1.11l0.02,1.42l0.44,0.39l2.34,-0.22l0.01,5.49l-1.28,1.64l-0.26,1.51l-5.31,0.58l-1.08,0.93l-2.9,0.1l-0.87,-0.48l-1.38,0.37l-2.4,1.1l-0.6,0.88l-1.86,1.1l-0.43,0.71l-0.79,0.4l-1.44,-0.21l-0.81,0.84l-0.34,1.65l-1.91,2.04l-0.06,1.04l-0.67,1.23l0.13,1.17l-0.97,0.39l-0.23,-0.65l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.29l-0.37,-0.36l-0.02,-0.91l-0.65,-0.35l0.45,-0.65l-0.03,-0.52l-2.12,-2.46l-0.76,-0.01l-2.0,1.17l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z", "name": "Mali"}, "MN": {"path": "M676.61,267.85l3.78,1.95l5.69,-1.19l2.35,0.48l2.34,1.79l1.81,2.09l2.28,-0.04l3.11,0.62l2.49,-0.96l3.42,-0.7l3.51,-2.62l1.21,0.34l1.56,1.35l2.31,-0.25l-2.72,6.05l0.64,1.85l0.5,0.22l1.31,-0.44l2.36,0.55l2.04,-1.29l1.73,1.03l2.1,2.39l-0.15,0.72l-1.72,-0.34l-3.79,0.54l-1.88,1.14l-1.76,2.29l-3.71,1.35l-2.44,1.82l-3.81,-0.99l-0.44,0.19l-1.31,2.27l1.07,2.53l-1.56,1.04l-1.74,1.78l-2.78,1.14l-3.78,0.14l-4.05,1.18l-2.75,1.69l-1.16,-0.94l-2.93,0.0l-3.61,-2.0l-2.59,-0.55l-3.41,0.46l-5.11,-0.75l-2.62,0.07l-1.31,-1.82l-1.4,-3.4l-1.47,-0.37l-3.14,-2.22l-6.15,-1.06l-0.73,-1.26l0.89,-4.37l-1.73,-2.97l-3.7,-1.54l-1.96,-1.86l-0.53,-2.16l2.39,-0.63l4.75,-3.33l3.59,-1.75l2.18,1.16l2.44,0.05l1.83,1.83l2.46,0.14l3.58,0.97l0.4,-0.12l2.43,-2.72l0.07,-0.43l-0.93,-2.14l2.28,-3.66l2.59,1.52l4.94,1.41l0.44,2.74Z", "name": "Mongolia"}, "MK": {"path": "M472.81,299.6l0.49,-0.78l3.56,-0.8l1.01,0.87l0.14,1.71l-0.66,0.59l-1.14,-0.05l-1.14,0.75l-1.37,0.24l-0.79,-0.61l-0.3,-1.19l0.2,-0.73Z", "name": "Macedonia"}, "MW": {"path": "M505.5,439.25l0.85,1.96l0.15,2.88l-0.69,1.66l0.72,1.81l0.06,1.29l0.49,0.64l0.07,1.07l0.4,0.55l0.8,-0.23l0.55,0.62l0.7,-0.21l0.34,0.6l0.19,2.98l-1.04,0.63l-0.53,1.27l-1.11,-1.1l-0.16,-1.59l0.51,-1.33l-0.32,-1.32l-0.99,-0.65l-0.82,0.12l-2.36,-1.66l0.63,-1.99l0.82,-1.18l-0.46,-2.03l0.9,-2.88l-0.95,-2.53l0.97,0.19l0.29,0.41Z", "name": "Malawi"}, "MR": {"path": "M407.4,349.79l-2.62,0.03l-0.39,0.44l2.42,23.13l0.37,0.43l-0.39,1.27l-9.75,0.04l-0.56,0.54l-0.91,-0.11l-1.27,0.46l-1.61,-0.66l-0.98,0.03l-0.36,0.29l-0.38,1.37l-0.42,0.24l-2.93,-3.44l-2.96,-1.55l-1.62,-0.03l-1.27,0.55l-1.12,-0.2l-0.65,0.4l-0.08,-0.51l0.68,-1.31l0.31,-2.47l-0.57,-3.99l0.23,-1.25l-0.68,-1.53l-1.16,-1.05l0.25,-0.42l9.58,0.02l0.4,-0.45l-0.46,-3.79l0.47,-1.08l2.11,-0.22l0.36,-0.4l-0.08,-6.64l7.81,0.14l0.41,-0.4l0.01,-3.47l7.8,5.59Z", "name": "Mauritania"}, "UG": {"path": "M498.55,406.22l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z", "name": "Uganda"}, "MY": {"path": "M717.48,403.36l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.23l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.69l1.81,-1.65l1.21,-1.87l0.63,-0.01l1.07,1.06l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,399.48l0.17,1.1l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.57l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.68l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.06l1.63,0.84Z", "name": "Malaysia"}, "MX": {"path": "M133.1,328.46l0.22,0.49l9.64,3.54l6.96,-0.02l0.4,-0.4l0.0,-0.81l3.76,0.0l3.55,3.11l1.4,2.99l1.51,1.09l2.08,0.86l0.48,-0.14l1.46,-2.1l1.72,-0.05l1.59,1.03l2.06,3.53l1.47,1.63l1.26,3.28l2.18,1.06l2.27,0.6l-1.19,3.88l-0.42,5.19l1.79,5.01l1.62,1.94l0.61,1.55l1.2,1.45l2.55,0.67l1.38,1.13l7.54,-1.93l1.86,-1.32l1.14,-4.4l4.1,-1.24l3.56,-0.11l0.32,0.31l-0.06,0.97l-1.26,1.49l-0.67,1.74l0.38,0.71l-0.73,2.32l-0.49,-0.3l-1.0,0.08l-1.0,1.41l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.08l-1.1,0.26l0.1,0.44l1.82,1.46l0.56,0.94l-3.19,0.21l-1.21,2.12l0.24,0.73l-0.2,0.45l-2.24,-2.21l-1.45,-0.94l-2.22,-0.7l-1.52,0.23l-3.06,1.18l-10.55,-3.9l-2.86,-2.0l-3.78,-0.94l-1.08,-1.21l-2.62,-1.46l-1.18,-1.57l-0.39,-0.85l0.66,-0.64l-0.19,-0.55l0.53,-0.77l0.01,-0.93l-2.0,-3.91l-2.21,-2.71l-2.53,-2.16l-1.19,-1.68l-2.2,-1.21l-0.31,-0.45l0.34,-1.56l-0.21,-0.44l-1.23,-0.63l-1.36,-1.26l-0.59,-1.87l-1.53,-0.48l-2.44,-2.68l-0.15,-0.94l-1.33,-2.14l-0.84,-2.11l-0.15,-1.39l-1.81,-1.16l-0.98,0.05l-1.31,-0.74l-0.58,0.22l-0.4,1.19l0.71,3.95l3.51,4.09l0.28,0.83l0.53,0.26l0.41,1.51l1.33,1.8l1.58,1.46l0.8,2.49l1.43,2.51l0.13,1.37l0.37,0.36l1.03,0.08l1.68,2.38l-0.84,0.79l-0.66,-1.55l-1.68,-1.59l-2.91,-1.94l0.06,-1.89l-0.53,-1.73l-2.91,-2.11l-0.56,0.08l-1.95,-1.14l-0.92,-1.02l0.72,-0.08l0.93,-1.06l0.08,-1.82l-1.93,-2.04l-1.46,-0.81l-3.76,-8.06l4.87,-0.45Z", "name": "Mexico"}, "IL": {"path": "M507.77,331.27l0.39,-0.81l0.2,0.43l-0.34,1.09l0.52,0.43l0.68,-0.23l-0.86,3.84l-1.16,-3.52l0.6,-0.8l-0.03,-0.44ZM508.72,328.43l0.38,-1.13l0.64,0.0l0.52,-0.54l0.02,0.67l-0.52,1.01l-0.55,-0.25l-0.5,0.24Z", "name": "Israel"}, "FR": {"path": "M444.48,298.15l-0.65,2.02l-0.56,-0.34l-0.51,-1.98l0.42,-1.04l0.99,-0.8l0.31,2.13ZM429.62,268.54l1.78,1.88l1.48,-0.14l2.08,1.68l1.36,0.33l1.23,0.98l3.1,0.6l-1.08,2.26l-0.3,2.52l-0.41,0.38l-0.92,-0.28l-0.51,0.42l0.07,0.77l-1.82,2.19l-0.04,1.65l0.57,0.37l0.85,-0.41l0.62,1.14l-0.04,1.13l0.61,1.11l-0.78,1.22l0.65,2.72l1.29,0.62l-0.19,1.03l-2.02,1.73l-4.75,-0.9l-3.84,1.13l-0.52,2.09l-2.47,0.37l-2.7,-1.47l-1.18,0.64l-4.28,-1.44l-0.76,-1.02l1.21,-2.03l0.41,-7.31l-2.58,-3.82l-1.89,-1.93l-3.74,-1.44l-0.2,-2.16l2.82,-0.72l4.11,0.96l0.48,-0.46l-0.62,-3.38l1.98,1.12l5.83,-3.02l0.91,-3.28l1.57,-0.58l0.25,0.97l1.34,0.35l1.05,1.43ZM289.01,408.29l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z", "name": "France"}, "XS": {"path": "M531.15,388.78l1.52,0.12l5.13,-0.96l5.3,-1.49l-0.01,4.43l-2.67,3.4l-1.85,0.01l-8.04,-2.95l-2.55,-3.19l1.12,-1.73l2.04,2.35Z", "name": "Somaliland"}, "FI": {"path": "M492.16,172.43l-0.28,5.17l3.67,4.26l-2.21,4.98l2.86,6.98l-1.64,5.01l2.21,4.51l-0.98,3.55l3.63,4.02l-0.84,2.48l-7.53,9.52l-4.5,0.42l-4.38,1.84l-3.74,0.97l-1.3,-2.46l-2.36,-1.68l0.53,-4.89l-1.2,-4.86l1.14,-3.04l2.23,-3.46l5.68,-6.22l1.8,-1.58l-0.4,-2.8l-3.4,-2.81l-0.79,-2.25l-0.16,-10.13l-7.02,-7.77l0.96,-1.19l2.47,3.3l3.5,-0.17l2.57,1.6l0.53,-0.09l2.46,-3.23l1.19,-5.07l3.49,-2.23l2.82,2.55l-1.01,4.77Z", "name": "Finland"}, "FJ": {"path": "M869.95,457.1l-1.21,0.42l-0.08,-0.24l2.98,-1.23l-0.15,0.44l-1.54,0.62ZM867.58,459.4l0.43,0.38l-0.27,0.91l-1.24,0.29l-1.04,-0.25l-0.14,-0.69l0.64,-0.59l0.92,0.26l0.7,-0.31Z", "name": "Fiji"}, "FK": {"path": "M274.37,564.69l1.48,1.33l-0.53,1.0l-2.96,1.07l-0.95,-1.2l-0.57,-0.05l-1.79,1.54l-0.79,-1.16l2.52,-2.03l1.9,0.9l0.46,-0.09l1.23,-1.32Z", "name": "Falkland Is."}, "NI": {"path": "M202.32,382.47l0.82,-0.18l1.03,-1.02l-0.04,-0.89l0.68,-0.0l0.63,-0.54l0.97,0.23l1.53,-1.28l0.58,-1.0l1.17,0.35l2.41,-0.95l0.13,1.34l-0.81,1.96l0.1,2.77l-0.36,0.38l-0.11,1.76l-0.47,0.81l0.18,1.15l-1.73,-0.86l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.02,-3.85Z", "name": "Nicaragua"}, "NL": {"path": "M430.16,264.22l0.76,-0.72l2.14,-5.88l3.19,-1.63l1.7,0.1l0.35,1.07l-0.6,3.64l-0.51,1.24l-1.24,0.0l-0.4,0.44l0.34,3.35l-2.18,-2.14l-0.43,-0.11l-2.22,0.8l-0.89,-0.15Z", "name": "Netherlands"}, "NO": {"path": "M491.42,157.32l7.17,5.11l-2.71,1.67l-0.13,0.55l2.55,4.24l-3.9,2.61l-1.31,0.42l0.79,-4.7l-3.21,-2.91l-0.48,-0.04l-4.06,2.73l-1.21,5.15l-2.11,2.72l-2.64,-1.54l-3.04,0.32l-2.65,-3.53l-0.63,-0.01l-1.41,1.75l-1.41,0.26l-0.33,0.36l-0.33,4.08l-4.27,-0.99l-0.48,0.32l-0.6,3.44l-2.07,-0.02l-0.38,0.27l-4.15,11.7l-3.88,8.48l0.84,2.18l-0.71,1.86l-2.2,-0.09l-0.4,0.28l-1.64,5.41l0.15,7.19l1.58,2.74l-0.8,5.79l-2.04,3.34l-0.83,2.09l-1.27,-2.26l-0.65,-0.07l-4.87,5.52l-3.05,1.02l-3.16,-2.22l-0.86,-5.06l-0.78,-11.7l2.19,-3.29l6.55,-4.59l5.02,-5.96l4.64,-8.4l6.0,-12.26l11.0,-13.83l5.32,-3.11l3.99,0.38l0.38,-0.19l3.69,-6.04l4.48,0.3l4.3,-1.47ZM484.42,59.58l4.68,4.94l-3.51,7.19l-6.97,1.55l-7.03,-2.18l-0.42,-3.6l-0.37,-0.35l-3.35,-0.23l-2.51,-6.12l7.16,-3.9l3.42,3.43l0.63,-0.09l2.33,-4.19l5.93,3.56ZM482.22,93.35l-4.99,4.27l-3.84,-2.35l1.56,-3.06l-1.38,-3.53l4.4,-2.11l0.89,4.13l3.36,2.65ZM466.32,69.71l8.02,9.81l-6.13,5.05l-1.37,8.88l-2.22,2.36l-1.15,9.08l-2.49,0.35l-5.08,-6.44l2.14,-3.9l-0.08,-0.49l-3.69,-3.4l-4.82,-10.44l-1.89,-10.23l6.16,-4.58l1.22,4.4l0.41,0.29l3.57,-0.19l0.37,-0.32l0.9,-4.57l3.14,-0.43l3.02,4.76Z", "name": "Norway"}, "NA": {"path": "M474.4,460.84l-1.11,0.05l-0.38,0.4l-0.07,9.11l-2.09,0.08l-0.38,0.4l-0.0,18.09l-1.98,1.29l-1.16,0.18l-2.43,-0.69l-0.48,-1.18l-0.99,-0.78l-0.55,0.05l-0.9,1.05l-1.52,-1.75l-0.94,-1.97l-1.99,-8.9l-0.06,-3.23l-0.33,-1.56l-2.3,-3.43l-1.91,-4.94l-1.96,-2.48l-0.12,-1.61l2.33,-0.8l1.43,0.07l1.82,1.15l10.23,-0.26l1.84,1.26l6.01,0.37ZM474.58,460.83l6.59,-1.65l1.91,0.41l-1.71,0.41l-1.31,0.85l-1.12,-0.95l-4.36,0.94Z", "name": "Namibia"}, "VU": {"path": "M839.03,452.86l0.23,1.16l-0.44,0.03l-0.2,-1.47l0.42,0.28Z", "name": "Vanuatu"}, "NC": {"path": "M838.79,471.67l-0.34,0.23l-2.9,-1.8l-3.27,-3.48l1.65,0.85l4.86,4.19Z", "name": "New Caledonia"}, "NE": {"path": "M454.74,355.83l1.33,1.41l0.49,0.07l1.26,-0.72l0.53,3.62l0.94,0.85l0.17,0.94l0.82,0.72l-0.45,0.98l-0.96,5.37l-0.13,3.28l-3.05,2.34l-1.22,3.61l1.02,1.25l-0.0,1.48l0.39,0.4l1.13,0.04l-0.1,0.49l-0.45,0.09l-0.35,0.68l-1.47,-2.44l-0.86,-0.29l-2.09,1.38l-1.73,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.1l-1.06,0.05l-2.94,-1.29l-1.44,0.59l-1.01,-0.03l-0.97,-0.95l-2.7,-0.99l-2.69,0.31l-0.87,0.65l-0.46,1.62l-0.74,1.17l-0.12,1.55l-1.57,-1.1l-1.31,0.24l0.03,-0.82l-0.32,-0.41l-2.59,-0.52l-0.15,-1.17l-1.36,-1.62l-0.29,-1.01l0.13,-0.85l1.29,-0.08l1.08,-0.93l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.5l1.39,-1.91l-0.01,-5.78l3.37,-1.15l7.24,-5.24l8.41,-5.07l3.69,1.09Z", "name": "Niger"}, "NG": {"path": "M456.32,383.7l0.64,0.66l-0.28,1.06l-2.11,2.02l-2.03,5.2l-1.37,1.16l-1.15,3.19l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.37l-0.91,0.24l-1.79,4.07l-2.33,0.81l-1.11,-0.07l-0.86,0.51l-1.71,-0.05l-1.19,-1.39l-0.89,-1.9l-1.77,-1.66l-3.95,-0.08l0.07,-5.23l0.42,-1.44l1.95,-2.32l-0.14,-0.91l0.43,-1.18l-0.53,-1.42l0.25,-2.95l0.72,-1.08l0.32,-1.35l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.03l1.28,0.04l1.22,-0.59l3.03,1.28l1.5,-0.14l1.36,-1.01l1.32,0.07l0.82,-0.35l3.45,0.81l1.82,-1.34l1.84,2.7l0.66,0.16Z", "name": "Nigeria"}, "NZ": {"path": "M857.8,512.11l1.85,3.38l0.45,0.2l0.3,-0.38l0.03,-1.36l0.38,0.29l0.56,2.51l2.02,1.03l1.81,0.29l1.59,-1.16l0.7,0.2l-1.16,4.01l-1.98,0.12l-0.73,1.27l0.21,1.25l-2.44,4.45l-1.47,1.02l-0.42,-0.65l-0.66,-0.3l1.25,-2.35l-0.81,-2.16l-2.64,-1.38l0.04,-0.7l1.82,-1.29l0.42,-2.46l-0.15,-2.29l-0.96,-2.0l-0.05,-0.75l-3.11,-3.94l-0.82,-1.69l1.57,1.56l1.76,0.72l0.66,2.55ZM853.83,527.42l0.57,1.38l0.61,0.17l1.4,-1.06l0.46,0.9l0.0,1.2l-2.48,3.93l-1.26,1.36l-0.06,0.47l0.6,1.08l-1.47,0.09l-2.32,1.54l-2.04,5.78l-3.02,2.49l-2.03,-0.07l-1.72,-1.2l-2.46,-0.23l-0.29,-0.92l1.25,-2.46l3.05,-3.36l1.62,-0.67l4.01,-3.18l1.56,-1.87l1.08,-2.44l1.01,-1.01l0.35,-1.73l1.23,-1.07l0.35,0.88Z", "name": "New Zealand"}, "NP": {"path": "M641.15,342.42l-0.0,3.36l-1.74,0.04l-4.8,-0.9l-1.59,-1.45l-3.36,-0.36l-7.66,-3.88l0.81,-2.23l2.33,-1.79l1.77,0.78l2.49,1.85l1.38,0.43l0.99,1.42l1.89,0.55l1.99,1.22l5.5,0.95Z", "name": "Nepal"}, "XK": {"path": "M472.78,298.18l-1.1,-1.47l0.98,-0.9l0.29,-0.94l2.0,1.84l-0.4,0.85l-1.77,0.62Z", "name": "Kosovo"}, "CI": {"path": "M407.4,389.11l0.86,0.42l0.56,0.9l1.13,0.54l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.25l-1.03,2.09l-0.65,2.85l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.47l-4.11,1.61l0.32,-3.06l-1.18,-1.31l-1.32,-0.67l0.42,-0.86l-0.2,-1.4l0.5,-0.68l0.01,-1.59l0.84,-0.33l0.26,-0.5l-1.15,-3.02l0.12,-0.51l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.72l0.71,-0.14l0.25,0.7l0.57,0.22l1.4,-0.61Z", "name": "C\u00f4te d'Ivoire"}, "CH": {"path": "M444.61,279.47l-0.29,1.12l0.16,0.5l1.13,0.67l1.03,0.12l-0.12,0.88l-0.79,0.44l-1.7,-0.42l-0.47,0.25l-0.46,1.23l-0.72,0.07l-0.3,-0.39l-0.58,-0.06l-1.31,1.14l-0.93,0.13l-0.87,-0.62l-0.82,-1.51l-0.52,-0.17l-0.61,0.29l0.02,-0.85l1.73,-1.95l0.07,-0.65l0.96,0.08l0.57,-0.53l1.97,0.02l0.67,-0.71l2.16,0.92Z", "name": "Switzerland"}, "CO": {"path": "M242.07,384.75l-1.7,0.59l-0.59,1.19l-1.7,1.7l-0.37,1.94l-0.67,1.44l0.31,0.57l1.03,0.14l0.25,0.91l0.57,0.65l-0.04,2.35l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.3l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.67,-0.43l0.39,-1.38l-0.52,-2.11l0.49,-0.83l-0.4,-2.13l-0.97,-1.36l0.17,-0.67l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.7l0.93,-0.24l0.3,-0.38l0.45,-2.78l1.22,-1.01l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.85l1.15,-1.15l0.91,0.47l-0.26,0.45Z", "name": "Colombia"}, "CN": {"path": "M740.22,270.81l4.55,1.5l2.81,2.58l0.98,3.43l0.38,0.29l3.8,0.0l2.34,-1.51l3.31,-0.89l-1.01,2.59l-1.01,1.46l-0.85,3.95l-1.53,3.16l-2.73,-0.57l-2.43,1.3l-0.19,0.43l0.65,2.95l-0.32,3.68l-0.94,0.07l-0.37,0.4l0.01,0.58l-0.89,-1.11l-0.67,0.07l-0.92,1.77l-3.72,1.4l-0.25,0.46l0.28,1.25l-1.5,-0.08l-1.08,-0.96l-0.59,0.06l-1.68,2.31l-2.7,1.74l-2.03,2.08l-3.39,0.92l-1.93,1.54l-1.22,0.4l0.42,-0.81l-0.43,-1.03l1.81,-2.01l0.02,-0.51l-1.32,-1.73l-0.51,-0.11l-2.25,1.21l-2.83,2.28l-1.5,2.02l-2.27,0.14l-1.56,1.64l-0.04,0.47l1.32,2.16l2.01,0.63l0.3,1.47l1.98,0.92l0.42,-0.05l2.6,-2.09l1.99,1.1l1.5,0.12l0.24,0.97l-3.39,0.94l-1.12,1.61l-2.5,1.64l-1.29,2.15l0.13,0.55l2.57,1.6l0.97,2.9l3.17,4.94l-0.03,1.8l-1.36,0.69l-0.19,0.5l0.6,1.55l1.41,0.95l-0.9,4.05l-1.43,0.4l-3.85,6.72l-2.28,3.23l-6.78,4.72l-2.73,0.3l-1.45,1.07l-0.61,-0.62l-0.56,-0.01l-1.36,1.29l-3.39,1.31l-2.61,0.41l-1.1,2.86l-0.81,0.09l-0.5,-1.47l0.5,-0.88l-0.25,-0.59l-3.36,-0.86l-1.3,0.41l-2.3,-0.64l-0.95,-0.87l0.34,-1.33l-0.3,-0.49l-2.19,-0.48l-1.13,-0.96l-0.48,-0.03l-2.06,1.4l-4.28,0.28l-2.76,1.08l-0.28,0.43l0.32,2.61l-0.59,-0.03l-0.19,-1.39l-0.56,-0.34l-1.67,0.72l-2.47,-1.26l0.63,-1.94l-0.25,-0.5l-1.37,-0.46l-0.55,-2.3l-0.46,-0.3l-2.13,0.37l0.24,-2.6l2.39,-2.48l0.03,-4.49l-1.19,-0.94l-0.79,-1.57l-0.41,-0.22l-1.4,0.2l-2.0,-0.32l0.48,-1.12l-1.17,-1.78l-0.56,-0.11l-1.62,1.1l-2.25,-0.6l-2.89,1.82l-2.25,2.08l-1.74,0.31l-1.17,-0.74l-3.32,-0.68l-1.48,0.83l-1.04,1.32l-0.12,-1.23l-0.54,-0.34l-1.44,0.56l-5.54,-0.9l-1.98,-1.22l-1.89,-0.56l-0.99,-1.42l-1.34,-0.39l-2.55,-1.88l-2.01,-0.89l-1.21,0.59l-5.57,-3.64l-0.54,-2.5l1.19,0.26l0.49,-0.37l0.08,-1.52l-0.98,-1.65l0.16,-2.6l-2.69,-3.58l-4.12,-1.33l-0.68,-2.18l-1.91,-1.6l-0.38,-0.78l-0.5,-3.27l-1.52,-0.73l-0.7,0.14l-0.49,-2.31l0.57,-0.59l-0.13,-0.89l2.06,-1.34l1.59,-0.59l2.55,0.42l0.43,-0.23l0.85,-1.9l2.99,-0.37l1.11,-1.41l4.04,-1.97l0.39,-0.97l-0.17,-1.67l1.48,-0.77l0.19,-0.49l-2.1,-5.65l4.54,-1.3l1.38,-0.84l1.88,-6.37l4.59,1.12l0.4,-0.13l1.49,-1.91l0.11,-3.42l2.01,-0.45l1.83,-2.43l0.45,-0.15l0.67,2.44l2.23,2.08l3.44,1.35l1.58,2.72l-0.93,4.08l0.95,1.84l6.54,1.28l2.95,2.14l1.48,0.4l1.07,3.0l1.52,2.13l3.06,0.09l5.13,0.76l3.38,-0.46l2.34,0.48l3.65,2.02l3.07,0.05l0.99,0.93l0.48,0.05l2.87,-1.78l3.94,-1.15l3.84,-0.16l3.06,-1.29l1.77,-1.81l1.72,-1.14l0.16,-0.47l-1.12,-2.36l1.05,-1.82l4.03,0.9l2.45,-1.85l3.76,-1.36l1.97,-2.46l1.63,-0.96l3.49,-0.47l1.91,0.4l0.47,-0.31l0.18,-1.65l-2.27,-2.59l-2.11,-1.27l-0.44,0.02l-1.78,1.27l-2.29,-0.54l-1.28,0.37l-0.43,-1.02l2.76,-6.16l3.03,1.25l3.53,-2.45l0.15,-1.96l2.18,-4.08l1.47,-1.55l-0.03,-2.26l-1.16,-1.03l1.66,-1.66l2.96,-0.72l3.21,-0.11l3.62,1.21l2.05,1.43l3.31,8.17l0.92,3.82ZM696.92,366.89l-1.87,1.1l-1.63,-0.65l-0.06,-1.84l1.03,-1.01l2.58,-0.7l1.15,0.05l0.31,0.56l-0.98,1.09l-0.53,1.4Z", "name": "China"}, "CM": {"path": "M457.92,387.33l1.06,1.92l-1.4,0.16l-1.05,-0.23l-0.45,0.23l-0.54,1.2l0.08,0.45l1.48,1.48l1.05,0.45l1.01,2.47l-1.52,3.0l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.28l0.75,-0.13l1.38,-1.37l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.2l1.38,-1.17l2.0,-5.16l2.17,-2.15l0.3,-1.65l-0.86,-0.89l0.18,-0.37l0.8,1.32l0.07,3.24Z", "name": "Cameroon"}, "CL": {"path": "M246.67,568.71l-3.34,2.4l-0.55,3.89l-0.62,0.06l-2.66,-1.3l-2.82,-2.86l-3.06,-2.32l-0.71,-2.33l0.65,-2.52l-1.22,-2.56l-0.31,-6.43l1.02,-3.46l2.58,-2.79l-0.19,-0.66l-3.24,-0.91l2.11,-2.91l0.78,-5.35l2.3,1.02l0.56,-0.29l1.31,-7.14l-0.2,-0.42l-1.68,-0.9l-0.58,0.28l-0.7,3.81l-0.82,-0.25l1.58,-10.59l1.15,-2.43l-0.71,-3.1l-0.18,-3.15l1.02,-0.35l3.26,-9.88l1.07,-4.5l-0.56,-4.47l0.74,-2.47l-0.29,-3.45l1.46,-3.5l2.04,-17.19l-0.67,-7.94l1.04,-0.54l0.54,-0.92l0.79,1.16l0.32,1.82l1.25,1.19l-0.69,2.61l1.33,2.98l0.97,3.7l0.47,0.29l1.49,-0.31l0.11,0.25l-0.77,2.53l-2.57,1.28l-0.22,0.37l0.08,4.51l-0.47,0.8l0.58,1.25l-1.59,1.59l-1.68,2.74l-0.89,2.6l0.21,2.85l-1.49,2.9l1.12,5.38l0.64,0.64l-0.01,2.49l-1.39,2.89l0.02,2.59l-1.89,2.18l0.02,2.98l0.7,2.85l-1.44,1.23l-1.26,6.27l0.39,3.95l-0.98,0.94l0.58,3.94l1.04,1.3l-0.69,1.22l0.14,0.54l1.01,0.61l0.18,0.88l-1.04,0.92l0.26,2.03l-0.89,4.69l-1.31,3.11l0.25,2.01l-0.73,2.21l-1.97,1.93l0.28,4.31l0.88,1.43l1.6,0.0l-0.01,2.68l1.04,2.36l6.16,0.76ZM248.69,570.67l0.0,9.15l0.4,0.4l3.58,0.07l-0.53,1.14l-1.93,1.23l-2.45,-0.46l-1.9,-1.34l-2.54,-0.61l-5.59,-4.63l-2.57,-3.5l4.23,3.11l3.32,1.53l0.5,-0.14l1.29,-1.95l0.83,-2.85l2.04,-1.51l1.3,0.35Z", "name": "Chile"}, "XC": {"path": "M504.86,320.38l0.39,0.01l0.27,-0.07l-0.3,0.35l-0.36,-0.28Z", "name": "N. Cyprus"}, "CA": {"path": "M280.04,266.9l-1.66,3.44l0.11,0.49l0.5,-0.0l1.44,-1.15l1.05,0.52l-0.63,0.98l0.16,0.58l2.22,1.06l1.38,-0.83l1.97,0.93l-0.68,2.46l0.52,0.48l1.3,-0.48l0.99,3.78l-0.93,2.87l-0.77,0.09l-1.25,-0.52l0.49,-2.7l-0.87,-0.87l-0.52,0.06l-2.77,3.06l-0.43,-0.04l1.14,-1.12l-0.14,-0.66l-2.4,-0.9l-7.4,0.09l-0.2,-0.58l1.35,-1.14l0.02,-0.6l-0.8,-0.75l1.91,-2.12l2.57,-6.16l1.48,-2.16l1.98,-1.26l0.5,0.08l-1.6,3.09ZM68.32,168.48l4.07,1.51l3.89,3.35l2.78,0.73l0.42,-0.15l2.16,-2.88l2.84,-2.09l3.89,0.75l3.71,-3.14l3.71,-1.66l1.54,2.72l0.62,0.1l1.99,-1.93l0.48,-2.97l1.15,0.53l4.17,6.45l0.67,0.01l2.68,-3.95l0.27,4.33l0.54,0.35l3.08,-1.17l1.05,-2.04l2.63,0.36l3.83,3.0l5.86,2.58l3.48,1.19l2.44,-0.39l2.95,3.04l-3.23,3.06l0.16,0.67l4.53,1.42l6.92,-0.76l1.96,-1.04l2.47,3.65l0.64,0.03l2.72,-3.33l-0.01,-0.52l-2.34,-2.61l1.33,-1.93l2.87,-0.3l1.88,-0.64l1.8,1.47l2.48,3.63l0.41,0.17l2.63,-0.5l4.62,2.96l3.83,-1.03l3.59,0.16l0.42,-0.43l-0.27,-3.92l1.8,-0.96l3.49,2.08l-0.01,6.03l0.34,0.4l0.44,-0.28l1.5,-4.95l1.69,0.15l0.43,-0.33l1.13,-6.89l-2.74,-4.66l-2.86,-2.89l0.19,-8.09l2.75,-5.34l2.86,1.11l2.44,3.36l3.31,8.33l-2.12,3.42l0.22,0.59l4.38,1.37l-0.01,6.85l0.29,0.39l0.45,-0.18l3.02,-4.91l2.56,3.84l-0.68,5.11l2.42,4.42l0.7,0.0l2.61,-4.74l1.86,-5.93l0.15,-7.44l3.08,0.48l3.57,1.03l3.18,3.35l0.14,3.2l-1.81,3.53l1.71,3.82l-0.29,2.9l-4.72,4.27l-3.21,0.89l-2.43,-1.77l-0.62,0.23l-0.74,3.09l-2.4,5.08l-0.73,2.58l-2.76,3.73l-3.68,0.5l-2.07,2.63l-0.15,3.32l-2.86,0.78l-3.1,4.45l-2.74,5.98l-0.98,4.09l-0.14,5.74l0.31,0.4l3.44,0.75l2.25,7.78l0.48,0.26l3.37,-0.88l4.49,1.92l2.43,1.68l1.92,2.2l3.09,1.21l2.61,1.84l6.65,0.69l-0.36,3.49l0.8,4.33l1.81,4.63l3.81,3.97l0.51,0.05l2.08,-1.51l1.37,-4.39l-1.31,-6.63l-1.54,-2.05l3.69,-1.91l2.84,-3.1l1.49,-3.43l-0.24,-3.19l-1.7,-3.97l-2.92,-3.49l2.86,-5.19l-1.09,-4.55l-0.81,-7.95l1.39,-0.99l4.1,1.4l2.62,0.54l2.14,-1.31l5.09,4.62l1.07,2.2l4.09,0.36l-0.06,3.98l0.83,6.25l2.42,1.04l1.74,2.7l0.57,0.11l3.63,-2.66l2.51,-5.54l1.22,-1.73l7.63,15.44l-0.95,2.7l0.14,0.45l3.3,2.51l2.23,2.5l4.1,1.23l1.45,1.25l0.96,3.51l2.08,0.8l0.87,1.37l0.17,4.34l-3.4,2.77l-4.22,1.5l-3.06,3.15l-4.04,0.61l-5.35,-0.82l-6.4,0.25l-2.32,2.87l-3.25,1.78l-6.48,8.38l-0.03,0.47l0.45,0.17l2.33,-0.73l3.98,-4.83l5.12,-3.08l3.49,-0.36l1.77,1.49l-2.18,2.58l0.8,4.03l1.01,2.99l3.5,1.85l4.14,-0.52l2.14,-3.2l0.24,1.68l1.22,0.99l-2.64,2.0l-5.49,2.09l-2.54,1.45l-2.73,2.43l-1.38,-0.18l-0.08,-2.39l4.16,-2.8l0.16,-0.45l-0.39,-0.28l-4.01,0.12l-2.61,0.4l-1.4,-1.73l-0.12,-5.1l-1.11,-1.06l-1.83,0.44l-0.65,-0.76l-0.63,0.03l-1.91,2.77l-0.81,2.9l-0.81,1.48l-1.66,0.64l-0.47,0.87l-8.32,0.08l-1.21,0.71l-2.33,2.23l-0.72,-0.14l-1.36,1.08l-1.12,-0.54l-4.75,1.43l-0.9,1.32l0.21,0.59l1.7,0.22l0.05,0.22l-1.84,0.36l-1.85,0.9l-1.19,-0.29l-0.92,0.15l-2.95,2.0l-0.71,-0.11l0.32,-0.68l1.12,-1.78l1.72,-1.33l0.09,-2.6l1.16,-2.28l0.48,0.59l2.03,0.48l0.42,-0.16l0.82,-1.6l-2.66,-4.02l-2.29,-0.71l-5.63,-0.81l-0.4,-0.66l-0.86,0.2l0.27,-0.64l-0.21,-0.52l-0.72,-0.32l0.32,-1.06l-0.91,-1.28l0.34,-0.82l-0.29,-0.55l-2.6,-0.52l-0.76,-1.93l-0.95,-0.76l-1.67,-0.09l-2.67,-0.67l-1.13,1.4l-1.48,0.69l-0.85,1.24l-2.8,-0.89l-2.1,0.45l-2.38,-1.13l-4.23,-0.83l-0.58,-0.48l-0.42,-1.96l-0.4,-0.32l-0.85,0.02l-0.39,0.4l-0.01,1.07l-69.11,-0.01l-6.5,-5.37l-4.5,-1.66l-1.29,-3.28l0.34,-2.39l-0.2,-0.41l-3.03,-1.66l-0.52,-3.39l-2.92,-2.97l-0.05,-1.94l1.39,-2.23l-0.07,-2.8l-4.34,-3.13l-4.08,-8.55l-4.01,-4.22l-1.31,-2.51l-0.57,-0.15l-2.51,1.6l-2.18,2.42l-3.81,-5.1l-2.44,-1.39l-2.26,-0.18l0.03,-55.45ZM265.75,272.87l-0.72,0.04l-3.11,-1.15l-1.72,-1.35l3.19,0.89l2.36,1.57ZM249.33,12.09l6.65,1.61l5.26,2.56l4.43,5.22l-0.1,4.84l-5.98,7.79l-6.13,3.67l-2.26,3.84l0.35,0.6l4.74,-0.08l-5.52,9.28l-4.14,4.52l-4.23,11.87l-5.01,2.26l-1.69,2.82l-7.4,1.42l-0.32,0.34l0.22,0.41l3.02,1.48l-1.51,2.34l2.02,6.18l-2.26,4.04l-3.94,3.58l-1.16,4.49l-3.53,3.68l0.35,2.54l0.44,0.34l3.85,-0.39l0.04,2.09l-6.37,6.12l-6.3,-2.81l-7.5,1.6l-3.7,-1.27l-4.4,-0.52l-0.28,-4.64l4.41,-2.41l0.2,-0.41l-1.19,-8.1l1.06,-0.58l6.49,4.94l0.49,-0.0l0.12,-0.48l-3.41,-7.64l-3.92,-2.37l1.85,-4.46l4.51,-3.29l0.71,-4.65l-3.55,-5.6l-0.98,-6.84l6.22,0.58l1.88,1.51l0.57,-0.08l3.91,-5.41l-0.21,-0.62l-5.64,-1.76l-8.71,0.93l-4.24,-5.03l-2.06,-6.44l-2.92,-4.92l-0.52,-5.65l3.5,-3.22l2.94,-0.62l4.91,-2.99l3.67,-6.97l2.62,0.86l2.63,5.2l0.41,0.22l0.34,-0.32l1.88,-10.36l3.17,-3.13l4.37,-2.24l7.32,-0.83l1.2,2.03l0.52,0.16l7.1,-3.49l10.71,2.64ZM203.82,140.61l1.98,5.56l0.38,0.26l0.37,-0.27l2.27,-6.74l5.84,-3.34l4.06,8.5l-0.37,5.31l0.57,0.39l4.95,-2.38l2.28,-3.11l5.2,3.94l3.34,3.74l0.31,3.32l0.54,0.34l4.32,-1.65l2.44,4.64l6.13,3.12l2.09,2.87l2.25,6.4l-4.35,3.07l-0.01,0.65l5.9,4.44l3.95,1.47l3.53,5.87l3.81,0.57l-0.69,3.91l-4.11,6.58l-2.68,-2.22l-3.9,-5.85l-0.43,-0.17l-3.24,0.78l-0.3,0.35l-0.24,3.8l2.63,3.5l3.42,2.75l0.96,1.44l1.58,5.48l-0.73,3.38l-2.67,-1.26l-6.25,-4.45l-0.52,0.05l-0.04,0.52l6.1,8.03l0.24,1.1l-6.09,-1.92l-5.3,-3.12l-2.77,-2.46l0.72,-1.31l-0.1,-0.51l-7.38,-5.75l-0.64,0.33l0.03,1.33l-6.7,0.85l-1.79,-1.68l1.46,-3.85l4.49,-0.1l5.15,-0.77l0.31,-0.54l-0.79,-2.04l0.83,-2.91l3.22,-6.15l-0.67,-3.24l-1.07,-2.43l-3.84,-3.29l-4.67,-2.18l1.24,-1.37l0.05,-0.47l-2.65,-4.44l-2.33,-0.57l-1.88,-2.37l-0.65,0.04l-1.25,2.02l-4.3,0.88l-9.0,-1.6l-5.26,-2.14l-3.98,-1.1l-1.81,-2.3l2.43,-3.26l-0.32,-0.64l-3.2,-0.03l-0.75,-7.66l1.89,-7.38l2.46,-3.41l5.58,-2.04l-1.59,4.91ZM261.18,282.95l2.07,0.7l1.54,-0.05l-0.57,0.69l-0.66,0.17l-2.92,-1.41l-0.44,-0.86l0.38,-0.46l0.61,1.23ZM230.78,185.0l-2.28,0.26l-0.54,-2.72l0.98,-3.45l1.88,-0.76l1.65,1.57l0.03,2.61l-0.24,0.76l-1.47,1.73ZM229.41,141.37l0.16,1.75l-4.89,-0.38l-2.72,1.08l-0.48,-0.34l-2.65,-4.39l0.09,-2.82l0.87,-0.43l5.47,0.92l4.14,4.61ZM222.03,214.7l-0.78,2.22l-0.56,-0.23l-0.54,-1.3l0.87,-1.54l0.57,0.07l0.44,0.77ZM183.65,102.44l3.0,3.59l4.7,-0.02l1.97,3.24l-0.41,4.19l2.83,2.3l1.84,2.54l6.99,1.27l4.2,-2.19l4.96,-0.84l3.84,0.67l2.53,3.56l0.53,3.8l-1.43,2.32l-3.48,1.88l-3.25,-1.1l-7.15,1.44l-5.04,0.16l-3.95,-1.13l-6.43,-2.95l-0.83,-5.12l-0.3,-4.98l-2.56,-4.72l-5.31,-1.46l-2.69,-3.1l0.83,-3.99l4.63,0.64ZM207.36,195.03l0.42,2.4l0.63,0.26l0.99,-0.72l1.27,1.36l5.47,3.76l0.21,2.54l0.49,0.36l1.62,-0.39l1.33,1.4l-1.71,1.36l-3.54,-1.23l-1.33,-2.43l-0.66,-0.06l-2.46,2.99l-3.05,2.47l-0.7,-2.67l-0.45,-0.29l-2.39,0.38l1.64,-2.22l0.32,-4.55l0.78,-5.03l1.13,0.31ZM215.49,211.5l-2.69,2.74l-1.33,-0.09l-0.38,-1.01l1.61,-2.18l2.82,0.04l-0.02,0.5ZM202.66,70.17l2.91,4.33l-3.3,3.83l-4.54,9.4l-4.14,0.83l-4.93,-1.5l-2.57,-4.9l0.04,-4.53l1.93,-3.49l-0.36,-0.59l-4.35,0.1l-2.61,-4.34l-1.55,-6.33l1.71,-6.55l1.67,-4.57l2.41,-1.04l0.22,-0.48l-0.96,-3.26l5.05,-0.73l3.21,8.41l8.21,6.06l1.95,9.35ZM187.39,143.67l-2.74,6.11l-2.28,-0.24l-1.49,-6.99l0.04,-4.2l1.26,-3.63l2.29,-2.28l4.96,0.3l4.35,2.01l-3.51,7.33l-2.87,1.59ZM186.12,124.07l-1.2,3.26l-3.2,-0.62l-2.75,-2.26l1.22,-4.02l3.15,-2.36l1.93,3.09l0.86,2.91ZM185.64,96.93l-0.83,0.24l-4.33,-0.68l-0.51,-2.52l4.35,0.15l1.52,1.89l-0.2,0.91ZM180.62,90.66l-3.24,2.16l-1.76,-2.41l-1.05,-4.51l-0.18,-4.75l2.69,0.43l1.32,0.77l2.85,4.19l-0.63,4.11ZM180.98,172.19l-1.22,1.91l-3.04,-1.9l-2.16,0.64l-2.93,-2.72l1.98,-2.02l1.52,-2.75l3.72,3.03l2.13,3.8ZM169.77,135.22l2.97,1.73l4.08,-1.03l0.51,2.03l-2.26,4.02l0.07,0.48l3.66,3.51l-0.43,6.97l-3.8,2.82l-2.06,-0.56l-1.71,-2.96l-6.1,-6.18l0.04,-2.04l4.64,0.95l0.44,-0.57l-2.66,-5.4l2.61,-3.78ZM174.46,107.75l1.36,3.53l0.08,5.21l-1.09,7.07l-3.71,0.89l-2.35,-1.35l0.05,-5.54l-0.47,-0.4l-3.64,0.69l-0.14,-7.04l2.56,0.16l3.62,-3.51l3.32,0.59l0.42,-0.3ZM170.01,87.71l0.84,4.38l-3.36,-1.1l-4.3,-4.01l-4.91,-0.41l2.06,-3.18l-0.05,-0.5l-2.92,-2.99l-0.16,-4.33l4.31,1.6l6.62,4.67l1.87,5.86ZM134.6,141.21l-1.16,3.7l0.55,0.48l5.29,-2.43l3.29,4.01l0.64,-0.03l2.53,-3.85l1.89,2.29l2.03,7.94l0.37,0.3l0.4,-0.26l1.28,-3.56l-1.72,-8.28l1.76,-1.01l2.22,1.24l2.69,3.29l2.45,13.62l8.57,7.16l-0.23,2.66l-3.8,0.53l-0.29,0.6l1.51,2.57l-0.67,2.03l-4.14,-1.0l-4.49,-1.91l-3.03,0.47l-4.65,2.34l-10.43,1.63l-1.41,-3.17l-3.42,-1.92l-2.23,0.65l-2.72,-5.01l5.02,-1.82l3.63,0.3l3.27,-1.29l0.25,-0.38l-0.26,-0.37l-4.84,-1.75l-5.5,0.57l-3.28,-0.14l-1.06,-2.23l5.47,-2.91l0.2,-0.46l-0.4,-0.3l-3.77,0.11l-3.96,-1.88l1.97,-5.68l1.69,-3.21l6.41,-4.99l2.07,1.35ZM158.82,138.54l-1.83,4.71l-3.34,-5.15l0.6,-0.86l2.98,-0.32l1.59,1.62ZM149.59,111.85l0.99,3.73l0.63,0.21l2.09,-1.62l2.15,0.37l0.41,4.59l-1.42,4.36l-8.24,1.45l-6.38,4.09l-3.32,0.18l-0.26,-2.47l5.03,-4.13l0.12,-0.46l-0.41,-0.24l-11.2,1.15l-3.08,-1.54l3.28,-9.52l2.11,-2.66l6.67,3.38l4.39,5.99l4.63,0.92l0.44,-0.53l-3.52,-9.7l2.01,-3.46l2.07,1.01l0.81,4.89ZM145.71,84.15l-2.55,2.05l-3.61,-0.01l0.03,-1.26l2.32,-3.45l0.99,0.43l2.82,2.24ZM144.69,94.95l-4.27,3.06l-3.27,-3.31l1.81,-3.41l3.34,-1.13l3.11,1.67l-0.73,3.12ZM118.92,155.09l-5.99,3.39l-1.29,-3.14l-5.55,-4.03l2.72,-9.3l2.17,-5.73l-2.25,-5.4l7.82,-1.34l3.61,1.91l6.24,0.5l2.31,2.51l2.44,3.4l-2.87,2.01l-6.21,6.07l-3.1,5.73l-0.05,3.42ZM129.56,96.45l-0.31,7.96l-1.8,3.53l-2.35,0.59l-4.6,4.46l-3.74,1.48l-2.92,-1.93l4.07,-7.68l5.0,-7.12l3.62,0.15l3.02,-1.45ZM111.13,275.3l-0.71,0.3l-3.83,-1.6l-0.83,-1.38l-2.13,-1.28l-0.67,-1.21l-2.4,-0.65l-0.75,-2.19l3.73,1.32l2.25,0.41l2.0,3.05l2.52,1.64l0.8,1.62ZM87.8,253.38l0.9,0.35l1.87,-0.27l-0.67,4.25l1.83,2.97l-1.42,-1.69l-0.98,-1.97l-1.19,-1.23l-0.34,-2.41Z", "name": "Canada"}, "CG": {"path": "M466.72,406.37l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.25l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z", "name": "Congo"}, "CF": {"path": "M461.16,408.1l-0.26,-1.19l-1.09,-0.77l-0.84,-1.18l-0.29,-1.0l-1.04,-1.15l0.08,-3.44l0.58,-0.49l1.16,-2.36l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.97l2.48,-1.92l0.02,-0.96l2.82,0.02l2.36,-1.18l1.93,-2.86l1.16,-0.94l1.11,-0.31l0.27,0.87l1.34,1.48l-0.39,2.02l0.3,1.01l4.01,2.76l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.24,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.37l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.28l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z", "name": "Central African Rep."}, "CD": {"path": "M487.01,402.27l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.42l0.3,1.27l0.44,0.51l-4.08,0.75l-0.92,1.82l0.51,1.35l-0.74,5.46l0.17,0.38l2.45,1.47l0.54,-0.1l0.12,1.64l-1.28,-0.01l-1.85,-2.37l-1.94,-0.45l-0.48,-1.14l-0.56,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.19l-2.49,-0.2l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.42l-0.85,-1.13l-0.16,-1.36l0.32,-1.74l-0.47,-0.89l-0.04,-1.5l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.46l-1.62,0.32l-0.83,1.8l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.31l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.15l0.86,-1.13l1.1,-0.67l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z", "name": "Dem. Rep. Congo"}, "CZ": {"path": "M458.44,265.89l1.23,1.2l1.49,0.27l0.09,1.1l1.36,0.81l0.58,-0.21l0.25,-0.67l1.12,0.29l0.53,1.3l1.67,0.21l0.69,1.14l-1.4,1.19l-0.12,0.65l-0.55,0.55l-1.59,0.21l-0.56,0.65l-1.03,-0.52l-1.03,0.17l-2.15,-1.12l-1.05,0.4l-1.18,1.3l-1.53,-1.0l-2.59,-2.49l-0.57,-2.36l1.48,-0.7l0.99,-1.01l1.72,-0.74l0.54,-0.59l0.73,0.29l0.87,-0.32Z", "name": "Czech Rep."}, "CY": {"path": "M504.35,321.02l0.49,0.34l-1.34,0.65l-0.91,-0.29l-0.26,-0.55l2.02,-0.14Z", "name": "Cyprus"}, "CR": {"path": "M211.34,387.89l0.48,1.0l1.61,1.62l-0.54,0.45l0.3,1.42l-0.25,1.2l-1.09,-0.6l-0.05,-1.25l-2.46,-1.43l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.05l-1.32,-0.95l0.31,-1.31l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z", "name": "Costa Rica"}, "CU": {"path": "M221.21,356.57l1.27,1.05l2.18,-0.29l4.43,3.42l2.09,0.45l-0.1,0.41l0.36,0.49l1.75,0.1l1.44,0.97l-3.07,0.42l-4.17,-0.03l0.79,-0.7l-0.04,-0.63l-1.2,-0.76l-1.49,-0.16l-0.7,-0.62l-0.56,-1.44l-0.4,-0.25l-1.34,0.1l-2.2,-0.68l-0.89,-0.6l-3.18,-0.41l-0.28,-0.17l0.6,-0.76l-0.36,-0.29l-2.73,-0.05l-1.7,1.33l-0.91,0.03l-0.61,0.71l-1.03,0.22l1.14,-1.35l1.01,-0.54l3.69,-1.04l3.98,0.22l2.21,0.87Z", "name": "Cuba"}, "SZ": {"path": "M500.35,482.11l0.5,2.14l-0.39,0.94l-1.04,0.22l-1.23,-1.25l-0.02,-0.69l0.84,-1.65l1.34,0.28Z", "name": "Swaziland"}, "SY": {"path": "M510.98,327.85l0.08,-1.44l0.55,-1.47l1.28,-1.07l0.12,-0.44l-0.41,-1.19l-1.14,-0.38l-0.19,-1.91l0.53,-1.11l1.29,-1.31l0.19,-1.27l0.6,0.24l2.61,-0.82l1.36,0.56l2.06,-0.01l2.95,-1.17l3.29,-0.29l-0.72,1.1l-1.49,1.11l0.23,2.19l-0.89,3.46l-10.14,6.13l-2.17,-0.92Z", "name": "Syria"}, "KG": {"path": "M621.37,297.76l-3.91,1.98l-0.95,1.31l-3.03,0.37l-1.14,2.06l-2.35,-0.39l-2.01,0.7l-2.39,1.55l0.09,1.02l-0.42,0.44l-4.5,0.47l-3.01,-1.02l-2.38,0.19l0.12,-0.96l2.3,0.46l1.14,-0.97l1.99,0.21l3.21,-2.37l-0.03,-0.67l-2.97,-1.75l-1.95,0.72l-1.27,-0.86l1.77,-1.84l-0.12,-0.64l-0.4,-0.18l0.36,-0.95l1.35,-0.39l4.01,1.14l0.5,-0.31l0.35,-1.82l1.08,-0.54l3.4,1.37l1.14,-0.35l7.61,0.43l1.15,1.13l1.27,0.45Z", "name": "Kyrgyzstan"}, "KE": {"path": "M506.26,414.59l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.69l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z", "name": "Kenya"}, "SS": {"path": "M481.71,393.21l1.07,-0.73l1.2,-3.2l1.36,-0.26l1.61,2.0l0.87,0.34l1.11,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.34l1.6,-0.2l2.83,-3.35l-0.32,-2.23l1.6,-0.53l-0.24,1.62l0.3,1.84l1.34,1.18l0.2,1.88l0.35,0.41l0.02,1.54l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.17l1.12,1.08l0.59,1.13l1.03,0.53l1.28,2.37l-4.42,3.99l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.33l-0.18,-0.94l-2.37,-1.61Z", "name": "S. Sudan"}, "SR": {"path": "M283.12,400.08l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.04l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.98l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.58,-0.47l1.75,-0.16Z", "name": "Suriname"}, "KH": {"path": "M689.52,379.15l0.5,1.47l-0.28,2.77l-4.0,1.87l-0.16,0.59l0.69,0.97l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-0.9,-1.17l-1.23,-2.56l-0.55,-2.88l1.4,-1.87l3.01,-0.46l2.23,0.35l2.01,0.99l0.51,-0.14l0.95,-1.49l1.74,0.75Z", "name": "Cambodia"}, "SV": {"path": "M195.8,379.9l1.41,-1.21l2.24,1.46l0.98,-0.27l0.44,0.21l-0.27,1.07l-1.14,-0.03l-3.65,-1.23Z", "name": "El Salvador"}, "SK": {"path": "M476.87,273.43l-1.2,2.33l-2.74,-1.08l-1.05,0.4l-0.52,0.78l-3.44,0.85l-0.48,0.81l-1.74,0.38l-1.88,-1.17l-0.2,-1.03l0.4,-0.94l1.02,0.01l0.86,-0.39l1.74,-2.23l0.83,0.19l0.76,-0.39l1.06,1.14l0.49,0.08l1.33,-0.74l1.26,0.34l1.63,-0.49l1.87,1.16Z", "name": "Slovakia"}, "KR": {"path": "M737.47,312.73l1.03,-0.11l0.87,-1.28l2.69,-0.35l0.32,-0.3l1.75,3.04l0.59,1.94l0.02,3.41l-0.81,1.45l-2.22,0.59l-1.92,1.21l-1.79,0.21l-0.2,-1.21l0.44,-2.44l-0.97,-2.83l1.45,-0.41l0.23,-0.6l-1.48,-2.32Z", "name": "Korea"}, "SI": {"path": "M456.18,286.22l-0.51,-1.56l0.2,-1.29l1.68,0.23l1.44,-0.83l2.08,-0.09l0.62,-0.56l0.24,0.62l-1.66,0.8l-0.43,1.53l-0.67,0.28l-0.24,0.94l-1.2,-0.55l-0.54,0.09l-0.33,0.43l-0.67,-0.05Z", "name": "Slovenia"}, "KP": {"path": "M736.77,312.06l-0.91,-0.45l-0.89,0.68l-1.23,-0.97l0.49,-1.01l0.5,-0.32l0.58,-2.78l-0.45,-0.8l-1.38,-0.34l-0.75,-0.55l1.69,-1.74l2.72,-1.75l1.57,-2.11l1.1,0.86l2.17,0.12l0.41,-0.49l-0.32,-1.43l3.54,-1.33l0.93,-1.56l1.03,1.28l-1.46,1.26l-0.79,1.2l0.02,2.38l-1.08,0.61l-1.41,1.55l-1.7,0.58l-1.23,1.17l-0.16,2.14l2.12,1.67l-0.16,0.33l-2.59,0.32l-1.14,1.41l-1.21,0.08Z", "name": "Dem. Rep. Korea"}, "KW": {"path": "M540.8,336.41l0.38,0.92l-0.17,0.78l0.61,1.64l-0.95,0.04l-0.83,-1.35l-1.59,-0.2l1.34,-2.02l1.21,0.17Z", "name": "Kuwait"}, "SN": {"path": "M390.09,377.95l0.12,1.57l0.49,1.48l0.96,0.82l0.05,1.3l-1.26,-0.19l-0.75,0.33l-1.84,-0.62l-5.84,-0.13l-2.54,0.51l-0.22,-1.04l1.78,0.04l2.01,-0.92l1.03,0.48l1.09,0.05l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.64l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.79l-0.82,-0.65l0.64,-0.36l1.81,-3.15l0.65,-0.64l1.04,0.19l1.39,-0.56l1.19,-0.02l2.72,1.39l3.03,3.53Z", "name": "Senegal"}, "SL": {"path": "M394.46,393.98l-1.73,1.98l-0.58,1.34l-2.07,-1.06l-1.22,-1.26l-0.65,-2.4l1.16,-0.97l0.67,-1.18l1.21,-0.52l1.66,0.0l1.03,1.65l0.52,2.42Z", "name": "Sierra Leone"}, "KZ": {"path": "M552.75,298.52l0.51,-1.47l-0.48,-1.19l-2.96,-1.32l-1.07,-2.94l-1.37,-0.98l-0.03,-0.45l1.95,0.27l0.45,-0.38l0.09,-2.29l1.75,-0.47l2.09,0.51l0.49,-0.34l0.45,-3.5l-0.45,-2.38l-0.42,-0.32l-2.41,0.17l-2.39,-0.84l-2.87,1.59l-2.15,0.7l-0.86,-0.4l0.15,-1.86l-1.6,-2.47l-2.02,-0.09l-1.83,-2.19l1.33,-2.64l-0.61,-1.04l1.66,-3.54l2.17,1.91l0.66,-0.26l0.29,-2.7l4.94,-4.15l3.67,-0.1l8.38,4.33l2.97,-1.63l3.74,-0.08l3.1,1.99l0.56,-0.13l0.6,-0.97l3.28,0.16l0.4,-0.27l0.63,-1.89l-0.15,-0.46l-3.62,-2.47l1.99,-1.65l-0.2,-1.23l2.05,-0.92l0.17,-0.58l-1.66,-2.63l0.88,-1.1l9.22,-1.46l1.35,-1.1l6.17,-1.58l2.26,-1.78l4.05,0.85l0.74,4.22l0.54,0.3l2.46,-0.98l2.8,1.27l-0.18,2.03l0.44,0.43l2.58,-0.3l4.83,-3.09l0.03,0.36l3.16,3.23l5.57,10.31l0.69,0.03l1.11,-1.75l3.11,2.07l3.78,-0.93l1.13,0.59l1.15,2.17l1.83,0.89l1.0,1.55l0.4,0.18l2.95,-0.47l1.06,1.89l-1.65,2.2l-1.92,0.33l-0.33,0.38l-0.12,3.61l-1.14,1.37l-4.73,-1.15l-0.48,0.28l-1.76,6.36l-1.1,0.68l-4.91,1.4l-0.26,0.52l2.13,5.72l-1.4,0.73l-0.08,1.73l-0.87,-0.28l-1.43,-1.27l-7.9,-0.45l-0.92,0.34l-3.74,-1.37l-1.63,0.99l-0.31,1.59l-3.7,-1.05l-1.87,0.48l-0.76,1.57l-1.35,0.6l-3.3,2.34l-1.12,2.31l-0.42,0.01l-0.93,-1.56l-2.86,-0.1l-0.45,-2.43l-0.39,-0.33l-0.81,-0.02l0.02,-3.32l-3.0,-2.52l-4.58,0.18l-2.74,0.47l-2.34,-3.04l-6.74,-4.23l-6.45,2.1l-0.28,0.38l0.1,12.31l-0.69,0.09l-1.62,-2.42l-1.83,-1.07l-3.13,0.66l-0.68,0.6Z", "name": "Kazakhstan"}, "SA": {"path": "M537.53,338.97l2.0,0.25l0.91,1.39l1.49,-0.06l0.88,2.19l1.29,0.79l0.51,1.03l1.56,1.08l-0.1,1.98l0.32,0.93l1.57,2.56l0.76,0.55l0.71,-0.04l1.37,4.1l7.83,1.63l0.51,-0.29l0.77,1.29l-1.56,5.0l-7.29,2.58l-7.31,1.05l-2.34,1.19l-1.88,2.79l-0.76,0.28l-0.83,-0.79l-0.91,0.12l-2.88,-0.52l-3.5,0.25l-0.86,-0.57l-0.58,0.15l-0.66,1.29l0.16,1.12l-0.43,0.33l-0.93,-1.42l-0.33,-1.18l-1.23,-0.89l-1.27,-2.1l-0.78,-2.27l-1.73,-1.83l-1.14,-0.49l-1.54,-2.37l-0.2,-3.5l-1.44,-3.02l-1.27,-1.19l-1.33,-0.58l-1.31,-3.5l-0.77,-0.7l-0.97,-2.05l-2.8,-4.2l-1.07,-0.17l0.59,-2.85l2.75,0.31l1.08,-0.88l0.6,-0.99l1.74,-0.36l0.65,-1.08l0.72,-0.43l0.1,-0.6l-2.09,-2.45l4.42,-1.3l0.48,-0.39l2.75,0.73l3.66,2.01l7.03,5.8l4.88,0.32Z", "name": "Saudi Arabia"}, "SE": {"path": "M480.3,192.35l-4.15,1.76l-2.43,4.19l0.32,3.66l-3.86,4.45l-4.93,4.95l-1.79,7.79l1.78,3.64l2.29,2.71l-2.14,5.19l-2.69,1.39l-0.95,7.87l-1.3,3.9l-2.71,-0.39l-0.43,0.25l-1.32,3.3l-2.29,0.16l-0.75,-3.94l-2.09,-5.18l-1.86,-6.56l1.04,-2.66l2.12,-3.53l0.83,-6.02l-1.6,-2.83l-0.15,-7.02l1.52,-4.93l2.18,0.09l0.39,-0.26l0.87,-2.28l-0.85,-2.14l3.83,-8.36l4.06,-11.45l2.12,0.02l0.4,-0.33l0.59,-3.35l4.31,1.0l0.49,-0.36l0.34,-4.24l1.04,-0.19l6.98,7.72l0.07,9.8l0.74,2.18Z", "name": "Sweden"}, "SD": {"path": "M505.98,389.25l-0.34,-0.78l-1.17,-0.91l-0.27,-1.62l0.29,-1.82l-0.34,-0.46l-1.16,-0.18l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.66l0.17,1.23l-2.44,3.01l-0.96,0.2l-2.39,-1.41l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.41l-2.45,-2.36l-2.07,0.54l-0.73,1.27l-0.6,2.11l-1.25,0.58l-0.75,-0.62l0.27,-2.67l-1.48,-1.78l-0.22,-1.49l-0.92,-0.97l-0.02,-1.3l-0.57,-1.17l-0.69,-0.16l0.7,-1.31l-0.18,-1.15l0.65,-0.63l0.03,-0.55l-0.36,-0.42l1.56,-3.02l1.91,0.16l0.43,-0.4l-0.1,-11.14l2.49,-0.01l0.4,-0.4l-0.0,-4.96l29.02,0.0l0.65,2.11l-0.49,0.67l0.36,2.75l0.93,3.22l2.12,1.59l-0.9,1.07l-1.72,0.4l-0.98,0.91l-1.42,5.73l0.24,1.16l-0.38,2.09l-0.97,2.4l-1.53,1.32l-1.32,2.93l-1.22,0.86l-0.37,1.34Z", "name": "Sudan"}, "DO": {"path": "M241.8,368.82l0.05,-0.67l-0.47,-0.75l0.43,-0.45l0.19,-1.02l-0.09,-1.57l1.66,0.01l1.99,0.64l0.33,0.69l1.29,0.19l0.33,0.77l0.99,0.09l0.81,0.64l-0.46,0.53l-1.13,-0.48l-1.87,-0.01l-1.27,0.6l-0.75,-0.56l-1.01,0.55l-0.79,1.43l-0.23,-0.62Z", "name": "Dominican Rep."}, "DJ": {"path": "M528.43,386.01l-0.45,0.67l-0.58,-0.25l-1.51,0.13l-0.18,-1.02l1.45,-1.97l0.83,0.17l0.77,-0.44l0.2,1.01l-1.21,0.52l-0.06,0.7l0.73,0.48Z", "name": "Djibouti"}, "DK": {"path": "M452.3,246.5l-1.22,2.88l-2.11,-1.99l-0.26,-1.39l2.98,-1.2l0.61,1.7ZM447.78,242.9l-0.32,0.89l-0.89,-0.07l-1.8,3.21l0.54,2.1l-1.13,0.47l-1.58,-0.48l-0.91,-2.19l-0.07,-4.44l0.99,-2.3l2.0,-0.26l1.11,-1.38l1.3,-0.85l-0.05,1.54l-0.73,1.69l0.3,1.28l1.25,0.79Z", "name": "Denmark"}, "DE": {"path": "M453.15,278.66l-0.56,-0.42l-1.2,-0.11l-1.89,0.66l-2.12,-0.15l-0.57,0.71l-0.83,-0.67l-0.98,0.09l-2.56,-1.08l-0.49,0.15l-0.39,0.62l-1.46,-0.02l0.26,-2.16l1.24,-2.54l-0.28,-0.57l-3.51,-0.68l-0.95,-0.81l0.12,-1.49l-0.49,-1.0l0.27,-2.61l-0.38,-3.76l1.43,-0.25l0.63,-1.53l0.65,-3.87l-0.43,-1.44l0.31,-0.56l1.61,-0.18l0.34,0.68l0.67,0.07l1.7,-2.09l-0.57,-3.77l1.35,0.41l1.33,-0.45l0.28,1.46l2.27,0.9l-0.02,1.24l0.52,0.39l2.55,-0.8l1.33,-1.07l2.53,1.51l1.08,1.24l0.51,1.88l-0.61,1.39l0.88,1.43l0.58,2.06l-0.16,1.52l0.87,2.18l-0.54,0.2l-0.49,-0.34l-0.54,0.07l-0.57,0.68l-1.71,0.73l-1.01,1.02l-1.75,0.82l-0.2,0.5l0.84,2.98l2.45,2.3l-0.71,1.4l-1.0,0.83l0.33,2.27Z", "name": "Germany"}, "YE": {"path": "M528.26,376.46l0.26,-0.43l-0.22,-1.03l0.28,-0.61l-0.09,-0.91l0.92,-0.7l-0.08,-1.37l0.39,-0.76l1.01,0.48l3.33,-0.27l3.76,0.42l0.95,0.82l1.36,-0.59l1.74,-2.67l2.18,-1.11l6.86,-0.96l2.48,5.52l-1.64,0.77l-0.56,1.93l-6.23,2.19l-2.29,1.82l-1.93,0.05l-1.41,1.03l-4.24,0.75l-1.72,1.5l-3.28,0.19l-0.52,-1.19l0.02,-1.52l-1.34,-3.33Z", "name": "Yemen"}, "DZ": {"path": "M441.47,315.57l-0.34,1.19l0.39,2.88l-0.55,2.35l-1.58,1.92l0.36,2.53l1.92,1.66l0.17,0.85l1.43,1.1l1.85,7.66l0.13,1.23l-0.57,5.23l0.2,1.59l-0.88,1.03l-0.02,0.5l1.41,1.93l0.14,1.24l0.89,1.54l0.5,0.17l0.97,-0.42l1.72,1.11l0.83,1.29l-8.23,4.95l-7.23,5.24l-3.43,1.15l-2.3,0.21l-0.28,-1.63l-2.56,-1.12l-0.67,-1.28l-26.12,-18.48l0.01,-3.67l3.77,-1.98l2.44,-0.43l2.12,-0.8l1.08,-1.5l2.81,-1.11l0.34,-2.2l1.34,-0.31l1.04,-1.0l3.46,-0.73l0.36,-1.59l-0.58,-0.56l-0.83,-3.02l-0.18,-1.95l-0.8,-1.65l2.06,-1.44l2.62,-0.52l1.71,-1.32l2.31,-0.91l8.23,-0.8l1.51,0.41l2.27,-1.19l2.45,-0.02l0.91,0.65l1.38,-0.05Z", "name": "Algeria"}, "US": {"path": "M892.73,206.44l1.34,0.72l1.36,-0.5l1.85,1.36l2.21,0.69l-1.59,1.04l-2.57,-2.02l-2.38,0.18l-0.3,-0.25l0.09,-1.21ZM183.2,272.56l0.38,1.78l1.12,0.96l4.22,0.82l2.39,1.15l2.19,-0.43l2.01,0.64l-1.73,0.85l-3.49,3.04l-0.14,0.83l0.52,0.39l2.3,-0.7l1.8,1.17l5.17,-2.8l-0.37,0.89l0.24,0.53l1.35,0.45l1.71,1.35l4.7,-1.01l0.4,0.77l1.58,0.45l0.68,0.78l-1.42,0.21l-2.2,-0.37l-3.59,1.03l-2.72,3.73l0.35,0.91l0.62,-0.0l0.61,-0.75l-1.43,5.39l0.29,3.47l0.67,1.77l0.61,0.48l1.03,-0.07l0.75,-0.43l1.59,-2.19l0.13,-2.45l-0.82,-2.2l0.11,-1.33l1.2,-2.74l0.42,-0.36l0.48,0.84l0.4,-0.3l0.4,-1.6l0.59,-0.51l0.24,-0.94l1.66,0.56l1.67,1.25l-0.03,2.8l-1.28,1.3l0.02,1.21l0.87,0.37l1.67,-1.46l0.49,0.18l0.51,3.02l-2.51,4.23l0.17,0.59l1.54,0.69l1.51,0.19l1.93,-0.49l4.72,-2.41l2.16,-2.03l-0.08,-1.39l0.77,-0.26l3.91,0.4l2.14,-1.19l0.19,-0.39l-0.31,-1.71l2.31,-2.21l1.0,-0.57l8.31,-0.03l0.57,-0.94l1.9,-0.88l0.92,-1.72l0.75,-2.75l1.58,-2.29l0.94,0.69l1.44,-0.54l0.81,0.77l-0.0,4.78l1.98,3.01l-2.38,1.52l-5.36,2.37l-1.81,3.03l0.01,1.98l0.83,1.79l0.78,0.27l-6.43,1.12l-2.21,1.0l-0.21,0.48l0.45,0.28l3.52,-0.57l-2.73,0.77l-1.77,-0.26l-0.76,0.91l0.23,0.65l0.34,0.07l-0.43,1.87l-1.26,1.73l-1.46,-1.16l-0.49,-0.06l-0.18,0.46l0.52,1.74l0.61,0.64l0.03,0.92l-0.94,1.5l-1.22,-1.31l-0.28,-2.52l-0.35,-0.35l-0.42,0.27l-0.48,1.39l0.34,1.57l-0.97,-0.29l-0.48,0.22l0.16,0.5l1.54,0.91l0.1,2.78l0.78,0.52l0.53,3.76l-1.43,2.04l-2.47,0.86l-1.71,1.78l-1.31,0.27l-1.27,1.11l-0.43,1.05l-2.7,1.91l-2.64,3.21l-0.45,2.23l0.45,2.17l0.85,2.51l1.09,2.0l0.04,1.26l1.16,3.2l-0.18,2.82l-0.55,1.49l-0.47,0.22l-0.88,-0.24l-0.33,-1.01l-1.03,-0.79l-2.75,-5.4l0.46,-2.04l-0.76,-1.66l-1.95,-2.41l-1.47,-0.55l-2.38,1.23l-1.46,-1.42l-1.79,-0.75l-2.78,0.36l-2.27,-0.31l-2.03,0.23l-1.04,0.45l-0.18,0.57l0.39,0.67l0.19,1.47l-0.9,-0.23l-0.84,0.49l-1.57,-0.08l-2.08,-1.52l-2.08,0.34l-1.91,-0.65l-3.74,0.89l-2.39,2.17l-2.54,1.28l-1.45,1.47l-0.61,1.43l-0.02,1.98l0.38,1.9l-1.99,-0.55l-1.81,-0.8l-1.25,-3.25l-1.44,-1.57l-2.24,-3.73l-1.76,-1.15l-2.28,-0.01l-1.71,2.18l-1.74,-0.72l-1.16,-0.78l-1.52,-3.14l-3.94,-3.35l-4.34,-0.0l-0.4,0.4l-0.0,0.81l-6.5,0.02l-9.04,-3.34l-0.33,-0.75l-5.69,0.52l-0.43,-1.37l-1.62,-1.72l-1.14,-0.41l-0.55,-0.94l-1.27,-0.14l-1.02,-0.83l-2.22,-0.29l-0.43,-0.33l-0.36,-1.7l-2.4,-3.06l-2.02,-4.21l-0.05,-0.96l-2.93,-3.59l-0.33,-2.54l-1.3,-1.83l0.52,-2.65l-0.09,-2.87l-0.78,-2.59l0.96,-3.2l0.61,-6.46l-0.46,-4.91l-1.48,-4.8l0.09,-0.23l3.09,1.09l1.27,3.33l0.71,0.07l0.68,-1.24l-1.12,-5.71l68.79,-0.0l0.4,-0.4l0.13,-1.09ZM32.37,157.48l1.75,3.33l0.67,0.06l0.98,-1.29l3.62,0.39l-0.12,1.35l0.27,0.41l3.83,1.28l2.65,-0.7l5.14,2.3l4.86,0.72l1.87,0.93l3.47,-1.11l3.64,2.11l2.52,0.95l-0.03,56.12l0.38,0.4l2.37,0.14l2.29,1.31l3.91,5.31l0.63,0.04l2.4,-2.69l2.1,-1.34l1.18,2.24l3.95,4.14l4.1,8.6l4.22,2.91l0.06,2.46l-1.03,1.56l-1.12,-1.31l-2.06,-1.31l-0.68,-3.73l-3.26,-3.82l-1.32,-4.34l-0.33,-0.28l-6.34,-0.42l-2.8,-1.31l-5.26,-5.09l-6.77,-2.72l-3.55,0.39l-4.79,-2.25l-3.33,-2.21l-2.78,1.09l-0.25,0.43l0.46,3.15l-3.97,1.29l-2.26,1.69l-2.25,0.84l-0.29,-2.33l1.07,-4.71l2.51,-1.5l0.15,-0.53l-0.69,-1.3l-0.62,-0.11l-3.19,2.88l-1.77,3.43l-3.56,3.49l-0.04,0.53l1.65,2.14l-2.16,3.15l-5.1,3.33l-0.76,2.13l-3.78,2.28l-0.91,2.19l-2.68,1.74l-1.82,-0.27l-6.95,4.17l-3.92,1.13l2.36,-1.94l2.5,-1.4l2.58,-2.35l3.26,-0.66l1.2,-1.79l3.42,-2.69l2.56,-2.83l0.42,-3.52l1.25,-2.78l-0.09,-0.45l-0.46,-0.07l-2.63,1.33l-0.6,-0.62l-0.6,0.03l-1.02,1.31l-1.33,-1.98l-0.71,0.08l-0.3,0.77l-0.56,-1.45l-0.62,-0.17l-2.39,1.85l-1.03,-0.0l-0.18,-2.46l0.44,-1.74l-1.7,-2.14l-0.41,-0.11l-3.01,0.89l-1.94,-2.17l-1.61,-1.16l-0.11,-2.96l-1.78,-2.05l0.88,-2.78l2.01,-2.96l0.87,-2.7l1.66,-0.33l1.59,0.82l0.5,-0.12l1.86,-2.47l1.93,0.32l1.91,-1.75l-0.34,-2.97l-1.22,-1.04l1.59,-1.93l-0.33,-0.65l-1.69,0.11l-2.66,1.27l-0.72,1.08l-1.92,-1.11l-3.43,0.63l-3.41,-1.3l-1.05,-2.33l-2.87,-3.16l3.14,-2.29l5.47,-2.98l1.51,0.0l-0.29,2.67l0.42,0.44l5.29,-0.24l0.34,-0.59l-2.03,-3.88l-3.12,-2.51l-1.79,-3.25l-2.4,-2.83l-3.25,-2.04l1.19,-3.05l4.45,-0.33l3.16,-3.2l0.69,-3.62l2.43,-3.32l2.42,-0.86l4.6,-3.26l2.51,0.36l3.66,-3.91l3.4,1.47ZM37.56,239.39l-2.21,1.54l-0.94,-0.87l-0.32,-1.79l3.24,-2.14l1.37,0.26l0.77,1.05l-1.9,1.94ZM31.06,363.53l0.98,0.48l0.75,0.91l-1.77,1.1l-0.44,-1.57l0.48,-0.92ZM29.32,361.52l0.19,0.06l0.11,0.07l-0.18,0.04l-0.12,-0.16ZM25.2,359.55l0.2,0.24l-0.14,-0.02l-0.05,-0.23ZM5.91,226.07l-1.09,0.55l-2.4,-1.69l1.72,-0.6l1.6,0.37l0.17,1.37Z", "name": "United States"}, "UY": {"path": "M286.86,504.69l-0.94,1.64l-2.58,1.54l-1.67,-0.55l-1.42,0.28l-2.4,-1.28l-1.51,0.09l-1.28,-1.4l0.16,-1.65l0.56,-0.83l-0.02,-2.91l1.22,-5.04l1.18,-0.23l2.36,2.12l1.08,0.03l4.36,3.37l1.24,1.73l-0.98,1.58l0.62,1.52Z", "name": "Uruguay"}, "LB": {"path": "M510.37,325.96l-0.89,0.55l1.84,-3.86l0.6,0.08l0.24,0.7l-1.15,0.96l-0.64,1.57Z", "name": "Lebanon"}, "LA": {"path": "M689.54,378.29l-1.76,-0.75l-0.5,0.15l-0.94,1.48l-1.33,-0.65l0.62,-0.99l0.11,-2.2l-2.04,-2.45l-0.25,-2.69l-1.9,-2.14l-2.15,-0.31l-0.79,0.93l-1.12,0.06l-1.06,-0.4l-2.05,1.22l-0.04,-1.63l0.61,-2.74l-0.36,-0.49l-1.35,-0.1l-0.11,-1.26l-0.97,-0.9l0.33,-0.61l1.63,-1.34l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.75l0.7,-0.21l1.28,1.86l1.11,2.41l0.36,0.23l2.82,0.02l0.72,1.72l-1.4,0.67l-0.72,0.95l0.13,0.59l2.91,1.54l3.61,5.34l1.88,1.81l0.57,1.65l-0.35,1.99Z", "name": "Lao PDR"}, "TW": {"path": "M724.01,356.0l-0.73,1.52l-0.9,-1.56l-0.26,-1.81l1.38,-2.53l1.73,-1.8l0.64,0.46l-1.86,5.73Z", "name": "Taiwan"}, "TT": {"path": "M266.64,389.17l0.28,-1.17l1.13,-0.22l-0.06,1.21l-1.35,0.18Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.19,301.28l3.65,1.31l3.06,-0.48l2.09,0.29l3.13,-1.74l2.44,-0.15l2.19,1.49l0.35,0.95l-0.23,1.5l0.24,0.43l2.34,1.31l-1.23,0.67l-0.2,0.43l0.75,3.55l-0.42,1.23l1.16,2.15l-0.57,0.25l-0.9,-0.73l-2.91,-0.41l-1.25,0.5l-4.23,0.45l-2.81,1.15l-1.9,0.01l-1.54,-0.57l-2.56,0.81l-0.66,-0.49l-0.64,0.29l-0.12,1.59l-0.89,0.9l-0.49,-0.75l0.8,-1.4l-0.41,-0.19l-1.43,0.25l-2.0,-0.69l-2.04,1.79l-3.49,0.32l-2.14,-1.66l-2.7,-0.1l-0.87,1.34l-1.36,0.29l-2.28,-1.56l-2.71,-0.02l-1.37,-2.89l-1.7,-1.68l1.09,-2.23l-0.08,-0.46l-1.31,-1.28l2.41,-2.71l3.68,-0.13l0.36,-0.25l0.94,-2.24l4.48,0.41l3.23,-2.2l2.8,-0.91l3.98,-0.07l4.28,2.31ZM488.78,302.77l-1.7,1.44l-0.51,-0.99l1.37,-2.91l-0.78,-0.93l1.78,-0.74l1.78,0.37l0.45,1.31l1.81,0.89l-0.14,0.26l-2.76,0.17l-1.31,1.13Z", "name": "Turkey"}, "LK": {"path": "M624.16,398.87l-1.82,0.48l-0.99,-1.67l-0.42,-3.47l0.95,-3.45l1.21,0.98l2.26,4.21l-0.34,2.34l-0.85,0.58Z", "name": "Sri Lanka"}, "LV": {"path": "M489.13,238.44l0.98,0.86l0.21,2.15l0.72,2.39l-3.68,2.17l-2.21,-1.98l-1.3,-0.34l-0.27,-0.73l-0.45,-0.25l-2.41,0.44l-4.15,-0.29l-2.48,1.13l0.07,-2.68l1.15,-2.72l1.91,-1.29l2.14,3.3l2.01,-0.09l0.38,-0.35l0.45,-3.34l1.74,-0.68l3.03,2.19l2.16,0.1Z", "name": "Latvia"}, "LT": {"path": "M486.92,246.68l0.19,1.58l-2.02,1.5l-0.54,2.27l-2.48,1.47l-2.05,-0.02l-0.5,-1.08l-1.3,-0.59l-0.07,-2.33l-1.21,-0.74l-2.38,-0.69l-0.45,-3.18l2.51,-1.21l4.09,0.28l2.23,-0.39l0.52,0.88l1.23,0.27l2.22,1.99Z", "name": "Lithuania"}, "LU": {"path": "M436.07,271.5l-0.48,-0.1l0.29,-1.66l0.29,0.51l-0.1,1.25Z", "name": "Luxembourg"}, "LR": {"path": "M399.36,395.85l0.18,1.54l-0.49,1.0l0.08,0.47l2.47,1.8l-0.33,2.81l-2.65,-1.13l-5.78,-4.62l0.58,-1.32l2.1,-2.34l0.86,-0.22l0.77,1.14l-0.14,0.86l0.59,0.87l1.0,0.14l0.76,-0.99Z", "name": "Liberia"}, "LS": {"path": "M491.05,494.85l-0.48,0.15l-1.5,-1.78l1.12,-1.53l2.18,-1.51l1.52,1.34l-0.99,1.94l-1.23,0.4l-0.62,0.98Z", "name": "Lesotho"}, "TH": {"path": "M670.27,385.68l-1.41,3.9l0.15,2.01l0.38,0.36l1.38,0.07l0.9,2.05l0.55,2.34l1.4,1.45l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.55,-2.64l-0.73,0.41l0.95,-3.91l2.16,-4.25ZM670.67,384.59l-0.92,-2.2l-0.26,-2.64l-2.14,-3.1l0.72,-0.5l0.89,-2.62l-2.62,-3.66l-0.99,-1.9l0.88,-0.52l1.05,-2.63l1.74,-0.19l2.59,-1.63l0.76,0.58l0.13,1.42l0.37,0.36l1.23,0.09l-0.52,2.34l0.05,2.46l0.6,0.33l2.43,-1.45l0.77,0.4l1.47,-0.08l0.71,-0.89l1.48,0.14l1.71,1.92l0.25,2.69l1.92,2.15l-0.1,1.92l-0.61,0.87l-2.22,-0.33l-3.5,0.65l-1.6,2.14l0.36,2.6l-1.51,-0.79l-1.85,-0.01l0.28,-1.54l-0.4,-0.47l-2.21,0.02l-0.4,0.37l-0.19,2.77l-0.34,0.94Z", "name": "Thailand"}, "TF": {"path": "M596.66,558.28l-3.18,0.21l-0.05,-1.59l0.4,-1.7l1.28,0.9l2.08,0.42l-0.53,1.76Z", "name": "Fr. S. Antarctic Lands"}, "TG": {"path": "M422.7,387.47l-0.1,1.24l1.53,1.53l0.08,1.1l0.5,0.65l-0.11,5.64l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.13l0.53,-2.2l-0.63,-1.16l-0.22,-3.7l-1.01,-1.41l0.07,-0.29l1.37,0.03Z", "name": "Togo"}, "TD": {"path": "M480.25,365.02l0.12,9.75l-2.1,0.05l-1.14,1.91l-0.69,1.65l0.34,0.73l-0.66,0.92l0.24,0.9l-0.86,1.97l0.45,0.5l0.59,-0.1l0.34,0.65l0.03,1.39l0.9,1.06l-1.45,0.43l-1.27,1.03l-1.83,2.78l-2.16,1.08l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.62l-2.11,1.69l-2.85,0.87l-1.09,-0.57l-0.73,0.67l-1.12,0.1l-1.1,-3.13l-1.25,-0.64l-1.22,-1.23l0.3,-0.65l3.01,0.04l0.35,-0.6l-1.3,-2.21l-0.08,-3.33l-0.97,-1.68l0.22,-1.06l-0.38,-0.48l-1.22,-0.04l0.0,-1.27l-0.98,-1.08l0.97,-3.05l3.25,-2.68l0.13,-3.38l0.95,-5.29l0.52,-1.1l-0.1,-0.47l-0.91,-0.8l-0.19,-0.98l-0.8,-0.6l-0.55,-3.77l2.11,-1.24l19.56,10.1Z", "name": "Chad"}, "LY": {"path": "M483.49,331.4l-0.77,1.19l0.3,1.46l-0.6,1.92l0.73,2.26l0.0,25.02l-2.48,0.01l-0.41,0.87l-19.41,-10.02l-4.41,2.35l-1.37,-1.37l-3.82,-1.13l-1.14,-1.71l-1.98,-1.28l-1.22,0.33l-0.67,-1.15l-0.16,-1.3l-1.29,-1.77l0.88,-1.24l-0.07,-4.54l0.43,-2.38l-0.86,-3.65l1.13,-0.8l0.22,-1.23l-0.21,-1.1l3.49,-2.78l0.28,-2.06l2.44,0.85l1.18,-0.22l1.97,0.47l3.14,1.26l1.37,2.7l5.71,1.77l2.64,1.43l1.62,-0.76l1.29,-1.41l-0.45,-2.46l0.67,-1.22l1.67,-1.29l1.56,-0.37l3.13,0.56l1.09,1.36l3.98,0.83l0.38,0.6Z", "name": "Libya"}, "AE": {"path": "M550.76,353.19l1.89,-0.42l3.84,0.02l4.77,-4.92l0.19,0.38l0.26,1.67l-0.82,0.01l-0.39,0.35l-0.08,2.12l-0.82,0.64l-0.01,1.0l-0.67,1.03l-0.39,1.45l-7.07,-1.29l-0.71,-2.04Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.68,386.52l0.53,0.75l-0.02,1.07l-1.07,1.78l0.95,2.01l0.42,0.23l1.4,-0.44l0.56,-1.84l-0.77,-1.17l-0.1,-1.49l2.83,-0.94l0.26,-0.49l-0.28,-0.97l0.3,-0.28l0.66,1.32l1.96,0.26l1.4,1.23l0.08,0.69l0.39,0.35l4.81,-0.23l1.49,1.12l1.92,0.31l1.67,-0.84l0.22,-0.61l3.44,-0.14l-0.18,0.56l0.86,1.2l2.19,0.35l1.68,1.1l0.37,1.87l0.41,0.32l1.56,0.17l-1.66,1.36l-0.22,0.92l0.66,0.98l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.55l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.47l-4.02,0.36l-1.82,-2.11l-1.57,-0.33l-2.99,0.23l-1.06,-0.98l0.25,-1.24l-0.2,-1.02l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.81l1.9,-2.12Z", "name": "Venezuela"}, "AF": {"path": "M600.86,316.06l-1.73,1.47l0.72,3.0l-1.1,1.13l-0.02,1.35l-0.49,0.78l-2.15,-0.09l-0.37,0.58l0.8,1.63l-1.4,0.74l-1.06,1.8l0.07,1.81l-0.66,0.56l-0.91,-0.22l-1.91,0.38l-0.48,0.81l-1.88,0.14l-1.49,1.9l-0.08,2.2l-2.91,1.07l-1.64,-0.24l-0.72,0.58l-1.41,-0.31l-2.4,0.41l-3.54,-1.24l1.98,-2.49l-0.21,-1.88l-0.3,-0.34l-1.63,-0.42l-0.19,-1.69l-0.76,-2.19l0.96,-1.48l-0.18,-0.59l-0.75,-0.31l1.48,-5.22l2.12,0.97l2.14,-0.38l0.74,-1.45l1.77,-0.42l1.54,-1.0l0.62,-2.51l1.88,-0.54l0.48,-0.87l0.93,0.61l2.13,0.12l2.55,1.01l1.96,-0.89l0.64,0.46l0.58,-0.13l0.69,-1.23l1.58,-0.09l0.47,-0.64l0.24,-1.17l0.79,-0.81l0.81,0.43l-0.19,0.66l0.71,0.58l-0.09,2.61l1.28,1.05ZM601.25,315.96l1.86,-0.88l1.42,-1.28l3.93,0.22l0.11,0.23l-2.26,0.81l-5.06,0.9Z", "name": "Afghanistan"}, "IQ": {"path": "M530.81,314.51l0.79,0.72l1.26,-0.3l1.46,3.35l1.63,1.01l0.15,1.38l-1.23,1.13l-0.53,2.67l1.73,2.85l3.12,1.72l1.16,2.02l-0.38,1.98l0.39,0.48l0.41,-0.0l0.02,1.16l0.79,1.02l-2.51,-0.11l-1.71,2.58l-4.3,-0.21l-7.02,-5.78l-3.73,-2.06l-2.89,-0.78l-0.86,-3.1l5.46,-3.23l0.95,-3.7l-0.2,-2.14l1.28,-0.77l1.22,-1.86l0.86,-0.39l2.67,0.37Z", "name": "Iraq"}, "IS": {"path": "M384.17,190.14l-0.45,3.88l2.67,3.88l-3.04,4.17l-9.15,4.83l-9.47,-2.42l1.99,-2.05l-0.1,-0.63l-4.53,-2.38l3.43,-0.89l0.3,-0.41l-0.11,-1.75l-0.3,-0.36l-4.81,-1.29l1.43,-3.39l3.37,-0.82l3.74,4.02l0.56,0.03l3.59,-3.17l2.9,1.61l0.45,-0.04l3.95,-3.21l3.58,0.38Z", "name": "Iceland"}, "IR": {"path": "M533.43,314.24l-1.29,-2.38l0.43,-1.06l-0.72,-3.4l1.03,-0.56l0.32,0.9l1.26,1.49l2.06,0.57l1.12,-0.18l2.89,-2.33l0.6,-0.15l0.42,0.54l-0.74,1.37l0.06,0.46l1.56,1.68l0.66,0.05l0.67,1.99l2.55,0.89l1.88,1.61l3.7,0.53l3.91,-0.83l0.47,-0.8l2.17,-0.66l1.65,-1.68l1.49,0.08l1.19,-0.57l1.57,0.26l2.84,1.62l1.88,0.32l2.77,2.69l1.78,0.2l0.18,2.19l-1.69,5.93l0.23,0.49l0.64,0.26l-0.85,1.58l0.81,2.33l0.19,1.83l0.3,0.35l1.63,0.43l0.16,1.43l-2.16,2.5l-0.01,0.51l2.21,3.19l2.35,1.3l0.06,2.26l1.24,0.74l0.12,0.75l-3.31,1.33l-1.08,3.14l-9.68,-1.74l-0.99,-3.18l-1.43,-0.75l-2.18,0.48l-2.47,1.31l-2.82,-0.86l-2.46,-2.11l-2.41,-0.84l-3.42,-6.37l-0.49,-0.2l-1.17,0.41l-1.43,-0.86l-0.51,0.09l-0.64,0.77l-0.97,-1.07l-0.02,-1.4l-0.71,-0.39l0.27,-1.92l-1.29,-2.25l-3.13,-1.73l-1.59,-2.62l0.51,-2.08l1.3,-1.32l-0.19,-1.79l-1.73,-1.17l-1.57,-3.6Z", "name": "Iran"}, "AM": {"path": "M537.0,308.96l-0.27,0.03l-1.24,-2.34l-0.92,0.01l-0.62,-0.73l-0.69,-0.08l-0.96,-0.89l-1.58,-0.69l0.2,-1.3l-0.28,-0.9l2.73,-0.41l1.13,1.15l-0.21,1.0l1.06,0.9l-0.5,0.74l0.08,0.53l2.05,1.37l0.04,1.62Z", "name": "Armenia"}, "AL": {"path": "M470.32,297.19l0.73,0.03l0.93,0.99l0.13,0.95l-0.3,1.27l0.36,1.43l1.02,0.9l-1.82,3.2l-0.18,-0.65l-1.26,-1.0l-0.19,-1.36l0.53,-3.17l-0.55,-1.64l0.61,-0.94Z", "name": "Albania"}, "AO": {"path": "M461.55,429.93l1.26,3.16l1.94,2.36l2.47,-0.54l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.2l0.48,1.02l-0.34,1.52l0.18,1.56l0.83,1.04l-0.13,2.87l0.54,0.39l3.96,-0.41l-0.1,1.81l0.39,1.06l-0.24,1.45l-4.7,-0.03l-0.4,0.39l-0.12,8.23l2.93,3.55l-3.84,0.9l-5.89,-0.36l-1.88,-1.27l-10.47,0.23l-1.3,-1.03l-1.85,-0.16l-2.4,0.78l-0.15,-1.08l0.33,-2.2l1.0,-3.5l1.35,-3.24l2.24,-2.82l0.33,-2.07l-0.13,-1.54l-0.8,-1.08l-1.21,-2.88l0.87,-1.62l-1.27,-4.13l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,428.77l-0.47,-1.26l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.04Z", "name": "Angola"}, "AR": {"path": "M258.05,471.85l1.38,1.83l0.68,-0.08l0.87,-1.93l2.39,0.09l4.94,4.92l2.17,0.51l2.99,1.99l2.47,1.04l0.26,0.88l-2.38,4.1l0.23,0.58l5.39,1.21l2.13,-0.46l2.46,-2.25l0.49,-2.47l0.76,-0.32l0.98,1.25l-0.04,1.9l-3.67,2.62l-2.85,2.79l-3.42,4.08l-1.3,5.37l0.01,2.9l-0.54,0.77l-0.36,3.52l3.15,2.82l-0.31,1.9l1.54,1.59l-0.1,1.23l-2.3,3.86l-3.55,1.64l-4.91,0.65l-2.7,-0.32l-0.43,0.5l0.5,1.83l-0.49,2.34l0.4,1.59l-1.21,0.94l-2.34,0.42l-2.29,-1.15l-1.41,0.93l0.41,3.97l1.69,1.02l1.41,-0.77l0.39,0.92l-2.08,0.99l-2.01,2.14l-0.47,3.69l-0.49,1.57l-2.34,0.12l-2.08,2.01l-0.63,3.07l2.46,2.67l2.21,0.74l-0.73,2.83l-2.84,2.04l-1.73,4.57l-2.18,1.47l-1.15,1.98l0.77,4.43l1.16,1.7l-2.44,-0.66l-5.82,-0.52l-0.91,-2.06l0.05,-2.9l-0.46,-0.4l-1.41,0.21l-0.69,-1.12l-0.2,-3.82l1.89,-1.73l0.79,-2.4l-0.26,-1.97l1.31,-3.13l0.91,-4.79l-0.23,-1.96l1.06,-0.95l-0.27,-1.32l-1.01,-0.76l0.63,-1.12l-0.05,-0.46l-1.05,-1.22l-0.53,-3.58l0.97,-0.92l-0.42,-4.02l1.21,-6.04l1.53,-1.49l-0.75,-3.06l-0.01,-2.68l1.79,-1.91l0.05,-2.76l1.43,-3.06l0.01,-2.77l-0.69,-0.77l-1.09,-4.84l1.48,-2.87l-0.19,-2.93l0.85,-2.48l1.59,-2.58l1.73,-1.72l0.05,-0.51l-0.61,-0.89l0.45,-0.89l-0.07,-4.37l2.71,-1.48l0.86,-2.84l-0.22,-0.73l1.77,-2.07l2.9,0.58ZM256.68,580.89l-1.95,0.18l-1.42,-1.53l-3.82,-0.12l-0.0,-7.37l1.57,3.7l3.26,2.57l3.18,1.01l-0.81,1.56Z", "name": "Argentina"}, "AU": {"path": "M705.79,484.09l0.27,0.04l0.18,-0.47l-0.49,-1.51l0.92,1.16l0.45,0.15l0.28,-0.39l-0.09,-1.61l-1.99,-3.77l1.09,-3.43l-0.24,-1.62l0.34,-0.64l0.38,1.08l0.43,-0.19l0.99,-1.75l1.91,-0.85l1.29,-1.18l1.81,-0.93l0.95,-0.17l0.93,0.27l1.92,-0.97l1.46,-0.29l1.03,-0.82l1.44,0.04l2.78,-0.86l1.36,-1.18l0.71,-1.48l1.41,-1.28l0.3,-2.63l1.27,-1.61l0.78,1.67l0.54,0.19l1.07,-0.52l0.15,-0.59l-0.73,-1.02l0.45,-0.73l0.78,0.4l0.58,-0.3l0.28,-1.84l1.87,-2.17l1.12,-0.39l0.28,-0.58l0.62,0.17l0.5,-0.36l0.03,-0.38l1.87,-0.58l1.65,1.06l1.35,1.49l3.4,0.39l0.44,-0.54l-0.46,-1.24l1.05,-1.82l1.04,-0.62l0.14,-0.55l-0.25,-0.41l0.88,-1.19l1.31,-0.78l1.31,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.31l-0.92,-0.78l1.48,0.56l1.41,1.08l2.11,0.65l0.81,-0.21l1.4,0.71l1.69,-0.67l0.8,0.19l0.64,-0.33l0.71,0.78l-1.33,1.96l-0.71,0.07l-0.35,0.51l0.24,0.87l-1.52,2.38l0.12,1.06l2.15,1.66l1.97,0.86l3.04,2.4l1.97,0.66l0.54,0.89l2.72,0.87l1.84,-1.12l2.07,-6.05l-0.43,-3.63l0.3,-1.75l0.47,-0.87l-0.32,-0.69l1.09,-3.31l0.46,-0.47l0.4,0.71l0.17,1.52l0.65,0.53l0.15,1.04l0.85,1.22l0.12,2.41l0.9,2.03l0.57,0.18l1.3,-0.79l1.69,1.73l-0.2,1.09l0.53,2.23l0.39,1.32l0.68,0.49l0.6,1.99l-0.2,1.51l0.81,1.79l2.87,1.56l3.14,2.21l-0.12,0.78l1.38,1.62l0.95,2.84l0.58,0.22l0.71,-0.42l0.8,0.92l0.61,0.01l0.46,2.48l4.82,4.87l0.66,2.1l-0.07,3.44l1.15,2.31l-0.13,2.37l-1.1,3.88l0.04,1.73l-0.48,2.02l-1.05,2.56l-1.9,1.57l-1.73,3.77l-2.38,6.57l-0.24,3.08l-1.15,0.88l-2.86,0.16l-2.31,1.3l-2.5,2.46l-1.81,-1.24l-1.29,-0.49l0.31,-1.32l-0.55,-0.46l-1.5,0.69l-2.01,2.12l-7.1,-2.39l-1.49,-1.79l-1.13,-4.06l-1.45,-1.37l-1.84,-0.28l0.58,-1.28l-0.61,-2.26l-0.73,-0.1l-1.14,1.96l-0.94,0.24l0.6,-0.77l0.44,-1.84l0.99,-1.67l-0.2,-2.22l-0.28,-0.35l-0.43,0.13l-2.0,2.51l-1.51,1.0l-0.93,2.15l-1.35,-0.87l-0.01,-1.63l-1.57,-2.18l-1.11,-0.96l0.27,-0.39l-0.13,-0.58l-3.21,-1.8l-1.84,-0.13l-2.55,-1.44l-4.58,0.3l-6.02,2.02l-2.54,-0.14l-2.62,1.5l-2.13,0.67l-1.49,2.78l-3.48,0.33l-2.3,-0.54l-3.48,0.46l-1.6,1.58l-0.81,-0.03l-2.36,1.75l-3.24,-0.11l-3.72,-2.38l0.04,-1.18l1.19,-0.49l0.48,-0.93l0.21,-3.17l-0.28,-1.75l-1.34,-3.02l-0.39,-1.56l0.06,-1.8l-0.96,-1.79l-0.17,-1.0l-1.02,-1.04l-0.29,-2.09l-1.15,-1.85ZM784.91,527.24l2.67,1.14l3.23,-1.06l1.08,0.16l0.16,3.5l-0.85,1.25l-0.18,1.86l-0.27,-0.29l-0.62,0.04l-1.56,2.15l-1.66,-0.2l-1.41,-2.68l-0.37,-2.29l-1.4,-2.82l0.04,-0.96l1.14,0.2Z", "name": "Australia"}, "AT": {"path": "M462.92,275.34l0.01,2.75l-1.06,0.01l-0.34,0.61l0.39,0.64l-1.07,2.55l-2.0,0.08l-1.34,0.81l-5.27,-1.14l-0.48,-1.1l-0.47,-0.23l-2.47,0.64l-0.42,0.58l-2.45,-0.51l-0.75,-0.44l0.44,-1.16l1.11,0.9l0.63,-0.17l0.25,-0.69l1.91,0.14l1.87,-0.66l0.97,0.09l0.68,0.66l0.65,-0.15l0.25,-0.83l-0.31,-2.16l0.82,-0.52l0.68,-1.35l1.49,0.98l0.52,-0.07l1.34,-1.47l0.61,-0.2l1.79,1.07l1.3,-0.12l0.74,0.46Z", "name": "Austria"}, "IN": {"path": "M623.36,335.51l-1.27,1.12l-0.97,2.68l0.21,0.5l8.04,4.05l3.43,0.39l1.57,1.44l4.92,0.91l2.18,-0.04l0.38,-0.3l0.29,-1.28l-0.32,-1.72l0.15,-0.92l0.82,-0.32l0.44,2.59l2.28,1.07l1.78,-0.4l4.14,0.1l0.38,-0.36l0.18,-1.73l-0.53,-0.69l1.4,-0.31l2.25,-2.09l2.69,-1.7l1.92,0.64l1.8,-1.03l0.8,1.22l-0.69,0.98l0.26,0.63l2.42,0.38l0.09,0.52l-0.83,0.77l0.13,1.14l-1.53,-0.3l-3.24,1.94l-0.12,1.84l-1.32,2.23l-0.17,1.44l-0.93,1.89l-1.63,-0.52l-0.52,0.37l-0.09,2.72l-0.56,1.13l0.2,0.85l-0.53,0.28l-1.18,-3.85l-1.08,-0.27l-0.38,0.31l-0.24,1.03l-0.66,-0.68l0.55,-1.12l1.21,-0.35l1.15,-2.33l-0.23,-0.56l-1.58,-0.49l-4.33,-0.29l-0.19,-1.63l-0.35,-0.35l-1.11,-0.13l-1.91,-1.16l-0.57,0.17l-0.88,1.89l0.11,0.48l1.38,1.12l-1.11,0.73l-0.69,1.14l0.18,0.55l1.24,0.59l-0.32,1.59l0.85,2.01l0.36,2.08l-0.22,0.62l-4.58,0.54l-0.33,0.42l0.13,1.86l-1.18,1.39l-3.65,1.85l-2.79,3.1l-4.32,3.33l-0.18,1.29l-4.65,1.82l-0.77,2.19l0.64,5.37l-1.06,2.51l-0.01,3.97l-1.24,0.28l-1.14,1.94l0.39,0.85l-1.69,0.53l-1.04,1.84l-0.65,0.47l-2.06,-2.06l-2.1,-6.05l-2.2,-3.67l-1.05,-4.8l-2.29,-3.61l-1.76,-8.34l0.01,-3.18l-0.49,-2.59l-0.55,-0.29l-3.53,1.56l-1.52,-0.28l-2.87,-2.86l0.86,-0.7l0.08,-0.54l-0.74,-1.06l-2.68,-2.13l1.26,-1.38l5.33,0.01l0.39,-0.48l-0.5,-2.37l-1.42,-1.51l-0.27,-2.01l-1.44,-1.26l2.33,-2.5l3.05,0.07l2.62,-2.99l1.6,-2.96l2.4,-2.88l0.06,-2.16l1.98,-1.58l-0.01,-0.64l-1.93,-1.4l-0.82,-1.91l-0.81,-2.4l0.91,-0.97l3.58,0.7l2.93,-0.45l2.32,-2.35l2.31,3.07l-0.24,2.31l0.99,1.68l-0.05,0.92l-1.34,-0.3l-0.48,0.47l0.7,3.26l2.61,2.09l3.02,1.77Z", "name": "India"}, "TZ": {"path": "M495.56,426.32l2.8,-3.13l-0.02,-0.82l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.81l0.13,1.61l1.63,1.12l-0.6,1.77l-0.01,2.33l1.89,4.05l0.57,0.44l-1.47,1.09l-2.61,0.95l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.69l-0.83,0.07l-0.64,-0.75l-0.31,-2.8l-1.32,-1.36l-3.25,-0.77l-3.96,-1.59l-1.18,-2.42l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z", "name": "Tanzania"}, "AZ": {"path": "M539.27,301.57l1.33,0.36l0.44,-0.21l0.4,-0.78l1.11,-1.01l2.3,3.71l1.5,0.55l-1.32,0.17l-0.34,0.33l-0.81,3.49l-0.98,1.01l0.05,1.26l-1.28,-1.27l0.73,-1.34l-0.78,-1.39l-1.51,0.17l-2.32,1.87l-0.04,-1.43l-2.05,-1.48l0.5,-0.74l-0.07,-0.53l-1.07,-0.91l0.33,-0.54l-0.14,-0.55l-1.17,-1.02l1.91,0.73l1.71,0.07l0.37,-0.88l-1.01,-1.48l0.2,-0.14l0.4,0.06l1.63,1.92ZM533.76,306.94l0.63,0.52l0.69,-0.0l0.63,1.35l-0.71,-0.18l-1.25,-1.69Z", "name": "Azerbaijan"}, "IE": {"path": "M405.07,254.34l0.37,2.67l-1.78,3.47l-4.21,2.28l-2.89,-0.5l1.83,-4.09l-1.24,-4.04l4.62,-4.68l0.33,1.5l-0.5,2.21l0.41,0.49l1.45,-0.06l1.61,0.75Z", "name": "Ireland"}, "ID": {"path": "M756.47,417.79l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.16l-1.75,-1.55l-2.54,-0.51l-0.88,0.72l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.22l-5.04,-2.3l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.61l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,430.25l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,422.88l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,415.14l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,423.4l-0.5,0.45l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,414.41l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.75l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.24l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.18l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,426.17l0.38,0.5l-0.02,1.28l-0.88,0.49l-0.53,-0.48l1.04,-1.79ZM729.04,416.88l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,413.95l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,440.42l1.11,-1.94l2.02,-0.82l0.08,0.62l-1.45,1.68l-1.77,0.46ZM728.12,435.8l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,440.18l-0.64,0.03l-2.26,-1.21l1.12,-0.24l1.78,1.42ZM716.26,435.69l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.4,-0.67l1.15,-0.02l0.75,-0.74ZM711.66,423.74l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.31l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,431.94l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.69l3.69,0.45l2.14,1.05l-1.8,0.61l-2.77,-1.0l-4.8,-0.12l-5.24,-1.42l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.66l2.74,0.13l2.87,1.13l0.26,0.69ZM685.53,429.08l-2.22,0.04l-2.06,-2.04l-3.15,-2.01l-2.93,-3.52l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.51Z", "name": "Indonesia"}, "UA": {"path": "M493.77,283.66l1.85,0.21l0.66,-0.27l0.1,-0.68l-0.25,-0.87l-0.8,-0.85l-0.34,-1.43l-0.87,-0.71l0.01,-1.37l-1.13,-1.01l-1.16,-0.23l-2.07,-1.18l-1.66,0.37l-0.67,0.55l-0.9,-0.0l-0.86,0.91l-1.69,0.33l-0.76,0.47l-1.18,-0.82l-3.05,-0.42l-0.9,0.48l-0.22,-0.62l-1.16,-0.85l0.86,-1.88l0.25,0.1l0.53,-0.51l-0.57,-1.53l2.08,-2.96l1.38,-0.69l0.26,-1.34l-1.09,-3.02l0.9,-0.18l1.27,-1.02l1.78,-0.08l2.45,0.31l2.87,0.98l1.87,0.08l0.85,0.53l1.06,-0.47l0.78,0.77l2.17,-0.18l0.91,0.35l0.54,-0.34l0.15,-1.9l0.58,-0.67l2.82,-0.06l0.87,-0.86l3.0,-0.22l1.29,1.86l-0.53,0.89l0.21,1.25l0.36,0.33l1.78,0.17l0.93,2.49l3.18,1.38l1.95,-0.52l1.69,1.77l1.39,-0.04l3.36,1.15l0.02,0.75l-0.97,1.91l0.49,2.26l-0.28,0.89l-2.37,0.33l-1.29,1.04l-0.21,1.6l-1.85,0.32l-1.58,1.12l-2.41,0.24l-2.16,1.36l-0.19,0.36l0.32,2.54l1.49,0.93l1.92,-0.16l-0.18,0.47l-2.65,0.61l-3.21,1.92l-0.89,-0.46l0.44,-1.33l-0.24,-0.5l-2.27,-0.86l2.41,-1.32l0.12,-0.62l-0.93,-0.95l-3.62,-0.85l-0.14,-1.08l-0.47,-0.34l-2.32,0.45l-2.91,4.52l-1.19,-0.45l-0.98,0.48l-0.36,-0.21l1.35,-2.93Z", "name": "Ukraine"}, "QA": {"path": "M549.32,350.8l-0.76,-0.24l-0.14,-1.72l0.84,-1.35l0.47,0.54l0.04,1.41l-0.45,1.36Z", "name": "Qatar"}, "MZ": {"path": "M508.58,448.77l-0.34,-2.6l0.51,-2.07l3.55,0.64l2.51,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.99l1.66,-1.21l0.51,9.32l0.41,1.25l-0.68,1.69l-0.93,1.74l-1.5,1.52l-5.16,2.32l-2.78,2.78l-1.02,0.54l-1.71,1.84l-0.98,0.59l-0.35,2.45l1.16,1.99l0.49,2.24l0.43,0.31l-0.06,2.14l-0.39,1.21l0.5,0.73l-0.25,0.78l-0.92,0.86l-5.13,2.47l-1.22,1.39l0.21,1.17l0.59,0.4l-0.11,0.78l-1.22,-0.02l-0.73,-3.1l0.42,-3.19l-1.78,-5.56l2.49,-2.89l0.69,-1.93l0.44,-0.43l0.28,-1.57l-0.39,-0.94l0.59,-3.72l-0.01,-3.32l-1.48,-1.17l-1.2,-0.23l-1.74,-1.18l-1.92,0.0l-0.3,-2.12l7.06,-1.98l1.28,1.1l0.89,-0.1l0.67,0.45l0.1,0.75l-0.51,1.3l0.19,1.83l1.75,1.86l0.65,-0.13l0.71,-1.68l1.17,-0.86l-0.26,-3.51l-1.05,-1.87l-1.04,-0.95Z", "name": "Mozambique"}}, "height": 583.0802520919394, "projection": {"type": "merc", "centralMeridian": 11.5}, "width": 900.0});
|
assets/js/jquery-jvectormap-world-mill.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
jQuery.fn.vectorMap('addMap', 'world_mill',{"insets": [{"width": 900, "top": 0, "height": 440.7063107441331, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.025135122, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z", "name": "Bangladesh"}, "BE": {"path": "M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z", "name": "Belgium"}, "BF": {"path": "M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z", "name": "Burkina Faso"}, "BG": {"path": "M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z", "name": "Bulgaria"}, "BA": {"path": "M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z", "name": "Bosnia and Herz."}, "BN": {"path": "M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z", "name": "Bolivia"}, "JP": {"path": "M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z", "name": "Japan"}, "BI": {"path": "M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z", "name": "Burundi"}, "BJ": {"path": "M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z", "name": "Benin"}, "BT": {"path": "M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z", "name": "Bhutan"}, "JM": {"path": "M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z", "name": "Jamaica"}, "BW": {"path": "M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z", "name": "Botswana"}, "BR": {"path": "M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z", "name": "Brazil"}, "BS": {"path": "M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z", "name": "Bahamas"}, "BY": {"path": "M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z", "name": "Belarus"}, "BZ": {"path": "M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z", "name": "Belize"}, "RU": {"path": "M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM871.88,65.81l2.17,-0.13l3.19,1.16l-2.39,1.09l-5.63,0.48l-0.26,-0.84l2.92,-1.76ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z", "name": "Russia"}, "RW": {"path": "M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z", "name": "Rwanda"}, "RS": {"path": "M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z", "name": "Serbia"}, "TL": {"path": "M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z", "name": "Timor-Leste"}, "TM": {"path": "M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z", "name": "Tajikistan"}, "RO": {"path": "M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z", "name": "Romania"}, "GW": {"path": "M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z", "name": "Guinea-Bissau"}, "GT": {"path": "M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z", "name": "Guatemala"}, "GR": {"path": "M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z", "name": "Greece"}, "GQ": {"path": "M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z", "name": "Eq. Guinea"}, "GY": {"path": "M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z", "name": "Guyana"}, "GE": {"path": "M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z", "name": "Georgia"}, "GB": {"path": "M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z", "name": "United Kingdom"}, "GA": {"path": "M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z", "name": "Gabon"}, "GN": {"path": "M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z", "name": "Guinea"}, "GM": {"path": "M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z", "name": "Gambia"}, "GL": {"path": "M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z", "name": "Greenland"}, "GH": {"path": "M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z", "name": "Ghana"}, "OM": {"path": "M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z", "name": "Oman"}, "TN": {"path": "M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z", "name": "Tunisia"}, "JO": {"path": "M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z", "name": "Jordan"}, "HR": {"path": "M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z", "name": "Croatia"}, "HT": {"path": "M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z", "name": "Haiti"}, "HU": {"path": "M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z", "name": "Hungary"}, "HN": {"path": "M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z", "name": "Honduras"}, "PR": {"path": "M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z", "name": "Puerto Rico"}, "PS": {"path": "M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z", "name": "Palestine"}, "PT": {"path": "M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z", "name": "Portugal"}, "PY": {"path": "M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z", "name": "Paraguay"}, "PA": {"path": "M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z", "name": "Panama"}, "PG": {"path": "M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z", "name": "Peru"}, "PK": {"path": "M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z", "name": "Pakistan"}, "PH": {"path": "M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z", "name": "Philippines"}, "PL": {"path": "M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z", "name": "Poland"}, "ZM": {"path": "M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z", "name": "Zambia"}, "EH": {"path": "M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z", "name": "W. Sahara"}, "EE": {"path": "M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z", "name": "Estonia"}, "EG": {"path": "M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z", "name": "Egypt"}, "ZA": {"path": "M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z", "name": "South Africa"}, "EC": {"path": "M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z", "name": "Ecuador"}, "IT": {"path": "M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z", "name": "Italy"}, "VN": {"path": "M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z", "name": "Vietnam"}, "SB": {"path": "M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z", "name": "Solomon Is."}, "ET": {"path": "M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z", "name": "Ethiopia"}, "SO": {"path": "M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z", "name": "Somalia"}, "ZW": {"path": "M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z", "name": "Zimbabwe"}, "ES": {"path": "M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z", "name": "Spain"}, "ER": {"path": "M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z", "name": "Eritrea"}, "ME": {"path": "M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z", "name": "Montenegro"}, "MD": {"path": "M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z", "name": "Moldova"}, "MG": {"path": "M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z", "name": "Madagascar"}, "MA": {"path": "M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z", "name": "Morocco"}, "UZ": {"path": "M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z", "name": "Uzbekistan"}, "MM": {"path": "M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z", "name": "Myanmar"}, "ML": {"path": "M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z", "name": "Mali"}, "MN": {"path": "M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z", "name": "Mongolia"}, "MK": {"path": "M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z", "name": "Macedonia"}, "MW": {"path": "M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z", "name": "Malawi"}, "MR": {"path": "M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z", "name": "Mauritania"}, "UG": {"path": "M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z", "name": "Uganda"}, "MY": {"path": "M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z", "name": "Malaysia"}, "MX": {"path": "M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z", "name": "Mexico"}, "IL": {"path": "M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z", "name": "Israel"}, "FR": {"path": "M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z", "name": "France"}, "XS": {"path": "M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z", "name": "Somaliland"}, "FI": {"path": "M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z", "name": "Finland"}, "FJ": {"path": "M869.95,326.98l-1.21,0.41l-0.08,-0.23l2.97,-1.21l-0.14,0.42l-1.54,0.61ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z", "name": "Fiji"}, "FK": {"path": "M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z", "name": "Falkland Is."}, "NI": {"path": "M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z", "name": "Nicaragua"}, "NL": {"path": "M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z", "name": "Netherlands"}, "NO": {"path": "M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z", "name": "Norway"}, "NA": {"path": "M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z", "name": "Namibia"}, "VU": {"path": "M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z", "name": "Vanuatu"}, "NC": {"path": "M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z", "name": "New Caledonia"}, "NE": {"path": "M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z", "name": "Niger"}, "NG": {"path": "M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z", "name": "Nigeria"}, "NZ": {"path": "M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z", "name": "New Zealand"}, "NP": {"path": "M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z", "name": "Nepal"}, "XK": {"path": "M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z", "name": "Kosovo"}, "CI": {"path": "M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z", "name": "C\u00f4te d'Ivoire"}, "CH": {"path": "M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z", "name": "Switzerland"}, "CO": {"path": "M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z", "name": "Colombia"}, "CN": {"path": "M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z", "name": "China"}, "CM": {"path": "M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z", "name": "Cameroon"}, "CL": {"path": "M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z", "name": "Chile"}, "XC": {"path": "M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z", "name": "N. Cyprus"}, "CA": {"path": "M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z", "name": "Canada"}, "CG": {"path": "M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z", "name": "Congo"}, "CF": {"path": "M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z", "name": "Central African Rep."}, "CD": {"path": "M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z", "name": "Dem. Rep. Congo"}, "CZ": {"path": "M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z", "name": "Czech Rep."}, "CY": {"path": "M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z", "name": "Cyprus"}, "CR": {"path": "M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z", "name": "Costa Rica"}, "CU": {"path": "M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z", "name": "Cuba"}, "SZ": {"path": "M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z", "name": "Swaziland"}, "SY": {"path": "M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z", "name": "Syria"}, "KG": {"path": "M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z", "name": "Kyrgyzstan"}, "KE": {"path": "M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z", "name": "Kenya"}, "SS": {"path": "M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z", "name": "S. Sudan"}, "SR": {"path": "M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z", "name": "Suriname"}, "KH": {"path": "M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z", "name": "Cambodia"}, "SV": {"path": "M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z", "name": "El Salvador"}, "SK": {"path": "M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z", "name": "Slovakia"}, "KR": {"path": "M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z", "name": "Korea"}, "SI": {"path": "M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z", "name": "Slovenia"}, "KP": {"path": "M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z", "name": "Dem. Rep. Korea"}, "KW": {"path": "M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z", "name": "Kuwait"}, "SN": {"path": "M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z", "name": "Senegal"}, "SL": {"path": "M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z", "name": "Sierra Leone"}, "KZ": {"path": "M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z", "name": "Kazakhstan"}, "SA": {"path": "M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z", "name": "Saudi Arabia"}, "SE": {"path": "M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z", "name": "Sudan"}, "DO": {"path": "M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z", "name": "Dominican Rep."}, "DJ": {"path": "M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z", "name": "Djibouti"}, "DK": {"path": "M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z", "name": "Denmark"}, "DE": {"path": "M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z", "name": "Germany"}, "YE": {"path": "M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z", "name": "Yemen"}, "DZ": {"path": "M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z", "name": "Algeria"}, "US": {"path": "M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z", "name": "United States"}, "UY": {"path": "M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z", "name": "Uruguay"}, "LB": {"path": "M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z", "name": "Lebanon"}, "LA": {"path": "M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z", "name": "Lao PDR"}, "TW": {"path": "M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z", "name": "Taiwan"}, "TT": {"path": "M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z", "name": "Turkey"}, "LK": {"path": "M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z", "name": "Sri Lanka"}, "LV": {"path": "M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z", "name": "Latvia"}, "LT": {"path": "M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z", "name": "Lithuania"}, "LU": {"path": "M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z", "name": "Luxembourg"}, "LR": {"path": "M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z", "name": "Liberia"}, "LS": {"path": "M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z", "name": "Lesotho"}, "TH": {"path": "M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z", "name": "Thailand"}, "TF": {"path": "M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z", "name": "Fr. S. Antarctic Lands"}, "TG": {"path": "M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z", "name": "Togo"}, "TD": {"path": "M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z", "name": "Chad"}, "LY": {"path": "M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z", "name": "Libya"}, "AE": {"path": "M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z", "name": "Venezuela"}, "AF": {"path": "M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z", "name": "Afghanistan"}, "IQ": {"path": "M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z", "name": "Iraq"}, "IS": {"path": "M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z", "name": "Iceland"}, "IR": {"path": "M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z", "name": "Iran"}, "AM": {"path": "M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z", "name": "Armenia"}, "AL": {"path": "M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z", "name": "Albania"}, "AO": {"path": "M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z", "name": "Angola"}, "AR": {"path": "M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z", "name": "Argentina"}, "AU": {"path": "M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z", "name": "Australia"}, "AT": {"path": "M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z", "name": "Austria"}, "IN": {"path": "M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z", "name": "India"}, "TZ": {"path": "M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z", "name": "Tanzania"}, "AZ": {"path": "M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z", "name": "Azerbaijan"}, "IE": {"path": "M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z", "name": "Ireland"}, "ID": {"path": "M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z", "name": "Indonesia"}, "UA": {"path": "M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z", "name": "Ukraine"}, "QA": {"path": "M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z", "name": "Qatar"}, "MZ": {"path": "M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z", "name": "Mozambique"}}, "height": 440.7063107441331, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0});
|
|
assets/src/scss/admin.scss
CHANGED
@@ -141,13 +141,17 @@ $breakpoints: (
|
|
141 |
@include breakpoint(medium) {
|
142 |
column-gap: 3rem;
|
143 |
display: grid;
|
144 |
-
grid-template-columns:
|
145 |
grid-template-rows: auto;
|
146 |
}
|
147 |
|
148 |
a {
|
149 |
color: var(--zerospam-accent);
|
150 |
}
|
|
|
|
|
|
|
|
|
151 |
}
|
152 |
|
153 |
a.zerospam-dashboard__menu-link {
|
@@ -318,13 +322,47 @@ a.zerospam-dashboard__menu-link {
|
|
318 |
|
319 |
&--map {
|
320 |
@include breakpoint(medium) {
|
321 |
-
width: calc(
|
322 |
}
|
323 |
}
|
324 |
|
325 |
&--list {
|
326 |
@include breakpoint(medium) {
|
327 |
-
width: calc(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
}
|
329 |
}
|
330 |
}
|
@@ -339,25 +377,6 @@ a.zerospam-dashboard__menu-link {
|
|
339 |
|
340 |
.zerospam-block {
|
341 |
margin: calc(var(--zerospam-block-gap) / 2);
|
342 |
-
|
343 |
-
&--facebook,
|
344 |
-
&--twitter {
|
345 |
-
background-color: transparent;
|
346 |
-
border: 0;
|
347 |
-
box-shadow: none;
|
348 |
-
}
|
349 |
-
|
350 |
-
&--facebook {
|
351 |
-
@include breakpoint(medium) {
|
352 |
-
width: 340px;
|
353 |
-
}
|
354 |
-
}
|
355 |
-
|
356 |
-
&--twitter {
|
357 |
-
@include breakpoint(medium) {
|
358 |
-
width: calc(100% - (var(--zerospam-block-gap) * 2) - 340px);
|
359 |
-
}
|
360 |
-
}
|
361 |
}
|
362 |
}
|
363 |
|
@@ -458,6 +477,10 @@ a.zerospam-dashboard__menu-link {
|
|
458 |
}
|
459 |
}
|
460 |
|
|
|
|
|
|
|
|
|
461 |
.button {
|
462 |
@extend %button;
|
463 |
}
|
@@ -531,6 +554,12 @@ a.zerospam-dashboard__menu-link {
|
|
531 |
}
|
532 |
}
|
533 |
|
|
|
|
|
|
|
|
|
|
|
|
|
534 |
.zerospam-form-field-container {
|
535 |
align-items: center;
|
536 |
column-gap: 10px;
|
@@ -668,8 +697,6 @@ a.zerospam-dashboard__menu-link {
|
|
668 |
&wpforms,
|
669 |
&contactform7,
|
670 |
&givewp,
|
671 |
-
&memberpress_registration,
|
672 |
-
&memberpress_login,
|
673 |
&mailchimp4wp,
|
674 |
&woocommerce_registration,
|
675 |
&gravityforms,
|
@@ -727,13 +754,6 @@ a.zerospam-dashboard__menu-link {
|
|
727 |
}
|
728 |
}
|
729 |
|
730 |
-
&memberpress_registration,
|
731 |
-
&memberpress_login {
|
732 |
-
&::before {
|
733 |
-
background-image: url("../img/icon-memberpress.svg");
|
734 |
-
}
|
735 |
-
}
|
736 |
-
|
737 |
&givewp {
|
738 |
&::before {
|
739 |
background-image: url("../../modules/give/icon-givewp.png");
|
@@ -759,11 +779,104 @@ a.zerospam-dashboard__menu-link {
|
|
759 |
}
|
760 |
}
|
761 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
762 |
.zerospam-list {
|
763 |
list-style: none;
|
764 |
margin: 0;
|
765 |
padding: 0;
|
766 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
767 |
&--data-actions,
|
768 |
&--data {
|
769 |
li {
|
141 |
@include breakpoint(medium) {
|
142 |
column-gap: 3rem;
|
143 |
display: grid;
|
144 |
+
grid-template-columns: 300px minmax(0, 1fr);
|
145 |
grid-template-rows: auto;
|
146 |
}
|
147 |
|
148 |
a {
|
149 |
color: var(--zerospam-accent);
|
150 |
}
|
151 |
+
|
152 |
+
&__sections {
|
153 |
+
margin-bottom: 40px;
|
154 |
+
}
|
155 |
}
|
156 |
|
157 |
a.zerospam-dashboard__menu-link {
|
322 |
|
323 |
&--map {
|
324 |
@include breakpoint(medium) {
|
325 |
+
width: calc(65% - var(--zerospam-block-gap));
|
326 |
}
|
327 |
}
|
328 |
|
329 |
&--list {
|
330 |
@include breakpoint(medium) {
|
331 |
+
width: calc(35% - var(--zerospam-block-gap));
|
332 |
+
}
|
333 |
+
}
|
334 |
+
|
335 |
+
&--line-chart {
|
336 |
+
@include breakpoint(medium) {
|
337 |
+
width: calc(65% - var(--zerospam-block-gap));
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
&--pie-chart {
|
342 |
+
@include breakpoint(medium) {
|
343 |
+
width: calc(35% - var(--zerospam-block-gap));
|
344 |
+
}
|
345 |
+
}
|
346 |
+
|
347 |
+
&--review {
|
348 |
+
.zerospam-block__content {
|
349 |
+
@include breakpoint(medium) {
|
350 |
+
column-gap: 40px;
|
351 |
+
display: flex;
|
352 |
+
}
|
353 |
+
}
|
354 |
+
|
355 |
+
.zerospam-block__content-col {
|
356 |
+
&:first-child {
|
357 |
+
flex-grow: 1;
|
358 |
+
}
|
359 |
+
|
360 |
+
&:last-child {
|
361 |
+
@include breakpoint(medium) {
|
362 |
+
flex-shrink: 0;
|
363 |
+
width: 32%;
|
364 |
+
}
|
365 |
+
}
|
366 |
}
|
367 |
}
|
368 |
}
|
377 |
|
378 |
.zerospam-block {
|
379 |
margin: calc(var(--zerospam-block-gap) / 2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
}
|
381 |
}
|
382 |
|
477 |
}
|
478 |
}
|
479 |
|
480 |
+
select {
|
481 |
+
padding-right: 33px;
|
482 |
+
}
|
483 |
+
|
484 |
.button {
|
485 |
@extend %button;
|
486 |
}
|
554 |
}
|
555 |
}
|
556 |
|
557 |
+
.check-column {
|
558 |
+
input[type="checkbox"] {
|
559 |
+
display: block;
|
560 |
+
}
|
561 |
+
}
|
562 |
+
|
563 |
.zerospam-form-field-container {
|
564 |
align-items: center;
|
565 |
column-gap: 10px;
|
697 |
&wpforms,
|
698 |
&contactform7,
|
699 |
&givewp,
|
|
|
|
|
700 |
&mailchimp4wp,
|
701 |
&woocommerce_registration,
|
702 |
&gravityforms,
|
754 |
}
|
755 |
}
|
756 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
757 |
&givewp {
|
758 |
&::before {
|
759 |
background-image: url("../../modules/give/icon-givewp.png");
|
779 |
}
|
780 |
}
|
781 |
|
782 |
+
@for $i from 1 through 10 {
|
783 |
+
@keyframes row#{$i} {
|
784 |
+
0% {
|
785 |
+
background-position: 0% 0%;
|
786 |
+
}
|
787 |
+
50% {
|
788 |
+
background-position: #{(($i * 5) + 45%)} 0%;
|
789 |
+
}
|
790 |
+
100% {
|
791 |
+
background-position: 0% 0%;
|
792 |
+
}
|
793 |
+
}
|
794 |
+
}
|
795 |
+
|
796 |
+
.zerospam-tag {
|
797 |
+
background-color: var(--zerospam-accent);
|
798 |
+
border-radius: 2px;
|
799 |
+
color: #fff;
|
800 |
+
display: inline-block;
|
801 |
+
padding: 3px;
|
802 |
+
font-size: 10px;
|
803 |
+
line-height: 1;
|
804 |
+
margin: 3px;
|
805 |
+
vertical-align: middle;
|
806 |
+
}
|
807 |
+
|
808 |
+
.zerospam-list__item--blocked {
|
809 |
+
background: rgba(255, 41, 41, 0.25) !important;
|
810 |
+
}
|
811 |
+
|
812 |
.zerospam-list {
|
813 |
list-style: none;
|
814 |
margin: 0;
|
815 |
padding: 0;
|
816 |
|
817 |
+
&--top {
|
818 |
+
font-size: 12px;
|
819 |
+
line-height: 1;
|
820 |
+
|
821 |
+
li {
|
822 |
+
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
823 |
+
align-items: center;
|
824 |
+
display: flex;
|
825 |
+
margin: 0;
|
826 |
+
padding: 6px;
|
827 |
+
|
828 |
+
@for $i from 1 through 10 {
|
829 |
+
&:nth-child(#{$i}) {
|
830 |
+
animation: row#{$i} 5s ease infinite;
|
831 |
+
animation-delay: #{$i * 0.1}s;
|
832 |
+
background: linear-gradient(
|
833 |
+
90deg,
|
834 |
+
rgba(255, 255, 255, 1) 0%,
|
835 |
+
#fff #{(($i * 5) + 30%)},
|
836 |
+
rgba(255, 41, 41, calc(0.6 / #{$i})) 100%
|
837 |
+
);
|
838 |
+
background-size: 200%;
|
839 |
+
}
|
840 |
+
}
|
841 |
+
}
|
842 |
+
|
843 |
+
.button {
|
844 |
+
@extend %button-small;
|
845 |
+
}
|
846 |
+
|
847 |
+
.zerospam-list__value {
|
848 |
+
&--label {
|
849 |
+
flex-grow: 1;
|
850 |
+
overflow: hidden;
|
851 |
+
text-overflow: ellipsis;
|
852 |
+
white-space: nowrap;
|
853 |
+
}
|
854 |
+
|
855 |
+
&--count {
|
856 |
+
font-size: 0.95em;
|
857 |
+
font-weight: bold;
|
858 |
+
margin: 0 20px;
|
859 |
+
text-align: right;
|
860 |
+
width: 35px;
|
861 |
+
}
|
862 |
+
|
863 |
+
&--actions,
|
864 |
+
&--count {
|
865 |
+
flex-grow: 0;
|
866 |
+
flex-shrink: 0;
|
867 |
+
}
|
868 |
+
|
869 |
+
&--actions {
|
870 |
+
text-align: right;
|
871 |
+
width: 85px;
|
872 |
+
}
|
873 |
+
|
874 |
+
img {
|
875 |
+
vertical-align: sub;
|
876 |
+
}
|
877 |
+
}
|
878 |
+
}
|
879 |
+
|
880 |
&--data-actions,
|
881 |
&--data {
|
882 |
li {
|
core/admin/class-dashboard.php
CHANGED
@@ -183,27 +183,9 @@ class Dashboard {
|
|
183 |
</li>
|
184 |
</ul>
|
185 |
|
186 |
-
<
|
187 |
-
|
188 |
-
|
189 |
-
echo sprintf(
|
190 |
-
wp_kses(
|
191 |
-
/* translators: %s: url */
|
192 |
-
__( '<p><strong>We want to hear from you!</strong> <a href="%1$s" target="_blank" rel="noreferrer noopener">Submit your review</a> for 10% off a Zero Spam license.</p>', 'zero-spam' ),
|
193 |
-
array(
|
194 |
-
'strong' => array(),
|
195 |
-
'a' => array(
|
196 |
-
'target' => array(),
|
197 |
-
'href' => array(),
|
198 |
-
'rel' => array(),
|
199 |
-
),
|
200 |
-
)
|
201 |
-
),
|
202 |
-
'https://wordpress.org/support/plugin/zero-spam/reviews/?filter=5'
|
203 |
-
);
|
204 |
-
?>
|
205 |
-
</div>
|
206 |
-
</div>
|
207 |
</div>
|
208 |
<div class="zerospam-dashboard__col">
|
209 |
<?php if ( ! empty( $_REQUEST['zerospam-msg'] ) ) : ?>
|
@@ -220,37 +202,85 @@ class Dashboard {
|
|
220 |
case 'reports':
|
221 |
?>
|
222 |
<div class="zerospam-blocks">
|
223 |
-
<div class="zerospam-block zerospam-block--
|
224 |
-
<
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
</div>
|
230 |
|
231 |
<div class="zerospam-block zerospam-block--map">
|
232 |
-
<h3 class="zerospam-block__headline"><?php esc_html_e( '
|
233 |
<div class="zerospam-block__content">
|
234 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-map.php'; ?>
|
235 |
</div>
|
236 |
</div>
|
237 |
|
238 |
<div class="zerospam-block zerospam-block--list">
|
239 |
-
<h3 class="zerospam-block__headline"><?php esc_html_e( 'Most Detections
|
240 |
<div class="zerospam-block__content">
|
241 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-ips.php'; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
</div>
|
243 |
</div>
|
244 |
|
245 |
-
<div class="zerospam-block zerospam-block--
|
246 |
-
<h3 class="zerospam-block__headline"><?php esc_html_e( '
|
247 |
<div class="zerospam-block__content">
|
248 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-pie.php'; ?>
|
249 |
</div>
|
250 |
</div>
|
251 |
|
252 |
-
<div class="zerospam-block zerospam-block--
|
253 |
-
<h3 class="zerospam-block__headline"><?php esc_html_e( '
|
254 |
<div class="zerospam-block__content">
|
255 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-line-chart.php'; ?>
|
256 |
</div>
|
183 |
</li>
|
184 |
</ul>
|
185 |
|
186 |
+
<iframe src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2Fzerospamorg&tabs=timeline&width=300&height=635&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true&appId=2704301689814493" width="300" height="635" style="border:none;overflow:hidden;margin-bottom:40px;" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"></iframe>
|
187 |
+
|
188 |
+
<a class="twitter-timeline" data-height="604" href="https://twitter.com/ZeroSpamOrg?ref_src=twsrc%5Etfw">Tweets by ZeroSpamOrg</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
</div>
|
190 |
<div class="zerospam-dashboard__col">
|
191 |
<?php if ( ! empty( $_REQUEST['zerospam-msg'] ) ) : ?>
|
202 |
case 'reports':
|
203 |
?>
|
204 |
<div class="zerospam-blocks">
|
205 |
+
<div class="zerospam-block zerospam-block--review">
|
206 |
+
<h3 class="zerospam-block__headline"><?php esc_html_e( 'Detections by the Hour', 'zero-spam' ); ?></h3>
|
207 |
+
<div class="zerospam-block__content">
|
208 |
+
<div class="zerospam-block__content-col">
|
209 |
+
<?php require ZEROSPAM_PATH . 'includes/templates/admin-bar-chart.php'; ?>
|
210 |
+
</div>
|
211 |
+
<div class="zerospam-block__content-col">
|
212 |
+
<?php require ZEROSPAM_PATH . 'includes/templates/admin-hours-list.php'; ?>
|
213 |
+
<p style="margin-top: 20px">
|
214 |
+
<?php
|
215 |
+
printf(
|
216 |
+
wp_kses(
|
217 |
+
/* translators: %s: Replaced with the Zero Spam URL */
|
218 |
+
__( '<strong>We need you!</strong> Help support development and new features by reviewing us on WordPress.org — once reviewed, contact us to get a <strong>10% off coupon</strong> on any <a href="%1$s" target="_blank" rel="noreferrer noopener">Zero Spam license</a>.', 'zero-spam' ),
|
219 |
+
array(
|
220 |
+
'strong' => array(),
|
221 |
+
'a' => array(
|
222 |
+
'target' => array(),
|
223 |
+
'href' => array(),
|
224 |
+
'rel' => array(),
|
225 |
+
),
|
226 |
+
'em' => array(),
|
227 |
+
'br' => array(),
|
228 |
+
)
|
229 |
+
),
|
230 |
+
'https://www.zerospam.org/subscribe/'
|
231 |
+
);
|
232 |
+
?>
|
233 |
+
</p>
|
234 |
+
<p><a href="https://wordpress.org/support/plugin/zero-spam/reviews/?filter=5" target="_blank" rel="noreferrer noopener" class="button button-primary"><?php _e( 'Submit Review', 'zero-spam' ); ?> →</a></p>
|
235 |
+
</div>
|
236 |
+
</div>
|
237 |
</div>
|
238 |
|
239 |
<div class="zerospam-block zerospam-block--map">
|
240 |
+
<h3 class="zerospam-block__headline"><?php esc_html_e( 'Detection Heat Map', 'zero-spam' ); ?></h3>
|
241 |
<div class="zerospam-block__content">
|
242 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-map.php'; ?>
|
243 |
</div>
|
244 |
</div>
|
245 |
|
246 |
<div class="zerospam-block zerospam-block--list">
|
247 |
+
<h3 class="zerospam-block__headline"><?php esc_html_e( 'Most Detections the Last 30 Days', 'zero-spam' ); ?></h3>
|
248 |
<div class="zerospam-block__content">
|
249 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-ips.php'; ?>
|
250 |
+
<p style="margin-top: 25px;">
|
251 |
+
<strong><?php _e( 'Still seeing spam/malicious activity?', 'zero-spam' ); ?></strong><br />
|
252 |
+
<?php
|
253 |
+
printf(
|
254 |
+
wp_kses(
|
255 |
+
/* translators: %s: Replaced with the Zero Spam URL */
|
256 |
+
__( 'We use the latest techniques available, but <em>nothing is 100%</em>. <a href="%1$s" target="_blank" rel="noreferrer noopener">Contact us</a> if seeing a large amount a malicious activity for help.', 'zero-spam' ),
|
257 |
+
array(
|
258 |
+
'strong' => array(),
|
259 |
+
'a' => array(
|
260 |
+
'target' => array(),
|
261 |
+
'href' => array(),
|
262 |
+
'rel' => array(),
|
263 |
+
),
|
264 |
+
'em' => array(),
|
265 |
+
'br' => array(),
|
266 |
+
)
|
267 |
+
),
|
268 |
+
esc_url( ZEROSPAM_URL )
|
269 |
+
)
|
270 |
+
?>
|
271 |
+
</p>
|
272 |
</div>
|
273 |
</div>
|
274 |
|
275 |
+
<div class="zerospam-block zerospam-block--pie-chart">
|
276 |
+
<h3 class="zerospam-block__headline"><?php esc_html_e( 'Last 14 Days by Location', 'zero-spam' ); ?></h3>
|
277 |
<div class="zerospam-block__content">
|
278 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-pie.php'; ?>
|
279 |
</div>
|
280 |
</div>
|
281 |
|
282 |
+
<div class="zerospam-block zerospam-block--line-chart">
|
283 |
+
<h3 class="zerospam-block__headline"><?php esc_html_e( 'Last 14 Days of Detections', 'zero-spam' ); ?></h3>
|
284 |
<div class="zerospam-block__content">
|
285 |
<?php require ZEROSPAM_PATH . 'includes/templates/admin-line-chart.php'; ?>
|
286 |
</div>
|
core/admin/tables/class-logtable.php
CHANGED
@@ -31,6 +31,49 @@ class LogTable extends WP_List_Table {
|
|
31 |
parent::__construct( $args );
|
32 |
}
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
/**
|
35 |
* Column values
|
36 |
*/
|
@@ -46,7 +89,7 @@ class LogTable extends WP_List_Table {
|
|
46 |
|
47 |
$types = apply_filters( 'zerospam_types', array() );
|
48 |
if ( ! empty( $types[ $value ] ) ) {
|
49 |
-
$type .= $types[ $value ];
|
50 |
} else {
|
51 |
$type .= $value;
|
52 |
}
|
@@ -301,7 +344,7 @@ class LogTable extends WP_List_Table {
|
|
301 |
<select name="type" id="filter-by-type">
|
302 |
<option value=""><?php _e( 'All types', 'zero-spam' ); ?></option>
|
303 |
<?php foreach ( $options as $key => $value ) : ?>
|
304 |
-
<option<?php if ( $current_type === $key ) : ?> selected="selected"<?php endif; ?> value="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $value ); ?></option>
|
305 |
<?php endforeach; ?>
|
306 |
</select>
|
307 |
|
@@ -322,72 +365,29 @@ class LogTable extends WP_List_Table {
|
|
322 |
<?php
|
323 |
}
|
324 |
|
325 |
-
/**
|
326 |
-
* Define table columns
|
327 |
-
*/
|
328 |
-
public function get_columns() {
|
329 |
-
$columns = array(
|
330 |
-
'cb' => '<input type="checkbox" />',
|
331 |
-
'date_recorded' => __( 'Date', 'zero-spam' ),
|
332 |
-
'log_type' => __( 'Type', 'zero-spam' ),
|
333 |
-
'user_ip' => __( 'IP Address', 'zero-spam' ),
|
334 |
-
'country' => __( 'Country', 'zero-spam' ),
|
335 |
-
'region' => __( 'Region', 'zero-spam' ),
|
336 |
-
'actions' => __( 'Actions', 'zero-spam' ),
|
337 |
-
);
|
338 |
-
|
339 |
-
return $columns;
|
340 |
-
}
|
341 |
-
|
342 |
-
/**
|
343 |
-
* Sortable columns
|
344 |
-
*/
|
345 |
-
public function get_sortable_columns() {
|
346 |
-
$sortable_columns = array(
|
347 |
-
'date_recorded' => array( 'date_recorded', false ),
|
348 |
-
'log_type' => array( 'log_type', false ),
|
349 |
-
'user_ip' => array( 'user_ip', false ),
|
350 |
-
'country' => array( 'country', false ),
|
351 |
-
'region' => array( 'region', false ),
|
352 |
-
);
|
353 |
-
|
354 |
-
return $sortable_columns;
|
355 |
-
}
|
356 |
-
|
357 |
-
/**
|
358 |
-
* Column contact
|
359 |
-
*/
|
360 |
-
public function column_cb( $item ) {
|
361 |
-
return sprintf(
|
362 |
-
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
363 |
-
/*$1%s*/ 'ids',
|
364 |
-
/*$2%s*/ $item['log_id']
|
365 |
-
);
|
366 |
-
}
|
367 |
-
|
368 |
/**
|
369 |
* Process bulk actions
|
370 |
*/
|
371 |
public function process_bulk_action() {
|
372 |
global $wpdb;
|
373 |
|
374 |
-
$
|
|
|
|
|
|
|
|
|
|
|
375 |
|
376 |
switch ( $this->current_action() ) {
|
377 |
case 'delete':
|
378 |
-
$nonce = ( isset( $_REQUEST['zerospam_nonce'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['zerospam_nonce'] ) ) : '';
|
379 |
-
if ( ! wp_verify_nonce( $nonce, 'zerospam_nonce' ) ) {
|
380 |
-
return false;
|
381 |
-
}
|
382 |
-
|
383 |
if ( ! empty ( $ids ) && is_array( $ids ) ) {
|
384 |
foreach ( $ids as $k => $log_id ) {
|
385 |
-
ZeroSpam\Includes\DB::delete( 'log', 'log_id', $log_id );
|
386 |
}
|
387 |
}
|
388 |
break;
|
389 |
case 'delete_all':
|
390 |
-
ZeroSpam\Includes\DB::delete_all( 'log' );
|
391 |
break;
|
392 |
}
|
393 |
}
|
31 |
parent::__construct( $args );
|
32 |
}
|
33 |
|
34 |
+
/**
|
35 |
+
* Define table columns
|
36 |
+
*/
|
37 |
+
public function get_columns() {
|
38 |
+
$columns = array(
|
39 |
+
'cb' => '<input type="checkbox" />',
|
40 |
+
'date_recorded' => __( 'Date', 'zero-spam' ),
|
41 |
+
'log_type' => __( 'Type', 'zero-spam' ),
|
42 |
+
'user_ip' => __( 'IP Address', 'zero-spam' ),
|
43 |
+
'country' => __( 'Country', 'zero-spam' ),
|
44 |
+
'region' => __( 'Region', 'zero-spam' ),
|
45 |
+
'actions' => __( 'Actions', 'zero-spam' ),
|
46 |
+
);
|
47 |
+
|
48 |
+
return $columns;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Sortable columns
|
53 |
+
*/
|
54 |
+
public function get_sortable_columns() {
|
55 |
+
$sortable_columns = array(
|
56 |
+
'date_recorded' => array( 'date_recorded', false ),
|
57 |
+
'log_type' => array( 'log_type', false ),
|
58 |
+
'user_ip' => array( 'user_ip', false ),
|
59 |
+
'country' => array( 'country', false ),
|
60 |
+
'region' => array( 'region', false ),
|
61 |
+
);
|
62 |
+
|
63 |
+
return $sortable_columns;
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Checkbox column
|
68 |
+
*/
|
69 |
+
public function column_cb( $item ) {
|
70 |
+
return sprintf(
|
71 |
+
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
72 |
+
/*$1%s*/ 'ids',
|
73 |
+
/*$2%s*/ $item['log_id']
|
74 |
+
);
|
75 |
+
}
|
76 |
+
|
77 |
/**
|
78 |
* Column values
|
79 |
*/
|
89 |
|
90 |
$types = apply_filters( 'zerospam_types', array() );
|
91 |
if ( ! empty( $types[ $value ] ) ) {
|
92 |
+
$type .= $types[ $value ]['label'];
|
93 |
} else {
|
94 |
$type .= $value;
|
95 |
}
|
344 |
<select name="type" id="filter-by-type">
|
345 |
<option value=""><?php _e( 'All types', 'zero-spam' ); ?></option>
|
346 |
<?php foreach ( $options as $key => $value ) : ?>
|
347 |
+
<option<?php if ( $current_type === $key ) : ?> selected="selected"<?php endif; ?> value="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $value['label'] ); ?></option>
|
348 |
<?php endforeach; ?>
|
349 |
</select>
|
350 |
|
365 |
<?php
|
366 |
}
|
367 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
/**
|
369 |
* Process bulk actions
|
370 |
*/
|
371 |
public function process_bulk_action() {
|
372 |
global $wpdb;
|
373 |
|
374 |
+
$nonce = ( isset( $_REQUEST['zerospam_nonce'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['zerospam_nonce'] ) ) : '';
|
375 |
+
if ( ! wp_verify_nonce( $nonce, 'zerospam_nonce' ) || empty( $_REQUEST['ids'] ) ) {
|
376 |
+
return false;
|
377 |
+
}
|
378 |
+
|
379 |
+
$ids = array_map( 'sanitize_text_field', $_REQUEST['ids'] );
|
380 |
|
381 |
switch ( $this->current_action() ) {
|
382 |
case 'delete':
|
|
|
|
|
|
|
|
|
|
|
383 |
if ( ! empty ( $ids ) && is_array( $ids ) ) {
|
384 |
foreach ( $ids as $k => $log_id ) {
|
385 |
+
\ZeroSpam\Includes\DB::delete( 'log', 'log_id', $log_id );
|
386 |
}
|
387 |
}
|
388 |
break;
|
389 |
case 'delete_all':
|
390 |
+
\ZeroSpam\Includes\DB::delete_all( 'log' );
|
391 |
break;
|
392 |
}
|
393 |
}
|
core/class-utilities.php
CHANGED
@@ -17,6 +17,17 @@ defined( 'ABSPATH' ) || die();
|
|
17 |
*/
|
18 |
class Utilities {
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
/**
|
21 |
* Returns the time since two dates.
|
22 |
*
|
@@ -253,23 +264,18 @@ class Utilities {
|
|
253 |
* @param string $value Setting value.
|
254 |
*/
|
255 |
public static function update_setting( $key, $value ) {
|
256 |
-
$settings
|
257 |
-
$
|
258 |
-
|
259 |
-
if ( ! isset( $settings[ $key ] ) ) {
|
260 |
self::log( $key . ' is not a valid setting key.' );
|
261 |
return false;
|
262 |
}
|
263 |
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
$new_settings[ $k ] = isset( $array['value'] ) ? $array['value'] : false;
|
269 |
-
}
|
270 |
-
}
|
271 |
|
272 |
-
update_option(
|
273 |
|
274 |
return true;
|
275 |
}
|
17 |
*/
|
18 |
class Utilities {
|
19 |
|
20 |
+
/**
|
21 |
+
* Returns a clean domain name
|
22 |
+
*
|
23 |
+
* @param string $domain Domain name.
|
24 |
+
*/
|
25 |
+
public static function clean_domain( $domain ) {
|
26 |
+
$domain_url = esc_url( $domain );
|
27 |
+
|
28 |
+
return str_ireplace( 'www.', '', wp_parse_url( $domain_url, PHP_URL_HOST ) );
|
29 |
+
}
|
30 |
+
|
31 |
/**
|
32 |
* Returns the time since two dates.
|
33 |
*
|
264 |
* @param string $value Setting value.
|
265 |
*/
|
266 |
public static function update_setting( $key, $value ) {
|
267 |
+
$settings = \ZeroSpam\Core\Settings::get_settings();
|
268 |
+
if ( empty( $settings[ $key ] ) ) {
|
|
|
|
|
269 |
self::log( $key . ' is not a valid setting key.' );
|
270 |
return false;
|
271 |
}
|
272 |
|
273 |
+
$module = $settings[ $key ]['module'];
|
274 |
+
$module_settings = get_option( "zero-spam-$module" );
|
275 |
+
|
276 |
+
$module_settings[ $key ] = $value;
|
|
|
|
|
|
|
277 |
|
278 |
+
update_option( "zero-spam-$module", $module_settings, true );
|
279 |
|
280 |
return true;
|
281 |
}
|
includes/class-cli.php
CHANGED
@@ -17,17 +17,20 @@ class ZeroSpamCLI {
|
|
17 |
* Outputs settings
|
18 |
*/
|
19 |
public function settings() {
|
20 |
-
$
|
21 |
-
$settings
|
22 |
|
23 |
-
foreach ( $
|
24 |
-
$
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
28 |
}
|
29 |
|
30 |
-
$fields = array( 'setting', 'value' );
|
31 |
WP_CLI\Utils\format_items( 'table', $settings, $fields );
|
32 |
}
|
33 |
|
17 |
* Outputs settings
|
18 |
*/
|
19 |
public function settings() {
|
20 |
+
$modules = \ZeroSpam\Core\Settings::get_settings_by_module();
|
21 |
+
$settings = array();
|
22 |
|
23 |
+
foreach ( $modules as $module => $module_settings ) {
|
24 |
+
foreach ( $module_settings as $key => $setting ) {
|
25 |
+
$settings[] = array(
|
26 |
+
'module' => $module,
|
27 |
+
'setting' => $key,
|
28 |
+
'value' => isset( $setting['value'] ) ? $setting['value'] : false,
|
29 |
+
);
|
30 |
+
}
|
31 |
}
|
32 |
|
33 |
+
$fields = array( 'module', 'setting', 'value' );
|
34 |
WP_CLI\Utils\format_items( 'table', $settings, $fields );
|
35 |
}
|
36 |
|
includes/class-plugin.php
CHANGED
@@ -150,11 +150,6 @@ class Plugin {
|
|
150 |
new \ZeroSpam\Modules\FluentForms\FluentForms();
|
151 |
}
|
152 |
|
153 |
-
// MemberPress plugin module.
|
154 |
-
if ( is_plugin_active( 'memberpress/memberpress.php' ) ) {
|
155 |
-
new \ZeroSpam\Modules\MemberPress\MemberPress();
|
156 |
-
}
|
157 |
-
|
158 |
// Mailchimp for WordPress plugin module.
|
159 |
if ( is_plugin_active( 'mailchimp-for-wp/mailchimp-for-wp.php' ) ) {
|
160 |
new \ZeroSpam\Modules\MailchimpForWP\MailchimpForWP();
|
@@ -180,7 +175,9 @@ class Plugin {
|
|
180 |
* @param array $types Types of detections.
|
181 |
*/
|
182 |
public function types( $types ) {
|
183 |
-
$types['blocked'] =
|
|
|
|
|
184 |
|
185 |
return $types;
|
186 |
}
|
150 |
new \ZeroSpam\Modules\FluentForms\FluentForms();
|
151 |
}
|
152 |
|
|
|
|
|
|
|
|
|
|
|
153 |
// Mailchimp for WordPress plugin module.
|
154 |
if ( is_plugin_active( 'mailchimp-for-wp/mailchimp-for-wp.php' ) ) {
|
155 |
new \ZeroSpam\Modules\MailchimpForWP\MailchimpForWP();
|
175 |
* @param array $types Types of detections.
|
176 |
*/
|
177 |
public function types( $types ) {
|
178 |
+
$types['blocked'] = array(
|
179 |
+
'label' => __( 'Blocked', 'zero-spam' ),
|
180 |
+
);
|
181 |
|
182 |
return $types;
|
183 |
}
|
includes/templates/admin-bar-chart.php
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin bar chart
|
4 |
+
*
|
5 |
+
* @package ZeroSpam
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( empty( $entries ) ) {
|
9 |
+
echo sprintf(
|
10 |
+
wp_kses(
|
11 |
+
__( 'Nothing to report.', 'zero-spam' ),
|
12 |
+
array(
|
13 |
+
'strong' => array(),
|
14 |
+
)
|
15 |
+
)
|
16 |
+
);
|
17 |
+
|
18 |
+
return;
|
19 |
+
}
|
20 |
+
|
21 |
+
wp_enqueue_script(
|
22 |
+
'zerospam-chart',
|
23 |
+
plugins_url( 'assets/js/Chart.bundle.min.js', ZEROSPAM ),
|
24 |
+
array( 'jquery' ),
|
25 |
+
'2.9.4',
|
26 |
+
false
|
27 |
+
);
|
28 |
+
|
29 |
+
wp_enqueue_style(
|
30 |
+
'zerospam-chart',
|
31 |
+
plugins_url( 'assets/css/Chart.min.css', ZEROSPAM ),
|
32 |
+
array(),
|
33 |
+
'2.9.4'
|
34 |
+
);
|
35 |
+
|
36 |
+
|
37 |
+
// Create the datasets to display on the line chart
|
38 |
+
$labels = array();
|
39 |
+
$datasets = array();
|
40 |
+
|
41 |
+
// Detections
|
42 |
+
$datasets['detections'] = array(
|
43 |
+
'label' => __( 'Total', 'zero-spam' ),
|
44 |
+
'data' => array(),
|
45 |
+
'borderColor' => '#3F0008',
|
46 |
+
'backgroundColor' => '#3F0008',
|
47 |
+
'fill' => false,
|
48 |
+
);
|
49 |
+
|
50 |
+
for ( $x = 0; $x < 24; $x++ ) {
|
51 |
+
$time = strtotime('-' . $x . ' hour');
|
52 |
+
$date_key = gmdate( 'ga', $time );
|
53 |
+
|
54 |
+
$labels[] = $date_key;
|
55 |
+
|
56 |
+
$datasets['detections']['data'][ $date_key ] = 0;
|
57 |
+
|
58 |
+
foreach ( $entries as $key => $entry ) {
|
59 |
+
$entry_date_key = gmdate( 'ga', strtotime( $entry['date_recorded'] ) );
|
60 |
+
|
61 |
+
if ( $date_key === $entry_date_key ) {
|
62 |
+
// Detections
|
63 |
+
if ( empty( $datasets['detections']['data'][ $date_key ] ) ) {
|
64 |
+
$datasets['detections']['data'][ $date_key ] = 1;
|
65 |
+
} else {
|
66 |
+
$datasets['detections']['data'][ $date_key ]++;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
$labels = array_reverse( $labels );
|
73 |
+
ksort( $datasets['detections']['data'] );
|
74 |
+
?>
|
75 |
+
|
76 |
+
<canvas id="zerospam-bar-chart"></canvas>
|
77 |
+
<script>
|
78 |
+
(function($) {
|
79 |
+
$(function() {
|
80 |
+
var lineChart = document.getElementById('zerospam-bar-chart');
|
81 |
+
var lineChartAnalytics= new Chart(lineChart, {
|
82 |
+
type: 'bar',
|
83 |
+
data: {
|
84 |
+
labels: <?php echo wp_json_encode( $labels ); ?>,
|
85 |
+
datasets:[
|
86 |
+
<?php foreach ( $datasets as $key => $data ) : ?>
|
87 |
+
<?php echo wp_json_encode( $data ); ?>,
|
88 |
+
<?php endforeach; ?>
|
89 |
+
],
|
90 |
+
},
|
91 |
+
options: {
|
92 |
+
plugins: {
|
93 |
+
legend: {
|
94 |
+
display: false
|
95 |
+
}
|
96 |
+
}
|
97 |
+
}
|
98 |
+
});
|
99 |
+
});
|
100 |
+
})(jQuery);
|
101 |
+
</script>
|
includes/templates/admin-header.php
CHANGED
@@ -4,97 +4,96 @@
|
|
4 |
*
|
5 |
* @package ZeroSpam
|
6 |
*/
|
7 |
-
|
8 |
?>
|
9 |
|
10 |
<header class="zerospam-header">
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
</header>
|
4 |
*
|
5 |
* @package ZeroSpam
|
6 |
*/
|
|
|
7 |
?>
|
8 |
|
9 |
<header class="zerospam-header">
|
10 |
+
<img src="<?php echo plugin_dir_url( ZEROSPAM ) . 'assets/img/text-zero-spam.svg' ?>" width="250" />
|
11 |
+
<div class="zerospam-header__status">
|
12 |
+
<?php
|
13 |
+
$status = \ZeroSpam\Core\Settings::get_settings( 'zerospam' );
|
14 |
+
if ( 'enabled' !== $status ) :
|
15 |
+
echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-error.svg" class="zerospam-small-icon" />';
|
16 |
+
echo sprintf(
|
17 |
+
wp_kses(
|
18 |
+
/* translators: %1s: Replaced with the Zero Spam URL */
|
19 |
+
__( '<strong>Enhanced Protection is <a href="%1$s">DISABLED</a>.</strong>', 'zero-spam' ),
|
20 |
+
array(
|
21 |
+
'h3' => array(),
|
22 |
+
'p' => array(),
|
23 |
+
'a' => array(
|
24 |
+
'href' => array(),
|
25 |
+
'class' => array(),
|
26 |
+
'rel' => array(),
|
27 |
+
),
|
28 |
+
'strong' => array(),
|
29 |
+
)
|
30 |
+
),
|
31 |
+
admin_url( "options-general.php?page=wordpress-zero-spam-settings&subview=zerospam" )
|
32 |
+
);
|
33 |
+
else :
|
34 |
+
$license_key = \ZeroSpam\Core\Settings::get_settings( 'zerospam_license' );
|
35 |
+
if ( $license_key ) :
|
36 |
+
$license = \ZeroSpam\Modules\Zero_Spam::get_license( $license_key );
|
37 |
+
if ( empty( $license['license_key'] ) ) :
|
38 |
+
echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-error.svg" class="zerospam-small-icon" />';
|
39 |
+
echo sprintf(
|
40 |
+
wp_kses(
|
41 |
+
/* translators: %1s: Replaced with the Zero Spam URL */
|
42 |
+
__( '<strong>Enhanced Protection is <a href="%1$s">DISABLED</a> (invalid license).</strong>', 'zero-spam' ),
|
43 |
+
array(
|
44 |
+
'h3' => array(),
|
45 |
+
'p' => array(),
|
46 |
+
'a' => array(
|
47 |
+
'href' => array(),
|
48 |
+
'class' => array(),
|
49 |
+
'rel' => array(),
|
50 |
+
),
|
51 |
+
'strong' => array(),
|
52 |
+
)
|
53 |
+
),
|
54 |
+
admin_url( "options-general.php?page=wordpress-zero-spam-settings&subview=zerospam" )
|
55 |
+
);
|
56 |
+
else :
|
57 |
+
echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-success.svg" class="zerospam-small-icon" />';
|
58 |
+
echo sprintf(
|
59 |
+
wp_kses(
|
60 |
+
/* translators: %1s: Replaced with the Zero Spam URL */
|
61 |
+
__( '<strong>%1s queries available</strong>', 'zero-spam' ),
|
62 |
+
array(
|
63 |
+
'h3' => array(),
|
64 |
+
'p' => array(),
|
65 |
+
'a' => array(
|
66 |
+
'href' => array(),
|
67 |
+
'class' => array(),
|
68 |
+
'rel' => array(),
|
69 |
+
),
|
70 |
+
'strong' => array(),
|
71 |
+
)
|
72 |
+
),
|
73 |
+
number_format( $license['queries_remaining'], 0 )
|
74 |
+
);
|
75 |
+
endif;
|
76 |
+
else:
|
77 |
+
echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-error.svg" class="zerospam-small-icon" />';
|
78 |
+
echo sprintf(
|
79 |
+
wp_kses(
|
80 |
+
/* translators: %1s: Replaced with the Zero Spam URL, %2$s: Replaced with the DDoD attack wiki URL */
|
81 |
+
__( '<strong>Enhanced Protection is <a href="%1$s">DISABLED</a>.</strong>', 'zero-spam' ),
|
82 |
+
array(
|
83 |
+
'h3' => array(),
|
84 |
+
'p' => array(),
|
85 |
+
'a' => array(
|
86 |
+
'href' => array(),
|
87 |
+
'class' => array(),
|
88 |
+
'rel' => array(),
|
89 |
+
),
|
90 |
+
'strong' => array(),
|
91 |
+
)
|
92 |
+
),
|
93 |
+
admin_url( "options-general.php?page=wordpress-zero-spam-settings&subview=zerospam" )
|
94 |
+
);
|
95 |
+
endif;
|
96 |
+
endif;
|
97 |
+
?>
|
98 |
+
</div>
|
99 |
</header>
|
includes/templates/admin-hours-list.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin hours list
|
4 |
+
*
|
5 |
+
* @package ZeroSpam
|
6 |
+
*/
|
7 |
+
|
8 |
+
$data = array(
|
9 |
+
'12am' => 0,
|
10 |
+
'1am' => 0,
|
11 |
+
'2am' => 0,
|
12 |
+
'3am' => 0,
|
13 |
+
'4am' => 0,
|
14 |
+
'5am' => 0,
|
15 |
+
'6am' => 0,
|
16 |
+
'7am' => 0,
|
17 |
+
'8am' => 0,
|
18 |
+
'9am' => 0,
|
19 |
+
'10am' => 0,
|
20 |
+
'11am' => 0,
|
21 |
+
'12pm' => 0,
|
22 |
+
'1pm' => 0,
|
23 |
+
'2pm' => 0,
|
24 |
+
'3pm' => 0,
|
25 |
+
'4pm' => 0,
|
26 |
+
'5pm' => 0,
|
27 |
+
'6pm' => 0,
|
28 |
+
'7pm' => 0,
|
29 |
+
'8pm' => 0,
|
30 |
+
'9pm' => 0,
|
31 |
+
'10pm' => 0,
|
32 |
+
'11pm' => 0,
|
33 |
+
);
|
34 |
+
foreach ( $entries as $key => $entry ) {
|
35 |
+
$entry_date_key = gmdate( 'ga', strtotime( $entry['date_recorded'] ) );
|
36 |
+
$data[ $entry_date_key ]++;
|
37 |
+
}
|
38 |
+
|
39 |
+
arsort( $data );
|
40 |
+
array_splice( $data, 5 );
|
41 |
+
?>
|
42 |
+
<h3><?php _e( 'All-time Detections by Hour', 'zero-spam' ); ?></h3>
|
43 |
+
<ul class="zerospam-list zerospam-list--top">
|
44 |
+
<?php foreach ( $data as $time => $count ) : ?>
|
45 |
+
<li class="zerospam-list__item">
|
46 |
+
<span class="zerospam-list__value zerospam-list__value--label">
|
47 |
+
<?php echo $time; ?>
|
48 |
+
</span>
|
49 |
+
<span class="zerospam-list__value zerospam-list__value--count"><?php echo number_format( $count, 0 ); ?></span>
|
50 |
+
</li>
|
51 |
+
<?php endforeach; ?>
|
52 |
+
</ul>
|
includes/templates/admin-ips.php
CHANGED
@@ -18,58 +18,68 @@ if ( empty( $entries ) ) {
|
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
$
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
);
|
28 |
-
|
29 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
}
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
}
|
|
|
|
|
36 |
?>
|
37 |
-
<ul class="zerospam-list zerospam-list--
|
38 |
<?php
|
39 |
$limit = 12;
|
40 |
$cnt = 0;
|
41 |
-
foreach ( $
|
42 |
$cnt++;
|
43 |
if ( $cnt > $limit ) {
|
44 |
break;
|
45 |
}
|
|
|
|
|
46 |
?>
|
47 |
-
<li>
|
48 |
-
<span class="zerospam-list__value">
|
49 |
-
|
|
|
50 |
<img
|
51 |
-
src="<?php echo esc_url( ZeroSpam\Core\Utilities::country_flag_url( $
|
52 |
-
alt="<?php echo esc_attr( $
|
53 |
class="zerospam-flag"
|
54 |
width="14"
|
55 |
height="14"
|
|
|
56 |
/>
|
57 |
<?php endif; ?>
|
58 |
<a href="<?php echo esc_url( ZEROSPAM_URL ); ?>ip-lookup/<?php echo urlencode( $ip ); ?>" target="_blank" rel="noopener noreferrer">
|
59 |
<?php echo esc_html( $ip ); ?>
|
60 |
</a>
|
61 |
</span>
|
62 |
-
<span class="zerospam-list__value">
|
63 |
-
|
64 |
-
<?php echo ZeroSpam\Core\Utilities::countries( $data['country'] ); ?>
|
65 |
-
<?php else: ?>
|
66 |
-
<?php esc_html_e( 'Unknown', 'zero-spam' ); ?>
|
67 |
-
<?php endif; ?>
|
68 |
-
</span>
|
69 |
-
<span class="zerospam-list__value"><?php echo number_format( $data['count'], 0 ); ?></span>
|
70 |
-
<span class="zerospam-list__value">
|
71 |
<?php
|
72 |
-
$blocked = ZeroSpam\Includes\DB::blocked( $ip );
|
73 |
if ( $blocked ) :
|
74 |
?>
|
75 |
<button
|
@@ -81,12 +91,12 @@ if ( $ips ) {
|
|
81 |
data-type="<?php echo esc_attr( $blocked['blocked_type'] ); ?>"
|
82 |
aria-label="<?php esc_html_e( 'Update Block', 'zero-spam' ); ?>"
|
83 |
>
|
84 |
-
|
85 |
</button>
|
86 |
<?php
|
87 |
else :
|
88 |
?>
|
89 |
-
<button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $ip ); ?>"
|
90 |
<?php
|
91 |
endif;
|
92 |
?>
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
$data = array();
|
22 |
+
for ( $x = 0; $x < 30; $x++ ) {
|
23 |
+
$time = strtotime('-' . $x . ' days');
|
24 |
+
$date_key = gmdate( 'M. j', $time );
|
25 |
+
|
26 |
+
foreach ( $entries as $key => $entry ) {
|
27 |
+
$entry_date_key = gmdate( 'M. j', strtotime( $entry['date_recorded'] ) );
|
28 |
+
|
29 |
+
if ( $date_key === $entry_date_key ) {
|
30 |
+
if ( empty( $data[ $entry['user_ip'] ] ) ) {
|
31 |
+
$data[ $entry['user_ip'] ] = array(
|
32 |
+
'count' => 1,
|
33 |
+
);
|
34 |
+
} else {
|
35 |
+
$data[ $entry['user_ip'] ]['count']++;
|
36 |
+
}
|
37 |
+
|
38 |
+
if ( ! empty( $entry['country'] ) ) {
|
39 |
+
$data[ $entry['user_ip'] ]['country'] = $entry['country'];
|
40 |
+
}
|
41 |
+
}
|
42 |
}
|
43 |
}
|
44 |
|
45 |
+
uasort($data, function($a, $b){
|
46 |
+
return $b['count'] <=> $a['count'];
|
47 |
+
});
|
48 |
+
|
49 |
+
array_splice( $data, 12 );
|
50 |
?>
|
51 |
+
<ul class="zerospam-list zerospam-list--top">
|
52 |
<?php
|
53 |
$limit = 12;
|
54 |
$cnt = 0;
|
55 |
+
foreach ( $data as $ip => $info ) :
|
56 |
$cnt++;
|
57 |
if ( $cnt > $limit ) {
|
58 |
break;
|
59 |
}
|
60 |
+
|
61 |
+
$blocked = ZeroSpam\Includes\DB::blocked( $ip );
|
62 |
?>
|
63 |
+
<li class="zerospam-list__item<?php if ( $blocked ) : ?> zerospam-list__item--blocked<?php endif; ?>">
|
64 |
+
<span class="zerospam-list__value zerospam-list__value--label">
|
65 |
+
<?php if ( $blocked ) : ?><span class="zerospam-tag"><?php _e( 'Blocked', 'zero-spam' ); ?></span><?php endif; ?>
|
66 |
+
<?php if ( ! empty( $info['country'] ) ) : ?>
|
67 |
<img
|
68 |
+
src="<?php echo esc_url( ZeroSpam\Core\Utilities::country_flag_url( $info['country'] ) ); ?>"
|
69 |
+
alt="<?php echo esc_attr( $info['country'] ); ?>"
|
70 |
class="zerospam-flag"
|
71 |
width="14"
|
72 |
height="14"
|
73 |
+
title="<?php echo esc_attr( \ZeroSpam\Core\Utilities::countries( $info['country'] ) ); ?>"
|
74 |
/>
|
75 |
<?php endif; ?>
|
76 |
<a href="<?php echo esc_url( ZEROSPAM_URL ); ?>ip-lookup/<?php echo urlencode( $ip ); ?>" target="_blank" rel="noopener noreferrer">
|
77 |
<?php echo esc_html( $ip ); ?>
|
78 |
</a>
|
79 |
</span>
|
80 |
+
<span class="zerospam-list__value zerospam-list__value--count"><?php echo number_format( $info['count'], 0 ); ?></span>
|
81 |
+
<span class="zerospam-list__value zerospam-list__value--actions">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
<?php
|
|
|
83 |
if ( $blocked ) :
|
84 |
?>
|
85 |
<button
|
91 |
data-type="<?php echo esc_attr( $blocked['blocked_type'] ); ?>"
|
92 |
aria-label="<?php esc_html_e( 'Update Block', 'zero-spam' ); ?>"
|
93 |
>
|
94 |
+
<?php _e( 'Edit Block', 'zero-spam' ); ?>
|
95 |
</button>
|
96 |
<?php
|
97 |
else :
|
98 |
?>
|
99 |
+
<button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $ip ); ?>"><?php _e( 'Block', 'zero-spam' ); ?></button>
|
100 |
<?php
|
101 |
endif;
|
102 |
?>
|
includes/templates/admin-line-chart.php
CHANGED
@@ -33,23 +33,81 @@ wp_enqueue_style(
|
|
33 |
'2.9.4'
|
34 |
);
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
-
|
45 |
|
46 |
-
|
|
|
47 |
|
48 |
-
$
|
49 |
-
$
|
50 |
-
foreach ( $data as $date => $count ) {
|
51 |
-
$labels[] = gmdate( 'M j, Y', strtotime( $date ) );
|
52 |
-
$chart_data[] = $count;
|
53 |
}
|
54 |
?>
|
55 |
|
@@ -62,20 +120,23 @@ foreach ( $data as $date => $count ) {
|
|
62 |
type: 'line',
|
63 |
data: {
|
64 |
labels: <?php echo wp_json_encode( $labels ); ?>,
|
65 |
-
datasets:
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
borderWidth: 2,
|
71 |
-
pointBorderWidth: 2,
|
72 |
-
pointBackgroundColor: '#58000f',
|
73 |
-
pointRadius: 2,
|
74 |
-
fill: false,
|
75 |
-
}],
|
76 |
},
|
77 |
options: {
|
78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
}
|
80 |
});
|
81 |
});
|
33 |
'2.9.4'
|
34 |
);
|
35 |
|
36 |
+
|
37 |
+
// Create the datasets to display on the line chart
|
38 |
+
$labels = array();
|
39 |
+
$datasets = array();
|
40 |
+
|
41 |
+
// Detections
|
42 |
+
$datasets['detections'] = array(
|
43 |
+
'label' => __( 'Total', 'zero-spam' ),
|
44 |
+
'data' => array(),
|
45 |
+
'borderColor' => '#3F0008',
|
46 |
+
'backgroundColor' => '#3F0008',
|
47 |
+
'fill' => false,
|
48 |
+
);
|
49 |
+
|
50 |
+
// Create the log types
|
51 |
+
$all_types = apply_filters( 'zerospam_types', array() );
|
52 |
+
$types = array();
|
53 |
+
foreach ( $entries as $key => $entry ) {
|
54 |
+
if ( ! in_array( $entry['log_type'], $types ) ) {
|
55 |
+
$types[] = $entry['log_type'];
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
foreach ( $types as $type ) {
|
60 |
+
$datasets[ $type ] = array(
|
61 |
+
'label' => ! empty( $all_types[ $type ]['label'] ) ? $all_types[ $type ]['label'] : $type,
|
62 |
+
'data' => array(),
|
63 |
+
'borderColor' => ! empty( $all_types[ $type ]['color'] ) ? $all_types[ $type ]['color'] : '#3F0008',
|
64 |
+
'backgroundColor' => ! empty( $all_types[ $type ]['color'] ) ? $all_types[ $type ]['color'] : '#3F0008',
|
65 |
+
'fill' => false,
|
66 |
+
);
|
67 |
+
}
|
68 |
+
|
69 |
+
for ( $x = 0; $x < 14; $x++ ) {
|
70 |
+
$time = strtotime('-' . $x . ' days');
|
71 |
+
$date_key = gmdate( 'M. d', $time );
|
72 |
+
|
73 |
+
$labels[] = $date_key;
|
74 |
+
|
75 |
+
$datasets['detections']['data'][ $date_key ] = 0;
|
76 |
+
|
77 |
+
foreach ( $types as $type ) {
|
78 |
+
$datasets[ $type ]['data'][ $date_key ] = 0;
|
79 |
+
}
|
80 |
+
|
81 |
+
foreach ( $entries as $key => $entry ) {
|
82 |
+
$entry_date_key = gmdate( 'M. d', strtotime( $entry['date_recorded'] ) );
|
83 |
+
|
84 |
+
if ( $date_key === $entry_date_key ) {
|
85 |
+
// Detections
|
86 |
+
if ( empty( $datasets['detections']['data'][ $date_key ] ) ) {
|
87 |
+
$datasets['detections']['data'][ $date_key ] = 1;
|
88 |
+
} else {
|
89 |
+
$datasets['detections']['data'][ $date_key ]++;
|
90 |
+
}
|
91 |
+
|
92 |
+
// Types
|
93 |
+
foreach ( $types as $type ) {
|
94 |
+
if ( $type === $entry['log_type'] ) {
|
95 |
+
if ( ! $datasets[ $type ]['data'][ $date_key ] ) {
|
96 |
+
$datasets[ $type ]['data'][ $date_key ] = 1;
|
97 |
+
} else {
|
98 |
+
$datasets[ $type ]['data'][ $date_key ]++;
|
99 |
+
}
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}
|
103 |
}
|
104 |
+
}
|
105 |
|
106 |
+
$labels = array_reverse( $labels );
|
107 |
+
ksort( $datasets['detections']['data'] );
|
108 |
|
109 |
+
foreach ( $types as $type ) {
|
110 |
+
ksort( $datasets[ $type ]['data'] );
|
|
|
|
|
|
|
111 |
}
|
112 |
?>
|
113 |
|
120 |
type: 'line',
|
121 |
data: {
|
122 |
labels: <?php echo wp_json_encode( $labels ); ?>,
|
123 |
+
datasets:[
|
124 |
+
<?php foreach ( $datasets as $key => $data ) : ?>
|
125 |
+
<?php echo wp_json_encode( $data ); ?>,
|
126 |
+
<?php endforeach; ?>
|
127 |
+
],
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
},
|
129 |
options: {
|
130 |
+
plugins: {
|
131 |
+
legend: {
|
132 |
+
position: 'bottom',
|
133 |
+
labels: {
|
134 |
+
boxWidth: 10,
|
135 |
+
boxHeight: 10,
|
136 |
+
padding: 15,
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
140 |
}
|
141 |
});
|
142 |
});
|
includes/templates/admin-map.php
CHANGED
@@ -20,12 +20,11 @@ if ( empty( $entries ) ) {
|
|
20 |
|
21 |
$regions_data = array();
|
22 |
$coords = array();
|
|
|
23 |
$locations = array();
|
24 |
|
25 |
foreach ( $entries as $key => $entry ) {
|
26 |
if ( ! empty( $entry['latitude'] ) && ! empty( $entry['longitude'] ) ) {
|
27 |
-
$coords[] = array( $entry['latitude'], $entry['longitude'] );
|
28 |
-
|
29 |
$name = '';
|
30 |
if ( ! empty( $entry['city'] ) ) {
|
31 |
$name .= $entry['city'];
|
@@ -45,7 +44,27 @@ foreach ( $entries as $key => $entry ) {
|
|
45 |
$name .= $entry['country'];
|
46 |
}
|
47 |
|
48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
}
|
50 |
|
51 |
if ( ! empty( $entry['country'] ) ) {
|
@@ -58,19 +77,10 @@ foreach ( $entries as $key => $entry ) {
|
|
58 |
}
|
59 |
}
|
60 |
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
__( 'Current detections have no geolocation information available. Enable ipstack and/or IPinfo on the <a href="%1$s">settings page</a>.', 'zero-spam' ),
|
66 |
-
array(
|
67 |
-
'a' => array( 'href' => array() ),
|
68 |
-
)
|
69 |
-
),
|
70 |
-
esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) ),
|
71 |
-
);
|
72 |
-
return;
|
73 |
-
endif;
|
74 |
|
75 |
wp_enqueue_script(
|
76 |
'zerospam-jvectormap',
|
@@ -82,7 +92,7 @@ wp_enqueue_script(
|
|
82 |
|
83 |
wp_enqueue_script(
|
84 |
'zerospam-jvectormap-world',
|
85 |
-
plugins_url( 'assets/js/jquery-jvectormap-world-
|
86 |
array( 'zerospam-jvectormap' ),
|
87 |
'2.0.5',
|
88 |
false
|
@@ -101,45 +111,54 @@ wp_enqueue_style(
|
|
101 |
(function($) {
|
102 |
var regionsData = <?php echo wp_json_encode( $regions_data ); ?>;
|
103 |
var coords = <?php echo wp_json_encode( $coords ); ?>;
|
104 |
-
var names = <?php echo wp_json_encode( $
|
105 |
|
106 |
$(function() {
|
107 |
$('#world-map').vectorMap({
|
108 |
-
map: '
|
109 |
backgroundColor: 'transparent',
|
110 |
markers: coords,
|
111 |
markerStyle: {
|
112 |
initial: {
|
113 |
-
fill: '#
|
114 |
-
stroke: '#
|
115 |
"fill-opacity": 1,
|
116 |
-
"stroke-width":
|
117 |
-
"stroke-opacity":
|
118 |
-
r:
|
119 |
},
|
120 |
},
|
121 |
regionStyle: {
|
122 |
initial: {
|
123 |
-
fill: '#
|
124 |
"fill-opacity": 1,
|
125 |
-
stroke: '#
|
126 |
"stroke-width": 1,
|
127 |
-
"stroke-opacity":
|
128 |
},
|
129 |
},
|
130 |
series: {
|
|
|
|
|
|
|
|
|
|
|
131 |
regions: [{
|
132 |
values: regionsData,
|
133 |
-
scale: ['#
|
134 |
normalizeFunction: 'polynomial'
|
135 |
}]
|
136 |
},
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
},
|
140 |
-
onRegionTipShow: function(e, el, code){
|
141 |
-
el.html( el.html() + ' (<?php _e( 'Detections', 'zero-spam' ); ?>: ' + regionsData[code] + ')' );
|
142 |
-
}
|
143 |
});
|
144 |
});
|
145 |
})(jQuery);
|
20 |
|
21 |
$regions_data = array();
|
22 |
$coords = array();
|
23 |
+
$coords_data = array();
|
24 |
$locations = array();
|
25 |
|
26 |
foreach ( $entries as $key => $entry ) {
|
27 |
if ( ! empty( $entry['latitude'] ) && ! empty( $entry['longitude'] ) ) {
|
|
|
|
|
28 |
$name = '';
|
29 |
if ( ! empty( $entry['city'] ) ) {
|
30 |
$name .= $entry['city'];
|
44 |
$name .= $entry['country'];
|
45 |
}
|
46 |
|
47 |
+
if ( ! $name ) {
|
48 |
+
$name = __( 'Unknown', 'zero-spam' );
|
49 |
+
}
|
50 |
+
|
51 |
+
$coord_key = $entry['latitude'] . $entry['longitude'];
|
52 |
+
if ( empty( $coords[ $coord_key ] ) ) {
|
53 |
+
$coords_data[ $coord_key ] = 1;
|
54 |
+
$coords[ $coord_key ] = array(
|
55 |
+
'latLng' => array(
|
56 |
+
$entry['latitude'],
|
57 |
+
$entry['longitude']
|
58 |
+
)
|
59 |
+
);
|
60 |
+
$locations[ $coord_key ] = array(
|
61 |
+
'name' => $name,
|
62 |
+
'count' => 0,
|
63 |
+
);
|
64 |
+
} else {
|
65 |
+
$coords_data[ $coord_key ]++;
|
66 |
+
$locations[ $coord_key ]['count']++;
|
67 |
+
}
|
68 |
}
|
69 |
|
70 |
if ( ! empty( $entry['country'] ) ) {
|
77 |
}
|
78 |
}
|
79 |
|
80 |
+
$locations_data = array();
|
81 |
+
foreach ( $locations as $key => $loc ) {
|
82 |
+
$locations_data[ $key ] = $loc['name'] . ': ' . $loc['count'];
|
83 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
|
85 |
wp_enqueue_script(
|
86 |
'zerospam-jvectormap',
|
92 |
|
93 |
wp_enqueue_script(
|
94 |
'zerospam-jvectormap-world',
|
95 |
+
plugins_url( 'assets/js/jquery-jvectormap-world-merc.js', ZEROSPAM ),
|
96 |
array( 'zerospam-jvectormap' ),
|
97 |
'2.0.5',
|
98 |
false
|
111 |
(function($) {
|
112 |
var regionsData = <?php echo wp_json_encode( $regions_data ); ?>;
|
113 |
var coords = <?php echo wp_json_encode( $coords ); ?>;
|
114 |
+
var names = <?php echo wp_json_encode( $locations_data ); ?>;
|
115 |
|
116 |
$(function() {
|
117 |
$('#world-map').vectorMap({
|
118 |
+
map: 'world_merc',
|
119 |
backgroundColor: 'transparent',
|
120 |
markers: coords,
|
121 |
markerStyle: {
|
122 |
initial: {
|
123 |
+
fill: '#be0000',
|
124 |
+
stroke: '#fff',
|
125 |
"fill-opacity": 1,
|
126 |
+
"stroke-width": 2,
|
127 |
+
"stroke-opacity": 1,
|
128 |
+
r: 2
|
129 |
},
|
130 |
},
|
131 |
regionStyle: {
|
132 |
initial: {
|
133 |
+
fill: '#e7e7e7',
|
134 |
"fill-opacity": 1,
|
135 |
+
stroke: '#fff',
|
136 |
"stroke-width": 1,
|
137 |
+
"stroke-opacity": 1
|
138 |
},
|
139 |
},
|
140 |
series: {
|
141 |
+
markers: [{
|
142 |
+
attribute: 'r',
|
143 |
+
scale: [5, 15],
|
144 |
+
values: <?php echo wp_json_encode( $coords_data ); ?>
|
145 |
+
}],
|
146 |
regions: [{
|
147 |
values: regionsData,
|
148 |
+
scale: ['#ffe2e2','#ff2929'],
|
149 |
normalizeFunction: 'polynomial'
|
150 |
}]
|
151 |
},
|
152 |
+
onRegionTipShow: function(e, el, code) {
|
153 |
+
if ( regionsData[code] ) {
|
154 |
+
el.html( el.html() + ': ' + regionsData[code] );
|
155 |
+
} else {
|
156 |
+
el.html( el.html() );
|
157 |
+
}
|
158 |
+
},
|
159 |
+
onMarkerTipShow: function(e, tip, code) {
|
160 |
+
tip.html( names[code] );
|
161 |
},
|
|
|
|
|
|
|
162 |
});
|
163 |
});
|
164 |
})(jQuery);
|
includes/templates/admin-modal-details.php
CHANGED
@@ -65,7 +65,7 @@ endif;
|
|
65 |
$detection_types = apply_filters( 'zerospam_types', array() );
|
66 |
if ( ! empty( $detection_types[ $item['log_type'] ] ) ) :
|
67 |
echo wp_kses(
|
68 |
-
$detection_types[ $item['log_type'] ] . ' — <code>' . $item['log_type'] . '</code>',
|
69 |
array( 'code' => array() )
|
70 |
);
|
71 |
else :
|
65 |
$detection_types = apply_filters( 'zerospam_types', array() );
|
66 |
if ( ! empty( $detection_types[ $item['log_type'] ] ) ) :
|
67 |
echo wp_kses(
|
68 |
+
$detection_types[ $item['log_type'] ]['label'] . ' — <code>' . $item['log_type'] . '</code>',
|
69 |
array( 'code' => array() )
|
70 |
);
|
71 |
else :
|
includes/templates/admin-pie.php
CHANGED
@@ -33,35 +33,40 @@ $predefined_colors = array(
|
|
33 |
'#ffe5e9',
|
34 |
);
|
35 |
|
36 |
-
$
|
37 |
-
|
|
|
|
|
|
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
endif;
|
42 |
|
43 |
-
|
|
|
|
|
|
|
|
|
44 |
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
|
|
|
|
51 |
|
52 |
-
if ( empty( $
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) ),
|
62 |
-
);
|
63 |
-
return;
|
64 |
-
endif;
|
65 |
|
66 |
wp_enqueue_script(
|
67 |
'zerospam-chart',
|
@@ -77,25 +82,6 @@ wp_enqueue_style(
|
|
77 |
array(),
|
78 |
'2.9.4'
|
79 |
);
|
80 |
-
|
81 |
-
if ( $countries ) :
|
82 |
-
arsort( $countries );
|
83 |
-
endif;
|
84 |
-
|
85 |
-
$labels = array();
|
86 |
-
$data = array();
|
87 |
-
$colors = array();
|
88 |
-
$count = 0;
|
89 |
-
foreach ( $countries as $key => $value ) :
|
90 |
-
if ( $count >= $limit ) :
|
91 |
-
break;
|
92 |
-
endif;
|
93 |
-
|
94 |
-
$labels[] = $key;
|
95 |
-
$data[] = $value;
|
96 |
-
$colors[] = $predefined_colors[ $count ];
|
97 |
-
$count++;
|
98 |
-
endforeach;
|
99 |
?>
|
100 |
|
101 |
<canvas id="zerospam-pie-countries"></canvas>
|
@@ -108,16 +94,19 @@ endforeach;
|
|
108 |
data: {
|
109 |
labels: <?php echo wp_json_encode( $labels ); ?>,
|
110 |
datasets: [{
|
111 |
-
data: <?php echo wp_json_encode( $data ); ?>,
|
112 |
-
backgroundColor: <?php echo wp_json_encode( $
|
113 |
-
borderWidth: 0,
|
114 |
-
borderColor: '#f1f1f1'
|
115 |
}],
|
116 |
},
|
117 |
options: {
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
|
|
|
|
|
|
|
|
121 |
}
|
122 |
}
|
123 |
});
|
33 |
'#ffe5e9',
|
34 |
);
|
35 |
|
36 |
+
$data = array();
|
37 |
+
$labels = array();
|
38 |
+
for ( $x = 0; $x < 14; $x++ ) {
|
39 |
+
$time = strtotime('-' . $x . ' days');
|
40 |
+
$date_key = gmdate( 'M. j', $time );
|
41 |
|
42 |
+
foreach ( $entries as $key => $entry ) {
|
43 |
+
$entry_date_key = gmdate( 'M. j', strtotime( $entry['date_recorded'] ) );
|
|
|
44 |
|
45 |
+
if ( $date_key === $entry_date_key ) {
|
46 |
+
if ( ! empty( $entry['country_name'] ) ) {
|
47 |
+
if ( ! in_array( $entry['country_name'], $labels ) ) {
|
48 |
+
$labels[] = $entry['country_name'];
|
49 |
+
}
|
50 |
|
51 |
+
if ( empty( $data[ $entry['country_name'] ] ) ) {
|
52 |
+
$data[ $entry['country_name'] ] = 1;
|
53 |
+
} else {
|
54 |
+
$data[ $entry['country_name'] ]++;
|
55 |
+
}
|
56 |
+
} else {
|
57 |
+
if ( ! in_array( __( 'Unknown', 'zero-spam' ), $labels ) ) {
|
58 |
+
$labels[] = __( 'Unknown', 'zero-spam' );
|
59 |
+
}
|
60 |
|
61 |
+
if ( empty( $data['unknown'] ) ) {
|
62 |
+
$data['unknown'] = 1;
|
63 |
+
} else {
|
64 |
+
$data['unknown']++;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
}
|
|
|
|
|
|
|
|
|
70 |
|
71 |
wp_enqueue_script(
|
72 |
'zerospam-chart',
|
82 |
array(),
|
83 |
'2.9.4'
|
84 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
?>
|
86 |
|
87 |
<canvas id="zerospam-pie-countries"></canvas>
|
94 |
data: {
|
95 |
labels: <?php echo wp_json_encode( $labels ); ?>,
|
96 |
datasets: [{
|
97 |
+
data: <?php echo wp_json_encode( array_values( $data ) ); ?>,
|
98 |
+
backgroundColor: <?php echo wp_json_encode( $predefined_colors ); ?>,
|
|
|
|
|
99 |
}],
|
100 |
},
|
101 |
options: {
|
102 |
+
plugins: {
|
103 |
+
legend: {
|
104 |
+
position: 'right',
|
105 |
+
labels: {
|
106 |
+
boxWidth: 15,
|
107 |
+
boxHeight: 15,
|
108 |
+
}
|
109 |
+
}
|
110 |
}
|
111 |
}
|
112 |
});
|
modules/class-security.php
CHANGED
@@ -20,11 +20,22 @@ class Security {
|
|
20 |
* Constructor
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
-
|
24 |
-
|
25 |
remove_action( 'wp_head', 'wp_generator' );
|
26 |
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
}
|
30 |
}
|
20 |
* Constructor
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
+
// It can be considered a security risk to make your WP version visible &
|
24 |
+
// public you should hide it.
|
25 |
remove_action( 'wp_head', 'wp_generator' );
|
26 |
|
27 |
+
// XML-RPC can significantly amplify the brute-force attacks.
|
28 |
+
add_filter( 'xmlrpc_enabled', '__return_false' );
|
29 |
+
|
30 |
+
// Fired on detections.
|
31 |
+
add_action( 'zero_spam_detection', array( $this, 'handle_detection' ), 10, 2 );
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Handles detections.
|
36 |
+
*
|
37 |
+
* @param array $validation_errors Array of validation errors.
|
38 |
+
*/
|
39 |
+
public function handle_detection( $details, $validation_errors ) {
|
40 |
}
|
41 |
}
|
modules/class-zerospam.php
CHANGED
@@ -14,12 +14,6 @@ defined( 'ABSPATH' ) || die();
|
|
14 |
* Zero Spam
|
15 |
*/
|
16 |
class Zero_Spam {
|
17 |
-
|
18 |
-
/**
|
19 |
-
* The zerospam.org API endpoint
|
20 |
-
*/
|
21 |
-
const API_ENDPOINT = ZEROSPAM_URL . 'wp-json/zero-spam-store/v1/';
|
22 |
-
|
23 |
/**
|
24 |
* Constructor
|
25 |
*/
|
@@ -228,15 +222,18 @@ class Zero_Spam {
|
|
228 |
* Global API data.
|
229 |
*/
|
230 |
public function global_api_data() {
|
231 |
-
$api_data
|
232 |
-
$api_data['reporter_email']
|
233 |
-
$api_data['
|
234 |
-
$api_data['
|
235 |
-
$api_data['
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
|
|
|
|
|
|
240 |
|
241 |
return $api_data;
|
242 |
}
|
@@ -260,7 +257,7 @@ class Zero_Spam {
|
|
260 |
}
|
261 |
}
|
262 |
|
263 |
-
$endpoint =
|
264 |
|
265 |
$ip = \ZeroSpam\Core\User::get_ip();
|
266 |
|
@@ -268,58 +265,13 @@ class Zero_Spam {
|
|
268 |
return false;
|
269 |
}
|
270 |
|
271 |
-
// Define the data to send to the report API.
|
272 |
-
$compliant = sanitize_text_field( $data['type'] );
|
273 |
-
if ( ! empty( $data['failed'] ) ) {
|
274 |
-
$compliant .= ' - ' . sanitize_text_field( $data['failed'] );
|
275 |
-
}
|
276 |
-
|
277 |
$api_data = array(
|
278 |
-
'report_type'
|
279 |
-
'
|
280 |
-
'
|
|
|
281 |
);
|
282 |
|
283 |
-
// Add specially defined data to the API report.
|
284 |
-
|
285 |
-
// From comments.
|
286 |
-
if ( ! empty( $data['comment_author_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['comment_author_email'] ) ) {
|
287 |
-
$api_data['email_address'] = sanitize_email( $data['comment_author_email'] );
|
288 |
-
|
289 |
-
if ( ! empty( $data['comment_author'] ) ) {
|
290 |
-
$api_data['email_name'] = sanitize_text_field( $data['comment_author'] );
|
291 |
-
}
|
292 |
-
}
|
293 |
-
|
294 |
-
// From registration.
|
295 |
-
if ( ! empty( $data['user_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['user_email'] ) ) {
|
296 |
-
$api_data['email_address'] = sanitize_email( $data['user_email'] );
|
297 |
-
}
|
298 |
-
|
299 |
-
// From WooCommerce registration.
|
300 |
-
if ( ! empty( $data['email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['email'] ) ) {
|
301 |
-
$api_data['email_address'] = sanitize_email( $data['email'] );
|
302 |
-
}
|
303 |
-
|
304 |
-
if ( ! empty( $data['post'] ) ) {
|
305 |
-
// From MemberPress.
|
306 |
-
if ( ! empty( $data['post']['user_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['post']['user_email'] ) ) {
|
307 |
-
$api_data['email_address'] = sanitize_email( $data['post']['user_email'] );
|
308 |
-
}
|
309 |
-
|
310 |
-
// From Mailchimp for WordPress.
|
311 |
-
if ( ! empty( $data['post']['EMAIL'] ) && \ZeroSpam\Core\Utilities::is_email( $data['post']['EMAIL'] ) ) {
|
312 |
-
$api_data['email_address'] = sanitize_email( $data['post']['EMAIL'] );
|
313 |
-
}
|
314 |
-
}
|
315 |
-
|
316 |
-
if ( ! empty( $data['data'] ) ) {
|
317 |
-
// From GiveWP.
|
318 |
-
if ( ! empty( $data['data']['give_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['data']['give_email'] ) ) {
|
319 |
-
$api_data['email_address'] = sanitize_email( $data['post']['give_email'] );
|
320 |
-
}
|
321 |
-
}
|
322 |
-
|
323 |
// Add data that should be included in every API report.
|
324 |
$global_data = self::global_api_data();
|
325 |
$api_data = array_merge( $api_data, $global_data );
|
@@ -329,12 +281,91 @@ class Zero_Spam {
|
|
329 |
'body' => array( 'data' => $api_data ),
|
330 |
);
|
331 |
|
|
|
332 |
$response = wp_remote_post( $endpoint, $args );
|
333 |
-
|
334 |
if ( is_wp_error( $response ) ) {
|
335 |
//echo $response->get_error_message();
|
336 |
}
|
337 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
update_site_option( 'zero_spam_last_api_request', current_time( 'mysql' ) );
|
339 |
}
|
340 |
|
@@ -409,7 +440,7 @@ class Zero_Spam {
|
|
409 |
if ( gmdate( 'Y-m-d', strtotime( $first_query_date ) ) !== gmdate( 'Y-m-d' ) ) {
|
410 |
// New day.
|
411 |
update_site_option( 'zero_spam_last_api_query', current_time( 'mysql' ) . '*1' );
|
412 |
-
} elseif ( $num_queries >
|
413 |
return false;
|
414 |
} else {
|
415 |
update_site_option( 'zero_spam_last_api_query', $first_query_date . '*' . ( $num_queries+1 ) );
|
14 |
* Zero Spam
|
15 |
*/
|
16 |
class Zero_Spam {
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
/**
|
18 |
* Constructor
|
19 |
*/
|
222 |
* Global API data.
|
223 |
*/
|
224 |
public function global_api_data() {
|
225 |
+
$api_data = array();
|
226 |
+
$api_data['reporter_email'] = sanitize_email( get_bloginfo( 'admin_email' ) );
|
227 |
+
$api_data['app_key'] = \ZeroSpam\Core\Utilities::clean_domain( esc_url( site_url() ) );
|
228 |
+
$api_data['app_type'] = 'wordpress';
|
229 |
+
$api_data['app_details'] = array(
|
230 |
+
'app_version' => sanitize_text_field( get_bloginfo( 'version' ) ),
|
231 |
+
'app_type_version' => sanitize_text_field( ZEROSPAM_VERSION ),
|
232 |
+
'app_language' => sanitize_text_field( strtolower( get_bloginfo( 'language' ) ) ),
|
233 |
+
'app_email' => sanitize_email( get_bloginfo( 'admin_email' ) ),
|
234 |
+
'app_name' => sanitize_text_field( get_bloginfo( 'name' ) ),
|
235 |
+
'app_desc' => sanitize_text_field( get_bloginfo( 'description' ) ),
|
236 |
+
);
|
237 |
|
238 |
return $api_data;
|
239 |
}
|
257 |
}
|
258 |
}
|
259 |
|
260 |
+
$endpoint = ZEROSPAM_URL . 'wp-json/v5.4/report/';
|
261 |
|
262 |
$ip = \ZeroSpam\Core\User::get_ip();
|
263 |
|
265 |
return false;
|
266 |
}
|
267 |
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
$api_data = array(
|
269 |
+
'report_type' => 'ip_address',
|
270 |
+
'report_module' => sanitize_text_field( $data['type'] ),
|
271 |
+
'report_key' => sanitize_text_field( $ip ),
|
272 |
+
'report_failed' => sanitize_text_field( $data['failed'] ),
|
273 |
);
|
274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
// Add data that should be included in every API report.
|
276 |
$global_data = self::global_api_data();
|
277 |
$api_data = array_merge( $api_data, $global_data );
|
281 |
'body' => array( 'data' => $api_data ),
|
282 |
);
|
283 |
|
284 |
+
// Send IP report
|
285 |
$response = wp_remote_post( $endpoint, $args );
|
|
|
286 |
if ( is_wp_error( $response ) ) {
|
287 |
//echo $response->get_error_message();
|
288 |
}
|
289 |
|
290 |
+
// Send email report if needed.
|
291 |
+
$valid_email_fields = array(
|
292 |
+
'comment_author_email', // Comments
|
293 |
+
'user_email', // Registration
|
294 |
+
'email', // WooCommerce Registration
|
295 |
+
'post' => array( // Mailchimp
|
296 |
+
'EMAIL'
|
297 |
+
),
|
298 |
+
'data' => array( // Give
|
299 |
+
'give_email'
|
300 |
+
)
|
301 |
+
);
|
302 |
+
|
303 |
+
$valid_name_fields = array(
|
304 |
+
'comment_author', // Comment
|
305 |
+
'user_login', // Register
|
306 |
+
'username', // WooCommerce Registration
|
307 |
+
'data' => array( // Give
|
308 |
+
'give_first',
|
309 |
+
'give_last',
|
310 |
+
)
|
311 |
+
);
|
312 |
+
|
313 |
+
$report_details = array(
|
314 |
+
'report_type' => 'email_address',
|
315 |
+
'report_module' => sanitize_text_field( $data['type'] ),
|
316 |
+
'report_failed' => sanitize_text_field( $data['failed'] ),
|
317 |
+
'email_details' => array(
|
318 |
+
'names' => array(),
|
319 |
+
'companies' => array(),
|
320 |
+
'titles' => array(),
|
321 |
+
'phones' => array(),
|
322 |
+
'locations' => array(),
|
323 |
+
)
|
324 |
+
);
|
325 |
+
foreach ( $valid_email_fields as $key => $field ) {
|
326 |
+
if ( is_array( $field ) ) {
|
327 |
+
foreach( $field as $k => $f ) {
|
328 |
+
if ( ! empty( $data[ $key ][ $f ] ) && \ZeroSpam\Core\Utilities::is_email( $data[ $key ][ $f ] ) ) {
|
329 |
+
$report_details['report_key'] = sanitize_email( $data[ $key ][ $f ] );
|
330 |
+
break;
|
331 |
+
}
|
332 |
+
}
|
333 |
+
} elseif ( ! empty( $data[ $field ] ) && \ZeroSpam\Core\Utilities::is_email( $data[ $field ] ) ) {
|
334 |
+
$report_details['report_key'] = sanitize_email( $data[ $field ] );
|
335 |
+
}
|
336 |
+
|
337 |
+
if ( ! empty( $report_details['report_key'] ) ) {
|
338 |
+
foreach ( $valid_name_fields as $k => $f ) {
|
339 |
+
if ( is_array( $f ) ) {
|
340 |
+
$name = '';
|
341 |
+
foreach( $f as $k1 => $f1 ) {
|
342 |
+
if ( ! empty( $data[ $k ][ $f1 ] ) ) {
|
343 |
+
if ( $name ) { $name .= " "; }
|
344 |
+
$name .= $data[ $k ][ $f1 ];
|
345 |
+
}
|
346 |
+
}
|
347 |
+
|
348 |
+
$report_details['email_details']['names'][] = sanitize_text_field( $name );
|
349 |
+
} elseif ( ! empty( $data[ $f ] ) ) {
|
350 |
+
$report_details['email_details']['names'][] = sanitize_text_field( $data[ $f ] );
|
351 |
+
}
|
352 |
+
}
|
353 |
+
|
354 |
+
$args = array(
|
355 |
+
'body' => array(
|
356 |
+
'data' => array_merge( $report_details, $global_data )
|
357 |
+
)
|
358 |
+
);
|
359 |
+
|
360 |
+
$response = wp_remote_post( $endpoint, $args );
|
361 |
+
print_r($response);
|
362 |
+
die();
|
363 |
+
|
364 |
+
// Only send one email report per detection
|
365 |
+
break;
|
366 |
+
}
|
367 |
+
}
|
368 |
+
|
369 |
update_site_option( 'zero_spam_last_api_request', current_time( 'mysql' ) );
|
370 |
}
|
371 |
|
440 |
if ( gmdate( 'Y-m-d', strtotime( $first_query_date ) ) !== gmdate( 'Y-m-d' ) ) {
|
441 |
// New day.
|
442 |
update_site_option( 'zero_spam_last_api_query', current_time( 'mysql' ) . '*1' );
|
443 |
+
} elseif ( $num_queries > 200 ) {
|
444 |
return false;
|
445 |
} else {
|
446 |
update_site_option( 'zero_spam_last_api_query', $first_query_date . '*' . ( $num_queries+1 ) );
|
modules/comments/class-comments.php
CHANGED
@@ -54,7 +54,10 @@ class Comments {
|
|
54 |
* @param array $types Array of available detection types.
|
55 |
*/
|
56 |
public function types( $types ) {
|
57 |
-
$types['comment'] =
|
|
|
|
|
|
|
58 |
|
59 |
return $types;
|
60 |
}
|
54 |
* @param array $types Array of available detection types.
|
55 |
*/
|
56 |
public function types( $types ) {
|
57 |
+
$types['comment'] = array(
|
58 |
+
'label' => __( 'Comment', 'zero-spam' ),
|
59 |
+
'color' => '#0073aa',
|
60 |
+
);
|
61 |
|
62 |
return $types;
|
63 |
}
|
modules/contactform7/class-contactform7.php
CHANGED
@@ -139,7 +139,10 @@ class ContactForm7 {
|
|
139 |
* @param array $types Array of available detection types.
|
140 |
*/
|
141 |
public function types( $types ) {
|
142 |
-
$types['contactform7'] =
|
|
|
|
|
|
|
143 |
|
144 |
return $types;
|
145 |
}
|
139 |
* @param array $types Array of available detection types.
|
140 |
*/
|
141 |
public function types( $types ) {
|
142 |
+
$types['contactform7'] = array(
|
143 |
+
'label' => __( 'Contact Form 7', 'zero-spam' ),
|
144 |
+
'color' => '#1c457e',
|
145 |
+
);
|
146 |
|
147 |
return $types;
|
148 |
}
|
modules/davidwalsh/class-davidwalsh.php
CHANGED
@@ -39,17 +39,6 @@ class DavidWalsh {
|
|
39 |
add_action( 'login_enqueue_scripts', array( $this, 'scripts' ) );
|
40 |
add_action( 'zerospam_fluentforms_scripts', array( $this, 'enqueue_script' ) );
|
41 |
add_action( 'zerospam_mailchimp4wp_scripts', array( $this, 'enqueue_script' ) );
|
42 |
-
add_action( 'zerospam_memberpress_login_scripts', array( $this, 'enqueue_script' ) );
|
43 |
-
add_filter(
|
44 |
-
'zerospam_memberpress_registration_scripts',
|
45 |
-
function( $scripts ) {
|
46 |
-
$scripts[] = 'zerospam-davidwalsh';
|
47 |
-
|
48 |
-
return $scripts;
|
49 |
-
},
|
50 |
-
10,
|
51 |
-
1
|
52 |
-
);
|
53 |
|
54 |
add_filter( 'zerospam_preprocess_comment_submission', array( $this, 'validate_post' ), 10, 3 );
|
55 |
add_filter( 'zerospam_preprocess_registration_submission', array( $this, 'validate_post' ), 10, 3 );
|
@@ -57,8 +46,6 @@ class DavidWalsh {
|
|
57 |
add_filter( 'zerospam_preprocess_wpforms_submission', array( $this, 'validate_post' ), 10, 3 );
|
58 |
add_filter( 'zerospam_preprocess_fluentform_submission', array( $this, 'validate_post' ), 10, 3 );
|
59 |
add_filter( 'zerospam_preprocess_login_attempt', array( $this, 'validate_post' ), 10, 3 );
|
60 |
-
add_filter( 'zerospam_preprocess_memberpress_registration', array( $this, 'validate_post' ), 10, 3 );
|
61 |
-
add_filter( 'zerospam_preprocess_memberpress_login', array( $this, 'validate_post' ), 10, 3 );
|
62 |
add_filter( 'zerospam_preprocess_mailchimp4wp', array( $this, 'validate_post' ), 10, 3 );
|
63 |
add_filter( 'zerospam_process_woocommerce_registration', array( $this, 'validate_post' ), 10, 3 );
|
64 |
add_filter( 'zerospam_process_givewp_submission', array( $this, 'validate_post' ), 10, 3 );
|
39 |
add_action( 'login_enqueue_scripts', array( $this, 'scripts' ) );
|
40 |
add_action( 'zerospam_fluentforms_scripts', array( $this, 'enqueue_script' ) );
|
41 |
add_action( 'zerospam_mailchimp4wp_scripts', array( $this, 'enqueue_script' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
add_filter( 'zerospam_preprocess_comment_submission', array( $this, 'validate_post' ), 10, 3 );
|
44 |
add_filter( 'zerospam_preprocess_registration_submission', array( $this, 'validate_post' ), 10, 3 );
|
46 |
add_filter( 'zerospam_preprocess_wpforms_submission', array( $this, 'validate_post' ), 10, 3 );
|
47 |
add_filter( 'zerospam_preprocess_fluentform_submission', array( $this, 'validate_post' ), 10, 3 );
|
48 |
add_filter( 'zerospam_preprocess_login_attempt', array( $this, 'validate_post' ), 10, 3 );
|
|
|
|
|
49 |
add_filter( 'zerospam_preprocess_mailchimp4wp', array( $this, 'validate_post' ), 10, 3 );
|
50 |
add_filter( 'zerospam_process_woocommerce_registration', array( $this, 'validate_post' ), 10, 3 );
|
51 |
add_filter( 'zerospam_process_givewp_submission', array( $this, 'validate_post' ), 10, 3 );
|
modules/fluentforms/class-fluentforms.php
CHANGED
@@ -196,7 +196,10 @@ class FluentForms {
|
|
196 |
* @param array $types Array of available detection types.
|
197 |
*/
|
198 |
public function types( $types ) {
|
199 |
-
$types['fluent_form'] =
|
|
|
|
|
|
|
200 |
|
201 |
return $types;
|
202 |
}
|
196 |
* @param array $types Array of available detection types.
|
197 |
*/
|
198 |
public function types( $types ) {
|
199 |
+
$types['fluent_form'] = array(
|
200 |
+
'label' => __( 'Fluent Form', 'zero-spam' ),
|
201 |
+
'color' => '#0171ff',
|
202 |
+
);
|
203 |
|
204 |
return $types;
|
205 |
}
|
modules/formidable/class-formidable.php
CHANGED
@@ -48,7 +48,10 @@ class Formidable {
|
|
48 |
* @param array $types Array of available detection types.
|
49 |
*/
|
50 |
public function types( $types ) {
|
51 |
-
$types['formidable'] =
|
|
|
|
|
|
|
52 |
|
53 |
return $types;
|
54 |
}
|
48 |
* @param array $types Array of available detection types.
|
49 |
*/
|
50 |
public function types( $types ) {
|
51 |
+
$types['formidable'] = array(
|
52 |
+
'label' => __( 'Formidable', 'zero-spam' ),
|
53 |
+
'color' => '#f04d21',
|
54 |
+
);
|
55 |
|
56 |
return $types;
|
57 |
}
|
modules/give/class-give.php
CHANGED
@@ -164,7 +164,10 @@ class Give {
|
|
164 |
* @param array $types Array of available detection types.
|
165 |
*/
|
166 |
public function types( $types ) {
|
167 |
-
$types['givewp'] =
|
|
|
|
|
|
|
168 |
|
169 |
return $types;
|
170 |
}
|
164 |
* @param array $types Array of available detection types.
|
165 |
*/
|
166 |
public function types( $types ) {
|
167 |
+
$types['givewp'] = array(
|
168 |
+
'label' => __( 'GiveWP', 'zero-spam' ),
|
169 |
+
'color' => '#66b25b',
|
170 |
+
);
|
171 |
|
172 |
return $types;
|
173 |
}
|
modules/gravityforms/class-gravityforms.php
CHANGED
@@ -38,19 +38,48 @@ class GravityForms {
|
|
38 |
'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_gravityforms' ) &&
|
39 |
\ZeroSpam\Core\Access::process()
|
40 |
) {
|
41 |
-
|
42 |
add_filter( 'gform_form_tag', array( $this, 'add_honeypot' ), 60, 2 );
|
43 |
|
44 |
-
|
45 |
add_action( 'gform_abort_submission_with_confirmation', array( $this, 'process_form' ), 10, 2 );
|
46 |
add_filter( 'gform_confirmation', array( $this, 'confirmation_message' ), 10, 4 );
|
47 |
-
|
48 |
// Load scripts.
|
49 |
add_action( 'wp_print_scripts', array( $this, 'add_scripts' ), 999 );
|
50 |
-
|
51 |
}
|
52 |
}
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
/**
|
55 |
* Load the scripts
|
56 |
*
|
@@ -64,16 +93,16 @@ class GravityForms {
|
|
64 |
|
65 |
/**
|
66 |
* Adds Zero Spam's honeypot field.
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
* @param string $form_tag The string containing the <form> tag
|
71 |
-
|
72 |
*/
|
73 |
public function add_honeypot( $form_tag, $form ) {
|
74 |
-
|
75 |
|
76 |
-
|
77 |
}
|
78 |
|
79 |
public function confirmation_message( $confirmation, $form, $entry, $ajax ) {
|
@@ -119,6 +148,7 @@ class GravityForms {
|
|
119 |
}
|
120 |
|
121 |
if ( ! empty( $validation_errors ) ) {
|
|
|
122 |
$do_abort = true;
|
123 |
|
124 |
// Failed validations, log & send details if enabled.
|
@@ -140,32 +170,6 @@ class GravityForms {
|
|
140 |
return $do_abort;
|
141 |
}
|
142 |
|
143 |
-
/**
|
144 |
-
* Add to the types array
|
145 |
-
*
|
146 |
-
* @param array $types Array of available detection types.
|
147 |
-
*/
|
148 |
-
public function types( $types ) {
|
149 |
-
$types['gravityforms'] = __( 'Gravity Forms', 'zero-spam' );
|
150 |
-
|
151 |
-
return $types;
|
152 |
-
}
|
153 |
-
|
154 |
-
/**
|
155 |
-
* Admin section
|
156 |
-
*
|
157 |
-
* @param array $sections Array of available setting sections.
|
158 |
-
*/
|
159 |
-
public function sections( $sections ) {
|
160 |
-
$sections['gravityforms'] = array(
|
161 |
-
'title' => __( 'Gravity Forms', 'zero-spam' ),
|
162 |
-
'icon' => 'modules/gravityforms/icon-gravity-forms.svg',
|
163 |
-
'supports' => array( 'honeypot', 'email' ),
|
164 |
-
);
|
165 |
-
|
166 |
-
return $sections;
|
167 |
-
}
|
168 |
-
|
169 |
/**
|
170 |
* Admin settings
|
171 |
*
|
38 |
'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_gravityforms' ) &&
|
39 |
\ZeroSpam\Core\Access::process()
|
40 |
) {
|
41 |
+
// Adds Zero Spam's honeypot field.
|
42 |
add_filter( 'gform_form_tag', array( $this, 'add_honeypot' ), 60, 2 );
|
43 |
|
44 |
+
// Processes the form.
|
45 |
add_action( 'gform_abort_submission_with_confirmation', array( $this, 'process_form' ), 10, 2 );
|
46 |
add_filter( 'gform_confirmation', array( $this, 'confirmation_message' ), 10, 4 );
|
47 |
+
/*
|
48 |
// Load scripts.
|
49 |
add_action( 'wp_print_scripts', array( $this, 'add_scripts' ), 999 );
|
50 |
+
*/
|
51 |
}
|
52 |
}
|
53 |
|
54 |
+
/**
|
55 |
+
* Add to the types array
|
56 |
+
*
|
57 |
+
* @param array $types Array of available detection types.
|
58 |
+
*/
|
59 |
+
public function types( $types ) {
|
60 |
+
$types['gravityforms'] = array(
|
61 |
+
'label' => __( 'Gravity Forms', 'zero-spam' ),
|
62 |
+
'color' => '#f15a29',
|
63 |
+
);
|
64 |
+
|
65 |
+
return $types;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Admin section
|
70 |
+
*
|
71 |
+
* @param array $sections Array of available setting sections.
|
72 |
+
*/
|
73 |
+
public function sections( $sections ) {
|
74 |
+
$sections['gravityforms'] = array(
|
75 |
+
'title' => __( 'Gravity Forms', 'zero-spam' ),
|
76 |
+
'icon' => 'modules/gravityforms/icon-gravity-forms.svg',
|
77 |
+
'supports' => array( 'honeypot', 'email' ),
|
78 |
+
);
|
79 |
+
|
80 |
+
return $sections;
|
81 |
+
}
|
82 |
+
|
83 |
/**
|
84 |
* Load the scripts
|
85 |
*
|
93 |
|
94 |
/**
|
95 |
* Adds Zero Spam's honeypot field.
|
96 |
+
*
|
97 |
+
* @see https://docs.gravityforms.com/gform_form_tag/#h-add-hidden-input
|
98 |
+
*
|
99 |
* @param string $form_tag The string containing the <form> tag
|
100 |
+
* @param array $form The current form object to be filtered.
|
101 |
*/
|
102 |
public function add_honeypot( $form_tag, $form ) {
|
103 |
+
$form_tag .= \ZeroSpam\Core\Utilities::honeypot_field();
|
104 |
|
105 |
+
return $form_tag;
|
106 |
}
|
107 |
|
108 |
public function confirmation_message( $confirmation, $form, $entry, $ajax ) {
|
148 |
}
|
149 |
|
150 |
if ( ! empty( $validation_errors ) ) {
|
151 |
+
do_action( 'zero_spam_detection', $details, $validation_errors );
|
152 |
$do_abort = true;
|
153 |
|
154 |
// Failed validations, log & send details if enabled.
|
170 |
return $do_abort;
|
171 |
}
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
/**
|
174 |
* Admin settings
|
175 |
*
|
modules/login/class-login.php
CHANGED
@@ -151,7 +151,10 @@ class Login {
|
|
151 |
* @param array $types Array of available detection types.
|
152 |
*/
|
153 |
public function types( $types ) {
|
154 |
-
$types['login'] =
|
|
|
|
|
|
|
155 |
|
156 |
return $types;
|
157 |
}
|
151 |
* @param array $types Array of available detection types.
|
152 |
*/
|
153 |
public function types( $types ) {
|
154 |
+
$types['login'] = array(
|
155 |
+
'label' => __( 'Login', 'zero-spam' ),
|
156 |
+
'color' => '#7b90ff',
|
157 |
+
);
|
158 |
|
159 |
return $types;
|
160 |
}
|
modules/mailchimpforwp/class-mailchimpforwp.php
CHANGED
@@ -160,7 +160,10 @@ class MailchimpForWP {
|
|
160 |
* @param array $types Array of available detection types.
|
161 |
*/
|
162 |
public function types( $types ) {
|
163 |
-
$types['mailchimp4wp'] =
|
|
|
|
|
|
|
164 |
|
165 |
return $types;
|
166 |
}
|
160 |
* @param array $types Array of available detection types.
|
161 |
*/
|
162 |
public function types( $types ) {
|
163 |
+
$types['mailchimp4wp'] = array(
|
164 |
+
'label' => __( 'Mailchimp for WordPress', 'zero-spam' ),
|
165 |
+
'color' => '#c44',
|
166 |
+
);
|
167 |
|
168 |
return $types;
|
169 |
}
|
modules/memberpress/class-memberpress.php
DELETED
@@ -1,375 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* MemberPress class
|
4 |
-
*
|
5 |
-
* @package ZeroSpam
|
6 |
-
*/
|
7 |
-
|
8 |
-
namespace ZeroSpam\Modules\MemberPress;
|
9 |
-
|
10 |
-
// Security Note: Blocks direct access to the plugin PHP files.
|
11 |
-
defined( 'ABSPATH' ) || die();
|
12 |
-
|
13 |
-
/**
|
14 |
-
* MemberPress
|
15 |
-
*/
|
16 |
-
class MemberPress {
|
17 |
-
/**
|
18 |
-
* Constructor
|
19 |
-
*/
|
20 |
-
public function __construct() {
|
21 |
-
add_action( 'init', array( $this, 'init' ), 0 );
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Fires after WordPress has finished loading but before any headers are sent.
|
26 |
-
*/
|
27 |
-
public function init() {
|
28 |
-
global $wp_query;
|
29 |
-
|
30 |
-
add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
|
31 |
-
add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
|
32 |
-
add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
|
33 |
-
|
34 |
-
if ( \ZeroSpam\Core\Access::process() ) {
|
35 |
-
if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_memberpress_registration' ) ) {
|
36 |
-
// Add Zero Spam's honeypot field to the registration form.
|
37 |
-
add_action( 'mepr-checkout-before-submit', array( $this, 'add_honeypot' ) );
|
38 |
-
|
39 |
-
// Preprocess registration form submissions.
|
40 |
-
add_filter( 'mepr-validate-signup', array( $this, 'process_registration_form' ), 10, 1 );
|
41 |
-
|
42 |
-
// Add registration scripts.
|
43 |
-
add_filter( 'mepr-signup-scripts', array( $this, 'scripts' ), 10, 1 );
|
44 |
-
}
|
45 |
-
|
46 |
-
if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_memberpress_login' ) ) {
|
47 |
-
// Add Zero Spam's honeypot field to the login form.
|
48 |
-
add_action( 'mepr-login-form-before-submit', array( $this, 'add_honeypot' ) );
|
49 |
-
|
50 |
-
// Preprocess login form submissions.
|
51 |
-
add_filter( 'mepr-validate-login', array( $this, 'process_login_form' ), 10, 1 );
|
52 |
-
|
53 |
-
// Add login scripts.
|
54 |
-
add_action(
|
55 |
-
'the_post',
|
56 |
-
function() {
|
57 |
-
$mepr_options = \MeprOptions::fetch();
|
58 |
-
$login_page_id = ( ! empty( $mepr_options->login_page_id ) && $mepr_options->login_page_id > 0 ) ? $mepr_options->login_page_id : 0;
|
59 |
-
$is_login_page = is_page( $login_page_id );
|
60 |
-
|
61 |
-
if ( $is_login_page ) {
|
62 |
-
do_action( 'zerospam_memberpress_login_scripts' );
|
63 |
-
}
|
64 |
-
}
|
65 |
-
);
|
66 |
-
}
|
67 |
-
}
|
68 |
-
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Load the add-on scripts
|
72 |
-
*
|
73 |
-
* @param array $prereqs Script keys.
|
74 |
-
*/
|
75 |
-
public function scripts( $prereqs ) {
|
76 |
-
$scripts = apply_filters( 'zerospam_memberpress_registration_scripts', $prereqs );
|
77 |
-
|
78 |
-
return $scripts;
|
79 |
-
}
|
80 |
-
|
81 |
-
/**
|
82 |
-
* Adds Zero Spam's honeypot field.
|
83 |
-
*/
|
84 |
-
public function add_honeypot() {
|
85 |
-
// @codingStandardsIgnoreLine
|
86 |
-
echo \ZeroSpam\Core\Utilities::honeypot_field();
|
87 |
-
}
|
88 |
-
|
89 |
-
/**
|
90 |
-
* Processes a registration submission.
|
91 |
-
*
|
92 |
-
* @param array $errors Array of errors.
|
93 |
-
*/
|
94 |
-
public function process_registration_form( $errors ) {
|
95 |
-
// @codingStandardsIgnoreLine
|
96 |
-
$post = \ZeroSpam\Core\Utilities::sanitize_array( $_POST );
|
97 |
-
|
98 |
-
// Get the error message.
|
99 |
-
$error_message = \ZeroSpam\Core\Utilities::detection_message( 'memberpress_regsitration_spam_message' );
|
100 |
-
|
101 |
-
// Create the details array for logging & sharing data.
|
102 |
-
$details = array(
|
103 |
-
'post' => $post,
|
104 |
-
'type' => 'memberpress_registration',
|
105 |
-
);
|
106 |
-
|
107 |
-
// Check Zero Spam's honeypot field.
|
108 |
-
$honeypot_field_name = \ZeroSpam\Core\Utilities::get_honeypot();
|
109 |
-
|
110 |
-
// Begin validation checks.
|
111 |
-
$validation_errors = array();
|
112 |
-
|
113 |
-
if ( isset( $post[ $honeypot_field_name ] ) && ! empty( $post[ $honeypot_field_name ] ) ) {
|
114 |
-
// Failed the honeypot check.
|
115 |
-
$validation_errors[] = 'honeypot';
|
116 |
-
}
|
117 |
-
|
118 |
-
// Check email.
|
119 |
-
if ( ! empty( $post['user_email'] ) && ! \ZeroSpam\Core\Utilities::is_email( $post['user_email'] ) ) {
|
120 |
-
$validation_errors[] = 'invalid_email';
|
121 |
-
}
|
122 |
-
|
123 |
-
// Check blocked email domains.
|
124 |
-
if (
|
125 |
-
! empty( $post['user_email'] ) &&
|
126 |
-
\ZeroSpam\Core\Utilities::is_email_domain_blocked( $post['user_email'] )
|
127 |
-
) {
|
128 |
-
// Email domain has been blocked.
|
129 |
-
$validation_errors[] = 'blocked_email_domain';
|
130 |
-
}
|
131 |
-
|
132 |
-
// Fire hook for additional validation (ex. David Walsh script).
|
133 |
-
// @codingStandardsIgnoreLine
|
134 |
-
$filtered_errors = apply_filters( 'zerospam_preprocess_memberpress_registration', array(), $post, 'memberpress_regsitration_spam_message' );
|
135 |
-
|
136 |
-
if ( ! empty( $filtered_errors ) ) {
|
137 |
-
foreach ( $filtered_errors as $key => $message ) {
|
138 |
-
$validation_errors[] = str_replace( 'zerospam_', '', $key );
|
139 |
-
}
|
140 |
-
}
|
141 |
-
|
142 |
-
if ( ! empty( $validation_errors ) ) {
|
143 |
-
// Failed validations, log & send details if enabled.
|
144 |
-
foreach ( $validation_errors as $key => $fail ) {
|
145 |
-
$details['failed'] = $fail;
|
146 |
-
|
147 |
-
// Log the detection if enabled.
|
148 |
-
if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'log_blocked_memberpress_registrations' ) ) {
|
149 |
-
\ZeroSpam\Includes\DB::log( 'memberpress_registration', $details );
|
150 |
-
}
|
151 |
-
|
152 |
-
// Share the detection if enabled.
|
153 |
-
if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'share_data' ) ) {
|
154 |
-
do_action( 'zerospam_share_detection', $details );
|
155 |
-
}
|
156 |
-
}
|
157 |
-
|
158 |
-
$errors[] = $error_message;
|
159 |
-
}
|
160 |
-
|
161 |
-
return $errors;
|
162 |
-
}
|
163 |
-
|
164 |
-
/**
|
165 |
-
* Processes a login submission.
|
166 |
-
*
|
167 |
-
* @param array $errors Array of errors.
|
168 |
-
*/
|
169 |
-
public function process_login_form( $errors ) {
|
170 |
-
// @codingStandardsIgnoreLine
|
171 |
-
$post = \ZeroSpam\Core\Utilities::sanitize_array( $_POST );
|
172 |
-
|
173 |
-
// Get the error message.
|
174 |
-
$error_message = \ZeroSpam\Core\Utilities::detection_message( 'memberpress_login_spam_message' );
|
175 |
-
|
176 |
-
// Create the details array for logging & sharing data.
|
177 |
-
$details = array(
|
178 |
-
'post' => $post,
|
179 |
-
'type' => 'memberpress_login',
|
180 |
-
);
|
181 |
-
|
182 |
-
// Check Zero Spam's honeypot field.
|
183 |
-
$honeypot_field_name = \ZeroSpam\Core\Utilities::get_honeypot();
|
184 |
-
|
185 |
-
// Begin validation checks.
|
186 |
-
$validation_errors = array();
|
187 |
-
|
188 |
-
if ( isset( $post[ $honeypot_field_name ] ) && ! empty( $post[ $honeypot_field_name ] ) ) {
|
189 |
-
// Failed the honeypot check.
|
190 |
-
$validation_errors[] = 'honeypot';
|
191 |
-
}
|
192 |
-
|
193 |
-
// Fire hook for additional validation (ex. David Walsh script).
|
194 |
-
// @codingStandardsIgnoreLine
|
195 |
-
$filtered_errors = apply_filters( 'zerospam_preprocess_memberpress_login', array(), $post, 'memberpress_login_spam_message' );
|
196 |
-
if ( ! empty( $filtered_errors ) ) {
|
197 |
-
foreach ( $filtered_errors as $key => $message ) {
|
198 |
-
$validation_errors[] = str_replace( 'zerospam_', '', $key );
|
199 |
-
}
|
200 |
-
}
|
201 |
-
|
202 |
-
if ( ! empty( $validation_errors ) ) {
|
203 |
-
// Failed validations, log & send details if enabled.
|
204 |
-
foreach ( $validation_errors as $key => $fail ) {
|
205 |
-
$details['failed'] = $fail;
|
206 |
-
|
207 |
-
// Log the detection if enabled.
|
208 |
-
if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'log_blocked_memberpress_logins' ) ) {
|
209 |
-
\ZeroSpam\Includes\DB::log( 'memberpress_login', $details );
|
210 |
-
}
|
211 |
-
|
212 |
-
// Share the detection if enabled.
|
213 |
-
if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'share_data' ) ) {
|
214 |
-
do_action( 'zerospam_share_detection', $details );
|
215 |
-
}
|
216 |
-
}
|
217 |
-
|
218 |
-
$errors[] = $error_message;
|
219 |
-
}
|
220 |
-
|
221 |
-
return $errors;
|
222 |
-
}
|
223 |
-
|
224 |
-
/**
|
225 |
-
* Add to the types array
|
226 |
-
*
|
227 |
-
* @param array $types Array of available detection types.
|
228 |
-
*/
|
229 |
-
public function types( $types ) {
|
230 |
-
$types['memberpress_registration'] = __( 'MemberPress Registration', 'zero-spam' );
|
231 |
-
$types['memberpress_login'] = __( 'MemberPress Login', 'zero-spam' );
|
232 |
-
|
233 |
-
return $types;
|
234 |
-
}
|
235 |
-
|
236 |
-
/**
|
237 |
-
* Admin section
|
238 |
-
*
|
239 |
-
* @param array $sections Array of available setting sections.
|
240 |
-
*/
|
241 |
-
public function sections( $sections ) {
|
242 |
-
$sections['memberpress'] = array(
|
243 |
-
'title' => __( 'MemberPress', 'zero-spam' ),
|
244 |
-
);
|
245 |
-
|
246 |
-
return $sections;
|
247 |
-
}
|
248 |
-
|
249 |
-
/**
|
250 |
-
* Admin settings
|
251 |
-
*
|
252 |
-
* @param array $settings Array of available settings.
|
253 |
-
*/
|
254 |
-
public function settings( $settings ) {
|
255 |
-
$options = get_option( 'zero-spam-memberpress' );
|
256 |
-
|
257 |
-
$default_spam_message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
|
258 |
-
|
259 |
-
// Registration protection.
|
260 |
-
$settings['memberpress_registration_info'] = array(
|
261 |
-
'section' => 'memberpress',
|
262 |
-
'module' => 'memberpress',
|
263 |
-
'type' => 'html',
|
264 |
-
'html' => sprintf(
|
265 |
-
wp_kses(
|
266 |
-
__( '<h3 style="margin: 0">Registration Protection</h3>', 'zero-spam' ),
|
267 |
-
array(
|
268 |
-
'h3' => array(
|
269 |
-
'style' => array(),
|
270 |
-
),
|
271 |
-
)
|
272 |
-
)
|
273 |
-
),
|
274 |
-
);
|
275 |
-
|
276 |
-
$settings['verify_memberpress_registration'] = array(
|
277 |
-
'title' => __( 'Protect Registration Forms', 'zero-spam' ),
|
278 |
-
'section' => 'memberpress',
|
279 |
-
'module' => 'memberpress',
|
280 |
-
'type' => 'checkbox',
|
281 |
-
'options' => array(
|
282 |
-
'enabled' => __( 'Monitor MemberPress registrations for malicious or automated spambots.', 'zero-spam' ),
|
283 |
-
),
|
284 |
-
'value' => ! empty( $options['verify_memberpress_registration'] ) ? $options['verify_memberpress_registration'] : false,
|
285 |
-
'recommended' => 'enabled',
|
286 |
-
);
|
287 |
-
|
288 |
-
$settings['memberpress_regsitration_spam_message'] = array(
|
289 |
-
'title' => __( 'Registration Spam/Malicious Message', 'zero-spam' ),
|
290 |
-
'desc' => __( 'When registration protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
|
291 |
-
'section' => 'memberpress',
|
292 |
-
'module' => 'memberpress',
|
293 |
-
'type' => 'text',
|
294 |
-
'field_class' => 'large-text',
|
295 |
-
'placeholder' => $default_spam_message,
|
296 |
-
'value' => ! empty( $options['memberpress_regsitration_spam_message'] ) ? $options['memberpress_regsitration_spam_message'] : $default_spam_message,
|
297 |
-
'recommended' => $default_spam_message,
|
298 |
-
);
|
299 |
-
|
300 |
-
$settings['log_blocked_memberpress_registrations'] = array(
|
301 |
-
'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
|
302 |
-
'section' => 'memberpress',
|
303 |
-
'module' => 'memberpress',
|
304 |
-
'type' => 'checkbox',
|
305 |
-
'desc' => wp_kses(
|
306 |
-
__( 'Enables logging blocked registration attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
|
307 |
-
array( 'strong' => array() )
|
308 |
-
),
|
309 |
-
'options' => array(
|
310 |
-
'enabled' => __( 'Enabled', 'zero-spam' ),
|
311 |
-
),
|
312 |
-
'value' => ! empty( $options['log_blocked_memberpress_registrations'] ) ? $options['log_blocked_memberpress_registrations'] : false,
|
313 |
-
'recommended' => 'enabled',
|
314 |
-
);
|
315 |
-
|
316 |
-
// User login protection.
|
317 |
-
$settings['memberpress_login_info'] = array(
|
318 |
-
'section' => 'memberpress',
|
319 |
-
'module' => 'memberpress',
|
320 |
-
'type' => 'html',
|
321 |
-
'html' => sprintf(
|
322 |
-
wp_kses(
|
323 |
-
__( '<h3 style="margin-bottom: 0">User Login Protection</h3>', 'zero-spam' ),
|
324 |
-
array(
|
325 |
-
'h3' => array(
|
326 |
-
'style' => array(),
|
327 |
-
),
|
328 |
-
)
|
329 |
-
)
|
330 |
-
),
|
331 |
-
);
|
332 |
-
|
333 |
-
$settings['verify_memberpress_login'] = array(
|
334 |
-
'title' => __( 'Protect Login Forms', 'zero-spam' ),
|
335 |
-
'section' => 'memberpress',
|
336 |
-
'module' => 'memberpress',
|
337 |
-
'type' => 'checkbox',
|
338 |
-
'options' => array(
|
339 |
-
'enabled' => __( 'Monitor MemberPress logins for malicious or automated spambots.', 'zero-spam' ),
|
340 |
-
),
|
341 |
-
'value' => ! empty( $options['verify_memberpress_login'] ) ? $options['verify_memberpress_login'] : false,
|
342 |
-
'recommended' => 'enabled',
|
343 |
-
);
|
344 |
-
|
345 |
-
$settings['memberpress_login_spam_message'] = array(
|
346 |
-
'title' => __( 'Login Spam/Malicious Message', 'zero-spam' ),
|
347 |
-
'desc' => __( 'When login protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
|
348 |
-
'section' => 'memberpress',
|
349 |
-
'module' => 'memberpress',
|
350 |
-
'type' => 'text',
|
351 |
-
'field_class' => 'large-text',
|
352 |
-
'placeholder' => $default_spam_message,
|
353 |
-
'value' => ! empty( $options['memberpress_login_spam_message'] ) ? $options['memberpress_login_spam_message'] : $default_spam_message,
|
354 |
-
'recommended' => $default_spam_message,
|
355 |
-
);
|
356 |
-
|
357 |
-
$settings['log_blocked_memberpress_logins'] = array(
|
358 |
-
'title' => __( 'Log Blocked Logins', 'zero-spam' ),
|
359 |
-
'section' => 'memberpress',
|
360 |
-
'module' => 'memberpress',
|
361 |
-
'type' => 'checkbox',
|
362 |
-
'desc' => wp_kses(
|
363 |
-
__( 'Enables logging blocked login attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
|
364 |
-
array( 'strong' => array() )
|
365 |
-
),
|
366 |
-
'options' => array(
|
367 |
-
'enabled' => __( 'Enabled', 'zero-spam' ),
|
368 |
-
),
|
369 |
-
'value' => ! empty( $options['log_blocked_memberpress_logins'] ) ? $options['log_blocked_memberpress_logins'] : false,
|
370 |
-
'recommended' => 'enabled',
|
371 |
-
);
|
372 |
-
|
373 |
-
return $settings;
|
374 |
-
}
|
375 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
modules/registration/class-registration.php
CHANGED
@@ -51,7 +51,10 @@ class Registration {
|
|
51 |
* @param array $types Array of available detection types.
|
52 |
*/
|
53 |
public function types( $types ) {
|
54 |
-
$types['registration'] =
|
|
|
|
|
|
|
55 |
|
56 |
return $types;
|
57 |
}
|
51 |
* @param array $types Array of available detection types.
|
52 |
*/
|
53 |
public function types( $types ) {
|
54 |
+
$types['registration'] = array(
|
55 |
+
'label' => __( 'Registration', 'zero-spam' ),
|
56 |
+
'color' => '#3858e9',
|
57 |
+
);
|
58 |
|
59 |
return $types;
|
60 |
}
|
modules/woocommerce/class-woocommerce.php
CHANGED
@@ -33,7 +33,10 @@ class WooCommerce {
|
|
33 |
* @param array $types Array of available detection types.
|
34 |
*/
|
35 |
public function types( $types ) {
|
36 |
-
$types['woocommerce_registration'] =
|
|
|
|
|
|
|
37 |
|
38 |
return $types;
|
39 |
}
|
33 |
* @param array $types Array of available detection types.
|
34 |
*/
|
35 |
public function types( $types ) {
|
36 |
+
$types['woocommerce_registration'] = array(
|
37 |
+
'label' => __( 'Woo Registration', 'zero-spam' ),
|
38 |
+
'color' => '#7f54b3',
|
39 |
+
);
|
40 |
|
41 |
return $types;
|
42 |
}
|
modules/wpforms/class-wpforms.php
CHANGED
@@ -155,7 +155,10 @@ class WPForms {
|
|
155 |
* @param array $types Array of available detection types.
|
156 |
*/
|
157 |
public function types( $types ) {
|
158 |
-
$types['wpforms'] =
|
|
|
|
|
|
|
159 |
|
160 |
return $types;
|
161 |
}
|
155 |
* @param array $types Array of available detection types.
|
156 |
*/
|
157 |
public function types( $types ) {
|
158 |
+
$types['wpforms'] = array(
|
159 |
+
'label' => __( 'WPForms', 'zero-spam' ),
|
160 |
+
'color' => '#e27730',
|
161 |
+
);
|
162 |
|
163 |
return $types;
|
164 |
}
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Donate link: https://www.zerospam.org/subscribe/
|
|
5 |
Requires at least: 5.2
|
6 |
Tested up to: 6.0.2
|
7 |
Requires PHP: 7.3
|
8 |
-
Stable tag: 5.4.
|
9 |
License: GNU GPLv3
|
10 |
License URI: https://choosealicense.com/licenses/gpl-3.0/
|
11 |
|
@@ -32,11 +32,9 @@ Protect against spam & malicious users using an advanced, highly-configurable fi
|
|
32 |
= But wait, there's more! =
|
33 |
|
34 |
* Protects comments, user registration & login forms
|
35 |
-
* Protects [wpDiscuz](https://wordpress.org/plugins/wpdiscuz/) comment forms
|
36 |
* Protects [GiveWP](https://givewp.com/ref/1118/) forms & helps prevent testing stolen credit cards
|
37 |
-
* Protects [Contact Form 7](https://wordpress.org/plugins/contact-form-7/)
|
38 |
-
* Protects [
|
39 |
-
* Protects [MemberPress](https://memberpress.com/) & [WooCommerce](https://wordpress.org/plugins/woocommerce/) registrations
|
40 |
* Protects [Mailchimp for WordPress](https://wordpress.org/plugins/mailchimp-for-wp/) sign-ups
|
41 |
* and **can be integrated into any existing theme or plugin**
|
42 |
|
@@ -107,6 +105,15 @@ If hosting with Pantheon, see their [known issues page](https://pantheon.io/docs
|
|
107 |
|
108 |
== Changelog ==
|
109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
= v5.4.0 =
|
111 |
|
112 |
* chore(admin): updated the after-activation message
|
5 |
Requires at least: 5.2
|
6 |
Tested up to: 6.0.2
|
7 |
Requires PHP: 7.3
|
8 |
+
Stable tag: 5.4.1
|
9 |
License: GNU GPLv3
|
10 |
License URI: https://choosealicense.com/licenses/gpl-3.0/
|
11 |
|
32 |
= But wait, there's more! =
|
33 |
|
34 |
* Protects comments, user registration & login forms
|
|
|
35 |
* Protects [GiveWP](https://givewp.com/ref/1118/) forms & helps prevent testing stolen credit cards
|
36 |
+
* Protects [Gravity Forms](https://www.gravityforms.com/), [Contact Form 7](https://wordpress.org/plugins/contact-form-7/), [WPForms](https://wordpress.org/plugins/wpforms-lite/), [Formidable Form Builder](https://wordpress.org/plugins/formidable/), [Fluent Forms](https://wordpress.org/plugins/fluentform/) & [wpDiscuz](https://wordpress.org/plugins/wpdiscuz/) forms
|
37 |
+
* Protects [WooCommerce](https://wordpress.org/plugins/woocommerce/) registrations
|
|
|
38 |
* Protects [Mailchimp for WordPress](https://wordpress.org/plugins/mailchimp-for-wp/) sign-ups
|
39 |
* and **can be integrated into any existing theme or plugin**
|
40 |
|
105 |
|
106 |
== Changelog ==
|
107 |
|
108 |
+
= v5.4.1 =
|
109 |
+
|
110 |
+
* feat(dashboard): dashboard ui enhancements
|
111 |
+
* perf(sharing): performance improvements when sharing data
|
112 |
+
* fix(memberpress): removed memberpress support, they made fundamental changes to their plugin that's ganna require a rework
|
113 |
+
* fix(uninstall): fix issue where the plugin couldn't be deleted
|
114 |
+
* fix(cli): resolves #33
|
115 |
+
* chore(charts): updated chart.js tp 3.9.1
|
116 |
+
|
117 |
= v5.4.0 =
|
118 |
|
119 |
* chore(admin): updated the after-activation message
|
uninstall.php
CHANGED
@@ -16,7 +16,28 @@ $tables = array(
|
|
16 |
'blacklist' => 'wpzerospam_blacklist',
|
17 |
);
|
18 |
|
19 |
-
$modules =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
if ( is_multisite() ) {
|
22 |
// @codingStandardsIgnoreLine
|
@@ -34,7 +55,7 @@ if ( is_multisite() ) {
|
|
34 |
delete_option( 'zero_spam_last_api_report' );
|
35 |
delete_option( 'zero-spam-last-update' );
|
36 |
|
37 |
-
foreach ( $modules as $
|
38 |
delete_option( "zero-spam-$module" );
|
39 |
}
|
40 |
|
16 |
'blacklist' => 'wpzerospam_blacklist',
|
17 |
);
|
18 |
|
19 |
+
$modules = array(
|
20 |
+
'comments',
|
21 |
+
'contactform7',
|
22 |
+
'davidwalsh',
|
23 |
+
'fluentforms',
|
24 |
+
'formidable',
|
25 |
+
'givewp',
|
26 |
+
'gravityforms',
|
27 |
+
'login',
|
28 |
+
'mailchimp4wp',
|
29 |
+
'registration',
|
30 |
+
'woocommerce',
|
31 |
+
'wpforms',
|
32 |
+
'debug',
|
33 |
+
'google',
|
34 |
+
'ipinfo',
|
35 |
+
'ipstack',
|
36 |
+
'project_honeypot',
|
37 |
+
'security',
|
38 |
+
'stop_forum_spam',
|
39 |
+
'zerospam',
|
40 |
+
);
|
41 |
|
42 |
if ( is_multisite() ) {
|
43 |
// @codingStandardsIgnoreLine
|
55 |
delete_option( 'zero_spam_last_api_report' );
|
56 |
delete_option( 'zero-spam-last-update' );
|
57 |
|
58 |
+
foreach ( $modules as $key => $module ) {
|
59 |
delete_option( "zero-spam-$module" );
|
60 |
}
|
61 |
|
wordpress-zero-spam.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
* Plugin Name: Zero Spam for WordPress
|
14 |
* Plugin URI: https://www.highfivery.com/projects/zero-spam/
|
15 |
* Description: Tired of all the ineffective WordPress anti-spam & security plugins? Zero Spam for WordPress makes blocking spam & malicious activity a cinch. <strong>Just activate, configure, and say goodbye to spam.</strong>
|
16 |
-
* Version: 5.4.
|
17 |
* Requires at least: 5.2
|
18 |
* Requires PHP: 7.3
|
19 |
* Author: Highfivery LLC
|
@@ -31,7 +31,7 @@ defined( 'ABSPATH' ) || die();
|
|
31 |
define( 'ZEROSPAM', __FILE__ );
|
32 |
define( 'ZEROSPAM_PATH', plugin_dir_path( ZEROSPAM ) );
|
33 |
define( 'ZEROSPAM_PLUGIN_BASE', plugin_basename( ZEROSPAM ) );
|
34 |
-
define( 'ZEROSPAM_VERSION', '5.4.
|
35 |
|
36 |
if ( defined( 'ZEROSPAM_DEVELOPMENT_URL' ) ) {
|
37 |
define( 'ZEROSPAM_URL', ZEROSPAM_DEVELOPMENT_URL );
|
13 |
* Plugin Name: Zero Spam for WordPress
|
14 |
* Plugin URI: https://www.highfivery.com/projects/zero-spam/
|
15 |
* Description: Tired of all the ineffective WordPress anti-spam & security plugins? Zero Spam for WordPress makes blocking spam & malicious activity a cinch. <strong>Just activate, configure, and say goodbye to spam.</strong>
|
16 |
+
* Version: 5.4.1
|
17 |
* Requires at least: 5.2
|
18 |
* Requires PHP: 7.3
|
19 |
* Author: Highfivery LLC
|
31 |
define( 'ZEROSPAM', __FILE__ );
|
32 |
define( 'ZEROSPAM_PATH', plugin_dir_path( ZEROSPAM ) );
|
33 |
define( 'ZEROSPAM_PLUGIN_BASE', plugin_basename( ZEROSPAM ) );
|
34 |
+
define( 'ZEROSPAM_VERSION', '5.4.1' );
|
35 |
|
36 |
if ( defined( 'ZEROSPAM_DEVELOPMENT_URL' ) ) {
|
37 |
define( 'ZEROSPAM_URL', ZEROSPAM_DEVELOPMENT_URL );
|