View | Details | Raw Unified | Return to bug 42003
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/lib/datatables/datatables.css (-115 / +117 lines)
Lines 4-13 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/fh-4.0.3/r-3.0.6/rg-1.6.0/rr-1.5.0
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, FixedHeader 4.0.3, Responsive 3.0.6, RowGroup 1.6.0, RowReorder 1.5.0
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
:root {
13
:root {
Lines 71-129 div.dt-scroll-body tfoot tr { Link Here
71
div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,
71
div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,
72
div.dt-scroll-body tfoot tr th,
72
div.dt-scroll-body tfoot tr th,
73
div.dt-scroll-body tfoot tr td {
73
div.dt-scroll-body tfoot tr td {
74
  height: 0;
74
  height: 0 !important;
75
  padding-top: 0px;
75
  padding-top: 0px !important;
76
  padding-bottom: 0px;
76
  padding-bottom: 0px !important;
77
  border-top-width: 0px;
77
  border-top-width: 0px !important;
78
  border-bottom-width: 0px;
78
  border-bottom-width: 0px !important;
79
}
79
}
80
div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,
80
div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,
81
div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,
81
div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,
82
div.dt-scroll-body tfoot tr td div.dt-scroll-sizing {
82
div.dt-scroll-body tfoot tr td div.dt-scroll-sizing {
83
  height: 0;
83
  height: 0 !important;
84
  overflow: hidden;
84
  overflow: hidden !important;
85
}
85
}
86
86
87
table.dataTable thead > tr > th:active,
87
table.dataTable thead > tr > th:active,
88
table.dataTable thead > tr > td:active {
88
table.dataTable thead > tr > td:active {
89
  outline: none;
89
  outline: none;
90
}
90
}
91
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before,
91
table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before,
92
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
92
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:before,
93
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before {
93
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before {
94
  position: absolute;
94
  position: absolute;
95
  display: block;
95
  display: block;
96
  bottom: 50%;
96
  bottom: 50%;
97
  content: "\25B2";
97
  content: "\25B2";
98
  content: "\25B2"/"";
98
  content: "\25B2"/"";
99
}
99
}
100
table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
100
table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
101
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
101
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:after,
102
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
102
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
103
  position: absolute;
103
  position: absolute;
104
  display: block;
104
  display: block;
105
  top: 50%;
105
  top: 50%;
106
  content: "\25BC";
106
  content: "\25BC";
107
  content: "\25BC"/"";
107
  content: "\25BC"/"";
108
}
108
}
109
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
109
table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order,
110
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
110
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order,
111
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
111
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order,
112
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
112
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order,
113
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
113
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order {
114
  position: relative;
114
  position: relative;
115
  width: 12px;
115
  width: 12px;
116
  height: 20px;
116
  height: 20px;
117
}
117
}
118
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
118
table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
119
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
119
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:before,
120
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after,
120
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:after,
121
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before,
121
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:before,
122
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
122
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:after,
123
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
123
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before,
124
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after,
124
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:after,
125
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before,
125
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:before,
126
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
126
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
127
  left: 0;
127
  left: 0;
128
  opacity: 0.125;
128
  opacity: 0.125;
129
  line-height: 9px;
129
  line-height: 9px;
Lines 140-154 table.dataTable thead > tr > td.dt-orderable-desc:hover { Link Here
140
  outline: 2px solid rgba(0, 0, 0, 0.05);
140
  outline: 2px solid rgba(0, 0, 0, 0.05);
141
  outline-offset: -2px;
141
  outline-offset: -2px;
142
}
142
}
143
table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
143
table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
144
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
144
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before,
145
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
145
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
146
  opacity: 0.6;
146
  opacity: 0.6;
147
}
147
}
148
table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
148
table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) .dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled .dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled .dt-column-order:before,
149
table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty,
149
table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) .dt-column-order:empty,
150
table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
150
table.dataTable thead > tr > td.sorting_desc_disabled .dt-column-order:after,
151
table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
151
table.dataTable thead > tr > td.sorting_asc_disabled .dt-column-order:before {
152
  display: none;
152
  display: none;
153
}
153
}
154
table.dataTable thead > tr > th:active,
154
table.dataTable thead > tr > th:active,
Lines 169-192 table.dataTable tfoot > tr > td div.dt-column-footer { Link Here
169
  align-items: var(--dt-header-align-items);
169
  align-items: var(--dt-header-align-items);
170
  gap: 4px;
170
  gap: 4px;
171
}
171
}
172
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title,
172
table.dataTable thead > tr > th div.dt-column-header .dt-column-title,
173
table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title,
173
table.dataTable thead > tr > th div.dt-column-footer .dt-column-title,
174
table.dataTable thead > tr > td div.dt-column-header span.dt-column-title,
174
table.dataTable thead > tr > td div.dt-column-header .dt-column-title,
175
table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title,
175
table.dataTable thead > tr > td div.dt-column-footer .dt-column-title,
176
table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title,
176
table.dataTable tfoot > tr > th div.dt-column-header .dt-column-title,
177
table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title,
177
table.dataTable tfoot > tr > th div.dt-column-footer .dt-column-title,
178
table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title,
178
table.dataTable tfoot > tr > td div.dt-column-header .dt-column-title,
179
table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title {
179
table.dataTable tfoot > tr > td div.dt-column-footer .dt-column-title {
180
  flex-grow: 1;
180
  flex-grow: 1;
181
}
181
}
182
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title:empty,
182
table.dataTable thead > tr > th div.dt-column-header .dt-column-title:empty,
183
table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title:empty,
183
table.dataTable thead > tr > th div.dt-column-footer .dt-column-title:empty,
184
table.dataTable thead > tr > td div.dt-column-header span.dt-column-title:empty,
184
table.dataTable thead > tr > td div.dt-column-header .dt-column-title:empty,
185
table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title:empty,
185
table.dataTable thead > tr > td div.dt-column-footer .dt-column-title:empty,
186
table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title:empty,
186
table.dataTable tfoot > tr > th div.dt-column-header .dt-column-title:empty,
187
table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title:empty,
187
table.dataTable tfoot > tr > th div.dt-column-footer .dt-column-title:empty,
188
table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title:empty,
188
table.dataTable tfoot > tr > td div.dt-column-header .dt-column-title:empty,
189
table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title:empty {
189
table.dataTable tfoot > tr > td div.dt-column-footer .dt-column-title:empty {
190
  display: none;
190
  display: none;
191
}
191
}
192
192
Lines 443-451 table.dataTable { Link Here
443
  /*
443
  /*
444
   * Header and footer styles
444
   * Header and footer styles
445
   */
445
   */
446
  /*
447
   * Body styles
448
   */
449
}
446
}
450
table.dataTable thead th,
447
table.dataTable thead th,
451
table.dataTable tfoot th {
448
table.dataTable tfoot th {
Lines 465-470 table.dataTable > tfoot > tr > td { Link Here
465
  border-top: 1px solid rgba(0, 0, 0, 0.3);
462
  border-top: 1px solid rgba(0, 0, 0, 0.3);
466
  padding: 10px 10px 6px 10px;
463
  padding: 10px 10px 6px 10px;
467
}
464
}
465
table.dataTable {
466
  /*
467
   * Body styles
468
   */
469
}
468
table.dataTable > tbody > tr {
470
table.dataTable > tbody > tr {
469
  background-color: transparent;
471
  background-color: transparent;
470
}
472
}
Lines 521-528 table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > Link Here
521
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha));
523
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha));
522
}
524
}
523
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
525
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
524
  box-shadow: inset 0 0 0 9999px #0d6efd;
526
  box-shadow: inset 0 0 0 9999px #0d6efd !important;
525
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1);
527
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important;
526
}
528
}
527
table.dataTable.order-column > tbody tr > .sorting_1,
529
table.dataTable.order-column > tbody tr > .sorting_1,
528
table.dataTable.order-column > tbody tr > .sorting_2,
530
table.dataTable.order-column > tbody tr > .sorting_2,
Lines 653-659 div.dt-container div.dt-layout-full > *:only-child { Link Here
653
  margin-right: auto;
655
  margin-right: auto;
654
}
656
}
655
div.dt-container div.dt-layout-table > div {
657
div.dt-container div.dt-layout-table > div {
656
  display: block;
658
  display: block !important;
657
}
659
}
658
660
659
@media screen and (max-width: 767px) {
661
@media screen and (max-width: 767px) {
Lines 696-746 div.dt-container .dt-paging .dt-paging-button { Link Here
696
  padding: 0.5em 1em;
698
  padding: 0.5em 1em;
697
  margin-left: 2px;
699
  margin-left: 2px;
698
  text-align: center;
700
  text-align: center;
699
  text-decoration: none;
701
  text-decoration: none !important;
700
  cursor: pointer;
702
  cursor: pointer;
701
  color: inherit;
703
  color: inherit !important;
702
  border: 1px solid transparent;
704
  border: 1px solid transparent;
703
  border-radius: 2px;
705
  border-radius: 2px;
704
  background: transparent;
706
  background: transparent;
705
}
707
}
706
div.dt-container .dt-paging .dt-paging-button.current, div.dt-container .dt-paging .dt-paging-button.current:hover {
708
div.dt-container .dt-paging .dt-paging-button.current, div.dt-container .dt-paging .dt-paging-button.current:hover {
707
  color: inherit;
709
  color: inherit !important;
708
  border: 1px solid rgba(0, 0, 0, 0.3);
710
  border: 1px solid rgba(0, 0, 0, 0.3);
709
  background-color: rgba(0, 0, 0, 0.05);
711
  background-color: rgba(0, 0, 0, 0.05);
710
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05))); /* Chrome,Safari4+ */
712
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(229.5, 229.5, 229.5, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05))); /* Chrome,Safari4+ */
711
  background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Chrome10+,Safari5.1+ */
713
  background: -webkit-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Chrome10+,Safari5.1+ */
712
  background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* FF3.6+ */
714
  background: -moz-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* FF3.6+ */
713
  background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* IE10+ */
715
  background: -ms-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* IE10+ */
714
  background: -o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Opera 11.10+ */
716
  background: -o-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Opera 11.10+ */
715
  background: linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* W3C */
717
  background: linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* W3C */
716
}
718
}
717
div.dt-container .dt-paging .dt-paging-button.disabled, div.dt-container .dt-paging .dt-paging-button.disabled:hover, div.dt-container .dt-paging .dt-paging-button.disabled:active {
719
div.dt-container .dt-paging .dt-paging-button.disabled, div.dt-container .dt-paging .dt-paging-button.disabled:hover, div.dt-container .dt-paging .dt-paging-button.disabled:active {
718
  cursor: default;
720
  cursor: default;
719
  color: rgba(0, 0, 0, 0.5);
721
  color: rgba(0, 0, 0, 0.5) !important;
720
  border: 1px solid transparent;
722
  border: 1px solid transparent;
721
  background: transparent;
723
  background: transparent;
722
  box-shadow: none;
724
  box-shadow: none;
723
}
725
}
724
div.dt-container .dt-paging .dt-paging-button:hover {
726
div.dt-container .dt-paging .dt-paging-button:hover {
725
  color: white;
727
  color: white !important;
726
  border: 1px solid #111;
728
  border: 1px solid #111;
727
  background-color: #111;
729
  background-color: #111;
728
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */
730
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(88.4, 88.4, 88.4)), color-stop(100%, #111)); /* Chrome,Safari4+ */
729
  background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */
731
  background: -webkit-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* Chrome10+,Safari5.1+ */
730
  background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */
732
  background: -moz-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* FF3.6+ */
731
  background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */
733
  background: -ms-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* IE10+ */
732
  background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */
734
  background: -o-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* Opera 11.10+ */
733
  background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */
735
  background: linear-gradient(to bottom, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* W3C */
734
}
736
}
735
div.dt-container .dt-paging .dt-paging-button:active {
737
div.dt-container .dt-paging .dt-paging-button:active {
736
  outline: none;
738
  outline: none;
737
  background-color: #0c0c0c;
739
  background-color: rgb(11.9, 11.9, 11.9);
738
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */
740
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(42.5, 42.5, 42.5)), color-stop(100%, rgb(11.9, 11.9, 11.9))); /* Chrome,Safari4+ */
739
  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */
741
  background: -webkit-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* Chrome10+,Safari5.1+ */
740
  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */
742
  background: -moz-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* FF3.6+ */
741
  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */
743
  background: -ms-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* IE10+ */
742
  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */
744
  background: -o-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* Opera 11.10+ */
743
  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */
745
  background: linear-gradient(to bottom, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* W3C */
744
  box-shadow: inset 0 0 3px #111;
746
  box-shadow: inset 0 0 3px #111;
745
}
747
}
746
div.dt-container .dt-paging .ellipsis {
748
div.dt-container .dt-paging .ellipsis {
Lines 767-774 div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > td Link Here
767
div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td > div.dataTables_sizing {
769
div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td > div.dataTables_sizing {
768
  height: 0;
770
  height: 0;
769
  overflow: hidden;
771
  overflow: hidden;
770
  margin: 0;
772
  margin: 0 !important;
771
  padding: 0;
773
  padding: 0 !important;
772
}
774
}
773
div.dt-container.dt-empty-footer tbody > tr:last-child > * {
775
div.dt-container.dt-empty-footer tbody > tr:last-child > * {
774
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
776
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
Lines 829-842 html.dark .dt-container .dt-paging .dt-paging-button.current, html.dark .dt-cont Link Here
829
  background: rgba(255, 255, 255, 0.15);
831
  background: rgba(255, 255, 255, 0.15);
830
}
832
}
831
html.dark .dt-container .dt-paging .dt-paging-button.disabled, html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover, html.dark .dt-container .dt-paging .dt-paging-button.disabled:active {
833
html.dark .dt-container .dt-paging .dt-paging-button.disabled, html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover, html.dark .dt-container .dt-paging .dt-paging-button.disabled:active {
832
  color: #666;
834
  color: #666 !important;
833
}
835
}
834
html.dark .dt-container .dt-paging .dt-paging-button:hover {
836
html.dark .dt-container .dt-paging .dt-paging-button:hover {
835
  border: 1px solid rgb(53, 53, 53);
837
  border: 1px solid rgb(53, 53, 53);
836
  background: rgb(53, 53, 53);
838
  background: rgb(53, 53, 53);
837
}
839
}
838
html.dark .dt-container .dt-paging .dt-paging-button:active {
840
html.dark .dt-container .dt-paging .dt-paging-button:active {
839
  background: #3a3a3a;
841
  background: rgb(58.1, 58.1, 58.1);
840
}
842
}
841
843
842
/*
844
/*
Lines 942-948 div.dtb-popover-close { Link Here
942
}
944
}
943
945
944
button.dtb-hide-drop {
946
button.dtb-hide-drop {
945
  display: none;
947
  display: none !important;
946
}
948
}
947
949
948
div.dt-button-collection-title {
950
div.dt-button-collection-title {
Lines 1034-1040 div.dt-button-collection span.dt-button-spacer.bar { Link Here
1034
1036
1035
@media print {
1037
@media print {
1036
  table.dataTable tr > * {
1038
  table.dataTable tr > * {
1037
    box-shadow: none;
1039
    box-shadow: none !important;
1038
  }
1040
  }
1039
}
1041
}
1040
div.dt-buttons > .dt-button,
1042
div.dt-buttons > .dt-button,
Lines 1055-1062 div.dt-buttons > div.dt-button-split .dt-button { Link Here
1055
  white-space: nowrap;
1057
  white-space: nowrap;
1056
  overflow: hidden;
1058
  overflow: hidden;
1057
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1059
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1058
  background: linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1060
  background: linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1059
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1061
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(229.5, 229.5, 229.5, 0.1)', EndColorStr='rgba(0, 0, 0, 0.1)');
1060
  -webkit-user-select: none;
1062
  -webkit-user-select: none;
1061
  -moz-user-select: none;
1063
  -moz-user-select: none;
1062
  -ms-user-select: none;
1064
  -ms-user-select: none;
Lines 1076-1092 div.dt-buttons > div.dt-button-split .dt-button.disabled { Link Here
1076
}
1078
}
1077
div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1079
div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1078
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1080
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1079
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1081
  background-color: hsla(0, 0%, -20%, 0.1); /* Fallback */
1080
  background: linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1082
  background: linear-gradient(to bottom, rgba(178.5, 178.5, 178.5, 0.1) 0%, hsla(0, 0%, -20%, 0.1) 100%);
1081
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1083
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(178.5, 178.5, 178.5, 0.1)', EndColorStr='hsla(0, 0%, -20%, 0.1)');
1082
  box-shadow: inset 1px 1px 3px #999999;
1084
  box-shadow: inset 1px 1px 3px #999999;
1083
}
1085
}
1084
div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1086
div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1085
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1087
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1086
  box-shadow: inset 1px 1px 3px #999999;
1088
  box-shadow: inset 1px 1px 3px #999999;
1087
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1089
  background-color: hsla(0, 0%, -50%, 0.1); /* Fallback */
1088
  background: linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1090
  background: linear-gradient(to bottom, rgba(127.5, 127.5, 127.5, 0.1) 0%, hsla(0, 0%, -50%, 0.1) 100%);
1089
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1091
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(127.5, 127.5, 127.5, 0.1)', EndColorStr='hsla(0, 0%, -50%, 0.1)');
1090
}
1092
}
1091
div.dt-buttons > .dt-button:hover,
1093
div.dt-buttons > .dt-button:hover,
1092
div.dt-buttons > div.dt-button-split .dt-button:hover {
1094
div.dt-buttons > div.dt-button-split .dt-button:hover {
Lines 1095-1103 div.dt-buttons > div.dt-button-split .dt-button:hover { Link Here
1095
div.dt-buttons > .dt-button:hover:not(.disabled),
1097
div.dt-buttons > .dt-button:hover:not(.disabled),
1096
div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1098
div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1097
  border: 1px solid #666;
1099
  border: 1px solid #666;
1098
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1100
  background-color: hsla(0, 0%, -30%, 0.1); /* Fallback */
1099
  background: linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1101
  background: linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, hsla(0, 0%, -30%, 0.1) 100%);
1100
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1102
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(153, 153, 153, 0.1)', EndColorStr='hsla(0, 0%, -30%, 0.1)');
1101
}
1103
}
1102
div.dt-buttons > .dt-button:focus:not(.disabled),
1104
div.dt-buttons > .dt-button:focus:not(.disabled),
1103
div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
1105
div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
Lines 1262-1268 div.dt-button-collection.fixed > :last-child { Link Here
1262
  overflow: auto;
1264
  overflow: auto;
1263
}
1265
}
1264
div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
1266
div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
1265
  display: block;
1267
  display: block !important;
1266
  column-gap: 8px;
1268
  column-gap: 8px;
1267
}
1269
}
1268
div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
1270
div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
Lines 1378-1384 div.dt-button-background { Link Here
1378
1380
1379
@media screen and (max-width: 640px) {
1381
@media screen and (max-width: 640px) {
1380
  div.dt-buttons {
1382
  div.dt-buttons {
1381
    float: none;
1383
    float: none !important;
1382
    text-align: center;
1384
    text-align: center;
1383
  }
1385
  }
1384
}
1386
}
Lines 1389-1405 html.dark div.dt-buttons > div.dt-button-split .dt-button { Link Here
1389
}
1391
}
1390
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1392
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1391
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1393
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1392
  background: rgba(179, 179, 179, 0.15);
1394
  background: rgba(178.5, 178.5, 178.5, 0.15);
1393
  box-shadow: inset 1px 1px 2px black;
1395
  box-shadow: inset 1px 1px 2px black;
1394
}
1396
}
1395
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1397
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1396
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1398
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1397
  background: rgba(128, 128, 128, 0.15);
1399
  background: rgba(127.5, 127.5, 127.5, 0.15);
1398
  box-shadow: inset 1px 1px 3px black;
1400
  box-shadow: inset 1px 1px 3px black;
1399
}
1401
}
1400
html.dark div.dt-buttons > .dt-button:hover:not(.disabled),
1402
html.dark div.dt-buttons > .dt-button:hover:not(.disabled),
1401
html.dark div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1403
html.dark div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1402
  background: rgba(179, 179, 179, 0.15);
1404
  background: rgba(178.5, 178.5, 178.5, 0.15);
1403
}
1405
}
1404
html.dark div.dt-buttons > .dt-button:focus:not(.disabled),
1406
html.dark div.dt-buttons > .dt-button:focus:not(.disabled),
1405
html.dark div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
1407
html.dark div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
Lines 1427-1433 html.dark div.dt-button-info { Link Here
1427
1429
1428
table.fixedHeader-floating,
1430
table.fixedHeader-floating,
1429
table.fixedHeader-locked {
1431
table.fixedHeader-locked {
1430
  position: relative;
1432
  position: relative !important;
1431
  background-color: var(--dt-html-background);
1433
  background-color: var(--dt-html-background);
1432
  background-color: var(--dt-html-background);
1434
  background-color: var(--dt-html-background);
1433
}
1435
}
Lines 1443-1454 table.fixedHeader-locked { Link Here
1443
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
1445
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
1444
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
1446
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
1445
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
1447
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
1446
  cursor: default;
1448
  cursor: default !important;
1447
}
1449
}
1448
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
1450
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
1449
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
1451
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
1450
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
1452
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
1451
  display: none;
1453
  display: none !important;
1452
}
1454
}
1453
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control,
1455
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control,
1454
table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control {
1456
table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control {
Lines 1523-1529 table.dataTable > tbody > tr.child { Link Here
1523
  padding: 0.5em 1em;
1525
  padding: 0.5em 1em;
1524
}
1526
}
1525
table.dataTable > tbody > tr.child:hover {
1527
table.dataTable > tbody > tr.child:hover {
1526
  background: transparent;
1528
  background: transparent !important;
1527
}
1529
}
1528
table.dataTable > tbody > tr.child ul.dtr-details {
1530
table.dataTable > tbody > tr.child ul.dtr-details {
1529
  display: inline-block;
1531
  display: inline-block;
Lines 1611-1629 div.dtr-modal div.dtr-modal-background { Link Here
1611
}
1613
}
1612
html.dark table.dataTable > tbody > tr > td.dtr-control:before,
1614
html.dark table.dataTable > tbody > tr > td.dtr-control:before,
1613
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control:before {
1615
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control:before {
1614
  border-left-color: rgba(255, 255, 255, 0.5);
1616
  border-left-color: rgba(255, 255, 255, 0.5) !important;
1615
}
1617
}
1616
html.dark table.dataTable > tbody > tr > td.dtr-control.arrow-right::before,
1618
html.dark table.dataTable > tbody > tr > td.dtr-control.arrow-right::before,
1617
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control.arrow-right::before {
1619
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control.arrow-right::before {
1618
  border-right-color: rgba(255, 255, 255, 0.5);
1620
  border-right-color: rgba(255, 255, 255, 0.5) !important;
1619
}
1621
}
1620
html.dark table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1622
html.dark table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1621
html.dark table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before,
1623
html.dark table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before,
1622
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1624
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1623
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before {
1625
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before {
1624
  border-top-color: rgba(255, 255, 255, 0.5);
1626
  border-top-color: rgba(255, 255, 255, 0.5) !important;
1625
  border-left-color: transparent;
1627
  border-left-color: transparent !important;
1626
  border-right-color: transparent;
1628
  border-right-color: transparent !important;
1627
}
1629
}
1628
html.dark table.dataTable > tbody > tr.child ul.dtr-details > li,
1630
html.dark table.dataTable > tbody > tr.child ul.dtr-details > li,
1629
html[data-bs-theme=dark] table.dataTable > tbody > tr.child ul.dtr-details > li {
1631
html[data-bs-theme=dark] table.dataTable > tbody > tr.child ul.dtr-details > li {
Lines 1695-1708 div.dt-rowReorder-float-parent { Link Here
1695
  table-layout: fixed;
1697
  table-layout: fixed;
1696
  outline: 2px solid rgb(10, 89, 203);
1698
  outline: 2px solid rgb(10, 89, 203);
1697
  z-index: 2001;
1699
  z-index: 2001;
1698
  position: absolute;
1700
  position: absolute !important;
1699
  overflow: hidden;
1701
  overflow: hidden;
1700
  border-radius: 3px;
1702
  border-radius: 3px;
1701
}
1703
}
1702
div.dt-rowReorder-float-parent table.dt-rowReorder-float {
1704
div.dt-rowReorder-float-parent table.dt-rowReorder-float {
1703
  opacity: 0.9;
1705
  opacity: 0.9;
1704
  background-color: white;
1706
  background-color: white;
1705
  margin: 0;
1707
  margin: 0 !important;
1706
}
1708
}
1707
1709
1708
div.dt-rowReorder-float-parent.drop-not-allowed {
1710
div.dt-rowReorder-float-parent.drop-not-allowed {
(-)a/koha-tmpl/intranet-tmpl/lib/datatables/datatables.js (-114 / +225 lines)
Lines 4-13 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/fh-4.0.3/r-3.0.6/rg-1.6.0/rr-1.5.0
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, FixedHeader 4.0.3, Responsive 3.0.6, RowGroup 1.6.0, RowReorder 1.5.0
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
/*!
13
/*!
Lines 85458-85464 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
85458
  "Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCp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GRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKa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/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/o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A9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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"
85458
  "Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCp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GRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKa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/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/o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A9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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"
85459
};
85459
};
85460
85460
85461
/*! DataTables 2.3.4
85461
/*! DataTables 2.3.7
85462
 * © SpryMedia Ltd - datatables.net/license
85462
 * © SpryMedia Ltd - datatables.net/license
85463
 */
85463
 */
85464
85464
Lines 85634-85640 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
85634
				"sDestroyWidth": $this[0].style.width,
85634
				"sDestroyWidth": $this[0].style.width,
85635
				"sInstance":     sId,
85635
				"sInstance":     sId,
85636
				"sTableId":      sId,
85636
				"sTableId":      sId,
85637
				colgroup: $('<colgroup>').prependTo(this),
85637
				colgroup: $('<colgroup>'),
85638
				fastData: function (row, column, type) {
85638
				fastData: function (row, column, type) {
85639
					return _fnGetCellData(oSettings, row, column, type);
85639
					return _fnGetCellData(oSettings, row, column, type);
85640
				}
85640
				}
Lines 85707-85712 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
85707
				"orderHandler",
85707
				"orderHandler",
85708
				"titleRow",
85708
				"titleRow",
85709
				"typeDetect",
85709
				"typeDetect",
85710
				"columnTitleTag",
85710
				[ "iCookieDuration", "iStateDuration" ], // backwards compat
85711
				[ "iCookieDuration", "iStateDuration" ], // backwards compat
85711
				[ "oSearch", "oPreviousSearch" ],
85712
				[ "oSearch", "oPreviousSearch" ],
85712
				[ "aoSearchCols", "aoPreSearchCols" ],
85713
				[ "aoSearchCols", "aoPreSearchCols" ],
Lines 85871-85877 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
85871
			
85872
			
85872
			if ( oSettings.caption ) {
85873
			if ( oSettings.caption ) {
85873
				if ( caption.length === 0 ) {
85874
				if ( caption.length === 0 ) {
85874
					caption = $('<caption/>').appendTo( $this );
85875
					caption = $('<caption/>').prependTo( $this );
85875
				}
85876
				}
85876
			
85877
			
85877
				caption.html( oSettings.caption );
85878
				caption.html( oSettings.caption );
Lines 85884-85889 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
85884
				oSettings.captionNode = caption[0];
85885
				oSettings.captionNode = caption[0];
85885
			}
85886
			}
85886
			
85887
			
85888
			// Place the colgroup element in the correct location for the HTML structure
85889
			if (caption.length) {
85890
				oSettings.colgroup.insertAfter(caption);
85891
			}
85892
			else {
85893
				oSettings.colgroup.prependTo(oSettings.nTable);
85894
			}
85895
85887
			if ( thead.length === 0 ) {
85896
			if ( thead.length === 0 ) {
85888
				thead = $('<thead/>').appendTo($this);
85897
				thead = $('<thead/>').appendTo($this);
85889
			}
85898
			}
Lines 85964-85970 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
85964
		 *
85973
		 *
85965
		 *  @type string
85974
		 *  @type string
85966
		 */
85975
		 */
85967
		builder: "dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/fh-4.0.3/r-3.0.6/rg-1.6.0/rr-1.5.0",
85976
		builder: "dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1",
85968
85977
85969
		/**
85978
		/**
85970
		 * Buttons. For use with the Buttons extension for DataTables. This is
85979
		 * Buttons. For use with the Buttons extension for DataTables. This is
Lines 86740-86746 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
86740
	};
86749
	};
86741
	
86750
	
86742
	// Replaceable function in api.util
86751
	// Replaceable function in api.util
86743
	var _stripHtml = function (input) {
86752
	var _stripHtml = function (input, replacement) {
86744
		if (! input || typeof input !== 'string') {
86753
		if (! input || typeof input !== 'string') {
86745
			return input;
86754
			return input;
86746
		}
86755
		}
Lines 86752-86758 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
86752
	
86761
	
86753
		var previous;
86762
		var previous;
86754
	
86763
	
86755
		input = input.replace(_re_html, ''); // Complete tags
86764
		input = input.replace(_re_html, replacement || ''); // Complete tags
86756
	
86765
	
86757
		// Safety for incomplete script tag - use do / while to ensure that
86766
		// Safety for incomplete script tag - use do / while to ensure that
86758
		// we get all instances
86767
		// we get all instances
Lines 87217-87223 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
87217
			}
87226
			}
87218
		},
87227
		},
87219
	
87228
	
87220
		stripHtml: function (mixed) {
87229
		stripHtml: function (mixed, replacement) {
87221
			var type = typeof mixed;
87230
			var type = typeof mixed;
87222
	
87231
	
87223
			if (type === 'function') {
87232
			if (type === 'function') {
Lines 87225-87231 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
87225
				return;
87234
				return;
87226
			}
87235
			}
87227
			else if (type === 'string') {
87236
			else if (type === 'string') {
87228
				return _stripHtml(mixed);
87237
				return _stripHtml(mixed, replacement);
87229
			}
87238
			}
87230
			return mixed;
87239
			return mixed;
87231
		},
87240
		},
Lines 88397-88408 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
88397
	
88406
	
88398
			// Max length string. Its a fairly cheep recalculation, so not worth
88407
			// Max length string. Its a fairly cheep recalculation, so not worth
88399
			// something more complicated
88408
			// something more complicated
88400
			cols[ colIdx ].maxLenString = null;
88409
			cols[ colIdx ].wideStrings = null;
88401
		}
88410
		}
88402
		else {
88411
		else {
88403
			for ( i=0, iLen=cols.length ; i<iLen ; i++ ) {
88412
			for ( i=0, iLen=cols.length ; i<iLen ; i++ ) {
88404
				cols[i].sType = null;
88413
				cols[i].sType = null;
88405
				cols[i].maxLenString = null;
88414
				cols[i].wideStrings = null;
88406
			}
88415
			}
88407
	
88416
	
88408
			// Update DataTables special `DT_*` attributes for the row
88417
			// Update DataTables special `DT_*` attributes for the row
Lines 88827-88833 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
88827
						colspan++;
88836
						colspan++;
88828
					}
88837
					}
88829
	
88838
	
88830
					var titleSpan = $('span.dt-column-title', cell);
88839
					var titleSpan = $('.dt-column-title', cell);
88831
	
88840
	
88832
					structure[row][column] = {
88841
					structure[row][column] = {
88833
						cell: cell,
88842
						cell: cell,
Lines 88943-88948 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
88943
			{
88952
			{
88944
				var iDataIndex = aiDisplay[j];
88953
				var iDataIndex = aiDisplay[j];
88945
				var aoData = oSettings.aoData[ iDataIndex ];
88954
				var aoData = oSettings.aoData[ iDataIndex ];
88955
88956
				// Row has been deleted - can't be displayed
88957
				if (aoData === null)
88958
				{
88959
					continue;
88960
				}
88961
88962
				// Row node hasn't been created yet
88946
				if ( aoData.nTr === null )
88963
				if ( aoData.nTr === null )
88947
				{
88964
				{
88948
					_fnCreateTr( oSettings, iDataIndex );
88965
					_fnCreateTr( oSettings, iDataIndex );
Lines 89533-89540 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
89533
						}
89550
						}
89534
	
89551
	
89535
						// Wrap the column title so we can write to it in future
89552
						// Wrap the column title so we can write to it in future
89536
						if ( $('span.dt-column-title', cell).length === 0) {
89553
						if ( $('.dt-column-title', cell).length === 0) {
89537
							$('<span>')
89554
							$(document.createElement(settings.columnTitleTag))
89538
								.addClass('dt-column-title')
89555
								.addClass('dt-column-title')
89539
								.append(cell.childNodes)
89556
								.append(cell.childNodes)
89540
								.appendTo(cell);
89557
								.appendTo(cell);
Lines 89545-89553 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
89545
							isHeader &&
89562
							isHeader &&
89546
							jqCell.filter(':not([data-dt-order=disable])').length !== 0 &&
89563
							jqCell.filter(':not([data-dt-order=disable])').length !== 0 &&
89547
							jqCell.parent(':not([data-dt-order=disable])').length !== 0 &&
89564
							jqCell.parent(':not([data-dt-order=disable])').length !== 0 &&
89548
							$('span.dt-column-order', cell).length === 0
89565
							$('.dt-column-order', cell).length === 0
89549
						) {
89566
						) {
89550
							$('<span>')
89567
							$(document.createElement(settings.columnTitleTag))
89551
								.addClass('dt-column-order')
89568
								.addClass('dt-column-order')
89552
								.appendTo(cell);
89569
								.appendTo(cell);
89553
						}
89570
						}
Lines 89556-89562 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
89556
						// layout for those elements
89573
						// layout for those elements
89557
						var headerFooter = isHeader ? 'header' : 'footer';
89574
						var headerFooter = isHeader ? 'header' : 'footer';
89558
89575
89559
						if ( $('span.dt-column-' + headerFooter, cell).length === 0) {
89576
						if ( $('div.dt-column-' + headerFooter, cell).length === 0) {
89560
							$('<div>')
89577
							$('<div>')
89561
								.addClass('dt-column-' + headerFooter)
89578
								.addClass('dt-column-' + headerFooter)
89562
								.append(cell.childNodes)
89579
								.append(cell.childNodes)
Lines 89713-89718 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
89713
		// Custom Ajax option to submit the parameters as a JSON string
89730
		// Custom Ajax option to submit the parameters as a JSON string
89714
		if (baseAjax.submitAs === 'json' && typeof data === 'object') {
89731
		if (baseAjax.submitAs === 'json' && typeof data === 'object') {
89715
			baseAjax.data = JSON.stringify(data);
89732
			baseAjax.data = JSON.stringify(data);
89733
89734
			if (!baseAjax.contentType) {
89735
				baseAjax.contentType = 'application/json; charset=utf-8';
89736
			}
89716
		}
89737
		}
89717
89738
89718
		if (typeof ajax === 'function') {
89739
		if (typeof ajax === 'function') {
Lines 90868-90874 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
90868
			visibleColumns = _fnGetColumns( settings, 'bVisible' ),
90889
			visibleColumns = _fnGetColumns( settings, 'bVisible' ),
90869
			tableWidthAttr = table.getAttribute('width'), // from DOM element
90890
			tableWidthAttr = table.getAttribute('width'), // from DOM element
90870
			tableContainer = table.parentNode,
90891
			tableContainer = table.parentNode,
90871
			i, column, columnIdx;
90892
			i, j, column, columnIdx;
90872
			
90893
			
90873
		var styleWidth = table.style.width;
90894
		var styleWidth = table.style.width;
90874
		var containerWidth = _fnWrapperWidth(settings);
90895
		var containerWidth = _fnWrapperWidth(settings);
Lines 90902-90918 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
90902
			false
90923
			false
90903
		);
90924
		);
90904
	
90925
	
90905
		// Construct a single row, worst case, table with the widest
90926
		// Construct a worst case table with the widest, assign any user defined
90906
		// node in the data, assign any user defined widths, then insert it into
90927
		// widths, then insert it into  the DOM and allow the browser to do all
90907
		// the DOM and allow the browser to do all the hard work of calculating
90928
		// the hard work of calculating table widths
90908
		// table widths
90909
		var tmpTable = $(table.cloneNode())
90929
		var tmpTable = $(table.cloneNode())
90910
			.css( 'visibility', 'hidden' )
90930
			.css( 'visibility', 'hidden' )
90931
			.css( 'margin', 0 )
90911
			.removeAttr( 'id' );
90932
			.removeAttr( 'id' );
90912
	
90933
	
90913
		// Clean up the table body
90934
		// Clean up the table body
90914
		tmpTable.append('<tbody/>')
90935
		tmpTable.append('<tbody/>')
90915
		var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
90916
	
90936
	
90917
		// Clone the table header and footer - we can't use the header / footer
90937
		// Clone the table header and footer - we can't use the header / footer
90918
		// from the cloned table, since if scrolling is active, the table's
90938
		// from the cloned table, since if scrolling is active, the table's
Lines 90952-90974 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
90952
			}
90972
			}
90953
		} );
90973
		} );
90954
	
90974
	
90955
		// Find the widest piece of data for each column and put it into the table
90975
		// Get the widest strings for each of the visible columns and add them to
90976
		// our table to create a "worst case"
90977
		var longestData = [];
90978
90956
		for ( i=0 ; i<visibleColumns.length ; i++ ) {
90979
		for ( i=0 ; i<visibleColumns.length ; i++ ) {
90957
			columnIdx = visibleColumns[i];
90980
			longestData.push(_fnGetWideStrings(settings, visibleColumns[i]));
90958
			column = columns[ columnIdx ];
90981
		}
90959
	
90982
90960
			var longest = _fnGetMaxLenString(settings, columnIdx);
90983
		if (longestData.length) {
90961
			var autoClass = _ext.type.className[column.sType];
90984
			for ( i=0 ; i<longestData[0].length ; i++ ) {
90962
			var text = longest + column.sContentPadding;
90985
				var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
90963
			var insert = longest.indexOf('<') === -1
90986
90964
				? document.createTextNode(text)
90987
				for ( j=0 ; j<visibleColumns.length ; j++ ) {
90965
				: text
90988
					columnIdx = visibleColumns[j];
90966
			
90989
					column = columns[ columnIdx ];
90967
			$('<td/>')
90990
90968
				.addClass(autoClass)
90991
					var longest = longestData[j][i] || '';
90969
				.addClass(column.sClass)
90992
					var autoClass = _ext.type.className[column.sType];
90970
				.append(insert)
90993
					var padding = column.sContentPadding || (scrollX ? '-' : '');
90971
				.appendTo(tr);
90994
					var text = longest + padding;
90995
					var insert = longest.indexOf('<') === -1 && longest.indexOf('&') === -1
90996
						? document.createTextNode(text)
90997
						: text
90998
90999
					$('<td/>')
91000
						.addClass(autoClass)
91001
						.addClass(column.sClass)
91002
						.append(insert)
91003
						.appendTo(tr);
91004
				}
91005
			}
90972
		}
91006
		}
90973
	
91007
	
90974
		// Tidy the temporary table - remove name attributes so there aren't
91008
		// Tidy the temporary table - remove name attributes so there aren't
Lines 91107-91125 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
91107
	}
91141
	}
91108
	
91142
	
91109
	/**
91143
	/**
91110
	 * Get the maximum strlen for each data column
91144
	 * Get the widest strings for each column.
91145
	 *
91146
	 * It is very difficult to determine what the widest string actually is due to variable character
91147
	 * width and kerning. Doing an exact calculation with the DOM or even Canvas would kill performance
91148
	 * and this is a critical point, so we use two techniques to determine a collection of the longest
91149
	 * strings from the column, which will likely contain the widest strings:
91150
	 *
91151
	 * 1) Get the top three longest strings from the column
91152
	 * 2) Get the top three widest words (i.e. an unbreakable phrase)
91153
	 *
91111
	 *  @param {object} settings dataTables settings object
91154
	 *  @param {object} settings dataTables settings object
91112
	 *  @param {int} colIdx column of interest
91155
	 *  @param {int} colIdx column of interest
91113
	 *  @returns {string} string of the max length
91156
	 *  @returns {string[]} Array of the longest strings
91114
	 *  @memberof DataTable#oApi
91157
	 *  @memberof DataTable#oApi
91115
	 */
91158
	 */
91116
	function _fnGetMaxLenString( settings, colIdx )
91159
	function _fnGetWideStrings( settings, colIdx )
91117
	{
91160
	{
91118
		var column = settings.aoColumns[colIdx];
91161
		var column = settings.aoColumns[colIdx];
91119
	
91162
	
91120
		if (! column.maxLenString) {
91163
		// Do we need to recalculate (i.e. was invalidated), or just use the cached data?
91121
			var s, max='', maxLen = -1;
91164
		if (! column.wideStrings) {
91122
		
91165
			var allStrings = [];
91166
			var collection = [];
91167
91168
			// Create an array with the string information for the column
91123
			for ( var i=0, iLen=settings.aiDisplayMaster.length ; i<iLen ; i++ ) {
91169
			for ( var i=0, iLen=settings.aiDisplayMaster.length ; i<iLen ; i++ ) {
91124
				var rowIdx = settings.aiDisplayMaster[i];
91170
				var rowIdx = settings.aiDisplayMaster[i];
91125
				var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
91171
				var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
Lines 91134-91154 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
91134
					.replace(/id=".*?"/g, '')
91180
					.replace(/id=".*?"/g, '')
91135
					.replace(/name=".*?"/g, '');
91181
					.replace(/name=".*?"/g, '');
91136
	
91182
	
91137
				s = _stripHtml(cellString)
91183
				// Don't want Javascript at all in these calculation cells.
91184
				cellString = cellString.replace(/<script.*?<\/script>/gi, ' ');
91185
91186
				var noHtml = _stripHtml(cellString, ' ')
91138
					.replace( /&nbsp;/g, ' ' );
91187
					.replace( /&nbsp;/g, ' ' );
91139
		
91188
		
91140
				if ( s.length > maxLen ) {
91189
				// The length is calculated on the text only, but we keep the HTML
91141
					// We want the HTML in the string, but the length that
91190
				// in the string so it can be used in the calculation table
91142
					// is important is the stripped string
91191
				collection.push({
91143
					max = cellString;
91192
					str: cellString,
91144
					maxLen = s.length;
91193
					len: noHtml.length
91145
				}
91194
				});
91195
91196
				allStrings.push(noHtml);
91197
			}
91198
91199
			// Order and then cut down to the size we need
91200
			collection
91201
				.sort(function (a, b) {
91202
					return b.len - a.len;
91203
				})
91204
				.splice(3);
91205
91206
			column.wideStrings = collection.map(function (item) {
91207
				return item.str;
91208
			});
91209
91210
			// Longest unbroken string
91211
			let parts = allStrings.join(' ').split(' ');
91212
91213
			parts.sort(function (a, b) {
91214
				return b.length - a.length;
91215
			});
91216
91217
			if (parts.length) {
91218
				column.wideStrings.push(parts[0]);
91219
			}
91220
91221
			if (parts.length > 1) {
91222
				column.wideStrings.push(parts[1]);
91146
			}
91223
			}
91147
	
91224
	
91148
			column.maxLenString = max;
91225
			if (parts.length > 2) {
91226
				column.wideStrings.push(parts[3]);
91227
			}
91149
		}
91228
		}
91150
	
91229
	
91151
		return column.maxLenString;
91230
		return column.wideStrings;
91152
	}
91231
	}
91153
	
91232
	
91154
	
91233
	
Lines 94169-94175 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
94169
			// Automatic - find the _last_ unique cell from the top that is not empty (last for
94248
			// Automatic - find the _last_ unique cell from the top that is not empty (last for
94170
			// backwards compatibility)
94249
			// backwards compatibility)
94171
			for (var i=0 ; i<header.length ; i++) {
94250
			for (var i=0 ; i<header.length ; i++) {
94172
				if (header[i][column].unique && $('span.dt-column-title', header[i][column].cell).text()) {
94251
				if (header[i][column].unique && $('.dt-column-title', header[i][column].cell).text()) {
94173
					target = i;
94252
					target = i;
94174
				}
94253
				}
94175
			}
94254
			}
Lines 94265-94270 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
94265
								return null;
94344
								return null;
94266
							}
94345
							}
94267
	
94346
	
94347
							if (col.responsiveVisible === false) {
94348
								return null;
94349
							}
94350
94268
							// Selector
94351
							// Selector
94269
							if (match[1]) {
94352
							if (match[1]) {
94270
								return $(nodes[idx]).filter(match[1]).length > 0 ? idx : null;
94353
								return $(nodes[idx]).filter(match[1]).length > 0 ? idx : null;
Lines 94476-94482 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
94476
				title = undefined;
94559
				title = undefined;
94477
			}
94560
			}
94478
	
94561
	
94479
			var span = $('span.dt-column-title', this.column(column).header(row));
94562
			var span = $('.dt-column-title', this.column(column).header(row));
94480
	
94563
	
94481
			if (title !== undefined) {
94564
			if (title !== undefined) {
94482
				span.html(title);
94565
				span.html(title);
Lines 94489-94501 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
94489
	
94572
	
94490
	_api_registerPlural( 'columns().types()', 'column().type()', function () {
94573
	_api_registerPlural( 'columns().types()', 'column().type()', function () {
94491
		return this.iterator( 'column', function ( settings, column ) {
94574
		return this.iterator( 'column', function ( settings, column ) {
94492
			var type = settings.aoColumns[column].sType;
94575
			var colObj = settings.aoColumns[column]
94576
			var type = colObj.sType;
94493
	
94577
	
94494
			// If the type was invalidated, then resolve it. This actually does
94578
			// If the type was invalidated, then resolve it. This actually does
94495
			// all columns at the moment. Would only happen once if getting all
94579
			// all columns at the moment. Would only happen once if getting all
94496
			// column's data types.
94580
			// column's data types.
94497
			if (! type) {
94581
			if (! type) {
94498
				_fnColumnTypes(settings);
94582
				_fnColumnTypes(settings);
94583
94584
				type = colObj.sType;
94499
			}
94585
			}
94500
	
94586
	
94501
			return type;
94587
			return type;
Lines 95647-95654 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
95647
	
95733
	
95648
	// Needed for header and footer, so pulled into its own function
95734
	// Needed for header and footer, so pulled into its own function
95649
	function cleanHeader(node, className) {
95735
	function cleanHeader(node, className) {
95650
		$(node).find('span.dt-column-order').remove();
95736
		$(node).find('.dt-column-order').remove();
95651
		$(node).find('span.dt-column-title').each(function () {
95737
		$(node).find('.dt-column-title').each(function () {
95652
			var title = $(this).html();
95738
			var title = $(this).html();
95653
			$(this).parent().parent().append(title);
95739
			$(this).parent().parent().append(title);
95654
			$(this).remove();
95740
			$(this).remove();
Lines 95666-95672 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
95666
	 *  @type string
95752
	 *  @type string
95667
	 *  @default Version number
95753
	 *  @default Version number
95668
	 */
95754
	 */
95669
	DataTable.version = "2.3.4";
95755
	DataTable.version = "2.3.7";
95670
	
95756
	
95671
	/**
95757
	/**
95672
	 * Private data store, containing all of the settings objects that are
95758
	 * Private data store, containing all of the settings objects that are
Lines 95968-95975 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
95968
		 */
96054
		 */
95969
		"sWidthOrig": null,
96055
		"sWidthOrig": null,
95970
	
96056
	
95971
		/** Cached string which is the longest in the column */
96057
		/** Cached longest strings from a column */
95972
		maxLenString: null,
96058
		wideStrings: null,
95973
	
96059
	
95974
		/**
96060
		/**
95975
		 * Store for named searches
96061
		 * Store for named searches
Lines 96834-96840 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
96834
		iDeferLoading: null,
96920
		iDeferLoading: null,
96835
96921
96836
		/** Event listeners */
96922
		/** Event listeners */
96837
		on: null
96923
		on: null,
96924
96925
		/** Title wrapper element type */
96926
		columnTitleTag: 'span'
96838
	};
96927
	};
96839
	
96928
	
96840
	_fnHungarianMap( DataTable.defaults );
96929
	_fnHungarianMap( DataTable.defaults );
Lines 97798-97804 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
97798
		orderHandler: true,
97887
		orderHandler: true,
97799
97888
97800
		/** Title row indicator */
97889
		/** Title row indicator */
97801
		titleRow: null
97890
		titleRow: null,
97891
97892
		/** Title wrapper element type */
97893
		columnTitleTag: 'span'
97802
	};
97894
	};
97803
	
97895
	
97804
	/**
97896
	/**
Lines 99580-99586 return DataTable; Link Here
99580
}));
99672
}));
99581
99673
99582
99674
99583
/*! Buttons for DataTables 3.2.5
99675
/*! Buttons for DataTables 3.2.6
99584
 * © SpryMedia Ltd - datatables.net/license
99676
 * © SpryMedia Ltd - datatables.net/license
99585
 */
99677
 */
99586
99678
Lines 101019-101025 $.extend(Buttons.prototype, { Link Here
101019
			$(window).off('resize.resize.dtb-collection');
101111
			$(window).off('resize.resize.dtb-collection');
101020
			$('body').off('.dtb-collection');
101112
			$('body').off('.dtb-collection');
101021
			dt.off('buttons-action.b-internal');
101113
			dt.off('buttons-action.b-internal');
101022
			dt.off('destroy');
101114
			dt.off('destroy.dtb-popover');
101023
101115
101024
			$('body').trigger('buttons-popover-hide.dt');
101116
			$('body').trigger('buttons-popover-hide.dt');
101025
		};
101117
		};
Lines 101285-101291 $.extend(Buttons.prototype, { Link Here
101285
101377
101286
		$(display).trigger('buttons-popover.dt');
101378
		$(display).trigger('buttons-popover.dt');
101287
101379
101288
		dt.on('destroy', close);
101380
		dt.on('destroy.dtb-popover', close);
101289
101381
101290
		setTimeout(function () {
101382
		setTimeout(function () {
101291
			closed = false;
101383
			closed = false;
Lines 101753-101759 Buttons.defaults = { Link Here
101753
 * @type {string}
101845
 * @type {string}
101754
 * @static
101846
 * @static
101755
 */
101847
 */
101756
Buttons.version = '3.2.5';
101848
Buttons.version = '3.2.6';
101757
101849
101758
$.extend(_dtButtons, {
101850
$.extend(_dtButtons, {
101759
	collection: {
101851
	collection: {
Lines 104852-104858 return DataTable; Link Here
104852
}));
104944
}));
104853
104945
104854
104946
104855
/*! FixedHeader 4.0.3
104947
/*! FixedHeader 4.0.6
104856
 * © SpryMedia Ltd - datatables.net/license
104948
 * © SpryMedia Ltd - datatables.net/license
104857
 */
104949
 */
104858
104950
Lines 104907-104913 var DataTable = $.fn.dataTable; Link Here
104907
 * @summary     FixedHeader
104999
 * @summary     FixedHeader
104908
 * @description Fix a table's header or footer, so it is always visible while
105000
 * @description Fix a table's header or footer, so it is always visible while
104909
 *              scrolling
105001
 *              scrolling
104910
 * @version     4.0.3
105002
 * @version     4.0.6
104911
 * @author      SpryMedia Ltd
105003
 * @author      SpryMedia Ltd
104912
 * @contact     datatables.net
105004
 * @contact     datatables.net
104913
 *
105005
 *
Lines 105040-105045 $.extend(FixedHeader.prototype, { Link Here
105040
		var dom = this.dom;
105132
		var dom = this.dom;
105041
105133
105042
		this.s.dt.off('.dtfc');
105134
		this.s.dt.off('.dtfc');
105135
		$('body').off('.dtfc');
105043
		$(window).off(this.s.namespace);
105136
		$(window).off(this.s.namespace);
105044
105137
105045
		// Remove clones of FC blockers
105138
		// Remove clones of FC blockers
Lines 105189-105195 $.extend(FixedHeader.prototype, { Link Here
105189
			function (e, ctx) {
105282
			function (e, ctx) {
105190
				that.update();
105283
				that.update();
105191
			}
105284
			}
105192
		).on('draw.dt.dtfc', function (e, ctx) {
105285
		);
105286
105287
		$('body').on('draw.dt.dtfc', function (e, ctx) {
105193
			// For updates from our own table, don't reclone, but for all others, do
105288
			// For updates from our own table, don't reclone, but for all others, do
105194
			that.update(ctx === dt.settings()[0] ? false : true);
105289
			that.update(ctx === dt.settings()[0] ? false : true);
105195
		});
105290
		});
Lines 105237-105246 $.extend(FixedHeader.prototype, { Link Here
105237
		else {
105332
		else {
105238
			if (itemDom.floating) {
105333
			if (itemDom.floating) {
105239
				if (itemDom.placeholder !== null) {
105334
				if (itemDom.placeholder !== null) {
105240
					itemDom.placeholder.remove();
105335
					itemDom.placeholder.detach();
105241
				}
105336
				}
105242
105337
105243
				itemDom.floating.remove();
105338
				itemDom.floating.detach();
105244
			}
105339
			}
105245
105340
105246
			var tableNode = $(dt.table().node());
105341
			var tableNode = $(dt.table().node());
Lines 105334-105345 $.extend(FixedHeader.prototype, { Link Here
105334
			itemDom.placeholder = itemElement.clone(false);
105429
			itemDom.placeholder = itemElement.clone(false);
105335
			itemDom.placeholder.find('*[id]').removeAttr('id');
105430
			itemDom.placeholder.find('*[id]').removeAttr('id');
105336
105431
105337
			// Move the thead / tfoot elements around - original into the floating
105432
			// Move the thead / tfoot elements around - original into the
105338
			// element and clone into the original table
105433
			// floating element and clone into the original table. Note that the
105339
			itemDom.host.prepend(itemDom.placeholder);
105434
			// order is important in Chrome. It must be colgroup, thead, tbody,
105435
			// tfoot. Otherwise a "jitter" when scrolling will occur.
105436
			$(itemDom.placeholder).insertAfter(
105437
				item === 'header'
105438
					? $('colgroup', itemDom.host)
105439
					: $('tbody', itemDom.host)
105440
			);
105441
105442
			// itemDom.host.prepend(itemDom.placeholder);
105340
			itemDom.floating.append(itemElement);
105443
			itemDom.floating.append(itemElement);
105341
105444
105342
			this._widths(itemDom);
105445
			this._widths(itemDom);
105446
105447
			return scrollLeftUpdate;
105343
		}
105448
		}
105344
	},
105449
	},
105345
105450
Lines 105457-105463 $.extend(FixedHeader.prototype, { Link Here
105457
105562
105458
			if (!$.contains(itemDom.host[0], tablePart[0])) {
105563
			if (!$.contains(itemDom.host[0], tablePart[0])) {
105459
				if (item === 'header') {
105564
				if (item === 'header') {
105460
					itemDom.host.prepend(tablePart);
105565
					tablePart.insertAfter($('colgroup', itemDom.host));
105461
				}
105566
				}
105462
				else {
105567
				else {
105463
					itemDom.host.append(tablePart);
105568
					itemDom.host.append(tablePart);
Lines 105482-105488 $.extend(FixedHeader.prototype, { Link Here
105482
		else if (mode === 'in') {
105587
		else if (mode === 'in') {
105483
			// Remove the header from the real table and insert into a fixed
105588
			// Remove the header from the real table and insert into a fixed
105484
			// positioned floating table clone
105589
			// positioned floating table clone
105485
			this._clone(item, forceChange);
105590
			let scrollLeftUpdate = this._clone(item, forceChange);
105486
105591
105487
			// Get useful position values
105592
			// Get useful position values
105488
			var scrollOffset = scrollBody.offset();
105593
			var scrollOffset = scrollBody.offset();
Lines 105527-105532 $.extend(FixedHeader.prototype, { Link Here
105527
105632
105528
			importantWidth(position.width);
105633
			importantWidth(position.width);
105529
105634
105635
			if (scrollLeftUpdate) {
105636
				scrollLeftUpdate();
105637
			}
105638
105530
			if (item === 'footer') {
105639
			if (item === 'footer') {
105531
				itemDom.floating.css('top', '');
105640
				itemDom.floating.css('top', '');
105532
			}
105641
			}
Lines 105944-105950 $.extend(FixedHeader.prototype, { Link Here
105944
 * @type {String}
106053
 * @type {String}
105945
 * @static
106054
 * @static
105946
 */
106055
 */
105947
FixedHeader.version = '4.0.3';
106056
FixedHeader.version = '4.0.6';
105948
106057
105949
/**
106058
/**
105950
 * Defaults
106059
 * Defaults
Lines 106056-106062 return DataTable; Link Here
106056
}));
106165
}));
106057
106166
106058
106167
106059
/*! Responsive 3.0.6
106168
/*! Responsive 3.0.8
106060
 * © SpryMedia Ltd - datatables.net/license
106169
 * © SpryMedia Ltd - datatables.net/license
106061
 */
106170
 */
106062
106171
Lines 106110-106116 var DataTable = $.fn.dataTable; Link Here
106110
/**
106219
/**
106111
 * @summary     Responsive
106220
 * @summary     Responsive
106112
 * @description Responsive tables plug-in for DataTables
106221
 * @description Responsive tables plug-in for DataTables
106113
 * @version     3.0.6
106222
 * @version     3.0.8
106114
 * @author      SpryMedia Ltd
106223
 * @author      SpryMedia Ltd
106115
 * @copyright   SpryMedia Ltd.
106224
 * @copyright   SpryMedia Ltd.
106116
 *
106225
 *
Lines 106471-106477 $.extend(Responsive.prototype, { Link Here
106471
106580
106472
			for (var j = 0, jen = a.length; j < jen; j++) {
106581
			for (var j = 0, jen = a.length; j < jen; j++) {
106473
				node.appendChild(a[j]);
106582
				node.appendChild(a[j]);
106474
				console.log('restore', name, node, a[j]);
106475
			}
106583
			}
106476
		}
106584
		}
106477
106585
Lines 106885-106891 $.extend(Responsive.prototype, { Link Here
106885
		}
106993
		}
106886
106994
106887
		$(dt.table().body()).on('keyup.dtr', 'td, th', function (e) {
106995
		$(dt.table().body()).on('keyup.dtr', 'td, th', function (e) {
106888
			if (e.keyCode === 13 && $(this).data('dtr-keyboard')) {
106996
			let activeNodeName = document.activeElement.nodeName.toLowerCase();
106997
106998
			if (
106999
				e.keyCode === 13 &&
107000
				$(this).data('dtr-keyboard') &&
107001
				(activeNodeName === 'td' || activeNodeName === 'th')
107002
			) {
106889
				$(this).click();
107003
				$(this).click();
106890
			}
107004
			}
106891
		});
107005
		});
Lines 107342-107347 $.extend(Responsive.prototype, { Link Here
107342
			.css('display', display)
107456
			.css('display', display)
107343
			.toggleClass('dtr-hidden', !showHide);
107457
			.toggleClass('dtr-hidden', !showHide);
107344
107458
107459
		// We need to set a variable that DT can use when selecting visible
107460
		// columns without needing to query the DOM
107461
		dt.settings()[0].aoColumns[col].responsiveVisible = showHide;
107462
107345
		// If the are child nodes stored, we might need to reinsert them
107463
		// If the are child nodes stored, we might need to reinsert them
107346
		if (!$.isEmptyObject(this.s.childNodeStore)) {
107464
		if (!$.isEmptyObject(this.s.childNodeStore)) {
107347
			dt.cells(null, col)
107465
			dt.cells(null, col)
Lines 107902-107908 Api.registerPlural( Link Here
107902
 * @name Responsive.version
108020
 * @name Responsive.version
107903
 * @static
108021
 * @static
107904
 */
108022
 */
107905
Responsive.version = '3.0.6';
108023
Responsive.version = '3.0.8';
107906
108024
107907
$.fn.dataTable.Responsive = Responsive;
108025
$.fn.dataTable.Responsive = Responsive;
107908
$.fn.DataTable.Responsive = Responsive;
108026
$.fn.DataTable.Responsive = Responsive;
Lines 108519-108541 return DataTable; Link Here
108519
}));
108637
}));
108520
108638
108521
108639
108522
/*! RowReorder 1.5.0
108640
/*! RowReorder 1.5.1
108523
 * © SpryMedia Ltd - datatables.net/license
108641
 * © SpryMedia Ltd - datatables.net/license
108524
 */
108642
 */
108525
108643
108526
(function( factory ){
108644
(function( factory ){
108527
	if ( typeof define === 'function' && define.amd ) {
108645
	if ( typeof define === 'function' && define.amd ) {
108528
		// AMD
108646
		// AMD
108529
		define( ['jquery', 'datatables.net'], function ( $ ) {
108647
		define( ['jquery', 'datatables.net'], function () {
108530
			return factory( $, window, document );
108648
			return factory( window, document );
108531
		} );
108649
		} );
108532
	}
108650
	}
108533
	else if ( typeof exports === 'object' ) {
108651
	else if ( typeof exports === 'object' ) {
108534
		// CommonJS
108652
		// CommonJS
108535
		var jq = require('jquery');
108653
		var cjsRequires = function (root) {
108536
		var cjsRequires = function (root, $) {
108654
			if ( ! root.DataTable ) {
108537
			if ( ! $.fn.dataTable ) {
108655
				require('datatables.net')(root);
108538
				require('datatables.net')(root, $);
108539
			}
108656
			}
108540
		};
108657
		};
108541
108658
Lines 108547-108579 return DataTable; Link Here
108547
					root = window;
108664
					root = window;
108548
				}
108665
				}
108549
108666
108550
				if ( ! $ ) {
108667
				cjsRequires( root );
108551
					$ = jq( root );
108668
				return factory( root, root.document );
108552
				}
108553
108554
				cjsRequires( root, $ );
108555
				return factory( $, root, root.document );
108556
			};
108669
			};
108557
		}
108670
		}
108558
		else {
108671
		else {
108559
			cjsRequires( window, jq );
108672
			cjsRequires( window );
108560
			module.exports = factory( jq, window, window.document );
108673
			module.exports = factory( window, window.document );
108561
		}
108674
		}
108562
	}
108675
	}
108563
	else {
108676
	else {
108564
		// Browser
108677
		// Browser
108565
		factory( jQuery, window, document );
108678
		factory( window, document );
108566
	}
108679
	}
108567
}(function( $, window, document ) {
108680
}(function( window, document ) {
108568
'use strict';
108681
'use strict';
108569
var DataTable = $.fn.dataTable;
108682
var DataTable = window.DataTable;
108570
108683
108571
108684
108572
108685
108573
/**
108686
/**
108574
 * @summary     RowReorder
108687
 * @summary     RowReorder
108575
 * @description Row reordering extension for DataTables
108688
 * @description Row reordering extension for DataTables
108576
 * @version     1.5.0
108689
 * @version     1.5.1
108577
 * @author      SpryMedia Ltd
108690
 * @author      SpryMedia Ltd
108578
 * @contact     datatables.net
108691
 * @contact     datatables.net
108579
 *
108692
 *
Lines 108773-108779 $.extend(RowReorder.prototype, { Link Here
108773
		// Need to pass the nodes through jQuery to get them in document order,
108886
		// Need to pass the nodes through jQuery to get them in document order,
108774
		// not what DataTables thinks it is, since we have been altering the
108887
		// not what DataTables thinks it is, since we have been altering the
108775
		// order
108888
		// order
108776
		var nodes = $.unique(dt.rows({ page: 'current' }).nodes().toArray());
108889
		var nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
108777
		var middles = $.map(nodes, function (node, i) {
108890
		var middles = $.map(nodes, function (node, i) {
108778
			var top = $(node).position().top - headerHeight;
108891
			var top = $(node).position().top - headerHeight;
108779
108892
Lines 108928-108934 $.extend(RowReorder.prototype, { Link Here
108928
		start.left = this._eventToPage(e, 'X');
109041
		start.left = this._eventToPage(e, 'X');
108929
		start.offsetTop = offset.top;
109042
		start.offsetTop = offset.top;
108930
		start.offsetLeft = offset.left;
109043
		start.offsetLeft = offset.left;
108931
		start.nodes = $.unique(dt.rows({ page: 'current' }).nodes().toArray());
109044
		start.nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
108932
109045
108933
		this._cachePositions();
109046
		this._cachePositions();
108934
		this._clone(target);
109047
		this._clone(target);
Lines 108989-108999 $.extend(RowReorder.prototype, { Link Here
108989
		if (cancelable) {
109102
		if (cancelable) {
108990
			var bodyArea = this.s.bodyArea;
109103
			var bodyArea = this.s.bodyArea;
108991
			var cloneArea = this._calcCloneParentArea();
109104
			var cloneArea = this._calcCloneParentArea();
108992
			this.s.dropAllowed = this._rectanglesIntersect(bodyArea, cloneArea);
108993
109105
108994
			this.s.dropAllowed
109106
			this.s.dropAllowed = this._rectanglesIntersect(bodyArea, cloneArea);
108995
				? $(this.dom.cloneParent).removeClass('drop-not-allowed')
109107
			$(this.dom.cloneParent).toggleClass('drop-not-allowed', !this.s.dropAllowed);
108996
				: $(this.dom.cloneParent).addClass('drop-not-allowed');
108997
		}
109108
		}
108998
109109
108999
		// Transform the mouse position into a position in the table's body
109110
		// Transform the mouse position into a position in the table's body
Lines 109050-109056 $.extend(RowReorder.prototype, { Link Here
109050
109161
109051
		// Calculate the difference
109162
		// Calculate the difference
109052
		var startNodes = this.s.start.nodes;
109163
		var startNodes = this.s.start.nodes;
109053
		var endNodes = $.unique(dt.rows({ page: 'current' }).nodes().toArray());
109164
		var endNodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
109054
		var idDiff = {};
109165
		var idDiff = {};
109055
		var fullDiff = [];
109166
		var fullDiff = [];
109056
		var diffNodes = [];
109167
		var diffNodes = [];
Lines 109167-109173 $.extend(RowReorder.prototype, { Link Here
109167
109278
109168
		// Perform the DOM shuffle if it has changed from last time
109279
		// Perform the DOM shuffle if it has changed from last time
109169
		if (this.s.lastInsert === null || this.s.lastInsert !== insertPoint) {
109280
		if (this.s.lastInsert === null || this.s.lastInsert !== insertPoint) {
109170
			var nodes = $.unique(dt.rows({ page: 'current' }).nodes().toArray());
109281
			var nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
109171
			var insertPlacement = '';
109282
			var insertPlacement = '';
109172
109283
109173
			if (insertPoint > this.s.lastInsert) {
109284
			if (insertPoint > this.s.lastInsert) {
Lines 109362-109368 $.extend(RowReorder.prototype, { Link Here
109362
		// position
109473
		// position
109363
109474
109364
		var dt = this.s.dt;
109475
		var dt = this.s.dt;
109365
		var nodes = $.unique(dt.rows({ page: 'current' }).nodes().toArray());
109476
		var nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
109366
		var rowIndex = -1;
109477
		var rowIndex = -1;
109367
		var headerHeight = $(dt.table().node()).find('thead').outerHeight();
109478
		var headerHeight = $(dt.table().node()).find('thead').outerHeight();
109368
109479
Lines 109527-109533 Api.register('rowReorder.disable()', function () { Link Here
109527
 * @name RowReorder.version
109638
 * @name RowReorder.version
109528
 * @static
109639
 * @static
109529
 */
109640
 */
109530
RowReorder.version = '1.5.0';
109641
RowReorder.version = '1.5.1';
109531
109642
109532
$.fn.dataTable.RowReorder = RowReorder;
109643
$.fn.dataTable.RowReorder = RowReorder;
109533
$.fn.DataTable.RowReorder = RowReorder;
109644
$.fn.DataTable.RowReorder = RowReorder;
(-)a/koha-tmpl/intranet-tmpl/lib/datatables/datatables.min.css (-7 / +7 lines)
Lines 4-28 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/fh-4.0.3/r-3.0.6/rg-1.6.0/rr-1.5.0
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, FixedHeader 4.0.3, Responsive 3.0.6, RowGroup 1.6.0, RowReorder 1.5.0
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 228, 228, 228;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-header-align-items: center;--dt-header-vertical-align: middle;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable tbody td.dt-control{text-align:center;cursor:pointer}table.dataTable tbody td.dt-control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tbody tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable tfoot:empty{display:none}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before,:root[data-theme=dark] table.dataTable td.dt-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent}div.dt-scroll{width:100%}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0;padding-top:0px;padding-bottom:0px;border-top-width:0px;border-bottom-width:0px}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0;overflow:hidden}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before{position:absolute;display:block;bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{position:absolute;display:block;top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order{position:relative;width:12px;height:20px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0, 0, 0, 0.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) span.dt-column-order:empty,table.dataTable thead>tr>th.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) span.dt-column-order:empty,table.dataTable thead>tr>td.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled span.dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th div.dt-column-header,table.dataTable thead>tr>th div.dt-column-footer,table.dataTable thead>tr>td div.dt-column-header,table.dataTable thead>tr>td div.dt-column-footer,table.dataTable tfoot>tr>th div.dt-column-header,table.dataTable tfoot>tr>th div.dt-column-footer,table.dataTable tfoot>tr>td div.dt-column-header,table.dataTable tfoot>tr>td div.dt-column-footer{display:flex;justify-content:space-between;align-items:var(--dt-header-align-items);gap:4px}table.dataTable thead>tr>th div.dt-column-header span.dt-column-title,table.dataTable thead>tr>th div.dt-column-footer span.dt-column-title,table.dataTable thead>tr>td div.dt-column-header span.dt-column-title,table.dataTable thead>tr>td div.dt-column-footer span.dt-column-title,table.dataTable tfoot>tr>th div.dt-column-header span.dt-column-title,table.dataTable tfoot>tr>th div.dt-column-footer span.dt-column-title,table.dataTable tfoot>tr>td div.dt-column-header span.dt-column-title,table.dataTable tfoot>tr>td div.dt-column-footer span.dt-column-title{flex-grow:1}table.dataTable thead>tr>th div.dt-column-header span.dt-column-title:empty,table.dataTable thead>tr>th div.dt-column-footer span.dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-header span.dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-footer span.dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-header span.dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-footer span.dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-header span.dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-footer span.dt-column-title:empty{display:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255, 255, 255, 0.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable th.dt-type-numeric div.dt-column-header,table.dataTable th.dt-type-numeric div.dt-column-footer,table.dataTable th.dt-type-date div.dt-column-header,table.dataTable th.dt-type-date div.dt-column-footer,table.dataTable td.dt-type-numeric div.dt-column-header,table.dataTable td.dt-type-numeric div.dt-column-footer,table.dataTable td.dt-type-date div.dt-column-header,table.dataTable td.dt-type-date div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-left div.dt-column-header,table.dataTable th.dt-left div.dt-column-footer,table.dataTable td.dt-left div.dt-column-header,table.dataTable td.dt-left div.dt-column-footer{flex-direction:row}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-right div.dt-column-header,table.dataTable th.dt-right div.dt-column-footer,table.dataTable td.dt-right div.dt-column-header,table.dataTable td.dt-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-justify div.dt-column-header,table.dataTable th.dt-justify div.dt-column-footer,table.dataTable td.dt-justify div.dt-column-header,table.dataTable td.dt-justify div.dt-column-footer{flex-direction:row}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left;vertical-align:var(--dt-header-vertical-align)}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-left div.dt-column-header,table.dataTable thead th.dt-head-left div.dt-column-footer,table.dataTable thead td.dt-head-left div.dt-column-header,table.dataTable thead td.dt-head-left div.dt-column-footer,table.dataTable tfoot th.dt-head-left div.dt-column-header,table.dataTable tfoot th.dt-head-left div.dt-column-footer,table.dataTable tfoot td.dt-head-left div.dt-column-header,table.dataTable tfoot td.dt-head-left div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-right div.dt-column-header,table.dataTable thead th.dt-head-right div.dt-column-footer,table.dataTable thead td.dt-head-right div.dt-column-header,table.dataTable thead td.dt-head-right div.dt-column-footer,table.dataTable tfoot th.dt-head-right div.dt-column-header,table.dataTable tfoot th.dt-head-right div.dt-column-footer,table.dataTable tfoot td.dt-head-right div.dt-column-header,table.dataTable tfoot td.dt-head-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-justify div.dt-column-header,table.dataTable thead th.dt-head-justify div.dt-column-footer,table.dataTable thead td.dt-head-justify div.dt-column-header,table.dataTable thead td.dt-head-justify div.dt-column-footer,table.dataTable tfoot th.dt-head-justify div.dt-column-header,table.dataTable tfoot th.dt-head-justify div.dt-column-footer,table.dataTable tfoot td.dt-head-justify div.dt-column-header,table.dataTable tfoot td.dt-head-justify div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}:root{--dt-row-hover-alpha: 0.035;--dt-row-stripe-alpha: 0.023;--dt-column-ordering-alpha: 0.019;--dt-row-selected-stripe-alpha: 0.923;--dt-row-selected-column-ordering-alpha: 0.919}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0, 0, 0, 0.3);padding:10px 10px 6px 10px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(228, 228, 228);color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha))}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha))}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha))}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1)}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha))}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)))}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container div.dt-layout-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin:.75em 0}div.dt-container div.dt-layout-row div.dt-layout-cell{display:flex;justify-content:space-between;align-items:center}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start{justify-content:flex-start;margin-right:auto}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end{justify-content:flex-end;margin-left:auto}div.dt-container div.dt-layout-row div.dt-layout-cell:empty{display:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row:not(.dt-layout-table){display:block}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell{display:block;text-align:center}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell>*{margin:.5em 0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start{margin-right:0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end{margin-left:0}}div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:1em}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:1em}div.dt-container div.dt-layout-full{width:100%}div.dt-container div.dt-layout-full>*:only-child{margin-left:auto;margin-right:auto}div.dt-container div.dt-layout-table>div{display:block}@media screen and (max-width: 767px){div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:0}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:0}}div.dt-container{position:relative;clear:both}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none;cursor:pointer;color:inherit;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:rgba(0, 0, 0, 0.5);border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:white;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:#0c0c0c;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0;padding:0}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89, 91, 94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dt-container .dt-paging .dt-paging-button:active{background:#3a3a3a}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}
13
:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 228, 228, 228;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-header-align-items: center;--dt-header-vertical-align: middle;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable tbody td.dt-control{text-align:center;cursor:pointer}table.dataTable tbody td.dt-control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tbody tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable tfoot:empty{display:none}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before,:root[data-theme=dark] table.dataTable td.dt-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent}div.dt-scroll{width:100%}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0 !important;padding-top:0px !important;padding-bottom:0px !important;border-top-width:0px !important;border-bottom-width:0px !important}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0 !important;overflow:hidden !important}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:before{position:absolute;display:block;bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:after{position:absolute;display:block;top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order{position:relative;width:12px;height:20px}table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0, 0, 0, 0.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) .dt-column-order:empty,table.dataTable thead>tr>th.sorting_desc_disabled .dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) .dt-column-order:empty,table.dataTable thead>tr>td.sorting_desc_disabled .dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled .dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th div.dt-column-header,table.dataTable thead>tr>th div.dt-column-footer,table.dataTable thead>tr>td div.dt-column-header,table.dataTable thead>tr>td div.dt-column-footer,table.dataTable tfoot>tr>th div.dt-column-header,table.dataTable tfoot>tr>th div.dt-column-footer,table.dataTable tfoot>tr>td div.dt-column-header,table.dataTable tfoot>tr>td div.dt-column-footer{display:flex;justify-content:space-between;align-items:var(--dt-header-align-items);gap:4px}table.dataTable thead>tr>th div.dt-column-header .dt-column-title,table.dataTable thead>tr>th div.dt-column-footer .dt-column-title,table.dataTable thead>tr>td div.dt-column-header .dt-column-title,table.dataTable thead>tr>td div.dt-column-footer .dt-column-title,table.dataTable tfoot>tr>th div.dt-column-header .dt-column-title,table.dataTable tfoot>tr>th div.dt-column-footer .dt-column-title,table.dataTable tfoot>tr>td div.dt-column-header .dt-column-title,table.dataTable tfoot>tr>td div.dt-column-footer .dt-column-title{flex-grow:1}table.dataTable thead>tr>th div.dt-column-header .dt-column-title:empty,table.dataTable thead>tr>th div.dt-column-footer .dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-header .dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-footer .dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-header .dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-footer .dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-header .dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-footer .dt-column-title:empty{display:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255, 255, 255, 0.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable th.dt-type-numeric div.dt-column-header,table.dataTable th.dt-type-numeric div.dt-column-footer,table.dataTable th.dt-type-date div.dt-column-header,table.dataTable th.dt-type-date div.dt-column-footer,table.dataTable td.dt-type-numeric div.dt-column-header,table.dataTable td.dt-type-numeric div.dt-column-footer,table.dataTable td.dt-type-date div.dt-column-header,table.dataTable td.dt-type-date div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-left div.dt-column-header,table.dataTable th.dt-left div.dt-column-footer,table.dataTable td.dt-left div.dt-column-header,table.dataTable td.dt-left div.dt-column-footer{flex-direction:row}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-right div.dt-column-header,table.dataTable th.dt-right div.dt-column-footer,table.dataTable td.dt-right div.dt-column-header,table.dataTable td.dt-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-justify div.dt-column-header,table.dataTable th.dt-justify div.dt-column-footer,table.dataTable td.dt-justify div.dt-column-header,table.dataTable td.dt-justify div.dt-column-footer{flex-direction:row}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left;vertical-align:var(--dt-header-vertical-align)}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-left div.dt-column-header,table.dataTable thead th.dt-head-left div.dt-column-footer,table.dataTable thead td.dt-head-left div.dt-column-header,table.dataTable thead td.dt-head-left div.dt-column-footer,table.dataTable tfoot th.dt-head-left div.dt-column-header,table.dataTable tfoot th.dt-head-left div.dt-column-footer,table.dataTable tfoot td.dt-head-left div.dt-column-header,table.dataTable tfoot td.dt-head-left div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-right div.dt-column-header,table.dataTable thead th.dt-head-right div.dt-column-footer,table.dataTable thead td.dt-head-right div.dt-column-header,table.dataTable thead td.dt-head-right div.dt-column-footer,table.dataTable tfoot th.dt-head-right div.dt-column-header,table.dataTable tfoot th.dt-head-right div.dt-column-footer,table.dataTable tfoot td.dt-head-right div.dt-column-header,table.dataTable tfoot td.dt-head-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-justify div.dt-column-header,table.dataTable thead th.dt-head-justify div.dt-column-footer,table.dataTable thead td.dt-head-justify div.dt-column-header,table.dataTable thead td.dt-head-justify div.dt-column-footer,table.dataTable tfoot th.dt-head-justify div.dt-column-header,table.dataTable tfoot th.dt-head-justify div.dt-column-footer,table.dataTable tfoot td.dt-head-justify div.dt-column-header,table.dataTable tfoot td.dt-head-justify div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}:root{--dt-row-hover-alpha: 0.035;--dt-row-stripe-alpha: 0.023;--dt-column-ordering-alpha: 0.019;--dt-row-selected-stripe-alpha: 0.923;--dt-row-selected-column-ordering-alpha: 0.919}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0, 0, 0, 0.3);padding:10px 10px 6px 10px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(228, 228, 228);color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha))}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha))}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha))}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd !important;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha))}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)))}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container div.dt-layout-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin:.75em 0}div.dt-container div.dt-layout-row div.dt-layout-cell{display:flex;justify-content:space-between;align-items:center}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start{justify-content:flex-start;margin-right:auto}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end{justify-content:flex-end;margin-left:auto}div.dt-container div.dt-layout-row div.dt-layout-cell:empty{display:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row:not(.dt-layout-table){display:block}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell{display:block;text-align:center}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell>*{margin:.5em 0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start{margin-right:0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end{margin-left:0}}div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:1em}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:1em}div.dt-container div.dt-layout-full{width:100%}div.dt-container div.dt-layout-full>*:only-child{margin-left:auto;margin-right:auto}div.dt-container div.dt-layout-table>div{display:block !important}@media screen and (max-width: 767px){div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:0}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:0}}div.dt-container{position:relative;clear:both}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;color:inherit !important;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit !important;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(229.5, 229.5, 229.5, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:rgba(0, 0, 0, 0.5) !important;border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:white !important;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(88.4, 88.4, 88.4)), color-stop(100%, #111));background:-webkit-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:-moz-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:-ms-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:-o-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:linear-gradient(to bottom, rgb(88.4, 88.4, 88.4) 0%, #111 100%)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:rgb(11.9, 11.9, 11.9);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(42.5, 42.5, 42.5)), color-stop(100%, rgb(11.9, 11.9, 11.9)));background:-webkit-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:-moz-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:-ms-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:-o-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:linear-gradient(to bottom, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89, 91, 94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666 !important}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dt-container .dt-paging .dt-paging-button:active{background:rgb(58.1, 58.1, 58.1)}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}
14
14
15
15
16
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none}}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:flex;float:none;justify-content:space-between;align-items:center;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection .dt-button:focus{outline-offset:-2px}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(179, 179, 179, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(128, 128, 128, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(179, 179, 179, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}
16
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none !important}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none !important}}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(229.5, 229.5, 229.5, 0.1)', EndColorStr='rgba(0, 0, 0, 0.1)');-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:hsla(0, 0%, -20%, 0.1);background:linear-gradient(to bottom, rgba(178.5, 178.5, 178.5, 0.1) 0%, hsla(0, 0%, -20%, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(178.5, 178.5, 178.5, 0.1)', EndColorStr='hsla(0, 0%, -20%, 0.1)');box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:hsla(0, 0%, -50%, 0.1);background:linear-gradient(to bottom, rgba(127.5, 127.5, 127.5, 0.1) 0%, hsla(0, 0%, -50%, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(127.5, 127.5, 127.5, 0.1)', EndColorStr='hsla(0, 0%, -50%, 0.1)')}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:hsla(0, 0%, -30%, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, hsla(0, 0%, -30%, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(153, 153, 153, 0.1)', EndColorStr='hsla(0, 0%, -30%, 0.1)')}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:flex;float:none;justify-content:space-between;align-items:center;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection .dt-button:focus{outline-offset:-2px}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block !important;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(178.5, 178.5, 178.5, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(127.5, 127.5, 127.5, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(178.5, 178.5, 178.5, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}
17
17
18
18
19
table.fixedHeader-floating,table.fixedHeader-locked{position:relative;background-color:var(--dt-html-background);background-color:var(--dt-html-background)}@media print{table.fixedHeader-floating,table.fixedHeader-locked{display:none}}
19
table.fixedHeader-floating,table.fixedHeader-locked{position:relative !important;background-color:var(--dt-html-background);background-color:var(--dt-html-background)}@media print{table.fixedHeader-floating,table.fixedHeader-locked{display:none}}
20
20
21
21
22
table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>th.dtr-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-column>tbody>tr.dtr-expanded td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded td.control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable>tbody>tr>td.dtr-control.arrow-right::before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control.arrow-right::before{border-right-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html.dark table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent;border-right-color:transparent}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li,html[data-bs-theme=dark] table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:rgb(64, 67, 70)}html.dark div.dtr-modal div.dtr-modal-display,html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display{background-color:rgb(33, 37, 41);border:1px solid rgba(255, 255, 255, 0.15)}
22
table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>th.dtr-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-column>tbody>tr.dtr-expanded td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded td.control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control:before{border-left-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr>td.dtr-control.arrow-right::before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control.arrow-right::before{border-right-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html.dark table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before{border-top-color:rgba(255, 255, 255, 0.5) !important;border-left-color:transparent !important;border-right-color:transparent !important}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li,html[data-bs-theme=dark] table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:rgb(64, 67, 70)}html.dark div.dtr-modal div.dtr-modal-display,html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display{background-color:rgb(33, 37, 41);border:1px solid rgba(255, 255, 255, 0.15)}
23
23
24
24
25
table.dataTable tr.dtrg-group th{background-color:rgba(0, 0, 0, 0.1);text-align:left}table.dataTable tr.dtrg-group.dtrg-level-0 th{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 th,table.dataTable tr.dtrg-group.dtrg-level-2 th,table.dataTable tr.dtrg-group.dtrg-level-3 th,table.dataTable tr.dtrg-group.dtrg-level-4 th,table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(0, 0, 0, 0.05);padding-top:.25em;padding-bottom:.25em;padding-left:2em;font-size:.9em}table.dataTable tr.dtrg-group.dtrg-level-2 th{background-color:rgba(0, 0, 0, 0.01);padding-left:2.5em}table.dataTable tr.dtrg-group.dtrg-level-3 th{background-color:rgba(0, 0, 0, 0.01);padding-left:3em}table.dataTable tr.dtrg-group.dtrg-level-4 th{background-color:rgba(0, 0, 0, 0.01);padding-left:3.5em}table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(0, 0, 0, 0.01);padding-left:4em}html.dark table.dataTable tr.dtrg-group th{background-color:rgba(255, 255, 255, 0.1)}html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th{background-color:rgba(255, 255, 255, 0.05)}html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(255, 255, 255, 0.01)}
25
table.dataTable tr.dtrg-group th{background-color:rgba(0, 0, 0, 0.1);text-align:left}table.dataTable tr.dtrg-group.dtrg-level-0 th{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 th,table.dataTable tr.dtrg-group.dtrg-level-2 th,table.dataTable tr.dtrg-group.dtrg-level-3 th,table.dataTable tr.dtrg-group.dtrg-level-4 th,table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(0, 0, 0, 0.05);padding-top:.25em;padding-bottom:.25em;padding-left:2em;font-size:.9em}table.dataTable tr.dtrg-group.dtrg-level-2 th{background-color:rgba(0, 0, 0, 0.01);padding-left:2.5em}table.dataTable tr.dtrg-group.dtrg-level-3 th{background-color:rgba(0, 0, 0, 0.01);padding-left:3em}table.dataTable tr.dtrg-group.dtrg-level-4 th{background-color:rgba(0, 0, 0, 0.01);padding-left:3.5em}table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(0, 0, 0, 0.01);padding-left:4em}html.dark table.dataTable tr.dtrg-group th{background-color:rgba(255, 255, 255, 0.1)}html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th{background-color:rgba(255, 255, 255, 0.05)}html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(255, 255, 255, 0.01)}
26
26
27
27
28
div.dt-rowReorder-float-parent{table-layout:fixed;outline:2px solid rgb(10, 89, 203);z-index:2001;position:absolute;overflow:hidden;border-radius:3px}div.dt-rowReorder-float-parent table.dt-rowReorder-float{opacity:.9;background-color:white;margin:0}div.dt-rowReorder-float-parent.drop-not-allowed{cursor:not-allowed}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}html.dark div.dt-rowReorder-float-parent{outline-color:rgb(110, 168, 254)}html.dark div.dt-rowReorder-float-parent table.dt-rowReorder-float{background-color:var(--dt-html-background)}html.dark tr.dt-rowReorder-moving{outline-color:#aaa}
28
div.dt-rowReorder-float-parent{table-layout:fixed;outline:2px solid rgb(10, 89, 203);z-index:2001;position:absolute !important;overflow:hidden;border-radius:3px}div.dt-rowReorder-float-parent table.dt-rowReorder-float{opacity:.9;background-color:white;margin:0 !important}div.dt-rowReorder-float-parent.drop-not-allowed{cursor:not-allowed}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}html.dark div.dt-rowReorder-float-parent{outline-color:rgb(110, 168, 254)}html.dark div.dt-rowReorder-float-parent table.dt-rowReorder-float{background-color:var(--dt-html-background)}html.dark tr.dt-rowReorder-moving{outline-color:#aaa}
(-)a/koha-tmpl/intranet-tmpl/lib/datatables/datatables.min.js (-17 / +17 lines)
Lines 4-13 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/fh-4.0.3/r-3.0.6/rg-1.6.0/rr-1.5.0
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, FixedHeader 4.0.3, Responsive 3.0.6, RowGroup 1.6.0, RowReorder 1.5.0
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
/*!
13
/*!
Lines 35-65 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
35
  "Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCpBGsAjQWBAHcFDACpBH4AjATuAKkCtgCDBMAAUQQhAF8ExgAyAp4ACQUwAIwFGAAdA+AAIQUYAB0D4AAhBxkAPQYDACsEywBXA/gAWQXH/ngEhgAUBCL/nwUg/7sCJf/ABMb/3wRn/1UE/f/3BIYAFARRAIsD5gCLBCMASATkAIsB6QCYBFUAiwYCAIsE4wCLBLwAYARdAIsEJwApBCsADgRUACcB6f+yBCsADgPmAIsDrwCLBCAARAHpAJgB6f+yA88ALARVAIsEIAAjBIYAFARRAIsDrwCLA+YAiwTsAIsGAgCLBOQAiwS8AGAEzwCLBF0AiwR8AGEEJwApBFQAJwRAAEgE5ACLBHwAYQQrAA4FxAACBOwAiwQgACMFZwBhBbgAmAY6AAkEvABgBCAARAYVADEGFQAxBhUAMQQrAA4FOAAdBFoAbQSMAKkEPgBdBIYAFAPmAIsB+wCGAAAAAgAAAAMAAAAUAAMAAQAAABQABAZuAAAA9ACAAAYAdAAAAAIADQB+AKAArACtAL8AxgDPAOYA7wD+AQ8BEQElAScBMAFTAV8BZwF+AX8BjwGSAaEBsAHwAf8CGwI3AlkCvALHAskC3QLzAwEDAwMJAw8DIwOKA4wDkgOhA7ADuQPJA84D0gPWBCUELwRFBE8EYgRvBHkEhgSfBKkEsQS6BM4E1wThBPUFAQUQBRMeAR4/HoUe8R7zHvkfTSAJIAsgESAVIB4gIiAnIDAgMyA6IDwgRCB0IH8gpCCqIKwgsSC6IL0hBSETIRYhIiEmIS4hXiICIgYiDyISIhoiHiIrIkgiYCJlJcruAvbD+wT+///9//8AAAAAAAIADQAgAKAAoQCtAK4AwADHANAA5wDwAP8BEAESASYBKAExAVQBYAFoAX8BjwGSAaABrwHwAfoCGAI3AlkCvALGAskC2ALzAwADAwMJAw8DIwOEA4wDjgOTA6MDsQO6A8oD0QPWBAAEJgQwBEYEUARjBHAEegSIBKAEqgSyBLsEzwTYBOIE9gUCBREeAB4+HoAeoB7yHvQfTSAAIAogECATIBcgICAlIDAgMiA5IDwgRCB0IH8goyCmIKsgsSC5ILwhBSETIRYhIiEmIS4hWyICIgYiDyIRIhoiHiIrIkgiYCJkJcruAfbD+wH+///8//8AAQAA//b/5AHp/8IB3f/BAAAB0AAAAcsAAAHHAAABxQAAAcMAAAG7AAABvf8W/wf/Bf74/usB/wAAAAD+Zf5EATT92P3X/cn9tP2o/af9ov2d/YoAAAAPAA4AAAAA/QoAAP/v/P78+wAA/LoAAPyyAAD8pwAA/KEAAPyZAAD8kQAA/zkAAP82AAD8XgAA5fPls+Vk5Y/k+OWN5Y7hcuFz4W8AAOFs4WvhaeFh47rhWeOy4VDhIuEdAADhAgAA4P3g9uD14K7goeCf4JTflOCJ4F3fut6s367frd+m36Pfl99732TfYdv9E8cLBwbLAtMB1wABAAAAAAAAAAAAAAAAAAAAAADkAAAA7gAAARgAAAEyAAABMgAAATIAAAF0AAAAAAAAAAAAAAAAAAABdAF+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWwAAAAAAXQBkAAAAagAAAAAAAABwAAAAggAAAIwAAACUgAAAmIAAAKOAAACmgAAAr4AAALOAAAC4gAAAAAAAAAAAAAAAAAAAAAAAAAAAtIAAAAAAAAAAAAAAAAAAAAAAAAAAALCAAACwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQApECkgKTApQClQCBAowCoAKhAqICowKkAqUAggCDAqYCpwKoAqkCqgCEAIUCqwKsAq0CrgKvArAAhgCHArsCvAK9Ar4CvwLAAIgAiQLBAsICwwLEAsUAigKLAIsAjAKNAI0C9AL1AvYC9wL4AvkAjgL6AvsC/AL9Av4C/wMAAwEAjwCQAwIDAwMEAwUDBgMHAwgAkQCSAwkDCgMLAwwDDQMOAJMAlAMdAx4DIQMiAyMDJAKOAo8ClgKxAzwDPQM+Az8DGwMcAx8DIACuAK8DlwCwA5gDmQOaALEAsgOhA6IDowCzA6QDpQC0A6YDpwC1A6gAtgOpALcDqgOrALgDrAC5ALoDrQOuA68DsAOxA7IDswO0AMQDtgO3AMUDtQDGAMcAyADJAMoAywDMA7gAzQDOA/UDvgDSA78A0wPAA8EDwgPDANQA1QDWA8UD9gPGANcDxwDYA8gDyQDZA8oA2gDbANwDywPEAN0DzAPNA84DzwPQA9ED0gDeAN8D0wPUAOoA6wDsAO0D1QDuAO8A8APWAPEA8gDzAPQD1wD1A9gD2QD2A9oA9wPbA/cD3AECA90BAwPeA98D4APhAQQBBQEGA+ID+APjAQcBCAEJBJID+QP6ARcBGAEZARoD+wP8A/4D/QEoASkBKgErBJEBLAEtAS4BLwEwBJMElAExATIBMwE0A/8EAAE1ATYBNwE4BJUElgQBBAIEiASJBAMEBASXBJgEkAFMAU0EjgSPBAUEBgQHAU4BTwFQAVEBUgFTAVQBVQSKBIsBVgFXAVgEEgQRBBMEFAQVBBYEFwFZAVoEjASNBCwELQFbAVwBXQFeBJkEmgFfBC4EmwFvAXABgQGCBJ0EnAGnBIcBrQAAQEqZmJeWh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNRUE9OTUxLSklIR0YoHxAKCSwBsQsKQyNDZQotLACxCgtDI0MLLSwBsAZDsAdDZQotLLBPKyCwQFFYIUtSWEVEGyEhWRsjIbBAsAQlRbAEJUVhZIpjUlhFRBshIVlZLSwAsAdDsAZDCy0sS1MjS1FaWCBFimBEGyEhWS0sS1RYIEWKYEQbISFZLSxLUyNLUVpYOBshIVktLEtUWDgbISFZLSywAkNUWLBGKxshISEhWS0ssAJDVFiwRysbISEhWS0ssAJDVFiwSCsbISEhIVktLLACQ1RYsEkrGyEhIVktLCMgsABQiopksQADJVRYsEAbsQEDJVRYsAVDi1mwTytZI7BiKyMhI1hlWS0ssQgADCFUYEMtLLEMAAwhVGBDLSwBIEewAkMguBAAYrgQAGNXI7gBAGK4EABjV1pYsCBgZllILSyxAAIlsAIlsAIlU7gANSN4sAIlsAIlYLAgYyAgsAYlI2JQWIohsAFgIxsgILAGJSNiUlgjIbABYRuKISMhIFlZuP/BHGCwIGMjIS0ssQIAQrEjAYhRsUABiFNaWLgQALAgiFRYsgIBAkNgQlmxJAGIUVi4IACwQIhUWLICAgJDYEKxJAGIVFiyAiACQ2BCAEsBS1JYsgIIAkNgQlkbuEAAsICIVFiyAgQCQ2BCWbhAALCAY7gBAIhUWLICCAJDYEJZuUAAAQBjuAIAiFRYsgIQAkNgQlmxJgGIUVi5QAACAGO4BACIVFiyAkACQ2BCWblAAAQAY7gIAIhUWLICgAJDYEJZsSgBiFFYuUAACABjuBAAiFRYuQACAQCwAkNgQllZWVlZWVmxAAJDVFhACgVACEAJQAwCDQIbsQECQ1RYsgVACLoBAAAJAQCzDAENARuxgAJDUliyBUAIuAGAsQlAG7gBALACQ1JYsgVACLoBgAAJAUAbuAGAsAJDUliyBUAIuAIAsQlAG7IFQAi6AQAACQEAWVlZuEAAsICIVblAAAIAY7gEAIhVWlizDAANARuzDAANAVlZWUJCQkJCLSxFsQJOKyOwTysgsEBRWCFLUViwAiVFsQFOK2BZGyNLUViwAyVFIGSKY7BAU1ixAk4rYBshWRshWVlELSwgsABQIFgjZRsjWbEUFIpwRbBPKyOxYQYmYCuKWLAFQ4tZI1hlWSMQOi0ssAMlSWMjRmCwTysjsAQlsAQlSbADJWNWIGCwYmArsAMlIBBGikZgsCBjYTotLLAAFrECAyWxAQQlAT4APrEBAgYMsAojZUKwCyNCsQIDJbEBBCUBPwA/sQECBgywBiNlQrAHI0KwARaxAAJDVFhFI0UgGGmKYyNiICCwQFBYZxtmWWGwIGOwQCNhsAQjQhuxBABCISFZGAEtLCBFsQBOK0QtLEtRsUBPK1BbWCBFsQFOKyCKikQgsUAEJmFjYbEBTitEIRsjIYpFsQFOKyCKI0REWS0sS1GxQE8rUFtYRSCKsEBhY2AbIyFFWbEBTitELSwjRSCKRSNhIGSwQFGwBCUgsABTI7BAUVpasUBPK1RaWIoMZCNkI1NYsUBAimEgY2EbIGNZG4pZY7ECTitgRC0sAS0sAC0sBbELCkMjQ2UKLSyxCgtDI0MLAi0ssAIlY2awAiW4IABiYCNiLSywAiVjsCBgZrACJbggAGJgI2ItLLACJWNnsAIluCAAYmAjYi0ssAIlY2awIGCwAiW4IABiYCNiLSwjSrECTistLCNKsQFOKy0sI4pKI0VksAIlZLACJWFksANDUlghIGRZsQJOKyOwAFBYZVktLCOKSiNFZLACJWSwAiVhZLADQ1JYISBkWbEBTisjsABQWGVZLSwgsAMlSrECTiuKEDstLCCwAyVKsQFOK4oQOy0ssAMlsAMlirBnK4oQOy0ssAMlsAMlirBoK4oQOy0ssAMlRrADJUZgsAQlLrAEJbAEJbAEJiCwAFBYIbBqG7BsWSuwAyVGsAMlRmBhsIBiIIogECM6IyAQIzotLLADJUewAyVHYLAFJUewgGNhsAIlsAYlSWMjsAUlSrCAYyBYYhshWbAEJkZgikaKRmCwIGNhLSywBCawBCWwBCWwBCawbisgiiAQIzojIBAjOi0sIyCwAVRYIbACJbECTiuwgFAgYFkgYGAgsAFRWCEhGyCwBVFYISBmYbBAI2GxAAMlULADJbADJVBaWCCwAyVhilNYIbAAWRshWRuwB1RYIGZhZSMhGyEhsABZWVmxAk4rLSywAiWwBCVKsABTWLAAG4qKI4qwAVmwBCVGIGZhILAFJrAGJkmwBSawBSawcCsjYWWwIGAgZmGwIGFlLSywAiVGIIogsABQWCGxAk4rG0UjIVlhZbACJRA7LSywBCYguAIAYiC4AgBjiiNhILBdYCuwBSURihKKIDmKWLkAXRAAsAQmY1ZgKyMhIBAgRiCxAk4rI2EbIyEgiiAQSbECTitZOy0suQBdEACwCSVjVmArsAUlsAUlsAUmsG0rsV0HJWArsAUlsAUlsAUlsAUlsG8ruQBdEACwCCZjVmArILAAUliwUCuwBSWwBSWwByWwByWwBSWwcSuwAhc4sABSsAIlsAFSWliwBCWwBiVJsAMlsAUlSWAgsEBSWCEbsABSWCCwAlRYsAQlsAQlsAclsAclSbACFzgbsAQlsAQlsAQlsAYlSbACFzhZWVlZWSEhISEhLSy5AF0QALALJWNWYCuwByWwByWwBiWwBiWwDCWwDCWwCSWwCCWwbiuwBBc4sAclsAclsAcmsG0rsAQlsAQlsAQmsG0rsFArsAYlsAYlsAMlsHErsAUlsAUlsAMlsAIXOCCwBiWwBiWwBSWwcStgsAYlsAYlsAQlZbACFziwAiWwAiVgILBAU1ghsEBhI7BAYSMbuP/AUFiwQGAjsEBgI1lZsAglsAglsAQmsAIXOLAFJbAFJYqwAhc4ILAAUliwBiWwCCVJsAMlsAUlSWAgsEBSWCEbsABSWLAGJbAGJbAGJbAGJbALJbALJUmwBBc4sAYlsAYlsAYlsAYlsAolsAolsAclsHErsAQXOLAEJbAEJbAFJbAHJbAFJbBxK7ACFzgbsAQlsAQluP/AsAIXOFlZWSEhISEhISEhLSywBCWwAyWHsAMlsAMliiCwAFBYIbBlG7BoWStksAQlsAQlBrAEJbAEJUkgIGOwAyUgY1GxAAMlVFtYISEjIQcbIGOwAiUgY2EgsFMrimOwBSWwBSWHsAQlsAQmSrAAUFhlWbAEJiABRiMARrAFJiABRiMARrAAFgCwACNIAbAAI0gAILABI0iwAiNIASCwASNIsAIjSCOyAgABCCM4sgIAAQkjOLECAQewARZZLSwjEA0MimMjimNgZLlAAAQAY1BYsAA4GzxZLSywBiWwCSWwCSWwByawdisjsABUWAUbBFmwBCWwBiawdyuwBSWwBSawBSWwBSawdiuwAFRYBRsEWbB3Ky0ssAclsAolsAolsAgmsHYrirAAVFgFGwRZsAUlsAcmsHcrsAYlsAYmsAYlsAYmsHYrCLB3Ky0ssAclsAolsAolsAgmsHYriooIsAQlsAYmsHcrsAUlsAUmsAUlsAUmsHYrsABUWAUbBFmwdystLLAIJbALJbALJbAJJrB2K7AEJrAEJgiwBSWwByawdyuwBiWwBiawBiWwBiawdisIsHcrLSwDsAMlsAMlSrAEJbADJUoCsAUlsAUmSrAFJrAFJkqwBCZjiopjYS0ssV0OJWArsAwmEbAFJhKwCiU5sAclObAKJbAKJbAJJbB8K7AAULALJbAIJbAKJbB8K7AAUFRYsAclsAslh7AEJbAEJQuwCiUQsAklwbACJbACJQuwByUQsAYlwRuwByWwCyWwCyW4//+wdiuwBCWwBCULsAclsAolsHcrsAolsAglsAgluP//sHYrsAIlsAIlC7AKJbAHJbB3K1mwCiVGsAolRmCwCCVGsAglRmCwBiWwBiULsAwlsAwlsAwmILAAUFghsGobsGxZK7AEJbAEJQuwCSWwCSWwCSYgsABQWCGwahuwbFkrI7AKJUawCiVGYGGwIGMjsAglRrAIJUZgYbAgY7EBDCVUWAQbBVmwCiYgELADJTqwBiawBiYLsAcmIBCKOrEBByZUWAQbBVmwBSYgELACJTqKigsjIBAjOi0sI7ABVFi5AABAABu4QACwAFmKsAFUWLkAAEAAG7hAALAAWbB9Ky0siooIDYqwAVRYuQAAQAAbuEAAsABZsH0rLSwIsAFUWLkAAEAAG7hAALAAWQ2wfSstLLAEJrAEJggNsAQmsAQmCA2wfSstLCABRiMARrAKQ7ALQ4pjI2JhLSywCSuwBiUusAUlfcWwBiWwBSWwBCUgsABQWCGwahuwbFkrsAUlsAQlsAMlILAAUFghsGobsGxZKxiwCCWwByWwBiWwCiWwbyuwBiWwBSWwBCYgsABQWCGwZhuwaFkrsAUlsAQlsAQmILAAUFghsGYbsGhZK1RYfbAEJRCwAyXFsAIlELABJcWwBSYhsAUmIRuwBiawBCWwAyWwCCawbytZsQACQ1RYfbACJbCCK7AFJbCCKyAgaWGwBEMBI2GwYGAgaWGwIGEgsAgmsAgmirACFziKimEgaWFhsAIXOBshISEhWRgtLEtSsQECQ1NaWCMQIAE8ADwbISFZLSwjsAIlsAIlU1ggsAQlWDwbOVmwAWC4/+kcWSEhIS0ssAIlR7ACJUdUiiAgEBGwAWCKIBKwAWGwhSstLLAEJUewAiVHVCMgErABYSMgsAYmICAQEbABYLAGJrCFK4qKsIUrLSywAkNUWAwCiktTsAQmS1FaWAo4GwohIVkbISEhIVktLLCYK1gMAopLU7AEJktRWlgKOBsKISFZGyEhISFZLSwgsAJDVLABI7gAaCN4IbEAAkO4AF4jeSGwAkMjsCAgXFghISGwALgATRxZioogiiCKI7gQAGNWWLgQAGNWWCEhIbABuAAwHFkbIVmwgGIgXFghISGwALgAHRxZI7CAYiBcWCEhIbAAuAAMHFmKsAFhuP+rHCMhLSwgsAJDVLABI7gAgSN4IbEAAkO4AHcjeSGxAAJDirAgIFxYISEhuABnHFmKiiCKIIojuBAAY1ZYuBAAY1ZYsAQmsAFbsAQmsAQmsAQmGyEhISG4ADiwACMcWRshWbAEJiOwgGIgXFiKXIpaIyEjIbgAHhxZirCAYiBcWCEhIyG4AA4cWbAEJrABYbj/kxwjIS0AAED/fjR9VXw+/x97O/8fej3/H3k7QB94PP8fdzw9H3Y1Bx91Ov8fdDpnH3M5Tx9yOf8fcTb/H3A4zR9vOP8fbjdeH203zR9sN/8fazctH2o3GB9pNP8faDL/H2cyzR9mM/8fZTH/H2Qw/x9jMKsfYjBnH2Eu/x9gLoAfXy//H14vkx9dLf8fXCz/H1sr/x9aKs0fWSr/H1gqDR9XKf8fVij/H1UnJB9UJy0fUyVeH1Il/x9RJasfUCb/H08mgB9OJP8fTSMrH0wjqx9LI/8fSiNWH0kjKx9IIv8fRyD/H0Ygch9FIf8fRCFyH0Mf/x9CHpMfQR7/H0Ad/x8/HP8fPTuTQOofPDs0Hzo1Dh85NnIfODZPHzc2Ih82NZMfMzJAHzEwch8vLkofKypAHycZBB8mJSgfJTMbGVwkGhIfIwUaGVwiGf8fISA9HyA4GBZcHxgtHx4X/x8dFv8fHBYHHxszGRxbGDQWHFsaMxkcWxc0FhxbFRk+FqZaEzESVRExEFUSWRBZDTQMVQU0BFUMWQRZHwRfBAIPBH8E7wQDD14OVQs0ClUHNAZVATEAVQ5ZClkGWX8GAS8GTwZvBgM/Bl8GfwYDAFkvAAEvAG8A7wADCTQIVQM0AlUIWQJZHwJfAgIPAn8C7wIDA0BABQG4AZCwVCtLuAf/UkuwCVBbsAGIsCVTsAGIsEBRWrAGiLAAVVpbWLEBAY5ZhY2NAB1CS7CQU1iyAwAAHUJZsQICQ1FYsQQDjllzdAArACsrK3N0ACtzdHUAKwArACsrKysrc3QAKwArKysAKwArKysBKwErASsBKwErASsrACsrASsrASsAKwArASsrKysrASsrACsrKysrKysBKysAKysrKysrKwErACsrKysrKysrKysrKysBKysAKysrKysrKysrKwErKysrKysrACsrKysrKysrKysrKysrKysrKysrKxgAAAYAABUFsAAUBbAAFAQ6ABQAAP/sAAD/7AAA/+z+YP/1BbAAFQAA/+sAAAC9AMAAnQCdALoAlwCXACcAwACdAIYAvACrALoAmgDTALMAmQHgAJYAugCaAKkBCwCCAK4AoACMAJUAuQCpABcAkwCaAHsAiwChAN4AoACMAJ0AtgAnAMAAnQCkAIYAogCrALYAvwC6AIIAjgCaAKIAsgDTAJEAmQCtALMAvgHJAf0AlgC6AEcAmACdAKkBCwCCAJkAnwCpALAAgQCFAIsAlACpALUAugAXAFAAYwB4AH0AgwCLAJAAmACiAK4A1ADeASYAewCJAJMAnQClALQEjQAQAAAAAAAyADIAMgAyADIAWgB5ALABJQGmAhoCLgJeAo4CuwLYAvIDAwMeAzIDfwOYA9cEPgRpBLYFEAUtBZwF9QYBBg0GMwZOBnQGxQdtB6QIBAhICIYItgjfCS4JVglqCZUJyAnmChkKPAqICrsLFAtZC7gL1gwEDCsMbQybDL8M7A0FDRkNMg1XDWcNew3jDjYOfA7PDxwPSw+zD+sQERBKEH0QkRDtEScRbRHBEhUSSRKgEtATBxMtE3ETnRPZFAUUSxRdFKQU4xUHFWEVrBYNFlQWbhcAFy0XpRf7GAcYJBi9GM4ZARkmGV0ZuxnPGg8aLhpIGnEaiBrGGtIa4xr0GwUbVRuiG8AcGRxSHK8dTR2uHeUeOR6OHuofGx8vH2Efih+pH+UgMiCdISYhTCGaIekiSiKhIuAjKiNQI5ojuSPXI98kASQcJEwkdySzJNEk/SURJSUlLiVZJXYlkCWjJd4l5iX9JiwmhCarJtIm7ycjJ3YnsygSKHwo3ikMKXYp3CotKmcqwiroKzsrqyvkLDIsfCzPLP8tNy2ILcguLy6OLuQvVS+eL+4wSjCSMNEw9TE4MYox1jI9MmAymDLVMyYzTzOFM6oz2zQYNFc0jDTcNT41fTXrNk82ZjarNvo3XjeBN7M36zgaOEI4aDiEORg5QDl0OZk5yjoIOkc6fDrKOyg7aDvDPBE8bDy1PPU9Gj1vPcU+BD5dPrc+8j8rP30/zEAvQI9BBUF7QfhCc0LZQytDYUOZQ/5EXUUBRaRGDEZ1RrhG+UcpR0dHckeHR51INUiGSKJIvkj6ST1JoknESeZKIUpcSm9KgkqOSqFK30scS1dLkUukS7dL6EwZTFhMoE0JTXBNg02WTchN+04OTiFOZU6nTt1PPU+bT+RQK1A+UFFQiFDBUNRQ51D6UQ1RXFGnUfJSAVIQUhxSKFJaUrBTJVOaVA5UelTlVUFVoFXsVjtWh1bRVxJXU1e7V8dX01f7V/tX+1f7V/tX+1f7V/tX+1f7V/tX+1f7V/tYA1gLWBxYLVhHWGFYfFiWWLBYvFjIWPRZE1k9WVlZZVl1WY9aQ1pnWodanlqnWrBauVrCWsta1FrdWxJbG1skWy1bNls/W0hbUVtaW2NbbFu+W/VcTVxZXLFc911JXZNd414iXl5emV8XX2Ffwl/7YENgWWBqYIBglmD7YRVhSGFZYYRiEmJMYqti2GMKYzxjcGN9Y5ljs2O/Y/ZkMmSOZPFlTGXzZfNm6WcvZ2RniGfFaBdoiGiiaPJpNmleacBp+moSalhqhGq1auBrImtGa3JrjmvqbCpsf2yxbPdtF21HbWJtkm26bcxt8247bmRu1m8jb2Bve2+rb/twHnBEcGdwnXDpcShxh3HOchpycHK0cvBzH3Nac6Fz8nRWdIF0s3TrdSV1VnWIdbZ183Yrdjd2Z3a0dw93V3d/d9p4F3hVeI549XkBeTl5cnmxeeJ6OHqBest7KXuBe9J8NXxxfMV87X0qfXV9jn30fj9+UH6Jfrh/V3+xgAeAOoBsgJyAz4EKgUyBq4HbgfaCIYJdgoKCqYLngyyDVYOAg82D1oPfg+iD8YP6hAOEDIRThKOE4IUshYeFpIXjhiOGSoaThq6G/ocPh3+H24f+iAaIDogWiB6IJoguiDaIPohGiE6IVoheiGaIeIiAiOCJJYlCiZWJ24ouipaK3Iswi4SLzYw0jIGMiYz1jR+NbI2fjfSOI45ijmKOao6zjvyPPI9hj52PsI/Dj9aP6Y/9kBGQJ5A6kE2QYJBzkIeQmpCtkMCQ1JDnkPqRDZEgkTORR5FakW2RgJGUkaeRupHNkd+R8ZIFkhmSL5JCklWSaJJ6ko6SoJKyksWS2ZLrkv6TEZMjkzWTSZNck2+TgZOVk6iTu5POk+CT85QGlFyU5JT3lQqVHZUvlUKVVZVolXqVjZWglbOVxZXYleuV/pYRlmaW1JbnlvmXDJcelzGXQ5dWl2mXfZeQl6OXtpfJl9yX75gCmBWYKJg6mEyYX5hrmHeYipidmLGYxZjYmOuY/5kTmSaZOZlFmVGZZJl3mYuZn5mymcSZ15nqmfyaD5oimjaaSppdmnCahJqYmquavZrQmuOa9psImxubLptCm1abaZt7m4+bo5u2m8mb3JvwnAOcFZwonDqcTZxgnHSciJycnLCdAJ1bnW6dgZ2Unaadup3NneCd854GnhmeK54+nlGeZJ53noOej56anq2ewJ7SnuSe+J8MnxifJJ83n0qfXJ9vn4Gfk5+mn7qfzZ/gn/OgBqAZoC2gQKBToGWgeaCMoJ6gsaECoRWhJ6E6oU2hX6FxoYOhlqHoofqiDKIfojKiRqJZomyif6KSop2ir6LCos6i4KL0owCjDKMfoyujPqNRo2SjeKOLo5ejqaO8o86j2qPspACkEqQepDCkQqRVpGmkfaTMpN+k8aUEpRelKqU8pU+lY6VvpYOll6Wqpb6l06XbpeOl66XzpfumA6YLphOmG6YjpiumM6Y7pkOmV6Zrpn6mkaakpramyqbSptqm4qbqpvKnBqcZpyynP6dSp2aneafWp96n8qf6qAKoFagoqDCoOKhAqEioW6hjqGuoc6h7qIOoi6iTqJuoo6irqL6oxqjOqRGpGakhqTWpSKlQqVipbKl0qYepmamsqb+p0qnlqfmqDaogqjOqO6pDqk+qYqpqqn2qkKqlqrqqzargqvOrBqsOqxarKqs+q0qrVqtpq3yrj6uiq6qrsqu6q82r4Kvoq/usDqwirDasPqxGrFmsbKyArIisnKywrMSs2KzrrP6tEK0krTitTK1grWitcK2ErZitrK2/rdKt5K34rguuH64zrkeuWq5uroKuiq6errKuxa7Yruyu/68TryavOq9Nr2GvdK+Rr62vwa/Vr+mv/bARsCWwObBNsGqwh7CbsK+wwrDVsOiw+rEOsSGxNbFIsVyxb7GDsZaxs7HPseKx9bIJsh2yMbJFsliya7J/spKyprK5ss2y4LL0swezJLNAs1OzZrN5s4yzn7Oys8Wz17Prs/+0E7QntDq0TbRgtHO0hrSZtKy0v7TStOS0+LUMtSC1NLVHtVq1bbV/tZy1r7XCtdW16LX7tg62IbY0tjy2eba1tte2+bc5t3q3qLfcuBO4SLhQuGS4bLh0uHy4hLiMuJS4nLikuKy4v7jSuOW4+LkMuSC5NLlIuVy5cLmEuZi5rLnAudS56Ln0ugi6HLowukS6WLpsuoC6lLqnurq6zrriuva7CrseuzK7Rrtau267gbuUu6i7vLvQu+S7+LwMvCC8M7xFvFm8bbyBvJW8qby9vNG83bzpvPW9Ab0NvRm9Jb0tvTW9Pb1FvU29Vb1dvWW9bb11vX29hb2NvZW9qb28vc+94r3qvfK+Br4OviG+M747vkO+S75Tvma+br52vn6+hr6Ovpa+nr6mvxa/R7+Tv5u/p7+6v8y/1L/gv/PABsASwCXAOMBMwFjAa8B+wJHApMCwwLzA0AAGAGQAAAMoBbAAAwAHAAsADwATABcAAEEVITUzESMRIREjERMVITUBASMBEQEzAQMJ/XYbNgLENhf9dgKK/a86AlH9rzoCUQWwNjb6UAWw+lAFsPqGNjYFXPqMBXT6jAV0+owAAgCh//QBfAWwAAMADwATQAkCAgcNC3IAAnIAKyvdzi8wMUEDIwMDNDYzMhYVFAYjIiYBaQ2nDgY3NjU5OTU2NwWw++sEFfqtLT4+LSs+PgACAIkEEwIkBgAABQALAAyzCQMLBQAvM80yMDFBFQMjETUhFQMjETUBFh5vAZsebwYAiP6bAVyRiP6bAWOKAAQAdwAABNMFsAADAAcACwAPACNAEQQABQ0ODgAKCQkAAgJyABJyACsrETkvMxE5LzMyETMwMWEBMwEhATMBASE1IQMhNSEBFwEbkP7kAQgBHI/+5AGW+/AEEEv77wQRBbD6UAWw+lADhYv9iooAAwBu/zAEEgacAAMABwA9ADZAHAQHOjoIKxAjBBQvNTUGLw1yAQIfHxQaGgMUBXIAK80zLxEzEjk5K80zLxESFzkzEjk5MDFBESMRExEjEQE0JiYnLgI1NDY2MzIeAhUjNC4CIyIGBhUUFhYXHgIVFAYGIyIuAjUzFB4CMzI2NgKiloSVAV02fGh+t2NqwoNmoG87uCBAXDxUbTQ0fW6BtF500o1VpoZQujFSYzFafUIGnP7PATH5n/71AQsBPDxgUCIncKZ2e7JgPXiuckNwUy06aUVAYE0lKW+hd4GxXC5prX5Vb0EbOWoABQBp/+sFgwXFABEAIwA1AEcASwAjQBFJMksFO0QpMhcOIAUFcjINcgArKzLEMhDEMjMRMxEzMDFTNTQ2NjMyFhYVFRQGBiMiJiY3FRQWFjMyNjY1NTQmJiMiBgYBNTQ2NjMyFhYVFRQGBiMiJiY3FRQWFjMyNjY1NTQmJiMiBgYTAScBaUiGXF6FSEeFXV2HSIsjSDY2RiIjRzY1RyMCOkiGXF6FSEeFXV2GSYsjSDY2RyIjRzc1RyPN/TloAscES01TiFJSiFNNUYhSUoieTS5SMzNSLk0vUzMzU/xQTlKIUlKIUk5SiFJSiKBOLlMzM1IvTi9SMzNSA037jkIEcgAAAQBm/+wE8wXEAEIAJEAUIxIADyIBBhowMCsRETsTcgcaA3IAKzIrMi8yMi8RFzkwMUE3NjY1NCYjIgYGFRQWFhcBIwEuAjU0NjYzMhYWFRQGBgcFDgIVFBYWMzI+AjUzFAYGBwYGBwYGIyImJjU0NjYBmto/RVxUOlAoLE4yArHe/ctLdkNbpG5rm1QyWTv+30hCEz5/YFSffkumJk89CQoJS9tukdNyT4sDKJsrV0w7YTZZNS1gaDr8xgKkWJOKSnKdUlWLU0ZvXCzXNWBKFkd2R02Px3ljsJc+CRgJUVFqunhcjHoAAAEAaAQiAP4GAAAFAAixAwUAL8YwMVMVAyMTNf4VgQEGAG7+kAFffwABAIb+KgKWBmsAFwAIsQYTAC8vMDFTNTQSEjY3Fw4CAhUVFBIWFhcHJiYCAoZimKhHJzt5ZT4+ZXk7J0eomGICRgraAWEBCq8nei2e5v7Qvg6+/s/oozBwJ68BCQFiAAABACf+KgI3BmsAFwAIsRMGAC8vMDFBFRQCAgYHJz4CEjU1NAImJic3FhYSEgI3YpioRyc7eGY+Qml3NSdHqJhiAlAK2/6e/vevJ3AtoesBM74OvgEz6qEscSev/vb+nwABABwCYgNWBbEADgAUQAoNAQcEBA4MBgJyACvEMhc5MDFTEyU3BQMzAyUXBRMHAwOByf7SLwEuCZgKASou/s3FfLm1AsQBFFqWbwFY/qJvmVv+8V0BIP7nAAACAE4AkgQ0BLYAAwAHABC1BwcDAwYCAC/GMxDGLzAxQRUhNQERIxEENPwaAlC5Aw2urgGp+9wEJAAAAQAd/t0BNQDcAAoACLEEAAAvzTAxZRUUBgcnPgI1NQE1XFNpICwX3JVby0RJLFthNpgAAAEAJgIfAg4CtwADAAixAwIALzMwMUEVITUCDv4YAreYmAABAJD/9AF2ANIACwAKswMJC3IAKzIwMXc0NjMyFhUUBiMiJpA7ODg7Ozg4O2IvQUEvLkBAAAABABP/gwMRBbAAAwAJsgACAQAvPzAxQQEjAQMR/aGfAmAFsPnTBi0AAgBz/+wECwXEABcALwATQAkrBh8SBXIGDXIAKysyETMwMUEVFA4CIyIuAzU1ND4CMzIeAwMRNC4DIyIOAhURFB4DMzI+AgQLQHipalSOcVAqQXipaVWPcE8quhcsQ1c2QmZFJBcuQlc1RGZFIgNM3rP2lkMqXZbWj96z8pNAKVmT1P51ARtilWpCHzFqrHv+5WKWbUYhNG+vAAEAqwAAAtkFuAAGAAy1BgRyAQxyACsrMDFBESMRBTUlAtm5/osCEQW4+kgE0YinyAAAAQBeAAAEMwXEAB8AGUAMEBAMFQVyAx8fAgxyACsyETMrMjIvMDFlFSE1AT4CNTQmJiMiBgYVIzQ2NjMyFhYVFA4CBwEEM/xHAd1YYSc7clFhgUC5bNSbisRpK0tjOP56mJiFAhNiiW05SHVGS4ZXe8x5Ya91QIOCfj3+WQAAAgBf/+wD+gXEABwAOwAqQBYbHB4fBAAAHR0SMy8vKQ1yDQ0JEgVyACsyMi8rMi8yETkvMxIXOTAxQTMyNjY1NCYmIyIGBhUjNDY2MzIWFhUUDgIjIxU1MzIeAhUUDgIjIi4CNTMUFhYzMjY2NTQmJiMBh4Rhfz84cFZOd0O5cMuGhMZuM2uqd56ei7ZpK0V9qGNfp4BIuUN9VVV7Q0yLXgMzQXFHVHI6PXBMb7ZsXbeIN31sRShvQm6DQWaebjg2Z5dhTHI/O3hbW3U5AAACADUAAARRBbAABwALAB1ADgMHBwYCAgUJDHILBQRyACsyKxI5LzkzEjkwMUEVITUBMwMBAREjEQRR++QCjJei/lECf7kB6phtA/H+3P1eA8b6UAWwAAEAmv/sBC4FsAApAB1ADicJCQIdGRkTDXIFAgRyACsyKzIvMhE5LzMwMUEnEyEVIQM2NjMyHgIVFA4CIyIuAiczHgIzMj4CNTQuAiMiBgFjlEkC6/2yLCh7UGWgcTw5cq11WJ17TQqwDEh1TkJmRiUmS2xGXV8CtSYC1av+dBcoRYC0b2mwg0gxZZdmUnA5LlZ6TEV2WDEyAAABAIX/7AQdBbIANgAbQA0OLBgiIiwDAARyLA1yACsrMhE5LzMRMzAxQTMVIyIOAhUVFB4CMzI+AjU0LgIjIgYGByc+AzMyHgIVFA4CIyIuAjU1NBI2JAM/EBCTxnQzLlBlN0BkRSQgQmNETYVVBmIOTXOPUG2eZjE6c6hvdrB0Oj6ZARAFsp1fn8Zm1mGVZjQxWXpJQXlfN0t5RwFwn2UvUomrWme0iExhosZmV5oBKPCOAAABAE4AAAQmBbAABgATQAkBBQUGBHIDDHIAKysyETMwMUEVASMBITUEJv2lwwJa/OwFsGj6uAUYmAAABABx/+wEDwXEABAAIAAwAEAAIUAQDT09JS0VFQQ1LQVyHQQNcgArMisyEjkvEjkzEjkwMUEUBgYjIiYmNTQ+AjMyFhYHNCYmIyIGBhUUFhYzMjY2ExQGBiMiJiY1NDY2MzIWFgc0JiYjIgYGFRQWFjMyNjYED3vRg4PSekN7qWaG0nm6Rn5TVXtEQ31WVnxDmHDCe33Dbm/CfH3Cb7k+bklJbT09bklJbT4BioW5YGC5hVeRbDtntHBRfUZGfVFUdz8/dwL7aqpiYqpqf7JeXrKCSXBBPXBNS3A+PnAAAQBk//4D+AXEADgAG0ANADgWISE4DCsFcjgMcgArKzIROS8zETMwMWUzMj4CNTU0LgIjIg4CFRQeAjMyPgI3MxQOAiMiLgI1ND4CMzIeAhUVFA4DIyMBMROgyGwoLU9kOEBlRSQgQmNDPm1VMwRYQXScXGyeZTE6cqlvfbBvNB1Rmve1E5tamL9l32OaaDYzXHxJQXpiOTFVbDtToYRPVIytWWi2i05kqNJvQ3Hp1Kdh//8Ahf/0AWwERQQmABL1AAAHABL/9gNz//8AKf7dAVQERQQnABL/3gNzAAYAEAwAAAIASADEA3oESgAEAAkAFkAMAQMHBgAECAUIAgkCAC8vEhc5MDFTARUBNSUBBzUBxwKz/M4DMv1OgAMyAqD+6MQBe3PU/uQOdAF6AAACAJgBjwPaA88AAwAHAA61BgcSAwIQAD8zPzMwMUEVITUBFSE1A9r8vgNC/L4Dz6Gh/mGhoQACAIcAxQPdBEwABAAJABVACwUIBAAGAwEHAgkCAC8vEhc5MDFBATUBFQUBNxUBA079OQNW/KoCyY38qgJ4ARW//oZ12QEbFXT+hQAAAgBL//QDdwXEACAALAAbQA0BASQkKgtyERENFgNyACsyMi8rMhEzLzAxQSM+Ajc+AjU0JiYjIgYGByM+AjMyFhYVFAYGBwYGAzQ2MzIWFRQGIyImAh+6ASFMPy5NMDFfRjpoQAG5Am26c3+zXklyQDcmwjg1Njg4NjU4AZpge2ZBL1NhREVkNipXRnGiVlyrdVqXhDwzgP55LT4+LSs+PgAAAgBt/jsGzwWXAEEAaAAnQBISBQVHUhNyYWRkC11dHR08KTAALzMvMxEzLzMzETMrMjIRMzAxQQ4DIyIuAjcTMwMGHgIzMj4CNzYuAyMiDgMHBh4DMzI2NxcGBiMiLgICNzYSNjYkMzIeAhIFBh4CMzI+AjcXDgMjIi4CNz4EMzIWFwcmJiMiDgIGyAQwYJlsRWdBGQgzkzMGEygzGDxeQSQEBylhnNiLftWpeUUGBy5nntCAWLU9JkbRXZj7wYA8BwdVlM0BAZea+r18Ofv2Bw4oQSwdQD42EkIXSVplNEluRBsJCThTaXY+bHw4VR1eQDdgTTQB91y5ml0xXIJQAir91klcMRI/b5NUlfrChkZNkMr9kpb7xYlHKiRyLSxTn+MBIqykASLsq1xUnuT+4P9GbkwnHT5kRkhSfFQrP3ShY2myjGIzPytjHDA4cKUAAwAdAAAFHgWwAAQACQANAClAFAQHBwoNDQYACwwMAggDAnIFAghyACsyKzIROS8zOTkzETMyETMwMUEBIwEzAQEnMwEDFSE1AsT+HsUCK38Bkf4dA38CLd/8zgUv+tEFsPpQBS+B+lACG56eAAACAKkAAASIBbAAGQAwAClAFBkpJgInJwEmJg4MDwJyHBsbDghyACsyETMrMhE5LzMzETMSOTkwMUEhJyEyNjY1NCYmIyERIxEhMh4CFRQGBgcDITchMjY2NTQmJiMhNyEXHgIVFAYGArD+jwIBT1N8RT19YP7kwQHdcLB7QFyjbU7+TG0BR1yBRDp8Yv7tAgF4KWmSTXfYAqmbOGlJUGUv+u4FsC1fkmZakVwN/SidQHVQUXZAmzgJZZxeiLthAAABAHj/7ATYBcQAJwAVQAoZFRADciQABQlyACvMMyvMMzAxQTMOAiMiLgI1NTQ+AjMyFhYXIy4CIyIOAhUVFB4CMzI2NgQYwA+A6q+A0ZZRUZnYh6Xkfw/ADkyMcWGTYzItXI5he5JLAc+K2n9gsfmZkZn5smB825Bmk1BKiL50k2u8jlFOkgAAAgCpAAAExwWwABoAHgAbQA0CAQEdDg8PHgJyHQhyACsrMhEzETMRMzAxYSE3ITI2NjU1NC4CIyE1ITIeAhUVFA4CAREjEQIz/tACAS6c0Gk8dKds/rgBSI/sq1xcrfP+n8Gdg+2fWX3Dh0aeX7P9nlee/bJfBbD6UAWwAAQAqQAABEYFsAADAAcACwAPAB1ADgsKCgYPDgcCcgMCBghyACsyMisyMhE5LzMwMWUVITUTESMRARUhNQEVITUERvz9J8EDN/1jAvn9B52dnQUT+lAFsP2OnZ0Ccp6eAAMAqQAABC8FsAADAAcACwAbQA0HBgYCCgsLAwJyAghyACsrMhEzETkvMzAxQREjEQEVITUBFSE1AWrBAyP9dALv/REFsPpQBbD9cZ6eAo+engABAHr/7ATdBcQAKwAbQA0rKioFGRUQA3IkBQlyACsyK8wzEjkvMzAxQREOAiMiJiYCNTU0EjY2MzIWFhcjLgIjIg4CFRUUHgIzMjY2NxEhNQTdG3bPo4Xfo1lNltqNp+F/EsENTY5wZZRgLztumV1ngEgT/q8C1f3rKGNJXbMBAaNxowEAs11zyoFPgk9KisR7c37Gi0gjMRYBRpwAAAMAqQAABQgFsAADAAcACwAbQA0JBggDAgIGBwJyBghyACsrETkvMzIRMzAxQRUhNRMRIxEhESMRBGD87B7BBF/AAz6dnQJy+lAFsPpQBbAAAQC3AAABeAWwAAMADLUAAnIBCHIAKyswMUERIxEBeMEFsPpQBbAAAAEANf/sA8wFsAATABNACRAMDAcJcgICcgArKzIvMjAxQREzERQGBiMiJiY1MxQWFjMyNjYDDMB2z4aG0HbBRHlOTHlGAakEB/v5kMZnXLyPXHY4QYEAAwCpAAAFBQWwAAMACQANABxAEAYHCwUMCAYCBAMCcgoCCHIAKzIrMhIXOTAxQREjESEBAScBARMBNwEBasEEMP2j/qwgAQAB6S795XMCjgWw+lAFsP1Z/p/OARoCIPpQAsaZ/KEAAgCpAAAEHAWwAAMABwAVQAoDAgIGBwJyBghyACsrETMRMzAxZRUhNRMRIxEEHP0oJsGdnZ0FE/pQBbAAAwCpAAAGUgWwAAYACwAQABtADQIHDgULCHIMBAAHAnIAKzIyMisyMhE5MDFTMwEBMwEjATMTESMBMxEjEea7Ad0B3Lz9sJL9daUbwAUEpcAFsPtdBKP6UAWw/Ij9yAWw+lACOAAAAQCpAAAFCQWwAAkAF0ALAwgFCQcCcgIFCHIAKzIrMhI5OTAxQREjAREjETMBEQUJwv0jwcEC4AWw+lAEY/udBbD7mgRmAAIAd//sBQoFxAAVACsAE0AJJwYcEQNyBglyACsrMhEzMDFBFRQCBgYjIiYmAjU1NBI2NjMyFhYSAzU0LgIjIg4CFRUUHgIzMj4CBQpSmteFgdedVlWc14GF15tTvzVmk11akWc4OGmRWl6SZTQDBlyk/vy2YGC2AQSkXKQBA7dgYLf+/f8AXoLIiEZGiMiCXoPJiUZGickAAQCpAAAEwQWwABcAF0ALAgEBDgwPAnIOCHIAKysyETkvMzAxQSE1ITI2NjU0JiYjIREjESEyFhYVFAYGAsL+ewGFcYxBQYxx/qjBAhml5HZ25AI7nUiAUkuEUfruBbByyYGMxmcAAwBu/woFBgXEAAMAGQAvABlADCAVA3IAKysDCglyAgAvKzIyETMrMjAxZQEHAQEVFAIGBiMiJiYCNTU0EjY2MzIWFhIDNTQuAiMiDgIVFRQeAjMyPgIDlAFygv6UAelSmteFgdedVlWc14GF2JpTvzVmkl5ZkWg4OGmSWV6SZTSn/tt4ASEC21yk/vy2YGC2AQSkXKQBA7dgYLf+/f8AXoLIiEZGiMiCXoPJiUZGickAAAIAqQAABMoFsAAYAB0AI0ASGxoJAwwMCwsAHBkYCHIWAAJyACsyKzIyEjkvMxIXOTAxUyEyFhYVFAYGBwchJyEyNjY1NCYmIyERIyEBNwEVqQHipON3UZdpNv47AgFWaIpGQo1v/t/BA1P+nskBZwWwZMOOZKVzHBWdSXxLVH5F+u4ClAH9dwwAAAEAUf/sBHMFxAA5AB9ADwomDzYxMSsJchgUFA8DcgArMi8yKzIvMhE5OTAxQTQuAicuAzU0PgIzMhYWFSM0JiYjIgYGFRQeAhceAxUUDgIjIi4CNTMUHgIzMjY2A7EfTYdnbK58QkaDtnCk5XjARo5tZ4ZBJ1OBWny0dTlIhrtzZcOfX8A6ZYFGZYxJAXAzT0A6HiBPZoRVVZBrPH3JclJ/ST5qRC5LQDYZI1Zrh1VZkGY3OHClbUtrRiE4aAACADIAAASXBbAAAwAHABVACgADAwYHAnIBCHIAKysyMhEzMDFBESMRIRUhNQLDvgKS+5sFsPpQBbCengABAIz/7ASqBbAAFQATQAkBEQYLAnIGCXIAKysRMzIwMUEzERQGBiMiJiY1ETMRFBYWMzI2NjUD6sCS8Y2U74u/VJdkZZdUBbD8J6TabW3apAPZ/CdylEhIlHIAAAIAHQAABP0FsAAEAAkAF0ALAAYIAQkCcgMICHIAKzIrMhI5OTAxZQEzASMBARcjAQJ/Aa3R/eWV/qEBqTWV/ebdBNP6UAWw+y3dBbAAAAQAPQAABu0FsAAFAAoADwAVABtADRAMAQoCchMSDgQJCHIAKzIyMjIrMjIyMDFBATMDASMDExMjAQETMwEjAQETIwEDAigBIYxR/smLxeZFiv6fBQ7hwf6giv7nARlmi/7UUgG4A/j+dfvbBbD8HP40BbD8HQPj+lAFsPwI/kgEJQGLAAEAOgAABM4FsAALABpADgcECgEECQMLAnIGCQhyACsyKzISFzkwMUEBATMBASMBASMBAQEmAV4BXuH+NAHX4/6Z/pnjAdf+NAWw/dICLv0v/SECOf3HAt8C0QAAAQAPAAAEvAWwAAgAF0AMBAcBAwYDCAJyBghyACsrMhIXOTAxUwEBMwERIxEB7AF6AXvb/grB/goFsP0lAtv8cP3gAiADkAAAAwBXAAAEegWwAAMACQANAB9ADwQMDAkNAnIHAwMCAgYIcgArMhEzETMrMjIRMzAxZRUhNQEBIzUBMyMVITUEevwmA7r8dHcDi3hS/FydnZ0Eh/rckAUgnp4AAQCT/sgCCwaAAAcADrQDBgIHBgAvLzMRMzAxQRUjETMVIRECC7+//ogGgJj5eJgHuAABACn/gwM5BbAAAwAJsgECAAAvPzAxRQEzAQKJ/aCwAmB9Bi350wAAAQAK/sgBhAaAAAcADrQFBAABBAAvLzMRMzAxUzUhESE1MxEKAXr+hsAF6Jj4SJgGiAACAEAC2QMVBbAABAAJABZACQgHBwYABQIDAgA/zTI5OTMRMzAxQQMjATMTAyczAQG3y6wBK3COyiVxASoE2v3/Atf9KQIB1v0pAAEABP9oA5kAAAADAAixAgMALzMwMWEVITUDmfxrmJgAAQA5BNoB2gYAAAMACrIDgAIALxrNMDFBEyMBARnBn/7+BgD+2gEmAAIAbf/sA+oETgAbADoAKUAVKyweJx46Og8nMQtyGBkKcgkFDwdyACsyMisyKzISOS8zERI5OTAxZRE0JiYjIgYGFSM0PgIzMhYWFREUFhcVIyYmExcjIg4CFRQWFjMyNjY3Fw4DIyImJjU0PgIzAwszZktGaTu5PHGfYna1ZxMTwQ4QIAK7T3xULC5dRFWCTQNPBz5njVhupVtEgLRvuQItQF80ME4tOnJdN1Chef4INnosECBrAgWCGTJLMjNUMUhoMVkqZl09VpFaV4VZLgADAIz/7AQhBgAABAAaAC8AGUAOIRYHcisLC3IECnIAAHIAKysrMisyMDFTMxEHIwEVFA4CIyIuAic1PgMzMh4CBzU0LgIjIg4CBxUeAjMyPgKMuhCqA5U4bJxlZ5tqPwwMP2qaZmaeazi6HkJsT0ZnSC0LEEl7W0trQyAGAPrS0gImFXbJlFJHhr53XHi+h0dPksuRFVGPbT8wUWc38UaBUj1sjgAAAQBd/+wD7QROACcAGUAMHRkZFAdyBAQACQtyACsyMi8rMi8yMDFlMjY2NzMOAiMiLgI1NTQ+AjMyFhYXIy4CIyIOAhUVFB4CAj5CcEgFsAV3wHN6tXc7O3e1en++bQWwBUFvSlVzQx0cQ3OENl89YKVlVpbDbSptw5ZWZ7FwQ2xBQ3GJRypHinBDAAADAF//7APxBgAABAAaAC8AGUANIQQEFgtyKwsHcgEAcgArKzIrMi8yMDFlETMRIwE1ND4CMzIeAhcVDgMjIi4CNxUUHgIzMjY2NzUuAyMiDgIDN7qq/Rg9cZ1hZplrPgwLP2uaZ1+dcT26IUZsS1x3SBQMLUdnRkxtRiHSBS76AAIRFXzLkk9Hh754XHe+hkdSlMmLFVGObD1OgEvxN2dRMD9tjwAAAQBd/+wD8wROACsAH0AQZxMBBhMSEgAZCwdyJAALcgArMisyETkvM19dMDFFIi4CNTU0PgIzMh4CFRUhNSE1LgIjIg4CFRUUHgIzMjY3Fw4CAk5xt4NGToaqW3SpbDT82AJvBDNuXz9qTCorU3dMYogzcCNsnRRNjMByKoTPkEpQj8FyU5cOSIhYNWiWYipNh2Y6UENZNWA8AAIAPQAAAssGFQARABUAFUALFBUGcg0GAXIBCnIAKysyKzIwMWEjETQ2NjMyFhcHJiYjIgYGFRcVITUBoblVoG4gQR8KFTUaO1Us5v22BKx1oVMICJcFBC9aQnKOjgADAGH+VQPyBE4AEwApAD4AG0APMCULcjoaB3IOBg9yAAZyACsrMisyKzIwMUEzERQGBiMiJiYnNxYWMzI2NjURATU0PgIzMh4CFxUOAyMiLgI3FRQeAjMyNjY3NS4DIyIOAgNKqHTPhziXkTFhRJVJWIBH/Sg7b55jZplrPgwLP2uaZ2GdcDu5IUVsS1x4RxQLLUdoRkxtRSEEOvvdj8ppI1NGblJAQoFeAz7+xRV8y5JPR4e+eFx3voZHUpTJixVRjmw9ToBL8TdnUTA/bY8AAgCNAAAD4AYAAAMAGgAXQAwRAhYKB3IDAHICCnIAKysrMhEzMDFBESMREyc+AzMyHgIVESMRNCYmIyIOAgFGuY1NAUB0oWJQgFswujJgRkVxUS0GAPoABgD8RgNvvYxNK16Va/07AsdVZy86ZoMAAAIAjgAAAWkFxAADAA8AELcHDQMGcgIKcgArK84yMDFBESMRAzQ2MzIWFRQGIyImAVa6Djc2NTk5NTY3BDr7xgQ6AR8tPj4tKz09AAAC/77+SwFaBcQAEQAdABNACQ0GD3IVGwAGcgArzjIrMjAxUzMRFAYGIyImJzcWFjMyNjY1AzQ2MzIWFRQGIyImkro/fV8ZQxcBEzASKTgdEzg1Njg4NjU4BDr7RWOKRwoHlQQFHkI3BdotPj4tKz09AAADAI0AAAQNBgAAAwAJAA0AHUARBgcLBQwIBgIJBgMAcgoCCnIAKzIrPxIXOTAxQREjEQkCJzcBEwE3AQFHugNP/ij++A+9AVA5/n5gAfwGAPoABgD+Ov4H/u7F4gFk+8YCBKX9VwABAJwAAAFWBgAAAwAMtQMAcgIKcgArKzAxQREjEQFWugYA+gAGAAAAAwCLAAAGeQROAAQAGwAyACFAESkSAi4iIhcLAwZyCwdyAgpyACsrKxEzMxEzETMzMDFBESMRMwMnPgMzMh4CFREjETQmJiMiDgIlBz4DMzIeAhURIxE0JiYjIg4CAUW6sBxWAThupGxMgF40uTloRlJuQh0CvXwBOW2gZ1eHXTC6OWdHPV5AIQNj/J0EOv4MA2+9jE0rXJBm/S8CyFVmLzpmgx0mWaSASy5flGb9OQLJW2UpKkleAAIAjQAAA+AETgAEABsAGUANEgIXCwMGcgsHcgIKcgArKysRMxEzMDFBESMRMwMnPgMzMh4CFREjETQmJiMiDgIBRrmvIk0BQHShYlCAWzC6MmBGRXFRLQNT/K0EOv4MA2+9jE0rXpVr/TsCx1VnLzpmgwAAAgBc/+wENQROABUAKwAQtxwRC3InBgdyACsyKzIwMVM1ND4CMzIeAhUVFA4CIyIuAjcVFB4CMzI+AjU1NC4CIyIOAlxEgLZxcreBRESBtXJytoFEuSZNdE1Mc0wnJ01zTUxzTSYCERd1yZVTU5XJdRd1yJVTU5XIjBdRj24/P26PURdQj29AQG+PAAADAIz+YAQfBE4ABAAaAC8AGUAOIRYHcisLC3IDBnICDnIAKysrMisyMDFBESMRMwEVFA4CIyIuAic1PgMzMh4CBzU0LgIjIg4CBxEeAjMyPgIBRrqqAuk4a5xlZ55uQQwMQm2cZmaebDe6IkduTEZnSC0LFEh4W0ttRyIDavr2Bdr97BV2yZRSRIK2cnB4vodHT5LLkRVRj20/MFFnN/79RntLP26PAAADAF/+YAPwBE4ABAAaAC8AGUAOIRYLcisLB3IEDnIDBnIAKysrMisyMDFBETczEQE1ND4CMzIeAhcVDgMjIi4CNxUUHgIzMjY2NzUuAyMiDgIDNhCq/G86cJ9mZpttQAwLQG2dZ2Sfbzu6IkdtS1x7ShQLL0ppRkxuRyL+YAUK0PomA7EVfMuST0eHvnhcd76GR1KUyYsVUY9uP1CDS/E3aFMxQG+QAAACAI0AAAKYBE4ABAAWABlADQYJCQUUB3IDBnICCnIAKysrMjIRMzAxQREjETMlByYmIyIOAgcHND4CMzIWAUa5tAFXARcpGkBiRCcGNCdSf1gUNAOQ/HAEOgasBQMoSGM7HmKshUsJAAEAX//sA7wETgA1ABdACxsADjIpC3IXDgdyACsyKzIROTkwMUE0JiYnLgM1ND4CMzIWFhUjNCYmIyIGBhUUHgIXHgIVFA4CIyImJjUzHgIzMjY2AwMja2takWU2OWmUW4K4Yrk1ZUlNXysVNmJMhaxUO2+ZX4/GZroEUHQ5TGc2AR8oRTkVEzRKZENAclgyXJldLVU4L0goHi8nIhEeVHpXR3ZVL2aiWkxZJShGAAIACf/sAlcFQQADABUAE0AJChELcgQCAwZyACsyLysyMDFBFSE1EzMRFBYWMzI2NxcGBiMiJiY1AlL9t8a5IjYfFzMNARZHMkRyQwQ6jo4BB/vLNzgSCQOXBw02f2wAAAIAif/sA90EOgAEABsAFUAKAREGchgDAwsLcgArMi8yKzIwMWURMxEjEzcUDgIjIi4CNREzERQeAjMyNjYDI7qxGk0tZKJ0T4NeM7khOUcmdoo9+gNA+8YB3gJst4ZLLmCabAK6/URJXzcWW5sAAgAhAAADuwQ6AAQACQAXQAsABggBCQZyAwgKcgArMisyEjk5MDFlATMBIwMBFyMBAdYBKL3+e3zbATEVfP54pwOT+8YEOvxoogQ6AAQAKwAABdMEOgAFAAoADwAVACRAFAcLABEDFAYJEAwBCgZyEg4ECQpyACsyMjIrMjIyEhc5MDFlATMHASMDExcjAQETMwEjAwEXIwEnAZ8BFnoY/uV3oe0Rff7GBA7iuP7GfNMBEB92/t0YwAN6sfx3BDr8fLYEOvyDA337xgQ6/JXPA4uvAAABACoAAAPLBDoACwAaQA4HBAoBBAkDCwZyBgkKcgArMisyEhc5MDFBExMzAQEjAwMjAQEBCu3w2f6eAW3W+vrXAWz+nwQ6/nYBiv3q/dwBlv5qAiQCFgAAAgAW/ksDsAQ6ABMAGAAZQA0XFhUDCAIYBnIPCA9yACsyKzISFzkwMWUBMwEOAyMiJicnFhYzMjY2NwMBFwcBAb0BLcb+Tg8xTGtKFkQOAQgjBz9YPRaQARkwhf5ycAPK+x8oXVQ1DASWAQMhTUMEnPy4w0QETwAAAwBZAAADswQ6AAMACQANABxADQQMDAkNBnIHAwMGAhIAPzMzETMrMjIRMzAxZRUhNQEBIzUBMyMVITUDs/ztAvb9NHECx3ZS/R2YmJgDH/xJiAOymZkAAAIAQP6SAp8GPQARACUAGUAKHQkKChwcEhMBAAAvMi8zOS8zEjk5MDFBFwYGFRUUBgYjNTI2NTU0NjYTBy4CNTU0JiYjNTIWFhUVFBYWAngnd1pRr45xY0GbryeIm0EsXUuOr1EnWwY9ciW/e89ko2B6gG3PabeL+O5zJ4q3ac5Jajt6YKNlzlKMZwAAAQCw/vIBRQWwAAMACbIAAgEALz8wMUERIxEBRZUFsPlCBr4AAgAU/pICcwY9ABMAJgAbQAseCwoKHx8BFRQAAQAvMy8zEjkvMxI5OTAxUzceAhUVFBYWMxUiJiY1NTQmJgMnPgI1NTQ2NjMVIgYVFRQGBhQniZtALF1LjbBRJlspJ09bJ1GwjXBkQJsFy3Imi7dpz0hrOnFbn2TPUo1n+OBzGWeMUs5lnltwgW3OabeKAAEAgwGTBO8DIwAfABtACwwAABYGgBwGEBAGAC8zLxEzGhDNMi8yMDFBNxQOAiMiJicmJiMiBgYVBzQ+AjMyFhcWFjMyNjYEV5gvV3dHV4VOM1YyM0gnoS9Wd0dYiUk3UzE0TSsDCQFNiGc7RkQvNDFaPwJOhmQ3SkEyMTZgAAIAi/6XAWYETQADAA8ADLMBBw0AAC8v3c4wMVMTMxMTFAYjIiY1NDYzMhadDqcOBjc2NTk5NTY3/pcEFfvrBU0sPj4sLD09AAMAaf8LA/oFJgADAAcALwAlQBICASUlIQMcB3IHBAgIDAYRDXIAK83MMxI5OSvNzDMSOTkwMUERIxETESMRNzI2NjczDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAgKeurq6Z0JwSAWwBXi/c3q2dzs7eLV6f75tBbAFQW9KVXNDHRxDcwUm/uABIPsE/uEBH1o2Xz1gpWVWlsNtKm3DllZnsXBDbEFDcYlHKkeKcEMAAAMAWwAABGgFxAADAAcAIgAhQBAGBQUBHxYFcgwNDQICAQxyACsyETMRMysyETkvMzAxYSE1IQEhNSEBExYGByc+AjUDNDY2MzIWFhUjNCYmIyIGBgRo+/cECf6T/WACoP64FgE4OK4jKREWdMl/g7hiwENsPkJrP50B0p0BA/2DXqMpNQlTbCwCforDaGKvdFRmLkF9AAYAaf/lBVsE8QATACcAKwAvADMANwAOtQ8ZBSMNcgArMi8zMDFBFB4CMzI+AjU0LgIjIg4CBzQ+AjMyHgIVFA4CIyIuAgEHJzcBByc3ASc3FwEnNxcBOEJ0mVhYmXRBQXSZWFiZdEKsXaPYe3vYpFxcpNh7e9ijXQTPyoTK/N/Kg8oDpMqEyvvYyoPKAmBepn1HR32mXl+kfUZGfaRfheSqX1+q5IWF5KtgYKvkAo3Oic77w86Izf6qzojNAyzOiM4ABQAPAAAEJAWwAAMABwAMABEAFQAtQBYLEBAGBxIVFQgOAwMCAhEUDHIJEQRyACsyKxI5LzMSOTkyETPOMjMRMzAxQRUhNQEVITUlATMBIwEBByMBAREjEQO7/L0DQ/y9AWgBb9X+T3v+8AFxHXr+TQJnwALhfX3+3Xx83AMW/KwDVPzjNwNU/Vb8+gMGAAIAlP7yAU0FsAADAAcADbQBAgYHAgA/3d7NMDFBIxEzEREjEQFNubm5/vIDGAOm/QoC9gACAFv+EQR5BcUALwBhAB5AE1M/AAEFK101MTAPIQxPRB0UEXIAKzIvMxc5MDFlNTI2NjU0LgInLgM1ND4CMzIWFhUjNCYmIyIGBhUUHgIXHgMVFA4CARUiBgYVFB4CFx4DFRQOAiMiLgI1NxQeAjMyNjY1NC4CJy4DNTQ+AgK7U3Q+I1KKZm2rdz5FgLRwmdx2uUeIY2mGQR9MiWlwrng/P3Wl/u1TbDQfTotrb6x2PkWAs29gupdZuTxjdztgh0ciUIhlba54QDxwnmx2NFw6L0c7Nx8eRV+FXVOHYDRkwItNf0s6YDoySDgzHR9HX4ZdTHhTLAL+eTRaOjJJOjQeH0ZdhF1XiF4xLGSmeQJPbUAdOGA8L0U5Nh4eR2CHXUp3VC4AAgBlBPEC7wXGAAsAFwAOtAMJCQ8VAC8zMy8zMDFTNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiZlODU2ODg2NTgBrzc2NTk5NTY3BVstPj4tKz09KS0+Pi0rPT0AAwBc/+sF5wXEAB8AMwBHAB9ADh0EBCUlQxQNDS8vOQNyACsyETMRMy8zETMRMzAxQTMUBiMiJiY1NTQ2NjMyFhUjNCYjIgYGFRUUFhYzMjYlFB4CMzI+AjU0LgIjIg4CBzQSNiQzMgQWEhUUAgYEIyIkJgIDzpKzmWqbVVWbapm0kl9cQlouLlpCXF79AVyk2Ht716NcXKPXe3vYpFxzbsQBAZOTAQHDbm7D/v+Tk/7/xG4CVp2dYq5zc3OuYpydY1ZCdUt0THVCVueF5qxgYKzmhYbkq19fq+SGnwEQy3Fxy/7wn5/+8M1ycs0BEAAAAgCTArQDEAXFABcAMQAatTEaGg0WKrgBALIIDQMAPzMa3MQSOS8zMDFBETQmJiMiBhUnNDY2MzIWFhURFBYXIyYTFyMiBgYVFBYzMjY2NRcOAiMiJjU0NjYzAlMbNypFT6FNi11WgUgMDqUYKAGVPE8mPUArVzoSDz9jRHiBS5dxA14BVCs8HzU0DURpPD56XP7GMVgsSwFwbyA0ICsyJzgZcCBELXtnSmc2//8AZQCWA2UDsgQmAZL5/QAHAZIBRP/9AAIAfwF4A74DIQADAAcAErYGBwMGAgIDAC8zETMSOS8wMUEVITUFESMRA778wQM/uQMhoqJL/qIBXgAEAFv/6wXmBcQAHgAvAEMAVwA1QBsfGxggBAICAQEPKQ0NNTVTDA8PSVMTcj9JA3IAKzIrEjkvMxEzETMvMxI5fS8zEhc5MDFBIyczPgI1NCYmIyMRIxEhMhYWFRQGBgciBiMOAiM3MhYVFRQWFxUjJiY1NTQmJRQeAjMyPgI1NC4CIyIOAgc0EjYkMzIEFhIVFAIGBCMiJCYCAzvaAssqSS0iT0SIjQEVY5BOMmBFAwcDEQkJHhSbcQgJkQoDQ/1NXKTYe3vXo1xco9d7e9ikXHNuxAEBk5MBAcNubsP+/5OT/v/EbgKPgAEcNScyOhr9LwNQOHFWNlY+Ew0KCQJag2Q2JUMXEBpgFjRJRUqF5qxgYKzmhYbkq19fq+SGnwEQy3Fxy/7wn5/+8M1ycs0BEAABAI8FFwMuBaUAAwAIsQMCAC8zMDFBFSE1Ay79YQWljo4AAgCDA8ACfQXFAA8AGwAPtRMMwBkEAwA/MxrMMjAxUzQ2NjMyFhYVFAYGIyImJjcUFjMyNjU0JiMiBoNGdEVFckREckVFdEZ8TTY2SUk2Nk0EwUd2R0d2R0d1RUV1RzdKSjc4TEwAAwBhAAED9QTzAAMABwALABK3CwIDAwQKEnIAKy85LzMyMDFBFSE1AREjEQEVITUD9fxsAimnAej8vQNXmJgBnPwuA9L7pZeXAAABAEICmwKrBbsAHAATsRwCuAEAswsTA3IAKzIazDIwMUEVITUBPgI1NCYjIgYVIzQ2NjMyFhYVFAYGBwcCq/2qASAtNBdAO0tHnkiGXlqARC9WO68DG4BsAQ8qQjUWMD5MOUh2RzppSTVcXDWSAAIAPwKQApsFuwAZADMALEAMHBgAABoaECwpKSQQuAEAtQsLCBADcgArMjIvGhDMMi8yETkvMxI5OTAxQTMyNjY1NCYjIgYVIzQ2NjMyFhYVFAYGIyMVNTMyFhYVFAYGIyImJjUzFBYzMjY1NCYmIwEKVDFAIUBFOUudTIJQV4RKQXtYb29kgD5Qi1dLiVadUEJGSSdHMQRmHDEgLDwyK0RjNjNkSTVZNSVOMFpASWg2MWhRLT0+MSozFwAAAQB7BNoCHAYAAAMACrIBgAAALxrNMDFTEzMBe8Lf/vQE2gEm/toAAAMAm/5gA+4EOgAEABoAHgAZQAwdBQAWCxNyAxJyHAAALzIrKzIROS8wMUEzESMnNzcUDgIjIiYmJwMzFB4CMzI+AgEzESMDNbmnEiFFKVaGXkx3VRwldCI9UC5Zc0Aa/UW4uAQ6+8b6/QJywI5OJ1VEASFngkYaN2SIApT6JgAAAQBEAAADQQWwAAwADrYDCwJyABJyACsrzTAxYSMRIyImJjU0NjYzIQNBulef3HFx3J8BEQIIedSHhtR6AAABAJQCbAF5A0kACwAIsQMJAC8zMDFTNDYzMhYVFAYjIiaUOjg4Ozs4ODoC2S9BQS8uPz8AAQB0/k0BqgAAABMAEbYLCoATAgASAD8yMhrMMjAxczMHFhYVFA4CIycyNjY1NCYmJ5iFDDpfJ0xxSwcuSy0iRzg1CkxXL003HmsULCMhJhMEAAEAewKbAe8FsAAGAAqzBgJyAQAvKzAxQREjEQc1JQHvnNgBYgWw/OsCWTmBdAACAHsCswMnBcUAEQAjABC2Fw4gBQNyDgAvKzIRMzAxUzU0NjYzMhYWFRUUBgYjIiYmNxUUFhYzMjY2NTU0JiYjIgYGe1SZaWqZU1OYaWqaVKMnUT08TycoTz08UCcEE1Fnn1tbn2dRZ59aWp+4UT1gODhgPVE8YDg4YAD//wBnAJkDeQO1BCYBkw0AAAcBkwFqAAD//wBVAAAFkgWtBCcB1v/aApgAJwGUARgACAAHAjAC1gAA//8AUAAABckFrQQnAZQA7AAIACcB1v/VApgABwHVAx4AAP//AHAAAAXuBbsEJwGUAZcACAAnAjADMgAAAAcCLwAxApsAAgBE/n4DeQROACEALQAYQAoAACUlKxAREQ0WAC8zMy8/My8zLzAxQTMOAgcOAhUUFhYzMjY2NTMOAiMiJiY1NDY2Nz4CExQGIyImNTQ2MzIWAZO6ASFJPipMMDRkSDtmQbkBbbl0grdhSXA8JCcPwjg1Njg4NjU4Aqhgd2RDLVRkRUlkMyxbRXGlWFqqeFubhTojTVgBbiw+PiwsPT0AAAb/8QAAB1gFsAAEAAgADAAQABQAGAAxQBgAFxcIBxQTBxMHEwINAxgCcgwLCw4CCHIAKzIyETMrMjIROTkvLxEzETMyETMwMUEBIwEzExUhNQEVITUDEyMDARUhNQEVITUDyv0K4wNxd4L9GQXk/SMaPbo9AyL9igLH/SQFG/rlBbD8YK+v/oiYmAUY+lAFsP2SmJgCbpiYAAACAFkAzgPeBGQAAwAHAAyzBAYCAAAvLzMyMDF3JwEXAwE3AdB3Awt3dPz1dwMLznsDG3z85gMafPzlAAADAHf/owUdBewAAwAbADMAF0ALAQAvCiMWA3IKCXIAKysyETMyMzAxQQEjARMVFAIGBiMiLgM1NTQSNjYzMh4DBzU0LgMjIg4CFRUUHgMzMj4CBR38Fo8D7XlSmteFZ7SRaDdVnNeBarWQZTa/IkJgfEtakWc4JEVhekhekmU0Bez5twZJ/RpcpP78tmA+d6vbg1ykAQO3YD53q9vfXmipglgtRojIgl5pqoNYLUaJyQAAAgCnAAAEXQWwAAMAGQAdQA4PDg4DGQQEAwACcgMIcgArKxE5LzMROS8zMDFTMxEjEyEyFhYVFAYGIyE1ITI2NjU0JiYjIae5uV0Bcp7ZcHDZnv7BAT9shT09hWz+6AWw+lAEi27Ae3rAbpdPfERGflAAAQCM/+wEagYSADkAGUANIxs2CAIKcggBchsLcgArKysRMxEzMDFBESMRND4CMzIWFhUUDgIVFB4DFRQGBiMiJiYnNxYWMzI2NjU0LgM1ND4CNTQmJiMiBgYBRLg5aJBYbaliJzInRmhpRmOucDZ4YxoqI4VGTmEsRmhpRio2KjJWN0ViNARY+6gEWG6lbzhIlXRQa1FOMzdXUFpyTXKWSRUhEpsWNjBQMTlXUVp2UTxcUVk5Q1kuPoEAAwBP/+sGfQRPABQAMgBeADdAHFczMzIXRkUUJQADKRdFF0UPHykLckw+PgUPB3IAKzIyETMrMhI5OS8vEhc5ETMRMzIRMzAxZRE0JiYjIgYGFSc0PgIzMhYWFREDFSEiBgYVFBYWMzI+AjcXDgIjIiYmNTQ+AjMBIi4CNTU0PgIXMh4CFRUhNSE1NCYmIyIOAhUVFB4CMzI2NxcOAgLtMWBFSm48uD5xnWB2sWOL/vtXdjwtW0Y2cV87AWAbdbd/cp9SOXGobgLge7yAQkV9qGNspXA5/NwCajJwXkVqSSYmUH1Xd5IyQRZhmrcCGUhnNzRWNBJGdlgwVqqA/gwBoow3WTQwTS0pQUgfkDFkQ1CTYk97VS39b1CRxnYsd8WQTwFDf7Rwdo4fTH5NPGqMUCxRjWs8SSKIETsvAAIAfv/sBC4GLQA0ADgAGUALNiAWFgEqDAtyOAEALzMrMhI5LzMzMDFTNxYEFhIVFRQOAiMiLgI1ND4CMzIWFhUnNC4CIyIOAhUUHgIzMj4CNTU0AiYmJQEnAf85qQEWym1Ffqtmaa9/RUN5o2FxtWpFJEdsSElyTiknS21HQWZJJmOv4wJd/edJAhkFjaAmpPP+xr1ie8yUUEuGsWZ0u4dIa6dbASFKQSgyXYRTPndhOj1tk1ZksAEIvnsd/pJkAW0AAwBHAKwELQS6AAMADwAbABO3GRMCBw0DAhIAP93GMhDGMjAxQRUhNQE0NjMyFhUUBiMiJhE0NjMyFhUUBiMiJgQt/BoBhzo4ODs7ODg6Ojg4Ozs4ODoDELi4ATowQEAwLj8//P4vQUEvLkBAAAADAFz/eQQ0BLkAAwAZAC8AGUAMIAEBFQtyKwAACgdyACsyLzIrMi8yMDFBASMBATU0PgIzMh4CFRUUDgIjIi4CNxUUHgIzMj4CNTU0LgIjIg4CA9f9aXsCl/0ARIC2cXK3gEREgLVycraBRLkmTXRNTHNMJydNc01Mc00mBLn6wAVA/VgXdcmVU1OVyXUXdciVU1OVyIwXUY9uPz9uj1EXUI9vQEBvjwADAJX+YAQoBgAAAwAZAC8AG0APKwogFQdyCgtyAwByAg5yACsrKysyETMwMUERIxEBFRQOAiMiLgInNT4DMzIeAgc1NC4CIyIOAgcRHgMzMj4CAU+6A5M4a5xlZ55uQQwMQm2cZmaebDe6IkduTEZnSC0LDy9HZUVLbUciBgD4YAeg/CYVdsmUUkSCtnJweL6HR0+Sy5EVUY9tPzBRZzf+/TVgSyw/bo8AAAQAX//sBK0GAAAEABoALwAzAB1ADyEEBBYLcjMyKwsHcgEAcgArKzLOMisyLzIwMWURMxEjATU0PgIzMh4CFxUOAyMiLgI3FRQeAjMyNjY3NS4DIyIOAgEVITUDN7qq/Rg9cZ1hZplrPgwLP2uaZ1+dcT26IUZsS1x3SBQMLUdnRkxtRiEDlP2D0gUu+gACERV8y5JPR4e+eFx3voZHUpTJixVRjmw9ToBL8TdnUTA/bY8C8piYAAAEAB4AAAWJBbAAAwAHAAsADwAfQA8DAoAHBgYKDAsCcg0KCHIAKzIrMhE5LzMazDIwMUEVITUBFSE1ExEjESERIxEFifqVBDz87B7ABF/BBI+Pj/6vnZ0CcvpQBbD6UAWwAAEAnAAAAVUEOgADAAy1AwZyAgpyACsrMDFBESMRAVW5BDr7xgQ6AAADAJsAAARABDoAAwAJAA0AH0APDAcHCwYGAgkDBnIKAgpyACsyKzIROS8zMxEzMDFBESMRIQEjJzMBEwE3AQFUuQOB/envHLYBjBr+UXcCIgQ6+8YEOv2UogHK+8YB6ob9kAAAAwAjAAAEHAWwAAMABwALABtADQIKAAcGBgoLAnIKCHIAKysRMxEzMhEzMDFBFQU1ARUhNRMRIxECcP2zA/n9JybAA6B9u339uJ2dBRP6UAWwAAIAIwAAAgsGAAADAAcAE0AJAgYABwByBgpyACsrMhEzMDFBFQU1AREjEQIL/hgBSbkDonq7egMZ+gAGAAAAAwCi/ksE8QWwAAMABwAZAB1ADhUOBgcHAwhyCQUEAAJyACsyMjIrMhEzLzMwMVMzESMTNwEHETMRFAYGIyImJzcWFjMyNjY1osHBOocDVIfBT5JmHzYeDhFCDyw9IAWw+lAFPnL6wnIFsPn8cp1SBwqaBgcvVz0AAgCS/ksD8QROAAQAKgAZQA4cFQ9yJgsHcgMGcgIKcgArKysyKzIwMUERIxEzAwc0PgIzMh4CFREUBgYjIiYnNxYWMzI2NjURNC4CIyIOAgFLuaYmKjhqmWBUiF8zTZFlHzUeDhBGDiw9IR89VzlTd0wkA1P8rQQ6/gYCc8GOTjBloG/8/XCcUAcKnQYGKlM9AwBLZz0cOmaGAAUAaf/rBwkFxQAjACcAKwAvADMAM0AaLy4uJjIoMwJyKScmCHIVEhIWGQkEBwcDAAMAPzIyETM/MzMRMysyMisyMhE5LzMwMUEyFhcVJiYjIg4CFREUHgIzMjY3FQYGIyIuAjURND4CARUhNRMRIxEBFSE1ARUhNQKUTZZDQpVPVYlhMzRiiVVOlUFDlE18zZRQUJPMBPH8/SfBAzf9YwL5/QcFxQ0IngwPOXClbf7ObaZxOQ8MngcOV5/bhAEwhNufV/rYnZ0FE/pQBbD9jp2dAnKengADAGH/6wcABE8AKgBAAFYAJ0ATJAAARzwTEhI8UhkLCzEHcjwLcgArKzIRMzIROS8zETMzETMwMUUiLgI1NTQ+AhcyHgIVFSE1ITU0JiYjIg4CFRUUHgIzMjY3FwYGATU0PgIzMh4CFRUUDgIjIi4CNxUUHgIzMj4CNTU0LgIjIg4CBWNwtYBFS4GnW3CmbTb85wJgNnFZPWVKKCZNcktulTJJMbr6a0J9snFztH1BQX2zcnKzfUK6JElwTU1wSSQkSnFNTHBJIxVQkcZ2LHfFkE8BR4GwanqXGkl9TTxqjFAsUY1rPD8tfjBWAiYXdcmVU1OVyXUXdcmVU1OVyYwXUY9vPz9vj1EXUI9vQEBvjwAAAQChAAACgwYVABEADrYNBgFyAQpyACsrMjAxYSMRNDY2MzIWFwcmJiMiBgYVAVq5UpdpJUYlGBEtHTtRKgSsdaFTDAmOBQYyXUIAAAEAXv/sBRIFxAAsABtADQ8ABgkJABoiA3IACXIAKysyETkvMxEzMDFFIi4CNTUhFSEVFB4CMzI+AjU1NC4CIyIGByc+AjMyFhYSFRUUAgYGArmU4phNBD78gytgnXJimGk2NXCwfIKwOy8Yaqdzn/WnVl2l2hRcrvWYfJUiXaJ5RVSVxHBeccSVVDgcjxAwJWe7/v+bXpv+/7tlAAH/4/5LAr0GFQAnAClAFRQCAhUnBnIfIiIeGwFyCw4OCgcPcgArMjIRMysyMhEzKzIyETMwMUEVIxEUBgYjIiYnNxYWMzI2NjURIzUzNTQ2NjMyFhcHJiYjIgYGFRUCYMtNkGUfNB0OD0UOKz0hq6tRmGkkRyQWEzMdO04mBDqO+/twnFAHCpQGBy9YPQQFjnJ1oVMMCZIFBS9bQnIAAwBm/+wFnQY4AAkAIQA5AB1ADgUGBikpAAAcA3I1EAlyACsyKzIvMhE5ETMwMUEzFAYGIzUyNjYTFRQCBgYjIi4DNTU0EjY2MzIeAwc1NC4DIyIOAhUVFB4DMzI+AgT2p1Spf09dKQNSmteFZ7SRaDdVnNeBaraPZjW/IkJgfEtZkWg4JEVhe0dekmU0BjiBtl+HQHr9I1yk/vy2YD53q9uDXKQBA7dgPner299eaKmCWC1GiMiCXmmqg1gtRonJAAADAFz/7AS6BLEACQAfADUAFUAKJhsLcjEAABAHcgArMi8yKzIwMUEzFAYGIzUyNjYBNTQ+AjMyHgIVFRQOAiMiLgI3FRQeAjMyPgI1NTQuAiMiDgIEJZU8jHhLSRf8N0SAtnFyt4BERIC1cnK2gUS5Jk10TUxzTCcnTXNNTHNNJgSxbp9WdDxs/acXdcmVU1OVyXUXdciVU1OVyIwXUY9uPz9uj1EXUI9vQEBvjwACAIz/7AYdBgIACQAfABlADAUKCgAAFQJyGxAJcgArMisyLzIRMzAxQTMUBgYjNTI2NiUzERQGBiMiJiY1ETMRFBYWMzI2NjUFf55Tt5dmcSz+a8CS8Y2U74u/VJdkZZdUBgKNwGKHQ4QP/Cek2m1t2qQD2fwncpRISJRyAAADAIn/7AUQBJEACQAOACUAHUAOBQsLAAAbBnIiDg4VC3IAKzIvMisyLzIRMzAxQTMUBgYjNTI2NgERMxEjEzcUDgIjIi4CNREzERQeAjMyNjYEgo45joFaThL+obqxGk0tZKJ0T4NeM7khOUcmdoo9BJFtlEpyLWD8tQNA+8YB3gJst4ZLLmCabAK6/URJXzcWW5sAAf+0/ksBZgQ6ABEADrYNBg9yAQZyACsrMjAxUzMRFAYGIyImJzcWFjMyNjY1rblNkGUfNB0OD0UOKz0hBDr7bXCcUAcKlAYHL1g9AAEAY//sA+oEUAAqABlADBEUFAAZCwtyJAAHcgArMisyEjkvMzAxQTIeAhUVFA4CJyIuAjU1IRUhFRQWFjMyPgI1NTQuAiMiBgcnNjYCAHC1gEVLgqZbcKZtNgMZ/aA2clg8ZUopJ0xyS22WMkkyuQRQUJHGdix2xpBPAUeBsGp6mBlIfk48ao1QLFCNaz0/LX4wVgABAKoE5QMHBgAACAAUtwcFBQQBA4AIAC8azTI5MhEzMDFBExUjJwcjNRMCD/ialpWY9QYA/u8KqakLARAAAAEAjgTjAvgF/wAIABK2AQaABwQCAAAvMjIyGs05MDFBFzczFQMjAzUBKpeXoP5y+gX/qqoK/u4BEgoA//8AjwUXAy4FpQYGAHAAAAABAIIEzALYBdcADgAQtQEBCYAMBQAvMxrMMi8wMUEzFAYGIyImNTMUFjMyNgJClkiGXIuhlkRSUEQF1055RJV2O1paAAEAjgTvAWkFwgALAAmyAwkQAD8zMDFTNDYzMhYVFAYjIiaONzY1OTk1NjcFWCw+PiwsPT0AAAIAeQS1AicGUQANABkADrQXBIARCwAvMxrMMjAxUzQ2NjMyFhUUBgYjIiY3FBYzMjY1NCYjIgZ5OWE9W3w5YT1bfGNBMzNBQTMzQQWBOl44elY6XTV0WCxHRS4vR0cAAAEAMv5OAZMAOQAVAA60CA+AAQAALzIazDIwMWUXDgIVFBYzMjY3FwYGIyImNTQ2NgE0SitOMiMrITQPDhlNO1FvNXI5OSBFTSwhKBMIeg8dYV42amIAAQB7BNoDPwXoABkAJ0ATAAABAQoSQA8aSBIFgA0NDg4XBQAvMzMvMy8aEM0rMjIvMy8wMUEXFAYGIyIuAiMiBhUnNDY2MzIeAjMyNgLCfTphPTNCNDkqKjl9OWI8K0E6PigqOgXoC0luPB0lHUAvBklvPx0lHUEAAgBfBNADLAX/AAMABwAOtAEFgAAEAC8zGs0yMDFBEzMBIRMzAwF35s/+9P4/qsbaBNABL/7RAS/+0QAAAgB//moB1v+0AAsAFwAOtA8JgBUDAC8zGswyMDFXNDYzMhYVFAYjIiY3FBYzMjY1NCYjIgZ/Z0dFZGRFR2dXMyQiMTEiJDPzSV5eSUlaWkkiMTAjJTIyAAH8pwTa/kcGAAADAAqyA4ACAC8azTAxQRMjAf2GwZ7+/gYA/toBJgAB/W4E2v8PBgAAAwAKsgGAAAAvGs0wMUETMwH9bsLf/vQE2gEm/tr///yKBNr/TgXoBAcApfwPAAAAAf1dBNr+kwZ0ABQAELUUAgCACwwALzMazDIyMDFBIyc+AjU0LgIjNzIeAhUUBgf9+IUBM0AeGi48IgdKcU0nYDoE2pgDDx8aFR0TCGoaMkUqTEUIAAAC/CcE5P8GBe4AAwAHAA60BwOABAAALzIazTIwMUEjATMBIwMz/gGp/s/hAf6W9s8E5AEK/vYBCgAAAf04/qL+E/91AAsACLEDCQAvMzAxRTQ2MzIWFRQGIyIm/Tg3NjU5OTU2N/YtPj4tKz09AAEAuATvAZwGPwADAAqyAIABAC8azTAxUxMzA7g2rnQE7wFQ/rAAAwByBPEDgwaJAAMADwAbABlAChMZGQ0BgAAABw0ALzMzLxrNETMRMzAxQRMzAwU0NjMyFhUUBiMiJiU0NjMyFhUUBiMiJgGxMLxk/jk3NjU5OTU2NwI2ODU2ODg2NTgFgQEI/vgmLT4+LSs9PSktPj4tKz09//8AlAJsAXkDSQYGAHgAAAABALIAAAQwBbAABQAOtgIFAnIECHIAKysyMDFBFSERIxEEMP1CwAWwnvruBbAAAwAgAAAFdAWwAAQACQANABtADQYCBwMCcg0MDAUCEnIAKzIyETMrMhI5MDFBASMBMwEBNzMBJxUhNQMC/eTGAmZ5Aa/+AgZ6AkSY+9YFKPrYBbD6UAUwgPpQnZ2dAAMAZ//sBPoFxAADABsAMwAbQA0vCgMCAgojFgNyCglyACsrMhE5LzMRMzAxQRUhNQUVFAIGBiMiLgM1NTQSNjYzMh4DBzU0LgMjIg4CFRUUHgMzMj4CA8D9/AM+UprXhWe0kWg3VZzXgWq2j2Y1vyJCYHxLWZFoOCRFYXtHXpJlNAMrl5clXKT+/LZgPner24NcpAEDt2A+d6vb315oqYJYLUaIyIJeaaqDWC1GickAAgAyAAAFAwWwAAQACQAXQAsGAAIHAwJyBQIIcgArMisyEjk5MDFBASMBMwEBNzMBAsr+N88CE34Bcv4zCn8CEgUR+u8FsPpQBReZ+lAAAwB4AAAEIgWwAAMABwALABtADQEABQQEAAgJAnIACHIAKysyETkvMxEzMDFzNSEVATUhFQE1IRV4A6r8rQLy/LsDlZ2dAqKdnQJwnp4AAQCyAAAFAQWwAAcAE0AJAgYEBwJyBghyACsrMhEzMDFBESMRIREjEQUBwP0ywQWw+lAFEvruBbAAAAMARgAABEQFsAADAAcAEAAhQBAOBgYHBw8CcgwDAwICCwhyACsyETMRMysyETMRMzAxZRUhNQEVITUBFQEjNQEBNTMERPxNA4P8YAJ//cd0AeH+H3Senp4FEp6e/TYY/TKPAksCR48AAwBOAAAFdAWwABMAJwArACFAEBQVFQEAKQhyHx4eCgsoAnIAK80yMhEzK80yMhEzMDFlIyIuAjU0NiQzMzIeAhUUBgQlMzI2NjU0LgIjIyIGBhUUHgIBESMRAzKjgtSZUpIBAamsf9KZVJD+/P6vpYOqVDBfj1+uf6pVL2CSARXBsE+RyXmi+IxPk8h6oveLn2CvdlmPZjdhr3dYj2Y2BGH6UAWwAAIAWgAABSIFsAAZAB0AGUAMFAcHDRwIch0BDQJyACsyMisROREzMDFBMxEUBgQjIyIuAjURMxEUHgIzMzI2NjUBESMRBGDCnf7urx1/2J5YwDtqklcde7ln/rfBBbD98rf/hUuS1YkCDv3yY5pqNmC5hAIO+lAFsAAAAwByAAAEzAXEAC0AMQA1ACVAEigSEi8pKTQRETMuMhJyBh0DcgArMisyMjIRMzMRMzIRMzAxQTU0LgIjIg4CFRUUHgIXFS4DNTU0PgIzMh4CFRUUDgIHNT4DATUhFSE1IRUECTJghlRThV4yK1BvQ2y1hUpQlMt8fc2UUUmEs2pCbU4q/tkB4/uxAewC1nR1snk9PXmydXSAxo1TDY0Nf8Xwf3KO6alcXKnpjnJ+8MV/Do0OU43G/amdnZ2dAAMAZP/rBHgETgAWACwAQQAaQA0uBjQ7Ox0SC3IoBgdyACsyKzIyETM/MDFTNTQ+AjMyHgMXFQ4DIyIuAjcVFB4CMzI+Ajc1LgMjIg4CATMRFB4CMzI2NxcGBiMiLgI1EWQ4a55mTn1gRCoJCzxmlGNknWw4uiBDa0tJaEcvEAwtSWpJTGtEIAI0nQwXHRAKEQcXHzwgL0o0GwH1FYDUm1UuWX+iYVN4v4hITYy/hxVNhmY5PGeER0JJim9BRHabAdn87S46IQ0EAooWDCNLeVUCKAAAAgCh/oAETgXEABwAOgAeQA41ACYnJxwcMB0DEwkLcgArMj8zOS8zEjk5LzAxQTMyFhYVFAYGIyIuAjU3FBYWMzI2NjU0JiYjIxMyFhYVFAYGIyM1MzI2NjU0JiYjIgYGFREjETQ2NgIFk4vDaHXNhE6ZfktJVpllXIBDO3JTj1mCwGlqwIFZVVhsMjZrUUl2Rbl6ygM4abRyjsdoLFuQYylJeklLg1RGg1QDAmSxc1+dXng7aEM8bERBckj6TwWxb7dtAAMAL/5fA+AEOgADAAgADQAZQA4IDAMECgUBBQ0GcgEOcgArKzISFzkwMWURIxE3ATMBIwMBFyMBAmS5VwEgvv5ve+gBKCl7/m2E/dsCJXcDP/vGBDr8wPoEOgAAAgBh/+wEKAYdACwAQgAZQA0UKD4DBDMeC3ILBAFyACsyKzISFzkwMVM0NjYzMhYXByYmIyIGBhUUHgIXHgIVFRQOAiMiLgI1NTQ2NjcnLgITFRQeAjMyPgI1NTQuAiciDgLdXKl2T35DAS6TUjlULhQyWkePvF1BfbNxc7R9QVyXWAFBXTA+JElxTUxvSSMqTmtCTHJKJQT1W4VIGx2fESohPSkULjAxGDGd14cWccGPUFCPwXEWd8KCFQUaUGj9WRZNiGk8PGmITRZAfGpJDT1qiQACAGT/7APsBE0AHwA/AB9ADwAhPj4DAxY1KwdyDBYLcgArMisyEjkvMxI5OTAxQTMVIyIGBhUUHgIzMjY2NTMUDgIjIi4CNTQ+AgUjIi4CNTQ+AjMyHgIVIzQmJiMiBgYVFB4CMzMCDdzNU3E6I0VjP1F4Q7hOgqFTYqV6QzltngFB3FyWazk9cqBiWZx5RLhDcUZVbjUbOFo/zQJLbCVNPSM/MBw2VzFYgVMoLFR5TERpSCVGKktiN011TyksVHZKME0tL0sqIzsrGAACAG3+gAPEBbAAKAAsABVACRUCLCwpKQACcgArMi8zETMvMDFBMxUBDgIVFB4CFxceAhUUBgYHJz4CNTQmJicnLgM1NDY2NwEhFSEDcFT+oU1rNxImPSqCSnVDO1EkYh8rFyBDNlpXd0ohOHtk/poDHfzjBbB4/lZcoqhmMEYzIgwmFSdPUjVzYx1VIzw5HhcmIA4YFz5WdU9KwN53AdSXAAACAJL+YQPxBE4ABAAcABdADBgLAwZyAgpyCwdyEQAvKysrETMwMUERIxEzAwc0PgIzMh4CFREjETQuAiMiDgIBS7mmE046b59kVIhfM7kfPVc5T3BHIQNT/K0EOv4GAnPBjk4oXp11+6sEUkpkOxo7aIcAAAMAe//sBBIFxAAZACcANgAdQBANKGowIGowMA0AGmoADQtyACsvKxI5LysrMDFBMh4DFRUUDgMjIi4DNTU0PgMXIg4CFRUhNTQuAwMyPgM1NSEVFB4DAkZVjnFPKSlOcI5VVI5xUCoqT3COVEJnRSQCJRcsQ1c0NldCLBb92xcuQ1cFxDFlm9OHuYfUnmgzM2ie1Ie5h9ObZTGXPniucTc3WpRyTSj7VypQdZZaJydalnVQKgAAAQDD//MCTAQ6ABEADrYGDQtyAAZyACsrMjAxUzMRFBYWMzI2NxcGBiMiJiY1w7oiNh8XMw0BFkcyRHJEBDr82jc4EwkDlgcON39sAAIAJv/vBDsF7gAEACYAHkAQABsEAwQCIAUAcg8WFgIKcgArMi8zKzISFzkwMUEBIwEXATIeAhcBHgIzMjY3FwYGIyImJicBAy4CIyIGByc2NgIb/tjNAaWC/rk4UjsoDgGrDhwiGAkVBwYLKxc9V0Ih/s52DyErHggeCQEPPAMn/NkETgwBrBguQCj7qiEnEQEBmAQIHVdXAxgBHyYsEwEBjgUHAAACAGb+dgOqBcQAHgBGABlACx8RDw8hITMFGwNyACsyLzkvMxI5OTAxQQcuAiMiBgYVFB4CMzMVIyIuAjU0PgIzMhYWAzMVIyIGBhUUFhYXFx4CFQ4CByc+AjU0JiYnJy4DNTQ+AgONGiVLTShphj8lTnxXjZFzuoZIRICyby9eVcyRjXyvXFCASW9Scz4BO1Ejax4wHB9DODpjpHdBVJnRBZ2UChAKNVUyMVE6H3QzWnhGUn9YLgoS/cZwRY9uWXpJEhoULlBHNXFiHVUjNjonGiMbDQ4XQmWacGqgbTcAAAMAKf/zBKUEOgADAAcAGQAZQA0OFQtyBgpyCQcCAwZyACsyMjIrKzIwMUEVITUhESMRITMRFBYWMzI2NxcGBiMiJiY1BHH7uAFjugJKuiI2HxczDQEWRzJEckQEOpmZ+8YEOvzaNzgTCQOWBw43f2wAAAEAkv5gBCAETgAvABdADB4pBhELcgYHcgAOcgArKysRMzIwMVMRND4CMzIeAhUVFA4CIyIuAiceAjEeAjMyPgI1NTQuAiMiDgIVA5JGfKFbdK11OjZqm2Ronm5BCwIsLBRHeFtLbEUhHkJqTEZjPh0B/mAD44HDhENVm9SAFXK/jExEgbZzASUkRntLOWWGTRVXm3ZERXCDPfwfAAEAZf6KA+IETgAtAA61GwkFAAdyACvMMy8wMUEyFhYVIzQmJiMiDgIVFRQWFhceAhUOAgcnPgI1NCYmJy4CNTU0PgICPnm+bbA2bVFMbUUhT552T31JATpRI2IfKhYgRDed2HA/ebAETlyvfUNtQENxiUcqWo9oIBUtVVI0cmEdVCM2OCceJhoMI4nQjCptw5ZWAAADAGH/7AR8BDoAGAAuADIAE0AJKgYyBnIfFAtyACsyKzIyMDFTNTQ+AjMeAhceAhUVFA4CIyIuAjcVFB4CMzI+AjU1NC4CIyIOAgEVITVhQX2zcR8yPzNcgkRBfbNycrN+QbkkSXFNTXBIJCRJcU1McUgkA2L9xgIRF3HBkFADJS0OK4u0axZkuJBUU5XIjBdRj24/P26PURdLiGo8PGqIAceZmQAAAgBR/+wD2gQ6AAMAFQAVQAoFChECAwZyEQtyACsrMhEzMjAxQRUhNSEzERQWFjMyNjcXBgYjIiYmNQPa/HcBXLkdMBwcMBEpLlgvTG06BDqWlvzUNjoVEAqDIRM8hGwAAQCQ/+sD9wQ6AB4AE0AJEAcZAAZyGQtyACsrETMyMDFTMxEUHgIzMj4CNSYCJzMeAhUUDgIjIi4CNZC5HjdKK0pvSyYCRjPDHjQgOXayeluTZzcEOv1wUHFGIEt+mU2IAQV7Ppy9cHPTo181bap1AAEAWP4iBUwEOgAvABlADCsFBRkYBnIiDwtyAAAvKzIrMjIRMzAxQRE0NjYzMh4CFRQOAiMiLgI1NDY2NxcOAgcUHgIzMjY2NS4DIyIGFRECbT9xS2OvhkxGmfWvq+6URDpyVGQ7SiMDLmape6nIWQEoS25JICL+IgU1RmU4UJHFdG/Ln1xfpNNzcMCdOYQ0gIpETpl+TH2+YkmKbkEqGvrEAAIAYP4nBUMEOgAeACIAFUAKIQcZC3IgEAAGcgArMjIrMi8wMVMzERQeAjMyPgI1JgInMx4CFRQOAiMiLgI1ATMRI2C5QHOaWoCwajADRzXDHzUhQ5TzsI3kolYCBLm5BDr+GH+xbTJMgJtOhgECej2bu2911KVfSJbqoQHm+e0AAgB6/+sGGgQ6AB4APwAZQAwBFwoKKTYfBnI2C3IAKysRMzMRMzIwMUEzHgIVFA4CIyIuAjURMxEUHgIzMj4CNSYCJTMGAgcUHgMzMj4CNREzERQOAiMiLgM1NDY2BNDCJD4mK12YbFaGXTCCITxRLzxUNBgDUfv2wjxRAw8gM0kwMFE8IYIwXYZWV4NdOhsmPgQ6P5y9cXPSo15Bfrh3ASn+1V2BUSVEd5tYiAEFfHz++4hGgGtRLCVRgV0BK/7Xd7h+QT1uk6xccb2cAAABAHr/6wR6BccAOAAdQA0dHhc2BAQNIxcLci0NAC8zKzIROS8zEMwyMDFBFwYGIyIkJjU1NDY2MzIeAhURFAYGIyIuAjURNxEUFhYzMjY2NRE0LgIjIgYGFRUUFhYzMjYEcggrbTW5/u6WV5ZgTn1YLmzBgmWld0C5QHZSTm47Eyc5JipDJ2G9ijNnAwmVEBSK7pQQbptSMWCLWf1ilMxpQHioaQFNAv6xXoZHQIVmAp44UTUZJVNFEmGmZRAAA//aAAAEbwW9AAMAFgApAB5ADhAJCR8mA3IaGBYDAwISAD8zETMzMysyMhEzMDFBESMRNxM+AjMyFhcHJiYjIgYGBwEnAxMXBwEuAiMiBgcnNjYzMhYWAoTAW+YhRVM0IzsfJQQfEBUmIA/+yYap5iuG/soOIiUVECAFIx87IjJUSgKv/VECr0oCCEpRIQwPmAQFDiMe/VoCAuL98NICAqYeIw4FBJcPDR5RAAMAS//rBhsEOgADACQARQAhQBAmBQMcDy88C3I8DwIDBnIPAC8rMhE5KzIRMxEzMzAxQRUhNSEzHgIVFA4DIyIuAjU1MxUUHgIzMj4DNSYCJTMGAgcUHgMzMj4CNTUzFRQOAiMiLgM1NDY2Bhv6MAQ+wyQ9Jhk0VXZPVoZcMIIhPFAwKDwrGw0EUfxBwzxSAw0bKzwoMFA8IYIwXYZWTndUNRkmPwQ6mJg/nL1xXKyTbj1Bfrh3+ftdgVElLFBsgEaIAQV8fP77iEaAa1EsJVGBXfv5d7h+QT1uk6xccb2cAAADACv/9AWyBbAAGwAfACMAIUARHyMYBQUOIiMeCHIjAnIOCXIAKysrETMSOS8zETMwMUE1PgIzMhYWFRQOAiMnMj4CNTQmJiMiBgYTESMRIRUhNQI9NoSCMqLofT98u3wCVnZHIEqRbD9+eRbAAsv7lgKKpxUiFGvNk2ilcz2XKk5sQV+CRBIhAw76UAWwnp4AAAIAe//sBN0FxAADACwAHUAOAwICCR0ZFANyKQQJCXIAK8wzK8wzEjkvMzAxQRUhNQEzDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAzMyNjYDdv2rAvrCD4HqroHSllFRmdmIpeOAD8EOTIxwYZNjMh06WnlOepJLAy6dnf6hitp/YLH5mZCZ+rJgfNuQZpNQSom+dJJWm4JfNE2SAAADADIAAAg7BbAAEQAVAC4AJ0ATJCEhCS4WFgAKCQhyFBUVIwACcgArMjIRMysyEjkvMxEzETMwMUEzAw4EIyM1Nz4ENwEVITUBITIWFhUUDgIjIREzESEyNjY1NCYmIyEBd8AhByE8YIthNCg4UTkkFQYC7v1wAwgBjaDbckB+t3j94MEBX2uFPj6Fa/5zBbD9N5rxsXM4nQMEK1iMy4gCqp6e/cx0yoFgonlCBbD67VSFSUmDUwAAAwCyAAAITQWwAAMABwAgACNAEQggIAMCAgYVBwJyFhMTBghyACsyETMrMhE5LzMzLzMwMUEVITUTESMRASEyFhYVFA4CIyERMxEhMjY2NTQmJiMhBFv8+R/BBCEBjaDbckB+t3j94MEBX2uFPj6Fa/5zAzmdnQJ3+lAFsP2fa7x8XZxzQAWw+vZKeUVFdkkAAwA+AAAF1AWwABUAGQAdAB1ADhkBGAYRERgcHQJyGAhyACsrMhE5LzMRMzIwMWEjETQmJiMiDgIHNT4DMzIWFhUBESMRIRUhNQXUwEOGZTxxbGkzMmBndkab3Xb8w8EC0fuXAchxfzQKEhkQnw8ZEgpZxaQD6PpQBbCengAAAgCw/pkFAAWwAAcACwAXQAsJBgECcgsDAwAIcgArMhI5KzIvMDFzETMRIREzESURIxGwwgLNwf4/wAWw+u0FE/pQiv4PAfEAAgCjAAAEsQWwAAUAHgAhQBAGHh4EAhMTBQJyFBERBAhyACsyETMrMhEzETkvMzAxQRUhESMREyEyFhYVFA4CIyERMxEhMjY2NTQmJiMhBCH9QsCTAY2g3HJAfrh4/eDBAV9rhT4+hWv+cwWwnvruBbD9r2vAgWCfdT8FsPrtT4BJSXpJAAAGADP+mgXKBbAAAwAHAAsADwATACUAJ0ATCxERIAMDBx4Icg4PDxAUAnIJBQAvMysyMhEzKzIyETMyETMwMWUVITUzESMDIQMjEQMVITUhESMRITMDDgUHIzUzPgM3BSL7sh+/AQWXAr+k/YIDJMD9WsEeBiY4SFJZLVg+GkNDMwmdnZ39/QID/f4CAgUTnp76UAWw/baE37iRaUMOnRxqqfSmAAUAGwAABzYFsAAFAAkADQATABcAJ0ATFhEJAwMAAA8PFAwICHIOCgECcgArMjIrMjIyLzMRMxEzMzMwMUEBMwEhBycBIwEBESMRIQEhJyEBEwE3AQJK/fjiAYMBEh/o/lnwAh0B1L8Dw/32/roeAQgBgxn+WnsCGwKZAxf9iaAP/VgDTgJi+lAFsPzpoAJ3+lACqKb8sgAAAgBQ/+wEawXEAB4APgAjQBEAIAICPj4VNDAqCXIPCxUDcgArMswrzDMSOS8zEjk5MDFBIzUzMjY2NTQmJiMiBgYVIzQ+AjMyHgIVFA4CJTMyHgIVFA4CIyIuAjUzFBYWMzI2NjU0LgIjIwJnraZuiD5EjnBUiFDBToizZHW+iEhGgrb+4617wIRFT5DFdV63lFnBUZBgbplRK1N7UaYCu3s+bkhFc0U/b0hdlWk4NWiaZkuEZDlVMmCNW2aebjgxZ6BwSXpJRXlMQ2NAHwABALIAAAUABbAACQAXQAsFAAYCCAJyBAYIcgArMisyEjk5MDFBATMRIxEBIxEzAXICzcHB/TPAwAFOBGL6UARj+50FsAAAAwAwAAAE9wWwAAMABwAZABlADBIFEQhyAgMDBAgCcgArMjIRMysyMjAxQRUhNSERIxEhMwMOBCMjNTc+BDcEUf1mA0DB/T/AIQchPGCLYTQoOFE5JBUGBbCenvpQBbD9N5rxsXM4nQMEK1iMy4gAAAIATf/rBMsFsAATABgAGkAOFxYAFQQIAhgCcg8ICXIAKzIrMhIXOTAxQQEzAQ4DIyImJzcWFjMyNjY3AwEXBwECbAGB3v39FjZOc1UYQgoGC0APOUIpEfIBlTCi/gUB4wPN+0MzX0osBQOaAgMuRyUEjvx1swwESgAAAwBU/8QF4wXsABUAKQAtABtADB8MDCsWAAArKgNyKwAvKxE5LzMROS8zMDFBMzIeAhUUDgIjIyIuAjU0PgIXIgYGFRQeAjMzMjY2NTQuAiMDESMRAqLxftehWlqh137xftahWVmh1n6Dtl41aJhi84K1XzZnl2IduQUfVZzXgoLYnVVVnNeCgtedVphtxINjoHI+bcWDYqByPgFl+dgGKAAAAgCv/qEFmAWwAAUADQAZQAwMBwJyBQQECQYIcgEALysyMhEzKzIwMWUDIxEjNQURMxEhETMRBZgSrY/8ZcICzcGi/f8BX6KiBbD67QUT+lAAAAIAlwAABMkFsAAVABkAF0ALFwYRERgAAnIYCHIAKysROS8zMjAxUzMRFBYWMzI+AjcVDgMjIiYmNQEzESOXwUKGZDxxbGkzMWFndUea3XYDccHBBbD+OXGANAoSGg+eDxoSClnGpAHH+lAAAAEAsAAABtgFsAALABlADAUJBgICCwACcgsIcgArKxEzETMyMjAxUzMRIREzESERMxEhsMIB9MAB8cH52AWw+u0FE/rtBRP6UAAAAgCw/qEHawWwAAUAEQAdQA4MBQgIBBEIcg8LBgJyAQAvKzIyKzIyETMzMDFlAyMRIzUBMxEhETMRIREzESEHaxKmjfqKwgH0wAHxwfnYmP4JAV+YBRj67QUT+u0FE/pQAAACABEAAAW5BbAAAwAcAB1ADhESDwQcHA8AAQJyDwhyACsrMhE5LzMRMzIwMVM1IRUTITIWFhUUDgIjIREzESEyNjY1NCYmIyERAclkAYyg3HNBfrh4/eHAAV9rhT4+hWv+dAUYmJj+R2vAgWCfdT8FsPrtT4BJSXpJAAIAsgAABjEFsAAYABwAHUAOGhkOCwAYGAsMAnILCHIAKysROS8zETMyMzAxQSEyFhYVFA4CIyERMxEhMjY2NTQmJiMhAREjEQFFAY2g3HJAfrh4/eDBAV9rhT4+hWv+cwTswQNfa8CBYJ91PwWw+u1PgElJekkC7/pQBbAAAAEAowAABLEFsAAYABlADA4LABgYCwwCcgsIcgArKxE5LzMRMzAxQSEyFhYVFA4CIyERMxEhMjY2NTQmJiMhATYBjaDcckB+uHj94MEBX2uFPj6Fa/5zA19rwIFgn3U/BbD67U+ASUl6SQACAJT/7AT0BcQAAwAsAB1ADgMCAh4JBSkJchkVHgNyACsyzCvMMxI5LzMwMUEVITUBMx4CMzI+AjU1NC4DIyIGBgcjPgIzMh4CFRUUDgIjIiYmBEz9q/6dwBBLknthjlwtIEBffU1wjUsPwA+A46WH2JlRUZbRgK/qfwMlnp7+qmeSTVGOvGuSXZ9/WjBQk2aQ23xgsvqZkJn5sWB/2gAABAC3/+wG2wXEAAMABwAdADMAI0ATLwcGBg4kGQMCcgIIchkDcg4JcgArKysrETMSOS8zMjAxQREjEQEVITUFFRQCBgYjIiYmAjU1NBI2NjMyFhYSAzU0LgIjIg4CFRUUHgIzMj4CAXjBAg/+pgVvUprXhYHXnVZVnNeBhdebU781ZpNdWpFnODhpkVpekmU0BbD6UAWw/WWYmA9cpP78tmBgtgEEpFykAQO3YGC3/v3/AF6CyIhGRojIgl6DyYlGRonJAAIAWgAABGUFsAAWABoAH0APFxYWAAAJDAwZCHIOCQJyACsyKzIREjkvMxI5MDFBIScmJjU0NjYzIREjESEiBhUUFhYzIQUBIwED0f5nX56qfeeeAdLB/u+goUeMaAFF/rf+ns0BbAI3JzLPmo3EZvpQBRKYgVSETDr9ZQKbAAMAYv/rBCkGEQAWAC8ARAAZQAw6IjAXFyIAAXIiC3IAKysROS8zETMwMUEzFA4CBw4DFxUjNTQSNjY3PgIDMh4CFRUUDgIjIi4CNTU0NjY3PgIXIgYGFRUUHgIzMj4CNTU0LgIDQ5g8Z4FFVpNpMQuYR4KzbE5wO9tqpnQ9QX2zcnKzfkESGwslgbVPZoNAJElxTU1wSCQkSXEGEWJzPiAPEk2M4KVcXLkBFL5wFQ8jPP4fSoSzaRZxwY9QUI/BcRYZMDIcWppfl16bWhZMiGk8PGmITBZEel43AAACAJ4AAAQpBDoAGwAzAC1AFgIBGyspKSgBKAEoDw0QBnIeHR0PCnIAKzIRMysyETk5Ly8RMxI5OREzMDFBISchMjY2NTQuAiMjESMRITIeAhUUDgIHAyE3ITI2NjU0JiYjITchFx4CFRQOAgKJ/p0CASJWczohQmFB7bkBpmeldT4oTnJKSP5aXAFKTWYzM2ZN/ucCAV9DWXxAOWyaAdyUIkQyJzsnE/xcBDokSXBMMVhEKwb97ZYnSTMzSSeUOAdKcUJMdE0nAAEAmwAAA0gEOgAFAA62AgUGcgQKcgArKzIwMUEVIREjEQNI/gy5BDqZ/F8EOgADAC7+wQSUBDoADwAVAB0AIUAQHRgJFhYbEwgKchUQEAAGcgArMhEzKzIyMhEzLzMwMUEzAw4DByM3Nz4DNxMhESMRIQEhESMRIREjAVC5EAY6Wm87XAUmIT40IwU/Aou5/i7+sQRluf0NugQ6/mua4J1qJJcBJ1Nzp3kBlfvGA4/9Cf4pAT/+wQAFABYAAAYEBDoABQAJAA0AEwAXADBAFxUQEAAWEREJAwMGAAAUBwwSEw0NAgZyACsyETM/MzM5LzMzETMzETMRMxEzMDFBATMBMwcnASMBAREjESEBISczARMBNwEB1f5m3wEY2Bu1/sbqAa8BpLkDMP5m/uYd2QEYGv7FdwGuAdcCY/5AoxP+FgJwAcr7xgQ6/Z2jAcD7xgHqhv2QAAIAWP/sA60ETQAdADsAI0ARAB8CAjs7FDIuKQtyDwsUB3IAKzLMK8wzEjkvMxI5OTAxQSM1MzI2NjU0JiYjIgYGFSM0NjYzMh4CFRQOAiUzMh4CFRQOAiMiJiY1MxQWFjMyNjY1NCYmIyMCIce4TVomK15PQGg9uXG9cF6VaDc0Yov+4sdhlGQzPXCbXmnGgLk+b0lOaDUwY024AgVyJ0YvKksvLU0wY49OKU91TTdiSypGJUhpREx5VCxIl3UxWDYwUC89SiMAAQCdAAAEAgQ6AAkAF0ALBQAGAggGcgQGCnIAKzIrMhI5OTAxQQEzESMRASMRMwFVAfO6uv4NuLgBJQMV+8YDFfzrBDoAAAMAnQAABEAEOgADAAkADQAfQA8MBwcLBgYCCQMGcgoCCnIAKzIrMhE5LzMzETMwMUERIxEhASEnMwETATcBAVa5A3/9//79HNQBaxr+cncCAgQ6+8YEOv2UogHK+8YB6ob9kAADACwAAAQDBDoAAwAHABkAGUAMEgURCnICAwMECAZyACsyMhEzKzIyMDFBFSE1IREjESEzAw4EIyM1Nz4ENwNg/fUCrrn93rocBx81T25IOigrPSobDwQEOpmZ+8YEOv32ebmEUyejAwMiQ2qSYQAAAwCeAAAFUwQ6AAYACgAOABtADQAJDAYBCgZyCwMJCnIAKzIyKzIyMhI5MDFlATMBIwEzIxEjEQERMxEC+wFwsv4egP4gsja5A/u69gNE+8YEOvvGBDr7xgQ6+8YAAAMAnQAABAEEOgADAAcACwAbQA0JBggDAgIGBwZyBgpyACsrETkvMzIRMzAxQRUhNRMRIxEhESMRA2v9xCe5A2S6AmWWlgHV+8YEOvvGBDoAAwCdAAAEAgQ6AAMABwALABlADAkGCAIDAwcGcgYKcgArKzIRMzIRMzAxQRUhNTMRIxEhESMRA1793Ru5A2W6BDqZmfvGBDr7xgQ6AAIAKAAAA7EEOgADAAcAELcDBgcGcgIKcgArKzIyMDFBESMRIRUhNQJGugIl/HcEOvvGBDqWlgAABQBk/mAFaQYAABYAKwBCAFYAWgAnQBUnBgZJHhERUjM+C3IzB3JYAHJXDnIAKysrKxEzMxEzMjIRMzAxQRUUDgIjIi4CJxE+AzMyHgMHNTQuAyMiBgYHER4CMzI+AiU1ND4DMzIeAhcRDgMjIi4CNxUUHgIzMjY2NxEuAiMiDgIBETMRBWkyY5JgT3hTMQkJMVN2T059Xz8guRMnPlc4PE8sCgwuTjtGYz8d+7QgQF99Tk1zUDAKCTBQdU5gkmMzuhs7YEY8Ti4MCi1OPUZiOxsBZLoCChVyv4xNK1JzSAHgTXpWLjdmj7J7FUZ/a1AsHjEb/Y0WJxk5ZoZNFWayj2Y3LlZ6Tf4zTHpXLk2Mv4cVTYZmOR4wGgJhGzEeRHab+/8HoPhgAAACAJ3+vwSCBDoABwANABtADQYBAw0MDAAKcgEGcgkALysrMhEzMhEzMDFzETMRIREzETcDIxEjNZ25AfK6gBKljQQ6/F4DovvGmP4nAUGYAAIAaAAAA70EPAADABcAF0ALDxQJCQEABnIBCnIAKysROS8zMjAxQREjERMVDgIjIiYmNREzERQWFjMyNjYDvbl6OHN/SoC8Zrk2aEtIf3UEOvvGBDr+D5gVIRNZtYoBPP7EWnA1EyAAAQCdAAAF4AQ6AAsAGUAMBQkGAgILAAZyCwpyACsrETMRMzIyMDFTMxEhETMRIREzESGduQGMugGLufq9BDr8XgOi/F4DovvGAAACAJL+vwZtBDoABQARAB1ADgwFCAgEEQpyDwsGBnIBAC8rMjIrMjIRMzMwMWUDIxEjNQEzESERMxEhETMRIQZtEqWN+2m5AYy6AYu5+r2Y/icBQZgDovxeA6L8XgOi+8YAAAIAHgAABMAEOgADABwAHUAOERIPHAQEDwIDBnIPCnIAKysyETkvMxEzMjAxQRUhNQEhMhYWFRQOAiMhETMRITI2NjU0JiYjIQH5/iUByQFFg7RdNGeXYv4zugETUF8qKl9Q/rsEOpiY/oxbn2VLg2I3BDr8XjpcMjFePwACAJ4AAAV/BDoAGAAcAB1ADhoZDgsYAAALDAZyCwpyACsrETkvMxEzMjMwMUEhMhYWFRQOAiMhETMRITI2NjU0JiYjIQERIxEBJQFFg7RdNGeXYv40uQETUGAqKmBQ/rsEWrkCxlufZUuDYjcEOvxeOlwyMV4/Agz7xgQ6AAABAJ4AAAP+BDoAGAAZQAwOCxgAAAsMBnILCnIAKysROS8zETMwMUEhMhYWFRQOAiMhETMRITI2NjU0JiYjIQElAUWDtF00Z5di/jS5ARNQYCoqYFD+uwLGW59lS4NiNwQ6/F46XDIxXj8AAgBk/+sD4QROACcAKwAdQA4rKioJHRkUC3IEAAkHcgArMswrzDMSOS8zMDFBIgYGFSM0NjYzMh4CFRUUDgIjIiYmNTMUFhYzMj4CNTU0LgIBFSE1Agg9b0exeMBscrB5Pj95r3F5v22xQW5FS21GISFFbQEt/g0DtjZfPmGlZVaWw20qbcOXVmixb0NtQERwi0YqR4pwQ/69l5cABACe/+wGMAROAAMABwAdADMAI0ATJAMCAhkvDgcGcgYKcg4HchkLcgArKysrETMSOS8zMjAxQRUhNRMRIxEBNTQ+AjMyHgIVFRQOAiMiLgI3FRQeAjMyPgI1NTQuAiMiDgIC9f3BobkBuUSBtXFztoFERIC2cnK2gUS6Jk1zTU1zTCcnTXRNTHJNJgJvl5cBy/vGBDr91xd1yZVTU5XJdRd1yJVTU5XIjBdRj24/P26PURdQj29AQG+PAAACAC8AAAPHBDoAAwAdAB1ADgESEhMTAwkEBnIHAwpyACsyKzISOS8zEjkwMUEzASMBIREjESEiBgYVFBYWMyEVISIuAjU0PgIBaMj+x8gB1AHEuf71T2QuKlpHAVP+rV2QZDQ3aZkCBP38BDr7xgOkNVQtLFE0mDJZeUdHeFoxAAT/5/5LA+AGAAARABUALAAwAB1AEDAvKBwHchUAchQKcg0GD3IAKzIrKysyzDIwMUEzERQGBiMiJic3FhYzMjY2NQERIxETJz4DMzIeAhURIxE0JiYjIg4CARUhNQMmuk2QZR82Hg8PRg8rPSD+ILmNTQFAdKFiUIBbMLoyYEZFcVEtAUr9gwHG/eFwnFAHCpQGBy9YPQZZ+gAGAPxGA2+9jE0rXpVr/TsCx1VnLzpmgwLCmJgAAgBn/+wD9wROAAMAKwAbQA0EDQMCAg0hGAdyDQtyACsrMhE5LzMRMzAxQRUhNQEyNjY3Mw4CIyIuAjU1ND4CMzIWFhcjLgIjIg4CFRUUHgICt/3WAbxCcEgFrwV3v3N6tnc7O3i1eX++bQWvBUFvS1VzQx0dQ3MCaJiY/hw2Xz1gpWVWlsNtKm3DllZnsXBDbEFDcYlHKkeKcEMAAwAnAAAGhgQ6ABEAFQAuACVAEhYuLgAkISEKCQpyFBUVIwAGcgArMjIRMysyMhEzETkvMzAxQTMDDgQjIzU3PgQ3ARUhNQEhMhYWFRQOAiMhETMRITI2NjU0JiYjIQEkuRwHHjVQbUg7KSo9KhsQBAIs/g8CYgFFhLRcNGeWY/40uQETUV8qKl9R/rsEOv32ebmEUyejAwMiQ2qSYQHPmZn+ZFaWX0d7XTQEOvxcOlgtLFI0AAADAJ0AAAaoBDoAAwAHACAAJUASFRYTEwYIAyADAgIGBwZyBgpyACsrETkvMzMRMxEzETMyMDFBFSE1ExEjEQEhMhYWFRQOAiMhETMRITI2NjU0JiYjIQNr/cQnuQMxAUaDtF00Z5di/jO6ARNQXyoqX1D+ugKhlpYBmfvGBDr+ZFaWX0d7XTQEOvxcOlgtLFI0AAP//QAAA+AGAAADABoAHgAZQA0eHRYKB3IDAHIRAgpyACsyKysyzDIwMUERIxETJz4DMzIeAhURIxE0JiYjIg4CARUhNQFGuY1NAUB0oWJQgFswujJgRkVxUS0BYP2DBgD6AAYA/EYDb72MTStelWv9OwLHVWcvOmaDAseYmAAAAgCd/pwEAgQ6AAMACwAXQAsABgYLCnIJBAZyAgAvKzIrMhI5MDFlMxEjATMRIREzESEB9bq6/qi5AfK6/JuY/gQFnvxeA6L7xgACAJz/6wZ2BbAAGAAwABtADiwfCXIUBwlyJhoOAAJyACsyMjIrMisyMDFBMxEUDgIjIi4CNREzERQeAjMyNjY1ATMRFAYGIyIuAjURMxEUHgIzMjY2NQMmnDxskldXlG09wh85TS5Hbz8Cj8FuvnlSjWc6nCI9VDFCZzsFsPveaZ5oNDRonmkEIvveQmJCIDp0WAQi+96Mu1w0aJ5pBCL73kJiQiA6dFgAAAIAgf/rBa4EOgAYADEAG0AOLB8LchQHC3ImGg4ABnIAKzIyMisyKzIwMUEzERQOAiMiLgI1ETMRFB4CMzI2NjUBMxEUBgYjIi4CNREzERQeAjMyPgI1ArqWNWGDTk6DYTa6Gi8/JjxeNwI7uWKrbEp9XDOWHDRGKilGNB0EOv0oXo1eLi5ejV4C2P0oOFQ3HDFjSwLY/Sh+plMuXo1eAtj9KDhUNxwcN1Q4AAAC/9sAAAP8BhYAFwAbACFAEA0KABcXChobGwoLAXIKCnIAKysROS8zETkvMxEzMDFBITIWFhUUBgYjIREzESEyNjY1NCYmIyEBFSE1ASMBRYS0XFy0hP40uQETUGAqKmBQ/rsBdP1EAupgpmtpq2UGFvqCP2Q3NWdFAn+YmAADALj/7QahBcUAAwAsADAAIEARAwICLzACci8IHRQDcikJCXIAKzIrMj8rEjkvMzAxQRUhNQEzDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAzMyNjYBESMRBR78EQSxwQ+B6q+A0ZZRUZnYh6XkgA/BDkyMcWCTYzIdOll6TXuSS/upwQNBmJj+j4raf2Cx+ZmRmfmyYHzbkGaTUEqIvnSTVpuCXzROkgRG+lAFsAAAAwCa/+wFoQROAAMAKwAvACRAEwMCAi4vBnIuCiEdGAdyCAQNC3IAKzLMK8wzPysSOS8zMDFBFSE1ATI2NjczDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAgERIxEEgvyPAuJCcEgFrwV3v3N6tnc7O3i1en+9bQWvBUFvSlZyQx0cQ3P9trkCaJiY/hw2Xz1gpWVWlsNtKm3DllZnsXBDbEFDcYlHKkeKcEMDtvvGBDoABAAoAAAE5QWwAAQACQANABEAJEAREQ0MDAIABgYHAwJyDwUFAggAPzMRMysyMhEzETkvMzMwMUEBIwEzAQE3MwEDFSE1BREjEQKy/jzGAg17AW/+QwV6AgT//T4BvL0FFPrsBbD6UAUclPpQAlqjozP92QInAAQADwAABCUEOgAEAAkADQARAB5ADhENDAwBBwMGchAFBQEKAD8zETMrMhI5LzMzMDFBASMBMwEBAzMBAxUhNQURIxEB//7OvgG7jQER/sdUjgG83P2tAYK4Av39AwQ6+8YC/QE9+8YBwZiYJv5lAZsAAAYAygAABvYFsAADAAgADQARABUAGQA0QBoJFBQGBhgVEREQEAMCAhgIFgJyBAoKCwcCcgArMjIRMys/OS8zMxEzETMRMxEzETMwMUEVITUBASMBMwEBNzMBAxUhNQURIxEBESMRA1v93QOL/jzGAg17AW/+QwV6AgT//T4BvL39V8ECWqGhArr67AWw+lAFHJT6UAJao6Mz/dkCJwOJ+lAFsAAABgC9AAAF5AQ6AAMACAANABEAFQAZAC5AFxURERAQAwICGBkGcgkUFAYGGAoLBwZyACsyPzMRMxEzKxI5LzMzETMRMzAxQRUhNQEBIwEzAQEDMwEDFSE1BREjEQERIxEC5/4sAqv+zr4Bu40BEf7HVI4BvNz9rQGCuP33uQHBmJgBPP0DBDr7xgL9AT37xgHBmJgm/mUBmwKf+8YEOgAFAJMAAAZABbAAFgAaAB8AJAAoADRAGRkaGiQbHx8jIxMoBgYTEwEcJAJyDScnAQgAPzMRMysyEjkvMxEzETMRMxEzETMRMzAxYSMRNDY2MyEyFhYVESMRNCYmIyEiBhUBFSE1AQEzASMBAQcjAQERIxEBVMF02ZgB4pnZdMFAgmP+HpORA7H84AFMAb7b/f96/qQBwSJ5/f4CtsABcqHCVlbCof6OAXJuezJ2pQQ+np79AAMA/LIDTvz5RwNO/V388wMNAAAFAJcAAAVLBDsAFwAbACAAJQApADBAFxobGyUgJCQTKQYGExMBHSUGcg0oKAEKAD8zETMrMhI5LzMRMxEzETMRMxEzMDFhIzU0NjYzITIWFhUVIzU0JiYjISIGBhUBFSE1AQEzASMDAQcjAQERIxEBULlqyIsBOovHa7k5c1j+xlhzOQMQ/U4BEwFF0P51cPMBSR1w/nQCObmkocFWVsGhpKRxfTMzfXEDl5mZ/bkCRv1tApP9tUgCk/4L/bsCRQAHALcAAAhyBbAAAwAHAB4AIgAnACwAMAA8QB4hIiIkLAJyJysrGzAODhsbAwICBQcCchUvLwkJBQgAPzMRMxEzKxI5LzMzETMRMxEzETMrMjIRMzAxQRUhNRMRIxEBIxE0NjYzITIWFhURIxE0JiYjISIGFQEVITUBATMBIwEBByMBAREjEQTw/G8ZwQLQwXTZlwHjmdlzwECCY/4dkpEDsfzgAUwBvtv9/nn+pAHBInn9/gK2wQMsl5cChPpQBbD6UAFyocJWVsKh/o4Bcm57MnalBD6env0AAwD8sgNO/PlHA079XfzzAw0AAAcAnAAABzsEOwADAAcAHwAjACgALQAxAD5AHiUiIyMtLQcoLCwbMQ4OGxsDAgIGBwZyFTAwCQkGCgA/MxEzETMrEjkvMzMRMxEzETMRMxEzETMRMzMwMUEVITUTESMRASM1NDY2MyEyFhYVFSM1NCYmIyEiBgYVARUhNQEBMwEjAwEHIwEBESMRBN/8Hli5AqS5asiLATqLx2u5OXNY/sZYczkDEP1OARMBRdD+dXDzAUkdcP50Ajm5AlyXlwHe+8YEOvvGpKHBVlbBoaSkcX0zM31xA5eZmf25Akb9bQKT/bVIApP+C/27AkUAAwBQ/kYDqgeGABcAQABJACtAFBgNDEBAACssCUVDQ0JIQYBHFwACAD8y3hrNMjkyETM/MxI5LzMzMzAxUyEyHgIVFA4CIyM1MzI2NjU0JiYjIRMzMh4CFRQOAiMjIgYVFBYWFwcuAic0NjYzMzI+AjU0LgIjIxMXNzMVAyMDNYQBMmivgEdGgrZwkY1vij8+gWX+zpGRe8CFREiBr2g1UEU4TB5LPXhRAVGVZy1FbkwoLFV9UY10l5eg/nL7BbA1ZpJcS4FhNnM+bkhBbED9+DJgjVtmnm04PzI1SS4OfBpYfVBYcTYoSWM6RGVEIQTmqqoK/u4BEgoAAAMATP5GA3cGMQAYAEEASgAmQBENGQxBQQAtQ0lGREKASBgABgA/Mt4azTIyMjkvEjkvMzMzMDFTITIeAhUUDgIjIzUzMjY2NTQuAiMhEzMyHgIVFA4CIyMiBhUUFhYXBy4CJzQ2NjMzMj4CNTQuAiMjExc3MxUDIwM1gQEtXp91QUB3pmaRjWB3Nh49XkD+04yRcbB5P0F2oF4xUUQ4TB5LPXhRAVGWZik7XUEiJkpsR40rl5eg/nL7BDoqUHNIOmJKKXMoSDAgNykY/qEkRmZCTHhUKz8yNUkuDnwaWH1QWHE2GS09JSo+KhQEX6qqC/7uARMKAAMAZ//sBPoFxAAXACgAOQAfQBIMKWoyIGoyMgwAGGoAA3IMCXIAKysrEjkvKyswMUEyHgMVFRQCBgYjIi4DNTU0EjY2FyIOAgcGBhUhNCYnLgMDMj4CNzY2NSEWFhceAwKwaraPZjVSmteFZ7SRaDdVnNeBUYhlQAkBAgMVAQIJPGWJU1aKYzsIAQH87QECAQpAZocFxD53q9uDXKT+/LZgPner24NcpAEDt2CkOnKnbRAjEhEiEG6nczr7bzt0q28LFQsQHg5rpHA5AAMAXP/sBDQETgAVACAAKwAfQBILIWonG2onJwsAFmoAB3ILC3IAKysrEjkvKyswMUEyHgIVFRQOAiMiLgI1NTQ+AhciDgIHIS4DAzI+AjchHgMCR3K3gEREgLVycraBRESAtnFEakstCAJeBy5Ma0JFa0wtBv2gBi1MbAROU5XJdRd1yJVTU5XIdRd1yZVTmDNad0REd1oz/M40XXtHR3tdNAAAAgAWAAAE3QXDAA4AEwAZQA0OEggFEwJyBQNyEghyACsrKxEzETMwMUEBPgIzFwcjIgYGBwEjAQETIwEChwECIVBrSi4BDCIzKRT+fJX+wgFcYpX+BgF2AylogTsBqhs+N/t4BbD7x/6JBbAAAgAvAAAEDAROABIAFwAVQAsXBnISFgpyDAUHcgArMisyKzAxQRM+AjMyFhcHJiYjIgYGBwEjAxMTIwECDJ0cTV0yHTUZFQUXDxQpIgv+1nrS8Ep7/oQBPAIfWGoxCBGUAwUWKR38swQ6/QL+xAQ6AAQAZ/9zBPoGNQADAAcAHwA3ACRAEAICJycDGgNyBwczMwYOCXIAK80zETN8LysYzTMRM30vMDFBESMRExEjEQEVFAIGBiMiLgM1NTQSNjYzMh4DBzU0LgMjIg4CFRUUHgMzMj4CAxa5ubkCnVKa14VntJFoN1Wc14Fqto9mNb8iQmB8S1mRaDgkRWF7R16SZTQGNf5+AYL6yf51AYsCCFyk/vy2YD53q9uDXKQBA7dgPner299eaKmCWC1GiMiCXmmqg1gtRonJAAAEAFz/iQQ0BLYAAwAHAB0AMwAkQBAHByQkBhkLcgICLy8DDgdyACvNMxEzfS8rGM0zETN8LzAxQREjERMRIxEBNTQ+AjMyHgIVFRQOAiMiLgI3FRQeAjMyPgI1NTQuAiMiDgICorq6uv50RIC2cXK3gEREgLVycraBRLkmTXRNTHNMJydNc01Mc00mBLb+kAFw/EL+kQFvARkXdcmVU1OVyXUXdciVU1OVyIwXUY9uPz9uj1EXUI9vQEBvjwAABACc/+sGbwdSABUAIABBAGUAM0AZW04JclQxMSw4CXJCQ0MRCAgbGxYWIiECcgArMjJ8LzMYLzMRMzIRMysyMi8zKzIwMUEzFSMiLgIjIgYVFSM1NDYzMh4CASc2NjU1MxUUBgYlFSIGBhURFB4CMzI2NjURMxEUDgIjIi4CNRE0NjYFNTIeAhURFA4CIyIuAjURMxEUHgIzMj4CNRE0LgIFGygqV4htXi0zPoB/bjxqa33+mEwhI54wRv6tPV83HzlNLkdvP5w8bJJXV5RtPWq3Ax5XlG08PG2UV1aSbDycJEJZNS5NOSAgOU0G1H8mMSY1NxIkbmwmMib+WDcoRydfZiZOQHKeQYNk/cZLb0okOnRYAaz+VGmeaDQ4capyAjqYyWWenjlxqnL9xnKqcTg0aJ5pAaz+VEJiQiAkSm9LAjpLb0okAAQAfv/rBaoF8QAVACAAQgBmADNAGVxPC3JVMjIsOQtyQ0REEQgIGxsWFiIhBnIAKzIyfC8zGC8zETMyETMrMjIvMysyMDFBMxUjIi4CIyIGFRUjNTQ2MzIeAgEnNjY1NTMVFAYGJRUiBgYVERQeAjMyPgI1NTMVFA4CIyIuAjURNDY2BTUyHgIVERQOAiMiLgI1NTMVFB4CMzI+AjURNC4CBMMqLFeIbV0tMz+Af288aWt9/pdLISOdMEX+ujJPLRovPyYtTDkglTVhg05Og2E2XaMCxE6EYTU1YYROTYNhNZUgOEwtJkAvGhovQAVzfyYyJjU4EiRubCYyJv5PNyhIJl9mJk5AcJc5c1j+3kJiQCAcN1Q46upejV4uM2ebZwEiirdal5czZppo/t5nm2czLl6NXurqOFQ3HCBAYkIBIkJiQCAAAwCc/+sGdgcEAAcAIAA4ACtAFTQnCXIFAgEBBwctIQgIFQJyHA8JcgArMisyETMzM3wvMxgvMzMrMjAxQSE1IRchFSMHMxEUDgIjIi4CNREzERQeAjMyNjY1ATMRFAYGIyIuAjURMxEUHgIzMjY2NQMx/scDKwH+tagLnDxskldXlG09wh85TS5Hbz8Cj8FuvnlSjWc6nCI9VDFCZzsGmGxsfWv73mmeaDQ0aJ5pBCL73kJiQiA6dFgEIvvejLtcNGieaQQi+95CYkIgOnRYAAMAgf/rBa4FsQAHACAAOQArQBU0JwtyBQIBAQcHLSEICBUGchwPC3IAKzIrMhEzMzN8LzMYLzMzKzIwMUEhNSEXIRUjBzMRFA4CIyIuAjURMxEUHgIzMjY2NQEzERQGBiMiLgI1ETMRFB4CMzI+AjUCwf7HAysD/rOoB5Y1YYNOToNhNroaLz8mPF43Aju5YqtsSn1cM5YcNEYqKUY0HQVFbGx/jP0oXo1eLi5ejV4C2P0oOFQ3HDFjSwLY/Sh+plMuXo1eAtj9KDhUNxwcN1Q4AAIAdv6EBLwFxQAhACUAGUAMFhINA3IlAAAkAQlyACvNMxEzK8wzMDFlFSIuAzU1ND4CMzIWFhcjLgIjIg4CFRUUHgMzESMRAqJjq4lhNFCVzXyk74QBwAFQmG9ViF4yID1YcrfAiJ08cJq+bPqH46lddtuWZpNQSH+oYfxOjHVVL/38AgQAAgBk/oID4QROAB8AIwAZQAwVEQwHciAAACIBC3IAK80zETMrzDMwMWUVIi4CNTU0PgIzMhYWFSM0JiYjIg4CFRUUHgIzESMRAj1xsHk/P3mwcXm+ba9Bb0VMbUUhIURusrmDmFaXw20qbcOWVmexcENtQENxiUcqR4twQ/3/AgEAAAEAdAAABJEFPgATAAixDwUALy8wMUEDBQclAyMTJTcFEyU3BRMzAwUHAyjPASFF/t22qOH+30QBJc3+3kYBI7yl5gElSQMr/pSsfKr+vwGOq3urAW2rfasBS/5pq3sAAAH8ZgSm/ycF/AAHABW3BgYEBAECAgEALzMvETMRM3wvMDFDIRUnNyEnF9n95aYBAhwBpQUkfgHpbAEAAAH8cAUX/2QGFQAVABK2ARQUDwaACwAvGswyMxEzMDFBMzI+AjMyFhUVIzU0JiMiDgIjI/xwKlB8a2k8b3+APjQtXW2IVywFlyYyJmxuJBI4NCYxJgAAAf1lBRf+VAZYAAUACrIAgAIALxrNMDFBJzUzBxf+BqG0ATwFF8V8jHQAAf2kBRf+kgZYAAUACrIBgAQALxrNMDFBByc3JzP+kqJMOgG1BdzFQXSMAAAI+hr+xAG2Ba8ADQAbACkANwBFAFMAYQBvAABBIzQ2MzIWFSM0JiMiBgEjNDYzMhYVIzQmIyIGEyM0NjMyFhUjNCYjIgYDIzQ2MzIWFSM0JiMiBgEjNDYzMhYVIzQmIyIGASM0NjMyFhUjNCYjIgYDIzQ2MzIWFSM0JiMiBhMjNDYzMhYVIzQmIyIG/XhxcWFicXAtNjUsAlBycWFicnEsNzQsunFxYWJxcCw3NC3FcXFhYnFwLDc0Lf3AcXFhYnFwLTY0Lf2/cnJhYnFwLTY1LLFxcWFicXAsNzQtp3JxYWJycSw3NCwE81NpaVMoPT3+w1NpaVMoPT394VNpaVMoPT390VNpaVMoPT3+vFNpaVMoPT0E8lNpaVMoPT394VNpaVMoPT390VNpaVMoPT0ACPor/mMBawXGAAQACQAOABMAGAAdACIAJwAARTMXAyMTIycTMwE1NwUVJRUHJTUBJzclFwEXBwUnAQcnAzcBNxcTB/2liQt6YJSIDHpgAdgNAU36Gg3+swVXYQIBQUT7bGEC/sBFAV1iEZRBA8VhEZVCPA7+rQYDDgFS/CaLDHxil4sMfGIBBGMQmUT8KWMRmUUEDmICAUZF+1VjAv67RwD//wCy/pkFtAcZBCYA3AAAACcAoQExAUIBBwAQBH//vAAVQA4CIwQAAJhWAQ8BAQFeVgArNCs0AP//AJ3+mQS3BcIEJgDwAAAAJwChAKH/6wEHABADgv+8ABVADgIjBAEAmFYBDwEBAX1WACs0KzQAAAL/2wAAA/wGcgAXABsAGkAMGgsbAnIAFxcNDQoSAD8zETMvMyvOMzAxQSEyFhYVFAYGIyERMxEhMjY2NTQmJiMhARUhNQEjAUWEtFxctIT+NLkBE1BgKipgUP67AXT9RALqYKZraatlBnL6Jj9kNzVnRQNdmJgAAAIAqQAABNgFsAADABsAI0ARAQIFAAMGBgUFEhATAnISCHIAKysyETkvMxEzMxEzMzAxQQEHAQMhNSEyNjY1NCYmIyERIxEhMhYWFRQGBgNoAXBu/pE5/nsBhXGMQUGMcf6nwAIZpeN2deQD1P5rZgGU/s6dSIBSS4RR+u4FsHLJgYzGZwAABACM/mAEIwROAAMACAAeADQAJUAUAAMwAQIwJRoPC3IHBnIaB3IGDnIAKysrKxEzMjIyETMzMDFBAQcBAREjETMBFRQOAiMiLgInNT4DMzIeAgc1NC4CIyIOAgcRHgMzMj4CAtkBSm3+tf7buqoC6ThrnGVnnm5BDAxCbZxmZp5sN7oiR25MRmdILQsPL0dlRUttRyIBhf6KZwF2Akz69gXa/ewVdsmUUkSCtnJweL6HR0+Sy5EVUY9tPzBRZzf+/TVgSyw/bo8AAAIAogAABCQHAAADAAkAFUAKAgYGAwkCcggIcgArK84zETMwMUERIxETFSERIxEEJLq3/ULBBwD+GAHo/rCe+u4FsAAAAgCSAAADQwV3AAMACQAVQAoCBgYDCQZyCApyACsrzjMRMzAxQREjERMVIREjEQNDurb+DLkFd/4qAdb+w5n8XwQ6AAACALL+3gR8BbAABQAdABlADAYHBxMSAgUCcgQIcgArKzIvMzkvMzAxQRUhESMREzUzMh4CFRQOAiMnMj4CNS4DIwQw/ULAn9aN3ZtQPHexdQJRb0QeATRmmmcFsJ767gWw/PChTpXWiILLjEmTOWmTWmWbajYAAgCS/uQDvwQ6ABQAGgAbQA0AAQELFxoGchkKcgwLAC8zKysyETkvMzAxUzUhMhYWFQ4DByc+Aic0JiYjARUhESMRtwEIlOeFASlakmsxXm0uAVSSYAGA/gy5AeSicdSXN4yIZxSSGFt7RmaMSAJWmfxfBDoA//8AG/6ZB4IFsAQmANoAAAEHAmEGYQAAAAu2BRsMAACaVgArNAD//wAW/pkGPQQ6BCYA7gAAAQcCYQUcAAAAC7YFGwwAAJpWACs0AP//ALL+lgVEBbAEJgI8AAAABwJhBCP//f//AJ3+mQSBBDoEJgDxAAABBwJhA2AAAAALtgMRAgEAmlYAKzQAAAQApAAABP8FsAADAAcADQARAC9AFw8ODgsMBAQMDAsHBwsLABADCHIIAAJyACsyKzISOS8zLxEzETMvERI5ETMwMVMzESMBMxEjATMBISchBzcBI6TAwAEolZUCJOP+Lv4WHQGzCXEB6vEFsPpQBDD9awQV/N+gh6b8sgAEAJsAAASABDoAAwAHAA0AEQAtQBYPDg4LBAQMDAsHBwsLABADCnIJAAZyACsyKzISOS8zLxEzETMvETMRMzAxUzMRIwEzESMBMwEhJyEHNwEjm7m5AR6VlQHC4P5n/lQcAX4KdwGb6wQ6+8YDRf3GAy/9lKKGhv2QAAQARQAABosFsAADAAcADQARACNAERAPDwsKCgMOBghyDQcCAwJyACsyMjIrMhI5LzMzETMwMUEVITUhESMRIQEhJyEBEwE3AQJZ/ewCm8AEQv2H/qodAQAB/C393WwCowWwmJj6UAWw/N+gAoH6UAKoqfyvAAAEAD8AAAV9BDoAAwAHAA0AEQAjQBEQDw8LCgoDDgYKcg0HAgMGcgArMjIyKzISOS8zMxEzMDFBFSE1IREjESEBISczARMBNwECOv4FAlW6A3/+AP78HNQBaxr+c3YCAgQ6mJj7xgQ6/ZSiAcr7xgHqhv2Q//8Aqf6ZBakFsAQmACwAAAEHAmEEiAAAAAu2Aw8KAACaVgArNAD//wCd/pkEogQ6BCYA9AAAAQcCYQOBAAAAC7YDDwoAAJpWACs0AAAEAKkAAAeEBbAAAwAHAAsADwAfQA8HBgYKAgMDDAsCcg0KCHIAKzIrMjIRMxE5LzMwMUEVIScDFSE1ExEjESERIxEHhP12diX87R7BBF/BBbCYmP2OnZ0CcvpQBbD6UAWwAAQAkgAABWoEOgADAAcACwAPAB9ADwcGBgoCAwMMCwZyDQoKcgArMisyMhEzETkvMzAxQRUhNQMVITUTESMRIREjEQVq/i43/cMnuQNkugQ6mZn+K5aWAdX7xgQ6+8YEOgAAAgCw/t4HzQWwAAcAHwAZQAwICQkUBAcCcgYIcgIALysrMi85LzMwMUERIxEhESMRATUzMh4CFRQOAiMnMj4CNS4DIwT/wP0ywQPy1o3dm1A8d7F1AlFvRB4BNGaaZwWw+lAFEvruBbD88KFOldaIgsuMSZM5aZNaZZtqNgAABACS/uQGsAQ6ABQAGAAcACAAI0ARHhcYGAABAQsdHAZyGwpyDAsALzMrKzIROS8zMhEzLzAxQTUhMhYWFRQOAgcnPgI1NCYmIwEVITUzESMRIREjEQONARGa74kpWpNqMV5sLlmbZf61/d0buQNlugHkonHUlzeMiGcUkhhbe0ZmjEgCVpmZ+8YEOvvGBDoAAQBx/+QFowXFAEMAHUAOOQwMIyIDcgABAS4XCXIAKzIyETMrMjIRMzAxZRUiJCYCNTU0PgIzMh4CFRUUBgYEIyIuAjU1ND4CMxUiDgIVFRQeAjMyPgI1NTQuAiMiDgIVFRQeAgWju/7N3nc7bJdcXZduO2S4/wCdjOWkWEJ6qWc+YkUkO2+dY3i7gUQeOFI0M1E4HlSk8IWhasIBC6DjdceVU1GUynnzlf++amq+/ZOshuWrYKRGfqljrnLCkFFSksNy+FaMZzc5aItS6H7QlVEAAQBu/+sEnQRQAEMAHUAOOQwMIyIHcgABAS4XC3IAKzIyLzMrMjIRMzAxZRUiLgI1NTQ+AjMyHgIVFRQOAiMiLgI1NTQ+AjMVIg4CFRUUHgIzMj4CNTU0LgIjIg4CFRUUHgIEnZ39sl8sUnZJSXZTLEyOwndutYJHM12BTyY9LBgqUHFIUIBaLxEiMSAgMiERQ4C5kZ1Zn9V8Z16ccz9EeqRfaXnQnFZaodd9OWatgEidL1V0RDtcnnZBP3CWWGw8aU8tJ0hjO2tenXE+AP//ADr+mQT4BbAEJgA8AAABBwJhA9cAAAALtgEPBgAAmlYAKzQA//8AKv6ZBAYEOgQmAFwAAAEHAmEC5QAAAAu2AQ8GAACaVgArNAAAAwA0/qEGlAWwAAMACQARAB1ADgkNDQgKCHIFEAwCAwJyACsyMjIvKzIyETMwMUEVITUBAyMRIzUFETMRIREzEQPt/EcGYBKtj/xlwgLOwAWwmJj68v3/AV+iogWw+u0FE/pQAAMAH/6/BRcEOwADAAsAEQAfQA8CAwMNCgUGcggHBxAECnIAKzIyETMrMi85LzMwMUEVITUBETMRIREzETcDIxEjNQLj/TwBEroB8rmBEqaNBDuYmPvFBDr8XgOi+8aY/icBQZgA//8Al/6ZBWcFsAQmAOEAAAEHAmEERgAAAAu2Ah0ZAACaVgArNAD//wBo/pkEXwQ8BCYA+QAAAQcCYQM+AAAAC7YCGwIAAJpWACs0AAADAJcAAATJBbAAAwAZAB0AI0ARAwMKChUCAhUVBBwIchsEAnIAKzIrETkvMy8RMxEzLzAxQREjEQEzERQWFjMyPgI3FQ4DIyImJjUBMxEjAxeV/hXBQoZkPHFsaTMxYWd1R5rddgNxwcED+/1DAr0Btf45cYA0ChIaD54PGhIKWcakAcf6UAAAAwCEAAAD2QQ8AAMABwAbACNAEAAAGBgNAQENDQUKchIEBnIAKzIrMi8zfS8RMxEzGC8wMUERIxEBESMRExUOAiMiJiY1ETMRFBYWMzI2NgKGlQHouXo4c39KgLxmuTZoS0h/dQMb/coCNgEf+8YEOv4PmBUhE1m1igE8/sRacDUTIAAAAgCJAAAEuwWwABUAGQAZQAwBFwYRERcYAnIXCHIAKysROS8zETMwMWEjETQmJiMiDgIHNT4DMzIWFhUBIxEzBLvBQoVlPHFsaTMxYWd2RpvcdvyPwcEBx3J/NAoSGg+eDxoSClnGpP45BbAAAgA//+kFvgXEAAkANgAlQBIFHQEBHR0GHBwKJBUDci8KCXIAKzIrMhE5LzMzETMvETMwMVMzFBYWMxUiJiYBIi4CNTU0PgIXMh4CFRUhNSE1NC4CIyIOAhUVFB4CMzI2NxcOAj+YNG5Wg7NaA6qV5p5RVJXFcobLiUX8NgMJJVKGYVSDWi8wZ6FyfKY3LxdkngQ5SG0+jF6t/CRcqOWJ+Ynlp1sBXa72mHGLIV2iekVIgKdg+WGpgEk4HI8QLyUAAv/d/+wEZAROAAgANQAlQBIEHAEBHBwFGxsJIxQHci4JC3IAKzIrMhI5LzMzETMvETMwMUMzFBYzFSImJgEiLgI1NTQ+AjMyHgIVFSE1ITUuAyMiDgIVFRQeAjMyNjcXDgIjlWNtdZ9RAuFxt4NGToaqW3WobTT81wJvAx47YUc/akwqK1N3TGKIM3EjbZ0DWWF3h1We/P9NjMByKoTPkEpQj8FyU5cONmlWMzVolmIqTYdmOlBDWTVgPAADAKT+1gTNBbAAAwAJACEAIUAQCgYGCwgHBxcWCQMCcgIIcgArKzIvMzkvMzMzETMwMUERIxEhASEnMwEBNTMyHgIVFA4CIycyPgI1LgMjAWTABCn9cP7aHfACAf2t3IzemlE8eLN3AlFuRB0BM2aXZAWw+lAFsPzlqgJx/OWnTZXXiX/Lj0uYOmmRV2WZaTUAAAMAm/79BBoEOgADAAkAHgAhQBAWFQkGcgYKCgcLCwEDBnIBAC8rEjkvMzMRMysvMzAxQREjESEBIyczAQE1ITIWFhUOAwcnPgInNCYmIwFUuQN//eLmHLYBif2yARWZ74kBKVmTajFebC8BWZplBDr7xgQ6/ZSiAcr9lKFix5Y1hoJjE5IXVXJDZn46AP//ADD+mQWpBbAEJgDdAAABBwAQBHT/vAALtgMkBgAAmFYAKzQA//8ALP6ZBLgEOgQmAPIAAAEHABADg/+8AAu2AyQGAQCYVgArNAAAAQCy/ksE/wWwABkAGUAMGQhyFwICEQoFAAJyACsyLzM5LzMrMDFTMxEhETMRFAYGIyImJzcWFjMyNjY1ESERI7LBAsvBT5JmHzUeDhBDDys9IP01wQWw/W8Ckfn8cp1SBwqaBgcvVz0C1v1+AAABAJL+SwP2BDoAGQAdQA8ZCnIXAgIAEQoPcgUABnIAKzIrMhI5LzMrMDFTMxEhETMRFAYGIyImJzcWFjMyNjY1ESERI5K5AfG6TZFlHjUdDw9FDSw9IP4PuQQ6/isB1fttcJxQBwqUBgcvWD0CKP4xAP//AKn+mQW9BbAEJgAsAAABBwAQBIj/vAALtgMWCgEAmFYAKzQA//8Anf6ZBLYEOgQmAPQAAAEHABADgf+8AAu2AxYKAQCYVgArNAD//wCp/pkG+gWwBCYAMQAAAQcAEAXF/7wAC7YDGw8AAJhWACs0AP//AJ7+mQYIBDoEJgDzAAABBwAQBNP/vAALtgMZCwEAmFYAKzQAAAEAXv/rBRIFxAAsABtADRoLERQUCyUAA3ILCXIAKysyETkvMxEzMDFBMhYWEhUVFAIGBiciLgI1NSEVIRUUHgIzMj4CNTU0LgIjIgYHJz4CAoGf9adWXaXafZTimE0EPvyDK2CdcmKYaTY1cLB8grA7LxhqpwXEZ7v+/5tem/7+umYBXK71mHyVIl2ieUVUlcRwXnHElVQ4HI8QMCUAAgBo/+sELAWwAAcAJQAfQA8FCAgEJSUAHBIJcgcAAnIAKzIrMhE5ETMzETMwMVMhFwEjNQEhATcyFhYVFA4CIyIuAjUzFBYWMzI2NjU0JiYjI5QDawH+C3EBg/13AQaWoeN4SYS0a1eniVHBRn1UX4ZHSpFpjgWwfP2sdAG+/kEBaMePZp9tOTFnoXBJeklFeUxphT4AAgBq/nUEKQQ6AAcAJQAfQA4IBQUEJSUAHBgSBwAGcgArMi/MMxI5LzMzETMwMVMhFwEjNQEhATMyFhYVFA4CIyIuAjUzFBYWMzI2NjU0JiYjI5QDZQL+GnwBc/2IAQWRoeV5SYOza1anh1G5R4BVYYdITJNqjQQ6dv2ldAHE/jdmxY5mnm05MWehb0p8SkZ6TmqEPQD//wA5/ksEdAWwBCYAsUQAACYCNqpAAAcCZADxAAD//wA6/ksDlwQ6BCYA7E8AACYCNquNAAcCZADhAAD//wA6/ksFDwWwBCYAPAAAAAcCZAOnAAD//wAq/ksEHQQ6BCYAXAAAAAcCZAK1AAAAAQBXAAAEZQWwABgAErcDAAALEA0CcgArLzM5LzMwMUEhFSEiBgYVFBYWMyERMxEhIiYmNTQ+AgJFAYz+dGuFPT2FawFfwf3gn91yQH64A3OeTn9JSYVUBRP6UHTJgGGgdUAAAAIAWgAABmcFsAAYAC0AH0AOGwsLECUlAwAAGhANAnIAKy8zOS8zMy8RMxEzMDFBIRUhIgYGFRQWFjMhETMRISImJjU0PgIBIzU3PgI3Ni4CJzMeAgcOAgJIAY3+c2uEPT2EawFgwP3goNxyQH64AvGNjUpjNAIBCA8XD7oSHxQCAnW9A3OeTn9JSYVUBRP6UHTJgGGgdUD8jZwBAUN5USdTVlMnNG9xNo6+XwADAGT/6QZvBhgAFgArAEcAHUAQM0QLcjstAXIdEgtyJwYHcgArMisyKy8rMjAxUzU0PgIzMh4DFxUOAyMiLgI3FRQeAjMyNjY3NS4DIyIOAgERMxEGFhYzPgM3NiYnMxYWBw4DIwYmJmQ4a55mTn1gRCoJCzxmlGNknWw4uiBDa0tcd0gUDC1HZ0ZMa0QgAg26ASpNNUZrSicBAiEetBsqAgJNhapfa5xYAfUVgNSbVS5YfqBgXHe+h0dNjL+HFU2FYzhPgEvxN2dRMEJ2mf74BL/7QUBgNgE4aJJbZMtkYctni8+IRAJKowACADb/6QXUBbAAIABGACFAECgnJwIBAQ4yQwlyOg0OAnIAKzIvKzIROS8zMxEzMDFBIzUzMjY2NTQuAiMhNSEyHgIVFA4DByIGBgcGBhM1NTQmJiM3Mh4CFRUUFhYzPgM3NiYnMxYWBw4DIwYmJgHCw5Byi0AiSXNR/pkBZ3i5fUEeOlVwRQMHBwMoGOk9cU8Se6ViKiNDLjxeQCMBAiIeuxorAgJJfKBZZZVTAnmeOXJVOVxDI541aJllOGJTQTEQDQwBCgT+swJBTnVCbTZjh1BFMUwsAThokFhky2Rhy2eKzolFAkKRAAACADH/5ATpBDoAHQBCACVAEj49PRsCAQENKioiMwtyDA0GcgArMisyMi8ROS8zMzMRMzAxQSMnMzI2NjU0JiYjISchMhYWFRQOAgcOAgcGBgU1BhYzPgM3NiYnMxYWBw4DIwYuAic1NCYmIzcyFhYVAXTsArxUaDEya1X++gYBDIm/ZCVIa0UCBQUDIhABXAEoNzhVOyABAiEgtBosAgJFdZRSQ2ZGJQMwXkUji51BAbqWKEoxM1AvlUyQZTJSQDARARQUAgcD6gEnMgEpTGxETaVNTaJQcKhvNwEaOl1BTDBEJGtDdEsAAwBT/tYD9gWwAB8ANAA/AB9ADjo5PywMDQJyISAgAQECAC8zETMRMysyLzMvMzAxQSM1MzI2NjU0JiYjITUhMhYWFRQOAwciBgYHDgIHNzIWFhUVFBYWFxUjLgI1NTQmJgEVFAYHJz4CNTUBjNyid45APoZt/u0BE5/acR05VW9EAwgHAxoZEQ4RprxODR4Zvh4bBkB2AhlcU2kgLBcCeZg8dFNQdECYXriIOGFSQjEQDAsBBgYDBG1fqGyIKU5CGRkcXFsahE93Qv5clVvLREksW2E2mAAAAwB5/sYD2QQ6AB4AMwA+AB5ADjggHx8CAQE+KwoMDQZyACsyPzM5LzMzETMvMDFBITUzMjY2NTQmJiMhNyEyHgIVFA4CBwYGBw4CBzcyFhYVFRQWFhcVIy4CNTU0JiYFFRQGByc+AjU1Acz+9tRWajAwalb+4wEBHGaebjglSGtGBAkEFhMNKCWKnUEKGhe/GxYFMF4B4VtTaiAsFwG5lihKMjRQLZYrU3dMM1JBMBABJwIEBgQCa0h+UWEYOzURExJGRRBfNk0q9JVby0RJLFthNpgAAAMARf/rB3EFsAARABUAMgAdQA4mJh4vCXIXFAAVAnILCAAvMysyMjIrMjIvMDFBMwMOBCMjNTc+BDcBFSE1AREzERQeAjMyPgI3NiYnMxYWBw4DIyImJgGKwCEHITxgi2E0KDhROSQVBgLf/YICWcEXLD4nRGlIJwECIR67GyoCAk6Eq19toloFsP03mvGxczidAwQrWIzLiAKqnp77qwRV+6svTjgeOGeQWmTLZGHLZ4vPiERKogADAD//6wY6BDoAEQAVADMAH0AQJyceLwtyFxQAFQZyCwgKcgArMisyMjIrMjIvMDFBMwMOBCMjNTc+BDcBFSE1AREzERQeAjMyPgI3NiYnNxYWBw4DIyIuAgE8uRwHHjZPbkg6KSo9KhsQBAIp/hQBzLoXLT4nOFY7IAECIR2zGisCAkV0llNQgl4zBDr99nm5hFMnowMDIkNqkmEBz5mZ/R8C4f0fME85HjJcglFfwF4BXcBhf75+PilYiwAAAwCq/+kHcQWwAAMABwAjACBAERYWDh8JcggCcgADAwYIBAJyACs/OS8zKysyMi8wMUEhFSEDMxEjATMRFBYWMz4DNzYmJzMWFgcOAyMGJiYnAU0C+P0Io8DAA3/AKEw0RGlJJwECIh66GysCAk6Eq19snlgGAx+eAy/6UAWw+6s+YDUBN2eQWmTLZGHLZ4vPiEQCSqSEAAADAJD/6gZNBDoAAwAHACUAIkASGRkQIQtyCQZyAwICBQcGcgUKAD8rEjkvMysrMjIvMDFBFSE1ExEjEQERMxEUHgIzPgM3NiYnNxYWBw4DIwYuAgNd/cUougKzuhcsPyc4VzsgAQIiHbMaLAICRHWWVFB/XDMCZJaWAdb7xgQ6/R8C4f0fME84HwExXIJRX8BeAV3AYX++fj4BKFiNAAEAdv/rBKIFxQArABVAChILA3IlJR0ACXIAKzIyLysyMDFFIi4CNRE0PgIzMhYXByYmIyIOAhURFB4CMz4CNzYmJzMWFgcOAgK5gdWaU1Oa1YFzrkI7QJFXW49kNDRkj1tegkQCAh0XuxMnAgKI3BVdp+GFAQaF4addLCuLISNIfqZe/vhfp39IAUeBWVm3WFi1W5fGYgAAAQBm/+sDxwROACsAFUAKIRoHcgcHAA8LcgArMjIvKzIwMWU+Ajc0JiczFhYHDgIjIi4CNTU0PgIzMhYXByYmIyIOAhUVFB4CAlFHUSMBCQuyCxEBAmKnana3fkA+eK9xYI0sLC55RkxsRSAjSXWDASpLNDh7OTp3O22PRleXw2wqbMOWVyIfkBseRHGKRSpGinFEAAIAJP/pBUgFsAADACAAF0ALFBQMHQlyBQIDAnIAKzIyKzIyLzAxQRUhNQERMxEUHgIzPgM3NiYnMxYWBw4DIwYmJgSk+4AB28EWLD4nRWlIJgICIh67GysDAk2Eq2BsnVkFsJ6e+6sEVfurL004HwE3Z5BaZMtkYctni8+IRAJKpAACAEb/6gS4BDoAAwAgABdACxMTCxwLcgUCAwZyACsyMisyMi8wMUEVITUBETMRFBYWMz4DNzYmJzMWFgcOAyMGLgID0fx1AWe5KU41OFY8IAECIh2yGiwCAkV0llNQgFw0BDqWlv0fAuH9H0BgNgEpTW1ET6dPT6RScalvNwEoWI0AAgCX/+sE/wXFACAAPwAjQBEAIj8/AgIXNTEsA3IRDRcJcgArMswrzDMSOS8zEjk5MDFBMxUjIg4CFRQeAjMyNjY1MxQOAiMiLgI1ND4CBSMiLgI1ND4CMzIWFhUjNCYmIyIGBhUUHgIzMwLDv7lail0wM2KPW2yiWsBen8VmftKbVUqOzwFEv3nEjUxOksx+kfKRwFuaX32gTCdUhFy5AxB5H0BjQzlhSChJeklwoWcxOW2fZluNYDJVOWSES2aaaTVitX1Ibz9Fc0U2WUIj//8AMP5LBa0FsAQmAN0AAAAHAmQERQAA//8ALP5LBLwEOgQmAPIAAAAHAmQDVAAAAAIAcARxAskF1wAFAA8AErYFBQ0HAgIHAC8zLxDNMi8wMUE1EzMVAyU1MxUUFhcHJiYBknTD3/6GpyoqSVZcBIQRAUIV/sL+VU9IaC06LY///wAmAh8CDgK3BAYAEQAA//8AJgIfAg4CtwQGABEAAAABAKICiwSMAyMAAwAIsQMCAC8zMDFBFSE1BIz8FgMjmJgAAQCQAosFyAMjAAMACLEDAgAvMzAxQRUhNQXI+sgDI5iYAAIADf5qA6EAAAADAAcADrQCA4AGBwAvMxrOMjAxRRUhNSUVITUDofxsA5T8bP6YmP6YmAABAGEEMQF4BhQACgAIsQUAAC/NMDFTNTQ2NjcXBgYVFWEpTjdpLjIEMXk9hXstSUKLUXwAAQAwBBYBSAYAAAoACLEFAAAvzTAxQRUUBgYHJzY2NTUBSClON2ovMQYAgDyFey5JQotRgwAAAQAk/uUBPAC2AAoACLEFAAAvzTAxZRUUBgYHJzY2NTUBPClON2ovMLZnPIV7LkhCjFFqAAEATwQWAWcGAAAKAAixBgAAL80wMVMzFRQWFwcuAjVPuDEvaTdPKQYAg1GLQkkue4U8AP//AGkEMQK7BhQEJgGECAAABwGEAUMAAP//ADwEFgKHBgAEJgGFDAAABwGFAT8AAAACACT+0gJkAPYACgAVAAyzEAULAAAvMs0yMDFlFRQGBgcnNjY1NSEVFAYGByc2NjU1ATwpTjdqLzAB4SlON2ovMPanQIyBMElHlFaqp0CMgTBJR5RWqgAAAgBGAAAEJAWwAAMABwAVQAoGBwcCAwJyAhJyACsrETkvMzAxQREjEQEVITUCkLkCTfwiBbD6UAWw/oqZmQADAFf+YAQ0BbAAAwAHAAsAHUAOCwoGBwcBAwoScgMCcgEALysrERI5LzMRMzAxQREjEQEVITUBFSE1Ap65Ak/8IwPd/CMFsPiwB1D+ipmZ/F6YmAABAIsCGAIjA8sADQAIsQQLAC/NMDFTNTQ2MzIWFRUUBiMiJottXl9ubV9ebgLcKVZwcFYpVW9v//8AlP/0Ay8A0gQmABIEAAAHABIBuQAA//8AlP/0BM4A0gQmABIEAAAnABIBuQAAAAcAEgNYAAAAAQBSAgIBLQLWAAsACLEDCQAvzTAxUzQ2MzIWFRQGIyImUjg1Njg4NjU4AmstPj4tLD09AAcARP/rB1cFxQARACMANQBHAFkAawBvAClAE19WVjJoTU1EKSk7Mg0XDg4gBQUAPzMzLzM/MzMvMzMvMxEzLzMwMVM1NDY2MzIWFhUVFAYGIyImJjcVFBYWMzI2NjU1NCYmIyIGBgE1NDY2MzIWFhUVFAYGIyImJjcVFBYWMzI2NjU1NCYmIyIGBgU1NDY2MzIWFhUVFAYGIyImJjcVFBYWMzI2NjU1NCYmIyIGBgEBJwFESIZcXoZHR4VdXYZJiyNINjZHIiNHNzVHIwJoSIZcWH1DQ3xXXYZJiyNINjZHIiNHNzVHIwFSRH5WXoVIR4VdV39EeCRHNjZGIyNHNzVHI/7p/TlpAscES01TiFJSiFNNUYhSUoieTS5SMzNSLk0vUzMzU/xQTlKIUlKIUk5SiFJSiKBOLlMzM1IvTi9SMzNSfU5SiFJSiFJOUohSUoigTi5TMzNSL04vUjMzUgNN+45CBHIAAAIAbACZAiEDtQAEAAkAEkAJAQUDCQIIBgYAAC8vFzkwMUEBJzUBAwEjATUCIf77sAEndwEFjv7ZA7X+bgENAYT+d/5tAYUNAAIAWgCZAg8DtQAEAAkADrQCCAgFAAAvLzkvMzAxdwEXFQEDMwEVB1oBBbD+2Y6OASewmQGSAQ3+fAMc/nsNAQABADwAbwNrBSMAAwAOswADAgEAfC8zGC8zMDFBAScBA2v9OWgCxwTh+45CBHL//wBRApACngW7BgcB1wAAApv//wA2ApsCvAWwBgcCMAAAApv//wBcApACqAWwBgcCMQAAApv//wBWApACrAW6BgcCMgAAApv//wA7ApsCpgWwBgcCMwAAApv//wBPApACnwW7BgcCNAAAApv//wBKApQClQW7BgcCNQAAApsAAgB6AosC+QW6AAQAGQATtxYLBAQLAhECAC8zPzMvETMwMUERIxEzEwc0PgIzMhYWFREjETQmJiMiBgYBJKqBEi4mSWdAT3VAqiRBLD1PJQUA/YsDIP6LAVSOaTo/iGz+BAHcSVUlQW4A//8AUf6FAp4BsAYHAdcAAP6Q//8Ae/6RAe8BpgYHAdYAAP6R//8AQv6RAqsBsQYHAdUAAP6R//8AP/6GApsBsQYHAi8AAP6R//8ANv6RArwBpgYHAjAAAP6R//8AXP6GAqgBpgYHAjEAAP6R//8AVv6GAqwBsAYHAjIAAP6R//8AO/6RAqYBpgYHAjMAAP6R//8AT/6GAp8BsQYHAjQAAP6R//8ASv6KApUBsQYHAjUAAP6RAAQAWwAABGgFxAADAB4AIgAmACJAECIhJSYmARsXEgVyCQICAQwAPzMRMyvMMxI5LzPOMjAxYSE1IQETFgYHJz4CNQM0NjYzMhYWFSM0JiYjIgYGARUhNQEVITUEaPv3BAn9SxYBODiuIykRFnTJf4O4YsBDbD5Caz8BY/1FArv9RZ0Dcv2DXqMpNQlTbCwCforDaGKvdFRmLkF9/vB9ff76fX0AAwAfAAAGNwWwAAMABwARACJAEAMCBgsOEAcHDREOBHIKDQwAPzMrMhI5LzkSOTPOMjAxQRUhNQEVITUBESMBESMRMwERBjf56AYY+egFOMH9I8HBAuADrZiY/tSYmAMv+lAEY/udBbD7mgRmAAADAKf/7AYDBbAAFwAbAC0AI0ASIikNHBkYBnICAQEODA8Ecg4MAD8rMhI5LzMrMsw/MzAxQSM1MzI2NjU0JiYjIxEjESEyFhYVFAYGARUhNRMzERQWFjMyNjcXBgYjIiYmNQIh6up0dyoqd3TBuQF6pcxeXswDOP24xbkiNh8XMw0BFkcxRHJEAjWYVIZKS4dV+ugFsHTJgIDKdAIFjo4BB/vLNzgSCQOXBw02f2wA//8Aqf/sCBEFsAQmADYAAAAHAFcEVQAAAAYAHwAABcwFsAADAAcADQASABcAHQAqQBQdFQoKEgYHAwICERIEchMbGwgRDAA/MzMRMysSOS8zzjIRMxEzMzAxQRUhNQEVITUBExMzAwMBExMjAQETEzMBARMTIwMDBcz6UwWt+lMBi0Oxg0O0/tO7NXv+ywPDNLbB/sr+3bFAhq4/A9SXl/6ml5f9hgHYA9j+J/wpBbD8LP4kBbD6UAHdA9P6UAWw/Cv+JQPbAdUAAgCMAAAFnwQ6ABEAIgAgQA8WExMRFAgUCBEKHA8ABnIAKzIyPzk5Ly8RMxEzMDFTITIeAhURIxE0LgIjIREjISERMxEhMjY2NREzERQOAowCL1CAWzC6HDdQNf7CugO4/dK5AT5HYDK5MFuABDorXptw/rcBS0VgOxr8XgLe/bowblwCqP1acJteKwADAF//7AQdBcQAIwAnACsAHUAOKisnJiYHGRIFcgAHDXIAKzIrMhI5LzPOMjAxZTI2NxcGBiMiLgI1ETQ+AjMyFhcHJiYjIg4CFREUHgITFSE1ARUhNQMvOm4yFDh6PnfGkE9OkMV4P3U9FDFwOlCBWzAxXIFy/Q0C8/0NiBIQoA4QSZHZkQFNktqSSREOoRATNGigbP6xbKBoNAMXfX3++3x8AAMAHwAABbwFsAADAAcAHwApQBMGBwMCAhQKFBcJCgoWFwRyFgxyACsrEjl9LzMRMxESORgvM84yMDFBFSE1BRUhNQEhNSEyNjY1NCYmIyERIxEhMhYWFRQGBgW8+mMFnfpjAt/+ewGFcYxBQYxx/qjBAhml5HZ25AS9mJj1mJj+c51IgFJLhFH67gWwcsmBjMZnAAADACsAAAP5BbAAAwAcACAALUAVHyAgEQMCBQYGGgIaAhoEEBEEcgQMAD8rMhI5OX0vLxEzETMRMxEzETMwMUEHITcBASczMjY2NTQmJiMhNzMyFhYVFAYGIwEVEwchNwP5LvxgLgIA/e8B9GqLRkKNcv74L9mu43Bd1bQB7L0u/RQuBEyenvu0Amp8R3pMVYFJnmnIjnrBbv3EDAWwnp4ABAAh/+0EGwWwAAMAFAAYABwAFUAJBAQDDwELDQMEAD8/MzMSOS8wMUERIxEBMxUUAgYGIyImJzcyPgI1AxUBNQUVATUB1cACR79TmtiFL10wvGCTZDSM/VECr/1RBbD6UAWw/VNYo/78t2ALCJFFiMmEAniy/sayErH+xrEAAgBdAAAE6wQ6ABsAHwAYQAsIFRUeHwZyDgEeCgA/MzMrEjkvMzAxYSM1NC4DIyIOAhUVIzU0EjY2MzIeAxUBESMRBOu5IkNhfUxakmg4ulWb1YFqtY9lNf4Vurxpq4FYLEWIyIS8uqQBBLZgPner24MDgPvGBDoAAgAfAAAFBAWwABcAGwAaQAwZGAMAAA4MDwRyDgwAPysyEjkvM84yMDFBITUhMjY2NTQmJiMhESMRITIWFhUUBgYHFSE1Awj9FwLpbYxDP4ty/qbAAhql4nV14rH9IwI7nUaAV0eCVPruBbBxx4GMx2mJnp4AAAQAe//rBYMFxQAhADMARQBJACVAEkInMEdHOTANch8FDklJFg4FcgArMjIvEMwyKzIyLxDMMjAxQTMUBgYjIiYmNTU0NjYzMhYWFSM0JiMiBgYVFRQWFjMyNgE1NDY2MzIWFhUVFAYGIyImJjcVFBYWMzI2NjU1NCYmIyIGBhMBJwECHotCe1dXfkVEflZXfEOLREcvPx8gQC9HQgEQSIZcXoVIR4VdXYZJiyNINjZHIiNHNzVHI8z9OWgCxwQeRXRFUohRTVOIUkZ0RjVTM1MvTS5SM1f9KE5SiFJSiFJOUohSUoigTi5TMzNSL04vUjMzUgNN+45CBHIAAAEAaP/rA2sGEwAuABS3GRgYASQMAAEALzMvMxI5LzMwMWUVIi4CNRE0PgIzMh4CFRUUDgMjNTI+AjU1NC4CIyIOAhURFB4CAsxmmGQyKExsRDtiSihCgLvylJrejUQMFx8TGycbDRYyVImeQHenZgLpWYxiNCtTdEopZ9nKoV+wdbnQWispPCYTGzhSOP0XRWxNKAAEAKIAAAfGBcAAAwAVACcAMQAlQBErMC4qAgMbEiQJCTEuBCotDAA/Mz8zMy8z3DLOMhESOTkwMUEVITUDNTQ2NjMyFhYVFRQGBiMiJiY3FRQWFjMyNjY1NTQmJiMiBgYBESMBESMRMwERB6X9mCNUmWlqmVNSmWlqmlSjJ1E9PE8nKE89PFAn/rzM/a+6zAJTAiuOjgHaY2ebVlabZ2NnmlZWmspjPVwzM1w9YzxcNDRcAQz6UARu+5IFsPuPBHEAAAIAaAOXBDgFsAAMABQAJEARCQQBAwYKBwcTFAIAAwMGBhEALzMRMxEzPzMzETMSFzkwMUERAyMDESMRMxMTMxEBFSMRIxEjNQPeizSMWnCQj3D9spRbkwOXAYv+dQGK/nYCGf5yAY795wIZUf44AchRAAIAmP/sBJMETgAdACYAF0AKIhcXBB4OBxsECwA/Mz8zEjkvMzAxZRcGBiMiLgI1ND4CMzIeAhUUFBUhERYWMzI2ASIGBxEhESYmBBQCVLxibb6QUVmWu2Jns4hN/QA3jE5du/7oS405Ahw0isZoND5YmsxzdMuaWFGSxXUDEhr+uDM7OwNpQjj+6wEeND0A//8AVP/1BbMFmwQnAdb/2QKGACcBlADmAAABBwI0AxQAAAAHsQYEAD8wMQD//wBl//UGUwW0BCcCLwAmApQAJwGUAaUAAAAHAjQDtAAA//8AZP/1BkkFpAQnAjEACAKPACcBlAGDAAABBwI0A6oAAAAHsQIEAD8wMQD//wBa//UF/QWkBCcCMwAfAo8AJwGUASAAAAEHAjQDXgAAAAexBgQAPzAxAAACAGr/6wQzBewAKQA/ABlADCoAABI1HwtyCRIAcgArMisyETkvMzAxQTIWFy4EIyIGBgcnPgIzMh4CEhUVFA4DIyIuAjU1ND4CFyIOAhUVFB4CMzI+AjU1LgMCPVymOggwR1tpOTVeWy8QJVZyUG6whFgsKlJ2mFxys31BP3mtgE1xSSQkSHFMTnFKJAUmRm0D/k1DWJR1USsOGhKWER8VS4/L/wCWO2/FoXZAUI/BcRZptIVKmDdfekQWTIhpPEd+qGFDGUdELgAAAQCp/ysE5gWwAAcADrUEBwJyAgYALzMrMjAxQREjESERIxEE5rr9N7oFsPl7Be36EwaFAAMARv7zBKwFsAADAAcAEAAfQA4OBgYHBw8CcgwDAwoCCwAvMzMzETMrMhEzETMwMUUVITUBFSE1ARUBIzUBATUzBKz74wPQ/A4C/v09YgJg/aBidpeXBiaXl/yqGfyyjgLNAtOPAAEAqAKLA+sDIwADAAixAwIALzMwMUEVITUD6/y9AyOYmAADAD///wSZBbAABAAJAA0AFkAKCQsLCgQICAECcgArPzMvMxEzMDFlATMBIwMTFyMBBzUhFQIjAbi+/eJ7hsUpev7PfgEz9gS6+k8DD/3o9wMPmZmZAAQAY//rB8wETgAXAC8ARwBfAB1ADls2Nh4TC3JOQ0MrBgdyACsyMhEzKzIyETMwMVM1ND4CMzIeAxcVDgQjIi4CNxUUHgIzMj4DNzUuBCMiDgIFFRQOAiMiLgMnNT4EMzIeAgc1NC4CIyIOAwcVHgQzMj4CY0WAsm1so3dQMQ0NMVB2o2tus4BFuSdNcElHb1Q5IgYGIjlUcUdIcEwnBrBGgLNta6N3UDEMDTFQd6NsbLKBRbkoTG9ISHBUOiIGBiI6U3BHSHBNKAIPG23FmlhVhpWFJyonhZaGVViaxYgbUY9uPj9ibF4aKhldbGM/P26PUBttxZpYVYaWhScqJ4WVhlVYmsWIG1CPbj8/Y2xdGSoaXmxiPz5ujwAAAf+v/ksCjgYVAB8AELcbFAFyCwQPcgArMisyMDFFFAYGIyImJzcWFjMyNjY1ETQ2NjMyFhcHJiYjIgYGFQFmTZBlHzkdEw4yEDFEJVKYaSRHJBcRLR07UilrcJNHCQqSBAkmTz0FGXWgUgwJjgUGMVxCAAACAGUBGAQMA/UAGQAzABtACxcEgAoRQDEegCQrAC8zGt0yGt4yGs0yMDFTJzY2MzYWFxYWMzI2NxcGBiMiJicmJgciBgMnNjYzNhYXFhYzMjY3FwYGIyImJyYmByIGZwEvhUFQWz87VUpBfC8BL3xBSlU7P1xQQYQwAS+FQVBbPztVSkF8LwEvfEFKVTs/XFBBhALIvTM7AisgHihEPL0zOiceICsCRP4jvTM6AisgHidEPL4zOiceICwCRAAAAwCYAJwD2gTVAAMABwALAB9ADQIBAQoKCwADAwcHBgsAL84yETMRMxEzETMRMzAxQQEnARMVITUBFSE1A4/9q18CVar8vgNC/L4EmvwCOwP+/vqhof5hoaEAAwA9AAEDgARGAAQACQANACJAEAMHBgAECAYFCQkBAgINDQwALzN8EM4vMjIYLzMXOTAxUwUVATUlAQc1ARMVITXHArP8zgMy/U6AAzIG/L0Cw/6yAVhpwP7+DGkBV/xTmJgAAAMAhAAAA90EWgAEAAkADQAiQBADBwYABAgGAQICBQkJDQ0MAC8zfBDOLzIyGC8zFzkwMUElNQEVBQE3FQEFFSE1A079OQNW/KoCyY38qgNA/L0Csfyt/qlqxgEBFGr+qI6YmAACACwAAAPdBbAABwAPAB1ADgUICA4HEnIDCgoLAQJyACsyMhEzKzIyETMwMVMBMwcBARcjNwEBJzMBASMsAZB7Ef7EAUIOeiIBPP6+DXoBlP5wewLXAtmF/az9rYSEAlMCVIX9J/0p//8AtQCmAZsE9gQnABIAJQCyAAcAEgAlBCQAAgBvAnkCMwQ6AAMABwAQtgYCAgcDBnIAKzIyETMwMVMRIxEhESMR+4wBxIwEOv4/AcH+PwHBAAABAF3/XgFXAO8ACQAKsgSACQAvGs0wMWUVFAYHJzY2NTUBV0dKaSUl709Ptj1JOXhGUQD//wA9AAAE9wYVBCYASgAAAAcASgIsAAAAAwAgAAADzQYVABAAFAAYABtADxgGFwpyExQGcg0GAXIBCgA/KzIrMis/MDFhIxE0NjYzMhYXByYmIyIGFRcVITUhESMRAYS5YLJ6SIpJHy55SHdp3f2/A625BJh7qlgjGpwSIWtsXo6O+8YEOgADAD0AAAPqBhUAEgAWABoAG0APGRoGchQAcg4GAXITAQpyACsyKzIrKzIwMWEjETQ2NjMyFhYXByYmIyIGBhUBETMRARUhNQGhuVeldiyFl0hWX5g1QVktAZC5/p39tgSsdaFTEhwPhhITL1pC+1QF2PooBDqOjgAFAD0AAAYzBhUAEQAVACYAKgAuACVAFCMcAXIuKhQVBnINBgFyLRcXAQpyACsyETMrMisyMjIrMjAxYSMRNDY2MzIWFwcmJiMiBgYVFxUhNQEjETQ2NjMyFhcHJiYjIgYVFxUhNSERIxEBoblVoG4gQR8KFTUaO1Us8P2sA625X7J6SYpJIC16R3dp3f2/A625BKx1oVMICJcFBC9aQnKOjvvGBJh7qlgjGpwSIWtsXo6O+8YEOgAABQA9AAAGMwYVABEAFQAoACwAMAApQBcrAHIkHAFyLhQULRUGcg0GAXIpFwEKcgArMjIrMisyMhEzKzIrMDFhIxE0NjYzMhYXByYmIyIGBhUXFSE1ASMRNDY2MzIWFhcHJiYjIgYGFQERMxEBFSE1AaG5VaBuIEEfChU1GjtVLPH9qwOtuVeldiyFl0hWX5g1QVktAZC5/p39tgSsdaFTCAiXBQQvWkJyjo77xgSsdaFTEhwPhhITL1pC+1QF2PooBDqOjgAABAA9/+wEmwYVAAMAFwAbAC0AJUAUIikLchMKcgkcHA0NBAFyGAIDBnIAKzIyKzIRMxEzKysyMDFBFSE1ATIWFxUjNSYmIyIGBhURIxE0NjYBFSE1EzMRFBYWMzI2NxcGBiMiJiY1AYL+uwH9Wd1cuR5xLTtRKrlSlwLF/bfGuSI2HxczDQEWRzFFcUQEOo6OAds2LtF5EBQyXUL7VASsdaFT/iWOjgEH+8s3OBIJA5cHDTZ/bAAEAF//7AZVBhIAGwAfADEAZwAxQBs7MkBkYFsLcgFFSUAHciYtC3IeEB8GchQKAXIAKzIrMjIrMisyzDIrzDMSOTkwMUEjLgI1ND4CMzIeAhUjNCYmIyIGFRQeAiUVITU3MxEUFhYzMjY3FwYGIyImJjUFNCYmJy4DNTQ+AjMyFhYVIzQmJiMiBgYVFB4CFx4CFRQOAiMiJiY1Mx4CMzI2NgOyZiBSOzNfg1B3l1MguShYSFhcHiYeAp39wby5IjceFzQNARZHMkRyRP43I2trWpFlNjlplFuCuGK5NWVJTV8rFTZiTIWsVDtvmV+Pxma6BFB0OUxnNgL8YaqdTT1pTyxJdIc+RGg7WEY8aWt97o6OWPyXPkUbCASXBw0/jHMLKEU5FRM0SmRDQHJYMlyZXS1VOC9IKB4vJyIRHlR6V0d2VS9molpMWSUoRgAAFQBb/nIH7gWuAAUACwARABcAGwAfACMAJwArAC8AMwA3ADsAPwBDAEcAVwBzAIwAmgCoAABTIxEhFSMhIzUhESMBIREzFTMFITUzNTMBITUhBSE1IREhNSEBFSM1ExUjNQEhNSEBFSM1ASE1IQUhNSEBFSM1ExUjNQEVIzUHETMRFAYjIiY1MxQWMzI2JSMnMzI2NTQmIyMRIxEzMhYWFRQGBgciBgcGFAcjNzMyNjU0JiMjNzMyFBcUFjEeAhUUBgEVFAYjIiY1NTQ2MzIWBzU0JiMiBhUVFBYzMjbMcQE1xAazxwE2b/oR/stxxAZe/srHb/5R/uoBFvzg/uwBFP7sARQEz29vb/0w/usBFfwdcQRU/usBFQGQ/uoBFvqNcXFxB5Nv6FxrUFhtXTgwKTb9wpYBdjs7OztdX7xCXzMiQS8BBAIMDrkwiTQzMzR3AZcODAcrOh5p/oR/ZmeBgGZngFxKQUBKS0FASQSRAR10dP7j+eEBO8pxccr+xXFxcQZXdPt0+fkC8vr6+l5xAj/5+QQYdHR0/O78/AF4+vr+iPz88wF6/oZPXFFTLi03ckYpJyke/i8CJSBCNCI4JAQTAQQB9EssJycvRgEFARMEJjkiTE8BSHBhenphcGF6etFwRE9PRHBFTk4ABQBc/dUH1whzAAMAHgAiACYAKgAAUwkCAzM0Njc2NjU0JiMiBgczNjYzMhYVFAYHDgITNSMVEzUzFQM1MxVcA7wDv/xBd8oZKURip5V/sQLLAj4nODk1KC89HcnKfwQGBAKDA8/8MfwxAt4zPhslgVKAl32NNzBANDRNGiE6Tv67qqr9SAQECpoEBAABAEIAAAKrAyAAHAAQtQMcHAsTAgAvzDIzETMwMWUVITUBPgI1NCYjIgYVIzQ2NjMyFhYVFAYGBwcCq/2qASAtNBdAO0tHnkiGXlqARC9WO6+AgGwBDypCNRYwPkw5SHZHOmlJNVxcNZIAAQB7AAAB7wMVAAYAI0AVBAUFAwMvAH8AAg8AXwCvAP8ABAABAC/NXXEyETMRMzAxQREjEQc1JQHvnNgBYgMV/OsCWTmBdAAAAgBR//UCngMgABEAIwAMsxcOIAUALzPEMjAxQRUUBgYjIiYmNTU0NjYzMhYWAzU0JiYjIgYGFRUUFhYzMjY2Ap5JhFhZhUpJhVhZhEqeID0sLD0gID8sLDwfAdCLcpVJSZVyi3KVSUmV/vamQ1UpKVVDpkNWKipWAAABAFb/+QObBJ0AMgAXQAoUHh4mATEKDCZ+AD8zPzMSOS8zMDFlMzI+AjU1NC4CIyIGBhUUFhYzMj4CNxcOAiMiJiY1NDY2MzIeAhUVFA4CIyMBEhJ/rGYtJkJVMEloNzJmTDZcRSkDNAZTlGuAqFJguoVtn2gyO431uhOTO2qOU8pHbEklRXJEQHJGIz1MKWQ6eVFts2hwuG9JgqxjRILptGcAAAQAYf/wA64EnQASACIANABEAB1ADSgXF0EODgU5MX4fBQsAPzM/MxI5LzMzETMwMUEUDgIjIiYmNTQ+AjMyHgIHNCYmIyIGBhUUFhYzMjY2ExQOAiMiLgI1NDY2MzIWFgc0JiYjIgYGFRQWFjMyNjYDrkFzmVl3wHA+cZpcXJpzP7o8a0dIajo6a0lHajucOmqPVVaQaTplsXFxsme5NV4+PlwzM14+Pl00AT1RfVQrTJVsSHVWLi5WdT47VzExVzs8Vi4uVgJQQm5RLCxRbkJnkEtLkG40UC0rTzc2UCwsUAABAEIAAAPABI0ABgAOtQUBBn0DCgA/PzMzMDFBFQEjASE1A8D96cQCF/1GBI1p+9wD9JkAAQBy//ADuwSUADEAFUAJFh8fDicLAwB+AD8yPzM5LzMwMUEzFSMiDgIVFRQeAjMyNjY1NCYmIyIGBgcnPgIzMhYWFRQGBiMiLgI1NTQ+AgLtFBB9rWsxJ0NYMEloNzNnTUR0SAQ0CFyYY4GlUGC3hWqgbDdAkvQElJ0+cJVWqEpxTCc/bUVDbkI5XjllOndRbbFncLRqSH2kXVSG67NmAAEAgf/wA8UEjQAjABdACiEJCQIZEQsFAn0APzM/MxI5LzMwMUEnEyEVIQM2NjMyFhYVFAYGIyImJiczFhYzMjY2NTQmJiMiBgE5lEQCqP31JiFuSHqyYlq5j2q3dwqyDYFiTmc0PHNRVFYCHiUCSqL+3xAhX655bLBpSpJsWVg+bkdEajwpAAACADEAAAPlBI0ABwALABVACQABAQoEC30KEgA/PzMSOS8zMDFBFSEnATMDAQERIxED5fxOAgJCkKH+lQI+uQGemHMDFP7d/jQC7/tzBI0AAAIAT//wA6AEnQAdAD0AHUANHwAAHR4eEjQqCwkSfgA/Mz8zEjkvMzMRMzAxQTMyNjY1NCYmIyIGBhUjNDY2MzIeAhUUDgIjIxU1MzIeAhUUDgIjIi4CNTMUFhYzMjY2NTQuAiMBYHtTbTYwYUpCZTq6abl4W5VsOi5hl2idnXmiXylAdJtbVZh2RLk7a0hLazklRmI9ApwvUjU3UCwpSzNdkFIqVHtRM2ZUMyxpMFNsPFF/WC0pU3xSNVEtLVQ8M0ovFwABAE8AAAPLBJ0AHgAStwsUfgMeHgISAD8zETM/MzAxZRUhNQE+AjU0JiMiBgYVIzQ2NjMyFhYVFA4CBwEDy/yeAaxMVSNwY1hwNbpnxIx7sl8nRVw1/riYmIMBnUZoVChQazdiQmapZFSXYzdnZGY4/ukAAAEAmQAAAp4EkAAGAAqzBn0CCgA/PzAxQREjEQU1JQKeuv61AesEkPtwA69inqUAAAIAY//wA6sEnQAVACsADrUcEX4nBgsAPzM/MzAxQRUUDgIjIi4CNTU0PgIzMh4CAzU0LgIjIg4CFRUUHgIzMj4CA6s7bZtgX5tvPDtvml9gnG47uh47WDo4VzsfHzxYODpXOx0Cn66DwX8+Pn/Bg66DwH49PX7A/rXkU3xSKSlSfFPkU35UKytUfgAAAwBIAAAD4QSNAAMACQANABxADAQMDA0NCH0HAwMGAgAvMzMRMz8zLzMRMzAxZRUhNQEBIzUBMyMVITUD4fymA0H8+HgDCnZJ/NKYmJgDffvrfAQRmJgAAAMADgAABBwEjQAEAAkADQAbQBAIBwMEBgAKDQgBDApyBQF9AD8zKxEXOTAxQQEzASMBAQcjAQERIxEB3QFv0P5Ncf7mAXEeb/5MAmC4AeUCqP0AAwD9U1MDAP2S/eECHwAAAQAnAAAEMgSNAAsAFUAKBwoEAQQJBQMAfQA/Mi8zFzkwMUEBATMBASMBASMBAQELAR0BH93+dQGZ3f7W/tjcAZb+cwSN/k0Bs/2+/bUBu/5FAksCQgAEADEAAAXxBI0ABQAKAA8AFQAgQA4SBBABDgQMAQgEBgF9BAAvPzMRMxEzETMRMxEzMDFBEzMHASMDExMjAQETMwEjAxMTIwEnAcn4gS7+9H6hxyp//tYEQ8W4/tZ/4vQ+fv78LwEWA3f3/GoEjfya/tkEjfycA2T7cwSN/Ib+7QOW9wACABQAAARUBI0ABAAJAA+1BwMFAX0DAC8/MxEzMDFBATMBIwEBEyMBAk4BQMb+N47+3wE+UY7+NwEjA2r7cwSN/Jf+3ASNAAABAHX/8AQLBI0AFQAPtQwRBgB9BgAvPxEzMjAxQTMRFAYGIyImJjURMxEUFhYzMjY2NQNRun3RfoPPeLdFfFJTe0QEjfz0hLNaWrOEAwz89FZvNTVvVgAAAgApAAAD/QSNAAMABwARtgYHBwEAfQEALz8ROS8zMDFBESMRIRUhNQJuuAJH/CwEjftzBI2ZmQABAET/8APeBJ0AOQAYQAoKJg82MSsYFA9+AD/MMy/MMxI5OTAxQTQuAicuAzU0PgIzMhYWFSM0JiYjIgYGFRQeAhceAxUUDgIjIi4CNTMUHgIzMjY2AyMZPGpRYZxvOz5yoGKMx2q6OXNZU242IEZwUGGWZzU/daNjWKuLUrouUmo8U3I6ASolOzEqExg/VXBJRnVWL2GhYTtcNSxMMCI4LioUGEJYckhJdVIsLVuJXDpSMxgpSgAAAgCKAAAEJgSNABkAHgAYQAobDQ0MDBoYFwB9AD8yLzM5LzMSOTAxUyEyHgIVFAYGBwchJyEyNjY1NCYmIyMRIyEBNwEVigGqaqZyO0WBWTf+dgIBKlVwOTZzWvC6AtX+1MMBMASNL1qEVlaFWxgbmDVbOT9eNfwMAgcB/gIKAAADAFr/NgRYBJ0AAwAZAC8AHEAMAAMDKysKCgIgFX4CAC8/MxI5LzMSOREzMDFlBQclARUUDgIjIi4CNTU0PgIzMh4CBzU0LgIjIg4CFRUUHgIzMj4CAxQBRH3+xQG2SIa7dHG7iUpKh7txdLyGSbgsVHpNS3hVLS5WeEtNeVQrlfFu8AJBQoTRk01Nk9GEQoTRlE1NlNHGRGOYaDY2aJhjRGOZaTY2aZkAAAEAiwAABBsEjQAYABO3AgEBDQwPfQ0ALz8zEjkvMzAxQSE1ITI2NjU0JiYjIREjESEyFhYVFA4CAl7+tAFMXHI2NnJc/ua5AdOPx2c6cqYBtpk1XDw5Yj38DASNX6VrVIVeMQACAGD/8ARbBJ0AFQArABC2JwYcEX4GCwA/PzMRMzAxQRUUDgIjIi4CNTU0PgIzMh4CBzU0LgIjIg4CFRUUHgIzMj4CBFtIhrtzcbuJSkqHu3F0u4dItyxUek1KeFUuLlZ5Sk54VCsCZ0KE0ZNNTZPRhEKE0ZRNTZTRxkRjmGg2NmiYY0RjmWk2NmmZAAEAiwAABFkEjQAJABG2AwgFAQcAfQA/Mi8zOTkwMUERIwERIxEzAREEWbn9pLm5AlwEjftzA2z8lASN/JQDbAADAIsAAAV4BI0ABgALABAAFkAJAg4KBQwHBAB9AD8yMjIvMzM5MDFTMwEBMwEjATMTESMBMxEjEcyuAYcBhq7+D4f9zp0buARPnrkEjfxxA4/7cwSN/QX+bgSN+3MBkgACAIsAAAOLBI0AAwAHAA+1BgMCBH0CAC8/ETMzMDFlFSE1ExEjEQOL/YwtuZiYmAP1+3MEjQADAIsAAARXBI0AAwAJAA0AF0AMBgcLBQwIBgoBBAB9AD8yLzMXOTAxQREjESEBASc3ARMBNwEBRLkDq/39/uAk1wGMJP5FewIhBI37cwSN/dP+6rzsAZv7cwIshP1QAAABACz/8ANNBI0AEwANtBAMBwF9AD8vzDMwMUERMxEUBgYjIiYmNTMUFhYzMjY2ApO6Za9wdrtsujhnRDxbMwFTAzr8xm+fVUuadkVXKDFbAAEAmAAAAVEEjQADAAmyAH0BAC8/MDFBESMRAVG5BI37cwSNAAMAiwAABFkEjQADAAcACwAYQAoCAwMECQUIBH0FAC8/MxEzEjkvMzAxQRUhNRMRIxEhESMRA8D9XyW5A865AouZmQIC+3MEjftzBI0AAAEAZP/wBDYEnQAqABZACSkqKgUZEH4kBQAvMz8zEjkvMzAxQREOAiMiLgI1NTQ+AjMyFhYXIy4CIyIOAhUVFB4CMzI2NzUhNQQ2GWm1jHTBjU1Eg714lMVtD7cLQHVcUnpRJzBbf098chj+5wJQ/kYgTjhLj8+EVIPOkEtfpms9Yjk2aJVfVmGXaDY1Fu6QAAMAiwAAA5sEjQADAAcACwAaQAsHBgYBCgsLAQB9AQAvPxE5LzMROS8zMDFBESMRARUhNQEVITUBRLkCwf3MAoP9fQSN+3MEjf3/mJgCAZmZAAADAET/EwPeBXMAAwAHAEEAKUATBz4+JAgXMwYGMwsCICAXAAAXfgA/My8RMxEzPzMvERI5OTMRMzAxQREjERMRIxElNC4CJy4DNTQ+AjMyFhYVIzQmJiMiBgYVFB4CFx4DFRQOAiMiLgI1MxQeAjMyNjYCcZWVlQFHGTxqUWGcbzs+cqBijMdqujlzWVNuNiBGcFBhlmc1P3WjY1iri1K6LlJqPFNyOgVz/s8BMfrR/s8BMeYlOzEqExg/VXBJRnVWL2GhYTtcNSxMMCI4LioUGEJYckhJdVIsLVuJXDpSMxgpSgADADEAAAPvBJ0AAwAHACYAHUANBAUFASIZfg4CAg0BCgA/MzMRMz8zEjkvMzAxYSE1IQMVITUlExYGBgcnPgMnAyY+AjMyFhYVIzQmJiMiDgID7/yDA33S/RQBVQgDEi4orR0kFAcCCQQzZI5YgaxVuTdbNy5JMhmYAdZ5eXr+6lCVdyRGCENeZisBFmiicDthrnRVZi0kSGkABQAOAAADkgSNAAMABwAMABEAFQAbQAsGBwMCAhEUCgkRfQA/Mz8SOXwvMxjOMjAxQRUhNQUVITUlATMBIwMBByMBAREjEQM7/SMC3f0jAUYBK8P+knHfAS0Vb/6RAhu4Ahp6esR4eI8CqP0AAwD9U1MDAP2S/eECHwACAIsAAAOFBI0AAwAHAA61BwYDfQIKAD8/MzMwMUERIxEhFSE1AUS5Avr9kwSN+3MEjZmZAAADABQAAARUBI0AAwAIAA0AG0AMCAx9AAUFCQIDAwkKAD8zETMRMxEzPzMwMWE1IRUBATMBIwEBEyMBA7z87gGkAUDG/jeO/t8BPlGO/jeYmANq/JYEjftzA2kBJPtzAAADAGD/8ARbBJ0AAwAZAC8AF0AKAwICCiAVfisKCwA/Mz8zEjkvMzAxQRUhNQUVFA4CIyIuAjU1ND4CMzIeAgc1NC4CIyIOAhUVFB4CMzI+AgNV/iAC5kiGu3Nxu4lKSoe7cXS7h0i3LFR6TUp4VS4uVnlKTnhUKwKSmJgrQoTRk01Nk9GEQoTRlE1NlNHGRGOYaDY2aJhjRGOZaTY2aZkAAgAUAAAEVASNAAQACQAOtQEJCgQIfQA/Mz8zMDFBATMBIwEBEyMBAk4BQMb+N47+3wE+UY7+NwNq/JYEjftzA2kBJPtzAAMAPgAAA0sEjQADAAcACwAXQAoHBgYCCgt9AwIKAD8zPzMSOS8zMDFlFSE1ARUhNQEVITUDS/zzAsr9dwLM/POYmJgCFJmZAeGYmAADAIsAAAREBI0AAwAHAAsAE7cKBQsHAgADfQA/MzMzMy8zMDFBFSE1MxEjESERIxEDrv1vJ7kDuboEjZiY+3MEjftzBI0AAwBAAAEDyQSNAAMABwAQACVAEg0ICQMKBhAQDgd9CgIMAwMCCgA/MxEzETM/MzMRMxIXOTAxZRUhNQEVITUBFQEjNQEBNTMDyfzBAw380AIJ/jxsAVD+sGyZmJgD9JiY/ccZ/caPAbcBt48AAwBhAAAFBgSNABUAJwArABVACRYAACt9HgwqCgA/zTI/My8zMDFBMzIeAhUUDgIjIyIuAjU0PgIXIgYGFRQWFjMzMjY2NTQmJiMTESMRAoZZdcmVVFSVyXVZdciVU1OVyHV1o1VVo3VbdaNWVqN1MLoEGDx3rnJysHg+PXewcnKvdz2bQYtuboxBQo1ubolBARD7cwSNAAACAGEAAAS2BI0AGQAdAB9ADhUUFAYHBw0cDgAdHQ19AD8zETM/EjkRMzMRMzAxQTMRFAYGIyMiLgI1ETMRFB4CMzMyNjY1AREjEQP9uYP3rhV/x4pIuSxYg1gVfKJR/uu5BI3+yLb+hEuR1IgBOP7IZJtrN2G7hQE4+3MEjQADAHYAAAR+BJ0ALAAwADQAJ0ATLTQKLjMKKBISKRERMjIxCgYdfgA/Mz8zETMRMzMRMz8zPzMwMUE1NC4CIyIOAhUVFB4CFxUuAzU1ND4CMzIeAhUVFA4CBzU+AgE1IRUhNSEVA8InUXxWVXxRJyRGYz9tqHQ8RIPAe3vAhEQ7cqZsW3M4/voBwvv8AcECaCZSiGQ2NmSIUiZmnXFHEHoNXZjKeSRwwJBRUZDAcCR5yZhdDnoWcL3+IJiYmJgAAwAn/+wFLQSNAAMABwAjABxADRcWCyANDQMECgUCA30APzMzPxI5LzM/MzAxQRUhNQERMxEDNT4CMzIWFhUUDgIjNTI+AjU0JiYjIgYGA7D8dwFjukI4coBLicRpRHulYkJlQyI4b1VIgHQEjZiY+3MEjftzAhyZFSESWrOIapJZJ5gYNVg/WG81EiEAAAIAYf/wBDEEnQADACsAF0AKAAEBCR0UfigJCwA/Mz8zEjkvMzAxQRUhNQEzDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAjMyNjYC2f32Aqi6DHHNl3G2gkZGhLt0kshxDLoKPnZfT3hRKSVMdlBkeD8ClJmZ/uVxsmZNj8p9Zn3KkE1ltHVNbjs1Z5JdZ1iRajk4bQAAAwAoAAAG+wSNABEAKQAtACBADygpKRwsHQEtfR8cCgsICgA/Mz8zPzMzMxI5LzMwMUEzAw4EIyM3Nz4ENyUyFhYVFA4CIyERMxEhMjY1NCYmIyE1AxUhNQEouhQEGzNTeFM2AykrPiobDwQEN4nBZTlvoGf+MboBFYF1M21W/rhx/cMEjf3mfcmXZDKlAQEiRGyXY2VbomxRhmI2BI38C4RVN106mQG1mJgAAAMAiwAABwoEjQAXABsAHwAhQA8XFhYbGhoeCx99DQoKHgoAPzMRMz8zEjkvMzMvMzAxQTIWFhUUDgIjIREzESEyNjU0JiYjITUHFSE1ExEjEQVaicFmOm+gZ/4xugEVgnQzbFf+uGb9cyW5AthbomxRhmI2BI38C4RVN106mU2ZmQIC+3MEjQADACkAAAUuBI0AAwAHABsAGUALGA0NAxMECgUCA30APzMzPzMSOS8zMDFBFSE1AREzEQM1PgIzMhYWFREjETQmJiMiBgYDsfx4AWO5QThxgEuJxGm5OHBVSH90BI2ZmftzBI37cwIcmRUhElm0i/6bAWVacTQSIQAEAIv+mgRDBI0AAwAHAAsADwAbQAwPC30DBwcOCgICCgoAPzMvETMzETM/MzAxZREjESUVITUTESMRIREjEQLFugGj/W8nuQO4uYT+FgHqFJiYA/X7cwSN+3MEjQAAAgCLAAAECQSNABcAGwAbQAwCAQENCw4KGxoaDX0APzMRMz8zEjkvMzAxQSEVITIWFhUUBiMhESMRITI+AjU0JiYTNSEVAln+uQFHV2wzdIL+67kBzmegbzpmwbP9gwLYmTpdN1WEA/X7czZihlFsolsBH5aWAAMALv6sBOgEjQAQABYAHgAjQBAaHR0JFwoKHBQJChYREQB9AD8yETM/MzMzETMRMy8zMDFBMwMOBAcjNzM+AzcTIREjESEBIREjESERIwFStxAFJz9PWy9cBSggPzUjBTwC27n93v6xBLm6/Lu7BI3+SorTnXFPHZgmVny8jQG0+3MD9fyj/hQBVP6tAAAFAB8AAAXsBI0AAwAJAA0AEwAXADVAGRQXFxEMCwsHBxERBg4ODwoCAhUKCQMDD30APzMRMz8zETMSOS8zMxEzETMRMxEzETMwMUERIxEhASEnMwETATcJAjMBMwcnASMBA2K5Ax/+Xf7iHNEBLBr+socBsfvz/mThASvRHK7+tOsBtQSN+3MEjf1qmQH9+3MCE4b9ZwH3Apb+A5kc/e0CmQACAEj/8APVBJ0AHgA+AB1ADR8CAgE+PhU0KgsLFX4APzM/MxI5LzMzETMwMUEjNTMyNjY1NCYmIyIGBhUjND4CMzIeAhUUDgInMzIeAhUUDgIjIi4CNTMeAjMyNjY1NC4CIyMCEJKOWnAzOHRcQmxBuUFzmlpfo3pFQ3ee7JJ1q282SoOoX0iahVK5BUZxRFp+QiNFZUKOAix0K082M1AvJEo6S3dULSVNeVNFcVEsRS9Tbj9XgFMoIE2CYUJQJCxTOTNLMRgAAAMAiwAABGIEjQADAAcACwAbQAwAAwoHCwoBAgUFCH0APzMRMzM/MzMzMzAxdwEXAQEzESMBMxEjwALog/0ZAmS6uvzjublcBDFc+88EjftzBI37cwAAAwCMAAAELASNAAMACQANAB9ADgwLCwcHBgYCCQN9CgIKAD8zPzMSOS8zETMRMzAxQREjESEBIyczARMBNwEBRbkDgf3q8By+AYQQ/ltuAiYEjftzBI39apkB/ftzAhOG/WcAAAMAKAAABDcEjQADAAcAGQAYQAsTEAoHAgMDCH0GCgA/PzMRMzM/MzAxQRUhNSERIxEhMwMOBCMjNzc+BDcDk/3DAuG6/au6FgUcNFN2UDYDKSs9KhoPBASNmJj7cwSN/eZ9yZdkMqUDAyJEapVjAAACACP/7AQMBI0AEgAXABdACgEXfRUWFg4OBwsAPzMRMxEzPzMwMUEBMwEOAiMiJic3FhYzMjY2NwMTEwcBAiIBFdX+bCFLfGsZQgkGC0EQMkErEtv9cJ/+XQG4AtX8ZUp3RQQDlAEDLUUkA3T9pP7aLwOxAAQAi/6sBPIEjQAFAAkADQARAB1ADRENfQUJCRALCAICCAoAPzMvETMzMxEzPzMwMWUDIxEjNTMVITUTESMRIREjEQTyEqaQBP1vJ7kDubqY/hQBVJiYmAP1+3MEjftzBI0AAgA9AAAD4ASNAAMAFwATtxQJCQIDDn0CAC8/MxI5LzMwMUERIxETFQ4CIyImJjURMxEUFhYzMjY2A+C6Qjhyf0yIxWm6OHBUSX91BI37cwSN/eaZFSATWbWKAWP+nVpwNRMgAAQAiwAABccEjQADAAcACwAPABlACwsHBw8QCgYGAw59AD8zMxEzPzMRMzAxZRUhNQERIxEhESMRIREjEQUx+8YCjrkC+7r8N7mYmJgD9ftzBI37cwSN+3MEjQAABQCL/qwGdQSNAAUACQANABEAFQAnQBIRDQ0VfQQQAgIQEAwMExMJCAoAPzMzETMRMxEzLxEzPzMRMzAxZQMjESM1MxUhNQERIxEhESMRIREjEQZ1EqWQA/vGAo65Avy7/De5mP4UAVSYmJgD9ftzBI37cwSN+3MEjQACAAkAAATXBI0AAwAaABdACgYFBQ8SChEBAH0APzIyPzM5LzMwMVMVITUBIRUhMhYWFRQGIyERIxEhMjY2NTQmJgkBtQFp/rkBR1dtM3WC/uu5Ac6JwWZmwQSNmJj+S5k6XTdVhAP1+3Nepmtsolv//wCLAAAFZwSNBCYCGAAAAAcB8wQWAAAAAQCLAAAECQSNABYAFUAJFRYWCgwJCgp9AD8/MxI5LzMwMUEyFhYVFAYGIyERMxEhMjY1NCYmIyE1AlmJwWZmwYn+MrkBFYJ0M2xX/rkC2FuibGumXgSN/AuEVTddOpkAAgBL//AEGwSdAAMAKwAXQAoCAQEcCCcLExx+AD8zPzMSOS8zMDFBITUhAR4CMzI+AjU1NC4CIyIGBgcjPgIzMh4CFRUUDgIjIiYmJwOt/fcCCf1YDD95ZFB1TCUpUXhPXnY+C7oNcMmRdLuERkaBtnGXzXENAfuZ/uVNbTg5apFYZ12SZzU7bk11tGVNkMp9Zn3Kj01msnEAAAQAi//wBhYEnQADAAcAHQAzAB1ADiQZfi8OCwMCAgYHfQYKAD8/EjkvMz8zPzMwMUEVITUTESMRARUUDgIjIi4CNTU0PgIzMh4CBzU0LgIjIg4CFRUUHgIzMj4CAoX+b1C5BYtIhrtzcbuJSkqHu3F0u4dIuCxUeU1LeFUuLld4S015UysCl5mZAfb7cwSN/dpChNGTTU2T0YRChNGUTU2U0cZEY5hoNjZomGNEY5lpNjZpmQAAAgBQAAAD/QSNAAMAIwAZQAsjAAQEGRsWfRkBCgA/Mz8zEjkvMzMwMUEBIwEFIS4CJy4CJy4CNTQ+AjMhESMRISIGFRQWFjMhAkv+ysUBQQHl/oMPDhEUAw4OA113OThunmYBy7r+74FvMGpWAUYCRv26AkZmAgYHBAEICAEXWXpJUX9XLvtzA/VsWDhULQAAAwALAAAD6ASNAAMABwALABtADAsKCgMCBgcHA30CCgA/PzMRMxESOS8zMDFBESMRIRUhNQEVITUBprkC+/2SAQ79gwSN+3MEjZmZ/giYmAAGAB/+rAYjBI0AAwAHAA0AEQAXABsAO0AcAg4BAQ4OBhsYGBUSEhAPDAkJEwYGGQoNBwcTfQA/MxEzPzMREjkvMzMzMxEzMxEzETMRMy8RMzAxQSMRMwERIxEhASEnMwETATcJAjMBMwcnASMBBiOoqP0/uQMf/l3+4hzRASwa/rKHAbH78/5k4QEr0Ryu/rTrAbX+rAHrA/b7cwSN/WqZAf37cwIThv1nAfcClv4DmRz97QKZAAQAjP6sBE4EjQADAAcADQARACdAEhAPDwsKCgYNB30CDgEBDg4GCgA/MxEzLxEzPzMSOS8zMxEzMDFBIxEzAREjESEBIyczARMBNwEETqen/Pe5A4H96vAcvgGEEP5bbgIm/qwB6wP2+3MEjf1qmQH9+3MCE4b9ZwAABACMAAAE6ASNAAMABwANABEAKUATEA8PCgALCwoDAwoKBg0HfQ4GCgA/Mz8zEjkvMy8RMxEzETMRMzAxQTMRIwMRIxEhASEnIQETATcBAZSVlU+5BD396v5UHAF5AYUQ/ltuAiYDdf20A2T7cwSN/WqZAf37cwIThv1nAAQAJAAABRUEjQADAAcADQARACFADxAPDwsKCg4GCg0HBwMAfQA/MjIRMz8zOS8zMxEzMDFTIRUhJREjESEBIyczARMBNwEkAbX+SwIKuQOB/erwHL4BhBD+XG0CJgSNmJj7cwSN/WqZAf37cwIThv1nAAEAYP/rBVwEoABEABtADAABAS8YCyQjIzoNfgA/MzMRMz8zMy8zMDFlFSIuAzU1ND4CMzIeAhUVFA4CIyIuAjU1ND4CMxUiDgIVFRQeAjMyPgI1NTQuAiMiDgIVFRQeAgVclfzFikg0ZJFcXJBlNF+u75GL3JlRQXmnZj9kRiU1Z5ljcK14PhgxTTU0TTIYTpvpip44b6HTgSZ1t4BDQH65eDqT76tcUp/mkx+Gz45JnjBjlGUhc61zOUSAtnE9VX5TKStVfVIrgL9+PwD//wAOAAAEHASNBCYB4wAAAAcCNgBE/t0AAgAn/qwEcQSNAAMADwAiQBELDggFBAoGD30CCgEBCgoNCgA/MxEzLxEzPzMSFzkwMUEjETMJAjMBASMBASMBAQRxp6f8mgEdAR/d/nUBmd3+1v7Y3AGW/nP+rAHrA/b+TQGz/b79tQG7/kUCSwJCAAUAJ/6sBfMEjQAFAAkADQARABUAIkAQEQ0NFBV9EBIMCQQIAgIIEgA/My8RMzMzPz8zMxEzMDFlAyMRIzUzFSE1ExEjESERIxEjFSE1BfMSppAE/W4ougO5udv8d5j+FAFUmJiYA/X7cwSN+3MEjZiYAAMAPQAAA+AEjQADAAcAGwAfQA4AGBgNAwMNDQYHEn0GCgA/PzMSOS8zLxEzETMwMUEzESMBESMRExUOAiMiJiY1ETMRFBYWMzI2NgHGlJQCGrpCOHJ/TIjFabo4cFRJf3UDHP20A737cwSN/eaZFSATWbWKAWP+nVpwNRMgAAIAiwAABC0EjQADABcAFEAJDxIUCQkBfQASAD8/OS8zPzAxcxEzEQM1PgIzMhYWFREjETQmJiMiBgaLuUE4cYBLicRpuThwVUiAdASN+3MCHJkVIRJZtIv+mwFlWnE0EiEAAQAC//AFbASdADQAG0AMGBgdHRERIgt+LQALAD8yPzM5LzMRMy8wMUUiLgI1NTQ+AjMyHgIVFSEiLgI1MxQWFjMhNTQmJiMiDgIVFRQeAjMyNjcXDgIDkoPQkk1Oi7xvgMODQvwmY5ZkM5k1bVUDIUqUcUp6Vy8rWo9kaIswORldihBNjsJ2g3fEj01KisR7hjVjjFZFZjgbZpVRNmSMVoNRh2M2MRaSDykfAAEAXv/wBGoEnQArABVACREUFBkLCyQAfgA/Mj8zOS8zMDFBMh4CFRUUDgIjIi4CNTUhFSEVFBYWMzI+AjU1NC4CIyIGByc+AgJIf8qOS02MvG6Bw4NCA479LEmVcUp5Vy8rWo9kaIsvORpgkASdTY7DdoJ3xI9NSorEe4aYGmaVUTZkjFaCUYdjNzEXkhApHwAAAgBI/+wD1QSNAAcAJgAbQAwIBQUEJiYdEwsHAH0APzI/MzkvMzMRMzAxUyEXASM1ASEBMzIeAhUUDgIjIi4CNTMeAjMyNjY1NCYmIyNwAzgB/kpoASn9vAEbhXWrbzZKg6hfSJqFUrkFRnFEWn5CPnlYgQSNdv45dAEx/sA9Z31BXohXKiJNhGFCUycvXUVAWTAAAAMAYP/wBFsEnQAVACQANAAbQA4LJWotHWotLQsAFmoACwAvLysSOS8rKzAxQTIeAhUVFA4CIyIuAjU1ND4CFyIGBgcGBgchJiYnLgIDMjY2NzY0NyEWFhceAwJddLuHSEiGu3Nxu4lKSoe7cVmIVQsBAQECigEBAQtTiFteiVEKAQH9dgEBAQg1VG8EnU2U0YRChNGTTU2T0YRChNGUTZtNlWwIEQkJEwhrlE38iE6YbQgPBwgRCFF+VSwABAAxAAAD7wSdAAMABwALACoAIUAPBgcDAgIJJh1+EgoKEQkSAD8zMxEzPzMSOS8zzjIwMUEVITUFFSE1ASE1IQETFgYGByc+AycDJj4CMzIWFhUjNCYmIyIOAgMd/RQC7P0UA778gwN9/ZcIAxIuKK0dJBQHAgkEM2SOWIGsVbk3WzcuSTIZAql6eud5ef4+mAJQ/upQlXckRghDXmYrARZoonA7Ya50VWYtJEhpAAADAEP/8AOfBJ0AIwAnACsAHUANJyYmKisrBxkSfgAHCwA/Mz8zEjkvMzMvMzAxZTI2NxcGBiMiLgI1NTQ+AjMyFhcHJiYjIg4CFRUUHgITFSE1BRUhNQK6O1s0GzdwPnGyfEFAe7JxP2s9FTNkO0tuSSMkSW/B/RMC7f0Thw8OlQ8QQH+8e7x7voBCEQ6UEAstWYRXvleDWSwCbnl55nl5AAAEAIsAAAetBJ0AAwAVACcAMQApQBIrMC4tJAkJMS59Ki0KGxISAgMALzMzfC8zGD8zPzMzLzMREjk5MDFBFSE1AzU0NjYzMhYWFRUUBgYjIiYmNxUUFhYzMjY2NTU0JiYjIgYGAREjAREjETMBEQdv/dNBVJlpaplTUplpappUoydRPTxPJyhPPTxQJ/61uf2kubkCXAFLjo4BsFNil1ZWl2JTYZdWVpe0UzhZMzNZOFM3WDQ0WAEI+3MDbPyUBI38lANsAAACACgAAARnBI0AGAAcABtACxscAgEBDgwPfQ4KAD8/MxI5fC8zGM4yMDFBITUhMjY2NTQmJiMhESMRITIWFhUUDgIHFSE1Arf9cQKPV2wzM2xX/uu5Ac6JwWY6b6B5/YMBpZhAZDY5ZUD8CwSNYahrUYhkN1mXlwACAD//9QKbAyAAGQAzABlAChsAABkaGggQLCQALzPMMjkvMzMRMzAxQTMyNjY1NCYjIgYVIzQ2NjMyFhYVFAYGIyMVNTMyFhYVFAYGIyImJjUzFBYzMjY1NCYmIwEKVDFAIUBFOUudTIJQV4RKQXtYb29kgD5Qi1dLiVadUEJGSSdHMQHLHDEgLDwyK0RjNjNkSTVZNSVOMFpASWg2MWhRLT0+MSozFwACADYAAAK8AxUABwALABdACQMHBwEBBgUICgAvzDIyOS8zETMwMUEVIScBMwcDAREjEQK8/YEHAXp8ic8BfJ0BLIJmAgXl/vwB6fzrAxUAAAEAXP/1AqgDFQAhABK2HwkJBAMZEQAvM8wyOS8zMDFTJxMhFSEHNjYzMhYWFRQGBiMiJiYnMxYWMzI2NTQmIyIG7n0xAd/+oxcTSy5VeUFAgmRKhFQEmwVMOkk/Tkk3OAFkIAGRg6sIFj50UUd7SzVmSDMwUj0+ThwAAQBW//UCrAMfAC0AE7YTHBwDAAwkAC8zzDI5fS8zMDFBMxUjIgYGFRUUFhYzMjY2NTQmIyIGBgcnPgIzMhYWFRQGBiMiJiY1NTQ+AgITFgtihkMmQioqPiJHRCtGKgIqAztrSFVxOEeDWl6JSzlxpgMfgzl2WnQ4TCYmQCg+SyE0HC8rWT5GeEpNe0dNjWA3aKNyPAAAAQA7AAACpgMVAAYADLMFAQYCAC/MMjIwMUEVASMBITUCpv6ipgFe/jsDFVr9RQKUgQAEAE//9QKfAyAADwAfAC8APQAXQAoMJDsDFBQ0LBwEAC8zzDI5LxczMDFlFAYGIyImJjU0NjYzMhYWBzQmJiMiBgYVFBYWMzI2NhMUBgYjIiYmNTQ2NjMyFhYHNCYmIyIGFRQWFjMyNgKfTYZUVIZPTYZVVYZNnCQ/KSo+IiI/Kik/I4lHfFFRfUdHfVBQfUieHTUlN0AdNiU3P9hLZTMzZUtEYjY2YjgjMRsbMSMiMhsbMgGCPl0zM10+R2IzM2JRHy0aNjAeLho4AAABAEr/+QKVAyAALgATthIbGwojAS0ALzPMMjl8LzMwMXczMjY2NTU0JiYjIgYGFRQWFjMyNjY3Fw4CIyImJjU0NjYzMhYWFRUUDgIjI9EOZHw6JT4oKj0hHz4tLUIlAS8CPGZDVHQ7R4NaXYRGNGykcQ94NGxSkjdIJCpFKShAJiI0Gi0uVzhDd05Nf01NkGUzaaFvOQABAI8CiwMMAyMAAwAIsQMCAC8zMDFBFSE1Awz9gwMjmJgAAwCfBEACbwZyAAMADwAbABlACRMNDQcBAwMZBwAvMzN8LxjNETMRMzAxQTczBwc0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBgEgkr3c9GVGRWNjRUZlVDQjIzExIyM0Bbu3t9hKXV1KSFtbSCMxMSMmMjIABACLAAADrwSNAAMABwALAA8AG0AMCwoKBg8OB30DAgYKAD8zMz8zMxI5LzMwMWUVITUTESMRARUhNQEVITUDr/1oLbkCzf2/ApL9bpiYmAP1+3MEjf4Zl5cB55mZAAQAH/5KBBEETgASACQAWwBfADNAGl1fBnIlJhgYD0BBQS5TUw8PBUo3D3IhBQdyACsyKzIROS85ETMzETMRMxI5OSsyMDFTNTQ2NjMyFhYVFRQOAiMiJiY3FRQWFjMyNjY1NTQmJiMiBgYTFwYGFRQWFjMzMhYWFRQOAiMiLgI1NDY2NxcOAhUUHgIzMj4CNTQmJiMjIiYmNTQ2NgEXISddbcF+gMFsPnGdX3/Cbbk9bkpJbTw9bklIbj0nXhtAIjojrIK3YkeKx4BxrXU8WoVCNypILSFFaEhVg1kuKWNW0EV1SDdNAvIC/oMLAtIWaKJcXKJoFkmCYzhho3gWNF88PF80FjhdOTld/q4yED04HyUPP4JlOXhlPixOZDdZfUsNTQc1TzEhOy0aIzlCHy1AIiZPPkNcPAJ/kpIAAAQAZP/rBFkETgAVACsALwAzABdADDAKLQYcEQtyJwYHcgArMisyPz8wMVM1ND4CMzIeAhcVDgMjIi4CNxUUHgIzMj4CNzUuAyMiDgIFEzMLAjMTZDhrnmZmmGo+DAs+a5lnZJ1sOLogQ2tLP15DLA4LKkNgQExrRCACNU6xakBVlXEB9RWA1JtVSYnBeUt4wYpJTYy/hxVNhmY5QG6MTCVKi3FCRHabRQIe/eL95AIc/eQAAAIAsgAABOQFsAAZAC4AH0APJggbGhoCAQEODA8Ccg4IAD8rMhI5LzMzETM/MDFBISchMjY2NTQmJiMhESMRITIWFhUUBgYPAjcyFhYVFRQWFhcVIy4CNTU0JiYC3/5mAgFodIw/PoRr/rbBAg2g23FUoHIYVBanvE4MHhrGHhoGP3YCdZ07clJOdD/67gWwX7iIXZJlGhsTb1+obIUoT0MZGRtdXBqBT3ZBAAADALIAAAUeBbAAAwAJAA0AIEAQCggJAgwLCwcGBgIDAnICCAA/KxI5LzMzETM/PzAxQREjESEBISchARMBNwEBc8EEQv2I/qoeAQEB/C393WwCowWw+lAFsPzfoAKB+lACqKn8rwADAJMAAAQVBgAAAwAJAA0AHEAOCwcGBgIJBnIDAHIKAgoAPzMrKxI5LzMzMDFBESMRAQEhJzMBEwE3AQFMuQNO/kP+5hbWATs0/oxiAe4GAPoABgD+Ov27mgGr+8YCAqX9WQAAAwCyAAAE+wWwAAMACQANABpADgYLBwgMBQIJAwJyCgIIAD8zKzISFzkwMUERIxEhASEnMwETATcBAXPBBCD9Uf7uC3gCZCv9NaEDGAWw+lAFsP0fWwKG+lAC6GX8swAAAwCTAAAD8gYYAAMACQANACBAEAwLCwcGBgIJBnIDAXIKAgoAPzMrKxI5LzMzETMwMUERIxEBASMnMwETATcBAUy5AzX93JoWWQGKNv45awJBBhj56AYY/iL9upkBrfvGAgCT/W0AAgCLAAAEIASNABkAHQAWQAkbGg8CAQ4PfQEALz8zETMRMzIwMWEhNyEyNjY1NTQuAiMhNSEyHgIVFRQGBgERIxEB5/74AQEHgatUMF6LW/7mARp8zZRQjf/+sLmYYLN7Ql+UZTSZTZHLfkCn+IcEjftzBI0AAAEAYf/wBDEEnQAnABG2GRUQfiQABQAvzDM/zDMwMUEzDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAjMyNjYDd7oMcc2XcbaCRkaEu3SSyHEMugo+dl9PeFEpJUx2UGR4PwF5cbJmTY/KfWZ9ypBNZbR1TW47NWeSXWdYkWo5OG0AAAIAiwAAA/AEjQAZADEAKEATHBspGQICARsmAQEmGwMNDA99DQAvPzMSFzkvLy8RMxI5OREzMDFBISchMjY2NTQmJiMjESMRITIeAhUUBgYHAyE3ITI2NjU0JiYjIzchFx4CFRQOAgJS/sECAR1IaDg4bVDduQGWY55xPEyOZUf+iF8BGU1pNy9lUO8BAUEoYIFCO2+cAhOMJ0s2PE0k/AwEjSZOeFJHdUkH/b2YLFI5O1gxjDUDUX9JU31UKgADABQAAARxBI0ABAAJAA0AHEAMDQAGAwwMAQcDfQUBAC8zPzMSOS8SOTkzMDFBASMBMwEBJzMBAxUhNQJe/nO9Ad95AUn+dg16AdnX/UwD6vwWBI37cwPun/tzAa+YmAABAJ8EjwGWBjwACgAKsgWAAAAvGs0wMVM1NDY2NxcGBhUVnyxBH2siGwSPgTt1YBxTPGg+eAACAIIE3wLgBosADwATABK1EhMKAA0FAC8zfNwy1hjNMDFBMxQGBiMiJiY1MxQWMzI2JyczFwJHmUmIXV6ISphEVFBFtaSZcQWwPV42Nl49LkVFQsfHAAL8owS9/swGlAAXABsAHUAMABUVBRkbGwkREQwFAC8zMxEzMy8zETMRMzAxQRcUBgYjIiYmIyIGFSc0NjYzMhYWMzI2JTczB/55UytKMTZBOiwiMFQqSzEtREIqITL+8IOrtgWVGDBSMSYmMyYVMFMzJiUzQuLiAAIAbwTiBFgGlQAGAAoAFLcIBwcFAYAEBgAvMxrNOTMvzTAxUwEzASMnByUTMwNvASOYASPFqqoBz43IyQTiAQb++p6esQEC/v4AAv9dBM8DRwaDAAYACgAXQAkHQAgIAwaAAgQALzMazTkzLxrNMDFBASMnByMBJRMjAwIjASTGqqnFASL+mo6NyQXW/vmfnwEHrf7+AQIAAgBpBOQD7QbQAAYAGgAfQA0REghAGgkICAMGgAIEAC8zGs05MxEzMxoQzDIwMUEBIycHIwEFIyc+AjU0JiYjNzIeAhUUBgcCNQESq8XEqgEQAe1zASw2GiZAJwZAYUMiUzMF6/75uroBB32EAwwZFhkdDV0XKzslQTsHAAIAaQTkA0cG1AAGAB4AJUAQCAcHEBgMQBQTExwMDAaABAAvGs0yETMzETMaEM0yMhEzMDFBBSMnByMlNxcUBgYjIiYmIyIGFSc0NjYzMhYWMzI2AhkBLqvFxKoBLflNK0gtMjw1KR80TStJLCo+PScfNAXY9J6e9PwWKEgtJCQvHBMoSS8jIy0AAAMAiwAAA4UFxAADAAcACwAbQAwCCgoLCwcDAwd9BgoAPz8zLxEzETMRMzAxQREjEQERIxEhFSE1A4W5/ni5Avr9kwXE/jAB0P7J+3MEjZmZAAACAIIE3wLgBosADwATABK1ERMACg0FAC8zfNwyGNbNMDFBMxQGBiMiJiY1MxQWMzI2JzczBwJHmUmIXV6ISphEVFBF0HGZpAWwPV42Nl49LkVFQsfHAAIAggTgAssHBAAPACUAKEARGxwcESUSEhERCQ0FAAkJBRAAPzN8LzMRMxEzGC8zETMRMy8zMDFBMxQGBiMiJiY1MxQWMzI2JyMnPgI1NC4CIzcyHgIVFAYGBwI4k0eCW1qER5JET05DSYABMT0eGSw7IQdIbkkmK0QmBbA9XjU1Xj0uRUU/fQIMFxQQFw4GUhUmNSAnMBgFAP//AFECjQKeBbgGBwHXAAACmP//ADYCmAK8Ba0GBwIwAAACmP//AFwCjQKoBa0GBwIxAAACmP//AFYCjQKsBbcGBwIyAAACmP//ADsCmAKmBa0GBwIzAAACmP//AE8CjQKfBbgGBwI0AAACmP//AEoCkQKVBbgGBwI1AAACmAABAH7/6wUeBcUAKQAVQAoaFhEDciYABQlyACvMMyvMMzAxQTMOAiMiLgM1NTQSNjYzMhYWFyMuAiMiDgIVFRQeAzMyNjYEXMEPhuyqa76ccT5apuOIpfKPD8IPWZpxYp1wOypNbIRMdZRRAc+K239CfbDegT2iAQi/ZnzckGWUUVGVzXw/ZKyKYjVOkwAAAQB+/+sFHwXFAC0AG0ANLSwsBRoWEQNyJgUJcgArMivMMxI5LzMwMUERDgIjIi4DNTU0EjY2MzIWFhcjLgIjIg4CFRUUHgMzMjY2NxEhNQUfGoLXnW/GpHdBXKjihrLsgxTBD1GYfF6ccj8tVHONT2GJVBL+sALT/ewnZElBfLPmiRusARG/ZHTKgU+DT1GX1YMdbLSNYjMjMhYBRZsAAAIAsgAABREFsAAbAB8AErccDxACcgIdAAAvMjIrMjIwMWEhNyEyPgI1NTQuAiMhNSEyFhYSFRUUAgYEAREjEQJT/rgCAUV3vYRFRoK1b/6iAV+S+bpoZ73+//6HwZ1Oksp7LYHLjUqeY7n++6Irov77uWIFsPpQBbAAAgB+/+sFXwXFABkAMQAQtyEUA3ItBwlyACsyKzIwMUEVFA4DIyIuAzU1ND4DMzIeAwc1NC4DIyIOAhUVFB4DMzI+AgVfPW+bvWtou51zPz9ynLtoa76bcD2+Kk5rhUtanXdDLFBtgkhfnnRAAu4sgN+zgEVFgLPfgCyA3rSARUWAtN6sLmStimI0UZXOfS5lropjNFGV0AADAH7/BAVfBcUAAwAdADUAG0ANJRgDcgADAzELCXIBAgAvMysyMhEzKzIwMWUBBwEBFRQOAyMiLgM1NTQ+AzMyHgMHNTQuAyMiDgIVFRQeAzMyPgIDqQF0g/6TAjI9b5u9a2i7nXM/P3Kcu2hrvptwPb4qTmuFS1qdd0MsUG2CSF+edECg/tx4ASECxyqA37OARUWAs9+AKoDftIFFRYG036osZa2LYjRRlc9+LGWui2I0UZXPAAEAoAAAAskEjQAGABVACQMEBAUFBn0CCgA/PzMvMxEzMDFBESMRBTUlAsm5/pACCgSN+3MDp4unygABAIMAAAQgBKAAIAAXQAoQEAwVfgMgIAISAD8zETM/MzMvMDFlFSE1AT4CNTQmJiMiBgYVIzQ2NjMyHgIVFA4CBwEEIPyHAepLQhAyZE1Peka5ds6EZZlpNRs1TDH+j5iYhAG4QVtKJjJXNz50UXG6cDRcekYwXVpYLP6zAAABAA/+owPeBI0AHwAaQAsGAB4eAxYPBQIDfQA/MzMvMxI5LzMzMDFBASE1IRUBHgIVFA4CIyImJzcWFjMyNjY1NCYmIyMBbwF2/XMDc/5/cLdtVJjNemrIajVMr1t8sV5Tp4A8AmMBkph1/mwPdb6Ag8qLRzM0iygwX6ZqcpVJAAIAPv62BKAEjQAHAAsAFkAJBgQLfQoDBwcCAC8zETMvPzMzMDFlFSE1ATMDAQERIxEEoPueAteQn/4SAsO5l5huBCD+0P06A/b6KQXXAAEAZf6gBAYEjAAnABZACSQJCQIaEwUCfQA/My8zEjkvMzAxQScTIRUhAzY2NzYeAhUUDgIjIiYnNxYWMzI+AjU0LgIjIgYGASCaZgMU/X83LIBYZqN0PUSFxoNqyVw6Q65kT39bMClOb0dWYzUBYxEDGKv+dRomAQFEgrVvbr+QUTc7ijQwOGSIUER2WTIjQAAAAQBK/rYD8gSNAAYAD7UBBQUGfQMALz8zETMwMUEVASMBITUD8v2huwJX/RsEjWn6kgU/mAAAAgCEBNkC0wbQAA8AJwApQBEREBAZISEVHRwcJRUVAAkNBQAvM80yMnwvMzMRMxEzGC8zMxEzMDFBMxQGBiMiJiY1MxQWMzI2ExcUBgYjIiYmIyIGFSc0NjYzMhYWMzI2Aj2WSIRcW4RIlUJQUEI5VCtKMTZBOiwiMFQqSzEtREErITEFrj5hNjZhPi5ISAFQGDBSMSYmMyYVMFMzJiUzAAEAaP6ZASEAmgADAAixAQAAL80wMWURIxEBIbma/f8CAQAFAGD/8AZtBJ0AKQAtADEANQA5ADFAGDg5OTF9Fi0tFzAKNTQ0JhsBBgYmfhEbCwA/Mz8zETMREjkvMz8zMxEzPzMRMzAxQQciLgIjIg4CFRUUHgIzMj4CMxciBgYjIi4CNTU0PgIzMhYWARUhNRMRIxEBFSE1ARUhNQPyKh5kb2AaSnhVLi5WeUobXm5kHy1RloAwcbuJSkqHu3EwgZYCyf1oLbkCzf2/ApL9bgSNmQQGBDZomGNEY5lpNgMFBJYICE2T0YRChNGUTQgI/AuYmAP1+3MEjf4Zl5cB55mZAAEAgv6pBEAEoQA7ABS3ABUfHzULKTUALy8zEjkvMzIwMUUyPgI1ETQuAiMiDgIVFB4CMzI+AjU3FAYGIyIuAjU0PgIzMh4CFRUUDgMjIiYnNxYWAeBdmnE+KU9ySTtlTCsnTGtDUndNJml0w3dsrHpAR3+mYG+2hUg6apOyZUKUQCYybMBHj9WNAQhik2MyLlyJW0V/YjkxUF0sAoi7YEqGuG59wIRERYzVj/KO5a51OxwfjhMfAAAB/7b+SwFoAJkAEQAKsg0GAAAvzDIwMXczFRQGBiMiJic3FhYzMjY2Na66TZBlHzQdDg9FDis9IJnycJxQBwqdBgYqUz3//wA7/qMECgSNBAYCXCwA//8Ac/6gBBQEjAQGAl4OAP//ACL+tgSEBI0EBgJd5AD//wB2AAAEEwSgBAYCW/MA//8Adv62BB4EjQQGAl8sAP//ADb/6wRHBKEEBgJ1vgD//wB+/+wEFgWyBAYAGvkA//8AXv6pBBwEoQQGAmPcAP//AHH/7AQPBcQGBgAcAAD//wD0AAADHQSNBAYCWlQA////tP5LAWYEOgQGAJwAAP///7T+SwFmBDoGBgCcAAD//wCcAAABVQQ6BgYAjQAA////+f5YAVoEOgYmAI0AAAEGAKTHCgALtgEEAgAAQ1YAKzQA//8AnAAAAVUEOgYGAI0AAAADAIv/6wP6BJ0AAwAWADEAKUAUDyYmDSMjCRsvC3IEAAACEwl+AgoAPz8zEjkvMysyETkvMzMRMzAxQREjERcjNDY2MzIWFwEjNRMmJiMiBgYTNxYWMzI2NjU0JiYjIzUzMh4CFRQGBiMiJgFDuLi4V7GHg8BP/ppp7h5UP1NeJkw1H1Q3Q10yPHlaVHVhnW87ZbN0OHAC8f0PAvECj79ga0z+UGsBJxcnTX7845gTIDlkQUFQJYopUHdNeKhZGAACAHj/6wSJBKEAFQArAA61HBF+JwYLAD8zPzMwMUEVFA4CIyIuAjU1ND4CMzIeAgc1NC4CIyIOAhUVFB4CMzI+AgSJTIu+cnC/jU5OjL5wcr6MTbkwWXxLSntZMDFae0pMe1gvAlAUkt6VTEyV3pIUkt6VTEyV3rIuaaBrNzdroGkuaaBtNzdtoAABADsAAAPTBbAABgATQAkBBQUGBHIDDHIAKysyETMwMUEVASMBITUD0/2+uwJA/SUFsGj6uAUYmAAAAwCM/+wENQYAAAQAGgAvABlADiEWB3IrCwtyBApyAAByACsrKzIrMjAxUzMRByMBFRQOAiMiLgInNT4DMzIeAgc1NC4CIyIOAgcVHgIzMj4CjLoZoQOpPnSiZWebaj8MDD9qmmZmpHM+uiZMcUxGZ0gtCxBJe1tLcUsmBgD60tICJxV2yZVSR4a+d1x4vodHT5LKkRVUj2w8MFFnN/FGgVI+bI4AAAEAXf/sA+8ETgAnABlADB0ZGRQHcgQEAAkLcgArMjIvKzIvMjAxZTI2NjczDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAgJAQ3BIBa8Fd8BzerZ4Ozx4tXp/vm0FrwVBb0tVc0UdHURzgzdfPWClZVaWw20qbcOWVmexcENsQUNxiUcqR4twQwAAAwBb/+wEAQYAAAQAGgAvABlADSEEBBYLcisLB3IBAHIAKysyKzIvMjAxZREzESMBNTQ+AjMyHgIXFQ4DIyIuAjcVFB4CMzI2Njc1LgMjIg4CA0e6ofz7Q3mjYWaZaz4MCz9rmmdfo3lDuidOcktcd0gUDC1HZ0ZMc04n0gUu+gACERV8y5JPR4e+eFx3voZHUpTJixVRjmw9ToBL8TdnUTA8bJAAAAMAW/5VBAEETgATACkAPgAbQA8wJQtyOhoHcg4GD3IABnIAKysyKzIrMjAxQTMRFA4CIyImJzcWFjMyNjY1EQE1ND4CMzIeAhcVDgMjIi4CNxUUHgIzMjY2NzUuAyMiDgIDZJ0+ea9xT8hPOD6gTmR+Pf0UQXijY2aZaz8MDD9qm2dho3hBuidNcktcd0gUDC1HZ0ZMc00nBDr8FHm8gUMzNooqMU+ZcAMH/sUVfMuST0eHvnhcd76GR1KUyYsVUY5sPU6AS/E3Z1EwPGyQAAACAFr/7ARFBE4AFQArABC3HBELcicGB3IAKzIrMjAxUzU0PgIzMh4CFRUUDgIjIi4CNxUUHgIzMj4CNTU0LgIjIg4CWkeFuHByuYVHR4S5cXG5hUe5KlB3TEx1USkqUHZNTHVQKgIRF3XJlVNTlcl1F3XIlVNTlciMF1GPbz8/b49RF1CPb0BAb48AAAMAjP5gBDMETgAEABoALwAZQA4hFgdyKwsLcgMGcgIOcgArKysyKzIwMUERIxEzARUUDgIjIi4CJzU+AzMyHgIHNTQuAiMiDgIHER4CMzI+AgFGup8DCD5zomVnnm5BDAxCbZxmZqR0PbooT3RMRmdILQsUSHhbS3NPKANq+vYF2v3sFXbJlFJEgrZycHi+h0dPksuRFVSQbDwwUWc3/v1Ge0w/b48AAAMAW/5gBAAETgAEABoALwAZQA4hFgtyKwsHcgQOcgMGcgArKysyKzIwMUERNzMRATU0PgIzMh4CFxUOAyMiLgI3FRQeAjMyNjY3NS4DIyIOAgNGGaH8W0B3pmZmm21ADAtAbZ1nZKV3QbooT3NLXHtKFAsvSmlGTHRPKP5gBQrQ+iYDsBV8y5NPR4e+eFx3voZHUpPJixVRj24/UYNL8TdoUzE+bpEAAAEAXf/sA/METgAqABlADBMSEgAZCwdyJAALcgArMisyETkvMzAxRSIuAjU1ND4CMzIeAhUVITUhNTQmJiMiDgIVFRQeAjMyNjcXBgYCcnnEjUtOhqpbdKlsNPzYAm8zcl8/akwqMFuEVVyMMDgsqBRPkcZ2LIDIikhJhbRqeZcaSYFSM2KQXSxRjWs8NiR/J0sAAwBh/lUD8gROABIAKAA9ABtADy8kC3I5GQdyDQYPcgAGcgArKzIrMisyMDFBMxEUBgYjIiYnNxYWMzI2NjURATU0PgIzMh4CFxUOAyMiLgI3FRQeAjMyNjY3NS4DIyIOAgNWnG7Rl0a1Rzg3jEVkfj39KDtvnmNmmWs+DAs/a5pnYZ1wO7khRWxLXHhHFAstR2hGTG1FIQQ6/AKb2nIrK4siJ0qSagMZ/sQVfMuTT0eHvnhcd76GR1KTyYsVUY1sPU6AS/E3Z1EwPWyQAAACAFr+TAR1BEkAAwAlABlADA4VAQEVHwQHcgMGcgArKzIvMy8RMzAxQQEjASUyHgIXAR4CMzI2NwcGBiMiLgInAS4CIyIGByc2NgQX/SbFAuT9Z0hiQSwRAZ4UKjIfED0QMAomDTpVQDcd/m4TMUIuDCsNARE/BDr6JgXaDzVTXCf8TCtEJwIDnwcHI0RlQgOaMFM0BAGVBQn//wBXAAAChQW4BAYAFawAAAEAaP/wBJIEnQBBABdACzg4ECJ+GQozAAtyACsyPz8zOS8wMUUiLgI1NDY2NyU2NjU0JiMiBhUUFhYXASMBLgI1NDY2MzIWFhUUBgYHBQ4CFRQWFjMyPgI1MxQGBwYGBwYGAehZjmQ1LVM5AQspK0hCQEEpQycCitP9xzdaNU+PX2CMTCZBKP7VJygNMGFJY51vOqhNRwoRC0zVEC1Qaz5EZ1Uqvx5IJDRGTSwlREUp/U0CVjpgZkFOdkJJd0YyWkwd2Bw2MxYwSypEe6lmd9NUCxwKR1IAAAMAAQAAA4sEjQADAAcACwAdQA0ICQkLCgoGB30DAgYKAD8zMz8SOS8zMy8zMDFlFSE1ExEjEQEVBTUDi/2MLbkBw/2zmJiYA/X7cwSN/oJ9u30AAAYACQAABfIEjQADAAcACwAQABQAGAAzQBgKCwsYGA8HBhQTBhMGEw0PfQMCAhcXDQoAPzMRMxEzPxI5OS8vETMRMxEzETMRMzAxZRUhNQEVITUBFSE1BwEjATMTFSE1ARMjAwXy/cQB0/4SAi79xIP9xscCl3WM/aUCYii4KZaWlgIVlZUB4paWcPvjBI39N5aWAsn7cwSNAAACAIsAAAO3BI0AAwAZABdACg8QEAF9BQQEAAoAPzIvMz8zLzMwMXMRMxEnNTMyNjY1NCYmIyM1MzIWFhUUBgYji7ky6FxyNjZyXObmj8dnZ8ePBI37c+yZNF08OWI9mV+la3CiVgADAGD/xgRbBLcAFQArAC8AG0ALLy8cEX4tLScGC3IAKzIyfC8YPzMzfC8wMUEVFA4CIyIuAjU1ND4CMzIeAgc1NC4CIyIOAhUVFB4CMzI+AhMBIwEEW0iGu3Nxu4lKSoe7cXS7h0i3LFR6TUp4VS4uVnlKTnhUK6/8s5YDTgJnQoTRk01Nk9GEQoTRlE1NlNHGRGOYaDY2aJhjRGOZaTY2aZkC9fsPBPEAAAQAMAAABLMEjQADAAcACwAPABtADAIDgA4PDwsHfQoGCgA/Mz8zMy8zGswyMDFBFSE1ExEjESERIxEFFSE1A8D9XyW5A865ARP7fQKLmZkCAvtzBI37cwSNppiYAAACAIv+SwRZBI0ACQAbAB9ADxcQD3IJAwZ9CAoKAgIFCgA/MxEzETM/MzMrMjAxQREjAREjETMBEREzFRQGBiMiJic3FhYzMjY2NQRZuf2kubkCXLlNkGUfNB0OD0UOKz0hBI37cwNs/JQEjfyUA2z7qI5wnFAHCp0GBipTPf//ACYCHwIOArcGBgARAAAAAwAlAAAE5QWwABoAHgAiACNAEQIBAR0iISEdDg8PHgJyHQhyACsrMhEzETkvMxEzETMwMWEhNyEyNjY1NTQuAiMhNSEyHgIVFRQOAgERIxEBFSE1AlH+0AIBLpzQaTx0p2z+uAFIj+yrXFyt8/6fwQHb/YOdg+2fWX3Dh0aeX7P9nlee/bJfBbD6UAWw/YGYmAADACUAAATlBbAAGgAeACIAI0ARAgEBHSIhIR0ODw8eAnIdCHIAKysyETMROS8zETMRMzAxYSE3ITI2NjU1NC4CIyE1ITIeAhUVFA4CAREjEQEVITUCUf7QAgEunNBpPHSnbP64AUiP7KtcXK3z/p/BAdv9g52D7Z9ZfcOHRp5fs/2eV579sl8FsPpQBbD9gZiYAAMAAQAAA/4GAAADABoAHgAZQA0eHRYKB3IDAHIRAgpyACsyKysyxDIwMUERIxETJz4DMzIeAhURIxE0JiYjIg4CARUhNQFkuY1NAUB0oWJQgFswujJgRkVxUS0BRv2DBgD6AAYA/EYDb72MTStelWv9OwLHVWcvOmaDAtqYmAAAAwAyAAAElwWwAAMABwALABVACgMKCwYHAnIBCHIAKysyLzMyMDFBESMRIRUhNQEVITUCw74CkvubA3n9gwWw+lAFsJ6e/h6YmAAD//T/7AJxBUEAAwAVABkAHUAOChELchgZGQICBAQDBnIAKzIvMhEzLzMrMjAxQRUhNRMzERQWFjMyNjcXBgYjIiYmNQEVITUCUv23xrkiNh8XMw0BFkcyRHJDAaL9gwQ6jo4BB/vLNzgSCQOXBw02f2wB5ZiYAP//AB0AAAUeBzcGJgAlAAABBwBEAS8BNwALtgMQBwEBYVYAKzQA//8AHQAABR4HNwYmACUAAAEHAHUBvwE3AAu2Aw4DAQFhVgArNAD//wAdAAAFHgc3BiYAJQAAAQcAngDJATcAC7YDEQcBAWxWACs0AP//AB0AAAUeByMGJgAlAAABBwClAMQBOwALtgMcAwEBa1YAKzQA//8AHQAABR4G/QYmACUAAAEHAGoA+QE3AA23BAMjBwEBeFYAKzQ0AP//AB0AAAUeB5MGJgAlAAABBwCjAVABQgANtwQDGQcBAUdWACs0NAD//wAdAAAFHgeUBiYAJQAAAQcCNwFZASIAErYFBAMbBwEAuP+ysFYAKzQ0NP//AHj+QwTYBcQGJgAnAAABBwB5AdP/9gALtgEoBQAAClYAKzQA//8AqQAABEYHQgYmACkAAAEHAEQA+gFCAAu2BBIHAQFsVgArNAD//wCpAAAERgdCBiYAKQAAAQcAdQGKAUIAC7YEEAcBAWxWACs0AP//AKkAAARGB0IGJgApAAABBwCeAJQBQgALtgQTBwEBd1YAKzQA//8AqQAABEYHCAYmACkAAAEHAGoAxAFCAA23BQQlBwEBg1YAKzQ0AP///98AAAGAB0IGJgAtAAABBwBE/6YBQgALtgEGAwEBbFYAKzQA//8AsQAAAlIHQgYmAC0AAAEHAHUANgFCAAu2AQQDAQFsVgArNAD////qAAACRwdCBiYALQAAAQcAnv9AAUIAC7YBBwMBAXdWACs0AP///9UAAAJfBwgGJgAtAAABBwBq/3ABQgANtwIBGQMBAYNWACs0NAD//wCpAAAFCQcjBiYAMgAAAQcApQD6ATsAC7YBGAYBAWtWACs0AP//AHf/7AUKBzkGJgAzAAABBwBEAVIBOQALtgIuEQEBT1YAKzQA//8Ad//sBQoHOQYmADMAAAEHAHUB4gE5AAu2AiwRAQFPVgArNAD//wB3/+wFCgc5BiYAMwAAAQcAngDsATkAC7YCLxEBAVpWACs0AP//AHf/7AUKByUGJgAzAAABBwClAOcBPQALtgI6EQEBWVYAKzQA//8Ad//sBQoG/wYmADMAAAEHAGoBHAE5AA23AwJBEQEBZlYAKzQ0AP//AIz/7ASqBzcGJgA5AAABBwBEASoBNwALtgEYAAEBYVYAKzQA//8AjP/sBKoHNwYmADkAAAEHAHUBugE3AAu2ARYLAQFhVgArNAD//wCM/+wEqgc3BiYAOQAAAQcAngDEATcAC7YBGQABAWxWACs0AP//AIz/7ASqBv0GJgA5AAABBwBqAPQBNwANtwIBKwABAXhWACs0NAD//wAPAAAEvAc2BiYAPQAAAQcAdQGJATYAC7YBCQIBAWBWACs0AP//AG3/7APqBgAGJgBFAAABBwBEANUAAAALtgI9DwEBjFYAKzQA//8Abf/sA+oGAAYmAEUAAAEHAHUBZQAAAAu2AjsPAQGMVgArNAD//wBt/+wD6gYABiYARQAAAQYAnm8AAAu2Aj4PAQGXVgArNAD//wBt/+wD6gXsBiYARQAAAQYApWoEAAu2AkkPAQGWVgArNAD//wBt/+wD6gXGBiYARQAAAQcAagCfAAAADbcDAlAPAQGjVgArNDQA//8Abf/sA+oGXAYmAEUAAAEHAKMA9gALAA23AwJGDwEBclYAKzQ0AP//AG3/7APqBl0GJgBFAAABBwI3AP//6wAStgQDAkgPAAC4/92wVgArNDQ0//8AXf5DA+0ETgYmAEcAAAEHAHkBQP/2AAu2ASgJAAAKVgArNAD//wBd/+wD8wYABiYASQAAAQcARADEAAAAC7YBLgsBAYxWACs0AP//AF3/7APzBgAGJgBJAAABBwB1AVQAAAALtgEsCwEBjFYAKzQA//8AXf/sA/MGAAYmAEkAAAEGAJ5eAAALtgEvCwEBl1YAKzQA//8AXf/sA/MFxgYmAEkAAAEHAGoAjgAAAA23AgFBCwEBo1YAKzQ0AP///8QAAAFlBf4GJgCNAAABBgBEi/4AC7YBBgMBAZ5WACs0AP//AJYAAAI3Bf4GJgCNAAABBgB1G/4AC7YBBAMBAZ5WACs0AP///88AAAIsBf4GJgCNAAABBwCe/yX//gALtgEHAwEBqVYAKzQA////ugAAAkQFxAYmAI0AAAEHAGr/Vf/+AA23AgEZAwEBtVYAKzQ0AP//AI0AAAPgBewGJgBSAAABBgClYQQAC7YCKgMBAapWACs0AP//AFz/7AQ1BgAGJgBTAAABBwBEAM4AAAALtgIuBgEBjFYAKzQA//8AXP/sBDUGAAYmAFMAAAEHAHUBXgAAAAu2AiwGAQGMVgArNAD//wBc/+wENQYABiYAUwAAAQYAnmgAAAu2Ai8GAQGXVgArNAD//wBc/+wENQXsBiYAUwAAAQYApWMEAAu2AjoGAQGWVgArNAD//wBc/+wENQXGBiYAUwAAAQcAagCYAAAADbcDAkEGAQGjVgArNDQA//8Aif/sA90GAAYmAFkAAAEHAEQAxgAAAAu2Ah4RAQGgVgArNAD//wCJ/+wD3QYABiYAWQAAAQcAdQFWAAAAC7YCHBEBAaBWACs0AP//AIn/7APdBgAGJgBZAAABBgCeYAAAC7YCHxEBAatWACs0AP//AIn/7APdBcYGJgBZAAABBwBqAJAAAAANtwMCMREBAbdWACs0NAD//wAW/ksDsAYABiYAXQAAAQcAdQEbAAAAC7YCGQEBAaBWACs0AP//ABb+SwOwBcYGJgBdAAABBgBqVQAADbcDAi4BAQG3VgArNDQA//8AHQAABR4G5AYmACUAAAEHAHAAxwE/AAu2AxADAQGmVgArNAD//wBt/+wD6gWtBiYARQAAAQYAcG0IAAu2Aj0PAQHRVgArNAD//wAdAAAFHgcOBiYAJQAAAQcAoQDzATcAC7YDEwcBAVNWACs0AP//AG3/7APqBdcGJgBFAAABBwChAJkAAAALtgJADwEBflYAKzQAAAQAHf5OBR4FsAAEAAkADQAjACtAFQ0MDAMWHQYAAgcDAnIODw8FBQIIcgArMhEzETMrMhI5OS8zEjkvMzAxQQEjATMBASczAQMVITUBFw4CFRQWMzI2NxcGBiMiJjU0NjYCxP4exQIrfwGR/h0DfwIt3/zOA6FKK04yIyshNA8OGU07UW81cgUv+tEFsPpQBS+B+lACG56e/h45IEVNLCEoEwh6Dx1hXjZqYgADAG3+TgPqBE4AGwA6AFAAK0AXHjo6D0NKD3InMQtyOzw8GQpyCQUPB3IAKzIyKzIRMysyKzISOS8zMDFlETQmJiMiBgYVIzQ+AjMyFhYVERQWFxUjJiYTFyMiDgIVFBYWMzI2NjcXDgMjIiYmNTQ+AjMBFw4CFRQWMzI2NxcGBiMiJjU0NjYDCzNmS0ZpO7k8cZ9idrVnExPBDhAgArtPfFQsLl1EVYJNA08HPmeNWG6lW0SAtG8BLEorTjIjKyE0Dw4ZTTtRbzVyuQItQF80ME4tOnJdN1Chef4INnosECBrAgWCGTJLMjNUMUhoMVkqZl09VpFaV4VZLv2pOSBFTSwhKBMIeg8dYV42amIA//8AeP/sBNgHVwYmACcAAAEHAHUBxwFXAAu2ASgQAQFtVgArNAD//wBd/+wD7QYABiYARwAAAQcAdQE0AAAAC7YBKBQBAYxWACs0AP//AHj/7ATYB1cGJgAnAAABBwCeANEBVwALtgErEAEBeFYAKzQA//8AXf/sA+0GAAYmAEcAAAEGAJ4+AAALtgErFAEBl1YAKzQA//8AeP/sBNgHGQYmACcAAAEHAKIBrQFXAAu2ATEQAQGCVgArNAD//wBd/+wD7QXCBiYARwAAAQcAogEaAAAAC7YBMRQBAaFWACs0AP//AHj/7ATYB1YGJgAnAAABBwCfAOYBVwALtgEuEAEBdlYAKzQA//8AXf/sA+0F/wYmAEcAAAEGAJ9TAAALtgEuFAEBlVYAKzQA//8AqQAABMcHQQYmACgAAAEHAJ8AnwFCAAu2AiUeAQF1VgArNAD//wBf/+wFLAYCBCYASAAAAQcBygPVBRMAC7YDOQEBAABWACs0AP//AKkAAARGBu8GJgApAAABBwBwAJIBSgALtgQSBwEBsVYAKzQA//8AXf/sA/MFrQYmAEkAAAEGAHBcCAALtgEuCwEB0VYAKzQA//8AqQAABEYHGQYmACkAAAEHAKEAvgFCAAu2BBUHAQFeVgArNAD//wBd/+wD8wXXBiYASQAAAQcAoQCIAAAAC7YBMQsBAX5WACs0AP//AKkAAARGBwQGJgApAAABBwCiAXABQgALtgQZBwEBgVYAKzQA//8AXf/sA/MFwgYmAEkAAAEHAKIBOgAAAAu2ATULAQGhVgArNAAABQCp/k4ERgWwAAMABwALAA8AJQApQBQKCwsYHw4PDwcCchAREQMCAgYIcgArMhEzMhEzKzIRMy8zOS8zMDFlFSE1ExEjEQEVITUBFSE1ARcOAhUUFjMyNjcXBgYjIiY1NDY2BEb8/SfBAzf9YwL5/QcCcUorTjIjKyE0Dw4ZTTtRbzVynZ2dBRP6UAWw/Y6dnQJynp76iTkgRU0sISgTCHoPHWFeNmpiAAACAF3+aAPzBE4AKwBBACVAExITEws0Ow5yGQsHciwtJCQAC3IAKzIROTkrMisyEjkvMzAxRSIuAjU1ND4CMzIeAhUVITUhNS4CIyIOAhUVFB4CMzI2NxcOAjcXDgIVFBYzMjY3FwYGIyImNTQ2NgJOcbeDRk6Gqlt0qWw0/NgCbwQzbl8/akwqK1N3TGKIM3AjbJ0pSitOMiMrITQPDhlNO1FvNXIUTYzAciqEz5BKUI/BclOXDkiIWDVolmIqTYdmOlBDWTVgPGc5IEVNLCEoEwh6Dx1hXjZqYgD//wCpAAAERgdBBiYAKQAAAQcAnwCpAUIAC7YEFgcBAXVWACs0AP//AF3/7APzBf8GJgBJAAABBgCfcwAAC7YBMgsBAZVWACs0AP//AHr/7ATdB1cGJgArAAABBwCeAMkBVwALtgEvEAEBeFYAKzQA//8AYf5VA/IGAAYmAEsAAAEGAJ5VAAALtgNCGgEBl1YAKzQA//8Aev/sBN0HLgYmACsAAAEHAKEA8wFXAAu2ATEQAQFfVgArNAD//wBh/lUD8gXXBiYASwAAAQYAoX8AAAu2A0QaAQF+VgArNAD//wB6/+wE3QcZBiYAKwAAAQcAogGlAVcAC7YBNRABAYJWACs0AP//AGH+VQPyBcIEJgBLAAABBwCiATEAAAALtgNIGgEBoVYAKzQA//8Aev3zBN0FxAYmACsAAAEHAcoB2v6VAA60ATUFAQG4/5iwVgArNP//AGH+VQPyBpMEJgBLAAABBwJEASsAVwALtgM/GgEBmFYAKzQA//8AqQAABQgHQgYmACwAAAEHAJ4A8QFCAAu2Aw8LAQF3VgArNAD//wCNAAAD4AdBBiYATAAAAQcAngAeAUEAC7YCHgMBASZWACs0AP///7YAAAJ6By4GJgAtAAABBwCl/zsBRgALtgESAwEBdlYAKzQA////mwAAAl8F6gYmAI0AAAEHAKX/IAACAAu2ARIDAQGoVgArNAD////NAAACbAbvBiYALQAAAQcAcP8+AUoAC7YBBgMBAbFWACs0AP///7IAAAJRBasGJgCNAAABBwBw/yMABgALtgEGAwEB41YAKzQA////7AAAAkIHGQYmAC0AAAEHAKH/agFCAAu2AQkDAQFeVgArNAD////RAAACJwXVBiYAjQAAAQcAof9P//4AC7YBCQMBAZBWACs0AP//ABf+VwF4BbAGJgAtAAABBgCk5QkAC7YBBQIAAABWACs0AP////r+TgFpBcQGJgBNAAABBgCkyAAAC7YCEQIAAABWACs0AP//AKoAAAGFBwQGJgAtAAABBwCiABwBQgALtgENAwEBgVYAKzQA//8At//sBfkFsAQmAC0AAAAHAC4CLQAA//8Ajv5LA0wFxAQmAE0AAAAHAE4B8gAA//8ANf/sBIQHNQYmAC4AAAEHAJ4BfQE1AAu2ARcBAQFqVgArNAD///+0/ksCOgXXBiYAnAAAAQcAnv8z/9cAC7YBFQABAYJWACs0AP//AKn+VgUFBbAEJgAvAAABBwHKAZT++AAOtAMXAgEAuP/nsFYAKzT//wCN/kMEDQYABiYATwAAAQcBygER/uUADrQDFwIBAbj/1LBWACs0//8AogAABBwHMgYmADAAAAEHAHUAJwEyAAu2AggHAQFcVgArNAD//wCTAAACNAeXBiYAUAAAAQcAdQAYAZcAC7YBBAMBAXFWACs0AP//AKn+BgQcBbAEJgAwAAABBwHKAWz+qAAOtAIRAgEBuP+XsFYAKzT//wBW/gYBVgYABCYAUAAAAQcByv/5/qgADrQBDQIBAbj/l7BWACs0//8AqQAABBwFsQYmADAAAAEHAcoB1gTCAAu2AhEHAAABVgArNAD//wCcAAACrQYCBCYAUAAAAQcBygFWBRMAC7YBDQMAAAJWACs0AP//AKkAAAQcBbAGJgAwAAAABwCiAbz9xP//AJwAAAKiBgAEJgBQAAAABwCiATn9tf//AKkAAAUJBzcGJgAyAAABBwB1AfUBNwALtgEKBgEBYVYAKzQA//8AjQAAA+AGAAYmAFIAAAEHAHUBXAAAAAu2AhwDAQGgVgArNAD//wCp/gYFCQWwBCYAMgAAAQcBygHQ/qgADrQBEwUBAbj/l7BWACs0//8Ajf4GA+AETgQmAFIAAAEHAcoBM/6oAA60AiUCAQG4/5ewVgArNP//AKkAAAUJBzYGJgAyAAABBwCfARQBNwALtgEQCQEBalYAKzQA//8AjQAAA+AF/wYmAFIAAAEGAJ97AAALtgIiAwEBqVYAKzQA////uwAAA+AGBQYmAFIAAAEHAcr/XgUWAAu2AiADAQE6VgArNAD//wB3/+wFCgbmBiYAMwAAAQcAcADqAUEAC7YCLhEBAZRWACs0AP//AFz/7AQ1Ba0GJgBTAAABBgBwZggAC7YCLgYBAdFWACs0AP//AHf/7AUKBxAGJgAzAAABBwChARYBOQALtgIxEQEBQVYAKzQA//8AXP/sBDUF1wYmAFMAAAEHAKEAkgAAAAu2AjEGAQF+VgArNAD//wB3/+wFCgc4BiYAMwAAAQcApgFrATkADbcDAiwRAQFFVgArNDQA//8AXP/sBDUF/wYmAFMAAAEHAKYA5wAAAA23AwIsBgEBglYAKzQ0AP//AKkAAATKBzcGJgA2AAABBwB1AYEBNwALtgIeAAEBYVYAKzQA//8AjQAAAtMGAAYmAFYAAAEHAHUAtwAAAAu2AhcDAQGgVgArNAD//wCp/gYEygWwBCYANgAAAQcBygFj/qgADrQCJxgBAbj/l7BWACs0//8AU/4HApgETgQmAFYAAAEHAcr/9v6pAA60AiACAQG4/5iwVgArNP//AKkAAATKBzYGJgA2AAABBwCfAKABNwALtgIkAAEBalYAKzQA//8AZAAAAs4F/wYmAFYAAAEGAJ/WAAALtgIdAwEBqVYAKzQA//8AUf/sBHMHOQYmADcAAAEHAHUBjQE5AAu2AToPAQFPVgArNAD//wBf/+wDvAYABiYAVwAAAQcAdQFRAAAAC7YBNg4BAYxWACs0AP//AFH/7ARzBzkGJgA3AAABBwCeAJcBOQALtgE9DwEBWlYAKzQA//8AX//sA7wGAAYmAFcAAAEGAJ5bAAALtgE5DgEBl1YAKzQA//8AUf5MBHMFxAYmADcAAAEHAHkBn///AAu2ATorAAATVgArNAD//wBf/kMDvAROBiYAVwAAAQcAeQFd//YAC7YBNikAAApWACs0AP//AFH9+wRzBcQGJgA3AAABBwHKAXT+nQAOtAFDKwEBuP+gsFYAKzT//wBf/fIDvAROBiYAVwAAAQcBygEy/pQADrQBPykBAbj/l7BWACs0//8AUf/sBHMHOAYmADcAAAEHAJ8ArAE5AAu2AUAPAQFYVgArNAD//wBf/+wDvAX/BiYAVwAAAQYAn3AAAAu2ATwOAQGVVgArNAD//wAy/fwElwWwBiYAOAAAAQcBygFm/p4ADrQCEQIBAbj/jbBWACs0//8ACf38AlcFQQYmAFgAAAEHAcoAxf6eAA60Ah8RAQG4/6GwVgArNP//ADL+TQSXBbAGJgA4AAABBwB5AZEAAAALtgIIAgEAAFYAKzQA//8ACf5NApoFQQYmAFgAAAEHAHkA8AAAAAu2AhYRAAAUVgArNAD//wAyAAAElwc1BiYAOAAAAQcAnwCiATYAC7YCDgMBAWlWACs0AP//AAn/7ALsBnoEJgBYAAABBwHKAZUFiwAOtAIaBAEAuP+osFYAKzT//wCM/+wEqgcjBiYAOQAAAQcApQC/ATsAC7YBJAsBAWtWACs0AP//AIn/7APdBewGJgBZAAABBgClWwQAC7YCKhEBAapWACs0AP//AIz/7ASqBuQGJgA5AAABBwBwAMIBPwALtgEYCwEBplYAKzQA//8Aif/sA90FrQYmAFkAAAEGAHBeCAALtgIeEQEB5VYAKzQA//8AjP/sBKoHDgYmADkAAAEHAKEA7gE3AAu2ARsAAQFTVgArNAD//wCJ/+wD3QXXBiYAWQAAAQcAoQCKAAAAC7YCIREBAZJWACs0AP//AIz/7ASqB5MGJgA5AAABBwCjAUsBQgANtwIBIQABAUdWACs0NAD//wCJ/+wD3QZcBiYAWQAAAQcAowDnAAsADbcDAicRAQGGVgArNDQA//8AjP/sBKoHNgYmADkAAAEHAKYBQwE3AA23AgEWAAEBV1YAKzQ0AP//AIn/7AQLBf8GJgBZAAABBwCmAN8AAAANtwMCHBEBAZZWACs0NAAAAgCM/noEqgWwABUAKwAbQA0eJQELAnIXFhERBglyACsyEjk5KzIvMzAxQTMRFAYGIyImJjURMxEUFhYzMjY2NQMXDgIVFBYzMjY3FwYGIyImNTQ2NgPqwJLxjZTvi79Ul2Rll1SHSitOMiMrITQPDhlNO1FvNXIFsPwnpNptbdqkA9n8J3KUSEiUcv6OOSBFTSwhKBMIeg8dYV42amIAAAMAif5OA+gEOgAEABsAMQAhQBEkKw9yAREGchwdHQQEGAsLcgArMjIRMxEzKzIrMjAxZREzESMTNxQOAiMiLgI1ETMRFB4CMzI2NhMXDgIVFBYzMjY3FwYGIyImNTQ2NgMjurEaTS1konRPg14zuSE5RyZ2ij1DSitOMiMrITQPDhlNO1FvNXL6A0D7xgHeAmy3hksuYJpsArr9RElfNxZbm/66OSBFTSwhKBMIeg8dYV42amL//wA9AAAG7Qc3BiYAOwAAAQcAngHFATcAC7YEGRUBAWxWACs0AP//ACsAAAXTBgAGJgBbAAABBwCeASQAAAALtgQZFQEBq1YAKzQA//8ADwAABLwHNgYmAD0AAAEHAJ4AkwE2AAu2AQwCAQFrVgArNAD//wAW/ksDsAYABiYAXQAAAQYAniUAAAu2AhwBAQGrVgArNAD//wAPAAAEvAb8BiYAPQAAAQcAagDDATYADbcCAR4CAQF3VgArNDQA//8AVwAABHoHNwYmAD4AAAEHAHUBhwE3AAu2Aw4NAQFhVgArNAD//wBZAAADswYABiYAXgAAAQcAdQEiAAAAC7YDDg0BAaBWACs0AP//AFcAAAR6BvkGJgA+AAABBwCiAW0BNwALtgMXCAEBdlYAKzQA//8AWQAAA7MFwgYmAF4AAAEHAKIBCAAAAAu2AxcIAQG1VgArNAD//wBXAAAEegc2BiYAPgAAAQcAnwCmATcAC7YDFAgBAWpWACs0AP//AFkAAAOzBf8GJgBeAAABBgCfQQAAC7YDFAgBAalWACs0AP////EAAAdYB0IGJgCBAAABBwB1AsoBQgALtgYZAwEBbFYAKzQA//8AT//rBn0GAQYmAIYAAAEHAHUCegABAAu2A18PAQGNVgArNAD//wB3/6MFHQeABiYAgwAAAQcAdQHqAYAAC7YDNBYBAZZWACs0AP//AFz/eQQ0Bf8GJgCJAAABBwB1ATj//wALtgMwCgEBi1YAKzQA////vQAABCAEjQYmAkAAAAAHAjb/Lv92////vQAABCAEjQYmAkAAAAAHAjb/Lv92//8AKQAAA/0EjQYmAegAAAAGAjZG3///ABQAAARxBh4GJgJDAAABBwBEANQAHgALtgMQBwEBa1YAKzQA//8AFAAABHEGHgYmAkMAAAEHAHUBZAAeAAu2Aw4DAQFrVgArNAD//wAUAAAEcQYeBiYCQwAAAQYAnm4eAAu2AxMDAQFrVgArNAD//wAUAAAEcQYKBiYCQwAAAQYApWkiAAu2AxsDAQFrVgArNAD//wAUAAAEcQXkBiYCQwAAAQcAagCeAB4ADbcEAxcDAQFrVgArNDQA//8AFAAABHEGegYmAkMAAAEHAKMA9QApAA23BAMZAwEBUVYAKzQ0AP//ABQAAARxBnsGJgJDAAAABwI3AP4ACf//AGH+SQQxBJ0GJgJBAAAABwB5AXX//P//AIsAAAOvBh4GJgI4AAABBwBEAKgAHgALtgQSBwEBbFYAKzQA//8AiwAAA68GHgYmAjgAAAEHAHUBOAAeAAu2BBAHAQFsVgArNAD//wCLAAADrwYeBiYCOAAAAQYAnkIeAAu2BBYHAQFsVgArNAD//wCLAAADrwXkBiYCOAAAAQYAanIeAA23BQQZBwEBhFYAKzQ0AP///7wAAAFdBh4GJgHzAAABBgBEgx4AC7YBBgMBAWtWACs0AP//AI4AAAIvBh4GJgHzAAABBgB1Ex4AC7YBBAMBAWtWACs0AP///8cAAAIkBh4GJgHzAAABBwCe/x0AHgALtgEJAwEBdlYAKzQA////sgAAAjwF5AYmAfMAAAEHAGr/TQAeAA23AgENAwEBhFYAKzQ0AP//AIsAAARZBgoGJgHuAAABBwClAJQAIgALtgEYBgEBdlYAKzQA//8AYP/wBFsGHgYmAe0AAAEHAEQA7QAeAAu2Ai4RAQFbVgArNAD//wBg//AEWwYeBiYB7QAAAQcAdQF9AB4AC7YCLBEBAVtWACs0AP//AGD/8ARbBh4GJgHtAAABBwCeAIcAHgALtgIxEQEBW1YAKzQA//8AYP/wBFsGCgYmAe0AAAEHAKUAggAiAAu2AjERAQFvVgArNAD//wBg//AEWwXkBiYB7QAAAQcAagC3AB4ADbcDAjURAQF0VgArNDQA//8Adf/wBAsGHgYmAecAAAEHAEQAzwAeAAu2ARgLAQFrVgArNAD//wB1//AECwYeBiYB5wAAAQcAdQFfAB4AC7YBFgsBAWtWACs0AP//AHX/8AQLBh4GJgHnAAABBgCeaR4AC7YBGwsBAWtWACs0AP//AHX/8AQLBeQGJgHnAAABBwBqAJkAHgANtwIBHwsBAYRWACs0NAD//wAOAAAEHAYeBiYB4wAAAQcAdQE0AB4AC7YDDgkBAWtWACs0AP//ABQAAARxBcsGJgJDAAABBgBwbCYAC7YDEAMBAbBWACs0AP//ABQAAARxBfUGJgJDAAABBwChAJgAHgALtgMTAwEBXVYAKzQAAAQAFP5OBHEEjQAEAAkADQAjACFADw0MDAMWHQgDfQ8OBQUBEgA/MxEzMz8zLzMSOS8zMDFBASMBMwEBJzMBAxUhNQEXDgIVFBYzMjY3FwYGIyImNTQ2NgJe/nO9Ad95AUn+dg16AdnX/UwDGkorTjIjKyE0Dw4ZTTtRbzVyA+r8FgSN+3MD7p/7cwGvmJj+ijkgRU0sISgTCHoPHWFeNmpi//8AYf/wBDEGHgYmAkEAAAEHAHUBagAeAAu2ASgQAQFbVgArNAD//wBh//AEMQYeBiYCQQAAAQYAnnQeAAu2AS0QAQFbVgArNAD//wBh//AEMQXgBiYCQQAAAQcAogFQAB4AC7YBMRABAXBWACs0AP//AGH/8AQxBh0GJgJBAAABBwCfAIkAHgALtgEuEAEBZFYAKzQA//8AiwAABCAGHQYmAkAAAAEGAJ8yHgALtgIkHQEBdFYAKzQA//8AiwAAA68FywYmAjgAAAEGAHBAJgALtgQSBwEBsFYAKzQA//8AiwAAA68F9QYmAjgAAAEGAKFsHgALtgQVBwEBXlYAKzQA//8AiwAAA68F4AYmAjgAAAEHAKIBHgAeAAu2BBkHAQGAVgArNAAABQCL/k4DrwSNAAMABwALAA8AJQAjQBAYHwsKCgYPDgd9ERAQBQYSAD8zMxEzPzMzEjkvMy8zMDFlFSE1ExEjEQEVITUBFSE1ARcOAhUUFjMyNjcXBgYjIiY1NDY2A6/9aC25As39vwKS/W4CEUorTjIjKyE0Dw4ZTTtRbzVymJiYA/X7cwSN/hmXlwHnmZn7rDkgRU0sISgTCHoPHWFeNmpiAP//AIsAAAOvBh0GJgI4AAABBgCfVx4AC7YEFgcBAXRWACs0AP//AGT/8AQ2Bh4GJgH1AAABBgCecR4AC7YBMBABAWZWACs0AP//AGT/8AQ2BfUGJgH1AAABBwChAJsAHgALtgEwEAEBTVYAKzQA//8AZP/wBDYF4AYmAfUAAAEHAKIBTQAeAAu2ATQQAQFwVgArNAD//wBk/fgENgSdBiYB9QAAAQcBygFP/poADrQBNAUBAbj/mbBWACs0//8AiwAABFkGHgYmAfQAAAEHAJ4AkAAeAAu2AxEHAQF2VgArNAD///+TAAACVwYKBiYB8wAAAQcApf8YACIAC7YBCQMBAX9WACs0AP///6oAAAJJBcsGJgHzAAABBwBw/xsAJgALtgEGAwEBsFYAKzQA////yQAAAh8F9QYmAfMAAAEHAKH/RwAeAAu2AQkDAQFdVgArNAD//wAF/k4BZgSNBiYB8wAAAAYApNMA//8AhwAAAWIF4AYmAfMAAAEGAKL5HgALtgENAwEBgFYAKzQA//8ALP/wBA4GHgYmAfIAAAEHAJ4BBwAeAAu2ARkBAQF2VgArNAD//wCL/gIEVwSNBiYB8QAAAAcBygEU/qT//wCDAAADiwYeBiYB8AAAAQYAdQgeAAu2AggHAQFrVgArNAD//wCL/gQDiwSNBiYB8AAAAQcBygEP/qYADrQCEQYBAbj/lbBWACs0//8AiwAAA4sEjwYmAfAAAAAHAcoBfgOg//8AiwAAA4sEjQYmAfAAAAAHAKIBZv01//8AiwAABFkGHgYmAe4AAAEHAHUBjwAeAAu2AQoGAQFrVgArNAD//wCL/gAEWQSNBiYB7gAAAAcBygFr/qL//wCLAAAEWQYdBiYB7gAAAQcAnwCuAB4AC7YBEAYBAXRWACs0AP//AGD/8ARbBcsGJgHtAAABBwBwAIUAJgALtgIuEQEBoFYAKzQA//8AYP/wBFsF9QYmAe0AAAEHAKEAsQAeAAu2AjERAQFNVgArNAD//wBg//AEWwYdBiYB7QAAAQcApgEGAB4ADbcDAjARAQFRVgArNDQA//8AigAABCYGHgYmAeoAAAEHAHUBJwAeAAu2Ah8AAQFrVgArNAD//wCK/gQEJgSNBiYB6gAAAAcBygEN/qb//wCKAAAEJgYdBiYB6gAAAQYAn0YeAAu2AiUAAQF0VgArNAD//wBE//AD3gYeBiYB6QAAAQcAdQE+AB4AC7YBOg8BAVtWACs0AP//AET/8APeBh4GJgHpAAABBgCeSB4AC7YBPw8BAWZWACs0AP//AET+TQPeBJ0GJgHpAAAABwB5AVMAAP//AET/8APeBh0GJgHpAAABBgCfXR4AC7YBQA8BAWZWACs0AP//ACn9/wP9BI0GJgHoAAABBwHKARP+oQAOtAIRAgEBuP+QsFYAKzT//wApAAAD/QYdBiYB6AAAAQYAn1AeAAu2Ag4HAQF0VgArNAD//wAp/lAD/QSNBiYB6AAAAAcAeQE+AAP//wB1//AECwYKBiYB5wAAAQYApWQiAAu2ARsLAQF/VgArNAD//wB1//AECwXLBiYB5wAAAQYAcGcmAAu2ARgLAQGwVgArNAD//wB1//AECwX1BiYB5wAAAQcAoQCTAB4AC7YBGwsBAV1WACs0AP//AHX/8AQLBnoGJgHnAAABBwCjAPAAKQANtwIBIQsBAVFWACs0NAD//wB1//AEFAYdBiYB5wAAAQcApgDoAB4ADbcCARoLAQFhVgArNDQAAAIAdf5zBAsEjQAVACsAGkAMHiUXFhYRBgtyDAB9AD8yKzIyETMvMzAxQTMRFAYGIyImJjURMxEUFhYzMjY2NQMXDgIVFBYzMjY3FwYGIyImNTQ2NgNRun3RfoPPeLdFfFJTe0RrSitOMiMrITQPDhlNO1FvNXIEjfz0hLNaWrOEAwz89FZvNTVvVv7dOSBFTSwhKBMIeg8dYV42amL//wAxAAAF8QYeBiYB5QAAAQcAngE7AB4AC7YEGwoBAXZWACs0AP//AA4AAAQcBh4GJgHjAAABBgCePh4AC7YDEwkBAXZWACs0AP//AA4AAAQcBeQGJgHjAAABBgBqbh4ADbcEAxcJAQGEVgArNDQA//8ASAAAA+EGHgYmAeIAAAEHAHUBNAAeAAu2Aw4NAQFrVgArNAD//wBIAAAD4QXgBiYB4gAAAQcAogEaAB4AC7YDFw0BAYBWACs0AP//AEgAAAPhBh0GJgHiAAABBgCfUx4AC7YDFA0BAXRWACs0AP//AB0AAAUeBj4GJgAlAAABBgCuA/8ADrQDDgMAALj/PrBWACs0////jAAABKoGPwQmAClkAAEHAK7+1AAAAA60BBAHAAC4/z+wVgArNP///5oAAAVsBkEEJgAsZAAABwCu/uIAAv///6AAAAHcBkEEJgAtZAABBwCu/ugAAgAOtAEEAwAAuP9BsFYAKzT////6/+wFHgY+BCYAMxQAAQcArv9C//8ADrQCLBEAALj/KrBWACs0////dgAABSAGPgQmAD1kAAEHAK7+vv//AAu2AQoIAACOVgArNAD////8AAAE4AY+BCYAuhQAAQcArv9E//8ADrQDNh0AALj/KrBWACs0////m//zAqwGdAYmAMMAAAEHAK//Kf/rABBACQMCASsAAQGiVgArNDQ0//8AHQAABR4FsAYGACUAAP//AKkAAASIBbAGBgAmAAD//wCpAAAERgWwBgYAKQAA//8AVwAABHoFsAYGAD4AAP//AKkAAAUIBbAGBgAsAAD//wC3AAABeAWwBgYALQAA//8AqQAABQUFsAYGAC8AAP//AKkAAAZSBbAGBgAxAAD//wCpAAAFCQWwBgYAMgAA//8Ad//sBQoFxAYGADMAAP//AKkAAATBBbAGBgA0AAD//wAyAAAElwWwBgYAOAAA//8ADwAABLwFsAYGAD0AAP//ADoAAATOBbAGBgA8AAD////VAAACXwcIBiYALQAAAQcAav9wAUIADbcCARkDAQGDVgArNDQA//8ADwAABLwG/AYmAD0AAAEHAGoAwwE2AA23AgEeAgEBd1YAKzQ0AP//AGT/6wR4BjgGJgC7AAABBwCuAXX/+QALtgNCBgEBmlYAKzQA//8AZP/sA+wGNwYmAL8AAAEHAK4BK//4AAu2AkArAQGaVgArNAD//wCS/mED8QY4BiYAwQAAAQcArgFG//kAC7YCHQMBAa5WACs0AP//AMP/8wJMBiMGJgDDAAABBgCuKuQAC7YBEgABAZlWACs0AP//AJD/6wP3BnQGJgDLAAABBgCvIusAEEAJAwIBOA8BAaJWACs0NDT//wCbAAAEQAQ6BgYAjgAA//8AXP/sBDUETgYGAFMAAP//AJv+YAPuBDoGBgB2AAD//wAhAAADuwQ6BgYAWgAA//8AWv5MBHUESQYGAoAAAP///+T/8wJuBbEGJgDDAAABBwBq/3//6wANtwIBJwABAaJWACs0NAD//wCQ/+sD9wWxBiYAywAAAQYAanjrAA23AgE0DwEBolYAKzQ0AP//AFz/7AQ1BjgGJgBTAAABBwCuAUP/+QALtgIsBgEBmlYAKzQA//8AkP/rA/cGIwYmAMsAAAEHAK4BI//kAAu2AR8PAQGZVgArNAD//wB6/+sGGgYgBiYAzgAAAQcArgJU/+EAC7YCQB8BAZZWACs0AP//AKkAAARGBwgGJgApAAABBwBqAMQBQgANtwUEJQcBAYNWACs0NAD//wCyAAAEMAdCBiYAsQAAAQcAdQGQAUIAC7YBBgUBAWxWACs0AAABAFH/7ARzBcQAOQAbQA0KJg82MSsJchgUDwNyACvMMyvMMxI5OTAxQTQuAicuAzU0PgIzMhYWFSM0JiYjIgYGFRQeAhceAxUUDgIjIi4CNTMUHgIzMjY2A7EfTYdnbK58QkaDtnCk5XjARo5tZ4ZBJ1OBWny0dTlIhrtzZcOfX8A6ZYFGZYxJAXAzT0A6HiBPZoRVVZBrPH3JclJ/ST5qRC5LQDYZI1Zrh1VZkGY3OHClbUtrRiE4aP//ALcAAAF4BbAGBgAtAAD////VAAACXwcIBiYALQAAAQcAav9wAUIADbcCARkDAQGDVgArNDQA//8ANf/sA8wFsAYGAC4AAP//ALIAAAUeBbAGBgI8AAD//wCpAAAFBQcxBiYALwAAAQcAdQF8ATEAC7YDDgMBAVtWACs0AP//AE3/6wTLBxkGJgDeAAABBwChANkBQgALtgIeAQEBXlYAKzQA//8AHQAABR4FsAYGACUAAP//AKkAAASIBbAGBgAmAAD//wCyAAAEMAWwBgYAsQAA//8AqQAABEYFsAYGACkAAP//ALIAAAUABxkGJgDcAAABBwChATABQgALtgEPAQEBXlYAKzQA//8AqQAABlIFsAYGADEAAP//AKkAAAUIBbAGBgAsAAD//wB3/+wFCgXEBgYAMwAA//8AsgAABQEFsAYGALYAAP//AKkAAATBBbAGBgA0AAD//wB4/+wE2AXEBgYAJwAA//8AMgAABJcFsAYGADgAAP//ADoAAATOBbAGBgA8AAD//wBt/+wD6gROBgYARQAA//8AXf/sA/METgYGAEkAAP//AJ0AAAQCBcIGJgDwAAABBwChAKH/6wALtgEPAQEBfVYAKzQA//8AXP/sBDUETgYGAFMAAP//AIz+YAQfBE4GBgBUAAAAAQBd/+wD7QROACcAE0AJAAkdFAdyCQtyACsrMhEzMDFlMjY2NzMOAiMiLgI1NTQ+AjMyFhYXIy4CIyIOAhUVFB4CAj5CcEgFsAV3wHN6tXc7O3e1en++bQWwBUFvSlVzQx0cQ3OENl89YKVlVpbDbSptw5ZWZ7FwQ2xBQ3GJRypHinBDAP//ABb+SwOwBDoGBgBdAAD//wAqAAADywQ6BgYAXAAA//8AXf/sA/MFxgYmAEkAAAEHAGoAjgAAAA23AgFBCwEBo1YAKzQ0AP//AJsAAANIBesGJgDsAAABBwB1AM7/6wALtgEGBQEBi1YAKzQA//8AX//sA7wETgYGAFcAAP//AI4AAAFpBcQGBgBNAAD///+6AAACRAXEBiYAjQAAAQcAav9V//4ADbcCARkDAQG1VgArNDQA////vv5LAVoFxAYGAE4AAP//AJ0AAARABeoGJgDxAAABBwB1ATz/6gALtgMOAwEBilYAKzQA//8AFv5LA7AF1wYmAF0AAAEGAKFPAAALtgIeAQEBklYAKzQA//8APQAABu0HNwYmADsAAAEHAEQCKwE3AAu2BBgVAQFhVgArNAD//wArAAAF0wYABiYAWwAAAQcARAGKAAAAC7YEGBUBAaBWACs0AP//AD0AAAbtBzcGJgA7AAABBwB1ArsBNwALtgQWAQEBYVYAKzQA//8AKwAABdMGAAYmAFsAAAEHAHUCGgAAAAu2BBYBAQGgVgArNAD//wA9AAAG7Qb9BiYAOwAAAQcAagH1ATcADbcFBCsVAQF4VgArNDQA//8AKwAABdMFxgYmAFsAAAEHAGoBVAAAAA23BQQrFQEBt1YAKzQ0AP//AA8AAAS8BzYGJgA9AAABBwBEAPkBNgALtgELAgEBYFYAKzQA//8AFv5LA7AGAAYmAF0AAAEHAEQAiwAAAAu2AhsBAQGgVgArNAD//wBoBCIA/gYABgYACwAA//8AiQQTAiQGAAYGAAYAAP//AKH/9AOMBbAEJgAFAAAABwAFAhAAAP///7T+SwJABdYGJgCcAAABBwCf/0j/1wALtgEYAAEBgFYAKzQA//8AMAQWAUgGAAYGAYUAAP//AKkAAAZSBzcGJgAxAAABBwB1ApkBNwALtgMRAAEBYVYAKzQA//8AiwAABnkGAAYmAFEAAAEHAHUCrgAAAAu2AzMDAQGgVgArNAD//wAd/msFHgWwBiYAJQAAAQcApwGAAAEAELUEAxEFAQG4/7WwVgArNDT//wBt/msD6gROBiYARQAAAQcApwDIAAEAELUDAj4xAQG4/8mwVgArNDT//wCpAAAERgdCBiYAKQAAAQcARAD6AUIAC7YEEgcBAWxWACs0AP//ALIAAAUAB0IGJgDcAAABBwBEAWwBQgALtgEMAQEBbFYAKzQA//8AXf/sA/MGAAYmAEkAAAEHAEQAxAAAAAu2AS4LAQGMVgArNAD//wCdAAAEAgXrBiYA8AAAAQcARADd/+sAC7YBDAEBAYtWACs0AP//AFoAAAUiBbAGBgC5AAD//wBg/icFQwQ6BgYAzQAA//8AFgAABN0G5wYmARkAAAEHAKwEOgD5AA23AwIVEwEBLVYAKzQ0AP////sAAAQMBb8GJgEaAAABBwCsA9T/0QANtwMCGRcBAXtWACs0NAD//wBc/ksIQAROBCYAUwAAAAcAXQSQAAD//wB3/ksJMQXEBCYAMwAAAAcAXQWBAAD//wBQ/k8EawXEBiYA2wAAAQcCYQGb/7YAC7YCQioAAGRWACs0AP//AFj+UAOtBE0GJgDvAAABBwJhAUP/twALtgI/KQAAZVYAKzQA//8AeP5PBNgFxAYmACcAAAEHAmEB5f+2AAu2ASsFAABkVgArNAD//wBd/k8D7QROBiYARwAAAQcCYQFS/7YAC7YBKwkAAGRWACs0AP//AA8AAAS8BbAGBgA9AAD//wAv/l8D4AQ6BgYAvQAA//8AtwAAAXgFsAYGAC0AAP//ABsAAAc2BxkGJgDaAAABBwChAfgBQgALtgUdDQEBXlYAKzQA//8AFgAABgQFwgYmAO4AAAEHAKEBX//rAAu2BR0NAQF9VgArNAD//wC3AAABeAWwBgYALQAA//8AHQAABR4HDgYmACUAAAEHAKEA8wE3AAu2AxMHAQFTVgArNAD//wBt/+wD6gXXBiYARQAAAQcAoQCZAAAAC7YCQA8BAX5WACs0AP//AB0AAAUeBv0GJgAlAAABBwBqAPkBNwANtwQDIwcBAXhWACs0NAD//wBt/+wD6gXGBiYARQAAAQcAagCfAAAADbcDAlAPAQGjVgArNDQA////8QAAB1gFsAYGAIEAAP//AE//6wZ9BE8GBgCGAAD//wCpAAAERgcZBiYAKQAAAQcAoQC+AUIAC7YEFQcBAV5WACs0AP//AF3/7APzBdcGJgBJAAABBwChAIgAAAALtgExCwEBflYAKzQA//8AXv/rBRIG2gYmAVgAAAEHAGoA1AEUAA23AgFCAAEBQVYAKzQ0AP//AGP/7APqBFAGBgCdAAD//wBj/+wD6gXHBiYAnQAAAQcAagCIAAEADbcCAUAAAQGiVgArNDQA//8AGwAABzYHCAYmANoAAAEHAGoB/gFCAA23BgUtDQEBg1YAKzQ0AP//ABYAAAYEBbEGJgDuAAABBwBqAWX/6wANtwYFLQ0BAaJWACs0NAD//wBQ/+wEawcdBiYA2wAAAQcAagC3AVcADbcDAlQVAQGEVgArNDQA//8AWP/sA60FxQYmAO8AAAEGAGpf/wANtwMCURQBAaNWACs0NAD//wCyAAAFAAbvBiYA3AAAAQcAcAEEAUoAC7YBDAgBAbFWACs0AP//AJ0AAAQCBZgGJgDwAAABBgBwdfMAC7YBDAgBAdBWACs0AP//ALIAAAUABwgGJgDcAAABBwBqATYBQgANtwIBHwEBAYNWACs0NAD//wCdAAAEAgWxBiYA8AAAAQcAagCn/+sADbcCAR8BAQGiVgArNDQA//8Ad//sBQoG/wYmADMAAAEHAGoBHAE5AA23AwJBEQEBZlYAKzQ0AP//AFz/7AQ1BcYGJgBTAAABBwBqAJgAAAANtwMCQQYBAaNWACs0NAD//wBn/+wE+gXEBgYBFwAA//8AXP/sBDQETgYGARgAAP//AGf/7AT6BwMGJgEXAAABBwBqASgBPQANtwQDTwABAWpWACs0NAD//wBc/+wENAXIBiYBGAAAAQcAagCIAAIADbcEA0EAAQGlVgArNDQA//8AlP/sBPQHHgYmAOcAAAEHAGoBDQFYAA23AwJCHgEBhVYAKzQ0AP//AGT/6wPhBcYGJgD/AAABBgBqfAAADbcDAkEJAQGjVgArNDQA//8ATf/rBMsG7wYmAN4AAAEHAHAArQFKAAu2AhsYAQGxVgArNAD//wAW/ksDsAWtBiYAXQAAAQYAcCMIAAu2AhsYAQHlVgArNAD//wBN/+sEywcIBiYA3gAAAQcAagDfAUIADbcDAi4BAQGDVgArNDQA//8AFv5LA7AFxgYmAF0AAAEGAGpVAAANtwMCLgEBAbdWACs0NAD//wBN/+sEywdBBiYA3gAAAQcApgEuAUIADbcDAhkBAQFiVgArNDQA//8AFv5LA9AF/wYmAF0AAAEHAKYApAAAAA23AwIZAQEBllYAKzQ0AP//AJcAAATJBwgGJgDhAAABBwBqAQkBQgANtwMCLxYBAYNWACs0NAD//wBoAAADvQWxBiYA+QAAAQYAamXrAA23AwItAwEBolYAKzQ0AP//ALIAAAYxBwgGJgDlAAABBwBqAdMBQgANtwMCMhwBAYNWACs0NAD//wCeAAAFfwWxBiYA/QAAAQcAagFt/+sADbcDAjIcAQGiVgArNDQA//8AX//sA/EGAAYGAEgAAP//AB3+ogUeBbAGJgAlAAABBwCtBQMAAAAOtAMRBQEBuP91sFYAKzT//wBt/qID6gROBiYARQAAAQcArQRLAAAADrQCPjEBAbj/ibBWACs0//8AHQAABR4HuwYmACUAAAEHAKsE7gFHAAu2Aw8HAQFxVgArNAD//wBt/+wD6gaEBiYARQAAAQcAqwSUABAAC7YCPA8BAZxWACs0AP//AB0AAAUeB8QGJgAlAAABBwJHAMIBLwANtwQDEgcBAWFWACs0NAD//wBt/+wEwAaNBiYARQAAAQYCR2j4AA23AwJBDwEBjFYAKzQ0AP//AB0AAAUeB8AGJgAlAAABBwJIAMYBPQANtwQDEAcBAVxWACs0NAD////J/+wD6gaJBiYARQAAAQYCSGwGAA23AwI9DwEBh1YAKzQ0AP//AB0AAAUeB+wGJgAlAAABBwJJAMcBHAANtwQDEwMBAVBWACs0NAD//wBt/+wEWga1BiYARQAAAQYCSW3lAA23AwJADwEBe1YAKzQ0AP//AB0AAAUeB9oGJgAlAAABBwJKAMcBBgANtwQDEAcBATpWACs0NAD//wBt/+wD6gajBiYARQAAAQYCSm3PAA23AwI9DwEBZVYAKzQ0AP//AB3+ogUeBzcGJgAlAAAAJwCeAMkBNwEHAK0FAwAAABe0BBoFAQG4/3W3VgMRBwEBbFYAKzQrNAD//wBt/qID6gYABiYARQAAACYAnm8AAQcArQRLAAAAF7QDRzEBAbj/ibdWAj4PAQGXVgArNCs0AP//AB0AAAUeB7gGJgAlAAABBwJMAOoBLQANtwQDEwcBAVxWACs0NAD//wBt/+wD6gaBBiYARQAAAQcCTACQ//YADbcDAkAPAQGHVgArNDQA//8AHQAABR4HuAYmACUAAAEHAkUA6gEtAA23BAMTBwEBXFYAKzQ0AP//AG3/7APqBoEGJgBFAAABBwJFAJD/9gANtwMCQA8BAYdWACs0NAD//wAdAAAFHghCBiYAJQAAAQcCTQDuAT4ADbcEAxMHAQFuVgArNDQA//8Abf/sA+oHCwYmAEUAAAEHAk0AlAAHAA23AwJADwEBmVYAKzQ0AP//AB0AAAUeCBYGJgAlAAABBwJgAO4BRgANtwQDEwcBAW9WACs0NAD//wBt/+wD6gbfBiYARQAAAQcCYACUAA8ADbcDAkAPAQGaVgArNDQA//8AHf6iBR4HDgYmACUAAAAnAKEA8wE3AQcArQUDAAAAF7QEIAUBAbj/dbdWAxMHAQFTVgArNCs0AP//AG3+ogPqBdcGJgBFAAAAJwChAJkAAAEHAK0ESwAAABe0A00xAQG4/4m3VgJADwEBflYAKzQrNAD//wCp/qwERgWwBiYAKQAAAQcArQTAAAoADrQEEwIBAbj/f7BWACs0//8AXf6iA/METgYmAEkAAAEHAK0EjQAAAA60AS8AAQG4/4mwVgArNP//AKkAAARGB8YGJgApAAABBwCrBLkBUgALtgQRBwEBfFYAKzQA//8AXf/sA/MGhAYmAEkAAAEHAKsEgwAQAAu2AS0LAQGcVgArNAD//wCpAAAERgcuBiYAKQAAAQcApQCPAUYAC7YEHgcBAXZWACs0AP//AF3/7APzBewGJgBJAAABBgClWQQAC7YBOgsBAZZWACs0AP//AKkAAATlB88GJgApAAABBwJHAI0BOgANtwUEFAcBAWxWACs0NAD//wBd/+wErwaNBiYASQAAAQYCR1f4AA23AgEwCwEBjFYAKzQ0AP///+4AAARGB8sGJgApAAABBwJIAJEBSAANtwUEEgcBAWdWACs0NAD///+4/+wD8waJBiYASQAAAQYCSFsGAA23AgEuCwEBh1YAKzQ0AP//AKkAAAR/B/cGJgApAAABBwJJAJIBJwANtwUEFQcBAVtWACs0NAD//wBd/+wESQa1BiYASQAAAQYCSVzlAA23AgExCwEBe1YAKzQ0AP//AKkAAARGB+UGJgApAAABBwJKAJIBEQANtwUEEgcBAUVWACs0NAD//wBd/+wD8wajBiYASQAAAQYCSlzPAA23AgEuCwEBZVYAKzQ0AP//AKn+rARGB0IGJgApAAAAJwCeAJQBQgEHAK0EwAAKABe0BRwCAQG4/3+3VgQTBwEBd1YAKzQrNAD//wBd/qID8wYABiYASQAAACYAnl4AAQcArQSNAAAAF7QCOAABAbj/ibdWAS8LAQGXVgArNCs0AP//ALcAAAH4B8YGJgAtAAABBwCrA2UBUgALtgEFAwEBfFYAKzQA//8AnAAAAd0GggYmAI0AAAEHAKsDSgAOAAu2AQUDAQGuVgArNAD//wCk/qsBfwWwBiYALQAAAQcArQNsAAkADrQBBwIBAbj/frBWACs0//8Ahv6sAWkFxAYmAE0AAAEHAK0DTgAKAA60AhMCAQG4/3+wVgArNP//AHf+ogUKBcQGJgAzAAABBwCtBRgAAAAOtAIvBgEBuP+JsFYAKzT//wBc/qEENQROBiYAUwAAAQcArQSd//8ADrQCLxEBAbj/iLBWACs0//8Ad//sBQoHvQYmADMAAAEHAKsFEQFJAAu2Ai0RAQFfVgArNAD//wBc/+wENQaEBiYAUwAAAQcAqwSNABAAC7YCLQYBAZxWACs0AP//AHf/7AU9B8YGJgAzAAABBwJHAOUBMQANtwMCMBEBAU9WACs0NAD//wBc/+wEuQaNBiYAUwAAAQYCR2H4AA23AwIwBgEBjFYAKzQ0AP//AEb/7AUKB8IGJgAzAAABBwJIAOkBPwANtwMCLhEBAUpWACs0NAD////C/+wENQaJBiYAUwAAAQYCSGUGAA23AwIuBgEBh1YAKzQ0AP//AHf/7AUKB+4GJgAzAAABBwJJAOoBHgANtwMCMREBAT5WACs0NAD//wBc/+wEUwa1BiYAUwAAAQYCSWblAA23AwIxBgEBe1YAKzQ0AP//AHf/7AUKB9wGJgAzAAABBwJKAOoBCAANtwMCLhEBAShWACs0NAD//wBc/+wENQajBiYAUwAAAQYCSmbPAA23AwIuBgEBZVYAKzQ0AP//AHf+ogUKBzkGJgAzAAAAJwCeAOwBOQEHAK0FGAAAABe0AzgGAQG4/4m3VgIvEQEBWlYAKzQrNAD//wBc/qEENQYABiYAUwAAACYAnmgAAQcArQSd//8AF7QDOBEBAbj/iLdWAi8GAQGXVgArNCs0AP//AGb/7AWdBzEGJgCYAAABBwB1Ad4BMQALtgM6HAEBR1YAKzQA//8AXP/sBLoGAAYmAJkAAAEHAHUBZQAAAAu2AzYQAQGMVgArNAD//wBm/+wFnQcxBiYAmAAAAQcARAFOATEAC7YDPBwBAUdWACs0AP//AFz/7AS6BgAGJgCZAAABBwBEANUAAAALtgM4EAEBjFYAKzQA//8AZv/sBZ0HtQYmAJgAAAEHAKsFDQFBAAu2AzscAQFXVgArNAD//wBc/+wEugaEBiYAmQAAAQcAqwSUABAAC7YDNxABAZxWACs0AP//AGb/7AWdBx0GJgCYAAABBwClAOMBNQALtgNIHAEBUVYAKzQA//8AXP/sBLoF7AYmAJkAAAEGAKVqBAALtgNEEAEBllYAKzQA//8AZv6iBZ0GOAYmAJgAAAEHAK0FCQAAAA60Az0QAQG4/4mwVgArNP//AFz+mAS6BLEGJgCZAAABBwCtBJv/9gAOtAM5GwEBuP9/sFYAKzT//wCM/qIEqgWwBiYAOQAAAQcArQTvAAAADrQBGQYBAbj/ibBWACs0//8Aif6iA90EOgYmAFkAAAEHAK0EUgAAAA60Ah8LAQG4/4mwVgArNP//AIz/7ASqB7sGJgA5AAABBwCrBOkBRwALtgEXAAEBcVYAKzQA//8Aif/sA90GhAYmAFkAAAEHAKsEhQAQAAu2Ah0RAQGwVgArNAD//wCM/+wGHQdCBiYAmgAAAQcAdQHVAUIAC7YCIAoBAWxWACs0AP//AIn/7AUQBesGJgCbAAABBwB1AWP/6wALtgMmGwEBi1YAKzQA//8AjP/sBh0HQgYmAJoAAAEHAEQBRQFCAAu2AiIKAQFsVgArNAD//wCJ/+wFEAXrBiYAmwAAAQcARADT/+sAC7YDKBsBAYtWACs0AP//AIz/7AYdB8YGJgCaAAABBwCrBQQBUgALtgIhCgEBfFYAKzQA//8Aif/sBRAGbwYmAJsAAAEHAKsEkv/7AAu2AycbAQGbVgArNAD//wCM/+wGHQcuBiYAmgAAAQcApQDaAUYAC7YCLhUBAXZWACs0AP//AIn/7AUQBdcGJgCbAAABBgClaO8AC7YDNBsBAZVWACs0AP//AIz+mQYdBgIGJgCaAAABBwCtBQn/9wAOtAIjEAEBuP+AsFYAKzT//wCJ/qIFEASRBiYAmwAAAQcArQSIAAAADrQDKRUBAbj/ibBWACs0//8AD/6jBLwFsAYmAD0AAAEHAK0EvAABAA60AQwGAQG4/3awVgArNP//ABb+BAOwBDoGJgBdAAABBwCtBR3/YgAOtAIiCAAAuP+5sFYAKzT//wAPAAAEvAe6BiYAPQAAAQcAqwS4AUYAC7YBCgIBAXBWACs0AP//ABb+SwOwBoQGJgBdAAABBwCrBEoAEAALtgIaAQEBsFYAKzQA//8ADwAABLwHIgYmAD0AAAEHAKUAjgE6AAu2ARcIAQFqVgArNAD//wAW/ksDsAXsBiYAXQAAAQYApSAEAAu2AicYAQGqVgArNAD//wBf/ssErQYABCYASAAAACcCNgGhAkYBBwBDAJ//YwAXtAQ3FgEBuP93t1YDMgsBAYNWACs0KzQA//8AMv6ZBJcFsAYmADgAAAEHAmECQAAAAAu2AgsCAACaVgArNAD//wAo/pkDsQQ6BiYA9gAAAQcCYQHHAAAAC7YCCwIAAJpWACs0AP//AJf+mQTJBbAGJgDhAAABBwJhAv4AAAALtgIdGQEAmlYAKzQA//8AaP6ZA70EPAYmAPkAAAEHAmEB9gAAAAu2AhsCAQCaVgArNAD//wCy/pkEMAWwBiYAsQAAAQcCYQDwAAAAC7YBCQQAAJpWACs0AP//AJv+mQNIBDoGJgDsAAABBwJhANUAAAALtgEJBAAAmlYAKzQA//8AP/5TBb4FxAYmAUwAAAEHAmEDBv+6AAu2AjoKAABrVgArNAD////d/lYEZAROBiYBTQAAAQcCYQIA/70AC7YCOQkAAGtWACs0AP//AI0AAAPgBgAGBgBMAAAAAv/UAAAEsQWwABgAHAAaQAwcGxgAAAsMAnIOCwgAPzMrEjkvM8wyMDFBITIWFhUUDgIjIREzESEyNjY1NCYmIyEBFSE1ATYBjaDcckB+uHj94MEBX2uFPj6Fa/5zARv9gwNfa8CBYJ91PwWw+u1PgElJekkCJpiYAAAC/9QAAASxBbAAGAAcABlACxwbGAAACwwCDgsIAD8zPxI5LzPMMjAxQSEyFhYVFA4CIyERMxEhMjY2NTQmJiMhARUhNQE2AY2g3HJAfrh4/eDBAV9rhT4+hWv+cwEb/YMDX2vAgWCfdT8FsPrtT4BJSXpJAiaYmAACAAMAAAQwBbAABQAJABZACgYHBwQCBQJyBAgAPysyEjkvMzAxQRUhESMRARUhNQQw/ULAAc79gwWwnvruBbD9k5iYAAL//QAAA0gEOgAFAAkAFkAKCQgIBAIFBnIECgA/KzISOS8zMDFBFSERIxEBFSE1A0j+DLkB3/2DBDqZ/F8EOv48mJgABAALAAAFMgWwAAMACQANABEAK0AVDAsLBwcGEBEGEQYRAgkDAnIKAghyACsyKzIROTkvLxEzETMSOREzMDFBESMRIQEhJyEBEwE3AQEVITUBh8EEQv2I/qoeAQEB/C393WwCo/1W/YMFsPpQBbD836ACgfpQAqip/K8EzpiYAAAE/9MAAAQpBgAAAwAJAA0AEQAtQBcEBnIMCwsHBwYQEQYRBhECAwByCgIKcgArMisROTkvLxEzETMSOREzKzAxQREjEQEBISczARMBNwEBFSE1AWC5A07+Q/7mFtYBOzT+jGIB7v4n/YMGAPoABgD+Ov27mgGr+8YCAqX9WQVYmJgAAgAPAAAEvAWwAAgADAAdQA8MAQQHAwsLBgMIAnIGCHIAKysyETkvFzkzMDFTAQEzAREjEQEBFSE17AF6AXvb/grB/goDmf2DBbD9JQLb/HD94AIgA5D88JiYAAAEAC/+XwPgBDoAAwAIAA0AEQAXQAsREBACBQ0GcgIOcgArKzISOS8zMDFlESMRNwEzASMDARcjAQEVITUCZLlXASC+/m976AEoKXv+bQMd/YOE/dsCJXcDP/vGBDr8wPoEOvxSmJgAAAIAOgAABM4FsAALAA8AH0APDwcFAQQKAw4OCQUDAAJyACsyLzM5Lxc5EjkzMDFBAQEzAQEjAQEjCQIVITUBJgFeAV7h/jQB1+P+mf6Z4wHX/jQDgf2DBbD90gIu/S/9IQI5/ccC3wLR/YWYmAAAAgAqAAADywQ6AAsADwAfQA8PBwUBCgQDDg4JBQMABnIAKzIvMzkvFzkSOTMwMUETEzMBASMDAyMJAhUhNQEK7fDZ/p4Bbdb6+tcBbP6fAwj9gwQ6/nYBiv3q/dwBlv5qAiQCFv4+mJgA//8AZP/sA+wETQYGAL8AAP//ABIAAAQvBbAGJgAqAAABBwI2/4P+fQAOtAMOAgIAuAEIsFYAKzT//wCQAosFyAMjBgYBggAA//8AXgAABDMFxAYGABYAAP//AF//7AP6BcQGBgAXAAD//wA1AAAEUQWwBgYAGAAA//8Amv/sBC4FsAYGABkAAP//AJn/7AQxBbIEBgAaFAD//wCF/+wEIwXEBAYAHBQA//8AZP/+A/gFxAQGAB0AAP//AIf/7AQfBcQEBgAUFAD//wB6/+wE3QdXBiYAKwAAAQcAdQG/AVcAC7YBLBABAW1WACs0AP//AGH+VQPyBgAGJgBLAAABBwB1AUsAAAALtgM/GgEBjFYAKzQA//8AqQAABQkHNwYmADIAAAEHAEQBZQE3AAu2AQwJAQFhVgArNAD//wCNAAAD4AYABiYAUgAAAQcARADMAAAAC7YCHgMBAaBWACs0AP//AB0AAAUeByAGJgAlAAABBwCsBG0BMgANtwQDDgMBAWZWACs0NAD//wA6/+wD6gXpBiYARQAAAQcArAQT//sADbcDAjwPAQGRVgArNDQA//8AXwAABEYHKwYmACkAAAEHAKwEOAE9AA23BQQRBwEBcVYAKzQ0AP//ACn/7APzBekGJgBJAAABBwCsBAL/+wANtwIBLQsBAZFWACs0NAD///8LAAAB6gcrBiYALQAAAQcArALkAT0ADbcCAQUDAQFxVgArNDQA///+8AAAAc8F5wYmAI0AAAEHAKwCyf/5AA23AgEFAwEBo1YAKzQ0AP//AHf/7AUKByIGJgAzAAABBwCsBJABNAANtwMCLREBAVRWACs0NAD//wAz/+wENQXpBiYAUwAAAQcArAQM//sADbcDAi0GAQGRVgArNDQA//8AVgAABMoHIAYmADYAAAEHAKwELwEyAA23AwIfAAEBZlYAKzQ0AP///4wAAAKYBekGJgBWAAABBwCsA2X/+wANtwMCGAMBAaVWACs0NAD//wCM/+wEqgcgBiYAOQAAAQcArARoATIADbcCARcLAQFmVgArNDQA//8AK//sA90F6QYmAFkAAAEHAKwEBP/7AA23AwIdEQEBpVYAKzQ0AP///zgAAATTBj4EJgDQZAAABwCu/oD/////AKn+rASIBbAGJgAmAAABBwCtBLoACgAOtAI0GwEBuP9/sFYAKzT//wCM/pgEIQYABiYARgAAAQcArQSr//YADrQDMwQBAbj/a7BWACs0//8Aqf6sBMcFsAYmACgAAAEHAK0EugAKAA60AiIdAQG4/3+wVgArNP//AF/+ogPxBgAGJgBIAAABBwCtBL4AAAAOtAMzFgEBuP+JsFYAKzT//wCp/gYExwWwBiYAKAAAAQcBygFl/qgADrQCKB0BAbj/l7BWACs0//8AX/38A/EGAAYmAEgAAAEHAcoBaf6eAA60AzkWAQG4/6GwVgArNP//AKn+rAUIBbAGJgAsAAABBwCtBR8ACgAOtAMPCgEBuP9/sFYAKzT//wCN/qwD4AYABiYATAAAAQcArQShAAoADrQCHgIBAbj/f7BWACs0//8AqQAABQUHMQYmAC8AAAEHAHUBfAExAAu2Aw4DAQFbVgArNAD//wCNAAAEDQdBBiYATwAAAQcAdQFEAUEAC7YDDgMBABtWACs0AP//AKn+/AUFBbAGJgAvAAABBwCtBOkAWgAOtAMRAgEBuP/PsFYAKzT//wCN/ukEDQYABiYATwAAAQcArQRmAEcADrQDEQIBAbj/vLBWACs0//8Aqf6sBBwFsAYmADAAAAEHAK0EwQAKAA60AgsCAQG4/3+wVgArNP//AIb+rAFhBgAGJgBQAAABBwCtA04ACgAOtAEHAgEBuP9/sFYAKzT//wCp/qwGUgWwBiYAMQAAAQcArQXSAAoADrQDFAYBAbj/f7BWACs0//8Ai/6sBnkETgYmAFEAAAEHAK0F1gAKAA60AzYCAQG4/3+wVgArNP//AKn+rAUJBbAGJgAyAAABBwCtBSUACgAOtAENAgEBuP9/sFYAKzT//wCN/qwD4AROBiYAUgAAAQcArQSIAAoADrQCHwIBAbj/f7BWACs0//8Ad//sBQoH6AYmADMAAAEHAkYFDAFUAA23AwIxEQEBWlYAKzQ0AP//AKkAAATBB0IGJgA0AAABBwB1AX0BQgALtgEYDwEBbFYAKzQA//8AjP5gBB8F9gYmAFQAAAEHAHUBlP/2AAu2AzADAQGWVgArNAD//wCp/qwEygWwBiYANgAAAQcArQS4AAoADrQCIRgBAbj/f7BWACs0//8Ag/6tApgETgYmAFYAAAEHAK0DSwALAA60AhoCAQG4/4CwVgArNP//AFH+oQRzBcQGJgA3AAABBwCtBMn//wAOtAE9KwEBuP+IsFYAKzT//wBf/pgDvAROBiYAVwAAAQcArQSH//YADrQBOSkBAbj/f7BWACs0//8AMv6iBJcFsAYmADgAAAEHAK0EuwAAAA60AgsCAQG4/3WwVgArNP//AAn+ogJXBUEGJgBYAAABBwCtBBoAAAAOtAIZEQEBuP+JsFYAKzT//wCM/+wEqgfmBiYAOQAAAQcCRgTkAVIADbcCARsAAQFsVgArNDQA//8AHQAABP0HLgYmADoAAAEHAKUAswFGAAu2AhgJAQF2VgArNAD//wAhAAADuwXiBiYAWgAAAQYApR36AAu2AhgJAQGgVgArNAD//wAd/qwE/QWwBiYAOgAAAQcArQTkAAoADrQCDQQBAbj/f7BWACs0//8AIf6sA7sEOgYmAFoAAAEHAK0ETQAKAA60Ag0EAQG4/3+wVgArNP//AD3+rAbtBbAGJgA7AAABBwCtBe8ACgAOtAQZEwEBuP9/sFYAKzT//wAr/qwF0wQ6BiYAWwAAAQcArQVTAAoADrQEGRMBAbj/f7BWACs0//8AV/6sBHoFsAYmAD4AAAEHAK0EugAKAA60AxECAQG4/3+wVgArNP//AFn+rAOzBDoGJgBeAAABBwCtBGMACgAOtAMRAgEBuP9/sFYAKzT///54/+wFUAXWBCYAM0YAAQcBcf4I//8ADbcDAi4RAAASVgArNDQA//8AFAAABHEFGwYmAkMAAAAHAK7/2/7c////nwAAA+sFHgQmAjg8AAAHAK7+5/7f////uwAABJUFGwQmAfQ8AAAHAK7/A/7c////wAAAAY0FHgQmAfM8AAAHAK7/CP7f////3//wBGUFGwQmAe0KAAAHAK7/J/7c////VQAABFgFGwQmAeM8AAAHAK7+nf7c////9wAABIgFGgQmAgMKAAAHAK7/P/7b//8AFAAABHEEjQYGAkMAAP//AIsAAAPwBI0GBgJCAAD//wCLAAADrwSNBgYCOAAA//8ASAAAA+EEjQYGAeIAAP//AIsAAARZBI0GBgH0AAD//wCYAAABUQSNBgYB8wAA//8AiwAABFcEjQYGAfEAAP//AIsAAAV4BI0GBgHvAAD//wCLAAAEWQSNBgYB7gAA//8AYP/wBFsEnQYGAe0AAP//AIsAAAQbBI0GBgHsAAD//wApAAAD/QSNBgYB6AAA//8ADgAABBwEjQYGAeMAAP//ACcAAAQyBI0GBgHkAAD///+yAAACPAXkBiYB8wAAAQcAav9NAB4ADbcCAQ0DAQGEVgArNDQA//8ADgAABBwF5AYmAeMAAAEGAGpuHgANtwQDFwkBAYNWACs0NAD//wCLAAADrwXkBiYCOAAAAQYAanIeAA23BQQZBwEBg1YAKzQ0AP//AIsAAAOFBh4GJgH6AAABBwB1ATUAHgALtgIIAwEBg1YAKzQA//8ARP/wA94EnQYGAekAAP//AJgAAAFRBI0GBgHzAAD///+yAAACPAXkBiYB8wAAAQcAav9NAB4ADbcCAQ0DAQGEVgArNDQA//8ALP/wA00EjQYGAfIAAP//AIsAAARXBh4GJgHxAAABBwB1ASUAHgALtgMOAwEBhFYAKzQA//8AI//sBAwF9QYmAhEAAAEGAKFnHgALtgIdFwEBhFYAKzQA//8AFAAABHEEjQYGAkMAAP//AIsAAAPwBI0GBgJCAAD//wCLAAADhQSNBgYB+gAA//8AiwAAA68EjQYGAjgAAP//AIsAAARiBfUGJgIOAAABBwChAMkAHgALtgMRCAEBhFYAKzQA//8AiwAABXgEjQYGAe8AAP//AIsAAARZBI0GBgH0AAD//wBg//AEWwSdBgYB7QAA//8AiwAABEQEjQYGAf8AAP//AIsAAAQbBI0GBgHsAAD//wBh//AEMQSdBgYCQQAA//8AKQAAA/0EjQYGAegAAP//ACcAAAQyBI0GBgHkAAAAAwBI/k8D1QSdAB4APgBCAChAEx8BAgI+PhU/NDRAMCoLcg8LFX4APzPMK8zNMxI5EjkvMxI5OTAxQSM1MzI2NjU0JiYjIgYGFSM0PgIzMh4CFRQOAiczMh4CFRQOAiMiLgI1Mx4CMzI2NjU0LgIjIxMRIxECEJKOWnAzOHRcQmxBuUFzmlpfo3pFQ3ee7JJ1q282SoOoX0iahVK5BUZxRFp+QiNFZUKO3LkCLHQrTzYzUC8kSjpLd1QtJU15U0VxUSxFL1NuP1eAUyggTYJhQlAkLFM5M0sxGP5H/f8CAQAEAIv+mQT7BI0AAwAHAAsADwAdQA0DAgIGCwd9Dw4KCgYSAD8zEM4zPzMSOS8zMDFBFSE1ExEjESERIxEBESMRA8D9XyW5A865AVu5AouZmQIC+3MEjftzBI38Df3/AgEAAAIAYf5VBDEEnQAnACsAGEALGRB+KCQkKioFC3IAKzIvMhEzPzMwMUEzDgIjIi4CNTU0PgIzMhYWFyMuAiMiDgIVFRQeAjMyNjYHESMRA3e6DHHNl3G2gkZGhLt0kshxDLoKPnZfT3hRKSVMdlBkeD/DuQF5cbJmTY/KfWZ9ypBNZbR1TW47NWeSXWdYkWo5OG3W/f8CAQD//wAOAAAEHASNBgYB4wAA//8AAv5PBWwEnQYmAicAAAAHAmECu/+2//8AiwAABGIFywYmAg4AAAEHAHAAnQAmAAu2Aw4IAQGwVgArNAD//wAj/+wEDAXLBiYCEQAAAQYAcDsmAAu2AhoXAQGwVgArNAD//wBhAAAFBgSNBgYCAQAA//8AmP/wBTYEjQQmAfMAAAAHAfIB6QAA//8ACQAABfIGAAYmAoQAAAEHAHUCnwAAAAu2BhkPAQFNVgArNAD//wBg/8YEWwYeBiYChgAAAQcAdQF9AB4AC7YDMBEBAVtWACs0AP//AET9/APeBJ0GJgHpAAAABwHKASj+nv//ADEAAAXxBh4GJgHlAAABBwBEAaEAHgALtgQYCgEBa1YAKzQA//8AMQAABfEGHgYmAeUAAAEHAHUCMQAeAAu2BBYKAQFrVgArNAD//wAxAAAF8QXkBiYB5QAAAQcAagFrAB4ADbcFBB8KAQGEVgArNDQA//8ADgAABBwGHgYmAeMAAAAHAEQApAAe//8AHf5OBR4FsAYmACUAAAEHAKQBfAAAAAu2Aw4FAQE5VgArNAD//wBt/k4D6gROBiYARQAAAQcApADEAAAAC7YCOzEAAE1WACs0AP//AKn+WARGBbAGJgApAAABBwCkATkACgALtgQQAgAAQ1YAKzQA//8AXf5OA/METgYmAEkAAAEHAKQBBgAAAAu2ASwAAABNVgArNAD//wAU/k4EcQSNBiYCQwAAAAcApAEeAAD//wCL/lYDrwSNBiYCOAAAAAcApADnAAj//wCG/qwBYQQ6BiYAjQAAAQcArQNOAAoADrQBBwIBAbj/f7BWACs0AAAADwC6AAMAAQQJAAAAXgAAAAMAAQQJAAEADABeAAMAAQQJAAIADgBqAAMAAQQJAAMADABeAAMAAQQJAAQADABeAAMAAQQJAAUAJgB4AAMAAQQJAAYAHACeAAMAAQQJAAcAQAC6AAMAAQQJAAgADAD6AAMAAQQJAAkAJgEGAAMAAQQJAAsAFAEsAAMAAQQJAAwAFAEsAAMAAQQJAA0AXAFAAAMAAQQJAA4AVAGcAAMAAQQJABkADABeAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEAMQAgAEcAbwBvAGcAbABlACAASQBuAGMALgAgAEEAbABsACAAUgBpAGcAaAB0AHMAIABSAGUAcwBlAHIAdgBlAGQALgBSAG8AYgBvAHQAbwBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAzAC4AMAAwADUAOwAgADIAMAAyADIAUgBvAGIAbwB0AG8ALQBSAGUAZwB1AGwAYQByAFIAbwBiAG8AdABvACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAARwBvAG8AZwBsAGUALgBHAG8AbwBnAGwAZQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEcAbwBvAGcAbABlAC4AYwBvAG0ATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBwAGEAYwBoAGUALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMAAAAAMAAAAAAAD/agBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQACAAgACP//AA8AAQACAA4AAAAAAAACKAACAFkAJQA+AAEARABeAAEAagBqAAEAcABwAAEAdQB1AAEAgQCBAAEAgwCDAAEAhgCGAAEAiQCJAAEAiwCWAAEAmACfAAEAoQCjAAEApQCmAAEAqACtAAMAsQCxAAEAugC7AAEAvwC/AAEAwQDBAAEAwwDEAAEAxwDHAAEAywDLAAEAzQDOAAEA0ADRAAEA0wDTAAEA2gDeAAEA4QDhAAEA5QDlAAEA5wDpAAEA6wD7AAEA/QD9AAEA/wEBAAEBAwEDAAEBCAEJAAEBFgEaAAEBHAEcAAEBIAEiAAEBJAEnAAMBKgErAAEBMwE0AAEBNgE2AAEBOwE8AAEBQQFEAAEBRwFIAAEBSwFNAAEBUQFRAAEBVAFYAAEBXQFeAAEBYgFiAAEBZAFkAAEBaAFoAAEBagFsAAEBbgFuAAEBcAFwAAEBywHRAAIB4gH2AAEB+gH6AAECAwIDAAECBQIFAAECDAIOAAECEAIRAAECEwITAAECFwIXAAECGQIbAAECIQIhAAECJgIoAAECKgIqAAECOAI4AAECOwI7AAECPQI9AAECQAJDAAECbwJzAAECgwKIAAECiwLzAAEC9gO1AAEDtwO3AAEDuQPDAAEDxQPOAAED0APrAAED7wPvAAED8QP4AAED+gP8AAED/wQDAAEEBQSQAAEEkwSUAAEElgSXAAEEmQScAAEEpgUCAAEFBAUOAAEFEQUeAAEAAQADAAAAEAAAABYAAAAgAAEAAQCtAAIAAQCoAKwAAAACAAIAqACsAAABJAEnAAUAAQAAAB4AEAAKAAIALgA2AAJjcHNwADprZXJuAEAABERGTFQAOGN5cmwAOGdyZWsAOGxhdG4AOAABAAAAAQAiAAIACAACAC4EEAAAAAEAAAAAAAEAAQAOAAAAAQ8CAAUAJABIAAD//wACAAAAAQABS1gABAAAAewTqBEEEQQXgBDmFyYRShGIEloRbEe6EpoSmhWQEawSmhKaEloSvCBcGRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKaEVQSmhFUEloSvBIiEXofkhGaEjwRmhI8EcIR2BJaERARFhEQERwREBEWERwAAks6AAQAAE7aV5YAJgAlAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAA/+T/4wAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAP/kABH/5QAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAP/tAAD/1f/lAAAAAP/qAAAAAAAAAAAAAAAA/+n/mv/1/+oAAAAAAAD/4QAAAAAAAAAAAAAAAAAAAAD/9QAAAAD/9QAA//T/9f/OAAD/7/+i/3//8f+IAAAAAP/EAAAAAP/H/7sAAAAAAAD/qQAAAAAADAARAAD/yQAS/48AAP/dAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAA/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/tAAAAAAAAAAAAAP/t/+//5gAAAAAAAAAUAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAA/3gAAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAA//AAAAAAAAAAAP/zAAAAAAAAAAD/8f/xAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAD/lQAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAA/+oAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6gAAAAD/7gAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP+/AAAAAP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAD/v//j/9j/ov/L/7f/v//Z/+z/q/+gABIAEQAAAAAADf/GAAD/6f/w//MAEQAA/y3/7wAS/8wAAP/iAAAAAAAAAAAAAP+g//MAAP/m/+H/6QAA/+cAAP/l/+n/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wAAAAAAAAAAAAAAAAP+jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAP/jAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAP/yAAAAAAAAAAD/xQAA/+z/iAAA/87/wwAAAAAAAAAAAAAAAAAA/5UAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+b/5wAAAAD/5wAA/+v/6//hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv/SAAAAAAARAAAAAAAR/9EAAAAAAAD/nf/k/5P/sf+5/4//nf+h/7j/rwAAABAAEAAAAAAAAP+MAAD/s//w//EADwAA/yb/7QAQ/xj/vP/E/8sAAAAA/37/fP8Q//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9E/73/M/8+AAD/LP9E/0v/cgAAAAAABwAHAAAAAAAA/ycAAP9q/9EAAAAFAAD+egAAAAf+YgAA/4b/kgAAAAD/D/8MAAAAAAAAAAD/vwAAABP/8gAAAAD/1P97ABP/yv8R/u3/2gAAAAAAAP8/AAAAAP87/3EAAAAAAAD/UQAAAAAAAAAAAAAAAAAAAAAAAP+RAAD/4QAAAAD/1f/n/9//4f/tAAD/ywAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAA/4UAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/r/+YAAAAN/+wAAP/r/+3/5QANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAAAA/9j/7AAAABIAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA/4UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/U//MAAP+1/9n/0v/S/+T/9f+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HwAAAAD/2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAA/7QAAAAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9UAAP/wAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+t/vUAAP/A//AAAAAA/8kAAAAAAAAAAAAAAAD/yAAAAAAAAP/1/+v/5wAAAAAAAAAAAAD/vf/p/5r/pQAA/5H/vQAAAAAAAAAAABIAEgAAAAAAAP/SAAAAAAAAAAAAAAAA/m0AAAAA/4kAAAAA/8oAAAAA/7v/6QAAAAAAAP/sAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/dAAAAAAAAAAAAAP95AAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8n/5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/oAAAAAAAAAAD/8wAAAAAAAAAAAAAAAP/zAAAAAP92AAD/9f/zAAAAD//GAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAA/+b+vAAAAAAAAAAAAAD/yQAAAAD/2QAA/zgAAAABAPoACAAKABQAFQAWABcAGAAZABoAGwAcAB0AJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AGUAZwCBAIMAhACMAI8AkQCTALEAsgCzALQAtQC2ALcAuAC5ALoA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkBLwEzATUBNwE5ATsBQQFDAUUBSQFLAUwBWAFZAacBrQGyAbUCiwKMAo4CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCxwLJAssCzQLPAtEC0wLVAtcC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLzAvQC9gL4AvoC/AL+AwADAgMEAwYDCQMLAw0DDwMRAxMDFQMXAxkDGwMdAx8DIQMjAyUDJwMpAysDLQMvAzEDMwM1AzYDOAM6AzwDPgOXA5gDmQOaA5sDnAOdA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPkA+YD6APqA/8EAQQDBBgEHgQkBI4EkwSXBRgFGgABABP/IAABAMQADgABAPb/1QABAMoACwABAPb/2AABAFsACwABARz/8QABAeb/xwABAeb/8QABAeYADQACAMr/7QD2/8AAAgHm/7cB6//wAAIA9v/1AYX/sAACAO3/yQEc/+4AAgERAAsBbP/mAAIA9v/AAYX/sAADAeX/9QHm/+4Dkf/1AAMASv/uAFv/6gHm//AAAwBKAA8AWAAyAFsAEQAEAA3/5gBB//QAYf/vAU3/7QAEAA0AFABBABEAVv/iAGEAEwAFAFv/pAHm/1QB6//xAfX/8QJB//MABQANAA8AQQAMAFb/6wBhAA4CQf/pAAUAW//lALj/ywDN/+QB9f/rAkH/7QAGABD/hAAS/4QBhv+EAYr/hAGO/4QBj/+EAAYAyv/qAO3/7gD2/6sA/gAAATr/7AFt/+wABgDK/+oA7f/uAPb/sAD+AAABOv/sAW3/7AAHAEoADQC+//UAxgALAMf/6gDKAAwA7f/IARz/8QAHAIH/3wC1//MAt//wAMT/6gDZ/98A5v/gAWz/4AAIAPb/8AD+AAABCf/xASD/8wE6//EBY//zAWX/6QFt/9MACADZABUA7QAVAUn/5AFK/+UBTP/kAWL/4wFk/+IBbP/kAAgAWAAOAIH/nwC+//UAxP/eAMf/5QDZ/6gA7f/KAV//4wAJAPb/ugD+AAABCf/PASD/2wE6/1ABSv+dAWP/8AFl//IBbf9MAAkAyv/qAO3/uAD2/+oBCf/wASD/8QE6/+sBY//1AW3/7AGF/7AACgAG/9YAC//WAYT/1gGF/9YBh//WAYj/1gGJ/9YD7P/WA+3/1gPw/9YACgAG//UAC//1AYT/9QGF//UBh//1AYj/9QGJ//UD7P/1A+3/9QPw//UACgDm/8MA9v/PAP4AAAE6/84BSf/nAUz/3wFi/9EBZP/sAWz/oAFt/9EACwA4/9gA0v/YANb/2AE5/9gBRf/YAx//2AMh/9gDI//YA9L/2ASI/9gE0P/YAA0AXP/yAF7/8gDu//IBNP/yAUT/8gFe//IDN//yAzn/8gM7//ID2//yBAf/8gQV//IE2v/yAA0A9v+6APn/2QD+AAABCf/PASD/2wE6/1ABSP/ZAUr/nQFj//ABZf/yAW3/TAQr/9kEi//ZAA4AXP/tAF7/7QDu/+0A9v+qATT/7QFE/+0BXv/tAzf/7QM5/+0DO//tA9v/7QQH/+0EFf/tBNr/7QAPAO0AFADyABAA9v/wAPn/8AD+AAABAQAMAQQAEAE6//ABSP/wAUr/5gFRABABbf/wAXAAEAQr//AEi//wABEALv/uADn/7gKm/+4Cp//uAqj/7gKp/+4C9v/uAyX/7gMn/+4DKf/uAyv/7gMt/+4DL//uA8P/7gRz/+4Edf/uBNL/7gARAC7/7AA5/+wCpv/sAqf/7AKo/+wCqf/sAvb/7AMl/+wDJ//sAyn/7AMr/+wDLf/sAy//7APD/+wEc//sBHX/7ATS/+wAEgDZ/64A5gASAOv/4ADt/60A7//WAP3/3wEB/9IBB//gARz/zgEu/90BMP/iATj/4AFA/+ABSv/pAU3/2gFf/70Baf/fAWwAEQASAFv/wQC4/8UAyv+0AOr/1wD2/7kA/v/pAQn/sgEc/9IBIP/IATr/oAFK/8UBWP/kAWP/zAFl/8wBbf/LAW7/7wH1/+YCQf/oABMB4//uAeX/9QHm//EB6P/yAgT/8gII//ICIP/yAiL/7gIk//IDXf/uA4n/8gOR//UDkv/uA5P/7gTh/+4E7//uBPL/7gUG//IFC//uABMB4//lAeX/8QHm/+sB6P/pAgT/6QII/+kCIP/pAiL/5QIk/+kDXf/lA4n/6QOR//EDkv/lA5P/5QTh/+UE7//lBPL/5QUG/+kFC//lABUAXP/1AO7/9QD2/7oA+f/ZAP4AAAEJ/88BIP/bATT/9QE6/1ABRP/1AUj/2QFK/50BXv/1AWP/8AFl//IBbf9MA9v/9QQH//UEFf/1BCv/2QSL/9kAFgC4/9QAvv/wAML/7QDEABEAyv/gAMz/5wDN/+UAzv/uANkAEgDq/+kA9v/XATr/1wFK/9MBTP/WAU3/xQFY/+cBYgANAWQADAFt/9YBbv/yAev/6QJB/+kAFgAj/8MAWP/vAFv/3wCa/+4AuP/lALn/0QDEABEAyv/IANkAEwDm/8UA9v/KATr/nwFJ/1EBSv97AUz/ygFN/90BWP/yAWL/dQFk/8oBbP9PAW3/jAHm/80AGAA6ABQAOwASAD0AFgEZABQCqgAWAzEAEgMzABYDNQAWA5wAFgOrABYDrgAWA+QAEgPmABID6AASA+oAFgP7ABQEAwAWBIEAFgSDABYEhQAWBJcAFgTTABQE1QAUBNcAEgAYADj/6wA9//MA0v/rANb/6wE5/+sBRf/rAqr/8wMf/+sDIf/rAyP/6wMz//MDNf/zA5z/8wOr//MDrv/zA9L/6wPq//MEA//zBIH/8wSD//MEhf/zBIj/6wSX//ME0P/rABkAU//sARj/7AGFAAACvP/sAr3/7AK+/+wCv//sAsD/7AMK/+wDDP/sAw7/7AO1/+wDu//sA9f/7AQd/+wEIf/sBFz/7ARe/+wEYP/sBGL/7ARk/+wEZv/sBGj/7ARw/+wEsf/sABwACv/iAA0AFAAO/88AQQASAEr/6gBW/9gAWP/qAGEAEwBt/64AfP/NAIH/oACG/8EAif/AALj/0AC8/+oAvv/uAL//xgDAAA0Awv/pAMP/1gDG/+gAx/+6AMr/6QDM/8sAzf/aAM7/xwGN/9MCQf/NAB0AOP+wADr/7QA9/9AA0v+wANb/sAEZ/+0BOf+wAUX/sAKq/9ADH/+wAyH/sAMj/7ADM//QAzX/0AOc/9ADq//QA67/0APS/7AD6v/QA/v/7QQD/9AEgf/QBIP/0ASF/9AEiP+wBJf/0ATQ/7AE0//tBNX/7QAgAAb/8gAL//IAWv/zAF3/8wC9//MA9v/1ARr/8wGE//IBhf/yAYf/8gGI//IBif/yAsX/8wLG//MDNP/zA7f/8wPa//MD4//zA+v/8wPs//ID7f/yA/D/8gP8//MEBP/zBCX/8wQn//MEKf/zBIL/8wSE//MEhv/zBNT/8wTW//MAIgBa//QAXP/yAF3/9ABe//MAvf/0AO7/8gEa//QBNP/yAUT/8gFe//ICxf/0Asb/9AM0//QDN//zAzn/8wM7//MDt//0A9r/9APb//ID4//0A+v/9AP8//QEBP/0BAf/8gQV//IEJf/0BCf/9AQp//QEgv/0BIT/9ASG//QE1P/0BNb/9ATa//MAIgAG/8AAC//AADr/yADe/+sA4f/nAOb/wwD2/88A/gAAARn/yAE6/84BR//nAUn/5wFM/98BYv/RAWT/7AFs/6ABbf/RAYT/wAGF/8ABh//AAYj/wAGJ/8ADxv/rA+z/wAPt/8AD8P/AA/v/yAQk/+sEJv/rBCj/6wQq/+cEiv/nBNP/yATV/8gAIgBa/90AXf/dAL3/3QD2/7oA+f/ZAP4AAAEJ/88BGv/dASD/2wE6/1ABSP/ZAUr/nQFj//ABZf/yAW3/TALF/90Cxv/dAzT/3QO3/90D2v/dA+P/3QPr/90D/P/dBAT/3QQl/90EJ//dBCn/3QQr/9kEgv/dBIT/3QSG/90Ei//ZBNT/3QTW/90AIwBa//QAXP/wAF3/9AC9//QA7f/vAO7/8ADy//MA/gAAAQT/8wEa//QBNP/wAUT/8AFR//MBXv/wAXD/8wLF//QCxv/0AzT/9AO3//QD2v/0A9v/8APj//QD6//0A/z/9AQE//QEB//wBBX/8AQl//QEJ//0BCn/9ASC//QEhP/0BIb/9ATU//QE1v/0ACQAOP/iADz/5ADS/+IA1P/kANb/4gDZ/+EA2v/kAN3/5ADe/+kA7f/kAPL/6wEE/+sBM//kATn/4gFD/+QBRf/iAVD/5AFR/+sBXf/kAWb/5AFv/+QBcP/rAx//4gMh/+IDI//iA6z/5APG/+kD0v/iA9P/5AQG/+QEFP/kBCT/6QQm/+kEKP/pBIj/4gTQ/+IAJAAG//IAC//yAFr/9QBd//UAvf/1APb/9AD+AAABCf/1ARr/9QE6//UBbf/1AYT/8gGF//IBh//yAYj/8gGJ//ICxf/1Asb/9QM0//UDt//1A9r/9QPj//UD6//1A+z/8gPt//ID8P/yA/z/9QQE//UEJf/1BCf/9QQp//UEgv/1BIT/9QSG//UE1P/1BNb/9QAoABD/HgAS/x4AJf/NALL/zQC0/80Ax//yAQ3/zQGG/x4Biv8eAY7/HgGP/x4CkP/NApH/zQKS/80Ck//NApT/zQKV/80Clv/NAsf/zQLJ/80Cy//NA5f/zQOf/80Dx//NA/P/zQQJ/80EC//NBC//zQQx/80EM//NBDX/zQQ3/80EOf/NBDv/zQQ9/80EP//NBEH/zQRD/80ERf/NBKr/zQAxADj/4wA8/+UAPf/kANL/4wDU/+UA1v/jANn/4gDa/+UA3f/lAN7/6QDy/+oBBP/qATP/5QE5/+MBQ//lAUX/4wFQ/+UBUf/qAV3/5QFm/+UBbP/kAW//5QFw/+oCqv/kAx//4wMh/+MDI//jAzP/5AM1/+QDnP/kA6v/5AOs/+UDrv/kA8b/6QPS/+MD0//lA+r/5AQD/+QEBv/lBBT/5QQk/+kEJv/pBCj/6QSB/+QEg//kBIX/5ASI/+MEl//kBND/4wAxAFb/bQBb/4wAbf2/AHz+fQCB/rwAhv8rAIn/SwC4/2EAvv+PAL//DwDD/ugAxv8fAMf+5QDK/0YAzP7tAM3+/QDO/tkA2f9SAOYABQDq/70A6/9JAO3+/gDv/xMA9v9oAP3/DgD+/zMA//8TAQH/BwECAAABB/8OAQn/EQEc/zwBIP+sAS7/FQEw/zwBOP8OATr/agFA/0kBSv8MAUz/PwFN/vEBWP/AAV/+7wFj/zEBZf9fAWn/CgFsAAUBbf8wAW7/1QAyAAT/2ABW/7UAW//HAG3+uAB8/ygAgf9NAIb/jgCJ/6EAuP+uAL7/yQC//34Aw/9nAMb/hwDH/2UAyv+eAMz/agDN/3MAzv9eANn/pQDmAA8A6v/kAOv/oADt/3QA7/+AAPb/sgD9/30A/v+TAP//gAEB/3kBAgAAAQf/fQEJ/38BHP+YASD/2gEu/4EBMP+YATj/fQE6/7MBQP+gAUr/fAFM/5oBTf9sAVj/5gFf/2sBY/+SAWX/rQFp/3sBbAAPAW3/kQFu//IAMwA4/9UAOv/kADv/7AA9/90A0v/VANb/1QEZ/+QBOf/VAUX/1QH7AA4B/QAOAkMADgKq/90DH//VAyH/1QMj/9UDMf/sAzP/3QM1/90DQwAOA0QADgNFAA4DRgAOA0cADgNIAA4DSQAOA14ADgNfAA4DYAAOA5z/3QOr/90Drv/dA9L/1QPk/+wD5v/sA+j/7APq/90D+//kBAP/3QSB/90Eg//dBIX/3QSI/9UEl//dBND/1QTT/+QE1f/kBNf/7ATcAA4E4wAOBPsADgA1ABv/8gA4//EAOv/0ADz/9AA9//AA0v/xANT/9QDW//EA2v/0AN3/9QDe//MA5v/xARn/9AEz//QBOf/xAUP/9AFF//EBUP/1AV3/9AFi//IBZP/yAWb/9QFs//IBb//1Aqr/8AMf//EDIf/xAyP/8QMz//ADNf/wA5z/8AOr//ADrP/0A67/8APG//MD0v/xA9P/9APq//AD+//0BAP/8AQG//QEFP/0BCT/8wQm//MEKP/zBIH/8ASD//AEhf/wBIj/8QSX//AE0P/xBNP/9ATV//QANQBRAAAAUgAAAFQAAADBAAAA7AAAAO0AFADwAAAA8QAAAPMAAAD0AAAA9QAAAPb/7QD4AAAA+f/tAPoAAAD7AAAA/P/iAP4AAAEAAAABBQAAASsAAAE2AAABOv/tATwAAAE+AAABSP/tAUr/7QFTAAABVQAAAVcAAAFcAAABbf/tArsAAAMDAAADBQAAAwcAAAMIAAADsQAAA9YAAAPYAAAD3QAAA+IAAAPyAAAD+AAABBkAAAQbAAAEK//tBC0AAASL/+0EjQAABKkAAATGAAAEyAAAADgAJf/kADz/0gA9/9MAsv/kALT/5ADE/+IA2v/SAQ3/5AEz/9IBQ//SAV3/0gKQ/+QCkf/kApL/5AKT/+QClP/kApX/5AKW/+QCqv/TAsf/5ALJ/+QCy//kAzP/0wM1/9MDl//kA5z/0wOf/+QDq//TA6z/0gOu/9MDx//kA9P/0gPq/9MD8//kBAP/0wQG/9IECf/kBAv/5AQU/9IEL//kBDH/5AQz/+QENf/kBDf/5AQ5/+QEO//kBD3/5AQ//+QEQf/kBEP/5ARF/+QEgf/TBIP/0wSF/9MEl//TBKr/5AA5AFH/7wBS/+8AVP/vAFz/8ADB/+8A7P/vAO3/7gDu//AA8P/vAPH/7wDz/+8A9P/vAPX/7wD2/+4A+P/vAPr/7wD7/+8A/v/vAQD/7wEF/+8BCf/0ASD/8QEr/+8BNP/wATb/7wE6/+8BPP/vAT7/7wFE//ABU//vAVX/7wFX/+8BXP/vAV7/8AFt/+8Cu//vAwP/7wMF/+8DB//vAwj/7wOx/+8D1v/vA9j/7wPb//AD3f/vA+L/7wPy/+8D+P/vBAf/8AQV//AEGf/vBBv/7wQt/+8Ejf/vBKn/7wTG/+8EyP/vADwABv+gAAv/oABK/+kAWf/xAFr/xQBd/8UAm//xAL3/xQDC/+4AxAAQAMb/7ADK/yAAy//xARr/xQGE/6ABhf+gAYf/oAGI/6ABif+gAsH/8QLC//ECw//xAsT/8QLF/8UCxv/FAyb/8QMo//EDKv/xAyz/8QMu//EDMP/xAzT/xQOz//EDt//FA7r/8QO8//ED2v/FA+P/xQPr/8UD7P+gA+3/oAPw/6AD/P/FBAT/xQQl/8UEJ//FBCn/xQR0//EEdv/xBHj/8QR6//EEfP/xBH7/8QSA//EEgv/FBIT/xQSG/8UEtf/xBNT/xQTW/8UAPwAn//MAK//zADP/8wA1//MAg//zAJP/8wCY//MAs//zAMQADQDT//MBCP/zARf/8wEb//MBHf/zAR//8wEh//MBQf/zAWr/8wJV//MCVv/zAlj/8wJZ//MCl//zAqH/8wKi//MCo//zAqT/8wKl//MCzf/zAs//8wLR//MC0//zAuH/8wLj//MC5f/zAuf/8wMJ//MDC//zAw3/8wM+//MDm//zA6j/8wPO//MD0f/zA/7/8wQB//MEHP/zBB7/8wQg//MEW//zBF3/8wRf//MEYf/zBGP/8wRl//MEZ//zBGn/8wRr//MEbf/zBG//8wRx//MEsP/zBMn/8wBAAEf/7ABI/+wASf/sAEv/7ABV/+wAlP/sAJn/7AC7/+wAyP/sAMn/7AD3/+wBA//sAR7/7AEi/+wBQv/sAWD/7AFh/+wBa//sArL/7AKz/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/oAuT/6ALm/+gC6P/oA6//6APV/+gD2f/oA9z/6APsABAD7QAQA/AAEAP3/+gD/f/oBAL/6AQQ/+gEEv/oBBP/6AQf/+gELv/oBEj/6ARK/+gETP/oBE7/6ARQ/+gEUv/oBFT/6ARW/+gEav/oBGz/6ARu/+gEcv/oBK3/6AS6/+gEvP/oAE8ARwAMAEgADABJAAwASwAMAFUADACUAAwAmQAMALsADADIAAwAyQAMAO0AOgDyABgA9v/jAPcADAD5//cA/AAAAP4AAAEDAAwBBAAYAR4ADAEiAAwBOv/iAUIADAFI//cBSv/jAVEAGAFgAAwBYQAMAWsADAFt/+MBcAAYArIADAKzAAwCtAAMArUADAK2AAwCzgAMAtAADALSAAwC1AAMAtYADALYAAwC2gAMAtwADALeAAwC4AAMAuIADALkAAwC5gAMAugADAOvAAwD1QAMA9kADAPcAAwD9wAMA/0ADAQCAAwEEAAMBBIADAQTAAwEHwAMBCv/9wQuAAwESAAMBEoADARMAAwETgAMBFAADARSAAwEVAAMBFYADARqAAwEbAAMBG4ADARyAAwEi//3BK0ADAS6AAwEvAAMAFMAOP++AFEAAABSAAAAVAAAAFr/7wBd/+8Avf/vAMEAAADS/74A1v++AOb/yQDsAAAA8AAAAPEAAADzAAAA9AAAAPUAAAD2/98A+AAAAPoAAAD7AAAA/gAAAQAAAAEFAAABCf/tARr/7wEg/+sBKwAAATYAAAE5/74BOv/fATwAAAE+AAABRf++AUz/6QFTAAABVQAAAVcAAAFcAAABY//1AW3/4AK7AAACxf/vAsb/7wMDAAADBQAAAwcAAAMIAAADH/++AyH/vgMj/74DNP/vA7EAAAO3/+8D0v++A9YAAAPYAAAD2v/vA90AAAPiAAAD4//vA+v/7wPyAAAD+AAAA/z/7wQE/+8EGQAABBsAAAQl/+8EJ//vBCn/7wQtAAAEgv/vBIT/7wSG/+8EiP++BI0AAASpAAAExgAABMgAAATQ/74E1P/vBNb/7wBoADj+9QA6/8gAPP/wAD3/rQBRAAAAUgAAAFQAAADBAAAA0v71ANT/9QDW/vUA2v/wAN3/9QDe/+sA4f/nAOb/wwDsAAAA8AAAAPEAAADzAAAA9AAAAPUAAAD2/88A+AAAAPoAAAD7AAAA/gAAAQAAAAEFAAABGf/IASsAAAEz//ABNgAAATn+9QE6/84BPAAAAT4AAAFD//ABRf71AUf/5wFJ/+cBTP/fAVD/9QFTAAABVQAAAVcAAAFcAAABXf/wAWL/0QFk/+wBZv/1AWz/oAFt/9EBb//1Aqr/rQK7AAADAwAAAwUAAAMHAAADCAAAAx/+9QMh/vUDI/71AzP/rQM1/60DnP+tA6v/rQOs//ADrv+tA7EAAAPG/+sD0v71A9P/8APWAAAD2AAAA90AAAPiAAAD6v+tA/IAAAP4AAAD+//IBAP/rQQG//AEFP/wBBkAAAQbAAAEJP/rBCb/6wQo/+sEKv/nBC0AAASB/60Eg/+tBIX/rQSI/vUEiv/nBI0AAASX/60EqQAABMYAAATIAAAE0P71BNP/yATV/8gAaABH/8UASP/FAEn/xQBL/8UATAAgAE8AIABQACAAU/+AAFX/xQBX/5AAWwALAJT/xQCZ/8UAu//FAMj/xQDJ/8UA9//FAQP/xQEY/4ABHv/FASL/xQFC/8UBYP/FAWH/xQFr/8UB0f+QArL/xQKz/8UCtP/FArX/xQK2/8UCvP+AAr3/gAK+/4ACv/+AAsD/gALO/8UC0P/FAtL/xQLU/8UC1v/FAtj/xQLa/8UC3P/FAt7/xQLg/8UC4v/FAuT/xQLm/8UC6P/FAwr/gAMM/4ADDv+AAxb/kAMY/5ADGv+QAxz/kAMe/5ADr//FA7X/gAO7/4AD1f/FA9f/gAPZ/8UD3P/FA97/kAP3/8UD/f/FBAL/xQQQ/8UEEv/FBBP/xQQd/4AEH//FBCH/gAQu/8UESP/FBEr/xQRM/8UETv/FBFD/xQRS/8UEVP/FBFb/xQRc/4AEXv+ABGD/gARi/4AEZP+ABGb/gARo/4AEav/FBGz/xQRu/8UEcP+ABHL/xQSt/8UEsf+ABLr/xQS8/8UEvgAgBMAAIATCACAEz/+QAGoAOP/mADr/5wA8//IAPf/nAFEAAABSAAAAVAAAAFz/8QDBAAAA0v/mANb/5gDa//IA3v/uAOH/6ADm/+YA7AAAAO7/8QDwAAAA8QAAAPMAAAD0AAAA9QAAAPb/0AD4AAAA+gAAAPsAAAD+AAABAAAAAQUAAAEZ/+cBKwAAATP/8gE0//EBNgAAATn/5gE6/84BPAAAAT4AAAFD//IBRP/xAUX/5gFH/+gBSf/oAVMAAAFVAAABVwAAAVwAAAFd//IBXv/xAWL/5wFk/+0BbP/mAW3/0AKq/+cCuwAAAwMAAAMFAAADBwAAAwgAAAMf/+YDIf/mAyP/5gMz/+cDNf/nA5z/5wOr/+cDrP/yA67/5wOxAAADxv/uA9L/5gPT//ID1gAAA9gAAAPb//ED3QAAA+IAAAPq/+cD8gAAA/gAAAP7/+cEA//nBAb/8gQH//EEFP/yBBX/8QQZAAAEGwAABCT/7gQm/+4EKP/uBCr/6AQtAAAEgf/nBIP/5wSF/+cEiP/mBIr/6ASNAAAEl//nBKkAAATGAAAEyAAABND/5gTT/+cE1f/nAGsAJQAPADj/5gA6/+YAPAAOAD3/5gCyAA8AtAAPANL/5gDUAA4A1v/mANkAEwDaAA4A3QAOAN4ACwDh/+UA5v/mAOf/9ADtABIA8gAPAPb/5wD5/+gA/gAAAQQADwENAA8BGf/mATMADgE5/+YBOv/nAUMADgFF/+YBR//lAUj/6AFJ/+UBSv/oAUz/5AFQAA4BUQAPAV0ADgFi/+YBZP/mAWYADgFs/+YBbf/nAW8ADgFwAA8CkAAPApEADwKSAA8CkwAPApQADwKVAA8ClgAPAqr/5gLHAA8CyQAPAssADwMf/+YDIf/mAyP/5gMz/+YDNf/mA5cADwOc/+YDnwAPA6v/5gOsAA4Drv/mA8YACwPHAA8D0v/mA9MADgPq/+YD8wAPA/v/5gQD/+YEBgAOBAkADwQLAA8EFAAOBCQACwQmAAsEKAALBCr/5QQr/+gELwAPBDEADwQzAA8ENQAPBDcADwQ5AA8EOwAPBD0ADwQ/AA8EQQAPBEMADwRFAA8Egf/mBIP/5gSF/+YEiP/mBIr/5QSL/+gEl//mBKoADwTQ/+YE0//mBNX/5gB1AAb/wAAL/8AAOP71ADr/yAA8//AAPf+tAFEAAABSAAAAVAAAAFz/yQDBAAAA0v71ANb+9QDa//AA3v/rAOH/5wDm/8MA7AAAAO7/yQDwAAAA8QAAAPMAAAD0AAAA9QAAAPb/zwD4AAAA+gAAAPsAAAD+AAABAAAAAQUAAAEZ/8gBKwAAATP/8AE0/8kBNgAAATn+9QE6/84BPAAAAT4AAAFD//ABRP/JAUX+9QFH/+cBSf/nAUz/3wFTAAABVQAAAVcAAAFcAAABXf/wAV7/yQFi/9EBZP/sAWz/oAFt/9EBhP/AAYX/wAGH/8ABiP/AAYn/wAKq/60CuwAAAwMAAAMFAAADBwAAAwgAAAMf/vUDIf71AyP+9QMz/60DNf+tA5z/rQOr/60DrP/wA67/rQOxAAADxv/rA9L+9QPT//AD1gAAA9gAAAPb/8kD3QAAA+IAAAPq/60D7P/AA+3/wAPw/8AD8gAAA/gAAAP7/8gEA/+tBAb/8AQH/8kEFP/wBBX/yQQZAAAEGwAABCT/6wQm/+sEKP/rBCr/5wQtAAAEgf+tBIP/rQSF/60EiP71BIr/5wSNAAAEl/+tBKkAAATGAAAEyAAABND+9QTT/8gE1f/IAHYAR//wAEj/8ABJ//AAS//wAFP/6wBV//AAlP/wAJn/8AC7//AAyP/wAMn/8AD3//ABA//wARj/6wEc/+sBHv/wASL/8AFC//ABYP/wAWH/8AFr//AB6//rAe3/6wH1/+kB/P/rAgX/6wIh/+sCKv/rAkH/6wKy//ACs//wArT/8AK1//ACtv/wArz/6wK9/+sCvv/rAr//6wLA/+sCzv/wAtD/8ALS//AC1P/wAtb/8ALY//AC2v/wAtz/8ALe//AC4P/wAuL/8ALk//AC5v/wAuj/8AMK/+sDDP/rAw7/6wNK/+sDVP/rA1X/6wNW/+sDV//rA1j/6wNh/+sDYv/rA2P/6wNk/+sDa//rA2z/6wNt/+sDbv/rA37/6wN//+sDgP/rA6//8AO1/+sDu//rA9X/8APX/+sD2f/wA9z/8AP3//AD/f/wBAL/8AQQ//AEEv/wBBP/8AQd/+sEH//wBCH/6wQu//AESP/wBEr/8ARM//AETv/wBFD/8ARS//AEVP/wBFb/8ARc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/wBGz/8ARu//AEcP/rBHL/8ASt//AEsf/rBLr/8AS8//AE4P/rBQL/6wUF/+sFCv/rAHwABv/aAAv/2gBH//AASP/wAEn/8ABL//AAVf/wAFn/7wBa/9wAXf/cAJT/8ACZ//AAm//vALv/8AC9/9wAwv/sAMQADwDG/+oAyP/wAMn/8ADK/8QAy//vAMz/5wD3//ABA//wARr/3AEe//ABIv/wAUL/8AFg//ABYf/wAWv/8AGE/9oBhf/aAYf/2gGI/9oBif/aArL/8AKz//ACtP/wArX/8AK2//ACwf/vAsL/7wLD/+8CxP/vAsX/3ALG/9wCzv/wAtD/8ALS//AC1P/wAtb/8ALY//AC2v/wAtz/8ALe//AC4P/wAuL/8ALk//AC5v/wAuj/8AMm/+8DKP/vAyr/7wMs/+8DLv/vAzD/7wM0/9wDr//wA7P/7wO3/9wDuv/vA7z/7wPV//AD2f/wA9r/3APc//AD4//cA+v/3APs/9oD7f/aA/D/2gP3//AD/P/cA/3/8AQC//AEBP/cBBD/8AQS//AEE//wBB//8AQl/9wEJ//cBCn/3AQu//AESP/wBEr/8ARM//AETv/wBFD/8ARS//AEVP/wBFb/8ARq//AEbP/wBG7/8ARy//AEdP/vBHb/7wR4/+8Eev/vBHz/7wR+/+8EgP/vBIL/3ASE/9wEhv/cBK3/8AS1/+8Euv/wBLz/8ATU/9wE1v/cAIwABv/KAAv/ygA4/9IAOv/UADz/9AA9/9MAUf/RAFL/0QBU/9EAWv/mAFz/7wBd/+YAvf/mAMH/0QDS/9IA1v/SANr/9ADe/+0A4f/hAOb/1ADs/9EA7v/vAPD/0QDx/9EA8//RAPT/0QD1/9EA9v/JAPj/0QD6/9EA+//RAP7/0QEA/9EBBf/RAQn/5QEZ/9QBGv/mASD/4wEr/9EBM//0ATT/7wE2/9EBOf/SATr/xAE8/9EBPv/RAUP/9AFE/+8BRf/SAUf/4QFJ/+EBU//RAVX/0QFX/9EBXP/RAV3/9AFe/+8BYv/UAWP/9QFk/+cBbP/SAW3/yQGE/8oBhf/KAYf/ygGI/8oBif/KAqr/0wK7/9ECxf/mAsb/5gMD/9EDBf/RAwf/0QMI/9EDH//SAyH/0gMj/9IDM//TAzT/5gM1/9MDnP/TA6v/0wOs//QDrv/TA7H/0QO3/+YDxv/tA9L/0gPT//QD1v/RA9j/0QPa/+YD2//vA93/0QPi/9ED4//mA+r/0wPr/+YD7P/KA+3/ygPw/8oD8v/RA/j/0QP7/9QD/P/mBAP/0wQE/+YEBv/0BAf/7wQU//QEFf/vBBn/0QQb/9EEJP/tBCX/5gQm/+0EJ//mBCj/7QQp/+YEKv/hBC3/0QSB/9MEgv/mBIP/0wSE/+YEhf/TBIb/5gSI/9IEiv/hBI3/0QSX/9MEqf/RBMb/0QTI/9EE0P/SBNP/1ATU/+YE1f/UBNb/5gCYACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98Ag//oAJP/6ACY/+gAsgAQALP/6AC0ABAA0v/gANP/6ADUABAA1v/gANkAFADdABAA4f/hAOb/4ADtABMA8gAQAPn/4AEEABABCP/oAQ0AEAEX/+gBGf/gARv/6AEd/+gBH//oASH/6AE5/+ABQf/oAUX/4AFH/+EBSP/gAUn/4QFK/+ABTf/hAVAAEAFRABABWP/pAWL/3wFk/94BZgAQAWr/6AFs/98Bbv/yAW8AEAFwABACVf/oAlb/6AJY/+gCWf/oApAAEAKRABACkgAQApMAEAKUABAClQAQApYAEAKX/+gCof/oAqL/6AKj/+gCpP/oAqX/6AKq/98CxwAQAskAEALLABACzf/oAs//6ALR/+gC0//oAuH/6ALj/+gC5f/oAuf/6AMJ/+gDC//oAw3/6AMf/+ADIf/gAyP/4AMz/98DNf/fAz7/6AOXABADm//oA5z/3wOfABADqP/oA6v/3wOu/98DxwAQA87/6APR/+gD0v/gA+r/3wPzABAD+//gA/7/6AQB/+gEA//fBAkAEAQLABAEHP/oBB7/6AQg/+gEKv/hBCv/4AQvABAEMQAQBDMAEAQ1ABAENwAQBDkAEAQ7ABAEPQAQBD8AEARBABAEQwAQBEUAEARb/+gEXf/oBF//6ARh/+gEY//oBGX/6ARn/+gEaf/oBGv/6ARt/+gEb//oBHH/6ASB/98Eg//fBIX/3wSI/+AEiv/hBIv/4ASX/98EqgAQBLD/6ATJ/+gE0P/gBNP/4ATV/+AAugBH/9wASP/cAEn/3ABL/9wAUf/zAFL/8wBT/9YAVP/zAFX/3ABZ/90AWv/hAF3/4QCU/9wAmf/cAJv/3QC7/9wAvf/hAL7/7gC//+YAwf/zAML/6wDD/+kAxf/wAMb/5wDI/9wAyf/cAMr/4wDL/90AzP/OAM3/1ADO/9sA7P/zAPD/8wDx//MA8//zAPT/8wD1//MA9//cAPj/8wD6//MA+//zAP7/8wEA//MBA//cAQX/8wEY/9YBGv/hAR7/3AEi/9wBK//zATb/8wE8//MBPv/zAUL/3AFT//MBVf/zAVf/8wFc//MBYP/cAWH/3AFr/9wCsv/cArP/3AK0/9wCtf/cArb/3AK7//MCvP/WAr3/1gK+/9YCv//WAsD/1gLB/90Cwv/dAsP/3QLE/90Cxf/hAsb/4QLO/9wC0P/cAtL/3ALU/9wC1v/cAtj/3ALa/9wC3P/cAt7/3ALg/9wC4v/cAuT/3ALm/9wC6P/cAwP/8wMF//MDB//zAwj/8wMK/9YDDP/WAw7/1gMm/90DKP/dAyr/3QMs/90DLv/dAzD/3QM0/+EDr//cA7H/8wOz/90Dtf/WA7f/4QO6/90Du//WA7z/3QPV/9wD1v/zA9f/1gPY//MD2f/cA9r/4QPc/9wD3f/zA+L/8wPj/+ED6//hA/L/8wP3/9wD+P/zA/z/4QP9/9wEAv/cBAT/4QQQ/9wEEv/cBBP/3AQZ//MEG//zBB3/1gQf/9wEIf/WBCX/4QQn/+EEKf/hBC3/8wQu/9wESP/cBEr/3ARM/9wETv/cBFD/3ARS/9wEVP/cBFb/3ARc/9YEXv/WBGD/1gRi/9YEZP/WBGb/1gRo/9YEav/cBGz/3ARu/9wEcP/WBHL/3AR0/90Edv/dBHj/3QR6/90EfP/dBH7/3QSA/90Egv/hBIT/4QSG/+EEjf/zBKn/8wSt/9wEsf/WBLX/3QS6/9wEvP/cBMb/8wTI//ME1P/hBNb/4QC/AAYADAALAAwAR//oAEj/6ABJ/+gASgAMAEv/6ABT/+oAVf/oAFoACwBdAAsAlP/oAJn/6AC7/+gAvQALAL7/7QDEAAAAxgALAMj/6ADJ/+gAygAMAPf/6AED/+gBGP/qARoACwEe/+gBIv/oAUL/6AFg/+gBYf/oAWv/6AGEAAwBhQAMAYcADAGIAAwBiQAMAeMADQHmAA0B6AAOAen/9QHr/+wB7f/tAfX/7AH7/78B/P/tAf3/vwIEAA4CBf/tAggADgIgAA4CIf/tAiIADQIkAA4CKv/tAkH/7gJD/78Csv/oArP/6AK0/+gCtf/oArb/6AK8/+oCvf/qAr7/6gK//+oCwP/qAsUACwLGAAsCzv/oAtD/6ALS/+gC1P/oAtb/6ALY/+gC2v/oAtz/6ALe/+gC4P/oAuL/6ALk/+gC5v/oAuj/6AMK/+oDDP/qAw7/6gM0AAsDQ/+/A0T/vwNF/78DRv+/A0f/vwNI/78DSf+/A0r/7QNU/+0DVf/tA1b/7QNX/+0DWP/tA10ADQNe/78DX/+/A2D/vwNh/+0DYv/tA2P/7QNk/+0Da//tA2z/7QNt/+0Dbv/tA37/7QN//+0DgP/tA4T/9QOF//UDhv/1A4f/9QOJAA4DkgANA5MADQOv/+gDtf/qA7cACwO7/+oD1f/oA9f/6gPZ/+gD2gALA9z/6APjAAsD6wALA+wADAPtAAwD8AAMA/f/6AP8AAsD/f/oBAL/6AQEAAsEEP/oBBL/6AQT/+gEHf/qBB//6AQh/+oEJQALBCcACwQpAAsELv/oBEj/6ARK/+gETP/oBE7/6ARQ/+gEUv/oBFT/6ARW/+gEXP/qBF7/6gRg/+oEYv/qBGT/6gRm/+oEaP/qBGr/6ARs/+gEbv/oBHD/6gRy/+gEggALBIQACwSGAAsErf/oBLH/6gS6/+gEvP/oBNQACwTWAAsE3P+/BOD/7QThAA0E4/+/BO8ADQTyAA0E+/+/BQL/7QUF/+0FBgAOBQr/7QULAA0A4wAGAA0ACwANAEX/8ABH/7AASP+wAEn/sABKAA0AS/+wAFP/1gBV/7AAWgALAF0ACwCU/7AAmf+wALv/sAC9AAsAvv+wAMf/qwDI/8AAyf+wAMz/1QDt/6oA8v+vAPf/sAED/7ABBP+vARj/1gEaAAsBHP/iAR7/sAEgAAwBIv+wAUL/sAFR/68BYP+wAWH/sAFjAAsBZQALAWv/sAFw/68BhAANAYUADQGHAA0BiAANAYkADQHjAA0B5gANAegADgHp//UB6//sAe3/7QH1/+wB+/+/Afz/7QH9/78CBAAOAgX/7QIIAA4CIAAOAiH/7QIiAA0CJAAOAir/7QJB/+4CQ/+/Aqv/8AKs//ACrf/wAq7/8AKv//ACsP/wArH/8AKy/7ACs/+wArT/sAK1/7ACtv+wArz/1gK9/9YCvv/WAr//1gLA/9YCxQALAsYACwLI//ACyv/wAsz/8ALO/7AC0P+wAtL/sALU/7AC1v+wAtj/sALa/7AC3P+wAt7/sALg/7AC4v+wAuT/sALm/7AC6P+wAwr/1gMM/9YDDv/WAzQACwND/78DRP+/A0X/vwNG/78DR/+/A0j/vwNJ/78DSv/tA1T/7QNV/+0DVv/tA1f/7QNY/+0DXQANA17/vwNf/78DYP+/A2H/7QNi/+0DY//tA2T/7QNr/+0DbP/tA23/7QNu/+0Dfv/tA3//7QOA/+0DhP/1A4X/9QOG//UDh//1A4kADgOSAA0DkwANA6//sAO1/9YDtwALA7v/1gPU//AD1f+wA9f/1gPZ/7AD2gALA9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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"
35
  "Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCp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GRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKa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/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/o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A9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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"
36
};
36
};
37
37
38
/*! DataTables 2.3.4
38
/*! DataTables 2.3.7
39
 * © SpryMedia Ltd - datatables.net/license
39
 * © SpryMedia Ltd - datatables.net/license
40
 */
40
 */
41
!function(n){"use strict";var r;"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e,window,document)}):"object"==typeof exports?(r=require("jquery"),"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||r(e),n(t,e,e.document)}:module.exports=n(r,window,window.document)):window.DataTable=n(jQuery,window,document)}(function(H,W,S){"use strict";function f(e){var t=parseInt(e,10);return!isNaN(t)&&isFinite(e)?t:null}function c(e,t,n,r){var a=typeof e,o="string"==a;return"number"==a||"bigint"==a||!(!r||!_(e))||(t&&o&&(e=E(e,t)),n&&o&&(e=e.replace(P,"")),!isNaN(parseFloat(e))&&isFinite(e))}function n(e,t,n,r){var a;return!(!r||!_(e))||("string"!=typeof e||!e.match(/<(input|select)/i))&&(_(a=e)||"string"==typeof a)&&!!c(w(e),t,n,r)||null}function v(e,t,n,r){var a=[],o=0,i=t.length;if(void 0!==r)for(;o<i;o++)e[t[o]]&&e[t[o]][n]&&a.push(e[t[o]][n][r]);else for(;o<i;o++)e[t[o]]&&a.push(e[t[o]][n]);return a}function h(e,t){var n,r=[];void 0===t?(t=0,n=e):(n=t,t=e);for(var a=t;a<n;a++)r.push(a);return r}function A(e){for(var t=[],n=0,r=e.length;n<r;n++)e[n]&&t.push(e[n]);return t}var T,X,r,e,V=function(e,P){var E,k,M;return V.factory(e,P)?V:this instanceof V?H(e).DataTable(P):(k=void 0===(P=e),M=(E=this).length,k&&(P={}),this.api=function(){return new X(this)},this.each(function(){var t=1<M?tt({},P,!0):P,e=0,n=this.getAttribute("id"),r=V.defaults,a=H(this);if("table"!=this.nodeName.toLowerCase())z(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{t.on&&t.on.options&&lt(a,"options",t.on.options),a.trigger("options.dt",t),Q(r),K(r.column),B(r,r,!0),B(r.column,r.column,!0),B(r,H.extend(t,st(a.data())),!0);var o=V.settings;for(e=0,j=o.length;e<j;e++){var i=o[e];if(i.nTable==this||i.nTHead&&i.nTHead.parentNode==this||i.nTFoot&&i.nTFoot.parentNode==this){var l=(void 0!==t.bRetrieve?t:r).bRetrieve,s=(void 0!==t.bDestroy?t:r).bDestroy;if(k||l)return i.oInstance;if(s){new V.Api(i).destroy();break}return void z(i,0,"Cannot reinitialise DataTable",3)}if(i.sTableId==this.id){o.splice(e,1);break}}null!==n&&""!==n||(n="DataTables_Table_"+V.ext._unique++,this.id=n),a.children("colgroup").remove();var u,c=H.extend(!0,{},V.models.oSettings,{sDestroyWidth:a[0].style.width,sInstance:n,sTableId:n,colgroup:H("<colgroup>").prependTo(this),fastData:function(e,t,n){return q(c,e,t,n)}}),n=(c.nTable=this,c.oInit=t,o.push(c),c.api=new X(c),c.oInstance=1===E.length?E:a.dataTable(),Q(t),t.aLengthMenu&&!t.iDisplayLength&&(t.iDisplayLength=Array.isArray(t.aLengthMenu[0])?t.aLengthMenu[0][0]:H.isPlainObject(t.aLengthMenu[0])?t.aLengthMenu[0].value:t.aLengthMenu[0]),t=tt(H.extend(!0,{},r),t),$(c.oFeatures,t,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),$(c,t,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout","orderDescReverse","orderIndicators","orderHandler","titleRow","typeDetect",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),$(c.oScroll,t,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),$(c.oLanguage,t,"fnInfoCallback"),Y(c,"aoDrawCallback",t.fnDrawCallback),Y(c,"aoStateSaveParams",t.fnStateSaveParams),Y(c,"aoStateLoadParams",t.fnStateLoadParams),Y(c,"aoStateLoaded",t.fnStateLoaded),Y(c,"aoRowCallback",t.fnRowCallback),Y(c,"aoRowCreatedCallback",t.fnCreatedRow),Y(c,"aoHeaderCallback",t.fnHeaderCallback),Y(c,"aoFooterCallback",t.fnFooterCallback),Y(c,"aoInitComplete",t.fnInitComplete),Y(c,"aoPreDrawCallback",t.fnPreDrawCallback),c.rowIdFn=U(t.rowId),t.on&&Object.keys(t.on).forEach(function(e){lt(a,e,t.on[e])}),c),d=(V.__browser||(f={},V.__browser=f,p=H("<div/>").css({position:"fixed",top:0,left:-1*W.pageXOffset,height:1,width:1,overflow:"hidden"}).append(H("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(H("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=p.children(),u=d.children(),f.barWidth=d[0].offsetWidth-d[0].clientWidth,f.bScrollbarLeft=1!==Math.round(u.offset().left),p.remove()),H.extend(n.oBrowser,V.__browser),n.oScroll.iBarWidth=V.__browser.barWidth,c.oClasses),f=(H.extend(d,V.ext.classes,t.oClasses),a.addClass(d.table),c.oFeatures.bPaginate||(t.iDisplayStart=0),void 0===c.iInitDisplayStart&&(c.iInitDisplayStart=t.iDisplayStart,c._iDisplayStart=t.iDisplayStart),t.iDeferLoading),h=(null!==f&&(c.deferLoading=!0,u=Array.isArray(f),c._iRecordsDisplay=u?f[0]:f,c._iRecordsTotal=u?f[1]:f),[]),p=this.getElementsByTagName("thead"),n=Ne(c,p[0]);if(t.aoColumns)h=t.aoColumns;else if(n.length)for(j=n[e=0].length;e<j;e++)h.push(null);for(e=0,j=h.length;e<j;e++)ee(c);var g,m,v,b,y,D,x,S=c,w=t.aoColumnDefs,T=h,_=n,C=function(e,t){te(c,e,t)},I=S.aoColumns;if(T)for(g=0,m=T.length;g<m;g++)T[g]&&T[g].name&&(I[g].sName=T[g].name);if(w)for(g=w.length-1;0<=g;g--){var L=void 0!==(x=w[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(L)||(L=[L]),v=0,b=L.length;v<b;v++){var A=L[v];if("number"==typeof A&&0<=A){for(;I.length<=A;)ee(S);C(A,x)}else if("number"==typeof A&&A<0)C(I.length+A,x);else if("string"==typeof A)for(y=0,D=I.length;y<D;y++)"_all"===A?C(y,x):-1!==A.indexOf(":name")?I[y].sName===A.replace(":name","")&&C(y,x):_.forEach(function(e){e[y]&&(e=H(e[y].cell),A.match(/^[a-z][\w-]*$/i)&&(A="."+A),e.is(A))&&C(y,x)})}}if(T)for(g=0,m=T.length;g<m;g++)C(g,T[g]);var N,n=a.children("tbody").find("tr:first-child").eq(0),F=(n.length&&(N=function(e,t){return null!==e.getAttribute("data-"+t)?t:null},H(n[0]).children("th, td").each(function(e,t){var n,r=c.aoColumns[e];r||z(c,0,"Incorrect column count",18),r.mData===e&&(n=N(t,"sort")||N(t,"order"),t=N(t,"filter")||N(t,"search"),null===n&&null===t||(r.mData={_:e+".display",sort:null!==n?e+".@data-"+n:void 0,type:null!==n?e+".@data-"+n:void 0,filter:null!==t?e+".@data-"+t:void 0},r._isArrayHost=!0,te(c,e)))})),Y(c,"aoDrawCallback",Ke),c.oFeatures);if(t.bStateSave&&(F.bStateSave=!0),void 0===t.aaSorting)for(var O=c.aaSorting,e=0,j=O.length;e<j;e++)O[e][1]=c.aoColumns[e].asSorting[0];Qe(c),Y(c,"aoDrawCallback",function(){(c.bSorted||"ssp"===J(c)||F.bDeferRender)&&Qe(c)});var n=a.children("caption"),n=(c.caption&&(n=0===n.length?H("<caption/>").appendTo(a):n).html(c.caption),n.length&&(n[0]._captionSide=n.css("caption-side"),c.captionNode=n[0]),0===p.length&&(p=H("<thead/>").appendTo(a)),c.nTHead=p[0],a.children("tbody")),n=(0===n.length&&(n=H("<tbody/>").insertAfter(p)),c.nTBody=n[0],a.children("tfoot")),R=(0===n.length&&(n=H("<tfoot/>").appendTo(a)),c.nTFoot=n[0],c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,R,t.oLanguage),R.sUrl?H.ajax({dataType:"json",url:R.sUrl,success:function(e){B(r.oLanguage,e),H.extend(!0,R,e,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),He(c)},error:function(){z(c,0,"i18n file loading error",21),He(c)}}):(G(c,null,"i18n",[c],!0),He(c))}}),E=null,this)},d=(V.ext=T={builder:"dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/fh-4.0.3/r-3.0.6/rg-1.6.0/rr-1.5.0",buttons:{},ccContent:{},classes:{},errMode:"alert",escape:{attributes:!1},feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(T,{afnFiltering:T.search,aTypes:T.type.detect,ofnSearch:T.type.search,oSort:T.type.order,afnSortData:T.order,aoFeatures:T.feature,oStdClasses:T.classes,oPagination:T.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),N=/[\r\n\u2028]/g,F=/<([^>]*>)/g,O=Math.pow(2,28),j=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,R=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),P=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,_=function(e){return!e||!0===e||"-"===e},E=function(e,t){return d[t]||(d[t]=new RegExp(Ee(t),"g")),"string"==typeof e&&"."!==t?e.replace(/\./g,"").replace(d[t],"."):e},b=function(e,t,n){var r=[],a=0,o=e.length;if(void 0!==n)for(;a<o;a++)e[a]&&e[a][t]&&r.push(e[a][t][n]);else for(;a<o;a++)e[a]&&r.push(e[a][t]);return r},w=function(e){if(!e||"string"!=typeof e)return e;if(e.length>O)throw new Error("Exceeded max str len");var t;for(e=e.replace(F,"");(e=(t=e).replace(/<script/i,""))!==t;);return t},u=function(e){return"string"==typeof(e=Array.isArray(e)?e.join(","):e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):e},k=function(e,t){var n;return"string"!=typeof e?e:(n=e.normalize?e.normalize("NFD"):e).length!==e.length?(!0===t?e+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},C=function(e){if(Array.from&&Set)return Array.from(new Set(e));if(function(e){if(!(e.length<2))for(var t=e.slice().sort(),n=t[0],r=1,a=t.length;r<a;r++){if(t[r]===n)return!1;n=t[r]}return!0}(e))return e.slice();var t,n,r,a=[],o=e.length,i=0;e:for(n=0;n<o;n++){for(t=e[n],r=0;r<i;r++)if(a[r]===t)continue e;a.push(t),i++}return a},M=function(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)M(e,t[n]);else e.push(t);return e};function y(t,e){e&&e.split(" ").forEach(function(e){e&&t.classList.add(e)})}function Z(t){var n,r,a={};H.each(t,function(e){(n=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(r=e.replace(n[0],n[2].toLowerCase()),a[r]=e,"o"===n[1])&&Z(t[e])}),t._hungarianMap=a}function B(t,n,r){var a;t._hungarianMap||Z(t),H.each(n,function(e){void 0===(a=t._hungarianMap[e])||!r&&void 0!==n[a]||("o"===a.charAt(0)?(n[a]||(n[a]={}),H.extend(!0,n[a],n[e]),B(t[a],n[a],r)):n[a]=n[e])})}V.util={diacritics:function(e,t){if("function"!=typeof e)return k(e,t);k=e},debounce:function(n,r){var a;return function(){var e=this,t=arguments;clearTimeout(a),a=setTimeout(function(){n.apply(e,t)},r||250)}},throttle:function(r,e){var a,o,i=void 0!==e?e:200;return function(){var e=this,t=+new Date,n=arguments;a&&t<a+i?(clearTimeout(o),o=setTimeout(function(){a=void 0,r.apply(e,n)},i)):(a=t,r.apply(e,n))}},escapeRegex:function(e){return e.replace(R,"\\$1")},set:function(r){var f;return H.isPlainObject(r)?V.util.set(r._):null===r?function(){}:"function"==typeof r?function(e,t,n){r(e,"set",t,n)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(e,t){e[r]=t}:(f=function(e,t,n){for(var r,a,o,i,l=ge(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(r=l[s].match(pe),a=l[s].match(p),r){if(l[s]=l[s].replace(pe,""),e[l[s]]=[],(r=l.slice()).splice(0,s+1),i=r.join("."),Array.isArray(t))for(var c=0,d=t.length;c<d;c++)f(o={},t[c],i),e[l[s]].push(o);else e[l[s]]=t;return}a&&(l[s]=l[s].replace(p,""),e=e[l[s]](t)),null!==e[l[s]]&&void 0!==e[l[s]]||(e[l[s]]={}),e=e[l[s]]}n.match(p)?e[n.replace(p,"")](t):e[n.replace(pe,"")]=t},function(e,t){return f(e,t,r)})},get:function(a){var o,f;return H.isPlainObject(a)?(o={},H.each(a,function(e,t){t&&(o[e]=V.util.get(t))}),function(e,t,n,r){var a=o[t]||o._;return void 0!==a?a(e,t,n,r):e}):null===a?function(e){return e}:"function"==typeof a?function(e,t,n,r){return a(e,t,n,r)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(e){return e[a]}:(f=function(e,t,n){var r,a,o;if(""!==n)for(var i=ge(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(pe),r=i[l].match(p),d){if(i[l]=i[l].replace(pe,""),""!==i[l]&&(e=e[i[l]]),a=[],i.splice(0,l+1),o=i.join("."),Array.isArray(e))for(var u=0,c=e.length;u<c;u++)a.push(f(e[u],t,o));var d=d[0].substring(1,d[0].length-1);e=""===d?a:a.join(d);break}if(r)i[l]=i[l].replace(p,""),e=e[i[l]]();else{if(null===e||null===e[i[l]])return null;if(void 0===e||void 0===e[i[l]])return;e=e[i[l]]}}return e},function(e,t){return f(e,t,a)})},stripHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t?w(e):e;w=e},escapeHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t||Array.isArray(e)?u(e):e;u=e},unique:C};var a=function(e,t,n){void 0!==e[t]&&(e[n]=e[t])};function Q(e){a(e,"ordering","bSort"),a(e,"orderMulti","bSortMulti"),a(e,"orderClasses","bSortClasses"),a(e,"orderCellsTop","bSortCellsTop"),a(e,"order","aaSorting"),a(e,"orderFixed","aaSortingFixed"),a(e,"paging","bPaginate"),a(e,"pagingType","sPaginationType"),a(e,"pageLength","iDisplayLength"),a(e,"searching","bFilter"),"boolean"==typeof e.sScrollX&&(e.sScrollX=e.sScrollX?"100%":""),"boolean"==typeof e.scrollX&&(e.scrollX=e.scrollX?"100%":""),"object"==typeof e.bSort?(e.orderIndicators=void 0===e.bSort.indicators||e.bSort.indicators,e.orderHandler=void 0===e.bSort.handler||e.bSort.handler,e.bSort=!0):!1===e.bSort?(e.orderIndicators=!1,e.orderHandler=!1):!0===e.bSort&&(e.orderIndicators=!0,e.orderHandler=!0),"boolean"==typeof e.bSortCellsTop&&(e.titleRow=e.bSortCellsTop);var t=e.aoSearchCols;if(t)for(var n=0,r=t.length;n<r;n++)t[n]&&B(V.models.oSearch,t[n]);e.serverSide&&!e.searchDelay&&(e.searchDelay=400)}function K(e){a(e,"orderable","bSortable"),a(e,"orderData","aDataSort"),a(e,"orderSequence","asSorting"),a(e,"orderDataType","sortDataType");var t=e.aDataSort;"number"!=typeof t||Array.isArray(t)||(e.aDataSort=[t])}function ee(e){var t=V.defaults.column,n=e.aoColumns.length,t=H.extend({},V.models.oColumn,t,{aDataSort:t.aDataSort||[n],mData:t.mData||n,idx:n,searchFixed:{},colEl:H("<col>").attr("data-dt-column",n)}),t=(e.aoColumns.push(t),e.aoPreSearchCols);t[n]=H.extend({},V.models.oSearch,t[n])}function te(e,t,n){function r(e){return"string"==typeof e&&-1!==e.indexOf("@")}var a=e.aoColumns[t],o=(null!=n&&(K(n),B(V.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(a._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),t=a.sClass,H.extend(a,n),$(a,n,"sWidth","sWidthOrig"),t!==a.sClass&&(a.sClass=t+" "+a.sClass),void 0!==n.iDataSort&&(a.aDataSort=[n.iDataSort]),$(a,n,"aDataSort")),a.mData),i=U(o);a.mRender&&Array.isArray(a.mRender)&&(n=(t=a.mRender.slice()).shift(),a.mRender=V.render[n].apply(W,t)),a._render=a.mRender?U(a.mRender):null;a._bAttrSrc=H.isPlainObject(o)&&(r(o.sort)||r(o.type)||r(o.filter)),a._setter=null,a.fnGetData=function(e,t,n){var r=i(e,t,void 0,n);return a._render&&t?a._render(r,t,e,n):r},a.fnSetData=function(e,t,n){return m(o)(e,t,n)},"number"==typeof o||a._isArrayHost||(e._rowReadObject=!0),e.oFeatures.bSort||(a.bSortable=!1)}function ne(e){!function(t){if(t.oFeatures.bAutoWidth){var e,n,r=t.nTable,a=t.aoColumns,o=t.oScroll,i=o.sY,l=o.sX,o=o.sXInner,s=ie(t,"bVisible"),u=r.getAttribute("width"),c=r.parentNode,d=r.style.width,f=ze(t);if(f===t.containerWidth)return;t.containerWidth=f,d||u||(r.style.width="100%",d="100%"),d&&-1!==d.indexOf("%")&&(u=d),G(t,null,"column-calc",{visible:s},!1);var f=H(r.cloneNode()).css("visibility","hidden").removeAttr("id"),h=(f.append("<tbody/>"),H("<tr/>").appendTo(f.find("tbody")));for(f.append(H(t.nTHead).clone()).append(H(t.nTFoot).clone()),f.find("tfoot th, tfoot td").css("width",""),f.find("thead th, thead td").each(function(){var e=ce(t,this,!0,!1);e?(this.style.width=e,l&&(this.style.minWidth=e,H(this).append(H("<div/>").css({width:e,margin:0,padding:0,border:0,height:1})))):this.style.width=""}),e=0;e<s.length;e++){p=s[e],n=a[p];var p=function(e,t){var n=e.aoColumns[t];if(!n.maxLenString){for(var r,a="",o=-1,i=0,l=e.aiDisplayMaster.length;i<l;i++){var s=e.aiDisplayMaster[i],s=De(e,s)[t],s=s&&"object"==typeof s&&s.nodeType?s.innerHTML:s+"";s=s.replace(/id=".*?"/g,"").replace(/name=".*?"/g,""),(r=w(s).replace(/&nbsp;/g," ")).length>o&&(a=s,o=r.length)}n.maxLenString=a}return n.maxLenString}(t,p),g=T.type.className[n.sType],m=p+n.sContentPadding,p=-1===p.indexOf("<")?S.createTextNode(m):m;H("<td/>").addClass(g).addClass(n.sClass).append(p).appendTo(h)}H("[name]",f).removeAttr("name");var v,b,d=H("<div/>").css(l||i?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(f).appendTo(c),y=(l&&o?f.width(o):l?(f.css("width","auto"),f.removeAttr("width"),f.outerWidth()<c.clientWidth&&u&&f.outerWidth(c.clientWidth)):i?f.outerWidth(c.clientWidth):u&&f.outerWidth(u),0),D=f.find("tbody tr").eq(0).children();for(e=0;e<s.length;e++){var x=D[e].getBoundingClientRect().width;y+=x,a[s[e]].sWidth=L(x)}r.style.width=L(y),d.remove(),u&&(r.style.width=L(u)),!u&&!l||t._reszEvt||(v=V.util.throttle(function(){var e=ze(t);t.bDestroying||0===e||ne(t)}),W.ResizeObserver?(b=H(t.nTableWrapper).is(":visible"),o=H("<div>").css({width:"100%",height:0}).addClass("dt-autosize").appendTo(t.nTableWrapper),t.resizeObserver=new ResizeObserver(function(e){b?b=!1:v()}),t.resizeObserver.observe(o[0])):H(W).on("resize.DT-"+t.sInstance,v),t._reszEvt=!0)}}(e);for(var t=e,n=t.aoColumns,r=0;r<n.length;r++){var a=ce(t,[r],!1,!1);n[r].colEl.css("width",a),t.oScroll.sX&&n[r].colEl.css("min-width",a)}var o=e.oScroll;""===o.sY&&""===o.sX||Ue(e),G(e,null,"column-sizing",[e])}function re(e,t){e=ie(e,"bVisible");return"number"==typeof e[t]?e[t]:null}function ae(e,t){e=ie(e,"bVisible").indexOf(t);return-1!==e?e:null}function oe(e){var t=e.aoHeader,n=e.aoColumns,r=0;if(t.length)for(var a=0,o=t[0].length;a<o;a++)n[a].bVisible&&"none"!==H(t[0][a].cell).css("display")&&r++;return r}function ie(e,n){var r=[];return e.aoColumns.map(function(e,t){e[n]&&r.push(t)}),r}function le(e,t){return!0===t?e._name:t}function se(e){for(var t,n,r,a,o,i,l=e.aoColumns,s=e.aoData,u=V.ext.type.detect,c=0,d=l.length;c<d;c++){if(i=[],!(o=l[c]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){if(!e.typeDetect)return;for(t=0,n=u.length;t<n;t++){var f=u[t],h=f.oneOf,p=f.allOf||f,g=f.init,m=!1,v=null;if(g&&(v=le(f,g(e,o,c)))){o.sType=v;break}for(r=0,a=s.length;r<a;r++)if(s[r]){if(void 0===i[r]&&(i[r]=q(e,r,c,"type")),h&&!m&&(m=le(f,h(i[r],e))),!(v=le(f,p(i[r],e)))&&t!==u.length-3)break;if("html"===v&&!_(i[r]))break}if(h&&m&&v||!h&&v){o.sType=v;break}}o.sType||(o.sType="string")}var b=T.type.className[o.sType],b=(b&&(ue(e.aoHeader,c,b),ue(e.aoFooter,c,b)),T.type.render[o.sType]);if(b&&!o._render){o._render=V.util.get(b),y=w=S=x=D=void 0;for(var y,D=e,x=c,S=D.aoData,w=0;w<S.length;w++)S[w].nTr&&(y=q(D,w,x,"display"),S[w].displayData[x]=y,he(S[w].anCells[x],y))}}}function ue(e,t,n){e.forEach(function(e){e[t]&&e[t].unique&&y(e[t].cell,n)})}function ce(e,t,n,r){Array.isArray(t)||(t=de(t));for(var a,o=0,i=e.aoColumns,l=0,s=t.length;l<s;l++){var u=i[t[l]],c=n?u.sWidthOrig:u.sWidth;if(r||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(a="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],a=3===u.length?u[2]:"px")}}return o+a}function de(e){e=H(e).closest("[data-dt-column]").attr("data-dt-column");return e?e.split(",").map(function(e){return+e}):[]}function D(e,t,n,r){for(var a=e.aoData.length,o=H.extend(!0,{},V.models.oRow,{src:n?"dom":"data",idx:a}),i=(o._aData=t,e.aoData.push(o),e.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;e.aiDisplayMaster.push(a);t=e.rowIdFn(t);return void 0!==t&&(e.aIds[t]=o),!n&&e.oFeatures.bDeferRender||xe(e,a,n,r),a}function fe(n,e){var r;return(e=e instanceof H?e:H(e)).map(function(e,t){return r=ye(n,t),D(n,r.data,t,r.cells)})}function q(e,t,n,r){"search"===r?r="filter":"order"===r&&(r="sort");var a=e.aoData[t];if(a){var o=e.iDraw,i=e.aoColumns[n],a=a._aData,l=i.sDefaultContent,s=i.fnGetData(a,r,{settings:e,row:t,col:n});if(void 0===(s="display"!==r&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return e.iDrawError!=o&&null===l&&(z(e,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+t+", column "+n,4),e.iDrawError=o),l;if(s!==a&&null!==s||null===l||void 0===r){if("function"==typeof s)return s.call(a)}else s=l;return null===s&&"display"===r?"":s="filter"===r&&(t=V.ext.type.search)[i.sType]?t[i.sType](s):s}}function he(e,t){t&&"object"==typeof t&&t.nodeName?H(e).empty().append(t):e.innerHTML=t}var pe=/\[.*?\]$/,p=/\(\)$/;function ge(e){return(e.match(/(\\.|[^.])+/g)||[""]).map(function(e){return e.replace(/\\\./g,".")})}var U=V.util.get,m=V.util.set;function me(e){return b(e.aoData,"_aData")}function ve(e){e.aoData.length=0,e.aiDisplayMaster.length=0,e.aiDisplay.length=0,e.aIds={}}function be(e,t,n,r){var a,o,i=e.aoData[t];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=De(e,t);if(l)if(void 0!==r)he(l[r],s[r]);else for(a=0,o=l.length;a<o;a++)he(l[a],s[a])}else i._aData=ye(e,i,r,void 0===r?void 0:i._aData).data;var u=e.aoColumns;if(void 0!==r)u[r].sType=null,u[r].maxLenString=null;else{for(a=0,o=u.length;a<o;a++)u[a].sType=null,u[a].maxLenString=null;Se(e,i)}}function ye(e,t,n,r){function a(e,t){var n;"string"==typeof e&&-1!==(n=e.indexOf("@"))&&(n=e.substring(n+1),m(e)(r,t.getAttribute(n)))}function o(e){void 0!==n&&n!==d||(l=f[d],s=e.innerHTML.trim(),l&&l._bAttrSrc?(m(l.mData._)(r,s),a(l.mData.sort,e),a(l.mData.type,e),a(l.mData.filter,e)):h?(l._setter||(l._setter=m(l.mData)),l._setter(r,s)):r[d]=s),d++}var i,l,s,u=[],c=t.firstChild,d=0,f=e.aoColumns,h=e._rowReadObject;r=void 0!==r?r:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=t.anCells).length;p<g;p++)o(u[p]);var t=t.firstChild?t:t.nTr;return t&&(t=t.getAttribute("id"))&&m(e.rowId)(r,t),{data:r,cells:u}}function De(e,t){var n=e.aoData[t],r=e.aoColumns;if(!n.displayData){n.displayData=[];for(var a=0,o=r.length;a<o;a++)n.displayData.push(q(e,t,a,"display"))}return n.displayData}function xe(e,t,n,r){var a,o,i,l,s,u,c=e.aoData[t],d=c._aData,f=[],h=e.oClasses.tbody.row;if(null===c.nTr){for(a=n||S.createElement("tr"),c.nTr=a,c.anCells=f,y(a,h),a._DT_RowIndex=t,Se(e,c),l=0,s=e.aoColumns.length;l<s;l++){i=e.aoColumns[l],(o=(u=!n||!r[l])?S.createElement(i.sCellType):r[l])||z(e,0,"Incorrect column count",18),o._DT_CellIndex={row:t,column:l},f.push(o);var p=De(e,t);!u&&(!i.mRender&&i.mData===l||H.isPlainObject(i.mData)&&i.mData._===l+".display")||he(o,p[l]),y(o,i.sClass),i.bVisible&&u?a.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(e.oInstance,o,q(e,t,l),d,t,l)}G(e,"aoRowCreatedCallback","row-created",[a,d,t,f])}else y(c.nTr,h)}function Se(e,t){var n=t.nTr,r=t._aData;n&&((e=e.rowIdFn(r))&&(n.id=e),r.DT_RowClass&&(e=r.DT_RowClass.split(" "),t.__rowc=t.__rowc?C(t.__rowc.concat(e)):e,H(n).removeClass(t.__rowc.join(" ")).addClass(r.DT_RowClass)),r.DT_RowAttr&&H(n).attr(r.DT_RowAttr),r.DT_RowData)&&H(n).data(r.DT_RowData)}function we(e,t){var n,r,a,o=e.oClasses,i=e.aoColumns,l="header"===t?e.nTHead:e.nTFoot,s="header"===t?"sTitle":t;if(l){if(("header"===t||b(e.aoColumns,s).join(""))&&1===(a=(a=H("tr",l)).length?a:H("<tr/>").appendTo(l)).length){var u=0;for(H("td, th",a).each(function(){u+=this.colSpan}),n=u,r=i.length;n<r;n++)H("<th/>").html(i[n][s]||"").appendTo(a)}var c=Ne(e,l,!0);"header"===t?(e.aoHeader=c,H("tr",l).addClass(o.thead.row)):(e.aoFooter=c,H("tr",l).addClass(o.tfoot.row)),H(l).children("tr").children("th, td").each(function(){at(e,t)(e,H(this),o)})}}function Te(e,t,n){var r,a,o,i,l,s=[],u=[],c=e.aoColumns,e=c.length;if(t){for(n=n||h(e).filter(function(e){return c[e].bVisible}),r=0;r<t.length;r++)s[r]=t[r].slice().filter(function(e,t){return n.includes(t)}),u.push([]);for(r=0;r<s.length;r++)for(a=0;a<s[r].length;a++)if(l=i=1,void 0===u[r][a]){for(o=s[r][a].cell;void 0!==s[r+i]&&s[r][a].cell==s[r+i][a].cell;)u[r+i][a]=null,i++;for(;void 0!==s[r][a+l]&&s[r][a].cell==s[r][a+l].cell;){for(var d=0;d<i;d++)u[r+d][a+l]=null;l++}var f=H("span.dt-column-title",o);u[r][a]={cell:o,colspan:l,rowspan:i,title:(f.length?f:H(o)).html()}}return u}}function _e(e,t){for(var n,r,a=Te(e,t),o=0;o<t.length;o++){if(n=t[o].row)for(;r=n.firstChild;)n.removeChild(r);for(var i=0;i<a[o].length;i++){var l=a[o][i];l&&H(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function x(e,t){if(a="ssp"==J(s=e),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!a&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==G(e,"aoPreDrawCallback","preDraw",[e]).indexOf(!1))I(e,!1);else{var l,n=[],r=0,a="ssp"==J(e),o=e.aiDisplay,i=e._iDisplayStart,s=e.fnDisplayEnd(),u=e.aoColumns,c=H(e.nTBody);if(e.bDrawing=!0,e.deferLoading)e.deferLoading=!1,e.iDraw++,I(e,!1);else if(a){if(!e.bDestroying&&!t)return 0===e.iDraw&&c.empty().append(Ie(e)),(l=e).iDraw++,I(l,!0),void Fe(l,function(t){function n(e,t){return"function"==typeof r[e][t]?"function":r[e][t]}var r=t.aoColumns,e=t.oFeatures,a=t.oPreviousSearch,o=t.aoPreSearchCols;return{draw:t.iDraw,columns:r.map(function(t,e){return{data:n(e,"mData"),name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:o[e].search,regex:o[e].regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}),order:Je(t).map(function(e){return{column:e.col,dir:e.dir,name:n(e.col,"sName")}}),start:t._iDisplayStart,length:e.bPaginate?t._iDisplayLength:-1,search:{value:a.search,regex:a.regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}(l),function(e){var t=l,n=Oe(t,e=e),r=je(t,"draw",e),a=je(t,"recordsTotal",e),e=je(t,"recordsFiltered",e);if(void 0!==r){if(+r<t.iDraw)return;t.iDraw=+r}n=n||[],ve(t),t._iRecordsTotal=parseInt(a,10),t._iRecordsDisplay=parseInt(e,10);for(var o=0,i=n.length;o<i;o++)D(t,n[o]);t.aiDisplay=t.aiDisplayMaster.slice(),se(t),x(t,!0),We(t),I(t,!1)})}else e.iDraw++;if(0!==o.length)for(var d=a?e.aoData.length:s,f=a?0:i;f<d;f++){for(var h=o[f],p=e.aoData[h],g=(null===p.nTr&&xe(e,h),p.nTr),m=0;m<u.length;m++){var v=u[m],b=p.anCells[m];y(b,T.type.className[v.sType]),y(b,e.oClasses.tbody.cell)}G(e,"aoRowCallback",null,[g,p._aData,r,f,h]),n.push(g),r++}else n[0]=Ie(e);G(e,"aoHeaderCallback","header",[H(e.nTHead).children("tr")[0],me(e),i,s,o]),G(e,"aoFooterCallback","footer",[H(e.nTFoot).children("tr")[0],me(e),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(H(n))),H(e.nTableWrapper).toggleClass("dt-empty-footer",0===H("tr",e.nTFoot).length),G(e,"aoDrawCallback","draw",[e],!0),e.bSorted=!1,e.bFiltered=!1,e.bDrawing=!1}}function Ce(e,t,n){var r=e.oFeatures,a=r.bSort,r=r.bFilter;void 0!==n&&!0!==n||(se(e),a&&Ze(e),r?Re(e,e.oPreviousSearch):e.aiDisplay=e.aiDisplayMaster.slice()),!0!==t&&(e._iDisplayStart=0),e._drawHold=t,x(e),e.api.one("draw",function(){e._drawHold=!1})}function Ie(e){var t=e.oLanguage,n=t.sZeroRecords,r=J(e);return"ssp"!==r&&"ajax"!==r||e.json?t.sEmptyTable&&0===e.fnRecordsTotal()&&(n=t.sEmptyTable):n=t.sLoadingRecords,H("<tr/>").append(H("<td />",{colSpan:oe(e),class:e.oClasses.empty.row}).html(n))[0]}function Le(e,t,a){var o=[];H.each(t,function(e,t){var n,r;null!==t&&(n=(e=e.match(/^([a-z]+)([0-9]*)([A-Za-z]*)$/))[2]?+e[2]:0,r=e[3]?e[3].toLowerCase():"full",e[1]===a)&&function e(t,n,r){if(Array.isArray(r))for(var a=0;a<r.length;a++)e(t,n,r[a]);else{var o=t[n];H.isPlainObject(r)?r.features?(r.rowId&&(t.id=r.rowId),r.rowClass&&(t.className=r.rowClass),o.id=r.id,o.className=r.className,e(t,n,r.features)):Object.keys(r).map(function(e){o.contents.push({feature:e,opts:r[e]})}):o.contents.push(r)}}(function(e,t,n){for(var r,a=0;a<e.length;a++)if((r=e[a]).rowNum===t&&("full"===n&&r.full||("start"===n||"end"===n)&&(r.start||r.end)))return r[n]||(r[n]={contents:[]}),r;return(r={rowNum:t})[n]={contents:[]},e.push(r),r}(o,n,r),r,t)}),o.sort(function(e,t){var n=e.rowNum,r=t.rowNum;return n===r?(e=e.full&&!t.full?-1:1,"bottom"===a?-1*e:e):r-n}),"bottom"===a&&o.reverse();for(var n=0;n<o.length;n++)delete o[n].rowNum,!function(o,i){function l(e,t){return T.features[e]||z(o,0,"Unknown feature: "+e),T.features[e].apply(this,[o,t])}function e(e){if(i[e])for(var t,n=i[e].contents,r=0,a=n.length;r<a;r++)n[r]&&("string"==typeof n[r]?n[r]=l(n[r],null):H.isPlainObject(n[r])?n[r]=l(n[r].feature,n[r].opts):"function"==typeof n[r].node?n[r]=n[r].node(o):"function"==typeof n[r]&&(t=n[r](o),n[r]="function"==typeof t.node?t.node():t))}e("start"),e("end"),e("full")}(e,o[n]);return o}function Ae(t){var r,e=t.oClasses,n=H(t.nTable),a=H("<div/>").attr({id:t.sTableId+"_wrapper",class:e.container}).insertBefore(n);if(t.nTableWrapper=a[0],t.sDom)for(var o,i,l,s,u,c,d=t,e=t.sDom,f=a,h=e.match(/(".*?")|('.*?')|./g),p=0;p<h.length;p++)o=null,"<"==(i=h[p])?(l=H("<div/>"),"'"!=(s=h[p+1])[0]&&'"'!=s[0]||(s=s.replace(/['"]/g,""),u="",-1!=s.indexOf(".")?(c=s.split("."),u=c[0],c=c[1]):"#"==s[0]?u=s:c=s,l.attr("id",u.substring(1)).addClass(c),p++),f.append(l),f=l):">"==i?f=f.parent():"t"==i?o=qe(d):V.ext.feature.forEach(function(e){i==e.cFeature&&(o=e.fnInit(d))}),o&&f.append(o);else{var n=Le(t,t.layout,"top"),e=Le(t,t.layout,"bottom"),g=at(t,"layout");n.forEach(function(e){g(t,a,e)}),g(t,a,{full:{table:!0,contents:[qe(t)]}}),e.forEach(function(e){g(t,a,e)})}var n=t,e=n.nTable,m=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(r=H("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),m?r.prependTo(H("div.dt-scroll",n.nTableWrapper)):r.insertBefore(e),H(e).on("processing.dt.DT",function(e,t,n){r.css("display",n?"block":"none")}))}function Ne(e,t,n){for(var r,a,o,i,l,s,u=e.aoColumns,c=H(t).children("tr"),d=e.titleRow,f=t&&"thead"===t.nodeName.toLowerCase(),h=[],p=0,g=c.length;p<g;p++)h.push([]);for(p=0,g=c.length;p<g;p++)for(a=(r=c[p]).firstChild;a;){if("TD"==a.nodeName.toUpperCase()||"TH"==a.nodeName.toUpperCase()){var m,v,b,y,D,x=[],S=H(a);for(y=(y=+a.getAttribute("colspan"))&&0!=y&&1!=y?y:1,D=(D=+a.getAttribute("rowspan"))&&0!=D&&1!=D?D:1,l=function(e,t,n){for(var r=e[t];r[n];)n++;return n}(h,p,0),s=1==y,n&&(s&&(te(e,l,st(S.data())),m=u[l],v=a.getAttribute("width")||null,(b=a.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=b[1]),m.sWidthOrig=m.sWidth||v,f?(null===m.sTitle||m.autoTitle||(!0===d&&0===p||!1===d&&p===c.length-1||d===p||null===d)&&(a.innerHTML=m.sTitle),!m.sTitle&&s&&(m.sTitle=w(a.innerHTML),m.autoTitle=!0)):m.footer&&(a.innerHTML=m.footer),m.ariaTitle||(m.ariaTitle=S.attr("aria-label")||m.sTitle),m.className)&&S.addClass(m.className),0===H("span.dt-column-title",a).length&&H("<span>").addClass("dt-column-title").append(a.childNodes).appendTo(a),e.orderIndicators&&f&&0!==S.filter(":not([data-dt-order=disable])").length&&0!==S.parent(":not([data-dt-order=disable])").length&&0===H("span.dt-column-order",a).length&&H("<span>").addClass("dt-column-order").appendTo(a),0===H("span.dt-column-"+(b=f?"header":"footer"),a).length)&&H("<div>").addClass("dt-column-"+b).append(a.childNodes).appendTo(a),i=0;i<y;i++){for(o=0;o<D;o++)h[p+o][l+i]={cell:a,unique:s},h[p+o].row=r;x.push(l+i)}a.setAttribute("data-dt-column",C(x).join(","))}a=a.nextSibling}return h}function Fe(n,e,r){function t(e){var t=n.jqXHR?n.jqXHR.status:null;if((null===e||"number"==typeof t&&204==t)&&Oe(n,e={},[]),(t=e.error||e.sError)&&z(n,0,t),e.d&&"string"==typeof e.d)try{e=JSON.parse(e.d)}catch(e){}n.json=e,G(n,null,"xhr",[n,e,n.jqXHR],!0),r(e)}var a,o=n.ajax,i=n.oInstance,l=(H.isPlainObject(o)&&o.data&&(l="function"==typeof(a=o.data)?a(e,n):a,e="function"==typeof a&&l?l:H.extend(!0,e,l),delete o.data),{url:"string"==typeof o?o:"",data:e,success:t,dataType:"json",cache:!1,type:n.sServerMethod,error:function(e,t){-1===G(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==t?z(n,0,"Invalid JSON response",1):4===e.readyState&&z(n,0,"Ajax error",7)),I(n,!1)}});H.isPlainObject(o)&&H.extend(l,o),n.oAjaxData=e,G(n,null,"preXhr",[n,e,l],!0),"json"===l.submitAs&&"object"==typeof e&&(l.data=JSON.stringify(e)),"function"==typeof o?n.jqXHR=o.call(i,e,t,n):""===o.url?(Oe(n,i={},[]),t(i)):n.jqXHR=H.ajax(l),a&&(o.data=a)}function Oe(e,t,n){var r="data";if(H.isPlainObject(e.ajax)&&void 0!==e.ajax.dataSrc&&("string"==typeof(e=e.ajax.dataSrc)||"function"==typeof e?r=e:void 0!==e.data&&(r=e.data)),!n)return"data"===r?t.aaData||t[r]:""!==r?U(r)(t):t;m(r)(t,n)}function je(e,t,n){var e=H.isPlainObject(e.ajax)?e.ajax.dataSrc:null;return e&&e[t]?U(e[t])(n):(e="","draw"===t?e="sEcho":"recordsTotal"===t?e="iTotalRecords":"recordsFiltered"===t&&(e="iTotalDisplayRecords"),void 0!==n[e]?n[e]:n[t])}function Re(n,e){var t=n.aoPreSearchCols;if("ssp"!=J(n)){for(var r,a,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],r=0,a=u.length;r<a;r++)u[r].bSearchable?"string"!=typeof(i=null===(i=q(s,d,r,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(ke.innerHTML=i,i=Me?ke.textContent:ke.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join("  "),0}n.aiDisplay=n.aiDisplayMaster.slice(),Pe(n.aiDisplay,n,e.search,e),H.each(n.searchFixed,function(e,t){Pe(n.aiDisplay,n,t,{})});for(var f=0;f<t.length;f++){var h=t[f];Pe(n.aiDisplay,n,h.search,h,f),H.each(n.aoColumns[f].searchFixed,function(e,t){Pe(n.aiDisplay,n,t,{},f)})}for(var p,g,m=n,v=V.ext.search,b=m.aiDisplay,y=0,D=v.length;y<D;y++){for(var x=[],S=0,w=b.length;S<w;S++)g=b[S],p=m.aoData[g],v[y](m,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,it(b,x)}}n.bFiltered=!0,G(n,null,"search",[n])}function Pe(e,t,n,r,a){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:function(e,t){var r=[],t=H.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},t);"string"!=typeof e&&(e=e.toString());if(e=k(e),t.exact)return new RegExp("^"+Ee(e)+"$",t.caseInsensitive?"i":"");{var n,a,o;e=t.regex?e:Ee(e),t.smart&&(n=(e.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(e){var t,n=!1;return"!"===e.charAt(0)&&(n=!0,e=e.substring(1)),'"'===e.charAt(0)?e=(t=e.match(/^"(.*)"$/))?t[1]:e:"“"===e.charAt(0)&&(e=(t=e.match(/^\u201C(.*)\u201D$/))?t[1]:e),n&&(1<e.length&&r.push("(?!"+e+")"),e=""),e.replace(/"/g,"")}),a=r.length?r.join(""):"",o=t.boundary?"\\b":"",e="^(?=.*?"+o+n.join(")(?=.*?"+o)+")("+a+".)*$")}return new RegExp(e,t.caseInsensitive?"i":"")}(n,r),o=0;o<e.length;o++){var u=t.aoData[e[o]],c=void 0===a?u._sFilterRow:u._aFilterData[a];(l&&l(c,u._aData,e[o],a)||s&&s.test(c))&&i.push(e[o])}for(e.length=i.length,o=0;o<i.length;o++)e[o]=i[o]}}var Ee=V.util.escapeRegex,ke=H("<div>")[0],Me=void 0!==ke.textContent;function He(i){var l,t,n,e,s=i.oInit,u=i.deferLoading,c=J(i);i.bInitialised?(we(i,"header"),we(i,"footer"),n=function(){_e(i,i.aoHeader),_e(i,i.aoFooter);var n=i.iInitDisplayStart;if(s.aaData)for(l=0;l<s.aaData.length;l++)D(i,s.aaData[l]);else!u&&"dom"!=c||fe(i,H(i.nTBody).children("tr"));i.aiDisplay=i.aiDisplayMaster.slice(),Ae(i);var e=i,t=e.nTHead,r=t.querySelectorAll("tr"),a=e.titleRow,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';!0===a?t=r[0]:!1===a?t=r[r.length-1]:null!==a&&(t=r[a]),e.orderHandler&&Ye(e,t,t===e.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),g(e,r=[],e.aaSorting),e.aaSorting=r,$e(i),I(i,!0),G(i,null,"preInit",[i],!0),Ce(i),"ssp"==c&&!u||("ajax"==c?Fe(i,{},function(e){var t=Oe(i,e);for(l=0;l<t.length;l++)D(i,t[l]);i.iInitDisplayStart=n,Ce(i),I(i,!1),We(i)}):(We(i),I(i,!1)))},(t=i).oFeatures.bStateSave?void 0!==(e=t.fnStateLoadCallback.call(t.oInstance,t,function(e){et(t,e,n)}))&&et(t,e,n):n()):setTimeout(function(){He(i)},200)}function We(e){var t;e._bInitComplete||(t=[e,e.json],e._bInitComplete=!0,ne(e),G(e,null,"plugin-init",t,!0),G(e,"aoInitComplete","init",t,!0))}function Xe(e,t){t=parseInt(t,10);e._iDisplayLength=t,rt(e),G(e,null,"length",[e,t])}function Ve(e,t,n){var r=e._iDisplayStart,a=e._iDisplayLength,o=e.fnRecordsDisplay();if(0===o||-1===a)r=0;else if("number"==typeof t)o<(r=t*a)&&(r=0);else if("first"==t)r=0;else if("previous"==t)(r=0<=a?r-a:0)<0&&(r=0);else if("next"==t)r+a<o&&(r+=a);else if("last"==t)r=Math.floor((o-1)/a)*a;else{if("ellipsis"===t)return;z(e,0,"Unknown paging action: "+t,5)}o=e._iDisplayStart!==r;e._iDisplayStart=r,G(e,null,o?"page":"page-nc",[e]),o&&n&&x(e)}function I(e,t){e.bDrawing&&!1===t||G(e,null,"processing",[e,t])}function Be(e,t,n){t?(I(e,!0),setTimeout(function(){n(),I(e,!1)},0)):n()}function qe(e){var t,n,r,a,o,i,l,s,u,c,d,f,h,p=H(e.nTable),g=e.oScroll;return""===g.sX&&""===g.sY?e.nTable:(t=g.sX,n=g.sY,r=e.oClasses.scrolling,o=(a=e.captionNode)?a._captionSide:null,u=H(p[0].cloneNode(!1)),i=H(p[0].cloneNode(!1)),c=function(e){return e?L(e):null},(l=p.children("tfoot")).length||(l=null),u=H(s="<div/>",{class:r.container}).append(H(s,{class:r.header.self}).css({overflow:"hidden",position:"relative",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?a:null).append(p.children("thead"))))).append(H(s,{class:r.body}).css({position:"relative",overflow:"auto",width:c(t)}).append(p)),l&&u.append(H(s,{class:r.footer.self}).css({overflow:"hidden",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?a:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,H(f).on("scroll.DT",function(){var e=this.scrollLeft;d.scrollLeft=e,l&&(h.scrollLeft=e)}),H("th, td",d).on("focus",function(){var e=d.scrollLeft;f.scrollLeft=e,l&&(f.scrollLeft=e)}),H(f).css("max-height",n),g.bCollapse||H(f).css("height",n),e.nScrollHead=d,e.nScrollBody=f,e.nScrollFoot=h,e.aoDrawCallback.push(Ue),u[0])}function Ue(t){var e=t.oScroll,n=e.iBarWidth,r=H(t.nScrollHead).children("div"),a=r.children("table"),o=t.nScrollBody,i=H(o),l=H(t.nScrollFoot).children("div"),s=l.children("table"),u=H(t.nTHead),c=H(t.nTable),d=t.nTFoot&&H("th, td",t.nTFoot).length?H(t.nTFoot):null,f=t.oBrowser,h=o.scrollHeight>o.clientHeight;if(t.scrollBarVis!==h&&void 0!==t.scrollBarVis)t.scrollBarVis=h,ne(t);else{if(t.scrollBarVis=h,c.children("thead, tfoot").remove(),(h=u.clone().prependTo(c)).find("th, td").removeAttr("tabindex"),h.find("[id]").removeAttr("id"),d&&(D=d.clone().prependTo(c)).find("[id]").removeAttr("id"),t.aiDisplay.length){for(var p=null,g="ssp"!==J(t)?t._iDisplayStart:0,m=g;m<g+t.aiDisplay.length;m++){var v=t.aiDisplay[m],v=t.aoData[v].nTr;if(v){p=v;break}}if(p)for(var b=H(p).children("th, td").map(function(e){return{idx:re(t,e),width:H(this).outerWidth()}}),m=0;m<b.length;m++){var y=t.aoColumns[b[m].idx].colEl[0];y.style.width.replace("px","")!==b[m].width&&(y.style.width=b[m].width+"px",e.sX)&&(y.style.minWidth=b[m].width+"px")}}a.find("colgroup").remove(),a.append(t.colgroup.clone()),d&&(s.find("colgroup").remove(),s.append(t.colgroup.clone())),H("th, td",h).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),d&&H("th, td",D).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var u=Math.floor(c.height())>o.clientHeight||"scroll"==i.css("overflow-y"),h="padding"+(f.bScrollbarLeft?"Left":"Right"),D=c.outerWidth();a.css("width",L(D)),r.css("width",L(D)).css(h,u?n+"px":"0px"),d&&(s.css("width",L(D)),l.css("width",L(D)).css(h,u?n+"px":"0px")),c.children("colgroup").prependTo(c),i.trigger("scroll"),!t.bSorted&&!t.bFiltered||t._drawHold||(o.scrollTop=0)}}function ze(e){return H(e.nTableWrapper).is(":visible")?H(e.nTableWrapper).width():0}function L(e){return null===e?"0px":"number"==typeof e?e<0?"0px":e+"px":e.match(/\d$/)?e+"px":e}function $e(e){var t=e.aoColumns;for(e.colgroup.empty(),l=0;l<t.length;l++)t[l].bVisible&&e.colgroup.append(t[l].colEl)}function Ye(o,e,t,i,l){nt(e,t,function(e){var t=!1,n=void 0===i?de(e.target):"function"==typeof i?i():Array.isArray(i)?i:[i];if(n.length){for(var r=0,a=n.length;r<a;r++)if(!1!==function(e,t,n,r){function a(e,t){var n=e._idx;return(n=void 0===n?s.indexOf(e[1]):n)+1<s.length?n+1:t?null:0}var o,i=e.aoColumns[t],l=e.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=e.aaSorting=[l]);(r||n)&&e.oFeatures.bSortMulti?-1!==(i=b(l,"0").indexOf(t))?null===(o=null===(o=a(l[i],!0))&&1===l.length?0:o)||""===s[o]?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(r?l.push([t,s[0],0]):l.push([t,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==t?(o=a(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([t,s[0]]),l[0]._idx=0)}(o,n[r],r,e.shiftKey)&&(t=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;t&&Be(o,!0,function(){Ze(o),Ge(o,o.aiDisplay),Ce(o,!1,!1),l&&l()})}})}function Ge(e,t){if(!(t.length<2)){for(var n=e.aiDisplayMaster,r={},a={},o=0;o<n.length;o++)r[n[o]]=o;for(o=0;o<t.length;o++)a[t[o]]=r[t[o]];t.sort(function(e,t){return a[e]-a[t]})}}function g(n,r,e){function t(e){var t;H.isPlainObject(e)?void 0!==e.idx?r.push([e.idx,e.dir]):e.name&&-1!==(t=b(n.aoColumns,"sName").indexOf(e.name))&&r.push([t,e.dir]):r.push(e)}if(H.isPlainObject(e))t(e);else if(e.length&&"number"==typeof e[0])t(e);else if(e.length)for(var a=0;a<e.length;a++)t(e[a])}function Je(e){var t,n,r,a,o,i,l,s=[],u=V.ext.type.order,c=e.aoColumns,d=e.aaSortingFixed,f=H.isPlainObject(d),h=[];if(e.oFeatures.bSort)for(Array.isArray(d)&&g(e,h,d),f&&d.pre&&g(e,h,d.pre),g(e,h,e.aaSorting),f&&d.post&&g(e,h,d.post),t=0;t<h.length;t++)if(c[l=h[t][0]])for(n=0,r=(a=c[l].aDataSort).length;n<r;n++)i=c[o=a[n]].sType||"string",void 0===h[t]._idx&&(h[t]._idx=c[o].asSorting.indexOf(h[t][1])),h[t][1]&&s.push({src:l,col:o,dir:h[t][1],index:h[t]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[t][1]]});return s}function Ze(e,t,n){var r,a,o,i,c,d=[],l=V.ext.type.order,f=e.aoData,s=e.aiDisplayMaster;for(se(e),void 0!==t?(i=e.aoColumns[t],c=[{src:t,col:t,dir:n,index:0,type:i.sType,formatter:l[i.sType+"-pre"],sorter:l[i.sType+"-"+n]}],s=s.slice()):c=Je(e),r=0,a=c.length;r<a;r++){o=c[r],x=D=y=p=h=u=b=v=m=g=void 0;var u,h,p,g=e,m=o.col,v=g.aoColumns[m],b=V.ext.order[v.sSortDataType];b&&(u=b.call(g.oInstance,g,m,ae(g,m)));for(var y=V.ext.type.order[v.sType+"-pre"],D=g.aoData,x=0;x<D.length;x++)D[x]&&((h=D[x])._aSortData||(h._aSortData=[]),h._aSortData[m]&&!b||(p=b?u[x]:q(g,x,m,"sort"),h._aSortData[m]=y?y(p,g):p))}if("ssp"!=J(e)&&0!==c.length){for(r=0,a=s.length;r<a;r++)d[r]=r;c.length&&"desc"===c[0].dir&&e.orderDescReverse&&d.reverse(),s.sort(function(e,t){for(var n,r,a,o,i=c.length,l=f[e]._aSortData,s=f[t]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],r=s[o.col],o.sorter){if(0!==(a=o.sorter(n,r)))return a}else if(0!==(a=n<r?-1:r<n?1:0))return"asc"===o.dir?a:-a;return(n=d[e])<(r=d[t])?-1:r<n?1:0})}else 0===c.length&&s.sort(function(e,t){return e<t?-1:t<e?1:0});return void 0===t&&(e.bSorted=!0,e.sortDetails=c,G(e,null,"order",[e,c])),s}function Qe(e){var t,n,r,a=e.aLastSort,o=e.oClasses.order.position,i=Je(e),l=e.oFeatures;if(l.bSort&&l.bSortClasses){for(t=0,n=a.length;t<n;t++)r=a[t].src,H(b(e.aoData,"anCells",r)).removeClass(o+(t<2?t+1:3));for(t=0,n=i.length;t<n;t++)r=i[t].src,H(b(e.aoData,"anCells",r)).addClass(o+(t<2?t+1:3))}e.aLastSort=i}function Ke(n){var t,e;n._bLoadingState||(g(n,e=[],n.aaSorting),t=n.aoColumns,e={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:e.map(function(e){return t[e[0]]&&t[e[0]].sName?[t[e[0]].sName,e[1]]:e.slice()}),search:H.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(e,t){return{name:e.sName,visible:e.bVisible,search:H.extend({},n.aoPreSearchCols[t])}})},n.oSavedState=e,G(n,"aoStateSaveParams","stateSaveParams",[n,e]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,e))}function et(r,e,t){var n,a,o=r.aoColumns,i=b(r.aoColumns,"sName"),l=(r._bLoadingState=!0,r._bInitComplete?new V.Api(r):null);if(e&&e.time){var s=r.iStateDuration;if(0<s&&e.time<+new Date-1e3*s)r._bLoadingState=!1;else if(-1!==G(r,"aoStateLoadParams","stateLoadParams",[r,e]).indexOf(!1))r._bLoadingState=!1;else{if(r.oLoadedState=H.extend(!0,{},e),G(r,null,"stateLoadInit",[r,e],!0),void 0!==e.length&&(l?l.page.len(e.length):r._iDisplayLength=e.length),void 0!==e.start&&(null===l?(r._iDisplayStart=e.start,r.iInitDisplayStart=e.start):Ve(r,e.start/r._iDisplayLength)),void 0!==e.order&&(r.aaSorting=[],H.each(e.order,function(e,t){var n=[t[0],t[1]];if("string"==typeof t[0]){t=i.indexOf(t[0]);if(t<0)return;n[0]=t}else if(n[0]>=o.length)return;r.aaSorting.push(n)})),void 0!==e.search&&H.extend(r.oPreviousSearch,e.search),e.columns){var u,c=e.columns,d=b(e.columns,"name");if(d.join("").length&&d.join("")!==i.join(""))for(c=[],n=0;n<i.length;n++)""!=i[n]&&0<=(u=d.indexOf(i[n]))?c.push(e.columns[u]):c.push({});if(c.length===o.length){for(n=0,a=c.length;n<a;n++){var f=c[n];void 0!==f.visible&&(l?l.column(n).visible(f.visible,!1):o[n].bVisible=f.visible),void 0!==f.search&&H.extend(r.aoPreSearchCols[n],f.search)}l&&l.one("draw",function(){l.columns.adjust()})}}r._bLoadingState=!1,G(r,"aoStateLoaded","stateLoaded",[r,e])}}else r._bLoadingState=!1;t()}function z(e,t,n,r){if(n="DataTables warning: "+(e?"table id="+e.sTableId+" - ":"")+n,r&&(n+=". For more information about this error, please see https://datatables.net/tn/"+r),t)W.console&&console.log&&console.log(n);else{t=V.ext,t=t.sErrMode||t.errMode;if(e&&G(e,null,"dt-error",[e,r,n],!0),"alert"==t)alert(n);else{if("throw"==t)throw new Error(n);"function"==typeof t&&t(e,r,n)}}}function $(n,r,e,t){Array.isArray(e)?H.each(e,function(e,t){Array.isArray(t)?$(n,r,t[0],t[1]):$(n,r,t)}):(void 0===t&&(t=e),void 0!==r[e]&&(n[t]=r[e]))}function tt(e,t,n){var r,a;for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(r=t[a],H.isPlainObject(r)?(H.isPlainObject(e[a])||(e[a]={}),H.extend(!0,e[a],r)):n&&"data"!==a&&"aaData"!==a&&Array.isArray(r)?e[a]=r.slice():e[a]=r);return e}function nt(e,t,n){H(e).on("click.DT",t,function(e){n(e)}).on("keypress.DT",t,function(e){13===e.which&&(e.preventDefault(),n(e))}).on("selectstart.DT",t,function(){return!1})}function Y(e,t,n){n&&e[t].push(n)}function G(t,e,n,r,a){var o=[];return e&&(o=t[e].slice().reverse().map(function(e){return e.apply(t.oInstance,r)})),null!==n&&(e=H.Event(n+".dt"),n=H(t.nTable),e.dt=t.api,n[a?"trigger":"triggerHandler"](e,r),a&&0===n.parents("body").length&&H("body").trigger(e,r),o.push(e.result)),o}function rt(e){var t=e._iDisplayStart,n=e.fnDisplayEnd(),r=e._iDisplayLength;n<=t&&(t=n-r),t-=t%r,e._iDisplayStart=t=-1===r||t<0?0:t}function at(e,t){var e=e.renderer,n=V.ext.renderer[t];return H.isPlainObject(e)&&e[t]?n[e[t]]||n._:"string"==typeof e&&n[e]||n._}function J(e){return e.oFeatures.bServerSide?"ssp":e.ajax?"ajax":"dom"}function ot(e,t,n){var r=e.fnFormatNumber,a=e._iDisplayStart+1,o=e._iDisplayLength,i=e.fnRecordsDisplay(),l=e.fnRecordsTotal(),s=-1===o;return t.replace(/_START_/g,r.call(e,a)).replace(/_END_/g,r.call(e,e.fnDisplayEnd())).replace(/_MAX_/g,r.call(e,l)).replace(/_TOTAL_/g,r.call(e,i)).replace(/_PAGE_/g,r.call(e,s?1:Math.ceil(a/o))).replace(/_PAGES_/g,r.call(e,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,e.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,e.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,e.api.i18n("entries","",i))}function it(e,t){if(t)if(t.length<1e4)e.push.apply(e,t);else for(l=0;l<t.length;l++)e.push(t[l])}function lt(e,t,n){for(Array.isArray(n)||(n=[n]),l=0;l<n.length;l++)e.on(t+".dt",n[l])}function st(n){return V.ext.escape.attributes&&H.each(n,function(e,t){n[e]=u(t)}),n}var ut=[],t=Array.prototype;X=function(e,t){if(!(this instanceof X))return new X(e,t);function n(e){e=e,t=V.settings,r=b(t,"nTable");var n,t,r,a=e?e.nTable&&e.oFeatures?[e]:e.nodeName&&"table"===e.nodeName.toLowerCase()?-1!==(a=r.indexOf(e))?[t[a]]:null:e&&"function"==typeof e.settings?e.settings().toArray():("string"==typeof e?n=H(e).get():e instanceof H&&(n=e.get()),n?t.filter(function(e,t){return n.includes(r[t])}):void 0):[];a&&o.push.apply(o,a)}var r,o=[];if(Array.isArray(e))for(r=0;r<e.length;r++)n(e[r]);else n(e);this.context=1<o.length?C(o):o,it(this,t),this.selector={rows:null,cols:null,opts:null},X.extend(this,this,ut)},V.Api=X,H.extend(X.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(e){for(var t=0,n=this.length;t<n;t++)e.call(this,this[t],t,this);return this},eq:function(e){var t=this.context;return t.length>e?new X(t[e],this[e]):null},filter:function(e){e=t.filter.call(this,e,this);return new X(this.context,e)},flatten:function(){var e=[];return new X(this.context,e.concat.apply(e,this.toArray()))},get:function(e){return this[e]},join:t.join,includes:function(e){return-1!==this.indexOf(e)},indexOf:t.indexOf,iterator:function(e,t,n,r){var a,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof e&&(r=n,n=t,t=e,e=!1),o=0,i=h.length;o<i;o++){var g=new X(h[o]);if("table"===t)void 0!==(a=n.call(g,h[o],o))&&f.push(a);else if("columns"===t||"rows"===t)void 0!==(a=n.call(g,h[o],this[o],o))&&f.push(a);else if("every"===t||"column"===t||"column-rows"===t||"row"===t||"cell"===t)for(c=this[o],"column-rows"===t&&(u=xt(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(a="cell"===t?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(a)}return f.length||r?((e=(r=new X(h,e?f.concat.apply([],f):f)).selector).rows=p.rows,e.cols=p.cols,e.opts=p.opts,r):this},lastIndexOf:t.lastIndexOf,length:0,map:function(e){e=t.map.call(this,e,this);return new X(this.context,e)},pluck:function(e){var t=V.util.get(e);return this.map(function(e){return t(e)})},pop:t.pop,push:t.push,reduce:t.reduce,reduceRight:t.reduceRight,reverse:t.reverse,selector:null,shift:t.shift,slice:function(){return new X(this.context,this)},sort:t.sort,splice:t.splice,toArray:function(){return t.slice.call(this)},to$:function(){return H(this)},toJQuery:function(){return H(this)},unique:function(){return new X(this.context,C(this.toArray()))},unshift:t.unshift}),W.__apiStruct=ut,X.extend=function(e,t,n){if(n.length&&t&&(t instanceof X||t.__dt_wrapper))for(var r,a=0,o=n.length;a<o;a++)"__proto__"!==(r=n[a]).name&&(t[r.name]="function"===r.type?function(t,n,r){return function(){var e=n.apply(t||this,arguments);return X.extend(e,e,r.methodExt),e}}(e,r.val,r):"object"===r.type?{}:r.val,t[r.name].__dt_wrapper=!0,X.extend(e,t[r.name],r.propExt))},X.register=r=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)X.register(e[n],t);else for(var a=e.split("."),o=ut,i=0,l=a.length;i<l;i++){var s,u,c=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n].name===t)return e[n];return null}(o,u=(s=-1!==a[i].indexOf("()"))?a[i].replace("()",""):a[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=t,c.type="function"==typeof t?"function":H.isPlainObject(t)?"object":"other"):o=s?c.methodExt:c.propExt}},X.registerPlural=e=function(e,t,n){X.register(e,n),X.register(t,function(){var e=n.apply(this,arguments);return e===this?this:e instanceof X?e.length?Array.isArray(e[0])?new X(e.context,e[0]):e[0]:void 0:e})};function ct(e,t){var n,r;return Array.isArray(e)?(n=[],e.forEach(function(e){e=ct(e,t);it(n,e)}),n.filter(function(e){return e})):"number"==typeof e?[t[e]]:(r=t.map(function(e){return e.nTable}),H(r).filter(e).map(function(){var e=r.indexOf(this);return t[e]}).toArray())}function dt(a,o,e){var t,n;e&&(t=new X(a)).one("draw",function(){e(t.ajax.json())}),"ssp"==J(a)?Ce(a,o):(I(a,!0),(n=a.jqXHR)&&4!==n.readyState&&n.abort(),Fe(a,{},function(e){ve(a);for(var t=Oe(a,e),n=0,r=t.length;n<r;n++)D(a,t[n]);Ce(a,o),We(a),I(a,!1)}))}function ft(e,t,n,r,a){for(var o,i=[],l=typeof t,s=0,u=(t=t&&"string"!=l&&"function"!=l&&void 0!==t.length?t:[t]).length;s<u;s++)(o=(o=n("string"==typeof t[s]?t[s].trim():t[s])).filter(function(e){return null!=e}))&&o.length&&(i=i.concat(o));var c=T.selector[e];if(c.length)for(s=0,u=c.length;s<u;s++)i=c[s](r,a,i);return C(i)}function ht(e){return(e=e||{}).filter&&void 0===e.search&&(e.search=e.filter),H.extend({columnOrder:"implied",search:"none",order:"current",page:"all"},e)}function pt(e){var t=new X(e.context[0]);return e.length&&t.push(e[0]),t.selector=e.selector,t.length&&1<t[0].length&&t[0].splice(1),t}r("tables()",function(e){return null!=e?new X(ct(e,this.context)):this}),r("table()",function(e){var e=this.tables(e),t=e.context;return t.length?new X(t[0]):e}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(t){e("tables()."+t[0]+"()","table()."+t[1]+"()",function(){return this.iterator("table",function(e){return e[t[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(t){r("table()."+t[0]+".structure()",function(e){var n=this.columns(e).indexes().flatten().toArray(),e=this.context[0],e=Te(e,e[t[1]],n),r=n.slice().sort(function(e,t){return e-t});return e.map(function(t){return n.map(function(e){return t[r.indexOf(e)]})})})}),e("tables().containers()","table().container()",function(){return this.iterator("table",function(e){return e.nTableWrapper},1)}),r("tables().every()",function(n){var r=this;return this.iterator("table",function(e,t){n.call(r.table(t),t)})}),r("caption()",function(a,o){var e,t=this.context;return void 0===a?(e=t[0].captionNode)&&t.length?e.innerHTML:null:this.iterator("table",function(e){var t=H(e.nTable),n=H(e.captionNode),r=H(e.nTableWrapper);n.length||(n=H("<caption/>").html(a),e.captionNode=n[0],o)||(t.prepend(n),o=n.css("caption-side")),n.html(a),o&&(n.css("caption-side",o),n[0]._captionSide=o),(r.find("div.dataTables_scroll").length?(e="top"===o?"Head":"Foot",r.find("div.dataTables_scroll"+e+" table")):t).prepend(n)},1)}),r("caption.node()",function(){var e=this.context;return e.length?e[0].captionNode:null}),r("draw()",function(t){return this.iterator("table",function(e){"page"===t?x(e):Ce(e,!1===(t="string"==typeof t?"full-hold"!==t:t))})}),r("page()",function(t){return void 0===t?this.page.info().page:this.iterator("table",function(e){Ve(e,t)})}),r("page.info()",function(){var e,t,n,r,a;if(0!==this.context.length)return t=(e=this.context[0])._iDisplayStart,n=e.oFeatures.bPaginate?e._iDisplayLength:-1,r=e.fnRecordsDisplay(),{page:(a=-1===n)?0:Math.floor(t/n),pages:a?1:Math.ceil(r/n),start:t,end:e.fnDisplayEnd(),length:n,recordsTotal:e.fnRecordsTotal(),recordsDisplay:r,serverSide:"ssp"===J(e)}}),r("page.len()",function(t){return void 0===t?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(e){Xe(e,t)})}),r("ajax.json()",function(){var e=this.context;if(0<e.length)return e[0].json}),r("ajax.params()",function(){var e=this.context;if(0<e.length)return e[0].oAjaxData}),r("ajax.reload()",function(t,n){return this.iterator("table",function(e){dt(e,!1===n,t)})}),r("ajax.url()",function(t){var e=this.context;return void 0===t?0===e.length?void 0:(e=e[0],H.isPlainObject(e.ajax)?e.ajax.url:e.ajax):this.iterator("table",function(e){H.isPlainObject(e.ajax)?e.ajax.url=t:e.ajax=t})}),r("ajax.url().load()",function(t,n){return this.iterator("table",function(e){dt(e,!1===n,t)})});function gt(o,i,e,t){function l(e,t){var n;if(Array.isArray(e)||e instanceof H)for(var r=0,a=e.length;r<a;r++)l(e[r],t);else e.nodeName&&"tr"===e.nodeName.toLowerCase()?(e.setAttribute("data-dt-row",i.idx),s.push(e)):(n=H("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(t),H("td",n).addClass(t).html(e)[0].colSpan=oe(o),s.push(n[0]))}var s=[];l(e,t),i._details&&i._details.detach(),i._details=H(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function mt(e,t){var n=e.context;if(n.length&&e.length){var r=n[0].aoData[e[0]];if(r._details){(r._detailsShow=t)?(r._details.insertAfter(r.nTr),H(r.nTr).addClass("dt-hasChild")):(r._details.detach(),H(r.nTr).removeClass("dt-hasChild")),G(n[0],null,"childRow",[t,e.row(e[0])]);var i=n[0],a=new X(i),r=".dt.DT_details",t="draw"+r,e="column-sizing"+r,r="destroy"+r,l=i.aoData;if(a.off(t+" "+e+" "+r),b(l,"_details").length>0){a.on(t,function(e,t){if(i!==t)return;a.rows({page:"current"}).eq(0).each(function(e){var t=l[e];if(t._detailsShow)t._details.insertAfter(t.nTr)})});a.on(e,function(e,t){if(i!==t)return;var n,r=oe(t);for(var a=0,o=l.length;a<o;a++){n=l[a];if(n&&n._details)n._details.each(function(){var e=H(this).children("td");if(e.length==1)e.attr("colspan",r)})}});a.on(r,function(e,t){if(i!==t)return;for(var n=0,r=l.length;n<r;n++)if(l[n]&&l[n]._details)Tt(a,n)})}wt(n)}}}function vt(e,t,n,r,a,o){for(var i=[],l=0,s=a.length;l<s;l++)i.push(q(e,a[l],t,o));return i}function bt(e,t,n){var r=e.aoHeader,e=e.titleRow,a=null;if(void 0!==n)a=n;else if(!0===e)a=0;else if(!1===e)a=r.length-1;else if(null!==e)a=e;else{for(var o=0;o<r.length;o++)r[o][t].unique&&H("span.dt-column-title",r[o][t].cell).text()&&(a=o);null===a&&(a=0)}return r[a][t].cell}var yt,Dt,xt=function(e,t){var n,r=[],a=e.aiDisplay,o=e.aiDisplayMaster,i=t.search,l=t.order,t=t.page;if("ssp"==J(e))return"removed"===i?[]:h(0,o.length);if("current"==t)for(u=e._iDisplayStart,c=e.fnDisplayEnd();u<c;u++)r.push(a[u]);else if("current"==l||"applied"==l){if("none"==i)r=o.slice();else if("applied"==i)r=a.slice();else if("removed"==i){for(var s={},u=0,c=a.length;u<c;u++)s[a[u]]=null;o.forEach(function(e){Object.prototype.hasOwnProperty.call(s,e)||r.push(e)})}}else if("index"==l||"original"==l)for(u=0,c=e.aoData.length;u<c;u++)e.aoData[u]&&("none"==i||-1===(n=a.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&r.push(u);else if("number"==typeof l){var d=Ze(e,l,"asc");if("none"===i)r=d;else for(u=0;u<d.length;u++)(-1===(n=a.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&r.push(d[u])}return r},St=(r("rows()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=ht(r);var e=this.iterator("table",function(e){return t=ft("row",t=n,function(n){var e=f(n),r=a.aoData;if(null!==e&&!o)return[e];if(i=i||xt(a,o),null!==e&&-1!==i.indexOf(e))return[e];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(e){var t=r[e];return n(e,t._aData,t.nTr)?e:null});if(n.nodeName)return e=n._DT_RowIndex,t=n._DT_CellIndex,void 0!==e?r[e]&&r[e].nTr===n?[e]:[]:t?r[t.row]&&r[t.row].nTr===n.parentNode?[t.row]:[]:(e=H(n).closest("*[data-dt-row]")).length?[e.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var t=a.aIds[n.replace(/^#/,"")];if(void 0!==t)return[t.idx]}e=A(v(a.aoData,i,"nTr"));return H(e).filter(n).map(function(){return this._DT_RowIndex}).toArray()},a=e,o=r),"current"!==o.order&&"applied"!==o.order||Ge(a,t),t;var a,t,o,i},1);return e.selector.rows=n,e.selector.opts=r,e}),r("rows().nodes()",function(){return this.iterator("row",function(e,t){return e.aoData[t].nTr||void 0},1)}),r("rows().data()",function(){return this.iterator(!0,"rows",function(e,t){return v(e.aoData,t,"_aData")},1)}),e("rows().cache()","row().cache()",function(n){return this.iterator("row",function(e,t){e=e.aoData[t];return"search"===n?e._aFilterData:e._aSortData},1)}),e("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(e,t){be(e,t,n)})}),e("rows().indexes()","row().index()",function(){return this.iterator("row",function(e,t){return t},1)}),e("rows().ids()","row().id()",function(e){for(var t=[],n=this.context,r=0,a=n.length;r<a;r++)for(var o=0,i=this[r].length;o<i;o++){var l=n[r].rowIdFn(n[r].aoData[this[r][o]]._aData);t.push((!0===e?"#":"")+l)}return new X(n,t)}),e("rows().remove()","row().remove()",function(){return this.iterator("row",function(e,t){var n=e.aoData,r=n[t],a=e.aiDisplayMaster.indexOf(t),a=(-1!==a&&e.aiDisplayMaster.splice(a,1),0<e._iRecordsDisplay&&e._iRecordsDisplay--,rt(e),e.rowIdFn(r._aData));void 0!==a&&delete e.aIds[a],n[t]=null}),this}),r("rows.add()",function(o){var e=this.iterator("table",function(e){for(var t,n=[],r=0,a=o.length;r<a;r++)(t=o[r]).nodeName&&"TR"===t.nodeName.toUpperCase()?n.push(fe(e,t)[0]):n.push(D(e,t));return n},1),t=this.rows(-1);return t.pop(),it(t,e),t}),r("row()",function(e,t){return pt(this.rows(e,t))}),r("row().data()",function(e){var t,n=this.context;return void 0===e?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((t=n[0].aoData[this[0]])._aData=e,Array.isArray(e)&&t.nTr&&t.nTr.id&&m(n[0].rowId)(e,t.nTr.id),be(n[0],this[0],"data"),this)}),r("row().node()",function(){var e=this.context;if(e.length&&this.length&&this[0].length){e=e[0].aoData[this[0]];if(e&&e.nTr)return e.nTr}return null}),r("row.add()",function(t){t instanceof H&&t.length&&(t=t[0]);var e=this.iterator("table",function(e){return t.nodeName&&"TR"===t.nodeName.toUpperCase()?fe(e,t)[0]:D(e,t)});return this.row(e[0])}),H(S).on("plugin-init.dt",function(e,t){var r=new X(t);r.on("stateSaveParams.DT",function(e,t,n){for(var r=t.rowIdFn,a=t.aiDisplayMaster,o=[],i=0;i<a.length;i++){var l=a[i],l=t.aoData[l];l._detailsShow&&o.push("#"+r(l._aData))}n.childRows=o}),r.on("stateLoaded.DT",function(e,t,n){St(r,n)}),St(r,r.state.loaded())}),function(e,t){t&&t.childRows&&e.rows(t.childRows.map(function(e){return e.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){G(e.settings()[0],null,"requestChild",[this])})}),wt=V.util.throttle(function(e){Ke(e[0])},500),Tt=function(e,t){var n=e.context;n.length&&(t=n[0].aoData[void 0!==t?t:e[0]])&&t._details&&(t._details.detach(),t._detailsShow=void 0,t._details=void 0,H(t.nTr).removeClass("dt-hasChild"),wt(n))},_t="row().child",Ct=_t+"()",It=(r(Ct,function(e,t){var n=this.context;return void 0===e?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===e?this.child.show():!1===e?Tt(this):n.length&&this.length&&gt(n[0],n[0].aoData[this[0]],e,t),this)}),r([_t+".show()",Ct+".show()"],function(){return mt(this,!0),this}),r([_t+".hide()",Ct+".hide()"],function(){return mt(this,!1),this}),r([_t+".remove()",Ct+".remove()"],function(){return Tt(this),this}),r(_t+".isShown()",function(){var e=this.context;return e.length&&this.length&&e[0].aoData[this[0]]&&e[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+)?:(name|title|visIdx|visible)$/);r("columns()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=ht(r);var e=this.iterator("table",function(e){return t=n,l=r,c=(i=e).aoColumns,d=function(e){for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e[n].length;r++){var a=e[n][r].cell;t.includes(a)||t.push(a)}return t}(i.aoHeader),t=ft("column",t,function(n){var r,e=f(n);if(""===n)return h(c.length);if(null!==e)return[0<=e?e:c.length+e];if("function"==typeof n)return r=xt(i,l),c.map(function(e,t){return n(t,vt(i,t,0,0,r),bt(i,t))?t:null});var t,a,o="string"==typeof n?n.match(It):"";if(o)switch(o[2]){case"visIdx":case"visible":return o[1]&&o[1].match(/^\d+$/)?(t=parseInt(o[1],10))<0?[(a=c.map(function(e,t){return e.bVisible?t:null}))[a.length+t]]:[re(i,t)]:c.map(function(e,t){return e.bVisible&&(!o[1]||0<H(d[t]).filter(o[1]).length)?t:null});case"name":return(s=s||b(c,"sName")).map(function(e,t){return e===o[1]?t:null});case"title":return(u=u||b(c,"sTitle")).map(function(e,t){return e===o[1]?t:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(e=H(d).filter(n).map(function(){return de(this)}).toArray().sort(function(e,t){return e-t})).length||!n.nodeName?e:(e=H(n).closest("*[data-dt-column]")).length?[e.data("dt-column")]:[]},i,l),l.columnOrder&&"index"===l.columnOrder?t.sort(function(e,t){return e-t}):t;var i,t,l,s,u,c,d},1);return e.selector.cols=n,e.selector.opts=r,e}),e("columns().header()","column().header()",function(n){return this.iterator("column",function(e,t){return bt(e,t,n)},1)}),e("columns().footer()","column().footer()",function(n){return this.iterator("column",function(e,t){return e.aoFooter.length?e.aoFooter[void 0!==n?n:0][t].cell:null},1)}),e("columns().data()","column().data()",function(){return this.iterator("column-rows",vt,1)}),e("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return vt(e,t,0,0,a,o)},1)}),e("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].mData},1)}),e("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"search"===o?"_aFilterData":"_aSortData",t)},1)}),e("columns().init()","column().init()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t]},1)}),e("columns().names()","column().name()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].sName},1)}),e("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"anCells",t)},1)}),e("columns().titles()","column().title()",function(n,r){return this.iterator("column",function(e,t){"number"==typeof n&&(r=n,n=void 0);t=H("span.dt-column-title",this.column(t).header(r));return void 0!==n?(t.html(n),this):t.html()},1)}),e("columns().types()","column().type()",function(){return this.iterator("column",function(e,t){t=e.aoColumns[t].sType;return t||se(e),t},1)}),e("columns().visible()","column().visible()",function(n,r){var t=this,a=[],e=this.iterator("column",function(e,t){if(void 0===n)return e.aoColumns[t].bVisible;!function(e,t,n){var r,a,o=e.aoColumns,i=o[t],l=e.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=b(o,"bVisible").indexOf(!0,t+1),u=0,c=l.length;u<c;u++)l[u]&&(a=l[u].nTr,r=l[u].anCells,a)&&a.insertBefore(r[t],r[s]||null);else H(b(e.aoData,"anCells",t)).detach();return i.bVisible=n,$e(e),!0}(e,t,n)||a.push(t)});return void 0!==n&&this.iterator("table",function(e){_e(e,e.aoHeader),_e(e,e.aoFooter),e.aiDisplay.length||H(e.nTBody).find("td[colspan]").attr("colspan",oe(e)),Ke(e),t.iterator("column",function(e,t){a.includes(t)&&G(e,null,"column-visibility",[e,t,n,r])}),a.length&&(void 0===r||r)&&t.columns.adjust()}),e}),e("columns().widths()","column().width()",function(){var e=this.columns(":visible").count(),e=H("<tr>").html("<td>"+Array(e).join("</td><td>")+"</td>"),n=(H(this.table().body()).append(e),e.children().map(function(){return H(this).outerWidth()}));return e.remove(),this.iterator("column",function(e,t){e=ae(e,t);return null!==e?n[e]:0},1)}),e("columns().indexes()","column().index()",function(n){return this.iterator("column",function(e,t){return"visible"===n?ae(e,t):t},1)}),r("columns.adjust()",function(){return this.iterator("table",function(e){e.containerWidth=-1,ne(e)},1)}),r("column.index()",function(e,t){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===e||"toData"===e?re(n,t):"fromData"===e||"toVisible"===e?ae(n,t):void 0}),r("column()",function(e,t){return pt(this.columns(e,t))});function Lt(e,t){H(e).find("span.dt-column-order").remove(),H(e).find("span.dt-column-title").each(function(){var e=H(this).html();H(this).parent().parent().append(e),H(this).remove()}),H(e).find("div.dt-column-"+t).remove(),H("th, td",e).removeAttr("data-dt-column")}r("cells()",function(g,e,m){var r,a,o,i,l,s,t;return H.isPlainObject(g)&&(void 0===g.row?(m=g,g=null):(m=e,e=null)),H.isPlainObject(e)&&(m=e,e=null),null==e?this.iterator("table",function(e){return r=e,e=g,t=ht(m),d=r.aoData,f=xt(r,t),n=A(v(d,f,"anCells")),h=H(M([],n)),p=r.aoColumns.length,ft("cell",e,function(e){var t,n="function"==typeof e;if(null==e||n){for(o=[],i=0,l=f.length;i<l;i++)for(a=f[i],s=0;s<p;s++)u={row:a,column:s},(!n||(c=d[a],e(u,q(r,a,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return H.isPlainObject(e)?void 0!==e.column&&void 0!==e.row&&-1!==f.indexOf(e.row)?[e]:[]:(t=h.filter(e).map(function(e,t){return{row:t._DT_CellIndex.row,column:t._DT_CellIndex.column}}).toArray()).length||!e.nodeName?t:(c=H(e).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},r,t);var r,t,a,o,i,l,s,u,c,d,f,n,h,p}):(t=m?{page:m.page,order:m.order,search:m.search}:{},r=this.columns(e,t),a=this.rows(g,t),t=this.iterator("table",function(e,t){var n=[];for(o=0,i=a[t].length;o<i;o++)for(l=0,s=r[t].length;l<s;l++)n.push({row:a[t][o],column:r[t][l]});return n},1),t=m&&m.selected?this.cells(t,m):t,H.extend(t.selector,{cols:e,rows:g,opts:m}),t)}),e("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(e,t,n){e=e.aoData[t];return e&&e.anCells?e.anCells[n]:void 0},1)}),r("cells().data()",function(){return this.iterator("cell",function(e,t,n){return q(e,t,n)},1)}),e("cells().cache()","cell().cache()",function(r){return r="search"===r?"_aFilterData":"_aSortData",this.iterator("cell",function(e,t,n){return e.aoData[t][r][n]},1)}),e("cells().render()","cell().render()",function(r){return this.iterator("cell",function(e,t,n){return q(e,t,n,r)},1)}),e("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(e,t,n){return{row:t,column:n,columnVisible:ae(e,n)}},1)}),e("cells().invalidate()","cell().invalidate()",function(r){return this.iterator("cell",function(e,t,n){be(e,t,r,n)})}),r("cell()",function(e,t,n){return pt(this.cells(e,t,n))}),r("cell().data()",function(e){var t,n,r,a,o,i=this.context,l=this[0];return void 0===e?i.length&&l.length?q(i[0],l[0].row,l[0].column):void 0:(t=i[0],n=l[0].row,r=l[0].column,a=t.aoColumns[r],o=t.aoData[n]._aData,a.fnSetData(o,e,{settings:t,row:n,col:r}),be(i[0],l[0].row,"data",l[0].column),this)}),r("order()",function(n,e){var t=this.context,r=Array.prototype.slice.call(arguments);return void 0===n?0!==t.length?t[0].aaSorting:void 0:("number"==typeof n?n=[[n,e]]:1<r.length&&(n=r),this.iterator("table",function(e){var t=[];g(e,t,n),e.aaSorting=t}))}),r("order.listener()",function(t,n,r){return this.iterator("table",function(e){Ye(e,t,{},n,r)})}),r("order.fixed()",function(t){var e;return t?this.iterator("table",function(e){e.aaSortingFixed=H.extend(!0,{},t)}):(e=(e=this.context).length?e[0].aaSortingFixed:void 0,Array.isArray(e)?{pre:e}:e)}),r(["columns().order()","column().order()"],function(n){var r=this;return n?this.iterator("table",function(e,t){e.aaSorting=r[t].map(function(e){return[e,n]})}):this.iterator("column",function(e,t){for(var n=Je(e),r=0,a=n.length;r<a;r++)if(n[r].col===t)return n[r].dir;return null},1)}),e("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(e,t){e=e.aoColumns[t];return n?e.asSorting:e.bSortable},1)}),r("processing()",function(t){return this.iterator("table",function(e){I(e,t)})}),r("search()",function(t,n,r,a){var e=this.context;return void 0===t?0!==e.length?e[0].oPreviousSearch.search:void 0:this.iterator("table",function(e){e.oFeatures.bFilter&&Re(e,"object"==typeof n?H.extend(e.oPreviousSearch,n,{search:t}):H.extend(e.oPreviousSearch,{search:t,regex:null!==n&&n,smart:null===r||r,caseInsensitive:null===a||a}))})}),r("search.fixed()",function(t,n){var e=this.iterator(!0,"table",function(e){e=e.searchFixed;return t?void 0===n?e[t]:(null===n?delete e[t]:e[t]=n,this):Object.keys(e)});return void 0!==t&&void 0===n?e[0]:e}),e("columns().search()","column().search()",function(r,a,o,i){return this.iterator("column",function(e,t){var n=e.aoPreSearchCols;if(void 0===r)return n[t].search;e.oFeatures.bFilter&&("object"==typeof a?H.extend(n[t],a,{search:r}):H.extend(n[t],{search:r,regex:null!==a&&a,smart:null===o||o,caseInsensitive:null===i||i}),Re(e,e.oPreviousSearch))})}),r(["columns().search.fixed()","column().search.fixed()"],function(n,r){var e=this.iterator(!0,"column",function(e,t){e=e.aoColumns[t].searchFixed;return n?void 0===r?e[n]||null:(null===r?delete e[n]:e[n]=r,this):Object.keys(e)});return void 0!==n&&void 0===r?e[0]:e}),r("state()",function(e,t){var n;return e?(n=H.extend(!0,{},e),this.iterator("table",function(e){!1!==t&&(n.time=+new Date+100),et(e,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),r("state.clear()",function(){return this.iterator("table",function(e){e.fnStateSaveCallback.call(e.oInstance,e,{})})}),r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),r("state.save()",function(){return this.iterator("table",function(e){Ke(e)})}),V.use=function(e,t){var n="string"==typeof e?t:e,t="string"==typeof t?t:e;if(void 0===n&&"string"==typeof t)switch(t){case"lib":case"jq":return H;case"win":return W;case"datetime":return V.DateTime;case"luxon":return o;case"moment":return i;case"bootstrap":return yt||W.bootstrap;case"foundation":return Dt||W.Foundation;default:return null}"lib"===t||"jq"===t||n&&n.fn&&n.fn.jquery?H=n:"win"===t||n&&n.document?S=(W=n).document:"datetime"===t||n&&"DateTime"===n.type?V.DateTime=n:"luxon"===t||n&&n.FixedOffsetZone?o=n:"moment"===t||n&&n.isMoment?i=n:"bootstrap"===t||n&&n.Modal&&"modal"===n.Modal.NAME?yt=n:("foundation"===t||n&&n.Reveal)&&(Dt=n)},V.factory=function(e,t){var n=!1;return e&&e.document&&(S=(W=e).document),t&&t.fn&&t.fn.jquery&&(H=t,n=!0),n},V.versionCheck=function(e,t){for(var n,r,a=(t||V.version).split("."),o=e.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(a[i],10)||0)!==(r=parseInt(o[i],10)||0))return r<n;return!0},V.isDataTable=function(e){var a=H(e).get(0),o=!1;return e instanceof V.Api||(H.each(V.settings,function(e,t){var n=t.nScrollHead?H("table",t.nScrollHead)[0]:null,r=t.nScrollFoot?H("table",t.nScrollFoot)[0]:null;t.nTable!==a&&n!==a&&r!==a||(o=!0)}),o)},V.tables=function(t){var e=!1,n=(H.isPlainObject(t)&&(e=t.api,t=t.visible),V.settings.filter(function(e){return!(t&&!H(e.nTable).is(":visible"))}).map(function(e){return e.nTable}));return e?new X(n):n},V.camelToHungarian=B,r("$()",function(e,t){t=this.rows(t).nodes(),t=H(t);return H([].concat(t.filter(e).toArray(),t.find(e).toArray()))}),H.each(["on","one","off"],function(e,n){r(n+"()",function(){var e=Array.prototype.slice.call(arguments),t=(e[0]=e[0].split(/\s/).map(function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" "),H(this.tables().nodes()));return t[n].apply(t,e),this})}),r("clear()",function(){return this.iterator("table",function(e){ve(e)})}),r("error()",function(t){return this.iterator("table",function(e){z(e,0,t)})}),r("settings()",function(){return new X(this.context,this.context)}),r("init()",function(){var e=this.context;return e.length?e[0].oInit:null}),r("data()",function(){return this.iterator("table",function(e){return b(e.aoData,"_aData")}).flatten()}),r("trigger()",function(t,n,r){return this.iterator("table",function(e){return G(e,null,t,n,r)}).flatten()}),r("ready()",function(t){var e=this.context;return t?this.tables().every(function(){var e=this;this.context[0]._bInitComplete?t.call(e):this.on("init.dt.DT",function(){t.call(e)})}):e.length?e[0]._bInitComplete||!1:null}),r("destroy()",function(c){return c=c||!1,this.iterator("table",function(e){var t=e.oClasses,n=e.nTable,r=e.nTBody,a=e.nTHead,o=e.nTFoot,i=H(n),r=H(r),l=H(e.nTableWrapper),s=e.aoData.map(function(e){return e?e.nTr:null}),u=t.order,o=(e.bDestroying=!0,G(e,"aoDestroyCallback","destroy",[e],!0),c||new X(e).columns().visible(!0),e.resizeObserver&&e.resizeObserver.disconnect(),l.off(".DT").find(":not(tbody *)").off(".DT"),H(W).off(".DT-"+e.sInstance),n!=a.parentNode&&(i.children("thead").detach(),i.append(a)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),Lt(a,"header"),Lt(o,"footer"),e.colgroup.remove(),e.aaSorting=[],e.aaSortingFixed=[],Qe(e),H(i).find("th, td").removeClass(H.map(V.ext.type.className,function(e){return e}).join(" ")),H("th, td",a).removeClass(u.none+" "+u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width","").removeAttr("aria-sort"),r.children().detach(),r.append(s),e.nTableWrapper.parentNode),a=e.nTableWrapper.nextSibling,u=c?"remove":"detach",r=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,a),i.css("width",e.sDestroyWidth).removeClass(t.table)),V.settings.indexOf(e));-1!==r&&V.settings.splice(r,1)})}),H.each(["column","row","cell"],function(e,s){r(s+"s().every()",function(r){var a,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(e,t,n){a=i[s](t,o),"cell"===s?r.call(a,a[0][0].row,a[0][0].column,n,l):r.call(a,t,n,l),l++})})}),r("i18n()",function(e,t,n){var r=this.context[0],e=U(e)(r.oLanguage);return"string"==typeof(e=H.isPlainObject(e=void 0===e?t:e)?void 0!==n&&void 0!==e[n]?e[n]:!1===n?e:e._:e)?e.replace("%d",n):e}),V.version="2.3.4",V.settings=[],V.models={},V.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},V.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},V.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,maxLenString:null,searchFixed:null},V.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,titleRow:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(e){try{return JSON.parse((-1===e.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+e.sInstance+"_"+location.pathname))}catch(e){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(e,t){try{(-1===e.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+e.sInstance+"_"+location.pathname,JSON.stringify(t))}catch(e){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous",number:""}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},lengthLabels:{"-1":"All"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},orderDescReverse:!0,oSearch:H.extend({},V.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null,iDeferLoading:null,on:null},Z(V.defaults),V.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},Z(V.defaults.column),V.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==J(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==J(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var e=this._iDisplayLength,t=this._iDisplayStart,n=t+e,r=this.aiDisplay.length,a=this.oFeatures,o=a.bPaginate;return a.bServerSide?!1===o||-1===e?t+r:Math.min(t+e,this._iRecordsDisplay):!o||r<n||-1===e?r:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null,deferLoading:null,typeDetect:!0,resizeObserver:null,containerWidth:-1,orderDescReverse:null,orderIndicators:!0,orderHandler:!0,titleRow:null};function At(t,n){return function(e){return _(e)||"string"!=typeof e||(e=e.replace(N," "),t&&(e=w(e)),n&&(e=k(e,!1))),e}}Ct=V.ext.pager;H.extend(Ct,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:qt,numbers_length:7}),H.extend(!0,V.ext.renderer,{pagingButton:{_:function(e,t,n,r,a){var e=e.oClasses.paging,o=[e.button];return r&&o.push(e.active),a&&o.push(e.disabled),{display:r="ellipsis"===t?H('<span class="ellipsis"></span>').html(n)[0]:H("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:r}}},pagingContainer:{_:function(e,t){return t}}});function Nt(e,t,n,r,a){return i?e[t](a):o?e[n](a):r?e[r](a):e}var o,i,Ft=!1;function Ot(e,t,n){var r;if(W.luxon&&!o&&(o=W.luxon),i=W.moment&&!i?W.moment:i){if(!(r=i.utc(e,t,n,!0)).isValid())return null}else if(o){if(!(r=t&&"string"==typeof e?o.DateTime.fromFormat(e,t):o.DateTime.fromISO(e)).isValid)return null;r=r.setLocale(n)}else t?(Ft||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),Ft=!0):r=new Date(e);return r}function jt(s){return function(r,a,o,i){0===arguments.length?(o="en",r=a=null):1===arguments.length?(o="en",a=r,r=null):2===arguments.length&&(o=a,a=r,r=null);var l="datetime"+(a?"-"+a:"");return V.ext.type.order[l+"-pre"]||V.type(l,{detect:function(e){return e===l&&l},order:{pre:function(e){return e.valueOf()}},className:"dt-right"}),function(e,t){var n;return null==e&&(e="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===t?l:""===e?"sort"!==t?"":Ot("0000-01-01 00:00:00",null,o):!(null===a||r!==a||"sort"===t||"type"===t||e instanceof Date)||null===(n=Ot(e,r,o))?e:"sort"===t?n:(e=null===a?Nt(n,"toDate","toJSDate","")[s](navigator.language,{timeZone:"UTC"}):Nt(n,"format","toFormat","toISOString",a),"display"===t?u(e):e)}}}var Rt=",",Pt=".";if(void 0!==W.Intl)try{for(var Et=(new Intl.NumberFormat).formatToParts(100000.1),l=0;l<Et.length;l++)"group"===Et[l].type?Rt=Et[l].value:"decimal"===Et[l].type&&(Pt=Et[l].value)}catch(e){}V.datetime=function(n,r){var a="datetime-"+n;r=r||"en",V.ext.type.order[a]||V.type(a,{detect:function(e){var t=Ot(e,n,r);return!(""!==e&&!t)&&a},order:{pre:function(e){return Ot(e,n,r)||0}},className:"dt-right"})},V.render={date:jt("toLocaleDateString"),datetime:jt("toLocaleString"),time:jt("toLocaleTimeString"),number:function(a,o,i,l,s){return null==a&&(a=Rt),null==o&&(o=Pt),{display:function(e){if("number"!=typeof e&&"string"!=typeof e)return e;if(""===e||null===e)return e;var t=e<0?"-":"",n=parseFloat(e),r=Math.abs(n);if(1e11<=r||r<1e-4&&0!==r)return(r=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+r[1]+"</sup>";if(isNaN(n))return u(e);n=n.toFixed(i),e=Math.abs(n);r=parseInt(e,10),n=i?o+(e-r).toFixed(i).substring(2):"";return(t=0===r&&0===parseFloat(n)?"":t)+(l||"")+r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};function kt(e,t){return e=null!=e?e.toString().toLowerCase():"",t=null!=t?t.toString().toLowerCase():"",e.localeCompare(t,navigator.languages[0]||navigator.language,{numeric:!0,ignorePunctuation:!0})}function Mt(e,t){return e=w(e),t=w(t),kt(e,t)}var s=V.ext.type,Ht=(V.type=function(n,e,t){if(!e)return{className:s.className[n],detect:s.detect.find(function(e){return e._name===n}),order:{pre:s.order[n+"-pre"],asc:s.order[n+"-asc"],desc:s.order[n+"-desc"]},render:s.render[n],search:s.search[n]};function r(e,t){s[e][n]=t}function a(e){Object.defineProperty(e,"_name",{value:n});var t=s.detect.findIndex(function(e){return e._name===n});-1===t?s.detect.unshift(e):s.detect.splice(t,1,e)}function o(e){s.order[n+"-pre"]=e.pre,s.order[n+"-asc"]=e.asc,s.order[n+"-desc"]=e.desc}void 0===t&&(t=e,e=null),"className"===e?r("className",t):"detect"===e?a(t):"order"===e?o(t):"render"===e?r("render",t):"search"===e?r("search",t):e||(t.className&&r("className",t.className),void 0!==t.detect&&a(t.detect),t.order&&o(t.order),void 0!==t.render&&r("render",t.render),void 0!==t.search&&r("search",t.search))},V.types=function(){return s.detect.map(function(e){return e._name})},V.type("string",{detect:function(){return"string"},order:{pre:function(e){return _(e)&&"boolean"!=typeof e?"":"string"==typeof e?e.toLowerCase():e.toString?e.toString():""}},search:At(!1,!0)}),V.type("string-utf8",{detect:{allOf:function(e){return!0},oneOf:function(e){return!_(e)&&navigator.languages&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:kt,desc:function(e,t){return-1*kt(e,t)}},search:At(!1,!0)}),V.type("html",{detect:{allOf:function(e){return _(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return!_(e)&&"string"==typeof e&&-1!==e.indexOf("<")}},order:{pre:function(e){return _(e)?"":e.replace?w(e).trim().toLowerCase():e+""}},search:At(!0,!0)}),V.type("html-utf8",{detect:{allOf:function(e){return _(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return navigator.languages&&!_(e)&&"string"==typeof e&&-1!==e.indexOf("<")&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Mt,desc:function(e,t){return-1*Mt(e,t)}},search:At(!0,!0)}),V.type("date",{className:"dt-type-date",detect:{allOf:function(e){var t;return!e||e instanceof Date||j.test(e)?null!==(t=Date.parse(e))&&!isNaN(t)||_(e):null},oneOf:function(e){return e instanceof Date||"string"==typeof e&&j.test(e)}},order:{pre:function(e){e=Date.parse(e);return isNaN(e)?-1/0:e}}}),V.type("html-num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,F,P)}},search:At(!0,!0)}),V.type("html-num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,F)}},search:At(!0,!0)}),V.type("num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,P)}}}),V.type("num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t)}}}),function(e,t,n,r){var a;return 0===e||e&&"-"!==e?"number"==(a=typeof e)||"bigint"==a?e:+(e=(e=t?E(e,t):e).replace&&(n&&(e=e.replace(n,"")),r)?e.replace(r,""):e):-1/0});function Wt(e,t,n){n&&(e[t]=n)}H.extend(!0,V.ext.renderer,{footer:{_:function(e,t,n){t.addClass(n.tfoot.cell)}},header:{_:function(g,m,v){m.addClass(v.thead.cell),g.oFeatures.bSort||m.addClass(v.order.none);var e=g.titleRow,t=m.closest("thead").find("tr"),n=m.parent().index();"disable"===m.attr("data-dt-order")||"disable"===m.parent().attr("data-dt-order")||!0===e&&0!==n||!1===e&&n!==t.length-1||"number"==typeof e&&n!==e||H(g.nTable).on("order.dt.DT column-visibility.dt.DT",function(e,t,n){if(g===t){var r=t.sortDetails;if(r){var a=b(r,"col");if("column-visibility"!==e.type||a.includes(n)){for(var e=v.order,n=t.api.columns(m),o=g.aoColumns[n.flatten()[0]],i=n.orderable().includes(!0),l="",s=n.indexes(),u=n.orderable(!0).flatten(),c=g.iTabIndex,d=t.orderHandler&&i,f=(m.removeClass(e.isAsc+" "+e.isDesc).toggleClass(e.none,!i).toggleClass(e.canAsc,d&&u.includes("asc")).toggleClass(e.canDesc,d&&u.includes("desc")),!0),h=0;h<s.length;h++)a.includes(s[h])||(f=!1);f&&(d=n.order(),m.addClass(d.includes("asc")?e.isAsc:""+d.includes("desc")?e.isDesc:""));var p=-1;for(h=0;h<a.length;h++)if(g.aoColumns[a[h]].bVisible){p=a[h];break}s[0]==p?(u=r[0],n=o.asSorting,m.attr("aria-sort","asc"===u.dir?"ascending":"descending"),l=n[u.index+1]?"Reverse":"Remove"):m.removeAttr("aria-sort"),i&&((d=m.find(".dt-column-order")).attr("role","button").attr("aria-label",i?o.ariaTitle+t.api.i18n("oAria.orderable"+l):o.ariaTitle),-1!==c)&&d.attr("tabindex",c)}}}})}},layout:{_:function(e,t,n){var r=e.oClasses.layout,a=H("<div/>").attr("id",n.id||null).addClass(n.className||r.row).appendTo(t);V.ext.renderer.layout._forLayoutRow(n,function(e,t){var n;"id"!==e&&"className"!==e&&(n="",t.table&&(a.addClass(r.tableRow),n+=r.tableCell+" "),n+="start"===e?r.start:"end"===e?r.end:r.full,H("<div/>").attr({id:t.id||null,class:t.className||r.cell+" "+n}).append(t.contents).appendTo(a))})},_forLayoutRow:function(t,n){function r(e){switch(e){case"":return 0;case"start":return 1;case"end":return 2;default:return 3}}Object.keys(t).sort(function(e,t){return r(e)-r(t)}).forEach(function(e){n(e,t[e])})}}}),V.feature={},V.feature.register=function(e,t,n){V.ext.features[e]=t,n&&T.feature.push({cFeature:n,fnInit:t})},V.feature.register("div",function(e,t){var n=H("<div>")[0];return t&&(Wt(n,"className",t.className),Wt(n,"id",t.id),Wt(n,"innerHTML",t.html),Wt(n,"textContent",t.text)),n}),V.feature.register("info",function(e,s){var t,n,u;return e.oFeatures.bInfo?(t=e.oLanguage,n=e.sTableId,u=H("<div/>",{class:e.oClasses.info.container}),s=H.extend({callback:t.fnInfoCallback,empty:t.sInfoEmpty,postfix:t.sInfoPostFix,search:t.sInfoFiltered,text:t.sInfo},s),e.aoDrawCallback.push(function(e){var t=s,n=u,r=e._iDisplayStart+1,a=e.fnDisplayEnd(),o=e.fnRecordsTotal(),i=e.fnRecordsDisplay(),l=i?t.text:t.empty;i!==o&&(l+=" "+t.search),l+=t.postfix,l=ot(e,l),t.callback&&(l=t.callback.call(e.oInstance,e,r,a,o,i,l)),n.html(l),G(e,null,"info",[e,n[0],l])}),e._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),H(e.nTable).attr("aria-describedby",n+"_info"),e._infoEl=u),u):null},"i");var Xt=0;function Vt(e){var t=[];return e.numbers&&t.push("numbers"),e.previousNext&&(t.unshift("previous"),t.push("next")),e.firstLast&&(t.unshift("first"),t.push("last")),t}function Bt(e,t,n,r){var a=e.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(t){case"ellipsis":o.display="&#x2026;";break;case"first":o.display=a.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=a.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=a.sNext,0!==r&&n!==r-1||(o.disabled=!0);break;case"last":o.display=a.sLast,0!==r&&n!==r-1||(o.disabled=!0);break;default:"number"==typeof t&&(o.display=e.fnFormatNumber(t+1),n===t)&&(o.active=!0)}return o}function qt(e,t,n,r){var a=[],o=Math.floor(n/2),i=r?2:1,l=r?1:0;return t<=n?a=h(0,t):1===n?a=[e]:3===n?e<=1?a=[0,1,"ellipsis"]:t-2<=e?(a=h(t-2,t)).unshift("ellipsis"):a=["ellipsis",e,"ellipsis"]:e<=o?((a=h(0,n-i)).push("ellipsis"),r&&a.push(t-1)):t-1-o<=e?((a=h(t-(n-i),t)).unshift("ellipsis"),r&&a.unshift(0)):((a=h(e-o+i,e+o-l)).push("ellipsis"),a.unshift("ellipsis"),r&&(a.push(t-1),a.unshift(0))),a}V.feature.register("search",function(n,r){var e,t,a,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(e=n.oClasses.search,t=n.sTableId,c=n.oLanguage,a=n.oPreviousSearch,o='<input type="search" class="'+e.input+'"/>',-1===(r=H.extend({placeholder:c.sSearchPlaceholder,processing:!1,text:c.sSearch},r)).text.indexOf("_INPUT_")&&(r.text+="_INPUT_"),r.text=ot(n,r.text),c=r.text.match(/_INPUT_$/),s=r.text.match(/^_INPUT_/),i=r.text.replace(/_INPUT_/,""),l="<label>"+r.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=H("<div>").addClass(e.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Xt),s.find("input").attr("id","dt-search-"+Xt),Xt++,u=function(e){var t=this.value;a.return&&"Enter"!==e.key||t!=a.search&&Be(n,r.processing,function(){a.search=t,Re(n,a),n._iDisplayStart=0,x(n)})},c=null!==n.searchDelay?n.searchDelay:0,d=H("input",s).val(a.search).attr("placeholder",r.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?V.util.debounce(u,c):u).on("mouseup.DT",function(e){setTimeout(function(){u.call(d[0],e)},10)}).on("keypress.DT",function(e){if(13==e.keyCode)return!1}).attr("aria-controls",t),H(n.nTable).on("search.dt.DT",function(e,t){n===t&&d[0]!==S.activeElement&&d.val("function"!=typeof a.search?a.search:"")}),s):null},"f"),V.feature.register("paging",function(e,t){if(!e.oFeatures.bPaginate)return null;t=H.extend({buttons:V.ext.pager.numbers_length,type:e.sPaginationType,boundaryNumbers:!0,firstLast:!0,previousNext:!0,numbers:!0},t);function n(){!function e(t,n,r){if(!t._bInitComplete)return;var a=r.type?V.ext.pager[r.type]:Vt,o=t.oLanguage.oAria.paginate||{},i=t._iDisplayStart,l=t._iDisplayLength,s=t.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=[],h=[],i=a(r).map(function(e){return"numbers"===e?qt(c,d,r.buttons,r.boundaryNumbers):e});f=f.concat.apply(f,i);for(var p=0;p<f.length;p++){var g=f[p],m=Bt(t,g,c,d),v=at(t,"pagingButton")(t,g,m.display,m.active,m.disabled),b="string"==typeof g?o[g]:o.number?o.number+(g+1):null;H(v.clicker).attr({"aria-controls":t.sTableId,"aria-disabled":m.disabled?"true":null,"aria-current":m.active?"page":null,"aria-label":b,"data-dt-idx":g,tabIndex:m.disabled?-1:t.iTabIndex&&"span"!==v.clicker[0].nodeName.toLowerCase()?t.iTabIndex:null}),"number"!=typeof g&&H(v.clicker).addClass(g),nt(v.clicker,{action:g},function(e){e.preventDefault(),Ve(t,e.data.action,!0)}),h.push(v.display)}u=at(t,"pagingContainer")(t,h);s=n.find(S.activeElement).data("dt-idx");n.empty().append(u);void 0!==s&&n.find("[data-dt-idx="+s+"]").trigger("focus");h.length&&(l=H(h[0]).outerHeight(),1<r.buttons)&&0<l&&H(n).height()>=2*l-10&&e(t,n,H.extend({},r,{buttons:r.buttons-2}))}(e,r.children(),t)}var r=H("<div/>").addClass(e.oClasses.paging.container+(t.type?" paging_"+t.type:"")).append(H("<nav>").attr("aria-label","pagination").addClass(e.oClasses.paging.nav));return e.aoDrawCallback.push(n),H(e.nTable).on("column-sizing.dt.DT",n),r},"p");var Ut=0;return V.feature.register("pageLength",function(r,e){var t=r.oFeatures;if(!t.bPaginate||!t.bLengthChange)return null;e=H.extend({menu:r.aLengthMenu,text:r.oLanguage.sLengthMenu},e);var t=r.oClasses.length,n=r.sTableId,a=e.menu,o=[],i=[];if(Array.isArray(a[0]))o=a[0],i=a[1];else for(p=0;p<a.length;p++)H.isPlainObject(a[p])?(o.push(a[p].value),i.push(a[p].label)):(o.push(a[p]),i.push(a[p]));for(var l=e.text.match(/_MENU_$/),s=e.text.match(/^_MENU_/),u=e.text.replace(/_MENU_/,""),e="<label>"+e.text+"</label>",s=(s?e="_MENU_<label>"+u+"</label>":l&&(e="<label>"+u+"</label>_MENU_"),"tmp-"+ +new Date),c=H("<div/>").addClass(t.container).append(e.replace("_MENU_",'<span id="'+s+'"></span>')),d=[],f=(Array.prototype.slice.call(c.find("label")[0].childNodes).forEach(function(e){e.nodeType===Node.TEXT_NODE&&d.push({el:e,text:e.textContent})}),function(t){d.forEach(function(e){e.el.textContent=ot(r,e.text,t)})}),h=H("<select/>",{"aria-controls":n,class:t.select}),p=0;p<o.length;p++){var g=r.api.i18n("lengthLabels."+o[p],null);null===g&&(g="number"==typeof i[p]?r.fnFormatNumber(i[p]):i[p]),h[0][p]=new Option(g,o[p])}return c.find("label").attr("for","dt-length-"+Ut),h.attr("id","dt-length-"+Ut),Ut++,c.find("#"+s).replaceWith(h),H("select",c).val(r._iDisplayLength).on("change.DT",function(){Xe(r,H(this).val()),x(r)}),H(r.nTable).on("length.dt.DT",function(e,t,n){r===t&&(H("select",c).val(n),f(n))}),f(r._iDisplayLength),c},"l"),((H.fn.dataTable=V).$=H).fn.dataTableSettings=V.settings,H.fn.dataTableExt=V.ext,H.fn.DataTable=function(e){return H(this).dataTable(e).api()},H.each(V,function(e,t){H.fn.DataTable[e]=t}),V});
41
(n=>{var r;"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e,window,document)}):"object"==typeof exports?(r=require("jquery"),"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||r(e),n(t,e,e.document)}:module.exports=n(r,window,window.document)):window.DataTable=n(jQuery,window,document)})(function(H,W,_){function f(e){var t=parseInt(e,10);return!isNaN(t)&&isFinite(e)?t:null}function c(e,t,n,r){var a=typeof e,o="string"==a;return"number"==a||"bigint"==a||!(!r||!T(e))||(t&&o&&(e=k(e,t)),n&&o&&(e=e.replace(E,"")),!isNaN(parseFloat(e))&&isFinite(e))}function n(e,t,n,r){var a;return!(!r||!T(e))||("string"!=typeof e||!e.match(/<(input|select)/i))&&(T(a=e)||"string"==typeof a)&&!!c(I(e),t,n,r)||null}function v(e,t,n,r){var a=[],o=0,i=t.length;if(void 0!==r)for(;o<i;o++)e[t[o]]&&e[t[o]][n]&&a.push(e[t[o]][n][r]);else for(;o<i;o++)e[t[o]]&&a.push(e[t[o]][n]);return a}function h(e,t){var n,r=[];void 0===t?(t=0,n=e):(n=t,t=e);for(var a=t;a<n;a++)r.push(a);return r}function L(e){for(var t=[],n=0,r=e.length;n<r;n++)e[n]&&t.push(e[n]);return t}function d(e){if(!(e.length<2))for(var t=e.slice().sort(),n=t[0],r=1,a=t.length;r<a;r++){if(t[r]===n)return;n=t[r]}return 1}var C,X,r,e,V=function(e,P){var E,k,M;return V.factory(e,P)?V:this instanceof V?H(e).DataTable(P):(k=void 0===(P=e),M=(E=this).length,k&&(P={}),this.api=function(){return new X(this)},this.each(function(){var t=1<M?nt({},P,!0):P,e=0,n=this.getAttribute("id"),r=V.defaults,a=H(this);if("table"!=this.nodeName.toLowerCase())z(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{t.on&&t.on.options&&st(a,"options",t.on.options),a.trigger("options.dt",t),K(r),ee(r.column),B(r,r,!0),B(r.column,r.column,!0),B(r,H.extend(t,ut(a.data())),!0);var o=V.settings;for(e=0,j=o.length;e<j;e++){var i=o[e];if(i.nTable==this||i.nTHead&&i.nTHead.parentNode==this||i.nTFoot&&i.nTFoot.parentNode==this){var l=(void 0!==t.bRetrieve?t:r).bRetrieve,s=(void 0!==t.bDestroy?t:r).bDestroy;if(k||l)return i.oInstance;if(s){new V.Api(i).destroy();break}return void z(i,0,"Cannot reinitialise DataTable",3)}if(i.sTableId==this.id){o.splice(e,1);break}}null!==n&&""!==n||(n="DataTables_Table_"+V.ext._unique++,this.id=n),a.children("colgroup").remove();var u,c=H.extend(!0,{},V.models.oSettings,{sDestroyWidth:a[0].style.width,sInstance:n,sTableId:n,colgroup:H("<colgroup>"),fastData:function(e,t,n){return q(c,e,t,n)}}),n=(c.nTable=this,c.oInit=t,o.push(c),c.api=new X(c),c.oInstance=1===E.length?E:a.dataTable(),K(t),t.aLengthMenu&&!t.iDisplayLength&&(t.iDisplayLength=Array.isArray(t.aLengthMenu[0])?t.aLengthMenu[0][0]:H.isPlainObject(t.aLengthMenu[0])?t.aLengthMenu[0].value:t.aLengthMenu[0]),t=nt(H.extend(!0,{},r),t),$(c.oFeatures,t,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),$(c,t,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout","orderDescReverse","orderIndicators","orderHandler","titleRow","typeDetect","columnTitleTag",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),$(c.oScroll,t,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),$(c.oLanguage,t,"fnInfoCallback"),Y(c,"aoDrawCallback",t.fnDrawCallback),Y(c,"aoStateSaveParams",t.fnStateSaveParams),Y(c,"aoStateLoadParams",t.fnStateLoadParams),Y(c,"aoStateLoaded",t.fnStateLoaded),Y(c,"aoRowCallback",t.fnRowCallback),Y(c,"aoRowCreatedCallback",t.fnCreatedRow),Y(c,"aoHeaderCallback",t.fnHeaderCallback),Y(c,"aoFooterCallback",t.fnFooterCallback),Y(c,"aoInitComplete",t.fnInitComplete),Y(c,"aoPreDrawCallback",t.fnPreDrawCallback),c.rowIdFn=U(t.rowId),t.on&&Object.keys(t.on).forEach(function(e){st(a,e,t.on[e])}),c),d=(V.__browser||(f={},V.__browser=f,p=H("<div/>").css({position:"fixed",top:0,left:-1*W.pageXOffset,height:1,width:1,overflow:"hidden"}).append(H("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(H("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=p.children(),u=d.children(),f.barWidth=d[0].offsetWidth-d[0].clientWidth,f.bScrollbarLeft=1!==Math.round(u.offset().left),p.remove()),H.extend(n.oBrowser,V.__browser),n.oScroll.iBarWidth=V.__browser.barWidth,c.oClasses),f=(H.extend(d,V.ext.classes,t.oClasses),a.addClass(d.table),c.oFeatures.bPaginate||(t.iDisplayStart=0),void 0===c.iInitDisplayStart&&(c.iInitDisplayStart=t.iDisplayStart,c._iDisplayStart=t.iDisplayStart),t.iDeferLoading),h=(null!==f&&(c.deferLoading=!0,u=Array.isArray(f),c._iRecordsDisplay=u?f[0]:f,c._iRecordsTotal=u?f[1]:f),[]),p=this.getElementsByTagName("thead"),n=Fe(c,p[0]);if(t.aoColumns)h=t.aoColumns;else if(n.length)for(j=n[e=0].length;e<j;e++)h.push(null);for(e=0,j=h.length;e<j;e++)te(c);var g,m,v,b,y,D,x,S=c,w=t.aoColumnDefs,T=h,_=n,C=function(e,t){ne(c,e,t)},I=S.aoColumns;if(T)for(g=0,m=T.length;g<m;g++)T[g]&&T[g].name&&(I[g].sName=T[g].name);if(w)for(g=w.length-1;0<=g;g--){var A=void 0!==(x=w[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(A)||(A=[A]),v=0,b=A.length;v<b;v++){var L=A[v];if("number"==typeof L&&0<=L){for(;I.length<=L;)te(S);C(L,x)}else if("number"==typeof L&&L<0)C(I.length+L,x);else if("string"==typeof L)for(y=0,D=I.length;y<D;y++)"_all"===L?C(y,x):-1!==L.indexOf(":name")?I[y].sName===L.replace(":name","")&&C(y,x):_.forEach(function(e){e[y]&&(e=H(e[y].cell),L.match(/^[a-z][\w-]*$/i)&&(L="."+L),e.is(L))&&C(y,x)})}}if(T)for(g=0,m=T.length;g<m;g++)C(g,T[g]);var N,n=a.children("tbody").find("tr:first-child").eq(0),F=(n.length&&(N=function(e,t){return null!==e.getAttribute("data-"+t)?t:null},H(n[0]).children("th, td").each(function(e,t){var n,r=c.aoColumns[e];r||z(c,0,"Incorrect column count",18),r.mData===e&&(n=N(t,"sort")||N(t,"order"),t=N(t,"filter")||N(t,"search"),null===n&&null===t||(r.mData={_:e+".display",sort:null!==n?e+".@data-"+n:void 0,type:null!==n?e+".@data-"+n:void 0,filter:null!==t?e+".@data-"+t:void 0},r._isArrayHost=!0,ne(c,e)))})),Y(c,"aoDrawCallback",et),c.oFeatures);if(t.bStateSave&&(F.bStateSave=!0),void 0===t.aaSorting)for(var O=c.aaSorting,e=0,j=O.length;e<j;e++)O[e][1]=c.aoColumns[e].asSorting[0];Ke(c),Y(c,"aoDrawCallback",function(){(c.bSorted||"ssp"===J(c)||F.bDeferRender)&&Ke(c)});var n=a.children("caption"),n=(c.caption&&(n=0===n.length?H("<caption/>").prependTo(a):n).html(c.caption),n.length&&(n[0]._captionSide=n.css("caption-side"),c.captionNode=n[0]),n.length?c.colgroup.insertAfter(n):c.colgroup.prependTo(c.nTable),0===p.length&&(p=H("<thead/>").appendTo(a)),c.nTHead=p[0],a.children("tbody")),n=(0===n.length&&(n=H("<tbody/>").insertAfter(p)),c.nTBody=n[0],a.children("tfoot")),R=(0===n.length&&(n=H("<tfoot/>").appendTo(a)),c.nTFoot=n[0],c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,R,t.oLanguage),R.sUrl?H.ajax({dataType:"json",url:R.sUrl,success:function(e){B(r.oLanguage,e),H.extend(!0,R,e,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),We(c)},error:function(){z(c,0,"i18n file loading error",21),We(c)}}):(G(c,null,"i18n",[c],!0),We(c))}}),E=null,this)},N=(V.ext=C={builder:"dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1",buttons:{},ccContent:{},classes:{},errMode:"alert",escape:{attributes:!1},feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oStdClasses:C.classes,oPagination:C.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),F=/[\r\n\u2028]/g,O=/<([^>]*>)/g,j=Math.pow(2,28),R=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,P=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),E=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,T=function(e){return!e||!0===e||"-"===e},k=function(e,t){return N[t]||(N[t]=new RegExp(ke(t),"g")),"string"==typeof e&&"."!==t?e.replace(/\./g,"").replace(N[t],"."):e},b=function(e,t,n){var r=[],a=0,o=e.length;if(void 0!==n)for(;a<o;a++)e[a]&&e[a][t]&&r.push(e[a][t][n]);else for(;a<o;a++)e[a]&&r.push(e[a][t]);return r},I=function(e,t){if(!e||"string"!=typeof e)return e;if(e.length>j)throw new Error("Exceeded max str len");var n;for(e=e.replace(O,t||"");(e=(n=e).replace(/<script/i,""))!==n;);return n},u=function(e){return"string"==typeof(e=Array.isArray(e)?e.join(","):e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):e},M=function(e,t){var n;return"string"!=typeof e?e:(n=e.normalize?e.normalize("NFD"):e).length!==e.length?(!0===t?e+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},w=function(e){if(Array.from&&Set)return Array.from(new Set(e));if(d(e))return e.slice();var t,n,r,a=[],o=e.length,i=0;e:for(n=0;n<o;n++){for(t=e[n],r=0;r<i;r++)if(a[r]===t)continue e;a.push(t),i++}return a},Z=function(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)Z(e,t[n]);else e.push(t);return e};function y(t,e){e&&e.split(" ").forEach(function(e){e&&t.classList.add(e)})}function Q(t){var n,r,a={};H.each(t,function(e){(n=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(r=e.replace(n[0],n[2].toLowerCase()),a[r]=e,"o"===n[1])&&Q(t[e])}),t._hungarianMap=a}function B(t,n,r){var a;t._hungarianMap||Q(t),H.each(n,function(e){void 0===(a=t._hungarianMap[e])||!r&&void 0!==n[a]||("o"===a.charAt(0)?(n[a]||(n[a]={}),H.extend(!0,n[a],n[e]),B(t[a],n[a],r)):n[a]=n[e])})}V.util={diacritics:function(e,t){if("function"!=typeof e)return M(e,t);M=e},debounce:function(n,r){var a;return function(){var e=this,t=arguments;clearTimeout(a),a=setTimeout(function(){n.apply(e,t)},r||250)}},throttle:function(r,e){var a,o,i=void 0!==e?e:200;return function(){var e=this,t=+new Date,n=arguments;a&&t<a+i?(clearTimeout(o),o=setTimeout(function(){a=void 0,r.apply(e,n)},i)):(a=t,r.apply(e,n))}},escapeRegex:function(e){return e.replace(P,"\\$1")},set:function(r){var f;return H.isPlainObject(r)?V.util.set(r._):null===r?function(){}:"function"==typeof r?function(e,t,n){r(e,"set",t,n)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(e,t){e[r]=t}:(f=function(e,t,n){for(var r,a,o,i,l=me(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(r=l[s].match(ge),a=l[s].match(p),r){if(l[s]=l[s].replace(ge,""),e[l[s]]=[],(r=l.slice()).splice(0,s+1),i=r.join("."),Array.isArray(t))for(var c=0,d=t.length;c<d;c++)f(o={},t[c],i),e[l[s]].push(o);else e[l[s]]=t;return}a&&(l[s]=l[s].replace(p,""),e=e[l[s]](t)),null==e[l[s]]&&(e[l[s]]={}),e=e[l[s]]}n.match(p)?e[n.replace(p,"")](t):e[n.replace(ge,"")]=t},function(e,t){return f(e,t,r)})},get:function(a){var o,f;return H.isPlainObject(a)?(o={},H.each(a,function(e,t){t&&(o[e]=V.util.get(t))}),function(e,t,n,r){var a=o[t]||o._;return void 0!==a?a(e,t,n,r):e}):null===a?function(e){return e}:"function"==typeof a?function(e,t,n,r){return a(e,t,n,r)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(e){return e[a]}:(f=function(e,t,n){var r,a,o;if(""!==n)for(var i=me(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(ge),r=i[l].match(p),d){if(i[l]=i[l].replace(ge,""),""!==i[l]&&(e=e[i[l]]),a=[],i.splice(0,l+1),o=i.join("."),Array.isArray(e))for(var u=0,c=e.length;u<c;u++)a.push(f(e[u],t,o));var d=d[0].substring(1,d[0].length-1);e=""===d?a:a.join(d);break}if(r)i[l]=i[l].replace(p,""),e=e[i[l]]();else{if(null===e||null===e[i[l]])return null;if(void 0===e||void 0===e[i[l]])return;e=e[i[l]]}}return e},function(e,t){return f(e,t,a)})},stripHtml:function(e,t){var n=typeof e;if("function"!=n)return"string"==n?I(e,t):e;I=e},escapeHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t||Array.isArray(e)?u(e):e;u=e},unique:w};var a=function(e,t,n){void 0!==e[t]&&(e[n]=e[t])};function K(e){a(e,"ordering","bSort"),a(e,"orderMulti","bSortMulti"),a(e,"orderClasses","bSortClasses"),a(e,"orderCellsTop","bSortCellsTop"),a(e,"order","aaSorting"),a(e,"orderFixed","aaSortingFixed"),a(e,"paging","bPaginate"),a(e,"pagingType","sPaginationType"),a(e,"pageLength","iDisplayLength"),a(e,"searching","bFilter"),"boolean"==typeof e.sScrollX&&(e.sScrollX=e.sScrollX?"100%":""),"boolean"==typeof e.scrollX&&(e.scrollX=e.scrollX?"100%":""),"object"==typeof e.bSort?(e.orderIndicators=void 0===e.bSort.indicators||e.bSort.indicators,e.orderHandler=void 0===e.bSort.handler||e.bSort.handler,e.bSort=!0):!1===e.bSort?(e.orderIndicators=!1,e.orderHandler=!1):!0===e.bSort&&(e.orderIndicators=!0,e.orderHandler=!0),"boolean"==typeof e.bSortCellsTop&&(e.titleRow=e.bSortCellsTop);var t=e.aoSearchCols;if(t)for(var n=0,r=t.length;n<r;n++)t[n]&&B(V.models.oSearch,t[n]);e.serverSide&&!e.searchDelay&&(e.searchDelay=400)}function ee(e){a(e,"orderable","bSortable"),a(e,"orderData","aDataSort"),a(e,"orderSequence","asSorting"),a(e,"orderDataType","sortDataType");var t=e.aDataSort;"number"!=typeof t||Array.isArray(t)||(e.aDataSort=[t])}function te(e){var t=V.defaults.column,n=e.aoColumns.length,t=H.extend({},V.models.oColumn,t,{aDataSort:t.aDataSort||[n],mData:t.mData||n,idx:n,searchFixed:{},colEl:H("<col>").attr("data-dt-column",n)}),t=(e.aoColumns.push(t),e.aoPreSearchCols);t[n]=H.extend({},V.models.oSearch,t[n])}function ne(e,t,n){function r(e){return"string"==typeof e&&-1!==e.indexOf("@")}var a=e.aoColumns[t],o=(null!=n&&(ee(n),B(V.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(a._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),t=a.sClass,H.extend(a,n),$(a,n,"sWidth","sWidthOrig"),t!==a.sClass&&(a.sClass=t+" "+a.sClass),void 0!==n.iDataSort&&(a.aDataSort=[n.iDataSort]),$(a,n,"aDataSort")),a.mData),i=U(o);a.mRender&&Array.isArray(a.mRender)&&(n=(t=a.mRender.slice()).shift(),a.mRender=V.render[n].apply(W,t)),a._render=a.mRender?U(a.mRender):null;a._bAttrSrc=H.isPlainObject(o)&&(r(o.sort)||r(o.type)||r(o.filter)),a._setter=null,a.fnGetData=function(e,t,n){var r=i(e,t,void 0,n);return a._render&&t?a._render(r,t,e,n):r},a.fnSetData=function(e,t,n){return m(o)(e,t,n)},"number"==typeof o||a._isArrayHost||(e._rowReadObject=!0),e.oFeatures.bSort||(a.bSortable=!1)}function re(e){(t=>{if(t.oFeatures.bAutoWidth){var e,n,r,a=t.nTable,o=t.aoColumns,i=t.oScroll,l=i.sY,s=i.sX,i=i.sXInner,u=le(t,"bVisible"),c=a.getAttribute("width"),d=a.parentNode,f=a.style.width,h=$e(t);if(h===t.containerWidth)return;t.containerWidth=h,f||c||(a.style.width="100%",f="100%"),f&&-1!==f.indexOf("%")&&(c=f),G(t,null,"column-calc",{visible:u},!1);var p=H(a.cloneNode()).css("visibility","hidden").css("margin",0).removeAttr("id"),g=(p.append("<tbody/>"),p.append(H(t.nTHead).clone()).append(H(t.nTFoot).clone()),p.find("tfoot th, tfoot td").css("width",""),p.find("thead th, thead td").each(function(){var e=de(t,this,!0,!1);e?(this.style.width=e,s&&(this.style.minWidth=e,H(this).append(H("<div/>").css({width:e,margin:0,padding:0,border:0,height:1})))):this.style.width=""}),[]);for(e=0;e<u.length;e++)g.push(((e,t)=>{var n=e.aoColumns[t];if(!n.wideStrings){for(var r=[],a=[],o=0,i=e.aiDisplayMaster.length;o<i;o++){var l=e.aiDisplayMaster[o],l=xe(e,l)[t],l=l&&"object"==typeof l&&l.nodeType?l.innerHTML:l+"",s=(l=(l=l.replace(/id=".*?"/g,"").replace(/name=".*?"/g,"")).replace(/<script.*?<\/script>/gi," "),I(l," ").replace(/&nbsp;/g," "));a.push({str:l,len:s.length}),r.push(s)}a.sort(function(e,t){return t.len-e.len}).splice(3),n.wideStrings=a.map(function(e){return e.str});var u=r.join(" ").split(" ");u.sort(function(e,t){return t.length-e.length}),u.length&&n.wideStrings.push(u[0]),1<u.length&&n.wideStrings.push(u[1]),2<u.length&&n.wideStrings.push(u[3])}return n.wideStrings})(t,u[e]));if(g.length)for(e=0;e<g[0].length;e++){var m=H("<tr/>").appendTo(p.find("tbody"));for(n=0;n<u.length;n++){r=u[n],r=o[r];var v=g[n][e]||"",b=C.type.className[r.sType],y=v+(r.sContentPadding||(s?"-":"")),v=-1===v.indexOf("<")&&-1===v.indexOf("&")?_.createTextNode(y):y;H("<td/>").addClass(b).addClass(r.sClass).append(v).appendTo(m)}}H("[name]",p).removeAttr("name");var D,x,h=H("<div/>").css(s||l?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(p).appendTo(d),S=(s&&i?p.width(i):s?(p.css("width","auto"),p.removeAttr("width"),p.outerWidth()<d.clientWidth&&c&&p.outerWidth(d.clientWidth)):l?p.outerWidth(d.clientWidth):c&&p.outerWidth(c),0),w=p.find("tbody tr").eq(0).children();for(e=0;e<u.length;e++){var T=w[e].getBoundingClientRect().width;S+=T,o[u[e]].sWidth=A(T)}a.style.width=A(S),h.remove(),c&&(a.style.width=A(c)),!c&&!s||t._reszEvt||(D=V.util.throttle(function(){var e=$e(t);t.bDestroying||0===e||re(t)}),W.ResizeObserver?(x=H(t.nTableWrapper).is(":visible"),f=H("<div>").css({width:"100%",height:0}).addClass("dt-autosize").appendTo(t.nTableWrapper),t.resizeObserver=new ResizeObserver(function(e){x?x=!1:D()}),t.resizeObserver.observe(f[0])):H(W).on("resize.DT-"+t.sInstance,D),t._reszEvt=!0)}})(e);for(var t=e,n=t.aoColumns,r=0;r<n.length;r++){var a=de(t,[r],!1,!1);n[r].colEl.css("width",a),t.oScroll.sX&&n[r].colEl.css("min-width",a)}var o=e.oScroll;""===o.sY&&""===o.sX||ze(e),G(e,null,"column-sizing",[e])}function ae(e,t){e=le(e,"bVisible");return"number"==typeof e[t]?e[t]:null}function oe(e,t){e=le(e,"bVisible").indexOf(t);return-1!==e?e:null}function ie(e){var t=e.aoHeader,n=e.aoColumns,r=0;if(t.length)for(var a=0,o=t[0].length;a<o;a++)n[a].bVisible&&"none"!==H(t[0][a].cell).css("display")&&r++;return r}function le(e,n){var r=[];return e.aoColumns.map(function(e,t){e[n]&&r.push(t)}),r}function se(e,t){return!0===t?e._name:t}function ue(e){for(var t,n,r,a,o,i,l=e.aoColumns,s=e.aoData,u=V.ext.type.detect,c=0,d=l.length;c<d;c++){if(i=[],!(o=l[c]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){if(!e.typeDetect)return;for(t=0,n=u.length;t<n;t++){var f=u[t],h=f.oneOf,p=f.allOf||f,g=f.init,m=!1,v=null;if(g&&(v=se(f,g(e,o,c)))){o.sType=v;break}for(r=0,a=s.length;r<a;r++)if(s[r]){if(void 0===i[r]&&(i[r]=q(e,r,c,"type")),h&&!m&&(m=se(f,h(i[r],e))),!(v=se(f,p(i[r],e)))&&t!==u.length-3)break;if("html"===v&&!T(i[r]))break}if(h&&m&&v||!h&&v){o.sType=v;break}}o.sType||(o.sType="string")}var b=C.type.className[o.sType],b=(b&&(ce(e.aoHeader,c,b),ce(e.aoFooter,c,b)),C.type.render[o.sType]);if(b&&!o._render){o._render=V.util.get(b),y=w=S=x=D=void 0;for(var y,D=e,x=c,S=D.aoData,w=0;w<S.length;w++)S[w].nTr&&(y=q(D,w,x,"display"),S[w].displayData[x]=y,pe(S[w].anCells[x],y))}}}function ce(e,t,n){e.forEach(function(e){e[t]&&e[t].unique&&y(e[t].cell,n)})}function de(e,t,n,r){Array.isArray(t)||(t=fe(t));for(var a,o=0,i=e.aoColumns,l=0,s=t.length;l<s;l++){var u=i[t[l]],c=n?u.sWidthOrig:u.sWidth;if(r||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(a="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],a=3===u.length?u[2]:"px")}}return o+a}function fe(e){e=H(e).closest("[data-dt-column]").attr("data-dt-column");return e?e.split(",").map(function(e){return+e}):[]}function D(e,t,n,r){for(var a=e.aoData.length,o=H.extend(!0,{},V.models.oRow,{src:n?"dom":"data",idx:a}),i=(o._aData=t,e.aoData.push(o),e.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;e.aiDisplayMaster.push(a);t=e.rowIdFn(t);return void 0!==t&&(e.aIds[t]=o),!n&&e.oFeatures.bDeferRender||Se(e,a,n,r),a}function he(n,e){var r;return(e=e instanceof H?e:H(e)).map(function(e,t){return r=De(n,t),D(n,r.data,t,r.cells)})}function q(e,t,n,r){"search"===r?r="filter":"order"===r&&(r="sort");var a=e.aoData[t];if(a){var o=e.iDraw,i=e.aoColumns[n],a=a._aData,l=i.sDefaultContent,s=i.fnGetData(a,r,{settings:e,row:t,col:n});if(void 0===(s="display"!==r&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return e.iDrawError!=o&&null===l&&(z(e,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+t+", column "+n,4),e.iDrawError=o),l;if(s!==a&&null!==s||null===l||void 0===r){if("function"==typeof s)return s.call(a)}else s=l;return null===s&&"display"===r?"":s="filter"===r&&(t=V.ext.type.search)[i.sType]?t[i.sType](s):s}}function pe(e,t){t&&"object"==typeof t&&t.nodeName?H(e).empty().append(t):e.innerHTML=t}var ge=/\[.*?\]$/,p=/\(\)$/;function me(e){return(e.match(/(\\.|[^.])+/g)||[""]).map(function(e){return e.replace(/\\\./g,".")})}var U=V.util.get,m=V.util.set;function ve(e){return b(e.aoData,"_aData")}function be(e){e.aoData.length=0,e.aiDisplayMaster.length=0,e.aiDisplay.length=0,e.aIds={}}function ye(e,t,n,r){var a,o,i=e.aoData[t];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=xe(e,t);if(l)if(void 0!==r)pe(l[r],s[r]);else for(a=0,o=l.length;a<o;a++)pe(l[a],s[a])}else i._aData=De(e,i,r,void 0===r?void 0:i._aData).data;var u=e.aoColumns;if(void 0!==r)u[r].sType=null,u[r].wideStrings=null;else{for(a=0,o=u.length;a<o;a++)u[a].sType=null,u[a].wideStrings=null;we(e,i)}}function De(e,t,n,r){function a(e,t){var n;"string"==typeof e&&-1!==(n=e.indexOf("@"))&&(n=e.substring(n+1),m(e)(r,t.getAttribute(n)))}function o(e){void 0!==n&&n!==d||(l=f[d],s=e.innerHTML.trim(),l&&l._bAttrSrc?(m(l.mData._)(r,s),a(l.mData.sort,e),a(l.mData.type,e),a(l.mData.filter,e)):h?(l._setter||(l._setter=m(l.mData)),l._setter(r,s)):r[d]=s),d++}var i,l,s,u=[],c=t.firstChild,d=0,f=e.aoColumns,h=e._rowReadObject;r=void 0!==r?r:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=t.anCells).length;p<g;p++)o(u[p]);var t=t.firstChild?t:t.nTr;return t&&(t=t.getAttribute("id"))&&m(e.rowId)(r,t),{data:r,cells:u}}function xe(e,t){var n=e.aoData[t],r=e.aoColumns;if(!n.displayData){n.displayData=[];for(var a=0,o=r.length;a<o;a++)n.displayData.push(q(e,t,a,"display"))}return n.displayData}function Se(e,t,n,r){var a,o,i,l,s,u,c=e.aoData[t],d=c._aData,f=[],h=e.oClasses.tbody.row;if(null===c.nTr){for(a=n||_.createElement("tr"),c.nTr=a,c.anCells=f,y(a,h),a._DT_RowIndex=t,we(e,c),l=0,s=e.aoColumns.length;l<s;l++){i=e.aoColumns[l],(o=(u=!n||!r[l])?_.createElement(i.sCellType):r[l])||z(e,0,"Incorrect column count",18),o._DT_CellIndex={row:t,column:l},f.push(o);var p=xe(e,t);!u&&(!i.mRender&&i.mData===l||H.isPlainObject(i.mData)&&i.mData._===l+".display")||pe(o,p[l]),y(o,i.sClass),i.bVisible&&u?a.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(e.oInstance,o,q(e,t,l),d,t,l)}G(e,"aoRowCreatedCallback","row-created",[a,d,t,f])}else y(c.nTr,h)}function we(e,t){var n=t.nTr,r=t._aData;n&&((e=e.rowIdFn(r))&&(n.id=e),r.DT_RowClass&&(e=r.DT_RowClass.split(" "),t.__rowc=t.__rowc?w(t.__rowc.concat(e)):e,H(n).removeClass(t.__rowc.join(" ")).addClass(r.DT_RowClass)),r.DT_RowAttr&&H(n).attr(r.DT_RowAttr),r.DT_RowData)&&H(n).data(r.DT_RowData)}function Te(e,t){var n,r,a,o=e.oClasses,i=e.aoColumns,l="header"===t?e.nTHead:e.nTFoot,s="header"===t?"sTitle":t;if(l){if(("header"===t||b(e.aoColumns,s).join(""))&&1===(a=(a=H("tr",l)).length?a:H("<tr/>").appendTo(l)).length){var u=0;for(H("td, th",a).each(function(){u+=this.colSpan}),n=u,r=i.length;n<r;n++)H("<th/>").html(i[n][s]||"").appendTo(a)}var c=Fe(e,l,!0);"header"===t?(e.aoHeader=c,H("tr",l).addClass(o.thead.row)):(e.aoFooter=c,H("tr",l).addClass(o.tfoot.row)),H(l).children("tr").children("th, td").each(function(){ot(e,t)(e,H(this),o)})}}function _e(e,t,n){var r,a,o,i,l,s=[],u=[],c=e.aoColumns,e=c.length;if(t){for(n=n||h(e).filter(function(e){return c[e].bVisible}),r=0;r<t.length;r++)s[r]=t[r].slice().filter(function(e,t){return n.includes(t)}),u.push([]);for(r=0;r<s.length;r++)for(a=0;a<s[r].length;a++)if(l=i=1,void 0===u[r][a]){for(o=s[r][a].cell;void 0!==s[r+i]&&s[r][a].cell==s[r+i][a].cell;)u[r+i][a]=null,i++;for(;void 0!==s[r][a+l]&&s[r][a].cell==s[r][a+l].cell;){for(var d=0;d<i;d++)u[r+d][a+l]=null;l++}var f=H(".dt-column-title",o);u[r][a]={cell:o,colspan:l,rowspan:i,title:(f.length?f:H(o)).html()}}return u}}function Ce(e,t){for(var n,r,a=_e(e,t),o=0;o<t.length;o++){if(n=t[o].row)for(;r=n.firstChild;)n.removeChild(r);for(var i=0;i<a[o].length;i++){var l=a[o][i];l&&H(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function x(e,t){if(a="ssp"==J(s=e),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!a&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==G(e,"aoPreDrawCallback","preDraw",[e]).indexOf(!1))S(e,!1);else{var l,n=[],r=0,a="ssp"==J(e),o=e.aiDisplay,i=e._iDisplayStart,s=e.fnDisplayEnd(),u=e.aoColumns,c=H(e.nTBody);if(e.bDrawing=!0,e.deferLoading)e.deferLoading=!1,e.iDraw++,S(e,!1);else if(a){if(!e.bDestroying&&!t)return 0===e.iDraw&&c.empty().append(Ae(e)),(l=e).iDraw++,S(l,!0),void Oe(l,(t=>{function n(e,t){return"function"==typeof r[e][t]?"function":r[e][t]}var r=t.aoColumns,e=t.oFeatures,a=t.oPreviousSearch,o=t.aoPreSearchCols;return{draw:t.iDraw,columns:r.map(function(t,e){return{data:n(e,"mData"),name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:o[e].search,regex:o[e].regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}),order:Ze(t).map(function(e){return{column:e.col,dir:e.dir,name:n(e.col,"sName")}}),start:t._iDisplayStart,length:e.bPaginate?t._iDisplayLength:-1,search:{value:a.search,regex:a.regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}})(l),function(e){var t=l,n=je(t,e=e),r=Re(t,"draw",e),a=Re(t,"recordsTotal",e),e=Re(t,"recordsFiltered",e);if(void 0!==r){if(+r<t.iDraw)return;t.iDraw=+r}n=n||[],be(t),t._iRecordsTotal=parseInt(a,10),t._iRecordsDisplay=parseInt(e,10);for(var o=0,i=n.length;o<i;o++)D(t,n[o]);t.aiDisplay=t.aiDisplayMaster.slice(),ue(t),x(t,!0),Xe(t),S(t,!1)})}else e.iDraw++;if(0!==o.length)for(var d=a?e.aoData.length:s,f=a?0:i;f<d;f++){var h=o[f],p=e.aoData[h];if(null!==p){null===p.nTr&&Se(e,h);for(var g=p.nTr,m=0;m<u.length;m++){var v=u[m],b=p.anCells[m];y(b,C.type.className[v.sType]),y(b,e.oClasses.tbody.cell)}G(e,"aoRowCallback",null,[g,p._aData,r,f,h]),n.push(g),r++}}else n[0]=Ae(e);G(e,"aoHeaderCallback","header",[H(e.nTHead).children("tr")[0],ve(e),i,s,o]),G(e,"aoFooterCallback","footer",[H(e.nTFoot).children("tr")[0],ve(e),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(H(n))),H(e.nTableWrapper).toggleClass("dt-empty-footer",0===H("tr",e.nTFoot).length),G(e,"aoDrawCallback","draw",[e],!0),e.bSorted=!1,e.bFiltered=!1,e.bDrawing=!1}}function Ie(e,t,n){var r=e.oFeatures,a=r.bSort,r=r.bFilter;void 0!==n&&!0!==n||(ue(e),a&&Qe(e),r?Pe(e,e.oPreviousSearch):e.aiDisplay=e.aiDisplayMaster.slice()),!0!==t&&(e._iDisplayStart=0),e._drawHold=t,x(e),e.api.one("draw",function(){e._drawHold=!1})}function Ae(e){var t=e.oLanguage,n=t.sZeroRecords,r=J(e);return"ssp"!==r&&"ajax"!==r||e.json?t.sEmptyTable&&0===e.fnRecordsTotal()&&(n=t.sEmptyTable):n=t.sLoadingRecords,H("<tr/>").append(H("<td />",{colSpan:ie(e),class:e.oClasses.empty.row}).html(n))[0]}function Le(e,t,a){var o=[];H.each(t,function(e,t){var n,r;null!==t&&(n=(e=e.match(/^([a-z]+)([0-9]*)([A-Za-z]*)$/))[2]?+e[2]:0,r=e[3]?e[3].toLowerCase():"full",e[1]===a)&&function e(t,n,r){if(Array.isArray(r))for(var a=0;a<r.length;a++)e(t,n,r[a]);else{var o=t[n];H.isPlainObject(r)?r.features?(r.rowId&&(t.id=r.rowId),r.rowClass&&(t.className=r.rowClass),o.id=r.id,o.className=r.className,e(t,n,r.features)):Object.keys(r).map(function(e){o.contents.push({feature:e,opts:r[e]})}):o.contents.push(r)}}(((e,t,n)=>{for(var r,a=0;a<e.length;a++)if((r=e[a]).rowNum===t&&("full"===n&&r.full||("start"===n||"end"===n)&&(r.start||r.end)))return r[n]||(r[n]={contents:[]}),r;return(r={rowNum:t})[n]={contents:[]},e.push(r),r})(o,n,r),r,t)}),o.sort(function(e,t){var n=e.rowNum,r=t.rowNum;return n===r?(e=e.full&&!t.full?-1:1,"bottom"===a?-1*e:e):r-n}),"bottom"===a&&o.reverse();for(var n=0;n<o.length;n++)delete o[n].rowNum,((o,i)=>{function l(e,t){return C.features[e]||z(o,0,"Unknown feature: "+e),C.features[e].apply(this,[o,t])}function e(e){if(i[e])for(var t,n=i[e].contents,r=0,a=n.length;r<a;r++)n[r]&&("string"==typeof n[r]?n[r]=l(n[r],null):H.isPlainObject(n[r])?n[r]=l(n[r].feature,n[r].opts):"function"==typeof n[r].node?n[r]=n[r].node(o):"function"==typeof n[r]&&(t=n[r](o),n[r]="function"==typeof t.node?t.node():t))}e("start"),e("end"),e("full")})(e,o[n]);return o}function Ne(t){var e=t.oClasses,n=H(t.nTable),r=H("<div/>").attr({id:t.sTableId+"_wrapper",class:e.container}).insertBefore(n);if(t.nTableWrapper=r[0],t.sDom)for(var a,o,i,l,s,u,c=t,e=t.sDom,d=r,f=e.match(/(".*?")|('.*?')|./g),h=0;h<f.length;h++)a=null,"<"==(o=f[h])?(i=H("<div/>"),"'"!=(l=f[h+1])[0]&&'"'!=l[0]||(l=l.replace(/['"]/g,""),s="",-1!=l.indexOf(".")?(u=l.split("."),s=u[0],u=u[1]):"#"==l[0]?s=l:u=l,i.attr("id",s.substring(1)).addClass(u),h++),d.append(i),d=i):">"==o?d=d.parent():"t"==o?a=Ue(c):V.ext.feature.forEach(function(e){o==e.cFeature&&(a=e.fnInit(c))}),a&&d.append(a);else{var n=Le(t,t.layout,"top"),e=Le(t,t.layout,"bottom"),p=ot(t,"layout");n.forEach(function(e){p(t,r,e)}),p(t,r,{full:{table:!0,contents:[Ue(t)]}}),e.forEach(function(e){p(t,r,e)})}var g,n=t,e=n.nTable,m=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(g=H("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),m?g.prependTo(H("div.dt-scroll",n.nTableWrapper)):g.insertBefore(e),H(e).on("processing.dt.DT",function(e,t,n){g.css("display",n?"block":"none")}))}function Fe(e,t,n){for(var r,a,o,i,l,s,u=e.aoColumns,c=H(t).children("tr"),d=e.titleRow,f=t&&"thead"===t.nodeName.toLowerCase(),h=[],p=0,g=c.length;p<g;p++)h.push([]);for(p=0,g=c.length;p<g;p++)for(a=(r=c[p]).firstChild;a;){if("TD"==a.nodeName.toUpperCase()||"TH"==a.nodeName.toUpperCase()){var m,v,b,y,D,x=[],S=H(a);for(y=(y=+a.getAttribute("colspan"))&&0!=y&&1!=y?y:1,D=(D=+a.getAttribute("rowspan"))&&0!=D&&1!=D?D:1,l=((e,t,n)=>{for(var r=e[t];r[n];)n++;return n})(h,p,0),s=1==y,n&&(s&&(ne(e,l,ut(S.data())),m=u[l],v=a.getAttribute("width")||null,(b=a.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=b[1]),m.sWidthOrig=m.sWidth||v,f?(null===m.sTitle||m.autoTitle||(!0===d&&0===p||!1===d&&p===c.length-1||d===p||null===d)&&(a.innerHTML=m.sTitle),!m.sTitle&&s&&(m.sTitle=I(a.innerHTML),m.autoTitle=!0)):m.footer&&(a.innerHTML=m.footer),m.ariaTitle||(m.ariaTitle=S.attr("aria-label")||m.sTitle),m.className)&&S.addClass(m.className),0===H(".dt-column-title",a).length&&H(_.createElement(e.columnTitleTag)).addClass("dt-column-title").append(a.childNodes).appendTo(a),e.orderIndicators&&f&&0!==S.filter(":not([data-dt-order=disable])").length&&0!==S.parent(":not([data-dt-order=disable])").length&&0===H(".dt-column-order",a).length&&H(_.createElement(e.columnTitleTag)).addClass("dt-column-order").appendTo(a),0===H("div.dt-column-"+(b=f?"header":"footer"),a).length)&&H("<div>").addClass("dt-column-"+b).append(a.childNodes).appendTo(a),i=0;i<y;i++){for(o=0;o<D;o++)h[p+o][l+i]={cell:a,unique:s},h[p+o].row=r;x.push(l+i)}a.setAttribute("data-dt-column",w(x).join(","))}a=a.nextSibling}return h}function Oe(n,e,r){function t(e){var t=n.jqXHR?n.jqXHR.status:null;if((null===e||"number"==typeof t&&204==t)&&je(n,e={},[]),(t=e.error||e.sError)&&z(n,0,t),e.d&&"string"==typeof e.d)try{e=JSON.parse(e.d)}catch(e){}n.json=e,G(n,null,"xhr",[n,e,n.jqXHR],!0),r(e)}var a,o=n.ajax,i=n.oInstance,l=(H.isPlainObject(o)&&o.data&&(l="function"==typeof(a=o.data)?a(e,n):a,e="function"==typeof a&&l?l:H.extend(!0,e,l),delete o.data),{url:"string"==typeof o?o:"",data:e,success:t,dataType:"json",cache:!1,type:n.sServerMethod,error:function(e,t){-1===G(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==t?z(n,0,"Invalid JSON response",1):4===e.readyState&&z(n,0,"Ajax error",7)),S(n,!1)}});H.isPlainObject(o)&&H.extend(l,o),n.oAjaxData=e,G(n,null,"preXhr",[n,e,l],!0),"json"===l.submitAs&&"object"==typeof e&&(l.data=JSON.stringify(e),l.contentType||(l.contentType="application/json; charset=utf-8")),"function"==typeof o?n.jqXHR=o.call(i,e,t,n):""===o.url?(je(n,i={},[]),t(i)):n.jqXHR=H.ajax(l),a&&(o.data=a)}function je(e,t,n){var r="data";if(H.isPlainObject(e.ajax)&&void 0!==e.ajax.dataSrc&&("string"==typeof(e=e.ajax.dataSrc)||"function"==typeof e?r=e:void 0!==e.data&&(r=e.data)),!n)return"data"===r?t.aaData||t[r]:""!==r?U(r)(t):t;m(r)(t,n)}function Re(e,t,n){var e=H.isPlainObject(e.ajax)?e.ajax.dataSrc:null;return e&&e[t]?U(e[t])(n):(e="","draw"===t?e="sEcho":"recordsTotal"===t?e="iTotalRecords":"recordsFiltered"===t&&(e="iTotalDisplayRecords"),void 0!==n[e]?n[e]:n[t])}function Pe(n,e){var t=n.aoPreSearchCols;if("ssp"!=J(n)){for(var r,a,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],r=0,a=u.length;r<a;r++)u[r].bSearchable?"string"!=typeof(i=null===(i=q(s,d,r,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(Me.innerHTML=i,i=He?Me.textContent:Me.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join("  "),0}n.aiDisplay=n.aiDisplayMaster.slice(),Ee(n.aiDisplay,n,e.search,e),H.each(n.searchFixed,function(e,t){Ee(n.aiDisplay,n,t,{})});for(var f=0;f<t.length;f++){var h=t[f];Ee(n.aiDisplay,n,h.search,h,f),H.each(n.aoColumns[f].searchFixed,function(e,t){Ee(n.aiDisplay,n,t,{},f)})}for(var p,g,m=n,v=V.ext.search,b=m.aiDisplay,y=0,D=v.length;y<D;y++){for(var x=[],S=0,w=b.length;S<w;S++)g=b[S],p=m.aoData[g],v[y](m,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,lt(b,x)}}n.bFiltered=!0,G(n,null,"search",[n])}function Ee(e,t,n,r,a){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:((e,t)=>{var n,r,a,o=[],t=H.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},t);return"string"!=typeof e&&(e=e.toString()),e=M(e),t.exact?new RegExp("^"+ke(e)+"$",t.caseInsensitive?"i":""):(e=t.regex?e:ke(e),t.smart&&(n=(e.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(e){var t,n=!1;return"!"===e.charAt(0)&&(n=!0,e=e.substring(1)),'"'===e.charAt(0)?e=(t=e.match(/^"(.*)"$/))?t[1]:e:"“"===e.charAt(0)&&(e=(t=e.match(/^\u201C(.*)\u201D$/))?t[1]:e),n&&(1<e.length&&o.push("(?!"+e+")"),e=""),e.replace(/"/g,"")}),r=o.length?o.join(""):"",a=t.boundary?"\\b":"",e="^(?=.*?"+a+n.join(")(?=.*?"+a)+")("+r+".)*$"),new RegExp(e,t.caseInsensitive?"i":""))})(n,r),o=0;o<e.length;o++){var u=t.aoData[e[o]],c=void 0===a?u._sFilterRow:u._aFilterData[a];(l&&l(c,u._aData,e[o],a)||s&&s.test(c))&&i.push(e[o])}for(e.length=i.length,o=0;o<i.length;o++)e[o]=i[o]}}var ke=V.util.escapeRegex,Me=H("<div>")[0],He=void 0!==Me.textContent;function We(i){var l,t,n,e,s=i.oInit,u=i.deferLoading,c=J(i);i.bInitialised?(Te(i,"header"),Te(i,"footer"),n=function(){Ce(i,i.aoHeader),Ce(i,i.aoFooter);var n=i.iInitDisplayStart;if(s.aaData)for(l=0;l<s.aaData.length;l++)D(i,s.aaData[l]);else!u&&"dom"!=c||he(i,H(i.nTBody).children("tr"));i.aiDisplay=i.aiDisplayMaster.slice(),Ne(i);var e=i,t=e.nTHead,r=t.querySelectorAll("tr"),a=e.titleRow,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';!0===a?t=r[0]:!1===a?t=r[r.length-1]:null!==a&&(t=r[a]),e.orderHandler&&Ge(e,t,t===e.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),g(e,r=[],e.aaSorting),e.aaSorting=r,Ye(i),S(i,!0),G(i,null,"preInit",[i],!0),Ie(i),"ssp"==c&&!u||("ajax"==c?Oe(i,{},function(e){var t=je(i,e);for(l=0;l<t.length;l++)D(i,t[l]);i.iInitDisplayStart=n,Ie(i),S(i,!1),Xe(i)}):(Xe(i),S(i,!1)))},(t=i).oFeatures.bStateSave?void 0!==(e=t.fnStateLoadCallback.call(t.oInstance,t,function(e){tt(t,e,n)}))&&tt(t,e,n):n()):setTimeout(function(){We(i)},200)}function Xe(e){var t;e._bInitComplete||(t=[e,e.json],e._bInitComplete=!0,re(e),G(e,null,"plugin-init",t,!0),G(e,"aoInitComplete","init",t,!0))}function Ve(e,t){t=parseInt(t,10);e._iDisplayLength=t,at(e),G(e,null,"length",[e,t])}function Be(e,t,n){var r=e._iDisplayStart,a=e._iDisplayLength,o=e.fnRecordsDisplay();if(0===o||-1===a)r=0;else if("number"==typeof t)o<(r=t*a)&&(r=0);else if("first"==t)r=0;else if("previous"==t)(r=0<=a?r-a:0)<0&&(r=0);else if("next"==t)r+a<o&&(r+=a);else if("last"==t)r=Math.floor((o-1)/a)*a;else{if("ellipsis"===t)return;z(e,0,"Unknown paging action: "+t,5)}o=e._iDisplayStart!==r;e._iDisplayStart=r,G(e,null,o?"page":"page-nc",[e]),o&&n&&x(e)}function S(e,t){e.bDrawing&&!1===t||G(e,null,"processing",[e,t])}function qe(e,t,n){t?(S(e,!0),setTimeout(function(){n(),S(e,!1)},0)):n()}function Ue(e){var t,n,r,a,o,i,l,s,u,c,d,f,h,p=H(e.nTable),g=e.oScroll;return""===g.sX&&""===g.sY?e.nTable:(t=g.sX,n=g.sY,r=e.oClasses.scrolling,o=(a=e.captionNode)?a._captionSide:null,u=H(p[0].cloneNode(!1)),i=H(p[0].cloneNode(!1)),c=function(e){return e?A(e):null},(l=p.children("tfoot")).length||(l=null),u=H(s="<div/>",{class:r.container}).append(H(s,{class:r.header.self}).css({overflow:"hidden",position:"relative",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?a:null).append(p.children("thead"))))).append(H(s,{class:r.body}).css({position:"relative",overflow:"auto",width:c(t)}).append(p)),l&&u.append(H(s,{class:r.footer.self}).css({overflow:"hidden",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?a:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,H(f).on("scroll.DT",function(){var e=this.scrollLeft;d.scrollLeft=e,l&&(h.scrollLeft=e)}),H("th, td",d).on("focus",function(){var e=d.scrollLeft;f.scrollLeft=e,l&&(f.scrollLeft=e)}),H(f).css("max-height",n),g.bCollapse||H(f).css("height",n),e.nScrollHead=d,e.nScrollBody=f,e.nScrollFoot=h,e.aoDrawCallback.push(ze),u[0])}function ze(t){var e=t.oScroll,n=e.iBarWidth,r=H(t.nScrollHead).children("div"),a=r.children("table"),o=t.nScrollBody,i=H(o),l=H(t.nScrollFoot).children("div"),s=l.children("table"),u=H(t.nTHead),c=H(t.nTable),d=t.nTFoot&&H("th, td",t.nTFoot).length?H(t.nTFoot):null,f=t.oBrowser,h=o.scrollHeight>o.clientHeight;if(t.scrollBarVis!==h&&void 0!==t.scrollBarVis)t.scrollBarVis=h,re(t);else{if(t.scrollBarVis=h,c.children("thead, tfoot").remove(),(h=u.clone().prependTo(c)).find("th, td").removeAttr("tabindex"),h.find("[id]").removeAttr("id"),d&&(D=d.clone().prependTo(c)).find("[id]").removeAttr("id"),t.aiDisplay.length){for(var p=null,g="ssp"!==J(t)?t._iDisplayStart:0,m=g;m<g+t.aiDisplay.length;m++){var v=t.aiDisplay[m],v=t.aoData[v].nTr;if(v){p=v;break}}if(p)for(var b=H(p).children("th, td").map(function(e){return{idx:ae(t,e),width:H(this).outerWidth()}}),m=0;m<b.length;m++){var y=t.aoColumns[b[m].idx].colEl[0];y.style.width.replace("px","")!==b[m].width&&(y.style.width=b[m].width+"px",e.sX)&&(y.style.minWidth=b[m].width+"px")}}a.find("colgroup").remove(),a.append(t.colgroup.clone()),d&&(s.find("colgroup").remove(),s.append(t.colgroup.clone())),H("th, td",h).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),d&&H("th, td",D).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var u=Math.floor(c.height())>o.clientHeight||"scroll"==i.css("overflow-y"),h="padding"+(f.bScrollbarLeft?"Left":"Right"),D=c.outerWidth();a.css("width",A(D)),r.css("width",A(D)).css(h,u?n+"px":"0px"),d&&(s.css("width",A(D)),l.css("width",A(D)).css(h,u?n+"px":"0px")),c.children("colgroup").prependTo(c),i.trigger("scroll"),!t.bSorted&&!t.bFiltered||t._drawHold||(o.scrollTop=0)}}function $e(e){return H(e.nTableWrapper).is(":visible")?H(e.nTableWrapper).width():0}function A(e){return null===e?"0px":"number"==typeof e?e<0?"0px":e+"px":e.match(/\d$/)?e+"px":e}function Ye(e){var t=e.aoColumns;for(e.colgroup.empty(),l=0;l<t.length;l++)t[l].bVisible&&e.colgroup.append(t[l].colEl)}function Ge(o,e,t,i,l){rt(e,t,function(e){var t=!1,n=void 0===i?fe(e.target):"function"==typeof i?i():Array.isArray(i)?i:[i];if(n.length){for(var r=0,a=n.length;r<a;r++)if(!1!==((e,t,n,r)=>{function a(e,t){var n=e._idx;return(n=void 0===n?s.indexOf(e[1]):n)+1<s.length?n+1:t?null:0}var o,i=e.aoColumns[t],l=e.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=e.aaSorting=[l]),(r||n)&&e.oFeatures.bSortMulti?-1!==(i=b(l,"0").indexOf(t))?null===(o=null===(o=a(l[i],!0))&&1===l.length?0:o)||""===s[o]?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(r?l.push([t,s[0],0]):l.push([t,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==t?(o=a(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([t,s[0]]),l[0]._idx=0)})(o,n[r],r,e.shiftKey)&&(t=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;t&&qe(o,!0,function(){Qe(o),Je(o,o.aiDisplay),Ie(o,!1,!1),l&&l()})}})}function Je(e,t){if(!(t.length<2)){for(var n=e.aiDisplayMaster,r={},a={},o=0;o<n.length;o++)r[n[o]]=o;for(o=0;o<t.length;o++)a[t[o]]=r[t[o]];t.sort(function(e,t){return a[e]-a[t]})}}function g(n,r,e){function t(e){var t;H.isPlainObject(e)?void 0!==e.idx?r.push([e.idx,e.dir]):e.name&&-1!==(t=b(n.aoColumns,"sName").indexOf(e.name))&&r.push([t,e.dir]):r.push(e)}if(H.isPlainObject(e))t(e);else if(e.length&&"number"==typeof e[0])t(e);else if(e.length)for(var a=0;a<e.length;a++)t(e[a])}function Ze(e){var t,n,r,a,o,i,l,s=[],u=V.ext.type.order,c=e.aoColumns,d=e.aaSortingFixed,f=H.isPlainObject(d),h=[];if(e.oFeatures.bSort)for(Array.isArray(d)&&g(e,h,d),f&&d.pre&&g(e,h,d.pre),g(e,h,e.aaSorting),f&&d.post&&g(e,h,d.post),t=0;t<h.length;t++)if(c[l=h[t][0]])for(n=0,r=(a=c[l].aDataSort).length;n<r;n++)i=c[o=a[n]].sType||"string",void 0===h[t]._idx&&(h[t]._idx=c[o].asSorting.indexOf(h[t][1])),h[t][1]&&s.push({src:l,col:o,dir:h[t][1],index:h[t]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[t][1]]});return s}function Qe(e,t,n){var r,a,o,i,c,d=[],l=V.ext.type.order,f=e.aoData,s=e.aiDisplayMaster;for(ue(e),void 0!==t?(i=e.aoColumns[t],c=[{src:t,col:t,dir:n,index:0,type:i.sType,formatter:l[i.sType+"-pre"],sorter:l[i.sType+"-"+n]}],s=s.slice()):c=Ze(e),r=0,a=c.length;r<a;r++){o=c[r],x=D=y=p=h=u=b=v=m=g=void 0;var u,h,p,g=e,m=o.col,v=g.aoColumns[m],b=V.ext.order[v.sSortDataType];b&&(u=b.call(g.oInstance,g,m,oe(g,m)));for(var y=V.ext.type.order[v.sType+"-pre"],D=g.aoData,x=0;x<D.length;x++)D[x]&&((h=D[x])._aSortData||(h._aSortData=[]),h._aSortData[m]&&!b||(p=b?u[x]:q(g,x,m,"sort"),h._aSortData[m]=y?y(p,g):p))}if("ssp"!=J(e)&&0!==c.length){for(r=0,a=s.length;r<a;r++)d[r]=r;c.length&&"desc"===c[0].dir&&e.orderDescReverse&&d.reverse(),s.sort(function(e,t){for(var n,r,a,o,i=c.length,l=f[e]._aSortData,s=f[t]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],r=s[o.col],o.sorter){if(0!==(a=o.sorter(n,r)))return a}else if(0!==(a=n<r?-1:r<n?1:0))return"asc"===o.dir?a:-a;return(n=d[e])<(r=d[t])?-1:r<n?1:0})}else 0===c.length&&s.sort(function(e,t){return e<t?-1:t<e?1:0});return void 0===t&&(e.bSorted=!0,e.sortDetails=c,G(e,null,"order",[e,c])),s}function Ke(e){var t,n,r,a=e.aLastSort,o=e.oClasses.order.position,i=Ze(e),l=e.oFeatures;if(l.bSort&&l.bSortClasses){for(t=0,n=a.length;t<n;t++)r=a[t].src,H(b(e.aoData,"anCells",r)).removeClass(o+(t<2?t+1:3));for(t=0,n=i.length;t<n;t++)r=i[t].src,H(b(e.aoData,"anCells",r)).addClass(o+(t<2?t+1:3))}e.aLastSort=i}function et(n){var t,e;n._bLoadingState||(g(n,e=[],n.aaSorting),t=n.aoColumns,e={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:e.map(function(e){return t[e[0]]&&t[e[0]].sName?[t[e[0]].sName,e[1]]:e.slice()}),search:H.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(e,t){return{name:e.sName,visible:e.bVisible,search:H.extend({},n.aoPreSearchCols[t])}})},n.oSavedState=e,G(n,"aoStateSaveParams","stateSaveParams",[n,e]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,e))}function tt(r,e,t){var n,a,o=r.aoColumns,i=b(r.aoColumns,"sName"),l=(r._bLoadingState=!0,r._bInitComplete?new V.Api(r):null);if(e&&e.time){var s=r.iStateDuration;if(0<s&&e.time<+new Date-1e3*s)r._bLoadingState=!1;else if(-1!==G(r,"aoStateLoadParams","stateLoadParams",[r,e]).indexOf(!1))r._bLoadingState=!1;else{if(r.oLoadedState=H.extend(!0,{},e),G(r,null,"stateLoadInit",[r,e],!0),void 0!==e.length&&(l?l.page.len(e.length):r._iDisplayLength=e.length),void 0!==e.start&&(null===l?(r._iDisplayStart=e.start,r.iInitDisplayStart=e.start):Be(r,e.start/r._iDisplayLength)),void 0!==e.order&&(r.aaSorting=[],H.each(e.order,function(e,t){var n=[t[0],t[1]];if("string"==typeof t[0]){t=i.indexOf(t[0]);if(t<0)return;n[0]=t}else if(n[0]>=o.length)return;r.aaSorting.push(n)})),void 0!==e.search&&H.extend(r.oPreviousSearch,e.search),e.columns){var u,c=e.columns,d=b(e.columns,"name");if(d.join("").length&&d.join("")!==i.join(""))for(c=[],n=0;n<i.length;n++)""!=i[n]&&0<=(u=d.indexOf(i[n]))?c.push(e.columns[u]):c.push({});if(c.length===o.length){for(n=0,a=c.length;n<a;n++){var f=c[n];void 0!==f.visible&&(l?l.column(n).visible(f.visible,!1):o[n].bVisible=f.visible),void 0!==f.search&&H.extend(r.aoPreSearchCols[n],f.search)}l&&l.one("draw",function(){l.columns.adjust()})}}r._bLoadingState=!1,G(r,"aoStateLoaded","stateLoaded",[r,e])}}else r._bLoadingState=!1;t()}function z(e,t,n,r){if(n="DataTables warning: "+(e?"table id="+e.sTableId+" - ":"")+n,r&&(n+=". For more information about this error, please see https://datatables.net/tn/"+r),t)W.console&&console.log&&console.log(n);else{t=V.ext,t=t.sErrMode||t.errMode;if(e&&G(e,null,"dt-error",[e,r,n],!0),"alert"==t)alert(n);else{if("throw"==t)throw new Error(n);"function"==typeof t&&t(e,r,n)}}}function $(n,r,e,t){Array.isArray(e)?H.each(e,function(e,t){Array.isArray(t)?$(n,r,t[0],t[1]):$(n,r,t)}):(void 0===t&&(t=e),void 0!==r[e]&&(n[t]=r[e]))}function nt(e,t,n){var r,a;for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(r=t[a],H.isPlainObject(r)?(H.isPlainObject(e[a])||(e[a]={}),H.extend(!0,e[a],r)):n&&"data"!==a&&"aaData"!==a&&Array.isArray(r)?e[a]=r.slice():e[a]=r);return e}function rt(e,t,n){H(e).on("click.DT",t,function(e){n(e)}).on("keypress.DT",t,function(e){13===e.which&&(e.preventDefault(),n(e))}).on("selectstart.DT",t,function(){return!1})}function Y(e,t,n){n&&e[t].push(n)}function G(t,e,n,r,a){var o=[];return e&&(o=t[e].slice().reverse().map(function(e){return e.apply(t.oInstance,r)})),null!==n&&(e=H.Event(n+".dt"),n=H(t.nTable),e.dt=t.api,n[a?"trigger":"triggerHandler"](e,r),a&&0===n.parents("body").length&&H("body").trigger(e,r),o.push(e.result)),o}function at(e){var t=e._iDisplayStart,n=e.fnDisplayEnd(),r=e._iDisplayLength;n<=t&&(t=n-r),t-=t%r,e._iDisplayStart=t=-1===r||t<0?0:t}function ot(e,t){var e=e.renderer,n=V.ext.renderer[t];return H.isPlainObject(e)&&e[t]?n[e[t]]||n._:"string"==typeof e&&n[e]||n._}function J(e){return e.oFeatures.bServerSide?"ssp":e.ajax?"ajax":"dom"}function it(e,t,n){var r=e.fnFormatNumber,a=e._iDisplayStart+1,o=e._iDisplayLength,i=e.fnRecordsDisplay(),l=e.fnRecordsTotal(),s=-1===o;return t.replace(/_START_/g,r.call(e,a)).replace(/_END_/g,r.call(e,e.fnDisplayEnd())).replace(/_MAX_/g,r.call(e,l)).replace(/_TOTAL_/g,r.call(e,i)).replace(/_PAGE_/g,r.call(e,s?1:Math.ceil(a/o))).replace(/_PAGES_/g,r.call(e,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,e.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,e.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,e.api.i18n("entries","",i))}function lt(e,t){if(t)if(t.length<1e4)e.push.apply(e,t);else for(l=0;l<t.length;l++)e.push(t[l])}function st(e,t,n){for(Array.isArray(n)||(n=[n]),l=0;l<n.length;l++)e.on(t+".dt",n[l])}function ut(n){return V.ext.escape.attributes&&H.each(n,function(e,t){n[e]=u(t)}),n}var ct=[],t=Array.prototype;X=function(e,t){if(!(this instanceof X))return new X(e,t);function n(e){e=e,t=V.settings,r=b(t,"nTable");var n,t,r,a=e?e.nTable&&e.oFeatures?[e]:e.nodeName&&"table"===e.nodeName.toLowerCase()?-1!==(a=r.indexOf(e))?[t[a]]:null:e&&"function"==typeof e.settings?e.settings().toArray():("string"==typeof e?n=H(e).get():e instanceof H&&(n=e.get()),n?t.filter(function(e,t){return n.includes(r[t])}):void 0):[];a&&o.push.apply(o,a)}var r,o=[];if(Array.isArray(e))for(r=0;r<e.length;r++)n(e[r]);else n(e);this.context=1<o.length?w(o):o,lt(this,t),this.selector={rows:null,cols:null,opts:null},X.extend(this,this,ct)},V.Api=X,H.extend(X.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(e){for(var t=0,n=this.length;t<n;t++)e.call(this,this[t],t,this);return this},eq:function(e){var t=this.context;return t.length>e?new X(t[e],this[e]):null},filter:function(e){e=t.filter.call(this,e,this);return new X(this.context,e)},flatten:function(){var e=[];return new X(this.context,e.concat.apply(e,this.toArray()))},get:function(e){return this[e]},join:t.join,includes:function(e){return-1!==this.indexOf(e)},indexOf:t.indexOf,iterator:function(e,t,n,r){var a,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof e&&(r=n,n=t,t=e,e=!1),o=0,i=h.length;o<i;o++){var g=new X(h[o]);if("table"===t)void 0!==(a=n.call(g,h[o],o))&&f.push(a);else if("columns"===t||"rows"===t)void 0!==(a=n.call(g,h[o],this[o],o))&&f.push(a);else if("every"===t||"column"===t||"column-rows"===t||"row"===t||"cell"===t)for(c=this[o],"column-rows"===t&&(u=wt(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(a="cell"===t?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(a)}return f.length||r?((e=(r=new X(h,e?f.concat.apply([],f):f)).selector).rows=p.rows,e.cols=p.cols,e.opts=p.opts,r):this},lastIndexOf:t.lastIndexOf,length:0,map:function(e){e=t.map.call(this,e,this);return new X(this.context,e)},pluck:function(e){var t=V.util.get(e);return this.map(function(e){return t(e)})},pop:t.pop,push:t.push,reduce:t.reduce,reduceRight:t.reduceRight,reverse:t.reverse,selector:null,shift:t.shift,slice:function(){return new X(this.context,this)},sort:t.sort,splice:t.splice,toArray:function(){return t.slice.call(this)},to$:function(){return H(this)},toJQuery:function(){return H(this)},unique:function(){return new X(this.context,w(this.toArray()))},unshift:t.unshift}),W.__apiStruct=ct,X.extend=function(e,t,n){if(n.length&&t&&(t instanceof X||t.__dt_wrapper))for(var r,a=0,o=n.length;a<o;a++)"__proto__"!==(r=n[a]).name&&(t[r.name]="function"===r.type?((t,n,r)=>function(){var e=n.apply(t||this,arguments);return X.extend(e,e,r.methodExt),e})(e,r.val,r):"object"===r.type?{}:r.val,t[r.name].__dt_wrapper=!0,X.extend(e,t[r.name],r.propExt))},X.register=r=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)X.register(e[n],t);else for(var a=e.split("."),o=ct,i=0,l=a.length;i<l;i++){var s,u,c=((e,t)=>{for(var n=0,r=e.length;n<r;n++)if(e[n].name===t)return e[n];return null})(o,u=(s=-1!==a[i].indexOf("()"))?a[i].replace("()",""):a[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=t,c.type="function"==typeof t?"function":H.isPlainObject(t)?"object":"other"):o=s?c.methodExt:c.propExt}},X.registerPlural=e=function(e,t,n){X.register(e,n),X.register(t,function(){var e=n.apply(this,arguments);return e===this?this:e instanceof X?e.length?Array.isArray(e[0])?new X(e.context,e[0]):e[0]:void 0:e})};function dt(e,t){var n,r;return Array.isArray(e)?(n=[],e.forEach(function(e){e=dt(e,t);lt(n,e)}),n.filter(function(e){return e})):"number"==typeof e?[t[e]]:(r=t.map(function(e){return e.nTable}),H(r).filter(e).map(function(){var e=r.indexOf(this);return t[e]}).toArray())}function ft(a,o,e){var t,n;e&&(t=new X(a)).one("draw",function(){e(t.ajax.json())}),"ssp"==J(a)?Ie(a,o):(S(a,!0),(n=a.jqXHR)&&4!==n.readyState&&n.abort(),Oe(a,{},function(e){be(a);for(var t=je(a,e),n=0,r=t.length;n<r;n++)D(a,t[n]);Ie(a,o),Xe(a),S(a,!1)}))}function ht(e,t,n,r,a){for(var o,i=[],l=typeof t,s=0,u=(t=t&&"string"!=l&&"function"!=l&&void 0!==t.length?t:[t]).length;s<u;s++)(o=(o=n("string"==typeof t[s]?t[s].trim():t[s])).filter(function(e){return null!=e}))&&o.length&&(i=i.concat(o));var c=C.selector[e];if(c.length)for(s=0,u=c.length;s<u;s++)i=c[s](r,a,i);return w(i)}function pt(e){return(e=e||{}).filter&&void 0===e.search&&(e.search=e.filter),H.extend({columnOrder:"implied",search:"none",order:"current",page:"all"},e)}function gt(e){var t=new X(e.context[0]);return e.length&&t.push(e[0]),t.selector=e.selector,t.length&&1<t[0].length&&t[0].splice(1),t}r("tables()",function(e){return null!=e?new X(dt(e,this.context)):this}),r("table()",function(e){var e=this.tables(e),t=e.context;return t.length?new X(t[0]):e}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(t){e("tables()."+t[0]+"()","table()."+t[1]+"()",function(){return this.iterator("table",function(e){return e[t[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(t){r("table()."+t[0]+".structure()",function(e){var n=this.columns(e).indexes().flatten().toArray(),e=this.context[0],e=_e(e,e[t[1]],n),r=n.slice().sort(function(e,t){return e-t});return e.map(function(t){return n.map(function(e){return t[r.indexOf(e)]})})})}),e("tables().containers()","table().container()",function(){return this.iterator("table",function(e){return e.nTableWrapper},1)}),r("tables().every()",function(n){var r=this;return this.iterator("table",function(e,t){n.call(r.table(t),t)})}),r("caption()",function(a,o){var e,t=this.context;return void 0===a?(e=t[0].captionNode)&&t.length?e.innerHTML:null:this.iterator("table",function(e){var t=H(e.nTable),n=H(e.captionNode),r=H(e.nTableWrapper);n.length||(n=H("<caption/>").html(a),e.captionNode=n[0],o)||(t.prepend(n),o=n.css("caption-side")),n.html(a),o&&(n.css("caption-side",o),n[0]._captionSide=o),(r.find("div.dataTables_scroll").length?(e="top"===o?"Head":"Foot",r.find("div.dataTables_scroll"+e+" table")):t).prepend(n)},1)}),r("caption.node()",function(){var e=this.context;return e.length?e[0].captionNode:null}),r("draw()",function(t){return this.iterator("table",function(e){"page"===t?x(e):Ie(e,!1===(t="string"==typeof t?"full-hold"!==t:t))})}),r("page()",function(t){return void 0===t?this.page.info().page:this.iterator("table",function(e){Be(e,t)})}),r("page.info()",function(){var e,t,n,r,a;if(0!==this.context.length)return t=(e=this.context[0])._iDisplayStart,n=e.oFeatures.bPaginate?e._iDisplayLength:-1,r=e.fnRecordsDisplay(),{page:(a=-1===n)?0:Math.floor(t/n),pages:a?1:Math.ceil(r/n),start:t,end:e.fnDisplayEnd(),length:n,recordsTotal:e.fnRecordsTotal(),recordsDisplay:r,serverSide:"ssp"===J(e)}}),r("page.len()",function(t){return void 0===t?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(e){Ve(e,t)})}),r("ajax.json()",function(){var e=this.context;if(0<e.length)return e[0].json}),r("ajax.params()",function(){var e=this.context;if(0<e.length)return e[0].oAjaxData}),r("ajax.reload()",function(t,n){return this.iterator("table",function(e){ft(e,!1===n,t)})}),r("ajax.url()",function(t){var e=this.context;return void 0===t?0===e.length?void 0:(e=e[0],H.isPlainObject(e.ajax)?e.ajax.url:e.ajax):this.iterator("table",function(e){H.isPlainObject(e.ajax)?e.ajax.url=t:e.ajax=t})}),r("ajax.url().load()",function(t,n){return this.iterator("table",function(e){ft(e,!1===n,t)})});function mt(o,i,e,t){function l(e,t){var n;if(Array.isArray(e)||e instanceof H)for(var r=0,a=e.length;r<a;r++)l(e[r],t);else e.nodeName&&"tr"===e.nodeName.toLowerCase()?(e.setAttribute("data-dt-row",i.idx),s.push(e)):(n=H("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(t),H("td",n).addClass(t).html(e)[0].colSpan=ie(o),s.push(n[0]))}var s=[];l(e,t),i._details&&i._details.detach(),i._details=H(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function vt(e,t){var i,a,n,l,r=e.context;r.length&&e.length&&(n=r[0].aoData[e[0]])._details&&((n._detailsShow=t)?(n._details.insertAfter(n.nTr),H(n.nTr).addClass("dt-hasChild")):(n._details.detach(),H(n.nTr).removeClass("dt-hasChild")),G(r[0],null,"childRow",[t,e.row(e[0])]),i=r[0],a=new X(i),t="draw"+(n=".dt.DT_details"),e="column-sizing"+n,n="destroy"+n,l=i.aoData,a.off(t+" "+e+" "+n),0<b(l,"_details").length&&(a.on(t,function(e,t){i===t&&a.rows({page:"current"}).eq(0).each(function(e){e=l[e];e._detailsShow&&e._details.insertAfter(e.nTr)})}),a.on(e,function(e,t){if(i===t)for(var n,r=ie(t),a=0,o=l.length;a<o;a++)(n=l[a])&&n._details&&n._details.each(function(){var e=H(this).children("td");1==e.length&&e.attr("colspan",r)})}),a.on(n,function(e,t){if(i===t)for(var n=0,r=l.length;n<r;n++)l[n]&&l[n]._details&&Ct(a,n)})),_t(r))}function bt(e,t,n,r,a,o){for(var i=[],l=0,s=a.length;l<s;l++)i.push(q(e,a[l],t,o));return i}function yt(e,t,n){var r=e.aoHeader,e=e.titleRow,a=null;if(void 0!==n)a=n;else if(!0===e)a=0;else if(!1===e)a=r.length-1;else if(null!==e)a=e;else{for(var o=0;o<r.length;o++)r[o][t].unique&&H(".dt-column-title",r[o][t].cell).text()&&(a=o);null===a&&(a=0)}return r[a][t].cell}function Dt(i,e,l){var s,u,c=i.aoColumns,d=(e=>{for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e[n].length;r++){var a=e[n][r].cell;t.includes(a)||t.push(a)}return t})(i.aoHeader),e=ht("column",e,function(n){var r,e=f(n);if(""===n)return h(c.length);if(null!==e)return[0<=e?e:c.length+e];if("function"==typeof n)return r=wt(i,l),c.map(function(e,t){return n(t,bt(i,t,0,0,r),yt(i,t))?t:null});var t,a,o="string"==typeof n?n.match(Lt):"";if(o)switch(o[2]){case"visIdx":case"visible":return o[1]&&o[1].match(/^\d+$/)?(t=parseInt(o[1],10))<0?[(a=c.map(function(e,t){return e.bVisible?t:null}))[a.length+t]]:[ae(i,t)]:c.map(function(e,t){return e.bVisible&&!1!==e.responsiveVisible&&(!o[1]||0<H(d[t]).filter(o[1]).length)?t:null});case"name":return(s=s||b(c,"sName")).map(function(e,t){return e===o[1]?t:null});case"title":return(u=u||b(c,"sTitle")).map(function(e,t){return e===o[1]?t:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(e=H(d).filter(n).map(function(){return fe(this)}).toArray().sort(function(e,t){return e-t})).length||!n.nodeName?e:(e=H(n).closest("*[data-dt-column]")).length?[e.data("dt-column")]:[]},i,l);return l.columnOrder&&"index"===l.columnOrder?e.sort(function(e,t){return e-t}):e}var xt,St,wt=function(e,t){var n,r=[],a=e.aiDisplay,o=e.aiDisplayMaster,i=t.search,l=t.order,t=t.page;if("ssp"==J(e))return"removed"===i?[]:h(0,o.length);if("current"==t)for(u=e._iDisplayStart,c=e.fnDisplayEnd();u<c;u++)r.push(a[u]);else if("current"==l||"applied"==l){if("none"==i)r=o.slice();else if("applied"==i)r=a.slice();else if("removed"==i){for(var s={},u=0,c=a.length;u<c;u++)s[a[u]]=null;o.forEach(function(e){Object.prototype.hasOwnProperty.call(s,e)||r.push(e)})}}else if("index"==l||"original"==l)for(u=0,c=e.aoData.length;u<c;u++)e.aoData[u]&&("none"==i||-1===(n=a.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&r.push(u);else if("number"==typeof l){var d=Qe(e,l,"asc");if("none"===i)r=d;else for(u=0;u<d.length;u++)(-1===(n=a.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&r.push(d[u])}return r},Tt=(r("rows()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=pt(r);var e=this.iterator("table",function(e){return t=ht("row",t=n,function(n){var e=f(n),r=a.aoData;if(null!==e&&!o)return[e];if(i=i||wt(a,o),null!==e&&-1!==i.indexOf(e))return[e];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(e){var t=r[e];return n(e,t._aData,t.nTr)?e:null});if(n.nodeName)return e=n._DT_RowIndex,t=n._DT_CellIndex,void 0!==e?r[e]&&r[e].nTr===n?[e]:[]:t?r[t.row]&&r[t.row].nTr===n.parentNode?[t.row]:[]:(e=H(n).closest("*[data-dt-row]")).length?[e.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var t=a.aIds[n.replace(/^#/,"")];if(void 0!==t)return[t.idx]}e=L(v(a.aoData,i,"nTr"));return H(e).filter(n).map(function(){return this._DT_RowIndex}).toArray()},a=e,o=r),"current"!==o.order&&"applied"!==o.order||Je(a,t),t;var a,t,o,i},1);return e.selector.rows=n,e.selector.opts=r,e}),r("rows().nodes()",function(){return this.iterator("row",function(e,t){return e.aoData[t].nTr||void 0},1)}),r("rows().data()",function(){return this.iterator(!0,"rows",function(e,t){return v(e.aoData,t,"_aData")},1)}),e("rows().cache()","row().cache()",function(n){return this.iterator("row",function(e,t){e=e.aoData[t];return"search"===n?e._aFilterData:e._aSortData},1)}),e("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(e,t){ye(e,t,n)})}),e("rows().indexes()","row().index()",function(){return this.iterator("row",function(e,t){return t},1)}),e("rows().ids()","row().id()",function(e){for(var t=[],n=this.context,r=0,a=n.length;r<a;r++)for(var o=0,i=this[r].length;o<i;o++){var l=n[r].rowIdFn(n[r].aoData[this[r][o]]._aData);t.push((!0===e?"#":"")+l)}return new X(n,t)}),e("rows().remove()","row().remove()",function(){return this.iterator("row",function(e,t){var n=e.aoData,r=n[t],a=e.aiDisplayMaster.indexOf(t),a=(-1!==a&&e.aiDisplayMaster.splice(a,1),0<e._iRecordsDisplay&&e._iRecordsDisplay--,at(e),e.rowIdFn(r._aData));void 0!==a&&delete e.aIds[a],n[t]=null}),this}),r("rows.add()",function(o){var e=this.iterator("table",function(e){for(var t,n=[],r=0,a=o.length;r<a;r++)(t=o[r]).nodeName&&"TR"===t.nodeName.toUpperCase()?n.push(he(e,t)[0]):n.push(D(e,t));return n},1),t=this.rows(-1);return t.pop(),lt(t,e),t}),r("row()",function(e,t){return gt(this.rows(e,t))}),r("row().data()",function(e){var t,n=this.context;return void 0===e?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((t=n[0].aoData[this[0]])._aData=e,Array.isArray(e)&&t.nTr&&t.nTr.id&&m(n[0].rowId)(e,t.nTr.id),ye(n[0],this[0],"data"),this)}),r("row().node()",function(){var e=this.context;if(e.length&&this.length&&this[0].length){e=e[0].aoData[this[0]];if(e&&e.nTr)return e.nTr}return null}),r("row.add()",function(t){t instanceof H&&t.length&&(t=t[0]);var e=this.iterator("table",function(e){return t.nodeName&&"TR"===t.nodeName.toUpperCase()?he(e,t)[0]:D(e,t)});return this.row(e[0])}),H(_).on("plugin-init.dt",function(e,t){var r=new X(t);r.on("stateSaveParams.DT",function(e,t,n){for(var r=t.rowIdFn,a=t.aiDisplayMaster,o=[],i=0;i<a.length;i++){var l=a[i],l=t.aoData[l];l._detailsShow&&o.push("#"+r(l._aData))}n.childRows=o}),r.on("stateLoaded.DT",function(e,t,n){Tt(r,n)}),Tt(r,r.state.loaded())}),function(e,t){t&&t.childRows&&e.rows(t.childRows.map(function(e){return e.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){G(e.settings()[0],null,"requestChild",[this])})}),_t=V.util.throttle(function(e){et(e[0])},500),Ct=function(e,t){var n=e.context;n.length&&(t=n[0].aoData[void 0!==t?t:e[0]])&&t._details&&(t._details.detach(),t._detailsShow=void 0,t._details=void 0,H(t.nTr).removeClass("dt-hasChild"),_t(n))},It="row().child",At=It+"()",Lt=(r(At,function(e,t){var n=this.context;return void 0===e?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===e?this.child.show():!1===e?Ct(this):n.length&&this.length&&mt(n[0],n[0].aoData[this[0]],e,t),this)}),r([It+".show()",At+".show()"],function(){return vt(this,!0),this}),r([It+".hide()",At+".hide()"],function(){return vt(this,!1),this}),r([It+".remove()",At+".remove()"],function(){return Ct(this),this}),r(It+".isShown()",function(){var e=this.context;return e.length&&this.length&&e[0].aoData[this[0]]&&e[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+)?:(name|title|visIdx|visible)$/);r("columns()",function(t,n){void 0===t?t="":H.isPlainObject(t)&&(n=t,t=""),n=pt(n);var e=this.iterator("table",function(e){return Dt(e,t,n)},1);return e.selector.cols=t,e.selector.opts=n,e}),e("columns().header()","column().header()",function(n){return this.iterator("column",function(e,t){return yt(e,t,n)},1)}),e("columns().footer()","column().footer()",function(n){return this.iterator("column",function(e,t){return e.aoFooter.length?e.aoFooter[void 0!==n?n:0][t].cell:null},1)}),e("columns().data()","column().data()",function(){return this.iterator("column-rows",bt,1)}),e("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return bt(e,t,0,0,a,o)},1)}),e("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].mData},1)}),e("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"search"===o?"_aFilterData":"_aSortData",t)},1)}),e("columns().init()","column().init()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t]},1)}),e("columns().names()","column().name()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].sName},1)}),e("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"anCells",t)},1)}),e("columns().titles()","column().title()",function(n,r){return this.iterator("column",function(e,t){"number"==typeof n&&(r=n,n=void 0);t=H(".dt-column-title",this.column(t).header(r));return void 0!==n?(t.html(n),this):t.html()},1)}),e("columns().types()","column().type()",function(){return this.iterator("column",function(e,t){var t=e.aoColumns[t],n=t.sType;return n||(ue(e),n=t.sType),n},1)}),e("columns().visible()","column().visible()",function(n,r){var t=this,a=[],e=this.iterator("column",function(e,t){if(void 0===n)return e.aoColumns[t].bVisible;((e,t,n)=>{var r,a,o=e.aoColumns,i=o[t],l=e.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=b(o,"bVisible").indexOf(!0,t+1),u=0,c=l.length;u<c;u++)l[u]&&(a=l[u].nTr,r=l[u].anCells,a)&&a.insertBefore(r[t],r[s]||null);else H(b(e.aoData,"anCells",t)).detach();return i.bVisible=n,Ye(e),!0})(e,t,n)&&a.push(t)});return void 0!==n&&this.iterator("table",function(e){Ce(e,e.aoHeader),Ce(e,e.aoFooter),e.aiDisplay.length||H(e.nTBody).find("td[colspan]").attr("colspan",ie(e)),et(e),t.iterator("column",function(e,t){a.includes(t)&&G(e,null,"column-visibility",[e,t,n,r])}),a.length&&(void 0===r||r)&&t.columns.adjust()}),e}),e("columns().widths()","column().width()",function(){var e=this.columns(":visible").count(),e=H("<tr>").html("<td>"+Array(e).join("</td><td>")+"</td>"),n=(H(this.table().body()).append(e),e.children().map(function(){return H(this).outerWidth()}));return e.remove(),this.iterator("column",function(e,t){e=oe(e,t);return null!==e?n[e]:0},1)}),e("columns().indexes()","column().index()",function(n){return this.iterator("column",function(e,t){return"visible"===n?oe(e,t):t},1)}),r("columns.adjust()",function(){return this.iterator("table",function(e){e.containerWidth=-1,re(e)},1)}),r("column.index()",function(e,t){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===e||"toData"===e?ae(n,t):"fromData"===e||"toVisible"===e?oe(n,t):void 0}),r("column()",function(e,t){return gt(this.columns(e,t))});function Nt(e,t){H(e).find(".dt-column-order").remove(),H(e).find(".dt-column-title").each(function(){var e=H(this).html();H(this).parent().parent().append(e),H(this).remove()}),H(e).find("div.dt-column-"+t).remove(),H("th, td",e).removeAttr("data-dt-column")}r("cells()",function(g,e,m){var r,a,o,i,l,s,t;return H.isPlainObject(g)&&(void 0===g.row?(m=g,g=null):(m=e,e=null)),H.isPlainObject(e)&&(m=e,e=null),null==e?this.iterator("table",function(e){return r=e,e=g,t=pt(m),d=r.aoData,f=wt(r,t),n=L(v(d,f,"anCells")),h=H(Z([],n)),p=r.aoColumns.length,ht("cell",e,function(e){var t,n="function"==typeof e;if(null==e||n){for(o=[],i=0,l=f.length;i<l;i++)for(a=f[i],s=0;s<p;s++)u={row:a,column:s},(!n||(c=d[a],e(u,q(r,a,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return H.isPlainObject(e)?void 0!==e.column&&void 0!==e.row&&-1!==f.indexOf(e.row)?[e]:[]:(t=h.filter(e).map(function(e,t){return{row:t._DT_CellIndex.row,column:t._DT_CellIndex.column}}).toArray()).length||!e.nodeName?t:(c=H(e).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},r,t);var r,t,a,o,i,l,s,u,c,d,f,n,h,p}):(t=m?{page:m.page,order:m.order,search:m.search}:{},r=this.columns(e,t),a=this.rows(g,t),t=this.iterator("table",function(e,t){var n=[];for(o=0,i=a[t].length;o<i;o++)for(l=0,s=r[t].length;l<s;l++)n.push({row:a[t][o],column:r[t][l]});return n},1),t=m&&m.selected?this.cells(t,m):t,H.extend(t.selector,{cols:e,rows:g,opts:m}),t)}),e("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(e,t,n){e=e.aoData[t];return e&&e.anCells?e.anCells[n]:void 0},1)}),r("cells().data()",function(){return this.iterator("cell",function(e,t,n){return q(e,t,n)},1)}),e("cells().cache()","cell().cache()",function(r){return r="search"===r?"_aFilterData":"_aSortData",this.iterator("cell",function(e,t,n){return e.aoData[t][r][n]},1)}),e("cells().render()","cell().render()",function(r){return this.iterator("cell",function(e,t,n){return q(e,t,n,r)},1)}),e("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(e,t,n){return{row:t,column:n,columnVisible:oe(e,n)}},1)}),e("cells().invalidate()","cell().invalidate()",function(r){return this.iterator("cell",function(e,t,n){ye(e,t,r,n)})}),r("cell()",function(e,t,n){return gt(this.cells(e,t,n))}),r("cell().data()",function(e){var t,n,r,a,o,i=this.context,l=this[0];return void 0===e?i.length&&l.length?q(i[0],l[0].row,l[0].column):void 0:(t=i[0],n=l[0].row,r=l[0].column,a=t.aoColumns[r],o=t.aoData[n]._aData,a.fnSetData(o,e,{settings:t,row:n,col:r}),ye(i[0],l[0].row,"data",l[0].column),this)}),r("order()",function(n,e){var t=this.context,r=Array.prototype.slice.call(arguments);return void 0===n?0!==t.length?t[0].aaSorting:void 0:("number"==typeof n?n=[[n,e]]:1<r.length&&(n=r),this.iterator("table",function(e){var t=[];g(e,t,n),e.aaSorting=t}))}),r("order.listener()",function(t,n,r){return this.iterator("table",function(e){Ge(e,t,{},n,r)})}),r("order.fixed()",function(t){var e;return t?this.iterator("table",function(e){e.aaSortingFixed=H.extend(!0,{},t)}):(e=(e=this.context).length?e[0].aaSortingFixed:void 0,Array.isArray(e)?{pre:e}:e)}),r(["columns().order()","column().order()"],function(n){var r=this;return n?this.iterator("table",function(e,t){e.aaSorting=r[t].map(function(e){return[e,n]})}):this.iterator("column",function(e,t){for(var n=Ze(e),r=0,a=n.length;r<a;r++)if(n[r].col===t)return n[r].dir;return null},1)}),e("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(e,t){e=e.aoColumns[t];return n?e.asSorting:e.bSortable},1)}),r("processing()",function(t){return this.iterator("table",function(e){S(e,t)})}),r("search()",function(t,n,r,a){var e=this.context;return void 0===t?0!==e.length?e[0].oPreviousSearch.search:void 0:this.iterator("table",function(e){e.oFeatures.bFilter&&Pe(e,"object"==typeof n?H.extend(e.oPreviousSearch,n,{search:t}):H.extend(e.oPreviousSearch,{search:t,regex:null!==n&&n,smart:null===r||r,caseInsensitive:null===a||a}))})}),r("search.fixed()",function(t,n){var e=this.iterator(!0,"table",function(e){e=e.searchFixed;return t?void 0===n?e[t]:(null===n?delete e[t]:e[t]=n,this):Object.keys(e)});return void 0!==t&&void 0===n?e[0]:e}),e("columns().search()","column().search()",function(r,a,o,i){return this.iterator("column",function(e,t){var n=e.aoPreSearchCols;if(void 0===r)return n[t].search;e.oFeatures.bFilter&&("object"==typeof a?H.extend(n[t],a,{search:r}):H.extend(n[t],{search:r,regex:null!==a&&a,smart:null===o||o,caseInsensitive:null===i||i}),Pe(e,e.oPreviousSearch))})}),r(["columns().search.fixed()","column().search.fixed()"],function(n,r){var e=this.iterator(!0,"column",function(e,t){e=e.aoColumns[t].searchFixed;return n?void 0===r?e[n]||null:(null===r?delete e[n]:e[n]=r,this):Object.keys(e)});return void 0!==n&&void 0===r?e[0]:e}),r("state()",function(e,t){var n;return e?(n=H.extend(!0,{},e),this.iterator("table",function(e){!1!==t&&(n.time=+new Date+100),tt(e,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),r("state.clear()",function(){return this.iterator("table",function(e){e.fnStateSaveCallback.call(e.oInstance,e,{})})}),r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),r("state.save()",function(){return this.iterator("table",function(e){et(e)})}),V.use=function(e,t){var n="string"==typeof e?t:e,t="string"==typeof t?t:e;if(void 0===n&&"string"==typeof t)switch(t){case"lib":case"jq":return H;case"win":return W;case"datetime":return V.DateTime;case"luxon":return o;case"moment":return i;case"bootstrap":return xt||W.bootstrap;case"foundation":return St||W.Foundation;default:return null}"lib"===t||"jq"===t||n&&n.fn&&n.fn.jquery?H=n:"win"===t||n&&n.document?_=(W=n).document:"datetime"===t||n&&"DateTime"===n.type?V.DateTime=n:"luxon"===t||n&&n.FixedOffsetZone?o=n:"moment"===t||n&&n.isMoment?i=n:"bootstrap"===t||n&&n.Modal&&"modal"===n.Modal.NAME?xt=n:("foundation"===t||n&&n.Reveal)&&(St=n)},V.factory=function(e,t){var n=!1;return e&&e.document&&(_=(W=e).document),t&&t.fn&&t.fn.jquery&&(H=t,n=!0),n},V.versionCheck=function(e,t){for(var n,r,a=(t||V.version).split("."),o=e.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(a[i],10)||0)!==(r=parseInt(o[i],10)||0))return r<n;return!0},V.isDataTable=function(e){var a=H(e).get(0),o=!1;return e instanceof V.Api||(H.each(V.settings,function(e,t){var n=t.nScrollHead?H("table",t.nScrollHead)[0]:null,r=t.nScrollFoot?H("table",t.nScrollFoot)[0]:null;t.nTable!==a&&n!==a&&r!==a||(o=!0)}),o)},V.tables=function(t){var e=!1,n=(H.isPlainObject(t)&&(e=t.api,t=t.visible),V.settings.filter(function(e){return!(t&&!H(e.nTable).is(":visible"))}).map(function(e){return e.nTable}));return e?new X(n):n},V.camelToHungarian=B,r("$()",function(e,t){t=this.rows(t).nodes(),t=H(t);return H([].concat(t.filter(e).toArray(),t.find(e).toArray()))}),H.each(["on","one","off"],function(e,n){r(n+"()",function(){var e=Array.prototype.slice.call(arguments),t=(e[0]=e[0].split(/\s/).map(function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" "),H(this.tables().nodes()));return t[n].apply(t,e),this})}),r("clear()",function(){return this.iterator("table",function(e){be(e)})}),r("error()",function(t){return this.iterator("table",function(e){z(e,0,t)})}),r("settings()",function(){return new X(this.context,this.context)}),r("init()",function(){var e=this.context;return e.length?e[0].oInit:null}),r("data()",function(){return this.iterator("table",function(e){return b(e.aoData,"_aData")}).flatten()}),r("trigger()",function(t,n,r){return this.iterator("table",function(e){return G(e,null,t,n,r)}).flatten()}),r("ready()",function(t){var e=this.context;return t?this.tables().every(function(){var e=this;this.context[0]._bInitComplete?t.call(e):this.on("init.dt.DT",function(){t.call(e)})}):e.length?e[0]._bInitComplete||!1:null}),r("destroy()",function(c){return c=c||!1,this.iterator("table",function(e){var t=e.oClasses,n=e.nTable,r=e.nTBody,a=e.nTHead,o=e.nTFoot,i=H(n),r=H(r),l=H(e.nTableWrapper),s=e.aoData.map(function(e){return e?e.nTr:null}),u=t.order,o=(e.bDestroying=!0,G(e,"aoDestroyCallback","destroy",[e],!0),c||new X(e).columns().visible(!0),e.resizeObserver&&e.resizeObserver.disconnect(),l.off(".DT").find(":not(tbody *)").off(".DT"),H(W).off(".DT-"+e.sInstance),n!=a.parentNode&&(i.children("thead").detach(),i.append(a)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),Nt(a,"header"),Nt(o,"footer"),e.colgroup.remove(),e.aaSorting=[],e.aaSortingFixed=[],Ke(e),H(i).find("th, td").removeClass(H.map(V.ext.type.className,function(e){return e}).join(" ")),H("th, td",a).removeClass(u.none+" "+u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width","").removeAttr("aria-sort"),r.children().detach(),r.append(s),e.nTableWrapper.parentNode),a=e.nTableWrapper.nextSibling,u=c?"remove":"detach",r=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,a),i.css("width",e.sDestroyWidth).removeClass(t.table)),V.settings.indexOf(e));-1!==r&&V.settings.splice(r,1)})}),H.each(["column","row","cell"],function(e,s){r(s+"s().every()",function(r){var a,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(e,t,n){a=i[s](t,o),"cell"===s?r.call(a,a[0][0].row,a[0][0].column,n,l):r.call(a,t,n,l),l++})})}),r("i18n()",function(e,t,n){var r=this.context[0],e=U(e)(r.oLanguage);return"string"==typeof(e=H.isPlainObject(e=void 0===e?t:e)?void 0!==n&&void 0!==e[n]?e[n]:!1===n?e:e._:e)?e.replace("%d",n):e}),V.version="2.3.7",V.settings=[],V.models={},V.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},V.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},V.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,wideStrings:null,searchFixed:null},V.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,titleRow:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(e){try{return JSON.parse((-1===e.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+e.sInstance+"_"+location.pathname))}catch(e){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(e,t){try{(-1===e.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+e.sInstance+"_"+location.pathname,JSON.stringify(t))}catch(e){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous",number:""}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},lengthLabels:{"-1":"All"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},orderDescReverse:!0,oSearch:H.extend({},V.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null,iDeferLoading:null,on:null,columnTitleTag:"span"},Q(V.defaults),V.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},Q(V.defaults.column),V.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==J(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==J(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var e=this._iDisplayLength,t=this._iDisplayStart,n=t+e,r=this.aiDisplay.length,a=this.oFeatures,o=a.bPaginate;return a.bServerSide?!1===o||-1===e?t+r:Math.min(t+e,this._iRecordsDisplay):!o||r<n||-1===e?r:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null,deferLoading:null,typeDetect:!0,resizeObserver:null,containerWidth:-1,orderDescReverse:null,orderIndicators:!0,orderHandler:!0,titleRow:null,columnTitleTag:"span"};function Ft(t,n){return function(e){return T(e)||"string"!=typeof e||(e=e.replace(F," "),t&&(e=I(e)),n&&(e=M(e,!1))),e}}At=V.ext.pager;H.extend(At,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:zt,numbers_length:7}),H.extend(!0,V.ext.renderer,{pagingButton:{_:function(e,t,n,r,a){var e=e.oClasses.paging,o=[e.button];return r&&o.push(e.active),a&&o.push(e.disabled),{display:r="ellipsis"===t?H('<span class="ellipsis"></span>').html(n)[0]:H("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:r}}},pagingContainer:{_:function(e,t){return t}}});function Ot(e,t,n,r,a){return i?e[t](a):o?e[n](a):r?e[r](a):e}var o,i,jt=!1;function Rt(e,t,n){var r;if(W.luxon&&!o&&(o=W.luxon),i=W.moment&&!i?W.moment:i){if(!(r=i.utc(e,t,n,!0)).isValid())return null}else if(o){if(!(r=t&&"string"==typeof e?o.DateTime.fromFormat(e,t):o.DateTime.fromISO(e)).isValid)return null;r=r.setLocale(n)}else t?(jt||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),jt=!0):r=new Date(e);return r}function Pt(s){return function(r,a,o,i){0===arguments.length?(o="en",r=a=null):1===arguments.length?(o="en",a=r,r=null):2===arguments.length&&(o=a,a=r,r=null);var l="datetime"+(a?"-"+a:"");return V.ext.type.order[l+"-pre"]||V.type(l,{detect:function(e){return e===l&&l},order:{pre:function(e){return e.valueOf()}},className:"dt-right"}),function(e,t){var n;return null==e&&(e="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===t?l:""===e?"sort"!==t?"":Rt("0000-01-01 00:00:00",null,o):!(null===a||r!==a||"sort"===t||"type"===t||e instanceof Date)||null===(n=Rt(e,r,o))?e:"sort"===t?n:(e=null===a?Ot(n,"toDate","toJSDate","")[s](navigator.language,{timeZone:"UTC"}):Ot(n,"format","toFormat","toISOString",a),"display"===t?u(e):e)}}}var Et=",",kt=".";if(void 0!==W.Intl)try{for(var Mt=(new Intl.NumberFormat).formatToParts(100000.1),l=0;l<Mt.length;l++)"group"===Mt[l].type?Et=Mt[l].value:"decimal"===Mt[l].type&&(kt=Mt[l].value)}catch(e){}V.datetime=function(n,r){var a="datetime-"+n;r=r||"en",V.ext.type.order[a]||V.type(a,{detect:function(e){var t=Rt(e,n,r);return!(""!==e&&!t)&&a},order:{pre:function(e){return Rt(e,n,r)||0}},className:"dt-right"})},V.render={date:Pt("toLocaleDateString"),datetime:Pt("toLocaleString"),time:Pt("toLocaleTimeString"),number:function(a,o,i,l,s){return null==a&&(a=Et),null==o&&(o=kt),{display:function(e){if("number"!=typeof e&&"string"!=typeof e)return e;if(""===e||null===e)return e;var t=e<0?"-":"",n=parseFloat(e),r=Math.abs(n);if(1e11<=r||r<1e-4&&0!==r)return(r=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+r[1]+"</sup>";if(isNaN(n))return u(e);n=n.toFixed(i),e=Math.abs(n);r=parseInt(e,10),n=i?o+(e-r).toFixed(i).substring(2):"";return(t=0===r&&0===parseFloat(n)?"":t)+(l||"")+r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};function Ht(e,t){return e=null!=e?e.toString().toLowerCase():"",t=null!=t?t.toString().toLowerCase():"",e.localeCompare(t,navigator.languages[0]||navigator.language,{numeric:!0,ignorePunctuation:!0})}function Wt(e,t){return e=I(e),t=I(t),Ht(e,t)}var s=V.ext.type,Xt=(V.type=function(n,e,t){if(!e)return{className:s.className[n],detect:s.detect.find(function(e){return e._name===n}),order:{pre:s.order[n+"-pre"],asc:s.order[n+"-asc"],desc:s.order[n+"-desc"]},render:s.render[n],search:s.search[n]};function r(e,t){s[e][n]=t}function a(e){Object.defineProperty(e,"_name",{value:n});var t=s.detect.findIndex(function(e){return e._name===n});-1===t?s.detect.unshift(e):s.detect.splice(t,1,e)}function o(e){s.order[n+"-pre"]=e.pre,s.order[n+"-asc"]=e.asc,s.order[n+"-desc"]=e.desc}void 0===t&&(t=e,e=null),"className"===e?r("className",t):"detect"===e?a(t):"order"===e?o(t):"render"===e?r("render",t):"search"===e?r("search",t):e||(t.className&&r("className",t.className),void 0!==t.detect&&a(t.detect),t.order&&o(t.order),void 0!==t.render&&r("render",t.render),void 0!==t.search&&r("search",t.search))},V.types=function(){return s.detect.map(function(e){return e._name})},V.type("string",{detect:function(){return"string"},order:{pre:function(e){return T(e)&&"boolean"!=typeof e?"":"string"==typeof e?e.toLowerCase():e.toString?e.toString():""}},search:Ft(!1,!0)}),V.type("string-utf8",{detect:{allOf:function(e){return!0},oneOf:function(e){return!T(e)&&navigator.languages&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Ht,desc:function(e,t){return-1*Ht(e,t)}},search:Ft(!1,!0)}),V.type("html",{detect:{allOf:function(e){return T(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return!T(e)&&"string"==typeof e&&-1!==e.indexOf("<")}},order:{pre:function(e){return T(e)?"":e.replace?I(e).trim().toLowerCase():e+""}},search:Ft(!0,!0)}),V.type("html-utf8",{detect:{allOf:function(e){return T(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return navigator.languages&&!T(e)&&"string"==typeof e&&-1!==e.indexOf("<")&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Wt,desc:function(e,t){return-1*Wt(e,t)}},search:Ft(!0,!0)}),V.type("date",{className:"dt-type-date",detect:{allOf:function(e){var t;return!e||e instanceof Date||R.test(e)?null!==(t=Date.parse(e))&&!isNaN(t)||T(e):null},oneOf:function(e){return e instanceof Date||"string"==typeof e&&R.test(e)}},order:{pre:function(e){e=Date.parse(e);return isNaN(e)?-1/0:e}}}),V.type("html-num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t,O,E)}},search:Ft(!0,!0)}),V.type("html-num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t,O)}},search:Ft(!0,!0)}),V.type("num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t,E)}}}),V.type("num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t)}}}),function(e,t,n,r){var a;return 0===e||e&&"-"!==e?"number"==(a=typeof e)||"bigint"==a?e:+(e=(e=t?k(e,t):e).replace&&(n&&(e=e.replace(n,"")),r)?e.replace(r,""):e):-1/0});function Vt(e,t,n){n&&(e[t]=n)}H.extend(!0,V.ext.renderer,{footer:{_:function(e,t,n){t.addClass(n.tfoot.cell)}},header:{_:function(g,m,v){m.addClass(v.thead.cell),g.oFeatures.bSort||m.addClass(v.order.none);var e=g.titleRow,t=m.closest("thead").find("tr"),n=m.parent().index();"disable"===m.attr("data-dt-order")||"disable"===m.parent().attr("data-dt-order")||!0===e&&0!==n||!1===e&&n!==t.length-1||"number"==typeof e&&n!==e||H(g.nTable).on("order.dt.DT column-visibility.dt.DT",function(e,t,n){if(g===t){var r=t.sortDetails;if(r){var a=b(r,"col");if("column-visibility"!==e.type||a.includes(n)){for(var e=v.order,n=t.api.columns(m),o=g.aoColumns[n.flatten()[0]],i=n.orderable().includes(!0),l="",s=n.indexes(),u=n.orderable(!0).flatten(),c=g.iTabIndex,d=t.orderHandler&&i,f=(m.removeClass(e.isAsc+" "+e.isDesc).toggleClass(e.none,!i).toggleClass(e.canAsc,d&&u.includes("asc")).toggleClass(e.canDesc,d&&u.includes("desc")),!0),h=0;h<s.length;h++)a.includes(s[h])||(f=!1);f&&(d=n.order(),m.addClass(d.includes("asc")?e.isAsc:""+d.includes("desc")?e.isDesc:""));var p=-1;for(h=0;h<a.length;h++)if(g.aoColumns[a[h]].bVisible){p=a[h];break}s[0]==p?(u=r[0],n=o.asSorting,m.attr("aria-sort","asc"===u.dir?"ascending":"descending"),l=n[u.index+1]?"Reverse":"Remove"):m.removeAttr("aria-sort"),i&&((d=m.find(".dt-column-order")).attr("role","button").attr("aria-label",i?o.ariaTitle+t.api.i18n("oAria.orderable"+l):o.ariaTitle),-1!==c)&&d.attr("tabindex",c)}}}})}},layout:{_:function(e,t,n){var r=e.oClasses.layout,a=H("<div/>").attr("id",n.id||null).addClass(n.className||r.row).appendTo(t);V.ext.renderer.layout._forLayoutRow(n,function(e,t){var n;"id"!==e&&"className"!==e&&(n="",t.table&&(a.addClass(r.tableRow),n+=r.tableCell+" "),n+="start"===e?r.start:"end"===e?r.end:r.full,H("<div/>").attr({id:t.id||null,class:t.className||r.cell+" "+n}).append(t.contents).appendTo(a))})},_forLayoutRow:function(t,n){function r(e){switch(e){case"":return 0;case"start":return 1;case"end":return 2;default:return 3}}Object.keys(t).sort(function(e,t){return r(e)-r(t)}).forEach(function(e){n(e,t[e])})}}}),V.feature={},V.feature.register=function(e,t,n){V.ext.features[e]=t,n&&C.feature.push({cFeature:n,fnInit:t})},V.feature.register("div",function(e,t){var n=H("<div>")[0];return t&&(Vt(n,"className",t.className),Vt(n,"id",t.id),Vt(n,"innerHTML",t.html),Vt(n,"textContent",t.text)),n}),V.feature.register("info",function(e,s){var t,n,u;return e.oFeatures.bInfo?(t=e.oLanguage,n=e.sTableId,u=H("<div/>",{class:e.oClasses.info.container}),s=H.extend({callback:t.fnInfoCallback,empty:t.sInfoEmpty,postfix:t.sInfoPostFix,search:t.sInfoFiltered,text:t.sInfo},s),e.aoDrawCallback.push(function(e){var t=s,n=u,r=e._iDisplayStart+1,a=e.fnDisplayEnd(),o=e.fnRecordsTotal(),i=e.fnRecordsDisplay(),l=i?t.text:t.empty;i!==o&&(l+=" "+t.search),l+=t.postfix,l=it(e,l),t.callback&&(l=t.callback.call(e.oInstance,e,r,a,o,i,l)),n.html(l),G(e,null,"info",[e,n[0],l])}),e._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),H(e.nTable).attr("aria-describedby",n+"_info"),e._infoEl=u),u):null},"i");var Bt=0;function qt(e){var t=[];return e.numbers&&t.push("numbers"),e.previousNext&&(t.unshift("previous"),t.push("next")),e.firstLast&&(t.unshift("first"),t.push("last")),t}function Ut(e,t,n,r){var a=e.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(t){case"ellipsis":o.display="&#x2026;";break;case"first":o.display=a.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=a.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=a.sNext,0!==r&&n!==r-1||(o.disabled=!0);break;case"last":o.display=a.sLast,0!==r&&n!==r-1||(o.disabled=!0);break;default:"number"==typeof t&&(o.display=e.fnFormatNumber(t+1),n===t)&&(o.active=!0)}return o}function zt(e,t,n,r){var a=[],o=Math.floor(n/2),i=r?2:1,l=r?1:0;return t<=n?a=h(0,t):1===n?a=[e]:3===n?e<=1?a=[0,1,"ellipsis"]:t-2<=e?(a=h(t-2,t)).unshift("ellipsis"):a=["ellipsis",e,"ellipsis"]:e<=o?((a=h(0,n-i)).push("ellipsis"),r&&a.push(t-1)):t-1-o<=e?((a=h(t-(n-i),t)).unshift("ellipsis"),r&&a.unshift(0)):((a=h(e-o+i,e+o-l)).push("ellipsis"),a.unshift("ellipsis"),r&&(a.push(t-1),a.unshift(0))),a}V.feature.register("search",function(n,r){var e,t,a,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(e=n.oClasses.search,t=n.sTableId,a=n.oPreviousSearch,o='<input type="search" class="'+e.input+'"/>',-1===(r=H.extend({placeholder:(c=n.oLanguage).sSearchPlaceholder,processing:!1,text:c.sSearch},r)).text.indexOf("_INPUT_")&&(r.text+="_INPUT_"),r.text=it(n,r.text),c=r.text.match(/_INPUT_$/),s=r.text.match(/^_INPUT_/),i=r.text.replace(/_INPUT_/,""),l="<label>"+r.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=H("<div>").addClass(e.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Bt),s.find("input").attr("id","dt-search-"+Bt),Bt++,u=function(e){var t=this.value;a.return&&"Enter"!==e.key||t!=a.search&&qe(n,r.processing,function(){a.search=t,Pe(n,a),n._iDisplayStart=0,x(n)})},c=null!==n.searchDelay?n.searchDelay:0,d=H("input",s).val(a.search).attr("placeholder",r.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?V.util.debounce(u,c):u).on("mouseup.DT",function(e){setTimeout(function(){u.call(d[0],e)},10)}).on("keypress.DT",function(e){if(13==e.keyCode)return!1}).attr("aria-controls",t),H(n.nTable).on("search.dt.DT",function(e,t){n===t&&d[0]!==_.activeElement&&d.val("function"!=typeof a.search?a.search:"")}),s):null},"f"),V.feature.register("paging",function(e,t){if(!e.oFeatures.bPaginate)return null;t=H.extend({buttons:V.ext.pager.numbers_length,type:e.sPaginationType,boundaryNumbers:!0,firstLast:!0,previousNext:!0,numbers:!0},t);function n(){!function e(t,n,r){if(!t._bInitComplete)return;var a=r.type?V.ext.pager[r.type]:qt,o=t.oLanguage.oAria.paginate||{},i=t._iDisplayStart,l=t._iDisplayLength,s=t.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=[],h=[],i=a(r).map(function(e){return"numbers"===e?zt(c,d,r.buttons,r.boundaryNumbers):e});f=f.concat.apply(f,i);for(var p=0;p<f.length;p++){var g=f[p],m=Ut(t,g,c,d),v=ot(t,"pagingButton")(t,g,m.display,m.active,m.disabled),b="string"==typeof g?o[g]:o.number?o.number+(g+1):null;H(v.clicker).attr({"aria-controls":t.sTableId,"aria-disabled":m.disabled?"true":null,"aria-current":m.active?"page":null,"aria-label":b,"data-dt-idx":g,tabIndex:m.disabled?-1:t.iTabIndex&&"span"!==v.clicker[0].nodeName.toLowerCase()?t.iTabIndex:null}),"number"!=typeof g&&H(v.clicker).addClass(g),rt(v.clicker,{action:g},function(e){e.preventDefault(),Be(t,e.data.action,!0)}),h.push(v.display)}u=ot(t,"pagingContainer")(t,h);s=n.find(_.activeElement).data("dt-idx");n.empty().append(u);void 0!==s&&n.find("[data-dt-idx="+s+"]").trigger("focus");h.length&&(l=H(h[0]).outerHeight(),1<r.buttons)&&0<l&&H(n).height()>=2*l-10&&e(t,n,H.extend({},r,{buttons:r.buttons-2}))}(e,r.children(),t)}var r=H("<div/>").addClass(e.oClasses.paging.container+(t.type?" paging_"+t.type:"")).append(H("<nav>").attr("aria-label","pagination").addClass(e.oClasses.paging.nav));return e.aoDrawCallback.push(n),H(e.nTable).on("column-sizing.dt.DT",n),r},"p");var $t=0;return V.feature.register("pageLength",function(r,e){var t=r.oFeatures;if(!t.bPaginate||!t.bLengthChange)return null;e=H.extend({menu:r.aLengthMenu,text:r.oLanguage.sLengthMenu},e);var t=r.oClasses.length,n=r.sTableId,a=e.menu,o=[],i=[];if(Array.isArray(a[0]))o=a[0],i=a[1];else for(p=0;p<a.length;p++)H.isPlainObject(a[p])?(o.push(a[p].value),i.push(a[p].label)):(o.push(a[p]),i.push(a[p]));for(var l=e.text.match(/_MENU_$/),s=e.text.match(/^_MENU_/),u=e.text.replace(/_MENU_/,""),e="<label>"+e.text+"</label>",s=(s?e="_MENU_<label>"+u+"</label>":l&&(e="<label>"+u+"</label>_MENU_"),"tmp-"+ +new Date),c=H("<div/>").addClass(t.container).append(e.replace("_MENU_",'<span id="'+s+'"></span>')),d=[],f=(Array.prototype.slice.call(c.find("label")[0].childNodes).forEach(function(e){e.nodeType===Node.TEXT_NODE&&d.push({el:e,text:e.textContent})}),function(t){d.forEach(function(e){e.el.textContent=it(r,e.text,t)})}),h=H("<select/>",{"aria-controls":n,class:t.select}),p=0;p<o.length;p++){var g=r.api.i18n("lengthLabels."+o[p],null);null===g&&(g="number"==typeof i[p]?r.fnFormatNumber(i[p]):i[p]),h[0][p]=new Option(g,o[p])}return c.find("label").attr("for","dt-length-"+$t),h.attr("id","dt-length-"+$t),$t++,c.find("#"+s).replaceWith(h),H("select",c).val(r._iDisplayLength).on("change.DT",function(){Ve(r,H(this).val()),x(r)}),H(r.nTable).on("length.dt.DT",function(e,t,n){r===t&&(H("select",c).val(n),f(n))}),f(r._iDisplayLength),c},"l"),((H.fn.dataTable=V).$=H).fn.dataTableSettings=V.settings,H.fn.dataTableExt=V.ext,H.fn.DataTable=function(e){return H(this).dataTable(e).api()},H.each(V,function(e,t){H.fn.DataTable[e]=t}),V});
42
42
43
/*! DataTables styling integration
43
/*! DataTables styling integration
44
 * © SpryMedia Ltd - datatables.net/license
44
 * © SpryMedia Ltd - datatables.net/license
45
 */
45
 */
46
!function(t){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t){"use strict";return e.fn.dataTable});
46
(t=>{var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)})(function(e,n,t){return e.fn.dataTable});
47
47
48
/*! Buttons for DataTables 3.2.5
48
/*! Buttons for DataTables 3.2.6
49
 * © SpryMedia Ltd - datatables.net/license
49
 * © SpryMedia Ltd - datatables.net/license
50
 */
50
 */
51
!function(e){var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,t,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)}(function(x,m,v){"use strict";var e=x.fn.dataTable,o=0,C=0,_=e.ext.buttons,i=null;function y(t,n,e){x.fn.animate?t.stop().fadeIn(n,e):(t.css("display","block"),e&&e.call(t))}function w(t,n,e){x.fn.animate?t.stop().fadeOut(n,e):(t.css("display","none"),e&&e.call(t))}function A(n,t){if(!e.versionCheck("2"))throw"Warning: Buttons requires DataTables 2 or newer";if(!(this instanceof A))return function(t){return new A(t,n).container()};!0===(t=void 0===t?{}:t)&&(t={}),Array.isArray(t)&&(t={buttons:t}),this.c=x.extend(!0,{},A.defaults,t),t.buttons&&(this.c.buttons=t.buttons),this.s={dt:new e.Api(n),buttons:[],listenKeys:"",namespace:"dtb"+o++},this.dom={container:x("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)},this._constructor()}x.extend(A.prototype,{action:function(t,n){t=this._nodeToButton(t);return void 0===n?t.conf.action:(t.conf.action=n,this)},active:function(t,n){var t=this._nodeToButton(t),e=this.c.dom.button.active,o=x(t.node);return t.inCollection&&this.c.dom.collection.button&&void 0!==this.c.dom.collection.button.active&&(e=this.c.dom.collection.button.active),void 0===n?o.hasClass(e):(o.toggleClass(e,void 0===n||n),this)},add:function(t,n,e){var o=this.s.buttons;if("string"==typeof n){for(var i=n.split("-"),s=this.s,r=0,a=i.length-1;r<a;r++)s=s.buttons[+i[r]];o=s.buttons,n=+i[i.length-1]}o=this._expandButton(o,t,void 0!==t?t.split:void 0,(void 0===t||void 0===t.split||0===t.split.length)&&void 0!==s,!1,n);return void 0!==e&&!0!==e||this._draw(),o},collectionRebuild:function(t,n){var e=this._nodeToButton(t);if(void 0!==n){for(var o=e.buttons.length-1;0<=o;o--)this.remove(e.buttons[o].node);for(e.conf.prefixButtons&&n.unshift.apply(n,e.conf.prefixButtons),e.conf.postfixButtons&&n.push.apply(n,e.conf.postfixButtons),o=0;o<n.length;o++){var i=n[o];this._expandButton(e.buttons,i,void 0!==i&&void 0!==i.config&&void 0!==i.config.split,!0,void 0!==i.parentConf&&void 0!==i.parentConf.split,null,i.parentConf)}}this._draw(e.collection,e.buttons)},container:function(){return this.dom.container},disable:function(t){t=this._nodeToButton(t);return(t.isSplit?x(t.node.childNodes[0]):x(t.node)).addClass(this.c.dom.button.disabled).prop("disabled",!0),t.disabled=!0,this._checkSplitEnable(),this},destroy:function(){x("body").off("keyup."+this.s.namespace);for(var t=this.s.buttons.slice(),n=0,e=t.length;n<e;n++)this.remove(t[n].node);this.dom.container.remove();var o=this.s.dt.settings()[0];for(n=0,e=o.length;n<e;n++)if(o.inst===this){o.splice(n,1);break}return this},enable:function(t,n){return!1===n?this.disable(t):(((n=this._nodeToButton(t)).isSplit?x(n.node.childNodes[0]):x(n.node)).removeClass(this.c.dom.button.disabled).prop("disabled",!1),n.disabled=!1,this._checkSplitEnable(),this)},index:function(t,n,e){n||(n="",e=this.s.buttons);for(var o=0,i=e.length;o<i;o++){var s=e[o].buttons;if(e[o].node===t)return n+o;if(s&&s.length){s=this.index(t,o+"-",s);if(null!==s)return s}}return null},name:function(){return this.c.name},node:function(t){return t?(t=this._nodeToButton(t),x(t.node)):this.dom.container},processing:function(t,n){var e=this.s.dt,o=this._nodeToButton(t);return void 0===n?x(o.node).hasClass("processing"):(x(o.node).toggleClass("processing",n),x(e.table().node()).triggerHandler("buttons-processing.dt",[n,e.button(t),e,x(t),o.conf]),this)},remove:function(t){var n=this._nodeToButton(t),e=this._nodeToHost(t),o=this.s.dt;if(n.buttons.length)for(var i=n.buttons.length-1;0<=i;i--)this.remove(n.buttons[i].node);n.conf.destroying=!0,n.conf.destroy&&n.conf.destroy.call(o.button(t),o,x(t),n.conf),this._removeKey(n.conf),x(n.node).remove(),n.inserter&&x(n.inserter).remove();o=x.inArray(n,e);return e.splice(o,1),this},text:function(t,n){function e(t){return"function"==typeof t?t(i,s,o.conf):t}var o=this._nodeToButton(t),t=o.textNode,i=this.s.dt,s=x(o.node);return void 0===n?e(o.conf.text):(o.conf.text=n,t.html(e(n)),this)},_constructor:function(){var e=this,t=this.s.dt,o=t.settings()[0],n=this.c.buttons;o._buttons||(o._buttons=[]),o._buttons.push({inst:this,name:this.c.name});for(var i=0,s=n.length;i<s;i++)this.add(n[i]);t.on("destroy",function(t,n){n===o&&e.destroy()}),x("body").on("keyup."+this.s.namespace,function(t){var n;v.activeElement&&v.activeElement!==v.body||(n=String.fromCharCode(t.keyCode).toLowerCase(),-1!==e.s.listenKeys.toLowerCase().indexOf(n)&&e._keypress(n,t))})},_addKey:function(t){t.key&&(this.s.listenKeys+=(x.isPlainObject(t.key)?t.key:t).key)},_draw:function(t,n){t||(t=this.dom.container,n=this.s.buttons),t.children().detach();for(var e=0,o=n.length;e<o;e++)t.append(n[e].inserter),t.append(" "),n[e].buttons&&n[e].buttons.length&&this._draw(n[e].collection,n[e].buttons)},_expandButton:function(t,n,e,o,i,s,r){for(var a,l,c=this.s.dt,u=this.c.dom.collection,d=Array.isArray(n)?n:[n],f=0,p=(d=void 0===n?Array.isArray(e)?e:[e]:d).length;f<p;f++){var h=this._resolveExtends(d[f]);if(h)if(a=!(!h.config||!h.config.split),Array.isArray(h))this._expandButton(t,h,void 0!==b&&void 0!==b.conf?b.conf.split:void 0,o,void 0!==r&&void 0!==r.split,s,r);else{var b=this._buildButton(h,o,void 0!==h.split||void 0!==h.config&&void 0!==h.config.split,i);if(b){if(null!=s?(t.splice(s,0,b),s++):t.push(b),b.conf.dropIcon&&!b.conf.split&&x(b.node).addClass(this.c.dom.button.dropClass).append(this.c.dom.button.dropHtml),b.conf.buttons&&(b.collection=x("<"+u.container.content.tag+"/>"),b.conf._collection=b.collection,this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)),b.conf.split){b.collection=x("<"+u.container.tag+"/>"),b.conf._collection=b.collection;for(var g=0;g<b.conf.split.length;g++){var m=b.conf.split[g];"object"==typeof m&&(m.parent=r,void 0===m.collectionLayout&&(m.collectionLayout=b.conf.collectionLayout),void 0===m.dropup&&(m.dropup=b.conf.dropup),void 0===m.fade)&&(m.fade=b.conf.fade)}this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)}b.conf.parent=r,h.init&&h.init.call(c.button(b.node),c,x(b.node),h),l=b.node}}}return l},_buildButton:function(n,t,e,o){function i(t){return"function"==typeof t?t(f,c,n):t}var s,r,a,l,c,u=this,d=this.c.dom,f=this.s.dt,p=!1,h=x.extend(!0,{},d.button);if(t&&e&&d.collection.split?x.extend(!0,h,d.collection.split.action):o||t?x.extend(!0,h,d.collection.button):e&&x.extend(!0,h,d.split.button),n.spacer)return d=x("<"+h.spacer.tag+"/>").addClass("dt-button-spacer "+n.style+" "+h.spacer.className).html(i(n.text)),{conf:n,node:d,nodeChild:null,inserter:d,buttons:[],inCollection:t,isSplit:e,collection:null,textNode:d};if(n.available&&!n.available(f,n)&&!n.html)return!1;n.html?c=x(n.html):(s=function(t,n,e,o,i){o.action.call(n.button(e),t,n,e,o,i),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o])},r=function(t,n,e,o){o.async?(u.processing(e[0],!0),setTimeout(function(){s(t,n,e,o,function(){u.processing(e[0],!1)})},o.async)):s(t,n,e,o,function(){})},d=n.tag||h.tag,a=void 0===n.clickBlurs||n.clickBlurs,c=x("<"+d+"/>").addClass(h.className).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(t){t.preventDefault(),!c.hasClass(h.disabled)&&n.action&&r(t,f,c,n),a&&c.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),!c.hasClass(h.disabled))&&n.action&&r(t,f,c,n)}),"a"===d.toLowerCase()&&c.attr("href","#"),"button"===d.toLowerCase()&&c.attr("type","button"),l=h.liner.tag?(d=h.liner.tag.toLowerCase(),l=x("<"+d+"/>").html(i(n.text)).addClass(h.liner.className),"a"===d&&l.attr("href","#"),"a"!==d&&"button"!==d||(l.attr("tabindex",this.s.dt.settings()[0].iTabIndex),p=!0),c.append(l),l):(c.html(i(n.text)),c),p||c.attr("tabindex",this.s.dt.settings()[0].iTabIndex),!1===n.enabled&&c.addClass(h.disabled),n.className&&c.addClass(n.className),n.titleAttr&&c.attr("title",i(n.titleAttr)),n.attr&&c.attr(n.attr),n.namespace||(n.namespace=".dt-button-"+C++),void 0!==n.config&&n.config.split&&(n.split=n.config.split));var b,g,m,v,d=this.c.dom.buttonContainer,p=d&&d.tag?x("<"+d.tag+"/>").addClass(d.className).append(c):c,y=(this._addKey(n),this.c.buttonCreated&&(p=this.c.buttonCreated(n,p)),e&&(y=(d=t?x.extend(!0,this.c.dom.split,this.c.dom.collection.split):this.c.dom.split).wrapper,b=x("<"+y.tag+"/>").addClass(y.className).append(c),g=x.extend(n,{autoClose:!0,align:d.dropdown.align,attr:{"aria-haspopup":"dialog","aria-expanded":!1},className:d.dropdown.className,closeButton:!1,splitAlignClass:d.dropdown.splitAlignClass,text:d.dropdown.text}),this._addKey(g),m=function(t,n,e,o){_.split.action.call(n.button(b),t,n,e,o),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o]),e.attr("aria-expanded",!0)},v=x('<button class="'+d.dropdown.className+' dt-button"></button>').html(this.c.dom.button.dropHtml).addClass(this.c.dom.button.dropClass).on("click.dtb",function(t){t.preventDefault(),t.stopPropagation(),v.hasClass(h.disabled)||m(t,f,v,g),a&&v.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),v.hasClass(h.disabled)||m(t,f,v,g))}),0===n.split.length&&v.addClass("dtb-hide-drop"),b.append(v).attr(g.attr)),(e?b:c).get(0));return{conf:n,node:y,nodeChild:y&&y.children&&y.children.length?y.children[0]:null,inserter:e?b:p,buttons:[],inCollection:t,isSplit:e,inSplit:o,collection:null,textNode:l}},_checkSplitEnable:function(t){t=t||this.s.buttons;for(var n=0;n<t.length;n++){var e,o=t[n];o.isSplit?(e=o.node.childNodes[1],(this._checkAnyEnabled(o.buttons)?x(e).removeClass(this.c.dom.button.disabled):x(e).addClass(this.c.dom.button.disabled)).prop("disabled",!1)):o.isCollection&&this._checkSplitEnable(o.buttons)}},_checkAnyEnabled:function(t){for(var n=0;n<t.length;n++)if(!t[n].disabled)return!0;return!1},_nodeToButton:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t||n[e].nodeChild===t)return n[e];if(n[e].buttons.length){var i=this._nodeToButton(t,n[e].buttons);if(i)return i}}},_nodeToHost:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n;if(n[e].buttons.length){var i=this._nodeToHost(t,n[e].buttons);if(i)return i}}},_keypress:function(s,r){var a;r._buttonsHandled||(a=function(t){for(var n,e,o=0,i=t.length;o<i;o++)n=t[o].conf,e=t[o].node,!n.key||n.key!==s&&(!x.isPlainObject(n.key)||n.key.key!==s||n.key.shiftKey&&!r.shiftKey||n.key.altKey&&!r.altKey||n.key.ctrlKey&&!r.ctrlKey||n.key.metaKey&&!r.metaKey)||(r._buttonsHandled=!0,x(e).click()),t[o].buttons.length&&a(t[o].buttons)})(this.s.buttons)},_removeKey:function(t){var n;t.key&&(t=(x.isPlainObject(t.key)?t.key:t).key,n=this.s.listenKeys.split(""),t=x.inArray(t,n),n.splice(t,1),this.s.listenKeys=n.join(""))},_resolveExtends:function(e){function t(t){for(var n=0;!x.isPlainObject(t)&&!Array.isArray(t);){if(void 0===t)return;if("function"==typeof t){if(!(t=t.call(i,s,e)))return!1}else if("string"==typeof t){if(!_[t])return{html:t};t=_[t]}if(30<++n)throw"Buttons: Too many iterations"}return Array.isArray(t)?t:x.extend({},t)}var n,o,i=this,s=this.s.dt;for(e=t(e);e&&e.extend;){if(!_[e.extend])throw"Cannot extend unknown button type: "+e.extend;var r=t(_[e.extend]);if(Array.isArray(r))return r;if(!r)return!1;var a=r.className;void 0!==e.config&&void 0!==r.config&&(e.config=x.extend({},r.config,e.config)),e=x.extend({},r,e),a&&e.className!==a&&(e.className=a+" "+e.className),e.extend=r.extend}var l=e.postfixButtons;if(l)for(e.buttons||(e.buttons=[]),n=0,o=l.length;n<o;n++)e.buttons.push(l[n]);var c=e.prefixButtons;if(c)for(e.buttons||(e.buttons=[]),n=0,o=c.length;n<o;n++)e.buttons.splice(n,0,c[n]);return e},_popover:function(o,t,n){function i(){p=!0,w(x(b),h.fade,function(){x(this).detach()}),x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()).attr("aria-expanded","false"),x("div.dt-button-background").off("click.dtb-collection"),A.background(!1,h.backgroundClassName,h.fade,g),x(m).off("resize.resize.dtb-collection"),x("body").off(".dtb-collection"),d.off("buttons-action.b-internal"),d.off("destroy"),x("body").trigger("buttons-popover-hide.dt")}var e,s,r,a,l,c,u,d=t,f=this.c,p=!1,h=x.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",closeButton:!0,containerClassName:f.dom.collection.container.className,contentClassName:f.dom.collection.container.content.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,popoverTitle:"",rightAlignClassName:"dt-button-right",tag:f.dom.collection.container.tag},n),b=h.tag+"."+h.containerClassName.replace(/ /g,"."),f=t.node(),g=h.collectionLayout.includes("fixed")?x("body"):t.node();!1===o?i():((n=x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes())).length&&(g.closest(b).length&&(g=n.eq(0)),i()),h.sort&&((n=x("button",o).map(function(t,n){return{text:x(n).text(),el:n}}).toArray()).sort(function(t,n){return t.text.localeCompare(n.text)}),x(o).append(n.map(function(t){return t.el}))),n=x(".dt-button",o).length,a="",3===n?a="dtb-b3":2===n?a="dtb-b2":1===n&&(a="dtb-b1"),e=x("<"+h.tag+"/>").addClass(h.containerClassName).addClass(h.collectionLayout).addClass(h.splitAlignClass).addClass(a).css("display","none").attr({"aria-modal":!0,role:"dialog"}),o=x(o).addClass(h.contentClassName).attr("role","menu").appendTo(e),f.attr("aria-expanded","true"),g.parents("body")[0]!==v.body&&(g=x(v.body).children("div, section, p").last()),h.popoverTitle?e.prepend('<div class="dt-button-collection-title">'+h.popoverTitle+"</div>"):h.collectionTitle&&e.prepend('<div class="dt-button-collection-title">'+h.collectionTitle+"</div>"),h.closeButton&&e.prepend('<div class="dtb-popover-close">&times;</div>').addClass("dtb-collection-closeable"),y(e.insertAfter(g),h.fade),n=x(t.table().container()),a=e.css("position"),"container"!==h.span&&"dt-container"!==h.align||(g=g.parent(),e.css("width",n.width())),"absolute"===a?(f=x(g[0].offsetParent),t=g.position(),n=g.offset(),a=f.offset(),s=f.position(),r=m.getComputedStyle(f[0]),a.height=f.outerHeight(),a.width=f.width()+parseFloat(r.paddingLeft),a.right=a.left+a.width,a.bottom=a.top+a.height,a=t.top+g.outerHeight(),l=t.left,e.css({top:a,left:l}),r=m.getComputedStyle(e[0]),(c=e.offset()).height=e.outerHeight(),c.width=e.outerWidth(),c.right=c.left+c.width,c.bottom=c.top+c.height,c.marginTop=parseFloat(r.marginTop),c.marginBottom=parseFloat(r.marginBottom),h.dropup&&(a=t.top-c.height-c.marginTop-c.marginBottom),"button-right"!==h.align&&!e.hasClass(h.rightAlignClassName)||(l=t.left-c.width+g.outerWidth()),"dt-container"!==h.align&&"container"!==h.align||l<t.left&&(l=-t.left),s.left+l+c.width>x(m).width()&&(l=x(m).width()-c.width-s.left),n.left+l<0&&(l=-n.left),s.top+a+c.height>x(m).height()+x(m).scrollTop()&&(a=t.top-c.height-c.marginTop-c.marginBottom),f.offset().top+a<x(m).scrollTop()&&(a=t.top+g.outerHeight()),e.css({top:a,left:l})):((u=function(){var t=x(m).height()/2,n=e.height()/2;e.css("marginTop",-1*(n=t<n?t:n))})(),x(m).on("resize.dtb-collection",function(){u()})),h.background&&A.background(!0,h.backgroundClassName,h.fade,h.backgroundHost||g),x("div.dt-button-background").on("click.dtb-collection",function(){}),h.autoClose&&setTimeout(function(){d.on("buttons-action.b-internal",function(t,n,e,o){o[0]!==g[0]&&i()})},0),x(e).trigger("buttons-popover.dt"),d.on("destroy",i),setTimeout(function(){p=!1,x("body").on("click.dtb-collection",function(t){var n,e;!p&&(n=x.fn.addBack?"addBack":"andSelf",e=x(t.target).parent()[0],!x(t.target).parents()[n]().filter(o).length&&!x(e).hasClass("dt-buttons")||x(t.target).hasClass("dt-button-background"))&&i()}).on("keyup.dtb-collection",function(t){27===t.keyCode&&i()}).on("keydown.dtb-collection",function(t){var n=x("a, button",o),e=v.activeElement;9===t.keyCode&&(-1===n.index(e)?(n.first().focus(),t.preventDefault()):t.shiftKey?e===n[0]&&(n.last().focus(),t.preventDefault()):e===n.last()[0]&&(n.first().focus(),t.preventDefault()))})},0))}}),A.background=function(t,n,e,o){void 0===e&&(e=400),o=o||v.body,t?y(x("<div/>").addClass(n).css("display","none").insertAfter(o),e):w(x("div."+n),e,function(){x(this).removeClass(n).remove()})},A.instanceSelector=function(t,s){var r,a,l;return null==t?x.map(s,function(t){return t.inst}):(r=[],a=x.map(s,function(t){return t.name}),(l=function(t){var n;if(Array.isArray(t))for(var e=0,o=t.length;e<o;e++)l(t[e]);else if("string"==typeof t)-1!==t.indexOf(",")?l(t.split(",")):-1!==(n=x.inArray(t.trim(),a))&&r.push(s[n].inst);else if("number"==typeof t)r.push(s[t].inst);else if("object"==typeof t&&t.nodeName)for(var i=0;i<s.length;i++)s[i].inst.dom.container[0]===t&&r.push(s[i].inst);else"object"==typeof t&&r.push(t)})(t),r)},A.buttonSelector=function(t,n){for(var c=[],u=function(t,n,e){for(var o,i,s=0,r=n.length;s<r;s++)(o=n[s])&&(t.push({node:o.node,name:o.conf.name,idx:i=void 0!==e?e+s:s+""}),o.buttons)&&u(t,o.buttons,i+"-")},d=function(t,n){var e=[],o=(u(e,n.s.buttons),x.map(e,function(t){return t.node}));if(Array.isArray(t)||t instanceof x)for(s=0,r=t.length;s<r;s++)d(t[s],n);else if(null==t||"*"===t)for(s=0,r=e.length;s<r;s++)c.push({inst:n,node:e[s].node});else if("number"==typeof t)n.s.buttons[t]&&c.push({inst:n,node:n.s.buttons[t].node});else if("string"==typeof t)if(-1!==t.indexOf(","))for(var i=t.split(","),s=0,r=i.length;s<r;s++)d(i[s].trim(),n);else if(t.match(/^\d+(\-\d+)*$/)){var a=x.map(e,function(t){return t.idx});c.push({inst:n,node:e[x.inArray(t,a)].node})}else if(-1!==t.indexOf(":name")){var l=t.replace(":name","");for(s=0,r=e.length;s<r;s++)e[s].name===l&&c.push({inst:n,node:e[s].node})}else x(o).filter(t).each(function(){c.push({inst:n,node:this})});else"object"==typeof t&&t.nodeName&&-1!==(a=x.inArray(t,o))&&c.push({inst:n,node:o[a]})},e=0,o=t.length;e<o;e++){var i=t[e];d(n,i)}return c},A.stripData=function(t,n){return t="string"==typeof(t=null!==t&&"object"==typeof t&&t.nodeName&&t.nodeType?t.innerHTML:t)&&(t=A.stripHtmlScript(t),t=A.stripHtmlComments(t),n&&!n.stripHtml||(t=e.util.stripHtml(t)),n&&!n.trim||(t=t.trim()),n&&!n.stripNewlines||(t=t.replace(/\n/g," ")),n&&!n.decodeEntities||(t=i?i(t):(c.innerHTML=t,c.value)),!n||n.escapeExcelFormula)&&t.match(/^[=@\t\r]/)?"'"+t:t},A.entityDecoder=function(t){i=t},A.stripHtmlComments=function(t){for(var n;(t=(n=t).replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g,""))!==n;);return t},A.stripHtmlScript=function(t){for(var n;(t=(n=t).replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi,""))!==n;);return t},A.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{container:{className:"dt-button-collection",content:{className:"",tag:"div"},tag:"div"}},button:{tag:"button",className:"dt-button",active:"dt-button-active",disabled:"disabled",spacer:{className:"dt-button-spacer",tag:"span"},liner:{tag:"span",className:""},dropClass:"",dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>'},split:{action:{className:"dt-button-split-drop-button dt-button",tag:"button"},dropdown:{align:"split-right",className:"dt-button-split-drop",splitAlignClass:"dt-button-split-left",tag:"button"},wrapper:{className:"dt-button-split",tag:"div"}}}},x.extend(_,{collection:{text:function(t){return t.i18n("buttons.collection","Collection")},className:"buttons-collection",closeButton:!(A.version="3.2.5"),dropIcon:!0,init:function(t,n){n.attr("aria-expanded",!1)},action:function(t,n,e,o){o._collection.parents("body").length?this.popover(!1,o):this.popover(o._collection,o),"keypress"===t.type&&x("a, button",o._collection).eq(0).focus()},attr:{"aria-haspopup":"dialog"}},split:{text:function(t){return t.i18n("buttons.split","Split")},className:"buttons-split",closeButton:!1,init:function(t,n){return n.attr("aria-expanded",!1)},action:function(t,n,e,o){this.popover(o._collection,o)},attr:{"aria-haspopup":"dialog"}},copy:function(){if(_.copyHtml5)return"copyHtml5"},csv:function(t,n){if(_.csvHtml5&&_.csvHtml5.available(t,n))return"csvHtml5"},excel:function(t,n){if(_.excelHtml5&&_.excelHtml5.available(t,n))return"excelHtml5"},pdf:function(t,n){if(_.pdfHtml5&&_.pdfHtml5.available(t,n))return"pdfHtml5"},pageLength:function(t){var n=t.settings()[0].aLengthMenu,e=[],o=[];if(Array.isArray(n[0]))e=n[0],o=n[1];else for(var i=0;i<n.length;i++){var s=n[i];x.isPlainObject(s)?(e.push(s.value),o.push(s.label)):(e.push(s),o.push(s))}return{extend:"collection",text:function(t){return t.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},t.page.len())},className:"buttons-page-length",autoClose:!0,buttons:x.map(e,function(s,t){return{text:o[t],className:"button-page-length",action:function(t,n){n.page.len(s).draw()},init:function(t,n,e){function o(){i.active(t.page.len()===s)}var i=this;t.on("length.dt"+e.namespace,o),o()},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}}),init:function(t,n,e){var o=this;t.on("length.dt"+e.namespace,function(){o.text(e.text)})},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}},spacer:{style:"empty",spacer:!0,text:function(t){return t.i18n("buttons.spacer","")}}}),e.Api.register("buttons()",function(n,e){void 0===e&&(e=n,n=void 0),this.selector.buttonGroup=n;var t=this.iterator(!0,"table",function(t){if(t._buttons)return A.buttonSelector(A.instanceSelector(n,t._buttons),e)},!0);return t._groupSelector=n,t}),e.Api.register("button()",function(t,n){t=this.buttons(t,n);return 1<t.length&&t.splice(1,t.length),t}),e.Api.registerPlural("buttons().active()","button().active()",function(n){return void 0===n?this.map(function(t){return t.inst.active(t.node)}):this.each(function(t){t.inst.active(t.node,n)})}),e.Api.registerPlural("buttons().action()","button().action()",function(n){return void 0===n?this.map(function(t){return t.inst.action(t.node)}):this.each(function(t){t.inst.action(t.node,n)})}),e.Api.registerPlural("buttons().collectionRebuild()","button().collectionRebuild()",function(e){return this.each(function(t){for(var n=0;n<e.length;n++)"object"==typeof e[n]&&(e[n].parentConf=t);t.inst.collectionRebuild(t.node,e)})}),e.Api.register(["buttons().enable()","button().enable()"],function(n){return this.each(function(t){t.inst.enable(t.node,n)})}),e.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(t){t.inst.disable(t.node)})}),e.Api.register("button().index()",function(){var n=null;return this.each(function(t){t=t.inst.index(t.node);null!==t&&(n=t)}),n}),e.Api.registerPlural("buttons().nodes()","button().node()",function(){var n=x();return x(this.each(function(t){n=n.add(t.inst.node(t.node))})),n}),e.Api.registerPlural("buttons().processing()","button().processing()",function(n){return void 0===n?this.map(function(t){return t.inst.processing(t.node)}):this.each(function(t){t.inst.processing(t.node,n)})}),e.Api.registerPlural("buttons().text()","button().text()",function(n){return void 0===n?this.map(function(t){return t.inst.text(t.node)}):this.each(function(t){t.inst.text(t.node,n)})}),e.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(t){t.inst.node(t.node).trigger("click")})}),e.Api.register("button().popover()",function(n,e){return this.map(function(t){return t.inst._popover(n,this.button(this[0].node),e)})}),e.Api.register("buttons().containers()",function(){var i=x(),s=this._groupSelector;return this.iterator(!0,"table",function(t){if(t._buttons)for(var n=A.instanceSelector(s,t._buttons),e=0,o=n.length;e<o;e++)i=i.add(n[e].container())}),i}),e.Api.register("buttons().container()",function(){return this.containers().eq(0)}),e.Api.register("button().add()",function(t,n,e){var o,i=this.context;return(o=i.length&&(i=A.instanceSelector(this._groupSelector,i[0]._buttons)).length?i[0].add(n,t,e):o)?this.button(this._groupSelector,o):this}),e.Api.register("buttons().destroy()",function(){return this.pluck("inst").unique().each(function(t){t.destroy()}),this}),e.Api.registerPlural("buttons().remove()","buttons().remove()",function(){return this.each(function(t){t.inst.remove(t.node)}),this}),e.Api.register("buttons.info()",function(t,n,e){var o=this;return!1===t?(this.off("destroy.btn-info"),w(x("#datatables_buttons_info"),400,function(){x(this).remove()}),clearTimeout(s),s=null):(s&&clearTimeout(s),x("#datatables_buttons_info").length&&x("#datatables_buttons_info").remove(),t=t?"<h2>"+t+"</h2>":"",y(x('<div id="datatables_buttons_info" class="dt-button-info"/>').html(t).append(x("<div/>")["string"==typeof n?"html":"append"](n)).css("display","none").appendTo("body")),void 0!==e&&0!==e&&(s=setTimeout(function(){o.buttons.info(!1)},e)),this.on("destroy.btn-info",function(){o.buttons.info(!1)})),this}),e.Api.register("buttons.exportData()",function(t){if(this.context.length)return u(new e.Api(this.context[0]),t)}),e.Api.register("buttons.exportInfo()",function(t){return{filename:n(t=t||{},this),title:a(t,this),messageTop:l(this,t,t.message||t.messageTop,"top"),messageBottom:l(this,t,t.messageBottom,"bottom")}});var s,n=function(t,n){var e;return null==(e="function"==typeof(e="*"===t.filename&&"*"!==t.title&&void 0!==t.title&&null!==t.title&&""!==t.title?t.title:t.filename)?e(t,n):e)?null:(e=(e=-1!==e.indexOf("*")?e.replace(/\*/g,x("head > title").text()).trim():e).replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""))+(r(t.extension,t,n)||"")},r=function(t,n,e){return null==t?null:"function"==typeof t?t(n,e):t},a=function(t,n){t=r(t.title,t,n);return null===t?null:-1!==t.indexOf("*")?t.replace(/\*/g,x("head > title").text()||"Exported data"):t},l=function(t,n,e,o){e=r(e,n,t);return null===e?null:(n=x("caption",t.table().container()).eq(0),"*"===e?n.css("caption-side")!==o?null:n.length?n.text():"":e)},c=x("<textarea/>")[0],u=function(i,t){for(var s=x.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,escapeExcelFormula:!1,trim:!0,format:{header:function(t){return A.stripData(t,s)},footer:function(t){return A.stripData(t,s)},body:function(t){return A.stripData(t,s)}},customizeData:null,customizeZip:null},t),t=i.columns(s.columns).indexes().map(function(t){var n=i.column(t);return s.format.header(n.title(),t,n.header())}).toArray(),n=i.table().footer()?i.columns(s.columns).indexes().map(function(t){var n,e=i.column(t).footer(),o="";return e&&(o=((n=x(".dt-column-title",e)).length?n:x(e)).html()),s.format.footer(o,t,e)}).toArray():null,e=x.extend({},s.modifier),o=(i.select&&"function"==typeof i.select.info&&void 0===e.selected&&i.rows(s.rows,x.extend({selected:!0},e)).any()&&x.extend(e,{selected:!0}),i.rows(s.rows,e).indexes().toArray()),o=i.cells(o,s.columns,{order:e.order}),r=o.render(s.orthogonal).toArray(),a=o.nodes().toArray(),l=o.indexes().toArray(),c=i.columns(s.columns).count(),u=[],d=0,f=0,p=0<c?r.length/c:0;f<p;f++){for(var h=[c],b=0;b<c;b++)h[b]=s.format.body(r[d],l[d].row,l[d].column,a[d]),d++;u[f]=h}e={header:t,headerStructure:g(s.format.header,i.table().header.structure(s.columns)),footer:n,footerStructure:g(s.format.footer,i.table().footer.structure(s.columns)),body:u};return s.customizeData&&s.customizeData(e),e};function g(t,n){for(var e=0;e<n.length;e++)for(var o=0;o<n[e].length;o++){var i=n[e][o];i&&(i.title=t(i.title,o,i.cell))}return n}function t(t,n){t=new e.Api(t),n=n||t.init().buttons||e.defaults.buttons;return new A(t,n).container()}return x.fn.dataTable.Buttons=A,x.fn.DataTable.Buttons=A,x(v).on("init.dt plugin-init.dt",function(t,n){"dt"===t.namespace&&(t=n.oInit.buttons||e.defaults.buttons)&&!n._buttons&&new A(n,t).container()}),e.ext.feature.push({fnInit:t,cFeature:"B"}),e.feature&&e.feature.register("buttons",t),e});
51
(e=>{var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,t,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)})(function(x,m,v){var e=x.fn.dataTable,o=0,C=0,_=e.ext.buttons,i=null;function y(t,n,e){x.fn.animate?t.stop().fadeIn(n,e):(t.css("display","block"),e&&e.call(t))}function w(t,n,e){x.fn.animate?t.stop().fadeOut(n,e):(t.css("display","none"),e&&e.call(t))}function A(n,t){if(!e.versionCheck("2"))throw"Warning: Buttons requires DataTables 2 or newer";if(!(this instanceof A))return function(t){return new A(t,n).container()};!0===(t=void 0===t?{}:t)&&(t={}),Array.isArray(t)&&(t={buttons:t}),this.c=x.extend(!0,{},A.defaults,t),t.buttons&&(this.c.buttons=t.buttons),this.s={dt:new e.Api(n),buttons:[],listenKeys:"",namespace:"dtb"+o++},this.dom={container:x("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)},this._constructor()}x.extend(A.prototype,{action:function(t,n){t=this._nodeToButton(t);return void 0===n?t.conf.action:(t.conf.action=n,this)},active:function(t,n){var t=this._nodeToButton(t),e=this.c.dom.button.active,o=x(t.node);return t.inCollection&&this.c.dom.collection.button&&void 0!==this.c.dom.collection.button.active&&(e=this.c.dom.collection.button.active),void 0===n?o.hasClass(e):(o.toggleClass(e,void 0===n||n),this)},add:function(t,n,e){var o=this.s.buttons;if("string"==typeof n){for(var i=n.split("-"),s=this.s,r=0,a=i.length-1;r<a;r++)s=s.buttons[+i[r]];o=s.buttons,n=+i[i.length-1]}o=this._expandButton(o,t,void 0!==t?t.split:void 0,(void 0===t||void 0===t.split||0===t.split.length)&&void 0!==s,!1,n);return void 0!==e&&!0!==e||this._draw(),o},collectionRebuild:function(t,n){var e=this._nodeToButton(t);if(void 0!==n){for(var o=e.buttons.length-1;0<=o;o--)this.remove(e.buttons[o].node);for(e.conf.prefixButtons&&n.unshift.apply(n,e.conf.prefixButtons),e.conf.postfixButtons&&n.push.apply(n,e.conf.postfixButtons),o=0;o<n.length;o++){var i=n[o];this._expandButton(e.buttons,i,void 0!==i&&void 0!==i.config&&void 0!==i.config.split,!0,void 0!==i.parentConf&&void 0!==i.parentConf.split,null,i.parentConf)}}this._draw(e.collection,e.buttons)},container:function(){return this.dom.container},disable:function(t){t=this._nodeToButton(t);return(t.isSplit?x(t.node.childNodes[0]):x(t.node)).addClass(this.c.dom.button.disabled).prop("disabled",!0),t.disabled=!0,this._checkSplitEnable(),this},destroy:function(){x("body").off("keyup."+this.s.namespace);for(var t=this.s.buttons.slice(),n=0,e=t.length;n<e;n++)this.remove(t[n].node);this.dom.container.remove();var o=this.s.dt.settings()[0];for(n=0,e=o.length;n<e;n++)if(o.inst===this){o.splice(n,1);break}return this},enable:function(t,n){return!1===n?this.disable(t):(((n=this._nodeToButton(t)).isSplit?x(n.node.childNodes[0]):x(n.node)).removeClass(this.c.dom.button.disabled).prop("disabled",!1),n.disabled=!1,this._checkSplitEnable(),this)},index:function(t,n,e){n||(n="",e=this.s.buttons);for(var o=0,i=e.length;o<i;o++){var s=e[o].buttons;if(e[o].node===t)return n+o;if(s&&s.length){s=this.index(t,o+"-",s);if(null!==s)return s}}return null},name:function(){return this.c.name},node:function(t){return t?(t=this._nodeToButton(t),x(t.node)):this.dom.container},processing:function(t,n){var e=this.s.dt,o=this._nodeToButton(t);return void 0===n?x(o.node).hasClass("processing"):(x(o.node).toggleClass("processing",n),x(e.table().node()).triggerHandler("buttons-processing.dt",[n,e.button(t),e,x(t),o.conf]),this)},remove:function(t){var n=this._nodeToButton(t),e=this._nodeToHost(t),o=this.s.dt;if(n.buttons.length)for(var i=n.buttons.length-1;0<=i;i--)this.remove(n.buttons[i].node);n.conf.destroying=!0,n.conf.destroy&&n.conf.destroy.call(o.button(t),o,x(t),n.conf),this._removeKey(n.conf),x(n.node).remove(),n.inserter&&x(n.inserter).remove();o=x.inArray(n,e);return e.splice(o,1),this},text:function(t,n){function e(t){return"function"==typeof t?t(i,s,o.conf):t}var o=this._nodeToButton(t),t=o.textNode,i=this.s.dt,s=x(o.node);return void 0===n?e(o.conf.text):(o.conf.text=n,t.html(e(n)),this)},_constructor:function(){var e=this,t=this.s.dt,o=t.settings()[0],n=this.c.buttons;o._buttons||(o._buttons=[]),o._buttons.push({inst:this,name:this.c.name});for(var i=0,s=n.length;i<s;i++)this.add(n[i]);t.on("destroy",function(t,n){n===o&&e.destroy()}),x("body").on("keyup."+this.s.namespace,function(t){var n;v.activeElement&&v.activeElement!==v.body||(n=String.fromCharCode(t.keyCode).toLowerCase(),-1!==e.s.listenKeys.toLowerCase().indexOf(n)&&e._keypress(n,t))})},_addKey:function(t){t.key&&(this.s.listenKeys+=(x.isPlainObject(t.key)?t.key:t).key)},_draw:function(t,n){t||(t=this.dom.container,n=this.s.buttons),t.children().detach();for(var e=0,o=n.length;e<o;e++)t.append(n[e].inserter),t.append(" "),n[e].buttons&&n[e].buttons.length&&this._draw(n[e].collection,n[e].buttons)},_expandButton:function(t,n,e,o,i,s,r){for(var a,l,c=this.s.dt,u=this.c.dom.collection,d=Array.isArray(n)?n:[n],f=0,p=(d=void 0===n?Array.isArray(e)?e:[e]:d).length;f<p;f++){var h=this._resolveExtends(d[f]);if(h)if(a=!(!h.config||!h.config.split),Array.isArray(h))this._expandButton(t,h,void 0!==b&&void 0!==b.conf?b.conf.split:void 0,o,void 0!==r&&void 0!==r.split,s,r);else{var b=this._buildButton(h,o,void 0!==h.split||void 0!==h.config&&void 0!==h.config.split,i);if(b){if(null!=s?(t.splice(s,0,b),s++):t.push(b),b.conf.dropIcon&&!b.conf.split&&x(b.node).addClass(this.c.dom.button.dropClass).append(this.c.dom.button.dropHtml),b.conf.buttons&&(b.collection=x("<"+u.container.content.tag+"/>"),b.conf._collection=b.collection,this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)),b.conf.split){b.collection=x("<"+u.container.tag+"/>"),b.conf._collection=b.collection;for(var g=0;g<b.conf.split.length;g++){var m=b.conf.split[g];"object"==typeof m&&(m.parent=r,void 0===m.collectionLayout&&(m.collectionLayout=b.conf.collectionLayout),void 0===m.dropup&&(m.dropup=b.conf.dropup),void 0===m.fade)&&(m.fade=b.conf.fade)}this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)}b.conf.parent=r,h.init&&h.init.call(c.button(b.node),c,x(b.node),h),l=b.node}}}return l},_buildButton:function(n,t,e,o){function i(t){return"function"==typeof t?t(f,c,n):t}var s,r,a,l,c,u=this,d=this.c.dom,f=this.s.dt,p=!1,h=x.extend(!0,{},d.button);if(t&&e&&d.collection.split?x.extend(!0,h,d.collection.split.action):o||t?x.extend(!0,h,d.collection.button):e&&x.extend(!0,h,d.split.button),n.spacer)return d=x("<"+h.spacer.tag+"/>").addClass("dt-button-spacer "+n.style+" "+h.spacer.className).html(i(n.text)),{conf:n,node:d,nodeChild:null,inserter:d,buttons:[],inCollection:t,isSplit:e,collection:null,textNode:d};if(n.available&&!n.available(f,n)&&!n.html)return!1;n.html?c=x(n.html):(s=function(t,n,e,o,i){o.action.call(n.button(e),t,n,e,o,i),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o])},r=function(t,n,e,o){o.async?(u.processing(e[0],!0),setTimeout(function(){s(t,n,e,o,function(){u.processing(e[0],!1)})},o.async)):s(t,n,e,o,function(){})},d=n.tag||h.tag,a=void 0===n.clickBlurs||n.clickBlurs,c=x("<"+d+"/>").addClass(h.className).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(t){t.preventDefault(),!c.hasClass(h.disabled)&&n.action&&r(t,f,c,n),a&&c.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),!c.hasClass(h.disabled))&&n.action&&r(t,f,c,n)}),"a"===d.toLowerCase()&&c.attr("href","#"),"button"===d.toLowerCase()&&c.attr("type","button"),l=h.liner.tag?(d=h.liner.tag.toLowerCase(),l=x("<"+d+"/>").html(i(n.text)).addClass(h.liner.className),"a"===d&&l.attr("href","#"),"a"!==d&&"button"!==d||(l.attr("tabindex",this.s.dt.settings()[0].iTabIndex),p=!0),c.append(l),l):(c.html(i(n.text)),c),p||c.attr("tabindex",this.s.dt.settings()[0].iTabIndex),!1===n.enabled&&c.addClass(h.disabled),n.className&&c.addClass(n.className),n.titleAttr&&c.attr("title",i(n.titleAttr)),n.attr&&c.attr(n.attr),n.namespace||(n.namespace=".dt-button-"+C++),void 0!==n.config&&n.config.split&&(n.split=n.config.split));var b,g,m,v,d=this.c.dom.buttonContainer,p=d&&d.tag?x("<"+d.tag+"/>").addClass(d.className).append(c):c,y=(this._addKey(n),this.c.buttonCreated&&(p=this.c.buttonCreated(n,p)),e&&(y=(d=t?x.extend(!0,this.c.dom.split,this.c.dom.collection.split):this.c.dom.split).wrapper,b=x("<"+y.tag+"/>").addClass(y.className).append(c),g=x.extend(n,{autoClose:!0,align:d.dropdown.align,attr:{"aria-haspopup":"dialog","aria-expanded":!1},className:d.dropdown.className,closeButton:!1,splitAlignClass:d.dropdown.splitAlignClass,text:d.dropdown.text}),this._addKey(g),m=function(t,n,e,o){_.split.action.call(n.button(b),t,n,e,o),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o]),e.attr("aria-expanded",!0)},v=x('<button class="'+d.dropdown.className+' dt-button"></button>').html(this.c.dom.button.dropHtml).addClass(this.c.dom.button.dropClass).on("click.dtb",function(t){t.preventDefault(),t.stopPropagation(),v.hasClass(h.disabled)||m(t,f,v,g),a&&v.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),v.hasClass(h.disabled)||m(t,f,v,g))}),0===n.split.length&&v.addClass("dtb-hide-drop"),b.append(v).attr(g.attr)),(e?b:c).get(0));return{conf:n,node:y,nodeChild:y&&y.children&&y.children.length?y.children[0]:null,inserter:e?b:p,buttons:[],inCollection:t,isSplit:e,inSplit:o,collection:null,textNode:l}},_checkSplitEnable:function(t){t=t||this.s.buttons;for(var n=0;n<t.length;n++){var e,o=t[n];o.isSplit?(e=o.node.childNodes[1],(this._checkAnyEnabled(o.buttons)?x(e).removeClass(this.c.dom.button.disabled):x(e).addClass(this.c.dom.button.disabled)).prop("disabled",!1)):o.isCollection&&this._checkSplitEnable(o.buttons)}},_checkAnyEnabled:function(t){for(var n=0;n<t.length;n++)if(!t[n].disabled)return!0;return!1},_nodeToButton:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t||n[e].nodeChild===t)return n[e];if(n[e].buttons.length){var i=this._nodeToButton(t,n[e].buttons);if(i)return i}}},_nodeToHost:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n;if(n[e].buttons.length){var i=this._nodeToHost(t,n[e].buttons);if(i)return i}}},_keypress:function(s,r){var a;r._buttonsHandled||(a=function(t){for(var n,e,o=0,i=t.length;o<i;o++)n=t[o].conf,e=t[o].node,!n.key||n.key!==s&&(!x.isPlainObject(n.key)||n.key.key!==s||n.key.shiftKey&&!r.shiftKey||n.key.altKey&&!r.altKey||n.key.ctrlKey&&!r.ctrlKey||n.key.metaKey&&!r.metaKey)||(r._buttonsHandled=!0,x(e).click()),t[o].buttons.length&&a(t[o].buttons)})(this.s.buttons)},_removeKey:function(t){var n;t.key&&(t=(x.isPlainObject(t.key)?t.key:t).key,n=this.s.listenKeys.split(""),t=x.inArray(t,n),n.splice(t,1),this.s.listenKeys=n.join(""))},_resolveExtends:function(e){function t(t){for(var n=0;!x.isPlainObject(t)&&!Array.isArray(t);){if(void 0===t)return;if("function"==typeof t){if(!(t=t.call(i,s,e)))return!1}else if("string"==typeof t){if(!_[t])return{html:t};t=_[t]}if(30<++n)throw"Buttons: Too many iterations"}return Array.isArray(t)?t:x.extend({},t)}var n,o,i=this,s=this.s.dt;for(e=t(e);e&&e.extend;){if(!_[e.extend])throw"Cannot extend unknown button type: "+e.extend;var r=t(_[e.extend]);if(Array.isArray(r))return r;if(!r)return!1;var a=r.className;void 0!==e.config&&void 0!==r.config&&(e.config=x.extend({},r.config,e.config)),e=x.extend({},r,e),a&&e.className!==a&&(e.className=a+" "+e.className),e.extend=r.extend}var l=e.postfixButtons;if(l)for(e.buttons||(e.buttons=[]),n=0,o=l.length;n<o;n++)e.buttons.push(l[n]);var c=e.prefixButtons;if(c)for(e.buttons||(e.buttons=[]),n=0,o=c.length;n<o;n++)e.buttons.splice(n,0,c[n]);return e},_popover:function(o,t,n){function i(){p=!0,w(x(b),h.fade,function(){x(this).detach()}),x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()).attr("aria-expanded","false"),x("div.dt-button-background").off("click.dtb-collection"),A.background(!1,h.backgroundClassName,h.fade,g),x(m).off("resize.resize.dtb-collection"),x("body").off(".dtb-collection"),d.off("buttons-action.b-internal"),d.off("destroy.dtb-popover"),x("body").trigger("buttons-popover-hide.dt")}var e,s,r,a,l,c,u,d=t,f=this.c,p=!1,h=x.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",closeButton:!0,containerClassName:f.dom.collection.container.className,contentClassName:f.dom.collection.container.content.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,popoverTitle:"",rightAlignClassName:"dt-button-right",tag:f.dom.collection.container.tag},n),b=h.tag+"."+h.containerClassName.replace(/ /g,"."),f=t.node(),g=h.collectionLayout.includes("fixed")?x("body"):t.node();!1===o?i():((n=x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes())).length&&(g.closest(b).length&&(g=n.eq(0)),i()),h.sort&&((n=x("button",o).map(function(t,n){return{text:x(n).text(),el:n}}).toArray()).sort(function(t,n){return t.text.localeCompare(n.text)}),x(o).append(n.map(function(t){return t.el}))),n=x(".dt-button",o).length,a="",3===n?a="dtb-b3":2===n?a="dtb-b2":1===n&&(a="dtb-b1"),e=x("<"+h.tag+"/>").addClass(h.containerClassName).addClass(h.collectionLayout).addClass(h.splitAlignClass).addClass(a).css("display","none").attr({"aria-modal":!0,role:"dialog"}),o=x(o).addClass(h.contentClassName).attr("role","menu").appendTo(e),f.attr("aria-expanded","true"),g.parents("body")[0]!==v.body&&(g=x(v.body).children("div, section, p").last()),h.popoverTitle?e.prepend('<div class="dt-button-collection-title">'+h.popoverTitle+"</div>"):h.collectionTitle&&e.prepend('<div class="dt-button-collection-title">'+h.collectionTitle+"</div>"),h.closeButton&&e.prepend('<div class="dtb-popover-close">&times;</div>').addClass("dtb-collection-closeable"),y(e.insertAfter(g),h.fade),n=x(t.table().container()),a=e.css("position"),"container"!==h.span&&"dt-container"!==h.align||(g=g.parent(),e.css("width",n.width())),"absolute"===a?(f=x(g[0].offsetParent),t=g.position(),n=g.offset(),a=f.offset(),s=f.position(),r=m.getComputedStyle(f[0]),a.height=f.outerHeight(),a.width=f.width()+parseFloat(r.paddingLeft),a.right=a.left+a.width,a.bottom=a.top+a.height,a=t.top+g.outerHeight(),l=t.left,e.css({top:a,left:l}),r=m.getComputedStyle(e[0]),(c=e.offset()).height=e.outerHeight(),c.width=e.outerWidth(),c.right=c.left+c.width,c.bottom=c.top+c.height,c.marginTop=parseFloat(r.marginTop),c.marginBottom=parseFloat(r.marginBottom),h.dropup&&(a=t.top-c.height-c.marginTop-c.marginBottom),"button-right"!==h.align&&!e.hasClass(h.rightAlignClassName)||(l=t.left-c.width+g.outerWidth()),"dt-container"!==h.align&&"container"!==h.align||l<t.left&&(l=-t.left),s.left+l+c.width>x(m).width()&&(l=x(m).width()-c.width-s.left),n.left+l<0&&(l=-n.left),s.top+a+c.height>x(m).height()+x(m).scrollTop()&&(a=t.top-c.height-c.marginTop-c.marginBottom),f.offset().top+a<x(m).scrollTop()&&(a=t.top+g.outerHeight()),e.css({top:a,left:l})):((u=function(){var t=x(m).height()/2,n=e.height()/2;e.css("marginTop",-1*(n=t<n?t:n))})(),x(m).on("resize.dtb-collection",function(){u()})),h.background&&A.background(!0,h.backgroundClassName,h.fade,h.backgroundHost||g),x("div.dt-button-background").on("click.dtb-collection",function(){}),h.autoClose&&setTimeout(function(){d.on("buttons-action.b-internal",function(t,n,e,o){o[0]!==g[0]&&i()})},0),x(e).trigger("buttons-popover.dt"),d.on("destroy.dtb-popover",i),setTimeout(function(){p=!1,x("body").on("click.dtb-collection",function(t){var n,e;!p&&(n=x.fn.addBack?"addBack":"andSelf",e=x(t.target).parent()[0],!x(t.target).parents()[n]().filter(o).length&&!x(e).hasClass("dt-buttons")||x(t.target).hasClass("dt-button-background"))&&i()}).on("keyup.dtb-collection",function(t){27===t.keyCode&&i()}).on("keydown.dtb-collection",function(t){var n=x("a, button",o),e=v.activeElement;9===t.keyCode&&(-1===n.index(e)?(n.first().focus(),t.preventDefault()):t.shiftKey?e===n[0]&&(n.last().focus(),t.preventDefault()):e===n.last()[0]&&(n.first().focus(),t.preventDefault()))})},0))}}),A.background=function(t,n,e,o){void 0===e&&(e=400),o=o||v.body,t?y(x("<div/>").addClass(n).css("display","none").insertAfter(o),e):w(x("div."+n),e,function(){x(this).removeClass(n).remove()})},A.instanceSelector=function(t,s){var r,a,l;return null==t?x.map(s,function(t){return t.inst}):(r=[],a=x.map(s,function(t){return t.name}),(l=function(t){var n;if(Array.isArray(t))for(var e=0,o=t.length;e<o;e++)l(t[e]);else if("string"==typeof t)-1!==t.indexOf(",")?l(t.split(",")):-1!==(n=x.inArray(t.trim(),a))&&r.push(s[n].inst);else if("number"==typeof t)r.push(s[t].inst);else if("object"==typeof t&&t.nodeName)for(var i=0;i<s.length;i++)s[i].inst.dom.container[0]===t&&r.push(s[i].inst);else"object"==typeof t&&r.push(t)})(t),r)},A.buttonSelector=function(t,n){for(var c=[],u=function(t,n,e){for(var o,i,s=0,r=n.length;s<r;s++)(o=n[s])&&(t.push({node:o.node,name:o.conf.name,idx:i=void 0!==e?e+s:s+""}),o.buttons)&&u(t,o.buttons,i+"-")},d=function(t,n){var e=[],o=(u(e,n.s.buttons),x.map(e,function(t){return t.node}));if(Array.isArray(t)||t instanceof x)for(s=0,r=t.length;s<r;s++)d(t[s],n);else if(null==t||"*"===t)for(s=0,r=e.length;s<r;s++)c.push({inst:n,node:e[s].node});else if("number"==typeof t)n.s.buttons[t]&&c.push({inst:n,node:n.s.buttons[t].node});else if("string"==typeof t)if(-1!==t.indexOf(","))for(var i=t.split(","),s=0,r=i.length;s<r;s++)d(i[s].trim(),n);else if(t.match(/^\d+(\-\d+)*$/)){var a=x.map(e,function(t){return t.idx});c.push({inst:n,node:e[x.inArray(t,a)].node})}else if(-1!==t.indexOf(":name")){var l=t.replace(":name","");for(s=0,r=e.length;s<r;s++)e[s].name===l&&c.push({inst:n,node:e[s].node})}else x(o).filter(t).each(function(){c.push({inst:n,node:this})});else"object"==typeof t&&t.nodeName&&-1!==(a=x.inArray(t,o))&&c.push({inst:n,node:o[a]})},e=0,o=t.length;e<o;e++){var i=t[e];d(n,i)}return c},A.stripData=function(t,n){return t="string"==typeof(t=null!==t&&"object"==typeof t&&t.nodeName&&t.nodeType?t.innerHTML:t)&&(t=A.stripHtmlScript(t),t=A.stripHtmlComments(t),n&&!n.stripHtml||(t=e.util.stripHtml(t)),n&&!n.trim||(t=t.trim()),n&&!n.stripNewlines||(t=t.replace(/\n/g," ")),n&&!n.decodeEntities||(t=i?i(t):(c.innerHTML=t,c.value)),!n||n.escapeExcelFormula)&&t.match(/^[=@\t\r]/)?"'"+t:t},A.entityDecoder=function(t){i=t},A.stripHtmlComments=function(t){for(var n;(t=(n=t).replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g,""))!==n;);return t},A.stripHtmlScript=function(t){for(var n;(t=(n=t).replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi,""))!==n;);return t},A.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{container:{className:"dt-button-collection",content:{className:"",tag:"div"},tag:"div"}},button:{tag:"button",className:"dt-button",active:"dt-button-active",disabled:"disabled",spacer:{className:"dt-button-spacer",tag:"span"},liner:{tag:"span",className:""},dropClass:"",dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>'},split:{action:{className:"dt-button-split-drop-button dt-button",tag:"button"},dropdown:{align:"split-right",className:"dt-button-split-drop",splitAlignClass:"dt-button-split-left",tag:"button"},wrapper:{className:"dt-button-split",tag:"div"}}}},x.extend(_,{collection:{text:function(t){return t.i18n("buttons.collection","Collection")},className:"buttons-collection",closeButton:!(A.version="3.2.6"),dropIcon:!0,init:function(t,n){n.attr("aria-expanded",!1)},action:function(t,n,e,o){o._collection.parents("body").length?this.popover(!1,o):this.popover(o._collection,o),"keypress"===t.type&&x("a, button",o._collection).eq(0).focus()},attr:{"aria-haspopup":"dialog"}},split:{text:function(t){return t.i18n("buttons.split","Split")},className:"buttons-split",closeButton:!1,init:function(t,n){return n.attr("aria-expanded",!1)},action:function(t,n,e,o){this.popover(o._collection,o)},attr:{"aria-haspopup":"dialog"}},copy:function(){if(_.copyHtml5)return"copyHtml5"},csv:function(t,n){if(_.csvHtml5&&_.csvHtml5.available(t,n))return"csvHtml5"},excel:function(t,n){if(_.excelHtml5&&_.excelHtml5.available(t,n))return"excelHtml5"},pdf:function(t,n){if(_.pdfHtml5&&_.pdfHtml5.available(t,n))return"pdfHtml5"},pageLength:function(t){var n=t.settings()[0].aLengthMenu,e=[],o=[];if(Array.isArray(n[0]))e=n[0],o=n[1];else for(var i=0;i<n.length;i++){var s=n[i];x.isPlainObject(s)?(e.push(s.value),o.push(s.label)):(e.push(s),o.push(s))}return{extend:"collection",text:function(t){return t.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},t.page.len())},className:"buttons-page-length",autoClose:!0,buttons:x.map(e,function(s,t){return{text:o[t],className:"button-page-length",action:function(t,n){n.page.len(s).draw()},init:function(t,n,e){function o(){i.active(t.page.len()===s)}var i=this;t.on("length.dt"+e.namespace,o),o()},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}}),init:function(t,n,e){var o=this;t.on("length.dt"+e.namespace,function(){o.text(e.text)})},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}},spacer:{style:"empty",spacer:!0,text:function(t){return t.i18n("buttons.spacer","")}}}),e.Api.register("buttons()",function(n,e){void 0===e&&(e=n,n=void 0),this.selector.buttonGroup=n;var t=this.iterator(!0,"table",function(t){if(t._buttons)return A.buttonSelector(A.instanceSelector(n,t._buttons),e)},!0);return t._groupSelector=n,t}),e.Api.register("button()",function(t,n){t=this.buttons(t,n);return 1<t.length&&t.splice(1,t.length),t}),e.Api.registerPlural("buttons().active()","button().active()",function(n){return void 0===n?this.map(function(t){return t.inst.active(t.node)}):this.each(function(t){t.inst.active(t.node,n)})}),e.Api.registerPlural("buttons().action()","button().action()",function(n){return void 0===n?this.map(function(t){return t.inst.action(t.node)}):this.each(function(t){t.inst.action(t.node,n)})}),e.Api.registerPlural("buttons().collectionRebuild()","button().collectionRebuild()",function(e){return this.each(function(t){for(var n=0;n<e.length;n++)"object"==typeof e[n]&&(e[n].parentConf=t);t.inst.collectionRebuild(t.node,e)})}),e.Api.register(["buttons().enable()","button().enable()"],function(n){return this.each(function(t){t.inst.enable(t.node,n)})}),e.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(t){t.inst.disable(t.node)})}),e.Api.register("button().index()",function(){var n=null;return this.each(function(t){t=t.inst.index(t.node);null!==t&&(n=t)}),n}),e.Api.registerPlural("buttons().nodes()","button().node()",function(){var n=x();return x(this.each(function(t){n=n.add(t.inst.node(t.node))})),n}),e.Api.registerPlural("buttons().processing()","button().processing()",function(n){return void 0===n?this.map(function(t){return t.inst.processing(t.node)}):this.each(function(t){t.inst.processing(t.node,n)})}),e.Api.registerPlural("buttons().text()","button().text()",function(n){return void 0===n?this.map(function(t){return t.inst.text(t.node)}):this.each(function(t){t.inst.text(t.node,n)})}),e.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(t){t.inst.node(t.node).trigger("click")})}),e.Api.register("button().popover()",function(n,e){return this.map(function(t){return t.inst._popover(n,this.button(this[0].node),e)})}),e.Api.register("buttons().containers()",function(){var i=x(),s=this._groupSelector;return this.iterator(!0,"table",function(t){if(t._buttons)for(var n=A.instanceSelector(s,t._buttons),e=0,o=n.length;e<o;e++)i=i.add(n[e].container())}),i}),e.Api.register("buttons().container()",function(){return this.containers().eq(0)}),e.Api.register("button().add()",function(t,n,e){var o,i=this.context;return(o=i.length&&(i=A.instanceSelector(this._groupSelector,i[0]._buttons)).length?i[0].add(n,t,e):o)?this.button(this._groupSelector,o):this}),e.Api.register("buttons().destroy()",function(){return this.pluck("inst").unique().each(function(t){t.destroy()}),this}),e.Api.registerPlural("buttons().remove()","buttons().remove()",function(){return this.each(function(t){t.inst.remove(t.node)}),this}),e.Api.register("buttons.info()",function(t,n,e){var o=this;return!1===t?(this.off("destroy.btn-info"),w(x("#datatables_buttons_info"),400,function(){x(this).remove()}),clearTimeout(s),s=null):(s&&clearTimeout(s),x("#datatables_buttons_info").length&&x("#datatables_buttons_info").remove(),t=t?"<h2>"+t+"</h2>":"",y(x('<div id="datatables_buttons_info" class="dt-button-info"/>').html(t).append(x("<div/>")["string"==typeof n?"html":"append"](n)).css("display","none").appendTo("body")),void 0!==e&&0!==e&&(s=setTimeout(function(){o.buttons.info(!1)},e)),this.on("destroy.btn-info",function(){o.buttons.info(!1)})),this}),e.Api.register("buttons.exportData()",function(t){if(this.context.length)return u(new e.Api(this.context[0]),t)}),e.Api.register("buttons.exportInfo()",function(t){return{filename:n(t=t||{},this),title:a(t,this),messageTop:l(this,t,t.message||t.messageTop,"top"),messageBottom:l(this,t,t.messageBottom,"bottom")}});var s,n=function(t,n){var e;return null==(e="function"==typeof(e="*"===t.filename&&"*"!==t.title&&null!=t.title&&""!==t.title?t.title:t.filename)?e(t,n):e)?null:(e=(e=-1!==e.indexOf("*")?e.replace(/\*/g,x("head > title").text()).trim():e).replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""))+(r(t.extension,t,n)||"")},r=function(t,n,e){return null==t?null:"function"==typeof t?t(n,e):t},a=function(t,n){t=r(t.title,t,n);return null===t?null:-1!==t.indexOf("*")?t.replace(/\*/g,x("head > title").text()||"Exported data"):t},l=function(t,n,e,o){e=r(e,n,t);return null===e?null:(n=x("caption",t.table().container()).eq(0),"*"===e?n.css("caption-side")!==o?null:n.length?n.text():"":e)},c=x("<textarea/>")[0],u=function(i,t){for(var s=x.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,escapeExcelFormula:!1,trim:!0,format:{header:function(t){return A.stripData(t,s)},footer:function(t){return A.stripData(t,s)},body:function(t){return A.stripData(t,s)}},customizeData:null,customizeZip:null},t),t=i.columns(s.columns).indexes().map(function(t){var n=i.column(t);return s.format.header(n.title(),t,n.header())}).toArray(),n=i.table().footer()?i.columns(s.columns).indexes().map(function(t){var n,e=i.column(t).footer(),o="";return e&&(o=((n=x(".dt-column-title",e)).length?n:x(e)).html()),s.format.footer(o,t,e)}).toArray():null,e=x.extend({},s.modifier),o=(i.select&&"function"==typeof i.select.info&&void 0===e.selected&&i.rows(s.rows,x.extend({selected:!0},e)).any()&&x.extend(e,{selected:!0}),i.rows(s.rows,e).indexes().toArray()),o=i.cells(o,s.columns,{order:e.order}),r=o.render(s.orthogonal).toArray(),a=o.nodes().toArray(),l=o.indexes().toArray(),c=i.columns(s.columns).count(),u=[],d=0,f=0,p=0<c?r.length/c:0;f<p;f++){for(var h=[c],b=0;b<c;b++)h[b]=s.format.body(r[d],l[d].row,l[d].column,a[d]),d++;u[f]=h}e={header:t,headerStructure:g(s.format.header,i.table().header.structure(s.columns)),footer:n,footerStructure:g(s.format.footer,i.table().footer.structure(s.columns)),body:u};return s.customizeData&&s.customizeData(e),e};function g(t,n){for(var e=0;e<n.length;e++)for(var o=0;o<n[e].length;o++){var i=n[e][o];i&&(i.title=t(i.title,o,i.cell))}return n}function t(t,n){t=new e.Api(t),n=n||t.init().buttons||e.defaults.buttons;return new A(t,n).container()}return x.fn.dataTable.Buttons=A,x.fn.DataTable.Buttons=A,x(v).on("init.dt plugin-init.dt",function(t,n){"dt"===t.namespace&&(t=n.oInit.buttons||e.defaults.buttons)&&!n._buttons&&new A(n,t).container()}),e.ext.feature.push({fnInit:t,cFeature:"B"}),e.feature&&e.feature.register("buttons",t),e});
52
52
53
/*! DataTables styling wrapper for Buttons
53
/*! DataTables styling wrapper for Buttons
54
 * © SpryMedia Ltd - datatables.net/license
54
 * © SpryMedia Ltd - datatables.net/license
55
 */
55
 */
56
!function(n){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-buttons"],function(e){return n(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),d(e,t),n(t,0,e.document)}:(d(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(e,t,n){"use strict";return e.fn.dataTable});
56
(n=>{var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-buttons"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)})(function(e,t,n){return e.fn.dataTable});
57
57
58
/*!
58
/*!
59
 * Column visibility buttons for Buttons and DataTables.
59
 * Column visibility buttons for Buttons and DataTables.
60
 * © SpryMedia Ltd - datatables.net/license
60
 * © SpryMedia Ltd - datatables.net/license
61
 */
61
 */
62
!function(i){var o,e;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return i(n,window,document)}):"object"==typeof exports?(o=require("jquery"),e=function(n,t){t.fn.dataTable||require("datatables.net")(n,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(n,t)},"undefined"==typeof window?module.exports=function(n,t){return n=n||window,t=t||o(n),e(n,t),i(t,0,n.document)}:(e(window,o),module.exports=i(o,window,window.document))):i(jQuery,window,document)}(function(n,t,i){"use strict";var e=n.fn.dataTable;return n.extend(e.ext.buttons,{colvis:function(n,t){var i=null,o={extend:"collection",init:function(n,t){i=t},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}]};return n.on("column-reorder.dt"+t.namespace,function(){n.button(null,n.button(null,i).node()).collectionRebuild([{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}])}),o},columnsToggle:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:t.columnText}}).toArray()},columnToggle:function(n,t){return{extend:"columnVisibility",columns:t.columns,columnText:t.columnText}},columnsVisibility:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:t.visibility,columnText:t.columnText}}).toArray()},columnVisibility:{columns:void 0,text:function(n,t,i){return i._columnText(n,i)},className:"buttons-columnVisibility",action:function(n,t,i,o){var t=t.columns(o.columns),e=t.visible();t.visible(void 0!==o.visibility?o.visibility:!(e.length&&e[0]))},init:function(e,n,t){var u=this,l=e.column(t.columns);n.attr("data-cv-idx",t.columns),e.on("column-visibility.dt"+t.namespace,function(n,t,i,o){l.index()!==i||t.bDestroying||t.nTable!=e.settings()[0].nTable||u.active(o)}).on("column-reorder.dt"+t.namespace,function(){t.destroying||1===e.columns(t.columns).count()&&(l=e.column(t.columns),u.text(t._columnText(e,t)),u.active(l.visible()))}),this.active(l.visible())},destroy:function(n,t,i){n.off("column-visibility.dt"+i.namespace).off("column-reorder.dt"+i.namespace)},_columnText:function(n,t){var i,o;return"string"==typeof t.text?t.text:(o=n.column(t.columns).title(),i=n.column(t.columns).index(),o=o.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select\s*>/gi,""),o=e.Buttons.stripHtmlComments(o),o=e.util.stripHtml(o).trim(),t.columnText?t.columnText(n,i,o):o)}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(n,t,i){n.columns().every(function(){var n=this.init();void 0===n.__visOriginal&&(n.__visOriginal=this.visible())})},action:function(n,t,i,o){t.columns().every(function(n){var t=this.init();this.visible(t.__visOriginal)})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,t,i,o){t.columns(o.show).visible(!0,!1),t.columns(o.hide).visible(!1,!1),t.columns.adjust()},show:[],hide:[]}}),e});
62
(i=>{var o,e;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return i(n,window,document)}):"object"==typeof exports?(o=require("jquery"),e=function(n,t){t.fn.dataTable||require("datatables.net")(n,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(n,t)},"undefined"==typeof window?module.exports=function(n,t){return n=n||window,t=t||o(n),e(n,t),i(t,0,n.document)}:(e(window,o),module.exports=i(o,window,window.document))):i(jQuery,window,document)})(function(n,t,i){var e=n.fn.dataTable;return n.extend(e.ext.buttons,{colvis:function(n,t){var i=null,o={extend:"collection",init:function(n,t){i=t},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}]};return n.on("column-reorder.dt"+t.namespace,function(){n.button(null,n.button(null,i).node()).collectionRebuild([{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}])}),o},columnsToggle:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:t.columnText}}).toArray()},columnToggle:function(n,t){return{extend:"columnVisibility",columns:t.columns,columnText:t.columnText}},columnsVisibility:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:t.visibility,columnText:t.columnText}}).toArray()},columnVisibility:{columns:void 0,text:function(n,t,i){return i._columnText(n,i)},className:"buttons-columnVisibility",action:function(n,t,i,o){var t=t.columns(o.columns),e=t.visible();t.visible(void 0!==o.visibility?o.visibility:!(e.length&&e[0]))},init:function(e,n,t){var u=this,l=e.column(t.columns);n.attr("data-cv-idx",t.columns),e.on("column-visibility.dt"+t.namespace,function(n,t,i,o){l.index()!==i||t.bDestroying||t.nTable!=e.settings()[0].nTable||u.active(o)}).on("column-reorder.dt"+t.namespace,function(){t.destroying||1===e.columns(t.columns).count()&&(l=e.column(t.columns),u.text(t._columnText(e,t)),u.active(l.visible()))}),this.active(l.visible())},destroy:function(n,t,i){n.off("column-visibility.dt"+i.namespace).off("column-reorder.dt"+i.namespace)},_columnText:function(n,t){var i,o;return"string"==typeof t.text?t.text:(o=n.column(t.columns).title(),i=n.column(t.columns).index(),o=o.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select\s*>/gi,""),o=e.Buttons.stripHtmlComments(o),o=e.util.stripHtml(o).trim(),t.columnText?t.columnText(n,i,o):o)}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(n,t,i){n.columns().every(function(){var n=this.init();void 0===n.__visOriginal&&(n.__visOriginal=this.visible())})},action:function(n,t,i,o){t.columns().every(function(n){var t=this.init();this.visible(t.__visOriginal)})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,t,i,o){t.columns(o.show).visible(!0,!1),t.columns(o.hide).visible(!1,!1),t.columns.adjust()},show:[],hide:[]}}),e});
63
63
64
/*!
64
/*!
65
 * HTML5 export buttons for Buttons and DataTables.
65
 * HTML5 export buttons for Buttons and DataTables.
Lines 68-90 this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { Link Here
68
 * FileSaver.js (1.3.3) - MIT license
68
 * FileSaver.js (1.3.3) - MIT license
69
 * Copyright © 2016 Eli Grey - http://eligrey.com
69
 * Copyright © 2016 Eli Grey - http://eligrey.com
70
 */
70
 */
71
!function(o){var l,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(l=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||l(t),n(t,e),o(e,t,t.document)}:(n(window,l),module.exports=o(l,window,window.document))):o(jQuery,window,document)}(function(S,C,u){"use strict";var e,o,t=S.fn.dataTable;function T(){return e||C.JSZip}function s(){return o||C.pdfMake}t.Buttons.pdfMake=function(t){if(!t)return s();o=t},t.Buttons.jszip=function(t){if(!t)return T();e=t};function k(t){var e="Sheet1";return e=t.sheetName?t.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""):e}function c(t,e){function o(t){for(var e="",o=0,l=t.length;o<l;o++)0<o&&(e+=a),e+=r?r+(""+t[o]).replace(d,p+r)+r:t[o];return e}var l=y(e),n=t.buttons.exportData(e.exportOptions),r=e.fieldBoundary,a=e.fieldSeparator,d=new RegExp(r,"g"),p=void 0!==e.escapeChar?e.escapeChar:"\\",t="",i="",f=[];e.header&&(t=n.headerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l),e.footer&&n.footer&&(i=n.footerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l);for(var s=0,m=n.body.length;s<m;s++)f.push(o(n.body[s]));return{str:t+f.join(l)+l+i,rows:f.length}}function m(){var t;return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")&&!!((t=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/))&&1<t.length&&+t[1]<603.1)}var N=function(d){var p,i,f,s,m,u,e,c,y,l,t;if(!(void 0===d||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent)))return t=d.document,p=function(){return d.URL||d.webkitURL||d},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in i,s=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(d.setImmediate||d.setTimeout)(function(){throw t},0)},e=4e4,c=function(t){setTimeout(function(){"string"==typeof t?p().revokeObjectURL(t):t.remove()},e)},y=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},t=(l=function(t,o,e){e||(t=y(t));var l,n,r=this,e="application/octet-stream"===t.type,a=function(){for(var t=r,e="writestart progress write writeend".split(" "),o=void 0,l=(e=[].concat(e)).length;l--;){var n=t["on"+e[l]];if("function"==typeof n)try{n.call(t,o||t)}catch(t){u(t)}}};r.readyState=r.INIT,f?(l=p().createObjectURL(t),setTimeout(function(){var t,e;i.href=l,i.download=o,t=i,e=new MouseEvent("click"),t.dispatchEvent(e),a(),c(l),r.readyState=r.DONE})):(m||e&&s)&&d.FileReader?((n=new FileReader).onloadend=function(){var t=m?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");d.open(t,"_blank")||(d.location.href=t),r.readyState=r.DONE,a()},n.readAsDataURL(t),r.readyState=r.INIT):(l=l||p().createObjectURL(t),!e&&d.open(l,"_blank")||(d.location.href=l),r.readyState=r.DONE,a(),c(l))}).prototype,"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,o){return e=e||t.name||"download",o||(t=y(t)),navigator.msSaveOrOpenBlob(t,e)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,function(t,e,o){return new l(t,e||t.name||"download",o)})}("undefined"!=typeof self&&self||void 0!==C&&C||this.content),y=(t.fileSave=N,function(t){return t.newline||(navigator.userAgent.match(/Windows/)?"\r\n":"\n")});function O(t){for(var e="A".charCodeAt(0),o="Z".charCodeAt(0)-e+1,l="";0<=t;)l=String.fromCharCode(t%o+e)+l,t=Math.floor(t/o)-1;return l}try{var z,E=new XMLSerializer}catch(t){}function A(t,e,o){var l=t.createElement(e);return o&&(o.attr&&S(l).attr(o.attr),o.children&&S.each(o.children,function(t,e){l.appendChild(e)}),null!==o.text)&&void 0!==o.text&&l.appendChild(t.createTextNode(o.text)),l}function D(t,e,o,l,n){var r=S("mergeCells",t);r[0].appendChild(A(t,"mergeCell",{attr:{ref:O(o)+e+":"+O(o+n-1)+(e+l-1)}})),r.attr("count",parseFloat(r.attr("count"))+1)}var R={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="68"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},$=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(t){return t/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(t){return t/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},{match:/^\-?[\d,]+\.\d{2}$/,style:64},{match:/^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,style:67,fmt:function(t){return Math.round(25569+Date.parse(t)/864e5)}}];return t.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(t){return t.i18n("buttons.copy","Copy")},action:function(t,e,o,l,n){var r=c(e,l),a=e.buttons.exportInfo(l),d=y(l),p=r.str,i=S("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),d=(a.title&&(p=a.title+d+d+p),a.messageTop&&(p=a.messageTop+d+d+p),a.messageBottom&&(p=p+d+d+a.messageBottom),l.customize&&(p=l.customize(p,l,e)),S("<textarea readonly/>").val(p).appendTo(i));if(u.queryCommandSupported("copy")){i.appendTo(e.table().container()),d[0].focus(),d[0].select();try{var f=u.execCommand("copy");if(i.remove(),f)return l.copySuccess&&e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),e.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},r.rows),2e3),void n()}catch(t){}}function s(){m.off("click.buttons-copy"),S(u).off(".buttons-copy"),e.buttons.info(!1)}var a=S("<span>"+e.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(i),m=(e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),a,0),d[0].focus(),d[0].select(),S(a).closest(".dt-button-info"));m.on("click.buttons-copy",function(){s(),n()}),S(u).on("keydown.buttons-copy",function(t){27===t.keyCode&&(s(),n())}).on("copy.buttons-copy cut.buttons-copy",function(){s(),n()})},async:100,copySuccess:!0,exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*"},t.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return void 0!==C.FileReader&&C.Blob},text:function(t){return t.i18n("buttons.csv","CSV")},action:function(t,e,o,l,n){var r=c(e,l).str,a=e.buttons.exportInfo(l),d=l.charset;l.customize&&(r=l.customize(r,l,e)),d=!1!==d?(d=d||u.characterSet||u.charset)&&";charset="+d:"",l.bom&&(r=String.fromCharCode(65279)+r),N(new Blob([r],{type:"text/csv"+d}),a.filename,!0),n()},async:100,filename:"*",extension:".csv",exportOptions:{escapeExcelFormula:!0},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!0},t.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return void 0!==C.FileReader&&void 0!==T()&&!m()&&E},text:function(t){return t.i18n("buttons.excel","Excel")},action:function(t,e,o,f,l){function n(t){return t=R[t],S.parseXML(t)}function r(t){m=A(c,"row",{attr:{r:s=u+1}});for(var e=0,o=t.length;e<o;e++){var l=O(e)+""+s,n=null;if(null===t[e]||void 0===t[e]||""===t[e]){if(!0!==f.createEmptyCells)continue;t[e]=""}var r=t[e];t[e]="function"==typeof t[e].trim?t[e].trim():t[e];for(var a=0,d=$.length;a<d;a++){var p=$[a];if(t[e].match&&!t[e].match(/^0\d+/)&&t[e].match(p.match)){var i=t[e].replace(/[^\d\.\-]/g,"");p.fmt&&(i=p.fmt(i)),n=A(c,"c",{attr:{r:l,s:p.style},children:[A(c,"v",{text:i})]});break}}n=n||("number"==typeof t[e]||t[e].match&&t[e].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/)&&!t[e].match(/^0\d+/)?A(c,"c",{attr:{t:"n",r:l},children:[A(c,"v",{text:t[e]})]}):(r=r.replace?r.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):r,A(c,"c",{attr:{t:"inlineStr",r:l},children:{row:A(c,"is",{children:{row:A(c,"t",{text:r,attr:{"xml:space":"preserve"}})}})}}))),m.appendChild(n)}y.appendChild(m),u++}function a(t){t.forEach(function(t){r(t.map(function(t){return t?t.title:""})),S("row:last c",c).attr("s","2"),t.forEach(function(t,e){t&&(1<t.colSpan||1<t.rowSpan)&&D(c,u,e,t.rowSpan,t.colSpan)})})}var d,s,m,u=0,c=n("xl/worksheets/sheet1.xml"),y=c.getElementsByTagName("sheetData")[0],p={_rels:{".rels":n("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":n("xl/_rels/workbook.xml.rels")},"workbook.xml":n("xl/workbook.xml"),"styles.xml":n("xl/styles.xml"),worksheets:{"sheet1.xml":c}},"[Content_Types].xml":n("[Content_Types].xml")},i=e.buttons.exportData(f.exportOptions),I=e.buttons.exportInfo(f);I.title&&(r([I.title]),D(c,u,0,1,i.header.length),S("row:last c",c).attr("s","51")),I.messageTop&&(r([I.messageTop]),D(c,u,0,1,i.header.length)),f.header&&a(i.headerStructure);for(var F=u,x=0,h=i.body.length;x<h;x++)r(i.body[x]);d=u,f.footer&&i.footer&&a(i.footerStructure),I.messageBottom&&(r([I.messageBottom]),D(c,u,0,1,i.header.length));var b=A(c,"cols");S("worksheet",c).prepend(b);for(var g=0,v=i.header.length;g<v;g++)b.appendChild(A(c,"col",{attr:{min:g+1,max:g+1,width:function(t,e){var o=t.header[e].length;t.footer&&t.footer[e]&&t.footer[e].length>o&&(o=t.footer[e].length);for(var l=0,n=t.body.length;l<n;l++){var r,a=t.body[l][e];if(40<(o=o<(r=(-1!==(a=null!=a?a.toString():"").indexOf("\n")?((r=a.split("\n")).sort(function(t,e){return e.length-t.length}),r[0]):a).length)?r:o))return 54}return 6<(o*=1.35)?o:6}(i,g),customWidth:1}}));var w=p.xl["workbook.xml"];S("sheets sheet",w).attr("name",k(f)),f.autoFilter&&(S("mergeCells",c).before(A(c,"autoFilter",{attr:{ref:"A"+F+":"+O(i.header.length-1)+d}})),S("definedNames",w).append(A(w,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:"'"+k(f).replace(/'/g,"''")+"'!$A$"+F+":$"+O(i.header.length-1)+"$"+d}))),f.customize&&f.customize(p,f,e),0===S("mergeCells",c).children().length&&S("mergeCells",c).remove();var w=new(T()),F={compression:"DEFLATE",type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},B=(!function f(s,t){void 0===z&&(z=-1===E.serializeToString((new C.DOMParser).parseFromString(R["xl/worksheets/sheet1.xml"],"text/xml")).indexOf("xmlns:r")),S.each(t,function(t,e){if(S.isPlainObject(e))f(s.folder(t),e);else{if(z){for(var o,l=e.childNodes[0],n=[],r=l.attributes.length-1;0<=r;r--){var a=l.attributes[r].nodeName,d=l.attributes[r].nodeValue;-1!==a.indexOf(":")&&(n.push({name:a,value:d}),l.removeAttribute(a))}for(r=0,o=n.length;r<o;r++){var p=e.createAttribute(n[r].name.replace(":","_dt_b_namespace_token_"));p.value=n[r].value,l.setAttributeNode(p)}}var i=E.serializeToString(e),i=(i=z?(i=(i=-1===i.indexOf("<?xml")?'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i:i).replace(/_dt_b_namespace_token_/g,":")).replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""):i).replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");s.file(t,i)}})}(w,p),I.filename);175<B&&(B=B.substr(0,175)),f.customizeZip&&f.customizeZip(w,i,B),w.generateAsync?w.generateAsync(F).then(function(t){N(t,B),l()}):(N(w.generate(F),B),l())},async:100,filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""},t.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return void 0!==C.FileReader&&s()},text:function(t){return t.i18n("buttons.pdf","PDF")},action:function(t,e,o,l,n){var r=e.buttons.exportData(l.exportOptions),a=e.buttons.exportInfo(l),d=[];l.header&&r.headerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});for(var p=0,i=r.body.length;p<i;p++)d.push(r.body[p].map(function(t){return{text:null==t?"":"string"==typeof t?t:t.toString()}}));l.footer&&r.footerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableFooter"}:{}}))});var f={pageSize:l.pageSize,pageOrientation:l.orientation,content:[{style:"table",table:{headerRows:l.header?r.headerStructure.length:0,footerRows:l.footer?r.footerStructure.length:0,body:d},layout:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:.5},vLineWidth:function(){return 0},hLineColor:function(t,e){return t===e.table.headerRows||t===e.table.body.length-e.table.footerRows?"#333":"#ddd"},fillColor:function(t){return t<r.headerStructure.length?"#fff":t%2==0?"#f3f3f3":null},paddingTop:function(){return 5},paddingBottom:function(){return 5}}}],styles:{tableHeader:{bold:!0,fontSize:11,alignment:"center"},tableFooter:{bold:!0,fontSize:11,alignment:"center"},table:{margin:[0,5,0,5]},title:{alignment:"center",fontSize:13},message:{}},defaultStyle:{fontSize:10}},e=(a.messageTop&&f.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]}),a.messageBottom&&f.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]}),a.title&&f.content.unshift({text:a.title,style:"title",margin:[0,0,0,12]}),l.customize&&l.customize(f,l,e),s().createPdf(f));"open"!==l.download||m()?e.download(a.filename):e.open(),n()},async:100,title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"en-US"===navigator.language||"en-CA"===navigator.language?"LETTER":"A4",header:!0,footer:!0,messageTop:"*",messageBottom:"*",customize:null,download:"download"},t});
71
(o=>{var l,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(l=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||l(t),n(t,e),o(e,t,t.document)}:(n(window,l),module.exports=o(l,window,window.document))):o(jQuery,window,document)})(function(S,C,u){var e,o,t=S.fn.dataTable;function T(){return e||C.JSZip}function m(){return o||C.pdfMake}t.Buttons.pdfMake=function(t){if(!t)return m();o=t},t.Buttons.jszip=function(t){if(!t)return T();e=t};function k(t){var e="Sheet1";return e=t.sheetName?t.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""):e}function c(t,e){function o(t){for(var e="",o=0,l=t.length;o<l;o++)0<o&&(e+=a),e+=r?r+(""+t[o]).replace(d,p+r)+r:t[o];return e}var l=y(e),n=t.buttons.exportData(e.exportOptions),r=e.fieldBoundary,a=e.fieldSeparator,d=new RegExp(r,"g"),p=void 0!==e.escapeChar?e.escapeChar:"\\",t="",i="",f=[];e.header&&(t=n.headerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l),e.footer&&n.footer&&(i=n.footerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l);for(var m=0,s=n.body.length;m<s;m++)f.push(o(n.body[m]));return{str:t+f.join(l)+l+i,rows:f.length}}function s(){var t;return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")&&!!((t=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/))&&1<t.length&&+t[1]<603.1)}var N=(d=>{var p,i,f,m,s,u,e,c,y,l,t;if(!(void 0===d||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent)))return t=d.document,p=function(){return d.URL||d.webkitURL||d},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in i,m=/constructor/i.test(d.HTMLElement)||d.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(d.setImmediate||d.setTimeout)(function(){throw t},0)},e=4e4,c=function(t){setTimeout(function(){"string"==typeof t?p().revokeObjectURL(t):t.remove()},e)},y=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},t=(l=function(t,o,e){e||(t=y(t));var l,n,r=this,e="application/octet-stream"===t.type,a=function(){for(var t=r,e="writestart progress write writeend".split(" "),o=void 0,l=(e=[].concat(e)).length;l--;){var n=t["on"+e[l]];if("function"==typeof n)try{n.call(t,o||t)}catch(t){u(t)}}};r.readyState=r.INIT,f?(l=p().createObjectURL(t),setTimeout(function(){var t,e;i.href=l,i.download=o,t=i,e=new MouseEvent("click"),t.dispatchEvent(e),a(),c(l),r.readyState=r.DONE})):(s||e&&m)&&d.FileReader?((n=new FileReader).onloadend=function(){var t=s?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");d.open(t,"_blank")||(d.location.href=t),r.readyState=r.DONE,a()},n.readAsDataURL(t),r.readyState=r.INIT):(l=l||p().createObjectURL(t),!e&&d.open(l,"_blank")||(d.location.href=l),r.readyState=r.DONE,a(),c(l))}).prototype,"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,o){return e=e||t.name||"download",o||(t=y(t)),navigator.msSaveOrOpenBlob(t,e)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,function(t,e,o){return new l(t,e||t.name||"download",o)})})("undefined"!=typeof self&&self||void 0!==C&&C||this.content),y=(t.fileSave=N,function(t){return t.newline||(navigator.userAgent.match(/Windows/)?"\r\n":"\n")});function O(t){for(var e="A".charCodeAt(0),o="Z".charCodeAt(0)-e+1,l="";0<=t;)l=String.fromCharCode(t%o+e)+l,t=Math.floor(t/o)-1;return l}try{var z,E=new XMLSerializer}catch(t){}function A(t,e,o){var l=t.createElement(e);return o&&(o.attr&&S(l).attr(o.attr),o.children&&S.each(o.children,function(t,e){l.appendChild(e)}),null!=o.text)&&l.appendChild(t.createTextNode(o.text)),l}function D(t,e,o,l,n){var r=S("mergeCells",t);r[0].appendChild(A(t,"mergeCell",{attr:{ref:O(o)+e+":"+O(o+n-1)+(e+l-1)}})),r.attr("count",parseFloat(r.attr("count"))+1)}var R={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="68"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},$=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(t){return t/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(t){return t/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},{match:/^\-?[\d,]+\.\d{2}$/,style:64},{match:/^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,style:67,fmt:function(t){return Math.round(25569+Date.parse(t)/864e5)}}];return t.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(t){return t.i18n("buttons.copy","Copy")},action:function(t,e,o,l,n){var r=c(e,l),a=e.buttons.exportInfo(l),d=y(l),p=r.str,i=S("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),d=(a.title&&(p=a.title+d+d+p),a.messageTop&&(p=a.messageTop+d+d+p),a.messageBottom&&(p=p+d+d+a.messageBottom),l.customize&&(p=l.customize(p,l,e)),S("<textarea readonly/>").val(p).appendTo(i));if(u.queryCommandSupported("copy")){i.appendTo(e.table().container()),d[0].focus(),d[0].select();try{var f=u.execCommand("copy");if(i.remove(),f)return l.copySuccess&&e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),e.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},r.rows),2e3),void n()}catch(t){}}function m(){s.off("click.buttons-copy"),S(u).off(".buttons-copy"),e.buttons.info(!1)}var a=S("<span>"+e.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(i),s=(e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),a,0),d[0].focus(),d[0].select(),S(a).closest(".dt-button-info"));s.on("click.buttons-copy",function(){m(),n()}),S(u).on("keydown.buttons-copy",function(t){27===t.keyCode&&(m(),n())}).on("copy.buttons-copy cut.buttons-copy",function(){m(),n()})},async:100,copySuccess:!0,exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*"},t.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return void 0!==C.FileReader&&C.Blob},text:function(t){return t.i18n("buttons.csv","CSV")},action:function(t,e,o,l,n){var r=c(e,l).str,a=e.buttons.exportInfo(l),d=l.charset;l.customize&&(r=l.customize(r,l,e)),d=!1!==d?(d=d||u.characterSet||u.charset)&&";charset="+d:"",l.bom&&(r=String.fromCharCode(65279)+r),N(new Blob([r],{type:"text/csv"+d}),a.filename,!0),n()},async:100,filename:"*",extension:".csv",exportOptions:{escapeExcelFormula:!0},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!0},t.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return void 0!==C.FileReader&&void 0!==T()&&!s()&&E},text:function(t){return t.i18n("buttons.excel","Excel")},action:function(t,e,o,f,l){function n(t){return t=R[t],S.parseXML(t)}function r(t){s=A(c,"row",{attr:{r:m=u+1}});for(var e=0,o=t.length;e<o;e++){var l=O(e)+""+m,n=null;if(null==t[e]||""===t[e]){if(!0!==f.createEmptyCells)continue;t[e]=""}var r=t[e];t[e]="function"==typeof t[e].trim?t[e].trim():t[e];for(var a=0,d=$.length;a<d;a++){var p=$[a];if(t[e].match&&!t[e].match(/^0\d+/)&&t[e].match(p.match)){var i=t[e].replace(/[^\d\.\-]/g,"");p.fmt&&(i=p.fmt(i)),n=A(c,"c",{attr:{r:l,s:p.style},children:[A(c,"v",{text:i})]});break}}n=n||("number"==typeof t[e]||t[e].match&&t[e].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/)&&!t[e].match(/^0\d+/)?A(c,"c",{attr:{t:"n",r:l},children:[A(c,"v",{text:t[e]})]}):(r=r.replace?r.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):r,A(c,"c",{attr:{t:"inlineStr",r:l},children:{row:A(c,"is",{children:{row:A(c,"t",{text:r,attr:{"xml:space":"preserve"}})}})}}))),s.appendChild(n)}y.appendChild(s),u++}function a(t){t.forEach(function(t){r(t.map(function(t){return t?t.title:""})),S("row:last c",c).attr("s","2"),t.forEach(function(t,e){t&&(1<t.colSpan||1<t.rowSpan)&&D(c,u,e,t.rowSpan,t.colSpan)})})}var d,m,s,u=0,c=n("xl/worksheets/sheet1.xml"),y=c.getElementsByTagName("sheetData")[0],p={_rels:{".rels":n("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":n("xl/_rels/workbook.xml.rels")},"workbook.xml":n("xl/workbook.xml"),"styles.xml":n("xl/styles.xml"),worksheets:{"sheet1.xml":c}},"[Content_Types].xml":n("[Content_Types].xml")},i=e.buttons.exportData(f.exportOptions),I=e.buttons.exportInfo(f);I.title&&(r([I.title]),D(c,u,0,1,i.header.length),S("row:last c",c).attr("s","51")),I.messageTop&&(r([I.messageTop]),D(c,u,0,1,i.header.length)),f.header&&a(i.headerStructure);for(var F=u,x=0,h=i.body.length;x<h;x++)r(i.body[x]);d=u,f.footer&&i.footer&&a(i.footerStructure),I.messageBottom&&(r([I.messageBottom]),D(c,u,0,1,i.header.length));var b=A(c,"cols");S("worksheet",c).prepend(b);for(var g=0,v=i.header.length;g<v;g++)b.appendChild(A(c,"col",{attr:{min:g+1,max:g+1,width:((t,e)=>{var o=t.header[e].length;t.footer&&t.footer[e]&&t.footer[e].length>o&&(o=t.footer[e].length);for(var l=0,n=t.body.length;l<n;l++){var r,a=t.body[l][e];if(40<(o=o<(r=(-1!==(a=null!=a?a.toString():"").indexOf("\n")?((r=a.split("\n")).sort(function(t,e){return e.length-t.length}),r[0]):a).length)?r:o))return 54}return 6<(o*=1.35)?o:6})(i,g),customWidth:1}}));var w=p.xl["workbook.xml"];S("sheets sheet",w).attr("name",k(f)),f.autoFilter&&(S("mergeCells",c).before(A(c,"autoFilter",{attr:{ref:"A"+F+":"+O(i.header.length-1)+d}})),S("definedNames",w).append(A(w,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:"'"+k(f).replace(/'/g,"''")+"'!$A$"+F+":$"+O(i.header.length-1)+"$"+d}))),f.customize&&f.customize(p,f,e),0===S("mergeCells",c).children().length&&S("mergeCells",c).remove();var w=new(T()),F={compression:"DEFLATE",type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},B=(!function f(m,t){void 0===z&&(z=-1===E.serializeToString((new C.DOMParser).parseFromString(R["xl/worksheets/sheet1.xml"],"text/xml")).indexOf("xmlns:r")),S.each(t,function(t,e){if(S.isPlainObject(e))f(m.folder(t),e);else{if(z){for(var o,l=e.childNodes[0],n=[],r=l.attributes.length-1;0<=r;r--){var a=l.attributes[r].nodeName,d=l.attributes[r].nodeValue;-1!==a.indexOf(":")&&(n.push({name:a,value:d}),l.removeAttribute(a))}for(r=0,o=n.length;r<o;r++){var p=e.createAttribute(n[r].name.replace(":","_dt_b_namespace_token_"));p.value=n[r].value,l.setAttributeNode(p)}}var i=E.serializeToString(e),i=(i=z?(i=(i=-1===i.indexOf("<?xml")?'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i:i).replace(/_dt_b_namespace_token_/g,":")).replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""):i).replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");m.file(t,i)}})}(w,p),I.filename);175<B&&(B=B.substr(0,175)),f.customizeZip&&f.customizeZip(w,i,B),w.generateAsync?w.generateAsync(F).then(function(t){N(t,B),l()}):(N(w.generate(F),B),l())},async:100,filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""},t.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return void 0!==C.FileReader&&m()},text:function(t){return t.i18n("buttons.pdf","PDF")},action:function(t,e,o,l,n){var r=e.buttons.exportData(l.exportOptions),a=e.buttons.exportInfo(l),d=[];l.header&&r.headerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});for(var p=0,i=r.body.length;p<i;p++)d.push(r.body[p].map(function(t){return{text:null==t?"":"string"==typeof t?t:t.toString()}}));l.footer&&r.footerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableFooter"}:{}}))});var f={pageSize:l.pageSize,pageOrientation:l.orientation,content:[{style:"table",table:{headerRows:l.header?r.headerStructure.length:0,footerRows:l.footer?r.footerStructure.length:0,body:d},layout:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:.5},vLineWidth:function(){return 0},hLineColor:function(t,e){return t===e.table.headerRows||t===e.table.body.length-e.table.footerRows?"#333":"#ddd"},fillColor:function(t){return t<r.headerStructure.length?"#fff":t%2==0?"#f3f3f3":null},paddingTop:function(){return 5},paddingBottom:function(){return 5}}}],styles:{tableHeader:{bold:!0,fontSize:11,alignment:"center"},tableFooter:{bold:!0,fontSize:11,alignment:"center"},table:{margin:[0,5,0,5]},title:{alignment:"center",fontSize:13},message:{}},defaultStyle:{fontSize:10}},e=(a.messageTop&&f.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]}),a.messageBottom&&f.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]}),a.title&&f.content.unshift({text:a.title,style:"title",margin:[0,0,0,12]}),l.customize&&l.customize(f,l,e),m().createPdf(f));"open"!==l.download||s()?e.download(a.filename):e.open(),n()},async:100,title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"en-US"===navigator.language||"en-CA"===navigator.language?"LETTER":"A4",header:!0,footer:!0,messageTop:"*",messageBottom:"*",customize:null,download:"download"},t});
72
72
73
/*!
73
/*!
74
 * Print button for Buttons and DataTables.
74
 * Print button for Buttons and DataTables.
75
 * © SpryMedia Ltd - datatables.net/license
75
 * © SpryMedia Ltd - datatables.net/license
76
 */
76
 */
77
!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(p,f,t){"use strict";function m(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=p.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o,r){var a=e.buttons.exportData(p.extend({decodeEntities:!1},o.exportOptions)),i=e.buttons.exportInfo(o),s=e.columns(o.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),u='<table class="'+e.table().node().className+'">';o.header&&(u+="<thead>"+a.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),u+="<tbody>";for(var c=0,d=a.body.length;c<d;c++)u+=function(t,e){for(var n="<tr>",o=0,r=t.length;o<r;o++){var a=null===t[o]||void 0===t[o]?"":t[o];n+="<"+e+" "+(s[o]?'class="'+s[o]+'"':"")+">"+a+"</"+e+">"}return n+"</tr>"}(a.body[c],"td");u+="</tbody>",o.footer&&a.footer&&(u+="<tfoot>"+a.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),u+="</table>";var l=f.open("","");l?(l.document.close(),l.document.title=i.title,p('style, link[rel="stylesheet"]').each(function(){var t=this.cloneNode(!0);"link"===t.tagName.toLowerCase()&&(t.href=m(t.href)),l.document.head.appendChild(t)}),o.customScripts&&o.customScripts.forEach(function(t){var e=l.document.createElement("script");e.src=t,l.document.getElementsByTagName("head")[0].appendChild(e)}),l.document.body.innerHTML="<h1>"+i.title+"</h1><div>"+(i.messageTop||"")+"</div>"+u+"<div>"+(i.messageBottom||"")+"</div>",p(l.document.body).addClass("dt-print-view"),p("img",l.document.body).each(function(t,e){e.setAttribute("src",m(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e),l.setTimeout(function(){o.autoPrint&&(l.print(),l.close())},1e3),r()):e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null},e});
77
(n=>{var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)})(function(p,m,t){function f(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=p.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o,r){var a=e.buttons.exportData(p.extend({decodeEntities:!1},o.exportOptions)),i=e.buttons.exportInfo(o),s=e.columns(o.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),u='<table class="'+e.table().node().className+'">';o.header&&(u+="<thead>"+a.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),u+="<tbody>";for(var d=0,c=a.body.length;d<c;d++)u+=((t,e)=>{for(var n="<tr>",o=0,r=t.length;o<r;o++){var a=null==t[o]?"":t[o];n+="<"+e+" "+(s[o]?'class="'+s[o]+'"':"")+">"+a+"</"+e+">"}return n+"</tr>"})(a.body[d],"td");u+="</tbody>",o.footer&&a.footer&&(u+="<tfoot>"+a.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),u+="</table>";var l=m.open("","");l?(l.document.close(),l.document.title=i.title,p('style, link[rel="stylesheet"]').each(function(){var t=this.cloneNode(!0);"link"===t.tagName.toLowerCase()&&(t.href=f(t.href)),l.document.head.appendChild(t)}),o.customScripts&&o.customScripts.forEach(function(t){var e=l.document.createElement("script");e.src=t,l.document.getElementsByTagName("head")[0].appendChild(e)}),l.document.body.innerHTML="<h1>"+i.title+"</h1><div>"+(i.messageTop||"")+"</div>"+u+"<div>"+(i.messageBottom||"")+"</div>",p(l.document.body).addClass("dt-print-view"),p("img",l.document.body).each(function(t,e){e.setAttribute("src",f(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e),l.setTimeout(function(){o.autoPrint&&(l.print(),l.close())},1e3),r()):e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null},e});
78
78
79
/*! FixedHeader 4.0.3
79
/*! FixedHeader 4.0.6
80
 * © SpryMedia Ltd - datatables.net/license
80
 * © SpryMedia Ltd - datatables.net/license
81
 */
81
 */
82
!function(o){var i,s;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return o(t,window,document)}):"object"==typeof exports?(i=require("jquery"),s=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||i(t),s(t,e),o(e,t,t.document)}:(s(window,i),module.exports=o(i,window,window.document))):o(jQuery,window,document)}(function(b,v,H){"use strict";function s(t,e){if(!d.versionCheck("2"))throw"Warning: FixedHeader requires DataTables 2 or newer";if(!(this instanceof s))throw"FixedHeader must be initialised with the 'new' keyword.";if(!0===e&&(e={}),t=new d.Api(t),this.c=b.extend(!0,{},s.defaults,e),this.s={dt:t,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:b(v).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:t.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+o++,scrollLeft:{header:-1,footer:-1},enable:!0,autoDisable:!1},this.dom={floatingHeader:null,thead:b(t.table().header()),tbody:b(t.table().body()),tfoot:b(t.table().footer()),header:{host:null,scrollAdjust:null,floating:null,floatingParent:b('<div class="dtfh-floatingparent"><div class="dtfh-floating-limiter"><div></div></div></div>'),limiter:null,placeholder:null},footer:{host:null,scrollAdjust:null,floating:null,floatingParent:b('<div class="dtfh-floatingparent"><div class="dtfh-floating-limiter"><div></div></div></div>'),limiter:null,placeholder:null}},(e=this.dom).header.host=e.thead.parent(),e.header.limiter=e.header.floatingParent.children(),e.header.scrollAdjust=e.header.limiter.children(),e.footer.host=e.tfoot.parent(),e.footer.limiter=e.footer.floatingParent.children(),e.footer.scrollAdjust=e.footer.limiter.children(),(e=t.settings()[0])._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;(e._fixedHeader=this)._constructor()}var d=b.fn.dataTable,o=0;return b.extend(s.prototype,{destroy:function(){var t=this.dom;this.s.dt.off(".dtfc"),b(v).off(this.s.namespace),t.header.rightBlocker&&t.header.rightBlocker.remove(),t.header.leftBlocker&&t.header.leftBlocker.remove(),t.footer.rightBlocker&&t.footer.rightBlocker.remove(),t.footer.leftBlocker&&t.footer.leftBlocker.remove(),this.c.header&&this._modeChange("in-place","header",!0),this.c.footer&&t.tfoot.length&&this._modeChange("in-place","footer",!0)},enable:function(t,e,o){this.s.enable=t,this.s.enableType=o,!e&&void 0!==e||(this._positions(),this._scroll(!0))},enabled:function(){return this.s.enable},headerOffset:function(t){return void 0!==t&&(this.c.headerOffset=t,this.update()),this.c.headerOffset},footerOffset:function(t){return void 0!==t&&(this.c.footerOffset=t,this.update()),this.c.footerOffset},update:function(t){var e=this.s.dt.table().node();(this.s.enable||this.s.autoDisable)&&(b(e).is(":visible")?(this.s.autoDisable=!1,this.enable(!0,!1)):(this.s.autoDisable=!0,this.enable(!1,!1)),0!==b(e).children("thead").length)&&(this._positions(),this._scroll(void 0===t||t),this._widths(this.dom.header),this._widths(this.dom.footer))},_constructor:function(){var o=this,i=this.s.dt,t=(b(v).on("scroll"+this.s.namespace,function(){o._scroll()}).on("resize"+this.s.namespace,d.util.throttle(function(){o.s.position.windowHeight=b(v).height(),o.update()},50)),b(".fh-fixedHeader")),t=(!this.c.headerOffset&&t.length&&(this.c.headerOffset=t.outerHeight()),b(".fh-fixedFooter"));!this.c.footerOffset&&t.length&&(this.c.footerOffset=t.outerHeight()),i.on("column-reorder.dt.dtfc column-visibility.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc",function(t,e){o.update()}).on("draw.dt.dtfc",function(t,e){o.update(e!==i.settings()[0])}),i.on("destroy.dtfc",function(){o.destroy()}),this._positions(),this._scroll()},_clone:function(t,e){var o,i,s=this,d=this.s.dt,r=this.dom[t],n="header"===t?this.dom.thead:this.dom.tfoot;"footer"===t&&this._scrollEnabled()||(!e&&r.floating?r.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(r.floating&&(null!==r.placeholder&&r.placeholder.remove(),r.floating.remove()),e=b(d.table().node()),o=b(e.parent()),i=this._scrollEnabled(),r.floating=b(d.table().node().cloneNode(!1)).attr("aria-hidden","true").css({top:0,left:0}).removeAttr("id"),r.floatingParent.css({width:o[0].offsetWidth,position:"fixed",left:i?e.offset().left+o.scrollLeft():0}).css("header"===t?{top:this.c.headerOffset,bottom:""}:{top:"",bottom:this.c.footerOffset}).addClass("footer"===t?"dtfh-floatingparent-foot":"dtfh-floatingparent-head").appendTo("body").children().eq(0),r.limiter.css({width:"100%",overflow:"hidden",height:"fit-content"}),r.scrollAdjust.append(r.floating),this._stickyPosition(r.floating,"-"),(i=function(){var t=o.scrollLeft();s.s.scrollLeft={footer:t,header:t},r.limiter.scrollLeft(s.s.scrollLeft.header)})(),o.off("scroll.dtfh").on("scroll.dtfh",i),r.scrollAdjust.css({width:"fit-content",paddingRight:s.s.dt.settings()[0].oBrowser.barWidth}),(e=b("footer"===t?"div.dtfc-bottom-blocker":"div.dtfc-top-blocker",d.table().container())).length&&e.clone().appendTo(r.floatingParent).css({position:"fixed",right:e.width()}),r.placeholder=n.clone(!1),r.placeholder.find("*[id]").removeAttr("id"),r.host.prepend(r.placeholder),r.floating.append(n),this._widths(r)))},_stickyPosition:function(t,e){var i;this._scrollEnabled()&&(i="rtl"===b(this.s.dt.table().node()).css("direction"),t.find("th").each(function(){var t,e,o;"sticky"===b(this).css("position")&&(t=b(this).css("right"),e=b(this).css("left"),"auto"===t||i?"auto"!==e&&i&&(o=+e.replace(/px/g,""),b(this).css("left",0<o?o:0)):(o=+t.replace(/px/g,""),b(this).css("right",0<o?o:0)))}))},_horizontal:function(t,e){var o,i=this.dom[t],s=this.s.scrollLeft;i.floating&&s[t]!==e&&(this._scrollEnabled()&&(o=b(b(this.s.dt.table().node()).parent()).scrollLeft(),i.floating.scrollLeft(o),i.floatingParent.scrollLeft(o)),s[t]=e)},_modeChange:function(t,e,o){var i,s,d,r,n,l,a,f=this.s.dt,h=this.dom[e],c=this.s.position,g=this._scrollEnabled();"footer"===e&&g||(i=function(t){h.floating[0].style.setProperty("width",t+"px","important"),g||h.floatingParent[0].style.setProperty("width",t+"px","important")},r=this.dom["footer"===e?"tfoot":"thead"],s=b.contains(r[0],H.activeElement)?H.activeElement:null,n=b(b(this.s.dt.table().node()).parent()),"in-place"===t?(h.placeholder&&(h.placeholder.remove(),h.placeholder=null),b.contains(h.host[0],r[0])||("header"===e?h.host.prepend(r):h.host.append(r)),h.floating&&(h.floating.remove(),h.floating=null,this._stickyPosition(h.host,"+")),h.floatingParent&&(h.floatingParent.find("div.dtfc-top-blocker").remove(),h.floatingParent.remove()),b(b(h.host.parent()).parent()).scrollLeft(n.scrollLeft())):"in"===t?(this._clone(e,o),r=n.offset(),a=(d=b(H).scrollTop())+b(v).height(),l=g?r.top:c.tbodyTop,r=g?r.top+n.outerHeight():c.tfootTop,n="footer"===e?a<l?c.tfootHeight:l+c.tfootHeight-a:d+this.c.headerOffset+c.theadHeight-r,l="header"===e?"top":"bottom",a=this.c[e+"Offset"]-(0<n?n:0),h.floating.addClass("fixedHeader-floating"),h.floatingParent.css(l,a).css({left:c.left,"z-index":3}),i(c.width),"footer"===e&&h.floating.css("top","")):"below"===t?(this._clone(e,o),h.floating.addClass("fixedHeader-locked"),h.floatingParent.css({position:"absolute",top:c.tfootTop-c.theadHeight,left:c.left+"px"}),i(c.width)):"above"===t&&(this._clone(e,o),h.floating.addClass("fixedHeader-locked"),h.floatingParent.css({position:"absolute",top:c.tbodyTop,left:c.left+"px"}),i(c.width)),s&&s!==H.activeElement&&setTimeout(function(){s.focus()},10),this.s.scrollLeft.header=-1,this.s.scrollLeft.footer=-1,this.s[e+"Mode"]=t,f.trigger("fixedheader-mode",[t,e]))},_positions:function(){var t=this.s.dt,e=t.table(),o=this.s.position,i=this.dom,e=b(e.node()),s=this._scrollEnabled(),d=b(t.table().header()),t=b(t.table().footer()),i=i.tbody,r=e.parent();o.visible=e.is(":visible"),o.width=e.outerWidth(),o.left=e.offset().left,o.theadTop=d.offset().top,o.tbodyTop=(s?r:i).offset().top,o.tbodyHeight=(s?r:i).outerHeight(),o.theadHeight=d.outerHeight(),o.theadBottom=o.theadTop+o.theadHeight,o.tfootTop=o.tbodyTop+o.tbodyHeight,t.length?(o.tfootBottom=o.tfootTop+t.outerHeight(),o.tfootHeight=t.outerHeight()):(o.tfootBottom=o.tfootTop,o.tfootHeight=0)},_scroll:function(t){var e,o,i,s,d,r,n,l,a,f,h,c,g,p,u,m;this.s.dt.settings()[0].bDestroying||(e=this._scrollEnabled(),i=(o=b(this.s.dt.table().node()).parent()).offset(),c=o.outerHeight(),s=b(H).scrollLeft(),d=b(H).scrollTop(),r=b(v).height()+d,g=this.s.position,m=e?i.top:g.tbodyTop,l=(e?i:g).left,c=e?i.top+c:g.tfootTop,a=e?o.outerWidth():g.tbodyWidth,this.c.header&&(!this.s.enable||!g.visible||d+this.c.headerOffset+g.theadHeight<=m?f="in-place":d+this.c.headerOffset+g.theadHeight>m&&d+this.c.headerOffset+g.theadHeight<c?(f="in",d+this.c.headerOffset+g.theadHeight>c||void 0===this.dom.header.floatingParent?t=!0:0===(h=this.dom.header.floatingParent.css({top:this.c.headerOffset,position:"fixed"}).children().eq(0)).find(this.dom.header.floating).length&&h.append(this.dom.header.floating)):f="below",!t&&f===this.s.headerMode||this._modeChange(f,"header",t),this._horizontal("header",s)),p={offset:{top:0,left:0},height:0},u={offset:{top:0,left:0},height:0},this.c.footer&&this.dom.tfoot.length&&this.dom.tfoot.find("th, td").length&&(!this.s.enable||!g.visible||g.tfootBottom+this.c.footerOffset<=r?n="in-place":c+g.tfootHeight+this.c.footerOffset>r&&m+this.c.footerOffset<r?(n="in",t=!0):n="above",!t&&n===this.s.footerMode||this._modeChange(n,"footer",t),this._horizontal("footer",s),h=function(t){return{offset:t.offset(),height:t.outerHeight()}},p=this.dom.header.floating?h(this.dom.header.floating):h(this.dom.thead),u=this.dom.footer.floating?h(this.dom.footer.floating):h(this.dom.tfoot),e)&&u.offset.top>d&&(g=r+((c=d-i.top)>-p.height?c:0)-(p.offset.top+(c<-p.height?p.height:0)+u.height),o.outerHeight(g=g<0?0:g),Math.round(o.outerHeight())>=Math.round(g)?b(this.dom.tfoot.parent()).addClass("fixedHeader-floating"):b(this.dom.tfoot.parent()).removeClass("fixedHeader-floating")),this.dom.header.floating&&this.dom.header.floatingParent.css("left",l-s),this.dom.footer.floating&&this.dom.footer.floatingParent.css("left",l-s),void 0!==this.s.dt.settings()[0]._fixedColumns&&(this.dom.header.rightBlocker=(m=function(t,e,o){var i;return null!==(o=void 0===o?0===(i=b("div.dtfc-"+t+"-"+e+"-blocker")).length?null:i.clone().css("z-index",1):o)&&("in"===f||"below"===f?o.appendTo("body").css({top:("top"===e?p:u).offset.top,left:"right"===t?l+a-o.width():l}):o.detach()),o})("right","top",this.dom.header.rightBlocker),this.dom.header.leftBlocker=m("left","top",this.dom.header.leftBlocker),this.dom.footer.rightBlocker=m("right","bottom",this.dom.footer.rightBlocker),this.dom.footer.leftBlocker=m("left","bottom",this.dom.footer.leftBlocker)))},_scrollEnabled:function(){var t=this.s.dt.settings()[0].oScroll;return""!==t.sY||""!==t.sX},_widths:function(t){if(t&&t.placeholder)for(var e=b(this.s.dt.table().node()),o=b(e.parent()),i=(t.floatingParent.css("width",o[0].offsetWidth),t.floating.css("width",e[0].offsetWidth),b("colgroup",t.floating).remove(),t.placeholder.parent().find("colgroup").clone().appendTo(t.floating).find("col")),s=this.s.dt.columns(":visible").widths(),d=0;d<s.length;d++)i.eq(d).css("width",s[d])}}),s.version="4.0.3",s.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0},b.fn.dataTable.FixedHeader=s,b.fn.DataTable.FixedHeader=s,b(H).on("init.dt.dtfh",function(t,e,o){var i;"dt"===t.namespace&&(t=e.oInit.fixedHeader,i=d.defaults.fixedHeader,t||i)&&!e._fixedHeader&&(i=b.extend({},i,t),!1!==t)&&new s(e,i)}),d.Api.register("fixedHeader()",function(){}),d.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(t){t=t._fixedHeader;t&&t.update()})}),d.Api.register("fixedHeader.enable()",function(e){return this.iterator("table",function(t){t=t._fixedHeader;e=void 0===e||e,t&&e!==t.enabled()&&t.enable(e)})}),d.Api.register("fixedHeader.enabled()",function(){if(this.context.length){var t=this.context[0]._fixedHeader;if(t)return t.enabled()}return!1}),d.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(t){t=t._fixedHeader;t&&t.enabled()&&t.enable(!1)})}),b.each(["header","footer"],function(t,o){d.Api.register("fixedHeader."+o+"Offset()",function(e){var t=this.context;return void 0===e?t.length&&t[0]._fixedHeader?t[0]._fixedHeader[o+"Offset"]():void 0:this.iterator("table",function(t){t=t._fixedHeader;t&&t[o+"Offset"](e)})})}),d});
82
(o=>{var i,s;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return o(t,window,document)}):"object"==typeof exports?(i=require("jquery"),s=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||i(t),s(t,e),o(e,t,t.document)}:(s(window,i),module.exports=o(i,window,window.document))):o(jQuery,window,document)})(function(m,v,H){function s(t,e){if(!d.versionCheck("2"))throw"Warning: FixedHeader requires DataTables 2 or newer";if(!(this instanceof s))throw"FixedHeader must be initialised with the 'new' keyword.";if(!0===e&&(e={}),t=new d.Api(t),this.c=m.extend(!0,{},s.defaults,e),this.s={dt:t,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:m(v).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:t.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+o++,scrollLeft:{header:-1,footer:-1},enable:!0,autoDisable:!1},this.dom={floatingHeader:null,thead:m(t.table().header()),tbody:m(t.table().body()),tfoot:m(t.table().footer()),header:{host:null,scrollAdjust:null,floating:null,floatingParent:m('<div class="dtfh-floatingparent"><div class="dtfh-floating-limiter"><div></div></div></div>'),limiter:null,placeholder:null},footer:{host:null,scrollAdjust:null,floating:null,floatingParent:m('<div class="dtfh-floatingparent"><div class="dtfh-floating-limiter"><div></div></div></div>'),limiter:null,placeholder:null}},(e=this.dom).header.host=e.thead.parent(),e.header.limiter=e.header.floatingParent.children(),e.header.scrollAdjust=e.header.limiter.children(),e.footer.host=e.tfoot.parent(),e.footer.limiter=e.footer.floatingParent.children(),e.footer.scrollAdjust=e.footer.limiter.children(),(e=t.settings()[0])._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;(e._fixedHeader=this)._constructor()}var d=m.fn.dataTable,o=0;return m.extend(s.prototype,{destroy:function(){var t=this.dom;this.s.dt.off(".dtfc"),m("body").off(".dtfc"),m(v).off(this.s.namespace),t.header.rightBlocker&&t.header.rightBlocker.remove(),t.header.leftBlocker&&t.header.leftBlocker.remove(),t.footer.rightBlocker&&t.footer.rightBlocker.remove(),t.footer.leftBlocker&&t.footer.leftBlocker.remove(),this.c.header&&this._modeChange("in-place","header",!0),this.c.footer&&t.tfoot.length&&this._modeChange("in-place","footer",!0)},enable:function(t,e,o){this.s.enable=t,this.s.enableType=o,!e&&void 0!==e||(this._positions(),this._scroll(!0))},enabled:function(){return this.s.enable},headerOffset:function(t){return void 0!==t&&(this.c.headerOffset=t,this.update()),this.c.headerOffset},footerOffset:function(t){return void 0!==t&&(this.c.footerOffset=t,this.update()),this.c.footerOffset},update:function(t){var e=this.s.dt.table().node();(this.s.enable||this.s.autoDisable)&&(m(e).is(":visible")?(this.s.autoDisable=!1,this.enable(!0,!1)):(this.s.autoDisable=!0,this.enable(!1,!1)),0!==m(e).children("thead").length)&&(this._positions(),this._scroll(void 0===t||t),this._widths(this.dom.header),this._widths(this.dom.footer))},_constructor:function(){var o=this,i=this.s.dt,t=(m(v).on("scroll"+this.s.namespace,function(){o._scroll()}).on("resize"+this.s.namespace,d.util.throttle(function(){o.s.position.windowHeight=m(v).height(),o.update()},50)),m(".fh-fixedHeader")),t=(!this.c.headerOffset&&t.length&&(this.c.headerOffset=t.outerHeight()),m(".fh-fixedFooter"));!this.c.footerOffset&&t.length&&(this.c.footerOffset=t.outerHeight()),i.on("column-reorder.dt.dtfc column-visibility.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc",function(t,e){o.update()}),m("body").on("draw.dt.dtfc",function(t,e){o.update(e!==i.settings()[0])}),i.on("destroy.dtfc",function(){o.destroy()}),this._positions(),this._scroll()},_clone:function(t,e){var o,i,s=this,d=this.s.dt,r=this.dom[t],n="header"===t?this.dom.thead:this.dom.tfoot;if("footer"!==t||!this._scrollEnabled())return e||!r.floating?(r.floating&&(null!==r.placeholder&&r.placeholder.detach(),r.floating.detach()),e=m(d.table().node()),o=m(e.parent()),i=this._scrollEnabled(),r.floating=m(d.table().node().cloneNode(!1)).attr("aria-hidden","true").css({top:0,left:0}).removeAttr("id"),r.floatingParent.css({width:o[0].offsetWidth,position:"fixed",left:i?e.offset().left+o.scrollLeft():0}).css("header"===t?{top:this.c.headerOffset,bottom:""}:{top:"",bottom:this.c.footerOffset}).addClass("footer"===t?"dtfh-floatingparent-foot":"dtfh-floatingparent-head").appendTo("body").children().eq(0),r.limiter.css({width:"100%",overflow:"hidden",height:"fit-content"}),r.scrollAdjust.append(r.floating),this._stickyPosition(r.floating,"-"),(i=function(){var t=o.scrollLeft();s.s.scrollLeft={footer:t,header:t},r.limiter.scrollLeft(s.s.scrollLeft.header)})(),o.off("scroll.dtfh").on("scroll.dtfh",i),r.scrollAdjust.css({width:"fit-content",paddingRight:s.s.dt.settings()[0].oBrowser.barWidth}),(e=m("footer"===t?"div.dtfc-bottom-blocker":"div.dtfc-top-blocker",d.table().container())).length&&e.clone().appendTo(r.floatingParent).css({position:"fixed",right:e.width()}),r.placeholder=n.clone(!1),r.placeholder.find("*[id]").removeAttr("id"),m(r.placeholder).insertAfter(m("header"===t?"colgroup":"tbody",r.host)),r.floating.append(n),this._widths(r),i):void r.floating.removeClass("fixedHeader-floating fixedHeader-locked")},_stickyPosition:function(t,e){var i;this._scrollEnabled()&&(i="rtl"===m(this.s.dt.table().node()).css("direction"),t.find("th").each(function(){var t,e,o;"sticky"===m(this).css("position")&&(t=m(this).css("right"),e=m(this).css("left"),"auto"===t||i?"auto"!==e&&i&&(o=+e.replace(/px/g,""),m(this).css("left",0<o?o:0)):(o=+t.replace(/px/g,""),m(this).css("right",0<o?o:0)))}))},_horizontal:function(t,e){var o,i=this.dom[t],s=this.s.scrollLeft;i.floating&&s[t]!==e&&(this._scrollEnabled()&&(o=m(m(this.s.dt.table().node()).parent()).scrollLeft(),i.floating.scrollLeft(o),i.floatingParent.scrollLeft(o)),s[t]=e)},_modeChange:function(t,e,o){var i,s,d,r,n,l,a,f,h=this.s.dt,c=this.dom[e],g=this.s.position,p=this._scrollEnabled();"footer"===e&&p||(i=function(t){c.floating[0].style.setProperty("width",t+"px","important"),p||c.floatingParent[0].style.setProperty("width",t+"px","important")},d=this.dom["footer"===e?"tfoot":"thead"],s=m.contains(d[0],H.activeElement)?H.activeElement:null,l=m(m(this.s.dt.table().node()).parent()),"in-place"===t?(c.placeholder&&(c.placeholder.remove(),c.placeholder=null),m.contains(c.host[0],d[0])||("header"===e?d.insertAfter(m("colgroup",c.host)):c.host.append(d)),c.floating&&(c.floating.remove(),c.floating=null,this._stickyPosition(c.host,"+")),c.floatingParent&&(c.floatingParent.find("div.dtfc-top-blocker").remove(),c.floatingParent.remove()),m(m(c.host.parent()).parent()).scrollLeft(l.scrollLeft())):"in"===t?(d=this._clone(e,o),n=l.offset(),f=(r=m(H).scrollTop())+m(v).height(),a=p?n.top:g.tbodyTop,n=p?n.top+l.outerHeight():g.tfootTop,l="footer"===e?f<a?g.tfootHeight:a+g.tfootHeight-f:r+this.c.headerOffset+g.theadHeight-n,a="header"===e?"top":"bottom",f=this.c[e+"Offset"]-(0<l?l:0),c.floating.addClass("fixedHeader-floating"),c.floatingParent.css(a,f).css({left:g.left,"z-index":3}),i(g.width),d&&d(),"footer"===e&&c.floating.css("top","")):"below"===t?(this._clone(e,o),c.floating.addClass("fixedHeader-locked"),c.floatingParent.css({position:"absolute",top:g.tfootTop-g.theadHeight,left:g.left+"px"}),i(g.width)):"above"===t&&(this._clone(e,o),c.floating.addClass("fixedHeader-locked"),c.floatingParent.css({position:"absolute",top:g.tbodyTop,left:g.left+"px"}),i(g.width)),s&&s!==H.activeElement&&setTimeout(function(){s.focus()},10),this.s.scrollLeft.header=-1,this.s.scrollLeft.footer=-1,this.s[e+"Mode"]=t,h.trigger("fixedheader-mode",[t,e]))},_positions:function(){var t=this.s.dt,e=t.table(),o=this.s.position,i=this.dom,e=m(e.node()),s=this._scrollEnabled(),d=m(t.table().header()),t=m(t.table().footer()),i=i.tbody,r=e.parent();o.visible=e.is(":visible"),o.width=e.outerWidth(),o.left=e.offset().left,o.theadTop=d.offset().top,o.tbodyTop=(s?r:i).offset().top,o.tbodyHeight=(s?r:i).outerHeight(),o.theadHeight=d.outerHeight(),o.theadBottom=o.theadTop+o.theadHeight,o.tfootTop=o.tbodyTop+o.tbodyHeight,t.length?(o.tfootBottom=o.tfootTop+t.outerHeight(),o.tfootHeight=t.outerHeight()):(o.tfootBottom=o.tfootTop,o.tfootHeight=0)},_scroll:function(t){var e,o,i,s,d,r,n,l,a,f,h,c,g,p,u,b;this.s.dt.settings()[0].bDestroying||(e=this._scrollEnabled(),i=(o=m(this.s.dt.table().node()).parent()).offset(),c=o.outerHeight(),s=m(H).scrollLeft(),d=m(H).scrollTop(),r=m(v).height()+d,g=this.s.position,b=e?i.top:g.tbodyTop,l=(e?i:g).left,c=e?i.top+c:g.tfootTop,a=e?o.outerWidth():g.tbodyWidth,this.c.header&&(!this.s.enable||!g.visible||d+this.c.headerOffset+g.theadHeight<=b?f="in-place":d+this.c.headerOffset+g.theadHeight>b&&d+this.c.headerOffset+g.theadHeight<c?(f="in",d+this.c.headerOffset+g.theadHeight>c||void 0===this.dom.header.floatingParent?t=!0:0===(h=this.dom.header.floatingParent.css({top:this.c.headerOffset,position:"fixed"}).children().eq(0)).find(this.dom.header.floating).length&&h.append(this.dom.header.floating)):f="below",!t&&f===this.s.headerMode||this._modeChange(f,"header",t),this._horizontal("header",s)),p={offset:{top:0,left:0},height:0},u={offset:{top:0,left:0},height:0},this.c.footer&&this.dom.tfoot.length&&this.dom.tfoot.find("th, td").length&&(!this.s.enable||!g.visible||g.tfootBottom+this.c.footerOffset<=r?n="in-place":c+g.tfootHeight+this.c.footerOffset>r&&b+this.c.footerOffset<r?(n="in",t=!0):n="above",!t&&n===this.s.footerMode||this._modeChange(n,"footer",t),this._horizontal("footer",s),h=function(t){return{offset:t.offset(),height:t.outerHeight()}},p=this.dom.header.floating?h(this.dom.header.floating):h(this.dom.thead),u=this.dom.footer.floating?h(this.dom.footer.floating):h(this.dom.tfoot),e)&&u.offset.top>d&&(g=r+((c=d-i.top)>-p.height?c:0)-(p.offset.top+(c<-p.height?p.height:0)+u.height),o.outerHeight(g=g<0?0:g),Math.round(o.outerHeight())>=Math.round(g)?m(this.dom.tfoot.parent()).addClass("fixedHeader-floating"):m(this.dom.tfoot.parent()).removeClass("fixedHeader-floating")),this.dom.header.floating&&this.dom.header.floatingParent.css("left",l-s),this.dom.footer.floating&&this.dom.footer.floatingParent.css("left",l-s),void 0!==this.s.dt.settings()[0]._fixedColumns&&(this.dom.header.rightBlocker=(b=function(t,e,o){var i;return null!==(o=void 0===o?0===(i=m("div.dtfc-"+t+"-"+e+"-blocker")).length?null:i.clone().css("z-index",1):o)&&("in"===f||"below"===f?o.appendTo("body").css({top:("top"===e?p:u).offset.top,left:"right"===t?l+a-o.width():l}):o.detach()),o})("right","top",this.dom.header.rightBlocker),this.dom.header.leftBlocker=b("left","top",this.dom.header.leftBlocker),this.dom.footer.rightBlocker=b("right","bottom",this.dom.footer.rightBlocker),this.dom.footer.leftBlocker=b("left","bottom",this.dom.footer.leftBlocker)))},_scrollEnabled:function(){var t=this.s.dt.settings()[0].oScroll;return""!==t.sY||""!==t.sX},_widths:function(t){if(t&&t.placeholder)for(var e=m(this.s.dt.table().node()),o=m(e.parent()),i=(t.floatingParent.css("width",o[0].offsetWidth),t.floating.css("width",e[0].offsetWidth),m("colgroup",t.floating).remove(),t.placeholder.parent().find("colgroup").clone().appendTo(t.floating).find("col")),s=this.s.dt.columns(":visible").widths(),d=0;d<s.length;d++)i.eq(d).css("width",s[d])}}),s.version="4.0.6",s.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0},m.fn.dataTable.FixedHeader=s,m.fn.DataTable.FixedHeader=s,m(H).on("init.dt.dtfh",function(t,e,o){var i;"dt"===t.namespace&&(t=e.oInit.fixedHeader,i=d.defaults.fixedHeader,t||i)&&!e._fixedHeader&&(i=m.extend({},i,t),!1!==t)&&new s(e,i)}),d.Api.register("fixedHeader()",function(){}),d.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(t){t=t._fixedHeader;t&&t.update()})}),d.Api.register("fixedHeader.enable()",function(e){return this.iterator("table",function(t){t=t._fixedHeader;e=void 0===e||e,t&&e!==t.enabled()&&t.enable(e)})}),d.Api.register("fixedHeader.enabled()",function(){if(this.context.length){var t=this.context[0]._fixedHeader;if(t)return t.enabled()}return!1}),d.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(t){t=t._fixedHeader;t&&t.enabled()&&t.enable(!1)})}),m.each(["header","footer"],function(t,o){d.Api.register("fixedHeader."+o+"Offset()",function(e){var t=this.context;return void 0===e?t.length&&t[0]._fixedHeader?t[0]._fixedHeader[o+"Offset"]():void 0:this.iterator("table",function(t){t=t._fixedHeader;t&&t[o+"Offset"](e)})})}),d});
83
83
84
/*! Responsive 3.0.6
84
/*! Responsive 3.0.8
85
 * © SpryMedia Ltd - datatables.net/license
85
 * © SpryMedia Ltd - datatables.net/license
86
 */
86
 */
87
!function(n){var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)}(function(b,y,d){"use strict";function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var o=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(o._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,o.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===o.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(o.s.current,function(e,t){!1===t&&o._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:e.width>t.width?-1:0}),this._classLogic(),this.c.details);!1!==e.type&&(o._detailsInit(),r.on("column-visibility.dtr",function(){o._timer&&clearTimeout(o._timer),o._timer=setTimeout(function(){o._timer=null,o._classLogic(),o._resizeAuto(),o._resize(!0),o._redrawChildren()},100)}),r.on("draw.dtr",function(){o._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-calc.dt",function(e,t){for(var n=o.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){o._resizeAuto(),o._resize(),r.rows(e).every(function(){o._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){r.page.info().serverSide&&(o.s.childNodeStore={}),o._controlClass()}).ready(function(){o._resizeAuto(),o._resize(),r.on("column-sizing.dtr",function(){o._resizeAuto(),o._resize()})}),r.on("column-reorder.dtr",function(e,t,n){o._classLogic(),o._resizeAuto(),o._resize(!0)})},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],o=e.cell(t,n).node().childNodes,s=0,d=o.length;s<d;s++)r.push(o[s]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var o=e[0].parentNode.childNodes,s=[],d=0,a=o.length;d<a;d++)s.push(o[d]);for(var l=0,c=s.length;l<c;l++)r.appendChild(s[l]),console.log("restore",i,r,s[l])}this.s.childNodeStore[i]=void 0}},_columnsVisibility:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),o=0,s=0,d=r.length;s<d;s++)!0===r[s]&&(o+=e[s].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-o;for(s=0,d=r.length;s<d;s++)e[s].control&&(l-=e[s].minWidth);var c=!1;for(s=0,d=t.length;s<d;s++){var u=t[s].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(s=0,d=e.length;s<d;s++)if(!e[s].control&&!e[s].never&&!1===r[s]){h=!0;break}for(s=0,d=e.length;s<d;s++)e[s].control&&(r[s]=h),"not-visible"===r[s]&&(r[s]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,o,s;if(n){if("max-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width<=r&&u(e,l[o].name);else if("min-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width>=r&&u(e,l[o].name);else if("not-"===n)for(o=0,s=l.length;o<s;o++)-1===l[o].name.indexOf(i)&&u(e,l[o].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),o=!1,n=0,i=t.length;n<i;n++){var s=t[n].trim();if("all"===s||"dtr-all"===s)return o=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===s||"dtr-none"===s||e.never)return void(o=!0);if("control"===s||"dtr-control"===s)return o=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=s.match(i);i&&(o=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}o||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),0<=n)&&e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"),this._tabIndexes()},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(o.table().node()).triggerHandler("responsive-display.dt",[o,t,e,n])}var i,r=this,o=this.s.dt,s=this.c.details;s&&!1!==s.type&&(i="string"==typeof s.renderer?a.renderer[s.renderer]():s.renderer,"boolean"==typeof(s=s.display(t,n,function(){return i.call(r,o,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(s)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),b(i.table().body()).on("keyup.dtr","td, th",function(e){13===e.keyCode&&b(this).data("dtr-keyboard")&&b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt,o=[];let s=r.settings()[0];return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return e=s.aoColumns[t],o[t]||(o[t]=r.column(t)),{className:e.sClass,columnIndex:t,data:s.fastData(n,t,i.c.orthogonal),hidden:o[t].visible()&&!i.s.current[t],rowIndex:n,title:o[t].title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),o=this.c.breakpoints,s=o[0].name,d=this.s.columns,a=this.s.current.slice(),l=o.length-1;0<=l;l--)if(t<=o[l].width){s=o[l].name;break}var c=this._columnsVisibility(s),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,o=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),s=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<o.count();l++)a.append("<td/>");this.c.details.renderer._responsiveMovesNodes?t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,o).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}):b(d).append(b(t.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display",""),d.find("th, td").css("display",""),t.table().footer.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(s)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,o){var r=this,s=i?"":"none";o.forEach(function(e,t){for(var n=0;n<e.length;n++)if(e[n]&&1<e[n].rowspan)for(var i=e[n].rowspan,r=1;r<i;r++)o[t+r][n]={}}),o.forEach(function(e){if(e[n]&&e[n].cell)b(e[n].cell).css("display",s).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]&&e[t].cell){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():("td:first-child, th:first-child"===i&&(i=">td:first-child, >th:first-child"),t=e.rows({page:"current"}).nodes(),"tr"===i?b(t):b(i,t))).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(s){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(o=b("div.dtr-modal-content")).length||e.index()!==o.data("dtr-row-idx"))return null;o.empty().append(n)}else{var r=function(){o.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},o=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return s&&s.header&&b("div.dtr-modal-content").prepend("<h2>"+s.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){function e(i,e,t){var r=this,o=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),s=!1;return b.each(t,function(e,t){var n;t.hidden&&(n=t.className?'class="'+t.className+'"':"",b("<li "+n+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(r._childNodes(i,t.rowIndex,t.columnIndex))).appendTo(o),s=!0)}),!!s&&o}return e._responsiveMovesNodes=!0,e},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+(""!==e.title?e.title+":":"")+"</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.6",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
87
(n=>{var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)})(function(b,y,d){function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var o=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(o._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,o.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===o.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(o.s.current,function(e,t){!1===t&&o._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:e.width>t.width?-1:0}),this._classLogic(),this.c.details);!1!==e.type&&(o._detailsInit(),r.on("column-visibility.dtr",function(){o._timer&&clearTimeout(o._timer),o._timer=setTimeout(function(){o._timer=null,o._classLogic(),o._resizeAuto(),o._resize(!0),o._redrawChildren()},100)}),r.on("draw.dtr",function(){o._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-calc.dt",function(e,t){for(var n=o.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){o._resizeAuto(),o._resize(),r.rows(e).every(function(){o._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){r.page.info().serverSide&&(o.s.childNodeStore={}),o._controlClass()}).ready(function(){o._resizeAuto(),o._resize(),r.on("column-sizing.dtr",function(){o._resizeAuto(),o._resize()})}),r.on("column-reorder.dtr",function(e,t,n){o._classLogic(),o._resizeAuto(),o._resize(!0)})},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],o=e.cell(t,n).node().childNodes,s=0,d=o.length;s<d;s++)r.push(o[s]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var o=e[0].parentNode.childNodes,s=[],d=0,a=o.length;d<a;d++)s.push(o[d]);for(var l=0,c=s.length;l<c;l++)r.appendChild(s[l])}this.s.childNodeStore[i]=void 0}},_columnsVisibility:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),o=0,s=0,d=r.length;s<d;s++)!0===r[s]&&(o+=e[s].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-o;for(s=0,d=r.length;s<d;s++)e[s].control&&(l-=e[s].minWidth);var c=!1;for(s=0,d=t.length;s<d;s++){var u=t[s].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(s=0,d=e.length;s<d;s++)if(!e[s].control&&!e[s].never&&!1===r[s]){h=!0;break}for(s=0,d=e.length;s<d;s++)e[s].control&&(r[s]=h),"not-visible"===r[s]&&(r[s]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,o,s;if(n){if("max-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width<=r&&u(e,l[o].name);else if("min-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width>=r&&u(e,l[o].name);else if("not-"===n)for(o=0,s=l.length;o<s;o++)-1===l[o].name.indexOf(i)&&u(e,l[o].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),o=!1,n=0,i=t.length;n<i;n++){var s=t[n].trim();if("all"===s||"dtr-all"===s)return o=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===s||"dtr-none"===s||e.never)return void(o=!0);if("control"===s||"dtr-control"===s)return o=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=s.match(i);i&&(o=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}o||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),0<=n)&&e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"),this._tabIndexes()},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(o.table().node()).triggerHandler("responsive-display.dt",[o,t,e,n])}var i,r=this,o=this.s.dt,s=this.c.details;s&&!1!==s.type&&(i="string"==typeof s.renderer?a.renderer[s.renderer]():s.renderer,"boolean"==typeof(s=s.display(t,n,function(){return i.call(r,o,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(s)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),b(i.table().body()).on("keyup.dtr","td, th",function(e){var t=d.activeElement.nodeName.toLowerCase();13!==e.keyCode||!b(this).data("dtr-keyboard")||"td"!==t&&"th"!==t||b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt,o=[];let s=r.settings()[0];return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return e=s.aoColumns[t],o[t]||(o[t]=r.column(t)),{className:e.sClass,columnIndex:t,data:s.fastData(n,t,i.c.orthogonal),hidden:o[t].visible()&&!i.s.current[t],rowIndex:n,title:o[t].title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),o=this.c.breakpoints,s=o[0].name,d=this.s.columns,a=this.s.current.slice(),l=o.length-1;0<=l;l--)if(t<=o[l].width){s=o[l].name;break}var c=this._columnsVisibility(s),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,o=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),s=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<o.count();l++)a.append("<td/>");this.c.details.renderer._responsiveMovesNodes?t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,o).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}):b(d).append(b(t.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display",""),d.find("th, td").css("display",""),t.table().footer.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(s)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),i.settings()[0].aoColumns[e].responsiveVisible=t,b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,o){var r=this,s=i?"":"none";o.forEach(function(e,t){for(var n=0;n<e.length;n++)if(e[n]&&1<e[n].rowspan)for(var i=e[n].rowspan,r=1;r<i;r++)o[t+r][n]={}}),o.forEach(function(e){if(e[n]&&e[n].cell)b(e[n].cell).css("display",s).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]&&e[t].cell){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():("td:first-child, th:first-child"===i&&(i=">td:first-child, >th:first-child"),t=e.rows({page:"current"}).nodes(),"tr"===i?b(t):b(i,t))).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(s){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(o=b("div.dtr-modal-content")).length||e.index()!==o.data("dtr-row-idx"))return null;o.empty().append(n)}else{var r=function(){o.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},o=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return s&&s.header&&b("div.dtr-modal-content").prepend("<h2>"+s.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){function e(i,e,t){var r=this,o=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),s=!1;return b.each(t,function(e,t){var n;t.hidden&&(n=t.className?'class="'+t.className+'"':"",b("<li "+n+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(r._childNodes(i,t.rowIndex,t.columnIndex))).appendTo(o),s=!0)}),!!s&&o}return e._responsiveMovesNodes=!0,e},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+(""!==e.title?e.title+":":"")+"</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.8",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
88
88
89
/*! DataTables styling wrapper for Responsive
89
/*! DataTables styling wrapper for Responsive
90
 * © SpryMedia Ltd - datatables.net/license
90
 * © SpryMedia Ltd - datatables.net/license
Lines 151-158 return DataTable; Link Here
151
 */
151
 */
152
!function(e){var n,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(n=require("jquery"),o=function(t,r){r.fn.dataTable||require("datatables.net")(t,r)},"undefined"==typeof window?module.exports=function(t,r){return t=t||window,r=r||n(t),o(t,r),e(r,0,t.document)}:(o(window,n),module.exports=e(n,window,window.document))):e(jQuery,window,document)}(function(i,t,r){"use strict";function a(t,r){if(!l.versionCheck||!l.versionCheck("2"))throw new Error("RowGroup requires DataTables 2 or newer");if(this.c=i.extend(!0,{},l.defaults.rowGroup,a.defaults,r),this.s={dt:new l.Api(t)},this.dom={},r=this.s.dt.settings()[0],t=r.rowGroup)return t;(r.rowGroup=this)._constructor()}var l=i.fn.dataTable;return i.extend(a.prototype,{dataSrc:function(t){var r;return void 0===t?this.c.dataSrc:(r=this.s.dt,this.c.dataSrc=t,i(r.table().node()).triggerHandler("rowgroup-datasrc.dt",[r,t]),this)},disable:function(){return this.c.enable=!1,this},enable:function(t){return!1===t?this.disable():(this.c.enable=!0,this)},enabled:function(){return this.c.enable},_constructor:function(){var e=this,t=this.s.dt,n=t.settings()[0],o=i("div.dt-scroll-body",t.table().container()),a=(t.on("draw.dtrg",function(t,r){e.c.enable&&n===r&&(e._draw(),a)&&o.scrollTop()&&(o.scrollTop(a),a=null)}),t.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){e._adjustColspan()}),t.on("destroy",function(){t.off(".dtrg")}),null);o.length&&t.on("preDraw",function(){a=o.scrollTop()})},_adjustColspan:function(){var t=i("tr."+this.c.className,this.s.dt.table().body()).find("th:visible, td:visible");1===t.length&&t.attr("colspan",this._colspan())},_colspan:function(){return this.s.dt.columns().visible().reduce(function(t,r){return t+r},0)},_draw:function(){var t=this.s.dt;null===this.c.dataSrc||Array.isArray(this.c.dataSrc)&&0===this.c.dataSrc.length||(t=this._group(0,t.rows({page:"current"}).indexes()),this._groupDisplay(0,t))},_group:function(t,r){for(var e,n=Array.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],o=l.util.get(n[t]),a=this.s.dt,i=[],s=0,d=r.length;s<d;s++){var u,c=r[s];null==(u=o(a.row(c).data(),t))&&(u=this.c.emptyDataGroup),void 0!==e&&u===e||(i.push({dataPoint:u,rows:[]}),e=u),i[i.length-1].rows.push(c)}if(void 0!==n[t+1])for(s=0,d=i.length;s<d;s++)i[s].children=this._group(t+1,i[s].rows);return i},_groupDisplay:function(t,r){for(var e,n=this.s.dt,o=0,a=r.length;o<a;o++){var i,s=r[o],d=s.dataPoint,u=s.rows;this.c.startRender&&(e=this.c.startRender.call(this,n.rows(u),d,t),i=this._rowWrap(e,this.c.startClassName,t))&&i.insertBefore(n.row(u[0]).node()),this.c.endRender&&(e=this.c.endRender.call(this,n.rows(u),d,t),i=this._rowWrap(e,this.c.endClassName,t))&&i.insertAfter(n.row(u[u.length-1]).node()),s.children&&this._groupDisplay(t+1,s.children)}},_rowWrap:function(t,r,e){return null==(t=null!==t&&""!==t?t:this.c.emptyDataGroup)?null:("object"==typeof t&&t.nodeName&&"tr"===t.nodeName.toLowerCase()?i(t):t instanceof i&&t.length&&"tr"===t[0].nodeName.toLowerCase()?t:i("<tr/>").append(i("<th/>").attr("colspan",this._colspan()).attr("scope","row").append(t))).addClass(this.c.className).addClass(r).addClass("dtrg-level-"+e)}}),a.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender:function(t,r){return r}},a.version="1.6.0",i.fn.dataTable.RowGroup=a,i.fn.DataTable.RowGroup=a,l.Api.register("rowGroup()",function(){return this}),l.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(!1)})}),l.Api.register("rowGroup().enable()",function(r){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(void 0===r||r)})}),l.Api.register("rowGroup().enabled()",function(){var t=this.context;return!(!t.length||!t[0].rowGroup)&&t[0].rowGroup.enabled()}),l.Api.register("rowGroup().dataSrc()",function(r){var t;return void 0===r?(t=this.context[0].rowGroup)?t.dataSrc():[]:this.iterator("table",function(t){t.rowGroup||new a(this.context[0]),t.rowGroup.dataSrc(r)})}),i(r).on("preInit.dt.dtrg",function(t,r,e){var n,o;"dt"===t.namespace&&(t=r.oInit.rowGroup,n=l.defaults.rowGroup,t||n)&&(o=i.extend({},n,t),!1!==t)&&new a(r,o)}),l});
152
!function(e){var n,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(n=require("jquery"),o=function(t,r){r.fn.dataTable||require("datatables.net")(t,r)},"undefined"==typeof window?module.exports=function(t,r){return t=t||window,r=r||n(t),o(t,r),e(r,0,t.document)}:(o(window,n),module.exports=e(n,window,window.document))):e(jQuery,window,document)}(function(i,t,r){"use strict";function a(t,r){if(!l.versionCheck||!l.versionCheck("2"))throw new Error("RowGroup requires DataTables 2 or newer");if(this.c=i.extend(!0,{},l.defaults.rowGroup,a.defaults,r),this.s={dt:new l.Api(t)},this.dom={},r=this.s.dt.settings()[0],t=r.rowGroup)return t;(r.rowGroup=this)._constructor()}var l=i.fn.dataTable;return i.extend(a.prototype,{dataSrc:function(t){var r;return void 0===t?this.c.dataSrc:(r=this.s.dt,this.c.dataSrc=t,i(r.table().node()).triggerHandler("rowgroup-datasrc.dt",[r,t]),this)},disable:function(){return this.c.enable=!1,this},enable:function(t){return!1===t?this.disable():(this.c.enable=!0,this)},enabled:function(){return this.c.enable},_constructor:function(){var e=this,t=this.s.dt,n=t.settings()[0],o=i("div.dt-scroll-body",t.table().container()),a=(t.on("draw.dtrg",function(t,r){e.c.enable&&n===r&&(e._draw(),a)&&o.scrollTop()&&(o.scrollTop(a),a=null)}),t.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){e._adjustColspan()}),t.on("destroy",function(){t.off(".dtrg")}),null);o.length&&t.on("preDraw",function(){a=o.scrollTop()})},_adjustColspan:function(){var t=i("tr."+this.c.className,this.s.dt.table().body()).find("th:visible, td:visible");1===t.length&&t.attr("colspan",this._colspan())},_colspan:function(){return this.s.dt.columns().visible().reduce(function(t,r){return t+r},0)},_draw:function(){var t=this.s.dt;null===this.c.dataSrc||Array.isArray(this.c.dataSrc)&&0===this.c.dataSrc.length||(t=this._group(0,t.rows({page:"current"}).indexes()),this._groupDisplay(0,t))},_group:function(t,r){for(var e,n=Array.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],o=l.util.get(n[t]),a=this.s.dt,i=[],s=0,d=r.length;s<d;s++){var u,c=r[s];null==(u=o(a.row(c).data(),t))&&(u=this.c.emptyDataGroup),void 0!==e&&u===e||(i.push({dataPoint:u,rows:[]}),e=u),i[i.length-1].rows.push(c)}if(void 0!==n[t+1])for(s=0,d=i.length;s<d;s++)i[s].children=this._group(t+1,i[s].rows);return i},_groupDisplay:function(t,r){for(var e,n=this.s.dt,o=0,a=r.length;o<a;o++){var i,s=r[o],d=s.dataPoint,u=s.rows;this.c.startRender&&(e=this.c.startRender.call(this,n.rows(u),d,t),i=this._rowWrap(e,this.c.startClassName,t))&&i.insertBefore(n.row(u[0]).node()),this.c.endRender&&(e=this.c.endRender.call(this,n.rows(u),d,t),i=this._rowWrap(e,this.c.endClassName,t))&&i.insertAfter(n.row(u[u.length-1]).node()),s.children&&this._groupDisplay(t+1,s.children)}},_rowWrap:function(t,r,e){return null==(t=null!==t&&""!==t?t:this.c.emptyDataGroup)?null:("object"==typeof t&&t.nodeName&&"tr"===t.nodeName.toLowerCase()?i(t):t instanceof i&&t.length&&"tr"===t[0].nodeName.toLowerCase()?t:i("<tr/>").append(i("<th/>").attr("colspan",this._colspan()).attr("scope","row").append(t))).addClass(this.c.className).addClass(r).addClass("dtrg-level-"+e)}}),a.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender:function(t,r){return r}},a.version="1.6.0",i.fn.dataTable.RowGroup=a,i.fn.DataTable.RowGroup=a,l.Api.register("rowGroup()",function(){return this}),l.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(!1)})}),l.Api.register("rowGroup().enable()",function(r){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(void 0===r||r)})}),l.Api.register("rowGroup().enabled()",function(){var t=this.context;return!(!t.length||!t[0].rowGroup)&&t[0].rowGroup.enabled()}),l.Api.register("rowGroup().dataSrc()",function(r){var t;return void 0===r?(t=this.context[0].rowGroup)?t.dataSrc():[]:this.iterator("table",function(t){t.rowGroup||new a(this.context[0]),t.rowGroup.dataSrc(r)})}),i(r).on("preInit.dt.dtrg",function(t,r,e){var n,o;"dt"===t.namespace&&(t=r.oInit.rowGroup,n=l.defaults.rowGroup,t||n)&&(o=i.extend({},n,t),!1!==t)&&new a(r,o)}),l});
153
153
154
/*! RowReorder 1.5.0
154
/*! RowReorder 1.5.1
155
 * © SpryMedia Ltd - datatables.net/license
155
 * © SpryMedia Ltd - datatables.net/license
156
 */
156
 */
157
!function(o){var r,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return o(t,window,document)}):"object"==typeof exports?(r=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||r(t),n(t,e),o(e,t,t.document)}:(n(window,r),module.exports=o(r,window,window.document))):o(jQuery,window,document)}(function(v,d,l){"use strict";function s(t,e){if(!i.versionCheck||!i.versionCheck("1.11"))throw"DataTables RowReorder requires DataTables 1.11 or newer";if(this.c=v.extend(!0,{},i.defaults.rowReorder,s.defaults,e),this.s={bodyTop:null,dt:new i.Api(t),getDataFn:i.util.get(this.c.dataSrc),middles:null,scroll:{},scrollInterval:null,setDataFn:i.util.set(this.c.dataSrc),start:{top:0,left:0,offsetTop:0,offsetLeft:0,nodes:[],rowIndex:0},windowHeight:0,documentOuterHeight:0,domCloneOuterHeight:0,dropAllowed:!0},this.dom={clone:null,cloneParent:null,dtScroll:v("div.dataTables_scrollBody, div.dt-scroll-body",this.s.dt.table().container())},e=this.s.dt.settings()[0],t=e.rowreorder)return t;this.dom.dtScroll.length||(this.dom.dtScroll=v(this.s.dt.table().container(),"tbody")),(e.rowreorder=this)._constructor()}var i=v.fn.dataTable,t=(v.extend(s.prototype,{_constructor:function(){var r=this,n=this.s.dt,t=v(n.table().node());"static"===t.css("position")&&t.css("position","relative"),v(n.table().container()).on("mousedown.rowReorder touchstart.rowReorder",this.c.selector,function(t){var e,o;if(r.c.enable)return!!v(t.target).is(r.c.excludedChildren)||(e=v(this).closest("tr"),(o=n.row(e)).any()?(r._emitEvent("pre-row-reorder",{node:o.node(),index:o.index()}),r._mouseDown(t,e),!1):void 0)}),n.on("destroy.rowReorder",function(){v(n.table().container()).off(".rowReorder"),n.off(".rowReorder")}),this._keyup=this._keyup.bind(this)},_cachePositions:function(){var t=this.s.dt,r=v(t.table().node()).find("thead").outerHeight(),e=v.unique(t.rows({page:"current"}).nodes().toArray()),e=v.map(e,function(t,e){var o=v(t).position().top-r;return(o+o+v(t).outerHeight())/2});this.s.middles=e,this.s.bodyTop=v(t.table().body()).offset().top,this.s.windowHeight=v(d).height(),this.s.documentOuterHeight=v(l).outerHeight(),this.s.bodyArea=this._calcBodyArea()},_clone:function(t){var e=this.s.dt,e=v(e.table().node().cloneNode(!1)).addClass("dt-rowReorder-float").append("<tbody/>").append(t.clone(!1)),o=t.outerWidth(),r=t.outerHeight(),n=v(v(this.s.dt.table().node()).parent()),s=n.width(),n=n.scrollLeft(),i=t.children().map(function(){return v(this).width()}),t=(e.width(o).height(r).find("tr").children().each(function(t){this.style.width=i[t]+"px"}),v("<div>").addClass("dt-rowReorder-float-parent").width(s).append(e).appendTo("body").scrollLeft(n));this.dom.clone=e,this.dom.cloneParent=t,this.s.domCloneOuterHeight=e.outerHeight()},_clonePosition:function(t){var e=this.s.start,o=this._eventToPage(t,"Y")-e.top,t=this._eventToPage(t,"X")-e.left,r=this.c.snapX,o=o+e.offsetTop,r=!0===r?e.offsetLeft:"number"==typeof r?e.offsetLeft+r:t+e.offsetLeft+this.dom.cloneParent.scrollLeft();o<0?o=0:o+this.s.domCloneOuterHeight>this.s.documentOuterHeight&&(o=this.s.documentOuterHeight-this.s.domCloneOuterHeight),this.dom.cloneParent.css({top:o,left:r})},_emitEvent:function(o,r){var n;return this.s.dt.iterator("table",function(t,e){t=v(t.nTable).triggerHandler(o+".dt",r);void 0!==t&&(n=t)}),n},_eventToPage:function(t,e){return(-1!==t.type.indexOf("touch")?t.originalEvent.touches[0]:t)["page"+e]},_mouseDown:function(t,e){var o=this,r=this.s.dt,n=this.s.start,s=this.c.cancelable,i=e.offset(),i=(n.top=this._eventToPage(t,"Y"),n.left=this._eventToPage(t,"X"),n.offsetTop=i.top,n.offsetLeft=i.left,n.nodes=v.unique(r.rows({page:"current"}).nodes().toArray()),this._cachePositions(),this._clone(e),this._clonePosition(t),this._eventToPage(t,"Y")-this.s.bodyTop),r=(n.rowIndex=this._calcRowIndexByPos(i),(this.dom.target=e).addClass("dt-rowReorder-moving"),v(l).on("mouseup.rowReorder touchend.rowReorder",function(t){o._mouseUp(t)}).on("mousemove.rowReorder touchmove.rowReorder",function(t){o._mouseMove(t)}),v(d).width()===v(l).width()&&v(l.body).addClass("dt-rowReorder-noOverflow"),this.dom.dtScroll);this.s.scroll={windowHeight:v(d).height(),windowWidth:v(d).width(),dtTop:r.length?r.offset().top:null,dtLeft:r.length?r.offset().left:null,dtHeight:r.length?r.outerHeight():null,dtWidth:r.length?r.outerWidth():null},s&&v(l).on("keyup",this._keyup)},_mouseMove:function(t){this._clonePosition(t);for(var e,o,r=this.s.start,n=this.c.cancelable,s=(n&&(e=this.s.bodyArea,o=this._calcCloneParentArea(),this.s.dropAllowed=this._rectanglesIntersect(e,o),this.s.dropAllowed?v(this.dom.cloneParent).removeClass("drop-not-allowed"):v(this.dom.cloneParent).addClass("drop-not-allowed")),this._eventToPage(t,"Y")-this.s.bodyTop),i=this.s.middles,d=null,l=0,a=i.length;l<a;l++)if(s<i[l]){d=l;break}null===d&&(d=i.length),n&&(this.s.dropAllowed||(d=r.rowIndex>this.s.lastInsert?r.rowIndex+1:r.rowIndex),this.dom.target.toggleClass("dt-rowReorder-moving",this.s.dropAllowed)),this._moveTargetIntoPosition(d),this._shiftScroll(t)},_mouseUp:function(t){var e=this,o=this.s.dt,r=this.c.dataSrc;if(this.s.dropAllowed){for(var n,s,i,d=this.s.start.nodes,l=v.unique(o.rows({page:"current"}).nodes().toArray()),a={},c=[],h=[],u=this.s.getDataFn,f=this.s.setDataFn,w=0,p=d.length;w<p;w++)d[w]!==l[w]&&(n=o.row(l[w]).id(),s=o.row(l[w]).data(),i=o.row(d[w]).data(),n&&(a[n]=u(i)),c.push({node:l[w],oldData:u(s),newData:u(i),newPosition:w,oldPosition:v.inArray(l[w],d)}),h.push(l[w]));var g,m=[c,{dataSrc:r,nodes:h,values:a,triggerRow:o.row(this.dom.target),originalEvent:t}];!1===this._emitEvent("row-reorder",m)?e._cancel():(this._cleanupDragging(),g=function(){if(e.c.update){for(w=0,p=c.length;w<p;w++){var t=o.row(c[w].node).data();f(t,c[w].newData),o.columns().every(function(){this.dataSrc()===r&&o.cell(c[w].node,this.index()).invalidate("data")})}e._emitEvent("row-reordered",m),o.draw(!1)}},this.c.editor?(this.c.enable=!1,this.c.editor.edit(h,!1,v.extend({submit:"changed"},this.c.formOptions)).multiSet(r,a).one("preSubmitCancelled.rowReorder",function(){e.c.enable=!0,e.c.editor.off(".rowReorder"),o.draw(!1)}).one("submitUnsuccessful.rowReorder",function(){o.draw(!1)}).one("submitSuccess.rowReorder",function(){g()}).one("submitComplete",function(){e.c.enable=!0,e.c.editor.off(".rowReorder")}).submit()):g())}else e._cancel()},_moveTargetIntoPosition:function(t){var e,o,r=this.s.dt;null!==this.s.lastInsert&&this.s.lastInsert===t||(e=v.unique(r.rows({page:"current"}).nodes().toArray()),o="",o=t>this.s.lastInsert?(this.dom.target.insertAfter(e[t-1]),"after"):(this.dom.target.insertBefore(e[t]),"before"),this._cachePositions(),this.s.lastInsert=t,this._emitEvent("row-reorder-changed",{insertPlacement:o,insertPoint:t,row:r.row(this.dom.target)}))},_cleanupDragging:function(){var t=this.c.cancelable;this.dom.clone.remove(),this.dom.cloneParent.remove(),this.dom.clone=null,this.dom.cloneParent=null,this.dom.target.removeClass("dt-rowReorder-moving"),v(l).off(".rowReorder"),v(l.body).removeClass("dt-rowReorder-noOverflow"),clearInterval(this.s.scrollInterval),this.s.scrollInterval=null,t&&v(l).off("keyup",this._keyup)},_shiftScroll:function(t){var e,o,r=this,n=this.s.scroll,s=!1,i=t.pageY-l.body.scrollTop;i<v(d).scrollTop()+65?e=-5:i>n.windowHeight+v(d).scrollTop()-65&&(e=5),null!==n.dtTop&&t.pageY<n.dtTop+65?o=-5:null!==n.dtTop&&t.pageY>n.dtTop+n.dtHeight-65&&(o=5),e||o?(n.windowVert=e,n.dtVert=o,s=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null),!this.s.scrollInterval&&s&&(this.s.scrollInterval=setInterval(function(){var t;n.windowVert&&(t=v(l).scrollTop(),v(l).scrollTop(t+n.windowVert),t!==v(l).scrollTop())&&(t=parseFloat(r.dom.cloneParent.css("top")),r.dom.cloneParent.css("top",t+n.windowVert)),n.dtVert&&(t=r.dom.dtScroll[0],n.dtVert)&&(t.scrollTop+=n.dtVert)},20))},_calcBodyArea:function(t){var e=this.s.dt,o=v(e.table().body()).offset();return{left:o.left,top:o.top,right:o.left+v(e.table().body()).width(),bottom:o.top+v(e.table().body()).height()}},_calcCloneParentArea:function(t){var e=v(this.dom.cloneParent).offset();return{left:e.left,top:e.top,right:e.left+v(this.dom.cloneParent).width(),bottom:e.top+v(this.dom.cloneParent).height()}},_rectanglesIntersect:function(t,e){return!(t.left>=e.right||e.left>=t.right||t.top>=e.bottom||e.top>=t.bottom)},_calcRowIndexByPos:function(r){var t=this.s.dt,e=v.unique(t.rows({page:"current"}).nodes().toArray()),n=-1,s=v(t.table().node()).find("thead").outerHeight();return v.each(e,function(t,e){var o=v(e).position().top-s,e=o+v(e).outerHeight();o<=r&&r<=e&&(n=t)}),n},_keyup:function(t){this.c.cancelable&&27===t.which&&(t.preventDefault(),this._cancel())},_cancel:function(){var t=this.s.start,t=t.rowIndex>this.s.lastInsert?t.rowIndex+1:t.rowIndex;this._moveTargetIntoPosition(t),this._cleanupDragging(),this._emitEvent("row-reorder-canceled",[this.s.start.rowIndex])}}),s.defaults={dataSrc:0,editor:null,enable:!0,formOptions:{},selector:"td:first-child",snapX:!1,update:!0,excludedChildren:"a",cancelable:!1},v.fn.dataTable.Api);return t.register("rowReorder()",function(){return this}),t.register("rowReorder.enable()",function(e){return void 0===e&&(e=!0),this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=e)})}),t.register("rowReorder.disable()",function(){return this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=!1)})}),s.version="1.5.0",v.fn.dataTable.RowReorder=s,v.fn.DataTable.RowReorder=s,v(l).on("init.dt.dtr",function(t,e,o){var r,n;"dt"===t.namespace&&(t=e.oInit.rowReorder,r=i.defaults.rowReorder,t||r)&&(n=v.extend({},t,r),!1!==t)&&new s(e,n)}),i});
157
(o=>{var r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(){return o(window,document)}):"object"==typeof exports?(r=function(t){t.DataTable||require("datatables.net")(t)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,r(t),o(t,t.document)}:(r(window),module.exports=o(window,window.document))):o(window,document)})(function(d,l){function s(t,e){if(!i.versionCheck||!i.versionCheck("1.11"))throw"DataTables RowReorder requires DataTables 1.11 or newer";if(this.c=$.extend(!0,{},i.defaults.rowReorder,s.defaults,e),this.s={bodyTop:null,dt:new i.Api(t),getDataFn:i.util.get(this.c.dataSrc),middles:null,scroll:{},scrollInterval:null,setDataFn:i.util.set(this.c.dataSrc),start:{top:0,left:0,offsetTop:0,offsetLeft:0,nodes:[],rowIndex:0},windowHeight:0,documentOuterHeight:0,domCloneOuterHeight:0,dropAllowed:!0},this.dom={clone:null,cloneParent:null,dtScroll:$("div.dataTables_scrollBody, div.dt-scroll-body",this.s.dt.table().container())},e=this.s.dt.settings()[0],t=e.rowreorder)return t;this.dom.dtScroll.length||(this.dom.dtScroll=$(this.s.dt.table().container(),"tbody")),(e.rowreorder=this)._constructor()}var i=d.DataTable,t=($.extend(s.prototype,{_constructor:function(){var r=this,n=this.s.dt,t=$(n.table().node());"static"===t.css("position")&&t.css("position","relative"),$(n.table().container()).on("mousedown.rowReorder touchstart.rowReorder",this.c.selector,function(t){var e,o;if(r.c.enable)return!!$(t.target).is(r.c.excludedChildren)||(e=$(this).closest("tr"),(o=n.row(e)).any()?(r._emitEvent("pre-row-reorder",{node:o.node(),index:o.index()}),r._mouseDown(t,e),!1):void 0)}),n.on("destroy.rowReorder",function(){$(n.table().container()).off(".rowReorder"),n.off(".rowReorder")}),this._keyup=this._keyup.bind(this)},_cachePositions:function(){var t=this.s.dt,r=$(t.table().node()).find("thead").outerHeight(),e=$.uniqueSort(t.rows({page:"current"}).nodes().toArray()),e=$.map(e,function(t,e){var o=$(t).position().top-r;return(o+o+$(t).outerHeight())/2});this.s.middles=e,this.s.bodyTop=$(t.table().body()).offset().top,this.s.windowHeight=$(d).height(),this.s.documentOuterHeight=$(l).outerHeight(),this.s.bodyArea=this._calcBodyArea()},_clone:function(t){var e=this.s.dt,e=$(e.table().node().cloneNode(!1)).addClass("dt-rowReorder-float").append("<tbody/>").append(t.clone(!1)),o=t.outerWidth(),r=t.outerHeight(),n=$($(this.s.dt.table().node()).parent()),s=n.width(),n=n.scrollLeft(),i=t.children().map(function(){return $(this).width()}),t=(e.width(o).height(r).find("tr").children().each(function(t){this.style.width=i[t]+"px"}),$("<div>").addClass("dt-rowReorder-float-parent").width(s).append(e).appendTo("body").scrollLeft(n));this.dom.clone=e,this.dom.cloneParent=t,this.s.domCloneOuterHeight=e.outerHeight()},_clonePosition:function(t){var e=this.s.start,o=this._eventToPage(t,"Y")-e.top,t=this._eventToPage(t,"X")-e.left,r=this.c.snapX,o=o+e.offsetTop,r=!0===r?e.offsetLeft:"number"==typeof r?e.offsetLeft+r:t+e.offsetLeft+this.dom.cloneParent.scrollLeft();o<0?o=0:o+this.s.domCloneOuterHeight>this.s.documentOuterHeight&&(o=this.s.documentOuterHeight-this.s.domCloneOuterHeight),this.dom.cloneParent.css({top:o,left:r})},_emitEvent:function(o,r){var n;return this.s.dt.iterator("table",function(t,e){t=$(t.nTable).triggerHandler(o+".dt",r);void 0!==t&&(n=t)}),n},_eventToPage:function(t,e){return(-1!==t.type.indexOf("touch")?t.originalEvent.touches[0]:t)["page"+e]},_mouseDown:function(t,e){var o=this,r=this.s.dt,n=this.s.start,s=this.c.cancelable,i=e.offset(),i=(n.top=this._eventToPage(t,"Y"),n.left=this._eventToPage(t,"X"),n.offsetTop=i.top,n.offsetLeft=i.left,n.nodes=$.uniqueSort(r.rows({page:"current"}).nodes().toArray()),this._cachePositions(),this._clone(e),this._clonePosition(t),this._eventToPage(t,"Y")-this.s.bodyTop),r=(n.rowIndex=this._calcRowIndexByPos(i),(this.dom.target=e).addClass("dt-rowReorder-moving"),$(l).on("mouseup.rowReorder touchend.rowReorder",function(t){o._mouseUp(t)}).on("mousemove.rowReorder touchmove.rowReorder",function(t){o._mouseMove(t)}),$(d).width()===$(l).width()&&$(l.body).addClass("dt-rowReorder-noOverflow"),this.dom.dtScroll);this.s.scroll={windowHeight:$(d).height(),windowWidth:$(d).width(),dtTop:r.length?r.offset().top:null,dtLeft:r.length?r.offset().left:null,dtHeight:r.length?r.outerHeight():null,dtWidth:r.length?r.outerWidth():null},s&&$(l).on("keyup",this._keyup)},_mouseMove:function(t){this._clonePosition(t);for(var e,o,r=this.s.start,n=this.c.cancelable,s=(n&&(e=this.s.bodyArea,o=this._calcCloneParentArea(),this.s.dropAllowed=this._rectanglesIntersect(e,o),$(this.dom.cloneParent).toggleClass("drop-not-allowed",!this.s.dropAllowed)),this._eventToPage(t,"Y")-this.s.bodyTop),i=this.s.middles,d=null,l=0,a=i.length;l<a;l++)if(s<i[l]){d=l;break}null===d&&(d=i.length),n&&(this.s.dropAllowed||(d=r.rowIndex>this.s.lastInsert?r.rowIndex+1:r.rowIndex),this.dom.target.toggleClass("dt-rowReorder-moving",this.s.dropAllowed)),this._moveTargetIntoPosition(d),this._shiftScroll(t)},_mouseUp:function(t){var e=this,o=this.s.dt,r=this.c.dataSrc;if(this.s.dropAllowed){for(var n,s,i,d=this.s.start.nodes,l=$.uniqueSort(o.rows({page:"current"}).nodes().toArray()),a={},c=[],h=[],u=this.s.getDataFn,f=this.s.setDataFn,w=0,p=d.length;w<p;w++)d[w]!==l[w]&&(n=o.row(l[w]).id(),s=o.row(l[w]).data(),i=o.row(d[w]).data(),n&&(a[n]=u(i)),c.push({node:l[w],oldData:u(s),newData:u(i),newPosition:w,oldPosition:$.inArray(l[w],d)}),h.push(l[w]));var g,m=[c,{dataSrc:r,nodes:h,values:a,triggerRow:o.row(this.dom.target),originalEvent:t}];!1===this._emitEvent("row-reorder",m)?e._cancel():(this._cleanupDragging(),g=function(){if(e.c.update){for(w=0,p=c.length;w<p;w++){var t=o.row(c[w].node).data();f(t,c[w].newData),o.columns().every(function(){this.dataSrc()===r&&o.cell(c[w].node,this.index()).invalidate("data")})}e._emitEvent("row-reordered",m),o.draw(!1)}},this.c.editor?(this.c.enable=!1,this.c.editor.edit(h,!1,$.extend({submit:"changed"},this.c.formOptions)).multiSet(r,a).one("preSubmitCancelled.rowReorder",function(){e.c.enable=!0,e.c.editor.off(".rowReorder"),o.draw(!1)}).one("submitUnsuccessful.rowReorder",function(){o.draw(!1)}).one("submitSuccess.rowReorder",function(){g()}).one("submitComplete",function(){e.c.enable=!0,e.c.editor.off(".rowReorder")}).submit()):g())}else e._cancel()},_moveTargetIntoPosition:function(t){var e,o,r=this.s.dt;null!==this.s.lastInsert&&this.s.lastInsert===t||(e=$.uniqueSort(r.rows({page:"current"}).nodes().toArray()),o="",o=t>this.s.lastInsert?(this.dom.target.insertAfter(e[t-1]),"after"):(this.dom.target.insertBefore(e[t]),"before"),this._cachePositions(),this.s.lastInsert=t,this._emitEvent("row-reorder-changed",{insertPlacement:o,insertPoint:t,row:r.row(this.dom.target)}))},_cleanupDragging:function(){var t=this.c.cancelable;this.dom.clone.remove(),this.dom.cloneParent.remove(),this.dom.clone=null,this.dom.cloneParent=null,this.dom.target.removeClass("dt-rowReorder-moving"),$(l).off(".rowReorder"),$(l.body).removeClass("dt-rowReorder-noOverflow"),clearInterval(this.s.scrollInterval),this.s.scrollInterval=null,t&&$(l).off("keyup",this._keyup)},_shiftScroll:function(t){var e,o,r=this,n=this.s.scroll,s=!1,i=t.pageY-l.body.scrollTop;i<$(d).scrollTop()+65?e=-5:i>n.windowHeight+$(d).scrollTop()-65&&(e=5),null!==n.dtTop&&t.pageY<n.dtTop+65?o=-5:null!==n.dtTop&&t.pageY>n.dtTop+n.dtHeight-65&&(o=5),e||o?(n.windowVert=e,n.dtVert=o,s=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null),!this.s.scrollInterval&&s&&(this.s.scrollInterval=setInterval(function(){var t;n.windowVert&&(t=$(l).scrollTop(),$(l).scrollTop(t+n.windowVert),t!==$(l).scrollTop())&&(t=parseFloat(r.dom.cloneParent.css("top")),r.dom.cloneParent.css("top",t+n.windowVert)),n.dtVert&&(t=r.dom.dtScroll[0],n.dtVert)&&(t.scrollTop+=n.dtVert)},20))},_calcBodyArea:function(t){var e=this.s.dt,o=$(e.table().body()).offset();return{left:o.left,top:o.top,right:o.left+$(e.table().body()).width(),bottom:o.top+$(e.table().body()).height()}},_calcCloneParentArea:function(t){var e=$(this.dom.cloneParent).offset();return{left:e.left,top:e.top,right:e.left+$(this.dom.cloneParent).width(),bottom:e.top+$(this.dom.cloneParent).height()}},_rectanglesIntersect:function(t,e){return!(t.left>=e.right||e.left>=t.right||t.top>=e.bottom||e.top>=t.bottom)},_calcRowIndexByPos:function(r){var t=this.s.dt,e=$.uniqueSort(t.rows({page:"current"}).nodes().toArray()),n=-1,s=$(t.table().node()).find("thead").outerHeight();return $.each(e,function(t,e){var o=$(e).position().top-s,e=o+$(e).outerHeight();o<=r&&r<=e&&(n=t)}),n},_keyup:function(t){this.c.cancelable&&27===t.which&&(t.preventDefault(),this._cancel())},_cancel:function(){var t=this.s.start,t=t.rowIndex>this.s.lastInsert?t.rowIndex+1:t.rowIndex;this._moveTargetIntoPosition(t),this._cleanupDragging(),this._emitEvent("row-reorder-canceled",[this.s.start.rowIndex])}}),s.defaults={dataSrc:0,editor:null,enable:!0,formOptions:{},selector:"td:first-child",snapX:!1,update:!0,excludedChildren:"a",cancelable:!1},$.fn.dataTable.Api);return t.register("rowReorder()",function(){return this}),t.register("rowReorder.enable()",function(e){return void 0===e&&(e=!0),this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=e)})}),t.register("rowReorder.disable()",function(){return this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=!1)})}),s.version="1.5.1",$.fn.dataTable.RowReorder=s,$.fn.DataTable.RowReorder=s,$(l).on("init.dt.dtr",function(t,e,o){var r,n;"dt"===t.namespace&&(t=e.oInit.rowReorder,r=i.defaults.rowReorder,t||r)&&(n=$.extend({},t,r),!1!==t)&&new s(e,n)}),i});
158
158
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.css (-112 / +225 lines)
Lines 4-13 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
:root {
13
:root {
Lines 71-129 div.dt-scroll-body tfoot tr { Link Here
71
div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,
71
div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,
72
div.dt-scroll-body tfoot tr th,
72
div.dt-scroll-body tfoot tr th,
73
div.dt-scroll-body tfoot tr td {
73
div.dt-scroll-body tfoot tr td {
74
  height: 0;
74
  height: 0 !important;
75
  padding-top: 0px;
75
  padding-top: 0px !important;
76
  padding-bottom: 0px;
76
  padding-bottom: 0px !important;
77
  border-top-width: 0px;
77
  border-top-width: 0px !important;
78
  border-bottom-width: 0px;
78
  border-bottom-width: 0px !important;
79
}
79
}
80
div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,
80
div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,
81
div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,
81
div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,
82
div.dt-scroll-body tfoot tr td div.dt-scroll-sizing {
82
div.dt-scroll-body tfoot tr td div.dt-scroll-sizing {
83
  height: 0;
83
  height: 0 !important;
84
  overflow: hidden;
84
  overflow: hidden !important;
85
}
85
}
86
86
87
table.dataTable thead > tr > th:active,
87
table.dataTable thead > tr > th:active,
88
table.dataTable thead > tr > td:active {
88
table.dataTable thead > tr > td:active {
89
  outline: none;
89
  outline: none;
90
}
90
}
91
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before,
91
table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before,
92
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
92
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:before,
93
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before {
93
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before {
94
  position: absolute;
94
  position: absolute;
95
  display: block;
95
  display: block;
96
  bottom: 50%;
96
  bottom: 50%;
97
  content: "\25B2";
97
  content: "\25B2";
98
  content: "\25B2"/"";
98
  content: "\25B2"/"";
99
}
99
}
100
table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
100
table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
101
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
101
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:after,
102
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
102
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
103
  position: absolute;
103
  position: absolute;
104
  display: block;
104
  display: block;
105
  top: 50%;
105
  top: 50%;
106
  content: "\25BC";
106
  content: "\25BC";
107
  content: "\25BC"/"";
107
  content: "\25BC"/"";
108
}
108
}
109
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
109
table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order,
110
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
110
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order,
111
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
111
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order,
112
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
112
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order,
113
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
113
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order {
114
  position: relative;
114
  position: relative;
115
  width: 12px;
115
  width: 12px;
116
  height: 20px;
116
  height: 20px;
117
}
117
}
118
table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
118
table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc .dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
119
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
119
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:before,
120
table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after,
120
table.dataTable thead > tr > td.dt-orderable-asc .dt-column-order:after,
121
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before,
121
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:before,
122
table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
122
table.dataTable thead > tr > td.dt-orderable-desc .dt-column-order:after,
123
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
123
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before,
124
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after,
124
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:after,
125
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before,
125
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:before,
126
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
126
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
127
  left: 0;
127
  left: 0;
128
  opacity: 0.125;
128
  opacity: 0.125;
129
  line-height: 9px;
129
  line-height: 9px;
Lines 140-154 table.dataTable thead > tr > td.dt-orderable-desc:hover { Link Here
140
  outline: 2px solid rgba(0, 0, 0, 0.05);
140
  outline: 2px solid rgba(0, 0, 0, 0.05);
141
  outline-offset: -2px;
141
  outline-offset: -2px;
142
}
142
}
143
table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
143
table.dataTable thead > tr > th.dt-ordering-asc .dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc .dt-column-order:after,
144
table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
144
table.dataTable thead > tr > td.dt-ordering-asc .dt-column-order:before,
145
table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
145
table.dataTable thead > tr > td.dt-ordering-desc .dt-column-order:after {
146
  opacity: 0.6;
146
  opacity: 0.6;
147
}
147
}
148
table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
148
table.dataTable thead > tr > th.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) .dt-column-order:empty, table.dataTable thead > tr > th.sorting_desc_disabled .dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled .dt-column-order:before,
149
table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) span.dt-column-order:empty,
149
table.dataTable thead > tr > td.dt-orderable-none:not(.dt-ordering-asc, .dt-ordering-desc) .dt-column-order:empty,
150
table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
150
table.dataTable thead > tr > td.sorting_desc_disabled .dt-column-order:after,
151
table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
151
table.dataTable thead > tr > td.sorting_asc_disabled .dt-column-order:before {
152
  display: none;
152
  display: none;
153
}
153
}
154
table.dataTable thead > tr > th:active,
154
table.dataTable thead > tr > th:active,
Lines 169-192 table.dataTable tfoot > tr > td div.dt-column-footer { Link Here
169
  align-items: var(--dt-header-align-items);
169
  align-items: var(--dt-header-align-items);
170
  gap: 4px;
170
  gap: 4px;
171
}
171
}
172
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title,
172
table.dataTable thead > tr > th div.dt-column-header .dt-column-title,
173
table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title,
173
table.dataTable thead > tr > th div.dt-column-footer .dt-column-title,
174
table.dataTable thead > tr > td div.dt-column-header span.dt-column-title,
174
table.dataTable thead > tr > td div.dt-column-header .dt-column-title,
175
table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title,
175
table.dataTable thead > tr > td div.dt-column-footer .dt-column-title,
176
table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title,
176
table.dataTable tfoot > tr > th div.dt-column-header .dt-column-title,
177
table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title,
177
table.dataTable tfoot > tr > th div.dt-column-footer .dt-column-title,
178
table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title,
178
table.dataTable tfoot > tr > td div.dt-column-header .dt-column-title,
179
table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title {
179
table.dataTable tfoot > tr > td div.dt-column-footer .dt-column-title {
180
  flex-grow: 1;
180
  flex-grow: 1;
181
}
181
}
182
table.dataTable thead > tr > th div.dt-column-header span.dt-column-title:empty,
182
table.dataTable thead > tr > th div.dt-column-header .dt-column-title:empty,
183
table.dataTable thead > tr > th div.dt-column-footer span.dt-column-title:empty,
183
table.dataTable thead > tr > th div.dt-column-footer .dt-column-title:empty,
184
table.dataTable thead > tr > td div.dt-column-header span.dt-column-title:empty,
184
table.dataTable thead > tr > td div.dt-column-header .dt-column-title:empty,
185
table.dataTable thead > tr > td div.dt-column-footer span.dt-column-title:empty,
185
table.dataTable thead > tr > td div.dt-column-footer .dt-column-title:empty,
186
table.dataTable tfoot > tr > th div.dt-column-header span.dt-column-title:empty,
186
table.dataTable tfoot > tr > th div.dt-column-header .dt-column-title:empty,
187
table.dataTable tfoot > tr > th div.dt-column-footer span.dt-column-title:empty,
187
table.dataTable tfoot > tr > th div.dt-column-footer .dt-column-title:empty,
188
table.dataTable tfoot > tr > td div.dt-column-header span.dt-column-title:empty,
188
table.dataTable tfoot > tr > td div.dt-column-header .dt-column-title:empty,
189
table.dataTable tfoot > tr > td div.dt-column-footer span.dt-column-title:empty {
189
table.dataTable tfoot > tr > td div.dt-column-footer .dt-column-title:empty {
190
  display: none;
190
  display: none;
191
}
191
}
192
192
Lines 443-451 table.dataTable { Link Here
443
  /*
443
  /*
444
   * Header and footer styles
444
   * Header and footer styles
445
   */
445
   */
446
  /*
447
   * Body styles
448
   */
449
}
446
}
450
table.dataTable thead th,
447
table.dataTable thead th,
451
table.dataTable tfoot th {
448
table.dataTable tfoot th {
Lines 465-470 table.dataTable > tfoot > tr > td { Link Here
465
  border-top: 1px solid rgba(0, 0, 0, 0.3);
462
  border-top: 1px solid rgba(0, 0, 0, 0.3);
466
  padding: 10px 10px 6px 10px;
463
  padding: 10px 10px 6px 10px;
467
}
464
}
465
table.dataTable {
466
  /*
467
   * Body styles
468
   */
469
}
468
table.dataTable > tbody > tr {
470
table.dataTable > tbody > tr {
469
  background-color: transparent;
471
  background-color: transparent;
470
}
472
}
Lines 521-528 table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > Link Here
521
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha));
523
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha));
522
}
524
}
523
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
525
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
524
  box-shadow: inset 0 0 0 9999px #0d6efd;
526
  box-shadow: inset 0 0 0 9999px #0d6efd !important;
525
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1);
527
  box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important;
526
}
528
}
527
table.dataTable.order-column > tbody tr > .sorting_1,
529
table.dataTable.order-column > tbody tr > .sorting_1,
528
table.dataTable.order-column > tbody tr > .sorting_2,
530
table.dataTable.order-column > tbody tr > .sorting_2,
Lines 653-659 div.dt-container div.dt-layout-full > *:only-child { Link Here
653
  margin-right: auto;
655
  margin-right: auto;
654
}
656
}
655
div.dt-container div.dt-layout-table > div {
657
div.dt-container div.dt-layout-table > div {
656
  display: block;
658
  display: block !important;
657
}
659
}
658
660
659
@media screen and (max-width: 767px) {
661
@media screen and (max-width: 767px) {
Lines 696-746 div.dt-container .dt-paging .dt-paging-button { Link Here
696
  padding: 0.5em 1em;
698
  padding: 0.5em 1em;
697
  margin-left: 2px;
699
  margin-left: 2px;
698
  text-align: center;
700
  text-align: center;
699
  text-decoration: none;
701
  text-decoration: none !important;
700
  cursor: pointer;
702
  cursor: pointer;
701
  color: inherit;
703
  color: inherit !important;
702
  border: 1px solid transparent;
704
  border: 1px solid transparent;
703
  border-radius: 2px;
705
  border-radius: 2px;
704
  background: transparent;
706
  background: transparent;
705
}
707
}
706
div.dt-container .dt-paging .dt-paging-button.current, div.dt-container .dt-paging .dt-paging-button.current:hover {
708
div.dt-container .dt-paging .dt-paging-button.current, div.dt-container .dt-paging .dt-paging-button.current:hover {
707
  color: inherit;
709
  color: inherit !important;
708
  border: 1px solid rgba(0, 0, 0, 0.3);
710
  border: 1px solid rgba(0, 0, 0, 0.3);
709
  background-color: rgba(0, 0, 0, 0.05);
711
  background-color: rgba(0, 0, 0, 0.05);
710
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05))); /* Chrome,Safari4+ */
712
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(229.5, 229.5, 229.5, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05))); /* Chrome,Safari4+ */
711
  background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Chrome10+,Safari5.1+ */
713
  background: -webkit-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Chrome10+,Safari5.1+ */
712
  background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* FF3.6+ */
714
  background: -moz-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* FF3.6+ */
713
  background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* IE10+ */
715
  background: -ms-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* IE10+ */
714
  background: -o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Opera 11.10+ */
716
  background: -o-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Opera 11.10+ */
715
  background: linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* W3C */
717
  background: linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* W3C */
716
}
718
}
717
div.dt-container .dt-paging .dt-paging-button.disabled, div.dt-container .dt-paging .dt-paging-button.disabled:hover, div.dt-container .dt-paging .dt-paging-button.disabled:active {
719
div.dt-container .dt-paging .dt-paging-button.disabled, div.dt-container .dt-paging .dt-paging-button.disabled:hover, div.dt-container .dt-paging .dt-paging-button.disabled:active {
718
  cursor: default;
720
  cursor: default;
719
  color: rgba(0, 0, 0, 0.5);
721
  color: rgba(0, 0, 0, 0.5) !important;
720
  border: 1px solid transparent;
722
  border: 1px solid transparent;
721
  background: transparent;
723
  background: transparent;
722
  box-shadow: none;
724
  box-shadow: none;
723
}
725
}
724
div.dt-container .dt-paging .dt-paging-button:hover {
726
div.dt-container .dt-paging .dt-paging-button:hover {
725
  color: white;
727
  color: white !important;
726
  border: 1px solid #111;
728
  border: 1px solid #111;
727
  background-color: #111;
729
  background-color: #111;
728
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */
730
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(88.4, 88.4, 88.4)), color-stop(100%, #111)); /* Chrome,Safari4+ */
729
  background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */
731
  background: -webkit-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* Chrome10+,Safari5.1+ */
730
  background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */
732
  background: -moz-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* FF3.6+ */
731
  background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */
733
  background: -ms-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* IE10+ */
732
  background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */
734
  background: -o-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* Opera 11.10+ */
733
  background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */
735
  background: linear-gradient(to bottom, rgb(88.4, 88.4, 88.4) 0%, #111 100%); /* W3C */
734
}
736
}
735
div.dt-container .dt-paging .dt-paging-button:active {
737
div.dt-container .dt-paging .dt-paging-button:active {
736
  outline: none;
738
  outline: none;
737
  background-color: #0c0c0c;
739
  background-color: rgb(11.9, 11.9, 11.9);
738
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */
740
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(42.5, 42.5, 42.5)), color-stop(100%, rgb(11.9, 11.9, 11.9))); /* Chrome,Safari4+ */
739
  background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */
741
  background: -webkit-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* Chrome10+,Safari5.1+ */
740
  background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */
742
  background: -moz-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* FF3.6+ */
741
  background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */
743
  background: -ms-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* IE10+ */
742
  background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */
744
  background: -o-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* Opera 11.10+ */
743
  background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */
745
  background: linear-gradient(to bottom, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%); /* W3C */
744
  box-shadow: inset 0 0 3px #111;
746
  box-shadow: inset 0 0 3px #111;
745
}
747
}
746
div.dt-container .dt-paging .ellipsis {
748
div.dt-container .dt-paging .ellipsis {
Lines 767-774 div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > td Link Here
767
div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td > div.dataTables_sizing {
769
div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td > div.dataTables_sizing {
768
  height: 0;
770
  height: 0;
769
  overflow: hidden;
771
  overflow: hidden;
770
  margin: 0;
772
  margin: 0 !important;
771
  padding: 0;
773
  padding: 0 !important;
772
}
774
}
773
div.dt-container.dt-empty-footer tbody > tr:last-child > * {
775
div.dt-container.dt-empty-footer tbody > tr:last-child > * {
774
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
776
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
Lines 829-842 html.dark .dt-container .dt-paging .dt-paging-button.current, html.dark .dt-cont Link Here
829
  background: rgba(255, 255, 255, 0.15);
831
  background: rgba(255, 255, 255, 0.15);
830
}
832
}
831
html.dark .dt-container .dt-paging .dt-paging-button.disabled, html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover, html.dark .dt-container .dt-paging .dt-paging-button.disabled:active {
833
html.dark .dt-container .dt-paging .dt-paging-button.disabled, html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover, html.dark .dt-container .dt-paging .dt-paging-button.disabled:active {
832
  color: #666;
834
  color: #666 !important;
833
}
835
}
834
html.dark .dt-container .dt-paging .dt-paging-button:hover {
836
html.dark .dt-container .dt-paging .dt-paging-button:hover {
835
  border: 1px solid rgb(53, 53, 53);
837
  border: 1px solid rgb(53, 53, 53);
836
  background: rgb(53, 53, 53);
838
  background: rgb(53, 53, 53);
837
}
839
}
838
html.dark .dt-container .dt-paging .dt-paging-button:active {
840
html.dark .dt-container .dt-paging .dt-paging-button:active {
839
  background: #3a3a3a;
841
  background: rgb(58.1, 58.1, 58.1);
840
}
842
}
841
843
842
/*
844
/*
Lines 942-948 div.dtb-popover-close { Link Here
942
}
944
}
943
945
944
button.dtb-hide-drop {
946
button.dtb-hide-drop {
945
  display: none;
947
  display: none !important;
946
}
948
}
947
949
948
div.dt-button-collection-title {
950
div.dt-button-collection-title {
Lines 1034-1040 div.dt-button-collection span.dt-button-spacer.bar { Link Here
1034
1036
1035
@media print {
1037
@media print {
1036
  table.dataTable tr > * {
1038
  table.dataTable tr > * {
1037
    box-shadow: none;
1039
    box-shadow: none !important;
1038
  }
1040
  }
1039
}
1041
}
1040
div.dt-buttons > .dt-button,
1042
div.dt-buttons > .dt-button,
Lines 1055-1062 div.dt-buttons > div.dt-button-split .dt-button { Link Here
1055
  white-space: nowrap;
1057
  white-space: nowrap;
1056
  overflow: hidden;
1058
  overflow: hidden;
1057
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1059
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1058
  background: linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1060
  background: linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1059
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1061
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(229.5, 229.5, 229.5, 0.1)', EndColorStr='rgba(0, 0, 0, 0.1)');
1060
  -webkit-user-select: none;
1062
  -webkit-user-select: none;
1061
  -moz-user-select: none;
1063
  -moz-user-select: none;
1062
  -ms-user-select: none;
1064
  -ms-user-select: none;
Lines 1076-1092 div.dt-buttons > div.dt-button-split .dt-button.disabled { Link Here
1076
}
1078
}
1077
div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1079
div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1078
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1080
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1079
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1081
  background-color: hsla(0, 0%, -20%, 0.1); /* Fallback */
1080
  background: linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1082
  background: linear-gradient(to bottom, rgba(178.5, 178.5, 178.5, 0.1) 0%, hsla(0, 0%, -20%, 0.1) 100%);
1081
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1083
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(178.5, 178.5, 178.5, 0.1)', EndColorStr='hsla(0, 0%, -20%, 0.1)');
1082
  box-shadow: inset 1px 1px 3px #999999;
1084
  box-shadow: inset 1px 1px 3px #999999;
1083
}
1085
}
1084
div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1086
div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1085
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1087
div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1086
  box-shadow: inset 1px 1px 3px #999999;
1088
  box-shadow: inset 1px 1px 3px #999999;
1087
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1089
  background-color: hsla(0, 0%, -50%, 0.1); /* Fallback */
1088
  background: linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1090
  background: linear-gradient(to bottom, rgba(127.5, 127.5, 127.5, 0.1) 0%, hsla(0, 0%, -50%, 0.1) 100%);
1089
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1091
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(127.5, 127.5, 127.5, 0.1)', EndColorStr='hsla(0, 0%, -50%, 0.1)');
1090
}
1092
}
1091
div.dt-buttons > .dt-button:hover,
1093
div.dt-buttons > .dt-button:hover,
1092
div.dt-buttons > div.dt-button-split .dt-button:hover {
1094
div.dt-buttons > div.dt-button-split .dt-button:hover {
Lines 1095-1103 div.dt-buttons > div.dt-button-split .dt-button:hover { Link Here
1095
div.dt-buttons > .dt-button:hover:not(.disabled),
1097
div.dt-buttons > .dt-button:hover:not(.disabled),
1096
div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1098
div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1097
  border: 1px solid #666;
1099
  border: 1px solid #666;
1098
  background-color: rgba(0, 0, 0, 0.1); /* Fallback */
1100
  background-color: hsla(0, 0%, -30%, 0.1); /* Fallback */
1099
  background: linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
1101
  background: linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, hsla(0, 0%, -30%, 0.1) 100%);
1100
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");
1102
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(153, 153, 153, 0.1)', EndColorStr='hsla(0, 0%, -30%, 0.1)');
1101
}
1103
}
1102
div.dt-buttons > .dt-button:focus:not(.disabled),
1104
div.dt-buttons > .dt-button:focus:not(.disabled),
1103
div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
1105
div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
Lines 1262-1268 div.dt-button-collection.fixed > :last-child { Link Here
1262
  overflow: auto;
1264
  overflow: auto;
1263
}
1265
}
1264
div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
1266
div.dt-button-collection.two-column > :last-child, div.dt-button-collection.three-column > :last-child, div.dt-button-collection.four-column > :last-child {
1265
  display: block;
1267
  display: block !important;
1266
  column-gap: 8px;
1268
  column-gap: 8px;
1267
}
1269
}
1268
div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
1270
div.dt-button-collection.two-column > :last-child > *, div.dt-button-collection.three-column > :last-child > *, div.dt-button-collection.four-column > :last-child > * {
Lines 1378-1384 div.dt-button-background { Link Here
1378
1380
1379
@media screen and (max-width: 640px) {
1381
@media screen and (max-width: 640px) {
1380
  div.dt-buttons {
1382
  div.dt-buttons {
1381
    float: none;
1383
    float: none !important;
1382
    text-align: center;
1384
    text-align: center;
1383
  }
1385
  }
1384
}
1386
}
Lines 1389-1405 html.dark div.dt-buttons > div.dt-button-split .dt-button { Link Here
1389
}
1391
}
1390
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1392
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled),
1391
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1393
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled) {
1392
  background: rgba(179, 179, 179, 0.15);
1394
  background: rgba(178.5, 178.5, 178.5, 0.15);
1393
  box-shadow: inset 1px 1px 2px black;
1395
  box-shadow: inset 1px 1px 2px black;
1394
}
1396
}
1395
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1397
html.dark div.dt-buttons > .dt-button.dt-button-active:not(.disabled):hover:not(.disabled),
1396
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1398
html.dark div.dt-buttons > div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled) {
1397
  background: rgba(128, 128, 128, 0.15);
1399
  background: rgba(127.5, 127.5, 127.5, 0.15);
1398
  box-shadow: inset 1px 1px 3px black;
1400
  box-shadow: inset 1px 1px 3px black;
1399
}
1401
}
1400
html.dark div.dt-buttons > .dt-button:hover:not(.disabled),
1402
html.dark div.dt-buttons > .dt-button:hover:not(.disabled),
1401
html.dark div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1403
html.dark div.dt-buttons > div.dt-button-split .dt-button:hover:not(.disabled) {
1402
  background: rgba(179, 179, 179, 0.15);
1404
  background: rgba(178.5, 178.5, 178.5, 0.15);
1403
}
1405
}
1404
html.dark div.dt-buttons > .dt-button:focus:not(.disabled),
1406
html.dark div.dt-buttons > .dt-button:focus:not(.disabled),
1405
html.dark div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
1407
html.dark div.dt-buttons > div.dt-button-split .dt-button:focus:not(.disabled) {
Lines 1425-1439 html.dark div.dt-button-info { Link Here
1425
}
1427
}
1426
1428
1427
1429
1430
table.fixedHeader-floating,
1431
table.fixedHeader-locked {
1432
  position: relative !important;
1433
  background-color: var(--dt-html-background);
1434
  background-color: var(--dt-html-background);
1435
}
1436
1437
@media print {
1438
  table.fixedHeader-floating,
1439
  table.fixedHeader-locked {
1440
    display: none;
1441
  }
1442
}
1443
1444
1428
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
1445
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
1429
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
1446
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
1430
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
1447
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
1431
  cursor: default;
1448
  cursor: default !important;
1432
}
1449
}
1433
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
1450
table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
1434
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
1451
table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
1435
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
1452
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
1436
  display: none;
1453
  display: none !important;
1437
}
1454
}
1438
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control,
1455
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control,
1439
table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control {
1456
table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control {
Lines 1508-1514 table.dataTable > tbody > tr.child { Link Here
1508
  padding: 0.5em 1em;
1525
  padding: 0.5em 1em;
1509
}
1526
}
1510
table.dataTable > tbody > tr.child:hover {
1527
table.dataTable > tbody > tr.child:hover {
1511
  background: transparent;
1528
  background: transparent !important;
1512
}
1529
}
1513
table.dataTable > tbody > tr.child ul.dtr-details {
1530
table.dataTable > tbody > tr.child ul.dtr-details {
1514
  display: inline-block;
1531
  display: inline-block;
Lines 1596-1614 div.dtr-modal div.dtr-modal-background { Link Here
1596
}
1613
}
1597
html.dark table.dataTable > tbody > tr > td.dtr-control:before,
1614
html.dark table.dataTable > tbody > tr > td.dtr-control:before,
1598
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control:before {
1615
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control:before {
1599
  border-left-color: rgba(255, 255, 255, 0.5);
1616
  border-left-color: rgba(255, 255, 255, 0.5) !important;
1600
}
1617
}
1601
html.dark table.dataTable > tbody > tr > td.dtr-control.arrow-right::before,
1618
html.dark table.dataTable > tbody > tr > td.dtr-control.arrow-right::before,
1602
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control.arrow-right::before {
1619
html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control.arrow-right::before {
1603
  border-right-color: rgba(255, 255, 255, 0.5);
1620
  border-right-color: rgba(255, 255, 255, 0.5) !important;
1604
}
1621
}
1605
html.dark table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1622
html.dark table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1606
html.dark table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before,
1623
html.dark table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before,
1607
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1624
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
1608
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before {
1625
html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before {
1609
  border-top-color: rgba(255, 255, 255, 0.5);
1626
  border-top-color: rgba(255, 255, 255, 0.5) !important;
1610
  border-left-color: transparent;
1627
  border-left-color: transparent !important;
1611
  border-right-color: transparent;
1628
  border-right-color: transparent !important;
1612
}
1629
}
1613
html.dark table.dataTable > tbody > tr.child ul.dtr-details > li,
1630
html.dark table.dataTable > tbody > tr.child ul.dtr-details > li,
1614
html[data-bs-theme=dark] table.dataTable > tbody > tr.child ul.dtr-details > li {
1631
html[data-bs-theme=dark] table.dataTable > tbody > tr.child ul.dtr-details > li {
Lines 1621-1623 html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display { Link Here
1621
}
1638
}
1622
1639
1623
1640
1641
table.dataTable tr.dtrg-group th {
1642
  background-color: rgba(0, 0, 0, 0.1);
1643
  text-align: left;
1644
}
1645
1646
table.dataTable tr.dtrg-group.dtrg-level-0 th {
1647
  font-weight: bold;
1648
}
1649
1650
table.dataTable tr.dtrg-group.dtrg-level-1 th,
1651
table.dataTable tr.dtrg-group.dtrg-level-2 th,
1652
table.dataTable tr.dtrg-group.dtrg-level-3 th,
1653
table.dataTable tr.dtrg-group.dtrg-level-4 th,
1654
table.dataTable tr.dtrg-group.dtrg-level-5 th {
1655
  background-color: rgba(0, 0, 0, 0.05);
1656
  padding-top: 0.25em;
1657
  padding-bottom: 0.25em;
1658
  padding-left: 2em;
1659
  font-size: 0.9em;
1660
}
1661
1662
table.dataTable tr.dtrg-group.dtrg-level-2 th {
1663
  background-color: rgba(0, 0, 0, 0.01);
1664
  padding-left: 2.5em;
1665
}
1666
1667
table.dataTable tr.dtrg-group.dtrg-level-3 th {
1668
  background-color: rgba(0, 0, 0, 0.01);
1669
  padding-left: 3em;
1670
}
1671
1672
table.dataTable tr.dtrg-group.dtrg-level-4 th {
1673
  background-color: rgba(0, 0, 0, 0.01);
1674
  padding-left: 3.5em;
1675
}
1676
1677
table.dataTable tr.dtrg-group.dtrg-level-5 th {
1678
  background-color: rgba(0, 0, 0, 0.01);
1679
  padding-left: 4em;
1680
}
1681
1682
html.dark table.dataTable tr.dtrg-group th {
1683
  background-color: rgba(255, 255, 255, 0.1);
1684
}
1685
html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th {
1686
  background-color: rgba(255, 255, 255, 0.05);
1687
}
1688
html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th,
1689
html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th,
1690
html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th,
1691
html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th {
1692
  background-color: rgba(255, 255, 255, 0.01);
1693
}
1694
1695
1696
div.dt-rowReorder-float-parent {
1697
  table-layout: fixed;
1698
  outline: 2px solid rgb(10, 89, 203);
1699
  z-index: 2001;
1700
  position: absolute !important;
1701
  overflow: hidden;
1702
  border-radius: 3px;
1703
}
1704
div.dt-rowReorder-float-parent table.dt-rowReorder-float {
1705
  opacity: 0.9;
1706
  background-color: white;
1707
  margin: 0 !important;
1708
}
1709
1710
div.dt-rowReorder-float-parent.drop-not-allowed {
1711
  cursor: not-allowed;
1712
}
1713
1714
tr.dt-rowReorder-moving {
1715
  outline: 2px solid #888;
1716
  outline-offset: -2px;
1717
}
1718
1719
body.dt-rowReorder-noOverflow {
1720
  overflow-x: hidden;
1721
}
1722
1723
table.dataTable td.reorder {
1724
  text-align: center;
1725
  cursor: move;
1726
}
1727
1728
html.dark div.dt-rowReorder-float-parent {
1729
  outline-color: rgb(110, 168, 254);
1730
}
1731
html.dark div.dt-rowReorder-float-parent table.dt-rowReorder-float {
1732
  background-color: var(--dt-html-background);
1733
}
1734
html.dark tr.dt-rowReorder-moving {
1735
  outline-color: #aaa;
1736
}
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.js (-14170 / +102491 lines)
Lines 4-327 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
/*! DataTables 2.3.4
13
/*!
14
 * © SpryMedia Ltd - datatables.net/license
15
 */
16
14
17
(function( factory ) {
15
JSZip v3.10.1 - A JavaScript class for generating and reading zip files
18
	"use strict";
16
<http://stuartk.com/jszip>
19
17
20
	if ( typeof define === 'function' && define.amd ) {
18
(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
21
		// AMD
19
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
22
		define( ['jquery'], function ( $ ) {
23
			return factory( $, window, document );
24
		} );
25
	}
26
	else if ( typeof exports === 'object' ) {
27
		// CommonJS
28
		// jQuery's factory checks for a global window - if it isn't present then it
29
		// returns a factory function that expects the window object
30
		var jq = require('jquery');
31
20
32
		if (typeof window === 'undefined') {
21
JSZip uses the library pako released under the MIT license :
33
			module.exports = function (root, $) {
22
https://github.com/nodeca/pako/blob/main/LICENSE
34
				if ( ! root ) {
23
*/
35
					// CommonJS environments without a window global must pass a
36
					// root. This will give an error otherwise
37
					root = window;
38
				}
39
24
40
				if ( ! $ ) {
25
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
41
					$ = jq( root );
26
"use strict";
42
				}
27
var utils = require("./utils");
28
var support = require("./support");
29
// private property
30
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
43
31
44
				return factory( $, root, root.document );
45
			};
46
		}
47
		else {
48
			module.exports = factory( jq, window, window.document );
49
		}
50
	}
51
	else {
52
		// Browser
53
		window.DataTable = factory( jQuery, window, document );
54
	}
55
}(function( $, window, document ) {
56
	"use strict";
57
32
58
	
33
// public method for encoding
59
	var DataTable = function ( selector, options )
34
exports.encode = function(input) {
60
	{
35
    var output = [];
61
		// Check if called with a window or jQuery object for DOM less applications
36
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
62
		// This is for backwards compatibility
37
    var i = 0, len = input.length, remainingBytes = len;
63
		if (DataTable.factory(selector, options)) {
64
			return DataTable;
65
		}
66
	
67
		// When creating with `new`, create a new DataTable, returning the API instance
68
		if (this instanceof DataTable) {
69
			return $(selector).DataTable(options);
70
		}
71
		else {
72
			// Argument switching
73
			options = selector;
74
		}
75
	
76
		var _that = this;
77
		var emptyInit = options === undefined;
78
		var len = this.length;
79
	
80
		if ( emptyInit ) {
81
			options = {};
82
		}
83
	
84
		// Method to get DT API instance from jQuery object
85
		this.api = function ()
86
		{
87
			return new _Api( this );
88
		};
89
	
90
		this.each(function() {
91
			// For each initialisation we want to give it a clean initialisation
92
			// object that can be bashed around
93
			var o = {};
94
			var oInit = len > 1 ? // optimisation for single table case
95
				_fnExtend( o, options, true ) :
96
				options;
97
	
98
			
99
			var i=0, iLen;
100
			var sId = this.getAttribute( 'id' );
101
			var defaults = DataTable.defaults;
102
			var $this = $(this);
103
			
104
			// Sanity check
105
			if ( this.nodeName.toLowerCase() != 'table' )
106
			{
107
				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
108
				return;
109
			}
110
			
111
			// Special case for options
112
			if (oInit.on && oInit.on.options) {
113
				_fnListener($this, 'options', oInit.on.options);
114
			}
115
38
116
			$this.trigger( 'options.dt', oInit );
39
    var isArray = utils.getTypeOf(input) !== "string";
117
			
40
    while (i < input.length) {
118
			/* Backwards compatibility for the defaults */
41
        remainingBytes = len - i;
119
			_fnCompatOpts( defaults );
120
			_fnCompatCols( defaults.column );
121
			
122
			/* Convert the camel-case defaults to Hungarian */
123
			_fnCamelToHungarian( defaults, defaults, true );
124
			_fnCamelToHungarian( defaults.column, defaults.column, true );
125
			
126
			/* Setting up the initialisation object */
127
			_fnCamelToHungarian( defaults, $.extend( oInit, _fnEscapeObject($this.data()) ), true );
128
			
129
			
130
			
131
			/* Check to see if we are re-initialising a table */
132
			var allSettings = DataTable.settings;
133
			for ( i=0, iLen=allSettings.length ; i<iLen ; i++ )
134
			{
135
				var s = allSettings[i];
136
			
137
				/* Base check on table node */
138
				if (
139
					s.nTable == this ||
140
					(s.nTHead && s.nTHead.parentNode == this) ||
141
					(s.nTFoot && s.nTFoot.parentNode == this)
142
				) {
143
					var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
144
					var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
145
			
146
					if ( emptyInit || bRetrieve )
147
					{
148
						return s.oInstance;
149
					}
150
					else if ( bDestroy )
151
					{
152
						new DataTable.Api(s).destroy();
153
						break;
154
					}
155
					else
156
					{
157
						_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );
158
						return;
159
					}
160
				}
161
			
162
				/* If the element we are initialising has the same ID as a table which was previously
163
				 * initialised, but the table nodes don't match (from before) then we destroy the old
164
				 * instance by simply deleting it. This is under the assumption that the table has been
165
				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
166
				 */
167
				if ( s.sTableId == this.id )
168
				{
169
					allSettings.splice( i, 1 );
170
					break;
171
				}
172
			}
173
			
174
			/* Ensure the table has an ID - required for accessibility */
175
			if ( sId === null || sId === "" )
176
			{
177
				sId = "DataTables_Table_"+(DataTable.ext._unique++);
178
				this.id = sId;
179
			}
180
			
181
			// Replacing an existing colgroup with our own. Not ideal, but a merge could take a lot of code
182
			$this.children('colgroup').remove();
183
42
184
			/* Create the settings object for this table and set some of the default parameters */
43
        if (!isArray) {
185
			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
44
            chr1 = input.charCodeAt(i++);
186
				"sDestroyWidth": $this[0].style.width,
45
            chr2 = i < len ? input.charCodeAt(i++) : 0;
187
				"sInstance":     sId,
46
            chr3 = i < len ? input.charCodeAt(i++) : 0;
188
				"sTableId":      sId,
47
        } else {
189
				colgroup: $('<colgroup>').prependTo(this),
48
            chr1 = input[i++];
190
				fastData: function (row, column, type) {
49
            chr2 = i < len ? input[i++] : 0;
191
					return _fnGetCellData(oSettings, row, column, type);
50
            chr3 = i < len ? input[i++] : 0;
192
				}
51
        }
193
			} );
52
194
			oSettings.nTable = this;
53
        enc1 = chr1 >> 2;
195
			oSettings.oInit  = oInit;
54
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
196
			
55
        enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;
197
			allSettings.push( oSettings );
56
        enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;
198
			
57
199
			// Make a single API instance available for internal handling
58
        output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));
200
			oSettings.api = new _Api( oSettings );
59
201
			
60
    }
202
			// Need to add the instance after the instance after the settings object has been added
61
203
			// to the settings array, so we can self reference the table instance if more than one
62
    return output.join("");
204
			oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();
63
};
205
			
64
206
			// Backwards compatibility, before we apply all the defaults
65
// public method for decoding
207
			_fnCompatOpts( oInit );
66
exports.decode = function(input) {
208
			
67
    var chr1, chr2, chr3;
209
			// If the length menu is given, but the init display length is not, use the length menu
68
    var enc1, enc2, enc3, enc4;
210
			if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
69
    var i = 0, resultIndex = 0;
211
			{
70
212
				oInit.iDisplayLength = Array.isArray(oInit.aLengthMenu[0])
71
    var dataUrlPrefix = "data:";
213
					? oInit.aLengthMenu[0][0]
72
214
					: $.isPlainObject( oInit.aLengthMenu[0] )
73
    if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {
215
						? oInit.aLengthMenu[0].value
74
        // This is a common error: people give a data url
216
						: oInit.aLengthMenu[0];
75
        // (data:image/png;base64,iVBOR...) with a {base64: true} and
217
			}
76
        // wonders why things don't work.
218
			
77
        // We can detect that the string input looks like a data url but we
219
			// Apply the defaults and init options to make a single init object will all
78
        // *can't* be sure it is one: removing everything up to the comma would
220
			// options defined from defaults and instance options.
79
        // be too dangerous.
221
			oInit = _fnExtend( $.extend( true, {}, defaults ), oInit );
80
        throw new Error("Invalid base64 input, it looks like a data url.");
222
			
81
    }
223
			
82
224
			// Map the initialisation options onto the settings object
83
    input = input.replace(/[^A-Za-z0-9+/=]/g, "");
225
			_fnMap( oSettings.oFeatures, oInit, [
84
226
				"bPaginate",
85
    var totalLength = input.length * 3 / 4;
227
				"bLengthChange",
86
    if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {
228
				"bFilter",
87
        totalLength--;
229
				"bSort",
88
    }
230
				"bSortMulti",
89
    if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {
231
				"bInfo",
90
        totalLength--;
232
				"bProcessing",
91
    }
233
				"bAutoWidth",
92
    if (totalLength % 1 !== 0) {
234
				"bSortClasses",
93
        // totalLength is not an integer, the length does not match a valid
235
				"bServerSide",
94
        // base64 content. That can happen if:
236
				"bDeferRender"
95
        // - the input is not a base64 content
237
			] );
96
        // - the input is *almost* a base64 content, with a extra chars at the
238
			_fnMap( oSettings, oInit, [
97
        //   beginning or at the end
239
				"ajax",
98
        // - the input uses a base64 variant (base64url for example)
240
				"fnFormatNumber",
99
        throw new Error("Invalid base64 input, bad content length.");
241
				"sServerMethod",
100
    }
242
				"aaSorting",
101
    var output;
243
				"aaSortingFixed",
102
    if (support.uint8array) {
244
				"aLengthMenu",
103
        output = new Uint8Array(totalLength|0);
245
				"sPaginationType",
104
    } else {
246
				"iStateDuration",
105
        output = new Array(totalLength|0);
247
				"bSortCellsTop",
106
    }
248
				"iTabIndex",
107
249
				"sDom",
108
    while (i < input.length) {
250
				"fnStateLoadCallback",
109
251
				"fnStateSaveCallback",
110
        enc1 = _keyStr.indexOf(input.charAt(i++));
252
				"renderer",
111
        enc2 = _keyStr.indexOf(input.charAt(i++));
253
				"searchDelay",
112
        enc3 = _keyStr.indexOf(input.charAt(i++));
254
				"rowId",
113
        enc4 = _keyStr.indexOf(input.charAt(i++));
255
				"caption",
114
256
				"layout",
115
        chr1 = (enc1 << 2) | (enc2 >> 4);
257
				"orderDescReverse",
116
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
258
				"orderIndicators",
117
        chr3 = ((enc3 & 3) << 6) | enc4;
259
				"orderHandler",
118
260
				"titleRow",
119
        output[resultIndex++] = chr1;
261
				"typeDetect",
120
262
				[ "iCookieDuration", "iStateDuration" ], // backwards compat
121
        if (enc3 !== 64) {
263
				[ "oSearch", "oPreviousSearch" ],
122
            output[resultIndex++] = chr2;
264
				[ "aoSearchCols", "aoPreSearchCols" ],
123
        }
265
				[ "iDisplayLength", "_iDisplayLength" ]
124
        if (enc4 !== 64) {
266
			] );
125
            output[resultIndex++] = chr3;
267
			_fnMap( oSettings.oScroll, oInit, [
126
        }
268
				[ "sScrollX", "sX" ],
127
269
				[ "sScrollXInner", "sXInner" ],
128
    }
270
				[ "sScrollY", "sY" ],
129
271
				[ "bScrollCollapse", "bCollapse" ]
130
    return output;
272
			] );
131
};
273
			_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
132
274
			
133
},{"./support":30,"./utils":32}],2:[function(require,module,exports){
275
			/* Callback functions which are array driven */
134
"use strict";
276
			_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback );
135
277
			_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams );
136
var external = require("./external");
278
			_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams );
137
var DataWorker = require("./stream/DataWorker");
279
			_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded );
138
var Crc32Probe = require("./stream/Crc32Probe");
280
			_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback );
139
var DataLengthProbe = require("./stream/DataLengthProbe");
281
			_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow );
140
282
			_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback );
141
/**
283
			_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback );
142
 * Represent a compressed object, with everything needed to decompress it.
284
			_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete );
143
 * @constructor
285
			_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback );
144
 * @param {number} compressedSize the size of the data compressed.
286
			
145
 * @param {number} uncompressedSize the size of the data after decompression.
287
			oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
146
 * @param {number} crc32 the crc32 of the decompressed file.
288
			
147
 * @param {object} compression the type of compression, see lib/compressions.js.
289
			// Add event listeners
148
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.
290
			if (oInit.on) {
149
 */
291
				Object.keys(oInit.on).forEach(function (key) {
150
function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {
292
					_fnListener($this, key, oInit.on[key]);
151
    this.compressedSize = compressedSize;
293
				});
152
    this.uncompressedSize = uncompressedSize;
294
			}
153
    this.crc32 = crc32;
154
    this.compression = compression;
155
    this.compressedContent = data;
156
}
157
158
CompressedObject.prototype = {
159
    /**
160
     * Create a worker to get the uncompressed content.
161
     * @return {GenericWorker} the worker.
162
     */
163
    getContentWorker: function () {
164
        var worker = new DataWorker(external.Promise.resolve(this.compressedContent))
165
            .pipe(this.compression.uncompressWorker())
166
            .pipe(new DataLengthProbe("data_length"));
167
168
        var that = this;
169
        worker.on("end", function () {
170
            if (this.streamInfo["data_length"] !== that.uncompressedSize) {
171
                throw new Error("Bug : uncompressed data size mismatch");
172
            }
173
        });
174
        return worker;
175
    },
176
    /**
177
     * Create a worker to get the compressed content.
178
     * @return {GenericWorker} the worker.
179
     */
180
    getCompressedWorker: function () {
181
        return new DataWorker(external.Promise.resolve(this.compressedContent))
182
            .withStreamInfo("compressedSize", this.compressedSize)
183
            .withStreamInfo("uncompressedSize", this.uncompressedSize)
184
            .withStreamInfo("crc32", this.crc32)
185
            .withStreamInfo("compression", this.compression)
186
        ;
187
    }
188
};
189
190
/**
191
 * Chain the given worker with other workers to compress the content with the
192
 * given compression.
193
 * @param {GenericWorker} uncompressedWorker the worker to pipe.
194
 * @param {Object} compression the compression object.
195
 * @param {Object} compressionOptions the options to use when compressing.
196
 * @return {GenericWorker} the new worker compressing the content.
197
 */
198
CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {
199
    return uncompressedWorker
200
        .pipe(new Crc32Probe())
201
        .pipe(new DataLengthProbe("uncompressedSize"))
202
        .pipe(compression.compressWorker(compressionOptions))
203
        .pipe(new DataLengthProbe("compressedSize"))
204
        .withStreamInfo("compression", compression);
205
};
206
207
module.exports = CompressedObject;
208
209
},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(require,module,exports){
210
"use strict";
211
212
var GenericWorker = require("./stream/GenericWorker");
213
214
exports.STORE = {
215
    magic: "\x00\x00",
216
    compressWorker : function () {
217
        return new GenericWorker("STORE compression");
218
    },
219
    uncompressWorker : function () {
220
        return new GenericWorker("STORE decompression");
221
    }
222
};
223
exports.DEFLATE = require("./flate");
224
225
},{"./flate":7,"./stream/GenericWorker":28}],4:[function(require,module,exports){
226
"use strict";
227
228
var utils = require("./utils");
229
230
/**
231
 * The following functions come from pako, from pako/lib/zlib/crc32.js
232
 * released under the MIT license, see pako https://github.com/nodeca/pako/
233
 */
234
235
// Use ordinary array, since untyped makes no boost here
236
function makeTable() {
237
    var c, table = [];
238
239
    for(var n =0; n < 256; n++){
240
        c = n;
241
        for(var k =0; k < 8; k++){
242
            c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
243
        }
244
        table[n] = c;
245
    }
246
247
    return table;
248
}
249
250
// Create table on load. Just 255 signed longs. Not a problem.
251
var crcTable = makeTable();
252
253
254
function crc32(crc, buf, len, pos) {
255
    var t = crcTable, end = pos + len;
256
257
    crc = crc ^ (-1);
258
259
    for (var i = pos; i < end; i++ ) {
260
        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
261
    }
262
263
    return (crc ^ (-1)); // >>> 0;
264
}
265
266
// That's all for the pako functions.
267
268
/**
269
 * Compute the crc32 of a string.
270
 * This is almost the same as the function crc32, but for strings. Using the
271
 * same function for the two use cases leads to horrible performances.
272
 * @param {Number} crc the starting value of the crc.
273
 * @param {String} str the string to use.
274
 * @param {Number} len the length of the string.
275
 * @param {Number} pos the starting position for the crc32 computation.
276
 * @return {Number} the computed crc32.
277
 */
278
function crc32str(crc, str, len, pos) {
279
    var t = crcTable, end = pos + len;
280
281
    crc = crc ^ (-1);
282
283
    for (var i = pos; i < end; i++ ) {
284
        crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];
285
    }
286
287
    return (crc ^ (-1)); // >>> 0;
288
}
289
290
module.exports = function crc32wrapper(input, crc) {
291
    if (typeof input === "undefined" || !input.length) {
292
        return 0;
293
    }
294
295
    var isArray = utils.getTypeOf(input) !== "string";
296
297
    if(isArray) {
298
        return crc32(crc|0, input, input.length, 0);
299
    } else {
300
        return crc32str(crc|0, input, input.length, 0);
301
    }
302
};
303
304
},{"./utils":32}],5:[function(require,module,exports){
305
"use strict";
306
exports.base64 = false;
307
exports.binary = false;
308
exports.dir = false;
309
exports.createFolders = true;
310
exports.date = null;
311
exports.compression = null;
312
exports.compressionOptions = null;
313
exports.comment = null;
314
exports.unixPermissions = null;
315
exports.dosPermissions = null;
316
317
},{}],6:[function(require,module,exports){
318
"use strict";
319
320
// load the global object first:
321
// - it should be better integrated in the system (unhandledRejection in node)
322
// - the environment may have a custom Promise implementation (see zone.js)
323
var ES6Promise = null;
324
if (typeof Promise !== "undefined") {
325
    ES6Promise = Promise;
326
} else {
327
    ES6Promise = require("lie");
328
}
329
330
/**
331
 * Let the user use/change some implementations.
332
 */
333
module.exports = {
334
    Promise: ES6Promise
335
};
336
337
},{"lie":37}],7:[function(require,module,exports){
338
"use strict";
339
var USE_TYPEDARRAY = (typeof Uint8Array !== "undefined") && (typeof Uint16Array !== "undefined") && (typeof Uint32Array !== "undefined");
340
341
var pako = require("pako");
342
var utils = require("./utils");
343
var GenericWorker = require("./stream/GenericWorker");
344
345
var ARRAY_TYPE = USE_TYPEDARRAY ? "uint8array" : "array";
346
347
exports.magic = "\x08\x00";
348
349
/**
350
 * Create a worker that uses pako to inflate/deflate.
351
 * @constructor
352
 * @param {String} action the name of the pako function to call : either "Deflate" or "Inflate".
353
 * @param {Object} options the options to use when (de)compressing.
354
 */
355
function FlateWorker(action, options) {
356
    GenericWorker.call(this, "FlateWorker/" + action);
357
358
    this._pako = null;
359
    this._pakoAction = action;
360
    this._pakoOptions = options;
361
    // the `meta` object from the last chunk received
362
    // this allow this worker to pass around metadata
363
    this.meta = {};
364
}
365
366
utils.inherits(FlateWorker, GenericWorker);
367
368
/**
369
 * @see GenericWorker.processChunk
370
 */
371
FlateWorker.prototype.processChunk = function (chunk) {
372
    this.meta = chunk.meta;
373
    if (this._pako === null) {
374
        this._createPako();
375
    }
376
    this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);
377
};
378
379
/**
380
 * @see GenericWorker.flush
381
 */
382
FlateWorker.prototype.flush = function () {
383
    GenericWorker.prototype.flush.call(this);
384
    if (this._pako === null) {
385
        this._createPako();
386
    }
387
    this._pako.push([], true);
388
};
389
/**
390
 * @see GenericWorker.cleanUp
391
 */
392
FlateWorker.prototype.cleanUp = function () {
393
    GenericWorker.prototype.cleanUp.call(this);
394
    this._pako = null;
395
};
396
397
/**
398
 * Create the _pako object.
399
 * TODO: lazy-loading this object isn't the best solution but it's the
400
 * quickest. The best solution is to lazy-load the worker list. See also the
401
 * issue #446.
402
 */
403
FlateWorker.prototype._createPako = function () {
404
    this._pako = new pako[this._pakoAction]({
405
        raw: true,
406
        level: this._pakoOptions.level || -1 // default compression
407
    });
408
    var self = this;
409
    this._pako.onData = function(data) {
410
        self.push({
411
            data : data,
412
            meta : self.meta
413
        });
414
    };
415
};
416
417
exports.compressWorker = function (compressionOptions) {
418
    return new FlateWorker("Deflate", compressionOptions);
419
};
420
exports.uncompressWorker = function () {
421
    return new FlateWorker("Inflate", {});
422
};
423
424
},{"./stream/GenericWorker":28,"./utils":32,"pako":38}],8:[function(require,module,exports){
425
"use strict";
426
427
var utils = require("../utils");
428
var GenericWorker = require("../stream/GenericWorker");
429
var utf8 = require("../utf8");
430
var crc32 = require("../crc32");
431
var signature = require("../signature");
432
433
/**
434
 * Transform an integer into a string in hexadecimal.
435
 * @private
436
 * @param {number} dec the number to convert.
437
 * @param {number} bytes the number of bytes to generate.
438
 * @returns {string} the result.
439
 */
440
var decToHex = function(dec, bytes) {
441
    var hex = "", i;
442
    for (i = 0; i < bytes; i++) {
443
        hex += String.fromCharCode(dec & 0xff);
444
        dec = dec >>> 8;
445
    }
446
    return hex;
447
};
448
449
/**
450
 * Generate the UNIX part of the external file attributes.
451
 * @param {Object} unixPermissions the unix permissions or null.
452
 * @param {Boolean} isDir true if the entry is a directory, false otherwise.
453
 * @return {Number} a 32 bit integer.
454
 *
455
 * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
456
 *
457
 * TTTTsstrwxrwxrwx0000000000ADVSHR
458
 * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
459
 *     ^^^_________________________ setuid, setgid, sticky
460
 *        ^^^^^^^^^________________ permissions
461
 *                 ^^^^^^^^^^______ not used ?
462
 *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
463
 */
464
var generateUnixExternalFileAttr = function (unixPermissions, isDir) {
465
466
    var result = unixPermissions;
467
    if (!unixPermissions) {
468
        // I can't use octal values in strict mode, hence the hexa.
469
        //  040775 => 0x41fd
470
        // 0100664 => 0x81b4
471
        result = isDir ? 0x41fd : 0x81b4;
472
    }
473
    return (result & 0xFFFF) << 16;
474
};
475
476
/**
477
 * Generate the DOS part of the external file attributes.
478
 * @param {Object} dosPermissions the dos permissions or null.
479
 * @param {Boolean} isDir true if the entry is a directory, false otherwise.
480
 * @return {Number} a 32 bit integer.
481
 *
482
 * Bit 0     Read-Only
483
 * Bit 1     Hidden
484
 * Bit 2     System
485
 * Bit 3     Volume Label
486
 * Bit 4     Directory
487
 * Bit 5     Archive
488
 */
489
var generateDosExternalFileAttr = function (dosPermissions) {
490
    // the dir flag is already set for compatibility
491
    return (dosPermissions || 0)  & 0x3F;
492
};
493
494
/**
495
 * Generate the various parts used in the construction of the final zip file.
496
 * @param {Object} streamInfo the hash with information about the compressed file.
497
 * @param {Boolean} streamedContent is the content streamed ?
498
 * @param {Boolean} streamingEnded is the stream finished ?
499
 * @param {number} offset the current offset from the start of the zip file.
500
 * @param {String} platform let's pretend we are this platform (change platform dependents fields)
501
 * @param {Function} encodeFileName the function to encode the file name / comment.
502
 * @return {Object} the zip parts.
503
 */
504
var generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {
505
    var file = streamInfo["file"],
506
        compression = streamInfo["compression"],
507
        useCustomEncoding = encodeFileName !== utf8.utf8encode,
508
        encodedFileName = utils.transformTo("string", encodeFileName(file.name)),
509
        utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
510
        comment = file.comment,
511
        encodedComment = utils.transformTo("string", encodeFileName(comment)),
512
        utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
513
        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
514
        useUTF8ForComment = utfEncodedComment.length !== comment.length,
515
        dosTime,
516
        dosDate,
517
        extraFields = "",
518
        unicodePathExtraField = "",
519
        unicodeCommentExtraField = "",
520
        dir = file.dir,
521
        date = file.date;
522
523
524
    var dataInfo = {
525
        crc32 : 0,
526
        compressedSize : 0,
527
        uncompressedSize : 0
528
    };
529
530
    // if the content is streamed, the sizes/crc32 are only available AFTER
531
    // the end of the stream.
532
    if (!streamedContent || streamingEnded) {
533
        dataInfo.crc32 = streamInfo["crc32"];
534
        dataInfo.compressedSize = streamInfo["compressedSize"];
535
        dataInfo.uncompressedSize = streamInfo["uncompressedSize"];
536
    }
537
538
    var bitflag = 0;
539
    if (streamedContent) {
540
        // Bit 3: the sizes/crc32 are set to zero in the local header.
541
        // The correct values are put in the data descriptor immediately
542
        // following the compressed data.
543
        bitflag |= 0x0008;
544
    }
545
    if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {
546
        // Bit 11: Language encoding flag (EFS).
547
        bitflag |= 0x0800;
548
    }
549
550
551
    var extFileAttr = 0;
552
    var versionMadeBy = 0;
553
    if (dir) {
554
        // dos or unix, we set the dos dir flag
555
        extFileAttr |= 0x00010;
556
    }
557
    if(platform === "UNIX") {
558
        versionMadeBy = 0x031E; // UNIX, version 3.0
559
        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
560
    } else { // DOS or other, fallback to DOS
561
        versionMadeBy = 0x0014; // DOS, version 2.0
562
        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
563
    }
564
565
    // date
566
    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
567
    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
568
    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
569
570
    dosTime = date.getUTCHours();
571
    dosTime = dosTime << 6;
572
    dosTime = dosTime | date.getUTCMinutes();
573
    dosTime = dosTime << 5;
574
    dosTime = dosTime | date.getUTCSeconds() / 2;
575
576
    dosDate = date.getUTCFullYear() - 1980;
577
    dosDate = dosDate << 4;
578
    dosDate = dosDate | (date.getUTCMonth() + 1);
579
    dosDate = dosDate << 5;
580
    dosDate = dosDate | date.getUTCDate();
581
582
    if (useUTF8ForFileName) {
583
        // set the unicode path extra field. unzip needs at least one extra
584
        // field to correctly handle unicode path, so using the path is as good
585
        // as any other information. This could improve the situation with
586
        // other archive managers too.
587
        // This field is usually used without the utf8 flag, with a non
588
        // unicode path in the header (winrar, winzip). This helps (a bit)
589
        // with the messy Windows' default compressed folders feature but
590
        // breaks on p7zip which doesn't seek the unicode path extra field.
591
        // So for now, UTF-8 everywhere !
592
        unicodePathExtraField =
593
            // Version
594
            decToHex(1, 1) +
595
            // NameCRC32
596
            decToHex(crc32(encodedFileName), 4) +
597
            // UnicodeName
598
            utfEncodedFileName;
599
600
        extraFields +=
601
            // Info-ZIP Unicode Path Extra Field
602
            "\x75\x70" +
603
            // size
604
            decToHex(unicodePathExtraField.length, 2) +
605
            // content
606
            unicodePathExtraField;
607
    }
608
609
    if(useUTF8ForComment) {
610
611
        unicodeCommentExtraField =
612
            // Version
613
            decToHex(1, 1) +
614
            // CommentCRC32
615
            decToHex(crc32(encodedComment), 4) +
616
            // UnicodeName
617
            utfEncodedComment;
618
619
        extraFields +=
620
            // Info-ZIP Unicode Path Extra Field
621
            "\x75\x63" +
622
            // size
623
            decToHex(unicodeCommentExtraField.length, 2) +
624
            // content
625
            unicodeCommentExtraField;
626
    }
627
628
    var header = "";
629
630
    // version needed to extract
631
    header += "\x0A\x00";
632
    // general purpose bit flag
633
    header += decToHex(bitflag, 2);
634
    // compression method
635
    header += compression.magic;
636
    // last mod file time
637
    header += decToHex(dosTime, 2);
638
    // last mod file date
639
    header += decToHex(dosDate, 2);
640
    // crc-32
641
    header += decToHex(dataInfo.crc32, 4);
642
    // compressed size
643
    header += decToHex(dataInfo.compressedSize, 4);
644
    // uncompressed size
645
    header += decToHex(dataInfo.uncompressedSize, 4);
646
    // file name length
647
    header += decToHex(encodedFileName.length, 2);
648
    // extra field length
649
    header += decToHex(extraFields.length, 2);
650
651
652
    var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;
653
654
    var dirRecord = signature.CENTRAL_FILE_HEADER +
655
        // version made by (00: DOS)
656
        decToHex(versionMadeBy, 2) +
657
        // file header (common to file and central directory)
658
        header +
659
        // file comment length
660
        decToHex(encodedComment.length, 2) +
661
        // disk number start
662
        "\x00\x00" +
663
        // internal file attributes TODO
664
        "\x00\x00" +
665
        // external file attributes
666
        decToHex(extFileAttr, 4) +
667
        // relative offset of local header
668
        decToHex(offset, 4) +
669
        // file name
670
        encodedFileName +
671
        // extra field
672
        extraFields +
673
        // file comment
674
        encodedComment;
675
676
    return {
677
        fileRecord: fileRecord,
678
        dirRecord: dirRecord
679
    };
680
};
681
682
/**
683
 * Generate the EOCD record.
684
 * @param {Number} entriesCount the number of entries in the zip file.
685
 * @param {Number} centralDirLength the length (in bytes) of the central dir.
686
 * @param {Number} localDirLength the length (in bytes) of the local dir.
687
 * @param {String} comment the zip file comment as a binary string.
688
 * @param {Function} encodeFileName the function to encode the comment.
689
 * @return {String} the EOCD record.
690
 */
691
var generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {
692
    var dirEnd = "";
693
    var encodedComment = utils.transformTo("string", encodeFileName(comment));
694
695
    // end of central dir signature
696
    dirEnd = signature.CENTRAL_DIRECTORY_END +
697
        // number of this disk
698
        "\x00\x00" +
699
        // number of the disk with the start of the central directory
700
        "\x00\x00" +
701
        // total number of entries in the central directory on this disk
702
        decToHex(entriesCount, 2) +
703
        // total number of entries in the central directory
704
        decToHex(entriesCount, 2) +
705
        // size of the central directory   4 bytes
706
        decToHex(centralDirLength, 4) +
707
        // offset of start of central directory with respect to the starting disk number
708
        decToHex(localDirLength, 4) +
709
        // .ZIP file comment length
710
        decToHex(encodedComment.length, 2) +
711
        // .ZIP file comment
712
        encodedComment;
713
714
    return dirEnd;
715
};
716
717
/**
718
 * Generate data descriptors for a file entry.
719
 * @param {Object} streamInfo the hash generated by a worker, containing information
720
 * on the file entry.
721
 * @return {String} the data descriptors.
722
 */
723
var generateDataDescriptors = function (streamInfo) {
724
    var descriptor = "";
725
    descriptor = signature.DATA_DESCRIPTOR +
726
        // crc-32                          4 bytes
727
        decToHex(streamInfo["crc32"], 4) +
728
        // compressed size                 4 bytes
729
        decToHex(streamInfo["compressedSize"], 4) +
730
        // uncompressed size               4 bytes
731
        decToHex(streamInfo["uncompressedSize"], 4);
732
733
    return descriptor;
734
};
735
736
737
/**
738
 * A worker to concatenate other workers to create a zip file.
739
 * @param {Boolean} streamFiles `true` to stream the content of the files,
740
 * `false` to accumulate it.
741
 * @param {String} comment the comment to use.
742
 * @param {String} platform the platform to use, "UNIX" or "DOS".
743
 * @param {Function} encodeFileName the function to encode file names and comments.
744
 */
745
function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {
746
    GenericWorker.call(this, "ZipFileWorker");
747
    // The number of bytes written so far. This doesn't count accumulated chunks.
748
    this.bytesWritten = 0;
749
    // The comment of the zip file
750
    this.zipComment = comment;
751
    // The platform "generating" the zip file.
752
    this.zipPlatform = platform;
753
    // the function to encode file names and comments.
754
    this.encodeFileName = encodeFileName;
755
    // Should we stream the content of the files ?
756
    this.streamFiles = streamFiles;
757
    // If `streamFiles` is false, we will need to accumulate the content of the
758
    // files to calculate sizes / crc32 (and write them *before* the content).
759
    // This boolean indicates if we are accumulating chunks (it will change a lot
760
    // during the lifetime of this worker).
761
    this.accumulate = false;
762
    // The buffer receiving chunks when accumulating content.
763
    this.contentBuffer = [];
764
    // The list of generated directory records.
765
    this.dirRecords = [];
766
    // The offset (in bytes) from the beginning of the zip file for the current source.
767
    this.currentSourceOffset = 0;
768
    // The total number of entries in this zip file.
769
    this.entriesCount = 0;
770
    // the name of the file currently being added, null when handling the end of the zip file.
771
    // Used for the emitted metadata.
772
    this.currentFile = null;
773
774
775
776
    this._sources = [];
777
}
778
utils.inherits(ZipFileWorker, GenericWorker);
779
780
/**
781
 * @see GenericWorker.push
782
 */
783
ZipFileWorker.prototype.push = function (chunk) {
784
785
    var currentFilePercent = chunk.meta.percent || 0;
786
    var entriesCount = this.entriesCount;
787
    var remainingFiles = this._sources.length;
788
789
    if(this.accumulate) {
790
        this.contentBuffer.push(chunk);
791
    } else {
792
        this.bytesWritten += chunk.data.length;
793
794
        GenericWorker.prototype.push.call(this, {
795
            data : chunk.data,
796
            meta : {
797
                currentFile : this.currentFile,
798
                percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100
799
            }
800
        });
801
    }
802
};
803
804
/**
805
 * The worker started a new source (an other worker).
806
 * @param {Object} streamInfo the streamInfo object from the new source.
807
 */
808
ZipFileWorker.prototype.openedSource = function (streamInfo) {
809
    this.currentSourceOffset = this.bytesWritten;
810
    this.currentFile = streamInfo["file"].name;
811
812
    var streamedContent = this.streamFiles && !streamInfo["file"].dir;
813
814
    // don't stream folders (because they don't have any content)
815
    if(streamedContent) {
816
        var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
817
        this.push({
818
            data : record.fileRecord,
819
            meta : {percent:0}
820
        });
821
    } else {
822
        // we need to wait for the whole file before pushing anything
823
        this.accumulate = true;
824
    }
825
};
826
827
/**
828
 * The worker finished a source (an other worker).
829
 * @param {Object} streamInfo the streamInfo object from the finished source.
830
 */
831
ZipFileWorker.prototype.closedSource = function (streamInfo) {
832
    this.accumulate = false;
833
    var streamedContent = this.streamFiles && !streamInfo["file"].dir;
834
    var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
835
836
    this.dirRecords.push(record.dirRecord);
837
    if(streamedContent) {
838
        // after the streamed file, we put data descriptors
839
        this.push({
840
            data : generateDataDescriptors(streamInfo),
841
            meta : {percent:100}
842
        });
843
    } else {
844
        // the content wasn't streamed, we need to push everything now
845
        // first the file record, then the content
846
        this.push({
847
            data : record.fileRecord,
848
            meta : {percent:0}
849
        });
850
        while(this.contentBuffer.length) {
851
            this.push(this.contentBuffer.shift());
852
        }
853
    }
854
    this.currentFile = null;
855
};
856
857
/**
858
 * @see GenericWorker.flush
859
 */
860
ZipFileWorker.prototype.flush = function () {
861
862
    var localDirLength = this.bytesWritten;
863
    for(var i = 0; i < this.dirRecords.length; i++) {
864
        this.push({
865
            data : this.dirRecords[i],
866
            meta : {percent:100}
867
        });
868
    }
869
    var centralDirLength = this.bytesWritten - localDirLength;
870
871
    var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);
872
873
    this.push({
874
        data : dirEnd,
875
        meta : {percent:100}
876
    });
877
};
878
879
/**
880
 * Prepare the next source to be read.
881
 */
882
ZipFileWorker.prototype.prepareNextSource = function () {
883
    this.previous = this._sources.shift();
884
    this.openedSource(this.previous.streamInfo);
885
    if (this.isPaused) {
886
        this.previous.pause();
887
    } else {
888
        this.previous.resume();
889
    }
890
};
891
892
/**
893
 * @see GenericWorker.registerPrevious
894
 */
895
ZipFileWorker.prototype.registerPrevious = function (previous) {
896
    this._sources.push(previous);
897
    var self = this;
898
899
    previous.on("data", function (chunk) {
900
        self.processChunk(chunk);
901
    });
902
    previous.on("end", function () {
903
        self.closedSource(self.previous.streamInfo);
904
        if(self._sources.length) {
905
            self.prepareNextSource();
906
        } else {
907
            self.end();
908
        }
909
    });
910
    previous.on("error", function (e) {
911
        self.error(e);
912
    });
913
    return this;
914
};
915
916
/**
917
 * @see GenericWorker.resume
918
 */
919
ZipFileWorker.prototype.resume = function () {
920
    if(!GenericWorker.prototype.resume.call(this)) {
921
        return false;
922
    }
923
924
    if (!this.previous && this._sources.length) {
925
        this.prepareNextSource();
926
        return true;
927
    }
928
    if (!this.previous && !this._sources.length && !this.generatedError) {
929
        this.end();
930
        return true;
931
    }
932
};
933
934
/**
935
 * @see GenericWorker.error
936
 */
937
ZipFileWorker.prototype.error = function (e) {
938
    var sources = this._sources;
939
    if(!GenericWorker.prototype.error.call(this, e)) {
940
        return false;
941
    }
942
    for(var i = 0; i < sources.length; i++) {
943
        try {
944
            sources[i].error(e);
945
        } catch(e) {
946
            // the `error` exploded, nothing to do
947
        }
948
    }
949
    return true;
950
};
951
952
/**
953
 * @see GenericWorker.lock
954
 */
955
ZipFileWorker.prototype.lock = function () {
956
    GenericWorker.prototype.lock.call(this);
957
    var sources = this._sources;
958
    for(var i = 0; i < sources.length; i++) {
959
        sources[i].lock();
960
    }
961
};
962
963
module.exports = ZipFileWorker;
964
965
},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(require,module,exports){
966
"use strict";
967
968
var compressions = require("../compressions");
969
var ZipFileWorker = require("./ZipFileWorker");
970
971
/**
972
 * Find the compression to use.
973
 * @param {String} fileCompression the compression defined at the file level, if any.
974
 * @param {String} zipCompression the compression defined at the load() level.
975
 * @return {Object} the compression object to use.
976
 */
977
var getCompression = function (fileCompression, zipCompression) {
978
979
    var compressionName = fileCompression || zipCompression;
980
    var compression = compressions[compressionName];
981
    if (!compression) {
982
        throw new Error(compressionName + " is not a valid compression method !");
983
    }
984
    return compression;
985
};
986
987
/**
988
 * Create a worker to generate a zip file.
989
 * @param {JSZip} zip the JSZip instance at the right root level.
990
 * @param {Object} options to generate the zip file.
991
 * @param {String} comment the comment to use.
992
 */
993
exports.generateWorker = function (zip, options, comment) {
994
995
    var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);
996
    var entriesCount = 0;
997
    try {
998
999
        zip.forEach(function (relativePath, file) {
1000
            entriesCount++;
1001
            var compression = getCompression(file.options.compression, options.compression);
1002
            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
1003
            var dir = file.dir, date = file.date;
1004
1005
            file._compressWorker(compression, compressionOptions)
1006
                .withStreamInfo("file", {
1007
                    name : relativePath,
1008
                    dir : dir,
1009
                    date : date,
1010
                    comment : file.comment || "",
1011
                    unixPermissions : file.unixPermissions,
1012
                    dosPermissions : file.dosPermissions
1013
                })
1014
                .pipe(zipFileWorker);
1015
        });
1016
        zipFileWorker.entriesCount = entriesCount;
1017
    } catch (e) {
1018
        zipFileWorker.error(e);
1019
    }
1020
1021
    return zipFileWorker;
1022
};
1023
1024
},{"../compressions":3,"./ZipFileWorker":8}],10:[function(require,module,exports){
1025
"use strict";
1026
1027
/**
1028
 * Representation a of zip file in js
1029
 * @constructor
1030
 */
1031
function JSZip() {
1032
    // if this constructor is used without `new`, it adds `new` before itself:
1033
    if(!(this instanceof JSZip)) {
1034
        return new JSZip();
1035
    }
1036
1037
    if(arguments.length) {
1038
        throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
1039
    }
1040
1041
    // object containing the files :
1042
    // {
1043
    //   "folder/" : {...},
1044
    //   "folder/data.txt" : {...}
1045
    // }
1046
    // NOTE: we use a null prototype because we do not
1047
    // want filenames like "toString" coming from a zip file
1048
    // to overwrite methods and attributes in a normal Object.
1049
    this.files = Object.create(null);
1050
1051
    this.comment = null;
1052
1053
    // Where we are in the hierarchy
1054
    this.root = "";
1055
    this.clone = function() {
1056
        var newObj = new JSZip();
1057
        for (var i in this) {
1058
            if (typeof this[i] !== "function") {
1059
                newObj[i] = this[i];
1060
            }
1061
        }
1062
        return newObj;
1063
    };
1064
}
1065
JSZip.prototype = require("./object");
1066
JSZip.prototype.loadAsync = require("./load");
1067
JSZip.support = require("./support");
1068
JSZip.defaults = require("./defaults");
1069
1070
// TODO find a better way to handle this version,
1071
// a require('package.json').version doesn't work with webpack, see #327
1072
JSZip.version = "3.10.1";
1073
1074
JSZip.loadAsync = function (content, options) {
1075
    return new JSZip().loadAsync(content, options);
1076
};
1077
1078
JSZip.external = require("./external");
1079
module.exports = JSZip;
1080
1081
},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(require,module,exports){
1082
"use strict";
1083
var utils = require("./utils");
1084
var external = require("./external");
1085
var utf8 = require("./utf8");
1086
var ZipEntries = require("./zipEntries");
1087
var Crc32Probe = require("./stream/Crc32Probe");
1088
var nodejsUtils = require("./nodejsUtils");
1089
1090
/**
1091
 * Check the CRC32 of an entry.
1092
 * @param {ZipEntry} zipEntry the zip entry to check.
1093
 * @return {Promise} the result.
1094
 */
1095
function checkEntryCRC32(zipEntry) {
1096
    return new external.Promise(function (resolve, reject) {
1097
        var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());
1098
        worker.on("error", function (e) {
1099
            reject(e);
1100
        })
1101
            .on("end", function () {
1102
                if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {
1103
                    reject(new Error("Corrupted zip : CRC32 mismatch"));
1104
                } else {
1105
                    resolve();
1106
                }
1107
            })
1108
            .resume();
1109
    });
1110
}
1111
1112
module.exports = function (data, options) {
1113
    var zip = this;
1114
    options = utils.extend(options || {}, {
1115
        base64: false,
1116
        checkCRC32: false,
1117
        optimizedBinaryString: false,
1118
        createFolders: false,
1119
        decodeFileName: utf8.utf8decode
1120
    });
1121
1122
    if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
1123
        return external.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file."));
1124
    }
1125
1126
    return utils.prepareContent("the loaded zip file", data, true, options.optimizedBinaryString, options.base64)
1127
        .then(function (data) {
1128
            var zipEntries = new ZipEntries(options);
1129
            zipEntries.load(data);
1130
            return zipEntries;
1131
        }).then(function checkCRC32(zipEntries) {
1132
            var promises = [external.Promise.resolve(zipEntries)];
1133
            var files = zipEntries.files;
1134
            if (options.checkCRC32) {
1135
                for (var i = 0; i < files.length; i++) {
1136
                    promises.push(checkEntryCRC32(files[i]));
1137
                }
1138
            }
1139
            return external.Promise.all(promises);
1140
        }).then(function addFiles(results) {
1141
            var zipEntries = results.shift();
1142
            var files = zipEntries.files;
1143
            for (var i = 0; i < files.length; i++) {
1144
                var input = files[i];
1145
1146
                var unsafeName = input.fileNameStr;
1147
                var safeName = utils.resolve(input.fileNameStr);
1148
1149
                zip.file(safeName, input.decompressed, {
1150
                    binary: true,
1151
                    optimizedBinaryString: true,
1152
                    date: input.date,
1153
                    dir: input.dir,
1154
                    comment: input.fileCommentStr.length ? input.fileCommentStr : null,
1155
                    unixPermissions: input.unixPermissions,
1156
                    dosPermissions: input.dosPermissions,
1157
                    createFolders: options.createFolders
1158
                });
1159
                if (!input.dir) {
1160
                    zip.file(safeName).unsafeOriginalName = unsafeName;
1161
                }
1162
            }
1163
            if (zipEntries.zipComment.length) {
1164
                zip.comment = zipEntries.zipComment;
1165
            }
1166
1167
            return zip;
1168
        });
1169
};
1170
1171
},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(require,module,exports){
1172
"use strict";
1173
1174
var utils = require("../utils");
1175
var GenericWorker = require("../stream/GenericWorker");
1176
1177
/**
1178
 * A worker that use a nodejs stream as source.
1179
 * @constructor
1180
 * @param {String} filename the name of the file entry for this stream.
1181
 * @param {Readable} stream the nodejs stream.
1182
 */
1183
function NodejsStreamInputAdapter(filename, stream) {
1184
    GenericWorker.call(this, "Nodejs stream input adapter for " + filename);
1185
    this._upstreamEnded = false;
1186
    this._bindStream(stream);
1187
}
1188
1189
utils.inherits(NodejsStreamInputAdapter, GenericWorker);
1190
1191
/**
1192
 * Prepare the stream and bind the callbacks on it.
1193
 * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.
1194
 * @param {Stream} stream the nodejs stream to use.
1195
 */
1196
NodejsStreamInputAdapter.prototype._bindStream = function (stream) {
1197
    var self = this;
1198
    this._stream = stream;
1199
    stream.pause();
1200
    stream
1201
        .on("data", function (chunk) {
1202
            self.push({
1203
                data: chunk,
1204
                meta : {
1205
                    percent : 0
1206
                }
1207
            });
1208
        })
1209
        .on("error", function (e) {
1210
            if(self.isPaused) {
1211
                this.generatedError = e;
1212
            } else {
1213
                self.error(e);
1214
            }
1215
        })
1216
        .on("end", function () {
1217
            if(self.isPaused) {
1218
                self._upstreamEnded = true;
1219
            } else {
1220
                self.end();
1221
            }
1222
        });
1223
};
1224
NodejsStreamInputAdapter.prototype.pause = function () {
1225
    if(!GenericWorker.prototype.pause.call(this)) {
1226
        return false;
1227
    }
1228
    this._stream.pause();
1229
    return true;
1230
};
1231
NodejsStreamInputAdapter.prototype.resume = function () {
1232
    if(!GenericWorker.prototype.resume.call(this)) {
1233
        return false;
1234
    }
1235
1236
    if(this._upstreamEnded) {
1237
        this.end();
1238
    } else {
1239
        this._stream.resume();
1240
    }
1241
1242
    return true;
1243
};
1244
1245
module.exports = NodejsStreamInputAdapter;
1246
1247
},{"../stream/GenericWorker":28,"../utils":32}],13:[function(require,module,exports){
1248
"use strict";
1249
1250
var Readable = require("readable-stream").Readable;
1251
1252
var utils = require("../utils");
1253
utils.inherits(NodejsStreamOutputAdapter, Readable);
1254
1255
/**
1256
* A nodejs stream using a worker as source.
1257
* @see the SourceWrapper in http://nodejs.org/api/stream.html
1258
* @constructor
1259
* @param {StreamHelper} helper the helper wrapping the worker
1260
* @param {Object} options the nodejs stream options
1261
* @param {Function} updateCb the update callback.
1262
*/
1263
function NodejsStreamOutputAdapter(helper, options, updateCb) {
1264
    Readable.call(this, options);
1265
    this._helper = helper;
1266
1267
    var self = this;
1268
    helper.on("data", function (data, meta) {
1269
        if (!self.push(data)) {
1270
            self._helper.pause();
1271
        }
1272
        if(updateCb) {
1273
            updateCb(meta);
1274
        }
1275
    })
1276
        .on("error", function(e) {
1277
            self.emit("error", e);
1278
        })
1279
        .on("end", function () {
1280
            self.push(null);
1281
        });
1282
}
1283
1284
1285
NodejsStreamOutputAdapter.prototype._read = function() {
1286
    this._helper.resume();
1287
};
1288
1289
module.exports = NodejsStreamOutputAdapter;
1290
1291
},{"../utils":32,"readable-stream":16}],14:[function(require,module,exports){
1292
"use strict";
1293
1294
module.exports = {
1295
    /**
1296
     * True if this is running in Nodejs, will be undefined in a browser.
1297
     * In a browser, browserify won't include this file and the whole module
1298
     * will be resolved an empty object.
1299
     */
1300
    isNode : typeof Buffer !== "undefined",
1301
    /**
1302
     * Create a new nodejs Buffer from an existing content.
1303
     * @param {Object} data the data to pass to the constructor.
1304
     * @param {String} encoding the encoding to use.
1305
     * @return {Buffer} a new Buffer.
1306
     */
1307
    newBufferFrom: function(data, encoding) {
1308
        if (Buffer.from && Buffer.from !== Uint8Array.from) {
1309
            return Buffer.from(data, encoding);
1310
        } else {
1311
            if (typeof data === "number") {
1312
                // Safeguard for old Node.js versions. On newer versions,
1313
                // Buffer.from(number) / Buffer(number, encoding) already throw.
1314
                throw new Error("The \"data\" argument must not be a number");
1315
            }
1316
            return new Buffer(data, encoding);
1317
        }
1318
    },
1319
    /**
1320
     * Create a new nodejs Buffer with the specified size.
1321
     * @param {Integer} size the size of the buffer.
1322
     * @return {Buffer} a new Buffer.
1323
     */
1324
    allocBuffer: function (size) {
1325
        if (Buffer.alloc) {
1326
            return Buffer.alloc(size);
1327
        } else {
1328
            var buf = new Buffer(size);
1329
            buf.fill(0);
1330
            return buf;
1331
        }
1332
    },
1333
    /**
1334
     * Find out if an object is a Buffer.
1335
     * @param {Object} b the object to test.
1336
     * @return {Boolean} true if the object is a Buffer, false otherwise.
1337
     */
1338
    isBuffer : function(b){
1339
        return Buffer.isBuffer(b);
1340
    },
1341
1342
    isStream : function (obj) {
1343
        return obj &&
1344
            typeof obj.on === "function" &&
1345
            typeof obj.pause === "function" &&
1346
            typeof obj.resume === "function";
1347
    }
1348
};
1349
1350
},{}],15:[function(require,module,exports){
1351
"use strict";
1352
var utf8 = require("./utf8");
1353
var utils = require("./utils");
1354
var GenericWorker = require("./stream/GenericWorker");
1355
var StreamHelper = require("./stream/StreamHelper");
1356
var defaults = require("./defaults");
1357
var CompressedObject = require("./compressedObject");
1358
var ZipObject = require("./zipObject");
1359
var generate = require("./generate");
1360
var nodejsUtils = require("./nodejsUtils");
1361
var NodejsStreamInputAdapter = require("./nodejs/NodejsStreamInputAdapter");
1362
1363
1364
/**
1365
 * Add a file in the current folder.
1366
 * @private
1367
 * @param {string} name the name of the file
1368
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
1369
 * @param {Object} originalOptions the options of the file
1370
 * @return {Object} the new file.
1371
 */
1372
var fileAdd = function(name, data, originalOptions) {
1373
    // be sure sub folders exist
1374
    var dataType = utils.getTypeOf(data),
1375
        parent;
1376
1377
1378
    /*
1379
     * Correct options.
1380
     */
1381
1382
    var o = utils.extend(originalOptions || {}, defaults);
1383
    o.date = o.date || new Date();
1384
    if (o.compression !== null) {
1385
        o.compression = o.compression.toUpperCase();
1386
    }
1387
1388
    if (typeof o.unixPermissions === "string") {
1389
        o.unixPermissions = parseInt(o.unixPermissions, 8);
1390
    }
1391
1392
    // UNX_IFDIR  0040000 see zipinfo.c
1393
    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
1394
        o.dir = true;
1395
    }
1396
    // Bit 4    Directory
1397
    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
1398
        o.dir = true;
1399
    }
1400
1401
    if (o.dir) {
1402
        name = forceTrailingSlash(name);
1403
    }
1404
    if (o.createFolders && (parent = parentFolder(name))) {
1405
        folderAdd.call(this, parent, true);
1406
    }
1407
1408
    var isUnicodeString = dataType === "string" && o.binary === false && o.base64 === false;
1409
    if (!originalOptions || typeof originalOptions.binary === "undefined") {
1410
        o.binary = !isUnicodeString;
1411
    }
1412
1413
1414
    var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;
1415
1416
    if (isCompressedEmpty || o.dir || !data || data.length === 0) {
1417
        o.base64 = false;
1418
        o.binary = true;
1419
        data = "";
1420
        o.compression = "STORE";
1421
        dataType = "string";
1422
    }
1423
1424
    /*
1425
     * Convert content to fit.
1426
     */
1427
1428
    var zipObjectContent = null;
1429
    if (data instanceof CompressedObject || data instanceof GenericWorker) {
1430
        zipObjectContent = data;
1431
    } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
1432
        zipObjectContent = new NodejsStreamInputAdapter(name, data);
1433
    } else {
1434
        zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);
1435
    }
1436
1437
    var object = new ZipObject(name, zipObjectContent, o);
1438
    this.files[name] = object;
1439
    /*
1440
    TODO: we can't throw an exception because we have async promises
1441
    (we can have a promise of a Date() for example) but returning a
1442
    promise is useless because file(name, data) returns the JSZip
1443
    object for chaining. Should we break that to allow the user
1444
    to catch the error ?
1445
1446
    return external.Promise.resolve(zipObjectContent)
1447
    .then(function () {
1448
        return object;
1449
    });
1450
    */
1451
};
1452
1453
/**
1454
 * Find the parent folder of the path.
1455
 * @private
1456
 * @param {string} path the path to use
1457
 * @return {string} the parent folder, or ""
1458
 */
1459
var parentFolder = function (path) {
1460
    if (path.slice(-1) === "/") {
1461
        path = path.substring(0, path.length - 1);
1462
    }
1463
    var lastSlash = path.lastIndexOf("/");
1464
    return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
1465
};
1466
1467
/**
1468
 * Returns the path with a slash at the end.
1469
 * @private
1470
 * @param {String} path the path to check.
1471
 * @return {String} the path with a trailing slash.
1472
 */
1473
var forceTrailingSlash = function(path) {
1474
    // Check the name ends with a /
1475
    if (path.slice(-1) !== "/") {
1476
        path += "/"; // IE doesn't like substr(-1)
1477
    }
1478
    return path;
1479
};
1480
1481
/**
1482
 * Add a (sub) folder in the current folder.
1483
 * @private
1484
 * @param {string} name the folder's name
1485
 * @param {boolean=} [createFolders] If true, automatically create sub
1486
 *  folders. Defaults to false.
1487
 * @return {Object} the new folder.
1488
 */
1489
var folderAdd = function(name, createFolders) {
1490
    createFolders = (typeof createFolders !== "undefined") ? createFolders : defaults.createFolders;
1491
1492
    name = forceTrailingSlash(name);
1493
1494
    // Does this folder already exist?
1495
    if (!this.files[name]) {
1496
        fileAdd.call(this, name, null, {
1497
            dir: true,
1498
            createFolders: createFolders
1499
        });
1500
    }
1501
    return this.files[name];
1502
};
1503
1504
/**
1505
* Cross-window, cross-Node-context regular expression detection
1506
* @param  {Object}  object Anything
1507
* @return {Boolean}        true if the object is a regular expression,
1508
* false otherwise
1509
*/
1510
function isRegExp(object) {
1511
    return Object.prototype.toString.call(object) === "[object RegExp]";
1512
}
1513
1514
// return the actual prototype of JSZip
1515
var out = {
1516
    /**
1517
     * @see loadAsync
1518
     */
1519
    load: function() {
1520
        throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
1521
    },
1522
1523
1524
    /**
1525
     * Call a callback function for each entry at this folder level.
1526
     * @param {Function} cb the callback function:
1527
     * function (relativePath, file) {...}
1528
     * It takes 2 arguments : the relative path and the file.
1529
     */
1530
    forEach: function(cb) {
1531
        var filename, relativePath, file;
1532
        // ignore warning about unwanted properties because this.files is a null prototype object
1533
        /* eslint-disable-next-line guard-for-in */
1534
        for (filename in this.files) {
1535
            file = this.files[filename];
1536
            relativePath = filename.slice(this.root.length, filename.length);
1537
            if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root
1538
                cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...
1539
            }
1540
        }
1541
    },
1542
1543
    /**
1544
     * Filter nested files/folders with the specified function.
1545
     * @param {Function} search the predicate to use :
1546
     * function (relativePath, file) {...}
1547
     * It takes 2 arguments : the relative path and the file.
1548
     * @return {Array} An array of matching elements.
1549
     */
1550
    filter: function(search) {
1551
        var result = [];
1552
        this.forEach(function (relativePath, entry) {
1553
            if (search(relativePath, entry)) { // the file matches the function
1554
                result.push(entry);
1555
            }
1556
1557
        });
1558
        return result;
1559
    },
1560
1561
    /**
1562
     * Add a file to the zip file, or search a file.
1563
     * @param   {string|RegExp} name The name of the file to add (if data is defined),
1564
     * the name of the file to find (if no data) or a regex to match files.
1565
     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
1566
     * @param   {Object} o     File options
1567
     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
1568
     * a file (when searching by string) or an array of files (when searching by regex).
1569
     */
1570
    file: function(name, data, o) {
1571
        if (arguments.length === 1) {
1572
            if (isRegExp(name)) {
1573
                var regexp = name;
1574
                return this.filter(function(relativePath, file) {
1575
                    return !file.dir && regexp.test(relativePath);
1576
                });
1577
            }
1578
            else { // text
1579
                var obj = this.files[this.root + name];
1580
                if (obj && !obj.dir) {
1581
                    return obj;
1582
                } else {
1583
                    return null;
1584
                }
1585
            }
1586
        }
1587
        else { // more than one argument : we have data !
1588
            name = this.root + name;
1589
            fileAdd.call(this, name, data, o);
1590
        }
1591
        return this;
1592
    },
1593
1594
    /**
1595
     * Add a directory to the zip file, or search.
1596
     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
1597
     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
1598
     */
1599
    folder: function(arg) {
1600
        if (!arg) {
1601
            return this;
1602
        }
1603
1604
        if (isRegExp(arg)) {
1605
            return this.filter(function(relativePath, file) {
1606
                return file.dir && arg.test(relativePath);
1607
            });
1608
        }
1609
1610
        // else, name is a new folder
1611
        var name = this.root + arg;
1612
        var newFolder = folderAdd.call(this, name);
1613
1614
        // Allow chaining by returning a new object with this folder as the root
1615
        var ret = this.clone();
1616
        ret.root = newFolder.name;
1617
        return ret;
1618
    },
1619
1620
    /**
1621
     * Delete a file, or a directory and all sub-files, from the zip
1622
     * @param {string} name the name of the file to delete
1623
     * @return {JSZip} this JSZip object
1624
     */
1625
    remove: function(name) {
1626
        name = this.root + name;
1627
        var file = this.files[name];
1628
        if (!file) {
1629
            // Look for any folders
1630
            if (name.slice(-1) !== "/") {
1631
                name += "/";
1632
            }
1633
            file = this.files[name];
1634
        }
1635
1636
        if (file && !file.dir) {
1637
            // file
1638
            delete this.files[name];
1639
        } else {
1640
            // maybe a folder, delete recursively
1641
            var kids = this.filter(function(relativePath, file) {
1642
                return file.name.slice(0, name.length) === name;
1643
            });
1644
            for (var i = 0; i < kids.length; i++) {
1645
                delete this.files[kids[i].name];
1646
            }
1647
        }
1648
1649
        return this;
1650
    },
1651
1652
    /**
1653
     * @deprecated This method has been removed in JSZip 3.0, please check the upgrade guide.
1654
     */
1655
    generate: function() {
1656
        throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
1657
    },
1658
1659
    /**
1660
     * Generate the complete zip file as an internal stream.
1661
     * @param {Object} options the options to generate the zip file :
1662
     * - compression, "STORE" by default.
1663
     * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
1664
     * @return {StreamHelper} the streamed zip file.
1665
     */
1666
    generateInternalStream: function(options) {
1667
        var worker, opts = {};
1668
        try {
1669
            opts = utils.extend(options || {}, {
1670
                streamFiles: false,
1671
                compression: "STORE",
1672
                compressionOptions : null,
1673
                type: "",
1674
                platform: "DOS",
1675
                comment: null,
1676
                mimeType: "application/zip",
1677
                encodeFileName: utf8.utf8encode
1678
            });
1679
1680
            opts.type = opts.type.toLowerCase();
1681
            opts.compression = opts.compression.toUpperCase();
1682
1683
            // "binarystring" is preferred but the internals use "string".
1684
            if(opts.type === "binarystring") {
1685
                opts.type = "string";
1686
            }
1687
1688
            if (!opts.type) {
1689
                throw new Error("No output type specified.");
1690
            }
1691
1692
            utils.checkSupport(opts.type);
1693
1694
            // accept nodejs `process.platform`
1695
            if(
1696
                opts.platform === "darwin" ||
1697
                opts.platform === "freebsd" ||
1698
                opts.platform === "linux" ||
1699
                opts.platform === "sunos"
1700
            ) {
1701
                opts.platform = "UNIX";
1702
            }
1703
            if (opts.platform === "win32") {
1704
                opts.platform = "DOS";
1705
            }
1706
1707
            var comment = opts.comment || this.comment || "";
1708
            worker = generate.generateWorker(this, opts, comment);
1709
        } catch (e) {
1710
            worker = new GenericWorker("error");
1711
            worker.error(e);
1712
        }
1713
        return new StreamHelper(worker, opts.type || "string", opts.mimeType);
1714
    },
1715
    /**
1716
     * Generate the complete zip file asynchronously.
1717
     * @see generateInternalStream
1718
     */
1719
    generateAsync: function(options, onUpdate) {
1720
        return this.generateInternalStream(options).accumulate(onUpdate);
1721
    },
1722
    /**
1723
     * Generate the complete zip file asynchronously.
1724
     * @see generateInternalStream
1725
     */
1726
    generateNodeStream: function(options, onUpdate) {
1727
        options = options || {};
1728
        if (!options.type) {
1729
            options.type = "nodebuffer";
1730
        }
1731
        return this.generateInternalStream(options).toNodejsStream(onUpdate);
1732
    }
1733
};
1734
module.exports = out;
1735
1736
},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(require,module,exports){
1737
"use strict";
1738
/*
1739
 * This file is used by module bundlers (browserify/webpack/etc) when
1740
 * including a stream implementation. We use "readable-stream" to get a
1741
 * consistent behavior between nodejs versions but bundlers often have a shim
1742
 * for "stream". Using this shim greatly improve the compatibility and greatly
1743
 * reduce the final size of the bundle (only one stream implementation, not
1744
 * two).
1745
 */
1746
module.exports = require("stream");
1747
1748
},{"stream":undefined}],17:[function(require,module,exports){
1749
"use strict";
1750
var DataReader = require("./DataReader");
1751
var utils = require("../utils");
1752
1753
function ArrayReader(data) {
1754
    DataReader.call(this, data);
1755
    for(var i = 0; i < this.data.length; i++) {
1756
        data[i] = data[i] & 0xFF;
1757
    }
1758
}
1759
utils.inherits(ArrayReader, DataReader);
1760
/**
1761
 * @see DataReader.byteAt
1762
 */
1763
ArrayReader.prototype.byteAt = function(i) {
1764
    return this.data[this.zero + i];
1765
};
1766
/**
1767
 * @see DataReader.lastIndexOfSignature
1768
 */
1769
ArrayReader.prototype.lastIndexOfSignature = function(sig) {
1770
    var sig0 = sig.charCodeAt(0),
1771
        sig1 = sig.charCodeAt(1),
1772
        sig2 = sig.charCodeAt(2),
1773
        sig3 = sig.charCodeAt(3);
1774
    for (var i = this.length - 4; i >= 0; --i) {
1775
        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
1776
            return i - this.zero;
1777
        }
1778
    }
1779
1780
    return -1;
1781
};
1782
/**
1783
 * @see DataReader.readAndCheckSignature
1784
 */
1785
ArrayReader.prototype.readAndCheckSignature = function (sig) {
1786
    var sig0 = sig.charCodeAt(0),
1787
        sig1 = sig.charCodeAt(1),
1788
        sig2 = sig.charCodeAt(2),
1789
        sig3 = sig.charCodeAt(3),
1790
        data = this.readData(4);
1791
    return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];
1792
};
1793
/**
1794
 * @see DataReader.readData
1795
 */
1796
ArrayReader.prototype.readData = function(size) {
1797
    this.checkOffset(size);
1798
    if(size === 0) {
1799
        return [];
1800
    }
1801
    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
1802
    this.index += size;
1803
    return result;
1804
};
1805
module.exports = ArrayReader;
1806
1807
},{"../utils":32,"./DataReader":18}],18:[function(require,module,exports){
1808
"use strict";
1809
var utils = require("../utils");
1810
1811
function DataReader(data) {
1812
    this.data = data; // type : see implementation
1813
    this.length = data.length;
1814
    this.index = 0;
1815
    this.zero = 0;
1816
}
1817
DataReader.prototype = {
1818
    /**
1819
     * Check that the offset will not go too far.
1820
     * @param {string} offset the additional offset to check.
1821
     * @throws {Error} an Error if the offset is out of bounds.
1822
     */
1823
    checkOffset: function(offset) {
1824
        this.checkIndex(this.index + offset);
1825
    },
1826
    /**
1827
     * Check that the specified index will not be too far.
1828
     * @param {string} newIndex the index to check.
1829
     * @throws {Error} an Error if the index is out of bounds.
1830
     */
1831
    checkIndex: function(newIndex) {
1832
        if (this.length < this.zero + newIndex || newIndex < 0) {
1833
            throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
1834
        }
1835
    },
1836
    /**
1837
     * Change the index.
1838
     * @param {number} newIndex The new index.
1839
     * @throws {Error} if the new index is out of the data.
1840
     */
1841
    setIndex: function(newIndex) {
1842
        this.checkIndex(newIndex);
1843
        this.index = newIndex;
1844
    },
1845
    /**
1846
     * Skip the next n bytes.
1847
     * @param {number} n the number of bytes to skip.
1848
     * @throws {Error} if the new index is out of the data.
1849
     */
1850
    skip: function(n) {
1851
        this.setIndex(this.index + n);
1852
    },
1853
    /**
1854
     * Get the byte at the specified index.
1855
     * @param {number} i the index to use.
1856
     * @return {number} a byte.
1857
     */
1858
    byteAt: function() {
1859
        // see implementations
1860
    },
1861
    /**
1862
     * Get the next number with a given byte size.
1863
     * @param {number} size the number of bytes to read.
1864
     * @return {number} the corresponding number.
1865
     */
1866
    readInt: function(size) {
1867
        var result = 0,
1868
            i;
1869
        this.checkOffset(size);
1870
        for (i = this.index + size - 1; i >= this.index; i--) {
1871
            result = (result << 8) + this.byteAt(i);
1872
        }
1873
        this.index += size;
1874
        return result;
1875
    },
1876
    /**
1877
     * Get the next string with a given byte size.
1878
     * @param {number} size the number of bytes to read.
1879
     * @return {string} the corresponding string.
1880
     */
1881
    readString: function(size) {
1882
        return utils.transformTo("string", this.readData(size));
1883
    },
1884
    /**
1885
     * Get raw data without conversion, <size> bytes.
1886
     * @param {number} size the number of bytes to read.
1887
     * @return {Object} the raw data, implementation specific.
1888
     */
1889
    readData: function() {
1890
        // see implementations
1891
    },
1892
    /**
1893
     * Find the last occurrence of a zip signature (4 bytes).
1894
     * @param {string} sig the signature to find.
1895
     * @return {number} the index of the last occurrence, -1 if not found.
1896
     */
1897
    lastIndexOfSignature: function() {
1898
        // see implementations
1899
    },
1900
    /**
1901
     * Read the signature (4 bytes) at the current position and compare it with sig.
1902
     * @param {string} sig the expected signature
1903
     * @return {boolean} true if the signature matches, false otherwise.
1904
     */
1905
    readAndCheckSignature: function() {
1906
        // see implementations
1907
    },
1908
    /**
1909
     * Get the next date.
1910
     * @return {Date} the date.
1911
     */
1912
    readDate: function() {
1913
        var dostime = this.readInt(4);
1914
        return new Date(Date.UTC(
1915
            ((dostime >> 25) & 0x7f) + 1980, // year
1916
            ((dostime >> 21) & 0x0f) - 1, // month
1917
            (dostime >> 16) & 0x1f, // day
1918
            (dostime >> 11) & 0x1f, // hour
1919
            (dostime >> 5) & 0x3f, // minute
1920
            (dostime & 0x1f) << 1)); // second
1921
    }
1922
};
1923
module.exports = DataReader;
1924
1925
},{"../utils":32}],19:[function(require,module,exports){
1926
"use strict";
1927
var Uint8ArrayReader = require("./Uint8ArrayReader");
1928
var utils = require("../utils");
1929
1930
function NodeBufferReader(data) {
1931
    Uint8ArrayReader.call(this, data);
1932
}
1933
utils.inherits(NodeBufferReader, Uint8ArrayReader);
1934
1935
/**
1936
 * @see DataReader.readData
1937
 */
1938
NodeBufferReader.prototype.readData = function(size) {
1939
    this.checkOffset(size);
1940
    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
1941
    this.index += size;
1942
    return result;
1943
};
1944
module.exports = NodeBufferReader;
1945
1946
},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(require,module,exports){
1947
"use strict";
1948
var DataReader = require("./DataReader");
1949
var utils = require("../utils");
1950
1951
function StringReader(data) {
1952
    DataReader.call(this, data);
1953
}
1954
utils.inherits(StringReader, DataReader);
1955
/**
1956
 * @see DataReader.byteAt
1957
 */
1958
StringReader.prototype.byteAt = function(i) {
1959
    return this.data.charCodeAt(this.zero + i);
1960
};
1961
/**
1962
 * @see DataReader.lastIndexOfSignature
1963
 */
1964
StringReader.prototype.lastIndexOfSignature = function(sig) {
1965
    return this.data.lastIndexOf(sig) - this.zero;
1966
};
1967
/**
1968
 * @see DataReader.readAndCheckSignature
1969
 */
1970
StringReader.prototype.readAndCheckSignature = function (sig) {
1971
    var data = this.readData(4);
1972
    return sig === data;
1973
};
1974
/**
1975
 * @see DataReader.readData
1976
 */
1977
StringReader.prototype.readData = function(size) {
1978
    this.checkOffset(size);
1979
    // this will work because the constructor applied the "& 0xff" mask.
1980
    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
1981
    this.index += size;
1982
    return result;
1983
};
1984
module.exports = StringReader;
1985
1986
},{"../utils":32,"./DataReader":18}],21:[function(require,module,exports){
1987
"use strict";
1988
var ArrayReader = require("./ArrayReader");
1989
var utils = require("../utils");
1990
1991
function Uint8ArrayReader(data) {
1992
    ArrayReader.call(this, data);
1993
}
1994
utils.inherits(Uint8ArrayReader, ArrayReader);
1995
/**
1996
 * @see DataReader.readData
1997
 */
1998
Uint8ArrayReader.prototype.readData = function(size) {
1999
    this.checkOffset(size);
2000
    if(size === 0) {
2001
        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
2002
        return new Uint8Array(0);
2003
    }
2004
    var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);
2005
    this.index += size;
2006
    return result;
2007
};
2008
module.exports = Uint8ArrayReader;
2009
2010
},{"../utils":32,"./ArrayReader":17}],22:[function(require,module,exports){
2011
"use strict";
2012
2013
var utils = require("../utils");
2014
var support = require("../support");
2015
var ArrayReader = require("./ArrayReader");
2016
var StringReader = require("./StringReader");
2017
var NodeBufferReader = require("./NodeBufferReader");
2018
var Uint8ArrayReader = require("./Uint8ArrayReader");
2019
2020
/**
2021
 * Create a reader adapted to the data.
2022
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.
2023
 * @return {DataReader} the data reader.
2024
 */
2025
module.exports = function (data) {
2026
    var type = utils.getTypeOf(data);
2027
    utils.checkSupport(type);
2028
    if (type === "string" && !support.uint8array) {
2029
        return new StringReader(data);
2030
    }
2031
    if (type === "nodebuffer") {
2032
        return new NodeBufferReader(data);
2033
    }
2034
    if (support.uint8array) {
2035
        return new Uint8ArrayReader(utils.transformTo("uint8array", data));
2036
    }
2037
    return new ArrayReader(utils.transformTo("array", data));
2038
};
2039
2040
},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(require,module,exports){
2041
"use strict";
2042
exports.LOCAL_FILE_HEADER = "PK\x03\x04";
2043
exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
2044
exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
2045
exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
2046
exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
2047
exports.DATA_DESCRIPTOR = "PK\x07\x08";
2048
2049
},{}],24:[function(require,module,exports){
2050
"use strict";
2051
2052
var GenericWorker = require("./GenericWorker");
2053
var utils = require("../utils");
2054
2055
/**
2056
 * A worker which convert chunks to a specified type.
2057
 * @constructor
2058
 * @param {String} destType the destination type.
2059
 */
2060
function ConvertWorker(destType) {
2061
    GenericWorker.call(this, "ConvertWorker to " + destType);
2062
    this.destType = destType;
2063
}
2064
utils.inherits(ConvertWorker, GenericWorker);
2065
2066
/**
2067
 * @see GenericWorker.processChunk
2068
 */
2069
ConvertWorker.prototype.processChunk = function (chunk) {
2070
    this.push({
2071
        data : utils.transformTo(this.destType, chunk.data),
2072
        meta : chunk.meta
2073
    });
2074
};
2075
module.exports = ConvertWorker;
2076
2077
},{"../utils":32,"./GenericWorker":28}],25:[function(require,module,exports){
2078
"use strict";
2079
2080
var GenericWorker = require("./GenericWorker");
2081
var crc32 = require("../crc32");
2082
var utils = require("../utils");
2083
2084
/**
2085
 * A worker which calculate the crc32 of the data flowing through.
2086
 * @constructor
2087
 */
2088
function Crc32Probe() {
2089
    GenericWorker.call(this, "Crc32Probe");
2090
    this.withStreamInfo("crc32", 0);
2091
}
2092
utils.inherits(Crc32Probe, GenericWorker);
2093
2094
/**
2095
 * @see GenericWorker.processChunk
2096
 */
2097
Crc32Probe.prototype.processChunk = function (chunk) {
2098
    this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);
2099
    this.push(chunk);
2100
};
2101
module.exports = Crc32Probe;
2102
2103
},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(require,module,exports){
2104
"use strict";
2105
2106
var utils = require("../utils");
2107
var GenericWorker = require("./GenericWorker");
2108
2109
/**
2110
 * A worker which calculate the total length of the data flowing through.
2111
 * @constructor
2112
 * @param {String} propName the name used to expose the length
2113
 */
2114
function DataLengthProbe(propName) {
2115
    GenericWorker.call(this, "DataLengthProbe for " + propName);
2116
    this.propName = propName;
2117
    this.withStreamInfo(propName, 0);
2118
}
2119
utils.inherits(DataLengthProbe, GenericWorker);
2120
2121
/**
2122
 * @see GenericWorker.processChunk
2123
 */
2124
DataLengthProbe.prototype.processChunk = function (chunk) {
2125
    if(chunk) {
2126
        var length = this.streamInfo[this.propName] || 0;
2127
        this.streamInfo[this.propName] = length + chunk.data.length;
2128
    }
2129
    GenericWorker.prototype.processChunk.call(this, chunk);
2130
};
2131
module.exports = DataLengthProbe;
2132
2133
2134
},{"../utils":32,"./GenericWorker":28}],27:[function(require,module,exports){
2135
"use strict";
2136
2137
var utils = require("../utils");
2138
var GenericWorker = require("./GenericWorker");
2139
2140
// the size of the generated chunks
2141
// TODO expose this as a public variable
2142
var DEFAULT_BLOCK_SIZE = 16 * 1024;
2143
2144
/**
2145
 * A worker that reads a content and emits chunks.
2146
 * @constructor
2147
 * @param {Promise} dataP the promise of the data to split
2148
 */
2149
function DataWorker(dataP) {
2150
    GenericWorker.call(this, "DataWorker");
2151
    var self = this;
2152
    this.dataIsReady = false;
2153
    this.index = 0;
2154
    this.max = 0;
2155
    this.data = null;
2156
    this.type = "";
2157
2158
    this._tickScheduled = false;
2159
2160
    dataP.then(function (data) {
2161
        self.dataIsReady = true;
2162
        self.data = data;
2163
        self.max = data && data.length || 0;
2164
        self.type = utils.getTypeOf(data);
2165
        if(!self.isPaused) {
2166
            self._tickAndRepeat();
2167
        }
2168
    }, function (e) {
2169
        self.error(e);
2170
    });
2171
}
2172
2173
utils.inherits(DataWorker, GenericWorker);
2174
2175
/**
2176
 * @see GenericWorker.cleanUp
2177
 */
2178
DataWorker.prototype.cleanUp = function () {
2179
    GenericWorker.prototype.cleanUp.call(this);
2180
    this.data = null;
2181
};
2182
2183
/**
2184
 * @see GenericWorker.resume
2185
 */
2186
DataWorker.prototype.resume = function () {
2187
    if(!GenericWorker.prototype.resume.call(this)) {
2188
        return false;
2189
    }
2190
2191
    if (!this._tickScheduled && this.dataIsReady) {
2192
        this._tickScheduled = true;
2193
        utils.delay(this._tickAndRepeat, [], this);
2194
    }
2195
    return true;
2196
};
2197
2198
/**
2199
 * Trigger a tick a schedule an other call to this function.
2200
 */
2201
DataWorker.prototype._tickAndRepeat = function() {
2202
    this._tickScheduled = false;
2203
    if(this.isPaused || this.isFinished) {
2204
        return;
2205
    }
2206
    this._tick();
2207
    if(!this.isFinished) {
2208
        utils.delay(this._tickAndRepeat, [], this);
2209
        this._tickScheduled = true;
2210
    }
2211
};
2212
2213
/**
2214
 * Read and push a chunk.
2215
 */
2216
DataWorker.prototype._tick = function() {
2217
2218
    if(this.isPaused || this.isFinished) {
2219
        return false;
2220
    }
2221
2222
    var size = DEFAULT_BLOCK_SIZE;
2223
    var data = null, nextIndex = Math.min(this.max, this.index + size);
2224
    if (this.index >= this.max) {
2225
        // EOF
2226
        return this.end();
2227
    } else {
2228
        switch(this.type) {
2229
        case "string":
2230
            data = this.data.substring(this.index, nextIndex);
2231
            break;
2232
        case "uint8array":
2233
            data = this.data.subarray(this.index, nextIndex);
2234
            break;
2235
        case "array":
2236
        case "nodebuffer":
2237
            data = this.data.slice(this.index, nextIndex);
2238
            break;
2239
        }
2240
        this.index = nextIndex;
2241
        return this.push({
2242
            data : data,
2243
            meta : {
2244
                percent : this.max ? this.index / this.max * 100 : 0
2245
            }
2246
        });
2247
    }
2248
};
2249
2250
module.exports = DataWorker;
2251
2252
},{"../utils":32,"./GenericWorker":28}],28:[function(require,module,exports){
2253
"use strict";
2254
2255
/**
2256
 * A worker that does nothing but passing chunks to the next one. This is like
2257
 * a nodejs stream but with some differences. On the good side :
2258
 * - it works on IE 6-9 without any issue / polyfill
2259
 * - it weights less than the full dependencies bundled with browserify
2260
 * - it forwards errors (no need to declare an error handler EVERYWHERE)
2261
 *
2262
 * A chunk is an object with 2 attributes : `meta` and `data`. The former is an
2263
 * object containing anything (`percent` for example), see each worker for more
2264
 * details. The latter is the real data (String, Uint8Array, etc).
2265
 *
2266
 * @constructor
2267
 * @param {String} name the name of the stream (mainly used for debugging purposes)
2268
 */
2269
function GenericWorker(name) {
2270
    // the name of the worker
2271
    this.name = name || "default";
2272
    // an object containing metadata about the workers chain
2273
    this.streamInfo = {};
2274
    // an error which happened when the worker was paused
2275
    this.generatedError = null;
2276
    // an object containing metadata to be merged by this worker into the general metadata
2277
    this.extraStreamInfo = {};
2278
    // true if the stream is paused (and should not do anything), false otherwise
2279
    this.isPaused = true;
2280
    // true if the stream is finished (and should not do anything), false otherwise
2281
    this.isFinished = false;
2282
    // true if the stream is locked to prevent further structure updates (pipe), false otherwise
2283
    this.isLocked = false;
2284
    // the event listeners
2285
    this._listeners = {
2286
        "data":[],
2287
        "end":[],
2288
        "error":[]
2289
    };
2290
    // the previous worker, if any
2291
    this.previous = null;
2292
}
2293
2294
GenericWorker.prototype = {
2295
    /**
2296
     * Push a chunk to the next workers.
2297
     * @param {Object} chunk the chunk to push
2298
     */
2299
    push : function (chunk) {
2300
        this.emit("data", chunk);
2301
    },
2302
    /**
2303
     * End the stream.
2304
     * @return {Boolean} true if this call ended the worker, false otherwise.
2305
     */
2306
    end : function () {
2307
        if (this.isFinished) {
2308
            return false;
2309
        }
2310
2311
        this.flush();
2312
        try {
2313
            this.emit("end");
2314
            this.cleanUp();
2315
            this.isFinished = true;
2316
        } catch (e) {
2317
            this.emit("error", e);
2318
        }
2319
        return true;
2320
    },
2321
    /**
2322
     * End the stream with an error.
2323
     * @param {Error} e the error which caused the premature end.
2324
     * @return {Boolean} true if this call ended the worker with an error, false otherwise.
2325
     */
2326
    error : function (e) {
2327
        if (this.isFinished) {
2328
            return false;
2329
        }
2330
2331
        if(this.isPaused) {
2332
            this.generatedError = e;
2333
        } else {
2334
            this.isFinished = true;
2335
2336
            this.emit("error", e);
2337
2338
            // in the workers chain exploded in the middle of the chain,
2339
            // the error event will go downward but we also need to notify
2340
            // workers upward that there has been an error.
2341
            if(this.previous) {
2342
                this.previous.error(e);
2343
            }
2344
2345
            this.cleanUp();
2346
        }
2347
        return true;
2348
    },
2349
    /**
2350
     * Add a callback on an event.
2351
     * @param {String} name the name of the event (data, end, error)
2352
     * @param {Function} listener the function to call when the event is triggered
2353
     * @return {GenericWorker} the current object for chainability
2354
     */
2355
    on : function (name, listener) {
2356
        this._listeners[name].push(listener);
2357
        return this;
2358
    },
2359
    /**
2360
     * Clean any references when a worker is ending.
2361
     */
2362
    cleanUp : function () {
2363
        this.streamInfo = this.generatedError = this.extraStreamInfo = null;
2364
        this._listeners = [];
2365
    },
2366
    /**
2367
     * Trigger an event. This will call registered callback with the provided arg.
2368
     * @param {String} name the name of the event (data, end, error)
2369
     * @param {Object} arg the argument to call the callback with.
2370
     */
2371
    emit : function (name, arg) {
2372
        if (this._listeners[name]) {
2373
            for(var i = 0; i < this._listeners[name].length; i++) {
2374
                this._listeners[name][i].call(this, arg);
2375
            }
2376
        }
2377
    },
2378
    /**
2379
     * Chain a worker with an other.
2380
     * @param {Worker} next the worker receiving events from the current one.
2381
     * @return {worker} the next worker for chainability
2382
     */
2383
    pipe : function (next) {
2384
        return next.registerPrevious(this);
2385
    },
2386
    /**
2387
     * Same as `pipe` in the other direction.
2388
     * Using an API with `pipe(next)` is very easy.
2389
     * Implementing the API with the point of view of the next one registering
2390
     * a source is easier, see the ZipFileWorker.
2391
     * @param {Worker} previous the previous worker, sending events to this one
2392
     * @return {Worker} the current worker for chainability
2393
     */
2394
    registerPrevious : function (previous) {
2395
        if (this.isLocked) {
2396
            throw new Error("The stream '" + this + "' has already been used.");
2397
        }
2398
2399
        // sharing the streamInfo...
2400
        this.streamInfo = previous.streamInfo;
2401
        // ... and adding our own bits
2402
        this.mergeStreamInfo();
2403
        this.previous =  previous;
2404
        var self = this;
2405
        previous.on("data", function (chunk) {
2406
            self.processChunk(chunk);
2407
        });
2408
        previous.on("end", function () {
2409
            self.end();
2410
        });
2411
        previous.on("error", function (e) {
2412
            self.error(e);
2413
        });
2414
        return this;
2415
    },
2416
    /**
2417
     * Pause the stream so it doesn't send events anymore.
2418
     * @return {Boolean} true if this call paused the worker, false otherwise.
2419
     */
2420
    pause : function () {
2421
        if(this.isPaused || this.isFinished) {
2422
            return false;
2423
        }
2424
        this.isPaused = true;
2425
2426
        if(this.previous) {
2427
            this.previous.pause();
2428
        }
2429
        return true;
2430
    },
2431
    /**
2432
     * Resume a paused stream.
2433
     * @return {Boolean} true if this call resumed the worker, false otherwise.
2434
     */
2435
    resume : function () {
2436
        if(!this.isPaused || this.isFinished) {
2437
            return false;
2438
        }
2439
        this.isPaused = false;
2440
2441
        // if true, the worker tried to resume but failed
2442
        var withError = false;
2443
        if(this.generatedError) {
2444
            this.error(this.generatedError);
2445
            withError = true;
2446
        }
2447
        if(this.previous) {
2448
            this.previous.resume();
2449
        }
2450
2451
        return !withError;
2452
    },
2453
    /**
2454
     * Flush any remaining bytes as the stream is ending.
2455
     */
2456
    flush : function () {},
2457
    /**
2458
     * Process a chunk. This is usually the method overridden.
2459
     * @param {Object} chunk the chunk to process.
2460
     */
2461
    processChunk : function(chunk) {
2462
        this.push(chunk);
2463
    },
2464
    /**
2465
     * Add a key/value to be added in the workers chain streamInfo once activated.
2466
     * @param {String} key the key to use
2467
     * @param {Object} value the associated value
2468
     * @return {Worker} the current worker for chainability
2469
     */
2470
    withStreamInfo : function (key, value) {
2471
        this.extraStreamInfo[key] = value;
2472
        this.mergeStreamInfo();
2473
        return this;
2474
    },
2475
    /**
2476
     * Merge this worker's streamInfo into the chain's streamInfo.
2477
     */
2478
    mergeStreamInfo : function () {
2479
        for(var key in this.extraStreamInfo) {
2480
            if (!Object.prototype.hasOwnProperty.call(this.extraStreamInfo, key)) {
2481
                continue;
2482
            }
2483
            this.streamInfo[key] = this.extraStreamInfo[key];
2484
        }
2485
    },
2486
2487
    /**
2488
     * Lock the stream to prevent further updates on the workers chain.
2489
     * After calling this method, all calls to pipe will fail.
2490
     */
2491
    lock: function () {
2492
        if (this.isLocked) {
2493
            throw new Error("The stream '" + this + "' has already been used.");
2494
        }
2495
        this.isLocked = true;
2496
        if (this.previous) {
2497
            this.previous.lock();
2498
        }
2499
    },
2500
2501
    /**
2502
     *
2503
     * Pretty print the workers chain.
2504
     */
2505
    toString : function () {
2506
        var me = "Worker " + this.name;
2507
        if (this.previous) {
2508
            return this.previous + " -> " + me;
2509
        } else {
2510
            return me;
2511
        }
2512
    }
2513
};
2514
2515
module.exports = GenericWorker;
2516
2517
},{}],29:[function(require,module,exports){
2518
"use strict";
2519
2520
var utils = require("../utils");
2521
var ConvertWorker = require("./ConvertWorker");
2522
var GenericWorker = require("./GenericWorker");
2523
var base64 = require("../base64");
2524
var support = require("../support");
2525
var external = require("../external");
2526
2527
var NodejsStreamOutputAdapter = null;
2528
if (support.nodestream) {
2529
    try {
2530
        NodejsStreamOutputAdapter = require("../nodejs/NodejsStreamOutputAdapter");
2531
    } catch(e) {
2532
        // ignore
2533
    }
2534
}
2535
2536
/**
2537
 * Apply the final transformation of the data. If the user wants a Blob for
2538
 * example, it's easier to work with an U8intArray and finally do the
2539
 * ArrayBuffer/Blob conversion.
2540
 * @param {String} type the name of the final type
2541
 * @param {String|Uint8Array|Buffer} content the content to transform
2542
 * @param {String} mimeType the mime type of the content, if applicable.
2543
 * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.
2544
 */
2545
function transformZipOutput(type, content, mimeType) {
2546
    switch(type) {
2547
    case "blob" :
2548
        return utils.newBlob(utils.transformTo("arraybuffer", content), mimeType);
2549
    case "base64" :
2550
        return base64.encode(content);
2551
    default :
2552
        return utils.transformTo(type, content);
2553
    }
2554
}
2555
2556
/**
2557
 * Concatenate an array of data of the given type.
2558
 * @param {String} type the type of the data in the given array.
2559
 * @param {Array} dataArray the array containing the data chunks to concatenate
2560
 * @return {String|Uint8Array|Buffer} the concatenated data
2561
 * @throws Error if the asked type is unsupported
2562
 */
2563
function concat (type, dataArray) {
2564
    var i, index = 0, res = null, totalLength = 0;
2565
    for(i = 0; i < dataArray.length; i++) {
2566
        totalLength += dataArray[i].length;
2567
    }
2568
    switch(type) {
2569
    case "string":
2570
        return dataArray.join("");
2571
    case "array":
2572
        return Array.prototype.concat.apply([], dataArray);
2573
    case "uint8array":
2574
        res = new Uint8Array(totalLength);
2575
        for(i = 0; i < dataArray.length; i++) {
2576
            res.set(dataArray[i], index);
2577
            index += dataArray[i].length;
2578
        }
2579
        return res;
2580
    case "nodebuffer":
2581
        return Buffer.concat(dataArray);
2582
    default:
2583
        throw new Error("concat : unsupported type '"  + type + "'");
2584
    }
2585
}
2586
2587
/**
2588
 * Listen a StreamHelper, accumulate its content and concatenate it into a
2589
 * complete block.
2590
 * @param {StreamHelper} helper the helper to use.
2591
 * @param {Function} updateCallback a callback called on each update. Called
2592
 * with one arg :
2593
 * - the metadata linked to the update received.
2594
 * @return Promise the promise for the accumulation.
2595
 */
2596
function accumulate(helper, updateCallback) {
2597
    return new external.Promise(function (resolve, reject){
2598
        var dataArray = [];
2599
        var chunkType = helper._internalType,
2600
            resultType = helper._outputType,
2601
            mimeType = helper._mimeType;
2602
        helper
2603
            .on("data", function (data, meta) {
2604
                dataArray.push(data);
2605
                if(updateCallback) {
2606
                    updateCallback(meta);
2607
                }
2608
            })
2609
            .on("error", function(err) {
2610
                dataArray = [];
2611
                reject(err);
2612
            })
2613
            .on("end", function (){
2614
                try {
2615
                    var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);
2616
                    resolve(result);
2617
                } catch (e) {
2618
                    reject(e);
2619
                }
2620
                dataArray = [];
2621
            })
2622
            .resume();
2623
    });
2624
}
2625
2626
/**
2627
 * An helper to easily use workers outside of JSZip.
2628
 * @constructor
2629
 * @param {Worker} worker the worker to wrap
2630
 * @param {String} outputType the type of data expected by the use
2631
 * @param {String} mimeType the mime type of the content, if applicable.
2632
 */
2633
function StreamHelper(worker, outputType, mimeType) {
2634
    var internalType = outputType;
2635
    switch(outputType) {
2636
    case "blob":
2637
    case "arraybuffer":
2638
        internalType = "uint8array";
2639
        break;
2640
    case "base64":
2641
        internalType = "string";
2642
        break;
2643
    }
2644
2645
    try {
2646
        // the type used internally
2647
        this._internalType = internalType;
2648
        // the type used to output results
2649
        this._outputType = outputType;
2650
        // the mime type
2651
        this._mimeType = mimeType;
2652
        utils.checkSupport(internalType);
2653
        this._worker = worker.pipe(new ConvertWorker(internalType));
2654
        // the last workers can be rewired without issues but we need to
2655
        // prevent any updates on previous workers.
2656
        worker.lock();
2657
    } catch(e) {
2658
        this._worker = new GenericWorker("error");
2659
        this._worker.error(e);
2660
    }
2661
}
2662
2663
StreamHelper.prototype = {
2664
    /**
2665
     * Listen a StreamHelper, accumulate its content and concatenate it into a
2666
     * complete block.
2667
     * @param {Function} updateCb the update callback.
2668
     * @return Promise the promise for the accumulation.
2669
     */
2670
    accumulate : function (updateCb) {
2671
        return accumulate(this, updateCb);
2672
    },
2673
    /**
2674
     * Add a listener on an event triggered on a stream.
2675
     * @param {String} evt the name of the event
2676
     * @param {Function} fn the listener
2677
     * @return {StreamHelper} the current helper.
2678
     */
2679
    on : function (evt, fn) {
2680
        var self = this;
2681
2682
        if(evt === "data") {
2683
            this._worker.on(evt, function (chunk) {
2684
                fn.call(self, chunk.data, chunk.meta);
2685
            });
2686
        } else {
2687
            this._worker.on(evt, function () {
2688
                utils.delay(fn, arguments, self);
2689
            });
2690
        }
2691
        return this;
2692
    },
2693
    /**
2694
     * Resume the flow of chunks.
2695
     * @return {StreamHelper} the current helper.
2696
     */
2697
    resume : function () {
2698
        utils.delay(this._worker.resume, [], this._worker);
2699
        return this;
2700
    },
2701
    /**
2702
     * Pause the flow of chunks.
2703
     * @return {StreamHelper} the current helper.
2704
     */
2705
    pause : function () {
2706
        this._worker.pause();
2707
        return this;
2708
    },
2709
    /**
2710
     * Return a nodejs stream for this helper.
2711
     * @param {Function} updateCb the update callback.
2712
     * @return {NodejsStreamOutputAdapter} the nodejs stream.
2713
     */
2714
    toNodejsStream : function (updateCb) {
2715
        utils.checkSupport("nodestream");
2716
        if (this._outputType !== "nodebuffer") {
2717
            // an object stream containing blob/arraybuffer/uint8array/string
2718
            // is strange and I don't know if it would be useful.
2719
            // I you find this comment and have a good usecase, please open a
2720
            // bug report !
2721
            throw new Error(this._outputType + " is not supported by this method");
2722
        }
2723
2724
        return new NodejsStreamOutputAdapter(this, {
2725
            objectMode : this._outputType !== "nodebuffer"
2726
        }, updateCb);
2727
    }
2728
};
2729
2730
2731
module.exports = StreamHelper;
2732
2733
},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(require,module,exports){
2734
"use strict";
2735
2736
exports.base64 = true;
2737
exports.array = true;
2738
exports.string = true;
2739
exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
2740
exports.nodebuffer = typeof Buffer !== "undefined";
2741
// contains true if JSZip can read/generate Uint8Array, false otherwise.
2742
exports.uint8array = typeof Uint8Array !== "undefined";
2743
2744
if (typeof ArrayBuffer === "undefined") {
2745
    exports.blob = false;
2746
}
2747
else {
2748
    var buffer = new ArrayBuffer(0);
2749
    try {
2750
        exports.blob = new Blob([buffer], {
2751
            type: "application/zip"
2752
        }).size === 0;
2753
    }
2754
    catch (e) {
2755
        try {
2756
            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
2757
            var builder = new Builder();
2758
            builder.append(buffer);
2759
            exports.blob = builder.getBlob("application/zip").size === 0;
2760
        }
2761
        catch (e) {
2762
            exports.blob = false;
2763
        }
2764
    }
2765
}
2766
2767
try {
2768
    exports.nodestream = !!require("readable-stream").Readable;
2769
} catch(e) {
2770
    exports.nodestream = false;
2771
}
2772
2773
},{"readable-stream":16}],31:[function(require,module,exports){
2774
"use strict";
2775
2776
var utils = require("./utils");
2777
var support = require("./support");
2778
var nodejsUtils = require("./nodejsUtils");
2779
var GenericWorker = require("./stream/GenericWorker");
2780
2781
/**
2782
 * The following functions come from pako, from pako/lib/utils/strings
2783
 * released under the MIT license, see pako https://github.com/nodeca/pako/
2784
 */
2785
2786
// Table with utf8 lengths (calculated by first byte of sequence)
2787
// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
2788
// because max possible codepoint is 0x10ffff
2789
var _utf8len = new Array(256);
2790
for (var i=0; i<256; i++) {
2791
    _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
2792
}
2793
_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
2794
2795
// convert string to array (typed, when possible)
2796
var string2buf = function (str) {
2797
    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
2798
2799
    // count binary size
2800
    for (m_pos = 0; m_pos < str_len; m_pos++) {
2801
        c = str.charCodeAt(m_pos);
2802
        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
2803
            c2 = str.charCodeAt(m_pos+1);
2804
            if ((c2 & 0xfc00) === 0xdc00) {
2805
                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
2806
                m_pos++;
2807
            }
2808
        }
2809
        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
2810
    }
2811
2812
    // allocate buffer
2813
    if (support.uint8array) {
2814
        buf = new Uint8Array(buf_len);
2815
    } else {
2816
        buf = new Array(buf_len);
2817
    }
2818
2819
    // convert
2820
    for (i=0, m_pos = 0; i < buf_len; m_pos++) {
2821
        c = str.charCodeAt(m_pos);
2822
        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
2823
            c2 = str.charCodeAt(m_pos+1);
2824
            if ((c2 & 0xfc00) === 0xdc00) {
2825
                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
2826
                m_pos++;
2827
            }
2828
        }
2829
        if (c < 0x80) {
2830
            /* one byte */
2831
            buf[i++] = c;
2832
        } else if (c < 0x800) {
2833
            /* two bytes */
2834
            buf[i++] = 0xC0 | (c >>> 6);
2835
            buf[i++] = 0x80 | (c & 0x3f);
2836
        } else if (c < 0x10000) {
2837
            /* three bytes */
2838
            buf[i++] = 0xE0 | (c >>> 12);
2839
            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
2840
            buf[i++] = 0x80 | (c & 0x3f);
2841
        } else {
2842
            /* four bytes */
2843
            buf[i++] = 0xf0 | (c >>> 18);
2844
            buf[i++] = 0x80 | (c >>> 12 & 0x3f);
2845
            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
2846
            buf[i++] = 0x80 | (c & 0x3f);
2847
        }
2848
    }
2849
2850
    return buf;
2851
};
2852
2853
// Calculate max possible position in utf8 buffer,
2854
// that will not break sequence. If that's not possible
2855
// - (very small limits) return max size as is.
2856
//
2857
// buf[] - utf8 bytes array
2858
// max   - length limit (mandatory);
2859
var utf8border = function(buf, max) {
2860
    var pos;
2861
2862
    max = max || buf.length;
2863
    if (max > buf.length) { max = buf.length; }
2864
2865
    // go back from last position, until start of sequence found
2866
    pos = max-1;
2867
    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
2868
2869
    // Fuckup - very small and broken sequence,
2870
    // return max, because we should return something anyway.
2871
    if (pos < 0) { return max; }
2872
2873
    // If we came to start of buffer - that means vuffer is too small,
2874
    // return max too.
2875
    if (pos === 0) { return max; }
2876
2877
    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
2878
};
2879
2880
// convert array to string
2881
var buf2string = function (buf) {
2882
    var i, out, c, c_len;
2883
    var len = buf.length;
2884
2885
    // Reserve max possible length (2 words per char)
2886
    // NB: by unknown reasons, Array is significantly faster for
2887
    //     String.fromCharCode.apply than Uint16Array.
2888
    var utf16buf = new Array(len*2);
2889
2890
    for (out=0, i=0; i<len;) {
2891
        c = buf[i++];
2892
        // quick process ascii
2893
        if (c < 0x80) { utf16buf[out++] = c; continue; }
2894
2895
        c_len = _utf8len[c];
2896
        // skip 5 & 6 byte codes
2897
        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
2898
2899
        // apply mask on first byte
2900
        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
2901
        // join the rest
2902
        while (c_len > 1 && i < len) {
2903
            c = (c << 6) | (buf[i++] & 0x3f);
2904
            c_len--;
2905
        }
2906
2907
        // terminated by end of string?
2908
        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
2909
2910
        if (c < 0x10000) {
2911
            utf16buf[out++] = c;
2912
        } else {
2913
            c -= 0x10000;
2914
            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
2915
            utf16buf[out++] = 0xdc00 | (c & 0x3ff);
2916
        }
2917
    }
2918
2919
    // shrinkBuf(utf16buf, out)
2920
    if (utf16buf.length !== out) {
2921
        if(utf16buf.subarray) {
2922
            utf16buf = utf16buf.subarray(0, out);
2923
        } else {
2924
            utf16buf.length = out;
2925
        }
2926
    }
2927
2928
    // return String.fromCharCode.apply(null, utf16buf);
2929
    return utils.applyFromCharCode(utf16buf);
2930
};
2931
2932
2933
// That's all for the pako functions.
2934
2935
2936
/**
2937
 * Transform a javascript string into an array (typed if possible) of bytes,
2938
 * UTF-8 encoded.
2939
 * @param {String} str the string to encode
2940
 * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
2941
 */
2942
exports.utf8encode = function utf8encode(str) {
2943
    if (support.nodebuffer) {
2944
        return nodejsUtils.newBufferFrom(str, "utf-8");
2945
    }
2946
2947
    return string2buf(str);
2948
};
2949
2950
2951
/**
2952
 * Transform a bytes array (or a representation) representing an UTF-8 encoded
2953
 * string into a javascript string.
2954
 * @param {Array|Uint8Array|Buffer} buf the data de decode
2955
 * @return {String} the decoded string.
2956
 */
2957
exports.utf8decode = function utf8decode(buf) {
2958
    if (support.nodebuffer) {
2959
        return utils.transformTo("nodebuffer", buf).toString("utf-8");
2960
    }
2961
2962
    buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
2963
2964
    return buf2string(buf);
2965
};
2966
2967
/**
2968
 * A worker to decode utf8 encoded binary chunks into string chunks.
2969
 * @constructor
2970
 */
2971
function Utf8DecodeWorker() {
2972
    GenericWorker.call(this, "utf-8 decode");
2973
    // the last bytes if a chunk didn't end with a complete codepoint.
2974
    this.leftOver = null;
2975
}
2976
utils.inherits(Utf8DecodeWorker, GenericWorker);
2977
2978
/**
2979
 * @see GenericWorker.processChunk
2980
 */
2981
Utf8DecodeWorker.prototype.processChunk = function (chunk) {
2982
2983
    var data = utils.transformTo(support.uint8array ? "uint8array" : "array", chunk.data);
2984
2985
    // 1st step, re-use what's left of the previous chunk
2986
    if (this.leftOver && this.leftOver.length) {
2987
        if(support.uint8array) {
2988
            var previousData = data;
2989
            data = new Uint8Array(previousData.length + this.leftOver.length);
2990
            data.set(this.leftOver, 0);
2991
            data.set(previousData, this.leftOver.length);
2992
        } else {
2993
            data = this.leftOver.concat(data);
2994
        }
2995
        this.leftOver = null;
2996
    }
2997
2998
    var nextBoundary = utf8border(data);
2999
    var usableData = data;
3000
    if (nextBoundary !== data.length) {
3001
        if (support.uint8array) {
3002
            usableData = data.subarray(0, nextBoundary);
3003
            this.leftOver = data.subarray(nextBoundary, data.length);
3004
        } else {
3005
            usableData = data.slice(0, nextBoundary);
3006
            this.leftOver = data.slice(nextBoundary, data.length);
3007
        }
3008
    }
3009
3010
    this.push({
3011
        data : exports.utf8decode(usableData),
3012
        meta : chunk.meta
3013
    });
3014
};
3015
3016
/**
3017
 * @see GenericWorker.flush
3018
 */
3019
Utf8DecodeWorker.prototype.flush = function () {
3020
    if(this.leftOver && this.leftOver.length) {
3021
        this.push({
3022
            data : exports.utf8decode(this.leftOver),
3023
            meta : {}
3024
        });
3025
        this.leftOver = null;
3026
    }
3027
};
3028
exports.Utf8DecodeWorker = Utf8DecodeWorker;
3029
3030
/**
3031
 * A worker to endcode string chunks into utf8 encoded binary chunks.
3032
 * @constructor
3033
 */
3034
function Utf8EncodeWorker() {
3035
    GenericWorker.call(this, "utf-8 encode");
3036
}
3037
utils.inherits(Utf8EncodeWorker, GenericWorker);
3038
3039
/**
3040
 * @see GenericWorker.processChunk
3041
 */
3042
Utf8EncodeWorker.prototype.processChunk = function (chunk) {
3043
    this.push({
3044
        data : exports.utf8encode(chunk.data),
3045
        meta : chunk.meta
3046
    });
3047
};
3048
exports.Utf8EncodeWorker = Utf8EncodeWorker;
3049
3050
},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(require,module,exports){
3051
"use strict";
3052
3053
var support = require("./support");
3054
var base64 = require("./base64");
3055
var nodejsUtils = require("./nodejsUtils");
3056
var external = require("./external");
3057
require("setimmediate");
3058
3059
3060
/**
3061
 * Convert a string that pass as a "binary string": it should represent a byte
3062
 * array but may have > 255 char codes. Be sure to take only the first byte
3063
 * and returns the byte array.
3064
 * @param {String} str the string to transform.
3065
 * @return {Array|Uint8Array} the string in a binary format.
3066
 */
3067
function string2binary(str) {
3068
    var result = null;
3069
    if (support.uint8array) {
3070
        result = new Uint8Array(str.length);
3071
    } else {
3072
        result = new Array(str.length);
3073
    }
3074
    return stringToArrayLike(str, result);
3075
}
3076
3077
/**
3078
 * Create a new blob with the given content and the given type.
3079
 * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use
3080
 * an Uint8Array because the stock browser of android 4 won't accept it (it
3081
 * will be silently converted to a string, "[object Uint8Array]").
3082
 *
3083
 * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:
3084
 * when a large amount of Array is used to create the Blob, the amount of
3085
 * memory consumed is nearly 100 times the original data amount.
3086
 *
3087
 * @param {String} type the mime type of the blob.
3088
 * @return {Blob} the created blob.
3089
 */
3090
exports.newBlob = function(part, type) {
3091
    exports.checkSupport("blob");
3092
3093
    try {
3094
        // Blob constructor
3095
        return new Blob([part], {
3096
            type: type
3097
        });
3098
    }
3099
    catch (e) {
3100
3101
        try {
3102
            // deprecated, browser only, old way
3103
            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
3104
            var builder = new Builder();
3105
            builder.append(part);
3106
            return builder.getBlob(type);
3107
        }
3108
        catch (e) {
3109
3110
            // well, fuck ?!
3111
            throw new Error("Bug : can't construct the Blob.");
3112
        }
3113
    }
3114
3115
3116
};
3117
/**
3118
 * The identity function.
3119
 * @param {Object} input the input.
3120
 * @return {Object} the same input.
3121
 */
3122
function identity(input) {
3123
    return input;
3124
}
3125
3126
/**
3127
 * Fill in an array with a string.
3128
 * @param {String} str the string to use.
3129
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
3130
 * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
3131
 */
3132
function stringToArrayLike(str, array) {
3133
    for (var i = 0; i < str.length; ++i) {
3134
        array[i] = str.charCodeAt(i) & 0xFF;
3135
    }
3136
    return array;
3137
}
3138
3139
/**
3140
 * An helper for the function arrayLikeToString.
3141
 * This contains static information and functions that
3142
 * can be optimized by the browser JIT compiler.
3143
 */
3144
var arrayToStringHelper = {
3145
    /**
3146
     * Transform an array of int into a string, chunk by chunk.
3147
     * See the performances notes on arrayLikeToString.
3148
     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
3149
     * @param {String} type the type of the array.
3150
     * @param {Integer} chunk the chunk size.
3151
     * @return {String} the resulting string.
3152
     * @throws Error if the chunk is too big for the stack.
3153
     */
3154
    stringifyByChunk: function(array, type, chunk) {
3155
        var result = [], k = 0, len = array.length;
3156
        // shortcut
3157
        if (len <= chunk) {
3158
            return String.fromCharCode.apply(null, array);
3159
        }
3160
        while (k < len) {
3161
            if (type === "array" || type === "nodebuffer") {
3162
                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
3163
            }
3164
            else {
3165
                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
3166
            }
3167
            k += chunk;
3168
        }
3169
        return result.join("");
3170
    },
3171
    /**
3172
     * Call String.fromCharCode on every item in the array.
3173
     * This is the naive implementation, which generate A LOT of intermediate string.
3174
     * This should be used when everything else fail.
3175
     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
3176
     * @return {String} the result.
3177
     */
3178
    stringifyByChar: function(array){
3179
        var resultStr = "";
3180
        for(var i = 0; i < array.length; i++) {
3181
            resultStr += String.fromCharCode(array[i]);
3182
        }
3183
        return resultStr;
3184
    },
3185
    applyCanBeUsed : {
3186
        /**
3187
         * true if the browser accepts to use String.fromCharCode on Uint8Array
3188
         */
3189
        uint8array : (function () {
3190
            try {
3191
                return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;
3192
            } catch (e) {
3193
                return false;
3194
            }
3195
        })(),
3196
        /**
3197
         * true if the browser accepts to use String.fromCharCode on nodejs Buffer.
3198
         */
3199
        nodebuffer : (function () {
3200
            try {
3201
                return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;
3202
            } catch (e) {
3203
                return false;
3204
            }
3205
        })()
3206
    }
3207
};
3208
3209
/**
3210
 * Transform an array-like object to a string.
3211
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
3212
 * @return {String} the result.
3213
 */
3214
function arrayLikeToString(array) {
3215
    // Performances notes :
3216
    // --------------------
3217
    // String.fromCharCode.apply(null, array) is the fastest, see
3218
    // see http://jsperf.com/converting-a-uint8array-to-a-string/2
3219
    // but the stack is limited (and we can get huge arrays !).
3220
    //
3221
    // result += String.fromCharCode(array[i]); generate too many strings !
3222
    //
3223
    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
3224
    // TODO : we now have workers that split the work. Do we still need that ?
3225
    var chunk = 65536,
3226
        type = exports.getTypeOf(array),
3227
        canUseApply = true;
3228
    if (type === "uint8array") {
3229
        canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;
3230
    } else if (type === "nodebuffer") {
3231
        canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;
3232
    }
3233
3234
    if (canUseApply) {
3235
        while (chunk > 1) {
3236
            try {
3237
                return arrayToStringHelper.stringifyByChunk(array, type, chunk);
3238
            } catch (e) {
3239
                chunk = Math.floor(chunk / 2);
3240
            }
3241
        }
3242
    }
3243
3244
    // no apply or chunk error : slow and painful algorithm
3245
    // default browser on android 4.*
3246
    return arrayToStringHelper.stringifyByChar(array);
3247
}
3248
3249
exports.applyFromCharCode = arrayLikeToString;
3250
3251
3252
/**
3253
 * Copy the data from an array-like to an other array-like.
3254
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
3255
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
3256
 * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
3257
 */
3258
function arrayLikeToArrayLike(arrayFrom, arrayTo) {
3259
    for (var i = 0; i < arrayFrom.length; i++) {
3260
        arrayTo[i] = arrayFrom[i];
3261
    }
3262
    return arrayTo;
3263
}
3264
3265
// a matrix containing functions to transform everything into everything.
3266
var transform = {};
3267
3268
// string to ?
3269
transform["string"] = {
3270
    "string": identity,
3271
    "array": function(input) {
3272
        return stringToArrayLike(input, new Array(input.length));
3273
    },
3274
    "arraybuffer": function(input) {
3275
        return transform["string"]["uint8array"](input).buffer;
3276
    },
3277
    "uint8array": function(input) {
3278
        return stringToArrayLike(input, new Uint8Array(input.length));
3279
    },
3280
    "nodebuffer": function(input) {
3281
        return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));
3282
    }
3283
};
3284
3285
// array to ?
3286
transform["array"] = {
3287
    "string": arrayLikeToString,
3288
    "array": identity,
3289
    "arraybuffer": function(input) {
3290
        return (new Uint8Array(input)).buffer;
3291
    },
3292
    "uint8array": function(input) {
3293
        return new Uint8Array(input);
3294
    },
3295
    "nodebuffer": function(input) {
3296
        return nodejsUtils.newBufferFrom(input);
3297
    }
3298
};
3299
3300
// arraybuffer to ?
3301
transform["arraybuffer"] = {
3302
    "string": function(input) {
3303
        return arrayLikeToString(new Uint8Array(input));
3304
    },
3305
    "array": function(input) {
3306
        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
3307
    },
3308
    "arraybuffer": identity,
3309
    "uint8array": function(input) {
3310
        return new Uint8Array(input);
3311
    },
3312
    "nodebuffer": function(input) {
3313
        return nodejsUtils.newBufferFrom(new Uint8Array(input));
3314
    }
3315
};
3316
3317
// uint8array to ?
3318
transform["uint8array"] = {
3319
    "string": arrayLikeToString,
3320
    "array": function(input) {
3321
        return arrayLikeToArrayLike(input, new Array(input.length));
3322
    },
3323
    "arraybuffer": function(input) {
3324
        return input.buffer;
3325
    },
3326
    "uint8array": identity,
3327
    "nodebuffer": function(input) {
3328
        return nodejsUtils.newBufferFrom(input);
3329
    }
3330
};
3331
3332
// nodebuffer to ?
3333
transform["nodebuffer"] = {
3334
    "string": arrayLikeToString,
3335
    "array": function(input) {
3336
        return arrayLikeToArrayLike(input, new Array(input.length));
3337
    },
3338
    "arraybuffer": function(input) {
3339
        return transform["nodebuffer"]["uint8array"](input).buffer;
3340
    },
3341
    "uint8array": function(input) {
3342
        return arrayLikeToArrayLike(input, new Uint8Array(input.length));
3343
    },
3344
    "nodebuffer": identity
3345
};
3346
3347
/**
3348
 * Transform an input into any type.
3349
 * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
3350
 * If no output type is specified, the unmodified input will be returned.
3351
 * @param {String} outputType the output type.
3352
 * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
3353
 * @throws {Error} an Error if the browser doesn't support the requested output type.
3354
 */
3355
exports.transformTo = function(outputType, input) {
3356
    if (!input) {
3357
        // undefined, null, etc
3358
        // an empty string won't harm.
3359
        input = "";
3360
    }
3361
    if (!outputType) {
3362
        return input;
3363
    }
3364
    exports.checkSupport(outputType);
3365
    var inputType = exports.getTypeOf(input);
3366
    var result = transform[inputType][outputType](input);
3367
    return result;
3368
};
3369
3370
/**
3371
 * Resolve all relative path components, "." and "..", in a path. If these relative components
3372
 * traverse above the root then the resulting path will only contain the final path component.
3373
 *
3374
 * All empty components, e.g. "//", are removed.
3375
 * @param {string} path A path with / or \ separators
3376
 * @returns {string} The path with all relative path components resolved.
3377
 */
3378
exports.resolve = function(path) {
3379
    var parts = path.split("/");
3380
    var result = [];
3381
    for (var index = 0; index < parts.length; index++) {
3382
        var part = parts[index];
3383
        // Allow the first and last component to be empty for trailing slashes.
3384
        if (part === "." || (part === "" && index !== 0 && index !== parts.length - 1)) {
3385
            continue;
3386
        } else if (part === "..") {
3387
            result.pop();
3388
        } else {
3389
            result.push(part);
3390
        }
3391
    }
3392
    return result.join("/");
3393
};
3394
3395
/**
3396
 * Return the type of the input.
3397
 * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
3398
 * @param {Object} input the input to identify.
3399
 * @return {String} the (lowercase) type of the input.
3400
 */
3401
exports.getTypeOf = function(input) {
3402
    if (typeof input === "string") {
3403
        return "string";
3404
    }
3405
    if (Object.prototype.toString.call(input) === "[object Array]") {
3406
        return "array";
3407
    }
3408
    if (support.nodebuffer && nodejsUtils.isBuffer(input)) {
3409
        return "nodebuffer";
3410
    }
3411
    if (support.uint8array && input instanceof Uint8Array) {
3412
        return "uint8array";
3413
    }
3414
    if (support.arraybuffer && input instanceof ArrayBuffer) {
3415
        return "arraybuffer";
3416
    }
3417
};
3418
3419
/**
3420
 * Throw an exception if the type is not supported.
3421
 * @param {String} type the type to check.
3422
 * @throws {Error} an Error if the browser doesn't support the requested type.
3423
 */
3424
exports.checkSupport = function(type) {
3425
    var supported = support[type.toLowerCase()];
3426
    if (!supported) {
3427
        throw new Error(type + " is not supported by this platform");
3428
    }
3429
};
3430
3431
exports.MAX_VALUE_16BITS = 65535;
3432
exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
3433
3434
/**
3435
 * Prettify a string read as binary.
3436
 * @param {string} str the string to prettify.
3437
 * @return {string} a pretty string.
3438
 */
3439
exports.pretty = function(str) {
3440
    var res = "",
3441
        code, i;
3442
    for (i = 0; i < (str || "").length; i++) {
3443
        code = str.charCodeAt(i);
3444
        res += "\\x" + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
3445
    }
3446
    return res;
3447
};
3448
3449
/**
3450
 * Defer the call of a function.
3451
 * @param {Function} callback the function to call asynchronously.
3452
 * @param {Array} args the arguments to give to the callback.
3453
 */
3454
exports.delay = function(callback, args, self) {
3455
    setImmediate(function () {
3456
        callback.apply(self || null, args || []);
3457
    });
3458
};
3459
3460
/**
3461
 * Extends a prototype with an other, without calling a constructor with
3462
 * side effects. Inspired by nodejs' `utils.inherits`
3463
 * @param {Function} ctor the constructor to augment
3464
 * @param {Function} superCtor the parent constructor to use
3465
 */
3466
exports.inherits = function (ctor, superCtor) {
3467
    var Obj = function() {};
3468
    Obj.prototype = superCtor.prototype;
3469
    ctor.prototype = new Obj();
3470
};
3471
3472
/**
3473
 * Merge the objects passed as parameters into a new one.
3474
 * @private
3475
 * @param {...Object} var_args All objects to merge.
3476
 * @return {Object} a new object with the data of the others.
3477
 */
3478
exports.extend = function() {
3479
    var result = {}, i, attr;
3480
    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
3481
        for (attr in arguments[i]) {
3482
            if (Object.prototype.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === "undefined") {
3483
                result[attr] = arguments[i][attr];
3484
            }
3485
        }
3486
    }
3487
    return result;
3488
};
3489
3490
/**
3491
 * Transform arbitrary content into a Promise.
3492
 * @param {String} name a name for the content being processed.
3493
 * @param {Object} inputData the content to process.
3494
 * @param {Boolean} isBinary true if the content is not an unicode string
3495
 * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.
3496
 * @param {Boolean} isBase64 true if the string content is encoded with base64.
3497
 * @return {Promise} a promise in a format usable by JSZip.
3498
 */
3499
exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {
3500
3501
    // if inputData is already a promise, this flatten it.
3502
    var promise = external.Promise.resolve(inputData).then(function(data) {
3503
3504
3505
        var isBlob = support.blob && (data instanceof Blob || ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(data)) !== -1);
3506
3507
        if (isBlob && typeof FileReader !== "undefined") {
3508
            return new external.Promise(function (resolve, reject) {
3509
                var reader = new FileReader();
3510
3511
                reader.onload = function(e) {
3512
                    resolve(e.target.result);
3513
                };
3514
                reader.onerror = function(e) {
3515
                    reject(e.target.error);
3516
                };
3517
                reader.readAsArrayBuffer(data);
3518
            });
3519
        } else {
3520
            return data;
3521
        }
3522
    });
3523
3524
    return promise.then(function(data) {
3525
        var dataType = exports.getTypeOf(data);
3526
3527
        if (!dataType) {
3528
            return external.Promise.reject(
3529
                new Error("Can't read the data of '" + name + "'. Is it " +
3530
                          "in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")
3531
            );
3532
        }
3533
        // special case : it's way easier to work with Uint8Array than with ArrayBuffer
3534
        if (dataType === "arraybuffer") {
3535
            data = exports.transformTo("uint8array", data);
3536
        } else if (dataType === "string") {
3537
            if (isBase64) {
3538
                data = base64.decode(data);
3539
            }
3540
            else if (isBinary) {
3541
                // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask
3542
                if (isOptimizedBinaryString !== true) {
3543
                    // this is a string, not in a base64 format.
3544
                    // Be sure that this is a correct "binary string"
3545
                    data = string2binary(data);
3546
                }
3547
            }
3548
        }
3549
        return data;
3550
    });
3551
};
3552
3553
},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"setimmediate":54}],33:[function(require,module,exports){
3554
"use strict";
3555
var readerFor = require("./reader/readerFor");
3556
var utils = require("./utils");
3557
var sig = require("./signature");
3558
var ZipEntry = require("./zipEntry");
3559
var support = require("./support");
3560
//  class ZipEntries {{{
3561
/**
3562
 * All the entries in the zip file.
3563
 * @constructor
3564
 * @param {Object} loadOptions Options for loading the stream.
3565
 */
3566
function ZipEntries(loadOptions) {
3567
    this.files = [];
3568
    this.loadOptions = loadOptions;
3569
}
3570
ZipEntries.prototype = {
3571
    /**
3572
     * Check that the reader is on the specified signature.
3573
     * @param {string} expectedSignature the expected signature.
3574
     * @throws {Error} if it is an other signature.
3575
     */
3576
    checkSignature: function(expectedSignature) {
3577
        if (!this.reader.readAndCheckSignature(expectedSignature)) {
3578
            this.reader.index -= 4;
3579
            var signature = this.reader.readString(4);
3580
            throw new Error("Corrupted zip or bug: unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
3581
        }
3582
    },
3583
    /**
3584
     * Check if the given signature is at the given index.
3585
     * @param {number} askedIndex the index to check.
3586
     * @param {string} expectedSignature the signature to expect.
3587
     * @return {boolean} true if the signature is here, false otherwise.
3588
     */
3589
    isSignature: function(askedIndex, expectedSignature) {
3590
        var currentIndex = this.reader.index;
3591
        this.reader.setIndex(askedIndex);
3592
        var signature = this.reader.readString(4);
3593
        var result = signature === expectedSignature;
3594
        this.reader.setIndex(currentIndex);
3595
        return result;
3596
    },
3597
    /**
3598
     * Read the end of the central directory.
3599
     */
3600
    readBlockEndOfCentral: function() {
3601
        this.diskNumber = this.reader.readInt(2);
3602
        this.diskWithCentralDirStart = this.reader.readInt(2);
3603
        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
3604
        this.centralDirRecords = this.reader.readInt(2);
3605
        this.centralDirSize = this.reader.readInt(4);
3606
        this.centralDirOffset = this.reader.readInt(4);
3607
3608
        this.zipCommentLength = this.reader.readInt(2);
3609
        // warning : the encoding depends of the system locale
3610
        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
3611
        // On a windows machine, this field is encoded with the localized windows code page.
3612
        var zipComment = this.reader.readData(this.zipCommentLength);
3613
        var decodeParamType = support.uint8array ? "uint8array" : "array";
3614
        // To get consistent behavior with the generation part, we will assume that
3615
        // this is utf8 encoded unless specified otherwise.
3616
        var decodeContent = utils.transformTo(decodeParamType, zipComment);
3617
        this.zipComment = this.loadOptions.decodeFileName(decodeContent);
3618
    },
3619
    /**
3620
     * Read the end of the Zip 64 central directory.
3621
     * Not merged with the method readEndOfCentral :
3622
     * The end of central can coexist with its Zip64 brother,
3623
     * I don't want to read the wrong number of bytes !
3624
     */
3625
    readBlockZip64EndOfCentral: function() {
3626
        this.zip64EndOfCentralSize = this.reader.readInt(8);
3627
        this.reader.skip(4);
3628
        // this.versionMadeBy = this.reader.readString(2);
3629
        // this.versionNeeded = this.reader.readInt(2);
3630
        this.diskNumber = this.reader.readInt(4);
3631
        this.diskWithCentralDirStart = this.reader.readInt(4);
3632
        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
3633
        this.centralDirRecords = this.reader.readInt(8);
3634
        this.centralDirSize = this.reader.readInt(8);
3635
        this.centralDirOffset = this.reader.readInt(8);
3636
3637
        this.zip64ExtensibleData = {};
3638
        var extraDataSize = this.zip64EndOfCentralSize - 44,
3639
            index = 0,
3640
            extraFieldId,
3641
            extraFieldLength,
3642
            extraFieldValue;
3643
        while (index < extraDataSize) {
3644
            extraFieldId = this.reader.readInt(2);
3645
            extraFieldLength = this.reader.readInt(4);
3646
            extraFieldValue = this.reader.readData(extraFieldLength);
3647
            this.zip64ExtensibleData[extraFieldId] = {
3648
                id: extraFieldId,
3649
                length: extraFieldLength,
3650
                value: extraFieldValue
3651
            };
3652
        }
3653
    },
3654
    /**
3655
     * Read the end of the Zip 64 central directory locator.
3656
     */
3657
    readBlockZip64EndOfCentralLocator: function() {
3658
        this.diskWithZip64CentralDirStart = this.reader.readInt(4);
3659
        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
3660
        this.disksCount = this.reader.readInt(4);
3661
        if (this.disksCount > 1) {
3662
            throw new Error("Multi-volumes zip are not supported");
3663
        }
3664
    },
3665
    /**
3666
     * Read the local files, based on the offset read in the central part.
3667
     */
3668
    readLocalFiles: function() {
3669
        var i, file;
3670
        for (i = 0; i < this.files.length; i++) {
3671
            file = this.files[i];
3672
            this.reader.setIndex(file.localHeaderOffset);
3673
            this.checkSignature(sig.LOCAL_FILE_HEADER);
3674
            file.readLocalPart(this.reader);
3675
            file.handleUTF8();
3676
            file.processAttributes();
3677
        }
3678
    },
3679
    /**
3680
     * Read the central directory.
3681
     */
3682
    readCentralDir: function() {
3683
        var file;
3684
3685
        this.reader.setIndex(this.centralDirOffset);
3686
        while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {
3687
            file = new ZipEntry({
3688
                zip64: this.zip64
3689
            }, this.loadOptions);
3690
            file.readCentralPart(this.reader);
3691
            this.files.push(file);
3692
        }
3693
3694
        if (this.centralDirRecords !== this.files.length) {
3695
            if (this.centralDirRecords !== 0 && this.files.length === 0) {
3696
                // We expected some records but couldn't find ANY.
3697
                // This is really suspicious, as if something went wrong.
3698
                throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);
3699
            } else {
3700
                // We found some records but not all.
3701
                // Something is wrong but we got something for the user: no error here.
3702
                // console.warn("expected", this.centralDirRecords, "records in central dir, got", this.files.length);
3703
            }
3704
        }
3705
    },
3706
    /**
3707
     * Read the end of central directory.
3708
     */
3709
    readEndOfCentral: function() {
3710
        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
3711
        if (offset < 0) {
3712
            // Check if the content is a truncated zip or complete garbage.
3713
            // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
3714
            // extractible zip for example) but it can give a good hint.
3715
            // If an ajax request was used without responseType, we will also
3716
            // get unreadable data.
3717
            var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);
3718
3719
            if (isGarbage) {
3720
                throw new Error("Can't find end of central directory : is this a zip file ? " +
3721
                                "If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");
3722
            } else {
3723
                throw new Error("Corrupted zip: can't find end of central directory");
3724
            }
3725
3726
        }
3727
        this.reader.setIndex(offset);
3728
        var endOfCentralDirOffset = offset;
3729
        this.checkSignature(sig.CENTRAL_DIRECTORY_END);
3730
        this.readBlockEndOfCentral();
3731
3732
3733
        /* extract from the zip spec :
3734
            4)  If one of the fields in the end of central directory
3735
                record is too small to hold required data, the field
3736
                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
3737
                ZIP64 format record should be created.
3738
            5)  The end of central directory record and the
3739
                Zip64 end of central directory locator record must
3740
                reside on the same disk when splitting or spanning
3741
                an archive.
3742
         */
3743
        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
3744
            this.zip64 = true;
3745
3746
            /*
3747
            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
3748
            the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents
3749
            all numbers as 64-bit double precision IEEE 754 floating point numbers.
3750
            So, we have 53bits for integers and bitwise operations treat everything as 32bits.
3751
            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
3752
            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
3753
            */
3754
3755
            // should look for a zip64 EOCD locator
3756
            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
3757
            if (offset < 0) {
3758
                throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");
3759
            }
3760
            this.reader.setIndex(offset);
3761
            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
3762
            this.readBlockZip64EndOfCentralLocator();
3763
3764
            // now the zip64 EOCD record
3765
            if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {
3766
                // console.warn("ZIP64 end of central directory not where expected.");
3767
                this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
3768
                if (this.relativeOffsetEndOfZip64CentralDir < 0) {
3769
                    throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");
3770
                }
3771
            }
3772
            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
3773
            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
3774
            this.readBlockZip64EndOfCentral();
3775
        }
3776
3777
        var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;
3778
        if (this.zip64) {
3779
            expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator
3780
            expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;
3781
        }
3782
3783
        var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;
3784
3785
        if (extraBytes > 0) {
3786
            // console.warn(extraBytes, "extra bytes at beginning or within zipfile");
3787
            if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {
3788
                // The offsets seem wrong, but we have something at the specified offset.
3789
                // So… we keep it.
3790
            } else {
3791
                // the offset is wrong, update the "zero" of the reader
3792
                // this happens if data has been prepended (crx files for example)
3793
                this.reader.zero = extraBytes;
3794
            }
3795
        } else if (extraBytes < 0) {
3796
            throw new Error("Corrupted zip: missing " + Math.abs(extraBytes) + " bytes.");
3797
        }
3798
    },
3799
    prepareReader: function(data) {
3800
        this.reader = readerFor(data);
3801
    },
3802
    /**
3803
     * Read a zip file and create ZipEntries.
3804
     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
3805
     */
3806
    load: function(data) {
3807
        this.prepareReader(data);
3808
        this.readEndOfCentral();
3809
        this.readCentralDir();
3810
        this.readLocalFiles();
3811
    }
3812
};
3813
// }}} end of ZipEntries
3814
module.exports = ZipEntries;
3815
3816
},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(require,module,exports){
3817
"use strict";
3818
var readerFor = require("./reader/readerFor");
3819
var utils = require("./utils");
3820
var CompressedObject = require("./compressedObject");
3821
var crc32fn = require("./crc32");
3822
var utf8 = require("./utf8");
3823
var compressions = require("./compressions");
3824
var support = require("./support");
3825
3826
var MADE_BY_DOS = 0x00;
3827
var MADE_BY_UNIX = 0x03;
3828
3829
/**
3830
 * Find a compression registered in JSZip.
3831
 * @param {string} compressionMethod the method magic to find.
3832
 * @return {Object|null} the JSZip compression object, null if none found.
3833
 */
3834
var findCompression = function(compressionMethod) {
3835
    for (var method in compressions) {
3836
        if (!Object.prototype.hasOwnProperty.call(compressions, method)) {
3837
            continue;
3838
        }
3839
        if (compressions[method].magic === compressionMethod) {
3840
            return compressions[method];
3841
        }
3842
    }
3843
    return null;
3844
};
3845
3846
// class ZipEntry {{{
3847
/**
3848
 * An entry in the zip file.
3849
 * @constructor
3850
 * @param {Object} options Options of the current file.
3851
 * @param {Object} loadOptions Options for loading the stream.
3852
 */
3853
function ZipEntry(options, loadOptions) {
3854
    this.options = options;
3855
    this.loadOptions = loadOptions;
3856
}
3857
ZipEntry.prototype = {
3858
    /**
3859
     * say if the file is encrypted.
3860
     * @return {boolean} true if the file is encrypted, false otherwise.
3861
     */
3862
    isEncrypted: function() {
3863
        // bit 1 is set
3864
        return (this.bitFlag & 0x0001) === 0x0001;
3865
    },
3866
    /**
3867
     * say if the file has utf-8 filename/comment.
3868
     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
3869
     */
3870
    useUTF8: function() {
3871
        // bit 11 is set
3872
        return (this.bitFlag & 0x0800) === 0x0800;
3873
    },
3874
    /**
3875
     * Read the local part of a zip file and add the info in this object.
3876
     * @param {DataReader} reader the reader to use.
3877
     */
3878
    readLocalPart: function(reader) {
3879
        var compression, localExtraFieldsLength;
3880
3881
        // we already know everything from the central dir !
3882
        // If the central dir data are false, we are doomed.
3883
        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.
3884
        // The less data we get here, the more reliable this should be.
3885
        // Let's skip the whole header and dash to the data !
3886
        reader.skip(22);
3887
        // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
3888
        // Strangely, the filename here is OK.
3889
        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
3890
        // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
3891
        // Search "unzip mismatching "local" filename continuing with "central" filename version" on
3892
        // the internet.
3893
        //
3894
        // I think I see the logic here : the central directory is used to display
3895
        // content and the local directory is used to extract the files. Mixing / and \
3896
        // may be used to display \ to windows users and use / when extracting the files.
3897
        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
3898
        this.fileNameLength = reader.readInt(2);
3899
        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
3900
        // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.
3901
        this.fileName = reader.readData(this.fileNameLength);
3902
        reader.skip(localExtraFieldsLength);
3903
3904
        if (this.compressedSize === -1 || this.uncompressedSize === -1) {
3905
            throw new Error("Bug or corrupted zip : didn't get enough information from the central directory " + "(compressedSize === -1 || uncompressedSize === -1)");
3906
        }
3907
3908
        compression = findCompression(this.compressionMethod);
3909
        if (compression === null) { // no compression found
3910
            throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + utils.transformTo("string", this.fileName) + ")");
3911
        }
3912
        this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));
3913
    },
3914
3915
    /**
3916
     * Read the central part of a zip file and add the info in this object.
3917
     * @param {DataReader} reader the reader to use.
3918
     */
3919
    readCentralPart: function(reader) {
3920
        this.versionMadeBy = reader.readInt(2);
3921
        reader.skip(2);
3922
        // this.versionNeeded = reader.readInt(2);
3923
        this.bitFlag = reader.readInt(2);
3924
        this.compressionMethod = reader.readString(2);
3925
        this.date = reader.readDate();
3926
        this.crc32 = reader.readInt(4);
3927
        this.compressedSize = reader.readInt(4);
3928
        this.uncompressedSize = reader.readInt(4);
3929
        var fileNameLength = reader.readInt(2);
3930
        this.extraFieldsLength = reader.readInt(2);
3931
        this.fileCommentLength = reader.readInt(2);
3932
        this.diskNumberStart = reader.readInt(2);
3933
        this.internalFileAttributes = reader.readInt(2);
3934
        this.externalFileAttributes = reader.readInt(4);
3935
        this.localHeaderOffset = reader.readInt(4);
3936
3937
        if (this.isEncrypted()) {
3938
            throw new Error("Encrypted zip are not supported");
3939
        }
3940
3941
        // will be read in the local part, see the comments there
3942
        reader.skip(fileNameLength);
3943
        this.readExtraFields(reader);
3944
        this.parseZIP64ExtraField(reader);
3945
        this.fileComment = reader.readData(this.fileCommentLength);
3946
    },
3947
3948
    /**
3949
     * Parse the external file attributes and get the unix/dos permissions.
3950
     */
3951
    processAttributes: function () {
3952
        this.unixPermissions = null;
3953
        this.dosPermissions = null;
3954
        var madeBy = this.versionMadeBy >> 8;
3955
3956
        // Check if we have the DOS directory flag set.
3957
        // We look for it in the DOS and UNIX permissions
3958
        // but some unknown platform could set it as a compatibility flag.
3959
        this.dir = this.externalFileAttributes & 0x0010 ? true : false;
3960
3961
        if(madeBy === MADE_BY_DOS) {
3962
            // first 6 bits (0 to 5)
3963
            this.dosPermissions = this.externalFileAttributes & 0x3F;
3964
        }
3965
3966
        if(madeBy === MADE_BY_UNIX) {
3967
            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
3968
            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
3969
        }
3970
3971
        // fail safe : if the name ends with a / it probably means a folder
3972
        if (!this.dir && this.fileNameStr.slice(-1) === "/") {
3973
            this.dir = true;
3974
        }
3975
    },
3976
3977
    /**
3978
     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
3979
     * @param {DataReader} reader the reader to use.
3980
     */
3981
    parseZIP64ExtraField: function() {
3982
        if (!this.extraFields[0x0001]) {
3983
            return;
3984
        }
3985
3986
        // should be something, preparing the extra reader
3987
        var extraReader = readerFor(this.extraFields[0x0001].value);
3988
3989
        // I really hope that these 64bits integer can fit in 32 bits integer, because js
3990
        // won't let us have more.
3991
        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
3992
            this.uncompressedSize = extraReader.readInt(8);
3993
        }
3994
        if (this.compressedSize === utils.MAX_VALUE_32BITS) {
3995
            this.compressedSize = extraReader.readInt(8);
3996
        }
3997
        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
3998
            this.localHeaderOffset = extraReader.readInt(8);
3999
        }
4000
        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
4001
            this.diskNumberStart = extraReader.readInt(4);
4002
        }
4003
    },
4004
    /**
4005
     * Read the central part of a zip file and add the info in this object.
4006
     * @param {DataReader} reader the reader to use.
4007
     */
4008
    readExtraFields: function(reader) {
4009
        var end = reader.index + this.extraFieldsLength,
4010
            extraFieldId,
4011
            extraFieldLength,
4012
            extraFieldValue;
4013
4014
        if (!this.extraFields) {
4015
            this.extraFields = {};
4016
        }
4017
4018
        while (reader.index + 4 < end) {
4019
            extraFieldId = reader.readInt(2);
4020
            extraFieldLength = reader.readInt(2);
4021
            extraFieldValue = reader.readData(extraFieldLength);
4022
4023
            this.extraFields[extraFieldId] = {
4024
                id: extraFieldId,
4025
                length: extraFieldLength,
4026
                value: extraFieldValue
4027
            };
4028
        }
4029
4030
        reader.setIndex(end);
4031
    },
4032
    /**
4033
     * Apply an UTF8 transformation if needed.
4034
     */
4035
    handleUTF8: function() {
4036
        var decodeParamType = support.uint8array ? "uint8array" : "array";
4037
        if (this.useUTF8()) {
4038
            this.fileNameStr = utf8.utf8decode(this.fileName);
4039
            this.fileCommentStr = utf8.utf8decode(this.fileComment);
4040
        } else {
4041
            var upath = this.findExtraFieldUnicodePath();
4042
            if (upath !== null) {
4043
                this.fileNameStr = upath;
4044
            } else {
4045
                // ASCII text or unsupported code page
4046
                var fileNameByteArray =  utils.transformTo(decodeParamType, this.fileName);
4047
                this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);
4048
            }
4049
4050
            var ucomment = this.findExtraFieldUnicodeComment();
4051
            if (ucomment !== null) {
4052
                this.fileCommentStr = ucomment;
4053
            } else {
4054
                // ASCII text or unsupported code page
4055
                var commentByteArray =  utils.transformTo(decodeParamType, this.fileComment);
4056
                this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);
4057
            }
4058
        }
4059
    },
4060
4061
    /**
4062
     * Find the unicode path declared in the extra field, if any.
4063
     * @return {String} the unicode path, null otherwise.
4064
     */
4065
    findExtraFieldUnicodePath: function() {
4066
        var upathField = this.extraFields[0x7075];
4067
        if (upathField) {
4068
            var extraReader = readerFor(upathField.value);
4069
4070
            // wrong version
4071
            if (extraReader.readInt(1) !== 1) {
4072
                return null;
4073
            }
4074
4075
            // the crc of the filename changed, this field is out of date.
4076
            if (crc32fn(this.fileName) !== extraReader.readInt(4)) {
4077
                return null;
4078
            }
4079
4080
            return utf8.utf8decode(extraReader.readData(upathField.length - 5));
4081
        }
4082
        return null;
4083
    },
4084
4085
    /**
4086
     * Find the unicode comment declared in the extra field, if any.
4087
     * @return {String} the unicode comment, null otherwise.
4088
     */
4089
    findExtraFieldUnicodeComment: function() {
4090
        var ucommentField = this.extraFields[0x6375];
4091
        if (ucommentField) {
4092
            var extraReader = readerFor(ucommentField.value);
4093
4094
            // wrong version
4095
            if (extraReader.readInt(1) !== 1) {
4096
                return null;
4097
            }
4098
4099
            // the crc of the comment changed, this field is out of date.
4100
            if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {
4101
                return null;
4102
            }
4103
4104
            return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));
4105
        }
4106
        return null;
4107
    }
4108
};
4109
module.exports = ZipEntry;
4110
4111
},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(require,module,exports){
4112
"use strict";
4113
4114
var StreamHelper = require("./stream/StreamHelper");
4115
var DataWorker = require("./stream/DataWorker");
4116
var utf8 = require("./utf8");
4117
var CompressedObject = require("./compressedObject");
4118
var GenericWorker = require("./stream/GenericWorker");
4119
4120
/**
4121
 * A simple object representing a file in the zip file.
4122
 * @constructor
4123
 * @param {string} name the name of the file
4124
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
4125
 * @param {Object} options the options of the file
4126
 */
4127
var ZipObject = function(name, data, options) {
4128
    this.name = name;
4129
    this.dir = options.dir;
4130
    this.date = options.date;
4131
    this.comment = options.comment;
4132
    this.unixPermissions = options.unixPermissions;
4133
    this.dosPermissions = options.dosPermissions;
4134
4135
    this._data = data;
4136
    this._dataBinary = options.binary;
4137
    // keep only the compression
4138
    this.options = {
4139
        compression : options.compression,
4140
        compressionOptions : options.compressionOptions
4141
    };
4142
};
4143
4144
ZipObject.prototype = {
4145
    /**
4146
     * Create an internal stream for the content of this object.
4147
     * @param {String} type the type of each chunk.
4148
     * @return StreamHelper the stream.
4149
     */
4150
    internalStream: function (type) {
4151
        var result = null, outputType = "string";
4152
        try {
4153
            if (!type) {
4154
                throw new Error("No output type specified.");
4155
            }
4156
            outputType = type.toLowerCase();
4157
            var askUnicodeString = outputType === "string" || outputType === "text";
4158
            if (outputType === "binarystring" || outputType === "text") {
4159
                outputType = "string";
4160
            }
4161
            result = this._decompressWorker();
4162
4163
            var isUnicodeString = !this._dataBinary;
4164
4165
            if (isUnicodeString && !askUnicodeString) {
4166
                result = result.pipe(new utf8.Utf8EncodeWorker());
4167
            }
4168
            if (!isUnicodeString && askUnicodeString) {
4169
                result = result.pipe(new utf8.Utf8DecodeWorker());
4170
            }
4171
        } catch (e) {
4172
            result = new GenericWorker("error");
4173
            result.error(e);
4174
        }
4175
4176
        return new StreamHelper(result, outputType, "");
4177
    },
4178
4179
    /**
4180
     * Prepare the content in the asked type.
4181
     * @param {String} type the type of the result.
4182
     * @param {Function} onUpdate a function to call on each internal update.
4183
     * @return Promise the promise of the result.
4184
     */
4185
    async: function (type, onUpdate) {
4186
        return this.internalStream(type).accumulate(onUpdate);
4187
    },
4188
4189
    /**
4190
     * Prepare the content as a nodejs stream.
4191
     * @param {String} type the type of each chunk.
4192
     * @param {Function} onUpdate a function to call on each internal update.
4193
     * @return Stream the stream.
4194
     */
4195
    nodeStream: function (type, onUpdate) {
4196
        return this.internalStream(type || "nodebuffer").toNodejsStream(onUpdate);
4197
    },
4198
4199
    /**
4200
     * Return a worker for the compressed content.
4201
     * @private
4202
     * @param {Object} compression the compression object to use.
4203
     * @param {Object} compressionOptions the options to use when compressing.
4204
     * @return Worker the worker.
4205
     */
4206
    _compressWorker: function (compression, compressionOptions) {
4207
        if (
4208
            this._data instanceof CompressedObject &&
4209
            this._data.compression.magic === compression.magic
4210
        ) {
4211
            return this._data.getCompressedWorker();
4212
        } else {
4213
            var result = this._decompressWorker();
4214
            if(!this._dataBinary) {
4215
                result = result.pipe(new utf8.Utf8EncodeWorker());
4216
            }
4217
            return CompressedObject.createWorkerFrom(result, compression, compressionOptions);
4218
        }
4219
    },
4220
    /**
4221
     * Return a worker for the decompressed content.
4222
     * @private
4223
     * @return Worker the worker.
4224
     */
4225
    _decompressWorker : function () {
4226
        if (this._data instanceof CompressedObject) {
4227
            return this._data.getContentWorker();
4228
        } else if (this._data instanceof GenericWorker) {
4229
            return this._data;
4230
        } else {
4231
            return new DataWorker(this._data);
4232
        }
4233
    }
4234
};
4235
4236
var removedMethods = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"];
4237
var removedFn = function () {
4238
    throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
4239
};
4240
4241
for(var i = 0; i < removedMethods.length; i++) {
4242
    ZipObject.prototype[removedMethods[i]] = removedFn;
4243
}
4244
module.exports = ZipObject;
4245
4246
},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(require,module,exports){
4247
(function (global){
4248
'use strict';
4249
var Mutation = global.MutationObserver || global.WebKitMutationObserver;
4250
4251
var scheduleDrain;
4252
4253
{
4254
  if (Mutation) {
4255
    var called = 0;
4256
    var observer = new Mutation(nextTick);
4257
    var element = global.document.createTextNode('');
4258
    observer.observe(element, {
4259
      characterData: true
4260
    });
4261
    scheduleDrain = function () {
4262
      element.data = (called = ++called % 2);
4263
    };
4264
  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {
4265
    var channel = new global.MessageChannel();
4266
    channel.port1.onmessage = nextTick;
4267
    scheduleDrain = function () {
4268
      channel.port2.postMessage(0);
4269
    };
4270
  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {
4271
    scheduleDrain = function () {
4272
4273
      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
4274
      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
4275
      var scriptEl = global.document.createElement('script');
4276
      scriptEl.onreadystatechange = function () {
4277
        nextTick();
4278
4279
        scriptEl.onreadystatechange = null;
4280
        scriptEl.parentNode.removeChild(scriptEl);
4281
        scriptEl = null;
4282
      };
4283
      global.document.documentElement.appendChild(scriptEl);
4284
    };
4285
  } else {
4286
    scheduleDrain = function () {
4287
      setTimeout(nextTick, 0);
4288
    };
4289
  }
4290
}
4291
4292
var draining;
4293
var queue = [];
4294
//named nextTick for less confusing stack traces
4295
function nextTick() {
4296
  draining = true;
4297
  var i, oldQueue;
4298
  var len = queue.length;
4299
  while (len) {
4300
    oldQueue = queue;
4301
    queue = [];
4302
    i = -1;
4303
    while (++i < len) {
4304
      oldQueue[i]();
4305
    }
4306
    len = queue.length;
4307
  }
4308
  draining = false;
4309
}
4310
4311
module.exports = immediate;
4312
function immediate(task) {
4313
  if (queue.push(task) === 1 && !draining) {
4314
    scheduleDrain();
4315
  }
4316
}
4317
4318
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
4319
},{}],37:[function(require,module,exports){
4320
'use strict';
4321
var immediate = require('immediate');
4322
4323
/* istanbul ignore next */
4324
function INTERNAL() {}
4325
4326
var handlers = {};
4327
4328
var REJECTED = ['REJECTED'];
4329
var FULFILLED = ['FULFILLED'];
4330
var PENDING = ['PENDING'];
4331
4332
module.exports = Promise;
4333
4334
function Promise(resolver) {
4335
  if (typeof resolver !== 'function') {
4336
    throw new TypeError('resolver must be a function');
4337
  }
4338
  this.state = PENDING;
4339
  this.queue = [];
4340
  this.outcome = void 0;
4341
  if (resolver !== INTERNAL) {
4342
    safelyResolveThenable(this, resolver);
4343
  }
4344
}
4345
4346
Promise.prototype["finally"] = function (callback) {
4347
  if (typeof callback !== 'function') {
4348
    return this;
4349
  }
4350
  var p = this.constructor;
4351
  return this.then(resolve, reject);
4352
4353
  function resolve(value) {
4354
    function yes () {
4355
      return value;
4356
    }
4357
    return p.resolve(callback()).then(yes);
4358
  }
4359
  function reject(reason) {
4360
    function no () {
4361
      throw reason;
4362
    }
4363
    return p.resolve(callback()).then(no);
4364
  }
4365
};
4366
Promise.prototype["catch"] = function (onRejected) {
4367
  return this.then(null, onRejected);
4368
};
4369
Promise.prototype.then = function (onFulfilled, onRejected) {
4370
  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||
4371
    typeof onRejected !== 'function' && this.state === REJECTED) {
4372
    return this;
4373
  }
4374
  var promise = new this.constructor(INTERNAL);
4375
  if (this.state !== PENDING) {
4376
    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
4377
    unwrap(promise, resolver, this.outcome);
4378
  } else {
4379
    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
4380
  }
4381
4382
  return promise;
4383
};
4384
function QueueItem(promise, onFulfilled, onRejected) {
4385
  this.promise = promise;
4386
  if (typeof onFulfilled === 'function') {
4387
    this.onFulfilled = onFulfilled;
4388
    this.callFulfilled = this.otherCallFulfilled;
4389
  }
4390
  if (typeof onRejected === 'function') {
4391
    this.onRejected = onRejected;
4392
    this.callRejected = this.otherCallRejected;
4393
  }
4394
}
4395
QueueItem.prototype.callFulfilled = function (value) {
4396
  handlers.resolve(this.promise, value);
4397
};
4398
QueueItem.prototype.otherCallFulfilled = function (value) {
4399
  unwrap(this.promise, this.onFulfilled, value);
4400
};
4401
QueueItem.prototype.callRejected = function (value) {
4402
  handlers.reject(this.promise, value);
4403
};
4404
QueueItem.prototype.otherCallRejected = function (value) {
4405
  unwrap(this.promise, this.onRejected, value);
4406
};
4407
4408
function unwrap(promise, func, value) {
4409
  immediate(function () {
4410
    var returnValue;
4411
    try {
4412
      returnValue = func(value);
4413
    } catch (e) {
4414
      return handlers.reject(promise, e);
4415
    }
4416
    if (returnValue === promise) {
4417
      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));
4418
    } else {
4419
      handlers.resolve(promise, returnValue);
4420
    }
4421
  });
4422
}
4423
4424
handlers.resolve = function (self, value) {
4425
  var result = tryCatch(getThen, value);
4426
  if (result.status === 'error') {
4427
    return handlers.reject(self, result.value);
4428
  }
4429
  var thenable = result.value;
4430
4431
  if (thenable) {
4432
    safelyResolveThenable(self, thenable);
4433
  } else {
4434
    self.state = FULFILLED;
4435
    self.outcome = value;
4436
    var i = -1;
4437
    var len = self.queue.length;
4438
    while (++i < len) {
4439
      self.queue[i].callFulfilled(value);
4440
    }
4441
  }
4442
  return self;
4443
};
4444
handlers.reject = function (self, error) {
4445
  self.state = REJECTED;
4446
  self.outcome = error;
4447
  var i = -1;
4448
  var len = self.queue.length;
4449
  while (++i < len) {
4450
    self.queue[i].callRejected(error);
4451
  }
4452
  return self;
4453
};
4454
4455
function getThen(obj) {
4456
  // Make sure we only access the accessor once as required by the spec
4457
  var then = obj && obj.then;
4458
  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {
4459
    return function appyThen() {
4460
      then.apply(obj, arguments);
4461
    };
4462
  }
4463
}
4464
4465
function safelyResolveThenable(self, thenable) {
4466
  // Either fulfill, reject or reject with error
4467
  var called = false;
4468
  function onError(value) {
4469
    if (called) {
4470
      return;
4471
    }
4472
    called = true;
4473
    handlers.reject(self, value);
4474
  }
4475
4476
  function onSuccess(value) {
4477
    if (called) {
4478
      return;
4479
    }
4480
    called = true;
4481
    handlers.resolve(self, value);
4482
  }
4483
4484
  function tryToUnwrap() {
4485
    thenable(onSuccess, onError);
4486
  }
4487
4488
  var result = tryCatch(tryToUnwrap);
4489
  if (result.status === 'error') {
4490
    onError(result.value);
4491
  }
4492
}
4493
4494
function tryCatch(func, value) {
4495
  var out = {};
4496
  try {
4497
    out.value = func(value);
4498
    out.status = 'success';
4499
  } catch (e) {
4500
    out.status = 'error';
4501
    out.value = e;
4502
  }
4503
  return out;
4504
}
4505
4506
Promise.resolve = resolve;
4507
function resolve(value) {
4508
  if (value instanceof this) {
4509
    return value;
4510
  }
4511
  return handlers.resolve(new this(INTERNAL), value);
4512
}
4513
4514
Promise.reject = reject;
4515
function reject(reason) {
4516
  var promise = new this(INTERNAL);
4517
  return handlers.reject(promise, reason);
4518
}
4519
4520
Promise.all = all;
4521
function all(iterable) {
4522
  var self = this;
4523
  if (Object.prototype.toString.call(iterable) !== '[object Array]') {
4524
    return this.reject(new TypeError('must be an array'));
4525
  }
4526
4527
  var len = iterable.length;
4528
  var called = false;
4529
  if (!len) {
4530
    return this.resolve([]);
4531
  }
4532
4533
  var values = new Array(len);
4534
  var resolved = 0;
4535
  var i = -1;
4536
  var promise = new this(INTERNAL);
4537
4538
  while (++i < len) {
4539
    allResolver(iterable[i], i);
4540
  }
4541
  return promise;
4542
  function allResolver(value, i) {
4543
    self.resolve(value).then(resolveFromAll, function (error) {
4544
      if (!called) {
4545
        called = true;
4546
        handlers.reject(promise, error);
4547
      }
4548
    });
4549
    function resolveFromAll(outValue) {
4550
      values[i] = outValue;
4551
      if (++resolved === len && !called) {
4552
        called = true;
4553
        handlers.resolve(promise, values);
4554
      }
4555
    }
4556
  }
4557
}
4558
4559
Promise.race = race;
4560
function race(iterable) {
4561
  var self = this;
4562
  if (Object.prototype.toString.call(iterable) !== '[object Array]') {
4563
    return this.reject(new TypeError('must be an array'));
4564
  }
4565
4566
  var len = iterable.length;
4567
  var called = false;
4568
  if (!len) {
4569
    return this.resolve([]);
4570
  }
4571
4572
  var i = -1;
4573
  var promise = new this(INTERNAL);
4574
4575
  while (++i < len) {
4576
    resolver(iterable[i]);
4577
  }
4578
  return promise;
4579
  function resolver(value) {
4580
    self.resolve(value).then(function (response) {
4581
      if (!called) {
4582
        called = true;
4583
        handlers.resolve(promise, response);
4584
      }
4585
    }, function (error) {
4586
      if (!called) {
4587
        called = true;
4588
        handlers.reject(promise, error);
4589
      }
4590
    });
4591
  }
4592
}
4593
4594
},{"immediate":36}],38:[function(require,module,exports){
4595
// Top level file is just a mixin of submodules & constants
4596
'use strict';
4597
4598
var assign    = require('./lib/utils/common').assign;
4599
4600
var deflate   = require('./lib/deflate');
4601
var inflate   = require('./lib/inflate');
4602
var constants = require('./lib/zlib/constants');
4603
4604
var pako = {};
4605
4606
assign(pako, deflate, inflate, constants);
4607
4608
module.exports = pako;
4609
4610
},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(require,module,exports){
4611
'use strict';
4612
4613
4614
var zlib_deflate = require('./zlib/deflate');
4615
var utils        = require('./utils/common');
4616
var strings      = require('./utils/strings');
4617
var msg          = require('./zlib/messages');
4618
var ZStream      = require('./zlib/zstream');
4619
4620
var toString = Object.prototype.toString;
4621
4622
/* Public constants ==========================================================*/
4623
/* ===========================================================================*/
4624
4625
var Z_NO_FLUSH      = 0;
4626
var Z_FINISH        = 4;
4627
4628
var Z_OK            = 0;
4629
var Z_STREAM_END    = 1;
4630
var Z_SYNC_FLUSH    = 2;
4631
4632
var Z_DEFAULT_COMPRESSION = -1;
4633
4634
var Z_DEFAULT_STRATEGY    = 0;
4635
4636
var Z_DEFLATED  = 8;
4637
4638
/* ===========================================================================*/
4639
4640
4641
/**
4642
 * class Deflate
4643
 *
4644
 * Generic JS-style wrapper for zlib calls. If you don't need
4645
 * streaming behaviour - use more simple functions: [[deflate]],
4646
 * [[deflateRaw]] and [[gzip]].
4647
 **/
4648
4649
/* internal
4650
 * Deflate.chunks -> Array
4651
 *
4652
 * Chunks of output data, if [[Deflate#onData]] not overriden.
4653
 **/
4654
4655
/**
4656
 * Deflate.result -> Uint8Array|Array
4657
 *
4658
 * Compressed result, generated by default [[Deflate#onData]]
4659
 * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
4660
 * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you
4661
 * push a chunk with explicit flush (call [[Deflate#push]] with
4662
 * `Z_SYNC_FLUSH` param).
4663
 **/
4664
4665
/**
4666
 * Deflate.err -> Number
4667
 *
4668
 * Error code after deflate finished. 0 (Z_OK) on success.
4669
 * You will not need it in real life, because deflate errors
4670
 * are possible only on wrong options or bad `onData` / `onEnd`
4671
 * custom handlers.
4672
 **/
4673
4674
/**
4675
 * Deflate.msg -> String
4676
 *
4677
 * Error message, if [[Deflate.err]] != 0
4678
 **/
4679
4680
4681
/**
4682
 * new Deflate(options)
4683
 * - options (Object): zlib deflate options.
4684
 *
4685
 * Creates new deflator instance with specified params. Throws exception
4686
 * on bad params. Supported options:
4687
 *
4688
 * - `level`
4689
 * - `windowBits`
4690
 * - `memLevel`
4691
 * - `strategy`
4692
 * - `dictionary`
4693
 *
4694
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
4695
 * for more information on these.
4696
 *
4697
 * Additional options, for internal needs:
4698
 *
4699
 * - `chunkSize` - size of generated data chunks (16K by default)
4700
 * - `raw` (Boolean) - do raw deflate
4701
 * - `gzip` (Boolean) - create gzip wrapper
4702
 * - `to` (String) - if equal to 'string', then result will be "binary string"
4703
 *    (each char code [0..255])
4704
 * - `header` (Object) - custom header for gzip
4705
 *   - `text` (Boolean) - true if compressed data believed to be text
4706
 *   - `time` (Number) - modification time, unix timestamp
4707
 *   - `os` (Number) - operation system code
4708
 *   - `extra` (Array) - array of bytes with extra data (max 65536)
4709
 *   - `name` (String) - file name (binary string)
4710
 *   - `comment` (String) - comment (binary string)
4711
 *   - `hcrc` (Boolean) - true if header crc should be added
4712
 *
4713
 * ##### Example:
4714
 *
4715
 * ```javascript
4716
 * var pako = require('pako')
4717
 *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
4718
 *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
4719
 *
4720
 * var deflate = new pako.Deflate({ level: 3});
4721
 *
4722
 * deflate.push(chunk1, false);
4723
 * deflate.push(chunk2, true);  // true -> last chunk
4724
 *
4725
 * if (deflate.err) { throw new Error(deflate.err); }
4726
 *
4727
 * console.log(deflate.result);
4728
 * ```
4729
 **/
4730
function Deflate(options) {
4731
  if (!(this instanceof Deflate)) return new Deflate(options);
4732
4733
  this.options = utils.assign({
4734
    level: Z_DEFAULT_COMPRESSION,
4735
    method: Z_DEFLATED,
4736
    chunkSize: 16384,
4737
    windowBits: 15,
4738
    memLevel: 8,
4739
    strategy: Z_DEFAULT_STRATEGY,
4740
    to: ''
4741
  }, options || {});
4742
4743
  var opt = this.options;
4744
4745
  if (opt.raw && (opt.windowBits > 0)) {
4746
    opt.windowBits = -opt.windowBits;
4747
  }
4748
4749
  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
4750
    opt.windowBits += 16;
4751
  }
4752
4753
  this.err    = 0;      // error code, if happens (0 = Z_OK)
4754
  this.msg    = '';     // error message
4755
  this.ended  = false;  // used to avoid multiple onEnd() calls
4756
  this.chunks = [];     // chunks of compressed data
4757
4758
  this.strm = new ZStream();
4759
  this.strm.avail_out = 0;
4760
4761
  var status = zlib_deflate.deflateInit2(
4762
    this.strm,
4763
    opt.level,
4764
    opt.method,
4765
    opt.windowBits,
4766
    opt.memLevel,
4767
    opt.strategy
4768
  );
4769
4770
  if (status !== Z_OK) {
4771
    throw new Error(msg[status]);
4772
  }
4773
4774
  if (opt.header) {
4775
    zlib_deflate.deflateSetHeader(this.strm, opt.header);
4776
  }
4777
4778
  if (opt.dictionary) {
4779
    var dict;
4780
    // Convert data if needed
4781
    if (typeof opt.dictionary === 'string') {
4782
      // If we need to compress text, change encoding to utf8.
4783
      dict = strings.string2buf(opt.dictionary);
4784
    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
4785
      dict = new Uint8Array(opt.dictionary);
4786
    } else {
4787
      dict = opt.dictionary;
4788
    }
4789
4790
    status = zlib_deflate.deflateSetDictionary(this.strm, dict);
4791
4792
    if (status !== Z_OK) {
4793
      throw new Error(msg[status]);
4794
    }
4795
4796
    this._dict_set = true;
4797
  }
4798
}
4799
4800
/**
4801
 * Deflate#push(data[, mode]) -> Boolean
4802
 * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be
4803
 *   converted to utf8 byte sequence.
4804
 * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
4805
 *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
4806
 *
4807
 * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
4808
 * new compressed chunks. Returns `true` on success. The last data block must have
4809
 * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
4810
 * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you
4811
 * can use mode Z_SYNC_FLUSH, keeping the compression context.
4812
 *
4813
 * On fail call [[Deflate#onEnd]] with error code and return false.
4814
 *
4815
 * We strongly recommend to use `Uint8Array` on input for best speed (output
4816
 * array format is detected automatically). Also, don't skip last param and always
4817
 * use the same type in your code (boolean or number). That will improve JS speed.
4818
 *
4819
 * For regular `Array`-s make sure all elements are [0..255].
4820
 *
4821
 * ##### Example
4822
 *
4823
 * ```javascript
4824
 * push(chunk, false); // push one of data chunks
4825
 * ...
4826
 * push(chunk, true);  // push last chunk
4827
 * ```
4828
 **/
4829
Deflate.prototype.push = function (data, mode) {
4830
  var strm = this.strm;
4831
  var chunkSize = this.options.chunkSize;
4832
  var status, _mode;
4833
4834
  if (this.ended) { return false; }
4835
4836
  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
4837
4838
  // Convert data if needed
4839
  if (typeof data === 'string') {
4840
    // If we need to compress text, change encoding to utf8.
4841
    strm.input = strings.string2buf(data);
4842
  } else if (toString.call(data) === '[object ArrayBuffer]') {
4843
    strm.input = new Uint8Array(data);
4844
  } else {
4845
    strm.input = data;
4846
  }
4847
4848
  strm.next_in = 0;
4849
  strm.avail_in = strm.input.length;
4850
4851
  do {
4852
    if (strm.avail_out === 0) {
4853
      strm.output = new utils.Buf8(chunkSize);
4854
      strm.next_out = 0;
4855
      strm.avail_out = chunkSize;
4856
    }
4857
    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */
4858
4859
    if (status !== Z_STREAM_END && status !== Z_OK) {
4860
      this.onEnd(status);
4861
      this.ended = true;
4862
      return false;
4863
    }
4864
    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {
4865
      if (this.options.to === 'string') {
4866
        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
4867
      } else {
4868
        this.onData(utils.shrinkBuf(strm.output, strm.next_out));
4869
      }
4870
    }
4871
  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
4872
4873
  // Finalize on the last chunk.
4874
  if (_mode === Z_FINISH) {
4875
    status = zlib_deflate.deflateEnd(this.strm);
4876
    this.onEnd(status);
4877
    this.ended = true;
4878
    return status === Z_OK;
4879
  }
4880
4881
  // callback interim results if Z_SYNC_FLUSH.
4882
  if (_mode === Z_SYNC_FLUSH) {
4883
    this.onEnd(Z_OK);
4884
    strm.avail_out = 0;
4885
    return true;
4886
  }
4887
4888
  return true;
4889
};
4890
4891
4892
/**
4893
 * Deflate#onData(chunk) -> Void
4894
 * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
4895
 *   on js engine support. When string output requested, each chunk
4896
 *   will be string.
4897
 *
4898
 * By default, stores data blocks in `chunks[]` property and glue
4899
 * those in `onEnd`. Override this handler, if you need another behaviour.
4900
 **/
4901
Deflate.prototype.onData = function (chunk) {
4902
  this.chunks.push(chunk);
4903
};
4904
4905
4906
/**
4907
 * Deflate#onEnd(status) -> Void
4908
 * - status (Number): deflate status. 0 (Z_OK) on success,
4909
 *   other if not.
4910
 *
4911
 * Called once after you tell deflate that the input stream is
4912
 * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
4913
 * or if an error happened. By default - join collected chunks,
4914
 * free memory and fill `results` / `err` properties.
4915
 **/
4916
Deflate.prototype.onEnd = function (status) {
4917
  // On success - join
4918
  if (status === Z_OK) {
4919
    if (this.options.to === 'string') {
4920
      this.result = this.chunks.join('');
4921
    } else {
4922
      this.result = utils.flattenChunks(this.chunks);
4923
    }
4924
  }
4925
  this.chunks = [];
4926
  this.err = status;
4927
  this.msg = this.strm.msg;
4928
};
4929
4930
4931
/**
4932
 * deflate(data[, options]) -> Uint8Array|Array|String
4933
 * - data (Uint8Array|Array|String): input data to compress.
4934
 * - options (Object): zlib deflate options.
4935
 *
4936
 * Compress `data` with deflate algorithm and `options`.
4937
 *
4938
 * Supported options are:
4939
 *
4940
 * - level
4941
 * - windowBits
4942
 * - memLevel
4943
 * - strategy
4944
 * - dictionary
4945
 *
4946
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
4947
 * for more information on these.
4948
 *
4949
 * Sugar (options):
4950
 *
4951
 * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
4952
 *   negative windowBits implicitly.
4953
 * - `to` (String) - if equal to 'string', then result will be "binary string"
4954
 *    (each char code [0..255])
4955
 *
4956
 * ##### Example:
4957
 *
4958
 * ```javascript
4959
 * var pako = require('pako')
4960
 *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
4961
 *
4962
 * console.log(pako.deflate(data));
4963
 * ```
4964
 **/
4965
function deflate(input, options) {
4966
  var deflator = new Deflate(options);
4967
4968
  deflator.push(input, true);
4969
4970
  // That will never happens, if you don't cheat with options :)
4971
  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }
4972
4973
  return deflator.result;
4974
}
4975
4976
4977
/**
4978
 * deflateRaw(data[, options]) -> Uint8Array|Array|String
4979
 * - data (Uint8Array|Array|String): input data to compress.
4980
 * - options (Object): zlib deflate options.
4981
 *
4982
 * The same as [[deflate]], but creates raw data, without wrapper
4983
 * (header and adler32 crc).
4984
 **/
4985
function deflateRaw(input, options) {
4986
  options = options || {};
4987
  options.raw = true;
4988
  return deflate(input, options);
4989
}
4990
4991
4992
/**
4993
 * gzip(data[, options]) -> Uint8Array|Array|String
4994
 * - data (Uint8Array|Array|String): input data to compress.
4995
 * - options (Object): zlib deflate options.
4996
 *
4997
 * The same as [[deflate]], but create gzip wrapper instead of
4998
 * deflate one.
4999
 **/
5000
function gzip(input, options) {
5001
  options = options || {};
5002
  options.gzip = true;
5003
  return deflate(input, options);
5004
}
5005
5006
5007
exports.Deflate = Deflate;
5008
exports.deflate = deflate;
5009
exports.deflateRaw = deflateRaw;
5010
exports.gzip = gzip;
5011
5012
},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(require,module,exports){
5013
'use strict';
5014
5015
5016
var zlib_inflate = require('./zlib/inflate');
5017
var utils        = require('./utils/common');
5018
var strings      = require('./utils/strings');
5019
var c            = require('./zlib/constants');
5020
var msg          = require('./zlib/messages');
5021
var ZStream      = require('./zlib/zstream');
5022
var GZheader     = require('./zlib/gzheader');
5023
5024
var toString = Object.prototype.toString;
5025
5026
/**
5027
 * class Inflate
5028
 *
5029
 * Generic JS-style wrapper for zlib calls. If you don't need
5030
 * streaming behaviour - use more simple functions: [[inflate]]
5031
 * and [[inflateRaw]].
5032
 **/
5033
5034
/* internal
5035
 * inflate.chunks -> Array
5036
 *
5037
 * Chunks of output data, if [[Inflate#onData]] not overriden.
5038
 **/
5039
5040
/**
5041
 * Inflate.result -> Uint8Array|Array|String
5042
 *
5043
 * Uncompressed result, generated by default [[Inflate#onData]]
5044
 * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
5045
 * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you
5046
 * push a chunk with explicit flush (call [[Inflate#push]] with
5047
 * `Z_SYNC_FLUSH` param).
5048
 **/
5049
5050
/**
5051
 * Inflate.err -> Number
5052
 *
5053
 * Error code after inflate finished. 0 (Z_OK) on success.
5054
 * Should be checked if broken data possible.
5055
 **/
5056
5057
/**
5058
 * Inflate.msg -> String
5059
 *
5060
 * Error message, if [[Inflate.err]] != 0
5061
 **/
5062
5063
5064
/**
5065
 * new Inflate(options)
5066
 * - options (Object): zlib inflate options.
5067
 *
5068
 * Creates new inflator instance with specified params. Throws exception
5069
 * on bad params. Supported options:
5070
 *
5071
 * - `windowBits`
5072
 * - `dictionary`
5073
 *
5074
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
5075
 * for more information on these.
5076
 *
5077
 * Additional options, for internal needs:
5078
 *
5079
 * - `chunkSize` - size of generated data chunks (16K by default)
5080
 * - `raw` (Boolean) - do raw inflate
5081
 * - `to` (String) - if equal to 'string', then result will be converted
5082
 *   from utf8 to utf16 (javascript) string. When string output requested,
5083
 *   chunk length can differ from `chunkSize`, depending on content.
5084
 *
5085
 * By default, when no options set, autodetect deflate/gzip data format via
5086
 * wrapper header.
5087
 *
5088
 * ##### Example:
5089
 *
5090
 * ```javascript
5091
 * var pako = require('pako')
5092
 *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
5093
 *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
5094
 *
5095
 * var inflate = new pako.Inflate({ level: 3});
5096
 *
5097
 * inflate.push(chunk1, false);
5098
 * inflate.push(chunk2, true);  // true -> last chunk
5099
 *
5100
 * if (inflate.err) { throw new Error(inflate.err); }
5101
 *
5102
 * console.log(inflate.result);
5103
 * ```
5104
 **/
5105
function Inflate(options) {
5106
  if (!(this instanceof Inflate)) return new Inflate(options);
5107
5108
  this.options = utils.assign({
5109
    chunkSize: 16384,
5110
    windowBits: 0,
5111
    to: ''
5112
  }, options || {});
5113
5114
  var opt = this.options;
5115
5116
  // Force window size for `raw` data, if not set directly,
5117
  // because we have no header for autodetect.
5118
  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
5119
    opt.windowBits = -opt.windowBits;
5120
    if (opt.windowBits === 0) { opt.windowBits = -15; }
5121
  }
5122
5123
  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
5124
  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
5125
      !(options && options.windowBits)) {
5126
    opt.windowBits += 32;
5127
  }
5128
5129
  // Gzip header has no info about windows size, we can do autodetect only
5130
  // for deflate. So, if window size not set, force it to max when gzip possible
5131
  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
5132
    // bit 3 (16) -> gzipped data
5133
    // bit 4 (32) -> autodetect gzip/deflate
5134
    if ((opt.windowBits & 15) === 0) {
5135
      opt.windowBits |= 15;
5136
    }
5137
  }
5138
5139
  this.err    = 0;      // error code, if happens (0 = Z_OK)
5140
  this.msg    = '';     // error message
5141
  this.ended  = false;  // used to avoid multiple onEnd() calls
5142
  this.chunks = [];     // chunks of compressed data
5143
5144
  this.strm   = new ZStream();
5145
  this.strm.avail_out = 0;
5146
5147
  var status  = zlib_inflate.inflateInit2(
5148
    this.strm,
5149
    opt.windowBits
5150
  );
5151
5152
  if (status !== c.Z_OK) {
5153
    throw new Error(msg[status]);
5154
  }
5155
5156
  this.header = new GZheader();
5157
5158
  zlib_inflate.inflateGetHeader(this.strm, this.header);
5159
}
5160
5161
/**
5162
 * Inflate#push(data[, mode]) -> Boolean
5163
 * - data (Uint8Array|Array|ArrayBuffer|String): input data
5164
 * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
5165
 *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
5166
 *
5167
 * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
5168
 * new output chunks. Returns `true` on success. The last data block must have
5169
 * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
5170
 * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you
5171
 * can use mode Z_SYNC_FLUSH, keeping the decompression context.
5172
 *
5173
 * On fail call [[Inflate#onEnd]] with error code and return false.
5174
 *
5175
 * We strongly recommend to use `Uint8Array` on input for best speed (output
5176
 * format is detected automatically). Also, don't skip last param and always
5177
 * use the same type in your code (boolean or number). That will improve JS speed.
5178
 *
5179
 * For regular `Array`-s make sure all elements are [0..255].
5180
 *
5181
 * ##### Example
5182
 *
5183
 * ```javascript
5184
 * push(chunk, false); // push one of data chunks
5185
 * ...
5186
 * push(chunk, true);  // push last chunk
5187
 * ```
5188
 **/
5189
Inflate.prototype.push = function (data, mode) {
5190
  var strm = this.strm;
5191
  var chunkSize = this.options.chunkSize;
5192
  var dictionary = this.options.dictionary;
5193
  var status, _mode;
5194
  var next_out_utf8, tail, utf8str;
5195
  var dict;
5196
5197
  // Flag to properly process Z_BUF_ERROR on testing inflate call
5198
  // when we check that all output data was flushed.
5199
  var allowBufError = false;
5200
5201
  if (this.ended) { return false; }
5202
  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
5203
5204
  // Convert data if needed
5205
  if (typeof data === 'string') {
5206
    // Only binary strings can be decompressed on practice
5207
    strm.input = strings.binstring2buf(data);
5208
  } else if (toString.call(data) === '[object ArrayBuffer]') {
5209
    strm.input = new Uint8Array(data);
5210
  } else {
5211
    strm.input = data;
5212
  }
5213
5214
  strm.next_in = 0;
5215
  strm.avail_in = strm.input.length;
5216
5217
  do {
5218
    if (strm.avail_out === 0) {
5219
      strm.output = new utils.Buf8(chunkSize);
5220
      strm.next_out = 0;
5221
      strm.avail_out = chunkSize;
5222
    }
5223
5224
    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */
5225
5226
    if (status === c.Z_NEED_DICT && dictionary) {
5227
      // Convert data if needed
5228
      if (typeof dictionary === 'string') {
5229
        dict = strings.string2buf(dictionary);
5230
      } else if (toString.call(dictionary) === '[object ArrayBuffer]') {
5231
        dict = new Uint8Array(dictionary);
5232
      } else {
5233
        dict = dictionary;
5234
      }
5235
5236
      status = zlib_inflate.inflateSetDictionary(this.strm, dict);
5237
5238
    }
5239
5240
    if (status === c.Z_BUF_ERROR && allowBufError === true) {
5241
      status = c.Z_OK;
5242
      allowBufError = false;
5243
    }
5244
5245
    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
5246
      this.onEnd(status);
5247
      this.ended = true;
5248
      return false;
5249
    }
5250
5251
    if (strm.next_out) {
5252
      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {
5253
5254
        if (this.options.to === 'string') {
5255
5256
          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
5257
5258
          tail = strm.next_out - next_out_utf8;
5259
          utf8str = strings.buf2string(strm.output, next_out_utf8);
5260
5261
          // move tail
5262
          strm.next_out = tail;
5263
          strm.avail_out = chunkSize - tail;
5264
          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
5265
5266
          this.onData(utf8str);
5267
5268
        } else {
5269
          this.onData(utils.shrinkBuf(strm.output, strm.next_out));
5270
        }
5271
      }
5272
    }
5273
5274
    // When no more input data, we should check that internal inflate buffers
5275
    // are flushed. The only way to do it when avail_out = 0 - run one more
5276
    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.
5277
    // Here we set flag to process this error properly.
5278
    //
5279
    // NOTE. Deflate does not return error in this case and does not needs such
5280
    // logic.
5281
    if (strm.avail_in === 0 && strm.avail_out === 0) {
5282
      allowBufError = true;
5283
    }
5284
5285
  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);
5286
5287
  if (status === c.Z_STREAM_END) {
5288
    _mode = c.Z_FINISH;
5289
  }
5290
5291
  // Finalize on the last chunk.
5292
  if (_mode === c.Z_FINISH) {
5293
    status = zlib_inflate.inflateEnd(this.strm);
5294
    this.onEnd(status);
5295
    this.ended = true;
5296
    return status === c.Z_OK;
5297
  }
5298
5299
  // callback interim results if Z_SYNC_FLUSH.
5300
  if (_mode === c.Z_SYNC_FLUSH) {
5301
    this.onEnd(c.Z_OK);
5302
    strm.avail_out = 0;
5303
    return true;
5304
  }
5305
5306
  return true;
5307
};
5308
5309
5310
/**
5311
 * Inflate#onData(chunk) -> Void
5312
 * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
5313
 *   on js engine support. When string output requested, each chunk
5314
 *   will be string.
5315
 *
5316
 * By default, stores data blocks in `chunks[]` property and glue
5317
 * those in `onEnd`. Override this handler, if you need another behaviour.
5318
 **/
5319
Inflate.prototype.onData = function (chunk) {
5320
  this.chunks.push(chunk);
5321
};
5322
5323
5324
/**
5325
 * Inflate#onEnd(status) -> Void
5326
 * - status (Number): inflate status. 0 (Z_OK) on success,
5327
 *   other if not.
5328
 *
5329
 * Called either after you tell inflate that the input stream is
5330
 * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
5331
 * or if an error happened. By default - join collected chunks,
5332
 * free memory and fill `results` / `err` properties.
5333
 **/
5334
Inflate.prototype.onEnd = function (status) {
5335
  // On success - join
5336
  if (status === c.Z_OK) {
5337
    if (this.options.to === 'string') {
5338
      // Glue & convert here, until we teach pako to send
5339
      // utf8 alligned strings to onData
5340
      this.result = this.chunks.join('');
5341
    } else {
5342
      this.result = utils.flattenChunks(this.chunks);
5343
    }
5344
  }
5345
  this.chunks = [];
5346
  this.err = status;
5347
  this.msg = this.strm.msg;
5348
};
5349
5350
5351
/**
5352
 * inflate(data[, options]) -> Uint8Array|Array|String
5353
 * - data (Uint8Array|Array|String): input data to decompress.
5354
 * - options (Object): zlib inflate options.
5355
 *
5356
 * Decompress `data` with inflate/ungzip and `options`. Autodetect
5357
 * format via wrapper header by default. That's why we don't provide
5358
 * separate `ungzip` method.
5359
 *
5360
 * Supported options are:
5361
 *
5362
 * - windowBits
5363
 *
5364
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
5365
 * for more information.
5366
 *
5367
 * Sugar (options):
5368
 *
5369
 * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
5370
 *   negative windowBits implicitly.
5371
 * - `to` (String) - if equal to 'string', then result will be converted
5372
 *   from utf8 to utf16 (javascript) string. When string output requested,
5373
 *   chunk length can differ from `chunkSize`, depending on content.
5374
 *
5375
 *
5376
 * ##### Example:
5377
 *
5378
 * ```javascript
5379
 * var pako = require('pako')
5380
 *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
5381
 *   , output;
5382
 *
5383
 * try {
5384
 *   output = pako.inflate(input);
5385
 * } catch (err)
5386
 *   console.log(err);
5387
 * }
5388
 * ```
5389
 **/
5390
function inflate(input, options) {
5391
  var inflator = new Inflate(options);
5392
5393
  inflator.push(input, true);
5394
5395
  // That will never happens, if you don't cheat with options :)
5396
  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }
5397
5398
  return inflator.result;
5399
}
5400
5401
5402
/**
5403
 * inflateRaw(data[, options]) -> Uint8Array|Array|String
5404
 * - data (Uint8Array|Array|String): input data to decompress.
5405
 * - options (Object): zlib inflate options.
5406
 *
5407
 * The same as [[inflate]], but creates raw data, without wrapper
5408
 * (header and adler32 crc).
5409
 **/
5410
function inflateRaw(input, options) {
5411
  options = options || {};
5412
  options.raw = true;
5413
  return inflate(input, options);
5414
}
5415
5416
5417
/**
5418
 * ungzip(data[, options]) -> Uint8Array|Array|String
5419
 * - data (Uint8Array|Array|String): input data to decompress.
5420
 * - options (Object): zlib inflate options.
5421
 *
5422
 * Just shortcut to [[inflate]], because it autodetects format
5423
 * by header.content. Done for convenience.
5424
 **/
5425
5426
5427
exports.Inflate = Inflate;
5428
exports.inflate = inflate;
5429
exports.inflateRaw = inflateRaw;
5430
exports.ungzip  = inflate;
5431
5432
},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(require,module,exports){
5433
'use strict';
5434
5435
5436
var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
5437
                (typeof Uint16Array !== 'undefined') &&
5438
                (typeof Int32Array !== 'undefined');
5439
5440
5441
exports.assign = function (obj /*from1, from2, from3, ...*/) {
5442
  var sources = Array.prototype.slice.call(arguments, 1);
5443
  while (sources.length) {
5444
    var source = sources.shift();
5445
    if (!source) { continue; }
5446
5447
    if (typeof source !== 'object') {
5448
      throw new TypeError(source + 'must be non-object');
5449
    }
5450
5451
    for (var p in source) {
5452
      if (source.hasOwnProperty(p)) {
5453
        obj[p] = source[p];
5454
      }
5455
    }
5456
  }
5457
5458
  return obj;
5459
};
5460
5461
5462
// reduce buffer size, avoiding mem copy
5463
exports.shrinkBuf = function (buf, size) {
5464
  if (buf.length === size) { return buf; }
5465
  if (buf.subarray) { return buf.subarray(0, size); }
5466
  buf.length = size;
5467
  return buf;
5468
};
5469
5470
5471
var fnTyped = {
5472
  arraySet: function (dest, src, src_offs, len, dest_offs) {
5473
    if (src.subarray && dest.subarray) {
5474
      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
5475
      return;
5476
    }
5477
    // Fallback to ordinary array
5478
    for (var i = 0; i < len; i++) {
5479
      dest[dest_offs + i] = src[src_offs + i];
5480
    }
5481
  },
5482
  // Join array of chunks to single array.
5483
  flattenChunks: function (chunks) {
5484
    var i, l, len, pos, chunk, result;
5485
5486
    // calculate data length
5487
    len = 0;
5488
    for (i = 0, l = chunks.length; i < l; i++) {
5489
      len += chunks[i].length;
5490
    }
5491
5492
    // join chunks
5493
    result = new Uint8Array(len);
5494
    pos = 0;
5495
    for (i = 0, l = chunks.length; i < l; i++) {
5496
      chunk = chunks[i];
5497
      result.set(chunk, pos);
5498
      pos += chunk.length;
5499
    }
5500
5501
    return result;
5502
  }
5503
};
5504
5505
var fnUntyped = {
5506
  arraySet: function (dest, src, src_offs, len, dest_offs) {
5507
    for (var i = 0; i < len; i++) {
5508
      dest[dest_offs + i] = src[src_offs + i];
5509
    }
5510
  },
5511
  // Join array of chunks to single array.
5512
  flattenChunks: function (chunks) {
5513
    return [].concat.apply([], chunks);
5514
  }
5515
};
5516
5517
5518
// Enable/Disable typed arrays use, for testing
5519
//
5520
exports.setTyped = function (on) {
5521
  if (on) {
5522
    exports.Buf8  = Uint8Array;
5523
    exports.Buf16 = Uint16Array;
5524
    exports.Buf32 = Int32Array;
5525
    exports.assign(exports, fnTyped);
5526
  } else {
5527
    exports.Buf8  = Array;
5528
    exports.Buf16 = Array;
5529
    exports.Buf32 = Array;
5530
    exports.assign(exports, fnUntyped);
5531
  }
5532
};
5533
5534
exports.setTyped(TYPED_OK);
5535
5536
},{}],42:[function(require,module,exports){
5537
// String encode/decode helpers
5538
'use strict';
5539
5540
5541
var utils = require('./common');
5542
5543
5544
// Quick check if we can use fast array to bin string conversion
5545
//
5546
// - apply(Array) can fail on Android 2.2
5547
// - apply(Uint8Array) can fail on iOS 5.1 Safary
5548
//
5549
var STR_APPLY_OK = true;
5550
var STR_APPLY_UIA_OK = true;
5551
5552
try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }
5553
try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }
5554
5555
5556
// Table with utf8 lengths (calculated by first byte of sequence)
5557
// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
5558
// because max possible codepoint is 0x10ffff
5559
var _utf8len = new utils.Buf8(256);
5560
for (var q = 0; q < 256; q++) {
5561
  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
5562
}
5563
_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start
5564
5565
5566
// convert string to array (typed, when possible)
5567
exports.string2buf = function (str) {
5568
  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
5569
5570
  // count binary size
5571
  for (m_pos = 0; m_pos < str_len; m_pos++) {
5572
    c = str.charCodeAt(m_pos);
5573
    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
5574
      c2 = str.charCodeAt(m_pos + 1);
5575
      if ((c2 & 0xfc00) === 0xdc00) {
5576
        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
5577
        m_pos++;
5578
      }
5579
    }
5580
    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
5581
  }
5582
5583
  // allocate buffer
5584
  buf = new utils.Buf8(buf_len);
5585
5586
  // convert
5587
  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
5588
    c = str.charCodeAt(m_pos);
5589
    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
5590
      c2 = str.charCodeAt(m_pos + 1);
5591
      if ((c2 & 0xfc00) === 0xdc00) {
5592
        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
5593
        m_pos++;
5594
      }
5595
    }
5596
    if (c < 0x80) {
5597
      /* one byte */
5598
      buf[i++] = c;
5599
    } else if (c < 0x800) {
5600
      /* two bytes */
5601
      buf[i++] = 0xC0 | (c >>> 6);
5602
      buf[i++] = 0x80 | (c & 0x3f);
5603
    } else if (c < 0x10000) {
5604
      /* three bytes */
5605
      buf[i++] = 0xE0 | (c >>> 12);
5606
      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
5607
      buf[i++] = 0x80 | (c & 0x3f);
5608
    } else {
5609
      /* four bytes */
5610
      buf[i++] = 0xf0 | (c >>> 18);
5611
      buf[i++] = 0x80 | (c >>> 12 & 0x3f);
5612
      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
5613
      buf[i++] = 0x80 | (c & 0x3f);
5614
    }
5615
  }
5616
5617
  return buf;
5618
};
5619
5620
// Helper (used in 2 places)
5621
function buf2binstring(buf, len) {
5622
  // use fallback for big arrays to avoid stack overflow
5623
  if (len < 65537) {
5624
    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
5625
      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
5626
    }
5627
  }
5628
5629
  var result = '';
5630
  for (var i = 0; i < len; i++) {
5631
    result += String.fromCharCode(buf[i]);
5632
  }
5633
  return result;
5634
}
5635
5636
5637
// Convert byte array to binary string
5638
exports.buf2binstring = function (buf) {
5639
  return buf2binstring(buf, buf.length);
5640
};
5641
5642
5643
// Convert binary string (typed, when possible)
5644
exports.binstring2buf = function (str) {
5645
  var buf = new utils.Buf8(str.length);
5646
  for (var i = 0, len = buf.length; i < len; i++) {
5647
    buf[i] = str.charCodeAt(i);
5648
  }
5649
  return buf;
5650
};
5651
5652
5653
// convert array to string
5654
exports.buf2string = function (buf, max) {
5655
  var i, out, c, c_len;
5656
  var len = max || buf.length;
5657
5658
  // Reserve max possible length (2 words per char)
5659
  // NB: by unknown reasons, Array is significantly faster for
5660
  //     String.fromCharCode.apply than Uint16Array.
5661
  var utf16buf = new Array(len * 2);
5662
5663
  for (out = 0, i = 0; i < len;) {
5664
    c = buf[i++];
5665
    // quick process ascii
5666
    if (c < 0x80) { utf16buf[out++] = c; continue; }
5667
5668
    c_len = _utf8len[c];
5669
    // skip 5 & 6 byte codes
5670
    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }
5671
5672
    // apply mask on first byte
5673
    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
5674
    // join the rest
5675
    while (c_len > 1 && i < len) {
5676
      c = (c << 6) | (buf[i++] & 0x3f);
5677
      c_len--;
5678
    }
5679
5680
    // terminated by end of string?
5681
    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
5682
5683
    if (c < 0x10000) {
5684
      utf16buf[out++] = c;
5685
    } else {
5686
      c -= 0x10000;
5687
      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
5688
      utf16buf[out++] = 0xdc00 | (c & 0x3ff);
5689
    }
5690
  }
5691
5692
  return buf2binstring(utf16buf, out);
5693
};
5694
5695
5696
// Calculate max possible position in utf8 buffer,
5697
// that will not break sequence. If that's not possible
5698
// - (very small limits) return max size as is.
5699
//
5700
// buf[] - utf8 bytes array
5701
// max   - length limit (mandatory);
5702
exports.utf8border = function (buf, max) {
5703
  var pos;
5704
5705
  max = max || buf.length;
5706
  if (max > buf.length) { max = buf.length; }
5707
5708
  // go back from last position, until start of sequence found
5709
  pos = max - 1;
5710
  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
5711
5712
  // Fuckup - very small and broken sequence,
5713
  // return max, because we should return something anyway.
5714
  if (pos < 0) { return max; }
5715
5716
  // If we came to start of buffer - that means vuffer is too small,
5717
  // return max too.
5718
  if (pos === 0) { return max; }
5719
5720
  return (pos + _utf8len[buf[pos]] > max) ? pos : max;
5721
};
5722
5723
},{"./common":41}],43:[function(require,module,exports){
5724
'use strict';
5725
5726
// Note: adler32 takes 12% for level 0 and 2% for level 6.
5727
// It doesn't worth to make additional optimizationa as in original.
5728
// Small size is preferable.
5729
5730
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
5731
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
5732
//
5733
// This software is provided 'as-is', without any express or implied
5734
// warranty. In no event will the authors be held liable for any damages
5735
// arising from the use of this software.
5736
//
5737
// Permission is granted to anyone to use this software for any purpose,
5738
// including commercial applications, and to alter it and redistribute it
5739
// freely, subject to the following restrictions:
5740
//
5741
// 1. The origin of this software must not be misrepresented; you must not
5742
//   claim that you wrote the original software. If you use this software
5743
//   in a product, an acknowledgment in the product documentation would be
5744
//   appreciated but is not required.
5745
// 2. Altered source versions must be plainly marked as such, and must not be
5746
//   misrepresented as being the original software.
5747
// 3. This notice may not be removed or altered from any source distribution.
5748
5749
function adler32(adler, buf, len, pos) {
5750
  var s1 = (adler & 0xffff) |0,
5751
      s2 = ((adler >>> 16) & 0xffff) |0,
5752
      n = 0;
5753
5754
  while (len !== 0) {
5755
    // Set limit ~ twice less than 5552, to keep
5756
    // s2 in 31-bits, because we force signed ints.
5757
    // in other case %= will fail.
5758
    n = len > 2000 ? 2000 : len;
5759
    len -= n;
5760
5761
    do {
5762
      s1 = (s1 + buf[pos++]) |0;
5763
      s2 = (s2 + s1) |0;
5764
    } while (--n);
5765
5766
    s1 %= 65521;
5767
    s2 %= 65521;
5768
  }
5769
5770
  return (s1 | (s2 << 16)) |0;
5771
}
5772
5773
5774
module.exports = adler32;
5775
5776
},{}],44:[function(require,module,exports){
5777
'use strict';
5778
5779
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
5780
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
5781
//
5782
// This software is provided 'as-is', without any express or implied
5783
// warranty. In no event will the authors be held liable for any damages
5784
// arising from the use of this software.
5785
//
5786
// Permission is granted to anyone to use this software for any purpose,
5787
// including commercial applications, and to alter it and redistribute it
5788
// freely, subject to the following restrictions:
5789
//
5790
// 1. The origin of this software must not be misrepresented; you must not
5791
//   claim that you wrote the original software. If you use this software
5792
//   in a product, an acknowledgment in the product documentation would be
5793
//   appreciated but is not required.
5794
// 2. Altered source versions must be plainly marked as such, and must not be
5795
//   misrepresented as being the original software.
5796
// 3. This notice may not be removed or altered from any source distribution.
5797
5798
module.exports = {
5799
5800
  /* Allowed flush values; see deflate() and inflate() below for details */
5801
  Z_NO_FLUSH:         0,
5802
  Z_PARTIAL_FLUSH:    1,
5803
  Z_SYNC_FLUSH:       2,
5804
  Z_FULL_FLUSH:       3,
5805
  Z_FINISH:           4,
5806
  Z_BLOCK:            5,
5807
  Z_TREES:            6,
5808
5809
  /* Return codes for the compression/decompression functions. Negative values
5810
  * are errors, positive values are used for special but normal events.
5811
  */
5812
  Z_OK:               0,
5813
  Z_STREAM_END:       1,
5814
  Z_NEED_DICT:        2,
5815
  Z_ERRNO:           -1,
5816
  Z_STREAM_ERROR:    -2,
5817
  Z_DATA_ERROR:      -3,
5818
  //Z_MEM_ERROR:     -4,
5819
  Z_BUF_ERROR:       -5,
5820
  //Z_VERSION_ERROR: -6,
5821
5822
  /* compression levels */
5823
  Z_NO_COMPRESSION:         0,
5824
  Z_BEST_SPEED:             1,
5825
  Z_BEST_COMPRESSION:       9,
5826
  Z_DEFAULT_COMPRESSION:   -1,
5827
5828
5829
  Z_FILTERED:               1,
5830
  Z_HUFFMAN_ONLY:           2,
5831
  Z_RLE:                    3,
5832
  Z_FIXED:                  4,
5833
  Z_DEFAULT_STRATEGY:       0,
5834
5835
  /* Possible values of the data_type field (though see inflate()) */
5836
  Z_BINARY:                 0,
5837
  Z_TEXT:                   1,
5838
  //Z_ASCII:                1, // = Z_TEXT (deprecated)
5839
  Z_UNKNOWN:                2,
5840
5841
  /* The deflate compression method */
5842
  Z_DEFLATED:               8
5843
  //Z_NULL:                 null // Use -1 or null inline, depending on var type
5844
};
5845
5846
},{}],45:[function(require,module,exports){
5847
'use strict';
5848
5849
// Note: we can't get significant speed boost here.
5850
// So write code to minimize size - no pregenerated tables
5851
// and array tools dependencies.
5852
5853
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
5854
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
5855
//
5856
// This software is provided 'as-is', without any express or implied
5857
// warranty. In no event will the authors be held liable for any damages
5858
// arising from the use of this software.
5859
//
5860
// Permission is granted to anyone to use this software for any purpose,
5861
// including commercial applications, and to alter it and redistribute it
5862
// freely, subject to the following restrictions:
5863
//
5864
// 1. The origin of this software must not be misrepresented; you must not
5865
//   claim that you wrote the original software. If you use this software
5866
//   in a product, an acknowledgment in the product documentation would be
5867
//   appreciated but is not required.
5868
// 2. Altered source versions must be plainly marked as such, and must not be
5869
//   misrepresented as being the original software.
5870
// 3. This notice may not be removed or altered from any source distribution.
5871
5872
// Use ordinary array, since untyped makes no boost here
5873
function makeTable() {
5874
  var c, table = [];
5875
5876
  for (var n = 0; n < 256; n++) {
5877
    c = n;
5878
    for (var k = 0; k < 8; k++) {
5879
      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
5880
    }
5881
    table[n] = c;
5882
  }
5883
5884
  return table;
5885
}
5886
5887
// Create table on load. Just 255 signed longs. Not a problem.
5888
var crcTable = makeTable();
5889
5890
5891
function crc32(crc, buf, len, pos) {
5892
  var t = crcTable,
5893
      end = pos + len;
5894
5895
  crc ^= -1;
5896
5897
  for (var i = pos; i < end; i++) {
5898
    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
5899
  }
5900
5901
  return (crc ^ (-1)); // >>> 0;
5902
}
5903
5904
5905
module.exports = crc32;
5906
5907
},{}],46:[function(require,module,exports){
5908
'use strict';
5909
5910
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
5911
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
5912
//
5913
// This software is provided 'as-is', without any express or implied
5914
// warranty. In no event will the authors be held liable for any damages
5915
// arising from the use of this software.
5916
//
5917
// Permission is granted to anyone to use this software for any purpose,
5918
// including commercial applications, and to alter it and redistribute it
5919
// freely, subject to the following restrictions:
5920
//
5921
// 1. The origin of this software must not be misrepresented; you must not
5922
//   claim that you wrote the original software. If you use this software
5923
//   in a product, an acknowledgment in the product documentation would be
5924
//   appreciated but is not required.
5925
// 2. Altered source versions must be plainly marked as such, and must not be
5926
//   misrepresented as being the original software.
5927
// 3. This notice may not be removed or altered from any source distribution.
5928
5929
var utils   = require('../utils/common');
5930
var trees   = require('./trees');
5931
var adler32 = require('./adler32');
5932
var crc32   = require('./crc32');
5933
var msg     = require('./messages');
5934
5935
/* Public constants ==========================================================*/
5936
/* ===========================================================================*/
5937
5938
5939
/* Allowed flush values; see deflate() and inflate() below for details */
5940
var Z_NO_FLUSH      = 0;
5941
var Z_PARTIAL_FLUSH = 1;
5942
//var Z_SYNC_FLUSH    = 2;
5943
var Z_FULL_FLUSH    = 3;
5944
var Z_FINISH        = 4;
5945
var Z_BLOCK         = 5;
5946
//var Z_TREES         = 6;
5947
5948
5949
/* Return codes for the compression/decompression functions. Negative values
5950
 * are errors, positive values are used for special but normal events.
5951
 */
5952
var Z_OK            = 0;
5953
var Z_STREAM_END    = 1;
5954
//var Z_NEED_DICT     = 2;
5955
//var Z_ERRNO         = -1;
5956
var Z_STREAM_ERROR  = -2;
5957
var Z_DATA_ERROR    = -3;
5958
//var Z_MEM_ERROR     = -4;
5959
var Z_BUF_ERROR     = -5;
5960
//var Z_VERSION_ERROR = -6;
5961
5962
5963
/* compression levels */
5964
//var Z_NO_COMPRESSION      = 0;
5965
//var Z_BEST_SPEED          = 1;
5966
//var Z_BEST_COMPRESSION    = 9;
5967
var Z_DEFAULT_COMPRESSION = -1;
5968
5969
5970
var Z_FILTERED            = 1;
5971
var Z_HUFFMAN_ONLY        = 2;
5972
var Z_RLE                 = 3;
5973
var Z_FIXED               = 4;
5974
var Z_DEFAULT_STRATEGY    = 0;
5975
5976
/* Possible values of the data_type field (though see inflate()) */
5977
//var Z_BINARY              = 0;
5978
//var Z_TEXT                = 1;
5979
//var Z_ASCII               = 1; // = Z_TEXT
5980
var Z_UNKNOWN             = 2;
5981
5982
5983
/* The deflate compression method */
5984
var Z_DEFLATED  = 8;
5985
5986
/*============================================================================*/
5987
5988
5989
var MAX_MEM_LEVEL = 9;
5990
/* Maximum value for memLevel in deflateInit2 */
5991
var MAX_WBITS = 15;
5992
/* 32K LZ77 window */
5993
var DEF_MEM_LEVEL = 8;
5994
5995
5996
var LENGTH_CODES  = 29;
5997
/* number of length codes, not counting the special END_BLOCK code */
5998
var LITERALS      = 256;
5999
/* number of literal bytes 0..255 */
6000
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
6001
/* number of Literal or Length codes, including the END_BLOCK code */
6002
var D_CODES       = 30;
6003
/* number of distance codes */
6004
var BL_CODES      = 19;
6005
/* number of codes used to transfer the bit lengths */
6006
var HEAP_SIZE     = 2 * L_CODES + 1;
6007
/* maximum heap size */
6008
var MAX_BITS  = 15;
6009
/* All codes must not exceed MAX_BITS bits */
6010
6011
var MIN_MATCH = 3;
6012
var MAX_MATCH = 258;
6013
var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
6014
6015
var PRESET_DICT = 0x20;
6016
6017
var INIT_STATE = 42;
6018
var EXTRA_STATE = 69;
6019
var NAME_STATE = 73;
6020
var COMMENT_STATE = 91;
6021
var HCRC_STATE = 103;
6022
var BUSY_STATE = 113;
6023
var FINISH_STATE = 666;
6024
6025
var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
6026
var BS_BLOCK_DONE     = 2; /* block flush performed */
6027
var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
6028
var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
6029
6030
var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
6031
6032
function err(strm, errorCode) {
6033
  strm.msg = msg[errorCode];
6034
  return errorCode;
6035
}
6036
6037
function rank(f) {
6038
  return ((f) << 1) - ((f) > 4 ? 9 : 0);
6039
}
6040
6041
function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
6042
6043
6044
/* =========================================================================
6045
 * Flush as much pending output as possible. All deflate() output goes
6046
 * through this function so some applications may wish to modify it
6047
 * to avoid allocating a large strm->output buffer and copying into it.
6048
 * (See also read_buf()).
6049
 */
6050
function flush_pending(strm) {
6051
  var s = strm.state;
6052
6053
  //_tr_flush_bits(s);
6054
  var len = s.pending;
6055
  if (len > strm.avail_out) {
6056
    len = strm.avail_out;
6057
  }
6058
  if (len === 0) { return; }
6059
6060
  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
6061
  strm.next_out += len;
6062
  s.pending_out += len;
6063
  strm.total_out += len;
6064
  strm.avail_out -= len;
6065
  s.pending -= len;
6066
  if (s.pending === 0) {
6067
    s.pending_out = 0;
6068
  }
6069
}
6070
6071
6072
function flush_block_only(s, last) {
6073
  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
6074
  s.block_start = s.strstart;
6075
  flush_pending(s.strm);
6076
}
6077
6078
6079
function put_byte(s, b) {
6080
  s.pending_buf[s.pending++] = b;
6081
}
6082
6083
6084
/* =========================================================================
6085
 * Put a short in the pending buffer. The 16-bit value is put in MSB order.
6086
 * IN assertion: the stream state is correct and there is enough room in
6087
 * pending_buf.
6088
 */
6089
function putShortMSB(s, b) {
6090
//  put_byte(s, (Byte)(b >> 8));
6091
//  put_byte(s, (Byte)(b & 0xff));
6092
  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
6093
  s.pending_buf[s.pending++] = b & 0xff;
6094
}
6095
6096
6097
/* ===========================================================================
6098
 * Read a new buffer from the current input stream, update the adler32
6099
 * and total number of bytes read.  All deflate() input goes through
6100
 * this function so some applications may wish to modify it to avoid
6101
 * allocating a large strm->input buffer and copying from it.
6102
 * (See also flush_pending()).
6103
 */
6104
function read_buf(strm, buf, start, size) {
6105
  var len = strm.avail_in;
6106
6107
  if (len > size) { len = size; }
6108
  if (len === 0) { return 0; }
6109
6110
  strm.avail_in -= len;
6111
6112
  // zmemcpy(buf, strm->next_in, len);
6113
  utils.arraySet(buf, strm.input, strm.next_in, len, start);
6114
  if (strm.state.wrap === 1) {
6115
    strm.adler = adler32(strm.adler, buf, len, start);
6116
  }
6117
6118
  else if (strm.state.wrap === 2) {
6119
    strm.adler = crc32(strm.adler, buf, len, start);
6120
  }
6121
6122
  strm.next_in += len;
6123
  strm.total_in += len;
6124
6125
  return len;
6126
}
6127
6128
6129
/* ===========================================================================
6130
 * Set match_start to the longest match starting at the given string and
6131
 * return its length. Matches shorter or equal to prev_length are discarded,
6132
 * in which case the result is equal to prev_length and match_start is
6133
 * garbage.
6134
 * IN assertions: cur_match is the head of the hash chain for the current
6135
 *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
6136
 * OUT assertion: the match length is not greater than s->lookahead.
6137
 */
6138
function longest_match(s, cur_match) {
6139
  var chain_length = s.max_chain_length;      /* max hash chain length */
6140
  var scan = s.strstart; /* current string */
6141
  var match;                       /* matched string */
6142
  var len;                           /* length of current match */
6143
  var best_len = s.prev_length;              /* best match length so far */
6144
  var nice_match = s.nice_match;             /* stop if match long enough */
6145
  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
6146
      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
6147
6148
  var _win = s.window; // shortcut
6149
6150
  var wmask = s.w_mask;
6151
  var prev  = s.prev;
6152
6153
  /* Stop when cur_match becomes <= limit. To simplify the code,
6154
   * we prevent matches with the string of window index 0.
6155
   */
6156
6157
  var strend = s.strstart + MAX_MATCH;
6158
  var scan_end1  = _win[scan + best_len - 1];
6159
  var scan_end   = _win[scan + best_len];
6160
6161
  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
6162
   * It is easy to get rid of this optimization if necessary.
6163
   */
6164
  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
6165
6166
  /* Do not waste too much time if we already have a good match: */
6167
  if (s.prev_length >= s.good_match) {
6168
    chain_length >>= 2;
6169
  }
6170
  /* Do not look for matches beyond the end of the input. This is necessary
6171
   * to make deflate deterministic.
6172
   */
6173
  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
6174
6175
  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
6176
6177
  do {
6178
    // Assert(cur_match < s->strstart, "no future");
6179
    match = cur_match;
6180
6181
    /* Skip to next match if the match length cannot increase
6182
     * or if the match length is less than 2.  Note that the checks below
6183
     * for insufficient lookahead only occur occasionally for performance
6184
     * reasons.  Therefore uninitialized memory will be accessed, and
6185
     * conditional jumps will be made that depend on those values.
6186
     * However the length of the match is limited to the lookahead, so
6187
     * the output of deflate is not affected by the uninitialized values.
6188
     */
6189
6190
    if (_win[match + best_len]     !== scan_end  ||
6191
        _win[match + best_len - 1] !== scan_end1 ||
6192
        _win[match]                !== _win[scan] ||
6193
        _win[++match]              !== _win[scan + 1]) {
6194
      continue;
6195
    }
6196
6197
    /* The check at best_len-1 can be removed because it will be made
6198
     * again later. (This heuristic is not always a win.)
6199
     * It is not necessary to compare scan[2] and match[2] since they
6200
     * are always equal when the other bytes match, given that
6201
     * the hash keys are equal and that HASH_BITS >= 8.
6202
     */
6203
    scan += 2;
6204
    match++;
6205
    // Assert(*scan == *match, "match[2]?");
6206
6207
    /* We check for insufficient lookahead only every 8th comparison;
6208
     * the 256th check will be made at strstart+258.
6209
     */
6210
    do {
6211
      /*jshint noempty:false*/
6212
    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
6213
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
6214
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
6215
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
6216
             scan < strend);
6217
6218
    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
6219
6220
    len = MAX_MATCH - (strend - scan);
6221
    scan = strend - MAX_MATCH;
6222
6223
    if (len > best_len) {
6224
      s.match_start = cur_match;
6225
      best_len = len;
6226
      if (len >= nice_match) {
6227
        break;
6228
      }
6229
      scan_end1  = _win[scan + best_len - 1];
6230
      scan_end   = _win[scan + best_len];
6231
    }
6232
  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
6233
6234
  if (best_len <= s.lookahead) {
6235
    return best_len;
6236
  }
6237
  return s.lookahead;
6238
}
6239
6240
6241
/* ===========================================================================
6242
 * Fill the window when the lookahead becomes insufficient.
6243
 * Updates strstart and lookahead.
6244
 *
6245
 * IN assertion: lookahead < MIN_LOOKAHEAD
6246
 * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
6247
 *    At least one byte has been read, or avail_in == 0; reads are
6248
 *    performed for at least two bytes (required for the zip translate_eol
6249
 *    option -- not supported here).
6250
 */
6251
function fill_window(s) {
6252
  var _w_size = s.w_size;
6253
  var p, n, m, more, str;
6254
6255
  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
6256
6257
  do {
6258
    more = s.window_size - s.lookahead - s.strstart;
6259
6260
    // JS ints have 32 bit, block below not needed
6261
    /* Deal with !@#$% 64K limit: */
6262
    //if (sizeof(int) <= 2) {
6263
    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
6264
    //        more = wsize;
6265
    //
6266
    //  } else if (more == (unsigned)(-1)) {
6267
    //        /* Very unlikely, but possible on 16 bit machine if
6268
    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
6269
    //         */
6270
    //        more--;
6271
    //    }
6272
    //}
6273
6274
6275
    /* If the window is almost full and there is insufficient lookahead,
6276
     * move the upper half to the lower one to make room in the upper half.
6277
     */
6278
    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
6279
6280
      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
6281
      s.match_start -= _w_size;
6282
      s.strstart -= _w_size;
6283
      /* we now have strstart >= MAX_DIST */
6284
      s.block_start -= _w_size;
6285
6286
      /* Slide the hash table (could be avoided with 32 bit values
6287
       at the expense of memory usage). We slide even when level == 0
6288
       to keep the hash table consistent if we switch back to level > 0
6289
       later. (Using level 0 permanently is not an optimal usage of
6290
       zlib, so we don't care about this pathological case.)
6291
       */
6292
6293
      n = s.hash_size;
6294
      p = n;
6295
      do {
6296
        m = s.head[--p];
6297
        s.head[p] = (m >= _w_size ? m - _w_size : 0);
6298
      } while (--n);
6299
6300
      n = _w_size;
6301
      p = n;
6302
      do {
6303
        m = s.prev[--p];
6304
        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
6305
        /* If n is not on any hash chain, prev[n] is garbage but
6306
         * its value will never be used.
6307
         */
6308
      } while (--n);
6309
6310
      more += _w_size;
6311
    }
6312
    if (s.strm.avail_in === 0) {
6313
      break;
6314
    }
6315
6316
    /* If there was no sliding:
6317
     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
6318
     *    more == window_size - lookahead - strstart
6319
     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
6320
     * => more >= window_size - 2*WSIZE + 2
6321
     * In the BIG_MEM or MMAP case (not yet supported),
6322
     *   window_size == input_size + MIN_LOOKAHEAD  &&
6323
     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
6324
     * Otherwise, window_size == 2*WSIZE so more >= 2.
6325
     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
6326
     */
6327
    //Assert(more >= 2, "more < 2");
6328
    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
6329
    s.lookahead += n;
6330
6331
    /* Initialize the hash value now that we have some input: */
6332
    if (s.lookahead + s.insert >= MIN_MATCH) {
6333
      str = s.strstart - s.insert;
6334
      s.ins_h = s.window[str];
6335
6336
      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
6337
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
6338
//#if MIN_MATCH != 3
6339
//        Call update_hash() MIN_MATCH-3 more times
6340
//#endif
6341
      while (s.insert) {
6342
        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
6343
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
6344
6345
        s.prev[str & s.w_mask] = s.head[s.ins_h];
6346
        s.head[s.ins_h] = str;
6347
        str++;
6348
        s.insert--;
6349
        if (s.lookahead + s.insert < MIN_MATCH) {
6350
          break;
6351
        }
6352
      }
6353
    }
6354
    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
6355
     * but this is not important since only literal bytes will be emitted.
6356
     */
6357
6358
  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
6359
6360
  /* If the WIN_INIT bytes after the end of the current data have never been
6361
   * written, then zero those bytes in order to avoid memory check reports of
6362
   * the use of uninitialized (or uninitialised as Julian writes) bytes by
6363
   * the longest match routines.  Update the high water mark for the next
6364
   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
6365
   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
6366
   */
6367
//  if (s.high_water < s.window_size) {
6368
//    var curr = s.strstart + s.lookahead;
6369
//    var init = 0;
6370
//
6371
//    if (s.high_water < curr) {
6372
//      /* Previous high water mark below current data -- zero WIN_INIT
6373
//       * bytes or up to end of window, whichever is less.
6374
//       */
6375
//      init = s.window_size - curr;
6376
//      if (init > WIN_INIT)
6377
//        init = WIN_INIT;
6378
//      zmemzero(s->window + curr, (unsigned)init);
6379
//      s->high_water = curr + init;
6380
//    }
6381
//    else if (s->high_water < (ulg)curr + WIN_INIT) {
6382
//      /* High water mark at or above current data, but below current data
6383
//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
6384
//       * to end of window, whichever is less.
6385
//       */
6386
//      init = (ulg)curr + WIN_INIT - s->high_water;
6387
//      if (init > s->window_size - s->high_water)
6388
//        init = s->window_size - s->high_water;
6389
//      zmemzero(s->window + s->high_water, (unsigned)init);
6390
//      s->high_water += init;
6391
//    }
6392
//  }
6393
//
6394
//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
6395
//    "not enough room for search");
6396
}
6397
6398
/* ===========================================================================
6399
 * Copy without compression as much as possible from the input stream, return
6400
 * the current block state.
6401
 * This function does not insert new strings in the dictionary since
6402
 * uncompressible data is probably not useful. This function is used
6403
 * only for the level=0 compression option.
6404
 * NOTE: this function should be optimized to avoid extra copying from
6405
 * window to pending_buf.
6406
 */
6407
function deflate_stored(s, flush) {
6408
  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
6409
   * to pending_buf_size, and each stored block has a 5 byte header:
6410
   */
6411
  var max_block_size = 0xffff;
6412
6413
  if (max_block_size > s.pending_buf_size - 5) {
6414
    max_block_size = s.pending_buf_size - 5;
6415
  }
6416
6417
  /* Copy as much as possible from input to output: */
6418
  for (;;) {
6419
    /* Fill the window as much as possible: */
6420
    if (s.lookahead <= 1) {
6421
6422
      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
6423
      //  s->block_start >= (long)s->w_size, "slide too late");
6424
//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
6425
//        s.block_start >= s.w_size)) {
6426
//        throw  new Error("slide too late");
6427
//      }
6428
6429
      fill_window(s);
6430
      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
6431
        return BS_NEED_MORE;
6432
      }
6433
6434
      if (s.lookahead === 0) {
6435
        break;
6436
      }
6437
      /* flush the current block */
6438
    }
6439
    //Assert(s->block_start >= 0L, "block gone");
6440
//    if (s.block_start < 0) throw new Error("block gone");
6441
6442
    s.strstart += s.lookahead;
6443
    s.lookahead = 0;
6444
6445
    /* Emit a stored block if pending_buf will be full: */
6446
    var max_start = s.block_start + max_block_size;
6447
6448
    if (s.strstart === 0 || s.strstart >= max_start) {
6449
      /* strstart == 0 is possible when wraparound on 16-bit machine */
6450
      s.lookahead = s.strstart - max_start;
6451
      s.strstart = max_start;
6452
      /*** FLUSH_BLOCK(s, 0); ***/
6453
      flush_block_only(s, false);
6454
      if (s.strm.avail_out === 0) {
6455
        return BS_NEED_MORE;
6456
      }
6457
      /***/
6458
6459
6460
    }
6461
    /* Flush if we may have to slide, otherwise block_start may become
6462
     * negative and the data will be gone:
6463
     */
6464
    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
6465
      /*** FLUSH_BLOCK(s, 0); ***/
6466
      flush_block_only(s, false);
6467
      if (s.strm.avail_out === 0) {
6468
        return BS_NEED_MORE;
6469
      }
6470
      /***/
6471
    }
6472
  }
6473
6474
  s.insert = 0;
6475
6476
  if (flush === Z_FINISH) {
6477
    /*** FLUSH_BLOCK(s, 1); ***/
6478
    flush_block_only(s, true);
6479
    if (s.strm.avail_out === 0) {
6480
      return BS_FINISH_STARTED;
6481
    }
6482
    /***/
6483
    return BS_FINISH_DONE;
6484
  }
6485
6486
  if (s.strstart > s.block_start) {
6487
    /*** FLUSH_BLOCK(s, 0); ***/
6488
    flush_block_only(s, false);
6489
    if (s.strm.avail_out === 0) {
6490
      return BS_NEED_MORE;
6491
    }
6492
    /***/
6493
  }
6494
6495
  return BS_NEED_MORE;
6496
}
6497
6498
/* ===========================================================================
6499
 * Compress as much as possible from the input stream, return the current
6500
 * block state.
6501
 * This function does not perform lazy evaluation of matches and inserts
6502
 * new strings in the dictionary only for unmatched strings or for short
6503
 * matches. It is used only for the fast compression options.
6504
 */
6505
function deflate_fast(s, flush) {
6506
  var hash_head;        /* head of the hash chain */
6507
  var bflush;           /* set if current block must be flushed */
6508
6509
  for (;;) {
6510
    /* Make sure that we always have enough lookahead, except
6511
     * at the end of the input file. We need MAX_MATCH bytes
6512
     * for the next match, plus MIN_MATCH bytes to insert the
6513
     * string following the next match.
6514
     */
6515
    if (s.lookahead < MIN_LOOKAHEAD) {
6516
      fill_window(s);
6517
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
6518
        return BS_NEED_MORE;
6519
      }
6520
      if (s.lookahead === 0) {
6521
        break; /* flush the current block */
6522
      }
6523
    }
6524
6525
    /* Insert the string window[strstart .. strstart+2] in the
6526
     * dictionary, and set hash_head to the head of the hash chain:
6527
     */
6528
    hash_head = 0/*NIL*/;
6529
    if (s.lookahead >= MIN_MATCH) {
6530
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
6531
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
6532
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
6533
      s.head[s.ins_h] = s.strstart;
6534
      /***/
6535
    }
6536
6537
    /* Find the longest match, discarding those <= prev_length.
6538
     * At this point we have always match_length < MIN_MATCH
6539
     */
6540
    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
6541
      /* To simplify the code, we prevent matches with the string
6542
       * of window index 0 (in particular we have to avoid a match
6543
       * of the string with itself at the start of the input file).
6544
       */
6545
      s.match_length = longest_match(s, hash_head);
6546
      /* longest_match() sets match_start */
6547
    }
6548
    if (s.match_length >= MIN_MATCH) {
6549
      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
6550
6551
      /*** _tr_tally_dist(s, s.strstart - s.match_start,
6552
                     s.match_length - MIN_MATCH, bflush); ***/
6553
      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
6554
6555
      s.lookahead -= s.match_length;
6556
6557
      /* Insert new strings in the hash table only if the match length
6558
       * is not too large. This saves time but degrades compression.
6559
       */
6560
      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
6561
        s.match_length--; /* string at strstart already in table */
6562
        do {
6563
          s.strstart++;
6564
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
6565
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
6566
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
6567
          s.head[s.ins_h] = s.strstart;
6568
          /***/
6569
          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
6570
           * always MIN_MATCH bytes ahead.
6571
           */
6572
        } while (--s.match_length !== 0);
6573
        s.strstart++;
6574
      } else
6575
      {
6576
        s.strstart += s.match_length;
6577
        s.match_length = 0;
6578
        s.ins_h = s.window[s.strstart];
6579
        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
6580
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
6581
6582
//#if MIN_MATCH != 3
6583
//                Call UPDATE_HASH() MIN_MATCH-3 more times
6584
//#endif
6585
        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
6586
         * matter since it will be recomputed at next deflate call.
6587
         */
6588
      }
6589
    } else {
6590
      /* No match, output a literal byte */
6591
      //Tracevv((stderr,"%c", s.window[s.strstart]));
6592
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
6593
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
6594
6595
      s.lookahead--;
6596
      s.strstart++;
6597
    }
6598
    if (bflush) {
6599
      /*** FLUSH_BLOCK(s, 0); ***/
6600
      flush_block_only(s, false);
6601
      if (s.strm.avail_out === 0) {
6602
        return BS_NEED_MORE;
6603
      }
6604
      /***/
6605
    }
6606
  }
6607
  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
6608
  if (flush === Z_FINISH) {
6609
    /*** FLUSH_BLOCK(s, 1); ***/
6610
    flush_block_only(s, true);
6611
    if (s.strm.avail_out === 0) {
6612
      return BS_FINISH_STARTED;
6613
    }
6614
    /***/
6615
    return BS_FINISH_DONE;
6616
  }
6617
  if (s.last_lit) {
6618
    /*** FLUSH_BLOCK(s, 0); ***/
6619
    flush_block_only(s, false);
6620
    if (s.strm.avail_out === 0) {
6621
      return BS_NEED_MORE;
6622
    }
6623
    /***/
6624
  }
6625
  return BS_BLOCK_DONE;
6626
}
6627
6628
/* ===========================================================================
6629
 * Same as above, but achieves better compression. We use a lazy
6630
 * evaluation for matches: a match is finally adopted only if there is
6631
 * no better match at the next window position.
6632
 */
6633
function deflate_slow(s, flush) {
6634
  var hash_head;          /* head of hash chain */
6635
  var bflush;              /* set if current block must be flushed */
6636
6637
  var max_insert;
6638
6639
  /* Process the input block. */
6640
  for (;;) {
6641
    /* Make sure that we always have enough lookahead, except
6642
     * at the end of the input file. We need MAX_MATCH bytes
6643
     * for the next match, plus MIN_MATCH bytes to insert the
6644
     * string following the next match.
6645
     */
6646
    if (s.lookahead < MIN_LOOKAHEAD) {
6647
      fill_window(s);
6648
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
6649
        return BS_NEED_MORE;
6650
      }
6651
      if (s.lookahead === 0) { break; } /* flush the current block */
6652
    }
6653
6654
    /* Insert the string window[strstart .. strstart+2] in the
6655
     * dictionary, and set hash_head to the head of the hash chain:
6656
     */
6657
    hash_head = 0/*NIL*/;
6658
    if (s.lookahead >= MIN_MATCH) {
6659
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
6660
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
6661
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
6662
      s.head[s.ins_h] = s.strstart;
6663
      /***/
6664
    }
6665
6666
    /* Find the longest match, discarding those <= prev_length.
6667
     */
6668
    s.prev_length = s.match_length;
6669
    s.prev_match = s.match_start;
6670
    s.match_length = MIN_MATCH - 1;
6671
6672
    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
6673
        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
6674
      /* To simplify the code, we prevent matches with the string
6675
       * of window index 0 (in particular we have to avoid a match
6676
       * of the string with itself at the start of the input file).
6677
       */
6678
      s.match_length = longest_match(s, hash_head);
6679
      /* longest_match() sets match_start */
6680
6681
      if (s.match_length <= 5 &&
6682
         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
6683
6684
        /* If prev_match is also MIN_MATCH, match_start is garbage
6685
         * but we will ignore the current match anyway.
6686
         */
6687
        s.match_length = MIN_MATCH - 1;
6688
      }
6689
    }
6690
    /* If there was a match at the previous step and the current
6691
     * match is not better, output the previous match:
6692
     */
6693
    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
6694
      max_insert = s.strstart + s.lookahead - MIN_MATCH;
6695
      /* Do not insert strings in hash table beyond this. */
6696
6697
      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
6698
6699
      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
6700
                     s.prev_length - MIN_MATCH, bflush);***/
6701
      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
6702
      /* Insert in hash table all strings up to the end of the match.
6703
       * strstart-1 and strstart are already inserted. If there is not
6704
       * enough lookahead, the last two strings are not inserted in
6705
       * the hash table.
6706
       */
6707
      s.lookahead -= s.prev_length - 1;
6708
      s.prev_length -= 2;
6709
      do {
6710
        if (++s.strstart <= max_insert) {
6711
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
6712
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
6713
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
6714
          s.head[s.ins_h] = s.strstart;
6715
          /***/
6716
        }
6717
      } while (--s.prev_length !== 0);
6718
      s.match_available = 0;
6719
      s.match_length = MIN_MATCH - 1;
6720
      s.strstart++;
6721
6722
      if (bflush) {
6723
        /*** FLUSH_BLOCK(s, 0); ***/
6724
        flush_block_only(s, false);
6725
        if (s.strm.avail_out === 0) {
6726
          return BS_NEED_MORE;
6727
        }
6728
        /***/
6729
      }
6730
6731
    } else if (s.match_available) {
6732
      /* If there was no match at the previous position, output a
6733
       * single literal. If there was a match but the current match
6734
       * is longer, truncate the previous match to a single literal.
6735
       */
6736
      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
6737
      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
6738
      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
6739
6740
      if (bflush) {
6741
        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
6742
        flush_block_only(s, false);
6743
        /***/
6744
      }
6745
      s.strstart++;
6746
      s.lookahead--;
6747
      if (s.strm.avail_out === 0) {
6748
        return BS_NEED_MORE;
6749
      }
6750
    } else {
6751
      /* There is no previous match to compare with, wait for
6752
       * the next step to decide.
6753
       */
6754
      s.match_available = 1;
6755
      s.strstart++;
6756
      s.lookahead--;
6757
    }
6758
  }
6759
  //Assert (flush != Z_NO_FLUSH, "no flush?");
6760
  if (s.match_available) {
6761
    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
6762
    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
6763
    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
6764
6765
    s.match_available = 0;
6766
  }
6767
  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
6768
  if (flush === Z_FINISH) {
6769
    /*** FLUSH_BLOCK(s, 1); ***/
6770
    flush_block_only(s, true);
6771
    if (s.strm.avail_out === 0) {
6772
      return BS_FINISH_STARTED;
6773
    }
6774
    /***/
6775
    return BS_FINISH_DONE;
6776
  }
6777
  if (s.last_lit) {
6778
    /*** FLUSH_BLOCK(s, 0); ***/
6779
    flush_block_only(s, false);
6780
    if (s.strm.avail_out === 0) {
6781
      return BS_NEED_MORE;
6782
    }
6783
    /***/
6784
  }
6785
6786
  return BS_BLOCK_DONE;
6787
}
6788
6789
6790
/* ===========================================================================
6791
 * For Z_RLE, simply look for runs of bytes, generate matches only of distance
6792
 * one.  Do not maintain a hash table.  (It will be regenerated if this run of
6793
 * deflate switches away from Z_RLE.)
6794
 */
6795
function deflate_rle(s, flush) {
6796
  var bflush;            /* set if current block must be flushed */
6797
  var prev;              /* byte at distance one to match */
6798
  var scan, strend;      /* scan goes up to strend for length of run */
6799
6800
  var _win = s.window;
6801
6802
  for (;;) {
6803
    /* Make sure that we always have enough lookahead, except
6804
     * at the end of the input file. We need MAX_MATCH bytes
6805
     * for the longest run, plus one for the unrolled loop.
6806
     */
6807
    if (s.lookahead <= MAX_MATCH) {
6808
      fill_window(s);
6809
      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
6810
        return BS_NEED_MORE;
6811
      }
6812
      if (s.lookahead === 0) { break; } /* flush the current block */
6813
    }
6814
6815
    /* See how many times the previous byte repeats */
6816
    s.match_length = 0;
6817
    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
6818
      scan = s.strstart - 1;
6819
      prev = _win[scan];
6820
      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
6821
        strend = s.strstart + MAX_MATCH;
6822
        do {
6823
          /*jshint noempty:false*/
6824
        } while (prev === _win[++scan] && prev === _win[++scan] &&
6825
                 prev === _win[++scan] && prev === _win[++scan] &&
6826
                 prev === _win[++scan] && prev === _win[++scan] &&
6827
                 prev === _win[++scan] && prev === _win[++scan] &&
6828
                 scan < strend);
6829
        s.match_length = MAX_MATCH - (strend - scan);
6830
        if (s.match_length > s.lookahead) {
6831
          s.match_length = s.lookahead;
6832
        }
6833
      }
6834
      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
6835
    }
6836
6837
    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
6838
    if (s.match_length >= MIN_MATCH) {
6839
      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
6840
6841
      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
6842
      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
6843
6844
      s.lookahead -= s.match_length;
6845
      s.strstart += s.match_length;
6846
      s.match_length = 0;
6847
    } else {
6848
      /* No match, output a literal byte */
6849
      //Tracevv((stderr,"%c", s->window[s->strstart]));
6850
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
6851
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
6852
6853
      s.lookahead--;
6854
      s.strstart++;
6855
    }
6856
    if (bflush) {
6857
      /*** FLUSH_BLOCK(s, 0); ***/
6858
      flush_block_only(s, false);
6859
      if (s.strm.avail_out === 0) {
6860
        return BS_NEED_MORE;
6861
      }
6862
      /***/
6863
    }
6864
  }
6865
  s.insert = 0;
6866
  if (flush === Z_FINISH) {
6867
    /*** FLUSH_BLOCK(s, 1); ***/
6868
    flush_block_only(s, true);
6869
    if (s.strm.avail_out === 0) {
6870
      return BS_FINISH_STARTED;
6871
    }
6872
    /***/
6873
    return BS_FINISH_DONE;
6874
  }
6875
  if (s.last_lit) {
6876
    /*** FLUSH_BLOCK(s, 0); ***/
6877
    flush_block_only(s, false);
6878
    if (s.strm.avail_out === 0) {
6879
      return BS_NEED_MORE;
6880
    }
6881
    /***/
6882
  }
6883
  return BS_BLOCK_DONE;
6884
}
6885
6886
/* ===========================================================================
6887
 * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
6888
 * (It will be regenerated if this run of deflate switches away from Huffman.)
6889
 */
6890
function deflate_huff(s, flush) {
6891
  var bflush;             /* set if current block must be flushed */
6892
6893
  for (;;) {
6894
    /* Make sure that we have a literal to write. */
6895
    if (s.lookahead === 0) {
6896
      fill_window(s);
6897
      if (s.lookahead === 0) {
6898
        if (flush === Z_NO_FLUSH) {
6899
          return BS_NEED_MORE;
6900
        }
6901
        break;      /* flush the current block */
6902
      }
6903
    }
6904
6905
    /* Output a literal byte */
6906
    s.match_length = 0;
6907
    //Tracevv((stderr,"%c", s->window[s->strstart]));
6908
    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
6909
    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
6910
    s.lookahead--;
6911
    s.strstart++;
6912
    if (bflush) {
6913
      /*** FLUSH_BLOCK(s, 0); ***/
6914
      flush_block_only(s, false);
6915
      if (s.strm.avail_out === 0) {
6916
        return BS_NEED_MORE;
6917
      }
6918
      /***/
6919
    }
6920
  }
6921
  s.insert = 0;
6922
  if (flush === Z_FINISH) {
6923
    /*** FLUSH_BLOCK(s, 1); ***/
6924
    flush_block_only(s, true);
6925
    if (s.strm.avail_out === 0) {
6926
      return BS_FINISH_STARTED;
6927
    }
6928
    /***/
6929
    return BS_FINISH_DONE;
6930
  }
6931
  if (s.last_lit) {
6932
    /*** FLUSH_BLOCK(s, 0); ***/
6933
    flush_block_only(s, false);
6934
    if (s.strm.avail_out === 0) {
6935
      return BS_NEED_MORE;
6936
    }
6937
    /***/
6938
  }
6939
  return BS_BLOCK_DONE;
6940
}
6941
6942
/* Values for max_lazy_match, good_match and max_chain_length, depending on
6943
 * the desired pack level (0..9). The values given below have been tuned to
6944
 * exclude worst case performance for pathological files. Better values may be
6945
 * found for specific files.
6946
 */
6947
function Config(good_length, max_lazy, nice_length, max_chain, func) {
6948
  this.good_length = good_length;
6949
  this.max_lazy = max_lazy;
6950
  this.nice_length = nice_length;
6951
  this.max_chain = max_chain;
6952
  this.func = func;
6953
}
6954
6955
var configuration_table;
6956
6957
configuration_table = [
6958
  /*      good lazy nice chain */
6959
  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
6960
  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
6961
  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
6962
  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
6963
6964
  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
6965
  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
6966
  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
6967
  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
6968
  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
6969
  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
6970
];
6971
6972
6973
/* ===========================================================================
6974
 * Initialize the "longest match" routines for a new zlib stream
6975
 */
6976
function lm_init(s) {
6977
  s.window_size = 2 * s.w_size;
6978
6979
  /*** CLEAR_HASH(s); ***/
6980
  zero(s.head); // Fill with NIL (= 0);
6981
6982
  /* Set the default configuration parameters:
6983
   */
6984
  s.max_lazy_match = configuration_table[s.level].max_lazy;
6985
  s.good_match = configuration_table[s.level].good_length;
6986
  s.nice_match = configuration_table[s.level].nice_length;
6987
  s.max_chain_length = configuration_table[s.level].max_chain;
6988
6989
  s.strstart = 0;
6990
  s.block_start = 0;
6991
  s.lookahead = 0;
6992
  s.insert = 0;
6993
  s.match_length = s.prev_length = MIN_MATCH - 1;
6994
  s.match_available = 0;
6995
  s.ins_h = 0;
6996
}
6997
6998
6999
function DeflateState() {
7000
  this.strm = null;            /* pointer back to this zlib stream */
7001
  this.status = 0;            /* as the name implies */
7002
  this.pending_buf = null;      /* output still pending */
7003
  this.pending_buf_size = 0;  /* size of pending_buf */
7004
  this.pending_out = 0;       /* next pending byte to output to the stream */
7005
  this.pending = 0;           /* nb of bytes in the pending buffer */
7006
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
7007
  this.gzhead = null;         /* gzip header information to write */
7008
  this.gzindex = 0;           /* where in extra, name, or comment */
7009
  this.method = Z_DEFLATED; /* can only be DEFLATED */
7010
  this.last_flush = -1;   /* value of flush param for previous deflate call */
7011
7012
  this.w_size = 0;  /* LZ77 window size (32K by default) */
7013
  this.w_bits = 0;  /* log2(w_size)  (8..16) */
7014
  this.w_mask = 0;  /* w_size - 1 */
7015
7016
  this.window = null;
7017
  /* Sliding window. Input bytes are read into the second half of the window,
7018
   * and move to the first half later to keep a dictionary of at least wSize
7019
   * bytes. With this organization, matches are limited to a distance of
7020
   * wSize-MAX_MATCH bytes, but this ensures that IO is always
7021
   * performed with a length multiple of the block size.
7022
   */
7023
7024
  this.window_size = 0;
7025
  /* Actual size of window: 2*wSize, except when the user input buffer
7026
   * is directly used as sliding window.
7027
   */
7028
7029
  this.prev = null;
7030
  /* Link to older string with same hash index. To limit the size of this
7031
   * array to 64K, this link is maintained only for the last 32K strings.
7032
   * An index in this array is thus a window index modulo 32K.
7033
   */
7034
7035
  this.head = null;   /* Heads of the hash chains or NIL. */
7036
7037
  this.ins_h = 0;       /* hash index of string to be inserted */
7038
  this.hash_size = 0;   /* number of elements in hash table */
7039
  this.hash_bits = 0;   /* log2(hash_size) */
7040
  this.hash_mask = 0;   /* hash_size-1 */
7041
7042
  this.hash_shift = 0;
7043
  /* Number of bits by which ins_h must be shifted at each input
7044
   * step. It must be such that after MIN_MATCH steps, the oldest
7045
   * byte no longer takes part in the hash key, that is:
7046
   *   hash_shift * MIN_MATCH >= hash_bits
7047
   */
7048
7049
  this.block_start = 0;
7050
  /* Window position at the beginning of the current output block. Gets
7051
   * negative when the window is moved backwards.
7052
   */
7053
7054
  this.match_length = 0;      /* length of best match */
7055
  this.prev_match = 0;        /* previous match */
7056
  this.match_available = 0;   /* set if previous match exists */
7057
  this.strstart = 0;          /* start of string to insert */
7058
  this.match_start = 0;       /* start of matching string */
7059
  this.lookahead = 0;         /* number of valid bytes ahead in window */
7060
7061
  this.prev_length = 0;
7062
  /* Length of the best match at previous step. Matches not greater than this
7063
   * are discarded. This is used in the lazy match evaluation.
7064
   */
7065
7066
  this.max_chain_length = 0;
7067
  /* To speed up deflation, hash chains are never searched beyond this
7068
   * length.  A higher limit improves compression ratio but degrades the
7069
   * speed.
7070
   */
7071
7072
  this.max_lazy_match = 0;
7073
  /* Attempt to find a better match only when the current match is strictly
7074
   * smaller than this value. This mechanism is used only for compression
7075
   * levels >= 4.
7076
   */
7077
  // That's alias to max_lazy_match, don't use directly
7078
  //this.max_insert_length = 0;
7079
  /* Insert new strings in the hash table only if the match length is not
7080
   * greater than this length. This saves time but degrades compression.
7081
   * max_insert_length is used only for compression levels <= 3.
7082
   */
7083
7084
  this.level = 0;     /* compression level (1..9) */
7085
  this.strategy = 0;  /* favor or force Huffman coding*/
7086
7087
  this.good_match = 0;
7088
  /* Use a faster search when the previous match is longer than this */
7089
7090
  this.nice_match = 0; /* Stop searching when current match exceeds this */
7091
7092
              /* used by trees.c: */
7093
7094
  /* Didn't use ct_data typedef below to suppress compiler warning */
7095
7096
  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
7097
  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
7098
  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
7099
7100
  // Use flat array of DOUBLE size, with interleaved fata,
7101
  // because JS does not support effective
7102
  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
7103
  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
7104
  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
7105
  zero(this.dyn_ltree);
7106
  zero(this.dyn_dtree);
7107
  zero(this.bl_tree);
7108
7109
  this.l_desc   = null;         /* desc. for literal tree */
7110
  this.d_desc   = null;         /* desc. for distance tree */
7111
  this.bl_desc  = null;         /* desc. for bit length tree */
7112
7113
  //ush bl_count[MAX_BITS+1];
7114
  this.bl_count = new utils.Buf16(MAX_BITS + 1);
7115
  /* number of codes at each bit length for an optimal tree */
7116
7117
  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
7118
  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
7119
  zero(this.heap);
7120
7121
  this.heap_len = 0;               /* number of elements in the heap */
7122
  this.heap_max = 0;               /* element of largest frequency */
7123
  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
7124
   * The same heap array is used to build all trees.
7125
   */
7126
7127
  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
7128
  zero(this.depth);
7129
  /* Depth of each subtree used as tie breaker for trees of equal frequency
7130
   */
7131
7132
  this.l_buf = 0;          /* buffer index for literals or lengths */
7133
7134
  this.lit_bufsize = 0;
7135
  /* Size of match buffer for literals/lengths.  There are 4 reasons for
7136
   * limiting lit_bufsize to 64K:
7137
   *   - frequencies can be kept in 16 bit counters
7138
   *   - if compression is not successful for the first block, all input
7139
   *     data is still in the window so we can still emit a stored block even
7140
   *     when input comes from standard input.  (This can also be done for
7141
   *     all blocks if lit_bufsize is not greater than 32K.)
7142
   *   - if compression is not successful for a file smaller than 64K, we can
7143
   *     even emit a stored file instead of a stored block (saving 5 bytes).
7144
   *     This is applicable only for zip (not gzip or zlib).
7145
   *   - creating new Huffman trees less frequently may not provide fast
7146
   *     adaptation to changes in the input data statistics. (Take for
7147
   *     example a binary file with poorly compressible code followed by
7148
   *     a highly compressible string table.) Smaller buffer sizes give
7149
   *     fast adaptation but have of course the overhead of transmitting
7150
   *     trees more frequently.
7151
   *   - I can't count above 4
7152
   */
7153
7154
  this.last_lit = 0;      /* running index in l_buf */
7155
7156
  this.d_buf = 0;
7157
  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
7158
   * the same number of elements. To use different lengths, an extra flag
7159
   * array would be necessary.
7160
   */
7161
7162
  this.opt_len = 0;       /* bit length of current block with optimal trees */
7163
  this.static_len = 0;    /* bit length of current block with static trees */
7164
  this.matches = 0;       /* number of string matches in current block */
7165
  this.insert = 0;        /* bytes at end of window left to insert */
7166
7167
7168
  this.bi_buf = 0;
7169
  /* Output buffer. bits are inserted starting at the bottom (least
7170
   * significant bits).
7171
   */
7172
  this.bi_valid = 0;
7173
  /* Number of valid bits in bi_buf.  All bits above the last valid bit
7174
   * are always zero.
7175
   */
7176
7177
  // Used for window memory init. We safely ignore it for JS. That makes
7178
  // sense only for pointers and memory check tools.
7179
  //this.high_water = 0;
7180
  /* High water mark offset in window for initialized bytes -- bytes above
7181
   * this are set to zero in order to avoid memory check warnings when
7182
   * longest match routines access bytes past the input.  This is then
7183
   * updated to the new high water mark.
7184
   */
7185
}
7186
7187
7188
function deflateResetKeep(strm) {
7189
  var s;
7190
7191
  if (!strm || !strm.state) {
7192
    return err(strm, Z_STREAM_ERROR);
7193
  }
7194
7195
  strm.total_in = strm.total_out = 0;
7196
  strm.data_type = Z_UNKNOWN;
7197
7198
  s = strm.state;
7199
  s.pending = 0;
7200
  s.pending_out = 0;
7201
7202
  if (s.wrap < 0) {
7203
    s.wrap = -s.wrap;
7204
    /* was made negative by deflate(..., Z_FINISH); */
7205
  }
7206
  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
7207
  strm.adler = (s.wrap === 2) ?
7208
    0  // crc32(0, Z_NULL, 0)
7209
  :
7210
    1; // adler32(0, Z_NULL, 0)
7211
  s.last_flush = Z_NO_FLUSH;
7212
  trees._tr_init(s);
7213
  return Z_OK;
7214
}
7215
7216
7217
function deflateReset(strm) {
7218
  var ret = deflateResetKeep(strm);
7219
  if (ret === Z_OK) {
7220
    lm_init(strm.state);
7221
  }
7222
  return ret;
7223
}
7224
7225
7226
function deflateSetHeader(strm, head) {
7227
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
7228
  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
7229
  strm.state.gzhead = head;
7230
  return Z_OK;
7231
}
7232
7233
7234
function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
7235
  if (!strm) { // === Z_NULL
7236
    return Z_STREAM_ERROR;
7237
  }
7238
  var wrap = 1;
7239
7240
  if (level === Z_DEFAULT_COMPRESSION) {
7241
    level = 6;
7242
  }
7243
7244
  if (windowBits < 0) { /* suppress zlib wrapper */
7245
    wrap = 0;
7246
    windowBits = -windowBits;
7247
  }
7248
7249
  else if (windowBits > 15) {
7250
    wrap = 2;           /* write gzip wrapper instead */
7251
    windowBits -= 16;
7252
  }
7253
7254
7255
  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
7256
    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
7257
    strategy < 0 || strategy > Z_FIXED) {
7258
    return err(strm, Z_STREAM_ERROR);
7259
  }
7260
7261
7262
  if (windowBits === 8) {
7263
    windowBits = 9;
7264
  }
7265
  /* until 256-byte window bug fixed */
7266
7267
  var s = new DeflateState();
7268
7269
  strm.state = s;
7270
  s.strm = strm;
7271
7272
  s.wrap = wrap;
7273
  s.gzhead = null;
7274
  s.w_bits = windowBits;
7275
  s.w_size = 1 << s.w_bits;
7276
  s.w_mask = s.w_size - 1;
7277
7278
  s.hash_bits = memLevel + 7;
7279
  s.hash_size = 1 << s.hash_bits;
7280
  s.hash_mask = s.hash_size - 1;
7281
  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
7282
7283
  s.window = new utils.Buf8(s.w_size * 2);
7284
  s.head = new utils.Buf16(s.hash_size);
7285
  s.prev = new utils.Buf16(s.w_size);
7286
7287
  // Don't need mem init magic for JS.
7288
  //s.high_water = 0;  /* nothing written to s->window yet */
7289
7290
  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
7291
7292
  s.pending_buf_size = s.lit_bufsize * 4;
7293
7294
  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
7295
  //s->pending_buf = (uchf *) overlay;
7296
  s.pending_buf = new utils.Buf8(s.pending_buf_size);
7297
7298
  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
7299
  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
7300
  s.d_buf = 1 * s.lit_bufsize;
7301
7302
  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
7303
  s.l_buf = (1 + 2) * s.lit_bufsize;
7304
7305
  s.level = level;
7306
  s.strategy = strategy;
7307
  s.method = method;
7308
7309
  return deflateReset(strm);
7310
}
7311
7312
function deflateInit(strm, level) {
7313
  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
7314
}
7315
7316
7317
function deflate(strm, flush) {
7318
  var old_flush, s;
7319
  var beg, val; // for gzip header write only
7320
7321
  if (!strm || !strm.state ||
7322
    flush > Z_BLOCK || flush < 0) {
7323
    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
7324
  }
7325
7326
  s = strm.state;
7327
7328
  if (!strm.output ||
7329
      (!strm.input && strm.avail_in !== 0) ||
7330
      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
7331
    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
7332
  }
7333
7334
  s.strm = strm; /* just in case */
7335
  old_flush = s.last_flush;
7336
  s.last_flush = flush;
7337
7338
  /* Write the header */
7339
  if (s.status === INIT_STATE) {
7340
7341
    if (s.wrap === 2) { // GZIP header
7342
      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
7343
      put_byte(s, 31);
7344
      put_byte(s, 139);
7345
      put_byte(s, 8);
7346
      if (!s.gzhead) { // s->gzhead == Z_NULL
7347
        put_byte(s, 0);
7348
        put_byte(s, 0);
7349
        put_byte(s, 0);
7350
        put_byte(s, 0);
7351
        put_byte(s, 0);
7352
        put_byte(s, s.level === 9 ? 2 :
7353
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
7354
                     4 : 0));
7355
        put_byte(s, OS_CODE);
7356
        s.status = BUSY_STATE;
7357
      }
7358
      else {
7359
        put_byte(s, (s.gzhead.text ? 1 : 0) +
7360
                    (s.gzhead.hcrc ? 2 : 0) +
7361
                    (!s.gzhead.extra ? 0 : 4) +
7362
                    (!s.gzhead.name ? 0 : 8) +
7363
                    (!s.gzhead.comment ? 0 : 16)
7364
                );
7365
        put_byte(s, s.gzhead.time & 0xff);
7366
        put_byte(s, (s.gzhead.time >> 8) & 0xff);
7367
        put_byte(s, (s.gzhead.time >> 16) & 0xff);
7368
        put_byte(s, (s.gzhead.time >> 24) & 0xff);
7369
        put_byte(s, s.level === 9 ? 2 :
7370
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
7371
                     4 : 0));
7372
        put_byte(s, s.gzhead.os & 0xff);
7373
        if (s.gzhead.extra && s.gzhead.extra.length) {
7374
          put_byte(s, s.gzhead.extra.length & 0xff);
7375
          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
7376
        }
7377
        if (s.gzhead.hcrc) {
7378
          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
7379
        }
7380
        s.gzindex = 0;
7381
        s.status = EXTRA_STATE;
7382
      }
7383
    }
7384
    else // DEFLATE header
7385
    {
7386
      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
7387
      var level_flags = -1;
7388
7389
      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
7390
        level_flags = 0;
7391
      } else if (s.level < 6) {
7392
        level_flags = 1;
7393
      } else if (s.level === 6) {
7394
        level_flags = 2;
7395
      } else {
7396
        level_flags = 3;
7397
      }
7398
      header |= (level_flags << 6);
7399
      if (s.strstart !== 0) { header |= PRESET_DICT; }
7400
      header += 31 - (header % 31);
7401
7402
      s.status = BUSY_STATE;
7403
      putShortMSB(s, header);
7404
7405
      /* Save the adler32 of the preset dictionary: */
7406
      if (s.strstart !== 0) {
7407
        putShortMSB(s, strm.adler >>> 16);
7408
        putShortMSB(s, strm.adler & 0xffff);
7409
      }
7410
      strm.adler = 1; // adler32(0L, Z_NULL, 0);
7411
    }
7412
  }
7413
7414
//#ifdef GZIP
7415
  if (s.status === EXTRA_STATE) {
7416
    if (s.gzhead.extra/* != Z_NULL*/) {
7417
      beg = s.pending;  /* start of bytes to update crc */
7418
7419
      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
7420
        if (s.pending === s.pending_buf_size) {
7421
          if (s.gzhead.hcrc && s.pending > beg) {
7422
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
7423
          }
7424
          flush_pending(strm);
7425
          beg = s.pending;
7426
          if (s.pending === s.pending_buf_size) {
7427
            break;
7428
          }
7429
        }
7430
        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
7431
        s.gzindex++;
7432
      }
7433
      if (s.gzhead.hcrc && s.pending > beg) {
7434
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
7435
      }
7436
      if (s.gzindex === s.gzhead.extra.length) {
7437
        s.gzindex = 0;
7438
        s.status = NAME_STATE;
7439
      }
7440
    }
7441
    else {
7442
      s.status = NAME_STATE;
7443
    }
7444
  }
7445
  if (s.status === NAME_STATE) {
7446
    if (s.gzhead.name/* != Z_NULL*/) {
7447
      beg = s.pending;  /* start of bytes to update crc */
7448
      //int val;
7449
7450
      do {
7451
        if (s.pending === s.pending_buf_size) {
7452
          if (s.gzhead.hcrc && s.pending > beg) {
7453
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
7454
          }
7455
          flush_pending(strm);
7456
          beg = s.pending;
7457
          if (s.pending === s.pending_buf_size) {
7458
            val = 1;
7459
            break;
7460
          }
7461
        }
7462
        // JS specific: little magic to add zero terminator to end of string
7463
        if (s.gzindex < s.gzhead.name.length) {
7464
          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
7465
        } else {
7466
          val = 0;
7467
        }
7468
        put_byte(s, val);
7469
      } while (val !== 0);
7470
7471
      if (s.gzhead.hcrc && s.pending > beg) {
7472
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
7473
      }
7474
      if (val === 0) {
7475
        s.gzindex = 0;
7476
        s.status = COMMENT_STATE;
7477
      }
7478
    }
7479
    else {
7480
      s.status = COMMENT_STATE;
7481
    }
7482
  }
7483
  if (s.status === COMMENT_STATE) {
7484
    if (s.gzhead.comment/* != Z_NULL*/) {
7485
      beg = s.pending;  /* start of bytes to update crc */
7486
      //int val;
7487
7488
      do {
7489
        if (s.pending === s.pending_buf_size) {
7490
          if (s.gzhead.hcrc && s.pending > beg) {
7491
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
7492
          }
7493
          flush_pending(strm);
7494
          beg = s.pending;
7495
          if (s.pending === s.pending_buf_size) {
7496
            val = 1;
7497
            break;
7498
          }
7499
        }
7500
        // JS specific: little magic to add zero terminator to end of string
7501
        if (s.gzindex < s.gzhead.comment.length) {
7502
          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
7503
        } else {
7504
          val = 0;
7505
        }
7506
        put_byte(s, val);
7507
      } while (val !== 0);
7508
7509
      if (s.gzhead.hcrc && s.pending > beg) {
7510
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
7511
      }
7512
      if (val === 0) {
7513
        s.status = HCRC_STATE;
7514
      }
7515
    }
7516
    else {
7517
      s.status = HCRC_STATE;
7518
    }
7519
  }
7520
  if (s.status === HCRC_STATE) {
7521
    if (s.gzhead.hcrc) {
7522
      if (s.pending + 2 > s.pending_buf_size) {
7523
        flush_pending(strm);
7524
      }
7525
      if (s.pending + 2 <= s.pending_buf_size) {
7526
        put_byte(s, strm.adler & 0xff);
7527
        put_byte(s, (strm.adler >> 8) & 0xff);
7528
        strm.adler = 0; //crc32(0L, Z_NULL, 0);
7529
        s.status = BUSY_STATE;
7530
      }
7531
    }
7532
    else {
7533
      s.status = BUSY_STATE;
7534
    }
7535
  }
7536
//#endif
7537
7538
  /* Flush as much pending output as possible */
7539
  if (s.pending !== 0) {
7540
    flush_pending(strm);
7541
    if (strm.avail_out === 0) {
7542
      /* Since avail_out is 0, deflate will be called again with
7543
       * more output space, but possibly with both pending and
7544
       * avail_in equal to zero. There won't be anything to do,
7545
       * but this is not an error situation so make sure we
7546
       * return OK instead of BUF_ERROR at next call of deflate:
7547
       */
7548
      s.last_flush = -1;
7549
      return Z_OK;
7550
    }
7551
7552
    /* Make sure there is something to do and avoid duplicate consecutive
7553
     * flushes. For repeated and useless calls with Z_FINISH, we keep
7554
     * returning Z_STREAM_END instead of Z_BUF_ERROR.
7555
     */
7556
  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
7557
    flush !== Z_FINISH) {
7558
    return err(strm, Z_BUF_ERROR);
7559
  }
7560
7561
  /* User must not provide more input after the first FINISH: */
7562
  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
7563
    return err(strm, Z_BUF_ERROR);
7564
  }
7565
7566
  /* Start a new block or continue the current one.
7567
   */
7568
  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
7569
    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
7570
    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
7571
      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
7572
        configuration_table[s.level].func(s, flush));
7573
7574
    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
7575
      s.status = FINISH_STATE;
7576
    }
7577
    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
7578
      if (strm.avail_out === 0) {
7579
        s.last_flush = -1;
7580
        /* avoid BUF_ERROR next call, see above */
7581
      }
7582
      return Z_OK;
7583
      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
7584
       * of deflate should use the same flush parameter to make sure
7585
       * that the flush is complete. So we don't have to output an
7586
       * empty block here, this will be done at next call. This also
7587
       * ensures that for a very small output buffer, we emit at most
7588
       * one empty block.
7589
       */
7590
    }
7591
    if (bstate === BS_BLOCK_DONE) {
7592
      if (flush === Z_PARTIAL_FLUSH) {
7593
        trees._tr_align(s);
7594
      }
7595
      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
7596
7597
        trees._tr_stored_block(s, 0, 0, false);
7598
        /* For a full flush, this empty block will be recognized
7599
         * as a special marker by inflate_sync().
7600
         */
7601
        if (flush === Z_FULL_FLUSH) {
7602
          /*** CLEAR_HASH(s); ***/             /* forget history */
7603
          zero(s.head); // Fill with NIL (= 0);
7604
7605
          if (s.lookahead === 0) {
7606
            s.strstart = 0;
7607
            s.block_start = 0;
7608
            s.insert = 0;
7609
          }
7610
        }
7611
      }
7612
      flush_pending(strm);
7613
      if (strm.avail_out === 0) {
7614
        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
7615
        return Z_OK;
7616
      }
7617
    }
7618
  }
7619
  //Assert(strm->avail_out > 0, "bug2");
7620
  //if (strm.avail_out <= 0) { throw new Error("bug2");}
7621
7622
  if (flush !== Z_FINISH) { return Z_OK; }
7623
  if (s.wrap <= 0) { return Z_STREAM_END; }
7624
7625
  /* Write the trailer */
7626
  if (s.wrap === 2) {
7627
    put_byte(s, strm.adler & 0xff);
7628
    put_byte(s, (strm.adler >> 8) & 0xff);
7629
    put_byte(s, (strm.adler >> 16) & 0xff);
7630
    put_byte(s, (strm.adler >> 24) & 0xff);
7631
    put_byte(s, strm.total_in & 0xff);
7632
    put_byte(s, (strm.total_in >> 8) & 0xff);
7633
    put_byte(s, (strm.total_in >> 16) & 0xff);
7634
    put_byte(s, (strm.total_in >> 24) & 0xff);
7635
  }
7636
  else
7637
  {
7638
    putShortMSB(s, strm.adler >>> 16);
7639
    putShortMSB(s, strm.adler & 0xffff);
7640
  }
7641
7642
  flush_pending(strm);
7643
  /* If avail_out is zero, the application will call deflate again
7644
   * to flush the rest.
7645
   */
7646
  if (s.wrap > 0) { s.wrap = -s.wrap; }
7647
  /* write the trailer only once! */
7648
  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
7649
}
7650
7651
function deflateEnd(strm) {
7652
  var status;
7653
7654
  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
7655
    return Z_STREAM_ERROR;
7656
  }
7657
7658
  status = strm.state.status;
7659
  if (status !== INIT_STATE &&
7660
    status !== EXTRA_STATE &&
7661
    status !== NAME_STATE &&
7662
    status !== COMMENT_STATE &&
7663
    status !== HCRC_STATE &&
7664
    status !== BUSY_STATE &&
7665
    status !== FINISH_STATE
7666
  ) {
7667
    return err(strm, Z_STREAM_ERROR);
7668
  }
7669
7670
  strm.state = null;
7671
7672
  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
7673
}
7674
7675
7676
/* =========================================================================
7677
 * Initializes the compression dictionary from the given byte
7678
 * sequence without producing any compressed output.
7679
 */
7680
function deflateSetDictionary(strm, dictionary) {
7681
  var dictLength = dictionary.length;
7682
7683
  var s;
7684
  var str, n;
7685
  var wrap;
7686
  var avail;
7687
  var next;
7688
  var input;
7689
  var tmpDict;
7690
7691
  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
7692
    return Z_STREAM_ERROR;
7693
  }
7694
7695
  s = strm.state;
7696
  wrap = s.wrap;
7697
7698
  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
7699
    return Z_STREAM_ERROR;
7700
  }
7701
7702
  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
7703
  if (wrap === 1) {
7704
    /* adler32(strm->adler, dictionary, dictLength); */
7705
    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
7706
  }
7707
7708
  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
7709
7710
  /* if dictionary would fill window, just replace the history */
7711
  if (dictLength >= s.w_size) {
7712
    if (wrap === 0) {            /* already empty otherwise */
7713
      /*** CLEAR_HASH(s); ***/
7714
      zero(s.head); // Fill with NIL (= 0);
7715
      s.strstart = 0;
7716
      s.block_start = 0;
7717
      s.insert = 0;
7718
    }
7719
    /* use the tail */
7720
    // dictionary = dictionary.slice(dictLength - s.w_size);
7721
    tmpDict = new utils.Buf8(s.w_size);
7722
    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
7723
    dictionary = tmpDict;
7724
    dictLength = s.w_size;
7725
  }
7726
  /* insert dictionary into window and hash */
7727
  avail = strm.avail_in;
7728
  next = strm.next_in;
7729
  input = strm.input;
7730
  strm.avail_in = dictLength;
7731
  strm.next_in = 0;
7732
  strm.input = dictionary;
7733
  fill_window(s);
7734
  while (s.lookahead >= MIN_MATCH) {
7735
    str = s.strstart;
7736
    n = s.lookahead - (MIN_MATCH - 1);
7737
    do {
7738
      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
7739
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
7740
7741
      s.prev[str & s.w_mask] = s.head[s.ins_h];
7742
7743
      s.head[s.ins_h] = str;
7744
      str++;
7745
    } while (--n);
7746
    s.strstart = str;
7747
    s.lookahead = MIN_MATCH - 1;
7748
    fill_window(s);
7749
  }
7750
  s.strstart += s.lookahead;
7751
  s.block_start = s.strstart;
7752
  s.insert = s.lookahead;
7753
  s.lookahead = 0;
7754
  s.match_length = s.prev_length = MIN_MATCH - 1;
7755
  s.match_available = 0;
7756
  strm.next_in = next;
7757
  strm.input = input;
7758
  strm.avail_in = avail;
7759
  s.wrap = wrap;
7760
  return Z_OK;
7761
}
7762
7763
7764
exports.deflateInit = deflateInit;
7765
exports.deflateInit2 = deflateInit2;
7766
exports.deflateReset = deflateReset;
7767
exports.deflateResetKeep = deflateResetKeep;
7768
exports.deflateSetHeader = deflateSetHeader;
7769
exports.deflate = deflate;
7770
exports.deflateEnd = deflateEnd;
7771
exports.deflateSetDictionary = deflateSetDictionary;
7772
exports.deflateInfo = 'pako deflate (from Nodeca project)';
7773
7774
/* Not implemented
7775
exports.deflateBound = deflateBound;
7776
exports.deflateCopy = deflateCopy;
7777
exports.deflateParams = deflateParams;
7778
exports.deflatePending = deflatePending;
7779
exports.deflatePrime = deflatePrime;
7780
exports.deflateTune = deflateTune;
7781
*/
7782
7783
},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(require,module,exports){
7784
'use strict';
7785
7786
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
7787
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
7788
//
7789
// This software is provided 'as-is', without any express or implied
7790
// warranty. In no event will the authors be held liable for any damages
7791
// arising from the use of this software.
7792
//
7793
// Permission is granted to anyone to use this software for any purpose,
7794
// including commercial applications, and to alter it and redistribute it
7795
// freely, subject to the following restrictions:
7796
//
7797
// 1. The origin of this software must not be misrepresented; you must not
7798
//   claim that you wrote the original software. If you use this software
7799
//   in a product, an acknowledgment in the product documentation would be
7800
//   appreciated but is not required.
7801
// 2. Altered source versions must be plainly marked as such, and must not be
7802
//   misrepresented as being the original software.
7803
// 3. This notice may not be removed or altered from any source distribution.
7804
7805
function GZheader() {
7806
  /* true if compressed data believed to be text */
7807
  this.text       = 0;
7808
  /* modification time */
7809
  this.time       = 0;
7810
  /* extra flags (not used when writing a gzip file) */
7811
  this.xflags     = 0;
7812
  /* operating system */
7813
  this.os         = 0;
7814
  /* pointer to extra field or Z_NULL if none */
7815
  this.extra      = null;
7816
  /* extra field length (valid if extra != Z_NULL) */
7817
  this.extra_len  = 0; // Actually, we don't need it in JS,
7818
                       // but leave for few code modifications
7819
7820
  //
7821
  // Setup limits is not necessary because in js we should not preallocate memory
7822
  // for inflate use constant limit in 65536 bytes
7823
  //
7824
7825
  /* space at extra (only when reading header) */
7826
  // this.extra_max  = 0;
7827
  /* pointer to zero-terminated file name or Z_NULL */
7828
  this.name       = '';
7829
  /* space at name (only when reading header) */
7830
  // this.name_max   = 0;
7831
  /* pointer to zero-terminated comment or Z_NULL */
7832
  this.comment    = '';
7833
  /* space at comment (only when reading header) */
7834
  // this.comm_max   = 0;
7835
  /* true if there was or will be a header crc */
7836
  this.hcrc       = 0;
7837
  /* true when done reading gzip header (not used when writing a gzip file) */
7838
  this.done       = false;
7839
}
7840
7841
module.exports = GZheader;
7842
7843
},{}],48:[function(require,module,exports){
7844
'use strict';
7845
7846
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
7847
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
7848
//
7849
// This software is provided 'as-is', without any express or implied
7850
// warranty. In no event will the authors be held liable for any damages
7851
// arising from the use of this software.
7852
//
7853
// Permission is granted to anyone to use this software for any purpose,
7854
// including commercial applications, and to alter it and redistribute it
7855
// freely, subject to the following restrictions:
7856
//
7857
// 1. The origin of this software must not be misrepresented; you must not
7858
//   claim that you wrote the original software. If you use this software
7859
//   in a product, an acknowledgment in the product documentation would be
7860
//   appreciated but is not required.
7861
// 2. Altered source versions must be plainly marked as such, and must not be
7862
//   misrepresented as being the original software.
7863
// 3. This notice may not be removed or altered from any source distribution.
7864
7865
// See state defs from inflate.js
7866
var BAD = 30;       /* got a data error -- remain here until reset */
7867
var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
7868
7869
/*
7870
   Decode literal, length, and distance codes and write out the resulting
7871
   literal and match bytes until either not enough input or output is
7872
   available, an end-of-block is encountered, or a data error is encountered.
7873
   When large enough input and output buffers are supplied to inflate(), for
7874
   example, a 16K input buffer and a 64K output buffer, more than 95% of the
7875
   inflate execution time is spent in this routine.
7876
7877
   Entry assumptions:
7878
7879
        state.mode === LEN
7880
        strm.avail_in >= 6
7881
        strm.avail_out >= 258
7882
        start >= strm.avail_out
7883
        state.bits < 8
7884
7885
   On return, state.mode is one of:
7886
7887
        LEN -- ran out of enough output space or enough available input
7888
        TYPE -- reached end of block code, inflate() to interpret next block
7889
        BAD -- error in block data
7890
7891
   Notes:
7892
7893
    - The maximum input bits used by a length/distance pair is 15 bits for the
7894
      length code, 5 bits for the length extra, 15 bits for the distance code,
7895
      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
7896
      Therefore if strm.avail_in >= 6, then there is enough input to avoid
7897
      checking for available input while decoding.
7898
7899
    - The maximum bytes that a single length/distance pair can output is 258
7900
      bytes, which is the maximum length that can be coded.  inflate_fast()
7901
      requires strm.avail_out >= 258 for each loop to avoid checking for
7902
      output space.
7903
 */
7904
module.exports = function inflate_fast(strm, start) {
7905
  var state;
7906
  var _in;                    /* local strm.input */
7907
  var last;                   /* have enough input while in < last */
7908
  var _out;                   /* local strm.output */
7909
  var beg;                    /* inflate()'s initial strm.output */
7910
  var end;                    /* while out < end, enough space available */
7911
//#ifdef INFLATE_STRICT
7912
  var dmax;                   /* maximum distance from zlib header */
7913
//#endif
7914
  var wsize;                  /* window size or zero if not using window */
7915
  var whave;                  /* valid bytes in the window */
7916
  var wnext;                  /* window write index */
7917
  // Use `s_window` instead `window`, avoid conflict with instrumentation tools
7918
  var s_window;               /* allocated sliding window, if wsize != 0 */
7919
  var hold;                   /* local strm.hold */
7920
  var bits;                   /* local strm.bits */
7921
  var lcode;                  /* local strm.lencode */
7922
  var dcode;                  /* local strm.distcode */
7923
  var lmask;                  /* mask for first level of length codes */
7924
  var dmask;                  /* mask for first level of distance codes */
7925
  var here;                   /* retrieved table entry */
7926
  var op;                     /* code bits, operation, extra bits, or */
7927
                              /*  window position, window bytes to copy */
7928
  var len;                    /* match length, unused bytes */
7929
  var dist;                   /* match distance */
7930
  var from;                   /* where to copy match from */
7931
  var from_source;
7932
7933
7934
  var input, output; // JS specific, because we have no pointers
7935
7936
  /* copy state to local variables */
7937
  state = strm.state;
7938
  //here = state.here;
7939
  _in = strm.next_in;
7940
  input = strm.input;
7941
  last = _in + (strm.avail_in - 5);
7942
  _out = strm.next_out;
7943
  output = strm.output;
7944
  beg = _out - (start - strm.avail_out);
7945
  end = _out + (strm.avail_out - 257);
7946
//#ifdef INFLATE_STRICT
7947
  dmax = state.dmax;
7948
//#endif
7949
  wsize = state.wsize;
7950
  whave = state.whave;
7951
  wnext = state.wnext;
7952
  s_window = state.window;
7953
  hold = state.hold;
7954
  bits = state.bits;
7955
  lcode = state.lencode;
7956
  dcode = state.distcode;
7957
  lmask = (1 << state.lenbits) - 1;
7958
  dmask = (1 << state.distbits) - 1;
7959
7960
7961
  /* decode literals and length/distances until end-of-block or not enough
7962
     input data or output space */
7963
7964
  top:
7965
  do {
7966
    if (bits < 15) {
7967
      hold += input[_in++] << bits;
7968
      bits += 8;
7969
      hold += input[_in++] << bits;
7970
      bits += 8;
7971
    }
7972
7973
    here = lcode[hold & lmask];
7974
7975
    dolen:
7976
    for (;;) { // Goto emulation
7977
      op = here >>> 24/*here.bits*/;
7978
      hold >>>= op;
7979
      bits -= op;
7980
      op = (here >>> 16) & 0xff/*here.op*/;
7981
      if (op === 0) {                          /* literal */
7982
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
7983
        //        "inflate:         literal '%c'\n" :
7984
        //        "inflate:         literal 0x%02x\n", here.val));
7985
        output[_out++] = here & 0xffff/*here.val*/;
7986
      }
7987
      else if (op & 16) {                     /* length base */
7988
        len = here & 0xffff/*here.val*/;
7989
        op &= 15;                           /* number of extra bits */
7990
        if (op) {
7991
          if (bits < op) {
7992
            hold += input[_in++] << bits;
7993
            bits += 8;
7994
          }
7995
          len += hold & ((1 << op) - 1);
7996
          hold >>>= op;
7997
          bits -= op;
7998
        }
7999
        //Tracevv((stderr, "inflate:         length %u\n", len));
8000
        if (bits < 15) {
8001
          hold += input[_in++] << bits;
8002
          bits += 8;
8003
          hold += input[_in++] << bits;
8004
          bits += 8;
8005
        }
8006
        here = dcode[hold & dmask];
8007
8008
        dodist:
8009
        for (;;) { // goto emulation
8010
          op = here >>> 24/*here.bits*/;
8011
          hold >>>= op;
8012
          bits -= op;
8013
          op = (here >>> 16) & 0xff/*here.op*/;
8014
8015
          if (op & 16) {                      /* distance base */
8016
            dist = here & 0xffff/*here.val*/;
8017
            op &= 15;                       /* number of extra bits */
8018
            if (bits < op) {
8019
              hold += input[_in++] << bits;
8020
              bits += 8;
8021
              if (bits < op) {
8022
                hold += input[_in++] << bits;
8023
                bits += 8;
8024
              }
8025
            }
8026
            dist += hold & ((1 << op) - 1);
8027
//#ifdef INFLATE_STRICT
8028
            if (dist > dmax) {
8029
              strm.msg = 'invalid distance too far back';
8030
              state.mode = BAD;
8031
              break top;
8032
            }
8033
//#endif
8034
            hold >>>= op;
8035
            bits -= op;
8036
            //Tracevv((stderr, "inflate:         distance %u\n", dist));
8037
            op = _out - beg;                /* max distance in output */
8038
            if (dist > op) {                /* see if copy from window */
8039
              op = dist - op;               /* distance back in window */
8040
              if (op > whave) {
8041
                if (state.sane) {
8042
                  strm.msg = 'invalid distance too far back';
8043
                  state.mode = BAD;
8044
                  break top;
8045
                }
8046
8047
// (!) This block is disabled in zlib defailts,
8048
// don't enable it for binary compatibility
8049
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
8050
//                if (len <= op - whave) {
8051
//                  do {
8052
//                    output[_out++] = 0;
8053
//                  } while (--len);
8054
//                  continue top;
8055
//                }
8056
//                len -= op - whave;
8057
//                do {
8058
//                  output[_out++] = 0;
8059
//                } while (--op > whave);
8060
//                if (op === 0) {
8061
//                  from = _out - dist;
8062
//                  do {
8063
//                    output[_out++] = output[from++];
8064
//                  } while (--len);
8065
//                  continue top;
8066
//                }
8067
//#endif
8068
              }
8069
              from = 0; // window index
8070
              from_source = s_window;
8071
              if (wnext === 0) {           /* very common case */
8072
                from += wsize - op;
8073
                if (op < len) {         /* some from window */
8074
                  len -= op;
8075
                  do {
8076
                    output[_out++] = s_window[from++];
8077
                  } while (--op);
8078
                  from = _out - dist;  /* rest from output */
8079
                  from_source = output;
8080
                }
8081
              }
8082
              else if (wnext < op) {      /* wrap around window */
8083
                from += wsize + wnext - op;
8084
                op -= wnext;
8085
                if (op < len) {         /* some from end of window */
8086
                  len -= op;
8087
                  do {
8088
                    output[_out++] = s_window[from++];
8089
                  } while (--op);
8090
                  from = 0;
8091
                  if (wnext < len) {  /* some from start of window */
8092
                    op = wnext;
8093
                    len -= op;
8094
                    do {
8095
                      output[_out++] = s_window[from++];
8096
                    } while (--op);
8097
                    from = _out - dist;      /* rest from output */
8098
                    from_source = output;
8099
                  }
8100
                }
8101
              }
8102
              else {                      /* contiguous in window */
8103
                from += wnext - op;
8104
                if (op < len) {         /* some from window */
8105
                  len -= op;
8106
                  do {
8107
                    output[_out++] = s_window[from++];
8108
                  } while (--op);
8109
                  from = _out - dist;  /* rest from output */
8110
                  from_source = output;
8111
                }
8112
              }
8113
              while (len > 2) {
8114
                output[_out++] = from_source[from++];
8115
                output[_out++] = from_source[from++];
8116
                output[_out++] = from_source[from++];
8117
                len -= 3;
8118
              }
8119
              if (len) {
8120
                output[_out++] = from_source[from++];
8121
                if (len > 1) {
8122
                  output[_out++] = from_source[from++];
8123
                }
8124
              }
8125
            }
8126
            else {
8127
              from = _out - dist;          /* copy direct from output */
8128
              do {                        /* minimum length is three */
8129
                output[_out++] = output[from++];
8130
                output[_out++] = output[from++];
8131
                output[_out++] = output[from++];
8132
                len -= 3;
8133
              } while (len > 2);
8134
              if (len) {
8135
                output[_out++] = output[from++];
8136
                if (len > 1) {
8137
                  output[_out++] = output[from++];
8138
                }
8139
              }
8140
            }
8141
          }
8142
          else if ((op & 64) === 0) {          /* 2nd level distance code */
8143
            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
8144
            continue dodist;
8145
          }
8146
          else {
8147
            strm.msg = 'invalid distance code';
8148
            state.mode = BAD;
8149
            break top;
8150
          }
8151
8152
          break; // need to emulate goto via "continue"
8153
        }
8154
      }
8155
      else if ((op & 64) === 0) {              /* 2nd level length code */
8156
        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
8157
        continue dolen;
8158
      }
8159
      else if (op & 32) {                     /* end-of-block */
8160
        //Tracevv((stderr, "inflate:         end of block\n"));
8161
        state.mode = TYPE;
8162
        break top;
8163
      }
8164
      else {
8165
        strm.msg = 'invalid literal/length code';
8166
        state.mode = BAD;
8167
        break top;
8168
      }
8169
8170
      break; // need to emulate goto via "continue"
8171
    }
8172
  } while (_in < last && _out < end);
8173
8174
  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
8175
  len = bits >> 3;
8176
  _in -= len;
8177
  bits -= len << 3;
8178
  hold &= (1 << bits) - 1;
8179
8180
  /* update state and return */
8181
  strm.next_in = _in;
8182
  strm.next_out = _out;
8183
  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
8184
  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
8185
  state.hold = hold;
8186
  state.bits = bits;
8187
  return;
8188
};
8189
8190
},{}],49:[function(require,module,exports){
8191
'use strict';
8192
8193
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
8194
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
8195
//
8196
// This software is provided 'as-is', without any express or implied
8197
// warranty. In no event will the authors be held liable for any damages
8198
// arising from the use of this software.
8199
//
8200
// Permission is granted to anyone to use this software for any purpose,
8201
// including commercial applications, and to alter it and redistribute it
8202
// freely, subject to the following restrictions:
8203
//
8204
// 1. The origin of this software must not be misrepresented; you must not
8205
//   claim that you wrote the original software. If you use this software
8206
//   in a product, an acknowledgment in the product documentation would be
8207
//   appreciated but is not required.
8208
// 2. Altered source versions must be plainly marked as such, and must not be
8209
//   misrepresented as being the original software.
8210
// 3. This notice may not be removed or altered from any source distribution.
8211
8212
var utils         = require('../utils/common');
8213
var adler32       = require('./adler32');
8214
var crc32         = require('./crc32');
8215
var inflate_fast  = require('./inffast');
8216
var inflate_table = require('./inftrees');
8217
8218
var CODES = 0;
8219
var LENS = 1;
8220
var DISTS = 2;
8221
8222
/* Public constants ==========================================================*/
8223
/* ===========================================================================*/
8224
8225
8226
/* Allowed flush values; see deflate() and inflate() below for details */
8227
//var Z_NO_FLUSH      = 0;
8228
//var Z_PARTIAL_FLUSH = 1;
8229
//var Z_SYNC_FLUSH    = 2;
8230
//var Z_FULL_FLUSH    = 3;
8231
var Z_FINISH        = 4;
8232
var Z_BLOCK         = 5;
8233
var Z_TREES         = 6;
8234
8235
8236
/* Return codes for the compression/decompression functions. Negative values
8237
 * are errors, positive values are used for special but normal events.
8238
 */
8239
var Z_OK            = 0;
8240
var Z_STREAM_END    = 1;
8241
var Z_NEED_DICT     = 2;
8242
//var Z_ERRNO         = -1;
8243
var Z_STREAM_ERROR  = -2;
8244
var Z_DATA_ERROR    = -3;
8245
var Z_MEM_ERROR     = -4;
8246
var Z_BUF_ERROR     = -5;
8247
//var Z_VERSION_ERROR = -6;
8248
8249
/* The deflate compression method */
8250
var Z_DEFLATED  = 8;
8251
8252
8253
/* STATES ====================================================================*/
8254
/* ===========================================================================*/
8255
8256
8257
var    HEAD = 1;       /* i: waiting for magic header */
8258
var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
8259
var    TIME = 3;       /* i: waiting for modification time (gzip) */
8260
var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
8261
var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
8262
var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
8263
var    NAME = 7;       /* i: waiting for end of file name (gzip) */
8264
var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
8265
var    HCRC = 9;       /* i: waiting for header crc (gzip) */
8266
var    DICTID = 10;    /* i: waiting for dictionary check value */
8267
var    DICT = 11;      /* waiting for inflateSetDictionary() call */
8268
var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
8269
var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
8270
var        STORED = 14;    /* i: waiting for stored size (length and complement) */
8271
var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
8272
var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
8273
var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
8274
var        LENLENS = 18;   /* i: waiting for code length code lengths */
8275
var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
8276
var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
8277
var            LEN = 21;       /* i: waiting for length/lit/eob code */
8278
var            LENEXT = 22;    /* i: waiting for length extra bits */
8279
var            DIST = 23;      /* i: waiting for distance code */
8280
var            DISTEXT = 24;   /* i: waiting for distance extra bits */
8281
var            MATCH = 25;     /* o: waiting for output space to copy string */
8282
var            LIT = 26;       /* o: waiting for output space to write literal */
8283
var    CHECK = 27;     /* i: waiting for 32-bit check value */
8284
var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
8285
var    DONE = 29;      /* finished check, done -- remain here until reset */
8286
var    BAD = 30;       /* got a data error -- remain here until reset */
8287
var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
8288
var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
8289
8290
/* ===========================================================================*/
8291
8292
8293
8294
var ENOUGH_LENS = 852;
8295
var ENOUGH_DISTS = 592;
8296
//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
8297
8298
var MAX_WBITS = 15;
8299
/* 32K LZ77 window */
8300
var DEF_WBITS = MAX_WBITS;
8301
8302
8303
function zswap32(q) {
8304
  return  (((q >>> 24) & 0xff) +
8305
          ((q >>> 8) & 0xff00) +
8306
          ((q & 0xff00) << 8) +
8307
          ((q & 0xff) << 24));
8308
}
8309
8310
8311
function InflateState() {
8312
  this.mode = 0;             /* current inflate mode */
8313
  this.last = false;          /* true if processing last block */
8314
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
8315
  this.havedict = false;      /* true if dictionary provided */
8316
  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
8317
  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
8318
  this.check = 0;             /* protected copy of check value */
8319
  this.total = 0;             /* protected copy of output count */
8320
  // TODO: may be {}
8321
  this.head = null;           /* where to save gzip header information */
8322
8323
  /* sliding window */
8324
  this.wbits = 0;             /* log base 2 of requested window size */
8325
  this.wsize = 0;             /* window size or zero if not using window */
8326
  this.whave = 0;             /* valid bytes in the window */
8327
  this.wnext = 0;             /* window write index */
8328
  this.window = null;         /* allocated sliding window, if needed */
8329
8330
  /* bit accumulator */
8331
  this.hold = 0;              /* input bit accumulator */
8332
  this.bits = 0;              /* number of bits in "in" */
8333
8334
  /* for string and stored block copying */
8335
  this.length = 0;            /* literal or length of data to copy */
8336
  this.offset = 0;            /* distance back to copy string from */
8337
8338
  /* for table and code decoding */
8339
  this.extra = 0;             /* extra bits needed */
8340
8341
  /* fixed and dynamic code tables */
8342
  this.lencode = null;          /* starting table for length/literal codes */
8343
  this.distcode = null;         /* starting table for distance codes */
8344
  this.lenbits = 0;           /* index bits for lencode */
8345
  this.distbits = 0;          /* index bits for distcode */
8346
8347
  /* dynamic table building */
8348
  this.ncode = 0;             /* number of code length code lengths */
8349
  this.nlen = 0;              /* number of length code lengths */
8350
  this.ndist = 0;             /* number of distance code lengths */
8351
  this.have = 0;              /* number of code lengths in lens[] */
8352
  this.next = null;              /* next available space in codes[] */
8353
8354
  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
8355
  this.work = new utils.Buf16(288); /* work area for code table building */
8356
8357
  /*
8358
   because we don't have pointers in js, we use lencode and distcode directly
8359
   as buffers so we don't need codes
8360
  */
8361
  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
8362
  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
8363
  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
8364
  this.sane = 0;                   /* if false, allow invalid distance too far */
8365
  this.back = 0;                   /* bits back of last unprocessed length/lit */
8366
  this.was = 0;                    /* initial length of match */
8367
}
8368
8369
function inflateResetKeep(strm) {
8370
  var state;
8371
8372
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
8373
  state = strm.state;
8374
  strm.total_in = strm.total_out = state.total = 0;
8375
  strm.msg = ''; /*Z_NULL*/
8376
  if (state.wrap) {       /* to support ill-conceived Java test suite */
8377
    strm.adler = state.wrap & 1;
8378
  }
8379
  state.mode = HEAD;
8380
  state.last = 0;
8381
  state.havedict = 0;
8382
  state.dmax = 32768;
8383
  state.head = null/*Z_NULL*/;
8384
  state.hold = 0;
8385
  state.bits = 0;
8386
  //state.lencode = state.distcode = state.next = state.codes;
8387
  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
8388
  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
8389
8390
  state.sane = 1;
8391
  state.back = -1;
8392
  //Tracev((stderr, "inflate: reset\n"));
8393
  return Z_OK;
8394
}
8395
8396
function inflateReset(strm) {
8397
  var state;
8398
8399
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
8400
  state = strm.state;
8401
  state.wsize = 0;
8402
  state.whave = 0;
8403
  state.wnext = 0;
8404
  return inflateResetKeep(strm);
8405
8406
}
8407
8408
function inflateReset2(strm, windowBits) {
8409
  var wrap;
8410
  var state;
8411
8412
  /* get the state */
8413
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
8414
  state = strm.state;
8415
8416
  /* extract wrap request from windowBits parameter */
8417
  if (windowBits < 0) {
8418
    wrap = 0;
8419
    windowBits = -windowBits;
8420
  }
8421
  else {
8422
    wrap = (windowBits >> 4) + 1;
8423
    if (windowBits < 48) {
8424
      windowBits &= 15;
8425
    }
8426
  }
8427
8428
  /* set number of window bits, free window if different */
8429
  if (windowBits && (windowBits < 8 || windowBits > 15)) {
8430
    return Z_STREAM_ERROR;
8431
  }
8432
  if (state.window !== null && state.wbits !== windowBits) {
8433
    state.window = null;
8434
  }
8435
8436
  /* update state and reset the rest of it */
8437
  state.wrap = wrap;
8438
  state.wbits = windowBits;
8439
  return inflateReset(strm);
8440
}
8441
8442
function inflateInit2(strm, windowBits) {
8443
  var ret;
8444
  var state;
8445
8446
  if (!strm) { return Z_STREAM_ERROR; }
8447
  //strm.msg = Z_NULL;                 /* in case we return an error */
8448
8449
  state = new InflateState();
8450
8451
  //if (state === Z_NULL) return Z_MEM_ERROR;
8452
  //Tracev((stderr, "inflate: allocated\n"));
8453
  strm.state = state;
8454
  state.window = null/*Z_NULL*/;
8455
  ret = inflateReset2(strm, windowBits);
8456
  if (ret !== Z_OK) {
8457
    strm.state = null/*Z_NULL*/;
8458
  }
8459
  return ret;
8460
}
8461
8462
function inflateInit(strm) {
8463
  return inflateInit2(strm, DEF_WBITS);
8464
}
8465
8466
8467
/*
8468
 Return state with length and distance decoding tables and index sizes set to
8469
 fixed code decoding.  Normally this returns fixed tables from inffixed.h.
8470
 If BUILDFIXED is defined, then instead this routine builds the tables the
8471
 first time it's called, and returns those tables the first time and
8472
 thereafter.  This reduces the size of the code by about 2K bytes, in
8473
 exchange for a little execution time.  However, BUILDFIXED should not be
8474
 used for threaded applications, since the rewriting of the tables and virgin
8475
 may not be thread-safe.
8476
 */
8477
var virgin = true;
8478
8479
var lenfix, distfix; // We have no pointers in JS, so keep tables separate
8480
8481
function fixedtables(state) {
8482
  /* build fixed huffman tables if first call (may not be thread safe) */
8483
  if (virgin) {
8484
    var sym;
8485
8486
    lenfix = new utils.Buf32(512);
8487
    distfix = new utils.Buf32(32);
8488
8489
    /* literal/length table */
8490
    sym = 0;
8491
    while (sym < 144) { state.lens[sym++] = 8; }
8492
    while (sym < 256) { state.lens[sym++] = 9; }
8493
    while (sym < 280) { state.lens[sym++] = 7; }
8494
    while (sym < 288) { state.lens[sym++] = 8; }
8495
8496
    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
8497
8498
    /* distance table */
8499
    sym = 0;
8500
    while (sym < 32) { state.lens[sym++] = 5; }
8501
8502
    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
8503
8504
    /* do this just once */
8505
    virgin = false;
8506
  }
8507
8508
  state.lencode = lenfix;
8509
  state.lenbits = 9;
8510
  state.distcode = distfix;
8511
  state.distbits = 5;
8512
}
8513
8514
8515
/*
8516
 Update the window with the last wsize (normally 32K) bytes written before
8517
 returning.  If window does not exist yet, create it.  This is only called
8518
 when a window is already in use, or when output has been written during this
8519
 inflate call, but the end of the deflate stream has not been reached yet.
8520
 It is also called to create a window for dictionary data when a dictionary
8521
 is loaded.
8522
8523
 Providing output buffers larger than 32K to inflate() should provide a speed
8524
 advantage, since only the last 32K of output is copied to the sliding window
8525
 upon return from inflate(), and since all distances after the first 32K of
8526
 output will fall in the output data, making match copies simpler and faster.
8527
 The advantage may be dependent on the size of the processor's data caches.
8528
 */
8529
function updatewindow(strm, src, end, copy) {
8530
  var dist;
8531
  var state = strm.state;
8532
8533
  /* if it hasn't been done already, allocate space for the window */
8534
  if (state.window === null) {
8535
    state.wsize = 1 << state.wbits;
8536
    state.wnext = 0;
8537
    state.whave = 0;
8538
8539
    state.window = new utils.Buf8(state.wsize);
8540
  }
8541
8542
  /* copy state->wsize or less output bytes into the circular window */
8543
  if (copy >= state.wsize) {
8544
    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
8545
    state.wnext = 0;
8546
    state.whave = state.wsize;
8547
  }
8548
  else {
8549
    dist = state.wsize - state.wnext;
8550
    if (dist > copy) {
8551
      dist = copy;
8552
    }
8553
    //zmemcpy(state->window + state->wnext, end - copy, dist);
8554
    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
8555
    copy -= dist;
8556
    if (copy) {
8557
      //zmemcpy(state->window, end - copy, copy);
8558
      utils.arraySet(state.window, src, end - copy, copy, 0);
8559
      state.wnext = copy;
8560
      state.whave = state.wsize;
8561
    }
8562
    else {
8563
      state.wnext += dist;
8564
      if (state.wnext === state.wsize) { state.wnext = 0; }
8565
      if (state.whave < state.wsize) { state.whave += dist; }
8566
    }
8567
  }
8568
  return 0;
8569
}
8570
8571
function inflate(strm, flush) {
8572
  var state;
8573
  var input, output;          // input/output buffers
8574
  var next;                   /* next input INDEX */
8575
  var put;                    /* next output INDEX */
8576
  var have, left;             /* available input and output */
8577
  var hold;                   /* bit buffer */
8578
  var bits;                   /* bits in bit buffer */
8579
  var _in, _out;              /* save starting available input and output */
8580
  var copy;                   /* number of stored or match bytes to copy */
8581
  var from;                   /* where to copy match bytes from */
8582
  var from_source;
8583
  var here = 0;               /* current decoding table entry */
8584
  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
8585
  //var last;                   /* parent table entry */
8586
  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
8587
  var len;                    /* length to copy for repeats, bits to drop */
8588
  var ret;                    /* return code */
8589
  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
8590
  var opts;
8591
8592
  var n; // temporary var for NEED_BITS
8593
8594
  var order = /* permutation of code lengths */
8595
    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
8596
8597
8598
  if (!strm || !strm.state || !strm.output ||
8599
      (!strm.input && strm.avail_in !== 0)) {
8600
    return Z_STREAM_ERROR;
8601
  }
8602
8603
  state = strm.state;
8604
  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
8605
8606
8607
  //--- LOAD() ---
8608
  put = strm.next_out;
8609
  output = strm.output;
8610
  left = strm.avail_out;
8611
  next = strm.next_in;
8612
  input = strm.input;
8613
  have = strm.avail_in;
8614
  hold = state.hold;
8615
  bits = state.bits;
8616
  //---
8617
8618
  _in = have;
8619
  _out = left;
8620
  ret = Z_OK;
8621
8622
  inf_leave: // goto emulation
8623
  for (;;) {
8624
    switch (state.mode) {
8625
    case HEAD:
8626
      if (state.wrap === 0) {
8627
        state.mode = TYPEDO;
8628
        break;
8629
      }
8630
      //=== NEEDBITS(16);
8631
      while (bits < 16) {
8632
        if (have === 0) { break inf_leave; }
8633
        have--;
8634
        hold += input[next++] << bits;
8635
        bits += 8;
8636
      }
8637
      //===//
8638
      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
8639
        state.check = 0/*crc32(0L, Z_NULL, 0)*/;
8640
        //=== CRC2(state.check, hold);
8641
        hbuf[0] = hold & 0xff;
8642
        hbuf[1] = (hold >>> 8) & 0xff;
8643
        state.check = crc32(state.check, hbuf, 2, 0);
8644
        //===//
8645
8646
        //=== INITBITS();
8647
        hold = 0;
8648
        bits = 0;
8649
        //===//
8650
        state.mode = FLAGS;
8651
        break;
8652
      }
8653
      state.flags = 0;           /* expect zlib header */
8654
      if (state.head) {
8655
        state.head.done = false;
8656
      }
8657
      if (!(state.wrap & 1) ||   /* check if zlib header allowed */
8658
        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
8659
        strm.msg = 'incorrect header check';
8660
        state.mode = BAD;
8661
        break;
8662
      }
8663
      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
8664
        strm.msg = 'unknown compression method';
8665
        state.mode = BAD;
8666
        break;
8667
      }
8668
      //--- DROPBITS(4) ---//
8669
      hold >>>= 4;
8670
      bits -= 4;
8671
      //---//
8672
      len = (hold & 0x0f)/*BITS(4)*/ + 8;
8673
      if (state.wbits === 0) {
8674
        state.wbits = len;
8675
      }
8676
      else if (len > state.wbits) {
8677
        strm.msg = 'invalid window size';
8678
        state.mode = BAD;
8679
        break;
8680
      }
8681
      state.dmax = 1 << len;
8682
      //Tracev((stderr, "inflate:   zlib header ok\n"));
8683
      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
8684
      state.mode = hold & 0x200 ? DICTID : TYPE;
8685
      //=== INITBITS();
8686
      hold = 0;
8687
      bits = 0;
8688
      //===//
8689
      break;
8690
    case FLAGS:
8691
      //=== NEEDBITS(16); */
8692
      while (bits < 16) {
8693
        if (have === 0) { break inf_leave; }
8694
        have--;
8695
        hold += input[next++] << bits;
8696
        bits += 8;
8697
      }
8698
      //===//
8699
      state.flags = hold;
8700
      if ((state.flags & 0xff) !== Z_DEFLATED) {
8701
        strm.msg = 'unknown compression method';
8702
        state.mode = BAD;
8703
        break;
8704
      }
8705
      if (state.flags & 0xe000) {
8706
        strm.msg = 'unknown header flags set';
8707
        state.mode = BAD;
8708
        break;
8709
      }
8710
      if (state.head) {
8711
        state.head.text = ((hold >> 8) & 1);
8712
      }
8713
      if (state.flags & 0x0200) {
8714
        //=== CRC2(state.check, hold);
8715
        hbuf[0] = hold & 0xff;
8716
        hbuf[1] = (hold >>> 8) & 0xff;
8717
        state.check = crc32(state.check, hbuf, 2, 0);
8718
        //===//
8719
      }
8720
      //=== INITBITS();
8721
      hold = 0;
8722
      bits = 0;
8723
      //===//
8724
      state.mode = TIME;
8725
      /* falls through */
8726
    case TIME:
8727
      //=== NEEDBITS(32); */
8728
      while (bits < 32) {
8729
        if (have === 0) { break inf_leave; }
8730
        have--;
8731
        hold += input[next++] << bits;
8732
        bits += 8;
8733
      }
8734
      //===//
8735
      if (state.head) {
8736
        state.head.time = hold;
8737
      }
8738
      if (state.flags & 0x0200) {
8739
        //=== CRC4(state.check, hold)
8740
        hbuf[0] = hold & 0xff;
8741
        hbuf[1] = (hold >>> 8) & 0xff;
8742
        hbuf[2] = (hold >>> 16) & 0xff;
8743
        hbuf[3] = (hold >>> 24) & 0xff;
8744
        state.check = crc32(state.check, hbuf, 4, 0);
8745
        //===
8746
      }
8747
      //=== INITBITS();
8748
      hold = 0;
8749
      bits = 0;
8750
      //===//
8751
      state.mode = OS;
8752
      /* falls through */
8753
    case OS:
8754
      //=== NEEDBITS(16); */
8755
      while (bits < 16) {
8756
        if (have === 0) { break inf_leave; }
8757
        have--;
8758
        hold += input[next++] << bits;
8759
        bits += 8;
8760
      }
8761
      //===//
8762
      if (state.head) {
8763
        state.head.xflags = (hold & 0xff);
8764
        state.head.os = (hold >> 8);
8765
      }
8766
      if (state.flags & 0x0200) {
8767
        //=== CRC2(state.check, hold);
8768
        hbuf[0] = hold & 0xff;
8769
        hbuf[1] = (hold >>> 8) & 0xff;
8770
        state.check = crc32(state.check, hbuf, 2, 0);
8771
        //===//
8772
      }
8773
      //=== INITBITS();
8774
      hold = 0;
8775
      bits = 0;
8776
      //===//
8777
      state.mode = EXLEN;
8778
      /* falls through */
8779
    case EXLEN:
8780
      if (state.flags & 0x0400) {
8781
        //=== NEEDBITS(16); */
8782
        while (bits < 16) {
8783
          if (have === 0) { break inf_leave; }
8784
          have--;
8785
          hold += input[next++] << bits;
8786
          bits += 8;
8787
        }
8788
        //===//
8789
        state.length = hold;
8790
        if (state.head) {
8791
          state.head.extra_len = hold;
8792
        }
8793
        if (state.flags & 0x0200) {
8794
          //=== CRC2(state.check, hold);
8795
          hbuf[0] = hold & 0xff;
8796
          hbuf[1] = (hold >>> 8) & 0xff;
8797
          state.check = crc32(state.check, hbuf, 2, 0);
8798
          //===//
8799
        }
8800
        //=== INITBITS();
8801
        hold = 0;
8802
        bits = 0;
8803
        //===//
8804
      }
8805
      else if (state.head) {
8806
        state.head.extra = null/*Z_NULL*/;
8807
      }
8808
      state.mode = EXTRA;
8809
      /* falls through */
8810
    case EXTRA:
8811
      if (state.flags & 0x0400) {
8812
        copy = state.length;
8813
        if (copy > have) { copy = have; }
8814
        if (copy) {
8815
          if (state.head) {
8816
            len = state.head.extra_len - state.length;
8817
            if (!state.head.extra) {
8818
              // Use untyped array for more conveniend processing later
8819
              state.head.extra = new Array(state.head.extra_len);
8820
            }
8821
            utils.arraySet(
8822
              state.head.extra,
8823
              input,
8824
              next,
8825
              // extra field is limited to 65536 bytes
8826
              // - no need for additional size check
8827
              copy,
8828
              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
8829
              len
8830
            );
8831
            //zmemcpy(state.head.extra + len, next,
8832
            //        len + copy > state.head.extra_max ?
8833
            //        state.head.extra_max - len : copy);
8834
          }
8835
          if (state.flags & 0x0200) {
8836
            state.check = crc32(state.check, input, copy, next);
8837
          }
8838
          have -= copy;
8839
          next += copy;
8840
          state.length -= copy;
8841
        }
8842
        if (state.length) { break inf_leave; }
8843
      }
8844
      state.length = 0;
8845
      state.mode = NAME;
8846
      /* falls through */
8847
    case NAME:
8848
      if (state.flags & 0x0800) {
8849
        if (have === 0) { break inf_leave; }
8850
        copy = 0;
8851
        do {
8852
          // TODO: 2 or 1 bytes?
8853
          len = input[next + copy++];
8854
          /* use constant limit because in js we should not preallocate memory */
8855
          if (state.head && len &&
8856
              (state.length < 65536 /*state.head.name_max*/)) {
8857
            state.head.name += String.fromCharCode(len);
8858
          }
8859
        } while (len && copy < have);
8860
8861
        if (state.flags & 0x0200) {
8862
          state.check = crc32(state.check, input, copy, next);
8863
        }
8864
        have -= copy;
8865
        next += copy;
8866
        if (len) { break inf_leave; }
8867
      }
8868
      else if (state.head) {
8869
        state.head.name = null;
8870
      }
8871
      state.length = 0;
8872
      state.mode = COMMENT;
8873
      /* falls through */
8874
    case COMMENT:
8875
      if (state.flags & 0x1000) {
8876
        if (have === 0) { break inf_leave; }
8877
        copy = 0;
8878
        do {
8879
          len = input[next + copy++];
8880
          /* use constant limit because in js we should not preallocate memory */
8881
          if (state.head && len &&
8882
              (state.length < 65536 /*state.head.comm_max*/)) {
8883
            state.head.comment += String.fromCharCode(len);
8884
          }
8885
        } while (len && copy < have);
8886
        if (state.flags & 0x0200) {
8887
          state.check = crc32(state.check, input, copy, next);
8888
        }
8889
        have -= copy;
8890
        next += copy;
8891
        if (len) { break inf_leave; }
8892
      }
8893
      else if (state.head) {
8894
        state.head.comment = null;
8895
      }
8896
      state.mode = HCRC;
8897
      /* falls through */
8898
    case HCRC:
8899
      if (state.flags & 0x0200) {
8900
        //=== NEEDBITS(16); */
8901
        while (bits < 16) {
8902
          if (have === 0) { break inf_leave; }
8903
          have--;
8904
          hold += input[next++] << bits;
8905
          bits += 8;
8906
        }
8907
        //===//
8908
        if (hold !== (state.check & 0xffff)) {
8909
          strm.msg = 'header crc mismatch';
8910
          state.mode = BAD;
8911
          break;
8912
        }
8913
        //=== INITBITS();
8914
        hold = 0;
8915
        bits = 0;
8916
        //===//
8917
      }
8918
      if (state.head) {
8919
        state.head.hcrc = ((state.flags >> 9) & 1);
8920
        state.head.done = true;
8921
      }
8922
      strm.adler = state.check = 0;
8923
      state.mode = TYPE;
8924
      break;
8925
    case DICTID:
8926
      //=== NEEDBITS(32); */
8927
      while (bits < 32) {
8928
        if (have === 0) { break inf_leave; }
8929
        have--;
8930
        hold += input[next++] << bits;
8931
        bits += 8;
8932
      }
8933
      //===//
8934
      strm.adler = state.check = zswap32(hold);
8935
      //=== INITBITS();
8936
      hold = 0;
8937
      bits = 0;
8938
      //===//
8939
      state.mode = DICT;
8940
      /* falls through */
8941
    case DICT:
8942
      if (state.havedict === 0) {
8943
        //--- RESTORE() ---
8944
        strm.next_out = put;
8945
        strm.avail_out = left;
8946
        strm.next_in = next;
8947
        strm.avail_in = have;
8948
        state.hold = hold;
8949
        state.bits = bits;
8950
        //---
8951
        return Z_NEED_DICT;
8952
      }
8953
      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
8954
      state.mode = TYPE;
8955
      /* falls through */
8956
    case TYPE:
8957
      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
8958
      /* falls through */
8959
    case TYPEDO:
8960
      if (state.last) {
8961
        //--- BYTEBITS() ---//
8962
        hold >>>= bits & 7;
8963
        bits -= bits & 7;
8964
        //---//
8965
        state.mode = CHECK;
8966
        break;
8967
      }
8968
      //=== NEEDBITS(3); */
8969
      while (bits < 3) {
8970
        if (have === 0) { break inf_leave; }
8971
        have--;
8972
        hold += input[next++] << bits;
8973
        bits += 8;
8974
      }
8975
      //===//
8976
      state.last = (hold & 0x01)/*BITS(1)*/;
8977
      //--- DROPBITS(1) ---//
8978
      hold >>>= 1;
8979
      bits -= 1;
8980
      //---//
8981
8982
      switch ((hold & 0x03)/*BITS(2)*/) {
8983
      case 0:                             /* stored block */
8984
        //Tracev((stderr, "inflate:     stored block%s\n",
8985
        //        state.last ? " (last)" : ""));
8986
        state.mode = STORED;
8987
        break;
8988
      case 1:                             /* fixed block */
8989
        fixedtables(state);
8990
        //Tracev((stderr, "inflate:     fixed codes block%s\n",
8991
        //        state.last ? " (last)" : ""));
8992
        state.mode = LEN_;             /* decode codes */
8993
        if (flush === Z_TREES) {
8994
          //--- DROPBITS(2) ---//
8995
          hold >>>= 2;
8996
          bits -= 2;
8997
          //---//
8998
          break inf_leave;
8999
        }
9000
        break;
9001
      case 2:                             /* dynamic block */
9002
        //Tracev((stderr, "inflate:     dynamic codes block%s\n",
9003
        //        state.last ? " (last)" : ""));
9004
        state.mode = TABLE;
9005
        break;
9006
      case 3:
9007
        strm.msg = 'invalid block type';
9008
        state.mode = BAD;
9009
      }
9010
      //--- DROPBITS(2) ---//
9011
      hold >>>= 2;
9012
      bits -= 2;
9013
      //---//
9014
      break;
9015
    case STORED:
9016
      //--- BYTEBITS() ---// /* go to byte boundary */
9017
      hold >>>= bits & 7;
9018
      bits -= bits & 7;
9019
      //---//
9020
      //=== NEEDBITS(32); */
9021
      while (bits < 32) {
9022
        if (have === 0) { break inf_leave; }
9023
        have--;
9024
        hold += input[next++] << bits;
9025
        bits += 8;
9026
      }
9027
      //===//
9028
      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
9029
        strm.msg = 'invalid stored block lengths';
9030
        state.mode = BAD;
9031
        break;
9032
      }
9033
      state.length = hold & 0xffff;
9034
      //Tracev((stderr, "inflate:       stored length %u\n",
9035
      //        state.length));
9036
      //=== INITBITS();
9037
      hold = 0;
9038
      bits = 0;
9039
      //===//
9040
      state.mode = COPY_;
9041
      if (flush === Z_TREES) { break inf_leave; }
9042
      /* falls through */
9043
    case COPY_:
9044
      state.mode = COPY;
9045
      /* falls through */
9046
    case COPY:
9047
      copy = state.length;
9048
      if (copy) {
9049
        if (copy > have) { copy = have; }
9050
        if (copy > left) { copy = left; }
9051
        if (copy === 0) { break inf_leave; }
9052
        //--- zmemcpy(put, next, copy); ---
9053
        utils.arraySet(output, input, next, copy, put);
9054
        //---//
9055
        have -= copy;
9056
        next += copy;
9057
        left -= copy;
9058
        put += copy;
9059
        state.length -= copy;
9060
        break;
9061
      }
9062
      //Tracev((stderr, "inflate:       stored end\n"));
9063
      state.mode = TYPE;
9064
      break;
9065
    case TABLE:
9066
      //=== NEEDBITS(14); */
9067
      while (bits < 14) {
9068
        if (have === 0) { break inf_leave; }
9069
        have--;
9070
        hold += input[next++] << bits;
9071
        bits += 8;
9072
      }
9073
      //===//
9074
      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
9075
      //--- DROPBITS(5) ---//
9076
      hold >>>= 5;
9077
      bits -= 5;
9078
      //---//
9079
      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
9080
      //--- DROPBITS(5) ---//
9081
      hold >>>= 5;
9082
      bits -= 5;
9083
      //---//
9084
      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
9085
      //--- DROPBITS(4) ---//
9086
      hold >>>= 4;
9087
      bits -= 4;
9088
      //---//
9089
//#ifndef PKZIP_BUG_WORKAROUND
9090
      if (state.nlen > 286 || state.ndist > 30) {
9091
        strm.msg = 'too many length or distance symbols';
9092
        state.mode = BAD;
9093
        break;
9094
      }
9095
//#endif
9096
      //Tracev((stderr, "inflate:       table sizes ok\n"));
9097
      state.have = 0;
9098
      state.mode = LENLENS;
9099
      /* falls through */
9100
    case LENLENS:
9101
      while (state.have < state.ncode) {
9102
        //=== NEEDBITS(3);
9103
        while (bits < 3) {
9104
          if (have === 0) { break inf_leave; }
9105
          have--;
9106
          hold += input[next++] << bits;
9107
          bits += 8;
9108
        }
9109
        //===//
9110
        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
9111
        //--- DROPBITS(3) ---//
9112
        hold >>>= 3;
9113
        bits -= 3;
9114
        //---//
9115
      }
9116
      while (state.have < 19) {
9117
        state.lens[order[state.have++]] = 0;
9118
      }
9119
      // We have separate tables & no pointers. 2 commented lines below not needed.
9120
      //state.next = state.codes;
9121
      //state.lencode = state.next;
9122
      // Switch to use dynamic table
9123
      state.lencode = state.lendyn;
9124
      state.lenbits = 7;
9125
9126
      opts = { bits: state.lenbits };
9127
      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
9128
      state.lenbits = opts.bits;
9129
9130
      if (ret) {
9131
        strm.msg = 'invalid code lengths set';
9132
        state.mode = BAD;
9133
        break;
9134
      }
9135
      //Tracev((stderr, "inflate:       code lengths ok\n"));
9136
      state.have = 0;
9137
      state.mode = CODELENS;
9138
      /* falls through */
9139
    case CODELENS:
9140
      while (state.have < state.nlen + state.ndist) {
9141
        for (;;) {
9142
          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
9143
          here_bits = here >>> 24;
9144
          here_op = (here >>> 16) & 0xff;
9145
          here_val = here & 0xffff;
9146
9147
          if ((here_bits) <= bits) { break; }
9148
          //--- PULLBYTE() ---//
9149
          if (have === 0) { break inf_leave; }
9150
          have--;
9151
          hold += input[next++] << bits;
9152
          bits += 8;
9153
          //---//
9154
        }
9155
        if (here_val < 16) {
9156
          //--- DROPBITS(here.bits) ---//
9157
          hold >>>= here_bits;
9158
          bits -= here_bits;
9159
          //---//
9160
          state.lens[state.have++] = here_val;
9161
        }
9162
        else {
9163
          if (here_val === 16) {
9164
            //=== NEEDBITS(here.bits + 2);
9165
            n = here_bits + 2;
9166
            while (bits < n) {
9167
              if (have === 0) { break inf_leave; }
9168
              have--;
9169
              hold += input[next++] << bits;
9170
              bits += 8;
9171
            }
9172
            //===//
9173
            //--- DROPBITS(here.bits) ---//
9174
            hold >>>= here_bits;
9175
            bits -= here_bits;
9176
            //---//
9177
            if (state.have === 0) {
9178
              strm.msg = 'invalid bit length repeat';
9179
              state.mode = BAD;
9180
              break;
9181
            }
9182
            len = state.lens[state.have - 1];
9183
            copy = 3 + (hold & 0x03);//BITS(2);
9184
            //--- DROPBITS(2) ---//
9185
            hold >>>= 2;
9186
            bits -= 2;
9187
            //---//
9188
          }
9189
          else if (here_val === 17) {
9190
            //=== NEEDBITS(here.bits + 3);
9191
            n = here_bits + 3;
9192
            while (bits < n) {
9193
              if (have === 0) { break inf_leave; }
9194
              have--;
9195
              hold += input[next++] << bits;
9196
              bits += 8;
9197
            }
9198
            //===//
9199
            //--- DROPBITS(here.bits) ---//
9200
            hold >>>= here_bits;
9201
            bits -= here_bits;
9202
            //---//
9203
            len = 0;
9204
            copy = 3 + (hold & 0x07);//BITS(3);
9205
            //--- DROPBITS(3) ---//
9206
            hold >>>= 3;
9207
            bits -= 3;
9208
            //---//
9209
          }
9210
          else {
9211
            //=== NEEDBITS(here.bits + 7);
9212
            n = here_bits + 7;
9213
            while (bits < n) {
9214
              if (have === 0) { break inf_leave; }
9215
              have--;
9216
              hold += input[next++] << bits;
9217
              bits += 8;
9218
            }
9219
            //===//
9220
            //--- DROPBITS(here.bits) ---//
9221
            hold >>>= here_bits;
9222
            bits -= here_bits;
9223
            //---//
9224
            len = 0;
9225
            copy = 11 + (hold & 0x7f);//BITS(7);
9226
            //--- DROPBITS(7) ---//
9227
            hold >>>= 7;
9228
            bits -= 7;
9229
            //---//
9230
          }
9231
          if (state.have + copy > state.nlen + state.ndist) {
9232
            strm.msg = 'invalid bit length repeat';
9233
            state.mode = BAD;
9234
            break;
9235
          }
9236
          while (copy--) {
9237
            state.lens[state.have++] = len;
9238
          }
9239
        }
9240
      }
9241
9242
      /* handle error breaks in while */
9243
      if (state.mode === BAD) { break; }
9244
9245
      /* check for end-of-block code (better have one) */
9246
      if (state.lens[256] === 0) {
9247
        strm.msg = 'invalid code -- missing end-of-block';
9248
        state.mode = BAD;
9249
        break;
9250
      }
9251
9252
      /* build code tables -- note: do not change the lenbits or distbits
9253
         values here (9 and 6) without reading the comments in inftrees.h
9254
         concerning the ENOUGH constants, which depend on those values */
9255
      state.lenbits = 9;
9256
9257
      opts = { bits: state.lenbits };
9258
      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
9259
      // We have separate tables & no pointers. 2 commented lines below not needed.
9260
      // state.next_index = opts.table_index;
9261
      state.lenbits = opts.bits;
9262
      // state.lencode = state.next;
9263
9264
      if (ret) {
9265
        strm.msg = 'invalid literal/lengths set';
9266
        state.mode = BAD;
9267
        break;
9268
      }
9269
9270
      state.distbits = 6;
9271
      //state.distcode.copy(state.codes);
9272
      // Switch to use dynamic table
9273
      state.distcode = state.distdyn;
9274
      opts = { bits: state.distbits };
9275
      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
9276
      // We have separate tables & no pointers. 2 commented lines below not needed.
9277
      // state.next_index = opts.table_index;
9278
      state.distbits = opts.bits;
9279
      // state.distcode = state.next;
9280
9281
      if (ret) {
9282
        strm.msg = 'invalid distances set';
9283
        state.mode = BAD;
9284
        break;
9285
      }
9286
      //Tracev((stderr, 'inflate:       codes ok\n'));
9287
      state.mode = LEN_;
9288
      if (flush === Z_TREES) { break inf_leave; }
9289
      /* falls through */
9290
    case LEN_:
9291
      state.mode = LEN;
9292
      /* falls through */
9293
    case LEN:
9294
      if (have >= 6 && left >= 258) {
9295
        //--- RESTORE() ---
9296
        strm.next_out = put;
9297
        strm.avail_out = left;
9298
        strm.next_in = next;
9299
        strm.avail_in = have;
9300
        state.hold = hold;
9301
        state.bits = bits;
9302
        //---
9303
        inflate_fast(strm, _out);
9304
        //--- LOAD() ---
9305
        put = strm.next_out;
9306
        output = strm.output;
9307
        left = strm.avail_out;
9308
        next = strm.next_in;
9309
        input = strm.input;
9310
        have = strm.avail_in;
9311
        hold = state.hold;
9312
        bits = state.bits;
9313
        //---
9314
9315
        if (state.mode === TYPE) {
9316
          state.back = -1;
9317
        }
9318
        break;
9319
      }
9320
      state.back = 0;
9321
      for (;;) {
9322
        here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
9323
        here_bits = here >>> 24;
9324
        here_op = (here >>> 16) & 0xff;
9325
        here_val = here & 0xffff;
9326
9327
        if (here_bits <= bits) { break; }
9328
        //--- PULLBYTE() ---//
9329
        if (have === 0) { break inf_leave; }
9330
        have--;
9331
        hold += input[next++] << bits;
9332
        bits += 8;
9333
        //---//
9334
      }
9335
      if (here_op && (here_op & 0xf0) === 0) {
9336
        last_bits = here_bits;
9337
        last_op = here_op;
9338
        last_val = here_val;
9339
        for (;;) {
9340
          here = state.lencode[last_val +
9341
                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
9342
          here_bits = here >>> 24;
9343
          here_op = (here >>> 16) & 0xff;
9344
          here_val = here & 0xffff;
9345
9346
          if ((last_bits + here_bits) <= bits) { break; }
9347
          //--- PULLBYTE() ---//
9348
          if (have === 0) { break inf_leave; }
9349
          have--;
9350
          hold += input[next++] << bits;
9351
          bits += 8;
9352
          //---//
9353
        }
9354
        //--- DROPBITS(last.bits) ---//
9355
        hold >>>= last_bits;
9356
        bits -= last_bits;
9357
        //---//
9358
        state.back += last_bits;
9359
      }
9360
      //--- DROPBITS(here.bits) ---//
9361
      hold >>>= here_bits;
9362
      bits -= here_bits;
9363
      //---//
9364
      state.back += here_bits;
9365
      state.length = here_val;
9366
      if (here_op === 0) {
9367
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
9368
        //        "inflate:         literal '%c'\n" :
9369
        //        "inflate:         literal 0x%02x\n", here.val));
9370
        state.mode = LIT;
9371
        break;
9372
      }
9373
      if (here_op & 32) {
9374
        //Tracevv((stderr, "inflate:         end of block\n"));
9375
        state.back = -1;
9376
        state.mode = TYPE;
9377
        break;
9378
      }
9379
      if (here_op & 64) {
9380
        strm.msg = 'invalid literal/length code';
9381
        state.mode = BAD;
9382
        break;
9383
      }
9384
      state.extra = here_op & 15;
9385
      state.mode = LENEXT;
9386
      /* falls through */
9387
    case LENEXT:
9388
      if (state.extra) {
9389
        //=== NEEDBITS(state.extra);
9390
        n = state.extra;
9391
        while (bits < n) {
9392
          if (have === 0) { break inf_leave; }
9393
          have--;
9394
          hold += input[next++] << bits;
9395
          bits += 8;
9396
        }
9397
        //===//
9398
        state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
9399
        //--- DROPBITS(state.extra) ---//
9400
        hold >>>= state.extra;
9401
        bits -= state.extra;
9402
        //---//
9403
        state.back += state.extra;
9404
      }
9405
      //Tracevv((stderr, "inflate:         length %u\n", state.length));
9406
      state.was = state.length;
9407
      state.mode = DIST;
9408
      /* falls through */
9409
    case DIST:
9410
      for (;;) {
9411
        here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
9412
        here_bits = here >>> 24;
9413
        here_op = (here >>> 16) & 0xff;
9414
        here_val = here & 0xffff;
9415
9416
        if ((here_bits) <= bits) { break; }
9417
        //--- PULLBYTE() ---//
9418
        if (have === 0) { break inf_leave; }
9419
        have--;
9420
        hold += input[next++] << bits;
9421
        bits += 8;
9422
        //---//
9423
      }
9424
      if ((here_op & 0xf0) === 0) {
9425
        last_bits = here_bits;
9426
        last_op = here_op;
9427
        last_val = here_val;
9428
        for (;;) {
9429
          here = state.distcode[last_val +
9430
                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
9431
          here_bits = here >>> 24;
9432
          here_op = (here >>> 16) & 0xff;
9433
          here_val = here & 0xffff;
9434
9435
          if ((last_bits + here_bits) <= bits) { break; }
9436
          //--- PULLBYTE() ---//
9437
          if (have === 0) { break inf_leave; }
9438
          have--;
9439
          hold += input[next++] << bits;
9440
          bits += 8;
9441
          //---//
9442
        }
9443
        //--- DROPBITS(last.bits) ---//
9444
        hold >>>= last_bits;
9445
        bits -= last_bits;
9446
        //---//
9447
        state.back += last_bits;
9448
      }
9449
      //--- DROPBITS(here.bits) ---//
9450
      hold >>>= here_bits;
9451
      bits -= here_bits;
9452
      //---//
9453
      state.back += here_bits;
9454
      if (here_op & 64) {
9455
        strm.msg = 'invalid distance code';
9456
        state.mode = BAD;
9457
        break;
9458
      }
9459
      state.offset = here_val;
9460
      state.extra = (here_op) & 15;
9461
      state.mode = DISTEXT;
9462
      /* falls through */
9463
    case DISTEXT:
9464
      if (state.extra) {
9465
        //=== NEEDBITS(state.extra);
9466
        n = state.extra;
9467
        while (bits < n) {
9468
          if (have === 0) { break inf_leave; }
9469
          have--;
9470
          hold += input[next++] << bits;
9471
          bits += 8;
9472
        }
9473
        //===//
9474
        state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
9475
        //--- DROPBITS(state.extra) ---//
9476
        hold >>>= state.extra;
9477
        bits -= state.extra;
9478
        //---//
9479
        state.back += state.extra;
9480
      }
9481
//#ifdef INFLATE_STRICT
9482
      if (state.offset > state.dmax) {
9483
        strm.msg = 'invalid distance too far back';
9484
        state.mode = BAD;
9485
        break;
9486
      }
9487
//#endif
9488
      //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
9489
      state.mode = MATCH;
9490
      /* falls through */
9491
    case MATCH:
9492
      if (left === 0) { break inf_leave; }
9493
      copy = _out - left;
9494
      if (state.offset > copy) {         /* copy from window */
9495
        copy = state.offset - copy;
9496
        if (copy > state.whave) {
9497
          if (state.sane) {
9498
            strm.msg = 'invalid distance too far back';
9499
            state.mode = BAD;
9500
            break;
9501
          }
9502
// (!) This block is disabled in zlib defailts,
9503
// don't enable it for binary compatibility
9504
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
9505
//          Trace((stderr, "inflate.c too far\n"));
9506
//          copy -= state.whave;
9507
//          if (copy > state.length) { copy = state.length; }
9508
//          if (copy > left) { copy = left; }
9509
//          left -= copy;
9510
//          state.length -= copy;
9511
//          do {
9512
//            output[put++] = 0;
9513
//          } while (--copy);
9514
//          if (state.length === 0) { state.mode = LEN; }
9515
//          break;
9516
//#endif
9517
        }
9518
        if (copy > state.wnext) {
9519
          copy -= state.wnext;
9520
          from = state.wsize - copy;
9521
        }
9522
        else {
9523
          from = state.wnext - copy;
9524
        }
9525
        if (copy > state.length) { copy = state.length; }
9526
        from_source = state.window;
9527
      }
9528
      else {                              /* copy from output */
9529
        from_source = output;
9530
        from = put - state.offset;
9531
        copy = state.length;
9532
      }
9533
      if (copy > left) { copy = left; }
9534
      left -= copy;
9535
      state.length -= copy;
9536
      do {
9537
        output[put++] = from_source[from++];
9538
      } while (--copy);
9539
      if (state.length === 0) { state.mode = LEN; }
9540
      break;
9541
    case LIT:
9542
      if (left === 0) { break inf_leave; }
9543
      output[put++] = state.length;
9544
      left--;
9545
      state.mode = LEN;
9546
      break;
9547
    case CHECK:
9548
      if (state.wrap) {
9549
        //=== NEEDBITS(32);
9550
        while (bits < 32) {
9551
          if (have === 0) { break inf_leave; }
9552
          have--;
9553
          // Use '|' insdead of '+' to make sure that result is signed
9554
          hold |= input[next++] << bits;
9555
          bits += 8;
9556
        }
9557
        //===//
9558
        _out -= left;
9559
        strm.total_out += _out;
9560
        state.total += _out;
9561
        if (_out) {
9562
          strm.adler = state.check =
9563
              /*UPDATE(state.check, put - _out, _out);*/
9564
              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
9565
9566
        }
9567
        _out = left;
9568
        // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
9569
        if ((state.flags ? hold : zswap32(hold)) !== state.check) {
9570
          strm.msg = 'incorrect data check';
9571
          state.mode = BAD;
9572
          break;
9573
        }
9574
        //=== INITBITS();
9575
        hold = 0;
9576
        bits = 0;
9577
        //===//
9578
        //Tracev((stderr, "inflate:   check matches trailer\n"));
9579
      }
9580
      state.mode = LENGTH;
9581
      /* falls through */
9582
    case LENGTH:
9583
      if (state.wrap && state.flags) {
9584
        //=== NEEDBITS(32);
9585
        while (bits < 32) {
9586
          if (have === 0) { break inf_leave; }
9587
          have--;
9588
          hold += input[next++] << bits;
9589
          bits += 8;
9590
        }
9591
        //===//
9592
        if (hold !== (state.total & 0xffffffff)) {
9593
          strm.msg = 'incorrect length check';
9594
          state.mode = BAD;
9595
          break;
9596
        }
9597
        //=== INITBITS();
9598
        hold = 0;
9599
        bits = 0;
9600
        //===//
9601
        //Tracev((stderr, "inflate:   length matches trailer\n"));
9602
      }
9603
      state.mode = DONE;
9604
      /* falls through */
9605
    case DONE:
9606
      ret = Z_STREAM_END;
9607
      break inf_leave;
9608
    case BAD:
9609
      ret = Z_DATA_ERROR;
9610
      break inf_leave;
9611
    case MEM:
9612
      return Z_MEM_ERROR;
9613
    case SYNC:
9614
      /* falls through */
9615
    default:
9616
      return Z_STREAM_ERROR;
9617
    }
9618
  }
9619
9620
  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
9621
9622
  /*
9623
     Return from inflate(), updating the total counts and the check value.
9624
     If there was no progress during the inflate() call, return a buffer
9625
     error.  Call updatewindow() to create and/or update the window state.
9626
     Note: a memory error from inflate() is non-recoverable.
9627
   */
9628
9629
  //--- RESTORE() ---
9630
  strm.next_out = put;
9631
  strm.avail_out = left;
9632
  strm.next_in = next;
9633
  strm.avail_in = have;
9634
  state.hold = hold;
9635
  state.bits = bits;
9636
  //---
9637
9638
  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
9639
                      (state.mode < CHECK || flush !== Z_FINISH))) {
9640
    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
9641
      state.mode = MEM;
9642
      return Z_MEM_ERROR;
9643
    }
9644
  }
9645
  _in -= strm.avail_in;
9646
  _out -= strm.avail_out;
9647
  strm.total_in += _in;
9648
  strm.total_out += _out;
9649
  state.total += _out;
9650
  if (state.wrap && _out) {
9651
    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
9652
      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
9653
  }
9654
  strm.data_type = state.bits + (state.last ? 64 : 0) +
9655
                    (state.mode === TYPE ? 128 : 0) +
9656
                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
9657
  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
9658
    ret = Z_BUF_ERROR;
9659
  }
9660
  return ret;
9661
}
9662
9663
function inflateEnd(strm) {
9664
9665
  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
9666
    return Z_STREAM_ERROR;
9667
  }
9668
9669
  var state = strm.state;
9670
  if (state.window) {
9671
    state.window = null;
9672
  }
9673
  strm.state = null;
9674
  return Z_OK;
9675
}
9676
9677
function inflateGetHeader(strm, head) {
9678
  var state;
9679
9680
  /* check state */
9681
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
9682
  state = strm.state;
9683
  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
9684
9685
  /* save header structure */
9686
  state.head = head;
9687
  head.done = false;
9688
  return Z_OK;
9689
}
9690
9691
function inflateSetDictionary(strm, dictionary) {
9692
  var dictLength = dictionary.length;
9693
9694
  var state;
9695
  var dictid;
9696
  var ret;
9697
9698
  /* check state */
9699
  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
9700
  state = strm.state;
9701
9702
  if (state.wrap !== 0 && state.mode !== DICT) {
9703
    return Z_STREAM_ERROR;
9704
  }
9705
9706
  /* check for correct dictionary identifier */
9707
  if (state.mode === DICT) {
9708
    dictid = 1; /* adler32(0, null, 0)*/
9709
    /* dictid = adler32(dictid, dictionary, dictLength); */
9710
    dictid = adler32(dictid, dictionary, dictLength, 0);
9711
    if (dictid !== state.check) {
9712
      return Z_DATA_ERROR;
9713
    }
9714
  }
9715
  /* copy dictionary to window using updatewindow(), which will amend the
9716
   existing dictionary if appropriate */
9717
  ret = updatewindow(strm, dictionary, dictLength, dictLength);
9718
  if (ret) {
9719
    state.mode = MEM;
9720
    return Z_MEM_ERROR;
9721
  }
9722
  state.havedict = 1;
9723
  // Tracev((stderr, "inflate:   dictionary set\n"));
9724
  return Z_OK;
9725
}
9726
9727
exports.inflateReset = inflateReset;
9728
exports.inflateReset2 = inflateReset2;
9729
exports.inflateResetKeep = inflateResetKeep;
9730
exports.inflateInit = inflateInit;
9731
exports.inflateInit2 = inflateInit2;
9732
exports.inflate = inflate;
9733
exports.inflateEnd = inflateEnd;
9734
exports.inflateGetHeader = inflateGetHeader;
9735
exports.inflateSetDictionary = inflateSetDictionary;
9736
exports.inflateInfo = 'pako inflate (from Nodeca project)';
9737
9738
/* Not implemented
9739
exports.inflateCopy = inflateCopy;
9740
exports.inflateGetDictionary = inflateGetDictionary;
9741
exports.inflateMark = inflateMark;
9742
exports.inflatePrime = inflatePrime;
9743
exports.inflateSync = inflateSync;
9744
exports.inflateSyncPoint = inflateSyncPoint;
9745
exports.inflateUndermine = inflateUndermine;
9746
*/
9747
9748
},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(require,module,exports){
9749
'use strict';
9750
9751
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
9752
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
9753
//
9754
// This software is provided 'as-is', without any express or implied
9755
// warranty. In no event will the authors be held liable for any damages
9756
// arising from the use of this software.
9757
//
9758
// Permission is granted to anyone to use this software for any purpose,
9759
// including commercial applications, and to alter it and redistribute it
9760
// freely, subject to the following restrictions:
9761
//
9762
// 1. The origin of this software must not be misrepresented; you must not
9763
//   claim that you wrote the original software. If you use this software
9764
//   in a product, an acknowledgment in the product documentation would be
9765
//   appreciated but is not required.
9766
// 2. Altered source versions must be plainly marked as such, and must not be
9767
//   misrepresented as being the original software.
9768
// 3. This notice may not be removed or altered from any source distribution.
9769
9770
var utils = require('../utils/common');
9771
9772
var MAXBITS = 15;
9773
var ENOUGH_LENS = 852;
9774
var ENOUGH_DISTS = 592;
9775
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
9776
9777
var CODES = 0;
9778
var LENS = 1;
9779
var DISTS = 2;
9780
9781
var lbase = [ /* Length codes 257..285 base */
9782
  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
9783
  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
9784
];
9785
9786
var lext = [ /* Length codes 257..285 extra */
9787
  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
9788
  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
9789
];
9790
9791
var dbase = [ /* Distance codes 0..29 base */
9792
  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
9793
  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
9794
  8193, 12289, 16385, 24577, 0, 0
9795
];
9796
9797
var dext = [ /* Distance codes 0..29 extra */
9798
  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
9799
  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
9800
  28, 28, 29, 29, 64, 64
9801
];
9802
9803
module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
9804
{
9805
  var bits = opts.bits;
9806
      //here = opts.here; /* table entry for duplication */
9807
9808
  var len = 0;               /* a code's length in bits */
9809
  var sym = 0;               /* index of code symbols */
9810
  var min = 0, max = 0;          /* minimum and maximum code lengths */
9811
  var root = 0;              /* number of index bits for root table */
9812
  var curr = 0;              /* number of index bits for current table */
9813
  var drop = 0;              /* code bits to drop for sub-table */
9814
  var left = 0;                   /* number of prefix codes available */
9815
  var used = 0;              /* code entries in table used */
9816
  var huff = 0;              /* Huffman code */
9817
  var incr;              /* for incrementing code, index */
9818
  var fill;              /* index for replicating entries */
9819
  var low;               /* low bits for current root entry */
9820
  var mask;              /* mask for low root bits */
9821
  var next;             /* next available space in table */
9822
  var base = null;     /* base value table to use */
9823
  var base_index = 0;
9824
//  var shoextra;    /* extra bits table to use */
9825
  var end;                    /* use base and extra for symbol > end */
9826
  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
9827
  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
9828
  var extra = null;
9829
  var extra_index = 0;
9830
9831
  var here_bits, here_op, here_val;
9832
9833
  /*
9834
   Process a set of code lengths to create a canonical Huffman code.  The
9835
   code lengths are lens[0..codes-1].  Each length corresponds to the
9836
   symbols 0..codes-1.  The Huffman code is generated by first sorting the
9837
   symbols by length from short to long, and retaining the symbol order
9838
   for codes with equal lengths.  Then the code starts with all zero bits
9839
   for the first code of the shortest length, and the codes are integer
9840
   increments for the same length, and zeros are appended as the length
9841
   increases.  For the deflate format, these bits are stored backwards
9842
   from their more natural integer increment ordering, and so when the
9843
   decoding tables are built in the large loop below, the integer codes
9844
   are incremented backwards.
9845
9846
   This routine assumes, but does not check, that all of the entries in
9847
   lens[] are in the range 0..MAXBITS.  The caller must assure this.
9848
   1..MAXBITS is interpreted as that code length.  zero means that that
9849
   symbol does not occur in this code.
9850
9851
   The codes are sorted by computing a count of codes for each length,
9852
   creating from that a table of starting indices for each length in the
9853
   sorted table, and then entering the symbols in order in the sorted
9854
   table.  The sorted table is work[], with that space being provided by
9855
   the caller.
9856
9857
   The length counts are used for other purposes as well, i.e. finding
9858
   the minimum and maximum length codes, determining if there are any
9859
   codes at all, checking for a valid set of lengths, and looking ahead
9860
   at length counts to determine sub-table sizes when building the
9861
   decoding tables.
9862
   */
9863
9864
  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
9865
  for (len = 0; len <= MAXBITS; len++) {
9866
    count[len] = 0;
9867
  }
9868
  for (sym = 0; sym < codes; sym++) {
9869
    count[lens[lens_index + sym]]++;
9870
  }
9871
9872
  /* bound code lengths, force root to be within code lengths */
9873
  root = bits;
9874
  for (max = MAXBITS; max >= 1; max--) {
9875
    if (count[max] !== 0) { break; }
9876
  }
9877
  if (root > max) {
9878
    root = max;
9879
  }
9880
  if (max === 0) {                     /* no symbols to code at all */
9881
    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
9882
    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
9883
    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
9884
    table[table_index++] = (1 << 24) | (64 << 16) | 0;
9885
9886
9887
    //table.op[opts.table_index] = 64;
9888
    //table.bits[opts.table_index] = 1;
9889
    //table.val[opts.table_index++] = 0;
9890
    table[table_index++] = (1 << 24) | (64 << 16) | 0;
9891
9892
    opts.bits = 1;
9893
    return 0;     /* no symbols, but wait for decoding to report error */
9894
  }
9895
  for (min = 1; min < max; min++) {
9896
    if (count[min] !== 0) { break; }
9897
  }
9898
  if (root < min) {
9899
    root = min;
9900
  }
9901
9902
  /* check for an over-subscribed or incomplete set of lengths */
9903
  left = 1;
9904
  for (len = 1; len <= MAXBITS; len++) {
9905
    left <<= 1;
9906
    left -= count[len];
9907
    if (left < 0) {
9908
      return -1;
9909
    }        /* over-subscribed */
9910
  }
9911
  if (left > 0 && (type === CODES || max !== 1)) {
9912
    return -1;                      /* incomplete set */
9913
  }
9914
9915
  /* generate offsets into symbol table for each length for sorting */
9916
  offs[1] = 0;
9917
  for (len = 1; len < MAXBITS; len++) {
9918
    offs[len + 1] = offs[len] + count[len];
9919
  }
9920
9921
  /* sort symbols by length, by symbol order within each length */
9922
  for (sym = 0; sym < codes; sym++) {
9923
    if (lens[lens_index + sym] !== 0) {
9924
      work[offs[lens[lens_index + sym]]++] = sym;
9925
    }
9926
  }
9927
9928
  /*
9929
   Create and fill in decoding tables.  In this loop, the table being
9930
   filled is at next and has curr index bits.  The code being used is huff
9931
   with length len.  That code is converted to an index by dropping drop
9932
   bits off of the bottom.  For codes where len is less than drop + curr,
9933
   those top drop + curr - len bits are incremented through all values to
9934
   fill the table with replicated entries.
9935
9936
   root is the number of index bits for the root table.  When len exceeds
9937
   root, sub-tables are created pointed to by the root entry with an index
9938
   of the low root bits of huff.  This is saved in low to check for when a
9939
   new sub-table should be started.  drop is zero when the root table is
9940
   being filled, and drop is root when sub-tables are being filled.
9941
9942
   When a new sub-table is needed, it is necessary to look ahead in the
9943
   code lengths to determine what size sub-table is needed.  The length
9944
   counts are used for this, and so count[] is decremented as codes are
9945
   entered in the tables.
9946
9947
   used keeps track of how many table entries have been allocated from the
9948
   provided *table space.  It is checked for LENS and DIST tables against
9949
   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
9950
   the initial root table size constants.  See the comments in inftrees.h
9951
   for more information.
9952
9953
   sym increments through all symbols, and the loop terminates when
9954
   all codes of length max, i.e. all codes, have been processed.  This
9955
   routine permits incomplete codes, so another loop after this one fills
9956
   in the rest of the decoding tables with invalid code markers.
9957
   */
9958
9959
  /* set up for code type */
9960
  // poor man optimization - use if-else instead of switch,
9961
  // to avoid deopts in old v8
9962
  if (type === CODES) {
9963
    base = extra = work;    /* dummy value--not used */
9964
    end = 19;
9965
9966
  } else if (type === LENS) {
9967
    base = lbase;
9968
    base_index -= 257;
9969
    extra = lext;
9970
    extra_index -= 257;
9971
    end = 256;
9972
9973
  } else {                    /* DISTS */
9974
    base = dbase;
9975
    extra = dext;
9976
    end = -1;
9977
  }
9978
9979
  /* initialize opts for loop */
9980
  huff = 0;                   /* starting code */
9981
  sym = 0;                    /* starting code symbol */
9982
  len = min;                  /* starting code length */
9983
  next = table_index;              /* current table to fill in */
9984
  curr = root;                /* current table index bits */
9985
  drop = 0;                   /* current bits to drop from code for index */
9986
  low = -1;                   /* trigger new sub-table when len > root */
9987
  used = 1 << root;          /* use root table entries */
9988
  mask = used - 1;            /* mask for comparing low */
9989
9990
  /* check available table space */
9991
  if ((type === LENS && used > ENOUGH_LENS) ||
9992
    (type === DISTS && used > ENOUGH_DISTS)) {
9993
    return 1;
9994
  }
9995
9996
  /* process all codes and make table entries */
9997
  for (;;) {
9998
    /* create table entry */
9999
    here_bits = len - drop;
10000
    if (work[sym] < end) {
10001
      here_op = 0;
10002
      here_val = work[sym];
10003
    }
10004
    else if (work[sym] > end) {
10005
      here_op = extra[extra_index + work[sym]];
10006
      here_val = base[base_index + work[sym]];
10007
    }
10008
    else {
10009
      here_op = 32 + 64;         /* end of block */
10010
      here_val = 0;
10011
    }
10012
10013
    /* replicate for those indices with low len bits equal to huff */
10014
    incr = 1 << (len - drop);
10015
    fill = 1 << curr;
10016
    min = fill;                 /* save offset to next table */
10017
    do {
10018
      fill -= incr;
10019
      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
10020
    } while (fill !== 0);
10021
10022
    /* backwards increment the len-bit code huff */
10023
    incr = 1 << (len - 1);
10024
    while (huff & incr) {
10025
      incr >>= 1;
10026
    }
10027
    if (incr !== 0) {
10028
      huff &= incr - 1;
10029
      huff += incr;
10030
    } else {
10031
      huff = 0;
10032
    }
10033
10034
    /* go to next symbol, update count, len */
10035
    sym++;
10036
    if (--count[len] === 0) {
10037
      if (len === max) { break; }
10038
      len = lens[lens_index + work[sym]];
10039
    }
10040
10041
    /* create new sub-table if needed */
10042
    if (len > root && (huff & mask) !== low) {
10043
      /* if first time, transition to sub-tables */
10044
      if (drop === 0) {
10045
        drop = root;
10046
      }
10047
10048
      /* increment past last table */
10049
      next += min;            /* here min is 1 << curr */
10050
10051
      /* determine length of next table */
10052
      curr = len - drop;
10053
      left = 1 << curr;
10054
      while (curr + drop < max) {
10055
        left -= count[curr + drop];
10056
        if (left <= 0) { break; }
10057
        curr++;
10058
        left <<= 1;
10059
      }
10060
10061
      /* check for enough space */
10062
      used += 1 << curr;
10063
      if ((type === LENS && used > ENOUGH_LENS) ||
10064
        (type === DISTS && used > ENOUGH_DISTS)) {
10065
        return 1;
10066
      }
10067
10068
      /* point entry in root table to sub-table */
10069
      low = huff & mask;
10070
      /*table.op[low] = curr;
10071
      table.bits[low] = root;
10072
      table.val[low] = next - opts.table_index;*/
10073
      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
10074
    }
10075
  }
10076
10077
  /* fill in remaining table entry if code is incomplete (guaranteed to have
10078
   at most one remaining entry, since if the code is incomplete, the
10079
   maximum code length that was allowed to get this far is one bit) */
10080
  if (huff !== 0) {
10081
    //table.op[next + huff] = 64;            /* invalid code marker */
10082
    //table.bits[next + huff] = len - drop;
10083
    //table.val[next + huff] = 0;
10084
    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
10085
  }
10086
10087
  /* set return parameters */
10088
  //opts.table_index += used;
10089
  opts.bits = root;
10090
  return 0;
10091
};
10092
10093
},{"../utils/common":41}],51:[function(require,module,exports){
10094
'use strict';
10095
10096
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
10097
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
10098
//
10099
// This software is provided 'as-is', without any express or implied
10100
// warranty. In no event will the authors be held liable for any damages
10101
// arising from the use of this software.
10102
//
10103
// Permission is granted to anyone to use this software for any purpose,
10104
// including commercial applications, and to alter it and redistribute it
10105
// freely, subject to the following restrictions:
10106
//
10107
// 1. The origin of this software must not be misrepresented; you must not
10108
//   claim that you wrote the original software. If you use this software
10109
//   in a product, an acknowledgment in the product documentation would be
10110
//   appreciated but is not required.
10111
// 2. Altered source versions must be plainly marked as such, and must not be
10112
//   misrepresented as being the original software.
10113
// 3. This notice may not be removed or altered from any source distribution.
10114
10115
module.exports = {
10116
  2:      'need dictionary',     /* Z_NEED_DICT       2  */
10117
  1:      'stream end',          /* Z_STREAM_END      1  */
10118
  0:      '',                    /* Z_OK              0  */
10119
  '-1':   'file error',          /* Z_ERRNO         (-1) */
10120
  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
10121
  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
10122
  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
10123
  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
10124
  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
10125
};
10126
10127
},{}],52:[function(require,module,exports){
10128
'use strict';
10129
10130
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
10131
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
10132
//
10133
// This software is provided 'as-is', without any express or implied
10134
// warranty. In no event will the authors be held liable for any damages
10135
// arising from the use of this software.
10136
//
10137
// Permission is granted to anyone to use this software for any purpose,
10138
// including commercial applications, and to alter it and redistribute it
10139
// freely, subject to the following restrictions:
10140
//
10141
// 1. The origin of this software must not be misrepresented; you must not
10142
//   claim that you wrote the original software. If you use this software
10143
//   in a product, an acknowledgment in the product documentation would be
10144
//   appreciated but is not required.
10145
// 2. Altered source versions must be plainly marked as such, and must not be
10146
//   misrepresented as being the original software.
10147
// 3. This notice may not be removed or altered from any source distribution.
10148
10149
var utils = require('../utils/common');
10150
10151
/* Public constants ==========================================================*/
10152
/* ===========================================================================*/
10153
10154
10155
//var Z_FILTERED          = 1;
10156
//var Z_HUFFMAN_ONLY      = 2;
10157
//var Z_RLE               = 3;
10158
var Z_FIXED               = 4;
10159
//var Z_DEFAULT_STRATEGY  = 0;
10160
10161
/* Possible values of the data_type field (though see inflate()) */
10162
var Z_BINARY              = 0;
10163
var Z_TEXT                = 1;
10164
//var Z_ASCII             = 1; // = Z_TEXT
10165
var Z_UNKNOWN             = 2;
10166
10167
/*============================================================================*/
10168
10169
10170
function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
10171
10172
// From zutil.h
10173
10174
var STORED_BLOCK = 0;
10175
var STATIC_TREES = 1;
10176
var DYN_TREES    = 2;
10177
/* The three kinds of block type */
10178
10179
var MIN_MATCH    = 3;
10180
var MAX_MATCH    = 258;
10181
/* The minimum and maximum match lengths */
10182
10183
// From deflate.h
10184
/* ===========================================================================
10185
 * Internal compression state.
10186
 */
10187
10188
var LENGTH_CODES  = 29;
10189
/* number of length codes, not counting the special END_BLOCK code */
10190
10191
var LITERALS      = 256;
10192
/* number of literal bytes 0..255 */
10193
10194
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
10195
/* number of Literal or Length codes, including the END_BLOCK code */
10196
10197
var D_CODES       = 30;
10198
/* number of distance codes */
10199
10200
var BL_CODES      = 19;
10201
/* number of codes used to transfer the bit lengths */
10202
10203
var HEAP_SIZE     = 2 * L_CODES + 1;
10204
/* maximum heap size */
10205
10206
var MAX_BITS      = 15;
10207
/* All codes must not exceed MAX_BITS bits */
10208
10209
var Buf_size      = 16;
10210
/* size of bit buffer in bi_buf */
10211
10212
10213
/* ===========================================================================
10214
 * Constants
10215
 */
10216
10217
var MAX_BL_BITS = 7;
10218
/* Bit length codes must not exceed MAX_BL_BITS bits */
10219
10220
var END_BLOCK   = 256;
10221
/* end of block literal code */
10222
10223
var REP_3_6     = 16;
10224
/* repeat previous bit length 3-6 times (2 bits of repeat count) */
10225
10226
var REPZ_3_10   = 17;
10227
/* repeat a zero length 3-10 times  (3 bits of repeat count) */
10228
10229
var REPZ_11_138 = 18;
10230
/* repeat a zero length 11-138 times  (7 bits of repeat count) */
10231
10232
/* eslint-disable comma-spacing,array-bracket-spacing */
10233
var extra_lbits =   /* extra bits for each length code */
10234
  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
10235
10236
var extra_dbits =   /* extra bits for each distance code */
10237
  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
10238
10239
var extra_blbits =  /* extra bits for each bit length code */
10240
  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
10241
10242
var bl_order =
10243
  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
10244
/* eslint-enable comma-spacing,array-bracket-spacing */
10245
10246
/* The lengths of the bit length codes are sent in order of decreasing
10247
 * probability, to avoid transmitting the lengths for unused bit length codes.
10248
 */
10249
10250
/* ===========================================================================
10251
 * Local data. These are initialized only once.
10252
 */
10253
10254
// We pre-fill arrays with 0 to avoid uninitialized gaps
10255
10256
var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
10257
10258
// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
10259
var static_ltree  = new Array((L_CODES + 2) * 2);
10260
zero(static_ltree);
10261
/* The static literal tree. Since the bit lengths are imposed, there is no
10262
 * need for the L_CODES extra codes used during heap construction. However
10263
 * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
10264
 * below).
10265
 */
10266
10267
var static_dtree  = new Array(D_CODES * 2);
10268
zero(static_dtree);
10269
/* The static distance tree. (Actually a trivial tree since all codes use
10270
 * 5 bits.)
10271
 */
10272
10273
var _dist_code    = new Array(DIST_CODE_LEN);
10274
zero(_dist_code);
10275
/* Distance codes. The first 256 values correspond to the distances
10276
 * 3 .. 258, the last 256 values correspond to the top 8 bits of
10277
 * the 15 bit distances.
10278
 */
10279
10280
var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
10281
zero(_length_code);
10282
/* length code for each normalized match length (0 == MIN_MATCH) */
10283
10284
var base_length   = new Array(LENGTH_CODES);
10285
zero(base_length);
10286
/* First normalized length for each code (0 = MIN_MATCH) */
10287
10288
var base_dist     = new Array(D_CODES);
10289
zero(base_dist);
10290
/* First normalized distance for each code (0 = distance of 1) */
10291
10292
10293
function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
10294
10295
  this.static_tree  = static_tree;  /* static tree or NULL */
10296
  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
10297
  this.extra_base   = extra_base;   /* base index for extra_bits */
10298
  this.elems        = elems;        /* max number of elements in the tree */
10299
  this.max_length   = max_length;   /* max bit length for the codes */
10300
10301
  // show if `static_tree` has data or dummy - needed for monomorphic objects
10302
  this.has_stree    = static_tree && static_tree.length;
10303
}
10304
10305
10306
var static_l_desc;
10307
var static_d_desc;
10308
var static_bl_desc;
10309
10310
10311
function TreeDesc(dyn_tree, stat_desc) {
10312
  this.dyn_tree = dyn_tree;     /* the dynamic tree */
10313
  this.max_code = 0;            /* largest code with non zero frequency */
10314
  this.stat_desc = stat_desc;   /* the corresponding static tree */
10315
}
10316
10317
10318
10319
function d_code(dist) {
10320
  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
10321
}
10322
10323
10324
/* ===========================================================================
10325
 * Output a short LSB first on the stream.
10326
 * IN assertion: there is enough room in pendingBuf.
10327
 */
10328
function put_short(s, w) {
10329
//    put_byte(s, (uch)((w) & 0xff));
10330
//    put_byte(s, (uch)((ush)(w) >> 8));
10331
  s.pending_buf[s.pending++] = (w) & 0xff;
10332
  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
10333
}
10334
10335
10336
/* ===========================================================================
10337
 * Send a value on a given number of bits.
10338
 * IN assertion: length <= 16 and value fits in length bits.
10339
 */
10340
function send_bits(s, value, length) {
10341
  if (s.bi_valid > (Buf_size - length)) {
10342
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
10343
    put_short(s, s.bi_buf);
10344
    s.bi_buf = value >> (Buf_size - s.bi_valid);
10345
    s.bi_valid += length - Buf_size;
10346
  } else {
10347
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
10348
    s.bi_valid += length;
10349
  }
10350
}
10351
10352
10353
function send_code(s, c, tree) {
10354
  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
10355
}
10356
10357
10358
/* ===========================================================================
10359
 * Reverse the first len bits of a code, using straightforward code (a faster
10360
 * method would use a table)
10361
 * IN assertion: 1 <= len <= 15
10362
 */
10363
function bi_reverse(code, len) {
10364
  var res = 0;
10365
  do {
10366
    res |= code & 1;
10367
    code >>>= 1;
10368
    res <<= 1;
10369
  } while (--len > 0);
10370
  return res >>> 1;
10371
}
10372
10373
10374
/* ===========================================================================
10375
 * Flush the bit buffer, keeping at most 7 bits in it.
10376
 */
10377
function bi_flush(s) {
10378
  if (s.bi_valid === 16) {
10379
    put_short(s, s.bi_buf);
10380
    s.bi_buf = 0;
10381
    s.bi_valid = 0;
10382
10383
  } else if (s.bi_valid >= 8) {
10384
    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
10385
    s.bi_buf >>= 8;
10386
    s.bi_valid -= 8;
10387
  }
10388
}
10389
10390
10391
/* ===========================================================================
10392
 * Compute the optimal bit lengths for a tree and update the total bit length
10393
 * for the current block.
10394
 * IN assertion: the fields freq and dad are set, heap[heap_max] and
10395
 *    above are the tree nodes sorted by increasing frequency.
10396
 * OUT assertions: the field len is set to the optimal bit length, the
10397
 *     array bl_count contains the frequencies for each bit length.
10398
 *     The length opt_len is updated; static_len is also updated if stree is
10399
 *     not null.
10400
 */
10401
function gen_bitlen(s, desc)
10402
//    deflate_state *s;
10403
//    tree_desc *desc;    /* the tree descriptor */
10404
{
10405
  var tree            = desc.dyn_tree;
10406
  var max_code        = desc.max_code;
10407
  var stree           = desc.stat_desc.static_tree;
10408
  var has_stree       = desc.stat_desc.has_stree;
10409
  var extra           = desc.stat_desc.extra_bits;
10410
  var base            = desc.stat_desc.extra_base;
10411
  var max_length      = desc.stat_desc.max_length;
10412
  var h;              /* heap index */
10413
  var n, m;           /* iterate over the tree elements */
10414
  var bits;           /* bit length */
10415
  var xbits;          /* extra bits */
10416
  var f;              /* frequency */
10417
  var overflow = 0;   /* number of elements with bit length too large */
10418
10419
  for (bits = 0; bits <= MAX_BITS; bits++) {
10420
    s.bl_count[bits] = 0;
10421
  }
10422
10423
  /* In a first pass, compute the optimal bit lengths (which may
10424
   * overflow in the case of the bit length tree).
10425
   */
10426
  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
10427
10428
  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
10429
    n = s.heap[h];
10430
    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
10431
    if (bits > max_length) {
10432
      bits = max_length;
10433
      overflow++;
10434
    }
10435
    tree[n * 2 + 1]/*.Len*/ = bits;
10436
    /* We overwrite tree[n].Dad which is no longer needed */
10437
10438
    if (n > max_code) { continue; } /* not a leaf node */
10439
10440
    s.bl_count[bits]++;
10441
    xbits = 0;
10442
    if (n >= base) {
10443
      xbits = extra[n - base];
10444
    }
10445
    f = tree[n * 2]/*.Freq*/;
10446
    s.opt_len += f * (bits + xbits);
10447
    if (has_stree) {
10448
      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
10449
    }
10450
  }
10451
  if (overflow === 0) { return; }
10452
10453
  // Trace((stderr,"\nbit length overflow\n"));
10454
  /* This happens for example on obj2 and pic of the Calgary corpus */
10455
10456
  /* Find the first bit length which could increase: */
10457
  do {
10458
    bits = max_length - 1;
10459
    while (s.bl_count[bits] === 0) { bits--; }
10460
    s.bl_count[bits]--;      /* move one leaf down the tree */
10461
    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
10462
    s.bl_count[max_length]--;
10463
    /* The brother of the overflow item also moves one step up,
10464
     * but this does not affect bl_count[max_length]
10465
     */
10466
    overflow -= 2;
10467
  } while (overflow > 0);
10468
10469
  /* Now recompute all bit lengths, scanning in increasing frequency.
10470
   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
10471
   * lengths instead of fixing only the wrong ones. This idea is taken
10472
   * from 'ar' written by Haruhiko Okumura.)
10473
   */
10474
  for (bits = max_length; bits !== 0; bits--) {
10475
    n = s.bl_count[bits];
10476
    while (n !== 0) {
10477
      m = s.heap[--h];
10478
      if (m > max_code) { continue; }
10479
      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
10480
        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
10481
        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
10482
        tree[m * 2 + 1]/*.Len*/ = bits;
10483
      }
10484
      n--;
10485
    }
10486
  }
10487
}
10488
10489
10490
/* ===========================================================================
10491
 * Generate the codes for a given tree and bit counts (which need not be
10492
 * optimal).
10493
 * IN assertion: the array bl_count contains the bit length statistics for
10494
 * the given tree and the field len is set for all tree elements.
10495
 * OUT assertion: the field code is set for all tree elements of non
10496
 *     zero code length.
10497
 */
10498
function gen_codes(tree, max_code, bl_count)
10499
//    ct_data *tree;             /* the tree to decorate */
10500
//    int max_code;              /* largest code with non zero frequency */
10501
//    ushf *bl_count;            /* number of codes at each bit length */
10502
{
10503
  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
10504
  var code = 0;              /* running code value */
10505
  var bits;                  /* bit index */
10506
  var n;                     /* code index */
10507
10508
  /* The distribution counts are first used to generate the code values
10509
   * without bit reversal.
10510
   */
10511
  for (bits = 1; bits <= MAX_BITS; bits++) {
10512
    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
10513
  }
10514
  /* Check that the bit counts in bl_count are consistent. The last code
10515
   * must be all ones.
10516
   */
10517
  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
10518
  //        "inconsistent bit counts");
10519
  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
10520
10521
  for (n = 0;  n <= max_code; n++) {
10522
    var len = tree[n * 2 + 1]/*.Len*/;
10523
    if (len === 0) { continue; }
10524
    /* Now reverse the bits */
10525
    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
10526
10527
    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
10528
    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
10529
  }
10530
}
10531
10532
10533
/* ===========================================================================
10534
 * Initialize the various 'constant' tables.
10535
 */
10536
function tr_static_init() {
10537
  var n;        /* iterates over tree elements */
10538
  var bits;     /* bit counter */
10539
  var length;   /* length value */
10540
  var code;     /* code value */
10541
  var dist;     /* distance index */
10542
  var bl_count = new Array(MAX_BITS + 1);
10543
  /* number of codes at each bit length for an optimal tree */
10544
10545
  // do check in _tr_init()
10546
  //if (static_init_done) return;
10547
10548
  /* For some embedded targets, global variables are not initialized: */
10549
/*#ifdef NO_INIT_GLOBAL_POINTERS
10550
  static_l_desc.static_tree = static_ltree;
10551
  static_l_desc.extra_bits = extra_lbits;
10552
  static_d_desc.static_tree = static_dtree;
10553
  static_d_desc.extra_bits = extra_dbits;
10554
  static_bl_desc.extra_bits = extra_blbits;
10555
#endif*/
10556
10557
  /* Initialize the mapping length (0..255) -> length code (0..28) */
10558
  length = 0;
10559
  for (code = 0; code < LENGTH_CODES - 1; code++) {
10560
    base_length[code] = length;
10561
    for (n = 0; n < (1 << extra_lbits[code]); n++) {
10562
      _length_code[length++] = code;
10563
    }
10564
  }
10565
  //Assert (length == 256, "tr_static_init: length != 256");
10566
  /* Note that the length 255 (match length 258) can be represented
10567
   * in two different ways: code 284 + 5 bits or code 285, so we
10568
   * overwrite length_code[255] to use the best encoding:
10569
   */
10570
  _length_code[length - 1] = code;
10571
10572
  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
10573
  dist = 0;
10574
  for (code = 0; code < 16; code++) {
10575
    base_dist[code] = dist;
10576
    for (n = 0; n < (1 << extra_dbits[code]); n++) {
10577
      _dist_code[dist++] = code;
10578
    }
10579
  }
10580
  //Assert (dist == 256, "tr_static_init: dist != 256");
10581
  dist >>= 7; /* from now on, all distances are divided by 128 */
10582
  for (; code < D_CODES; code++) {
10583
    base_dist[code] = dist << 7;
10584
    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
10585
      _dist_code[256 + dist++] = code;
10586
    }
10587
  }
10588
  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
10589
10590
  /* Construct the codes of the static literal tree */
10591
  for (bits = 0; bits <= MAX_BITS; bits++) {
10592
    bl_count[bits] = 0;
10593
  }
10594
10595
  n = 0;
10596
  while (n <= 143) {
10597
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
10598
    n++;
10599
    bl_count[8]++;
10600
  }
10601
  while (n <= 255) {
10602
    static_ltree[n * 2 + 1]/*.Len*/ = 9;
10603
    n++;
10604
    bl_count[9]++;
10605
  }
10606
  while (n <= 279) {
10607
    static_ltree[n * 2 + 1]/*.Len*/ = 7;
10608
    n++;
10609
    bl_count[7]++;
10610
  }
10611
  while (n <= 287) {
10612
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
10613
    n++;
10614
    bl_count[8]++;
10615
  }
10616
  /* Codes 286 and 287 do not exist, but we must include them in the
10617
   * tree construction to get a canonical Huffman tree (longest code
10618
   * all ones)
10619
   */
10620
  gen_codes(static_ltree, L_CODES + 1, bl_count);
10621
10622
  /* The static distance tree is trivial: */
10623
  for (n = 0; n < D_CODES; n++) {
10624
    static_dtree[n * 2 + 1]/*.Len*/ = 5;
10625
    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
10626
  }
10627
10628
  // Now data ready and we can init static trees
10629
  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
10630
  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
10631
  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
10632
10633
  //static_init_done = true;
10634
}
10635
10636
10637
/* ===========================================================================
10638
 * Initialize a new block.
10639
 */
10640
function init_block(s) {
10641
  var n; /* iterates over tree elements */
10642
10643
  /* Initialize the trees. */
10644
  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
10645
  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
10646
  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
10647
10648
  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
10649
  s.opt_len = s.static_len = 0;
10650
  s.last_lit = s.matches = 0;
10651
}
10652
10653
10654
/* ===========================================================================
10655
 * Flush the bit buffer and align the output on a byte boundary
10656
 */
10657
function bi_windup(s)
10658
{
10659
  if (s.bi_valid > 8) {
10660
    put_short(s, s.bi_buf);
10661
  } else if (s.bi_valid > 0) {
10662
    //put_byte(s, (Byte)s->bi_buf);
10663
    s.pending_buf[s.pending++] = s.bi_buf;
10664
  }
10665
  s.bi_buf = 0;
10666
  s.bi_valid = 0;
10667
}
10668
10669
/* ===========================================================================
10670
 * Copy a stored block, storing first the length and its
10671
 * one's complement if requested.
10672
 */
10673
function copy_block(s, buf, len, header)
10674
//DeflateState *s;
10675
//charf    *buf;    /* the input data */
10676
//unsigned len;     /* its length */
10677
//int      header;  /* true if block header must be written */
10678
{
10679
  bi_windup(s);        /* align on byte boundary */
10680
10681
  if (header) {
10682
    put_short(s, len);
10683
    put_short(s, ~len);
10684
  }
10685
//  while (len--) {
10686
//    put_byte(s, *buf++);
10687
//  }
10688
  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
10689
  s.pending += len;
10690
}
10691
10692
/* ===========================================================================
10693
 * Compares to subtrees, using the tree depth as tie breaker when
10694
 * the subtrees have equal frequency. This minimizes the worst case length.
10695
 */
10696
function smaller(tree, n, m, depth) {
10697
  var _n2 = n * 2;
10698
  var _m2 = m * 2;
10699
  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
10700
         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
10701
}
10702
10703
/* ===========================================================================
10704
 * Restore the heap property by moving down the tree starting at node k,
10705
 * exchanging a node with the smallest of its two sons if necessary, stopping
10706
 * when the heap property is re-established (each father smaller than its
10707
 * two sons).
10708
 */
10709
function pqdownheap(s, tree, k)
10710
//    deflate_state *s;
10711
//    ct_data *tree;  /* the tree to restore */
10712
//    int k;               /* node to move down */
10713
{
10714
  var v = s.heap[k];
10715
  var j = k << 1;  /* left son of k */
10716
  while (j <= s.heap_len) {
10717
    /* Set j to the smallest of the two sons: */
10718
    if (j < s.heap_len &&
10719
      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
10720
      j++;
10721
    }
10722
    /* Exit if v is smaller than both sons */
10723
    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
10724
10725
    /* Exchange v with the smallest son */
10726
    s.heap[k] = s.heap[j];
10727
    k = j;
10728
10729
    /* And continue down the tree, setting j to the left son of k */
10730
    j <<= 1;
10731
  }
10732
  s.heap[k] = v;
10733
}
10734
10735
10736
// inlined manually
10737
// var SMALLEST = 1;
10738
10739
/* ===========================================================================
10740
 * Send the block data compressed using the given Huffman trees
10741
 */
10742
function compress_block(s, ltree, dtree)
10743
//    deflate_state *s;
10744
//    const ct_data *ltree; /* literal tree */
10745
//    const ct_data *dtree; /* distance tree */
10746
{
10747
  var dist;           /* distance of matched string */
10748
  var lc;             /* match length or unmatched char (if dist == 0) */
10749
  var lx = 0;         /* running index in l_buf */
10750
  var code;           /* the code to send */
10751
  var extra;          /* number of extra bits to send */
10752
10753
  if (s.last_lit !== 0) {
10754
    do {
10755
      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
10756
      lc = s.pending_buf[s.l_buf + lx];
10757
      lx++;
10758
10759
      if (dist === 0) {
10760
        send_code(s, lc, ltree); /* send a literal byte */
10761
        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
10762
      } else {
10763
        /* Here, lc is the match length - MIN_MATCH */
10764
        code = _length_code[lc];
10765
        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
10766
        extra = extra_lbits[code];
10767
        if (extra !== 0) {
10768
          lc -= base_length[code];
10769
          send_bits(s, lc, extra);       /* send the extra length bits */
10770
        }
10771
        dist--; /* dist is now the match distance - 1 */
10772
        code = d_code(dist);
10773
        //Assert (code < D_CODES, "bad d_code");
10774
10775
        send_code(s, code, dtree);       /* send the distance code */
10776
        extra = extra_dbits[code];
10777
        if (extra !== 0) {
10778
          dist -= base_dist[code];
10779
          send_bits(s, dist, extra);   /* send the extra distance bits */
10780
        }
10781
      } /* literal or match pair ? */
10782
10783
      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
10784
      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
10785
      //       "pendingBuf overflow");
10786
10787
    } while (lx < s.last_lit);
10788
  }
10789
10790
  send_code(s, END_BLOCK, ltree);
10791
}
10792
10793
10794
/* ===========================================================================
10795
 * Construct one Huffman tree and assigns the code bit strings and lengths.
10796
 * Update the total bit length for the current block.
10797
 * IN assertion: the field freq is set for all tree elements.
10798
 * OUT assertions: the fields len and code are set to the optimal bit length
10799
 *     and corresponding code. The length opt_len is updated; static_len is
10800
 *     also updated if stree is not null. The field max_code is set.
10801
 */
10802
function build_tree(s, desc)
10803
//    deflate_state *s;
10804
//    tree_desc *desc; /* the tree descriptor */
10805
{
10806
  var tree     = desc.dyn_tree;
10807
  var stree    = desc.stat_desc.static_tree;
10808
  var has_stree = desc.stat_desc.has_stree;
10809
  var elems    = desc.stat_desc.elems;
10810
  var n, m;          /* iterate over heap elements */
10811
  var max_code = -1; /* largest code with non zero frequency */
10812
  var node;          /* new node being created */
10813
10814
  /* Construct the initial heap, with least frequent element in
10815
   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
10816
   * heap[0] is not used.
10817
   */
10818
  s.heap_len = 0;
10819
  s.heap_max = HEAP_SIZE;
10820
10821
  for (n = 0; n < elems; n++) {
10822
    if (tree[n * 2]/*.Freq*/ !== 0) {
10823
      s.heap[++s.heap_len] = max_code = n;
10824
      s.depth[n] = 0;
10825
10826
    } else {
10827
      tree[n * 2 + 1]/*.Len*/ = 0;
10828
    }
10829
  }
10830
10831
  /* The pkzip format requires that at least one distance code exists,
10832
   * and that at least one bit should be sent even if there is only one
10833
   * possible code. So to avoid special checks later on we force at least
10834
   * two codes of non zero frequency.
10835
   */
10836
  while (s.heap_len < 2) {
10837
    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
10838
    tree[node * 2]/*.Freq*/ = 1;
10839
    s.depth[node] = 0;
10840
    s.opt_len--;
10841
10842
    if (has_stree) {
10843
      s.static_len -= stree[node * 2 + 1]/*.Len*/;
10844
    }
10845
    /* node is 0 or 1 so it does not have extra bits */
10846
  }
10847
  desc.max_code = max_code;
10848
10849
  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
10850
   * establish sub-heaps of increasing lengths:
10851
   */
10852
  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
10853
10854
  /* Construct the Huffman tree by repeatedly combining the least two
10855
   * frequent nodes.
10856
   */
10857
  node = elems;              /* next internal node of the tree */
10858
  do {
10859
    //pqremove(s, tree, n);  /* n = node of least frequency */
10860
    /*** pqremove ***/
10861
    n = s.heap[1/*SMALLEST*/];
10862
    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
10863
    pqdownheap(s, tree, 1/*SMALLEST*/);
10864
    /***/
10865
10866
    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
10867
10868
    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
10869
    s.heap[--s.heap_max] = m;
10870
10871
    /* Create a new node father of n and m */
10872
    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
10873
    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
10874
    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
10875
10876
    /* and insert the new node in the heap */
10877
    s.heap[1/*SMALLEST*/] = node++;
10878
    pqdownheap(s, tree, 1/*SMALLEST*/);
10879
10880
  } while (s.heap_len >= 2);
10881
10882
  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
10883
10884
  /* At this point, the fields freq and dad are set. We can now
10885
   * generate the bit lengths.
10886
   */
10887
  gen_bitlen(s, desc);
10888
10889
  /* The field len is now set, we can generate the bit codes */
10890
  gen_codes(tree, max_code, s.bl_count);
10891
}
10892
10893
10894
/* ===========================================================================
10895
 * Scan a literal or distance tree to determine the frequencies of the codes
10896
 * in the bit length tree.
10897
 */
10898
function scan_tree(s, tree, max_code)
10899
//    deflate_state *s;
10900
//    ct_data *tree;   /* the tree to be scanned */
10901
//    int max_code;    /* and its largest code of non zero frequency */
10902
{
10903
  var n;                     /* iterates over all tree elements */
10904
  var prevlen = -1;          /* last emitted length */
10905
  var curlen;                /* length of current code */
10906
10907
  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
10908
10909
  var count = 0;             /* repeat count of the current code */
10910
  var max_count = 7;         /* max repeat count */
10911
  var min_count = 4;         /* min repeat count */
10912
10913
  if (nextlen === 0) {
10914
    max_count = 138;
10915
    min_count = 3;
10916
  }
10917
  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
10918
10919
  for (n = 0; n <= max_code; n++) {
10920
    curlen = nextlen;
10921
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
10922
10923
    if (++count < max_count && curlen === nextlen) {
10924
      continue;
10925
10926
    } else if (count < min_count) {
10927
      s.bl_tree[curlen * 2]/*.Freq*/ += count;
10928
10929
    } else if (curlen !== 0) {
10930
10931
      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
10932
      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
10933
10934
    } else if (count <= 10) {
10935
      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
10936
10937
    } else {
10938
      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
10939
    }
10940
10941
    count = 0;
10942
    prevlen = curlen;
10943
10944
    if (nextlen === 0) {
10945
      max_count = 138;
10946
      min_count = 3;
10947
10948
    } else if (curlen === nextlen) {
10949
      max_count = 6;
10950
      min_count = 3;
10951
10952
    } else {
10953
      max_count = 7;
10954
      min_count = 4;
10955
    }
10956
  }
10957
}
10958
10959
10960
/* ===========================================================================
10961
 * Send a literal or distance tree in compressed form, using the codes in
10962
 * bl_tree.
10963
 */
10964
function send_tree(s, tree, max_code)
10965
//    deflate_state *s;
10966
//    ct_data *tree; /* the tree to be scanned */
10967
//    int max_code;       /* and its largest code of non zero frequency */
10968
{
10969
  var n;                     /* iterates over all tree elements */
10970
  var prevlen = -1;          /* last emitted length */
10971
  var curlen;                /* length of current code */
10972
10973
  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
10974
10975
  var count = 0;             /* repeat count of the current code */
10976
  var max_count = 7;         /* max repeat count */
10977
  var min_count = 4;         /* min repeat count */
10978
10979
  /* tree[max_code+1].Len = -1; */  /* guard already set */
10980
  if (nextlen === 0) {
10981
    max_count = 138;
10982
    min_count = 3;
10983
  }
10984
10985
  for (n = 0; n <= max_code; n++) {
10986
    curlen = nextlen;
10987
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
10988
10989
    if (++count < max_count && curlen === nextlen) {
10990
      continue;
10991
10992
    } else if (count < min_count) {
10993
      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
10994
10995
    } else if (curlen !== 0) {
10996
      if (curlen !== prevlen) {
10997
        send_code(s, curlen, s.bl_tree);
10998
        count--;
10999
      }
11000
      //Assert(count >= 3 && count <= 6, " 3_6?");
11001
      send_code(s, REP_3_6, s.bl_tree);
11002
      send_bits(s, count - 3, 2);
11003
11004
    } else if (count <= 10) {
11005
      send_code(s, REPZ_3_10, s.bl_tree);
11006
      send_bits(s, count - 3, 3);
11007
11008
    } else {
11009
      send_code(s, REPZ_11_138, s.bl_tree);
11010
      send_bits(s, count - 11, 7);
11011
    }
11012
11013
    count = 0;
11014
    prevlen = curlen;
11015
    if (nextlen === 0) {
11016
      max_count = 138;
11017
      min_count = 3;
11018
11019
    } else if (curlen === nextlen) {
11020
      max_count = 6;
11021
      min_count = 3;
11022
11023
    } else {
11024
      max_count = 7;
11025
      min_count = 4;
11026
    }
11027
  }
11028
}
11029
11030
11031
/* ===========================================================================
11032
 * Construct the Huffman tree for the bit lengths and return the index in
11033
 * bl_order of the last bit length code to send.
11034
 */
11035
function build_bl_tree(s) {
11036
  var max_blindex;  /* index of last bit length code of non zero freq */
11037
11038
  /* Determine the bit length frequencies for literal and distance trees */
11039
  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
11040
  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
11041
11042
  /* Build the bit length tree: */
11043
  build_tree(s, s.bl_desc);
11044
  /* opt_len now includes the length of the tree representations, except
11045
   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
11046
   */
11047
11048
  /* Determine the number of bit length codes to send. The pkzip format
11049
   * requires that at least 4 bit length codes be sent. (appnote.txt says
11050
   * 3 but the actual value used is 4.)
11051
   */
11052
  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
11053
    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
11054
      break;
11055
    }
11056
  }
11057
  /* Update opt_len to include the bit length tree and counts */
11058
  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
11059
  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
11060
  //        s->opt_len, s->static_len));
11061
11062
  return max_blindex;
11063
}
11064
11065
11066
/* ===========================================================================
11067
 * Send the header for a block using dynamic Huffman trees: the counts, the
11068
 * lengths of the bit length codes, the literal tree and the distance tree.
11069
 * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
11070
 */
11071
function send_all_trees(s, lcodes, dcodes, blcodes)
11072
//    deflate_state *s;
11073
//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
11074
{
11075
  var rank;                    /* index in bl_order */
11076
11077
  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
11078
  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
11079
  //        "too many codes");
11080
  //Tracev((stderr, "\nbl counts: "));
11081
  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
11082
  send_bits(s, dcodes - 1,   5);
11083
  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
11084
  for (rank = 0; rank < blcodes; rank++) {
11085
    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
11086
    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
11087
  }
11088
  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
11089
11090
  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
11091
  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
11092
11093
  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
11094
  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
11095
}
11096
11097
11098
/* ===========================================================================
11099
 * Check if the data type is TEXT or BINARY, using the following algorithm:
11100
 * - TEXT if the two conditions below are satisfied:
11101
 *    a) There are no non-portable control characters belonging to the
11102
 *       "black list" (0..6, 14..25, 28..31).
11103
 *    b) There is at least one printable character belonging to the
11104
 *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
11105
 * - BINARY otherwise.
11106
 * - The following partially-portable control characters form a
11107
 *   "gray list" that is ignored in this detection algorithm:
11108
 *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
11109
 * IN assertion: the fields Freq of dyn_ltree are set.
11110
 */
11111
function detect_data_type(s) {
11112
  /* black_mask is the bit mask of black-listed bytes
11113
   * set bits 0..6, 14..25, and 28..31
11114
   * 0xf3ffc07f = binary 11110011111111111100000001111111
11115
   */
11116
  var black_mask = 0xf3ffc07f;
11117
  var n;
11118
11119
  /* Check for non-textual ("black-listed") bytes. */
11120
  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
11121
    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
11122
      return Z_BINARY;
11123
    }
11124
  }
11125
11126
  /* Check for textual ("white-listed") bytes. */
11127
  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
11128
      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
11129
    return Z_TEXT;
11130
  }
11131
  for (n = 32; n < LITERALS; n++) {
11132
    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
11133
      return Z_TEXT;
11134
    }
11135
  }
11136
11137
  /* There are no "black-listed" or "white-listed" bytes:
11138
   * this stream either is empty or has tolerated ("gray-listed") bytes only.
11139
   */
11140
  return Z_BINARY;
11141
}
11142
11143
11144
var static_init_done = false;
11145
11146
/* ===========================================================================
11147
 * Initialize the tree data structures for a new zlib stream.
11148
 */
11149
function _tr_init(s)
11150
{
11151
11152
  if (!static_init_done) {
11153
    tr_static_init();
11154
    static_init_done = true;
11155
  }
11156
11157
  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
11158
  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
11159
  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
11160
11161
  s.bi_buf = 0;
11162
  s.bi_valid = 0;
11163
11164
  /* Initialize the first block of the first file: */
11165
  init_block(s);
11166
}
11167
11168
11169
/* ===========================================================================
11170
 * Send a stored block
11171
 */
11172
function _tr_stored_block(s, buf, stored_len, last)
11173
//DeflateState *s;
11174
//charf *buf;       /* input block */
11175
//ulg stored_len;   /* length of input block */
11176
//int last;         /* one if this is the last block for a file */
11177
{
11178
  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
11179
  copy_block(s, buf, stored_len, true); /* with header */
11180
}
11181
11182
11183
/* ===========================================================================
11184
 * Send one empty static block to give enough lookahead for inflate.
11185
 * This takes 10 bits, of which 7 may remain in the bit buffer.
11186
 */
11187
function _tr_align(s) {
11188
  send_bits(s, STATIC_TREES << 1, 3);
11189
  send_code(s, END_BLOCK, static_ltree);
11190
  bi_flush(s);
11191
}
11192
11193
11194
/* ===========================================================================
11195
 * Determine the best encoding for the current block: dynamic trees, static
11196
 * trees or store, and output the encoded block to the zip file.
11197
 */
11198
function _tr_flush_block(s, buf, stored_len, last)
11199
//DeflateState *s;
11200
//charf *buf;       /* input block, or NULL if too old */
11201
//ulg stored_len;   /* length of input block */
11202
//int last;         /* one if this is the last block for a file */
11203
{
11204
  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
11205
  var max_blindex = 0;        /* index of last bit length code of non zero freq */
11206
11207
  /* Build the Huffman trees unless a stored block is forced */
11208
  if (s.level > 0) {
11209
11210
    /* Check if the file is binary or text */
11211
    if (s.strm.data_type === Z_UNKNOWN) {
11212
      s.strm.data_type = detect_data_type(s);
11213
    }
11214
11215
    /* Construct the literal and distance trees */
11216
    build_tree(s, s.l_desc);
11217
    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
11218
    //        s->static_len));
11219
11220
    build_tree(s, s.d_desc);
11221
    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
11222
    //        s->static_len));
11223
    /* At this point, opt_len and static_len are the total bit lengths of
11224
     * the compressed block data, excluding the tree representations.
11225
     */
11226
11227
    /* Build the bit length tree for the above two trees, and get the index
11228
     * in bl_order of the last bit length code to send.
11229
     */
11230
    max_blindex = build_bl_tree(s);
11231
11232
    /* Determine the best encoding. Compute the block lengths in bytes. */
11233
    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
11234
    static_lenb = (s.static_len + 3 + 7) >>> 3;
11235
11236
    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
11237
    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
11238
    //        s->last_lit));
11239
11240
    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
11241
11242
  } else {
11243
    // Assert(buf != (char*)0, "lost buf");
11244
    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
11245
  }
11246
11247
  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
11248
    /* 4: two words for the lengths */
11249
11250
    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
11251
     * Otherwise we can't have processed more than WSIZE input bytes since
11252
     * the last block flush, because compression would have been
11253
     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
11254
     * transform a block into a stored block.
11255
     */
11256
    _tr_stored_block(s, buf, stored_len, last);
11257
11258
  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
11259
11260
    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
11261
    compress_block(s, static_ltree, static_dtree);
11262
11263
  } else {
11264
    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
11265
    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
11266
    compress_block(s, s.dyn_ltree, s.dyn_dtree);
11267
  }
11268
  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
11269
  /* The above check is made mod 2^32, for files larger than 512 MB
11270
   * and uLong implemented on 32 bits.
11271
   */
11272
  init_block(s);
11273
11274
  if (last) {
11275
    bi_windup(s);
11276
  }
11277
  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
11278
  //       s->compressed_len-7*last));
11279
}
11280
11281
/* ===========================================================================
11282
 * Save the match info and tally the frequency counts. Return true if
11283
 * the current block must be flushed.
11284
 */
11285
function _tr_tally(s, dist, lc)
11286
//    deflate_state *s;
11287
//    unsigned dist;  /* distance of matched string */
11288
//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
11289
{
11290
  //var out_length, in_length, dcode;
11291
11292
  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
11293
  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
11294
11295
  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
11296
  s.last_lit++;
11297
11298
  if (dist === 0) {
11299
    /* lc is the unmatched char */
11300
    s.dyn_ltree[lc * 2]/*.Freq*/++;
11301
  } else {
11302
    s.matches++;
11303
    /* Here, lc is the match length - MIN_MATCH */
11304
    dist--;             /* dist = match distance - 1 */
11305
    //Assert((ush)dist < (ush)MAX_DIST(s) &&
11306
    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
11307
    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
11308
11309
    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
11310
    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
11311
  }
11312
11313
// (!) This block is disabled in zlib defailts,
11314
// don't enable it for binary compatibility
11315
11316
//#ifdef TRUNCATE_BLOCK
11317
//  /* Try to guess if it is profitable to stop the current block here */
11318
//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
11319
//    /* Compute an upper bound for the compressed length */
11320
//    out_length = s.last_lit*8;
11321
//    in_length = s.strstart - s.block_start;
11322
//
11323
//    for (dcode = 0; dcode < D_CODES; dcode++) {
11324
//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
11325
//    }
11326
//    out_length >>>= 3;
11327
//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
11328
//    //       s->last_lit, in_length, out_length,
11329
//    //       100L - out_length*100L/in_length));
11330
//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
11331
//      return true;
11332
//    }
11333
//  }
11334
//#endif
11335
11336
  return (s.last_lit === s.lit_bufsize - 1);
11337
  /* We avoid equality with lit_bufsize because of wraparound at 64K
11338
   * on 16 bit machines and because stored blocks are restricted to
11339
   * 64K-1 bytes.
11340
   */
11341
}
11342
11343
exports._tr_init  = _tr_init;
11344
exports._tr_stored_block = _tr_stored_block;
11345
exports._tr_flush_block  = _tr_flush_block;
11346
exports._tr_tally = _tr_tally;
11347
exports._tr_align = _tr_align;
11348
11349
},{"../utils/common":41}],53:[function(require,module,exports){
11350
'use strict';
11351
11352
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
11353
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
11354
//
11355
// This software is provided 'as-is', without any express or implied
11356
// warranty. In no event will the authors be held liable for any damages
11357
// arising from the use of this software.
11358
//
11359
// Permission is granted to anyone to use this software for any purpose,
11360
// including commercial applications, and to alter it and redistribute it
11361
// freely, subject to the following restrictions:
11362
//
11363
// 1. The origin of this software must not be misrepresented; you must not
11364
//   claim that you wrote the original software. If you use this software
11365
//   in a product, an acknowledgment in the product documentation would be
11366
//   appreciated but is not required.
11367
// 2. Altered source versions must be plainly marked as such, and must not be
11368
//   misrepresented as being the original software.
11369
// 3. This notice may not be removed or altered from any source distribution.
11370
11371
function ZStream() {
11372
  /* next input byte */
11373
  this.input = null; // JS specific, because we have no pointers
11374
  this.next_in = 0;
11375
  /* number of bytes available at input */
11376
  this.avail_in = 0;
11377
  /* total number of input bytes read so far */
11378
  this.total_in = 0;
11379
  /* next output byte should be put there */
11380
  this.output = null; // JS specific, because we have no pointers
11381
  this.next_out = 0;
11382
  /* remaining free space at output */
11383
  this.avail_out = 0;
11384
  /* total number of bytes output so far */
11385
  this.total_out = 0;
11386
  /* last error message, NULL if no error */
11387
  this.msg = ''/*Z_NULL*/;
11388
  /* not visible by applications */
11389
  this.state = null;
11390
  /* best guess about the data type: binary or text */
11391
  this.data_type = 2/*Z_UNKNOWN*/;
11392
  /* adler32 value of the uncompressed data */
11393
  this.adler = 0;
11394
}
11395
11396
module.exports = ZStream;
11397
11398
},{}],54:[function(require,module,exports){
11399
(function (global){
11400
(function (global, undefined) {
11401
    "use strict";
11402
11403
    if (global.setImmediate) {
11404
        return;
11405
    }
11406
11407
    var nextHandle = 1; // Spec says greater than zero
11408
    var tasksByHandle = {};
11409
    var currentlyRunningATask = false;
11410
    var doc = global.document;
11411
    var registerImmediate;
11412
11413
    function setImmediate(callback) {
11414
      // Callback can either be a function or a string
11415
      if (typeof callback !== "function") {
11416
        callback = new Function("" + callback);
11417
      }
11418
      // Copy function arguments
11419
      var args = new Array(arguments.length - 1);
11420
      for (var i = 0; i < args.length; i++) {
11421
          args[i] = arguments[i + 1];
11422
      }
11423
      // Store and register the task
11424
      var task = { callback: callback, args: args };
11425
      tasksByHandle[nextHandle] = task;
11426
      registerImmediate(nextHandle);
11427
      return nextHandle++;
11428
    }
11429
11430
    function clearImmediate(handle) {
11431
        delete tasksByHandle[handle];
11432
    }
11433
11434
    function run(task) {
11435
        var callback = task.callback;
11436
        var args = task.args;
11437
        switch (args.length) {
11438
        case 0:
11439
            callback();
11440
            break;
11441
        case 1:
11442
            callback(args[0]);
11443
            break;
11444
        case 2:
11445
            callback(args[0], args[1]);
11446
            break;
11447
        case 3:
11448
            callback(args[0], args[1], args[2]);
11449
            break;
11450
        default:
11451
            callback.apply(undefined, args);
11452
            break;
11453
        }
11454
    }
11455
11456
    function runIfPresent(handle) {
11457
        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
11458
        // So if we're currently running a task, we'll need to delay this invocation.
11459
        if (currentlyRunningATask) {
11460
            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
11461
            // "too much recursion" error.
11462
            setTimeout(runIfPresent, 0, handle);
11463
        } else {
11464
            var task = tasksByHandle[handle];
11465
            if (task) {
11466
                currentlyRunningATask = true;
11467
                try {
11468
                    run(task);
11469
                } finally {
11470
                    clearImmediate(handle);
11471
                    currentlyRunningATask = false;
11472
                }
11473
            }
11474
        }
11475
    }
11476
11477
    function installNextTickImplementation() {
11478
        registerImmediate = function(handle) {
11479
            process.nextTick(function () { runIfPresent(handle); });
11480
        };
11481
    }
11482
11483
    function canUsePostMessage() {
11484
        // The test against `importScripts` prevents this implementation from being installed inside a web worker,
11485
        // where `global.postMessage` means something completely different and can't be used for this purpose.
11486
        if (global.postMessage && !global.importScripts) {
11487
            var postMessageIsAsynchronous = true;
11488
            var oldOnMessage = global.onmessage;
11489
            global.onmessage = function() {
11490
                postMessageIsAsynchronous = false;
11491
            };
11492
            global.postMessage("", "*");
11493
            global.onmessage = oldOnMessage;
11494
            return postMessageIsAsynchronous;
11495
        }
11496
    }
11497
11498
    function installPostMessageImplementation() {
11499
        // Installs an event handler on `global` for the `message` event: see
11500
        // * https://developer.mozilla.org/en/DOM/window.postMessage
11501
        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
11502
11503
        var messagePrefix = "setImmediate$" + Math.random() + "$";
11504
        var onGlobalMessage = function(event) {
11505
            if (event.source === global &&
11506
                typeof event.data === "string" &&
11507
                event.data.indexOf(messagePrefix) === 0) {
11508
                runIfPresent(+event.data.slice(messagePrefix.length));
11509
            }
11510
        };
11511
11512
        if (global.addEventListener) {
11513
            global.addEventListener("message", onGlobalMessage, false);
11514
        } else {
11515
            global.attachEvent("onmessage", onGlobalMessage);
11516
        }
11517
11518
        registerImmediate = function(handle) {
11519
            global.postMessage(messagePrefix + handle, "*");
11520
        };
11521
    }
11522
11523
    function installMessageChannelImplementation() {
11524
        var channel = new MessageChannel();
11525
        channel.port1.onmessage = function(event) {
11526
            var handle = event.data;
11527
            runIfPresent(handle);
11528
        };
11529
11530
        registerImmediate = function(handle) {
11531
            channel.port2.postMessage(handle);
11532
        };
11533
    }
11534
11535
    function installReadyStateChangeImplementation() {
11536
        var html = doc.documentElement;
11537
        registerImmediate = function(handle) {
11538
            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
11539
            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
11540
            var script = doc.createElement("script");
11541
            script.onreadystatechange = function () {
11542
                runIfPresent(handle);
11543
                script.onreadystatechange = null;
11544
                html.removeChild(script);
11545
                script = null;
11546
            };
11547
            html.appendChild(script);
11548
        };
11549
    }
11550
11551
    function installSetTimeoutImplementation() {
11552
        registerImmediate = function(handle) {
11553
            setTimeout(runIfPresent, 0, handle);
11554
        };
11555
    }
11556
11557
    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
11558
    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
11559
    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
11560
11561
    // Don't get fooled by e.g. browserify environments.
11562
    if ({}.toString.call(global.process) === "[object process]") {
11563
        // For Node.js before 0.9
11564
        installNextTickImplementation();
11565
11566
    } else if (canUsePostMessage()) {
11567
        // For non-IE10 modern browsers
11568
        installPostMessageImplementation();
11569
11570
    } else if (global.MessageChannel) {
11571
        // For web workers, where supported
11572
        installMessageChannelImplementation();
11573
11574
    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
11575
        // For IE 6–8
11576
        installReadyStateChangeImplementation();
11577
11578
    } else {
11579
        // For older browsers
11580
        installSetTimeoutImplementation();
11581
    }
11582
11583
    attachTo.setImmediate = setImmediate;
11584
    attachTo.clearImmediate = clearImmediate;
11585
}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
11586
11587
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
11588
},{}]},{},[10])(10)
11589
});
11590
11591
/*! pdfmake v0.2.7, @license MIT, @link http://pdfmake.org */
11592
(function webpackUniversalModuleDefinition(root, factory) {
11593
	if(typeof exports === 'object' && typeof module === 'object')
11594
		module.exports = factory();
11595
	else if(typeof define === 'function' && define.amd)
11596
		define([], factory);
11597
	else {
11598
		var a = factory();
11599
		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
11600
	}
11601
})(typeof self !== 'undefined' ? self : this, function() {
11602
return /******/ (function() { // webpackBootstrap
11603
/******/ 	var __webpack_modules__ = ({
11604
11605
/***/ 9282:
11606
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11607
11608
"use strict";
11609
/* provided dependency */ var process = __webpack_require__(4155);
11610
// Currently in sync with Node.js lib/assert.js
11611
// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b
11612
// Originally from narwhal.js (http://narwhaljs.org)
11613
// Copyright (c) 2009 Thomas Robinson <280north.com>
11614
//
11615
// Permission is hereby granted, free of charge, to any person obtaining a copy
11616
// of this software and associated documentation files (the 'Software'), to
11617
// deal in the Software without restriction, including without limitation the
11618
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11619
// sell copies of the Software, and to permit persons to whom the Software is
11620
// furnished to do so, subject to the following conditions:
11621
//
11622
// The above copyright notice and this permission notice shall be included in
11623
// all copies or substantial portions of the Software.
11624
//
11625
// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11626
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11627
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
11628
// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
11629
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
11630
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11631
11632
11633
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11634
11635
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11636
11637
var _require = __webpack_require__(2136),
11638
    _require$codes = _require.codes,
11639
    ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,
11640
    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
11641
    ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,
11642
    ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,
11643
    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
11644
11645
var AssertionError = __webpack_require__(5961);
11646
11647
var _require2 = __webpack_require__(9539),
11648
    inspect = _require2.inspect;
11649
11650
var _require$types = (__webpack_require__(9539).types),
11651
    isPromise = _require$types.isPromise,
11652
    isRegExp = _require$types.isRegExp;
11653
11654
var objectAssign = Object.assign ? Object.assign : (__webpack_require__(8091).assign);
11655
var objectIs = Object.is ? Object.is : __webpack_require__(609);
11656
var errorCache = new Map();
11657
var isDeepEqual;
11658
var isDeepStrictEqual;
11659
var parseExpressionAt;
11660
var findNodeAround;
11661
var decoder;
11662
11663
function lazyLoadComparison() {
11664
  var comparison = __webpack_require__(9158);
11665
11666
  isDeepEqual = comparison.isDeepEqual;
11667
  isDeepStrictEqual = comparison.isDeepStrictEqual;
11668
} // Escape control characters but not \n and \t to keep the line breaks and
11669
// indentation intact.
11670
// eslint-disable-next-line no-control-regex
11671
11672
11673
var escapeSequencesRegExp = /[\x00-\x08\x0b\x0c\x0e-\x1f]/g;
11674
var meta = (/* unused pure expression or super */ null && (["\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006", "\\u0007", '\\b', '', '', "\\u000b", '\\f', '', "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f"]));
11675
11676
var escapeFn = function escapeFn(str) {
11677
  return meta[str.charCodeAt(0)];
11678
};
11679
11680
var warned = false; // The assert module provides functions that throw
11681
// AssertionError's when particular conditions are not met. The
11682
// assert module must conform to the following interface.
11683
11684
var assert = module.exports = ok;
11685
var NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError
11686
// when a corresponding condition is not met, with a message that
11687
// may be undefined if not provided. All assertion methods provide
11688
// both the actual and expected values to the assertion error for
11689
// display purposes.
11690
11691
function innerFail(obj) {
11692
  if (obj.message instanceof Error) throw obj.message;
11693
  throw new AssertionError(obj);
11694
}
11695
11696
function fail(actual, expected, message, operator, stackStartFn) {
11697
  var argsLen = arguments.length;
11698
  var internalMessage;
11699
11700
  if (argsLen === 0) {
11701
    internalMessage = 'Failed';
11702
  } else if (argsLen === 1) {
11703
    message = actual;
11704
    actual = undefined;
11705
  } else {
11706
    if (warned === false) {
11707
      warned = true;
11708
      var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);
11709
      warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');
11710
    }
11711
11712
    if (argsLen === 2) operator = '!=';
11713
  }
11714
11715
  if (message instanceof Error) throw message;
11716
  var errArgs = {
11717
    actual: actual,
11718
    expected: expected,
11719
    operator: operator === undefined ? 'fail' : operator,
11720
    stackStartFn: stackStartFn || fail
11721
  };
11722
11723
  if (message !== undefined) {
11724
    errArgs.message = message;
11725
  }
11726
11727
  var err = new AssertionError(errArgs);
11728
11729
  if (internalMessage) {
11730
    err.message = internalMessage;
11731
    err.generatedMessage = true;
11732
  }
11733
11734
  throw err;
11735
}
11736
11737
assert.fail = fail; // The AssertionError is defined in internal/error.
11738
11739
assert.AssertionError = AssertionError;
11740
11741
function innerOk(fn, argLen, value, message) {
11742
  if (!value) {
11743
    var generatedMessage = false;
11744
11745
    if (argLen === 0) {
11746
      generatedMessage = true;
11747
      message = 'No value argument passed to `assert.ok()`';
11748
    } else if (message instanceof Error) {
11749
      throw message;
11750
    }
11751
11752
    var err = new AssertionError({
11753
      actual: value,
11754
      expected: true,
11755
      message: message,
11756
      operator: '==',
11757
      stackStartFn: fn
11758
    });
11759
    err.generatedMessage = generatedMessage;
11760
    throw err;
11761
  }
11762
} // Pure assertion tests whether a value is truthy, as determined
11763
// by !!value.
11764
11765
11766
function ok() {
11767
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11768
    args[_key] = arguments[_key];
11769
  }
11770
11771
  innerOk.apply(void 0, [ok, args.length].concat(args));
11772
}
11773
11774
assert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.
11775
11776
/* eslint-disable no-restricted-properties */
11777
11778
assert.equal = function equal(actual, expected, message) {
11779
  if (arguments.length < 2) {
11780
    throw new ERR_MISSING_ARGS('actual', 'expected');
11781
  } // eslint-disable-next-line eqeqeq
11782
11783
11784
  if (actual != expected) {
11785
    innerFail({
11786
      actual: actual,
11787
      expected: expected,
11788
      message: message,
11789
      operator: '==',
11790
      stackStartFn: equal
11791
    });
11792
  }
11793
}; // The non-equality assertion tests for whether two objects are not
11794
// equal with !=.
11795
11796
11797
assert.notEqual = function notEqual(actual, expected, message) {
11798
  if (arguments.length < 2) {
11799
    throw new ERR_MISSING_ARGS('actual', 'expected');
11800
  } // eslint-disable-next-line eqeqeq
11801
11802
11803
  if (actual == expected) {
11804
    innerFail({
11805
      actual: actual,
11806
      expected: expected,
11807
      message: message,
11808
      operator: '!=',
11809
      stackStartFn: notEqual
11810
    });
11811
  }
11812
}; // The equivalence assertion tests a deep equality relation.
11813
11814
11815
assert.deepEqual = function deepEqual(actual, expected, message) {
11816
  if (arguments.length < 2) {
11817
    throw new ERR_MISSING_ARGS('actual', 'expected');
11818
  }
11819
11820
  if (isDeepEqual === undefined) lazyLoadComparison();
11821
11822
  if (!isDeepEqual(actual, expected)) {
11823
    innerFail({
11824
      actual: actual,
11825
      expected: expected,
11826
      message: message,
11827
      operator: 'deepEqual',
11828
      stackStartFn: deepEqual
11829
    });
11830
  }
11831
}; // The non-equivalence assertion tests for any deep inequality.
11832
11833
11834
assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
11835
  if (arguments.length < 2) {
11836
    throw new ERR_MISSING_ARGS('actual', 'expected');
11837
  }
11838
11839
  if (isDeepEqual === undefined) lazyLoadComparison();
11840
11841
  if (isDeepEqual(actual, expected)) {
11842
    innerFail({
11843
      actual: actual,
11844
      expected: expected,
11845
      message: message,
11846
      operator: 'notDeepEqual',
11847
      stackStartFn: notDeepEqual
11848
    });
11849
  }
11850
};
11851
/* eslint-enable */
11852
11853
11854
assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
11855
  if (arguments.length < 2) {
11856
    throw new ERR_MISSING_ARGS('actual', 'expected');
11857
  }
11858
11859
  if (isDeepEqual === undefined) lazyLoadComparison();
11860
11861
  if (!isDeepStrictEqual(actual, expected)) {
11862
    innerFail({
11863
      actual: actual,
11864
      expected: expected,
11865
      message: message,
11866
      operator: 'deepStrictEqual',
11867
      stackStartFn: deepStrictEqual
11868
    });
11869
  }
11870
};
11871
11872
assert.notDeepStrictEqual = notDeepStrictEqual;
11873
11874
function notDeepStrictEqual(actual, expected, message) {
11875
  if (arguments.length < 2) {
11876
    throw new ERR_MISSING_ARGS('actual', 'expected');
11877
  }
11878
11879
  if (isDeepEqual === undefined) lazyLoadComparison();
11880
11881
  if (isDeepStrictEqual(actual, expected)) {
11882
    innerFail({
11883
      actual: actual,
11884
      expected: expected,
11885
      message: message,
11886
      operator: 'notDeepStrictEqual',
11887
      stackStartFn: notDeepStrictEqual
11888
    });
11889
  }
11890
}
11891
11892
assert.strictEqual = function strictEqual(actual, expected, message) {
11893
  if (arguments.length < 2) {
11894
    throw new ERR_MISSING_ARGS('actual', 'expected');
11895
  }
11896
11897
  if (!objectIs(actual, expected)) {
11898
    innerFail({
11899
      actual: actual,
11900
      expected: expected,
11901
      message: message,
11902
      operator: 'strictEqual',
11903
      stackStartFn: strictEqual
11904
    });
11905
  }
11906
};
11907
11908
assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
11909
  if (arguments.length < 2) {
11910
    throw new ERR_MISSING_ARGS('actual', 'expected');
11911
  }
11912
11913
  if (objectIs(actual, expected)) {
11914
    innerFail({
11915
      actual: actual,
11916
      expected: expected,
11917
      message: message,
11918
      operator: 'notStrictEqual',
11919
      stackStartFn: notStrictEqual
11920
    });
11921
  }
11922
};
11923
11924
var Comparison = function Comparison(obj, keys, actual) {
11925
  var _this = this;
11926
11927
  _classCallCheck(this, Comparison);
11928
11929
  keys.forEach(function (key) {
11930
    if (key in obj) {
11931
      if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {
11932
        _this[key] = actual[key];
11933
      } else {
11934
        _this[key] = obj[key];
11935
      }
11936
    }
11937
  });
11938
};
11939
11940
function compareExceptionKey(actual, expected, key, message, keys, fn) {
11941
  if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {
11942
    if (!message) {
11943
      // Create placeholder objects to create a nice output.
11944
      var a = new Comparison(actual, keys);
11945
      var b = new Comparison(expected, keys, actual);
11946
      var err = new AssertionError({
11947
        actual: a,
11948
        expected: b,
11949
        operator: 'deepStrictEqual',
11950
        stackStartFn: fn
11951
      });
11952
      err.actual = actual;
11953
      err.expected = expected;
11954
      err.operator = fn.name;
11955
      throw err;
11956
    }
11957
11958
    innerFail({
11959
      actual: actual,
11960
      expected: expected,
11961
      message: message,
11962
      operator: fn.name,
11963
      stackStartFn: fn
11964
    });
11965
  }
11966
}
11967
11968
function expectedException(actual, expected, msg, fn) {
11969
  if (typeof expected !== 'function') {
11970
    if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.
11971
11972
    if (arguments.length === 2) {
11973
      throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);
11974
    } // Handle primitives properly.
11975
11976
11977
    if (_typeof(actual) !== 'object' || actual === null) {
11978
      var err = new AssertionError({
11979
        actual: actual,
11980
        expected: expected,
11981
        message: msg,
11982
        operator: 'deepStrictEqual',
11983
        stackStartFn: fn
11984
      });
11985
      err.operator = fn.name;
11986
      throw err;
11987
    }
11988
11989
    var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared
11990
    // as well.
11991
11992
    if (expected instanceof Error) {
11993
      keys.push('name', 'message');
11994
    } else if (keys.length === 0) {
11995
      throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');
11996
    }
11997
11998
    if (isDeepEqual === undefined) lazyLoadComparison();
11999
    keys.forEach(function (key) {
12000
      if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {
12001
        return;
12002
      }
12003
12004
      compareExceptionKey(actual, expected, key, msg, keys, fn);
12005
    });
12006
    return true;
12007
  } // Guard instanceof against arrow functions as they don't have a prototype.
12008
12009
12010
  if (expected.prototype !== undefined && actual instanceof expected) {
12011
    return true;
12012
  }
12013
12014
  if (Error.isPrototypeOf(expected)) {
12015
    return false;
12016
  }
12017
12018
  return expected.call({}, actual) === true;
12019
}
12020
12021
function getActual(fn) {
12022
  if (typeof fn !== 'function') {
12023
    throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);
12024
  }
12025
12026
  try {
12027
    fn();
12028
  } catch (e) {
12029
    return e;
12030
  }
12031
12032
  return NO_EXCEPTION_SENTINEL;
12033
}
12034
12035
function checkIsPromise(obj) {
12036
  // Accept native ES6 promises and promises that are implemented in a similar
12037
  // way. Do not accept thenables that use a function as `obj` and that have no
12038
  // `catch` handler.
12039
  // TODO: thenables are checked up until they have the correct methods,
12040
  // but according to documentation, the `then` method should receive
12041
  // the `fulfill` and `reject` arguments as well or it may be never resolved.
12042
  return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';
12043
}
12044
12045
function waitForActual(promiseFn) {
12046
  return Promise.resolve().then(function () {
12047
    var resultPromise;
12048
12049
    if (typeof promiseFn === 'function') {
12050
      // Return a rejected promise if `promiseFn` throws synchronously.
12051
      resultPromise = promiseFn(); // Fail in case no promise is returned.
12052
12053
      if (!checkIsPromise(resultPromise)) {
12054
        throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);
12055
      }
12056
    } else if (checkIsPromise(promiseFn)) {
12057
      resultPromise = promiseFn;
12058
    } else {
12059
      throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);
12060
    }
12061
12062
    return Promise.resolve().then(function () {
12063
      return resultPromise;
12064
    }).then(function () {
12065
      return NO_EXCEPTION_SENTINEL;
12066
    }).catch(function (e) {
12067
      return e;
12068
    });
12069
  });
12070
}
12071
12072
function expectsError(stackStartFn, actual, error, message) {
12073
  if (typeof error === 'string') {
12074
    if (arguments.length === 4) {
12075
      throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);
12076
    }
12077
12078
    if (_typeof(actual) === 'object' && actual !== null) {
12079
      if (actual.message === error) {
12080
        throw new ERR_AMBIGUOUS_ARGUMENT('error/message', "The error message \"".concat(actual.message, "\" is identical to the message."));
12081
      }
12082
    } else if (actual === error) {
12083
      throw new ERR_AMBIGUOUS_ARGUMENT('error/message', "The error \"".concat(actual, "\" is identical to the message."));
12084
    }
12085
12086
    message = error;
12087
    error = undefined;
12088
  } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {
12089
    throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);
12090
  }
12091
12092
  if (actual === NO_EXCEPTION_SENTINEL) {
12093
    var details = '';
12094
12095
    if (error && error.name) {
12096
      details += " (".concat(error.name, ")");
12097
    }
12098
12099
    details += message ? ": ".concat(message) : '.';
12100
    var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';
12101
    innerFail({
12102
      actual: undefined,
12103
      expected: error,
12104
      operator: stackStartFn.name,
12105
      message: "Missing expected ".concat(fnType).concat(details),
12106
      stackStartFn: stackStartFn
12107
    });
12108
  }
12109
12110
  if (error && !expectedException(actual, error, message, stackStartFn)) {
12111
    throw actual;
12112
  }
12113
}
12114
12115
function expectsNoError(stackStartFn, actual, error, message) {
12116
  if (actual === NO_EXCEPTION_SENTINEL) return;
12117
12118
  if (typeof error === 'string') {
12119
    message = error;
12120
    error = undefined;
12121
  }
12122
12123
  if (!error || expectedException(actual, error)) {
12124
    var details = message ? ": ".concat(message) : '.';
12125
    var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';
12126
    innerFail({
12127
      actual: actual,
12128
      expected: error,
12129
      operator: stackStartFn.name,
12130
      message: "Got unwanted ".concat(fnType).concat(details, "\n") + "Actual message: \"".concat(actual && actual.message, "\""),
12131
      stackStartFn: stackStartFn
12132
    });
12133
  }
12134
12135
  throw actual;
12136
}
12137
12138
assert.throws = function throws(promiseFn) {
12139
  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
12140
    args[_key2 - 1] = arguments[_key2];
12141
  }
12142
12143
  expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));
12144
};
12145
12146
assert.rejects = function rejects(promiseFn) {
12147
  for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
12148
    args[_key3 - 1] = arguments[_key3];
12149
  }
12150
12151
  return waitForActual(promiseFn).then(function (result) {
12152
    return expectsError.apply(void 0, [rejects, result].concat(args));
12153
  });
12154
};
12155
12156
assert.doesNotThrow = function doesNotThrow(fn) {
12157
  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
12158
    args[_key4 - 1] = arguments[_key4];
12159
  }
12160
12161
  expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));
12162
};
12163
12164
assert.doesNotReject = function doesNotReject(fn) {
12165
  for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
12166
    args[_key5 - 1] = arguments[_key5];
12167
  }
12168
12169
  return waitForActual(fn).then(function (result) {
12170
    return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));
12171
  });
12172
};
12173
12174
assert.ifError = function ifError(err) {
12175
  if (err !== null && err !== undefined) {
12176
    var message = 'ifError got unwanted exception: ';
12177
12178
    if (_typeof(err) === 'object' && typeof err.message === 'string') {
12179
      if (err.message.length === 0 && err.constructor) {
12180
        message += err.constructor.name;
12181
      } else {
12182
        message += err.message;
12183
      }
12184
    } else {
12185
      message += inspect(err);
12186
    }
12187
12188
    var newErr = new AssertionError({
12189
      actual: err,
12190
      expected: null,
12191
      operator: 'ifError',
12192
      message: message,
12193
      stackStartFn: ifError
12194
    }); // Make sure we actually have a stack trace!
12195
12196
    var origStack = err.stack;
12197
12198
    if (typeof origStack === 'string') {
12199
      // This will remove any duplicated frames from the error frames taken
12200
      // from within `ifError` and add the original error frames to the newly
12201
      // created ones.
12202
      var tmp2 = origStack.split('\n');
12203
      tmp2.shift(); // Filter all frames existing in err.stack.
12204
12205
      var tmp1 = newErr.stack.split('\n');
12206
12207
      for (var i = 0; i < tmp2.length; i++) {
12208
        // Find the first occurrence of the frame.
12209
        var pos = tmp1.indexOf(tmp2[i]);
12210
12211
        if (pos !== -1) {
12212
          // Only keep new frames.
12213
          tmp1 = tmp1.slice(0, pos);
12214
          break;
12215
        }
12216
      }
12217
12218
      newErr.stack = "".concat(tmp1.join('\n'), "\n").concat(tmp2.join('\n'));
12219
    }
12220
12221
    throw newErr;
12222
  }
12223
}; // Expose a strict only variant of assert
12224
12225
12226
function strict() {
12227
  for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
12228
    args[_key6] = arguments[_key6];
12229
  }
12230
12231
  innerOk.apply(void 0, [strict, args.length].concat(args));
12232
}
12233
12234
assert.strict = objectAssign(strict, assert, {
12235
  equal: assert.strictEqual,
12236
  deepEqual: assert.deepStrictEqual,
12237
  notEqual: assert.notStrictEqual,
12238
  notDeepEqual: assert.notDeepStrictEqual
12239
});
12240
assert.strict.strict = assert.strict;
12241
12242
/***/ }),
12243
12244
/***/ 5961:
12245
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12246
12247
"use strict";
12248
/* provided dependency */ var process = __webpack_require__(4155);
12249
// Currently in sync with Node.js lib/internal/assert/assertion_error.js
12250
// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c
12251
12252
12253
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
12254
12255
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12256
12257
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12258
12259
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12260
12261
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12262
12263
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12264
12265
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12266
12267
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
12268
12269
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
12270
12271
function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
12272
12273
function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
12274
12275
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
12276
12277
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12278
12279
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12280
12281
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12282
12283
var _require = __webpack_require__(9539),
12284
    inspect = _require.inspect;
12285
12286
var _require2 = __webpack_require__(2136),
12287
    ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
12288
12289
12290
function endsWith(str, search, this_len) {
12291
  if (this_len === undefined || this_len > str.length) {
12292
    this_len = str.length;
12293
  }
12294
12295
  return str.substring(this_len - search.length, this_len) === search;
12296
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
12297
12298
12299
function repeat(str, count) {
12300
  count = Math.floor(count);
12301
  if (str.length == 0 || count == 0) return '';
12302
  var maxCount = str.length * count;
12303
  count = Math.floor(Math.log(count) / Math.log(2));
12304
12305
  while (count) {
12306
    str += str;
12307
    count--;
12308
  }
12309
12310
  str += str.substring(0, maxCount - str.length);
12311
  return str;
12312
}
12313
12314
var blue = '';
12315
var green = '';
12316
var red = '';
12317
var white = '';
12318
var kReadableOperator = {
12319
  deepStrictEqual: 'Expected values to be strictly deep-equal:',
12320
  strictEqual: 'Expected values to be strictly equal:',
12321
  strictEqualObject: 'Expected "actual" to be reference-equal to "expected":',
12322
  deepEqual: 'Expected values to be loosely deep-equal:',
12323
  equal: 'Expected values to be loosely equal:',
12324
  notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:',
12325
  notStrictEqual: 'Expected "actual" to be strictly unequal to:',
12326
  notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":',
12327
  notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:',
12328
  notEqual: 'Expected "actual" to be loosely unequal to:',
12329
  notIdentical: 'Values identical but not reference-equal:'
12330
}; // Comparing short primitives should just show === / !== instead of using the
12331
// diff.
12332
12333
var kMaxShortLength = 10;
12334
12335
function copyError(source) {
12336
  var keys = Object.keys(source);
12337
  var target = Object.create(Object.getPrototypeOf(source));
12338
  keys.forEach(function (key) {
12339
    target[key] = source[key];
12340
  });
12341
  Object.defineProperty(target, 'message', {
12342
    value: source.message
12343
  });
12344
  return target;
12345
}
12346
12347
function inspectValue(val) {
12348
  // The util.inspect default values could be changed. This makes sure the
12349
  // error messages contain the necessary information nevertheless.
12350
  return inspect(val, {
12351
    compact: false,
12352
    customInspect: false,
12353
    depth: 1000,
12354
    maxArrayLength: Infinity,
12355
    // Assert compares only enumerable properties (with a few exceptions).
12356
    showHidden: false,
12357
    // Having a long line as error is better than wrapping the line for
12358
    // comparison for now.
12359
    // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we
12360
    // have meta information about the inspected properties (i.e., know where
12361
    // in what line the property starts and ends).
12362
    breakLength: Infinity,
12363
    // Assert does not detect proxies currently.
12364
    showProxy: false,
12365
    sorted: true,
12366
    // Inspect getters as we also check them when comparing entries.
12367
    getters: true
12368
  });
12369
}
12370
12371
function createErrDiff(actual, expected, operator) {
12372
  var other = '';
12373
  var res = '';
12374
  var lastPos = 0;
12375
  var end = '';
12376
  var skipped = false;
12377
  var actualInspected = inspectValue(actual);
12378
  var actualLines = actualInspected.split('\n');
12379
  var expectedLines = inspectValue(expected).split('\n');
12380
  var i = 0;
12381
  var indicator = ''; // In case both values are objects explicitly mark them as not reference equal
12382
  // for the `strictEqual` operator.
12383
12384
  if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {
12385
    operator = 'strictEqualObject';
12386
  } // If "actual" and "expected" fit on a single line and they are not strictly
12387
  // equal, check further special handling.
12388
12389
12390
  if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {
12391
    var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of "actual" and "expected" together is less than
12392
    // kMaxShortLength and if neither is an object and at least one of them is
12393
    // not `zero`, use the strict equal comparison to visualize the output.
12394
12395
    if (inputLength <= kMaxShortLength) {
12396
      if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {
12397
        // -0 === +0
12398
        return "".concat(kReadableOperator[operator], "\n\n") + "".concat(actualLines[0], " !== ").concat(expectedLines[0], "\n");
12399
      }
12400
    } else if (operator !== 'strictEqualObject') {
12401
      // If the stderr is a tty and the input length is lower than the current
12402
      // columns per line, add a mismatch indicator below the output. If it is
12403
      // not a tty, use a default value of 80 characters.
12404
      var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;
12405
12406
      if (inputLength < maxLength) {
12407
        while (actualLines[0][i] === expectedLines[0][i]) {
12408
          i++;
12409
        } // Ignore the first characters.
12410
12411
12412
        if (i > 2) {
12413
          // Add position indicator for the first mismatch in case it is a
12414
          // single line and the input length is less than the column length.
12415
          indicator = "\n  ".concat(repeat(' ', i), "^");
12416
          i = 0;
12417
        }
12418
      }
12419
    }
12420
  } // Remove all ending lines that match (this optimizes the output for
12421
  // readability by reducing the number of total changed lines).
12422
12423
12424
  var a = actualLines[actualLines.length - 1];
12425
  var b = expectedLines[expectedLines.length - 1];
12426
12427
  while (a === b) {
12428
    if (i++ < 2) {
12429
      end = "\n  ".concat(a).concat(end);
12430
    } else {
12431
      other = a;
12432
    }
12433
12434
    actualLines.pop();
12435
    expectedLines.pop();
12436
    if (actualLines.length === 0 || expectedLines.length === 0) break;
12437
    a = actualLines[actualLines.length - 1];
12438
    b = expectedLines[expectedLines.length - 1];
12439
  }
12440
12441
  var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.
12442
  // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })
12443
12444
  if (maxLines === 0) {
12445
    // We have to get the result again. The lines were all removed before.
12446
    var _actualLines = actualInspected.split('\n'); // Only remove lines in case it makes sense to collapse those.
12447
    // TODO: Accept env to always show the full error.
12448
12449
12450
    if (_actualLines.length > 30) {
12451
      _actualLines[26] = "".concat(blue, "...").concat(white);
12452
12453
      while (_actualLines.length > 27) {
12454
        _actualLines.pop();
12455
      }
12456
    }
12457
12458
    return "".concat(kReadableOperator.notIdentical, "\n\n").concat(_actualLines.join('\n'), "\n");
12459
  }
12460
12461
  if (i > 3) {
12462
    end = "\n".concat(blue, "...").concat(white).concat(end);
12463
    skipped = true;
12464
  }
12465
12466
  if (other !== '') {
12467
    end = "\n  ".concat(other).concat(end);
12468
    other = '';
12469
  }
12470
12471
  var printedLines = 0;
12472
  var msg = kReadableOperator[operator] + "\n".concat(green, "+ actual").concat(white, " ").concat(red, "- expected").concat(white);
12473
  var skippedMsg = " ".concat(blue, "...").concat(white, " Lines skipped");
12474
12475
  for (i = 0; i < maxLines; i++) {
12476
    // Only extra expected lines exist
12477
    var cur = i - lastPos;
12478
12479
    if (actualLines.length < i + 1) {
12480
      // If the last diverging line is more than one line above and the
12481
      // current line is at least line three, add some of the former lines and
12482
      // also add dots to indicate skipped entries.
12483
      if (cur > 1 && i > 2) {
12484
        if (cur > 4) {
12485
          res += "\n".concat(blue, "...").concat(white);
12486
          skipped = true;
12487
        } else if (cur > 3) {
12488
          res += "\n  ".concat(expectedLines[i - 2]);
12489
          printedLines++;
12490
        }
12491
12492
        res += "\n  ".concat(expectedLines[i - 1]);
12493
        printedLines++;
12494
      } // Mark the current line as the last diverging one.
12495
12496
12497
      lastPos = i; // Add the expected line to the cache.
12498
12499
      other += "\n".concat(red, "-").concat(white, " ").concat(expectedLines[i]);
12500
      printedLines++; // Only extra actual lines exist
12501
    } else if (expectedLines.length < i + 1) {
12502
      // If the last diverging line is more than one line above and the
12503
      // current line is at least line three, add some of the former lines and
12504
      // also add dots to indicate skipped entries.
12505
      if (cur > 1 && i > 2) {
12506
        if (cur > 4) {
12507
          res += "\n".concat(blue, "...").concat(white);
12508
          skipped = true;
12509
        } else if (cur > 3) {
12510
          res += "\n  ".concat(actualLines[i - 2]);
12511
          printedLines++;
12512
        }
12513
12514
        res += "\n  ".concat(actualLines[i - 1]);
12515
        printedLines++;
12516
      } // Mark the current line as the last diverging one.
12517
12518
12519
      lastPos = i; // Add the actual line to the result.
12520
12521
      res += "\n".concat(green, "+").concat(white, " ").concat(actualLines[i]);
12522
      printedLines++; // Lines diverge
12523
    } else {
12524
      var expectedLine = expectedLines[i];
12525
      var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by
12526
      // a trailing comma. In that case it is actually identical and we should
12527
      // mark it as such.
12528
12529
      var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,
12530
      // add a comma at the end of the actual line. Otherwise the output could
12531
      // look weird as in:
12532
      //
12533
      //   [
12534
      //     1         // No comma at the end!
12535
      // +   2
12536
      //   ]
12537
      //
12538
12539
      if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {
12540
        divergingLines = false;
12541
        actualLine += ',';
12542
      }
12543
12544
      if (divergingLines) {
12545
        // If the last diverging line is more than one line above and the
12546
        // current line is at least line three, add some of the former lines and
12547
        // also add dots to indicate skipped entries.
12548
        if (cur > 1 && i > 2) {
12549
          if (cur > 4) {
12550
            res += "\n".concat(blue, "...").concat(white);
12551
            skipped = true;
12552
          } else if (cur > 3) {
12553
            res += "\n  ".concat(actualLines[i - 2]);
12554
            printedLines++;
12555
          }
12556
12557
          res += "\n  ".concat(actualLines[i - 1]);
12558
          printedLines++;
12559
        } // Mark the current line as the last diverging one.
12560
12561
12562
        lastPos = i; // Add the actual line to the result and cache the expected diverging
12563
        // line so consecutive diverging lines show up as +++--- and not +-+-+-.
12564
12565
        res += "\n".concat(green, "+").concat(white, " ").concat(actualLine);
12566
        other += "\n".concat(red, "-").concat(white, " ").concat(expectedLine);
12567
        printedLines += 2; // Lines are identical
12568
      } else {
12569
        // Add all cached information to the result before adding other things
12570
        // and reset the cache.
12571
        res += other;
12572
        other = ''; // If the last diverging line is exactly one line above or if it is the
12573
        // very first line, add the line to the result.
12574
12575
        if (cur === 1 || i === 0) {
12576
          res += "\n  ".concat(actualLine);
12577
          printedLines++;
12578
        }
12579
      }
12580
    } // Inspected object to big (Show ~20 rows max)
12581
12582
12583
    if (printedLines > 20 && i < maxLines - 2) {
12584
      return "".concat(msg).concat(skippedMsg, "\n").concat(res, "\n").concat(blue, "...").concat(white).concat(other, "\n") + "".concat(blue, "...").concat(white);
12585
    }
12586
  }
12587
12588
  return "".concat(msg).concat(skipped ? skippedMsg : '', "\n").concat(res).concat(other).concat(end).concat(indicator);
12589
}
12590
12591
var AssertionError =
12592
/*#__PURE__*/
12593
function (_Error) {
12594
  _inherits(AssertionError, _Error);
12595
12596
  function AssertionError(options) {
12597
    var _this;
12598
12599
    _classCallCheck(this, AssertionError);
12600
12601
    if (_typeof(options) !== 'object' || options === null) {
12602
      throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);
12603
    }
12604
12605
    var message = options.message,
12606
        operator = options.operator,
12607
        stackStartFn = options.stackStartFn;
12608
    var actual = options.actual,
12609
        expected = options.expected;
12610
    var limit = Error.stackTraceLimit;
12611
    Error.stackTraceLimit = 0;
12612
12613
    if (message != null) {
12614
      _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));
12615
    } else {
12616
      if (process.stderr && process.stderr.isTTY) {
12617
        // Reset on each call to make sure we handle dynamically set environment
12618
        // variables correct.
12619
        if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {
12620
          blue = "\x1B[34m";
12621
          green = "\x1B[32m";
12622
          white = "\x1B[39m";
12623
          red = "\x1B[31m";
12624
        } else {
12625
          blue = '';
12626
          green = '';
12627
          white = '';
12628
          red = '';
12629
        }
12630
      } // Prevent the error stack from being visible by duplicating the error
12631
      // in a very close way to the original in case both sides are actually
12632
      // instances of Error.
12633
12634
12635
      if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {
12636
        actual = copyError(actual);
12637
        expected = copyError(expected);
12638
      }
12639
12640
      if (operator === 'deepStrictEqual' || operator === 'strictEqual') {
12641
        _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));
12642
      } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {
12643
        // In case the objects are equal but the operator requires unequal, show
12644
        // the first object and say A equals B
12645
        var base = kReadableOperator[operator];
12646
        var res = inspectValue(actual).split('\n'); // In case "actual" is an object, it should not be reference equal.
12647
12648
        if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {
12649
          base = kReadableOperator.notStrictEqualObject;
12650
        } // Only remove lines in case it makes sense to collapse those.
12651
        // TODO: Accept env to always show the full error.
12652
12653
12654
        if (res.length > 30) {
12655
          res[26] = "".concat(blue, "...").concat(white);
12656
12657
          while (res.length > 27) {
12658
            res.pop();
12659
          }
12660
        } // Only print a single input.
12661
12662
12663
        if (res.length === 1) {
12664
          _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, "".concat(base, " ").concat(res[0])));
12665
        } else {
12666
          _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, "".concat(base, "\n\n").concat(res.join('\n'), "\n")));
12667
        }
12668
      } else {
12669
        var _res = inspectValue(actual);
12670
12671
        var other = '';
12672
        var knownOperators = kReadableOperator[operator];
12673
12674
        if (operator === 'notDeepEqual' || operator === 'notEqual') {
12675
          _res = "".concat(kReadableOperator[operator], "\n\n").concat(_res);
12676
12677
          if (_res.length > 1024) {
12678
            _res = "".concat(_res.slice(0, 1021), "...");
12679
          }
12680
        } else {
12681
          other = "".concat(inspectValue(expected));
12682
12683
          if (_res.length > 512) {
12684
            _res = "".concat(_res.slice(0, 509), "...");
12685
          }
12686
12687
          if (other.length > 512) {
12688
            other = "".concat(other.slice(0, 509), "...");
12689
          }
12690
12691
          if (operator === 'deepEqual' || operator === 'equal') {
12692
            _res = "".concat(knownOperators, "\n\n").concat(_res, "\n\nshould equal\n\n");
12693
          } else {
12694
            other = " ".concat(operator, " ").concat(other);
12695
          }
12696
        }
12697
12698
        _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, "".concat(_res).concat(other)));
12699
      }
12700
    }
12701
12702
    Error.stackTraceLimit = limit;
12703
    _this.generatedMessage = !message;
12704
    Object.defineProperty(_assertThisInitialized(_this), 'name', {
12705
      value: 'AssertionError [ERR_ASSERTION]',
12706
      enumerable: false,
12707
      writable: true,
12708
      configurable: true
12709
    });
12710
    _this.code = 'ERR_ASSERTION';
12711
    _this.actual = actual;
12712
    _this.expected = expected;
12713
    _this.operator = operator;
12714
12715
    if (Error.captureStackTrace) {
12716
      // eslint-disable-next-line no-restricted-syntax
12717
      Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);
12718
    } // Create error message including the error code in the name.
12719
12720
12721
    _this.stack; // Reset the name.
12722
12723
    _this.name = 'AssertionError';
12724
    return _possibleConstructorReturn(_this);
12725
  }
12726
12727
  _createClass(AssertionError, [{
12728
    key: "toString",
12729
    value: function toString() {
12730
      return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message);
12731
    }
12732
  }, {
12733
    key: inspect.custom,
12734
    value: function value(recurseTimes, ctx) {
12735
      // This limits the `actual` and `expected` property default inspection to
12736
      // the minimum depth. Otherwise those values would be too verbose compared
12737
      // to the actual error message which contains a combined view of these two
12738
      // input values.
12739
      return inspect(this, _objectSpread({}, ctx, {
12740
        customInspect: false,
12741
        depth: 0
12742
      }));
12743
    }
12744
  }]);
12745
12746
  return AssertionError;
12747
}(_wrapNativeSuper(Error));
12748
12749
module.exports = AssertionError;
12750
12751
/***/ }),
12752
12753
/***/ 2136:
12754
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12755
12756
"use strict";
12757
// Currently in sync with Node.js lib/internal/errors.js
12758
// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f
12759
12760
/* eslint node-core/documented-errors: "error" */
12761
12762
/* eslint node-core/alphabetize-errors: "error" */
12763
12764
/* eslint node-core/prefer-util-format-errors: "error" */
12765
 // The whole point behind this internal module is to allow Node.js to no
12766
// longer be forced to treat every error message change as a semver-major
12767
// change. The NodeError classes here all expose a `code` property whose
12768
// value statically and permanently identifies the error. While the error
12769
// message may change, the code should not.
12770
12771
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12772
12773
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12774
12775
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12776
12777
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12778
12779
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12780
12781
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
12782
12783
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12784
12785
var codes = {}; // Lazy loaded
12786
12787
var assert;
12788
var util;
12789
12790
function createErrorType(code, message, Base) {
12791
  if (!Base) {
12792
    Base = Error;
12793
  }
12794
12795
  function getMessage(arg1, arg2, arg3) {
12796
    if (typeof message === 'string') {
12797
      return message;
12798
    } else {
12799
      return message(arg1, arg2, arg3);
12800
    }
12801
  }
12802
12803
  var NodeError =
12804
  /*#__PURE__*/
12805
  function (_Base) {
12806
    _inherits(NodeError, _Base);
12807
12808
    function NodeError(arg1, arg2, arg3) {
12809
      var _this;
12810
12811
      _classCallCheck(this, NodeError);
12812
12813
      _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));
12814
      _this.code = code;
12815
      return _this;
12816
    }
12817
12818
    return NodeError;
12819
  }(Base);
12820
12821
  codes[code] = NodeError;
12822
} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
12823
12824
12825
function oneOf(expected, thing) {
12826
  if (Array.isArray(expected)) {
12827
    var len = expected.length;
12828
    expected = expected.map(function (i) {
12829
      return String(i);
12830
    });
12831
12832
    if (len > 2) {
12833
      return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1];
12834
    } else if (len === 2) {
12835
      return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]);
12836
    } else {
12837
      return "of ".concat(thing, " ").concat(expected[0]);
12838
    }
12839
  } else {
12840
    return "of ".concat(thing, " ").concat(String(expected));
12841
  }
12842
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
12843
12844
12845
function startsWith(str, search, pos) {
12846
  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
12847
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
12848
12849
12850
function endsWith(str, search, this_len) {
12851
  if (this_len === undefined || this_len > str.length) {
12852
    this_len = str.length;
12853
  }
12854
12855
  return str.substring(this_len - search.length, this_len) === search;
12856
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
12857
12858
12859
function includes(str, search, start) {
12860
  if (typeof start !== 'number') {
12861
    start = 0;
12862
  }
12863
12864
  if (start + search.length > str.length) {
12865
    return false;
12866
  } else {
12867
    return str.indexOf(search, start) !== -1;
12868
  }
12869
}
12870
12871
createErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The "%s" argument is ambiguous. %s', TypeError);
12872
createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {
12873
  if (assert === undefined) assert = __webpack_require__(9282);
12874
  assert(typeof name === 'string', "'name' must be a string"); // determiner: 'must be' or 'must not be'
12875
12876
  var determiner;
12877
12878
  if (typeof expected === 'string' && startsWith(expected, 'not ')) {
12879
    determiner = 'must not be';
12880
    expected = expected.replace(/^not /, '');
12881
  } else {
12882
    determiner = 'must be';
12883
  }
12884
12885
  var msg;
12886
12887
  if (endsWith(name, ' argument')) {
12888
    // For cases like 'first argument'
12889
    msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
12890
  } else {
12891
    var type = includes(name, '.') ? 'property' : 'argument';
12892
    msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
12893
  } // TODO(BridgeAR): Improve the output by showing `null` and similar.
12894
12895
12896
  msg += ". Received type ".concat(_typeof(actual));
12897
  return msg;
12898
}, TypeError);
12899
createErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {
12900
  var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';
12901
  if (util === undefined) util = __webpack_require__(9539);
12902
  var inspected = util.inspect(value);
12903
12904
  if (inspected.length > 128) {
12905
    inspected = "".concat(inspected.slice(0, 128), "...");
12906
  }
12907
12908
  return "The argument '".concat(name, "' ").concat(reason, ". Received ").concat(inspected);
12909
}, TypeError, RangeError);
12910
createErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {
12911
  var type;
12912
12913
  if (value && value.constructor && value.constructor.name) {
12914
    type = "instance of ".concat(value.constructor.name);
12915
  } else {
12916
    type = "type ".concat(_typeof(value));
12917
  }
12918
12919
  return "Expected ".concat(input, " to be returned from the \"").concat(name, "\"") + " function but got ".concat(type, ".");
12920
}, TypeError);
12921
createErrorType('ERR_MISSING_ARGS', function () {
12922
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
12923
    args[_key] = arguments[_key];
12924
  }
12925
12926
  if (assert === undefined) assert = __webpack_require__(9282);
12927
  assert(args.length > 0, 'At least one arg needs to be specified');
12928
  var msg = 'The ';
12929
  var len = args.length;
12930
  args = args.map(function (a) {
12931
    return "\"".concat(a, "\"");
12932
  });
12933
12934
  switch (len) {
12935
    case 1:
12936
      msg += "".concat(args[0], " argument");
12937
      break;
12938
12939
    case 2:
12940
      msg += "".concat(args[0], " and ").concat(args[1], " arguments");
12941
      break;
12942
12943
    default:
12944
      msg += args.slice(0, len - 1).join(', ');
12945
      msg += ", and ".concat(args[len - 1], " arguments");
12946
      break;
12947
  }
12948
12949
  return "".concat(msg, " must be specified");
12950
}, TypeError);
12951
module.exports.codes = codes;
12952
12953
/***/ }),
12954
12955
/***/ 9158:
12956
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12957
12958
"use strict";
12959
// Currently in sync with Node.js lib/internal/util/comparisons.js
12960
// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9
12961
12962
12963
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
12964
12965
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
12966
12967
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12968
12969
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12970
12971
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12972
12973
var regexFlagsSupported = /a/g.flags !== undefined;
12974
12975
var arrayFromSet = function arrayFromSet(set) {
12976
  var array = [];
12977
  set.forEach(function (value) {
12978
    return array.push(value);
12979
  });
12980
  return array;
12981
};
12982
12983
var arrayFromMap = function arrayFromMap(map) {
12984
  var array = [];
12985
  map.forEach(function (value, key) {
12986
    return array.push([key, value]);
12987
  });
12988
  return array;
12989
};
12990
12991
var objectIs = Object.is ? Object.is : __webpack_require__(609);
12992
var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {
12993
  return [];
12994
};
12995
var numberIsNaN = Number.isNaN ? Number.isNaN : __webpack_require__(360);
12996
12997
function uncurryThis(f) {
12998
  return f.call.bind(f);
12999
}
13000
13001
var hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);
13002
var propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);
13003
var objectToString = uncurryThis(Object.prototype.toString);
13004
13005
var _require$types = (__webpack_require__(9539).types),
13006
    isAnyArrayBuffer = _require$types.isAnyArrayBuffer,
13007
    isArrayBufferView = _require$types.isArrayBufferView,
13008
    isDate = _require$types.isDate,
13009
    isMap = _require$types.isMap,
13010
    isRegExp = _require$types.isRegExp,
13011
    isSet = _require$types.isSet,
13012
    isNativeError = _require$types.isNativeError,
13013
    isBoxedPrimitive = _require$types.isBoxedPrimitive,
13014
    isNumberObject = _require$types.isNumberObject,
13015
    isStringObject = _require$types.isStringObject,
13016
    isBooleanObject = _require$types.isBooleanObject,
13017
    isBigIntObject = _require$types.isBigIntObject,
13018
    isSymbolObject = _require$types.isSymbolObject,
13019
    isFloat32Array = _require$types.isFloat32Array,
13020
    isFloat64Array = _require$types.isFloat64Array;
13021
13022
function isNonIndex(key) {
13023
  if (key.length === 0 || key.length > 10) return true;
13024
13025
  for (var i = 0; i < key.length; i++) {
13026
    var code = key.charCodeAt(i);
13027
    if (code < 48 || code > 57) return true;
13028
  } // The maximum size for an array is 2 ** 32 -1.
13029
13030
13031
  return key.length === 10 && key >= Math.pow(2, 32);
13032
}
13033
13034
function getOwnNonIndexProperties(value) {
13035
  return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));
13036
} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
13037
// original notice:
13038
13039
/*!
13040
 * The buffer module from node.js, for the browser.
13041
 *
13042
 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
13043
 * @license  MIT
13044
 */
13045
13046
13047
function compare(a, b) {
13048
  if (a === b) {
13049
    return 0;
13050
  }
13051
13052
  var x = a.length;
13053
  var y = b.length;
13054
13055
  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
13056
    if (a[i] !== b[i]) {
13057
      x = a[i];
13058
      y = b[i];
13059
      break;
13060
    }
13061
  }
13062
13063
  if (x < y) {
13064
    return -1;
13065
  }
13066
13067
  if (y < x) {
13068
    return 1;
13069
  }
13070
13071
  return 0;
13072
}
13073
13074
var ONLY_ENUMERABLE = undefined;
13075
var kStrict = true;
13076
var kLoose = false;
13077
var kNoIterator = 0;
13078
var kIsArray = 1;
13079
var kIsSet = 2;
13080
var kIsMap = 3; // Check if they have the same source and flags
13081
13082
function areSimilarRegExps(a, b) {
13083
  return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);
13084
}
13085
13086
function areSimilarFloatArrays(a, b) {
13087
  if (a.byteLength !== b.byteLength) {
13088
    return false;
13089
  }
13090
13091
  for (var offset = 0; offset < a.byteLength; offset++) {
13092
    if (a[offset] !== b[offset]) {
13093
      return false;
13094
    }
13095
  }
13096
13097
  return true;
13098
}
13099
13100
function areSimilarTypedArrays(a, b) {
13101
  if (a.byteLength !== b.byteLength) {
13102
    return false;
13103
  }
13104
13105
  return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;
13106
}
13107
13108
function areEqualArrayBuffers(buf1, buf2) {
13109
  return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;
13110
}
13111
13112
function isEqualBoxedPrimitive(val1, val2) {
13113
  if (isNumberObject(val1)) {
13114
    return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));
13115
  }
13116
13117
  if (isStringObject(val1)) {
13118
    return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);
13119
  }
13120
13121
  if (isBooleanObject(val1)) {
13122
    return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);
13123
  }
13124
13125
  if (isBigIntObject(val1)) {
13126
    return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);
13127
  }
13128
13129
  return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);
13130
} // Notes: Type tags are historical [[Class]] properties that can be set by
13131
// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS
13132
// and retrieved using Object.prototype.toString.call(obj) in JS
13133
// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring
13134
// for a list of tags pre-defined in the spec.
13135
// There are some unspecified tags in the wild too (e.g. typed array tags).
13136
// Since tags can be altered, they only serve fast failures
13137
//
13138
// Typed arrays and buffers are checked by comparing the content in their
13139
// underlying ArrayBuffer. This optimization requires that it's
13140
// reasonable to interpret their underlying memory in the same way,
13141
// which is checked by comparing their type tags.
13142
// (e.g. a Uint8Array and a Uint16Array with the same memory content
13143
// could still be different because they will be interpreted differently).
13144
//
13145
// For strict comparison, objects should have
13146
// a) The same built-in type tags
13147
// b) The same prototypes.
13148
13149
13150
function innerDeepEqual(val1, val2, strict, memos) {
13151
  // All identical values are equivalent, as determined by ===.
13152
  if (val1 === val2) {
13153
    if (val1 !== 0) return true;
13154
    return strict ? objectIs(val1, val2) : true;
13155
  } // Check more closely if val1 and val2 are equal.
13156
13157
13158
  if (strict) {
13159
    if (_typeof(val1) !== 'object') {
13160
      return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);
13161
    }
13162
13163
    if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {
13164
      return false;
13165
    }
13166
13167
    if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {
13168
      return false;
13169
    }
13170
  } else {
13171
    if (val1 === null || _typeof(val1) !== 'object') {
13172
      if (val2 === null || _typeof(val2) !== 'object') {
13173
        // eslint-disable-next-line eqeqeq
13174
        return val1 == val2;
13175
      }
13176
13177
      return false;
13178
    }
13179
13180
    if (val2 === null || _typeof(val2) !== 'object') {
13181
      return false;
13182
    }
13183
  }
13184
13185
  var val1Tag = objectToString(val1);
13186
  var val2Tag = objectToString(val2);
13187
13188
  if (val1Tag !== val2Tag) {
13189
    return false;
13190
  }
13191
13192
  if (Array.isArray(val1)) {
13193
    // Check for sparse arrays and general fast path
13194
    if (val1.length !== val2.length) {
13195
      return false;
13196
    }
13197
13198
    var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);
13199
    var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);
13200
13201
    if (keys1.length !== keys2.length) {
13202
      return false;
13203
    }
13204
13205
    return keyCheck(val1, val2, strict, memos, kIsArray, keys1);
13206
  } // [browserify] This triggers on certain types in IE (Map/Set) so we don't
13207
  // wan't to early return out of the rest of the checks. However we can check
13208
  // if the second value is one of these values and the first isn't.
13209
13210
13211
  if (val1Tag === '[object Object]') {
13212
    // return keyCheck(val1, val2, strict, memos, kNoIterator);
13213
    if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {
13214
      return false;
13215
    }
13216
  }
13217
13218
  if (isDate(val1)) {
13219
    if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {
13220
      return false;
13221
    }
13222
  } else if (isRegExp(val1)) {
13223
    if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {
13224
      return false;
13225
    }
13226
  } else if (isNativeError(val1) || val1 instanceof Error) {
13227
    // Do not compare the stack as it might differ even though the error itself
13228
    // is otherwise identical.
13229
    if (val1.message !== val2.message || val1.name !== val2.name) {
13230
      return false;
13231
    }
13232
  } else if (isArrayBufferView(val1)) {
13233
    if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {
13234
      if (!areSimilarFloatArrays(val1, val2)) {
13235
        return false;
13236
      }
13237
    } else if (!areSimilarTypedArrays(val1, val2)) {
13238
      return false;
13239
    } // Buffer.compare returns true, so val1.length === val2.length. If they both
13240
    // only contain numeric keys, we don't need to exam further than checking
13241
    // the symbols.
13242
13243
13244
    var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);
13245
13246
    var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);
13247
13248
    if (_keys.length !== _keys2.length) {
13249
      return false;
13250
    }
13251
13252
    return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);
13253
  } else if (isSet(val1)) {
13254
    if (!isSet(val2) || val1.size !== val2.size) {
13255
      return false;
13256
    }
13257
13258
    return keyCheck(val1, val2, strict, memos, kIsSet);
13259
  } else if (isMap(val1)) {
13260
    if (!isMap(val2) || val1.size !== val2.size) {
13261
      return false;
13262
    }
13263
13264
    return keyCheck(val1, val2, strict, memos, kIsMap);
13265
  } else if (isAnyArrayBuffer(val1)) {
13266
    if (!areEqualArrayBuffers(val1, val2)) {
13267
      return false;
13268
    }
13269
  } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {
13270
    return false;
13271
  }
13272
13273
  return keyCheck(val1, val2, strict, memos, kNoIterator);
13274
}
13275
13276
function getEnumerables(val, keys) {
13277
  return keys.filter(function (k) {
13278
    return propertyIsEnumerable(val, k);
13279
  });
13280
}
13281
13282
function keyCheck(val1, val2, strict, memos, iterationType, aKeys) {
13283
  // For all remaining Object pairs, including Array, objects and Maps,
13284
  // equivalence is determined by having:
13285
  // a) The same number of owned enumerable properties
13286
  // b) The same set of keys/indexes (although not necessarily the same order)
13287
  // c) Equivalent values for every corresponding key/index
13288
  // d) For Sets and Maps, equal contents
13289
  // Note: this accounts for both named and indexed properties on Arrays.
13290
  if (arguments.length === 5) {
13291
    aKeys = Object.keys(val1);
13292
    var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.
13293
13294
    if (aKeys.length !== bKeys.length) {
13295
      return false;
13296
    }
13297
  } // Cheap key test
13298
13299
13300
  var i = 0;
13301
13302
  for (; i < aKeys.length; i++) {
13303
    if (!hasOwnProperty(val2, aKeys[i])) {
13304
      return false;
13305
    }
13306
  }
13307
13308
  if (strict && arguments.length === 5) {
13309
    var symbolKeysA = objectGetOwnPropertySymbols(val1);
13310
13311
    if (symbolKeysA.length !== 0) {
13312
      var count = 0;
13313
13314
      for (i = 0; i < symbolKeysA.length; i++) {
13315
        var key = symbolKeysA[i];
13316
13317
        if (propertyIsEnumerable(val1, key)) {
13318
          if (!propertyIsEnumerable(val2, key)) {
13319
            return false;
13320
          }
13321
13322
          aKeys.push(key);
13323
          count++;
13324
        } else if (propertyIsEnumerable(val2, key)) {
13325
          return false;
13326
        }
13327
      }
13328
13329
      var symbolKeysB = objectGetOwnPropertySymbols(val2);
13330
13331
      if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {
13332
        return false;
13333
      }
13334
    } else {
13335
      var _symbolKeysB = objectGetOwnPropertySymbols(val2);
13336
13337
      if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {
13338
        return false;
13339
      }
13340
    }
13341
  }
13342
13343
  if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {
13344
    return true;
13345
  } // Use memos to handle cycles.
13346
13347
13348
  if (memos === undefined) {
13349
    memos = {
13350
      val1: new Map(),
13351
      val2: new Map(),
13352
      position: 0
13353
    };
13354
  } else {
13355
    // We prevent up to two map.has(x) calls by directly retrieving the value
13356
    // and checking for undefined. The map can only contain numbers, so it is
13357
    // safe to check for undefined only.
13358
    var val2MemoA = memos.val1.get(val1);
13359
13360
    if (val2MemoA !== undefined) {
13361
      var val2MemoB = memos.val2.get(val2);
13362
13363
      if (val2MemoB !== undefined) {
13364
        return val2MemoA === val2MemoB;
13365
      }
13366
    }
13367
13368
    memos.position++;
13369
  }
13370
13371
  memos.val1.set(val1, memos.position);
13372
  memos.val2.set(val2, memos.position);
13373
  var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);
13374
  memos.val1.delete(val1);
13375
  memos.val2.delete(val2);
13376
  return areEq;
13377
}
13378
13379
function setHasEqualElement(set, val1, strict, memo) {
13380
  // Go looking.
13381
  var setValues = arrayFromSet(set);
13382
13383
  for (var i = 0; i < setValues.length; i++) {
13384
    var val2 = setValues[i];
13385
13386
    if (innerDeepEqual(val1, val2, strict, memo)) {
13387
      // Remove the matching element to make sure we do not check that again.
13388
      set.delete(val2);
13389
      return true;
13390
    }
13391
  }
13392
13393
  return false;
13394
} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using
13395
// Sadly it is not possible to detect corresponding values properly in case the
13396
// type is a string, number, bigint or boolean. The reason is that those values
13397
// can match lots of different string values (e.g., 1n == '+00001').
13398
13399
13400
function findLooseMatchingPrimitives(prim) {
13401
  switch (_typeof(prim)) {
13402
    case 'undefined':
13403
      return null;
13404
13405
    case 'object':
13406
      // Only pass in null as object!
13407
      return undefined;
13408
13409
    case 'symbol':
13410
      return false;
13411
13412
    case 'string':
13413
      prim = +prim;
13414
    // Loose equal entries exist only if the string is possible to convert to
13415
    // a regular number and not NaN.
13416
    // Fall through
13417
13418
    case 'number':
13419
      if (numberIsNaN(prim)) {
13420
        return false;
13421
      }
13422
13423
  }
13424
13425
  return true;
13426
}
13427
13428
function setMightHaveLoosePrim(a, b, prim) {
13429
  var altValue = findLooseMatchingPrimitives(prim);
13430
  if (altValue != null) return altValue;
13431
  return b.has(altValue) && !a.has(altValue);
13432
}
13433
13434
function mapMightHaveLoosePrim(a, b, prim, item, memo) {
13435
  var altValue = findLooseMatchingPrimitives(prim);
13436
13437
  if (altValue != null) {
13438
    return altValue;
13439
  }
13440
13441
  var curB = b.get(altValue);
13442
13443
  if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {
13444
    return false;
13445
  }
13446
13447
  return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);
13448
}
13449
13450
function setEquiv(a, b, strict, memo) {
13451
  // This is a lazily initiated Set of entries which have to be compared
13452
  // pairwise.
13453
  var set = null;
13454
  var aValues = arrayFromSet(a);
13455
13456
  for (var i = 0; i < aValues.length; i++) {
13457
    var val = aValues[i]; // Note: Checking for the objects first improves the performance for object
13458
    // heavy sets but it is a minor slow down for primitives. As they are fast
13459
    // to check this improves the worst case scenario instead.
13460
13461
    if (_typeof(val) === 'object' && val !== null) {
13462
      if (set === null) {
13463
        set = new Set();
13464
      } // If the specified value doesn't exist in the second set its an not null
13465
      // object (or non strict only: a not matching primitive) we'll need to go
13466
      // hunting for something thats deep-(strict-)equal to it. To make this
13467
      // O(n log n) complexity we have to copy these values in a new set first.
13468
13469
13470
      set.add(val);
13471
    } else if (!b.has(val)) {
13472
      if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.
13473
13474
      if (!setMightHaveLoosePrim(a, b, val)) {
13475
        return false;
13476
      }
13477
13478
      if (set === null) {
13479
        set = new Set();
13480
      }
13481
13482
      set.add(val);
13483
    }
13484
  }
13485
13486
  if (set !== null) {
13487
    var bValues = arrayFromSet(b);
13488
13489
    for (var _i = 0; _i < bValues.length; _i++) {
13490
      var _val = bValues[_i]; // We have to check if a primitive value is already
13491
      // matching and only if it's not, go hunting for it.
13492
13493
      if (_typeof(_val) === 'object' && _val !== null) {
13494
        if (!setHasEqualElement(set, _val, strict, memo)) return false;
13495
      } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {
13496
        return false;
13497
      }
13498
    }
13499
13500
    return set.size === 0;
13501
  }
13502
13503
  return true;
13504
}
13505
13506
function mapHasEqualEntry(set, map, key1, item1, strict, memo) {
13507
  // To be able to handle cases like:
13508
  //   Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])
13509
  // ... we need to consider *all* matching keys, not just the first we find.
13510
  var setValues = arrayFromSet(set);
13511
13512
  for (var i = 0; i < setValues.length; i++) {
13513
    var key2 = setValues[i];
13514
13515
    if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {
13516
      set.delete(key2);
13517
      return true;
13518
    }
13519
  }
13520
13521
  return false;
13522
}
13523
13524
function mapEquiv(a, b, strict, memo) {
13525
  var set = null;
13526
  var aEntries = arrayFromMap(a);
13527
13528
  for (var i = 0; i < aEntries.length; i++) {
13529
    var _aEntries$i = _slicedToArray(aEntries[i], 2),
13530
        key = _aEntries$i[0],
13531
        item1 = _aEntries$i[1];
13532
13533
    if (_typeof(key) === 'object' && key !== null) {
13534
      if (set === null) {
13535
        set = new Set();
13536
      }
13537
13538
      set.add(key);
13539
    } else {
13540
      // By directly retrieving the value we prevent another b.has(key) check in
13541
      // almost all possible cases.
13542
      var item2 = b.get(key);
13543
13544
      if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {
13545
        if (strict) return false; // Fast path to detect missing string, symbol, undefined and null
13546
        // keys.
13547
13548
        if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;
13549
13550
        if (set === null) {
13551
          set = new Set();
13552
        }
13553
13554
        set.add(key);
13555
      }
13556
    }
13557
  }
13558
13559
  if (set !== null) {
13560
    var bEntries = arrayFromMap(b);
13561
13562
    for (var _i2 = 0; _i2 < bEntries.length; _i2++) {
13563
      var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),
13564
          key = _bEntries$_i[0],
13565
          item = _bEntries$_i[1];
13566
13567
      if (_typeof(key) === 'object' && key !== null) {
13568
        if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;
13569
      } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {
13570
        return false;
13571
      }
13572
    }
13573
13574
    return set.size === 0;
13575
  }
13576
13577
  return true;
13578
}
13579
13580
function objEquiv(a, b, strict, keys, memos, iterationType) {
13581
  // Sets and maps don't have their entries accessible via normal object
13582
  // properties.
13583
  var i = 0;
13584
13585
  if (iterationType === kIsSet) {
13586
    if (!setEquiv(a, b, strict, memos)) {
13587
      return false;
13588
    }
13589
  } else if (iterationType === kIsMap) {
13590
    if (!mapEquiv(a, b, strict, memos)) {
13591
      return false;
13592
    }
13593
  } else if (iterationType === kIsArray) {
13594
    for (; i < a.length; i++) {
13595
      if (hasOwnProperty(a, i)) {
13596
        if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {
13597
          return false;
13598
        }
13599
      } else if (hasOwnProperty(b, i)) {
13600
        return false;
13601
      } else {
13602
        // Array is sparse.
13603
        var keysA = Object.keys(a);
13604
13605
        for (; i < keysA.length; i++) {
13606
          var key = keysA[i];
13607
13608
          if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {
13609
            return false;
13610
          }
13611
        }
13612
13613
        if (keysA.length !== Object.keys(b).length) {
13614
          return false;
13615
        }
13616
13617
        return true;
13618
      }
13619
    }
13620
  } // The pair must have equivalent values for every corresponding key.
13621
  // Possibly expensive deep test:
13622
13623
13624
  for (i = 0; i < keys.length; i++) {
13625
    var _key = keys[i];
13626
13627
    if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {
13628
      return false;
13629
    }
13630
  }
13631
13632
  return true;
13633
}
13634
13635
function isDeepEqual(val1, val2) {
13636
  return innerDeepEqual(val1, val2, kLoose);
13637
}
13638
13639
function isDeepStrictEqual(val1, val2) {
13640
  return innerDeepEqual(val1, val2, kStrict);
13641
}
13642
13643
module.exports = {
13644
  isDeepEqual: isDeepEqual,
13645
  isDeepStrictEqual: isDeepStrictEqual
13646
};
13647
13648
/***/ }),
13649
13650
/***/ 2055:
13651
/***/ (function(__unused_webpack_module, exports) {
13652
13653
"use strict";
13654
13655
13656
// The following break classes are handled by the pair table
13657
exports.OP = 0; // Opening punctuation
13658
exports.CL = 1; // Closing punctuation
13659
exports.CP = 2; // Closing parenthesis
13660
exports.QU = 3; // Ambiguous quotation
13661
exports.GL = 4; // Glue
13662
exports.NS = 5; // Non-starters
13663
exports.EX = 6; // Exclamation/Interrogation
13664
exports.SY = 7; // Symbols allowing break after
13665
exports.IS = 8; // Infix separator
13666
exports.PR = 9; // Prefix
13667
exports.PO = 10; // Postfix
13668
exports.NU = 11; // Numeric
13669
exports.AL = 12; // Alphabetic
13670
exports.HL = 13; // Hebrew Letter
13671
exports.ID = 14; // Ideographic
13672
exports.IN = 15; // Inseparable characters
13673
exports.HY = 16; // Hyphen
13674
exports.BA = 17; // Break after
13675
exports.BB = 18; // Break before
13676
exports.B2 = 19; // Break on either side (but not pair)
13677
exports.ZW = 20; // Zero-width space
13678
exports.CM = 21; // Combining marks
13679
exports.WJ = 22; // Word joiner
13680
exports.H2 = 23; // Hangul LV
13681
exports.H3 = 24; // Hangul LVT
13682
exports.JL = 25; // Hangul L Jamo
13683
exports.JV = 26; // Hangul V Jamo
13684
exports.JT = 27; // Hangul T Jamo
13685
exports.RI = 28; // Regional Indicator
13686
exports.EB = 29; // Emoji Base
13687
exports.EM = 30; // Emoji Modifier
13688
exports.ZWJ = 31; // Zero Width Joiner
13689
exports.CB = 32; // Contingent break
13690
13691
// The following break classes are not handled by the pair table
13692
exports.AI = 33; // Ambiguous (Alphabetic or Ideograph)
13693
exports.BK = 34; // Break (mandatory)
13694
exports.CJ = 35; // Conditional Japanese Starter
13695
exports.CR = 36; // Carriage return
13696
exports.LF = 37; // Line feed
13697
exports.NL = 38; // Next line
13698
exports.SA = 39; // South-East Asian
13699
exports.SG = 40; // Surrogates
13700
exports.SP = 41; // Space
13701
exports.XX = 42; // Unknown
13702
13703
/***/ }),
13704
13705
/***/ 8383:
13706
/***/ (function(__unused_webpack_module, exports) {
13707
13708
"use strict";
13709
13710
13711
var CI_BRK, CP_BRK, DI_BRK, IN_BRK, PR_BRK;
13712
exports.DI_BRK = DI_BRK = 0; // Direct break opportunity
13713
exports.IN_BRK = IN_BRK = 1; // Indirect break opportunity
13714
exports.CI_BRK = CI_BRK = 2; // Indirect break opportunity for combining marks
13715
exports.CP_BRK = CP_BRK = 3; // Prohibited break for combining marks
13716
exports.PR_BRK = PR_BRK = 4; // Prohibited break
13717
13718
// Based on example pair table from https://www.unicode.org/reports/tr14/tr14-37.html#Table2
13719
// - ZWJ special processing for LB8a of Revision 41
13720
// - CB manually added as per Rule LB20
13721
// - CL, CP, NS, SY, IS, PR, PO, HY, BA, B2 and RI manually adjusted as per LB22 of Revision 45
13722
exports.pairTable = [
13723
//OP   , CL    , CP    , QU    , GL    , NS    , EX    , SY    , IS    , PR    , PO    , NU    , AL    , HL    , ID    , IN    , HY    , BA    , BB    , B2    , ZW    , CM    , WJ    , H2    , H3    , JL    , JV    , JT    , RI    , EB    , EM    , ZWJ   , CB
13724
[PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK],
13725
// OP
13726
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13727
// CL
13728
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13729
// CP
13730
[PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK],
13731
// QU
13732
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK],
13733
// GL
13734
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13735
// NS
13736
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13737
// EX
13738
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13739
// SY
13740
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13741
// IS
13742
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK],
13743
// PR
13744
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13745
// PO
13746
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13747
// NU
13748
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13749
// AL
13750
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13751
// HL
13752
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13753
// ID
13754
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13755
// IN
13756
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13757
// HY
13758
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13759
// BA
13760
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK],
13761
// BB
13762
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13763
// B2
13764
[DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK],
13765
// ZW
13766
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13767
// CM
13768
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK],
13769
// WJ
13770
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13771
// H2
13772
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13773
// H3
13774
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13775
// JL
13776
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13777
// JV
13778
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13779
// JT
13780
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13781
// RI
13782
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK],
13783
// EB
13784
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13785
// EM
13786
[IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK],
13787
// ZWJ
13788
[DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK] // CB
13789
];
13790
13791
/***/ }),
13792
13793
/***/ 5106:
13794
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
13795
13796
"use strict";
13797
13798
13799
__webpack_require__(9601);
13800
exports.EncodeStream = __webpack_require__(9126);
13801
exports.DecodeStream = __webpack_require__(3030);
13802
exports.Array = __webpack_require__(1988);
13803
exports.LazyArray = __webpack_require__(6768);
13804
exports.Bitfield = __webpack_require__(3425);
13805
exports.Boolean = __webpack_require__(9024);
13806
exports.Buffer = __webpack_require__(5250);
13807
exports.Enum = __webpack_require__(3100);
13808
exports.Optional = __webpack_require__(9541);
13809
exports.Reserved = __webpack_require__(7468);
13810
exports.String = __webpack_require__(1466);
13811
exports.Struct = __webpack_require__(1219);
13812
exports.VersionedStruct = __webpack_require__(3585);
13813
var utils = __webpack_require__(6610);
13814
var NumberT = __webpack_require__(6462);
13815
var Pointer = __webpack_require__(8011);
13816
Object.assign(exports, utils, NumberT, Pointer);
13817
13818
/***/ }),
13819
13820
/***/ 1988:
13821
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13822
13823
"use strict";
13824
13825
13826
__webpack_require__(7042);
13827
__webpack_require__(1539);
13828
__webpack_require__(8309);
13829
__webpack_require__(1038);
13830
__webpack_require__(8783);
13831
__webpack_require__(4916);
13832
__webpack_require__(2526);
13833
__webpack_require__(1817);
13834
__webpack_require__(2165);
13835
__webpack_require__(6992);
13836
__webpack_require__(3948);
13837
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13838
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13839
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
13840
var _require = __webpack_require__(6462),
13841
  NumberT = _require.Number;
13842
var utils = __webpack_require__(6610);
13843
var ArrayT = /*#__PURE__*/function () {
13844
  function ArrayT(type, length, lengthType) {
13845
    if (lengthType === void 0) {
13846
      lengthType = 'count';
13847
    }
13848
    this.type = type;
13849
    this.length = length;
13850
    this.lengthType = lengthType;
13851
  }
13852
  var _proto = ArrayT.prototype;
13853
  _proto.decode = function decode(stream, parent) {
13854
    var length;
13855
    var pos = stream.pos;
13856
    var res = [];
13857
    var ctx = parent;
13858
    if (this.length != null) {
13859
      length = utils.resolveLength(this.length, stream, parent);
13860
    }
13861
    if (this.length instanceof NumberT) {
13862
      // define hidden properties
13863
      Object.defineProperties(res, {
13864
        parent: {
13865
          value: parent
13866
        },
13867
        _startOffset: {
13868
          value: pos
13869
        },
13870
        _currentOffset: {
13871
          value: 0,
13872
          writable: true
13873
        },
13874
        _length: {
13875
          value: length
13876
        }
13877
      });
13878
      ctx = res;
13879
    }
13880
    if (length == null || this.lengthType === 'bytes') {
13881
      var target = length != null ? stream.pos + length : (parent != null ? parent._length : undefined) ? parent._startOffset + parent._length : stream.length;
13882
      while (stream.pos < target) {
13883
        res.push(this.type.decode(stream, ctx));
13884
      }
13885
    } else {
13886
      for (var i = 0, end = length; i < end; i++) {
13887
        res.push(this.type.decode(stream, ctx));
13888
      }
13889
    }
13890
    return res;
13891
  };
13892
  _proto.size = function size(array, ctx) {
13893
    if (!array) {
13894
      return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);
13895
    }
13896
    var size = 0;
13897
    if (this.length instanceof NumberT) {
13898
      size += this.length.size();
13899
      ctx = {
13900
        parent: ctx
13901
      };
13902
    }
13903
    for (var _iterator = _createForOfIteratorHelperLoose(array), _step; !(_step = _iterator()).done;) {
13904
      var item = _step.value;
13905
      size += this.type.size(item, ctx);
13906
    }
13907
    return size;
13908
  };
13909
  _proto.encode = function encode(stream, array, parent) {
13910
    var ctx = parent;
13911
    if (this.length instanceof NumberT) {
13912
      ctx = {
13913
        pointers: [],
13914
        startOffset: stream.pos,
13915
        parent: parent
13916
      };
13917
      ctx.pointerOffset = stream.pos + this.size(array, ctx);
13918
      this.length.encode(stream, array.length);
13919
    }
13920
    for (var _iterator2 = _createForOfIteratorHelperLoose(array), _step2; !(_step2 = _iterator2()).done;) {
13921
      var item = _step2.value;
13922
      this.type.encode(stream, item, ctx);
13923
    }
13924
    if (this.length instanceof NumberT) {
13925
      var i = 0;
13926
      while (i < ctx.pointers.length) {
13927
        var ptr = ctx.pointers[i++];
13928
        ptr.type.encode(stream, ptr.val);
13929
      }
13930
    }
13931
  };
13932
  return ArrayT;
13933
}();
13934
module.exports = ArrayT;
13935
13936
/***/ }),
13937
13938
/***/ 3425:
13939
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13940
13941
"use strict";
13942
13943
13944
__webpack_require__(2087);
13945
var Bitfield = /*#__PURE__*/function () {
13946
  function Bitfield(type, flags) {
13947
    if (flags === void 0) {
13948
      flags = [];
13949
    }
13950
    this.type = type;
13951
    this.flags = flags;
13952
  }
13953
  var _proto = Bitfield.prototype;
13954
  _proto.decode = function decode(stream) {
13955
    var val = this.type.decode(stream);
13956
    var res = {};
13957
    for (var i = 0; i < this.flags.length; i++) {
13958
      var flag = this.flags[i];
13959
      if (flag != null) {
13960
        res[flag] = !!(val & 1 << i);
13961
      }
13962
    }
13963
    return res;
13964
  };
13965
  _proto.size = function size() {
13966
    return this.type.size();
13967
  };
13968
  _proto.encode = function encode(stream, keys) {
13969
    var val = 0;
13970
    for (var i = 0; i < this.flags.length; i++) {
13971
      var flag = this.flags[i];
13972
      if (flag != null) {
13973
        if (keys[flag]) {
13974
          val |= 1 << i;
13975
        }
13976
      }
13977
    }
13978
    return this.type.encode(stream, val);
13979
  };
13980
  return Bitfield;
13981
}();
13982
module.exports = Bitfield;
13983
13984
/***/ }),
13985
13986
/***/ 9024:
13987
/***/ (function(module) {
13988
13989
"use strict";
13990
13991
13992
var BooleanT = /*#__PURE__*/function () {
13993
  function BooleanT(type) {
13994
    this.type = type;
13995
  }
13996
  var _proto = BooleanT.prototype;
13997
  _proto.decode = function decode(stream, parent) {
13998
    return !!this.type.decode(stream, parent);
13999
  };
14000
  _proto.size = function size(val, parent) {
14001
    return this.type.size(val, parent);
14002
  };
14003
  _proto.encode = function encode(stream, val, parent) {
14004
    return this.type.encode(stream, +val, parent);
14005
  };
14006
  return BooleanT;
14007
}();
14008
module.exports = BooleanT;
14009
14010
/***/ }),
14011
14012
/***/ 5250:
14013
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14014
14015
"use strict";
14016
14017
14018
var utils = __webpack_require__(6610);
14019
var _require = __webpack_require__(6462),
14020
  NumberT = _require.Number;
14021
var BufferT = /*#__PURE__*/function () {
14022
  function BufferT(length) {
14023
    this.length = length;
14024
  }
14025
  var _proto = BufferT.prototype;
14026
  _proto.decode = function decode(stream, parent) {
14027
    var length = utils.resolveLength(this.length, stream, parent);
14028
    return stream.readBuffer(length);
14029
  };
14030
  _proto.size = function size(val, parent) {
14031
    if (!val) {
14032
      return utils.resolveLength(this.length, null, parent);
14033
    }
14034
    return val.length;
14035
  };
14036
  _proto.encode = function encode(stream, buf, parent) {
14037
    if (this.length instanceof NumberT) {
14038
      this.length.encode(stream, buf.length);
14039
    }
14040
    return stream.writeBuffer(buf);
14041
  };
14042
  return BufferT;
14043
}();
14044
module.exports = BufferT;
14045
14046
/***/ }),
14047
14048
/***/ 3030:
14049
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14050
14051
"use strict";
14052
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
14053
14054
14055
__webpack_require__(1539);
14056
__webpack_require__(9714);
14057
__webpack_require__(7042);
14058
__webpack_require__(4916);
14059
__webpack_require__(5306);
14060
var iconv;
14061
try {
14062
  iconv = __webpack_require__(4914);
14063
} catch (error) {}
14064
var DecodeStream = /*#__PURE__*/function () {
14065
  function DecodeStream(buffer) {
14066
    this.buffer = buffer;
14067
    this.pos = 0;
14068
    this.length = this.buffer.length;
14069
  }
14070
  var _proto = DecodeStream.prototype;
14071
  _proto.readString = function readString(length, encoding) {
14072
    if (encoding === void 0) {
14073
      encoding = 'ascii';
14074
    }
14075
    switch (encoding) {
14076
      case 'utf16le':
14077
      case 'ucs2':
14078
      case 'utf8':
14079
      case 'ascii':
14080
        return this.buffer.toString(encoding, this.pos, this.pos += length);
14081
      case 'utf16be':
14082
        var buf = Buffer.from(this.readBuffer(length));
14083
14084
        // swap the bytes
14085
        for (var i = 0, end = buf.length - 1; i < end; i += 2) {
14086
          var byte = buf[i];
14087
          buf[i] = buf[i + 1];
14088
          buf[i + 1] = byte;
14089
        }
14090
        return buf.toString('utf16le');
14091
      default:
14092
        buf = this.readBuffer(length);
14093
        if (iconv) {
14094
          try {
14095
            return iconv.decode(buf, encoding);
14096
          } catch (error1) {}
14097
        }
14098
        return buf;
14099
    }
14100
  };
14101
  _proto.readBuffer = function readBuffer(length) {
14102
    return this.buffer.slice(this.pos, this.pos += length);
14103
  };
14104
  _proto.readUInt24BE = function readUInt24BE() {
14105
    return (this.readUInt16BE() << 8) + this.readUInt8();
14106
  };
14107
  _proto.readUInt24LE = function readUInt24LE() {
14108
    return this.readUInt16LE() + (this.readUInt8() << 16);
14109
  };
14110
  _proto.readInt24BE = function readInt24BE() {
14111
    return (this.readInt16BE() << 8) + this.readUInt8();
14112
  };
14113
  _proto.readInt24LE = function readInt24LE() {
14114
    return this.readUInt16LE() + (this.readInt8() << 16);
14115
  };
14116
  return DecodeStream;
14117
}();
14118
DecodeStream.TYPES = {
14119
  UInt8: 1,
14120
  UInt16: 2,
14121
  UInt24: 3,
14122
  UInt32: 4,
14123
  Int8: 1,
14124
  Int16: 2,
14125
  Int24: 3,
14126
  Int32: 4,
14127
  Float: 4,
14128
  Double: 8
14129
};
14130
var _loop = function _loop(key) {
14131
  if (key.slice(0, 4) === 'read') {
14132
    var bytes = DecodeStream.TYPES[key.replace(/read|[BL]E/g, '')];
14133
    DecodeStream.prototype[key] = function () {
14134
      var ret = this.buffer[key](this.pos);
14135
      this.pos += bytes;
14136
      return ret;
14137
    };
14138
  }
14139
};
14140
for (var key in Buffer.prototype) {
14141
  _loop(key);
14142
}
14143
module.exports = DecodeStream;
14144
14145
/***/ }),
14146
14147
/***/ 9126:
14148
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14149
14150
"use strict";
14151
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
14152
14153
14154
__webpack_require__(7042);
14155
__webpack_require__(3290);
14156
__webpack_require__(4916);
14157
__webpack_require__(5306);
14158
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
14159
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14160
var iconv;
14161
var stream = __webpack_require__(2830);
14162
var DecodeStream = __webpack_require__(3030);
14163
try {
14164
  iconv = __webpack_require__(4914);
14165
} catch (error) {}
14166
var EncodeStream = /*#__PURE__*/function (_stream$Readable) {
14167
  _inheritsLoose(EncodeStream, _stream$Readable);
14168
  function EncodeStream(bufferSize) {
14169
    var _this;
14170
    if (bufferSize === void 0) {
14171
      bufferSize = 65536;
14172
    }
14173
    _this = _stream$Readable.apply(this, arguments) || this;
14174
    _this.buffer = Buffer.alloc(bufferSize);
14175
    _this.bufferOffset = 0;
14176
    _this.pos = 0;
14177
    return _this;
14178
  }
14179
14180
  // do nothing, required by node
14181
  var _proto = EncodeStream.prototype;
14182
  _proto._read = function _read() {};
14183
  _proto.ensure = function ensure(bytes) {
14184
    if (this.bufferOffset + bytes > this.buffer.length) {
14185
      return this.flush();
14186
    }
14187
  };
14188
  _proto.flush = function flush() {
14189
    if (this.bufferOffset > 0) {
14190
      this.push(Buffer.from(this.buffer.slice(0, this.bufferOffset)));
14191
      return this.bufferOffset = 0;
14192
    }
14193
  };
14194
  _proto.writeBuffer = function writeBuffer(buffer) {
14195
    this.flush();
14196
    this.push(buffer);
14197
    return this.pos += buffer.length;
14198
  };
14199
  _proto.writeString = function writeString(string, encoding) {
14200
    if (encoding === void 0) {
14201
      encoding = 'ascii';
14202
    }
14203
    switch (encoding) {
14204
      case 'utf16le':
14205
      case 'ucs2':
14206
      case 'utf8':
14207
      case 'ascii':
14208
        return this.writeBuffer(Buffer.from(string, encoding));
14209
      case 'utf16be':
14210
        var buf = Buffer.from(string, 'utf16le');
14211
14212
        // swap the bytes
14213
        for (var i = 0, end = buf.length - 1; i < end; i += 2) {
14214
          var byte = buf[i];
14215
          buf[i] = buf[i + 1];
14216
          buf[i + 1] = byte;
14217
        }
14218
        return this.writeBuffer(buf);
14219
      default:
14220
        if (iconv) {
14221
          return this.writeBuffer(iconv.encode(string, encoding));
14222
        } else {
14223
          throw new Error('Install iconv-lite to enable additional string encodings.');
14224
        }
14225
    }
14226
  };
14227
  _proto.writeUInt24BE = function writeUInt24BE(val) {
14228
    this.ensure(3);
14229
    this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;
14230
    this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;
14231
    this.buffer[this.bufferOffset++] = val & 0xff;
14232
    return this.pos += 3;
14233
  };
14234
  _proto.writeUInt24LE = function writeUInt24LE(val) {
14235
    this.ensure(3);
14236
    this.buffer[this.bufferOffset++] = val & 0xff;
14237
    this.buffer[this.bufferOffset++] = val >>> 8 & 0xff;
14238
    this.buffer[this.bufferOffset++] = val >>> 16 & 0xff;
14239
    return this.pos += 3;
14240
  };
14241
  _proto.writeInt24BE = function writeInt24BE(val) {
14242
    if (val >= 0) {
14243
      return this.writeUInt24BE(val);
14244
    } else {
14245
      return this.writeUInt24BE(val + 0xffffff + 1);
14246
    }
14247
  };
14248
  _proto.writeInt24LE = function writeInt24LE(val) {
14249
    if (val >= 0) {
14250
      return this.writeUInt24LE(val);
14251
    } else {
14252
      return this.writeUInt24LE(val + 0xffffff + 1);
14253
    }
14254
  };
14255
  _proto.fill = function fill(val, length) {
14256
    if (length < this.buffer.length) {
14257
      this.ensure(length);
14258
      this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length);
14259
      this.bufferOffset += length;
14260
      return this.pos += length;
14261
    } else {
14262
      var buf = Buffer.alloc(length);
14263
      buf.fill(val);
14264
      return this.writeBuffer(buf);
14265
    }
14266
  };
14267
  _proto.end = function end() {
14268
    this.flush();
14269
    return this.push(null);
14270
  };
14271
  return EncodeStream;
14272
}(stream.Readable);
14273
var _loop = function _loop(key) {
14274
  if (key.slice(0, 5) === 'write') {
14275
    var bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')];
14276
    EncodeStream.prototype[key] = function (value) {
14277
      this.ensure(bytes);
14278
      this.buffer[key](value, this.bufferOffset);
14279
      this.bufferOffset += bytes;
14280
      return this.pos += bytes;
14281
    };
14282
  }
14283
};
14284
for (var key in Buffer.prototype) {
14285
  _loop(key);
14286
}
14287
module.exports = EncodeStream;
14288
14289
/***/ }),
14290
14291
/***/ 3100:
14292
/***/ (function(module) {
14293
14294
"use strict";
14295
14296
14297
var Enum = /*#__PURE__*/function () {
14298
  function Enum(type, options) {
14299
    if (options === void 0) {
14300
      options = [];
14301
    }
14302
    this.type = type;
14303
    this.options = options;
14304
  }
14305
  var _proto = Enum.prototype;
14306
  _proto.decode = function decode(stream) {
14307
    var index = this.type.decode(stream);
14308
    return this.options[index] || index;
14309
  };
14310
  _proto.size = function size() {
14311
    return this.type.size();
14312
  };
14313
  _proto.encode = function encode(stream, val) {
14314
    var index = this.options.indexOf(val);
14315
    if (index === -1) {
14316
      throw new Error("Unknown option in enum: " + val);
14317
    }
14318
    return this.type.encode(stream, index);
14319
  };
14320
  return Enum;
14321
}();
14322
module.exports = Enum;
14323
14324
/***/ }),
14325
14326
/***/ 6768:
14327
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14328
14329
"use strict";
14330
14331
14332
__webpack_require__(1539);
14333
__webpack_require__(8674);
14334
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
14335
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14336
var ArrayT = __webpack_require__(1988);
14337
var _require = __webpack_require__(6462),
14338
  NumberT = _require.Number;
14339
var utils = __webpack_require__(6610);
14340
var _require2 = __webpack_require__(9539),
14341
  _inspect = _require2.inspect;
14342
var LazyArrayT = /*#__PURE__*/function (_ArrayT) {
14343
  _inheritsLoose(LazyArrayT, _ArrayT);
14344
  function LazyArrayT() {
14345
    return _ArrayT.apply(this, arguments) || this;
14346
  }
14347
  var _proto = LazyArrayT.prototype;
14348
  _proto.decode = function decode(stream, parent) {
14349
    var pos = stream.pos;
14350
    var length = utils.resolveLength(this.length, stream, parent);
14351
    if (this.length instanceof NumberT) {
14352
      parent = {
14353
        parent: parent,
14354
        _startOffset: pos,
14355
        _currentOffset: 0,
14356
        _length: length
14357
      };
14358
    }
14359
    var res = new LazyArray(this.type, length, stream, parent);
14360
    stream.pos += length * this.type.size(null, parent);
14361
    return res;
14362
  };
14363
  _proto.size = function size(val, ctx) {
14364
    if (val instanceof LazyArray) {
14365
      val = val.toArray();
14366
    }
14367
    return _ArrayT.prototype.size.call(this, val, ctx);
14368
  };
14369
  _proto.encode = function encode(stream, val, ctx) {
14370
    if (val instanceof LazyArray) {
14371
      val = val.toArray();
14372
    }
14373
    return _ArrayT.prototype.encode.call(this, stream, val, ctx);
14374
  };
14375
  return LazyArrayT;
14376
}(ArrayT);
14377
var LazyArray = /*#__PURE__*/function () {
14378
  function LazyArray(type, length, stream, ctx) {
14379
    this.type = type;
14380
    this.length = length;
14381
    this.stream = stream;
14382
    this.ctx = ctx;
14383
    this.base = this.stream.pos;
14384
    this.items = [];
14385
  }
14386
  var _proto2 = LazyArray.prototype;
14387
  _proto2.get = function get(index) {
14388
    if (index < 0 || index >= this.length) {
14389
      return undefined;
14390
    }
14391
    if (this.items[index] == null) {
14392
      var pos = this.stream.pos;
14393
      this.stream.pos = this.base + this.type.size(null, this.ctx) * index;
14394
      this.items[index] = this.type.decode(this.stream, this.ctx);
14395
      this.stream.pos = pos;
14396
    }
14397
    return this.items[index];
14398
  };
14399
  _proto2.toArray = function toArray() {
14400
    var result = [];
14401
    for (var i = 0, end = this.length; i < end; i++) {
14402
      result.push(this.get(i));
14403
    }
14404
    return result;
14405
  };
14406
  _proto2.inspect = function inspect() {
14407
    return _inspect(this.toArray());
14408
  };
14409
  return LazyArray;
14410
}();
14411
module.exports = LazyArrayT;
14412
14413
/***/ }),
14414
14415
/***/ 6462:
14416
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
14417
14418
"use strict";
14419
14420
14421
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
14422
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14423
var DecodeStream = __webpack_require__(3030);
14424
var NumberT = /*#__PURE__*/function () {
14425
  function NumberT(type, endian) {
14426
    if (endian === void 0) {
14427
      endian = 'BE';
14428
    }
14429
    this.type = type;
14430
    this.endian = endian;
14431
    this.fn = this.type;
14432
    if (this.type[this.type.length - 1] !== '8') {
14433
      this.fn += this.endian;
14434
    }
14435
  }
14436
  var _proto = NumberT.prototype;
14437
  _proto.size = function size() {
14438
    return DecodeStream.TYPES[this.type];
14439
  };
14440
  _proto.decode = function decode(stream) {
14441
    return stream["read" + this.fn]();
14442
  };
14443
  _proto.encode = function encode(stream, val) {
14444
    return stream["write" + this.fn](val);
14445
  };
14446
  return NumberT;
14447
}();
14448
exports.Number = NumberT;
14449
exports.uint8 = new NumberT('UInt8');
14450
exports.uint16be = exports.uint16 = new NumberT('UInt16', 'BE');
14451
exports.uint16le = new NumberT('UInt16', 'LE');
14452
exports.uint24be = exports.uint24 = new NumberT('UInt24', 'BE');
14453
exports.uint24le = new NumberT('UInt24', 'LE');
14454
exports.uint32be = exports.uint32 = new NumberT('UInt32', 'BE');
14455
exports.uint32le = new NumberT('UInt32', 'LE');
14456
exports.int8 = new NumberT('Int8');
14457
exports.int16be = exports.int16 = new NumberT('Int16', 'BE');
14458
exports.int16le = new NumberT('Int16', 'LE');
14459
exports.int24be = exports.int24 = new NumberT('Int24', 'BE');
14460
exports.int24le = new NumberT('Int24', 'LE');
14461
exports.int32be = exports.int32 = new NumberT('Int32', 'BE');
14462
exports.int32le = new NumberT('Int32', 'LE');
14463
exports.floatbe = exports.float = new NumberT('Float', 'BE');
14464
exports.floatle = new NumberT('Float', 'LE');
14465
exports.doublebe = exports.double = new NumberT('Double', 'BE');
14466
exports.doublele = new NumberT('Double', 'LE');
14467
var Fixed = /*#__PURE__*/function (_NumberT) {
14468
  _inheritsLoose(Fixed, _NumberT);
14469
  function Fixed(size, endian, fracBits) {
14470
    var _this;
14471
    if (fracBits === void 0) {
14472
      fracBits = size >> 1;
14473
    }
14474
    _this = _NumberT.call(this, "Int" + size, endian) || this;
14475
    _this._point = 1 << fracBits;
14476
    return _this;
14477
  }
14478
  var _proto2 = Fixed.prototype;
14479
  _proto2.decode = function decode(stream) {
14480
    return _NumberT.prototype.decode.call(this, stream) / this._point;
14481
  };
14482
  _proto2.encode = function encode(stream, val) {
14483
    return _NumberT.prototype.encode.call(this, stream, val * this._point | 0);
14484
  };
14485
  return Fixed;
14486
}(NumberT);
14487
exports.Fixed = Fixed;
14488
exports.fixed16be = exports.fixed16 = new Fixed(16, 'BE');
14489
exports.fixed16le = new Fixed(16, 'LE');
14490
exports.fixed32be = exports.fixed32 = new Fixed(32, 'BE');
14491
exports.fixed32le = new Fixed(32, 'LE');
14492
14493
/***/ }),
14494
14495
/***/ 9541:
14496
/***/ (function(module) {
14497
14498
"use strict";
14499
14500
14501
var Optional = /*#__PURE__*/function () {
14502
  function Optional(type, condition) {
14503
    if (condition === void 0) {
14504
      condition = true;
14505
    }
14506
    this.type = type;
14507
    this.condition = condition;
14508
  }
14509
  var _proto = Optional.prototype;
14510
  _proto.decode = function decode(stream, parent) {
14511
    var condition = this.condition;
14512
    if (typeof condition === 'function') {
14513
      condition = condition.call(parent, parent);
14514
    }
14515
    if (condition) {
14516
      return this.type.decode(stream, parent);
14517
    }
14518
  };
14519
  _proto.size = function size(val, parent) {
14520
    var condition = this.condition;
14521
    if (typeof condition === 'function') {
14522
      condition = condition.call(parent, parent);
14523
    }
14524
    if (condition) {
14525
      return this.type.size(val, parent);
14526
    } else {
14527
      return 0;
14528
    }
14529
  };
14530
  _proto.encode = function encode(stream, val, parent) {
14531
    var condition = this.condition;
14532
    if (typeof condition === 'function') {
14533
      condition = condition.call(parent, parent);
14534
    }
14535
    if (condition) {
14536
      return this.type.encode(stream, val, parent);
14537
    }
14538
  };
14539
  return Optional;
14540
}();
14541
module.exports = Optional;
14542
14543
/***/ }),
14544
14545
/***/ 8011:
14546
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
14547
14548
"use strict";
14549
14550
14551
var utils = __webpack_require__(6610);
14552
var Pointer = /*#__PURE__*/function () {
14553
  function Pointer(offsetType, type, options) {
14554
    if (options === void 0) {
14555
      options = {};
14556
    }
14557
    this.offsetType = offsetType;
14558
    this.type = type;
14559
    this.options = options;
14560
    if (this.type === 'void') {
14561
      this.type = null;
14562
    }
14563
    if (this.options.type == null) {
14564
      this.options.type = 'local';
14565
    }
14566
    if (this.options.allowNull == null) {
14567
      this.options.allowNull = true;
14568
    }
14569
    if (this.options.nullValue == null) {
14570
      this.options.nullValue = 0;
14571
    }
14572
    if (this.options.lazy == null) {
14573
      this.options.lazy = false;
14574
    }
14575
    if (this.options.relativeTo) {
14576
      if (typeof this.options.relativeTo !== 'function') {
14577
        throw new Error('relativeTo option must be a function');
14578
      }
14579
      this.relativeToGetter = options.relativeTo;
14580
    }
14581
  }
14582
  var _proto = Pointer.prototype;
14583
  _proto.decode = function decode(stream, ctx) {
14584
    var _this = this;
14585
    var offset = this.offsetType.decode(stream, ctx);
14586
14587
    // handle NULL pointers
14588
    if (offset === this.options.nullValue && this.options.allowNull) {
14589
      return null;
14590
    }
14591
    var relative;
14592
    switch (this.options.type) {
14593
      case 'local':
14594
        relative = ctx._startOffset;
14595
        break;
14596
      case 'immediate':
14597
        relative = stream.pos - this.offsetType.size();
14598
        break;
14599
      case 'parent':
14600
        relative = ctx.parent._startOffset;
14601
        break;
14602
      default:
14603
        var c = ctx;
14604
        while (c.parent) {
14605
          c = c.parent;
14606
        }
14607
        relative = c._startOffset || 0;
14608
    }
14609
    if (this.options.relativeTo) {
14610
      relative += this.relativeToGetter(ctx);
14611
    }
14612
    var ptr = offset + relative;
14613
    if (this.type != null) {
14614
      var val = null;
14615
      var decodeValue = function decodeValue() {
14616
        if (val != null) {
14617
          return val;
14618
        }
14619
        var pos = stream.pos;
14620
        stream.pos = ptr;
14621
        val = _this.type.decode(stream, ctx);
14622
        stream.pos = pos;
14623
        return val;
14624
      };
14625
14626
      // If this is a lazy pointer, define a getter to decode only when needed.
14627
      // This obviously only works when the pointer is contained by a Struct.
14628
      if (this.options.lazy) {
14629
        return new utils.PropertyDescriptor({
14630
          get: decodeValue
14631
        });
14632
      }
14633
      return decodeValue();
14634
    } else {
14635
      return ptr;
14636
    }
14637
  };
14638
  _proto.size = function size(val, ctx) {
14639
    var parent = ctx;
14640
    switch (this.options.type) {
14641
      case 'local':
14642
      case 'immediate':
14643
        break;
14644
      case 'parent':
14645
        ctx = ctx.parent;
14646
        break;
14647
      default:
14648
        // global
14649
        while (ctx.parent) {
14650
          ctx = ctx.parent;
14651
        }
14652
    }
14653
    var type = this.type;
14654
    if (type == null) {
14655
      if (!(val instanceof VoidPointer)) {
14656
        throw new Error("Must be a VoidPointer");
14657
      }
14658
      var _val = val;
14659
      type = _val.type;
14660
      val = val.value;
14661
    }
14662
    if (val && ctx) {
14663
      ctx.pointerSize += type.size(val, parent);
14664
    }
14665
    return this.offsetType.size();
14666
  };
14667
  _proto.encode = function encode(stream, val, ctx) {
14668
    var relative;
14669
    var parent = ctx;
14670
    if (val == null) {
14671
      this.offsetType.encode(stream, this.options.nullValue);
14672
      return;
14673
    }
14674
    switch (this.options.type) {
14675
      case 'local':
14676
        relative = ctx.startOffset;
14677
        break;
14678
      case 'immediate':
14679
        relative = stream.pos + this.offsetType.size(val, parent);
14680
        break;
14681
      case 'parent':
14682
        ctx = ctx.parent;
14683
        relative = ctx.startOffset;
14684
        break;
14685
      default:
14686
        // global
14687
        relative = 0;
14688
        while (ctx.parent) {
14689
          ctx = ctx.parent;
14690
        }
14691
    }
14692
    if (this.options.relativeTo) {
14693
      relative += this.relativeToGetter(parent.val);
14694
    }
14695
    this.offsetType.encode(stream, ctx.pointerOffset - relative);
14696
    var type = this.type;
14697
    if (type == null) {
14698
      if (!(val instanceof VoidPointer)) {
14699
        throw new Error("Must be a VoidPointer");
14700
      }
14701
      var _val2 = val;
14702
      type = _val2.type;
14703
      val = val.value;
14704
    }
14705
    ctx.pointers.push({
14706
      type: type,
14707
      val: val,
14708
      parent: parent
14709
    });
14710
    return ctx.pointerOffset += type.size(val, parent);
14711
  };
14712
  return Pointer;
14713
}(); // A pointer whose type is determined at decode time
14714
var VoidPointer = function VoidPointer(type, value) {
14715
  this.type = type;
14716
  this.value = value;
14717
};
14718
exports.Pointer = Pointer;
14719
exports.VoidPointer = VoidPointer;
14720
14721
/***/ }),
14722
14723
/***/ 7468:
14724
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14725
14726
"use strict";
14727
14728
14729
__webpack_require__(3290);
14730
var utils = __webpack_require__(6610);
14731
var Reserved = /*#__PURE__*/function () {
14732
  function Reserved(type, count) {
14733
    if (count === void 0) {
14734
      count = 1;
14735
    }
14736
    this.type = type;
14737
    this.count = count;
14738
  }
14739
  var _proto = Reserved.prototype;
14740
  _proto.decode = function decode(stream, parent) {
14741
    stream.pos += this.size(null, parent);
14742
    return undefined;
14743
  };
14744
  _proto.size = function size(data, parent) {
14745
    var count = utils.resolveLength(this.count, null, parent);
14746
    return this.type.size() * count;
14747
  };
14748
  _proto.encode = function encode(stream, val, parent) {
14749
    return stream.fill(0, this.size(val, parent));
14750
  };
14751
  return Reserved;
14752
}();
14753
module.exports = Reserved;
14754
14755
/***/ }),
14756
14757
/***/ 1466:
14758
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14759
14760
"use strict";
14761
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
14762
14763
14764
var _require = __webpack_require__(6462),
14765
  NumberT = _require.Number;
14766
var utils = __webpack_require__(6610);
14767
var StringT = /*#__PURE__*/function () {
14768
  function StringT(length, encoding) {
14769
    if (encoding === void 0) {
14770
      encoding = 'ascii';
14771
    }
14772
    this.length = length;
14773
    this.encoding = encoding;
14774
  }
14775
  var _proto = StringT.prototype;
14776
  _proto.decode = function decode(stream, parent) {
14777
    var length, pos;
14778
    if (this.length != null) {
14779
      length = utils.resolveLength(this.length, stream, parent);
14780
    } else {
14781
      var buffer;
14782
      buffer = stream.buffer;
14783
      length = stream.length;
14784
      pos = stream.pos;
14785
      while (pos < length && buffer[pos] !== 0x00) {
14786
        ++pos;
14787
      }
14788
      length = pos - stream.pos;
14789
    }
14790
    var encoding = this.encoding;
14791
    if (typeof encoding === 'function') {
14792
      encoding = encoding.call(parent, parent) || 'ascii';
14793
    }
14794
    var string = stream.readString(length, encoding);
14795
    if (this.length == null && stream.pos < stream.length) {
14796
      stream.pos++;
14797
    }
14798
    return string;
14799
  };
14800
  _proto.size = function size(val, parent) {
14801
    // Use the defined value if no value was given
14802
    if (!val) {
14803
      return utils.resolveLength(this.length, null, parent);
14804
    }
14805
    var encoding = this.encoding;
14806
    if (typeof encoding === 'function') {
14807
      encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';
14808
    }
14809
    if (encoding === 'utf16be') {
14810
      encoding = 'utf16le';
14811
    }
14812
    var size = Buffer.byteLength(val, encoding);
14813
    if (this.length instanceof NumberT) {
14814
      size += this.length.size();
14815
    }
14816
    if (this.length == null) {
14817
      size++;
14818
    }
14819
    return size;
14820
  };
14821
  _proto.encode = function encode(stream, val, parent) {
14822
    var encoding = this.encoding;
14823
    if (typeof encoding === 'function') {
14824
      encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';
14825
    }
14826
    if (this.length instanceof NumberT) {
14827
      this.length.encode(stream, Buffer.byteLength(val, encoding));
14828
    }
14829
    stream.writeString(val, encoding);
14830
    if (this.length == null) {
14831
      return stream.writeUInt8(0x00);
14832
    }
14833
  };
14834
  return StringT;
14835
}();
14836
module.exports = StringT;
14837
14838
/***/ }),
14839
14840
/***/ 1219:
14841
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14842
14843
"use strict";
14844
14845
14846
var utils = __webpack_require__(6610);
14847
var Struct = /*#__PURE__*/function () {
14848
  function Struct(fields) {
14849
    if (fields === void 0) {
14850
      fields = {};
14851
    }
14852
    this.fields = fields;
14853
  }
14854
  var _proto = Struct.prototype;
14855
  _proto.decode = function decode(stream, parent, length) {
14856
    if (length === void 0) {
14857
      length = 0;
14858
    }
14859
    var res = this._setup(stream, parent, length);
14860
    this._parseFields(stream, res, this.fields);
14861
    if (this.process != null) {
14862
      this.process.call(res, stream);
14863
    }
14864
    return res;
14865
  };
14866
  _proto._setup = function _setup(stream, parent, length) {
14867
    var res = {};
14868
14869
    // define hidden properties
14870
    Object.defineProperties(res, {
14871
      parent: {
14872
        value: parent
14873
      },
14874
      _startOffset: {
14875
        value: stream.pos
14876
      },
14877
      _currentOffset: {
14878
        value: 0,
14879
        writable: true
14880
      },
14881
      _length: {
14882
        value: length
14883
      }
14884
    });
14885
    return res;
14886
  };
14887
  _proto._parseFields = function _parseFields(stream, res, fields) {
14888
    for (var key in fields) {
14889
      var val;
14890
      var type = fields[key];
14891
      if (typeof type === 'function') {
14892
        val = type.call(res, res);
14893
      } else {
14894
        val = type.decode(stream, res);
14895
      }
14896
      if (val !== undefined) {
14897
        if (val instanceof utils.PropertyDescriptor) {
14898
          Object.defineProperty(res, key, val);
14899
        } else {
14900
          res[key] = val;
14901
        }
14902
      }
14903
      res._currentOffset = stream.pos - res._startOffset;
14904
    }
14905
  };
14906
  _proto.size = function size(val, parent, includePointers) {
14907
    if (val == null) {
14908
      val = {};
14909
    }
14910
    if (includePointers == null) {
14911
      includePointers = true;
14912
    }
14913
    var ctx = {
14914
      parent: parent,
14915
      val: val,
14916
      pointerSize: 0
14917
    };
14918
    var size = 0;
14919
    for (var key in this.fields) {
14920
      var type = this.fields[key];
14921
      if (type.size != null) {
14922
        size += type.size(val[key], ctx);
14923
      }
14924
    }
14925
    if (includePointers) {
14926
      size += ctx.pointerSize;
14927
    }
14928
    return size;
14929
  };
14930
  _proto.encode = function encode(stream, val, parent) {
14931
    var type;
14932
    if (this.preEncode != null) {
14933
      this.preEncode.call(val, stream);
14934
    }
14935
    var ctx = {
14936
      pointers: [],
14937
      startOffset: stream.pos,
14938
      parent: parent,
14939
      val: val,
14940
      pointerSize: 0
14941
    };
14942
    ctx.pointerOffset = stream.pos + this.size(val, ctx, false);
14943
    for (var key in this.fields) {
14944
      type = this.fields[key];
14945
      if (type.encode != null) {
14946
        type.encode(stream, val[key], ctx);
14947
      }
14948
    }
14949
    var i = 0;
14950
    while (i < ctx.pointers.length) {
14951
      var ptr = ctx.pointers[i++];
14952
      ptr.type.encode(stream, ptr.val, ptr.parent);
14953
    }
14954
  };
14955
  return Struct;
14956
}();
14957
module.exports = Struct;
14958
14959
/***/ }),
14960
14961
/***/ 3585:
14962
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
14963
14964
"use strict";
14965
14966
14967
__webpack_require__(1539);
14968
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
14969
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14970
var Struct = __webpack_require__(1219);
14971
var getPath = function getPath(object, pathArray) {
14972
  return pathArray.reduce(function (prevObj, key) {
14973
    return prevObj && prevObj[key];
14974
  }, object);
14975
};
14976
var VersionedStruct = /*#__PURE__*/function (_Struct) {
14977
  _inheritsLoose(VersionedStruct, _Struct);
14978
  function VersionedStruct(type, versions) {
14979
    var _this;
14980
    if (versions === void 0) {
14981
      versions = {};
14982
    }
14983
    _this = _Struct.call(this) || this;
14984
    _this.type = type;
14985
    _this.versions = versions;
14986
    if (typeof type === 'string') {
14987
      _this.versionPath = type.split('.');
14988
    }
14989
    return _this;
14990
  }
14991
  var _proto = VersionedStruct.prototype;
14992
  _proto.decode = function decode(stream, parent, length) {
14993
    if (length === void 0) {
14994
      length = 0;
14995
    }
14996
    var res = this._setup(stream, parent, length);
14997
    if (typeof this.type === 'string') {
14998
      res.version = getPath(parent, this.versionPath);
14999
    } else {
15000
      res.version = this.type.decode(stream);
15001
    }
15002
    if (this.versions.header) {
15003
      this._parseFields(stream, res, this.versions.header);
15004
    }
15005
    var fields = this.versions[res.version];
15006
    if (fields == null) {
15007
      throw new Error("Unknown version " + res.version);
15008
    }
15009
    if (fields instanceof VersionedStruct) {
15010
      return fields.decode(stream, parent);
15011
    }
15012
    this._parseFields(stream, res, fields);
15013
    if (this.process != null) {
15014
      this.process.call(res, stream);
15015
    }
15016
    return res;
15017
  };
15018
  _proto.size = function size(val, parent, includePointers) {
15019
    if (includePointers === void 0) {
15020
      includePointers = true;
15021
    }
15022
    var key, type;
15023
    if (!val) {
15024
      throw new Error('Not a fixed size');
15025
    }
15026
    var ctx = {
15027
      parent: parent,
15028
      val: val,
15029
      pointerSize: 0
15030
    };
15031
    var size = 0;
15032
    if (typeof this.type !== 'string') {
15033
      size += this.type.size(val.version, ctx);
15034
    }
15035
    if (this.versions.header) {
15036
      for (key in this.versions.header) {
15037
        type = this.versions.header[key];
15038
        if (type.size != null) {
15039
          size += type.size(val[key], ctx);
15040
        }
15041
      }
15042
    }
15043
    var fields = this.versions[val.version];
15044
    if (fields == null) {
15045
      throw new Error("Unknown version " + val.version);
15046
    }
15047
    for (key in fields) {
15048
      type = fields[key];
15049
      if (type.size != null) {
15050
        size += type.size(val[key], ctx);
15051
      }
15052
    }
15053
    if (includePointers) {
15054
      size += ctx.pointerSize;
15055
    }
15056
    return size;
15057
  };
15058
  _proto.encode = function encode(stream, val, parent) {
15059
    var key, type;
15060
    if (this.preEncode != null) {
15061
      this.preEncode.call(val, stream);
15062
    }
15063
    var ctx = {
15064
      pointers: [],
15065
      startOffset: stream.pos,
15066
      parent: parent,
15067
      val: val,
15068
      pointerSize: 0
15069
    };
15070
    ctx.pointerOffset = stream.pos + this.size(val, ctx, false);
15071
    if (typeof this.type !== 'string') {
15072
      this.type.encode(stream, val.version);
15073
    }
15074
    if (this.versions.header) {
15075
      for (key in this.versions.header) {
15076
        type = this.versions.header[key];
15077
        if (type.encode != null) {
15078
          type.encode(stream, val[key], ctx);
15079
        }
15080
      }
15081
    }
15082
    var fields = this.versions[val.version];
15083
    for (key in fields) {
15084
      type = fields[key];
15085
      if (type.encode != null) {
15086
        type.encode(stream, val[key], ctx);
15087
      }
15088
    }
15089
    var i = 0;
15090
    while (i < ctx.pointers.length) {
15091
      var ptr = ctx.pointers[i++];
15092
      ptr.type.encode(stream, ptr.val, ptr.parent);
15093
    }
15094
  };
15095
  return VersionedStruct;
15096
}(Struct);
15097
module.exports = VersionedStruct;
15098
15099
/***/ }),
15100
15101
/***/ 6610:
15102
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
15103
15104
"use strict";
15105
15106
15107
var _require = __webpack_require__(6462),
15108
  NumberT = _require.Number;
15109
exports.resolveLength = function (length, stream, parent) {
15110
  var res;
15111
  if (typeof length === 'number') {
15112
    res = length;
15113
  } else if (typeof length === 'function') {
15114
    res = length.call(parent, parent);
15115
  } else if (parent && typeof length === 'string') {
15116
    res = parent[length];
15117
  } else if (stream && length instanceof NumberT) {
15118
    res = length.decode(stream);
15119
  }
15120
  if (isNaN(res)) {
15121
    throw new Error('Not a fixed size');
15122
  }
15123
  return res;
15124
};
15125
var PropertyDescriptor = function PropertyDescriptor(opts) {
15126
  if (opts === void 0) {
15127
    opts = {};
15128
  }
15129
  this.enumerable = true;
15130
  this.configurable = true;
15131
  for (var key in opts) {
15132
    var val = opts[key];
15133
    this[key] = val;
15134
  }
15135
};
15136
exports.PropertyDescriptor = PropertyDescriptor;
15137
15138
/***/ }),
15139
15140
/***/ 8823:
15141
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
15142
15143
"use strict";
15144
/*!
15145
 * The buffer module from node.js, for the browser.
15146
 *
15147
 * @author   Feross Aboukhadijeh <https://feross.org>
15148
 * @license  MIT
15149
 */
15150
/* eslint-disable no-proto */
15151
15152
15153
15154
__webpack_require__(2526);
15155
__webpack_require__(1817);
15156
__webpack_require__(1539);
15157
__webpack_require__(6992);
15158
__webpack_require__(2472);
15159
__webpack_require__(2990);
15160
__webpack_require__(8927);
15161
__webpack_require__(3105);
15162
__webpack_require__(5035);
15163
__webpack_require__(4345);
15164
__webpack_require__(7174);
15165
__webpack_require__(2846);
15166
__webpack_require__(4731);
15167
__webpack_require__(7209);
15168
__webpack_require__(6319);
15169
__webpack_require__(8867);
15170
__webpack_require__(7789);
15171
__webpack_require__(3739);
15172
__webpack_require__(9368);
15173
__webpack_require__(4483);
15174
__webpack_require__(2056);
15175
__webpack_require__(3462);
15176
__webpack_require__(678);
15177
__webpack_require__(7462);
15178
__webpack_require__(3824);
15179
__webpack_require__(5021);
15180
__webpack_require__(2974);
15181
__webpack_require__(5016);
15182
__webpack_require__(7803);
15183
__webpack_require__(6649);
15184
__webpack_require__(6078);
15185
__webpack_require__(3290);
15186
__webpack_require__(7042);
15187
__webpack_require__(2222);
15188
__webpack_require__(9714);
15189
__webpack_require__(3210);
15190
__webpack_require__(4916);
15191
__webpack_require__(5306);
15192
__webpack_require__(6699);
15193
__webpack_require__(2023);
15194
__webpack_require__(9653);
15195
__webpack_require__(3753);
15196
__webpack_require__(545);
15197
__webpack_require__(8309);
15198
__webpack_require__(3161);
15199
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
15200
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
15201
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
15202
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15203
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
15204
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
15205
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15206
var base64 = __webpack_require__(9742);
15207
var ieee754 = __webpack_require__(645);
15208
var customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation
15209
? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation
15210
: null;
15211
exports.Buffer = Buffer;
15212
exports.SlowBuffer = SlowBuffer;
15213
exports.INSPECT_MAX_BYTES = 50;
15214
var K_MAX_LENGTH = 0x7fffffff;
15215
exports.kMaxLength = K_MAX_LENGTH;
15216
15217
/**
15218
 * If `Buffer.TYPED_ARRAY_SUPPORT`:
15219
 *   === true    Use Uint8Array implementation (fastest)
15220
 *   === false   Print warning and recommend using `buffer` v4.x which has an Object
15221
 *               implementation (most compatible, even IE6)
15222
 *
15223
 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
15224
 * Opera 11.6+, iOS 4.2+.
15225
 *
15226
 * We report that the browser does not support typed arrays if the are not subclassable
15227
 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
15228
 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
15229
 * for __proto__ and has a buggy typed array implementation.
15230
 */
15231
Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();
15232
if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {
15233
  console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');
15234
}
15235
function typedArraySupport() {
15236
  // Can typed array instances can be augmented?
15237
  try {
15238
    var arr = new Uint8Array(1);
15239
    var proto = {
15240
      foo: function foo() {
15241
        return 42;
15242
      }
15243
    };
15244
    Object.setPrototypeOf(proto, Uint8Array.prototype);
15245
    Object.setPrototypeOf(arr, proto);
15246
    return arr.foo() === 42;
15247
  } catch (e) {
15248
    return false;
15249
  }
15250
}
15251
Object.defineProperty(Buffer.prototype, 'parent', {
15252
  enumerable: true,
15253
  get: function get() {
15254
    if (!Buffer.isBuffer(this)) return undefined;
15255
    return this.buffer;
15256
  }
15257
});
15258
Object.defineProperty(Buffer.prototype, 'offset', {
15259
  enumerable: true,
15260
  get: function get() {
15261
    if (!Buffer.isBuffer(this)) return undefined;
15262
    return this.byteOffset;
15263
  }
15264
});
15265
function createBuffer(length) {
15266
  if (length > K_MAX_LENGTH) {
15267
    throw new RangeError('The value "' + length + '" is invalid for option "size"');
15268
  }
15269
  // Return an augmented `Uint8Array` instance
15270
  var buf = new Uint8Array(length);
15271
  Object.setPrototypeOf(buf, Buffer.prototype);
15272
  return buf;
15273
}
15274
15275
/**
15276
 * The Buffer constructor returns instances of `Uint8Array` that have their
15277
 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
15278
 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
15279
 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
15280
 * returns a single octet.
15281
 *
15282
 * The `Uint8Array` prototype remains unmodified.
15283
 */
15284
15285
function Buffer(arg, encodingOrOffset, length) {
15286
  // Common case.
15287
  if (typeof arg === 'number') {
15288
    if (typeof encodingOrOffset === 'string') {
15289
      throw new TypeError('The "string" argument must be of type string. Received type number');
15290
    }
15291
    return allocUnsafe(arg);
15292
  }
15293
  return from(arg, encodingOrOffset, length);
15294
}
15295
Buffer.poolSize = 8192; // not used by this implementation
15296
15297
function from(value, encodingOrOffset, length) {
15298
  if (typeof value === 'string') {
15299
    return fromString(value, encodingOrOffset);
15300
  }
15301
  if (ArrayBuffer.isView(value)) {
15302
    return fromArrayView(value);
15303
  }
15304
  if (value == null) {
15305
    throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);
15306
  }
15307
  if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {
15308
    return fromArrayBuffer(value, encodingOrOffset, length);
15309
  }
15310
  if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {
15311
    return fromArrayBuffer(value, encodingOrOffset, length);
15312
  }
15313
  if (typeof value === 'number') {
15314
    throw new TypeError('The "value" argument must not be of type number. Received type number');
15315
  }
15316
  var valueOf = value.valueOf && value.valueOf();
15317
  if (valueOf != null && valueOf !== value) {
15318
    return Buffer.from(valueOf, encodingOrOffset, length);
15319
  }
15320
  var b = fromObject(value);
15321
  if (b) return b;
15322
  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {
15323
    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);
15324
  }
15325
  throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);
15326
}
15327
15328
/**
15329
 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
15330
 * if value is a number.
15331
 * Buffer.from(str[, encoding])
15332
 * Buffer.from(array)
15333
 * Buffer.from(buffer)
15334
 * Buffer.from(arrayBuffer[, byteOffset[, length]])
15335
 **/
15336
Buffer.from = function (value, encodingOrOffset, length) {
15337
  return from(value, encodingOrOffset, length);
15338
};
15339
15340
// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
15341
// https://github.com/feross/buffer/pull/148
15342
Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);
15343
Object.setPrototypeOf(Buffer, Uint8Array);
15344
function assertSize(size) {
15345
  if (typeof size !== 'number') {
15346
    throw new TypeError('"size" argument must be of type number');
15347
  } else if (size < 0) {
15348
    throw new RangeError('The value "' + size + '" is invalid for option "size"');
15349
  }
15350
}
15351
function alloc(size, fill, encoding) {
15352
  assertSize(size);
15353
  if (size <= 0) {
15354
    return createBuffer(size);
15355
  }
15356
  if (fill !== undefined) {
15357
    // Only pay attention to encoding if it's a string. This
15358
    // prevents accidentally sending in a number that would
15359
    // be interpreted as a start offset.
15360
    return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);
15361
  }
15362
  return createBuffer(size);
15363
}
15364
15365
/**
15366
 * Creates a new filled Buffer instance.
15367
 * alloc(size[, fill[, encoding]])
15368
 **/
15369
Buffer.alloc = function (size, fill, encoding) {
15370
  return alloc(size, fill, encoding);
15371
};
15372
function allocUnsafe(size) {
15373
  assertSize(size);
15374
  return createBuffer(size < 0 ? 0 : checked(size) | 0);
15375
}
15376
15377
/**
15378
 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
15379
 * */
15380
Buffer.allocUnsafe = function (size) {
15381
  return allocUnsafe(size);
15382
};
15383
/**
15384
 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
15385
 */
15386
Buffer.allocUnsafeSlow = function (size) {
15387
  return allocUnsafe(size);
15388
};
15389
function fromString(string, encoding) {
15390
  if (typeof encoding !== 'string' || encoding === '') {
15391
    encoding = 'utf8';
15392
  }
15393
  if (!Buffer.isEncoding(encoding)) {
15394
    throw new TypeError('Unknown encoding: ' + encoding);
15395
  }
15396
  var length = byteLength(string, encoding) | 0;
15397
  var buf = createBuffer(length);
15398
  var actual = buf.write(string, encoding);
15399
  if (actual !== length) {
15400
    // Writing a hex string, for example, that contains invalid characters will
15401
    // cause everything after the first invalid character to be ignored. (e.g.
15402
    // 'abxxcd' will be treated as 'ab')
15403
    buf = buf.slice(0, actual);
15404
  }
15405
  return buf;
15406
}
15407
function fromArrayLike(array) {
15408
  var length = array.length < 0 ? 0 : checked(array.length) | 0;
15409
  var buf = createBuffer(length);
15410
  for (var i = 0; i < length; i += 1) {
15411
    buf[i] = array[i] & 255;
15412
  }
15413
  return buf;
15414
}
15415
function fromArrayView(arrayView) {
15416
  if (isInstance(arrayView, Uint8Array)) {
15417
    var copy = new Uint8Array(arrayView);
15418
    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);
15419
  }
15420
  return fromArrayLike(arrayView);
15421
}
15422
function fromArrayBuffer(array, byteOffset, length) {
15423
  if (byteOffset < 0 || array.byteLength < byteOffset) {
15424
    throw new RangeError('"offset" is outside of buffer bounds');
15425
  }
15426
  if (array.byteLength < byteOffset + (length || 0)) {
15427
    throw new RangeError('"length" is outside of buffer bounds');
15428
  }
15429
  var buf;
15430
  if (byteOffset === undefined && length === undefined) {
15431
    buf = new Uint8Array(array);
15432
  } else if (length === undefined) {
15433
    buf = new Uint8Array(array, byteOffset);
15434
  } else {
15435
    buf = new Uint8Array(array, byteOffset, length);
15436
  }
15437
15438
  // Return an augmented `Uint8Array` instance
15439
  Object.setPrototypeOf(buf, Buffer.prototype);
15440
  return buf;
15441
}
15442
function fromObject(obj) {
15443
  if (Buffer.isBuffer(obj)) {
15444
    var len = checked(obj.length) | 0;
15445
    var buf = createBuffer(len);
15446
    if (buf.length === 0) {
15447
      return buf;
15448
    }
15449
    obj.copy(buf, 0, 0, len);
15450
    return buf;
15451
  }
15452
  if (obj.length !== undefined) {
15453
    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
15454
      return createBuffer(0);
15455
    }
15456
    return fromArrayLike(obj);
15457
  }
15458
  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
15459
    return fromArrayLike(obj.data);
15460
  }
15461
}
15462
function checked(length) {
15463
  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
15464
  // length is NaN (which is otherwise coerced to zero.)
15465
  if (length >= K_MAX_LENGTH) {
15466
    throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');
15467
  }
15468
  return length | 0;
15469
}
15470
function SlowBuffer(length) {
15471
  if (+length != length) {
15472
    // eslint-disable-line eqeqeq
15473
    length = 0;
15474
  }
15475
  return Buffer.alloc(+length);
15476
}
15477
Buffer.isBuffer = function isBuffer(b) {
15478
  return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false
15479
};
15480
15481
Buffer.compare = function compare(a, b) {
15482
  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);
15483
  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);
15484
  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
15485
    throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
15486
  }
15487
  if (a === b) return 0;
15488
  var x = a.length;
15489
  var y = b.length;
15490
  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
15491
    if (a[i] !== b[i]) {
15492
      x = a[i];
15493
      y = b[i];
15494
      break;
15495
    }
15496
  }
15497
  if (x < y) return -1;
15498
  if (y < x) return 1;
15499
  return 0;
15500
};
15501
Buffer.isEncoding = function isEncoding(encoding) {
15502
  switch (String(encoding).toLowerCase()) {
15503
    case 'hex':
15504
    case 'utf8':
15505
    case 'utf-8':
15506
    case 'ascii':
15507
    case 'latin1':
15508
    case 'binary':
15509
    case 'base64':
15510
    case 'ucs2':
15511
    case 'ucs-2':
15512
    case 'utf16le':
15513
    case 'utf-16le':
15514
      return true;
15515
    default:
15516
      return false;
15517
  }
15518
};
15519
Buffer.concat = function concat(list, length) {
15520
  if (!Array.isArray(list)) {
15521
    throw new TypeError('"list" argument must be an Array of Buffers');
15522
  }
15523
  if (list.length === 0) {
15524
    return Buffer.alloc(0);
15525
  }
15526
  var i;
15527
  if (length === undefined) {
15528
    length = 0;
15529
    for (i = 0; i < list.length; ++i) {
15530
      length += list[i].length;
15531
    }
15532
  }
15533
  var buffer = Buffer.allocUnsafe(length);
15534
  var pos = 0;
15535
  for (i = 0; i < list.length; ++i) {
15536
    var buf = list[i];
15537
    if (isInstance(buf, Uint8Array)) {
15538
      if (pos + buf.length > buffer.length) {
15539
        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);
15540
        buf.copy(buffer, pos);
15541
      } else {
15542
        Uint8Array.prototype.set.call(buffer, buf, pos);
15543
      }
15544
    } else if (!Buffer.isBuffer(buf)) {
15545
      throw new TypeError('"list" argument must be an Array of Buffers');
15546
    } else {
15547
      buf.copy(buffer, pos);
15548
    }
15549
    pos += buf.length;
15550
  }
15551
  return buffer;
15552
};
15553
function byteLength(string, encoding) {
15554
  if (Buffer.isBuffer(string)) {
15555
    return string.length;
15556
  }
15557
  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
15558
    return string.byteLength;
15559
  }
15560
  if (typeof string !== 'string') {
15561
    throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string);
15562
  }
15563
  var len = string.length;
15564
  var mustMatch = arguments.length > 2 && arguments[2] === true;
15565
  if (!mustMatch && len === 0) return 0;
15566
15567
  // Use a for loop to avoid recursion
15568
  var loweredCase = false;
15569
  for (;;) {
15570
    switch (encoding) {
15571
      case 'ascii':
15572
      case 'latin1':
15573
      case 'binary':
15574
        return len;
15575
      case 'utf8':
15576
      case 'utf-8':
15577
        return utf8ToBytes(string).length;
15578
      case 'ucs2':
15579
      case 'ucs-2':
15580
      case 'utf16le':
15581
      case 'utf-16le':
15582
        return len * 2;
15583
      case 'hex':
15584
        return len >>> 1;
15585
      case 'base64':
15586
        return base64ToBytes(string).length;
15587
      default:
15588
        if (loweredCase) {
15589
          return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8
15590
        }
15591
15592
        encoding = ('' + encoding).toLowerCase();
15593
        loweredCase = true;
15594
    }
15595
  }
15596
}
15597
Buffer.byteLength = byteLength;
15598
function slowToString(encoding, start, end) {
15599
  var loweredCase = false;
15600
15601
  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
15602
  // property of a typed array.
15603
15604
  // This behaves neither like String nor Uint8Array in that we set start/end
15605
  // to their upper/lower bounds if the value passed is out of range.
15606
  // undefined is handled specially as per ECMA-262 6th Edition,
15607
  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
15608
  if (start === undefined || start < 0) {
15609
    start = 0;
15610
  }
15611
  // Return early if start > this.length. Done here to prevent potential uint32
15612
  // coercion fail below.
15613
  if (start > this.length) {
15614
    return '';
15615
  }
15616
  if (end === undefined || end > this.length) {
15617
    end = this.length;
15618
  }
15619
  if (end <= 0) {
15620
    return '';
15621
  }
15622
15623
  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.
15624
  end >>>= 0;
15625
  start >>>= 0;
15626
  if (end <= start) {
15627
    return '';
15628
  }
15629
  if (!encoding) encoding = 'utf8';
15630
  while (true) {
15631
    switch (encoding) {
15632
      case 'hex':
15633
        return hexSlice(this, start, end);
15634
      case 'utf8':
15635
      case 'utf-8':
15636
        return utf8Slice(this, start, end);
15637
      case 'ascii':
15638
        return asciiSlice(this, start, end);
15639
      case 'latin1':
15640
      case 'binary':
15641
        return latin1Slice(this, start, end);
15642
      case 'base64':
15643
        return base64Slice(this, start, end);
15644
      case 'ucs2':
15645
      case 'ucs-2':
15646
      case 'utf16le':
15647
      case 'utf-16le':
15648
        return utf16leSlice(this, start, end);
15649
      default:
15650
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
15651
        encoding = (encoding + '').toLowerCase();
15652
        loweredCase = true;
15653
    }
15654
  }
15655
}
15656
15657
// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
15658
// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
15659
// reliably in a browserify context because there could be multiple different
15660
// copies of the 'buffer' package in use. This method works even for Buffer
15661
// instances that were created from another copy of the `buffer` package.
15662
// See: https://github.com/feross/buffer/issues/154
15663
Buffer.prototype._isBuffer = true;
15664
function swap(b, n, m) {
15665
  var i = b[n];
15666
  b[n] = b[m];
15667
  b[m] = i;
15668
}
15669
Buffer.prototype.swap16 = function swap16() {
15670
  var len = this.length;
15671
  if (len % 2 !== 0) {
15672
    throw new RangeError('Buffer size must be a multiple of 16-bits');
15673
  }
15674
  for (var i = 0; i < len; i += 2) {
15675
    swap(this, i, i + 1);
15676
  }
15677
  return this;
15678
};
15679
Buffer.prototype.swap32 = function swap32() {
15680
  var len = this.length;
15681
  if (len % 4 !== 0) {
15682
    throw new RangeError('Buffer size must be a multiple of 32-bits');
15683
  }
15684
  for (var i = 0; i < len; i += 4) {
15685
    swap(this, i, i + 3);
15686
    swap(this, i + 1, i + 2);
15687
  }
15688
  return this;
15689
};
15690
Buffer.prototype.swap64 = function swap64() {
15691
  var len = this.length;
15692
  if (len % 8 !== 0) {
15693
    throw new RangeError('Buffer size must be a multiple of 64-bits');
15694
  }
15695
  for (var i = 0; i < len; i += 8) {
15696
    swap(this, i, i + 7);
15697
    swap(this, i + 1, i + 6);
15698
    swap(this, i + 2, i + 5);
15699
    swap(this, i + 3, i + 4);
15700
  }
15701
  return this;
15702
};
15703
Buffer.prototype.toString = function toString() {
15704
  var length = this.length;
15705
  if (length === 0) return '';
15706
  if (arguments.length === 0) return utf8Slice(this, 0, length);
15707
  return slowToString.apply(this, arguments);
15708
};
15709
Buffer.prototype.toLocaleString = Buffer.prototype.toString;
15710
Buffer.prototype.equals = function equals(b) {
15711
  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');
15712
  if (this === b) return true;
15713
  return Buffer.compare(this, b) === 0;
15714
};
15715
Buffer.prototype.inspect = function inspect() {
15716
  var str = '';
15717
  var max = exports.INSPECT_MAX_BYTES;
15718
  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();
15719
  if (this.length > max) str += ' ... ';
15720
  return '<Buffer ' + str + '>';
15721
};
15722
if (customInspectSymbol) {
15723
  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;
15724
}
15725
Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
15726
  if (isInstance(target, Uint8Array)) {
15727
    target = Buffer.from(target, target.offset, target.byteLength);
15728
  }
15729
  if (!Buffer.isBuffer(target)) {
15730
    throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target);
15731
  }
15732
  if (start === undefined) {
15733
    start = 0;
15734
  }
15735
  if (end === undefined) {
15736
    end = target ? target.length : 0;
15737
  }
15738
  if (thisStart === undefined) {
15739
    thisStart = 0;
15740
  }
15741
  if (thisEnd === undefined) {
15742
    thisEnd = this.length;
15743
  }
15744
  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
15745
    throw new RangeError('out of range index');
15746
  }
15747
  if (thisStart >= thisEnd && start >= end) {
15748
    return 0;
15749
  }
15750
  if (thisStart >= thisEnd) {
15751
    return -1;
15752
  }
15753
  if (start >= end) {
15754
    return 1;
15755
  }
15756
  start >>>= 0;
15757
  end >>>= 0;
15758
  thisStart >>>= 0;
15759
  thisEnd >>>= 0;
15760
  if (this === target) return 0;
15761
  var x = thisEnd - thisStart;
15762
  var y = end - start;
15763
  var len = Math.min(x, y);
15764
  var thisCopy = this.slice(thisStart, thisEnd);
15765
  var targetCopy = target.slice(start, end);
15766
  for (var i = 0; i < len; ++i) {
15767
    if (thisCopy[i] !== targetCopy[i]) {
15768
      x = thisCopy[i];
15769
      y = targetCopy[i];
15770
      break;
15771
    }
15772
  }
15773
  if (x < y) return -1;
15774
  if (y < x) return 1;
15775
  return 0;
15776
};
15777
15778
// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
15779
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
15780
//
15781
// Arguments:
15782
// - buffer - a Buffer to search
15783
// - val - a string, Buffer, or number
15784
// - byteOffset - an index into `buffer`; will be clamped to an int32
15785
// - encoding - an optional encoding, relevant is val is a string
15786
// - dir - true for indexOf, false for lastIndexOf
15787
function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
15788
  // Empty buffer means no match
15789
  if (buffer.length === 0) return -1;
15790
15791
  // Normalize byteOffset
15792
  if (typeof byteOffset === 'string') {
15793
    encoding = byteOffset;
15794
    byteOffset = 0;
15795
  } else if (byteOffset > 0x7fffffff) {
15796
    byteOffset = 0x7fffffff;
15797
  } else if (byteOffset < -0x80000000) {
15798
    byteOffset = -0x80000000;
15799
  }
15800
  byteOffset = +byteOffset; // Coerce to Number.
15801
  if (numberIsNaN(byteOffset)) {
15802
    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
15803
    byteOffset = dir ? 0 : buffer.length - 1;
15804
  }
15805
15806
  // Normalize byteOffset: negative offsets start from the end of the buffer
15807
  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
15808
  if (byteOffset >= buffer.length) {
15809
    if (dir) return -1;else byteOffset = buffer.length - 1;
15810
  } else if (byteOffset < 0) {
15811
    if (dir) byteOffset = 0;else return -1;
15812
  }
15813
15814
  // Normalize val
15815
  if (typeof val === 'string') {
15816
    val = Buffer.from(val, encoding);
15817
  }
15818
15819
  // Finally, search either indexOf (if dir is true) or lastIndexOf
15820
  if (Buffer.isBuffer(val)) {
15821
    // Special case: looking for empty string/buffer always fails
15822
    if (val.length === 0) {
15823
      return -1;
15824
    }
15825
    return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
15826
  } else if (typeof val === 'number') {
15827
    val = val & 0xFF; // Search for a byte value [0-255]
15828
    if (typeof Uint8Array.prototype.indexOf === 'function') {
15829
      if (dir) {
15830
        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
15831
      } else {
15832
        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
15833
      }
15834
    }
15835
    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
15836
  }
15837
  throw new TypeError('val must be string, number or Buffer');
15838
}
15839
function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
15840
  var indexSize = 1;
15841
  var arrLength = arr.length;
15842
  var valLength = val.length;
15843
  if (encoding !== undefined) {
15844
    encoding = String(encoding).toLowerCase();
15845
    if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {
15846
      if (arr.length < 2 || val.length < 2) {
15847
        return -1;
15848
      }
15849
      indexSize = 2;
15850
      arrLength /= 2;
15851
      valLength /= 2;
15852
      byteOffset /= 2;
15853
    }
15854
  }
15855
  function read(buf, i) {
15856
    if (indexSize === 1) {
15857
      return buf[i];
15858
    } else {
15859
      return buf.readUInt16BE(i * indexSize);
15860
    }
15861
  }
15862
  var i;
15863
  if (dir) {
15864
    var foundIndex = -1;
15865
    for (i = byteOffset; i < arrLength; i++) {
15866
      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
15867
        if (foundIndex === -1) foundIndex = i;
15868
        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
15869
      } else {
15870
        if (foundIndex !== -1) i -= i - foundIndex;
15871
        foundIndex = -1;
15872
      }
15873
    }
15874
  } else {
15875
    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
15876
    for (i = byteOffset; i >= 0; i--) {
15877
      var found = true;
15878
      for (var j = 0; j < valLength; j++) {
15879
        if (read(arr, i + j) !== read(val, j)) {
15880
          found = false;
15881
          break;
15882
        }
15883
      }
15884
      if (found) return i;
15885
    }
15886
  }
15887
  return -1;
15888
}
15889
Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
15890
  return this.indexOf(val, byteOffset, encoding) !== -1;
15891
};
15892
Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
15893
  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
15894
};
15895
Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
15896
  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
15897
};
15898
function hexWrite(buf, string, offset, length) {
15899
  offset = Number(offset) || 0;
15900
  var remaining = buf.length - offset;
15901
  if (!length) {
15902
    length = remaining;
15903
  } else {
15904
    length = Number(length);
15905
    if (length > remaining) {
15906
      length = remaining;
15907
    }
15908
  }
15909
  var strLen = string.length;
15910
  if (length > strLen / 2) {
15911
    length = strLen / 2;
15912
  }
15913
  var i;
15914
  for (i = 0; i < length; ++i) {
15915
    var parsed = parseInt(string.substr(i * 2, 2), 16);
15916
    if (numberIsNaN(parsed)) return i;
15917
    buf[offset + i] = parsed;
15918
  }
15919
  return i;
15920
}
15921
function utf8Write(buf, string, offset, length) {
15922
  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
15923
}
15924
function asciiWrite(buf, string, offset, length) {
15925
  return blitBuffer(asciiToBytes(string), buf, offset, length);
15926
}
15927
function base64Write(buf, string, offset, length) {
15928
  return blitBuffer(base64ToBytes(string), buf, offset, length);
15929
}
15930
function ucs2Write(buf, string, offset, length) {
15931
  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
15932
}
15933
Buffer.prototype.write = function write(string, offset, length, encoding) {
15934
  // Buffer#write(string)
15935
  if (offset === undefined) {
15936
    encoding = 'utf8';
15937
    length = this.length;
15938
    offset = 0;
15939
    // Buffer#write(string, encoding)
15940
  } else if (length === undefined && typeof offset === 'string') {
15941
    encoding = offset;
15942
    length = this.length;
15943
    offset = 0;
15944
    // Buffer#write(string, offset[, length][, encoding])
15945
  } else if (isFinite(offset)) {
15946
    offset = offset >>> 0;
15947
    if (isFinite(length)) {
15948
      length = length >>> 0;
15949
      if (encoding === undefined) encoding = 'utf8';
15950
    } else {
15951
      encoding = length;
15952
      length = undefined;
15953
    }
15954
  } else {
15955
    throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
15956
  }
15957
  var remaining = this.length - offset;
15958
  if (length === undefined || length > remaining) length = remaining;
15959
  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
15960
    throw new RangeError('Attempt to write outside buffer bounds');
15961
  }
15962
  if (!encoding) encoding = 'utf8';
15963
  var loweredCase = false;
15964
  for (;;) {
15965
    switch (encoding) {
15966
      case 'hex':
15967
        return hexWrite(this, string, offset, length);
15968
      case 'utf8':
15969
      case 'utf-8':
15970
        return utf8Write(this, string, offset, length);
15971
      case 'ascii':
15972
      case 'latin1':
15973
      case 'binary':
15974
        return asciiWrite(this, string, offset, length);
15975
      case 'base64':
15976
        // Warning: maxLength not taken into account in base64Write
15977
        return base64Write(this, string, offset, length);
15978
      case 'ucs2':
15979
      case 'ucs-2':
15980
      case 'utf16le':
15981
      case 'utf-16le':
15982
        return ucs2Write(this, string, offset, length);
15983
      default:
15984
        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
15985
        encoding = ('' + encoding).toLowerCase();
15986
        loweredCase = true;
15987
    }
15988
  }
15989
};
15990
Buffer.prototype.toJSON = function toJSON() {
15991
  return {
15992
    type: 'Buffer',
15993
    data: Array.prototype.slice.call(this._arr || this, 0)
15994
  };
15995
};
15996
function base64Slice(buf, start, end) {
15997
  if (start === 0 && end === buf.length) {
15998
    return base64.fromByteArray(buf);
15999
  } else {
16000
    return base64.fromByteArray(buf.slice(start, end));
16001
  }
16002
}
16003
function utf8Slice(buf, start, end) {
16004
  end = Math.min(buf.length, end);
16005
  var res = [];
16006
  var i = start;
16007
  while (i < end) {
16008
    var firstByte = buf[i];
16009
    var codePoint = null;
16010
    var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;
16011
    if (i + bytesPerSequence <= end) {
16012
      var secondByte = void 0,
16013
        thirdByte = void 0,
16014
        fourthByte = void 0,
16015
        tempCodePoint = void 0;
16016
      switch (bytesPerSequence) {
16017
        case 1:
16018
          if (firstByte < 0x80) {
16019
            codePoint = firstByte;
16020
          }
16021
          break;
16022
        case 2:
16023
          secondByte = buf[i + 1];
16024
          if ((secondByte & 0xC0) === 0x80) {
16025
            tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;
16026
            if (tempCodePoint > 0x7F) {
16027
              codePoint = tempCodePoint;
16028
            }
16029
          }
16030
          break;
16031
        case 3:
16032
          secondByte = buf[i + 1];
16033
          thirdByte = buf[i + 2];
16034
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
16035
            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;
16036
            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
16037
              codePoint = tempCodePoint;
16038
            }
16039
          }
16040
          break;
16041
        case 4:
16042
          secondByte = buf[i + 1];
16043
          thirdByte = buf[i + 2];
16044
          fourthByte = buf[i + 3];
16045
          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
16046
            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;
16047
            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
16048
              codePoint = tempCodePoint;
16049
            }
16050
          }
16051
      }
16052
    }
16053
    if (codePoint === null) {
16054
      // we did not generate a valid codePoint so insert a
16055
      // replacement char (U+FFFD) and advance only 1 byte
16056
      codePoint = 0xFFFD;
16057
      bytesPerSequence = 1;
16058
    } else if (codePoint > 0xFFFF) {
16059
      // encode to utf16 (surrogate pair dance)
16060
      codePoint -= 0x10000;
16061
      res.push(codePoint >>> 10 & 0x3FF | 0xD800);
16062
      codePoint = 0xDC00 | codePoint & 0x3FF;
16063
    }
16064
    res.push(codePoint);
16065
    i += bytesPerSequence;
16066
  }
16067
  return decodeCodePointsArray(res);
16068
}
16069
16070
// Based on http://stackoverflow.com/a/22747272/680742, the browser with
16071
// the lowest limit is Chrome, with 0x10000 args.
16072
// We go 1 magnitude less, for safety
16073
var MAX_ARGUMENTS_LENGTH = 0x1000;
16074
function decodeCodePointsArray(codePoints) {
16075
  var len = codePoints.length;
16076
  if (len <= MAX_ARGUMENTS_LENGTH) {
16077
    return String.fromCharCode.apply(String, codePoints); // avoid extra slice()
16078
  }
16079
16080
  // Decode in chunks to avoid "call stack size exceeded".
16081
  var res = '';
16082
  var i = 0;
16083
  while (i < len) {
16084
    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
16085
  }
16086
  return res;
16087
}
16088
function asciiSlice(buf, start, end) {
16089
  var ret = '';
16090
  end = Math.min(buf.length, end);
16091
  for (var i = start; i < end; ++i) {
16092
    ret += String.fromCharCode(buf[i] & 0x7F);
16093
  }
16094
  return ret;
16095
}
16096
function latin1Slice(buf, start, end) {
16097
  var ret = '';
16098
  end = Math.min(buf.length, end);
16099
  for (var i = start; i < end; ++i) {
16100
    ret += String.fromCharCode(buf[i]);
16101
  }
16102
  return ret;
16103
}
16104
function hexSlice(buf, start, end) {
16105
  var len = buf.length;
16106
  if (!start || start < 0) start = 0;
16107
  if (!end || end < 0 || end > len) end = len;
16108
  var out = '';
16109
  for (var i = start; i < end; ++i) {
16110
    out += hexSliceLookupTable[buf[i]];
16111
  }
16112
  return out;
16113
}
16114
function utf16leSlice(buf, start, end) {
16115
  var bytes = buf.slice(start, end);
16116
  var res = '';
16117
  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)
16118
  for (var i = 0; i < bytes.length - 1; i += 2) {
16119
    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
16120
  }
16121
  return res;
16122
}
16123
Buffer.prototype.slice = function slice(start, end) {
16124
  var len = this.length;
16125
  start = ~~start;
16126
  end = end === undefined ? len : ~~end;
16127
  if (start < 0) {
16128
    start += len;
16129
    if (start < 0) start = 0;
16130
  } else if (start > len) {
16131
    start = len;
16132
  }
16133
  if (end < 0) {
16134
    end += len;
16135
    if (end < 0) end = 0;
16136
  } else if (end > len) {
16137
    end = len;
16138
  }
16139
  if (end < start) end = start;
16140
  var newBuf = this.subarray(start, end);
16141
  // Return an augmented `Uint8Array` instance
16142
  Object.setPrototypeOf(newBuf, Buffer.prototype);
16143
  return newBuf;
16144
};
16145
16146
/*
16147
 * Need to make sure that buffer isn't trying to write out of bounds.
16148
 */
16149
function checkOffset(offset, ext, length) {
16150
  if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');
16151
  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');
16152
}
16153
Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
16154
  offset = offset >>> 0;
16155
  byteLength = byteLength >>> 0;
16156
  if (!noAssert) checkOffset(offset, byteLength, this.length);
16157
  var val = this[offset];
16158
  var mul = 1;
16159
  var i = 0;
16160
  while (++i < byteLength && (mul *= 0x100)) {
16161
    val += this[offset + i] * mul;
16162
  }
16163
  return val;
16164
};
16165
Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
16166
  offset = offset >>> 0;
16167
  byteLength = byteLength >>> 0;
16168
  if (!noAssert) {
16169
    checkOffset(offset, byteLength, this.length);
16170
  }
16171
  var val = this[offset + --byteLength];
16172
  var mul = 1;
16173
  while (byteLength > 0 && (mul *= 0x100)) {
16174
    val += this[offset + --byteLength] * mul;
16175
  }
16176
  return val;
16177
};
16178
Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
16179
  offset = offset >>> 0;
16180
  if (!noAssert) checkOffset(offset, 1, this.length);
16181
  return this[offset];
16182
};
16183
Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
16184
  offset = offset >>> 0;
16185
  if (!noAssert) checkOffset(offset, 2, this.length);
16186
  return this[offset] | this[offset + 1] << 8;
16187
};
16188
Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
16189
  offset = offset >>> 0;
16190
  if (!noAssert) checkOffset(offset, 2, this.length);
16191
  return this[offset] << 8 | this[offset + 1];
16192
};
16193
Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
16194
  offset = offset >>> 0;
16195
  if (!noAssert) checkOffset(offset, 4, this.length);
16196
  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;
16197
};
16198
Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
16199
  offset = offset >>> 0;
16200
  if (!noAssert) checkOffset(offset, 4, this.length);
16201
  return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
16202
};
16203
Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {
16204
  offset = offset >>> 0;
16205
  validateNumber(offset, 'offset');
16206
  var first = this[offset];
16207
  var last = this[offset + 7];
16208
  if (first === undefined || last === undefined) {
16209
    boundsError(offset, this.length - 8);
16210
  }
16211
  var lo = first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24);
16212
  var hi = this[++offset] + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);
16213
  return BigInt(lo) + (BigInt(hi) << BigInt(32));
16214
});
16215
Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {
16216
  offset = offset >>> 0;
16217
  validateNumber(offset, 'offset');
16218
  var first = this[offset];
16219
  var last = this[offset + 7];
16220
  if (first === undefined || last === undefined) {
16221
    boundsError(offset, this.length - 8);
16222
  }
16223
  var hi = first * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];
16224
  var lo = this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last;
16225
  return (BigInt(hi) << BigInt(32)) + BigInt(lo);
16226
});
16227
Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
16228
  offset = offset >>> 0;
16229
  byteLength = byteLength >>> 0;
16230
  if (!noAssert) checkOffset(offset, byteLength, this.length);
16231
  var val = this[offset];
16232
  var mul = 1;
16233
  var i = 0;
16234
  while (++i < byteLength && (mul *= 0x100)) {
16235
    val += this[offset + i] * mul;
16236
  }
16237
  mul *= 0x80;
16238
  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
16239
  return val;
16240
};
16241
Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
16242
  offset = offset >>> 0;
16243
  byteLength = byteLength >>> 0;
16244
  if (!noAssert) checkOffset(offset, byteLength, this.length);
16245
  var i = byteLength;
16246
  var mul = 1;
16247
  var val = this[offset + --i];
16248
  while (i > 0 && (mul *= 0x100)) {
16249
    val += this[offset + --i] * mul;
16250
  }
16251
  mul *= 0x80;
16252
  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
16253
  return val;
16254
};
16255
Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
16256
  offset = offset >>> 0;
16257
  if (!noAssert) checkOffset(offset, 1, this.length);
16258
  if (!(this[offset] & 0x80)) return this[offset];
16259
  return (0xff - this[offset] + 1) * -1;
16260
};
16261
Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
16262
  offset = offset >>> 0;
16263
  if (!noAssert) checkOffset(offset, 2, this.length);
16264
  var val = this[offset] | this[offset + 1] << 8;
16265
  return val & 0x8000 ? val | 0xFFFF0000 : val;
16266
};
16267
Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
16268
  offset = offset >>> 0;
16269
  if (!noAssert) checkOffset(offset, 2, this.length);
16270
  var val = this[offset + 1] | this[offset] << 8;
16271
  return val & 0x8000 ? val | 0xFFFF0000 : val;
16272
};
16273
Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
16274
  offset = offset >>> 0;
16275
  if (!noAssert) checkOffset(offset, 4, this.length);
16276
  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
16277
};
16278
Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
16279
  offset = offset >>> 0;
16280
  if (!noAssert) checkOffset(offset, 4, this.length);
16281
  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
16282
};
16283
Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {
16284
  offset = offset >>> 0;
16285
  validateNumber(offset, 'offset');
16286
  var first = this[offset];
16287
  var last = this[offset + 7];
16288
  if (first === undefined || last === undefined) {
16289
    boundsError(offset, this.length - 8);
16290
  }
16291
  var val = this[offset + 4] + this[offset + 5] * Math.pow(2, 8) + this[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow
16292
16293
  return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * Math.pow(2, 8) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 24));
16294
});
16295
Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {
16296
  offset = offset >>> 0;
16297
  validateNumber(offset, 'offset');
16298
  var first = this[offset];
16299
  var last = this[offset + 7];
16300
  if (first === undefined || last === undefined) {
16301
    boundsError(offset, this.length - 8);
16302
  }
16303
  var val = (first << 24) +
16304
  // Overflow
16305
  this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + this[++offset];
16306
  return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * Math.pow(2, 24) + this[++offset] * Math.pow(2, 16) + this[++offset] * Math.pow(2, 8) + last);
16307
});
16308
Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
16309
  offset = offset >>> 0;
16310
  if (!noAssert) checkOffset(offset, 4, this.length);
16311
  return ieee754.read(this, offset, true, 23, 4);
16312
};
16313
Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
16314
  offset = offset >>> 0;
16315
  if (!noAssert) checkOffset(offset, 4, this.length);
16316
  return ieee754.read(this, offset, false, 23, 4);
16317
};
16318
Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
16319
  offset = offset >>> 0;
16320
  if (!noAssert) checkOffset(offset, 8, this.length);
16321
  return ieee754.read(this, offset, true, 52, 8);
16322
};
16323
Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
16324
  offset = offset >>> 0;
16325
  if (!noAssert) checkOffset(offset, 8, this.length);
16326
  return ieee754.read(this, offset, false, 52, 8);
16327
};
16328
function checkInt(buf, value, offset, ext, max, min) {
16329
  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
16330
  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
16331
  if (offset + ext > buf.length) throw new RangeError('Index out of range');
16332
}
16333
Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
16334
  value = +value;
16335
  offset = offset >>> 0;
16336
  byteLength = byteLength >>> 0;
16337
  if (!noAssert) {
16338
    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
16339
    checkInt(this, value, offset, byteLength, maxBytes, 0);
16340
  }
16341
  var mul = 1;
16342
  var i = 0;
16343
  this[offset] = value & 0xFF;
16344
  while (++i < byteLength && (mul *= 0x100)) {
16345
    this[offset + i] = value / mul & 0xFF;
16346
  }
16347
  return offset + byteLength;
16348
};
16349
Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
16350
  value = +value;
16351
  offset = offset >>> 0;
16352
  byteLength = byteLength >>> 0;
16353
  if (!noAssert) {
16354
    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
16355
    checkInt(this, value, offset, byteLength, maxBytes, 0);
16356
  }
16357
  var i = byteLength - 1;
16358
  var mul = 1;
16359
  this[offset + i] = value & 0xFF;
16360
  while (--i >= 0 && (mul *= 0x100)) {
16361
    this[offset + i] = value / mul & 0xFF;
16362
  }
16363
  return offset + byteLength;
16364
};
16365
Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
16366
  value = +value;
16367
  offset = offset >>> 0;
16368
  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
16369
  this[offset] = value & 0xff;
16370
  return offset + 1;
16371
};
16372
Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
16373
  value = +value;
16374
  offset = offset >>> 0;
16375
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
16376
  this[offset] = value & 0xff;
16377
  this[offset + 1] = value >>> 8;
16378
  return offset + 2;
16379
};
16380
Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
16381
  value = +value;
16382
  offset = offset >>> 0;
16383
  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
16384
  this[offset] = value >>> 8;
16385
  this[offset + 1] = value & 0xff;
16386
  return offset + 2;
16387
};
16388
Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
16389
  value = +value;
16390
  offset = offset >>> 0;
16391
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
16392
  this[offset + 3] = value >>> 24;
16393
  this[offset + 2] = value >>> 16;
16394
  this[offset + 1] = value >>> 8;
16395
  this[offset] = value & 0xff;
16396
  return offset + 4;
16397
};
16398
Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
16399
  value = +value;
16400
  offset = offset >>> 0;
16401
  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
16402
  this[offset] = value >>> 24;
16403
  this[offset + 1] = value >>> 16;
16404
  this[offset + 2] = value >>> 8;
16405
  this[offset + 3] = value & 0xff;
16406
  return offset + 4;
16407
};
16408
function wrtBigUInt64LE(buf, value, offset, min, max) {
16409
  checkIntBI(value, min, max, buf, offset, 7);
16410
  var lo = Number(value & BigInt(0xffffffff));
16411
  buf[offset++] = lo;
16412
  lo = lo >> 8;
16413
  buf[offset++] = lo;
16414
  lo = lo >> 8;
16415
  buf[offset++] = lo;
16416
  lo = lo >> 8;
16417
  buf[offset++] = lo;
16418
  var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));
16419
  buf[offset++] = hi;
16420
  hi = hi >> 8;
16421
  buf[offset++] = hi;
16422
  hi = hi >> 8;
16423
  buf[offset++] = hi;
16424
  hi = hi >> 8;
16425
  buf[offset++] = hi;
16426
  return offset;
16427
}
16428
function wrtBigUInt64BE(buf, value, offset, min, max) {
16429
  checkIntBI(value, min, max, buf, offset, 7);
16430
  var lo = Number(value & BigInt(0xffffffff));
16431
  buf[offset + 7] = lo;
16432
  lo = lo >> 8;
16433
  buf[offset + 6] = lo;
16434
  lo = lo >> 8;
16435
  buf[offset + 5] = lo;
16436
  lo = lo >> 8;
16437
  buf[offset + 4] = lo;
16438
  var hi = Number(value >> BigInt(32) & BigInt(0xffffffff));
16439
  buf[offset + 3] = hi;
16440
  hi = hi >> 8;
16441
  buf[offset + 2] = hi;
16442
  hi = hi >> 8;
16443
  buf[offset + 1] = hi;
16444
  hi = hi >> 8;
16445
  buf[offset] = hi;
16446
  return offset + 8;
16447
}
16448
Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset) {
16449
  if (offset === void 0) {
16450
    offset = 0;
16451
  }
16452
  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));
16453
});
16454
Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset) {
16455
  if (offset === void 0) {
16456
    offset = 0;
16457
  }
16458
  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));
16459
});
16460
Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
16461
  value = +value;
16462
  offset = offset >>> 0;
16463
  if (!noAssert) {
16464
    var limit = Math.pow(2, 8 * byteLength - 1);
16465
    checkInt(this, value, offset, byteLength, limit - 1, -limit);
16466
  }
16467
  var i = 0;
16468
  var mul = 1;
16469
  var sub = 0;
16470
  this[offset] = value & 0xFF;
16471
  while (++i < byteLength && (mul *= 0x100)) {
16472
    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
16473
      sub = 1;
16474
    }
16475
    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
16476
  }
16477
  return offset + byteLength;
16478
};
16479
Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
16480
  value = +value;
16481
  offset = offset >>> 0;
16482
  if (!noAssert) {
16483
    var limit = Math.pow(2, 8 * byteLength - 1);
16484
    checkInt(this, value, offset, byteLength, limit - 1, -limit);
16485
  }
16486
  var i = byteLength - 1;
16487
  var mul = 1;
16488
  var sub = 0;
16489
  this[offset + i] = value & 0xFF;
16490
  while (--i >= 0 && (mul *= 0x100)) {
16491
    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
16492
      sub = 1;
16493
    }
16494
    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
16495
  }
16496
  return offset + byteLength;
16497
};
16498
Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
16499
  value = +value;
16500
  offset = offset >>> 0;
16501
  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
16502
  if (value < 0) value = 0xff + value + 1;
16503
  this[offset] = value & 0xff;
16504
  return offset + 1;
16505
};
16506
Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
16507
  value = +value;
16508
  offset = offset >>> 0;
16509
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
16510
  this[offset] = value & 0xff;
16511
  this[offset + 1] = value >>> 8;
16512
  return offset + 2;
16513
};
16514
Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
16515
  value = +value;
16516
  offset = offset >>> 0;
16517
  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
16518
  this[offset] = value >>> 8;
16519
  this[offset + 1] = value & 0xff;
16520
  return offset + 2;
16521
};
16522
Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
16523
  value = +value;
16524
  offset = offset >>> 0;
16525
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
16526
  this[offset] = value & 0xff;
16527
  this[offset + 1] = value >>> 8;
16528
  this[offset + 2] = value >>> 16;
16529
  this[offset + 3] = value >>> 24;
16530
  return offset + 4;
16531
};
16532
Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
16533
  value = +value;
16534
  offset = offset >>> 0;
16535
  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
16536
  if (value < 0) value = 0xffffffff + value + 1;
16537
  this[offset] = value >>> 24;
16538
  this[offset + 1] = value >>> 16;
16539
  this[offset + 2] = value >>> 8;
16540
  this[offset + 3] = value & 0xff;
16541
  return offset + 4;
16542
};
16543
Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset) {
16544
  if (offset === void 0) {
16545
    offset = 0;
16546
  }
16547
  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));
16548
});
16549
Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset) {
16550
  if (offset === void 0) {
16551
    offset = 0;
16552
  }
16553
  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));
16554
});
16555
function checkIEEE754(buf, value, offset, ext, max, min) {
16556
  if (offset + ext > buf.length) throw new RangeError('Index out of range');
16557
  if (offset < 0) throw new RangeError('Index out of range');
16558
}
16559
function writeFloat(buf, value, offset, littleEndian, noAssert) {
16560
  value = +value;
16561
  offset = offset >>> 0;
16562
  if (!noAssert) {
16563
    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);
16564
  }
16565
  ieee754.write(buf, value, offset, littleEndian, 23, 4);
16566
  return offset + 4;
16567
}
16568
Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
16569
  return writeFloat(this, value, offset, true, noAssert);
16570
};
16571
Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
16572
  return writeFloat(this, value, offset, false, noAssert);
16573
};
16574
function writeDouble(buf, value, offset, littleEndian, noAssert) {
16575
  value = +value;
16576
  offset = offset >>> 0;
16577
  if (!noAssert) {
16578
    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);
16579
  }
16580
  ieee754.write(buf, value, offset, littleEndian, 52, 8);
16581
  return offset + 8;
16582
}
16583
Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
16584
  return writeDouble(this, value, offset, true, noAssert);
16585
};
16586
Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
16587
  return writeDouble(this, value, offset, false, noAssert);
16588
};
16589
16590
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
16591
Buffer.prototype.copy = function copy(target, targetStart, start, end) {
16592
  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer');
16593
  if (!start) start = 0;
16594
  if (!end && end !== 0) end = this.length;
16595
  if (targetStart >= target.length) targetStart = target.length;
16596
  if (!targetStart) targetStart = 0;
16597
  if (end > 0 && end < start) end = start;
16598
16599
  // Copy 0 bytes; we're done
16600
  if (end === start) return 0;
16601
  if (target.length === 0 || this.length === 0) return 0;
16602
16603
  // Fatal error conditions
16604
  if (targetStart < 0) {
16605
    throw new RangeError('targetStart out of bounds');
16606
  }
16607
  if (start < 0 || start >= this.length) throw new RangeError('Index out of range');
16608
  if (end < 0) throw new RangeError('sourceEnd out of bounds');
16609
16610
  // Are we oob?
16611
  if (end > this.length) end = this.length;
16612
  if (target.length - targetStart < end - start) {
16613
    end = target.length - targetStart + start;
16614
  }
16615
  var len = end - start;
16616
  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
16617
    // Use built-in when available, missing from IE11
16618
    this.copyWithin(targetStart, start, end);
16619
  } else {
16620
    Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);
16621
  }
16622
  return len;
16623
};
16624
16625
// Usage:
16626
//    buffer.fill(number[, offset[, end]])
16627
//    buffer.fill(buffer[, offset[, end]])
16628
//    buffer.fill(string[, offset[, end]][, encoding])
16629
Buffer.prototype.fill = function fill(val, start, end, encoding) {
16630
  // Handle string cases:
16631
  if (typeof val === 'string') {
16632
    if (typeof start === 'string') {
16633
      encoding = start;
16634
      start = 0;
16635
      end = this.length;
16636
    } else if (typeof end === 'string') {
16637
      encoding = end;
16638
      end = this.length;
16639
    }
16640
    if (encoding !== undefined && typeof encoding !== 'string') {
16641
      throw new TypeError('encoding must be a string');
16642
    }
16643
    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
16644
      throw new TypeError('Unknown encoding: ' + encoding);
16645
    }
16646
    if (val.length === 1) {
16647
      var code = val.charCodeAt(0);
16648
      if (encoding === 'utf8' && code < 128 || encoding === 'latin1') {
16649
        // Fast path: If `val` fits into a single byte, use that numeric value.
16650
        val = code;
16651
      }
16652
    }
16653
  } else if (typeof val === 'number') {
16654
    val = val & 255;
16655
  } else if (typeof val === 'boolean') {
16656
    val = Number(val);
16657
  }
16658
16659
  // Invalid ranges are not set to a default, so can range check early.
16660
  if (start < 0 || this.length < start || this.length < end) {
16661
    throw new RangeError('Out of range index');
16662
  }
16663
  if (end <= start) {
16664
    return this;
16665
  }
16666
  start = start >>> 0;
16667
  end = end === undefined ? this.length : end >>> 0;
16668
  if (!val) val = 0;
16669
  var i;
16670
  if (typeof val === 'number') {
16671
    for (i = start; i < end; ++i) {
16672
      this[i] = val;
16673
    }
16674
  } else {
16675
    var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);
16676
    var len = bytes.length;
16677
    if (len === 0) {
16678
      throw new TypeError('The value "' + val + '" is invalid for argument "value"');
16679
    }
16680
    for (i = 0; i < end - start; ++i) {
16681
      this[i + start] = bytes[i % len];
16682
    }
16683
  }
16684
  return this;
16685
};
16686
16687
// CUSTOM ERRORS
16688
// =============
16689
16690
// Simplified versions from Node, changed for Buffer-only usage
16691
var errors = {};
16692
function E(sym, getMessage, Base) {
16693
  errors[sym] = /*#__PURE__*/function (_Base) {
16694
    _inheritsLoose(NodeError, _Base);
16695
    function NodeError() {
16696
      var _this;
16697
      _this = _Base.call(this) || this;
16698
      Object.defineProperty(_assertThisInitialized(_this), 'message', {
16699
        value: getMessage.apply(_assertThisInitialized(_this), arguments),
16700
        writable: true,
16701
        configurable: true
16702
      });
16703
16704
      // Add the error code to the name to include it in the stack trace.
16705
      _this.name = _this.name + " [" + sym + "]";
16706
      // Access the stack to generate the error message including the error code
16707
      // from the name.
16708
      _this.stack; // eslint-disable-line no-unused-expressions
16709
      // Reset the name to the actual name.
16710
      delete _this.name;
16711
      return _this;
16712
    }
16713
    var _proto = NodeError.prototype;
16714
    _proto.toString = function toString() {
16715
      return this.name + " [" + sym + "]: " + this.message;
16716
    };
16717
    _createClass(NodeError, [{
16718
      key: "code",
16719
      get: function get() {
16720
        return sym;
16721
      },
16722
      set: function set(value) {
16723
        Object.defineProperty(this, 'code', {
16724
          configurable: true,
16725
          enumerable: true,
16726
          value: value,
16727
          writable: true
16728
        });
16729
      }
16730
    }]);
16731
    return NodeError;
16732
  }(Base);
16733
}
16734
E('ERR_BUFFER_OUT_OF_BOUNDS', function (name) {
16735
  if (name) {
16736
    return name + " is outside of buffer bounds";
16737
  }
16738
  return 'Attempt to access memory outside buffer bounds';
16739
}, RangeError);
16740
E('ERR_INVALID_ARG_TYPE', function (name, actual) {
16741
  return "The \"" + name + "\" argument must be of type number. Received type " + typeof actual;
16742
}, TypeError);
16743
E('ERR_OUT_OF_RANGE', function (str, range, input) {
16744
  var msg = "The value of \"" + str + "\" is out of range.";
16745
  var received = input;
16746
  if (Number.isInteger(input) && Math.abs(input) > Math.pow(2, 32)) {
16747
    received = addNumericalSeparator(String(input));
16748
  } else if (typeof input === 'bigint') {
16749
    received = String(input);
16750
    if (input > Math.pow(BigInt(2), BigInt(32)) || input < -Math.pow(BigInt(2), BigInt(32))) {
16751
      received = addNumericalSeparator(received);
16752
    }
16753
    received += 'n';
16754
  }
16755
  msg += " It must be " + range + ". Received " + received;
16756
  return msg;
16757
}, RangeError);
16758
function addNumericalSeparator(val) {
16759
  var res = '';
16760
  var i = val.length;
16761
  var start = val[0] === '-' ? 1 : 0;
16762
  for (; i >= start + 4; i -= 3) {
16763
    res = "_" + val.slice(i - 3, i) + res;
16764
  }
16765
  return "" + val.slice(0, i) + res;
16766
}
16767
16768
// CHECK FUNCTIONS
16769
// ===============
16770
16771
function checkBounds(buf, offset, byteLength) {
16772
  validateNumber(offset, 'offset');
16773
  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {
16774
    boundsError(offset, buf.length - (byteLength + 1));
16775
  }
16776
}
16777
function checkIntBI(value, min, max, buf, offset, byteLength) {
16778
  if (value > max || value < min) {
16779
    var n = typeof min === 'bigint' ? 'n' : '';
16780
    var range;
16781
    if (byteLength > 3) {
16782
      if (min === 0 || min === BigInt(0)) {
16783
        range = ">= 0" + n + " and < 2" + n + " ** " + (byteLength + 1) * 8 + n;
16784
      } else {
16785
        range = ">= -(2" + n + " ** " + ((byteLength + 1) * 8 - 1) + n + ") and < 2 ** " + ("" + ((byteLength + 1) * 8 - 1) + n);
16786
      }
16787
    } else {
16788
      range = ">= " + min + n + " and <= " + max + n;
16789
    }
16790
    throw new errors.ERR_OUT_OF_RANGE('value', range, value);
16791
  }
16792
  checkBounds(buf, offset, byteLength);
16793
}
16794
function validateNumber(value, name) {
16795
  if (typeof value !== 'number') {
16796
    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value);
16797
  }
16798
}
16799
function boundsError(value, length, type) {
16800
  if (Math.floor(value) !== value) {
16801
    validateNumber(value, type);
16802
    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value);
16803
  }
16804
  if (length < 0) {
16805
    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();
16806
  }
16807
  throw new errors.ERR_OUT_OF_RANGE(type || 'offset', ">= " + (type ? 1 : 0) + " and <= " + length, value);
16808
}
16809
16810
// HELPER FUNCTIONS
16811
// ================
16812
16813
var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;
16814
function base64clean(str) {
16815
  // Node takes equal signs as end of the Base64 encoding
16816
  str = str.split('=')[0];
16817
  // Node strips out invalid characters like \n and \t from the string, base64-js does not
16818
  str = str.trim().replace(INVALID_BASE64_RE, '');
16819
  // Node converts strings with length < 2 to ''
16820
  if (str.length < 2) return '';
16821
  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
16822
  while (str.length % 4 !== 0) {
16823
    str = str + '=';
16824
  }
16825
  return str;
16826
}
16827
function utf8ToBytes(string, units) {
16828
  units = units || Infinity;
16829
  var codePoint;
16830
  var length = string.length;
16831
  var leadSurrogate = null;
16832
  var bytes = [];
16833
  for (var i = 0; i < length; ++i) {
16834
    codePoint = string.charCodeAt(i);
16835
16836
    // is surrogate component
16837
    if (codePoint > 0xD7FF && codePoint < 0xE000) {
16838
      // last char was a lead
16839
      if (!leadSurrogate) {
16840
        // no lead yet
16841
        if (codePoint > 0xDBFF) {
16842
          // unexpected trail
16843
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
16844
          continue;
16845
        } else if (i + 1 === length) {
16846
          // unpaired lead
16847
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
16848
          continue;
16849
        }
16850
16851
        // valid lead
16852
        leadSurrogate = codePoint;
16853
        continue;
16854
      }
16855
16856
      // 2 leads in a row
16857
      if (codePoint < 0xDC00) {
16858
        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
16859
        leadSurrogate = codePoint;
16860
        continue;
16861
      }
16862
16863
      // valid surrogate pair
16864
      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
16865
    } else if (leadSurrogate) {
16866
      // valid bmp char, but last char was a lead
16867
      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
16868
    }
16869
    leadSurrogate = null;
16870
16871
    // encode utf8
16872
    if (codePoint < 0x80) {
16873
      if ((units -= 1) < 0) break;
16874
      bytes.push(codePoint);
16875
    } else if (codePoint < 0x800) {
16876
      if ((units -= 2) < 0) break;
16877
      bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);
16878
    } else if (codePoint < 0x10000) {
16879
      if ((units -= 3) < 0) break;
16880
      bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
16881
    } else if (codePoint < 0x110000) {
16882
      if ((units -= 4) < 0) break;
16883
      bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
16884
    } else {
16885
      throw new Error('Invalid code point');
16886
    }
16887
  }
16888
  return bytes;
16889
}
16890
function asciiToBytes(str) {
16891
  var byteArray = [];
16892
  for (var i = 0; i < str.length; ++i) {
16893
    // Node's code seems to be doing this and not & 0x7F..
16894
    byteArray.push(str.charCodeAt(i) & 0xFF);
16895
  }
16896
  return byteArray;
16897
}
16898
function utf16leToBytes(str, units) {
16899
  var c, hi, lo;
16900
  var byteArray = [];
16901
  for (var i = 0; i < str.length; ++i) {
16902
    if ((units -= 2) < 0) break;
16903
    c = str.charCodeAt(i);
16904
    hi = c >> 8;
16905
    lo = c % 256;
16906
    byteArray.push(lo);
16907
    byteArray.push(hi);
16908
  }
16909
  return byteArray;
16910
}
16911
function base64ToBytes(str) {
16912
  return base64.toByteArray(base64clean(str));
16913
}
16914
function blitBuffer(src, dst, offset, length) {
16915
  var i;
16916
  for (i = 0; i < length; ++i) {
16917
    if (i + offset >= dst.length || i >= src.length) break;
16918
    dst[i + offset] = src[i];
16919
  }
16920
  return i;
16921
}
16922
16923
// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
16924
// the `instanceof` check but they should be treated as of that type.
16925
// See: https://github.com/feross/buffer/issues/166
16926
function isInstance(obj, type) {
16927
  return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;
16928
}
16929
function numberIsNaN(obj) {
16930
  // For IE11 support
16931
  return obj !== obj; // eslint-disable-line no-self-compare
16932
}
16933
16934
// Create lookup table for `toString('hex')`
16935
// See: https://github.com/feross/buffer/issues/219
16936
var hexSliceLookupTable = function () {
16937
  var alphabet = '0123456789abcdef';
16938
  var table = new Array(256);
16939
  for (var i = 0; i < 16; ++i) {
16940
    var i16 = i * 16;
16941
    for (var j = 0; j < 16; ++j) {
16942
      table[i16 + j] = alphabet[i] + alphabet[j];
16943
    }
16944
  }
16945
  return table;
16946
}();
16947
16948
// Return not function with Error if BigInt not supported
16949
function defineBigIntMethod(fn) {
16950
  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn;
16951
}
16952
function BufferBigIntNotDefined() {
16953
  throw new Error('BigInt not supported');
16954
}
16955
16956
/***/ }),
16957
16958
/***/ 477:
16959
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
16960
16961
"use strict";
16962
16963
16964
__webpack_require__(7803);
16965
__webpack_require__(1539);
16966
// eslint-disable-next-line es/no-typed-arrays -- safe
16967
module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
16968
16969
/***/ }),
16970
16971
/***/ 2094:
16972
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
16973
16974
"use strict";
16975
16976
16977
var NATIVE_ARRAY_BUFFER = __webpack_require__(477);
16978
var DESCRIPTORS = __webpack_require__(9781);
16979
var global = __webpack_require__(7854);
16980
var isCallable = __webpack_require__(614);
16981
var isObject = __webpack_require__(111);
16982
var hasOwn = __webpack_require__(2597);
16983
var classof = __webpack_require__(648);
16984
var tryToString = __webpack_require__(6330);
16985
var createNonEnumerableProperty = __webpack_require__(8880);
16986
var redefine = __webpack_require__(1320);
16987
var defineProperty = (__webpack_require__(3070).f);
16988
var isPrototypeOf = __webpack_require__(7976);
16989
var getPrototypeOf = __webpack_require__(9518);
16990
var setPrototypeOf = __webpack_require__(7674);
16991
var wellKnownSymbol = __webpack_require__(5112);
16992
var uid = __webpack_require__(9711);
16993
var Int8Array = global.Int8Array;
16994
var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
16995
var Uint8ClampedArray = global.Uint8ClampedArray;
16996
var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
16997
var TypedArray = Int8Array && getPrototypeOf(Int8Array);
16998
var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);
16999
var ObjectPrototype = Object.prototype;
17000
var TypeError = global.TypeError;
17001
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
17002
var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
17003
var TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');
17004
// Fixing native typed arrays in Opera Presto crashes the browser, see #595
17005
var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';
17006
var TYPED_ARRAY_TAG_REQIRED = false;
17007
var NAME, Constructor, Prototype;
17008
var TypedArrayConstructorsList = {
17009
  Int8Array: 1,
17010
  Uint8Array: 1,
17011
  Uint8ClampedArray: 1,
17012
  Int16Array: 2,
17013
  Uint16Array: 2,
17014
  Int32Array: 4,
17015
  Uint32Array: 4,
17016
  Float32Array: 4,
17017
  Float64Array: 8
17018
};
17019
var BigIntArrayConstructorsList = {
17020
  BigInt64Array: 8,
17021
  BigUint64Array: 8
17022
};
17023
var isView = function isView(it) {
17024
  if (!isObject(it)) return false;
17025
  var klass = classof(it);
17026
  return klass === 'DataView' || hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);
17027
};
17028
var isTypedArray = function isTypedArray(it) {
17029
  if (!isObject(it)) return false;
17030
  var klass = classof(it);
17031
  return hasOwn(TypedArrayConstructorsList, klass) || hasOwn(BigIntArrayConstructorsList, klass);
17032
};
17033
var aTypedArray = function aTypedArray(it) {
17034
  if (isTypedArray(it)) return it;
17035
  throw TypeError('Target is not a typed array');
17036
};
17037
var aTypedArrayConstructor = function aTypedArrayConstructor(C) {
17038
  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;
17039
  throw TypeError(tryToString(C) + ' is not a typed array constructor');
17040
};
17041
var exportTypedArrayMethod = function exportTypedArrayMethod(KEY, property, forced) {
17042
  if (!DESCRIPTORS) return;
17043
  if (forced) for (var ARRAY in TypedArrayConstructorsList) {
17044
    var TypedArrayConstructor = global[ARRAY];
17045
    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {
17046
      delete TypedArrayConstructor.prototype[KEY];
17047
    } catch (error) {/* empty */}
17048
  }
17049
  if (!TypedArrayPrototype[KEY] || forced) {
17050
    redefine(TypedArrayPrototype, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);
17051
  }
17052
};
17053
var exportTypedArrayStaticMethod = function exportTypedArrayStaticMethod(KEY, property, forced) {
17054
  var ARRAY, TypedArrayConstructor;
17055
  if (!DESCRIPTORS) return;
17056
  if (setPrototypeOf) {
17057
    if (forced) for (ARRAY in TypedArrayConstructorsList) {
17058
      TypedArrayConstructor = global[ARRAY];
17059
      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {
17060
        delete TypedArrayConstructor[KEY];
17061
      } catch (error) {/* empty */}
17062
    }
17063
    if (!TypedArray[KEY] || forced) {
17064
      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
17065
      try {
17066
        return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
17067
      } catch (error) {/* empty */}
17068
    } else return;
17069
  }
17070
  for (ARRAY in TypedArrayConstructorsList) {
17071
    TypedArrayConstructor = global[ARRAY];
17072
    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
17073
      redefine(TypedArrayConstructor, KEY, property);
17074
    }
17075
  }
17076
};
17077
for (NAME in TypedArrayConstructorsList) {
17078
  Constructor = global[NAME];
17079
  Prototype = Constructor && Constructor.prototype;
17080
  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);else NATIVE_ARRAY_BUFFER_VIEWS = false;
17081
}
17082
for (NAME in BigIntArrayConstructorsList) {
17083
  Constructor = global[NAME];
17084
  Prototype = Constructor && Constructor.prototype;
17085
  if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);
17086
}
17087
17088
// WebKit bug - typed arrays constructors prototype is Object.prototype
17089
if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {
17090
  // eslint-disable-next-line no-shadow -- safe
17091
  TypedArray = function TypedArray() {
17092
    throw TypeError('Incorrect invocation');
17093
  };
17094
  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
17095
    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);
17096
  }
17097
}
17098
if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {
17099
  TypedArrayPrototype = TypedArray.prototype;
17100
  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
17101
    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);
17102
  }
17103
}
17104
17105
// WebKit bug - one more object in Uint8ClampedArray prototype chain
17106
if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
17107
  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
17108
}
17109
if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
17110
  TYPED_ARRAY_TAG_REQIRED = true;
17111
  defineProperty(TypedArrayPrototype, TO_STRING_TAG, {
17112
    get: function get() {
17113
      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
17114
    }
17115
  });
17116
  for (NAME in TypedArrayConstructorsList) {
17117
    if (global[NAME]) {
17118
      createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);
17119
    }
17120
  }
17121
}
17122
module.exports = {
17123
  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
17124
  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,
17125
  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,
17126
  aTypedArray: aTypedArray,
17127
  aTypedArrayConstructor: aTypedArrayConstructor,
17128
  exportTypedArrayMethod: exportTypedArrayMethod,
17129
  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,
17130
  isView: isView,
17131
  isTypedArray: isTypedArray,
17132
  TypedArray: TypedArray,
17133
  TypedArrayPrototype: TypedArrayPrototype
17134
};
17135
17136
/***/ }),
17137
17138
/***/ 2091:
17139
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
17140
17141
"use strict";
17142
17143
17144
__webpack_require__(8309);
17145
var global = __webpack_require__(7854);
17146
var uncurryThis = __webpack_require__(1702);
17147
var DESCRIPTORS = __webpack_require__(9781);
17148
var NATIVE_ARRAY_BUFFER = __webpack_require__(477);
17149
var FunctionName = __webpack_require__(6530);
17150
var createNonEnumerableProperty = __webpack_require__(8880);
17151
var redefineAll = __webpack_require__(2248);
17152
var fails = __webpack_require__(7293);
17153
var anInstance = __webpack_require__(5787);
17154
var toIntegerOrInfinity = __webpack_require__(9303);
17155
var toLength = __webpack_require__(7466);
17156
var toIndex = __webpack_require__(7067);
17157
var IEEE754 = __webpack_require__(1179);
17158
var getPrototypeOf = __webpack_require__(9518);
17159
var setPrototypeOf = __webpack_require__(7674);
17160
var getOwnPropertyNames = (__webpack_require__(8006).f);
17161
var defineProperty = (__webpack_require__(3070).f);
17162
var arrayFill = __webpack_require__(1285);
17163
var arraySlice = __webpack_require__(206);
17164
var setToStringTag = __webpack_require__(8003);
17165
var InternalStateModule = __webpack_require__(9909);
17166
var PROPER_FUNCTION_NAME = FunctionName.PROPER;
17167
var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
17168
var getInternalState = InternalStateModule.get;
17169
var setInternalState = InternalStateModule.set;
17170
var ARRAY_BUFFER = 'ArrayBuffer';
17171
var DATA_VIEW = 'DataView';
17172
var PROTOTYPE = 'prototype';
17173
var WRONG_LENGTH = 'Wrong length';
17174
var WRONG_INDEX = 'Wrong index';
17175
var NativeArrayBuffer = global[ARRAY_BUFFER];
17176
var $ArrayBuffer = NativeArrayBuffer;
17177
var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];
17178
var $DataView = global[DATA_VIEW];
17179
var DataViewPrototype = $DataView && $DataView[PROTOTYPE];
17180
var ObjectPrototype = Object.prototype;
17181
var Array = global.Array;
17182
var RangeError = global.RangeError;
17183
var fill = uncurryThis(arrayFill);
17184
var reverse = uncurryThis([].reverse);
17185
var packIEEE754 = IEEE754.pack;
17186
var unpackIEEE754 = IEEE754.unpack;
17187
var packInt8 = function packInt8(number) {
17188
  return [number & 0xFF];
17189
};
17190
var packInt16 = function packInt16(number) {
17191
  return [number & 0xFF, number >> 8 & 0xFF];
17192
};
17193
var packInt32 = function packInt32(number) {
17194
  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];
17195
};
17196
var unpackInt32 = function unpackInt32(buffer) {
17197
  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];
17198
};
17199
var packFloat32 = function packFloat32(number) {
17200
  return packIEEE754(number, 23, 4);
17201
};
17202
var packFloat64 = function packFloat64(number) {
17203
  return packIEEE754(number, 52, 8);
17204
};
17205
var addGetter = function addGetter(Constructor, key) {
17206
  defineProperty(Constructor[PROTOTYPE], key, {
17207
    get: function get() {
17208
      return getInternalState(this)[key];
17209
    }
17210
  });
17211
};
17212
var get = function get(view, count, index, isLittleEndian) {
17213
  var intIndex = toIndex(index);
17214
  var store = getInternalState(view);
17215
  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);
17216
  var bytes = getInternalState(store.buffer).bytes;
17217
  var start = intIndex + store.byteOffset;
17218
  var pack = arraySlice(bytes, start, start + count);
17219
  return isLittleEndian ? pack : reverse(pack);
17220
};
17221
var set = function set(view, count, index, conversion, value, isLittleEndian) {
17222
  var intIndex = toIndex(index);
17223
  var store = getInternalState(view);
17224
  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);
17225
  var bytes = getInternalState(store.buffer).bytes;
17226
  var start = intIndex + store.byteOffset;
17227
  var pack = conversion(+value);
17228
  for (var i = 0; i < count; i++) {
17229
    bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];
17230
  }
17231
};
17232
if (!NATIVE_ARRAY_BUFFER) {
17233
  $ArrayBuffer = function ArrayBuffer(length) {
17234
    anInstance(this, ArrayBufferPrototype);
17235
    var byteLength = toIndex(length);
17236
    setInternalState(this, {
17237
      bytes: fill(Array(byteLength), 0),
17238
      byteLength: byteLength
17239
    });
17240
    if (!DESCRIPTORS) this.byteLength = byteLength;
17241
  };
17242
  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];
17243
  $DataView = function DataView(buffer, byteOffset, byteLength) {
17244
    anInstance(this, DataViewPrototype);
17245
    anInstance(buffer, ArrayBufferPrototype);
17246
    var bufferLength = getInternalState(buffer).byteLength;
17247
    var offset = toIntegerOrInfinity(byteOffset);
17248
    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');
17249
    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
17250
    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
17251
    setInternalState(this, {
17252
      buffer: buffer,
17253
      byteLength: byteLength,
17254
      byteOffset: offset
17255
    });
17256
    if (!DESCRIPTORS) {
17257
      this.buffer = buffer;
17258
      this.byteLength = byteLength;
17259
      this.byteOffset = offset;
17260
    }
17261
  };
17262
  DataViewPrototype = $DataView[PROTOTYPE];
17263
  if (DESCRIPTORS) {
17264
    addGetter($ArrayBuffer, 'byteLength');
17265
    addGetter($DataView, 'buffer');
17266
    addGetter($DataView, 'byteLength');
17267
    addGetter($DataView, 'byteOffset');
17268
  }
17269
  redefineAll(DataViewPrototype, {
17270
    getInt8: function getInt8(byteOffset) {
17271
      return get(this, 1, byteOffset)[0] << 24 >> 24;
17272
    },
17273
    getUint8: function getUint8(byteOffset) {
17274
      return get(this, 1, byteOffset)[0];
17275
    },
17276
    getInt16: function getInt16(byteOffset /* , littleEndian */) {
17277
      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
17278
      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
17279
    },
17280
    getUint16: function getUint16(byteOffset /* , littleEndian */) {
17281
      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
17282
      return bytes[1] << 8 | bytes[0];
17283
    },
17284
    getInt32: function getInt32(byteOffset /* , littleEndian */) {
17285
      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));
17286
    },
17287
    getUint32: function getUint32(byteOffset /* , littleEndian */) {
17288
      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;
17289
    },
17290
    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
17291
      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);
17292
    },
17293
    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
17294
      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);
17295
    },
17296
    setInt8: function setInt8(byteOffset, value) {
17297
      set(this, 1, byteOffset, packInt8, value);
17298
    },
17299
    setUint8: function setUint8(byteOffset, value) {
17300
      set(this, 1, byteOffset, packInt8, value);
17301
    },
17302
    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
17303
      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
17304
    },
17305
    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
17306
      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
17307
    },
17308
    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
17309
      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
17310
    },
17311
    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
17312
      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
17313
    },
17314
    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
17315
      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);
17316
    },
17317
    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
17318
      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);
17319
    }
17320
  });
17321
} else {
17322
  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;
17323
  /* eslint-disable no-new -- required for testing */
17324
  if (!fails(function () {
17325
    NativeArrayBuffer(1);
17326
  }) || !fails(function () {
17327
    new NativeArrayBuffer(-1);
17328
  }) || fails(function () {
17329
    new NativeArrayBuffer();
17330
    new NativeArrayBuffer(1.5);
17331
    new NativeArrayBuffer(NaN);
17332
    return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
17333
  })) {
17334
    /* eslint-enable no-new -- required for testing */
17335
    $ArrayBuffer = function ArrayBuffer(length) {
17336
      anInstance(this, ArrayBufferPrototype);
17337
      return new NativeArrayBuffer(toIndex(length));
17338
    };
17339
    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;
17340
    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {
17341
      if (!((key = keys[j++]) in $ArrayBuffer)) {
17342
        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);
17343
      }
17344
    }
17345
    ArrayBufferPrototype.constructor = $ArrayBuffer;
17346
  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {
17347
    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);
17348
  }
17349
17350
  // WebKit bug - the same parent prototype for typed arrays and data view
17351
  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {
17352
    setPrototypeOf(DataViewPrototype, ObjectPrototype);
17353
  }
17354
17355
  // iOS Safari 7.x bug
17356
  var testView = new $DataView(new $ArrayBuffer(2));
17357
  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);
17358
  testView.setInt8(0, 2147483648);
17359
  testView.setInt8(1, 2147483649);
17360
  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll(DataViewPrototype, {
17361
    setInt8: function setInt8(byteOffset, value) {
17362
      $setInt8(this, byteOffset, value << 24 >> 24);
17363
    },
17364
    setUint8: function setUint8(byteOffset, value) {
17365
      $setInt8(this, byteOffset, value << 24 >> 24);
17366
    }
17367
  }, {
17368
    unsafe: true
17369
  });
17370
}
17371
setToStringTag($ArrayBuffer, ARRAY_BUFFER);
17372
setToStringTag($DataView, DATA_VIEW);
17373
module.exports = {
17374
  ArrayBuffer: $ArrayBuffer,
17375
  DataView: $DataView
17376
};
17377
17378
/***/ }),
17379
17380
/***/ 7803:
17381
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17382
17383
"use strict";
17384
17385
17386
var $ = __webpack_require__(2109);
17387
var global = __webpack_require__(7854);
17388
var arrayBufferModule = __webpack_require__(2091);
17389
var setSpecies = __webpack_require__(6340);
17390
var ARRAY_BUFFER = 'ArrayBuffer';
17391
var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];
17392
var NativeArrayBuffer = global[ARRAY_BUFFER];
17393
17394
// `ArrayBuffer` constructor
17395
// https://tc39.es/ecma262/#sec-arraybuffer-constructor
17396
$({
17397
  global: true,
17398
  forced: NativeArrayBuffer !== ArrayBuffer
17399
}, {
17400
  ArrayBuffer: ArrayBuffer
17401
});
17402
setSpecies(ARRAY_BUFFER);
17403
17404
/***/ }),
17405
17406
/***/ 194:
17407
/***/ (function(module, exports, __webpack_require__) {
17408
17409
"use strict";
17410
17411
17412
;
17413
(function (root, factory, undef) {
17414
  if (true) {
17415
    // CommonJS
17416
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(7508), __webpack_require__(3440), __webpack_require__(3839), __webpack_require__(1582));
17417
  } else {}
17418
})(void 0, function (CryptoJS) {
17419
  (function () {
17420
    // Shortcuts
17421
    var C = CryptoJS;
17422
    var C_lib = C.lib;
17423
    var BlockCipher = C_lib.BlockCipher;
17424
    var C_algo = C.algo;
17425
17426
    // Lookup tables
17427
    var SBOX = [];
17428
    var INV_SBOX = [];
17429
    var SUB_MIX_0 = [];
17430
    var SUB_MIX_1 = [];
17431
    var SUB_MIX_2 = [];
17432
    var SUB_MIX_3 = [];
17433
    var INV_SUB_MIX_0 = [];
17434
    var INV_SUB_MIX_1 = [];
17435
    var INV_SUB_MIX_2 = [];
17436
    var INV_SUB_MIX_3 = [];
17437
17438
    // Compute lookup tables
17439
    (function () {
17440
      // Compute double table
17441
      var d = [];
17442
      for (var i = 0; i < 256; i++) {
17443
        if (i < 128) {
17444
          d[i] = i << 1;
17445
        } else {
17446
          d[i] = i << 1 ^ 0x11b;
17447
        }
17448
      }
17449
17450
      // Walk GF(2^8)
17451
      var x = 0;
17452
      var xi = 0;
17453
      for (var i = 0; i < 256; i++) {
17454
        // Compute sbox
17455
        var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
17456
        sx = sx >>> 8 ^ sx & 0xff ^ 0x63;
17457
        SBOX[x] = sx;
17458
        INV_SBOX[sx] = x;
17459
17460
        // Compute multiplication
17461
        var x2 = d[x];
17462
        var x4 = d[x2];
17463
        var x8 = d[x4];
17464
17465
        // Compute sub bytes, mix columns tables
17466
        var t = d[sx] * 0x101 ^ sx * 0x1010100;
17467
        SUB_MIX_0[x] = t << 24 | t >>> 8;
17468
        SUB_MIX_1[x] = t << 16 | t >>> 16;
17469
        SUB_MIX_2[x] = t << 8 | t >>> 24;
17470
        SUB_MIX_3[x] = t;
17471
17472
        // Compute inv sub bytes, inv mix columns tables
17473
        var t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;
17474
        INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;
17475
        INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;
17476
        INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;
17477
        INV_SUB_MIX_3[sx] = t;
17478
17479
        // Compute next counter
17480
        if (!x) {
17481
          x = xi = 1;
17482
        } else {
17483
          x = x2 ^ d[d[d[x8 ^ x2]]];
17484
          xi ^= d[d[xi]];
17485
        }
17486
      }
17487
    })();
17488
17489
    // Precomputed Rcon lookup
17490
    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
17491
17492
    /**
17493
     * AES block cipher algorithm.
17494
     */
17495
    var AES = C_algo.AES = BlockCipher.extend({
17496
      _doReset: function _doReset() {
17497
        var t;
17498
17499
        // Skip reset of nRounds has been set before and key did not change
17500
        if (this._nRounds && this._keyPriorReset === this._key) {
17501
          return;
17502
        }
17503
17504
        // Shortcuts
17505
        var key = this._keyPriorReset = this._key;
17506
        var keyWords = key.words;
17507
        var keySize = key.sigBytes / 4;
17508
17509
        // Compute number of rounds
17510
        var nRounds = this._nRounds = keySize + 6;
17511
17512
        // Compute number of key schedule rows
17513
        var ksRows = (nRounds + 1) * 4;
17514
17515
        // Compute key schedule
17516
        var keySchedule = this._keySchedule = [];
17517
        for (var ksRow = 0; ksRow < ksRows; ksRow++) {
17518
          if (ksRow < keySize) {
17519
            keySchedule[ksRow] = keyWords[ksRow];
17520
          } else {
17521
            t = keySchedule[ksRow - 1];
17522
            if (!(ksRow % keySize)) {
17523
              // Rot word
17524
              t = t << 8 | t >>> 24;
17525
17526
              // Sub word
17527
              t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff];
17528
17529
              // Mix Rcon
17530
              t ^= RCON[ksRow / keySize | 0] << 24;
17531
            } else if (keySize > 6 && ksRow % keySize == 4) {
17532
              // Sub word
17533
              t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff];
17534
            }
17535
            keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
17536
          }
17537
        }
17538
17539
        // Compute inv key schedule
17540
        var invKeySchedule = this._invKeySchedule = [];
17541
        for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
17542
          var ksRow = ksRows - invKsRow;
17543
          if (invKsRow % 4) {
17544
            var t = keySchedule[ksRow];
17545
          } else {
17546
            var t = keySchedule[ksRow - 4];
17547
          }
17548
          if (invKsRow < 4 || ksRow <= 4) {
17549
            invKeySchedule[invKsRow] = t;
17550
          } else {
17551
            invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 0xff]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
17552
          }
17553
        }
17554
      },
17555
      encryptBlock: function encryptBlock(M, offset) {
17556
        this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
17557
      },
17558
      decryptBlock: function decryptBlock(M, offset) {
17559
        // Swap 2nd and 4th rows
17560
        var t = M[offset + 1];
17561
        M[offset + 1] = M[offset + 3];
17562
        M[offset + 3] = t;
17563
        this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
17564
17565
        // Inv swap 2nd and 4th rows
17566
        var t = M[offset + 1];
17567
        M[offset + 1] = M[offset + 3];
17568
        M[offset + 3] = t;
17569
      },
17570
      _doCryptBlock: function _doCryptBlock(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
17571
        // Shortcut
17572
        var nRounds = this._nRounds;
17573
17574
        // Get input, add round key
17575
        var s0 = M[offset] ^ keySchedule[0];
17576
        var s1 = M[offset + 1] ^ keySchedule[1];
17577
        var s2 = M[offset + 2] ^ keySchedule[2];
17578
        var s3 = M[offset + 3] ^ keySchedule[3];
17579
17580
        // Key schedule row counter
17581
        var ksRow = 4;
17582
17583
        // Rounds
17584
        for (var round = 1; round < nRounds; round++) {
17585
          // Shift rows, sub bytes, mix columns, add round key
17586
          var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[s1 >>> 16 & 0xff] ^ SUB_MIX_2[s2 >>> 8 & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];
17587
          var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[s2 >>> 16 & 0xff] ^ SUB_MIX_2[s3 >>> 8 & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];
17588
          var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[s3 >>> 16 & 0xff] ^ SUB_MIX_2[s0 >>> 8 & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];
17589
          var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[s0 >>> 16 & 0xff] ^ SUB_MIX_2[s1 >>> 8 & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];
17590
17591
          // Update state
17592
          s0 = t0;
17593
          s1 = t1;
17594
          s2 = t2;
17595
          s3 = t3;
17596
        }
17597
17598
        // Shift rows, sub bytes, add round key
17599
        var t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];
17600
        var t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];
17601
        var t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];
17602
        var t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
17603
17604
        // Set output
17605
        M[offset] = t0;
17606
        M[offset + 1] = t1;
17607
        M[offset + 2] = t2;
17608
        M[offset + 3] = t3;
17609
      },
17610
      keySize: 256 / 32
17611
    });
17612
17613
    /**
17614
     * Shortcut functions to the cipher's object interface.
17615
     *
17616
     * @example
17617
     *
17618
     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
17619
     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);
17620
     */
17621
    C.AES = BlockCipher._createHelper(AES);
17622
  })();
17623
  return CryptoJS.AES;
17624
});
17625
17626
/***/ }),
17627
17628
/***/ 1582:
17629
/***/ (function(module, exports, __webpack_require__) {
17630
17631
"use strict";
17632
17633
17634
__webpack_require__(7042);
17635
__webpack_require__(2222);
17636
__webpack_require__(1539);
17637
__webpack_require__(9714);
17638
__webpack_require__(561);
17639
;
17640
(function (root, factory, undef) {
17641
  if (true) {
17642
    // CommonJS
17643
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(3839));
17644
  } else {}
17645
})(void 0, function (CryptoJS) {
17646
  /**
17647
   * Cipher core components.
17648
   */
17649
  CryptoJS.lib.Cipher || function (undefined) {
17650
    // Shortcuts
17651
    var C = CryptoJS;
17652
    var C_lib = C.lib;
17653
    var Base = C_lib.Base;
17654
    var WordArray = C_lib.WordArray;
17655
    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
17656
    var C_enc = C.enc;
17657
    var Utf8 = C_enc.Utf8;
17658
    var Base64 = C_enc.Base64;
17659
    var C_algo = C.algo;
17660
    var EvpKDF = C_algo.EvpKDF;
17661
17662
    /**
17663
     * Abstract base cipher template.
17664
     *
17665
     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)
17666
     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)
17667
     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
17668
     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
17669
     */
17670
    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
17671
      /**
17672
       * Configuration options.
17673
       *
17674
       * @property {WordArray} iv The IV to use for this operation.
17675
       */
17676
      cfg: Base.extend(),
17677
      /**
17678
       * Creates this cipher in encryption mode.
17679
       *
17680
       * @param {WordArray} key The key.
17681
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
17682
       *
17683
       * @return {Cipher} A cipher instance.
17684
       *
17685
       * @static
17686
       *
17687
       * @example
17688
       *
17689
       *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
17690
       */
17691
      createEncryptor: function createEncryptor(key, cfg) {
17692
        return this.create(this._ENC_XFORM_MODE, key, cfg);
17693
      },
17694
      /**
17695
       * Creates this cipher in decryption mode.
17696
       *
17697
       * @param {WordArray} key The key.
17698
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
17699
       *
17700
       * @return {Cipher} A cipher instance.
17701
       *
17702
       * @static
17703
       *
17704
       * @example
17705
       *
17706
       *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
17707
       */
17708
      createDecryptor: function createDecryptor(key, cfg) {
17709
        return this.create(this._DEC_XFORM_MODE, key, cfg);
17710
      },
17711
      /**
17712
       * Initializes a newly created cipher.
17713
       *
17714
       * @param {number} xformMode Either the encryption or decryption transormation mode constant.
17715
       * @param {WordArray} key The key.
17716
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
17717
       *
17718
       * @example
17719
       *
17720
       *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
17721
       */
17722
      init: function init(xformMode, key, cfg) {
17723
        // Apply config defaults
17724
        this.cfg = this.cfg.extend(cfg);
17725
17726
        // Store transform mode and key
17727
        this._xformMode = xformMode;
17728
        this._key = key;
17729
17730
        // Set initial values
17731
        this.reset();
17732
      },
17733
      /**
17734
       * Resets this cipher to its initial state.
17735
       *
17736
       * @example
17737
       *
17738
       *     cipher.reset();
17739
       */
17740
      reset: function reset() {
17741
        // Reset data buffer
17742
        BufferedBlockAlgorithm.reset.call(this);
17743
17744
        // Perform concrete-cipher logic
17745
        this._doReset();
17746
      },
17747
      /**
17748
       * Adds data to be encrypted or decrypted.
17749
       *
17750
       * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
17751
       *
17752
       * @return {WordArray} The data after processing.
17753
       *
17754
       * @example
17755
       *
17756
       *     var encrypted = cipher.process('data');
17757
       *     var encrypted = cipher.process(wordArray);
17758
       */
17759
      process: function process(dataUpdate) {
17760
        // Append
17761
        this._append(dataUpdate);
17762
17763
        // Process available blocks
17764
        return this._process();
17765
      },
17766
      /**
17767
       * Finalizes the encryption or decryption process.
17768
       * Note that the finalize operation is effectively a destructive, read-once operation.
17769
       *
17770
       * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
17771
       *
17772
       * @return {WordArray} The data after final processing.
17773
       *
17774
       * @example
17775
       *
17776
       *     var encrypted = cipher.finalize();
17777
       *     var encrypted = cipher.finalize('data');
17778
       *     var encrypted = cipher.finalize(wordArray);
17779
       */
17780
      finalize: function finalize(dataUpdate) {
17781
        // Final data update
17782
        if (dataUpdate) {
17783
          this._append(dataUpdate);
17784
        }
17785
17786
        // Perform concrete-cipher logic
17787
        var finalProcessedData = this._doFinalize();
17788
        return finalProcessedData;
17789
      },
17790
      keySize: 128 / 32,
17791
      ivSize: 128 / 32,
17792
      _ENC_XFORM_MODE: 1,
17793
      _DEC_XFORM_MODE: 2,
17794
      /**
17795
       * Creates shortcut functions to a cipher's object interface.
17796
       *
17797
       * @param {Cipher} cipher The cipher to create a helper for.
17798
       *
17799
       * @return {Object} An object with encrypt and decrypt shortcut functions.
17800
       *
17801
       * @static
17802
       *
17803
       * @example
17804
       *
17805
       *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
17806
       */
17807
      _createHelper: function () {
17808
        function selectCipherStrategy(key) {
17809
          if (typeof key == 'string') {
17810
            return PasswordBasedCipher;
17811
          } else {
17812
            return SerializableCipher;
17813
          }
17814
        }
17815
        return function (cipher) {
17816
          return {
17817
            encrypt: function encrypt(message, key, cfg) {
17818
              return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
17819
            },
17820
            decrypt: function decrypt(ciphertext, key, cfg) {
17821
              return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
17822
            }
17823
          };
17824
        };
17825
      }()
17826
    });
17827
17828
    /**
17829
     * Abstract base stream cipher template.
17830
     *
17831
     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)
17832
     */
17833
    var StreamCipher = C_lib.StreamCipher = Cipher.extend({
17834
      _doFinalize: function _doFinalize() {
17835
        // Process partial blocks
17836
        var finalProcessedBlocks = this._process(!!'flush');
17837
        return finalProcessedBlocks;
17838
      },
17839
      blockSize: 1
17840
    });
17841
17842
    /**
17843
     * Mode namespace.
17844
     */
17845
    var C_mode = C.mode = {};
17846
17847
    /**
17848
     * Abstract base block cipher mode template.
17849
     */
17850
    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
17851
      /**
17852
       * Creates this mode for encryption.
17853
       *
17854
       * @param {Cipher} cipher A block cipher instance.
17855
       * @param {Array} iv The IV words.
17856
       *
17857
       * @static
17858
       *
17859
       * @example
17860
       *
17861
       *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
17862
       */
17863
      createEncryptor: function createEncryptor(cipher, iv) {
17864
        return this.Encryptor.create(cipher, iv);
17865
      },
17866
      /**
17867
       * Creates this mode for decryption.
17868
       *
17869
       * @param {Cipher} cipher A block cipher instance.
17870
       * @param {Array} iv The IV words.
17871
       *
17872
       * @static
17873
       *
17874
       * @example
17875
       *
17876
       *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
17877
       */
17878
      createDecryptor: function createDecryptor(cipher, iv) {
17879
        return this.Decryptor.create(cipher, iv);
17880
      },
17881
      /**
17882
       * Initializes a newly created mode.
17883
       *
17884
       * @param {Cipher} cipher A block cipher instance.
17885
       * @param {Array} iv The IV words.
17886
       *
17887
       * @example
17888
       *
17889
       *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
17890
       */
17891
      init: function init(cipher, iv) {
17892
        this._cipher = cipher;
17893
        this._iv = iv;
17894
      }
17895
    });
17896
17897
    /**
17898
     * Cipher Block Chaining mode.
17899
     */
17900
    var CBC = C_mode.CBC = function () {
17901
      /**
17902
       * Abstract base CBC mode.
17903
       */
17904
      var CBC = BlockCipherMode.extend();
17905
17906
      /**
17907
       * CBC encryptor.
17908
       */
17909
      CBC.Encryptor = CBC.extend({
17910
        /**
17911
         * Processes the data block at offset.
17912
         *
17913
         * @param {Array} words The data words to operate on.
17914
         * @param {number} offset The offset where the block starts.
17915
         *
17916
         * @example
17917
         *
17918
         *     mode.processBlock(data.words, offset);
17919
         */
17920
        processBlock: function processBlock(words, offset) {
17921
          // Shortcuts
17922
          var cipher = this._cipher;
17923
          var blockSize = cipher.blockSize;
17924
17925
          // XOR and encrypt
17926
          xorBlock.call(this, words, offset, blockSize);
17927
          cipher.encryptBlock(words, offset);
17928
17929
          // Remember this block to use with next block
17930
          this._prevBlock = words.slice(offset, offset + blockSize);
17931
        }
17932
      });
17933
17934
      /**
17935
       * CBC decryptor.
17936
       */
17937
      CBC.Decryptor = CBC.extend({
17938
        /**
17939
         * Processes the data block at offset.
17940
         *
17941
         * @param {Array} words The data words to operate on.
17942
         * @param {number} offset The offset where the block starts.
17943
         *
17944
         * @example
17945
         *
17946
         *     mode.processBlock(data.words, offset);
17947
         */
17948
        processBlock: function processBlock(words, offset) {
17949
          // Shortcuts
17950
          var cipher = this._cipher;
17951
          var blockSize = cipher.blockSize;
17952
17953
          // Remember this block to use with next block
17954
          var thisBlock = words.slice(offset, offset + blockSize);
17955
17956
          // Decrypt and XOR
17957
          cipher.decryptBlock(words, offset);
17958
          xorBlock.call(this, words, offset, blockSize);
17959
17960
          // This block becomes the previous block
17961
          this._prevBlock = thisBlock;
17962
        }
17963
      });
17964
      function xorBlock(words, offset, blockSize) {
17965
        var block;
17966
17967
        // Shortcut
17968
        var iv = this._iv;
17969
17970
        // Choose mixing block
17971
        if (iv) {
17972
          block = iv;
17973
17974
          // Remove IV for subsequent blocks
17975
          this._iv = undefined;
17976
        } else {
17977
          block = this._prevBlock;
17978
        }
17979
17980
        // XOR blocks
17981
        for (var i = 0; i < blockSize; i++) {
17982
          words[offset + i] ^= block[i];
17983
        }
17984
      }
17985
      return CBC;
17986
    }();
17987
17988
    /**
17989
     * Padding namespace.
17990
     */
17991
    var C_pad = C.pad = {};
17992
17993
    /**
17994
     * PKCS #5/7 padding strategy.
17995
     */
17996
    var Pkcs7 = C_pad.Pkcs7 = {
17997
      /**
17998
       * Pads data using the algorithm defined in PKCS #5/7.
17999
       *
18000
       * @param {WordArray} data The data to pad.
18001
       * @param {number} blockSize The multiple that the data should be padded to.
18002
       *
18003
       * @static
18004
       *
18005
       * @example
18006
       *
18007
       *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);
18008
       */
18009
      pad: function pad(data, blockSize) {
18010
        // Shortcut
18011
        var blockSizeBytes = blockSize * 4;
18012
18013
        // Count padding bytes
18014
        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
18015
18016
        // Create padding word
18017
        var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;
18018
18019
        // Create padding
18020
        var paddingWords = [];
18021
        for (var i = 0; i < nPaddingBytes; i += 4) {
18022
          paddingWords.push(paddingWord);
18023
        }
18024
        var padding = WordArray.create(paddingWords, nPaddingBytes);
18025
18026
        // Add padding
18027
        data.concat(padding);
18028
      },
18029
      /**
18030
       * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
18031
       *
18032
       * @param {WordArray} data The data to unpad.
18033
       *
18034
       * @static
18035
       *
18036
       * @example
18037
       *
18038
       *     CryptoJS.pad.Pkcs7.unpad(wordArray);
18039
       */
18040
      unpad: function unpad(data) {
18041
        // Get number of padding bytes from last byte
18042
        var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff;
18043
18044
        // Remove padding
18045
        data.sigBytes -= nPaddingBytes;
18046
      }
18047
    };
18048
18049
    /**
18050
     * Abstract base block cipher template.
18051
     *
18052
     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)
18053
     */
18054
    var BlockCipher = C_lib.BlockCipher = Cipher.extend({
18055
      /**
18056
       * Configuration options.
18057
       *
18058
       * @property {Mode} mode The block mode to use. Default: CBC
18059
       * @property {Padding} padding The padding strategy to use. Default: Pkcs7
18060
       */
18061
      cfg: Cipher.cfg.extend({
18062
        mode: CBC,
18063
        padding: Pkcs7
18064
      }),
18065
      reset: function reset() {
18066
        var modeCreator;
18067
18068
        // Reset cipher
18069
        Cipher.reset.call(this);
18070
18071
        // Shortcuts
18072
        var cfg = this.cfg;
18073
        var iv = cfg.iv;
18074
        var mode = cfg.mode;
18075
18076
        // Reset block mode
18077
        if (this._xformMode == this._ENC_XFORM_MODE) {
18078
          modeCreator = mode.createEncryptor;
18079
        } else /* if (this._xformMode == this._DEC_XFORM_MODE) */{
18080
            modeCreator = mode.createDecryptor;
18081
            // Keep at least one block in the buffer for unpadding
18082
            this._minBufferSize = 1;
18083
          }
18084
        if (this._mode && this._mode.__creator == modeCreator) {
18085
          this._mode.init(this, iv && iv.words);
18086
        } else {
18087
          this._mode = modeCreator.call(mode, this, iv && iv.words);
18088
          this._mode.__creator = modeCreator;
18089
        }
18090
      },
18091
      _doProcessBlock: function _doProcessBlock(words, offset) {
18092
        this._mode.processBlock(words, offset);
18093
      },
18094
      _doFinalize: function _doFinalize() {
18095
        var finalProcessedBlocks;
18096
18097
        // Shortcut
18098
        var padding = this.cfg.padding;
18099
18100
        // Finalize
18101
        if (this._xformMode == this._ENC_XFORM_MODE) {
18102
          // Pad data
18103
          padding.pad(this._data, this.blockSize);
18104
18105
          // Process final blocks
18106
          finalProcessedBlocks = this._process(!!'flush');
18107
        } else /* if (this._xformMode == this._DEC_XFORM_MODE) */{
18108
            // Process final blocks
18109
            finalProcessedBlocks = this._process(!!'flush');
18110
18111
            // Unpad data
18112
            padding.unpad(finalProcessedBlocks);
18113
          }
18114
        return finalProcessedBlocks;
18115
      },
18116
      blockSize: 128 / 32
18117
    });
18118
18119
    /**
18120
     * A collection of cipher parameters.
18121
     *
18122
     * @property {WordArray} ciphertext The raw ciphertext.
18123
     * @property {WordArray} key The key to this ciphertext.
18124
     * @property {WordArray} iv The IV used in the ciphering operation.
18125
     * @property {WordArray} salt The salt used with a key derivation function.
18126
     * @property {Cipher} algorithm The cipher algorithm.
18127
     * @property {Mode} mode The block mode used in the ciphering operation.
18128
     * @property {Padding} padding The padding scheme used in the ciphering operation.
18129
     * @property {number} blockSize The block size of the cipher.
18130
     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
18131
     */
18132
    var CipherParams = C_lib.CipherParams = Base.extend({
18133
      /**
18134
       * Initializes a newly created cipher params object.
18135
       *
18136
       * @param {Object} cipherParams An object with any of the possible cipher parameters.
18137
       *
18138
       * @example
18139
       *
18140
       *     var cipherParams = CryptoJS.lib.CipherParams.create({
18141
       *         ciphertext: ciphertextWordArray,
18142
       *         key: keyWordArray,
18143
       *         iv: ivWordArray,
18144
       *         salt: saltWordArray,
18145
       *         algorithm: CryptoJS.algo.AES,
18146
       *         mode: CryptoJS.mode.CBC,
18147
       *         padding: CryptoJS.pad.PKCS7,
18148
       *         blockSize: 4,
18149
       *         formatter: CryptoJS.format.OpenSSL
18150
       *     });
18151
       */
18152
      init: function init(cipherParams) {
18153
        this.mixIn(cipherParams);
18154
      },
18155
      /**
18156
       * Converts this cipher params object to a string.
18157
       *
18158
       * @param {Format} formatter (Optional) The formatting strategy to use.
18159
       *
18160
       * @return {string} The stringified cipher params.
18161
       *
18162
       * @throws Error If neither the formatter nor the default formatter is set.
18163
       *
18164
       * @example
18165
       *
18166
       *     var string = cipherParams + '';
18167
       *     var string = cipherParams.toString();
18168
       *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);
18169
       */
18170
      toString: function toString(formatter) {
18171
        return (formatter || this.formatter).stringify(this);
18172
      }
18173
    });
18174
18175
    /**
18176
     * Format namespace.
18177
     */
18178
    var C_format = C.format = {};
18179
18180
    /**
18181
     * OpenSSL formatting strategy.
18182
     */
18183
    var OpenSSLFormatter = C_format.OpenSSL = {
18184
      /**
18185
       * Converts a cipher params object to an OpenSSL-compatible string.
18186
       *
18187
       * @param {CipherParams} cipherParams The cipher params object.
18188
       *
18189
       * @return {string} The OpenSSL-compatible string.
18190
       *
18191
       * @static
18192
       *
18193
       * @example
18194
       *
18195
       *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
18196
       */
18197
      stringify: function stringify(cipherParams) {
18198
        var wordArray;
18199
18200
        // Shortcuts
18201
        var ciphertext = cipherParams.ciphertext;
18202
        var salt = cipherParams.salt;
18203
18204
        // Format
18205
        if (salt) {
18206
          wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);
18207
        } else {
18208
          wordArray = ciphertext;
18209
        }
18210
        return wordArray.toString(Base64);
18211
      },
18212
      /**
18213
       * Converts an OpenSSL-compatible string to a cipher params object.
18214
       *
18215
       * @param {string} openSSLStr The OpenSSL-compatible string.
18216
       *
18217
       * @return {CipherParams} The cipher params object.
18218
       *
18219
       * @static
18220
       *
18221
       * @example
18222
       *
18223
       *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
18224
       */
18225
      parse: function parse(openSSLStr) {
18226
        var salt;
18227
18228
        // Parse base64
18229
        var ciphertext = Base64.parse(openSSLStr);
18230
18231
        // Shortcut
18232
        var ciphertextWords = ciphertext.words;
18233
18234
        // Test for salt
18235
        if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {
18236
          // Extract salt
18237
          salt = WordArray.create(ciphertextWords.slice(2, 4));
18238
18239
          // Remove salt from ciphertext
18240
          ciphertextWords.splice(0, 4);
18241
          ciphertext.sigBytes -= 16;
18242
        }
18243
        return CipherParams.create({
18244
          ciphertext: ciphertext,
18245
          salt: salt
18246
        });
18247
      }
18248
    };
18249
18250
    /**
18251
     * A cipher wrapper that returns ciphertext as a serializable cipher params object.
18252
     */
18253
    var SerializableCipher = C_lib.SerializableCipher = Base.extend({
18254
      /**
18255
       * Configuration options.
18256
       *
18257
       * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
18258
       */
18259
      cfg: Base.extend({
18260
        format: OpenSSLFormatter
18261
      }),
18262
      /**
18263
       * Encrypts a message.
18264
       *
18265
       * @param {Cipher} cipher The cipher algorithm to use.
18266
       * @param {WordArray|string} message The message to encrypt.
18267
       * @param {WordArray} key The key.
18268
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
18269
       *
18270
       * @return {CipherParams} A cipher params object.
18271
       *
18272
       * @static
18273
       *
18274
       * @example
18275
       *
18276
       *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
18277
       *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
18278
       *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
18279
       */
18280
      encrypt: function encrypt(cipher, message, key, cfg) {
18281
        // Apply config defaults
18282
        cfg = this.cfg.extend(cfg);
18283
18284
        // Encrypt
18285
        var encryptor = cipher.createEncryptor(key, cfg);
18286
        var ciphertext = encryptor.finalize(message);
18287
18288
        // Shortcut
18289
        var cipherCfg = encryptor.cfg;
18290
18291
        // Create and return serializable cipher params
18292
        return CipherParams.create({
18293
          ciphertext: ciphertext,
18294
          key: key,
18295
          iv: cipherCfg.iv,
18296
          algorithm: cipher,
18297
          mode: cipherCfg.mode,
18298
          padding: cipherCfg.padding,
18299
          blockSize: cipher.blockSize,
18300
          formatter: cfg.format
18301
        });
18302
      },
18303
      /**
18304
       * Decrypts serialized ciphertext.
18305
       *
18306
       * @param {Cipher} cipher The cipher algorithm to use.
18307
       * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
18308
       * @param {WordArray} key The key.
18309
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
18310
       *
18311
       * @return {WordArray} The plaintext.
18312
       *
18313
       * @static
18314
       *
18315
       * @example
18316
       *
18317
       *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
18318
       *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
18319
       */
18320
      decrypt: function decrypt(cipher, ciphertext, key, cfg) {
18321
        // Apply config defaults
18322
        cfg = this.cfg.extend(cfg);
18323
18324
        // Convert string to CipherParams
18325
        ciphertext = this._parse(ciphertext, cfg.format);
18326
18327
        // Decrypt
18328
        var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
18329
        return plaintext;
18330
      },
18331
      /**
18332
       * Converts serialized ciphertext to CipherParams,
18333
       * else assumed CipherParams already and returns ciphertext unchanged.
18334
       *
18335
       * @param {CipherParams|string} ciphertext The ciphertext.
18336
       * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
18337
       *
18338
       * @return {CipherParams} The unserialized ciphertext.
18339
       *
18340
       * @static
18341
       *
18342
       * @example
18343
       *
18344
       *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
18345
       */
18346
      _parse: function _parse(ciphertext, format) {
18347
        if (typeof ciphertext == 'string') {
18348
          return format.parse(ciphertext, this);
18349
        } else {
18350
          return ciphertext;
18351
        }
18352
      }
18353
    });
18354
18355
    /**
18356
     * Key derivation function namespace.
18357
     */
18358
    var C_kdf = C.kdf = {};
18359
18360
    /**
18361
     * OpenSSL key derivation function.
18362
     */
18363
    var OpenSSLKdf = C_kdf.OpenSSL = {
18364
      /**
18365
       * Derives a key and IV from a password.
18366
       *
18367
       * @param {string} password The password to derive from.
18368
       * @param {number} keySize The size in words of the key to generate.
18369
       * @param {number} ivSize The size in words of the IV to generate.
18370
       * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
18371
       *
18372
       * @return {CipherParams} A cipher params object with the key, IV, and salt.
18373
       *
18374
       * @static
18375
       *
18376
       * @example
18377
       *
18378
       *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
18379
       *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
18380
       */
18381
      execute: function execute(password, keySize, ivSize, salt) {
18382
        // Generate random salt
18383
        if (!salt) {
18384
          salt = WordArray.random(64 / 8);
18385
        }
18386
18387
        // Derive key and IV
18388
        var key = EvpKDF.create({
18389
          keySize: keySize + ivSize
18390
        }).compute(password, salt);
18391
18392
        // Separate key and IV
18393
        var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
18394
        key.sigBytes = keySize * 4;
18395
18396
        // Return params
18397
        return CipherParams.create({
18398
          key: key,
18399
          iv: iv,
18400
          salt: salt
18401
        });
18402
      }
18403
    };
18404
18405
    /**
18406
     * A serializable cipher wrapper that derives the key from a password,
18407
     * and returns ciphertext as a serializable cipher params object.
18408
     */
18409
    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
18410
      /**
18411
       * Configuration options.
18412
       *
18413
       * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
18414
       */
18415
      cfg: SerializableCipher.cfg.extend({
18416
        kdf: OpenSSLKdf
18417
      }),
18418
      /**
18419
       * Encrypts a message using a password.
18420
       *
18421
       * @param {Cipher} cipher The cipher algorithm to use.
18422
       * @param {WordArray|string} message The message to encrypt.
18423
       * @param {string} password The password.
18424
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
18425
       *
18426
       * @return {CipherParams} A cipher params object.
18427
       *
18428
       * @static
18429
       *
18430
       * @example
18431
       *
18432
       *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
18433
       *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
18434
       */
18435
      encrypt: function encrypt(cipher, message, password, cfg) {
18436
        // Apply config defaults
18437
        cfg = this.cfg.extend(cfg);
18438
18439
        // Derive key and other params
18440
        var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
18441
18442
        // Add IV to config
18443
        cfg.iv = derivedParams.iv;
18444
18445
        // Encrypt
18446
        var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
18447
18448
        // Mix in derived params
18449
        ciphertext.mixIn(derivedParams);
18450
        return ciphertext;
18451
      },
18452
      /**
18453
       * Decrypts serialized ciphertext using a password.
18454
       *
18455
       * @param {Cipher} cipher The cipher algorithm to use.
18456
       * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
18457
       * @param {string} password The password.
18458
       * @param {Object} cfg (Optional) The configuration options to use for this operation.
18459
       *
18460
       * @return {WordArray} The plaintext.
18461
       *
18462
       * @static
18463
       *
18464
       * @example
18465
       *
18466
       *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
18467
       *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
18468
       */
18469
      decrypt: function decrypt(cipher, ciphertext, password, cfg) {
18470
        // Apply config defaults
18471
        cfg = this.cfg.extend(cfg);
18472
18473
        // Convert string to CipherParams
18474
        ciphertext = this._parse(ciphertext, cfg.format);
18475
18476
        // Derive key and other params
18477
        var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
18478
18479
        // Add IV to config
18480
        cfg.iv = derivedParams.iv;
18481
18482
        // Decrypt
18483
        var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
18484
        return plaintext;
18485
      }
18486
    });
18487
  }();
18488
});
18489
18490
/***/ }),
18491
18492
/***/ 757:
18493
/***/ (function(module, exports, __webpack_require__) {
18494
18495
"use strict";
18496
18497
18498
__webpack_require__(5743);
18499
__webpack_require__(6992);
18500
__webpack_require__(1539);
18501
__webpack_require__(9135);
18502
__webpack_require__(2990);
18503
__webpack_require__(8927);
18504
__webpack_require__(3105);
18505
__webpack_require__(5035);
18506
__webpack_require__(4345);
18507
__webpack_require__(7174);
18508
__webpack_require__(2846);
18509
__webpack_require__(4731);
18510
__webpack_require__(7209);
18511
__webpack_require__(6319);
18512
__webpack_require__(8867);
18513
__webpack_require__(7789);
18514
__webpack_require__(3739);
18515
__webpack_require__(9368);
18516
__webpack_require__(4483);
18517
__webpack_require__(2056);
18518
__webpack_require__(3462);
18519
__webpack_require__(678);
18520
__webpack_require__(7462);
18521
__webpack_require__(3824);
18522
__webpack_require__(5021);
18523
__webpack_require__(2974);
18524
__webpack_require__(5016);
18525
__webpack_require__(9714);
18526
__webpack_require__(7042);
18527
__webpack_require__(9600);
18528
__webpack_require__(2222);
18529
__webpack_require__(561);
18530
;
18531
(function (root, factory) {
18532
  if (true) {
18533
    // CommonJS
18534
    module.exports = exports = factory();
18535
  } else {}
18536
})(void 0, function () {
18537
  /*globals window, global, require*/
18538
18539
  /**
18540
   * CryptoJS core components.
18541
   */
18542
  var CryptoJS = CryptoJS || function (Math, undefined) {
18543
    var crypto;
18544
18545
    // Native crypto from window (Browser)
18546
    if (typeof window !== 'undefined' && window.crypto) {
18547
      crypto = window.crypto;
18548
    }
18549
18550
    // Native crypto in web worker (Browser)
18551
    if (typeof self !== 'undefined' && self.crypto) {
18552
      crypto = self.crypto;
18553
    }
18554
18555
    // Native crypto from worker
18556
    if (typeof globalThis !== 'undefined' && globalThis.crypto) {
18557
      crypto = globalThis.crypto;
18558
    }
18559
18560
    // Native (experimental IE 11) crypto from window (Browser)
18561
    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {
18562
      crypto = window.msCrypto;
18563
    }
18564
18565
    // Native crypto from global (NodeJS)
18566
    if (!crypto && typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.crypto) {
18567
      crypto = __webpack_require__.g.crypto;
18568
    }
18569
18570
    // Native crypto import via require (NodeJS)
18571
    if (!crypto && "function" === 'function') {
18572
      try {
18573
        crypto = __webpack_require__(2480);
18574
      } catch (err) {}
18575
    }
18576
18577
    /*
18578
     * Cryptographically secure pseudorandom number generator
18579
     *
18580
     * As Math.random() is cryptographically not safe to use
18581
     */
18582
    var cryptoSecureRandomInt = function cryptoSecureRandomInt() {
18583
      if (crypto) {
18584
        // Use getRandomValues method (Browser)
18585
        if (typeof crypto.getRandomValues === 'function') {
18586
          try {
18587
            return crypto.getRandomValues(new Uint32Array(1))[0];
18588
          } catch (err) {}
18589
        }
18590
18591
        // Use randomBytes method (NodeJS)
18592
        if (typeof crypto.randomBytes === 'function') {
18593
          try {
18594
            return crypto.randomBytes(4).readInt32LE();
18595
          } catch (err) {}
18596
        }
18597
      }
18598
      throw new Error('Native crypto module could not be used to get secure random number.');
18599
    };
18600
18601
    /*
18602
     * Local polyfill of Object.create
18603
      */
18604
    var create = Object.create || function () {
18605
      function F() {}
18606
      return function (obj) {
18607
        var subtype;
18608
        F.prototype = obj;
18609
        subtype = new F();
18610
        F.prototype = null;
18611
        return subtype;
18612
      };
18613
    }();
18614
18615
    /**
18616
     * CryptoJS namespace.
18617
     */
18618
    var C = {};
18619
18620
    /**
18621
     * Library namespace.
18622
     */
18623
    var C_lib = C.lib = {};
18624
18625
    /**
18626
     * Base object for prototypal inheritance.
18627
     */
18628
    var Base = C_lib.Base = function () {
18629
      return {
18630
        /**
18631
         * Creates a new object that inherits from this object.
18632
         *
18633
         * @param {Object} overrides Properties to copy into the new object.
18634
         *
18635
         * @return {Object} The new object.
18636
         *
18637
         * @static
18638
         *
18639
         * @example
18640
         *
18641
         *     var MyType = CryptoJS.lib.Base.extend({
18642
         *         field: 'value',
18643
         *
18644
         *         method: function () {
18645
         *         }
18646
         *     });
18647
         */
18648
        extend: function extend(overrides) {
18649
          // Spawn
18650
          var subtype = create(this);
18651
18652
          // Augment
18653
          if (overrides) {
18654
            subtype.mixIn(overrides);
18655
          }
18656
18657
          // Create default initializer
18658
          if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
18659
            subtype.init = function () {
18660
              subtype.$super.init.apply(this, arguments);
18661
            };
18662
          }
18663
18664
          // Initializer's prototype is the subtype object
18665
          subtype.init.prototype = subtype;
18666
18667
          // Reference supertype
18668
          subtype.$super = this;
18669
          return subtype;
18670
        },
18671
        /**
18672
         * Extends this object and runs the init method.
18673
         * Arguments to create() will be passed to init().
18674
         *
18675
         * @return {Object} The new object.
18676
         *
18677
         * @static
18678
         *
18679
         * @example
18680
         *
18681
         *     var instance = MyType.create();
18682
         */
18683
        create: function create() {
18684
          var instance = this.extend();
18685
          instance.init.apply(instance, arguments);
18686
          return instance;
18687
        },
18688
        /**
18689
         * Initializes a newly created object.
18690
         * Override this method to add some logic when your objects are created.
18691
         *
18692
         * @example
18693
         *
18694
         *     var MyType = CryptoJS.lib.Base.extend({
18695
         *         init: function () {
18696
         *             // ...
18697
         *         }
18698
         *     });
18699
         */
18700
        init: function init() {},
18701
        /**
18702
         * Copies properties into this object.
18703
         *
18704
         * @param {Object} properties The properties to mix in.
18705
         *
18706
         * @example
18707
         *
18708
         *     MyType.mixIn({
18709
         *         field: 'value'
18710
         *     });
18711
         */
18712
        mixIn: function mixIn(properties) {
18713
          for (var propertyName in properties) {
18714
            if (properties.hasOwnProperty(propertyName)) {
18715
              this[propertyName] = properties[propertyName];
18716
            }
18717
          }
18718
18719
          // IE won't copy toString using the loop above
18720
          if (properties.hasOwnProperty('toString')) {
18721
            this.toString = properties.toString;
18722
          }
18723
        },
18724
        /**
18725
         * Creates a copy of this object.
18726
         *
18727
         * @return {Object} The clone.
18728
         *
18729
         * @example
18730
         *
18731
         *     var clone = instance.clone();
18732
         */
18733
        clone: function clone() {
18734
          return this.init.prototype.extend(this);
18735
        }
18736
      };
18737
    }();
18738
18739
    /**
18740
     * An array of 32-bit words.
18741
     *
18742
     * @property {Array} words The array of 32-bit words.
18743
     * @property {number} sigBytes The number of significant bytes in this word array.
18744
     */
18745
    var WordArray = C_lib.WordArray = Base.extend({
18746
      /**
18747
       * Initializes a newly created word array.
18748
       *
18749
       * @param {Array} words (Optional) An array of 32-bit words.
18750
       * @param {number} sigBytes (Optional) The number of significant bytes in the words.
18751
       *
18752
       * @example
18753
       *
18754
       *     var wordArray = CryptoJS.lib.WordArray.create();
18755
       *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
18756
       *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
18757
       */
18758
      init: function init(words, sigBytes) {
18759
        words = this.words = words || [];
18760
        if (sigBytes != undefined) {
18761
          this.sigBytes = sigBytes;
18762
        } else {
18763
          this.sigBytes = words.length * 4;
18764
        }
18765
      },
18766
      /**
18767
       * Converts this word array to a string.
18768
       *
18769
       * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
18770
       *
18771
       * @return {string} The stringified word array.
18772
       *
18773
       * @example
18774
       *
18775
       *     var string = wordArray + '';
18776
       *     var string = wordArray.toString();
18777
       *     var string = wordArray.toString(CryptoJS.enc.Utf8);
18778
       */
18779
      toString: function toString(encoder) {
18780
        return (encoder || Hex).stringify(this);
18781
      },
18782
      /**
18783
       * Concatenates a word array to this word array.
18784
       *
18785
       * @param {WordArray} wordArray The word array to append.
18786
       *
18787
       * @return {WordArray} This word array.
18788
       *
18789
       * @example
18790
       *
18791
       *     wordArray1.concat(wordArray2);
18792
       */
18793
      concat: function concat(wordArray) {
18794
        // Shortcuts
18795
        var thisWords = this.words;
18796
        var thatWords = wordArray.words;
18797
        var thisSigBytes = this.sigBytes;
18798
        var thatSigBytes = wordArray.sigBytes;
18799
18800
        // Clamp excess bits
18801
        this.clamp();
18802
18803
        // Concat
18804
        if (thisSigBytes % 4) {
18805
          // Copy one byte at a time
18806
          for (var i = 0; i < thatSigBytes; i++) {
18807
            var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;
18808
            thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;
18809
          }
18810
        } else {
18811
          // Copy one word at a time
18812
          for (var j = 0; j < thatSigBytes; j += 4) {
18813
            thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];
18814
          }
18815
        }
18816
        this.sigBytes += thatSigBytes;
18817
18818
        // Chainable
18819
        return this;
18820
      },
18821
      /**
18822
       * Removes insignificant bits.
18823
       *
18824
       * @example
18825
       *
18826
       *     wordArray.clamp();
18827
       */
18828
      clamp: function clamp() {
18829
        // Shortcuts
18830
        var words = this.words;
18831
        var sigBytes = this.sigBytes;
18832
18833
        // Clamp
18834
        words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8;
18835
        words.length = Math.ceil(sigBytes / 4);
18836
      },
18837
      /**
18838
       * Creates a copy of this word array.
18839
       *
18840
       * @return {WordArray} The clone.
18841
       *
18842
       * @example
18843
       *
18844
       *     var clone = wordArray.clone();
18845
       */
18846
      clone: function clone() {
18847
        var clone = Base.clone.call(this);
18848
        clone.words = this.words.slice(0);
18849
        return clone;
18850
      },
18851
      /**
18852
       * Creates a word array filled with random bytes.
18853
       *
18854
       * @param {number} nBytes The number of random bytes to generate.
18855
       *
18856
       * @return {WordArray} The random word array.
18857
       *
18858
       * @static
18859
       *
18860
       * @example
18861
       *
18862
       *     var wordArray = CryptoJS.lib.WordArray.random(16);
18863
       */
18864
      random: function random(nBytes) {
18865
        var words = [];
18866
        for (var i = 0; i < nBytes; i += 4) {
18867
          words.push(cryptoSecureRandomInt());
18868
        }
18869
        return new WordArray.init(words, nBytes);
18870
      }
18871
    });
18872
18873
    /**
18874
     * Encoder namespace.
18875
     */
18876
    var C_enc = C.enc = {};
18877
18878
    /**
18879
     * Hex encoding strategy.
18880
     */
18881
    var Hex = C_enc.Hex = {
18882
      /**
18883
       * Converts a word array to a hex string.
18884
       *
18885
       * @param {WordArray} wordArray The word array.
18886
       *
18887
       * @return {string} The hex string.
18888
       *
18889
       * @static
18890
       *
18891
       * @example
18892
       *
18893
       *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);
18894
       */
18895
      stringify: function stringify(wordArray) {
18896
        // Shortcuts
18897
        var words = wordArray.words;
18898
        var sigBytes = wordArray.sigBytes;
18899
18900
        // Convert
18901
        var hexChars = [];
18902
        for (var i = 0; i < sigBytes; i++) {
18903
          var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;
18904
          hexChars.push((bite >>> 4).toString(16));
18905
          hexChars.push((bite & 0x0f).toString(16));
18906
        }
18907
        return hexChars.join('');
18908
      },
18909
      /**
18910
       * Converts a hex string to a word array.
18911
       *
18912
       * @param {string} hexStr The hex string.
18913
       *
18914
       * @return {WordArray} The word array.
18915
       *
18916
       * @static
18917
       *
18918
       * @example
18919
       *
18920
       *     var wordArray = CryptoJS.enc.Hex.parse(hexString);
18921
       */
18922
      parse: function parse(hexStr) {
18923
        // Shortcut
18924
        var hexStrLength = hexStr.length;
18925
18926
        // Convert
18927
        var words = [];
18928
        for (var i = 0; i < hexStrLength; i += 2) {
18929
          words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;
18930
        }
18931
        return new WordArray.init(words, hexStrLength / 2);
18932
      }
18933
    };
18934
18935
    /**
18936
     * Latin1 encoding strategy.
18937
     */
18938
    var Latin1 = C_enc.Latin1 = {
18939
      /**
18940
       * Converts a word array to a Latin1 string.
18941
       *
18942
       * @param {WordArray} wordArray The word array.
18943
       *
18944
       * @return {string} The Latin1 string.
18945
       *
18946
       * @static
18947
       *
18948
       * @example
18949
       *
18950
       *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
18951
       */
18952
      stringify: function stringify(wordArray) {
18953
        // Shortcuts
18954
        var words = wordArray.words;
18955
        var sigBytes = wordArray.sigBytes;
18956
18957
        // Convert
18958
        var latin1Chars = [];
18959
        for (var i = 0; i < sigBytes; i++) {
18960
          var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;
18961
          latin1Chars.push(String.fromCharCode(bite));
18962
        }
18963
        return latin1Chars.join('');
18964
      },
18965
      /**
18966
       * Converts a Latin1 string to a word array.
18967
       *
18968
       * @param {string} latin1Str The Latin1 string.
18969
       *
18970
       * @return {WordArray} The word array.
18971
       *
18972
       * @static
18973
       *
18974
       * @example
18975
       *
18976
       *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
18977
       */
18978
      parse: function parse(latin1Str) {
18979
        // Shortcut
18980
        var latin1StrLength = latin1Str.length;
18981
18982
        // Convert
18983
        var words = [];
18984
        for (var i = 0; i < latin1StrLength; i++) {
18985
          words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;
18986
        }
18987
        return new WordArray.init(words, latin1StrLength);
18988
      }
18989
    };
18990
18991
    /**
18992
     * UTF-8 encoding strategy.
18993
     */
18994
    var Utf8 = C_enc.Utf8 = {
18995
      /**
18996
       * Converts a word array to a UTF-8 string.
18997
       *
18998
       * @param {WordArray} wordArray The word array.
18999
       *
19000
       * @return {string} The UTF-8 string.
19001
       *
19002
       * @static
19003
       *
19004
       * @example
19005
       *
19006
       *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
19007
       */
19008
      stringify: function stringify(wordArray) {
19009
        try {
19010
          return decodeURIComponent(escape(Latin1.stringify(wordArray)));
19011
        } catch (e) {
19012
          throw new Error('Malformed UTF-8 data');
19013
        }
19014
      },
19015
      /**
19016
       * Converts a UTF-8 string to a word array.
19017
       *
19018
       * @param {string} utf8Str The UTF-8 string.
19019
       *
19020
       * @return {WordArray} The word array.
19021
       *
19022
       * @static
19023
       *
19024
       * @example
19025
       *
19026
       *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
19027
       */
19028
      parse: function parse(utf8Str) {
19029
        return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
19030
      }
19031
    };
19032
19033
    /**
19034
     * Abstract buffered block algorithm template.
19035
     *
19036
     * The property blockSize must be implemented in a concrete subtype.
19037
     *
19038
     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0
19039
     */
19040
    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
19041
      /**
19042
       * Resets this block algorithm's data buffer to its initial state.
19043
       *
19044
       * @example
19045
       *
19046
       *     bufferedBlockAlgorithm.reset();
19047
       */
19048
      reset: function reset() {
19049
        // Initial values
19050
        this._data = new WordArray.init();
19051
        this._nDataBytes = 0;
19052
      },
19053
      /**
19054
       * Adds new data to this block algorithm's buffer.
19055
       *
19056
       * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
19057
       *
19058
       * @example
19059
       *
19060
       *     bufferedBlockAlgorithm._append('data');
19061
       *     bufferedBlockAlgorithm._append(wordArray);
19062
       */
19063
      _append: function _append(data) {
19064
        // Convert string to WordArray, else assume WordArray already
19065
        if (typeof data == 'string') {
19066
          data = Utf8.parse(data);
19067
        }
19068
19069
        // Append
19070
        this._data.concat(data);
19071
        this._nDataBytes += data.sigBytes;
19072
      },
19073
      /**
19074
       * Processes available data blocks.
19075
       *
19076
       * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
19077
       *
19078
       * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
19079
       *
19080
       * @return {WordArray} The processed data.
19081
       *
19082
       * @example
19083
       *
19084
       *     var processedData = bufferedBlockAlgorithm._process();
19085
       *     var processedData = bufferedBlockAlgorithm._process(!!'flush');
19086
       */
19087
      _process: function _process(doFlush) {
19088
        var processedWords;
19089
19090
        // Shortcuts
19091
        var data = this._data;
19092
        var dataWords = data.words;
19093
        var dataSigBytes = data.sigBytes;
19094
        var blockSize = this.blockSize;
19095
        var blockSizeBytes = blockSize * 4;
19096
19097
        // Count blocks ready
19098
        var nBlocksReady = dataSigBytes / blockSizeBytes;
19099
        if (doFlush) {
19100
          // Round up to include partial blocks
19101
          nBlocksReady = Math.ceil(nBlocksReady);
19102
        } else {
19103
          // Round down to include only full blocks,
19104
          // less the number of blocks that must remain in the buffer
19105
          nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
19106
        }
19107
19108
        // Count words ready
19109
        var nWordsReady = nBlocksReady * blockSize;
19110
19111
        // Count bytes ready
19112
        var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);
19113
19114
        // Process blocks
19115
        if (nWordsReady) {
19116
          for (var offset = 0; offset < nWordsReady; offset += blockSize) {
19117
            // Perform concrete-algorithm logic
19118
            this._doProcessBlock(dataWords, offset);
19119
          }
19120
19121
          // Remove processed words
19122
          processedWords = dataWords.splice(0, nWordsReady);
19123
          data.sigBytes -= nBytesReady;
19124
        }
19125
19126
        // Return processed words
19127
        return new WordArray.init(processedWords, nBytesReady);
19128
      },
19129
      /**
19130
       * Creates a copy of this object.
19131
       *
19132
       * @return {Object} The clone.
19133
       *
19134
       * @example
19135
       *
19136
       *     var clone = bufferedBlockAlgorithm.clone();
19137
       */
19138
      clone: function clone() {
19139
        var clone = Base.clone.call(this);
19140
        clone._data = this._data.clone();
19141
        return clone;
19142
      },
19143
      _minBufferSize: 0
19144
    });
19145
19146
    /**
19147
     * Abstract hasher template.
19148
     *
19149
     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)
19150
     */
19151
    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
19152
      /**
19153
       * Configuration options.
19154
       */
19155
      cfg: Base.extend(),
19156
      /**
19157
       * Initializes a newly created hasher.
19158
       *
19159
       * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
19160
       *
19161
       * @example
19162
       *
19163
       *     var hasher = CryptoJS.algo.SHA256.create();
19164
       */
19165
      init: function init(cfg) {
19166
        // Apply config defaults
19167
        this.cfg = this.cfg.extend(cfg);
19168
19169
        // Set initial values
19170
        this.reset();
19171
      },
19172
      /**
19173
       * Resets this hasher to its initial state.
19174
       *
19175
       * @example
19176
       *
19177
       *     hasher.reset();
19178
       */
19179
      reset: function reset() {
19180
        // Reset data buffer
19181
        BufferedBlockAlgorithm.reset.call(this);
19182
19183
        // Perform concrete-hasher logic
19184
        this._doReset();
19185
      },
19186
      /**
19187
       * Updates this hasher with a message.
19188
       *
19189
       * @param {WordArray|string} messageUpdate The message to append.
19190
       *
19191
       * @return {Hasher} This hasher.
19192
       *
19193
       * @example
19194
       *
19195
       *     hasher.update('message');
19196
       *     hasher.update(wordArray);
19197
       */
19198
      update: function update(messageUpdate) {
19199
        // Append
19200
        this._append(messageUpdate);
19201
19202
        // Update the hash
19203
        this._process();
19204
19205
        // Chainable
19206
        return this;
19207
      },
19208
      /**
19209
       * Finalizes the hash computation.
19210
       * Note that the finalize operation is effectively a destructive, read-once operation.
19211
       *
19212
       * @param {WordArray|string} messageUpdate (Optional) A final message update.
19213
       *
19214
       * @return {WordArray} The hash.
19215
       *
19216
       * @example
19217
       *
19218
       *     var hash = hasher.finalize();
19219
       *     var hash = hasher.finalize('message');
19220
       *     var hash = hasher.finalize(wordArray);
19221
       */
19222
      finalize: function finalize(messageUpdate) {
19223
        // Final message update
19224
        if (messageUpdate) {
19225
          this._append(messageUpdate);
19226
        }
19227
19228
        // Perform concrete-hasher logic
19229
        var hash = this._doFinalize();
19230
        return hash;
19231
      },
19232
      blockSize: 512 / 32,
19233
      /**
19234
       * Creates a shortcut function to a hasher's object interface.
19235
       *
19236
       * @param {Hasher} hasher The hasher to create a helper for.
19237
       *
19238
       * @return {Function} The shortcut function.
19239
       *
19240
       * @static
19241
       *
19242
       * @example
19243
       *
19244
       *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
19245
       */
19246
      _createHelper: function _createHelper(hasher) {
19247
        return function (message, cfg) {
19248
          return new hasher.init(cfg).finalize(message);
19249
        };
19250
      },
19251
      /**
19252
       * Creates a shortcut function to the HMAC's object interface.
19253
       *
19254
       * @param {Hasher} hasher The hasher to use in this HMAC helper.
19255
       *
19256
       * @return {Function} The shortcut function.
19257
       *
19258
       * @static
19259
       *
19260
       * @example
19261
       *
19262
       *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
19263
       */
19264
      _createHmacHelper: function _createHmacHelper(hasher) {
19265
        return function (message, key) {
19266
          return new C_algo.HMAC.init(hasher, key).finalize(message);
19267
        };
19268
      }
19269
    });
19270
19271
    /**
19272
     * Algorithm namespace.
19273
     */
19274
    var C_algo = C.algo = {};
19275
    return C;
19276
  }(Math);
19277
  return CryptoJS;
19278
});
19279
19280
/***/ }),
19281
19282
/***/ 7508:
19283
/***/ (function(module, exports, __webpack_require__) {
19284
19285
"use strict";
19286
19287
19288
__webpack_require__(9600);
19289
;
19290
(function (root, factory) {
19291
  if (true) {
19292
    // CommonJS
19293
    module.exports = exports = factory(__webpack_require__(757));
19294
  } else {}
19295
})(void 0, function (CryptoJS) {
19296
  (function () {
19297
    // Shortcuts
19298
    var C = CryptoJS;
19299
    var C_lib = C.lib;
19300
    var WordArray = C_lib.WordArray;
19301
    var C_enc = C.enc;
19302
19303
    /**
19304
     * Base64 encoding strategy.
19305
     */
19306
    var Base64 = C_enc.Base64 = {
19307
      /**
19308
       * Converts a word array to a Base64 string.
19309
       *
19310
       * @param {WordArray} wordArray The word array.
19311
       *
19312
       * @return {string} The Base64 string.
19313
       *
19314
       * @static
19315
       *
19316
       * @example
19317
       *
19318
       *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
19319
       */
19320
      stringify: function stringify(wordArray) {
19321
        // Shortcuts
19322
        var words = wordArray.words;
19323
        var sigBytes = wordArray.sigBytes;
19324
        var map = this._map;
19325
19326
        // Clamp excess bits
19327
        wordArray.clamp();
19328
19329
        // Convert
19330
        var base64Chars = [];
19331
        for (var i = 0; i < sigBytes; i += 3) {
19332
          var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;
19333
          var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;
19334
          var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;
19335
          var triplet = byte1 << 16 | byte2 << 8 | byte3;
19336
          for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
19337
            base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));
19338
          }
19339
        }
19340
19341
        // Add padding
19342
        var paddingChar = map.charAt(64);
19343
        if (paddingChar) {
19344
          while (base64Chars.length % 4) {
19345
            base64Chars.push(paddingChar);
19346
          }
19347
        }
19348
        return base64Chars.join('');
19349
      },
19350
      /**
19351
       * Converts a Base64 string to a word array.
19352
       *
19353
       * @param {string} base64Str The Base64 string.
19354
       *
19355
       * @return {WordArray} The word array.
19356
       *
19357
       * @static
19358
       *
19359
       * @example
19360
       *
19361
       *     var wordArray = CryptoJS.enc.Base64.parse(base64String);
19362
       */
19363
      parse: function parse(base64Str) {
19364
        // Shortcuts
19365
        var base64StrLength = base64Str.length;
19366
        var map = this._map;
19367
        var reverseMap = this._reverseMap;
19368
        if (!reverseMap) {
19369
          reverseMap = this._reverseMap = [];
19370
          for (var j = 0; j < map.length; j++) {
19371
            reverseMap[map.charCodeAt(j)] = j;
19372
          }
19373
        }
19374
19375
        // Ignore padding
19376
        var paddingChar = map.charAt(64);
19377
        if (paddingChar) {
19378
          var paddingIndex = base64Str.indexOf(paddingChar);
19379
          if (paddingIndex !== -1) {
19380
            base64StrLength = paddingIndex;
19381
          }
19382
        }
19383
19384
        // Convert
19385
        return parseLoop(base64Str, base64StrLength, reverseMap);
19386
      },
19387
      _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
19388
    };
19389
    function parseLoop(base64Str, base64StrLength, reverseMap) {
19390
      var words = [];
19391
      var nBytes = 0;
19392
      for (var i = 0; i < base64StrLength; i++) {
19393
        if (i % 4) {
19394
          var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
19395
          var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
19396
          var bitsCombined = bits1 | bits2;
19397
          words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
19398
          nBytes++;
19399
        }
19400
      }
19401
      return WordArray.create(words, nBytes);
19402
    }
19403
  })();
19404
  return CryptoJS.enc.Base64;
19405
});
19406
19407
/***/ }),
19408
19409
/***/ 7590:
19410
/***/ (function(module, exports, __webpack_require__) {
19411
19412
"use strict";
19413
19414
19415
__webpack_require__(9600);
19416
;
19417
(function (root, factory) {
19418
  if (true) {
19419
    // CommonJS
19420
    module.exports = exports = factory(__webpack_require__(757));
19421
  } else {}
19422
})(void 0, function (CryptoJS) {
19423
  (function () {
19424
    // Shortcuts
19425
    var C = CryptoJS;
19426
    var C_lib = C.lib;
19427
    var WordArray = C_lib.WordArray;
19428
    var C_enc = C.enc;
19429
19430
    /**
19431
     * Base64url encoding strategy.
19432
     */
19433
    var Base64url = C_enc.Base64url = {
19434
      /**
19435
       * Converts a word array to a Base64url string.
19436
       *
19437
       * @param {WordArray} wordArray The word array.
19438
       *
19439
       * @param {boolean} urlSafe Whether to use url safe
19440
       *
19441
       * @return {string} The Base64url string.
19442
       *
19443
       * @static
19444
       *
19445
       * @example
19446
       *
19447
       *     var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
19448
       */
19449
      stringify: function stringify(wordArray, urlSafe) {
19450
        if (urlSafe === void 0) {
19451
          urlSafe = true;
19452
        }
19453
        // Shortcuts
19454
        var words = wordArray.words;
19455
        var sigBytes = wordArray.sigBytes;
19456
        var map = urlSafe ? this._safe_map : this._map;
19457
19458
        // Clamp excess bits
19459
        wordArray.clamp();
19460
19461
        // Convert
19462
        var base64Chars = [];
19463
        for (var i = 0; i < sigBytes; i += 3) {
19464
          var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;
19465
          var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;
19466
          var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;
19467
          var triplet = byte1 << 16 | byte2 << 8 | byte3;
19468
          for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
19469
            base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));
19470
          }
19471
        }
19472
19473
        // Add padding
19474
        var paddingChar = map.charAt(64);
19475
        if (paddingChar) {
19476
          while (base64Chars.length % 4) {
19477
            base64Chars.push(paddingChar);
19478
          }
19479
        }
19480
        return base64Chars.join('');
19481
      },
19482
      /**
19483
       * Converts a Base64url string to a word array.
19484
       *
19485
       * @param {string} base64Str The Base64url string.
19486
       *
19487
       * @param {boolean} urlSafe Whether to use url safe
19488
       *
19489
       * @return {WordArray} The word array.
19490
       *
19491
       * @static
19492
       *
19493
       * @example
19494
       *
19495
       *     var wordArray = CryptoJS.enc.Base64url.parse(base64String);
19496
       */
19497
      parse: function parse(base64Str, urlSafe) {
19498
        if (urlSafe === void 0) {
19499
          urlSafe = true;
19500
        }
19501
        // Shortcuts
19502
        var base64StrLength = base64Str.length;
19503
        var map = urlSafe ? this._safe_map : this._map;
19504
        var reverseMap = this._reverseMap;
19505
        if (!reverseMap) {
19506
          reverseMap = this._reverseMap = [];
19507
          for (var j = 0; j < map.length; j++) {
19508
            reverseMap[map.charCodeAt(j)] = j;
19509
          }
19510
        }
19511
19512
        // Ignore padding
19513
        var paddingChar = map.charAt(64);
19514
        if (paddingChar) {
19515
          var paddingIndex = base64Str.indexOf(paddingChar);
19516
          if (paddingIndex !== -1) {
19517
            base64StrLength = paddingIndex;
19518
          }
19519
        }
19520
19521
        // Convert
19522
        return parseLoop(base64Str, base64StrLength, reverseMap);
19523
      },
19524
      _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
19525
      _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
19526
    };
19527
    function parseLoop(base64Str, base64StrLength, reverseMap) {
19528
      var words = [];
19529
      var nBytes = 0;
19530
      for (var i = 0; i < base64StrLength; i++) {
19531
        if (i % 4) {
19532
          var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
19533
          var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
19534
          var bitsCombined = bits1 | bits2;
19535
          words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
19536
          nBytes++;
19537
        }
19538
      }
19539
      return WordArray.create(words, nBytes);
19540
    }
19541
  })();
19542
  return CryptoJS.enc.Base64url;
19543
});
19544
19545
/***/ }),
19546
19547
/***/ 4978:
19548
/***/ (function(module, exports, __webpack_require__) {
19549
19550
"use strict";
19551
19552
19553
__webpack_require__(9600);
19554
;
19555
(function (root, factory) {
19556
  if (true) {
19557
    // CommonJS
19558
    module.exports = exports = factory(__webpack_require__(757));
19559
  } else {}
19560
})(void 0, function (CryptoJS) {
19561
  (function () {
19562
    // Shortcuts
19563
    var C = CryptoJS;
19564
    var C_lib = C.lib;
19565
    var WordArray = C_lib.WordArray;
19566
    var C_enc = C.enc;
19567
19568
    /**
19569
     * UTF-16 BE encoding strategy.
19570
     */
19571
    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
19572
      /**
19573
       * Converts a word array to a UTF-16 BE string.
19574
       *
19575
       * @param {WordArray} wordArray The word array.
19576
       *
19577
       * @return {string} The UTF-16 BE string.
19578
       *
19579
       * @static
19580
       *
19581
       * @example
19582
       *
19583
       *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
19584
       */
19585
      stringify: function stringify(wordArray) {
19586
        // Shortcuts
19587
        var words = wordArray.words;
19588
        var sigBytes = wordArray.sigBytes;
19589
19590
        // Convert
19591
        var utf16Chars = [];
19592
        for (var i = 0; i < sigBytes; i += 2) {
19593
          var codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff;
19594
          utf16Chars.push(String.fromCharCode(codePoint));
19595
        }
19596
        return utf16Chars.join('');
19597
      },
19598
      /**
19599
       * Converts a UTF-16 BE string to a word array.
19600
       *
19601
       * @param {string} utf16Str The UTF-16 BE string.
19602
       *
19603
       * @return {WordArray} The word array.
19604
       *
19605
       * @static
19606
       *
19607
       * @example
19608
       *
19609
       *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
19610
       */
19611
      parse: function parse(utf16Str) {
19612
        // Shortcut
19613
        var utf16StrLength = utf16Str.length;
19614
19615
        // Convert
19616
        var words = [];
19617
        for (var i = 0; i < utf16StrLength; i++) {
19618
          words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16;
19619
        }
19620
        return WordArray.create(words, utf16StrLength * 2);
19621
      }
19622
    };
19623
19624
    /**
19625
     * UTF-16 LE encoding strategy.
19626
     */
19627
    C_enc.Utf16LE = {
19628
      /**
19629
       * Converts a word array to a UTF-16 LE string.
19630
       *
19631
       * @param {WordArray} wordArray The word array.
19632
       *
19633
       * @return {string} The UTF-16 LE string.
19634
       *
19635
       * @static
19636
       *
19637
       * @example
19638
       *
19639
       *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
19640
       */
19641
      stringify: function stringify(wordArray) {
19642
        // Shortcuts
19643
        var words = wordArray.words;
19644
        var sigBytes = wordArray.sigBytes;
19645
19646
        // Convert
19647
        var utf16Chars = [];
19648
        for (var i = 0; i < sigBytes; i += 2) {
19649
          var codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 0xffff);
19650
          utf16Chars.push(String.fromCharCode(codePoint));
19651
        }
19652
        return utf16Chars.join('');
19653
      },
19654
      /**
19655
       * Converts a UTF-16 LE string to a word array.
19656
       *
19657
       * @param {string} utf16Str The UTF-16 LE string.
19658
       *
19659
       * @return {WordArray} The word array.
19660
       *
19661
       * @static
19662
       *
19663
       * @example
19664
       *
19665
       *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
19666
       */
19667
      parse: function parse(utf16Str) {
19668
        // Shortcut
19669
        var utf16StrLength = utf16Str.length;
19670
19671
        // Convert
19672
        var words = [];
19673
        for (var i = 0; i < utf16StrLength; i++) {
19674
          words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16);
19675
        }
19676
        return WordArray.create(words, utf16StrLength * 2);
19677
      }
19678
    };
19679
    function swapEndian(word) {
19680
      return word << 8 & 0xff00ff00 | word >>> 8 & 0x00ff00ff;
19681
    }
19682
  })();
19683
  return CryptoJS.enc.Utf16;
19684
});
19685
19686
/***/ }),
19687
19688
/***/ 3839:
19689
/***/ (function(module, exports, __webpack_require__) {
19690
19691
"use strict";
19692
19693
19694
__webpack_require__(2222);
19695
;
19696
(function (root, factory, undef) {
19697
  if (true) {
19698
    // CommonJS
19699
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(9865), __webpack_require__(6727));
19700
  } else {}
19701
})(void 0, function (CryptoJS) {
19702
  (function () {
19703
    // Shortcuts
19704
    var C = CryptoJS;
19705
    var C_lib = C.lib;
19706
    var Base = C_lib.Base;
19707
    var WordArray = C_lib.WordArray;
19708
    var C_algo = C.algo;
19709
    var MD5 = C_algo.MD5;
19710
19711
    /**
19712
     * This key derivation function is meant to conform with EVP_BytesToKey.
19713
     * www.openssl.org/docs/crypto/EVP_BytesToKey.html
19714
     */
19715
    var EvpKDF = C_algo.EvpKDF = Base.extend({
19716
      /**
19717
       * Configuration options.
19718
       *
19719
       * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
19720
       * @property {Hasher} hasher The hash algorithm to use. Default: MD5
19721
       * @property {number} iterations The number of iterations to perform. Default: 1
19722
       */
19723
      cfg: Base.extend({
19724
        keySize: 128 / 32,
19725
        hasher: MD5,
19726
        iterations: 1
19727
      }),
19728
      /**
19729
       * Initializes a newly created key derivation function.
19730
       *
19731
       * @param {Object} cfg (Optional) The configuration options to use for the derivation.
19732
       *
19733
       * @example
19734
       *
19735
       *     var kdf = CryptoJS.algo.EvpKDF.create();
19736
       *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
19737
       *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
19738
       */
19739
      init: function init(cfg) {
19740
        this.cfg = this.cfg.extend(cfg);
19741
      },
19742
      /**
19743
       * Derives a key from a password.
19744
       *
19745
       * @param {WordArray|string} password The password.
19746
       * @param {WordArray|string} salt A salt.
19747
       *
19748
       * @return {WordArray} The derived key.
19749
       *
19750
       * @example
19751
       *
19752
       *     var key = kdf.compute(password, salt);
19753
       */
19754
      compute: function compute(password, salt) {
19755
        var block;
19756
19757
        // Shortcut
19758
        var cfg = this.cfg;
19759
19760
        // Init hasher
19761
        var hasher = cfg.hasher.create();
19762
19763
        // Initial values
19764
        var derivedKey = WordArray.create();
19765
19766
        // Shortcuts
19767
        var derivedKeyWords = derivedKey.words;
19768
        var keySize = cfg.keySize;
19769
        var iterations = cfg.iterations;
19770
19771
        // Generate key
19772
        while (derivedKeyWords.length < keySize) {
19773
          if (block) {
19774
            hasher.update(block);
19775
          }
19776
          block = hasher.update(password).finalize(salt);
19777
          hasher.reset();
19778
19779
          // Iterations
19780
          for (var i = 1; i < iterations; i++) {
19781
            block = hasher.finalize(block);
19782
            hasher.reset();
19783
          }
19784
          derivedKey.concat(block);
19785
        }
19786
        derivedKey.sigBytes = keySize * 4;
19787
        return derivedKey;
19788
      }
19789
    });
19790
19791
    /**
19792
     * Derives a key from a password.
19793
     *
19794
     * @param {WordArray|string} password The password.
19795
     * @param {WordArray|string} salt A salt.
19796
     * @param {Object} cfg (Optional) The configuration options to use for this computation.
19797
     *
19798
     * @return {WordArray} The derived key.
19799
     *
19800
     * @static
19801
     *
19802
     * @example
19803
     *
19804
     *     var key = CryptoJS.EvpKDF(password, salt);
19805
     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });
19806
     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });
19807
     */
19808
    C.EvpKDF = function (password, salt, cfg) {
19809
      return EvpKDF.create(cfg).compute(password, salt);
19810
    };
19811
  })();
19812
  return CryptoJS.EvpKDF;
19813
});
19814
19815
/***/ }),
19816
19817
/***/ 8942:
19818
/***/ (function(module, exports, __webpack_require__) {
19819
19820
"use strict";
19821
19822
19823
__webpack_require__(1539);
19824
__webpack_require__(9714);
19825
;
19826
(function (root, factory, undef) {
19827
  if (true) {
19828
    // CommonJS
19829
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
19830
  } else {}
19831
})(void 0, function (CryptoJS) {
19832
  (function (undefined) {
19833
    // Shortcuts
19834
    var C = CryptoJS;
19835
    var C_lib = C.lib;
19836
    var CipherParams = C_lib.CipherParams;
19837
    var C_enc = C.enc;
19838
    var Hex = C_enc.Hex;
19839
    var C_format = C.format;
19840
    var HexFormatter = C_format.Hex = {
19841
      /**
19842
       * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
19843
       *
19844
       * @param {CipherParams} cipherParams The cipher params object.
19845
       *
19846
       * @return {string} The hexadecimally encoded string.
19847
       *
19848
       * @static
19849
       *
19850
       * @example
19851
       *
19852
       *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);
19853
       */
19854
      stringify: function stringify(cipherParams) {
19855
        return cipherParams.ciphertext.toString(Hex);
19856
      },
19857
      /**
19858
       * Converts a hexadecimally encoded ciphertext string to a cipher params object.
19859
       *
19860
       * @param {string} input The hexadecimally encoded string.
19861
       *
19862
       * @return {CipherParams} The cipher params object.
19863
       *
19864
       * @static
19865
       *
19866
       * @example
19867
       *
19868
       *     var cipherParams = CryptoJS.format.Hex.parse(hexString);
19869
       */
19870
      parse: function parse(input) {
19871
        var ciphertext = Hex.parse(input);
19872
        return CipherParams.create({
19873
          ciphertext: ciphertext
19874
        });
19875
      }
19876
    };
19877
  })();
19878
  return CryptoJS.format.Hex;
19879
});
19880
19881
/***/ }),
19882
19883
/***/ 6727:
19884
/***/ (function(module, exports, __webpack_require__) {
19885
19886
"use strict";
19887
19888
19889
__webpack_require__(2222);
19890
;
19891
(function (root, factory) {
19892
  if (true) {
19893
    // CommonJS
19894
    module.exports = exports = factory(__webpack_require__(757));
19895
  } else {}
19896
})(void 0, function (CryptoJS) {
19897
  (function () {
19898
    // Shortcuts
19899
    var C = CryptoJS;
19900
    var C_lib = C.lib;
19901
    var Base = C_lib.Base;
19902
    var C_enc = C.enc;
19903
    var Utf8 = C_enc.Utf8;
19904
    var C_algo = C.algo;
19905
19906
    /**
19907
     * HMAC algorithm.
19908
     */
19909
    var HMAC = C_algo.HMAC = Base.extend({
19910
      /**
19911
       * Initializes a newly created HMAC.
19912
       *
19913
       * @param {Hasher} hasher The hash algorithm to use.
19914
       * @param {WordArray|string} key The secret key.
19915
       *
19916
       * @example
19917
       *
19918
       *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
19919
       */
19920
      init: function init(hasher, key) {
19921
        // Init hasher
19922
        hasher = this._hasher = new hasher.init();
19923
19924
        // Convert string to WordArray, else assume WordArray already
19925
        if (typeof key == 'string') {
19926
          key = Utf8.parse(key);
19927
        }
19928
19929
        // Shortcuts
19930
        var hasherBlockSize = hasher.blockSize;
19931
        var hasherBlockSizeBytes = hasherBlockSize * 4;
19932
19933
        // Allow arbitrary length keys
19934
        if (key.sigBytes > hasherBlockSizeBytes) {
19935
          key = hasher.finalize(key);
19936
        }
19937
19938
        // Clamp excess bits
19939
        key.clamp();
19940
19941
        // Clone key for inner and outer pads
19942
        var oKey = this._oKey = key.clone();
19943
        var iKey = this._iKey = key.clone();
19944
19945
        // Shortcuts
19946
        var oKeyWords = oKey.words;
19947
        var iKeyWords = iKey.words;
19948
19949
        // XOR keys with pad constants
19950
        for (var i = 0; i < hasherBlockSize; i++) {
19951
          oKeyWords[i] ^= 0x5c5c5c5c;
19952
          iKeyWords[i] ^= 0x36363636;
19953
        }
19954
        oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
19955
19956
        // Set initial values
19957
        this.reset();
19958
      },
19959
      /**
19960
       * Resets this HMAC to its initial state.
19961
       *
19962
       * @example
19963
       *
19964
       *     hmacHasher.reset();
19965
       */
19966
      reset: function reset() {
19967
        // Shortcut
19968
        var hasher = this._hasher;
19969
19970
        // Reset
19971
        hasher.reset();
19972
        hasher.update(this._iKey);
19973
      },
19974
      /**
19975
       * Updates this HMAC with a message.
19976
       *
19977
       * @param {WordArray|string} messageUpdate The message to append.
19978
       *
19979
       * @return {HMAC} This HMAC instance.
19980
       *
19981
       * @example
19982
       *
19983
       *     hmacHasher.update('message');
19984
       *     hmacHasher.update(wordArray);
19985
       */
19986
      update: function update(messageUpdate) {
19987
        this._hasher.update(messageUpdate);
19988
19989
        // Chainable
19990
        return this;
19991
      },
19992
      /**
19993
       * Finalizes the HMAC computation.
19994
       * Note that the finalize operation is effectively a destructive, read-once operation.
19995
       *
19996
       * @param {WordArray|string} messageUpdate (Optional) A final message update.
19997
       *
19998
       * @return {WordArray} The HMAC.
19999
       *
20000
       * @example
20001
       *
20002
       *     var hmac = hmacHasher.finalize();
20003
       *     var hmac = hmacHasher.finalize('message');
20004
       *     var hmac = hmacHasher.finalize(wordArray);
20005
       */
20006
      finalize: function finalize(messageUpdate) {
20007
        // Shortcut
20008
        var hasher = this._hasher;
20009
20010
        // Compute HMAC
20011
        var innerHash = hasher.finalize(messageUpdate);
20012
        hasher.reset();
20013
        var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
20014
        return hmac;
20015
      }
20016
    });
20017
  })();
20018
});
20019
20020
/***/ }),
20021
20022
/***/ 5153:
20023
/***/ (function(module, exports, __webpack_require__) {
20024
20025
"use strict";
20026
20027
20028
;
20029
(function (root, factory, undef) {
20030
  if (true) {
20031
    // CommonJS
20032
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(2601), __webpack_require__(1947), __webpack_require__(4978), __webpack_require__(7508), __webpack_require__(7590), __webpack_require__(3440), __webpack_require__(9865), __webpack_require__(8921), __webpack_require__(6876), __webpack_require__(7991), __webpack_require__(8122), __webpack_require__(8342), __webpack_require__(8714), __webpack_require__(6727), __webpack_require__(3486), __webpack_require__(3839), __webpack_require__(1582), __webpack_require__(702), __webpack_require__(2362), __webpack_require__(4412), __webpack_require__(5720), __webpack_require__(3518), __webpack_require__(6362), __webpack_require__(4431), __webpack_require__(8800), __webpack_require__(3992), __webpack_require__(649), __webpack_require__(8942), __webpack_require__(194), __webpack_require__(8437), __webpack_require__(4640), __webpack_require__(5323), __webpack_require__(4363));
20033
  } else {}
20034
})(void 0, function (CryptoJS) {
20035
  return CryptoJS;
20036
});
20037
20038
/***/ }),
20039
20040
/***/ 1947:
20041
/***/ (function(module, exports, __webpack_require__) {
20042
20043
"use strict";
20044
20045
20046
__webpack_require__(7803);
20047
__webpack_require__(1539);
20048
__webpack_require__(6992);
20049
__webpack_require__(2472);
20050
__webpack_require__(2990);
20051
__webpack_require__(8927);
20052
__webpack_require__(3105);
20053
__webpack_require__(5035);
20054
__webpack_require__(4345);
20055
__webpack_require__(7174);
20056
__webpack_require__(2846);
20057
__webpack_require__(4731);
20058
__webpack_require__(7209);
20059
__webpack_require__(6319);
20060
__webpack_require__(8867);
20061
__webpack_require__(7789);
20062
__webpack_require__(3739);
20063
__webpack_require__(9368);
20064
__webpack_require__(4483);
20065
__webpack_require__(2056);
20066
__webpack_require__(3462);
20067
__webpack_require__(678);
20068
__webpack_require__(7462);
20069
__webpack_require__(3824);
20070
__webpack_require__(5021);
20071
__webpack_require__(2974);
20072
__webpack_require__(5016);
20073
__webpack_require__(7145);
20074
__webpack_require__(9743);
20075
__webpack_require__(5109);
20076
__webpack_require__(8255);
20077
__webpack_require__(5125);
20078
__webpack_require__(9135);
20079
__webpack_require__(4197);
20080
__webpack_require__(6495);
20081
;
20082
(function (root, factory) {
20083
  if (true) {
20084
    // CommonJS
20085
    module.exports = exports = factory(__webpack_require__(757));
20086
  } else {}
20087
})(void 0, function (CryptoJS) {
20088
  (function () {
20089
    // Check if typed arrays are supported
20090
    if (typeof ArrayBuffer != 'function') {
20091
      return;
20092
    }
20093
20094
    // Shortcuts
20095
    var C = CryptoJS;
20096
    var C_lib = C.lib;
20097
    var WordArray = C_lib.WordArray;
20098
20099
    // Reference original init
20100
    var superInit = WordArray.init;
20101
20102
    // Augment WordArray.init to handle typed arrays
20103
    var subInit = WordArray.init = function (typedArray) {
20104
      // Convert buffers to uint8
20105
      if (typedArray instanceof ArrayBuffer) {
20106
        typedArray = new Uint8Array(typedArray);
20107
      }
20108
20109
      // Convert other array views to uint8
20110
      if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {
20111
        typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
20112
      }
20113
20114
      // Handle Uint8Array
20115
      if (typedArray instanceof Uint8Array) {
20116
        // Shortcut
20117
        var typedArrayByteLength = typedArray.byteLength;
20118
20119
        // Extract bytes
20120
        var words = [];
20121
        for (var i = 0; i < typedArrayByteLength; i++) {
20122
          words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;
20123
        }
20124
20125
        // Initialize this word array
20126
        superInit.call(this, words, typedArrayByteLength);
20127
      } else {
20128
        // Else call normal init
20129
        superInit.apply(this, arguments);
20130
      }
20131
    };
20132
    subInit.prototype = WordArray;
20133
  })();
20134
  return CryptoJS.lib.WordArray;
20135
});
20136
20137
/***/ }),
20138
20139
/***/ 3440:
20140
/***/ (function(module, exports, __webpack_require__) {
20141
20142
"use strict";
20143
20144
20145
;
20146
(function (root, factory) {
20147
  if (true) {
20148
    // CommonJS
20149
    module.exports = exports = factory(__webpack_require__(757));
20150
  } else {}
20151
})(void 0, function (CryptoJS) {
20152
  (function (Math) {
20153
    // Shortcuts
20154
    var C = CryptoJS;
20155
    var C_lib = C.lib;
20156
    var WordArray = C_lib.WordArray;
20157
    var Hasher = C_lib.Hasher;
20158
    var C_algo = C.algo;
20159
20160
    // Constants table
20161
    var T = [];
20162
20163
    // Compute constants
20164
    (function () {
20165
      for (var i = 0; i < 64; i++) {
20166
        T[i] = Math.abs(Math.sin(i + 1)) * 0x100000000 | 0;
20167
      }
20168
    })();
20169
20170
    /**
20171
     * MD5 hash algorithm.
20172
     */
20173
    var MD5 = C_algo.MD5 = Hasher.extend({
20174
      _doReset: function _doReset() {
20175
        this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);
20176
      },
20177
      _doProcessBlock: function _doProcessBlock(M, offset) {
20178
        // Swap endian
20179
        for (var i = 0; i < 16; i++) {
20180
          // Shortcuts
20181
          var offset_i = offset + i;
20182
          var M_offset_i = M[offset_i];
20183
          M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;
20184
        }
20185
20186
        // Shortcuts
20187
        var H = this._hash.words;
20188
        var M_offset_0 = M[offset + 0];
20189
        var M_offset_1 = M[offset + 1];
20190
        var M_offset_2 = M[offset + 2];
20191
        var M_offset_3 = M[offset + 3];
20192
        var M_offset_4 = M[offset + 4];
20193
        var M_offset_5 = M[offset + 5];
20194
        var M_offset_6 = M[offset + 6];
20195
        var M_offset_7 = M[offset + 7];
20196
        var M_offset_8 = M[offset + 8];
20197
        var M_offset_9 = M[offset + 9];
20198
        var M_offset_10 = M[offset + 10];
20199
        var M_offset_11 = M[offset + 11];
20200
        var M_offset_12 = M[offset + 12];
20201
        var M_offset_13 = M[offset + 13];
20202
        var M_offset_14 = M[offset + 14];
20203
        var M_offset_15 = M[offset + 15];
20204
20205
        // Working varialbes
20206
        var a = H[0];
20207
        var b = H[1];
20208
        var c = H[2];
20209
        var d = H[3];
20210
20211
        // Computation
20212
        a = FF(a, b, c, d, M_offset_0, 7, T[0]);
20213
        d = FF(d, a, b, c, M_offset_1, 12, T[1]);
20214
        c = FF(c, d, a, b, M_offset_2, 17, T[2]);
20215
        b = FF(b, c, d, a, M_offset_3, 22, T[3]);
20216
        a = FF(a, b, c, d, M_offset_4, 7, T[4]);
20217
        d = FF(d, a, b, c, M_offset_5, 12, T[5]);
20218
        c = FF(c, d, a, b, M_offset_6, 17, T[6]);
20219
        b = FF(b, c, d, a, M_offset_7, 22, T[7]);
20220
        a = FF(a, b, c, d, M_offset_8, 7, T[8]);
20221
        d = FF(d, a, b, c, M_offset_9, 12, T[9]);
20222
        c = FF(c, d, a, b, M_offset_10, 17, T[10]);
20223
        b = FF(b, c, d, a, M_offset_11, 22, T[11]);
20224
        a = FF(a, b, c, d, M_offset_12, 7, T[12]);
20225
        d = FF(d, a, b, c, M_offset_13, 12, T[13]);
20226
        c = FF(c, d, a, b, M_offset_14, 17, T[14]);
20227
        b = FF(b, c, d, a, M_offset_15, 22, T[15]);
20228
        a = GG(a, b, c, d, M_offset_1, 5, T[16]);
20229
        d = GG(d, a, b, c, M_offset_6, 9, T[17]);
20230
        c = GG(c, d, a, b, M_offset_11, 14, T[18]);
20231
        b = GG(b, c, d, a, M_offset_0, 20, T[19]);
20232
        a = GG(a, b, c, d, M_offset_5, 5, T[20]);
20233
        d = GG(d, a, b, c, M_offset_10, 9, T[21]);
20234
        c = GG(c, d, a, b, M_offset_15, 14, T[22]);
20235
        b = GG(b, c, d, a, M_offset_4, 20, T[23]);
20236
        a = GG(a, b, c, d, M_offset_9, 5, T[24]);
20237
        d = GG(d, a, b, c, M_offset_14, 9, T[25]);
20238
        c = GG(c, d, a, b, M_offset_3, 14, T[26]);
20239
        b = GG(b, c, d, a, M_offset_8, 20, T[27]);
20240
        a = GG(a, b, c, d, M_offset_13, 5, T[28]);
20241
        d = GG(d, a, b, c, M_offset_2, 9, T[29]);
20242
        c = GG(c, d, a, b, M_offset_7, 14, T[30]);
20243
        b = GG(b, c, d, a, M_offset_12, 20, T[31]);
20244
        a = HH(a, b, c, d, M_offset_5, 4, T[32]);
20245
        d = HH(d, a, b, c, M_offset_8, 11, T[33]);
20246
        c = HH(c, d, a, b, M_offset_11, 16, T[34]);
20247
        b = HH(b, c, d, a, M_offset_14, 23, T[35]);
20248
        a = HH(a, b, c, d, M_offset_1, 4, T[36]);
20249
        d = HH(d, a, b, c, M_offset_4, 11, T[37]);
20250
        c = HH(c, d, a, b, M_offset_7, 16, T[38]);
20251
        b = HH(b, c, d, a, M_offset_10, 23, T[39]);
20252
        a = HH(a, b, c, d, M_offset_13, 4, T[40]);
20253
        d = HH(d, a, b, c, M_offset_0, 11, T[41]);
20254
        c = HH(c, d, a, b, M_offset_3, 16, T[42]);
20255
        b = HH(b, c, d, a, M_offset_6, 23, T[43]);
20256
        a = HH(a, b, c, d, M_offset_9, 4, T[44]);
20257
        d = HH(d, a, b, c, M_offset_12, 11, T[45]);
20258
        c = HH(c, d, a, b, M_offset_15, 16, T[46]);
20259
        b = HH(b, c, d, a, M_offset_2, 23, T[47]);
20260
        a = II(a, b, c, d, M_offset_0, 6, T[48]);
20261
        d = II(d, a, b, c, M_offset_7, 10, T[49]);
20262
        c = II(c, d, a, b, M_offset_14, 15, T[50]);
20263
        b = II(b, c, d, a, M_offset_5, 21, T[51]);
20264
        a = II(a, b, c, d, M_offset_12, 6, T[52]);
20265
        d = II(d, a, b, c, M_offset_3, 10, T[53]);
20266
        c = II(c, d, a, b, M_offset_10, 15, T[54]);
20267
        b = II(b, c, d, a, M_offset_1, 21, T[55]);
20268
        a = II(a, b, c, d, M_offset_8, 6, T[56]);
20269
        d = II(d, a, b, c, M_offset_15, 10, T[57]);
20270
        c = II(c, d, a, b, M_offset_6, 15, T[58]);
20271
        b = II(b, c, d, a, M_offset_13, 21, T[59]);
20272
        a = II(a, b, c, d, M_offset_4, 6, T[60]);
20273
        d = II(d, a, b, c, M_offset_11, 10, T[61]);
20274
        c = II(c, d, a, b, M_offset_2, 15, T[62]);
20275
        b = II(b, c, d, a, M_offset_9, 21, T[63]);
20276
20277
        // Intermediate hash value
20278
        H[0] = H[0] + a | 0;
20279
        H[1] = H[1] + b | 0;
20280
        H[2] = H[2] + c | 0;
20281
        H[3] = H[3] + d | 0;
20282
      },
20283
      _doFinalize: function _doFinalize() {
20284
        // Shortcuts
20285
        var data = this._data;
20286
        var dataWords = data.words;
20287
        var nBitsTotal = this._nDataBytes * 8;
20288
        var nBitsLeft = data.sigBytes * 8;
20289
20290
        // Add padding
20291
        dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;
20292
        var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
20293
        var nBitsTotalL = nBitsTotal;
20294
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 0x00ff00ff | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 0xff00ff00;
20295
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 0x00ff00ff | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 0xff00ff00;
20296
        data.sigBytes = (dataWords.length + 1) * 4;
20297
20298
        // Hash final blocks
20299
        this._process();
20300
20301
        // Shortcuts
20302
        var hash = this._hash;
20303
        var H = hash.words;
20304
20305
        // Swap endian
20306
        for (var i = 0; i < 4; i++) {
20307
          // Shortcut
20308
          var H_i = H[i];
20309
          H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;
20310
        }
20311
20312
        // Return final computed hash
20313
        return hash;
20314
      },
20315
      clone: function clone() {
20316
        var clone = Hasher.clone.call(this);
20317
        clone._hash = this._hash.clone();
20318
        return clone;
20319
      }
20320
    });
20321
    function FF(a, b, c, d, x, s, t) {
20322
      var n = a + (b & c | ~b & d) + x + t;
20323
      return (n << s | n >>> 32 - s) + b;
20324
    }
20325
    function GG(a, b, c, d, x, s, t) {
20326
      var n = a + (b & d | c & ~d) + x + t;
20327
      return (n << s | n >>> 32 - s) + b;
20328
    }
20329
    function HH(a, b, c, d, x, s, t) {
20330
      var n = a + (b ^ c ^ d) + x + t;
20331
      return (n << s | n >>> 32 - s) + b;
20332
    }
20333
    function II(a, b, c, d, x, s, t) {
20334
      var n = a + (c ^ (b | ~d)) + x + t;
20335
      return (n << s | n >>> 32 - s) + b;
20336
    }
20337
20338
    /**
20339
     * Shortcut function to the hasher's object interface.
20340
     *
20341
     * @param {WordArray|string} message The message to hash.
20342
     *
20343
     * @return {WordArray} The hash.
20344
     *
20345
     * @static
20346
     *
20347
     * @example
20348
     *
20349
     *     var hash = CryptoJS.MD5('message');
20350
     *     var hash = CryptoJS.MD5(wordArray);
20351
     */
20352
    C.MD5 = Hasher._createHelper(MD5);
20353
20354
    /**
20355
     * Shortcut function to the HMAC's object interface.
20356
     *
20357
     * @param {WordArray|string} message The message to hash.
20358
     * @param {WordArray|string} key The secret key.
20359
     *
20360
     * @return {WordArray} The HMAC.
20361
     *
20362
     * @static
20363
     *
20364
     * @example
20365
     *
20366
     *     var hmac = CryptoJS.HmacMD5(message, key);
20367
     */
20368
    C.HmacMD5 = Hasher._createHmacHelper(MD5);
20369
  })(Math);
20370
  return CryptoJS.MD5;
20371
});
20372
20373
/***/ }),
20374
20375
/***/ 702:
20376
/***/ (function(module, exports, __webpack_require__) {
20377
20378
"use strict";
20379
20380
20381
__webpack_require__(7042);
20382
;
20383
(function (root, factory, undef) {
20384
  if (true) {
20385
    // CommonJS
20386
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20387
  } else {}
20388
})(void 0, function (CryptoJS) {
20389
  /**
20390
   * Cipher Feedback block mode.
20391
   */
20392
  CryptoJS.mode.CFB = function () {
20393
    var CFB = CryptoJS.lib.BlockCipherMode.extend();
20394
    CFB.Encryptor = CFB.extend({
20395
      processBlock: function processBlock(words, offset) {
20396
        // Shortcuts
20397
        var cipher = this._cipher;
20398
        var blockSize = cipher.blockSize;
20399
        generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
20400
20401
        // Remember this block to use with next block
20402
        this._prevBlock = words.slice(offset, offset + blockSize);
20403
      }
20404
    });
20405
    CFB.Decryptor = CFB.extend({
20406
      processBlock: function processBlock(words, offset) {
20407
        // Shortcuts
20408
        var cipher = this._cipher;
20409
        var blockSize = cipher.blockSize;
20410
20411
        // Remember this block to use with next block
20412
        var thisBlock = words.slice(offset, offset + blockSize);
20413
        generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
20414
20415
        // This block becomes the previous block
20416
        this._prevBlock = thisBlock;
20417
      }
20418
    });
20419
    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
20420
      var keystream;
20421
20422
      // Shortcut
20423
      var iv = this._iv;
20424
20425
      // Generate keystream
20426
      if (iv) {
20427
        keystream = iv.slice(0);
20428
20429
        // Remove IV for subsequent blocks
20430
        this._iv = undefined;
20431
      } else {
20432
        keystream = this._prevBlock;
20433
      }
20434
      cipher.encryptBlock(keystream, 0);
20435
20436
      // Encrypt
20437
      for (var i = 0; i < blockSize; i++) {
20438
        words[offset + i] ^= keystream[i];
20439
      }
20440
    }
20441
    return CFB;
20442
  }();
20443
  return CryptoJS.mode.CFB;
20444
});
20445
20446
/***/ }),
20447
20448
/***/ 4412:
20449
/***/ (function(module, exports, __webpack_require__) {
20450
20451
"use strict";
20452
20453
20454
__webpack_require__(7042);
20455
;
20456
(function (root, factory, undef) {
20457
  if (true) {
20458
    // CommonJS
20459
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20460
  } else {}
20461
})(void 0, function (CryptoJS) {
20462
  /** @preserve
20463
   * Counter block mode compatible with  Dr Brian Gladman fileenc.c
20464
   * derived from CryptoJS.mode.CTR
20465
   * Jan Hruby jhruby.web@gmail.com
20466
   */
20467
  CryptoJS.mode.CTRGladman = function () {
20468
    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
20469
    function incWord(word) {
20470
      if ((word >> 24 & 0xff) === 0xff) {
20471
        //overflow
20472
        var b1 = word >> 16 & 0xff;
20473
        var b2 = word >> 8 & 0xff;
20474
        var b3 = word & 0xff;
20475
        if (b1 === 0xff)
20476
          // overflow b1
20477
          {
20478
            b1 = 0;
20479
            if (b2 === 0xff) {
20480
              b2 = 0;
20481
              if (b3 === 0xff) {
20482
                b3 = 0;
20483
              } else {
20484
                ++b3;
20485
              }
20486
            } else {
20487
              ++b2;
20488
            }
20489
          } else {
20490
          ++b1;
20491
        }
20492
        word = 0;
20493
        word += b1 << 16;
20494
        word += b2 << 8;
20495
        word += b3;
20496
      } else {
20497
        word += 0x01 << 24;
20498
      }
20499
      return word;
20500
    }
20501
    function incCounter(counter) {
20502
      if ((counter[0] = incWord(counter[0])) === 0) {
20503
        // encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j < 8
20504
        counter[1] = incWord(counter[1]);
20505
      }
20506
      return counter;
20507
    }
20508
    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
20509
      processBlock: function processBlock(words, offset) {
20510
        // Shortcuts
20511
        var cipher = this._cipher;
20512
        var blockSize = cipher.blockSize;
20513
        var iv = this._iv;
20514
        var counter = this._counter;
20515
20516
        // Generate keystream
20517
        if (iv) {
20518
          counter = this._counter = iv.slice(0);
20519
20520
          // Remove IV for subsequent blocks
20521
          this._iv = undefined;
20522
        }
20523
        incCounter(counter);
20524
        var keystream = counter.slice(0);
20525
        cipher.encryptBlock(keystream, 0);
20526
20527
        // Encrypt
20528
        for (var i = 0; i < blockSize; i++) {
20529
          words[offset + i] ^= keystream[i];
20530
        }
20531
      }
20532
    });
20533
    CTRGladman.Decryptor = Encryptor;
20534
    return CTRGladman;
20535
  }();
20536
  return CryptoJS.mode.CTRGladman;
20537
});
20538
20539
/***/ }),
20540
20541
/***/ 2362:
20542
/***/ (function(module, exports, __webpack_require__) {
20543
20544
"use strict";
20545
20546
20547
__webpack_require__(7042);
20548
;
20549
(function (root, factory, undef) {
20550
  if (true) {
20551
    // CommonJS
20552
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20553
  } else {}
20554
})(void 0, function (CryptoJS) {
20555
  /**
20556
   * Counter block mode.
20557
   */
20558
  CryptoJS.mode.CTR = function () {
20559
    var CTR = CryptoJS.lib.BlockCipherMode.extend();
20560
    var Encryptor = CTR.Encryptor = CTR.extend({
20561
      processBlock: function processBlock(words, offset) {
20562
        // Shortcuts
20563
        var cipher = this._cipher;
20564
        var blockSize = cipher.blockSize;
20565
        var iv = this._iv;
20566
        var counter = this._counter;
20567
20568
        // Generate keystream
20569
        if (iv) {
20570
          counter = this._counter = iv.slice(0);
20571
20572
          // Remove IV for subsequent blocks
20573
          this._iv = undefined;
20574
        }
20575
        var keystream = counter.slice(0);
20576
        cipher.encryptBlock(keystream, 0);
20577
20578
        // Increment counter
20579
        counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0;
20580
20581
        // Encrypt
20582
        for (var i = 0; i < blockSize; i++) {
20583
          words[offset + i] ^= keystream[i];
20584
        }
20585
      }
20586
    });
20587
    CTR.Decryptor = Encryptor;
20588
    return CTR;
20589
  }();
20590
  return CryptoJS.mode.CTR;
20591
});
20592
20593
/***/ }),
20594
20595
/***/ 3518:
20596
/***/ (function(module, exports, __webpack_require__) {
20597
20598
"use strict";
20599
20600
20601
;
20602
(function (root, factory, undef) {
20603
  if (true) {
20604
    // CommonJS
20605
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20606
  } else {}
20607
})(void 0, function (CryptoJS) {
20608
  /**
20609
   * Electronic Codebook block mode.
20610
   */
20611
  CryptoJS.mode.ECB = function () {
20612
    var ECB = CryptoJS.lib.BlockCipherMode.extend();
20613
    ECB.Encryptor = ECB.extend({
20614
      processBlock: function processBlock(words, offset) {
20615
        this._cipher.encryptBlock(words, offset);
20616
      }
20617
    });
20618
    ECB.Decryptor = ECB.extend({
20619
      processBlock: function processBlock(words, offset) {
20620
        this._cipher.decryptBlock(words, offset);
20621
      }
20622
    });
20623
    return ECB;
20624
  }();
20625
  return CryptoJS.mode.ECB;
20626
});
20627
20628
/***/ }),
20629
20630
/***/ 5720:
20631
/***/ (function(module, exports, __webpack_require__) {
20632
20633
"use strict";
20634
20635
20636
__webpack_require__(7042);
20637
;
20638
(function (root, factory, undef) {
20639
  if (true) {
20640
    // CommonJS
20641
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20642
  } else {}
20643
})(void 0, function (CryptoJS) {
20644
  /**
20645
   * Output Feedback block mode.
20646
   */
20647
  CryptoJS.mode.OFB = function () {
20648
    var OFB = CryptoJS.lib.BlockCipherMode.extend();
20649
    var Encryptor = OFB.Encryptor = OFB.extend({
20650
      processBlock: function processBlock(words, offset) {
20651
        // Shortcuts
20652
        var cipher = this._cipher;
20653
        var blockSize = cipher.blockSize;
20654
        var iv = this._iv;
20655
        var keystream = this._keystream;
20656
20657
        // Generate keystream
20658
        if (iv) {
20659
          keystream = this._keystream = iv.slice(0);
20660
20661
          // Remove IV for subsequent blocks
20662
          this._iv = undefined;
20663
        }
20664
        cipher.encryptBlock(keystream, 0);
20665
20666
        // Encrypt
20667
        for (var i = 0; i < blockSize; i++) {
20668
          words[offset + i] ^= keystream[i];
20669
        }
20670
      }
20671
    });
20672
    OFB.Decryptor = Encryptor;
20673
    return OFB;
20674
  }();
20675
  return CryptoJS.mode.OFB;
20676
});
20677
20678
/***/ }),
20679
20680
/***/ 6362:
20681
/***/ (function(module, exports, __webpack_require__) {
20682
20683
"use strict";
20684
20685
20686
;
20687
(function (root, factory, undef) {
20688
  if (true) {
20689
    // CommonJS
20690
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20691
  } else {}
20692
})(void 0, function (CryptoJS) {
20693
  /**
20694
   * ANSI X.923 padding strategy.
20695
   */
20696
  CryptoJS.pad.AnsiX923 = {
20697
    pad: function pad(data, blockSize) {
20698
      // Shortcuts
20699
      var dataSigBytes = data.sigBytes;
20700
      var blockSizeBytes = blockSize * 4;
20701
20702
      // Count padding bytes
20703
      var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
20704
20705
      // Compute last byte position
20706
      var lastBytePos = dataSigBytes + nPaddingBytes - 1;
20707
20708
      // Pad
20709
      data.clamp();
20710
      data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8;
20711
      data.sigBytes += nPaddingBytes;
20712
    },
20713
    unpad: function unpad(data) {
20714
      // Get number of padding bytes from last byte
20715
      var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff;
20716
20717
      // Remove padding
20718
      data.sigBytes -= nPaddingBytes;
20719
    }
20720
  };
20721
  return CryptoJS.pad.Ansix923;
20722
});
20723
20724
/***/ }),
20725
20726
/***/ 4431:
20727
/***/ (function(module, exports, __webpack_require__) {
20728
20729
"use strict";
20730
20731
20732
__webpack_require__(2222);
20733
;
20734
(function (root, factory, undef) {
20735
  if (true) {
20736
    // CommonJS
20737
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20738
  } else {}
20739
})(void 0, function (CryptoJS) {
20740
  /**
20741
   * ISO 10126 padding strategy.
20742
   */
20743
  CryptoJS.pad.Iso10126 = {
20744
    pad: function pad(data, blockSize) {
20745
      // Shortcut
20746
      var blockSizeBytes = blockSize * 4;
20747
20748
      // Count padding bytes
20749
      var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
20750
20751
      // Pad
20752
      data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
20753
    },
20754
    unpad: function unpad(data) {
20755
      // Get number of padding bytes from last byte
20756
      var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff;
20757
20758
      // Remove padding
20759
      data.sigBytes -= nPaddingBytes;
20760
    }
20761
  };
20762
  return CryptoJS.pad.Iso10126;
20763
});
20764
20765
/***/ }),
20766
20767
/***/ 8800:
20768
/***/ (function(module, exports, __webpack_require__) {
20769
20770
"use strict";
20771
20772
20773
__webpack_require__(2222);
20774
;
20775
(function (root, factory, undef) {
20776
  if (true) {
20777
    // CommonJS
20778
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20779
  } else {}
20780
})(void 0, function (CryptoJS) {
20781
  /**
20782
   * ISO/IEC 9797-1 Padding Method 2.
20783
   */
20784
  CryptoJS.pad.Iso97971 = {
20785
    pad: function pad(data, blockSize) {
20786
      // Add 0x80 byte
20787
      data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));
20788
20789
      // Zero pad the rest
20790
      CryptoJS.pad.ZeroPadding.pad(data, blockSize);
20791
    },
20792
    unpad: function unpad(data) {
20793
      // Remove zero padding
20794
      CryptoJS.pad.ZeroPadding.unpad(data);
20795
20796
      // Remove one more byte -- the 0x80 byte
20797
      data.sigBytes--;
20798
    }
20799
  };
20800
  return CryptoJS.pad.Iso97971;
20801
});
20802
20803
/***/ }),
20804
20805
/***/ 649:
20806
/***/ (function(module, exports, __webpack_require__) {
20807
20808
"use strict";
20809
20810
20811
;
20812
(function (root, factory, undef) {
20813
  if (true) {
20814
    // CommonJS
20815
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20816
  } else {}
20817
})(void 0, function (CryptoJS) {
20818
  /**
20819
   * A noop padding strategy.
20820
   */
20821
  CryptoJS.pad.NoPadding = {
20822
    pad: function pad() {},
20823
    unpad: function unpad() {}
20824
  };
20825
  return CryptoJS.pad.NoPadding;
20826
});
20827
20828
/***/ }),
20829
20830
/***/ 3992:
20831
/***/ (function(module, exports, __webpack_require__) {
20832
20833
"use strict";
20834
20835
20836
;
20837
(function (root, factory, undef) {
20838
  if (true) {
20839
    // CommonJS
20840
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(1582));
20841
  } else {}
20842
})(void 0, function (CryptoJS) {
20843
  /**
20844
   * Zero padding strategy.
20845
   */
20846
  CryptoJS.pad.ZeroPadding = {
20847
    pad: function pad(data, blockSize) {
20848
      // Shortcut
20849
      var blockSizeBytes = blockSize * 4;
20850
20851
      // Pad
20852
      data.clamp();
20853
      data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);
20854
    },
20855
    unpad: function unpad(data) {
20856
      // Shortcut
20857
      var dataWords = data.words;
20858
20859
      // Unpad
20860
      var i = data.sigBytes - 1;
20861
      for (var i = data.sigBytes - 1; i >= 0; i--) {
20862
        if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff) {
20863
          data.sigBytes = i + 1;
20864
          break;
20865
        }
20866
      }
20867
    }
20868
  };
20869
  return CryptoJS.pad.ZeroPadding;
20870
});
20871
20872
/***/ }),
20873
20874
/***/ 3486:
20875
/***/ (function(module, exports, __webpack_require__) {
20876
20877
"use strict";
20878
20879
20880
__webpack_require__(2222);
20881
;
20882
(function (root, factory, undef) {
20883
  if (true) {
20884
    // CommonJS
20885
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(9865), __webpack_require__(6727));
20886
  } else {}
20887
})(void 0, function (CryptoJS) {
20888
  (function () {
20889
    // Shortcuts
20890
    var C = CryptoJS;
20891
    var C_lib = C.lib;
20892
    var Base = C_lib.Base;
20893
    var WordArray = C_lib.WordArray;
20894
    var C_algo = C.algo;
20895
    var SHA1 = C_algo.SHA1;
20896
    var HMAC = C_algo.HMAC;
20897
20898
    /**
20899
     * Password-Based Key Derivation Function 2 algorithm.
20900
     */
20901
    var PBKDF2 = C_algo.PBKDF2 = Base.extend({
20902
      /**
20903
       * Configuration options.
20904
       *
20905
       * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
20906
       * @property {Hasher} hasher The hasher to use. Default: SHA1
20907
       * @property {number} iterations The number of iterations to perform. Default: 1
20908
       */
20909
      cfg: Base.extend({
20910
        keySize: 128 / 32,
20911
        hasher: SHA1,
20912
        iterations: 1
20913
      }),
20914
      /**
20915
       * Initializes a newly created key derivation function.
20916
       *
20917
       * @param {Object} cfg (Optional) The configuration options to use for the derivation.
20918
       *
20919
       * @example
20920
       *
20921
       *     var kdf = CryptoJS.algo.PBKDF2.create();
20922
       *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
20923
       *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
20924
       */
20925
      init: function init(cfg) {
20926
        this.cfg = this.cfg.extend(cfg);
20927
      },
20928
      /**
20929
       * Computes the Password-Based Key Derivation Function 2.
20930
       *
20931
       * @param {WordArray|string} password The password.
20932
       * @param {WordArray|string} salt A salt.
20933
       *
20934
       * @return {WordArray} The derived key.
20935
       *
20936
       * @example
20937
       *
20938
       *     var key = kdf.compute(password, salt);
20939
       */
20940
      compute: function compute(password, salt) {
20941
        // Shortcut
20942
        var cfg = this.cfg;
20943
20944
        // Init HMAC
20945
        var hmac = HMAC.create(cfg.hasher, password);
20946
20947
        // Initial values
20948
        var derivedKey = WordArray.create();
20949
        var blockIndex = WordArray.create([0x00000001]);
20950
20951
        // Shortcuts
20952
        var derivedKeyWords = derivedKey.words;
20953
        var blockIndexWords = blockIndex.words;
20954
        var keySize = cfg.keySize;
20955
        var iterations = cfg.iterations;
20956
20957
        // Generate key
20958
        while (derivedKeyWords.length < keySize) {
20959
          var block = hmac.update(salt).finalize(blockIndex);
20960
          hmac.reset();
20961
20962
          // Shortcuts
20963
          var blockWords = block.words;
20964
          var blockWordsLength = blockWords.length;
20965
20966
          // Iterations
20967
          var intermediate = block;
20968
          for (var i = 1; i < iterations; i++) {
20969
            intermediate = hmac.finalize(intermediate);
20970
            hmac.reset();
20971
20972
            // Shortcut
20973
            var intermediateWords = intermediate.words;
20974
20975
            // XOR intermediate with block
20976
            for (var j = 0; j < blockWordsLength; j++) {
20977
              blockWords[j] ^= intermediateWords[j];
20978
            }
20979
          }
20980
          derivedKey.concat(block);
20981
          blockIndexWords[0]++;
20982
        }
20983
        derivedKey.sigBytes = keySize * 4;
20984
        return derivedKey;
20985
      }
20986
    });
20987
20988
    /**
20989
     * Computes the Password-Based Key Derivation Function 2.
20990
     *
20991
     * @param {WordArray|string} password The password.
20992
     * @param {WordArray|string} salt A salt.
20993
     * @param {Object} cfg (Optional) The configuration options to use for this computation.
20994
     *
20995
     * @return {WordArray} The derived key.
20996
     *
20997
     * @static
20998
     *
20999
     * @example
21000
     *
21001
     *     var key = CryptoJS.PBKDF2(password, salt);
21002
     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
21003
     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
21004
     */
21005
    C.PBKDF2 = function (password, salt, cfg) {
21006
      return PBKDF2.create(cfg).compute(password, salt);
21007
    };
21008
  })();
21009
  return CryptoJS.PBKDF2;
21010
});
21011
21012
/***/ }),
21013
21014
/***/ 4363:
21015
/***/ (function(module, exports, __webpack_require__) {
21016
21017
"use strict";
21018
21019
21020
;
21021
(function (root, factory, undef) {
21022
  if (true) {
21023
    // CommonJS
21024
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(7508), __webpack_require__(3440), __webpack_require__(3839), __webpack_require__(1582));
21025
  } else {}
21026
})(void 0, function (CryptoJS) {
21027
  (function () {
21028
    // Shortcuts
21029
    var C = CryptoJS;
21030
    var C_lib = C.lib;
21031
    var StreamCipher = C_lib.StreamCipher;
21032
    var C_algo = C.algo;
21033
21034
    // Reusable objects
21035
    var S = [];
21036
    var C_ = [];
21037
    var G = [];
21038
21039
    /**
21040
     * Rabbit stream cipher algorithm.
21041
     *
21042
     * This is a legacy version that neglected to convert the key to little-endian.
21043
     * This error doesn't affect the cipher's security,
21044
     * but it does affect its compatibility with other implementations.
21045
     */
21046
    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
21047
      _doReset: function _doReset() {
21048
        // Shortcuts
21049
        var K = this._key.words;
21050
        var iv = this.cfg.iv;
21051
21052
        // Generate initial state values
21053
        var X = this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16];
21054
21055
        // Generate initial counter values
21056
        var C = this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff];
21057
21058
        // Carry bit
21059
        this._b = 0;
21060
21061
        // Iterate the system four times
21062
        for (var i = 0; i < 4; i++) {
21063
          nextState.call(this);
21064
        }
21065
21066
        // Modify the counters
21067
        for (var i = 0; i < 8; i++) {
21068
          C[i] ^= X[i + 4 & 7];
21069
        }
21070
21071
        // IV setup
21072
        if (iv) {
21073
          // Shortcuts
21074
          var IV = iv.words;
21075
          var IV_0 = IV[0];
21076
          var IV_1 = IV[1];
21077
21078
          // Generate four subvectors
21079
          var i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00;
21080
          var i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00;
21081
          var i1 = i0 >>> 16 | i2 & 0xffff0000;
21082
          var i3 = i2 << 16 | i0 & 0x0000ffff;
21083
21084
          // Modify counter values
21085
          C[0] ^= i0;
21086
          C[1] ^= i1;
21087
          C[2] ^= i2;
21088
          C[3] ^= i3;
21089
          C[4] ^= i0;
21090
          C[5] ^= i1;
21091
          C[6] ^= i2;
21092
          C[7] ^= i3;
21093
21094
          // Iterate the system four times
21095
          for (var i = 0; i < 4; i++) {
21096
            nextState.call(this);
21097
          }
21098
        }
21099
      },
21100
      _doProcessBlock: function _doProcessBlock(M, offset) {
21101
        // Shortcut
21102
        var X = this._X;
21103
21104
        // Iterate the system
21105
        nextState.call(this);
21106
21107
        // Generate four keystream words
21108
        S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
21109
        S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
21110
        S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
21111
        S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
21112
        for (var i = 0; i < 4; i++) {
21113
          // Swap endian
21114
          S[i] = (S[i] << 8 | S[i] >>> 24) & 0x00ff00ff | (S[i] << 24 | S[i] >>> 8) & 0xff00ff00;
21115
21116
          // Encrypt
21117
          M[offset + i] ^= S[i];
21118
        }
21119
      },
21120
      blockSize: 128 / 32,
21121
      ivSize: 64 / 32
21122
    });
21123
    function nextState() {
21124
      // Shortcuts
21125
      var X = this._X;
21126
      var C = this._C;
21127
21128
      // Save old counter values
21129
      for (var i = 0; i < 8; i++) {
21130
        C_[i] = C[i];
21131
      }
21132
21133
      // Calculate new counter values
21134
      C[0] = C[0] + 0x4d34d34d + this._b | 0;
21135
      C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
21136
      C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
21137
      C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
21138
      C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
21139
      C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
21140
      C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
21141
      C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
21142
      this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
21143
21144
      // Calculate the g-values
21145
      for (var i = 0; i < 8; i++) {
21146
        var gx = X[i] + C[i];
21147
21148
        // Construct high and low argument for squaring
21149
        var ga = gx & 0xffff;
21150
        var gb = gx >>> 16;
21151
21152
        // Calculate high and low result of squaring
21153
        var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
21154
        var gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0);
21155
21156
        // High XOR low
21157
        G[i] = gh ^ gl;
21158
      }
21159
21160
      // Calculate new state values
21161
      X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
21162
      X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
21163
      X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
21164
      X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
21165
      X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
21166
      X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
21167
      X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
21168
      X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
21169
    }
21170
21171
    /**
21172
     * Shortcut functions to the cipher's object interface.
21173
     *
21174
     * @example
21175
     *
21176
     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
21177
     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
21178
     */
21179
    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
21180
  })();
21181
  return CryptoJS.RabbitLegacy;
21182
});
21183
21184
/***/ }),
21185
21186
/***/ 5323:
21187
/***/ (function(module, exports, __webpack_require__) {
21188
21189
"use strict";
21190
21191
21192
;
21193
(function (root, factory, undef) {
21194
  if (true) {
21195
    // CommonJS
21196
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(7508), __webpack_require__(3440), __webpack_require__(3839), __webpack_require__(1582));
21197
  } else {}
21198
})(void 0, function (CryptoJS) {
21199
  (function () {
21200
    // Shortcuts
21201
    var C = CryptoJS;
21202
    var C_lib = C.lib;
21203
    var StreamCipher = C_lib.StreamCipher;
21204
    var C_algo = C.algo;
21205
21206
    // Reusable objects
21207
    var S = [];
21208
    var C_ = [];
21209
    var G = [];
21210
21211
    /**
21212
     * Rabbit stream cipher algorithm
21213
     */
21214
    var Rabbit = C_algo.Rabbit = StreamCipher.extend({
21215
      _doReset: function _doReset() {
21216
        // Shortcuts
21217
        var K = this._key.words;
21218
        var iv = this.cfg.iv;
21219
21220
        // Swap endian
21221
        for (var i = 0; i < 4; i++) {
21222
          K[i] = (K[i] << 8 | K[i] >>> 24) & 0x00ff00ff | (K[i] << 24 | K[i] >>> 8) & 0xff00ff00;
21223
        }
21224
21225
        // Generate initial state values
21226
        var X = this._X = [K[0], K[3] << 16 | K[2] >>> 16, K[1], K[0] << 16 | K[3] >>> 16, K[2], K[1] << 16 | K[0] >>> 16, K[3], K[2] << 16 | K[1] >>> 16];
21227
21228
        // Generate initial counter values
21229
        var C = this._C = [K[2] << 16 | K[2] >>> 16, K[0] & 0xffff0000 | K[1] & 0x0000ffff, K[3] << 16 | K[3] >>> 16, K[1] & 0xffff0000 | K[2] & 0x0000ffff, K[0] << 16 | K[0] >>> 16, K[2] & 0xffff0000 | K[3] & 0x0000ffff, K[1] << 16 | K[1] >>> 16, K[3] & 0xffff0000 | K[0] & 0x0000ffff];
21230
21231
        // Carry bit
21232
        this._b = 0;
21233
21234
        // Iterate the system four times
21235
        for (var i = 0; i < 4; i++) {
21236
          nextState.call(this);
21237
        }
21238
21239
        // Modify the counters
21240
        for (var i = 0; i < 8; i++) {
21241
          C[i] ^= X[i + 4 & 7];
21242
        }
21243
21244
        // IV setup
21245
        if (iv) {
21246
          // Shortcuts
21247
          var IV = iv.words;
21248
          var IV_0 = IV[0];
21249
          var IV_1 = IV[1];
21250
21251
          // Generate four subvectors
21252
          var i0 = (IV_0 << 8 | IV_0 >>> 24) & 0x00ff00ff | (IV_0 << 24 | IV_0 >>> 8) & 0xff00ff00;
21253
          var i2 = (IV_1 << 8 | IV_1 >>> 24) & 0x00ff00ff | (IV_1 << 24 | IV_1 >>> 8) & 0xff00ff00;
21254
          var i1 = i0 >>> 16 | i2 & 0xffff0000;
21255
          var i3 = i2 << 16 | i0 & 0x0000ffff;
21256
21257
          // Modify counter values
21258
          C[0] ^= i0;
21259
          C[1] ^= i1;
21260
          C[2] ^= i2;
21261
          C[3] ^= i3;
21262
          C[4] ^= i0;
21263
          C[5] ^= i1;
21264
          C[6] ^= i2;
21265
          C[7] ^= i3;
21266
21267
          // Iterate the system four times
21268
          for (var i = 0; i < 4; i++) {
21269
            nextState.call(this);
21270
          }
21271
        }
21272
      },
21273
      _doProcessBlock: function _doProcessBlock(M, offset) {
21274
        // Shortcut
21275
        var X = this._X;
21276
21277
        // Iterate the system
21278
        nextState.call(this);
21279
21280
        // Generate four keystream words
21281
        S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
21282
        S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
21283
        S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
21284
        S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
21285
        for (var i = 0; i < 4; i++) {
21286
          // Swap endian
21287
          S[i] = (S[i] << 8 | S[i] >>> 24) & 0x00ff00ff | (S[i] << 24 | S[i] >>> 8) & 0xff00ff00;
21288
21289
          // Encrypt
21290
          M[offset + i] ^= S[i];
21291
        }
21292
      },
21293
      blockSize: 128 / 32,
21294
      ivSize: 64 / 32
21295
    });
21296
    function nextState() {
21297
      // Shortcuts
21298
      var X = this._X;
21299
      var C = this._C;
21300
21301
      // Save old counter values
21302
      for (var i = 0; i < 8; i++) {
21303
        C_[i] = C[i];
21304
      }
21305
21306
      // Calculate new counter values
21307
      C[0] = C[0] + 0x4d34d34d + this._b | 0;
21308
      C[1] = C[1] + 0xd34d34d3 + (C[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
21309
      C[2] = C[2] + 0x34d34d34 + (C[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
21310
      C[3] = C[3] + 0x4d34d34d + (C[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
21311
      C[4] = C[4] + 0xd34d34d3 + (C[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
21312
      C[5] = C[5] + 0x34d34d34 + (C[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
21313
      C[6] = C[6] + 0x4d34d34d + (C[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
21314
      C[7] = C[7] + 0xd34d34d3 + (C[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
21315
      this._b = C[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
21316
21317
      // Calculate the g-values
21318
      for (var i = 0; i < 8; i++) {
21319
        var gx = X[i] + C[i];
21320
21321
        // Construct high and low argument for squaring
21322
        var ga = gx & 0xffff;
21323
        var gb = gx >>> 16;
21324
21325
        // Calculate high and low result of squaring
21326
        var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
21327
        var gl = ((gx & 0xffff0000) * gx | 0) + ((gx & 0x0000ffff) * gx | 0);
21328
21329
        // High XOR low
21330
        G[i] = gh ^ gl;
21331
      }
21332
21333
      // Calculate new state values
21334
      X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
21335
      X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
21336
      X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
21337
      X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
21338
      X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
21339
      X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
21340
      X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
21341
      X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
21342
    }
21343
21344
    /**
21345
     * Shortcut functions to the cipher's object interface.
21346
     *
21347
     * @example
21348
     *
21349
     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
21350
     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
21351
     */
21352
    C.Rabbit = StreamCipher._createHelper(Rabbit);
21353
  })();
21354
  return CryptoJS.Rabbit;
21355
});
21356
21357
/***/ }),
21358
21359
/***/ 4640:
21360
/***/ (function(module, exports, __webpack_require__) {
21361
21362
"use strict";
21363
21364
21365
__webpack_require__(1539);
21366
__webpack_require__(8674);
21367
;
21368
(function (root, factory, undef) {
21369
  if (true) {
21370
    // CommonJS
21371
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(7508), __webpack_require__(3440), __webpack_require__(3839), __webpack_require__(1582));
21372
  } else {}
21373
})(void 0, function (CryptoJS) {
21374
  (function () {
21375
    // Shortcuts
21376
    var C = CryptoJS;
21377
    var C_lib = C.lib;
21378
    var StreamCipher = C_lib.StreamCipher;
21379
    var C_algo = C.algo;
21380
21381
    /**
21382
     * RC4 stream cipher algorithm.
21383
     */
21384
    var RC4 = C_algo.RC4 = StreamCipher.extend({
21385
      _doReset: function _doReset() {
21386
        // Shortcuts
21387
        var key = this._key;
21388
        var keyWords = key.words;
21389
        var keySigBytes = key.sigBytes;
21390
21391
        // Init sbox
21392
        var S = this._S = [];
21393
        for (var i = 0; i < 256; i++) {
21394
          S[i] = i;
21395
        }
21396
21397
        // Key setup
21398
        for (var i = 0, j = 0; i < 256; i++) {
21399
          var keyByteIndex = i % keySigBytes;
21400
          var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 0xff;
21401
          j = (j + S[i] + keyByte) % 256;
21402
21403
          // Swap
21404
          var t = S[i];
21405
          S[i] = S[j];
21406
          S[j] = t;
21407
        }
21408
21409
        // Counters
21410
        this._i = this._j = 0;
21411
      },
21412
      _doProcessBlock: function _doProcessBlock(M, offset) {
21413
        M[offset] ^= generateKeystreamWord.call(this);
21414
      },
21415
      keySize: 256 / 32,
21416
      ivSize: 0
21417
    });
21418
    function generateKeystreamWord() {
21419
      // Shortcuts
21420
      var S = this._S;
21421
      var i = this._i;
21422
      var j = this._j;
21423
21424
      // Generate keystream word
21425
      var keystreamWord = 0;
21426
      for (var n = 0; n < 4; n++) {
21427
        i = (i + 1) % 256;
21428
        j = (j + S[i]) % 256;
21429
21430
        // Swap
21431
        var t = S[i];
21432
        S[i] = S[j];
21433
        S[j] = t;
21434
        keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8;
21435
      }
21436
21437
      // Update counters
21438
      this._i = i;
21439
      this._j = j;
21440
      return keystreamWord;
21441
    }
21442
21443
    /**
21444
     * Shortcut functions to the cipher's object interface.
21445
     *
21446
     * @example
21447
     *
21448
     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
21449
     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
21450
     */
21451
    C.RC4 = StreamCipher._createHelper(RC4);
21452
21453
    /**
21454
     * Modified RC4 stream cipher algorithm.
21455
     */
21456
    var RC4Drop = C_algo.RC4Drop = RC4.extend({
21457
      /**
21458
       * Configuration options.
21459
       *
21460
       * @property {number} drop The number of keystream words to drop. Default 192
21461
       */
21462
      cfg: RC4.cfg.extend({
21463
        drop: 192
21464
      }),
21465
      _doReset: function _doReset() {
21466
        RC4._doReset.call(this);
21467
21468
        // Drop
21469
        for (var i = this.cfg.drop; i > 0; i--) {
21470
          generateKeystreamWord.call(this);
21471
        }
21472
      }
21473
    });
21474
21475
    /**
21476
     * Shortcut functions to the cipher's object interface.
21477
     *
21478
     * @example
21479
     *
21480
     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
21481
     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
21482
     */
21483
    C.RC4Drop = StreamCipher._createHelper(RC4Drop);
21484
  })();
21485
  return CryptoJS.RC4;
21486
});
21487
21488
/***/ }),
21489
21490
/***/ 8714:
21491
/***/ (function(module, exports, __webpack_require__) {
21492
21493
"use strict";
21494
21495
21496
;
21497
(function (root, factory) {
21498
  if (true) {
21499
    // CommonJS
21500
    module.exports = exports = factory(__webpack_require__(757));
21501
  } else {}
21502
})(void 0, function (CryptoJS) {
21503
  /** @preserve
21504
  (c) 2012 by Cédric Mesnil. All rights reserved.
21505
	Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
21506
	    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
21507
      - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
21508
	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21509
  */
21510
21511
  (function (Math) {
21512
    // Shortcuts
21513
    var C = CryptoJS;
21514
    var C_lib = C.lib;
21515
    var WordArray = C_lib.WordArray;
21516
    var Hasher = C_lib.Hasher;
21517
    var C_algo = C.algo;
21518
21519
    // Constants table
21520
    var _zl = WordArray.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);
21521
    var _zr = WordArray.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);
21522
    var _sl = WordArray.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]);
21523
    var _sr = WordArray.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]);
21524
    var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
21525
    var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);
21526
21527
    /**
21528
     * RIPEMD160 hash algorithm.
21529
     */
21530
    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
21531
      _doReset: function _doReset() {
21532
        this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
21533
      },
21534
      _doProcessBlock: function _doProcessBlock(M, offset) {
21535
        // Swap endian
21536
        for (var i = 0; i < 16; i++) {
21537
          // Shortcuts
21538
          var offset_i = offset + i;
21539
          var M_offset_i = M[offset_i];
21540
21541
          // Swap
21542
          M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;
21543
        }
21544
        // Shortcut
21545
        var H = this._hash.words;
21546
        var hl = _hl.words;
21547
        var hr = _hr.words;
21548
        var zl = _zl.words;
21549
        var zr = _zr.words;
21550
        var sl = _sl.words;
21551
        var sr = _sr.words;
21552
21553
        // Working variables
21554
        var al, bl, cl, dl, el;
21555
        var ar, br, cr, dr, er;
21556
        ar = al = H[0];
21557
        br = bl = H[1];
21558
        cr = cl = H[2];
21559
        dr = dl = H[3];
21560
        er = el = H[4];
21561
        // Computation
21562
        var t;
21563
        for (var i = 0; i < 80; i += 1) {
21564
          t = al + M[offset + zl[i]] | 0;
21565
          if (i < 16) {
21566
            t += f1(bl, cl, dl) + hl[0];
21567
          } else if (i < 32) {
21568
            t += f2(bl, cl, dl) + hl[1];
21569
          } else if (i < 48) {
21570
            t += f3(bl, cl, dl) + hl[2];
21571
          } else if (i < 64) {
21572
            t += f4(bl, cl, dl) + hl[3];
21573
          } else {
21574
            // if (i<80) {
21575
            t += f5(bl, cl, dl) + hl[4];
21576
          }
21577
          t = t | 0;
21578
          t = rotl(t, sl[i]);
21579
          t = t + el | 0;
21580
          al = el;
21581
          el = dl;
21582
          dl = rotl(cl, 10);
21583
          cl = bl;
21584
          bl = t;
21585
          t = ar + M[offset + zr[i]] | 0;
21586
          if (i < 16) {
21587
            t += f5(br, cr, dr) + hr[0];
21588
          } else if (i < 32) {
21589
            t += f4(br, cr, dr) + hr[1];
21590
          } else if (i < 48) {
21591
            t += f3(br, cr, dr) + hr[2];
21592
          } else if (i < 64) {
21593
            t += f2(br, cr, dr) + hr[3];
21594
          } else {
21595
            // if (i<80) {
21596
            t += f1(br, cr, dr) + hr[4];
21597
          }
21598
          t = t | 0;
21599
          t = rotl(t, sr[i]);
21600
          t = t + er | 0;
21601
          ar = er;
21602
          er = dr;
21603
          dr = rotl(cr, 10);
21604
          cr = br;
21605
          br = t;
21606
        }
21607
        // Intermediate hash value
21608
        t = H[1] + cl + dr | 0;
21609
        H[1] = H[2] + dl + er | 0;
21610
        H[2] = H[3] + el + ar | 0;
21611
        H[3] = H[4] + al + br | 0;
21612
        H[4] = H[0] + bl + cr | 0;
21613
        H[0] = t;
21614
      },
21615
      _doFinalize: function _doFinalize() {
21616
        // Shortcuts
21617
        var data = this._data;
21618
        var dataWords = data.words;
21619
        var nBitsTotal = this._nDataBytes * 8;
21620
        var nBitsLeft = data.sigBytes * 8;
21621
21622
        // Add padding
21623
        dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;
21624
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 0x00ff00ff | (nBitsTotal << 24 | nBitsTotal >>> 8) & 0xff00ff00;
21625
        data.sigBytes = (dataWords.length + 1) * 4;
21626
21627
        // Hash final blocks
21628
        this._process();
21629
21630
        // Shortcuts
21631
        var hash = this._hash;
21632
        var H = hash.words;
21633
21634
        // Swap endian
21635
        for (var i = 0; i < 5; i++) {
21636
          // Shortcut
21637
          var H_i = H[i];
21638
21639
          // Swap
21640
          H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;
21641
        }
21642
21643
        // Return final computed hash
21644
        return hash;
21645
      },
21646
      clone: function clone() {
21647
        var clone = Hasher.clone.call(this);
21648
        clone._hash = this._hash.clone();
21649
        return clone;
21650
      }
21651
    });
21652
    function f1(x, y, z) {
21653
      return x ^ y ^ z;
21654
    }
21655
    function f2(x, y, z) {
21656
      return x & y | ~x & z;
21657
    }
21658
    function f3(x, y, z) {
21659
      return (x | ~y) ^ z;
21660
    }
21661
    function f4(x, y, z) {
21662
      return x & z | y & ~z;
21663
    }
21664
    function f5(x, y, z) {
21665
      return x ^ (y | ~z);
21666
    }
21667
    function rotl(x, n) {
21668
      return x << n | x >>> 32 - n;
21669
    }
21670
21671
    /**
21672
     * Shortcut function to the hasher's object interface.
21673
     *
21674
     * @param {WordArray|string} message The message to hash.
21675
     *
21676
     * @return {WordArray} The hash.
21677
     *
21678
     * @static
21679
     *
21680
     * @example
21681
     *
21682
     *     var hash = CryptoJS.RIPEMD160('message');
21683
     *     var hash = CryptoJS.RIPEMD160(wordArray);
21684
     */
21685
    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
21686
21687
    /**
21688
     * Shortcut function to the HMAC's object interface.
21689
     *
21690
     * @param {WordArray|string} message The message to hash.
21691
     * @param {WordArray|string} key The secret key.
21692
     *
21693
     * @return {WordArray} The HMAC.
21694
     *
21695
     * @static
21696
     *
21697
     * @example
21698
     *
21699
     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);
21700
     */
21701
    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
21702
  })(Math);
21703
  return CryptoJS.RIPEMD160;
21704
});
21705
21706
/***/ }),
21707
21708
/***/ 9865:
21709
/***/ (function(module, exports, __webpack_require__) {
21710
21711
"use strict";
21712
21713
21714
;
21715
(function (root, factory) {
21716
  if (true) {
21717
    // CommonJS
21718
    module.exports = exports = factory(__webpack_require__(757));
21719
  } else {}
21720
})(void 0, function (CryptoJS) {
21721
  (function () {
21722
    // Shortcuts
21723
    var C = CryptoJS;
21724
    var C_lib = C.lib;
21725
    var WordArray = C_lib.WordArray;
21726
    var Hasher = C_lib.Hasher;
21727
    var C_algo = C.algo;
21728
21729
    // Reusable object
21730
    var W = [];
21731
21732
    /**
21733
     * SHA-1 hash algorithm.
21734
     */
21735
    var SHA1 = C_algo.SHA1 = Hasher.extend({
21736
      _doReset: function _doReset() {
21737
        this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]);
21738
      },
21739
      _doProcessBlock: function _doProcessBlock(M, offset) {
21740
        // Shortcut
21741
        var H = this._hash.words;
21742
21743
        // Working variables
21744
        var a = H[0];
21745
        var b = H[1];
21746
        var c = H[2];
21747
        var d = H[3];
21748
        var e = H[4];
21749
21750
        // Computation
21751
        for (var i = 0; i < 80; i++) {
21752
          if (i < 16) {
21753
            W[i] = M[offset + i] | 0;
21754
          } else {
21755
            var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
21756
            W[i] = n << 1 | n >>> 31;
21757
          }
21758
          var t = (a << 5 | a >>> 27) + e + W[i];
21759
          if (i < 20) {
21760
            t += (b & c | ~b & d) + 0x5a827999;
21761
          } else if (i < 40) {
21762
            t += (b ^ c ^ d) + 0x6ed9eba1;
21763
          } else if (i < 60) {
21764
            t += (b & c | b & d | c & d) - 0x70e44324;
21765
          } else /* if (i < 80) */{
21766
              t += (b ^ c ^ d) - 0x359d3e2a;
21767
            }
21768
          e = d;
21769
          d = c;
21770
          c = b << 30 | b >>> 2;
21771
          b = a;
21772
          a = t;
21773
        }
21774
21775
        // Intermediate hash value
21776
        H[0] = H[0] + a | 0;
21777
        H[1] = H[1] + b | 0;
21778
        H[2] = H[2] + c | 0;
21779
        H[3] = H[3] + d | 0;
21780
        H[4] = H[4] + e | 0;
21781
      },
21782
      _doFinalize: function _doFinalize() {
21783
        // Shortcuts
21784
        var data = this._data;
21785
        var dataWords = data.words;
21786
        var nBitsTotal = this._nDataBytes * 8;
21787
        var nBitsLeft = data.sigBytes * 8;
21788
21789
        // Add padding
21790
        dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;
21791
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
21792
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
21793
        data.sigBytes = dataWords.length * 4;
21794
21795
        // Hash final blocks
21796
        this._process();
21797
21798
        // Return final computed hash
21799
        return this._hash;
21800
      },
21801
      clone: function clone() {
21802
        var clone = Hasher.clone.call(this);
21803
        clone._hash = this._hash.clone();
21804
        return clone;
21805
      }
21806
    });
21807
21808
    /**
21809
     * Shortcut function to the hasher's object interface.
21810
     *
21811
     * @param {WordArray|string} message The message to hash.
21812
     *
21813
     * @return {WordArray} The hash.
21814
     *
21815
     * @static
21816
     *
21817
     * @example
21818
     *
21819
     *     var hash = CryptoJS.SHA1('message');
21820
     *     var hash = CryptoJS.SHA1(wordArray);
21821
     */
21822
    C.SHA1 = Hasher._createHelper(SHA1);
21823
21824
    /**
21825
     * Shortcut function to the HMAC's object interface.
21826
     *
21827
     * @param {WordArray|string} message The message to hash.
21828
     * @param {WordArray|string} key The secret key.
21829
     *
21830
     * @return {WordArray} The HMAC.
21831
     *
21832
     * @static
21833
     *
21834
     * @example
21835
     *
21836
     *     var hmac = CryptoJS.HmacSHA1(message, key);
21837
     */
21838
    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
21839
  })();
21840
  return CryptoJS.SHA1;
21841
});
21842
21843
/***/ }),
21844
21845
/***/ 6876:
21846
/***/ (function(module, exports, __webpack_require__) {
21847
21848
"use strict";
21849
21850
21851
;
21852
(function (root, factory, undef) {
21853
  if (true) {
21854
    // CommonJS
21855
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(8921));
21856
  } else {}
21857
})(void 0, function (CryptoJS) {
21858
  (function () {
21859
    // Shortcuts
21860
    var C = CryptoJS;
21861
    var C_lib = C.lib;
21862
    var WordArray = C_lib.WordArray;
21863
    var C_algo = C.algo;
21864
    var SHA256 = C_algo.SHA256;
21865
21866
    /**
21867
     * SHA-224 hash algorithm.
21868
     */
21869
    var SHA224 = C_algo.SHA224 = SHA256.extend({
21870
      _doReset: function _doReset() {
21871
        this._hash = new WordArray.init([0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]);
21872
      },
21873
      _doFinalize: function _doFinalize() {
21874
        var hash = SHA256._doFinalize.call(this);
21875
        hash.sigBytes -= 4;
21876
        return hash;
21877
      }
21878
    });
21879
21880
    /**
21881
     * Shortcut function to the hasher's object interface.
21882
     *
21883
     * @param {WordArray|string} message The message to hash.
21884
     *
21885
     * @return {WordArray} The hash.
21886
     *
21887
     * @static
21888
     *
21889
     * @example
21890
     *
21891
     *     var hash = CryptoJS.SHA224('message');
21892
     *     var hash = CryptoJS.SHA224(wordArray);
21893
     */
21894
    C.SHA224 = SHA256._createHelper(SHA224);
21895
21896
    /**
21897
     * Shortcut function to the HMAC's object interface.
21898
     *
21899
     * @param {WordArray|string} message The message to hash.
21900
     * @param {WordArray|string} key The secret key.
21901
     *
21902
     * @return {WordArray} The HMAC.
21903
     *
21904
     * @static
21905
     *
21906
     * @example
21907
     *
21908
     *     var hmac = CryptoJS.HmacSHA224(message, key);
21909
     */
21910
    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
21911
  })();
21912
  return CryptoJS.SHA224;
21913
});
21914
21915
/***/ }),
21916
21917
/***/ 8921:
21918
/***/ (function(module, exports, __webpack_require__) {
21919
21920
"use strict";
21921
21922
21923
__webpack_require__(7042);
21924
;
21925
(function (root, factory) {
21926
  if (true) {
21927
    // CommonJS
21928
    module.exports = exports = factory(__webpack_require__(757));
21929
  } else {}
21930
})(void 0, function (CryptoJS) {
21931
  (function (Math) {
21932
    // Shortcuts
21933
    var C = CryptoJS;
21934
    var C_lib = C.lib;
21935
    var WordArray = C_lib.WordArray;
21936
    var Hasher = C_lib.Hasher;
21937
    var C_algo = C.algo;
21938
21939
    // Initialization and round constants tables
21940
    var H = [];
21941
    var K = [];
21942
21943
    // Compute constants
21944
    (function () {
21945
      function isPrime(n) {
21946
        var sqrtN = Math.sqrt(n);
21947
        for (var factor = 2; factor <= sqrtN; factor++) {
21948
          if (!(n % factor)) {
21949
            return false;
21950
          }
21951
        }
21952
        return true;
21953
      }
21954
      function getFractionalBits(n) {
21955
        return (n - (n | 0)) * 0x100000000 | 0;
21956
      }
21957
      var n = 2;
21958
      var nPrime = 0;
21959
      while (nPrime < 64) {
21960
        if (isPrime(n)) {
21961
          if (nPrime < 8) {
21962
            H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));
21963
          }
21964
          K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));
21965
          nPrime++;
21966
        }
21967
        n++;
21968
      }
21969
    })();
21970
21971
    // Reusable object
21972
    var W = [];
21973
21974
    /**
21975
     * SHA-256 hash algorithm.
21976
     */
21977
    var SHA256 = C_algo.SHA256 = Hasher.extend({
21978
      _doReset: function _doReset() {
21979
        this._hash = new WordArray.init(H.slice(0));
21980
      },
21981
      _doProcessBlock: function _doProcessBlock(M, offset) {
21982
        // Shortcut
21983
        var H = this._hash.words;
21984
21985
        // Working variables
21986
        var a = H[0];
21987
        var b = H[1];
21988
        var c = H[2];
21989
        var d = H[3];
21990
        var e = H[4];
21991
        var f = H[5];
21992
        var g = H[6];
21993
        var h = H[7];
21994
21995
        // Computation
21996
        for (var i = 0; i < 64; i++) {
21997
          if (i < 16) {
21998
            W[i] = M[offset + i] | 0;
21999
          } else {
22000
            var gamma0x = W[i - 15];
22001
            var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
22002
            var gamma1x = W[i - 2];
22003
            var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
22004
            W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
22005
          }
22006
          var ch = e & f ^ ~e & g;
22007
          var maj = a & b ^ a & c ^ b & c;
22008
          var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
22009
          var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);
22010
          var t1 = h + sigma1 + ch + K[i] + W[i];
22011
          var t2 = sigma0 + maj;
22012
          h = g;
22013
          g = f;
22014
          f = e;
22015
          e = d + t1 | 0;
22016
          d = c;
22017
          c = b;
22018
          b = a;
22019
          a = t1 + t2 | 0;
22020
        }
22021
22022
        // Intermediate hash value
22023
        H[0] = H[0] + a | 0;
22024
        H[1] = H[1] + b | 0;
22025
        H[2] = H[2] + c | 0;
22026
        H[3] = H[3] + d | 0;
22027
        H[4] = H[4] + e | 0;
22028
        H[5] = H[5] + f | 0;
22029
        H[6] = H[6] + g | 0;
22030
        H[7] = H[7] + h | 0;
22031
      },
22032
      _doFinalize: function _doFinalize() {
22033
        // Shortcuts
22034
        var data = this._data;
22035
        var dataWords = data.words;
22036
        var nBitsTotal = this._nDataBytes * 8;
22037
        var nBitsLeft = data.sigBytes * 8;
22038
22039
        // Add padding
22040
        dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;
22041
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
22042
        dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
22043
        data.sigBytes = dataWords.length * 4;
22044
22045
        // Hash final blocks
22046
        this._process();
22047
22048
        // Return final computed hash
22049
        return this._hash;
22050
      },
22051
      clone: function clone() {
22052
        var clone = Hasher.clone.call(this);
22053
        clone._hash = this._hash.clone();
22054
        return clone;
22055
      }
22056
    });
22057
22058
    /**
22059
     * Shortcut function to the hasher's object interface.
22060
     *
22061
     * @param {WordArray|string} message The message to hash.
22062
     *
22063
     * @return {WordArray} The hash.
22064
     *
22065
     * @static
22066
     *
22067
     * @example
22068
     *
22069
     *     var hash = CryptoJS.SHA256('message');
22070
     *     var hash = CryptoJS.SHA256(wordArray);
22071
     */
22072
    C.SHA256 = Hasher._createHelper(SHA256);
22073
22074
    /**
22075
     * Shortcut function to the HMAC's object interface.
22076
     *
22077
     * @param {WordArray|string} message The message to hash.
22078
     * @param {WordArray|string} key The secret key.
22079
     *
22080
     * @return {WordArray} The HMAC.
22081
     *
22082
     * @static
22083
     *
22084
     * @example
22085
     *
22086
     *     var hmac = CryptoJS.HmacSHA256(message, key);
22087
     */
22088
    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
22089
  })(Math);
22090
  return CryptoJS.SHA256;
22091
});
22092
22093
/***/ }),
22094
22095
/***/ 8342:
22096
/***/ (function(module, exports, __webpack_require__) {
22097
22098
"use strict";
22099
22100
22101
__webpack_require__(7042);
22102
;
22103
(function (root, factory, undef) {
22104
  if (true) {
22105
    // CommonJS
22106
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(2601));
22107
  } else {}
22108
})(void 0, function (CryptoJS) {
22109
  (function (Math) {
22110
    // Shortcuts
22111
    var C = CryptoJS;
22112
    var C_lib = C.lib;
22113
    var WordArray = C_lib.WordArray;
22114
    var Hasher = C_lib.Hasher;
22115
    var C_x64 = C.x64;
22116
    var X64Word = C_x64.Word;
22117
    var C_algo = C.algo;
22118
22119
    // Constants tables
22120
    var RHO_OFFSETS = [];
22121
    var PI_INDEXES = [];
22122
    var ROUND_CONSTANTS = [];
22123
22124
    // Compute Constants
22125
    (function () {
22126
      // Compute rho offset constants
22127
      var x = 1,
22128
        y = 0;
22129
      for (var t = 0; t < 24; t++) {
22130
        RHO_OFFSETS[x + 5 * y] = (t + 1) * (t + 2) / 2 % 64;
22131
        var newX = y % 5;
22132
        var newY = (2 * x + 3 * y) % 5;
22133
        x = newX;
22134
        y = newY;
22135
      }
22136
22137
      // Compute pi index constants
22138
      for (var x = 0; x < 5; x++) {
22139
        for (var y = 0; y < 5; y++) {
22140
          PI_INDEXES[x + 5 * y] = y + (2 * x + 3 * y) % 5 * 5;
22141
        }
22142
      }
22143
22144
      // Compute round constants
22145
      var LFSR = 0x01;
22146
      for (var i = 0; i < 24; i++) {
22147
        var roundConstantMsw = 0;
22148
        var roundConstantLsw = 0;
22149
        for (var j = 0; j < 7; j++) {
22150
          if (LFSR & 0x01) {
22151
            var bitPosition = (1 << j) - 1;
22152
            if (bitPosition < 32) {
22153
              roundConstantLsw ^= 1 << bitPosition;
22154
            } else /* if (bitPosition >= 32) */{
22155
                roundConstantMsw ^= 1 << bitPosition - 32;
22156
              }
22157
          }
22158
22159
          // Compute next LFSR
22160
          if (LFSR & 0x80) {
22161
            // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1
22162
            LFSR = LFSR << 1 ^ 0x71;
22163
          } else {
22164
            LFSR <<= 1;
22165
          }
22166
        }
22167
        ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
22168
      }
22169
    })();
22170
22171
    // Reusable objects for temporary values
22172
    var T = [];
22173
    (function () {
22174
      for (var i = 0; i < 25; i++) {
22175
        T[i] = X64Word.create();
22176
      }
22177
    })();
22178
22179
    /**
22180
     * SHA-3 hash algorithm.
22181
     */
22182
    var SHA3 = C_algo.SHA3 = Hasher.extend({
22183
      /**
22184
       * Configuration options.
22185
       *
22186
       * @property {number} outputLength
22187
       *   The desired number of bits in the output hash.
22188
       *   Only values permitted are: 224, 256, 384, 512.
22189
       *   Default: 512
22190
       */
22191
      cfg: Hasher.cfg.extend({
22192
        outputLength: 512
22193
      }),
22194
      _doReset: function _doReset() {
22195
        var state = this._state = [];
22196
        for (var i = 0; i < 25; i++) {
22197
          state[i] = new X64Word.init();
22198
        }
22199
        this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
22200
      },
22201
      _doProcessBlock: function _doProcessBlock(M, offset) {
22202
        // Shortcuts
22203
        var state = this._state;
22204
        var nBlockSizeLanes = this.blockSize / 2;
22205
22206
        // Absorb
22207
        for (var i = 0; i < nBlockSizeLanes; i++) {
22208
          // Shortcuts
22209
          var M2i = M[offset + 2 * i];
22210
          var M2i1 = M[offset + 2 * i + 1];
22211
22212
          // Swap endian
22213
          M2i = (M2i << 8 | M2i >>> 24) & 0x00ff00ff | (M2i << 24 | M2i >>> 8) & 0xff00ff00;
22214
          M2i1 = (M2i1 << 8 | M2i1 >>> 24) & 0x00ff00ff | (M2i1 << 24 | M2i1 >>> 8) & 0xff00ff00;
22215
22216
          // Absorb message into state
22217
          var lane = state[i];
22218
          lane.high ^= M2i1;
22219
          lane.low ^= M2i;
22220
        }
22221
22222
        // Rounds
22223
        for (var round = 0; round < 24; round++) {
22224
          // Theta
22225
          for (var x = 0; x < 5; x++) {
22226
            // Mix column lanes
22227
            var tMsw = 0,
22228
              tLsw = 0;
22229
            for (var y = 0; y < 5; y++) {
22230
              var lane = state[x + 5 * y];
22231
              tMsw ^= lane.high;
22232
              tLsw ^= lane.low;
22233
            }
22234
22235
            // Temporary values
22236
            var Tx = T[x];
22237
            Tx.high = tMsw;
22238
            Tx.low = tLsw;
22239
          }
22240
          for (var x = 0; x < 5; x++) {
22241
            // Shortcuts
22242
            var Tx4 = T[(x + 4) % 5];
22243
            var Tx1 = T[(x + 1) % 5];
22244
            var Tx1Msw = Tx1.high;
22245
            var Tx1Lsw = Tx1.low;
22246
22247
            // Mix surrounding columns
22248
            var tMsw = Tx4.high ^ (Tx1Msw << 1 | Tx1Lsw >>> 31);
22249
            var tLsw = Tx4.low ^ (Tx1Lsw << 1 | Tx1Msw >>> 31);
22250
            for (var y = 0; y < 5; y++) {
22251
              var lane = state[x + 5 * y];
22252
              lane.high ^= tMsw;
22253
              lane.low ^= tLsw;
22254
            }
22255
          }
22256
22257
          // Rho Pi
22258
          for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
22259
            var tMsw;
22260
            var tLsw;
22261
22262
            // Shortcuts
22263
            var lane = state[laneIndex];
22264
            var laneMsw = lane.high;
22265
            var laneLsw = lane.low;
22266
            var rhoOffset = RHO_OFFSETS[laneIndex];
22267
22268
            // Rotate lanes
22269
            if (rhoOffset < 32) {
22270
              tMsw = laneMsw << rhoOffset | laneLsw >>> 32 - rhoOffset;
22271
              tLsw = laneLsw << rhoOffset | laneMsw >>> 32 - rhoOffset;
22272
            } else /* if (rhoOffset >= 32) */{
22273
                tMsw = laneLsw << rhoOffset - 32 | laneMsw >>> 64 - rhoOffset;
22274
                tLsw = laneMsw << rhoOffset - 32 | laneLsw >>> 64 - rhoOffset;
22275
              }
22276
22277
            // Transpose lanes
22278
            var TPiLane = T[PI_INDEXES[laneIndex]];
22279
            TPiLane.high = tMsw;
22280
            TPiLane.low = tLsw;
22281
          }
22282
22283
          // Rho pi at x = y = 0
22284
          var T0 = T[0];
22285
          var state0 = state[0];
22286
          T0.high = state0.high;
22287
          T0.low = state0.low;
22288
22289
          // Chi
22290
          for (var x = 0; x < 5; x++) {
22291
            for (var y = 0; y < 5; y++) {
22292
              // Shortcuts
22293
              var laneIndex = x + 5 * y;
22294
              var lane = state[laneIndex];
22295
              var TLane = T[laneIndex];
22296
              var Tx1Lane = T[(x + 1) % 5 + 5 * y];
22297
              var Tx2Lane = T[(x + 2) % 5 + 5 * y];
22298
22299
              // Mix rows
22300
              lane.high = TLane.high ^ ~Tx1Lane.high & Tx2Lane.high;
22301
              lane.low = TLane.low ^ ~Tx1Lane.low & Tx2Lane.low;
22302
            }
22303
          }
22304
22305
          // Iota
22306
          var lane = state[0];
22307
          var roundConstant = ROUND_CONSTANTS[round];
22308
          lane.high ^= roundConstant.high;
22309
          lane.low ^= roundConstant.low;
22310
        }
22311
      },
22312
      _doFinalize: function _doFinalize() {
22313
        // Shortcuts
22314
        var data = this._data;
22315
        var dataWords = data.words;
22316
        var nBitsTotal = this._nDataBytes * 8;
22317
        var nBitsLeft = data.sigBytes * 8;
22318
        var blockSizeBits = this.blockSize * 32;
22319
22320
        // Add padding
22321
        dataWords[nBitsLeft >>> 5] |= 0x1 << 24 - nBitsLeft % 32;
22322
        dataWords[(Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 0x80;
22323
        data.sigBytes = dataWords.length * 4;
22324
22325
        // Hash final blocks
22326
        this._process();
22327
22328
        // Shortcuts
22329
        var state = this._state;
22330
        var outputLengthBytes = this.cfg.outputLength / 8;
22331
        var outputLengthLanes = outputLengthBytes / 8;
22332
22333
        // Squeeze
22334
        var hashWords = [];
22335
        for (var i = 0; i < outputLengthLanes; i++) {
22336
          // Shortcuts
22337
          var lane = state[i];
22338
          var laneMsw = lane.high;
22339
          var laneLsw = lane.low;
22340
22341
          // Swap endian
22342
          laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 0x00ff00ff | (laneMsw << 24 | laneMsw >>> 8) & 0xff00ff00;
22343
          laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 0x00ff00ff | (laneLsw << 24 | laneLsw >>> 8) & 0xff00ff00;
22344
22345
          // Squeeze state to retrieve hash
22346
          hashWords.push(laneLsw);
22347
          hashWords.push(laneMsw);
22348
        }
22349
22350
        // Return final computed hash
22351
        return new WordArray.init(hashWords, outputLengthBytes);
22352
      },
22353
      clone: function clone() {
22354
        var clone = Hasher.clone.call(this);
22355
        var state = clone._state = this._state.slice(0);
22356
        for (var i = 0; i < 25; i++) {
22357
          state[i] = state[i].clone();
22358
        }
22359
        return clone;
22360
      }
22361
    });
22362
22363
    /**
22364
     * Shortcut function to the hasher's object interface.
22365
     *
22366
     * @param {WordArray|string} message The message to hash.
22367
     *
22368
     * @return {WordArray} The hash.
22369
     *
22370
     * @static
22371
     *
22372
     * @example
22373
     *
22374
     *     var hash = CryptoJS.SHA3('message');
22375
     *     var hash = CryptoJS.SHA3(wordArray);
22376
     */
22377
    C.SHA3 = Hasher._createHelper(SHA3);
22378
22379
    /**
22380
     * Shortcut function to the HMAC's object interface.
22381
     *
22382
     * @param {WordArray|string} message The message to hash.
22383
     * @param {WordArray|string} key The secret key.
22384
     *
22385
     * @return {WordArray} The HMAC.
22386
     *
22387
     * @static
22388
     *
22389
     * @example
22390
     *
22391
     *     var hmac = CryptoJS.HmacSHA3(message, key);
22392
     */
22393
    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
22394
  })(Math);
22395
  return CryptoJS.SHA3;
22396
});
22397
22398
/***/ }),
22399
22400
/***/ 8122:
22401
/***/ (function(module, exports, __webpack_require__) {
22402
22403
"use strict";
22404
22405
22406
;
22407
(function (root, factory, undef) {
22408
  if (true) {
22409
    // CommonJS
22410
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(2601), __webpack_require__(7991));
22411
  } else {}
22412
})(void 0, function (CryptoJS) {
22413
  (function () {
22414
    // Shortcuts
22415
    var C = CryptoJS;
22416
    var C_x64 = C.x64;
22417
    var X64Word = C_x64.Word;
22418
    var X64WordArray = C_x64.WordArray;
22419
    var C_algo = C.algo;
22420
    var SHA512 = C_algo.SHA512;
22421
22422
    /**
22423
     * SHA-384 hash algorithm.
22424
     */
22425
    var SHA384 = C_algo.SHA384 = SHA512.extend({
22426
      _doReset: function _doReset() {
22427
        this._hash = new X64WordArray.init([new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)]);
22428
      },
22429
      _doFinalize: function _doFinalize() {
22430
        var hash = SHA512._doFinalize.call(this);
22431
        hash.sigBytes -= 16;
22432
        return hash;
22433
      }
22434
    });
22435
22436
    /**
22437
     * Shortcut function to the hasher's object interface.
22438
     *
22439
     * @param {WordArray|string} message The message to hash.
22440
     *
22441
     * @return {WordArray} The hash.
22442
     *
22443
     * @static
22444
     *
22445
     * @example
22446
     *
22447
     *     var hash = CryptoJS.SHA384('message');
22448
     *     var hash = CryptoJS.SHA384(wordArray);
22449
     */
22450
    C.SHA384 = SHA512._createHelper(SHA384);
22451
22452
    /**
22453
     * Shortcut function to the HMAC's object interface.
22454
     *
22455
     * @param {WordArray|string} message The message to hash.
22456
     * @param {WordArray|string} key The secret key.
22457
     *
22458
     * @return {WordArray} The HMAC.
22459
     *
22460
     * @static
22461
     *
22462
     * @example
22463
     *
22464
     *     var hmac = CryptoJS.HmacSHA384(message, key);
22465
     */
22466
    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
22467
  })();
22468
  return CryptoJS.SHA384;
22469
});
22470
22471
/***/ }),
22472
22473
/***/ 7991:
22474
/***/ (function(module, exports, __webpack_require__) {
22475
22476
"use strict";
22477
22478
22479
;
22480
(function (root, factory, undef) {
22481
  if (true) {
22482
    // CommonJS
22483
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(2601));
22484
  } else {}
22485
})(void 0, function (CryptoJS) {
22486
  (function () {
22487
    // Shortcuts
22488
    var C = CryptoJS;
22489
    var C_lib = C.lib;
22490
    var Hasher = C_lib.Hasher;
22491
    var C_x64 = C.x64;
22492
    var X64Word = C_x64.Word;
22493
    var X64WordArray = C_x64.WordArray;
22494
    var C_algo = C.algo;
22495
    function X64Word_create() {
22496
      return X64Word.create.apply(X64Word, arguments);
22497
    }
22498
22499
    // Constants
22500
    var K = [X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)];
22501
22502
    // Reusable objects
22503
    var W = [];
22504
    (function () {
22505
      for (var i = 0; i < 80; i++) {
22506
        W[i] = X64Word_create();
22507
      }
22508
    })();
22509
22510
    /**
22511
     * SHA-512 hash algorithm.
22512
     */
22513
    var SHA512 = C_algo.SHA512 = Hasher.extend({
22514
      _doReset: function _doReset() {
22515
        this._hash = new X64WordArray.init([new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)]);
22516
      },
22517
      _doProcessBlock: function _doProcessBlock(M, offset) {
22518
        // Shortcuts
22519
        var H = this._hash.words;
22520
        var H0 = H[0];
22521
        var H1 = H[1];
22522
        var H2 = H[2];
22523
        var H3 = H[3];
22524
        var H4 = H[4];
22525
        var H5 = H[5];
22526
        var H6 = H[6];
22527
        var H7 = H[7];
22528
        var H0h = H0.high;
22529
        var H0l = H0.low;
22530
        var H1h = H1.high;
22531
        var H1l = H1.low;
22532
        var H2h = H2.high;
22533
        var H2l = H2.low;
22534
        var H3h = H3.high;
22535
        var H3l = H3.low;
22536
        var H4h = H4.high;
22537
        var H4l = H4.low;
22538
        var H5h = H5.high;
22539
        var H5l = H5.low;
22540
        var H6h = H6.high;
22541
        var H6l = H6.low;
22542
        var H7h = H7.high;
22543
        var H7l = H7.low;
22544
22545
        // Working variables
22546
        var ah = H0h;
22547
        var al = H0l;
22548
        var bh = H1h;
22549
        var bl = H1l;
22550
        var ch = H2h;
22551
        var cl = H2l;
22552
        var dh = H3h;
22553
        var dl = H3l;
22554
        var eh = H4h;
22555
        var el = H4l;
22556
        var fh = H5h;
22557
        var fl = H5l;
22558
        var gh = H6h;
22559
        var gl = H6l;
22560
        var hh = H7h;
22561
        var hl = H7l;
22562
22563
        // Rounds
22564
        for (var i = 0; i < 80; i++) {
22565
          var Wil;
22566
          var Wih;
22567
22568
          // Shortcut
22569
          var Wi = W[i];
22570
22571
          // Extend message
22572
          if (i < 16) {
22573
            Wih = Wi.high = M[offset + i * 2] | 0;
22574
            Wil = Wi.low = M[offset + i * 2 + 1] | 0;
22575
          } else {
22576
            // Gamma0
22577
            var gamma0x = W[i - 15];
22578
            var gamma0xh = gamma0x.high;
22579
            var gamma0xl = gamma0x.low;
22580
            var gamma0h = (gamma0xh >>> 1 | gamma0xl << 31) ^ (gamma0xh >>> 8 | gamma0xl << 24) ^ gamma0xh >>> 7;
22581
            var gamma0l = (gamma0xl >>> 1 | gamma0xh << 31) ^ (gamma0xl >>> 8 | gamma0xh << 24) ^ (gamma0xl >>> 7 | gamma0xh << 25);
22582
22583
            // Gamma1
22584
            var gamma1x = W[i - 2];
22585
            var gamma1xh = gamma1x.high;
22586
            var gamma1xl = gamma1x.low;
22587
            var gamma1h = (gamma1xh >>> 19 | gamma1xl << 13) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6;
22588
            var gamma1l = (gamma1xl >>> 19 | gamma1xh << 13) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xl >>> 6 | gamma1xh << 26);
22589
22590
            // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
22591
            var Wi7 = W[i - 7];
22592
            var Wi7h = Wi7.high;
22593
            var Wi7l = Wi7.low;
22594
            var Wi16 = W[i - 16];
22595
            var Wi16h = Wi16.high;
22596
            var Wi16l = Wi16.low;
22597
            Wil = gamma0l + Wi7l;
22598
            Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0);
22599
            Wil = Wil + gamma1l;
22600
            Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0);
22601
            Wil = Wil + Wi16l;
22602
            Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0);
22603
            Wi.high = Wih;
22604
            Wi.low = Wil;
22605
          }
22606
          var chh = eh & fh ^ ~eh & gh;
22607
          var chl = el & fl ^ ~el & gl;
22608
          var majh = ah & bh ^ ah & ch ^ bh & ch;
22609
          var majl = al & bl ^ al & cl ^ bl & cl;
22610
          var sigma0h = (ah >>> 28 | al << 4) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7);
22611
          var sigma0l = (al >>> 28 | ah << 4) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7);
22612
          var sigma1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (eh << 23 | el >>> 9);
22613
          var sigma1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (el << 23 | eh >>> 9);
22614
22615
          // t1 = h + sigma1 + ch + K[i] + W[i]
22616
          var Ki = K[i];
22617
          var Kih = Ki.high;
22618
          var Kil = Ki.low;
22619
          var t1l = hl + sigma1l;
22620
          var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0);
22621
          var t1l = t1l + chl;
22622
          var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0);
22623
          var t1l = t1l + Kil;
22624
          var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0);
22625
          var t1l = t1l + Wil;
22626
          var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0);
22627
22628
          // t2 = sigma0 + maj
22629
          var t2l = sigma0l + majl;
22630
          var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0);
22631
22632
          // Update working variables
22633
          hh = gh;
22634
          hl = gl;
22635
          gh = fh;
22636
          gl = fl;
22637
          fh = eh;
22638
          fl = el;
22639
          el = dl + t1l | 0;
22640
          eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0;
22641
          dh = ch;
22642
          dl = cl;
22643
          ch = bh;
22644
          cl = bl;
22645
          bh = ah;
22646
          bl = al;
22647
          al = t1l + t2l | 0;
22648
          ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0;
22649
        }
22650
22651
        // Intermediate hash value
22652
        H0l = H0.low = H0l + al;
22653
        H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0);
22654
        H1l = H1.low = H1l + bl;
22655
        H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0);
22656
        H2l = H2.low = H2l + cl;
22657
        H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0);
22658
        H3l = H3.low = H3l + dl;
22659
        H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0);
22660
        H4l = H4.low = H4l + el;
22661
        H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0);
22662
        H5l = H5.low = H5l + fl;
22663
        H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0);
22664
        H6l = H6.low = H6l + gl;
22665
        H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0);
22666
        H7l = H7.low = H7l + hl;
22667
        H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0);
22668
      },
22669
      _doFinalize: function _doFinalize() {
22670
        // Shortcuts
22671
        var data = this._data;
22672
        var dataWords = data.words;
22673
        var nBitsTotal = this._nDataBytes * 8;
22674
        var nBitsLeft = data.sigBytes * 8;
22675
22676
        // Add padding
22677
        dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;
22678
        dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);
22679
        dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal;
22680
        data.sigBytes = dataWords.length * 4;
22681
22682
        // Hash final blocks
22683
        this._process();
22684
22685
        // Convert hash to 32-bit word array before returning
22686
        var hash = this._hash.toX32();
22687
22688
        // Return final computed hash
22689
        return hash;
22690
      },
22691
      clone: function clone() {
22692
        var clone = Hasher.clone.call(this);
22693
        clone._hash = this._hash.clone();
22694
        return clone;
22695
      },
22696
      blockSize: 1024 / 32
22697
    });
22698
22699
    /**
22700
     * Shortcut function to the hasher's object interface.
22701
     *
22702
     * @param {WordArray|string} message The message to hash.
22703
     *
22704
     * @return {WordArray} The hash.
22705
     *
22706
     * @static
22707
     *
22708
     * @example
22709
     *
22710
     *     var hash = CryptoJS.SHA512('message');
22711
     *     var hash = CryptoJS.SHA512(wordArray);
22712
     */
22713
    C.SHA512 = Hasher._createHelper(SHA512);
22714
22715
    /**
22716
     * Shortcut function to the HMAC's object interface.
22717
     *
22718
     * @param {WordArray|string} message The message to hash.
22719
     * @param {WordArray|string} key The secret key.
22720
     *
22721
     * @return {WordArray} The HMAC.
22722
     *
22723
     * @static
22724
     *
22725
     * @example
22726
     *
22727
     *     var hmac = CryptoJS.HmacSHA512(message, key);
22728
     */
22729
    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
22730
  })();
22731
  return CryptoJS.SHA512;
22732
});
22733
22734
/***/ }),
22735
22736
/***/ 8437:
22737
/***/ (function(module, exports, __webpack_require__) {
22738
22739
"use strict";
22740
22741
22742
__webpack_require__(7042);
22743
;
22744
(function (root, factory, undef) {
22745
  if (true) {
22746
    // CommonJS
22747
    module.exports = exports = factory(__webpack_require__(757), __webpack_require__(7508), __webpack_require__(3440), __webpack_require__(3839), __webpack_require__(1582));
22748
  } else {}
22749
})(void 0, function (CryptoJS) {
22750
  (function () {
22751
    // Shortcuts
22752
    var C = CryptoJS;
22753
    var C_lib = C.lib;
22754
    var WordArray = C_lib.WordArray;
22755
    var BlockCipher = C_lib.BlockCipher;
22756
    var C_algo = C.algo;
22757
22758
    // Permuted Choice 1 constants
22759
    var PC1 = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4];
22760
22761
    // Permuted Choice 2 constants
22762
    var PC2 = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32];
22763
22764
    // Cumulative bit shift constants
22765
    var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
22766
22767
    // SBOXes and round permutation constants
22768
    var SBOX_P = [{
22769
      0x0: 0x808200,
22770
      0x10000000: 0x8000,
22771
      0x20000000: 0x808002,
22772
      0x30000000: 0x2,
22773
      0x40000000: 0x200,
22774
      0x50000000: 0x808202,
22775
      0x60000000: 0x800202,
22776
      0x70000000: 0x800000,
22777
      0x80000000: 0x202,
22778
      0x90000000: 0x800200,
22779
      0xa0000000: 0x8200,
22780
      0xb0000000: 0x808000,
22781
      0xc0000000: 0x8002,
22782
      0xd0000000: 0x800002,
22783
      0xe0000000: 0x0,
22784
      0xf0000000: 0x8202,
22785
      0x8000000: 0x0,
22786
      0x18000000: 0x808202,
22787
      0x28000000: 0x8202,
22788
      0x38000000: 0x8000,
22789
      0x48000000: 0x808200,
22790
      0x58000000: 0x200,
22791
      0x68000000: 0x808002,
22792
      0x78000000: 0x2,
22793
      0x88000000: 0x800200,
22794
      0x98000000: 0x8200,
22795
      0xa8000000: 0x808000,
22796
      0xb8000000: 0x800202,
22797
      0xc8000000: 0x800002,
22798
      0xd8000000: 0x8002,
22799
      0xe8000000: 0x202,
22800
      0xf8000000: 0x800000,
22801
      0x1: 0x8000,
22802
      0x10000001: 0x2,
22803
      0x20000001: 0x808200,
22804
      0x30000001: 0x800000,
22805
      0x40000001: 0x808002,
22806
      0x50000001: 0x8200,
22807
      0x60000001: 0x200,
22808
      0x70000001: 0x800202,
22809
      0x80000001: 0x808202,
22810
      0x90000001: 0x808000,
22811
      0xa0000001: 0x800002,
22812
      0xb0000001: 0x8202,
22813
      0xc0000001: 0x202,
22814
      0xd0000001: 0x800200,
22815
      0xe0000001: 0x8002,
22816
      0xf0000001: 0x0,
22817
      0x8000001: 0x808202,
22818
      0x18000001: 0x808000,
22819
      0x28000001: 0x800000,
22820
      0x38000001: 0x200,
22821
      0x48000001: 0x8000,
22822
      0x58000001: 0x800002,
22823
      0x68000001: 0x2,
22824
      0x78000001: 0x8202,
22825
      0x88000001: 0x8002,
22826
      0x98000001: 0x800202,
22827
      0xa8000001: 0x202,
22828
      0xb8000001: 0x808200,
22829
      0xc8000001: 0x800200,
22830
      0xd8000001: 0x0,
22831
      0xe8000001: 0x8200,
22832
      0xf8000001: 0x808002
22833
    }, {
22834
      0x0: 0x40084010,
22835
      0x1000000: 0x4000,
22836
      0x2000000: 0x80000,
22837
      0x3000000: 0x40080010,
22838
      0x4000000: 0x40000010,
22839
      0x5000000: 0x40084000,
22840
      0x6000000: 0x40004000,
22841
      0x7000000: 0x10,
22842
      0x8000000: 0x84000,
22843
      0x9000000: 0x40004010,
22844
      0xa000000: 0x40000000,
22845
      0xb000000: 0x84010,
22846
      0xc000000: 0x80010,
22847
      0xd000000: 0x0,
22848
      0xe000000: 0x4010,
22849
      0xf000000: 0x40080000,
22850
      0x800000: 0x40004000,
22851
      0x1800000: 0x84010,
22852
      0x2800000: 0x10,
22853
      0x3800000: 0x40004010,
22854
      0x4800000: 0x40084010,
22855
      0x5800000: 0x40000000,
22856
      0x6800000: 0x80000,
22857
      0x7800000: 0x40080010,
22858
      0x8800000: 0x80010,
22859
      0x9800000: 0x0,
22860
      0xa800000: 0x4000,
22861
      0xb800000: 0x40080000,
22862
      0xc800000: 0x40000010,
22863
      0xd800000: 0x84000,
22864
      0xe800000: 0x40084000,
22865
      0xf800000: 0x4010,
22866
      0x10000000: 0x0,
22867
      0x11000000: 0x40080010,
22868
      0x12000000: 0x40004010,
22869
      0x13000000: 0x40084000,
22870
      0x14000000: 0x40080000,
22871
      0x15000000: 0x10,
22872
      0x16000000: 0x84010,
22873
      0x17000000: 0x4000,
22874
      0x18000000: 0x4010,
22875
      0x19000000: 0x80000,
22876
      0x1a000000: 0x80010,
22877
      0x1b000000: 0x40000010,
22878
      0x1c000000: 0x84000,
22879
      0x1d000000: 0x40004000,
22880
      0x1e000000: 0x40000000,
22881
      0x1f000000: 0x40084010,
22882
      0x10800000: 0x84010,
22883
      0x11800000: 0x80000,
22884
      0x12800000: 0x40080000,
22885
      0x13800000: 0x4000,
22886
      0x14800000: 0x40004000,
22887
      0x15800000: 0x40084010,
22888
      0x16800000: 0x10,
22889
      0x17800000: 0x40000000,
22890
      0x18800000: 0x40084000,
22891
      0x19800000: 0x40000010,
22892
      0x1a800000: 0x40004010,
22893
      0x1b800000: 0x80010,
22894
      0x1c800000: 0x0,
22895
      0x1d800000: 0x4010,
22896
      0x1e800000: 0x40080010,
22897
      0x1f800000: 0x84000
22898
    }, {
22899
      0x0: 0x104,
22900
      0x100000: 0x0,
22901
      0x200000: 0x4000100,
22902
      0x300000: 0x10104,
22903
      0x400000: 0x10004,
22904
      0x500000: 0x4000004,
22905
      0x600000: 0x4010104,
22906
      0x700000: 0x4010000,
22907
      0x800000: 0x4000000,
22908
      0x900000: 0x4010100,
22909
      0xa00000: 0x10100,
22910
      0xb00000: 0x4010004,
22911
      0xc00000: 0x4000104,
22912
      0xd00000: 0x10000,
22913
      0xe00000: 0x4,
22914
      0xf00000: 0x100,
22915
      0x80000: 0x4010100,
22916
      0x180000: 0x4010004,
22917
      0x280000: 0x0,
22918
      0x380000: 0x4000100,
22919
      0x480000: 0x4000004,
22920
      0x580000: 0x10000,
22921
      0x680000: 0x10004,
22922
      0x780000: 0x104,
22923
      0x880000: 0x4,
22924
      0x980000: 0x100,
22925
      0xa80000: 0x4010000,
22926
      0xb80000: 0x10104,
22927
      0xc80000: 0x10100,
22928
      0xd80000: 0x4000104,
22929
      0xe80000: 0x4010104,
22930
      0xf80000: 0x4000000,
22931
      0x1000000: 0x4010100,
22932
      0x1100000: 0x10004,
22933
      0x1200000: 0x10000,
22934
      0x1300000: 0x4000100,
22935
      0x1400000: 0x100,
22936
      0x1500000: 0x4010104,
22937
      0x1600000: 0x4000004,
22938
      0x1700000: 0x0,
22939
      0x1800000: 0x4000104,
22940
      0x1900000: 0x4000000,
22941
      0x1a00000: 0x4,
22942
      0x1b00000: 0x10100,
22943
      0x1c00000: 0x4010000,
22944
      0x1d00000: 0x104,
22945
      0x1e00000: 0x10104,
22946
      0x1f00000: 0x4010004,
22947
      0x1080000: 0x4000000,
22948
      0x1180000: 0x104,
22949
      0x1280000: 0x4010100,
22950
      0x1380000: 0x0,
22951
      0x1480000: 0x10004,
22952
      0x1580000: 0x4000100,
22953
      0x1680000: 0x100,
22954
      0x1780000: 0x4010004,
22955
      0x1880000: 0x10000,
22956
      0x1980000: 0x4010104,
22957
      0x1a80000: 0x10104,
22958
      0x1b80000: 0x4000004,
22959
      0x1c80000: 0x4000104,
22960
      0x1d80000: 0x4010000,
22961
      0x1e80000: 0x4,
22962
      0x1f80000: 0x10100
22963
    }, {
22964
      0x0: 0x80401000,
22965
      0x10000: 0x80001040,
22966
      0x20000: 0x401040,
22967
      0x30000: 0x80400000,
22968
      0x40000: 0x0,
22969
      0x50000: 0x401000,
22970
      0x60000: 0x80000040,
22971
      0x70000: 0x400040,
22972
      0x80000: 0x80000000,
22973
      0x90000: 0x400000,
22974
      0xa0000: 0x40,
22975
      0xb0000: 0x80001000,
22976
      0xc0000: 0x80400040,
22977
      0xd0000: 0x1040,
22978
      0xe0000: 0x1000,
22979
      0xf0000: 0x80401040,
22980
      0x8000: 0x80001040,
22981
      0x18000: 0x40,
22982
      0x28000: 0x80400040,
22983
      0x38000: 0x80001000,
22984
      0x48000: 0x401000,
22985
      0x58000: 0x80401040,
22986
      0x68000: 0x0,
22987
      0x78000: 0x80400000,
22988
      0x88000: 0x1000,
22989
      0x98000: 0x80401000,
22990
      0xa8000: 0x400000,
22991
      0xb8000: 0x1040,
22992
      0xc8000: 0x80000000,
22993
      0xd8000: 0x400040,
22994
      0xe8000: 0x401040,
22995
      0xf8000: 0x80000040,
22996
      0x100000: 0x400040,
22997
      0x110000: 0x401000,
22998
      0x120000: 0x80000040,
22999
      0x130000: 0x0,
23000
      0x140000: 0x1040,
23001
      0x150000: 0x80400040,
23002
      0x160000: 0x80401000,
23003
      0x170000: 0x80001040,
23004
      0x180000: 0x80401040,
23005
      0x190000: 0x80000000,
23006
      0x1a0000: 0x80400000,
23007
      0x1b0000: 0x401040,
23008
      0x1c0000: 0x80001000,
23009
      0x1d0000: 0x400000,
23010
      0x1e0000: 0x40,
23011
      0x1f0000: 0x1000,
23012
      0x108000: 0x80400000,
23013
      0x118000: 0x80401040,
23014
      0x128000: 0x0,
23015
      0x138000: 0x401000,
23016
      0x148000: 0x400040,
23017
      0x158000: 0x80000000,
23018
      0x168000: 0x80001040,
23019
      0x178000: 0x40,
23020
      0x188000: 0x80000040,
23021
      0x198000: 0x1000,
23022
      0x1a8000: 0x80001000,
23023
      0x1b8000: 0x80400040,
23024
      0x1c8000: 0x1040,
23025
      0x1d8000: 0x80401000,
23026
      0x1e8000: 0x400000,
23027
      0x1f8000: 0x401040
23028
    }, {
23029
      0x0: 0x80,
23030
      0x1000: 0x1040000,
23031
      0x2000: 0x40000,
23032
      0x3000: 0x20000000,
23033
      0x4000: 0x20040080,
23034
      0x5000: 0x1000080,
23035
      0x6000: 0x21000080,
23036
      0x7000: 0x40080,
23037
      0x8000: 0x1000000,
23038
      0x9000: 0x20040000,
23039
      0xa000: 0x20000080,
23040
      0xb000: 0x21040080,
23041
      0xc000: 0x21040000,
23042
      0xd000: 0x0,
23043
      0xe000: 0x1040080,
23044
      0xf000: 0x21000000,
23045
      0x800: 0x1040080,
23046
      0x1800: 0x21000080,
23047
      0x2800: 0x80,
23048
      0x3800: 0x1040000,
23049
      0x4800: 0x40000,
23050
      0x5800: 0x20040080,
23051
      0x6800: 0x21040000,
23052
      0x7800: 0x20000000,
23053
      0x8800: 0x20040000,
23054
      0x9800: 0x0,
23055
      0xa800: 0x21040080,
23056
      0xb800: 0x1000080,
23057
      0xc800: 0x20000080,
23058
      0xd800: 0x21000000,
23059
      0xe800: 0x1000000,
23060
      0xf800: 0x40080,
23061
      0x10000: 0x40000,
23062
      0x11000: 0x80,
23063
      0x12000: 0x20000000,
23064
      0x13000: 0x21000080,
23065
      0x14000: 0x1000080,
23066
      0x15000: 0x21040000,
23067
      0x16000: 0x20040080,
23068
      0x17000: 0x1000000,
23069
      0x18000: 0x21040080,
23070
      0x19000: 0x21000000,
23071
      0x1a000: 0x1040000,
23072
      0x1b000: 0x20040000,
23073
      0x1c000: 0x40080,
23074
      0x1d000: 0x20000080,
23075
      0x1e000: 0x0,
23076
      0x1f000: 0x1040080,
23077
      0x10800: 0x21000080,
23078
      0x11800: 0x1000000,
23079
      0x12800: 0x1040000,
23080
      0x13800: 0x20040080,
23081
      0x14800: 0x20000000,
23082
      0x15800: 0x1040080,
23083
      0x16800: 0x80,
23084
      0x17800: 0x21040000,
23085
      0x18800: 0x40080,
23086
      0x19800: 0x21040080,
23087
      0x1a800: 0x0,
23088
      0x1b800: 0x21000000,
23089
      0x1c800: 0x1000080,
23090
      0x1d800: 0x40000,
23091
      0x1e800: 0x20040000,
23092
      0x1f800: 0x20000080
23093
    }, {
23094
      0x0: 0x10000008,
23095
      0x100: 0x2000,
23096
      0x200: 0x10200000,
23097
      0x300: 0x10202008,
23098
      0x400: 0x10002000,
23099
      0x500: 0x200000,
23100
      0x600: 0x200008,
23101
      0x700: 0x10000000,
23102
      0x800: 0x0,
23103
      0x900: 0x10002008,
23104
      0xa00: 0x202000,
23105
      0xb00: 0x8,
23106
      0xc00: 0x10200008,
23107
      0xd00: 0x202008,
23108
      0xe00: 0x2008,
23109
      0xf00: 0x10202000,
23110
      0x80: 0x10200000,
23111
      0x180: 0x10202008,
23112
      0x280: 0x8,
23113
      0x380: 0x200000,
23114
      0x480: 0x202008,
23115
      0x580: 0x10000008,
23116
      0x680: 0x10002000,
23117
      0x780: 0x2008,
23118
      0x880: 0x200008,
23119
      0x980: 0x2000,
23120
      0xa80: 0x10002008,
23121
      0xb80: 0x10200008,
23122
      0xc80: 0x0,
23123
      0xd80: 0x10202000,
23124
      0xe80: 0x202000,
23125
      0xf80: 0x10000000,
23126
      0x1000: 0x10002000,
23127
      0x1100: 0x10200008,
23128
      0x1200: 0x10202008,
23129
      0x1300: 0x2008,
23130
      0x1400: 0x200000,
23131
      0x1500: 0x10000000,
23132
      0x1600: 0x10000008,
23133
      0x1700: 0x202000,
23134
      0x1800: 0x202008,
23135
      0x1900: 0x0,
23136
      0x1a00: 0x8,
23137
      0x1b00: 0x10200000,
23138
      0x1c00: 0x2000,
23139
      0x1d00: 0x10002008,
23140
      0x1e00: 0x10202000,
23141
      0x1f00: 0x200008,
23142
      0x1080: 0x8,
23143
      0x1180: 0x202000,
23144
      0x1280: 0x200000,
23145
      0x1380: 0x10000008,
23146
      0x1480: 0x10002000,
23147
      0x1580: 0x2008,
23148
      0x1680: 0x10202008,
23149
      0x1780: 0x10200000,
23150
      0x1880: 0x10202000,
23151
      0x1980: 0x10200008,
23152
      0x1a80: 0x2000,
23153
      0x1b80: 0x202008,
23154
      0x1c80: 0x200008,
23155
      0x1d80: 0x0,
23156
      0x1e80: 0x10000000,
23157
      0x1f80: 0x10002008
23158
    }, {
23159
      0x0: 0x100000,
23160
      0x10: 0x2000401,
23161
      0x20: 0x400,
23162
      0x30: 0x100401,
23163
      0x40: 0x2100401,
23164
      0x50: 0x0,
23165
      0x60: 0x1,
23166
      0x70: 0x2100001,
23167
      0x80: 0x2000400,
23168
      0x90: 0x100001,
23169
      0xa0: 0x2000001,
23170
      0xb0: 0x2100400,
23171
      0xc0: 0x2100000,
23172
      0xd0: 0x401,
23173
      0xe0: 0x100400,
23174
      0xf0: 0x2000000,
23175
      0x8: 0x2100001,
23176
      0x18: 0x0,
23177
      0x28: 0x2000401,
23178
      0x38: 0x2100400,
23179
      0x48: 0x100000,
23180
      0x58: 0x2000001,
23181
      0x68: 0x2000000,
23182
      0x78: 0x401,
23183
      0x88: 0x100401,
23184
      0x98: 0x2000400,
23185
      0xa8: 0x2100000,
23186
      0xb8: 0x100001,
23187
      0xc8: 0x400,
23188
      0xd8: 0x2100401,
23189
      0xe8: 0x1,
23190
      0xf8: 0x100400,
23191
      0x100: 0x2000000,
23192
      0x110: 0x100000,
23193
      0x120: 0x2000401,
23194
      0x130: 0x2100001,
23195
      0x140: 0x100001,
23196
      0x150: 0x2000400,
23197
      0x160: 0x2100400,
23198
      0x170: 0x100401,
23199
      0x180: 0x401,
23200
      0x190: 0x2100401,
23201
      0x1a0: 0x100400,
23202
      0x1b0: 0x1,
23203
      0x1c0: 0x0,
23204
      0x1d0: 0x2100000,
23205
      0x1e0: 0x2000001,
23206
      0x1f0: 0x400,
23207
      0x108: 0x100400,
23208
      0x118: 0x2000401,
23209
      0x128: 0x2100001,
23210
      0x138: 0x1,
23211
      0x148: 0x2000000,
23212
      0x158: 0x100000,
23213
      0x168: 0x401,
23214
      0x178: 0x2100400,
23215
      0x188: 0x2000001,
23216
      0x198: 0x2100000,
23217
      0x1a8: 0x0,
23218
      0x1b8: 0x2100401,
23219
      0x1c8: 0x100401,
23220
      0x1d8: 0x400,
23221
      0x1e8: 0x2000400,
23222
      0x1f8: 0x100001
23223
    }, {
23224
      0x0: 0x8000820,
23225
      0x1: 0x20000,
23226
      0x2: 0x8000000,
23227
      0x3: 0x20,
23228
      0x4: 0x20020,
23229
      0x5: 0x8020820,
23230
      0x6: 0x8020800,
23231
      0x7: 0x800,
23232
      0x8: 0x8020000,
23233
      0x9: 0x8000800,
23234
      0xa: 0x20800,
23235
      0xb: 0x8020020,
23236
      0xc: 0x820,
23237
      0xd: 0x0,
23238
      0xe: 0x8000020,
23239
      0xf: 0x20820,
23240
      0x80000000: 0x800,
23241
      0x80000001: 0x8020820,
23242
      0x80000002: 0x8000820,
23243
      0x80000003: 0x8000000,
23244
      0x80000004: 0x8020000,
23245
      0x80000005: 0x20800,
23246
      0x80000006: 0x20820,
23247
      0x80000007: 0x20,
23248
      0x80000008: 0x8000020,
23249
      0x80000009: 0x820,
23250
      0x8000000a: 0x20020,
23251
      0x8000000b: 0x8020800,
23252
      0x8000000c: 0x0,
23253
      0x8000000d: 0x8020020,
23254
      0x8000000e: 0x8000800,
23255
      0x8000000f: 0x20000,
23256
      0x10: 0x20820,
23257
      0x11: 0x8020800,
23258
      0x12: 0x20,
23259
      0x13: 0x800,
23260
      0x14: 0x8000800,
23261
      0x15: 0x8000020,
23262
      0x16: 0x8020020,
23263
      0x17: 0x20000,
23264
      0x18: 0x0,
23265
      0x19: 0x20020,
23266
      0x1a: 0x8020000,
23267
      0x1b: 0x8000820,
23268
      0x1c: 0x8020820,
23269
      0x1d: 0x20800,
23270
      0x1e: 0x820,
23271
      0x1f: 0x8000000,
23272
      0x80000010: 0x20000,
23273
      0x80000011: 0x800,
23274
      0x80000012: 0x8020020,
23275
      0x80000013: 0x20820,
23276
      0x80000014: 0x20,
23277
      0x80000015: 0x8020000,
23278
      0x80000016: 0x8000000,
23279
      0x80000017: 0x8000820,
23280
      0x80000018: 0x8020820,
23281
      0x80000019: 0x8000020,
23282
      0x8000001a: 0x8000800,
23283
      0x8000001b: 0x0,
23284
      0x8000001c: 0x20800,
23285
      0x8000001d: 0x820,
23286
      0x8000001e: 0x20020,
23287
      0x8000001f: 0x8020800
23288
    }];
23289
23290
    // Masks that select the SBOX input
23291
    var SBOX_MASK = [0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f];
23292
23293
    /**
23294
     * DES block cipher algorithm.
23295
     */
23296
    var DES = C_algo.DES = BlockCipher.extend({
23297
      _doReset: function _doReset() {
23298
        // Shortcuts
23299
        var key = this._key;
23300
        var keyWords = key.words;
23301
23302
        // Select 56 bits according to PC1
23303
        var keyBits = [];
23304
        for (var i = 0; i < 56; i++) {
23305
          var keyBitPos = PC1[i] - 1;
23306
          keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;
23307
        }
23308
23309
        // Assemble 16 subkeys
23310
        var subKeys = this._subKeys = [];
23311
        for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
23312
          // Create subkey
23313
          var subKey = subKeys[nSubKey] = [];
23314
23315
          // Shortcut
23316
          var bitShift = BIT_SHIFTS[nSubKey];
23317
23318
          // Select 48 bits according to PC2
23319
          for (var i = 0; i < 24; i++) {
23320
            // Select from the left 28 key bits
23321
            subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6;
23322
23323
            // Select from the right 28 key bits
23324
            subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;
23325
          }
23326
23327
          // Since each subkey is applied to an expanded 32-bit input,
23328
          // the subkey can be broken into 8 values scaled to 32-bits,
23329
          // which allows the key to be used without expansion
23330
          subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;
23331
          for (var i = 1; i < 7; i++) {
23332
            subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;
23333
          }
23334
          subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;
23335
        }
23336
23337
        // Compute inverse subkeys
23338
        var invSubKeys = this._invSubKeys = [];
23339
        for (var i = 0; i < 16; i++) {
23340
          invSubKeys[i] = subKeys[15 - i];
23341
        }
23342
      },
23343
      encryptBlock: function encryptBlock(M, offset) {
23344
        this._doCryptBlock(M, offset, this._subKeys);
23345
      },
23346
      decryptBlock: function decryptBlock(M, offset) {
23347
        this._doCryptBlock(M, offset, this._invSubKeys);
23348
      },
23349
      _doCryptBlock: function _doCryptBlock(M, offset, subKeys) {
23350
        // Get input
23351
        this._lBlock = M[offset];
23352
        this._rBlock = M[offset + 1];
23353
23354
        // Initial permutation
23355
        exchangeLR.call(this, 4, 0x0f0f0f0f);
23356
        exchangeLR.call(this, 16, 0x0000ffff);
23357
        exchangeRL.call(this, 2, 0x33333333);
23358
        exchangeRL.call(this, 8, 0x00ff00ff);
23359
        exchangeLR.call(this, 1, 0x55555555);
23360
23361
        // Rounds
23362
        for (var round = 0; round < 16; round++) {
23363
          // Shortcuts
23364
          var subKey = subKeys[round];
23365
          var lBlock = this._lBlock;
23366
          var rBlock = this._rBlock;
23367
23368
          // Feistel function
23369
          var f = 0;
23370
          for (var i = 0; i < 8; i++) {
23371
            f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
23372
          }
23373
          this._lBlock = rBlock;
23374
          this._rBlock = lBlock ^ f;
23375
        }
23376
23377
        // Undo swap from last round
23378
        var t = this._lBlock;
23379
        this._lBlock = this._rBlock;
23380
        this._rBlock = t;
23381
23382
        // Final permutation
23383
        exchangeLR.call(this, 1, 0x55555555);
23384
        exchangeRL.call(this, 8, 0x00ff00ff);
23385
        exchangeRL.call(this, 2, 0x33333333);
23386
        exchangeLR.call(this, 16, 0x0000ffff);
23387
        exchangeLR.call(this, 4, 0x0f0f0f0f);
23388
23389
        // Set output
23390
        M[offset] = this._lBlock;
23391
        M[offset + 1] = this._rBlock;
23392
      },
23393
      keySize: 64 / 32,
23394
      ivSize: 64 / 32,
23395
      blockSize: 64 / 32
23396
    });
23397
23398
    // Swap bits across the left and right words
23399
    function exchangeLR(offset, mask) {
23400
      var t = (this._lBlock >>> offset ^ this._rBlock) & mask;
23401
      this._rBlock ^= t;
23402
      this._lBlock ^= t << offset;
23403
    }
23404
    function exchangeRL(offset, mask) {
23405
      var t = (this._rBlock >>> offset ^ this._lBlock) & mask;
23406
      this._lBlock ^= t;
23407
      this._rBlock ^= t << offset;
23408
    }
23409
23410
    /**
23411
     * Shortcut functions to the cipher's object interface.
23412
     *
23413
     * @example
23414
     *
23415
     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
23416
     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);
23417
     */
23418
    C.DES = BlockCipher._createHelper(DES);
23419
23420
    /**
23421
     * Triple-DES block cipher algorithm.
23422
     */
23423
    var TripleDES = C_algo.TripleDES = BlockCipher.extend({
23424
      _doReset: function _doReset() {
23425
        // Shortcuts
23426
        var key = this._key;
23427
        var keyWords = key.words;
23428
        // Make sure the key length is valid (64, 128 or >= 192 bit)
23429
        if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
23430
          throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');
23431
        }
23432
23433
        // Extend the key according to the keying options defined in 3DES standard
23434
        var key1 = keyWords.slice(0, 2);
23435
        var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
23436
        var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
23437
23438
        // Create DES instances
23439
        this._des1 = DES.createEncryptor(WordArray.create(key1));
23440
        this._des2 = DES.createEncryptor(WordArray.create(key2));
23441
        this._des3 = DES.createEncryptor(WordArray.create(key3));
23442
      },
23443
      encryptBlock: function encryptBlock(M, offset) {
23444
        this._des1.encryptBlock(M, offset);
23445
        this._des2.decryptBlock(M, offset);
23446
        this._des3.encryptBlock(M, offset);
23447
      },
23448
      decryptBlock: function decryptBlock(M, offset) {
23449
        this._des3.decryptBlock(M, offset);
23450
        this._des2.encryptBlock(M, offset);
23451
        this._des1.decryptBlock(M, offset);
23452
      },
23453
      keySize: 192 / 32,
23454
      ivSize: 64 / 32,
23455
      blockSize: 64 / 32
23456
    });
23457
23458
    /**
23459
     * Shortcut functions to the cipher's object interface.
23460
     *
23461
     * @example
23462
     *
23463
     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
23464
     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
23465
     */
23466
    C.TripleDES = BlockCipher._createHelper(TripleDES);
23467
  })();
23468
  return CryptoJS.TripleDES;
23469
});
23470
23471
/***/ }),
23472
23473
/***/ 2601:
23474
/***/ (function(module, exports, __webpack_require__) {
23475
23476
"use strict";
23477
23478
23479
__webpack_require__(7042);
23480
;
23481
(function (root, factory) {
23482
  if (true) {
23483
    // CommonJS
23484
    module.exports = exports = factory(__webpack_require__(757));
23485
  } else {}
23486
})(void 0, function (CryptoJS) {
23487
  (function (undefined) {
23488
    // Shortcuts
23489
    var C = CryptoJS;
23490
    var C_lib = C.lib;
23491
    var Base = C_lib.Base;
23492
    var X32WordArray = C_lib.WordArray;
23493
23494
    /**
23495
     * x64 namespace.
23496
     */
23497
    var C_x64 = C.x64 = {};
23498
23499
    /**
23500
     * A 64-bit word.
23501
     */
23502
    var X64Word = C_x64.Word = Base.extend({
23503
      /**
23504
       * Initializes a newly created 64-bit word.
23505
       *
23506
       * @param {number} high The high 32 bits.
23507
       * @param {number} low The low 32 bits.
23508
       *
23509
       * @example
23510
       *
23511
       *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
23512
       */
23513
      init: function init(high, low) {
23514
        this.high = high;
23515
        this.low = low;
23516
      }
23517
23518
      /**
23519
       * Bitwise NOTs this word.
23520
       *
23521
       * @return {X64Word} A new x64-Word object after negating.
23522
       *
23523
       * @example
23524
       *
23525
       *     var negated = x64Word.not();
23526
       */
23527
      // not: function () {
23528
      // var high = ~this.high;
23529
      // var low = ~this.low;
23530
23531
      // return X64Word.create(high, low);
23532
      // },
23533
23534
      /**
23535
       * Bitwise ANDs this word with the passed word.
23536
       *
23537
       * @param {X64Word} word The x64-Word to AND with this word.
23538
       *
23539
       * @return {X64Word} A new x64-Word object after ANDing.
23540
       *
23541
       * @example
23542
       *
23543
       *     var anded = x64Word.and(anotherX64Word);
23544
       */
23545
      // and: function (word) {
23546
      // var high = this.high & word.high;
23547
      // var low = this.low & word.low;
23548
23549
      // return X64Word.create(high, low);
23550
      // },
23551
23552
      /**
23553
       * Bitwise ORs this word with the passed word.
23554
       *
23555
       * @param {X64Word} word The x64-Word to OR with this word.
23556
       *
23557
       * @return {X64Word} A new x64-Word object after ORing.
23558
       *
23559
       * @example
23560
       *
23561
       *     var ored = x64Word.or(anotherX64Word);
23562
       */
23563
      // or: function (word) {
23564
      // var high = this.high | word.high;
23565
      // var low = this.low | word.low;
23566
23567
      // return X64Word.create(high, low);
23568
      // },
23569
23570
      /**
23571
       * Bitwise XORs this word with the passed word.
23572
       *
23573
       * @param {X64Word} word The x64-Word to XOR with this word.
23574
       *
23575
       * @return {X64Word} A new x64-Word object after XORing.
23576
       *
23577
       * @example
23578
       *
23579
       *     var xored = x64Word.xor(anotherX64Word);
23580
       */
23581
      // xor: function (word) {
23582
      // var high = this.high ^ word.high;
23583
      // var low = this.low ^ word.low;
23584
23585
      // return X64Word.create(high, low);
23586
      // },
23587
23588
      /**
23589
       * Shifts this word n bits to the left.
23590
       *
23591
       * @param {number} n The number of bits to shift.
23592
       *
23593
       * @return {X64Word} A new x64-Word object after shifting.
23594
       *
23595
       * @example
23596
       *
23597
       *     var shifted = x64Word.shiftL(25);
23598
       */
23599
      // shiftL: function (n) {
23600
      // if (n < 32) {
23601
      // var high = (this.high << n) | (this.low >>> (32 - n));
23602
      // var low = this.low << n;
23603
      // } else {
23604
      // var high = this.low << (n - 32);
23605
      // var low = 0;
23606
      // }
23607
23608
      // return X64Word.create(high, low);
23609
      // },
23610
23611
      /**
23612
       * Shifts this word n bits to the right.
23613
       *
23614
       * @param {number} n The number of bits to shift.
23615
       *
23616
       * @return {X64Word} A new x64-Word object after shifting.
23617
       *
23618
       * @example
23619
       *
23620
       *     var shifted = x64Word.shiftR(7);
23621
       */
23622
      // shiftR: function (n) {
23623
      // if (n < 32) {
23624
      // var low = (this.low >>> n) | (this.high << (32 - n));
23625
      // var high = this.high >>> n;
23626
      // } else {
23627
      // var low = this.high >>> (n - 32);
23628
      // var high = 0;
23629
      // }
23630
23631
      // return X64Word.create(high, low);
23632
      // },
23633
23634
      /**
23635
       * Rotates this word n bits to the left.
23636
       *
23637
       * @param {number} n The number of bits to rotate.
23638
       *
23639
       * @return {X64Word} A new x64-Word object after rotating.
23640
       *
23641
       * @example
23642
       *
23643
       *     var rotated = x64Word.rotL(25);
23644
       */
23645
      // rotL: function (n) {
23646
      // return this.shiftL(n).or(this.shiftR(64 - n));
23647
      // },
23648
23649
      /**
23650
       * Rotates this word n bits to the right.
23651
       *
23652
       * @param {number} n The number of bits to rotate.
23653
       *
23654
       * @return {X64Word} A new x64-Word object after rotating.
23655
       *
23656
       * @example
23657
       *
23658
       *     var rotated = x64Word.rotR(7);
23659
       */
23660
      // rotR: function (n) {
23661
      // return this.shiftR(n).or(this.shiftL(64 - n));
23662
      // },
23663
23664
      /**
23665
       * Adds this word with the passed word.
23666
       *
23667
       * @param {X64Word} word The x64-Word to add with this word.
23668
       *
23669
       * @return {X64Word} A new x64-Word object after adding.
23670
       *
23671
       * @example
23672
       *
23673
       *     var added = x64Word.add(anotherX64Word);
23674
       */
23675
      // add: function (word) {
23676
      // var low = (this.low + word.low) | 0;
23677
      // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
23678
      // var high = (this.high + word.high + carry) | 0;
23679
23680
      // return X64Word.create(high, low);
23681
      // }
23682
    });
23683
23684
    /**
23685
     * An array of 64-bit words.
23686
     *
23687
     * @property {Array} words The array of CryptoJS.x64.Word objects.
23688
     * @property {number} sigBytes The number of significant bytes in this word array.
23689
     */
23690
    var X64WordArray = C_x64.WordArray = Base.extend({
23691
      /**
23692
       * Initializes a newly created word array.
23693
       *
23694
       * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
23695
       * @param {number} sigBytes (Optional) The number of significant bytes in the words.
23696
       *
23697
       * @example
23698
       *
23699
       *     var wordArray = CryptoJS.x64.WordArray.create();
23700
       *
23701
       *     var wordArray = CryptoJS.x64.WordArray.create([
23702
       *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),
23703
       *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
23704
       *     ]);
23705
       *
23706
       *     var wordArray = CryptoJS.x64.WordArray.create([
23707
       *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),
23708
       *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
23709
       *     ], 10);
23710
       */
23711
      init: function init(words, sigBytes) {
23712
        words = this.words = words || [];
23713
        if (sigBytes != undefined) {
23714
          this.sigBytes = sigBytes;
23715
        } else {
23716
          this.sigBytes = words.length * 8;
23717
        }
23718
      },
23719
      /**
23720
       * Converts this 64-bit word array to a 32-bit word array.
23721
       *
23722
       * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
23723
       *
23724
       * @example
23725
       *
23726
       *     var x32WordArray = x64WordArray.toX32();
23727
       */
23728
      toX32: function toX32() {
23729
        // Shortcuts
23730
        var x64Words = this.words;
23731
        var x64WordsLength = x64Words.length;
23732
23733
        // Convert
23734
        var x32Words = [];
23735
        for (var i = 0; i < x64WordsLength; i++) {
23736
          var x64Word = x64Words[i];
23737
          x32Words.push(x64Word.high);
23738
          x32Words.push(x64Word.low);
23739
        }
23740
        return X32WordArray.create(x32Words, this.sigBytes);
23741
      },
23742
      /**
23743
       * Creates a copy of this word array.
23744
       *
23745
       * @return {X64WordArray} The clone.
23746
       *
23747
       * @example
23748
       *
23749
       *     var clone = x64WordArray.clone();
23750
       */
23751
      clone: function clone() {
23752
        var clone = Base.clone.call(this);
23753
23754
        // Clone "words" array
23755
        var words = clone.words = this.words.slice(0);
23756
23757
        // Clone each X64Word object
23758
        var wordsLength = words.length;
23759
        for (var i = 0; i < wordsLength; i++) {
23760
          words[i] = words[i].clone();
23761
        }
23762
        return clone;
23763
      }
23764
    });
23765
  })();
23766
  return CryptoJS;
23767
});
23768
23769
/***/ }),
23770
23771
/***/ 9811:
23772
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
23773
23774
"use strict";
23775
23776
23777
__webpack_require__(2443);
23778
__webpack_require__(3680);
23779
__webpack_require__(3706);
23780
__webpack_require__(2703);
23781
__webpack_require__(489);
23782
__webpack_require__(4747);
23783
__webpack_require__(8309);
23784
__webpack_require__(8674);
23785
__webpack_require__(1038);
23786
__webpack_require__(4916);
23787
__webpack_require__(4723);
23788
__webpack_require__(2165);
23789
__webpack_require__(6992);
23790
__webpack_require__(1539);
23791
__webpack_require__(8783);
23792
__webpack_require__(3948);
23793
__webpack_require__(2526);
23794
__webpack_require__(1817);
23795
__webpack_require__(7042);
23796
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23797
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23798
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23799
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
23800
var INITIAL_STATE = 1;
23801
var FAIL_STATE = 0;
23802
/**
23803
 * A StateMachine represents a deterministic finite automaton.
23804
 * It can perform matches over a sequence of values, similar to a regular expression.
23805
 */
23806
var StateMachine = /*#__PURE__*/function () {
23807
  function StateMachine(dfa) {
23808
    this.stateTable = dfa.stateTable;
23809
    this.accepting = dfa.accepting;
23810
    this.tags = dfa.tags;
23811
  }
23812
  /**
23813
   * Returns an iterable object that yields pattern matches over the input sequence.
23814
   * Matches are of the form [startIndex, endIndex, tags].
23815
   */
23816
  var _proto = StateMachine.prototype;
23817
  _proto.match = function match(str) {
23818
    var _ref;
23819
    var self = this;
23820
    return _ref = {}, _ref[Symbol.iterator] = /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
23821
      var state, startRun, lastAccepting, lastState, p, c;
23822
      return _regeneratorRuntime().wrap(function _callee$(_context) {
23823
        while (1) {
23824
          switch (_context.prev = _context.next) {
23825
            case 0:
23826
              state = INITIAL_STATE;
23827
              startRun = null;
23828
              lastAccepting = null;
23829
              lastState = null;
23830
              p = 0;
23831
            case 5:
23832
              if (!(p < str.length)) {
23833
                _context.next = 21;
23834
                break;
23835
              }
23836
              c = str[p];
23837
              lastState = state;
23838
              state = self.stateTable[state][c];
23839
              if (!(state === FAIL_STATE)) {
23840
                _context.next = 15;
23841
                break;
23842
              }
23843
              if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {
23844
                _context.next = 13;
23845
                break;
23846
              }
23847
              _context.next = 13;
23848
              return [startRun, lastAccepting, self.tags[lastState]];
23849
            case 13:
23850
              // reset the state as if we started over from the initial state
23851
23852
              state = self.stateTable[INITIAL_STATE][c];
23853
              startRun = null;
23854
            case 15:
23855
              // start a run if not in the failure state
23856
23857
              if (state !== FAIL_STATE && startRun == null) {
23858
                startRun = p;
23859
              } // if accepting, mark the potential match end
23860
23861
              if (self.accepting[state]) {
23862
                lastAccepting = p;
23863
              } // reset the state to the initial state if we get into the failure state
23864
23865
              if (state === FAIL_STATE) {
23866
                state = INITIAL_STATE;
23867
              }
23868
            case 18:
23869
              p++;
23870
              _context.next = 5;
23871
              break;
23872
            case 21:
23873
              if (!(startRun != null && lastAccepting != null && lastAccepting >= startRun)) {
23874
                _context.next = 24;
23875
                break;
23876
              }
23877
              _context.next = 24;
23878
              return [startRun, lastAccepting, self.tags[state]];
23879
            case 24:
23880
            case "end":
23881
              return _context.stop();
23882
          }
23883
        }
23884
      }, _callee);
23885
    }), _ref;
23886
  }
23887
  /**
23888
   * For each match over the input sequence, action functions matching
23889
   * the tag definitions in the input pattern are called with the startIndex,
23890
   * endIndex, and sub-match sequence.
23891
   */;
23892
  _proto.apply = function apply(str, actions) {
23893
    for (var _iterator = _createForOfIteratorHelperLoose(this.match(str)), _step; !(_step = _iterator()).done;) {
23894
      var _step$value = _step.value,
23895
        start = _step$value[0],
23896
        end = _step$value[1],
23897
        tags = _step$value[2];
23898
      for (var _iterator2 = _createForOfIteratorHelperLoose(tags), _step2; !(_step2 = _iterator2()).done;) {
23899
        var tag = _step2.value;
23900
        if (typeof actions[tag] === 'function') {
23901
          actions[tag](start, end, str.slice(start, end + 1));
23902
        }
23903
      }
23904
    }
23905
  };
23906
  return StateMachine;
23907
}();
23908
module.exports = StateMachine;
23909
23910
/***/ }),
23911
23912
/***/ 8478:
23913
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
23914
23915
"use strict";
23916
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
23917
23918
23919
__webpack_require__(1539);
23920
__webpack_require__(8674);
23921
__webpack_require__(7042);
23922
__webpack_require__(6699);
23923
/*
23924
 * MIT LICENSE
23925
 * Copyright (c) 2011 Devon Govett
23926
 *
23927
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this
23928
 * software and associated documentation files (the "Software"), to deal in the Software
23929
 * without restriction, including without limitation the rights to use, copy, modify, merge,
23930
 * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
23931
 * to whom the Software is furnished to do so, subject to the following conditions:
23932
 *
23933
 * The above copyright notice and this permission notice shall be included in all copies or
23934
 * substantial portions of the Software.
23935
 *
23936
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
23937
 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23938
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
23939
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23940
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23941
 */
23942
23943
var fs = __webpack_require__(3857);
23944
var zlib = __webpack_require__(2635);
23945
module.exports = /*#__PURE__*/function () {
23946
  PNG.decode = function decode(path, fn) {
23947
    return fs.readFile(path, function (err, file) {
23948
      var png = new PNG(file);
23949
      return png.decode(function (pixels) {
23950
        return fn(pixels);
23951
      });
23952
    });
23953
  };
23954
  PNG.load = function load(path) {
23955
    var file = fs.readFileSync(path);
23956
    return new PNG(file);
23957
  };
23958
  function PNG(data) {
23959
    var i;
23960
    this.data = data;
23961
    this.pos = 8; // Skip the default header
23962
23963
    this.palette = [];
23964
    this.imgData = [];
23965
    this.transparency = {};
23966
    this.text = {};
23967
    while (true) {
23968
      var chunkSize = this.readUInt32();
23969
      var section = '';
23970
      for (i = 0; i < 4; i++) {
23971
        section += String.fromCharCode(this.data[this.pos++]);
23972
      }
23973
      switch (section) {
23974
        case 'IHDR':
23975
          // we can grab  interesting values from here (like width, height, etc)
23976
          this.width = this.readUInt32();
23977
          this.height = this.readUInt32();
23978
          this.bits = this.data[this.pos++];
23979
          this.colorType = this.data[this.pos++];
23980
          this.compressionMethod = this.data[this.pos++];
23981
          this.filterMethod = this.data[this.pos++];
23982
          this.interlaceMethod = this.data[this.pos++];
23983
          break;
23984
        case 'PLTE':
23985
          this.palette = this.read(chunkSize);
23986
          break;
23987
        case 'IDAT':
23988
          for (i = 0; i < chunkSize; i++) {
23989
            this.imgData.push(this.data[this.pos++]);
23990
          }
23991
          break;
23992
        case 'tRNS':
23993
          // This chunk can only occur once and it must occur after the
23994
          // PLTE chunk and before the IDAT chunk.
23995
          this.transparency = {};
23996
          switch (this.colorType) {
23997
            case 3:
23998
              // Indexed color, RGB. Each byte in this chunk is an alpha for
23999
              // the palette index in the PLTE ("palette") chunk up until the
24000
              // last non-opaque entry. Set up an array, stretching over all
24001
              // palette entries which will be 0 (opaque) or 1 (transparent).
24002
              this.transparency.indexed = this.read(chunkSize);
24003
              var short = 255 - this.transparency.indexed.length;
24004
              if (short > 0) {
24005
                for (i = 0; i < short; i++) {
24006
                  this.transparency.indexed.push(255);
24007
                }
24008
              }
24009
              break;
24010
            case 0:
24011
              // Greyscale. Corresponding to entries in the PLTE chunk.
24012
              // Grey is two bytes, range 0 .. (2 ^ bit-depth) - 1
24013
              this.transparency.grayscale = this.read(chunkSize)[0];
24014
              break;
24015
            case 2:
24016
              // True color with proper alpha channel.
24017
              this.transparency.rgb = this.read(chunkSize);
24018
              break;
24019
          }
24020
          break;
24021
        case 'tEXt':
24022
          var text = this.read(chunkSize);
24023
          var index = text.indexOf(0);
24024
          var key = String.fromCharCode.apply(String, text.slice(0, index));
24025
          this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1));
24026
          break;
24027
        case 'IEND':
24028
          // we've got everything we need!
24029
          switch (this.colorType) {
24030
            case 0:
24031
            case 3:
24032
            case 4:
24033
              this.colors = 1;
24034
              break;
24035
            case 2:
24036
            case 6:
24037
              this.colors = 3;
24038
              break;
24039
          }
24040
          this.hasAlphaChannel = [4, 6].includes(this.colorType);
24041
          var colors = this.colors + (this.hasAlphaChannel ? 1 : 0);
24042
          this.pixelBitlength = this.bits * colors;
24043
          switch (this.colors) {
24044
            case 1:
24045
              this.colorSpace = 'DeviceGray';
24046
              break;
24047
            case 3:
24048
              this.colorSpace = 'DeviceRGB';
24049
              break;
24050
          }
24051
          this.imgData = new Buffer(this.imgData);
24052
          return;
24053
          break;
24054
        default:
24055
          // unknown (or unimportant) section, skip it
24056
          this.pos += chunkSize;
24057
      }
24058
      this.pos += 4; // Skip the CRC
24059
24060
      if (this.pos > this.data.length) {
24061
        throw new Error('Incomplete or corrupt PNG file');
24062
      }
24063
    }
24064
  }
24065
  var _proto = PNG.prototype;
24066
  _proto.read = function read(bytes) {
24067
    var result = new Array(bytes);
24068
    for (var i = 0; i < bytes; i++) {
24069
      result[i] = this.data[this.pos++];
24070
    }
24071
    return result;
24072
  };
24073
  _proto.readUInt32 = function readUInt32() {
24074
    var b1 = this.data[this.pos++] << 24;
24075
    var b2 = this.data[this.pos++] << 16;
24076
    var b3 = this.data[this.pos++] << 8;
24077
    var b4 = this.data[this.pos++];
24078
    return b1 | b2 | b3 | b4;
24079
  };
24080
  _proto.readUInt16 = function readUInt16() {
24081
    var b1 = this.data[this.pos++] << 8;
24082
    var b2 = this.data[this.pos++];
24083
    return b1 | b2;
24084
  };
24085
  _proto.decodePixels = function decodePixels(fn) {
24086
    var _this = this;
24087
    return zlib.inflate(this.imgData, function (err, data) {
24088
      if (err) {
24089
        throw err;
24090
      }
24091
      var width = _this.width,
24092
        height = _this.height;
24093
      var pixelBytes = _this.pixelBitlength / 8;
24094
      var pixels = new Buffer(width * height * pixelBytes);
24095
      var length = data.length;
24096
      var pos = 0;
24097
      function pass(x0, y0, dx, dy, singlePass) {
24098
        if (singlePass === void 0) {
24099
          singlePass = false;
24100
        }
24101
        var w = Math.ceil((width - x0) / dx);
24102
        var h = Math.ceil((height - y0) / dy);
24103
        var scanlineLength = pixelBytes * w;
24104
        var buffer = singlePass ? pixels : new Buffer(scanlineLength * h);
24105
        var row = 0;
24106
        var c = 0;
24107
        while (row < h && pos < length) {
24108
          var byte, col, i, left, upper;
24109
          switch (data[pos++]) {
24110
            case 0:
24111
              // None
24112
              for (i = 0; i < scanlineLength; i++) {
24113
                buffer[c++] = data[pos++];
24114
              }
24115
              break;
24116
            case 1:
24117
              // Sub
24118
              for (i = 0; i < scanlineLength; i++) {
24119
                byte = data[pos++];
24120
                left = i < pixelBytes ? 0 : buffer[c - pixelBytes];
24121
                buffer[c++] = (byte + left) % 256;
24122
              }
24123
              break;
24124
            case 2:
24125
              // Up
24126
              for (i = 0; i < scanlineLength; i++) {
24127
                byte = data[pos++];
24128
                col = (i - i % pixelBytes) / pixelBytes;
24129
                upper = row && buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];
24130
                buffer[c++] = (upper + byte) % 256;
24131
              }
24132
              break;
24133
            case 3:
24134
              // Average
24135
              for (i = 0; i < scanlineLength; i++) {
24136
                byte = data[pos++];
24137
                col = (i - i % pixelBytes) / pixelBytes;
24138
                left = i < pixelBytes ? 0 : buffer[c - pixelBytes];
24139
                upper = row && buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];
24140
                buffer[c++] = (byte + Math.floor((left + upper) / 2)) % 256;
24141
              }
24142
              break;
24143
            case 4:
24144
              // Paeth
24145
              for (i = 0; i < scanlineLength; i++) {
24146
                var paeth, upperLeft;
24147
                byte = data[pos++];
24148
                col = (i - i % pixelBytes) / pixelBytes;
24149
                left = i < pixelBytes ? 0 : buffer[c - pixelBytes];
24150
                if (row === 0) {
24151
                  upper = upperLeft = 0;
24152
                } else {
24153
                  upper = buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];
24154
                  upperLeft = col && buffer[(row - 1) * scanlineLength + (col - 1) * pixelBytes + i % pixelBytes];
24155
                }
24156
                var p = left + upper - upperLeft;
24157
                var pa = Math.abs(p - left);
24158
                var pb = Math.abs(p - upper);
24159
                var pc = Math.abs(p - upperLeft);
24160
                if (pa <= pb && pa <= pc) {
24161
                  paeth = left;
24162
                } else if (pb <= pc) {
24163
                  paeth = upper;
24164
                } else {
24165
                  paeth = upperLeft;
24166
                }
24167
                buffer[c++] = (byte + paeth) % 256;
24168
              }
24169
              break;
24170
            default:
24171
              throw new Error("Invalid filter algorithm: " + data[pos - 1]);
24172
          }
24173
          if (!singlePass) {
24174
            var pixelsPos = ((y0 + row * dy) * width + x0) * pixelBytes;
24175
            var bufferPos = row * scanlineLength;
24176
            for (i = 0; i < w; i++) {
24177
              for (var j = 0; j < pixelBytes; j++) {
24178
                pixels[pixelsPos++] = buffer[bufferPos++];
24179
              }
24180
              pixelsPos += (dx - 1) * pixelBytes;
24181
            }
24182
          }
24183
          row++;
24184
        }
24185
      }
24186
      if (_this.interlaceMethod === 1) {
24187
        /*
24188
          1 6 4 6 2 6 4 6
24189
          7 7 7 7 7 7 7 7
24190
          5 6 5 6 5 6 5 6
24191
          7 7 7 7 7 7 7 7
24192
          3 6 4 6 3 6 4 6
24193
          7 7 7 7 7 7 7 7
24194
          5 6 5 6 5 6 5 6
24195
          7 7 7 7 7 7 7 7
24196
        */
24197
        pass(0, 0, 8, 8); // 1
24198
        pass(4, 0, 8, 8); // 2
24199
        pass(0, 4, 4, 8); // 3
24200
        pass(2, 0, 4, 4); // 4
24201
        pass(0, 2, 2, 4); // 5
24202
        pass(1, 0, 2, 2); // 6
24203
        pass(0, 1, 1, 2); // 7
24204
      } else {
24205
        pass(0, 0, 1, 1, true);
24206
      }
24207
      return fn(pixels);
24208
    });
24209
  };
24210
  _proto.decodePalette = function decodePalette() {
24211
    var palette = this.palette;
24212
    var length = palette.length;
24213
    var transparency = this.transparency.indexed || [];
24214
    var ret = new Buffer(transparency.length + length);
24215
    var pos = 0;
24216
    var c = 0;
24217
    for (var i = 0; i < length; i += 3) {
24218
      var left;
24219
      ret[pos++] = palette[i];
24220
      ret[pos++] = palette[i + 1];
24221
      ret[pos++] = palette[i + 2];
24222
      ret[pos++] = (left = transparency[c++]) != null ? left : 255;
24223
    }
24224
    return ret;
24225
  };
24226
  _proto.copyToImageData = function copyToImageData(imageData, pixels) {
24227
    var j, k;
24228
    var colors = this.colors;
24229
    var palette = null;
24230
    var alpha = this.hasAlphaChannel;
24231
    if (this.palette.length) {
24232
      palette = this._decodedPalette || (this._decodedPalette = this.decodePalette());
24233
      colors = 4;
24234
      alpha = true;
24235
    }
24236
    var data = imageData.data || imageData;
24237
    var length = data.length;
24238
    var input = palette || pixels;
24239
    var i = j = 0;
24240
    if (colors === 1) {
24241
      while (i < length) {
24242
        k = palette ? pixels[i / 4] * 4 : j;
24243
        var v = input[k++];
24244
        data[i++] = v;
24245
        data[i++] = v;
24246
        data[i++] = v;
24247
        data[i++] = alpha ? input[k++] : 255;
24248
        j = k;
24249
      }
24250
    } else {
24251
      while (i < length) {
24252
        k = palette ? pixels[i / 4] * 4 : j;
24253
        data[i++] = input[k++];
24254
        data[i++] = input[k++];
24255
        data[i++] = input[k++];
24256
        data[i++] = alpha ? input[k++] : 255;
24257
        j = k;
24258
      }
24259
    }
24260
  };
24261
  _proto.decode = function decode(fn) {
24262
    var _this2 = this;
24263
    var ret = new Buffer(this.width * this.height * 4);
24264
    return this.decodePixels(function (pixels) {
24265
      _this2.copyToImageData(ret, pixels);
24266
      return fn(ret);
24267
    });
24268
  };
24269
  return PNG;
24270
}();
24271
24272
/***/ }),
24273
24274
/***/ 7103:
24275
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
24276
24277
"use strict";
24278
/* provided dependency */ var process = __webpack_require__(4155);
24279
/* eslint-disable node/no-deprecated-api */
24280
24281
24282
24283
__webpack_require__(8145);
24284
__webpack_require__(6992);
24285
__webpack_require__(1539);
24286
__webpack_require__(2472);
24287
__webpack_require__(2990);
24288
__webpack_require__(8927);
24289
__webpack_require__(3105);
24290
__webpack_require__(5035);
24291
__webpack_require__(4345);
24292
__webpack_require__(7174);
24293
__webpack_require__(2846);
24294
__webpack_require__(4731);
24295
__webpack_require__(7209);
24296
__webpack_require__(6319);
24297
__webpack_require__(8867);
24298
__webpack_require__(7789);
24299
__webpack_require__(3739);
24300
__webpack_require__(9368);
24301
__webpack_require__(4483);
24302
__webpack_require__(2056);
24303
__webpack_require__(3462);
24304
__webpack_require__(678);
24305
__webpack_require__(7462);
24306
__webpack_require__(3824);
24307
__webpack_require__(5021);
24308
__webpack_require__(2974);
24309
__webpack_require__(5016);
24310
__webpack_require__(3290);
24311
var buffer = __webpack_require__(8823);
24312
var Buffer = buffer.Buffer;
24313
var safer = {};
24314
var key;
24315
for (key in buffer) {
24316
  if (!buffer.hasOwnProperty(key)) continue;
24317
  if (key === 'SlowBuffer' || key === 'Buffer') continue;
24318
  safer[key] = buffer[key];
24319
}
24320
var Safer = safer.Buffer = {};
24321
for (key in Buffer) {
24322
  if (!Buffer.hasOwnProperty(key)) continue;
24323
  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue;
24324
  Safer[key] = Buffer[key];
24325
}
24326
safer.Buffer.prototype = Buffer.prototype;
24327
if (!Safer.from || Safer.from === Uint8Array.from) {
24328
  Safer.from = function (value, encodingOrOffset, length) {
24329
    if (typeof value === 'number') {
24330
      throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value);
24331
    }
24332
    if (value && typeof value.length === 'undefined') {
24333
      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value);
24334
    }
24335
    return Buffer(value, encodingOrOffset, length);
24336
  };
24337
}
24338
if (!Safer.alloc) {
24339
  Safer.alloc = function (size, fill, encoding) {
24340
    if (typeof size !== 'number') {
24341
      throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size);
24342
    }
24343
    if (size < 0 || size >= 2 * (1 << 30)) {
24344
      throw new RangeError('The value "' + size + '" is invalid for option "size"');
24345
    }
24346
    var buf = Buffer(size);
24347
    if (!fill || fill.length === 0) {
24348
      buf.fill(0);
24349
    } else if (typeof encoding === 'string') {
24350
      buf.fill(fill, encoding);
24351
    } else {
24352
      buf.fill(fill);
24353
    }
24354
    return buf;
24355
  };
24356
}
24357
if (!safer.kStringMaxLength) {
24358
  try {
24359
    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength;
24360
  } catch (e) {
24361
    // we can't determine kStringMaxLength in environments where process.binding
24362
    // is unsupported, so let's not set it
24363
  }
24364
}
24365
if (!safer.constants) {
24366
  safer.constants = {
24367
    MAX_LENGTH: safer.kMaxLength
24368
  };
24369
  if (safer.kStringMaxLength) {
24370
    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;
24371
  }
24372
}
24373
module.exports = safer;
24374
24375
/***/ }),
24376
24377
/***/ 3361:
24378
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
24379
24380
"use strict";
24381
24382
24383
__webpack_require__(7941);
24384
__webpack_require__(2526);
24385
__webpack_require__(7327);
24386
__webpack_require__(1539);
24387
__webpack_require__(5003);
24388
__webpack_require__(4747);
24389
__webpack_require__(9337);
24390
__webpack_require__(7042);
24391
function ownKeys(object, enumerableOnly) {
24392
  var keys = Object.keys(object);
24393
  if (Object.getOwnPropertySymbols) {
24394
    var symbols = Object.getOwnPropertySymbols(object);
24395
    if (enumerableOnly) symbols = symbols.filter(function (sym) {
24396
      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
24397
    });
24398
    keys.push.apply(keys, symbols);
24399
  }
24400
  return keys;
24401
}
24402
function _objectSpread(target) {
24403
  for (var i = 1; i < arguments.length; i++) {
24404
    var source = arguments[i] != null ? arguments[i] : {};
24405
    if (i % 2) {
24406
      ownKeys(Object(source), true).forEach(function (key) {
24407
        _defineProperty(target, key, source[key]);
24408
      });
24409
    } else if (Object.getOwnPropertyDescriptors) {
24410
      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
24411
    } else {
24412
      ownKeys(Object(source)).forEach(function (key) {
24413
        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
24414
      });
24415
    }
24416
  }
24417
  return target;
24418
}
24419
function _defineProperty(obj, key, value) {
24420
  if (key in obj) {
24421
    Object.defineProperty(obj, key, {
24422
      value: value,
24423
      enumerable: true,
24424
      configurable: true,
24425
      writable: true
24426
    });
24427
  } else {
24428
    obj[key] = value;
24429
  }
24430
  return obj;
24431
}
24432
function _classCallCheck(instance, Constructor) {
24433
  if (!(instance instanceof Constructor)) {
24434
    throw new TypeError("Cannot call a class as a function");
24435
  }
24436
}
24437
function _defineProperties(target, props) {
24438
  for (var i = 0; i < props.length; i++) {
24439
    var descriptor = props[i];
24440
    descriptor.enumerable = descriptor.enumerable || false;
24441
    descriptor.configurable = true;
24442
    if ("value" in descriptor) descriptor.writable = true;
24443
    Object.defineProperty(target, descriptor.key, descriptor);
24444
  }
24445
}
24446
function _createClass(Constructor, protoProps, staticProps) {
24447
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
24448
  if (staticProps) _defineProperties(Constructor, staticProps);
24449
  return Constructor;
24450
}
24451
var _require = __webpack_require__(8823),
24452
  Buffer = _require.Buffer;
24453
var _require2 = __webpack_require__(9862),
24454
  inspect = _require2.inspect;
24455
var custom = inspect && inspect.custom || 'inspect';
24456
function copyBuffer(src, target, offset) {
24457
  Buffer.prototype.copy.call(src, target, offset);
24458
}
24459
module.exports = /*#__PURE__*/
24460
function () {
24461
  function BufferList() {
24462
    _classCallCheck(this, BufferList);
24463
    this.head = null;
24464
    this.tail = null;
24465
    this.length = 0;
24466
  }
24467
  _createClass(BufferList, [{
24468
    key: "push",
24469
    value: function push(v) {
24470
      var entry = {
24471
        data: v,
24472
        next: null
24473
      };
24474
      if (this.length > 0) this.tail.next = entry;else this.head = entry;
24475
      this.tail = entry;
24476
      ++this.length;
24477
    }
24478
  }, {
24479
    key: "unshift",
24480
    value: function unshift(v) {
24481
      var entry = {
24482
        data: v,
24483
        next: this.head
24484
      };
24485
      if (this.length === 0) this.tail = entry;
24486
      this.head = entry;
24487
      ++this.length;
24488
    }
24489
  }, {
24490
    key: "shift",
24491
    value: function shift() {
24492
      if (this.length === 0) return;
24493
      var ret = this.head.data;
24494
      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
24495
      --this.length;
24496
      return ret;
24497
    }
24498
  }, {
24499
    key: "clear",
24500
    value: function clear() {
24501
      this.head = this.tail = null;
24502
      this.length = 0;
24503
    }
24504
  }, {
24505
    key: "join",
24506
    value: function join(s) {
24507
      if (this.length === 0) return '';
24508
      var p = this.head;
24509
      var ret = '' + p.data;
24510
      while (p = p.next) {
24511
        ret += s + p.data;
24512
      }
24513
      return ret;
24514
    }
24515
  }, {
24516
    key: "concat",
24517
    value: function concat(n) {
24518
      if (this.length === 0) return Buffer.alloc(0);
24519
      var ret = Buffer.allocUnsafe(n >>> 0);
24520
      var p = this.head;
24521
      var i = 0;
24522
      while (p) {
24523
        copyBuffer(p.data, ret, i);
24524
        i += p.data.length;
24525
        p = p.next;
24526
      }
24527
      return ret;
24528
    } // Consumes a specified amount of bytes or characters from the buffered data.
24529
  }, {
24530
    key: "consume",
24531
    value: function consume(n, hasStrings) {
24532
      var ret;
24533
      if (n < this.head.data.length) {
24534
        // `slice` is the same for buffers and strings.
24535
        ret = this.head.data.slice(0, n);
24536
        this.head.data = this.head.data.slice(n);
24537
      } else if (n === this.head.data.length) {
24538
        // First chunk is a perfect match.
24539
        ret = this.shift();
24540
      } else {
24541
        // Result spans more than one buffer.
24542
        ret = hasStrings ? this._getString(n) : this._getBuffer(n);
24543
      }
24544
      return ret;
24545
    }
24546
  }, {
24547
    key: "first",
24548
    value: function first() {
24549
      return this.head.data;
24550
    } // Consumes a specified amount of characters from the buffered data.
24551
  }, {
24552
    key: "_getString",
24553
    value: function _getString(n) {
24554
      var p = this.head;
24555
      var c = 1;
24556
      var ret = p.data;
24557
      n -= ret.length;
24558
      while (p = p.next) {
24559
        var str = p.data;
24560
        var nb = n > str.length ? str.length : n;
24561
        if (nb === str.length) ret += str;else ret += str.slice(0, n);
24562
        n -= nb;
24563
        if (n === 0) {
24564
          if (nb === str.length) {
24565
            ++c;
24566
            if (p.next) this.head = p.next;else this.head = this.tail = null;
24567
          } else {
24568
            this.head = p;
24569
            p.data = str.slice(nb);
24570
          }
24571
          break;
24572
        }
24573
        ++c;
24574
      }
24575
      this.length -= c;
24576
      return ret;
24577
    } // Consumes a specified amount of bytes from the buffered data.
24578
  }, {
24579
    key: "_getBuffer",
24580
    value: function _getBuffer(n) {
24581
      var ret = Buffer.allocUnsafe(n);
24582
      var p = this.head;
24583
      var c = 1;
24584
      p.data.copy(ret);
24585
      n -= p.data.length;
24586
      while (p = p.next) {
24587
        var buf = p.data;
24588
        var nb = n > buf.length ? buf.length : n;
24589
        buf.copy(ret, ret.length - n, 0, nb);
24590
        n -= nb;
24591
        if (n === 0) {
24592
          if (nb === buf.length) {
24593
            ++c;
24594
            if (p.next) this.head = p.next;else this.head = this.tail = null;
24595
          } else {
24596
            this.head = p;
24597
            p.data = buf.slice(nb);
24598
          }
24599
          break;
24600
        }
24601
        ++c;
24602
      }
24603
      this.length -= c;
24604
      return ret;
24605
    } // Make sure the linked list only shows the minimal necessary information.
24606
  }, {
24607
    key: custom,
24608
    value: function value(_, options) {
24609
      return inspect(this, _objectSpread({}, options, {
24610
        // Only inspect one level.
24611
        depth: 0,
24612
        // It should not recurse.
24613
        customInspect: false
24614
      }));
24615
    }
24616
  }]);
24617
  return BufferList;
24618
}();
24619
24620
/***/ }),
24621
24622
/***/ 5219:
24623
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
24624
24625
"use strict";
24626
var __dirname = "/";
24627
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
24628
24629
24630
Object.defineProperty(exports, "__esModule", ({
24631
  value: true
24632
}));
24633
exports["default"] = void 0;
24634
__webpack_require__(7941);
24635
__webpack_require__(2526);
24636
__webpack_require__(7327);
24637
__webpack_require__(1539);
24638
__webpack_require__(5003);
24639
__webpack_require__(4747);
24640
__webpack_require__(9337);
24641
__webpack_require__(489);
24642
__webpack_require__(2419);
24643
__webpack_require__(1817);
24644
__webpack_require__(2165);
24645
__webpack_require__(6992);
24646
__webpack_require__(8783);
24647
__webpack_require__(3948);
24648
__webpack_require__(1038);
24649
__webpack_require__(7042);
24650
__webpack_require__(8309);
24651
__webpack_require__(4916);
24652
__webpack_require__(2707);
24653
__webpack_require__(2222);
24654
__webpack_require__(9600);
24655
__webpack_require__(9714);
24656
__webpack_require__(5306);
24657
__webpack_require__(1249);
24658
__webpack_require__(9841);
24659
__webpack_require__(4953);
24660
__webpack_require__(6977);
24661
__webpack_require__(6699);
24662
__webpack_require__(5192);
24663
__webpack_require__(9653);
24664
__webpack_require__(3123);
24665
__webpack_require__(4723);
24666
__webpack_require__(8734);
24667
__webpack_require__(2472);
24668
__webpack_require__(2990);
24669
__webpack_require__(8927);
24670
__webpack_require__(3105);
24671
__webpack_require__(5035);
24672
__webpack_require__(4345);
24673
__webpack_require__(7174);
24674
__webpack_require__(2846);
24675
__webpack_require__(4731);
24676
__webpack_require__(7209);
24677
__webpack_require__(6319);
24678
__webpack_require__(8867);
24679
__webpack_require__(7789);
24680
__webpack_require__(3739);
24681
__webpack_require__(9368);
24682
__webpack_require__(4483);
24683
__webpack_require__(2056);
24684
__webpack_require__(3462);
24685
__webpack_require__(678);
24686
__webpack_require__(7462);
24687
__webpack_require__(3824);
24688
__webpack_require__(5021);
24689
__webpack_require__(2974);
24690
__webpack_require__(5016);
24691
__webpack_require__(7803);
24692
__webpack_require__(3290);
24693
__webpack_require__(9601);
24694
__webpack_require__(3210);
24695
__webpack_require__(9254);
24696
__webpack_require__(7397);
24697
__webpack_require__(8674);
24698
var _stream = _interopRequireDefault(__webpack_require__(2830));
24699
var _zlib = _interopRequireDefault(__webpack_require__(2635));
24700
var _cryptoJs = _interopRequireDefault(__webpack_require__(5153));
24701
var _fontkit = _interopRequireDefault(__webpack_require__(1917));
24702
var _events = __webpack_require__(7187);
24703
var _linebreak = _interopRequireDefault(__webpack_require__(7337));
24704
var _pngJs = _interopRequireDefault(__webpack_require__(8478));
24705
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24706
var fs = __webpack_require__(3857);
24707
function _classCallCheck(instance, Constructor) {
24708
  if (!(instance instanceof Constructor)) {
24709
    throw new TypeError("Cannot call a class as a function");
24710
  }
24711
}
24712
function _defineProperties(target, props) {
24713
  for (var i = 0; i < props.length; i++) {
24714
    var descriptor = props[i];
24715
    descriptor.enumerable = descriptor.enumerable || false;
24716
    descriptor.configurable = true;
24717
    if ("value" in descriptor) descriptor.writable = true;
24718
    Object.defineProperty(target, descriptor.key, descriptor);
24719
  }
24720
}
24721
function _createClass(Constructor, protoProps, staticProps) {
24722
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
24723
  if (staticProps) _defineProperties(Constructor, staticProps);
24724
  return Constructor;
24725
}
24726
function _defineProperty(obj, key, value) {
24727
  if (key in obj) {
24728
    Object.defineProperty(obj, key, {
24729
      value: value,
24730
      enumerable: true,
24731
      configurable: true,
24732
      writable: true
24733
    });
24734
  } else {
24735
    obj[key] = value;
24736
  }
24737
  return obj;
24738
}
24739
function ownKeys(object, enumerableOnly) {
24740
  var keys = Object.keys(object);
24741
  if (Object.getOwnPropertySymbols) {
24742
    var symbols = Object.getOwnPropertySymbols(object);
24743
    if (enumerableOnly) symbols = symbols.filter(function (sym) {
24744
      return Object.getOwnPropertyDescriptor(object, sym).enumerable;
24745
    });
24746
    keys.push.apply(keys, symbols);
24747
  }
24748
  return keys;
24749
}
24750
function _objectSpread2(target) {
24751
  for (var i = 1; i < arguments.length; i++) {
24752
    var source = arguments[i] != null ? arguments[i] : {};
24753
    if (i % 2) {
24754
      ownKeys(Object(source), true).forEach(function (key) {
24755
        _defineProperty(target, key, source[key]);
24756
      });
24757
    } else if (Object.getOwnPropertyDescriptors) {
24758
      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
24759
    } else {
24760
      ownKeys(Object(source)).forEach(function (key) {
24761
        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
24762
      });
24763
    }
24764
  }
24765
  return target;
24766
}
24767
function _inherits(subClass, superClass) {
24768
  if (typeof superClass !== "function" && superClass !== null) {
24769
    throw new TypeError("Super expression must either be null or a function");
24770
  }
24771
  subClass.prototype = Object.create(superClass && superClass.prototype, {
24772
    constructor: {
24773
      value: subClass,
24774
      writable: true,
24775
      configurable: true
24776
    }
24777
  });
24778
  if (superClass) _setPrototypeOf(subClass, superClass);
24779
}
24780
function _getPrototypeOf(o) {
24781
  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
24782
    return o.__proto__ || Object.getPrototypeOf(o);
24783
  };
24784
  return _getPrototypeOf(o);
24785
}
24786
function _setPrototypeOf(o, p) {
24787
  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
24788
    o.__proto__ = p;
24789
    return o;
24790
  };
24791
  return _setPrototypeOf(o, p);
24792
}
24793
function _isNativeReflectConstruct() {
24794
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
24795
  if (Reflect.construct.sham) return false;
24796
  if (typeof Proxy === "function") return true;
24797
  try {
24798
    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
24799
    return true;
24800
  } catch (e) {
24801
    return false;
24802
  }
24803
}
24804
function _assertThisInitialized(self) {
24805
  if (self === void 0) {
24806
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
24807
  }
24808
  return self;
24809
}
24810
function _possibleConstructorReturn(self, call) {
24811
  if (call && (typeof call === "object" || typeof call === "function")) {
24812
    return call;
24813
  }
24814
  return _assertThisInitialized(self);
24815
}
24816
function _createSuper(Derived) {
24817
  var hasNativeReflectConstruct = _isNativeReflectConstruct();
24818
  return function _createSuperInternal() {
24819
    var Super = _getPrototypeOf(Derived),
24820
      result;
24821
    if (hasNativeReflectConstruct) {
24822
      var NewTarget = _getPrototypeOf(this).constructor;
24823
      result = Reflect.construct(Super, arguments, NewTarget);
24824
    } else {
24825
      result = Super.apply(this, arguments);
24826
    }
24827
    return _possibleConstructorReturn(this, result);
24828
  };
24829
}
24830
function _slicedToArray(arr, i) {
24831
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
24832
}
24833
function _toConsumableArray(arr) {
24834
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
24835
}
24836
function _arrayWithoutHoles(arr) {
24837
  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
24838
}
24839
function _arrayWithHoles(arr) {
24840
  if (Array.isArray(arr)) return arr;
24841
}
24842
function _iterableToArray(iter) {
24843
  if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
24844
}
24845
function _iterableToArrayLimit(arr, i) {
24846
  if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
24847
  var _arr = [];
24848
  var _n = true;
24849
  var _d = false;
24850
  var _e = undefined;
24851
  try {
24852
    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
24853
      _arr.push(_s.value);
24854
      if (i && _arr.length === i) break;
24855
    }
24856
  } catch (err) {
24857
    _d = true;
24858
    _e = err;
24859
  } finally {
24860
    try {
24861
      if (!_n && _i["return"] != null) _i["return"]();
24862
    } finally {
24863
      if (_d) throw _e;
24864
    }
24865
  }
24866
  return _arr;
24867
}
24868
function _unsupportedIterableToArray(o, minLen) {
24869
  if (!o) return;
24870
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
24871
  var n = Object.prototype.toString.call(o).slice(8, -1);
24872
  if (n === "Object" && o.constructor) n = o.constructor.name;
24873
  if (n === "Map" || n === "Set") return Array.from(o);
24874
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
24875
}
24876
function _arrayLikeToArray(arr, len) {
24877
  if (len == null || len > arr.length) len = arr.length;
24878
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
24879
    arr2[i] = arr[i];
24880
  }
24881
  return arr2;
24882
}
24883
function _nonIterableSpread() {
24884
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
24885
}
24886
function _nonIterableRest() {
24887
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
24888
}
24889
function _createForOfIteratorHelper(o, allowArrayLike) {
24890
  var it;
24891
  if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
24892
    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
24893
      if (it) o = it;
24894
      var i = 0;
24895
      var F = function F() {};
24896
      return {
24897
        s: F,
24898
        n: function n() {
24899
          if (i >= o.length) return {
24900
            done: true
24901
          };
24902
          return {
24903
            done: false,
24904
            value: o[i++]
24905
          };
24906
        },
24907
        e: function e(_e2) {
24908
          throw _e2;
24909
        },
24910
        f: F
24911
      };
24912
    }
24913
    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
24914
  }
24915
  var normalCompletion = true,
24916
    didErr = false,
24917
    err;
24918
  return {
24919
    s: function s() {
24920
      it = o[Symbol.iterator]();
24921
    },
24922
    n: function n() {
24923
      var step = it.next();
24924
      normalCompletion = step.done;
24925
      return step;
24926
    },
24927
    e: function e(_e3) {
24928
      didErr = true;
24929
      err = _e3;
24930
    },
24931
    f: function f() {
24932
      try {
24933
        if (!normalCompletion && it.return != null) it.return();
24934
      } finally {
24935
        if (didErr) throw err;
24936
      }
24937
    }
24938
  };
24939
}
24940
24941
/*
24942
PDFAbstractReference - abstract class for PDF reference
24943
*/
24944
var PDFAbstractReference = /*#__PURE__*/function () {
24945
  function PDFAbstractReference() {
24946
    _classCallCheck(this, PDFAbstractReference);
24947
  }
24948
  _createClass(PDFAbstractReference, [{
24949
    key: "toString",
24950
    value: function toString() {
24951
      throw new Error('Must be implemented by subclasses');
24952
    }
24953
  }]);
24954
  return PDFAbstractReference;
24955
}();
24956
var PDFTree = /*#__PURE__*/function () {
24957
  function PDFTree() {
24958
    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24959
    _classCallCheck(this, PDFTree);
24960
    this._items = {}; // disable /Limits output for this tree
24961
24962
    this.limits = typeof options.limits === 'boolean' ? options.limits : true;
24963
  }
24964
  _createClass(PDFTree, [{
24965
    key: "add",
24966
    value: function add(key, val) {
24967
      return this._items[key] = val;
24968
    }
24969
  }, {
24970
    key: "get",
24971
    value: function get(key) {
24972
      return this._items[key];
24973
    }
24974
  }, {
24975
    key: "toString",
24976
    value: function toString() {
24977
      var _this = this;
24978
24979
      // Needs to be sorted by key
24980
      var sortedKeys = Object.keys(this._items).sort(function (a, b) {
24981
        return _this._compareKeys(a, b);
24982
      });
24983
      var out = ['<<'];
24984
      if (this.limits && sortedKeys.length > 1) {
24985
        var first = sortedKeys[0],
24986
          last = sortedKeys[sortedKeys.length - 1];
24987
        out.push("  /Limits ".concat(PDFObject.convert([this._dataForKey(first), this._dataForKey(last)])));
24988
      }
24989
      out.push("  /".concat(this._keysName(), " ["));
24990
      var _iterator = _createForOfIteratorHelper(sortedKeys),
24991
        _step;
24992
      try {
24993
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
24994
          var key = _step.value;
24995
          out.push("    ".concat(PDFObject.convert(this._dataForKey(key)), " ").concat(PDFObject.convert(this._items[key])));
24996
        }
24997
      } catch (err) {
24998
        _iterator.e(err);
24999
      } finally {
25000
        _iterator.f();
25001
      }
25002
      out.push(']');
25003
      out.push('>>');
25004
      return out.join('\n');
25005
    }
25006
  }, {
25007
    key: "_compareKeys",
25008
    value: function _compareKeys() /*a, b*/
25009
    {
25010
      throw new Error('Must be implemented by subclasses');
25011
    }
25012
  }, {
25013
    key: "_keysName",
25014
    value: function _keysName() {
25015
      throw new Error('Must be implemented by subclasses');
25016
    }
25017
  }, {
25018
    key: "_dataForKey",
25019
    value: function _dataForKey() /*k*/
25020
    {
25021
      throw new Error('Must be implemented by subclasses');
25022
    }
25023
  }]);
25024
  return PDFTree;
25025
}();
25026
var pad = function pad(str, length) {
25027
  return (Array(length + 1).join('0') + str).slice(-length);
25028
};
25029
var escapableRe = /[\n\r\t\b\f()\\]/g;
25030
var escapable = {
25031
  '\n': '\\n',
25032
  '\r': '\\r',
25033
  '\t': '\\t',
25034
  '\b': '\\b',
25035
  '\f': '\\f',
25036
  '\\': '\\\\',
25037
  '(': '\\(',
25038
  ')': '\\)'
25039
}; // Convert little endian UTF-16 to big endian
25040
25041
var swapBytes = function swapBytes(buff) {
25042
  var l = buff.length;
25043
  if (l & 0x01) {
25044
    throw new Error('Buffer length must be even');
25045
  } else {
25046
    for (var i = 0, end = l - 1; i < end; i += 2) {
25047
      var a = buff[i];
25048
      buff[i] = buff[i + 1];
25049
      buff[i + 1] = a;
25050
    }
25051
  }
25052
  return buff;
25053
};
25054
var PDFObject = /*#__PURE__*/function () {
25055
  function PDFObject() {
25056
    _classCallCheck(this, PDFObject);
25057
  }
25058
  _createClass(PDFObject, null, [{
25059
    key: "convert",
25060
    value: function convert(object) {
25061
      var encryptFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
25062
25063
      // String literals are converted to the PDF name type
25064
      if (typeof object === 'string') {
25065
        return "/".concat(object); // String objects are converted to PDF strings (UTF-16)
25066
      } else if (object instanceof String) {
25067
        var string = object; // Detect if this is a unicode string
25068
25069
        var isUnicode = false;
25070
        for (var i = 0, end = string.length; i < end; i++) {
25071
          if (string.charCodeAt(i) > 0x7f) {
25072
            isUnicode = true;
25073
            break;
25074
          }
25075
        } // If so, encode it as big endian UTF-16
25076
25077
        var stringBuffer;
25078
        if (isUnicode) {
25079
          stringBuffer = swapBytes(Buffer.from("\uFEFF".concat(string), 'utf16le'));
25080
        } else {
25081
          stringBuffer = Buffer.from(string.valueOf(), 'ascii');
25082
        } // Encrypt the string when necessary
25083
25084
        if (encryptFn) {
25085
          string = encryptFn(stringBuffer).toString('binary');
25086
        } else {
25087
          string = stringBuffer.toString('binary');
25088
        } // Escape characters as required by the spec
25089
25090
        string = string.replace(escapableRe, function (c) {
25091
          return escapable[c];
25092
        });
25093
        return "(".concat(string, ")"); // Buffers are converted to PDF hex strings
25094
      } else if (Buffer.isBuffer(object)) {
25095
        return "<".concat(object.toString('hex'), ">");
25096
      } else if (object instanceof PDFAbstractReference || object instanceof PDFTree) {
25097
        return object.toString();
25098
      } else if (object instanceof Date) {
25099
        var _string = "D:".concat(pad(object.getUTCFullYear(), 4)) + pad(object.getUTCMonth() + 1, 2) + pad(object.getUTCDate(), 2) + pad(object.getUTCHours(), 2) + pad(object.getUTCMinutes(), 2) + pad(object.getUTCSeconds(), 2) + 'Z'; // Encrypt the string when necessary
25100
25101
        if (encryptFn) {
25102
          _string = encryptFn(Buffer.from(_string, 'ascii')).toString('binary'); // Escape characters as required by the spec
25103
25104
          _string = _string.replace(escapableRe, function (c) {
25105
            return escapable[c];
25106
          });
25107
        }
25108
        return "(".concat(_string, ")");
25109
      } else if (Array.isArray(object)) {
25110
        var items = object.map(function (e) {
25111
          return PDFObject.convert(e, encryptFn);
25112
        }).join(' ');
25113
        return "[".concat(items, "]");
25114
      } else if ({}.toString.call(object) === '[object Object]') {
25115
        var out = ['<<'];
25116
        for (var key in object) {
25117
          var val = object[key];
25118
          out.push("/".concat(key, " ").concat(PDFObject.convert(val, encryptFn)));
25119
        }
25120
        out.push('>>');
25121
        return out.join('\n');
25122
      } else if (typeof object === 'number') {
25123
        return PDFObject.number(object);
25124
      } else {
25125
        return "".concat(object);
25126
      }
25127
    }
25128
  }, {
25129
    key: "number",
25130
    value: function number(n) {
25131
      if (n > -1e21 && n < 1e21) {
25132
        return Math.round(n * 1e6) / 1e6;
25133
      }
25134
      throw new Error("unsupported number: ".concat(n));
25135
    }
25136
  }]);
25137
  return PDFObject;
25138
}();
25139
var PDFReference = /*#__PURE__*/function (_PDFAbstractReference) {
25140
  _inherits(PDFReference, _PDFAbstractReference);
25141
  var _super = _createSuper(PDFReference);
25142
  function PDFReference(document, id) {
25143
    var _this;
25144
    var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
25145
    _classCallCheck(this, PDFReference);
25146
    _this = _super.call(this);
25147
    _this.document = document;
25148
    _this.id = id;
25149
    _this.data = data;
25150
    _this.gen = 0;
25151
    _this.compress = _this.document.compress && !_this.data.Filter;
25152
    _this.uncompressedLength = 0;
25153
    _this.buffer = [];
25154
    return _this;
25155
  }
25156
  _createClass(PDFReference, [{
25157
    key: "write",
25158
    value: function write(chunk) {
25159
      if (!Buffer.isBuffer(chunk)) {
25160
        chunk = Buffer.from(chunk + '\n', 'binary');
25161
      }
25162
      this.uncompressedLength += chunk.length;
25163
      if (this.data.Length == null) {
25164
        this.data.Length = 0;
25165
      }
25166
      this.buffer.push(chunk);
25167
      this.data.Length += chunk.length;
25168
      if (this.compress) {
25169
        return this.data.Filter = 'FlateDecode';
25170
      }
25171
    }
25172
  }, {
25173
    key: "end",
25174
    value: function end(chunk) {
25175
      if (chunk) {
25176
        this.write(chunk);
25177
      }
25178
      return this.finalize();
25179
    }
25180
  }, {
25181
    key: "finalize",
25182
    value: function finalize() {
25183
      this.offset = this.document._offset;
25184
      var encryptFn = this.document._security ? this.document._security.getEncryptFn(this.id, this.gen) : null;
25185
      if (this.buffer.length) {
25186
        this.buffer = Buffer.concat(this.buffer);
25187
        if (this.compress) {
25188
          this.buffer = _zlib.default.deflateSync(this.buffer);
25189
        }
25190
        if (encryptFn) {
25191
          this.buffer = encryptFn(this.buffer);
25192
        }
25193
        this.data.Length = this.buffer.length;
25194
      }
25195
      this.document._write("".concat(this.id, " ").concat(this.gen, " obj"));
25196
      this.document._write(PDFObject.convert(this.data, encryptFn));
25197
      if (this.buffer.length) {
25198
        this.document._write('stream');
25199
        this.document._write(this.buffer);
25200
        this.buffer = []; // free up memory
25201
25202
        this.document._write('\nendstream');
25203
      }
25204
      this.document._write('endobj');
25205
      this.document._refEnd(this);
25206
    }
25207
  }, {
25208
    key: "toString",
25209
    value: function toString() {
25210
      return "".concat(this.id, " ").concat(this.gen, " R");
25211
    }
25212
  }]);
25213
  return PDFReference;
25214
}(PDFAbstractReference);
25215
25216
/*
25217
PDFPage - represents a single page in the PDF document
25218
By Devon Govett
25219
*/
25220
var DEFAULT_MARGINS = {
25221
  top: 72,
25222
  left: 72,
25223
  bottom: 72,
25224
  right: 72
25225
};
25226
var SIZES = {
25227
  '4A0': [4767.87, 6740.79],
25228
  '2A0': [3370.39, 4767.87],
25229
  A0: [2383.94, 3370.39],
25230
  A1: [1683.78, 2383.94],
25231
  A2: [1190.55, 1683.78],
25232
  A3: [841.89, 1190.55],
25233
  A4: [595.28, 841.89],
25234
  A5: [419.53, 595.28],
25235
  A6: [297.64, 419.53],
25236
  A7: [209.76, 297.64],
25237
  A8: [147.4, 209.76],
25238
  A9: [104.88, 147.4],
25239
  A10: [73.7, 104.88],
25240
  B0: [2834.65, 4008.19],
25241
  B1: [2004.09, 2834.65],
25242
  B2: [1417.32, 2004.09],
25243
  B3: [1000.63, 1417.32],
25244
  B4: [708.66, 1000.63],
25245
  B5: [498.9, 708.66],
25246
  B6: [354.33, 498.9],
25247
  B7: [249.45, 354.33],
25248
  B8: [175.75, 249.45],
25249
  B9: [124.72, 175.75],
25250
  B10: [87.87, 124.72],
25251
  C0: [2599.37, 3676.54],
25252
  C1: [1836.85, 2599.37],
25253
  C2: [1298.27, 1836.85],
25254
  C3: [918.43, 1298.27],
25255
  C4: [649.13, 918.43],
25256
  C5: [459.21, 649.13],
25257
  C6: [323.15, 459.21],
25258
  C7: [229.61, 323.15],
25259
  C8: [161.57, 229.61],
25260
  C9: [113.39, 161.57],
25261
  C10: [79.37, 113.39],
25262
  RA0: [2437.8, 3458.27],
25263
  RA1: [1729.13, 2437.8],
25264
  RA2: [1218.9, 1729.13],
25265
  RA3: [864.57, 1218.9],
25266
  RA4: [609.45, 864.57],
25267
  SRA0: [2551.18, 3628.35],
25268
  SRA1: [1814.17, 2551.18],
25269
  SRA2: [1275.59, 1814.17],
25270
  SRA3: [907.09, 1275.59],
25271
  SRA4: [637.8, 907.09],
25272
  EXECUTIVE: [521.86, 756.0],
25273
  FOLIO: [612.0, 936.0],
25274
  LEGAL: [612.0, 1008.0],
25275
  LETTER: [612.0, 792.0],
25276
  TABLOID: [792.0, 1224.0]
25277
};
25278
var PDFPage = /*#__PURE__*/function () {
25279
  function PDFPage(document) {
25280
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25281
    _classCallCheck(this, PDFPage);
25282
    this.document = document;
25283
    this.size = options.size || 'letter';
25284
    this.layout = options.layout || 'portrait'; // process margins
25285
25286
    if (typeof options.margin === 'number') {
25287
      this.margins = {
25288
        top: options.margin,
25289
        left: options.margin,
25290
        bottom: options.margin,
25291
        right: options.margin
25292
      }; // default to 1 inch margins
25293
    } else {
25294
      this.margins = options.margins || DEFAULT_MARGINS;
25295
    } // calculate page dimensions
25296
25297
    var dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()];
25298
    this.width = dimensions[this.layout === 'portrait' ? 0 : 1];
25299
    this.height = dimensions[this.layout === 'portrait' ? 1 : 0];
25300
    this.content = this.document.ref(); // Initialize the Font, XObject, and ExtGState dictionaries
25301
25302
    this.resources = this.document.ref({
25303
      ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']
25304
    }); // The page dictionary
25305
25306
    this.dictionary = this.document.ref({
25307
      Type: 'Page',
25308
      Parent: this.document._root.data.Pages,
25309
      MediaBox: [0, 0, this.width, this.height],
25310
      Contents: this.content,
25311
      Resources: this.resources
25312
    });
25313
    this.markings = [];
25314
  } // Lazily create these objects
25315
25316
  _createClass(PDFPage, [{
25317
    key: "maxY",
25318
    value: function maxY() {
25319
      return this.height - this.margins.bottom;
25320
    }
25321
  }, {
25322
    key: "write",
25323
    value: function write(chunk) {
25324
      return this.content.write(chunk);
25325
    }
25326
  }, {
25327
    key: "end",
25328
    value: function end() {
25329
      this.dictionary.end();
25330
      this.resources.end();
25331
      return this.content.end();
25332
    }
25333
  }, {
25334
    key: "fonts",
25335
    get: function get() {
25336
      var data = this.resources.data;
25337
      return data.Font != null ? data.Font : data.Font = {};
25338
    }
25339
  }, {
25340
    key: "xobjects",
25341
    get: function get() {
25342
      var data = this.resources.data;
25343
      return data.XObject != null ? data.XObject : data.XObject = {};
25344
    }
25345
  }, {
25346
    key: "ext_gstates",
25347
    get: function get() {
25348
      var data = this.resources.data;
25349
      return data.ExtGState != null ? data.ExtGState : data.ExtGState = {};
25350
    }
25351
  }, {
25352
    key: "patterns",
25353
    get: function get() {
25354
      var data = this.resources.data;
25355
      return data.Pattern != null ? data.Pattern : data.Pattern = {};
25356
    }
25357
  }, {
25358
    key: "colorSpaces",
25359
    get: function get() {
25360
      var data = this.resources.data;
25361
      return data.ColorSpace || (data.ColorSpace = {});
25362
    }
25363
  }, {
25364
    key: "annotations",
25365
    get: function get() {
25366
      var data = this.dictionary.data;
25367
      return data.Annots != null ? data.Annots : data.Annots = [];
25368
    }
25369
  }, {
25370
    key: "structParentTreeKey",
25371
    get: function get() {
25372
      var data = this.dictionary.data;
25373
      return data.StructParents != null ? data.StructParents : data.StructParents = this.document.createStructParentTreeNextKey();
25374
    }
25375
  }]);
25376
  return PDFPage;
25377
}();
25378
var PDFNameTree = /*#__PURE__*/function (_PDFTree) {
25379
  _inherits(PDFNameTree, _PDFTree);
25380
  var _super = _createSuper(PDFNameTree);
25381
  function PDFNameTree() {
25382
    _classCallCheck(this, PDFNameTree);
25383
    return _super.apply(this, arguments);
25384
  }
25385
  _createClass(PDFNameTree, [{
25386
    key: "_compareKeys",
25387
    value: function _compareKeys(a, b) {
25388
      return a.localeCompare(b);
25389
    }
25390
  }, {
25391
    key: "_keysName",
25392
    value: function _keysName() {
25393
      return "Names";
25394
    }
25395
  }, {
25396
    key: "_dataForKey",
25397
    value: function _dataForKey(k) {
25398
      return new String(k);
25399
    }
25400
  }]);
25401
  return PDFNameTree;
25402
}(PDFTree);
25403
25404
/**
25405
 * Check if value is in a range group.
25406
 * @param {number} value
25407
 * @param {number[]} rangeGroup
25408
 * @returns {boolean}
25409
 */
25410
function inRange(value, rangeGroup) {
25411
  if (value < rangeGroup[0]) return false;
25412
  var startRange = 0;
25413
  var endRange = rangeGroup.length / 2;
25414
  while (startRange <= endRange) {
25415
    var middleRange = Math.floor((startRange + endRange) / 2); // actual array index
25416
25417
    var arrayIndex = middleRange * 2; // Check if value is in range pointed by actual index
25418
25419
    if (value >= rangeGroup[arrayIndex] && value <= rangeGroup[arrayIndex + 1]) {
25420
      return true;
25421
    }
25422
    if (value > rangeGroup[arrayIndex + 1]) {
25423
      // Search Right Side Of Array
25424
      startRange = middleRange + 1;
25425
    } else {
25426
      // Search Left Side Of Array
25427
      endRange = middleRange - 1;
25428
    }
25429
  }
25430
  return false;
25431
}
25432
25433
/**
25434
 * A.1 Unassigned code points in Unicode 3.2
25435
 * @link https://tools.ietf.org/html/rfc3454#appendix-A.1
25436
 */
25437
25438
var unassigned_code_points = [0x0221, 0x0221, 0x0234, 0x024f, 0x02ae, 0x02af, 0x02ef, 0x02ff, 0x0350, 0x035f, 0x0370, 0x0373, 0x0376, 0x0379, 0x037b, 0x037d, 0x037f, 0x0383, 0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, 0x03cf, 0x03cf, 0x03f7, 0x03ff, 0x0487, 0x0487, 0x04cf, 0x04cf, 0x04f6, 0x04f7, 0x04fa, 0x04ff, 0x0510, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, 0x058b, 0x0590, 0x05a2, 0x05a2, 0x05ba, 0x05ba, 0x05c5, 0x05cf, 0x05eb, 0x05ef, 0x05f5, 0x060b, 0x060d, 0x061a, 0x061c, 0x061e, 0x0620, 0x0620, 0x063b, 0x063f, 0x0656, 0x065f, 0x06ee, 0x06ef, 0x06ff, 0x06ff, 0x070e, 0x070e, 0x072d, 0x072f, 0x074b, 0x077f, 0x07b2, 0x0900, 0x0904, 0x0904, 0x093a, 0x093b, 0x094e, 0x094f, 0x0955, 0x0957, 0x0971, 0x0980, 0x0984, 0x0984, 0x098d, 0x098e, 0x0991, 0x0992, 0x09a9, 0x09a9, 0x09b1, 0x09b1, 0x09b3, 0x09b5, 0x09ba, 0x09bb, 0x09bd, 0x09bd, 0x09c5, 0x09c6, 0x09c9, 0x09ca, 0x09ce, 0x09d6, 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, 0x09fb, 0x0a01, 0x0a03, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, 0x0a29, 0x0a29, 0x0a31, 0x0a31, 0x0a34, 0x0a34, 0x0a37, 0x0a37, 0x0a3a, 0x0a3b, 0x0a3d, 0x0a3d, 0x0a43, 0x0a46, 0x0a49, 0x0a4a, 0x0a4e, 0x0a58, 0x0a5d, 0x0a5d, 0x0a5f, 0x0a65, 0x0a75, 0x0a80, 0x0a84, 0x0a84, 0x0a8c, 0x0a8c, 0x0a8e, 0x0a8e, 0x0a92, 0x0a92, 0x0aa9, 0x0aa9, 0x0ab1, 0x0ab1, 0x0ab4, 0x0ab4, 0x0aba, 0x0abb, 0x0ac6, 0x0ac6, 0x0aca, 0x0aca, 0x0ace, 0x0acf, 0x0ad1, 0x0adf, 0x0ae1, 0x0ae5, 0x0af0, 0x0b00, 0x0b04, 0x0b04, 0x0b0d, 0x0b0e, 0x0b11, 0x0b12, 0x0b29, 0x0b29, 0x0b31, 0x0b31, 0x0b34, 0x0b35, 0x0b3a, 0x0b3b, 0x0b44, 0x0b46, 0x0b49, 0x0b4a, 0x0b4e, 0x0b55, 0x0b58, 0x0b5b, 0x0b5e, 0x0b5e, 0x0b62, 0x0b65, 0x0b71, 0x0b81, 0x0b84, 0x0b84, 0x0b8b, 0x0b8d, 0x0b91, 0x0b91, 0x0b96, 0x0b98, 0x0b9b, 0x0b9b, 0x0b9d, 0x0b9d, 0x0ba0, 0x0ba2, 0x0ba5, 0x0ba7, 0x0bab, 0x0bad, 0x0bb6, 0x0bb6, 0x0bba, 0x0bbd, 0x0bc3, 0x0bc5, 0x0bc9, 0x0bc9, 0x0bce, 0x0bd6, 0x0bd8, 0x0be6, 0x0bf3, 0x0c00, 0x0c04, 0x0c04, 0x0c0d, 0x0c0d, 0x0c11, 0x0c11, 0x0c29, 0x0c29, 0x0c34, 0x0c34, 0x0c3a, 0x0c3d, 0x0c45, 0x0c45, 0x0c49, 0x0c49, 0x0c4e, 0x0c54, 0x0c57, 0x0c5f, 0x0c62, 0x0c65, 0x0c70, 0x0c81, 0x0c84, 0x0c84, 0x0c8d, 0x0c8d, 0x0c91, 0x0c91, 0x0ca9, 0x0ca9, 0x0cb4, 0x0cb4, 0x0cba, 0x0cbd, 0x0cc5, 0x0cc5, 0x0cc9, 0x0cc9, 0x0cce, 0x0cd4, 0x0cd7, 0x0cdd, 0x0cdf, 0x0cdf, 0x0ce2, 0x0ce5, 0x0cf0, 0x0d01, 0x0d04, 0x0d04, 0x0d0d, 0x0d0d, 0x0d11, 0x0d11, 0x0d29, 0x0d29, 0x0d3a, 0x0d3d, 0x0d44, 0x0d45, 0x0d49, 0x0d49, 0x0d4e, 0x0d56, 0x0d58, 0x0d5f, 0x0d62, 0x0d65, 0x0d70, 0x0d81, 0x0d84, 0x0d84, 0x0d97, 0x0d99, 0x0db2, 0x0db2, 0x0dbc, 0x0dbc, 0x0dbe, 0x0dbf, 0x0dc7, 0x0dc9, 0x0dcb, 0x0dce, 0x0dd5, 0x0dd5, 0x0dd7, 0x0dd7, 0x0de0, 0x0df1, 0x0df5, 0x0e00, 0x0e3b, 0x0e3e, 0x0e5c, 0x0e80, 0x0e83, 0x0e83, 0x0e85, 0x0e86, 0x0e89, 0x0e89, 0x0e8b, 0x0e8c, 0x0e8e, 0x0e93, 0x0e98, 0x0e98, 0x0ea0, 0x0ea0, 0x0ea4, 0x0ea4, 0x0ea6, 0x0ea6, 0x0ea8, 0x0ea9, 0x0eac, 0x0eac, 0x0eba, 0x0eba, 0x0ebe, 0x0ebf, 0x0ec5, 0x0ec5, 0x0ec7, 0x0ec7, 0x0ece, 0x0ecf, 0x0eda, 0x0edb, 0x0ede, 0x0eff, 0x0f48, 0x0f48, 0x0f6b, 0x0f70, 0x0f8c, 0x0f8f, 0x0f98, 0x0f98, 0x0fbd, 0x0fbd, 0x0fcd, 0x0fce, 0x0fd0, 0x0fff, 0x1022, 0x1022, 0x1028, 0x1028, 0x102b, 0x102b, 0x1033, 0x1035, 0x103a, 0x103f, 0x105a, 0x109f, 0x10c6, 0x10cf, 0x10f9, 0x10fa, 0x10fc, 0x10ff, 0x115a, 0x115e, 0x11a3, 0x11a7, 0x11fa, 0x11ff, 0x1207, 0x1207, 0x1247, 0x1247, 0x1249, 0x1249, 0x124e, 0x124f, 0x1257, 0x1257, 0x1259, 0x1259, 0x125e, 0x125f, 0x1287, 0x1287, 0x1289, 0x1289, 0x128e, 0x128f, 0x12af, 0x12af, 0x12b1, 0x12b1, 0x12b6, 0x12b7, 0x12bf, 0x12bf, 0x12c1, 0x12c1, 0x12c6, 0x12c7, 0x12cf, 0x12cf, 0x12d7, 0x12d7, 0x12ef, 0x12ef, 0x130f, 0x130f, 0x1311, 0x1311, 0x1316, 0x1317, 0x131f, 0x131f, 0x1347, 0x1347, 0x135b, 0x1360, 0x137d, 0x139f, 0x13f5, 0x1400, 0x1677, 0x167f, 0x169d, 0x169f, 0x16f1, 0x16ff, 0x170d, 0x170d, 0x1715, 0x171f, 0x1737, 0x173f, 0x1754, 0x175f, 0x176d, 0x176d, 0x1771, 0x1771, 0x1774, 0x177f, 0x17dd, 0x17df, 0x17ea, 0x17ff, 0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, 0x18aa, 0x1dff, 0x1e9c, 0x1e9f, 0x1efa, 0x1eff, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47, 0x1f4e, 0x1f4f, 0x1f58, 0x1f58, 0x1f5a, 0x1f5a, 0x1f5c, 0x1f5c, 0x1f5e, 0x1f5e, 0x1f7e, 0x1f7f, 0x1fb5, 0x1fb5, 0x1fc5, 0x1fc5, 0x1fd4, 0x1fd5, 0x1fdc, 0x1fdc, 0x1ff0, 0x1ff1, 0x1ff5, 0x1ff5, 0x1fff, 0x1fff, 0x2053, 0x2056, 0x2058, 0x205e, 0x2064, 0x2069, 0x2072, 0x2073, 0x208f, 0x209f, 0x20b2, 0x20cf, 0x20eb, 0x20ff, 0x213b, 0x213c, 0x214c, 0x2152, 0x2184, 0x218f, 0x23cf, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, 0x24ff, 0x24ff, 0x2614, 0x2615, 0x2618, 0x2618, 0x267e, 0x267f, 0x268a, 0x2700, 0x2705, 0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e, 0x2753, 0x2755, 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0, 0x27b0, 0x27bf, 0x27cf, 0x27ec, 0x27ef, 0x2b00, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, 0x2ffc, 0x2fff, 0x3040, 0x3040, 0x3097, 0x3098, 0x3100, 0x3104, 0x312d, 0x3130, 0x318f, 0x318f, 0x31b8, 0x31ef, 0x321d, 0x321f, 0x3244, 0x3250, 0x327c, 0x327e, 0x32cc, 0x32cf, 0x32ff, 0x32ff, 0x3377, 0x337a, 0x33de, 0x33df, 0x33ff, 0x33ff, 0x4db6, 0x4dff, 0x9fa6, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xabff, 0xd7a4, 0xd7ff, 0xfa2e, 0xfa2f, 0xfa6b, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, 0xfb37, 0xfb37, 0xfb3d, 0xfb3d, 0xfb3f, 0xfb3f, 0xfb42, 0xfb42, 0xfb45, 0xfb45, 0xfbb2, 0xfbd2, 0xfd40, 0xfd4f, 0xfd90, 0xfd91, 0xfdc8, 0xfdcf, 0xfdfd, 0xfdff, 0xfe10, 0xfe1f, 0xfe24, 0xfe2f, 0xfe47, 0xfe48, 0xfe53, 0xfe53, 0xfe67, 0xfe67, 0xfe6c, 0xfe6f, 0xfe75, 0xfe75, 0xfefd, 0xfefe, 0xff00, 0xff00, 0xffbf, 0xffc1, 0xffc8, 0xffc9, 0xffd0, 0xffd1, 0xffd8, 0xffd9, 0xffdd, 0xffdf, 0xffe7, 0xffe7, 0xffef, 0xfff8, 0x10000, 0x102ff, 0x1031f, 0x1031f, 0x10324, 0x1032f, 0x1034b, 0x103ff, 0x10426, 0x10427, 0x1044e, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d129, 0x1d1de, 0x1d3ff, 0x1d455, 0x1d455, 0x1d49d, 0x1d49d, 0x1d4a0, 0x1d4a1, 0x1d4a3, 0x1d4a4, 0x1d4a7, 0x1d4a8, 0x1d4ad, 0x1d4ad, 0x1d4ba, 0x1d4ba, 0x1d4bc, 0x1d4bc, 0x1d4c1, 0x1d4c1, 0x1d4c4, 0x1d4c4, 0x1d506, 0x1d506, 0x1d50b, 0x1d50c, 0x1d515, 0x1d515, 0x1d51d, 0x1d51d, 0x1d53a, 0x1d53a, 0x1d53f, 0x1d53f, 0x1d545, 0x1d545, 0x1d547, 0x1d549, 0x1d551, 0x1d551, 0x1d6a4, 0x1d6a7, 0x1d7ca, 0x1d7cd, 0x1d800, 0x1fffd, 0x2a6d7, 0x2f7ff, 0x2fa1e, 0x2fffd, 0x30000, 0x3fffd, 0x40000, 0x4fffd, 0x50000, 0x5fffd, 0x60000, 0x6fffd, 0x70000, 0x7fffd, 0x80000, 0x8fffd, 0x90000, 0x9fffd, 0xa0000, 0xafffd, 0xb0000, 0xbfffd, 0xc0000, 0xcfffd, 0xd0000, 0xdfffd, 0xe0000, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xefffd]; // prettier-ignore-end
25439
25440
var isUnassignedCodePoint = function isUnassignedCodePoint(character) {
25441
  return inRange(character, unassigned_code_points);
25442
}; // prettier-ignore-start
25443
25444
/**
25445
 * B.1 Commonly mapped to nothing
25446
 * @link https://tools.ietf.org/html/rfc3454#appendix-B.1
25447
 */
25448
25449
var commonly_mapped_to_nothing = [0x00ad, 0x00ad, 0x034f, 0x034f, 0x1806, 0x1806, 0x180b, 0x180b, 0x180c, 0x180c, 0x180d, 0x180d, 0x200b, 0x200b, 0x200c, 0x200c, 0x200d, 0x200d, 0x2060, 0x2060, 0xfe00, 0xfe00, 0xfe01, 0xfe01, 0xfe02, 0xfe02, 0xfe03, 0xfe03, 0xfe04, 0xfe04, 0xfe05, 0xfe05, 0xfe06, 0xfe06, 0xfe07, 0xfe07, 0xfe08, 0xfe08, 0xfe09, 0xfe09, 0xfe0a, 0xfe0a, 0xfe0b, 0xfe0b, 0xfe0c, 0xfe0c, 0xfe0d, 0xfe0d, 0xfe0e, 0xfe0e, 0xfe0f, 0xfe0f, 0xfeff, 0xfeff]; // prettier-ignore-end
25450
25451
var isCommonlyMappedToNothing = function isCommonlyMappedToNothing(character) {
25452
  return inRange(character, commonly_mapped_to_nothing);
25453
}; // prettier-ignore-start
25454
25455
/**
25456
 * C.1.2 Non-ASCII space characters
25457
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2
25458
 */
25459
25460
var non_ASCII_space_characters = [0x00a0, 0x00a0
25461
/* NO-BREAK SPACE */, 0x1680, 0x1680
25462
/* OGHAM SPACE MARK */, 0x2000, 0x2000
25463
/* EN QUAD */, 0x2001, 0x2001
25464
/* EM QUAD */, 0x2002, 0x2002
25465
/* EN SPACE */, 0x2003, 0x2003
25466
/* EM SPACE */, 0x2004, 0x2004
25467
/* THREE-PER-EM SPACE */, 0x2005, 0x2005
25468
/* FOUR-PER-EM SPACE */, 0x2006, 0x2006
25469
/* SIX-PER-EM SPACE */, 0x2007, 0x2007
25470
/* FIGURE SPACE */, 0x2008, 0x2008
25471
/* PUNCTUATION SPACE */, 0x2009, 0x2009
25472
/* THIN SPACE */, 0x200a, 0x200a
25473
/* HAIR SPACE */, 0x200b, 0x200b
25474
/* ZERO WIDTH SPACE */, 0x202f, 0x202f
25475
/* NARROW NO-BREAK SPACE */, 0x205f, 0x205f
25476
/* MEDIUM MATHEMATICAL SPACE */, 0x3000, 0x3000
25477
/* IDEOGRAPHIC SPACE */]; // prettier-ignore-end
25478
25479
var isNonASCIISpaceCharacter = function isNonASCIISpaceCharacter(character) {
25480
  return inRange(character, non_ASCII_space_characters);
25481
}; // prettier-ignore-start
25482
25483
var non_ASCII_controls_characters = [
25484
/**
25485
 * C.2.2 Non-ASCII control characters
25486
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2
25487
 */
25488
0x0080, 0x009f
25489
/* [CONTROL CHARACTERS] */, 0x06dd, 0x06dd
25490
/* ARABIC END OF AYAH */, 0x070f, 0x070f
25491
/* SYRIAC ABBREVIATION MARK */, 0x180e, 0x180e
25492
/* MONGOLIAN VOWEL SEPARATOR */, 0x200c, 0x200c
25493
/* ZERO WIDTH NON-JOINER */, 0x200d, 0x200d
25494
/* ZERO WIDTH JOINER */, 0x2028, 0x2028
25495
/* LINE SEPARATOR */, 0x2029, 0x2029
25496
/* PARAGRAPH SEPARATOR */, 0x2060, 0x2060
25497
/* WORD JOINER */, 0x2061, 0x2061
25498
/* FUNCTION APPLICATION */, 0x2062, 0x2062
25499
/* INVISIBLE TIMES */, 0x2063, 0x2063
25500
/* INVISIBLE SEPARATOR */, 0x206a, 0x206f
25501
/* [CONTROL CHARACTERS] */, 0xfeff, 0xfeff
25502
/* ZERO WIDTH NO-BREAK SPACE */, 0xfff9, 0xfffc
25503
/* [CONTROL CHARACTERS] */, 0x1d173, 0x1d17a
25504
/* [MUSICAL CONTROL CHARACTERS] */];
25505
25506
var non_character_codepoints = [
25507
/**
25508
 * C.4 Non-character code points
25509
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.4
25510
 */
25511
0xfdd0, 0xfdef
25512
/* [NONCHARACTER CODE POINTS] */, 0xfffe, 0xffff
25513
/* [NONCHARACTER CODE POINTS] */, 0x1fffe, 0x1ffff
25514
/* [NONCHARACTER CODE POINTS] */, 0x2fffe, 0x2ffff
25515
/* [NONCHARACTER CODE POINTS] */, 0x3fffe, 0x3ffff
25516
/* [NONCHARACTER CODE POINTS] */, 0x4fffe, 0x4ffff
25517
/* [NONCHARACTER CODE POINTS] */, 0x5fffe, 0x5ffff
25518
/* [NONCHARACTER CODE POINTS] */, 0x6fffe, 0x6ffff
25519
/* [NONCHARACTER CODE POINTS] */, 0x7fffe, 0x7ffff
25520
/* [NONCHARACTER CODE POINTS] */, 0x8fffe, 0x8ffff
25521
/* [NONCHARACTER CODE POINTS] */, 0x9fffe, 0x9ffff
25522
/* [NONCHARACTER CODE POINTS] */, 0xafffe, 0xaffff
25523
/* [NONCHARACTER CODE POINTS] */, 0xbfffe, 0xbffff
25524
/* [NONCHARACTER CODE POINTS] */, 0xcfffe, 0xcffff
25525
/* [NONCHARACTER CODE POINTS] */, 0xdfffe, 0xdffff
25526
/* [NONCHARACTER CODE POINTS] */, 0xefffe, 0xeffff
25527
/* [NONCHARACTER CODE POINTS] */, 0x10fffe, 0x10ffff
25528
/* [NONCHARACTER CODE POINTS] */];
25529
/**
25530
 * 2.3.  Prohibited Output
25531
 */
25532
25533
var prohibited_characters = [
25534
/**
25535
 * C.2.1 ASCII control characters
25536
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1
25537
 */
25538
0, 0x001f
25539
/* [CONTROL CHARACTERS] */, 0x007f, 0x007f
25540
/* DELETE */,
25541
/**
25542
 * C.8 Change display properties or are deprecated
25543
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.8
25544
 */
25545
0x0340, 0x0340
25546
/* COMBINING GRAVE TONE MARK */, 0x0341, 0x0341
25547
/* COMBINING ACUTE TONE MARK */, 0x200e, 0x200e
25548
/* LEFT-TO-RIGHT MARK */, 0x200f, 0x200f
25549
/* RIGHT-TO-LEFT MARK */, 0x202a, 0x202a
25550
/* LEFT-TO-RIGHT EMBEDDING */, 0x202b, 0x202b
25551
/* RIGHT-TO-LEFT EMBEDDING */, 0x202c, 0x202c
25552
/* POP DIRECTIONAL FORMATTING */, 0x202d, 0x202d
25553
/* LEFT-TO-RIGHT OVERRIDE */, 0x202e, 0x202e
25554
/* RIGHT-TO-LEFT OVERRIDE */, 0x206a, 0x206a
25555
/* INHIBIT SYMMETRIC SWAPPING */, 0x206b, 0x206b
25556
/* ACTIVATE SYMMETRIC SWAPPING */, 0x206c, 0x206c
25557
/* INHIBIT ARABIC FORM SHAPING */, 0x206d, 0x206d
25558
/* ACTIVATE ARABIC FORM SHAPING */, 0x206e, 0x206e
25559
/* NATIONAL DIGIT SHAPES */, 0x206f, 0x206f
25560
/* NOMINAL DIGIT SHAPES */,
25561
/**
25562
 * C.7 Inappropriate for canonical representation
25563
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.7
25564
 */
25565
0x2ff0, 0x2ffb
25566
/* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,
25567
/**
25568
 * C.5 Surrogate codes
25569
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.5
25570
 */
25571
0xd800, 0xdfff,
25572
/**
25573
 * C.3 Private use
25574
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.3
25575
 */
25576
0xe000, 0xf8ff
25577
/* [PRIVATE USE, PLANE 0] */,
25578
/**
25579
 * C.6 Inappropriate for plain text
25580
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.6
25581
 */
25582
0xfff9, 0xfff9
25583
/* INTERLINEAR ANNOTATION ANCHOR */, 0xfffa, 0xfffa
25584
/* INTERLINEAR ANNOTATION SEPARATOR */, 0xfffb, 0xfffb
25585
/* INTERLINEAR ANNOTATION TERMINATOR */, 0xfffc, 0xfffc
25586
/* OBJECT REPLACEMENT CHARACTER */, 0xfffd, 0xfffd
25587
/* REPLACEMENT CHARACTER */,
25588
/**
25589
 * C.9 Tagging characters
25590
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.9
25591
 */
25592
0xe0001, 0xe0001
25593
/* LANGUAGE TAG */, 0xe0020, 0xe007f
25594
/* [TAGGING CHARACTERS] */,
25595
/**
25596
 * C.3 Private use
25597
 * @link https://tools.ietf.org/html/rfc3454#appendix-C.3
25598
 */
25599
0xf0000, 0xffffd
25600
/* [PRIVATE USE, PLANE 15] */, 0x100000, 0x10fffd
25601
/* [PRIVATE USE, PLANE 16] */]; // prettier-ignore-end
25602
25603
var isProhibitedCharacter = function isProhibitedCharacter(character) {
25604
  return inRange(character, non_ASCII_space_characters) || inRange(character, prohibited_characters) || inRange(character, non_ASCII_controls_characters) || inRange(character, non_character_codepoints);
25605
}; // prettier-ignore-start
25606
25607
/**
25608
 * D.1 Characters with bidirectional property "R" or "AL"
25609
 * @link https://tools.ietf.org/html/rfc3454#appendix-D.1
25610
 */
25611
25612
var bidirectional_r_al = [0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x061b, 0x061b, 0x061f, 0x061f, 0x0621, 0x063a, 0x0640, 0x064a, 0x066d, 0x066f, 0x0671, 0x06d5, 0x06dd, 0x06dd, 0x06e5, 0x06e6, 0x06fa, 0x06fe, 0x0700, 0x070d, 0x0710, 0x0710, 0x0712, 0x072c, 0x0780, 0x07a5, 0x07b1, 0x07b1, 0x200f, 0x200f, 0xfb1d, 0xfb1d, 0xfb1f, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfc, 0xfe70, 0xfe74, 0xfe76, 0xfefc]; // prettier-ignore-end
25613
25614
var isBidirectionalRAL = function isBidirectionalRAL(character) {
25615
  return inRange(character, bidirectional_r_al);
25616
}; // prettier-ignore-start
25617
25618
/**
25619
 * D.2 Characters with bidirectional property "L"
25620
 * @link https://tools.ietf.org/html/rfc3454#appendix-D.2
25621
 */
25622
25623
var bidirectional_l = [0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x0220, 0x0222, 0x0233, 0x0250, 0x02ad, 0x02b0, 0x02b8, 0x02bb, 0x02c1, 0x02d0, 0x02d1, 0x02e0, 0x02e4, 0x02ee, 0x02ee, 0x037a, 0x037a, 0x0386, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03ce, 0x03d0, 0x03f5, 0x0400, 0x0482, 0x048a, 0x04ce, 0x04d0, 0x04f5, 0x04f8, 0x04f9, 0x0500, 0x050f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x0589, 0x0903, 0x0903, 0x0905, 0x0939, 0x093d, 0x0940, 0x0949, 0x094c, 0x0950, 0x0950, 0x0958, 0x0961, 0x0964, 0x0970, 0x0982, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09be, 0x09c0, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e1, 0x09e6, 0x09f1, 0x09f4, 0x09fa, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a40, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a6f, 0x0a72, 0x0a74, 0x0a83, 0x0a83, 0x0a85, 0x0a8b, 0x0a8d, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac0, 0x0ac9, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae0, 0x0ae6, 0x0aef, 0x0b02, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b36, 0x0b39, 0x0b3d, 0x0b3e, 0x0b40, 0x0b40, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b57, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b61, 0x0b66, 0x0b70, 0x0b83, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, 0x0b99, 0x0b9a, 0x0b9c, 0x0b9c, 0x0b9e, 0x0b9f, 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae, 0x0bb5, 0x0bb7, 0x0bb9, 0x0bbe, 0x0bbf, 0x0bc1, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcc, 0x0bd7, 0x0bd7, 0x0be7, 0x0bf2, 0x0c01, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39, 0x0c41, 0x0c44, 0x0c60, 0x0c61, 0x0c66, 0x0c6f, 0x0c82, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbe, 0x0cbe, 0x0cc0, 0x0cc4, 0x0cc7, 0x0cc8, 0x0cca, 0x0ccb, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0ce6, 0x0cef, 0x0d02, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, 0x0d3e, 0x0d40, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d61, 0x0d66, 0x0d6f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd1, 0x0dd8, 0x0ddf, 0x0df2, 0x0df4, 0x0e01, 0x0e30, 0x0e32, 0x0e33, 0x0e40, 0x0e46, 0x0e4f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, 0x0e8a, 0x0e8a, 0x0e8d, 0x0e8d, 0x0e94, 0x0e97, 0x0e99, 0x0e9f, 0x0ea1, 0x0ea3, 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, 0x0ead, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ed0, 0x0ed9, 0x0edc, 0x0edd, 0x0f00, 0x0f17, 0x0f1a, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38, 0x0f3e, 0x0f47, 0x0f49, 0x0f6a, 0x0f7f, 0x0f7f, 0x0f85, 0x0f85, 0x0f88, 0x0f8b, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fcf, 0x0fcf, 0x1000, 0x1021, 0x1023, 0x1027, 0x1029, 0x102a, 0x102c, 0x102c, 0x1031, 0x1031, 0x1038, 0x1038, 0x1040, 0x1057, 0x10a0, 0x10c5, 0x10d0, 0x10f8, 0x10fb, 0x10fb, 0x1100, 0x1159, 0x115f, 0x11a2, 0x11a8, 0x11f9, 0x1200, 0x1206, 0x1208, 0x1246, 0x1248, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, 0x125a, 0x125d, 0x1260, 0x1286, 0x1288, 0x1288, 0x128a, 0x128d, 0x1290, 0x12ae, 0x12b0, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12ce, 0x12d0, 0x12d6, 0x12d8, 0x12ee, 0x12f0, 0x130e, 0x1310, 0x1310, 0x1312, 0x1315, 0x1318, 0x131e, 0x1320, 0x1346, 0x1348, 0x135a, 0x1361, 0x137c, 0x13a0, 0x13f4, 0x1401, 0x1676, 0x1681, 0x169a, 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1711, 0x1720, 0x1731, 0x1735, 0x1736, 0x1740, 0x1751, 0x1760, 0x176c, 0x176e, 0x1770, 0x1780, 0x17b6, 0x17be, 0x17c5, 0x17c7, 0x17c8, 0x17d4, 0x17da, 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18a8, 0x1e00, 0x1e9b, 0x1ea0, 0x1ef9, 0x1f00, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffc, 0x200e, 0x200e, 0x2071, 0x2071, 0x207f, 0x207f, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2131, 0x2133, 0x2139, 0x213d, 0x213f, 0x2145, 0x2149, 0x2160, 0x2183, 0x2336, 0x237a, 0x2395, 0x2395, 0x249c, 0x24e9, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312c, 0x3131, 0x318e, 0x3190, 0x31b7, 0x31f0, 0x321c, 0x3220, 0x3243, 0x3260, 0x327b, 0x327f, 0x32b0, 0x32c0, 0x32cb, 0x32d0, 0x32fe, 0x3300, 0x3376, 0x337b, 0x33dd, 0x33e0, 0x33fe, 0x3400, 0x4db5, 0x4e00, 0x9fa5, 0xa000, 0xa48c, 0xac00, 0xd7a3, 0xd800, 0xfa2d, 0xfa30, 0xfa6a, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff21, 0xff3a, 0xff41, 0xff5a, 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10300, 0x1031e, 0x10320, 0x10323, 0x10330, 0x1034a, 0x10400, 0x10425, 0x10428, 0x1044d, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d12a, 0x1d166, 0x1d16a, 0x1d172, 0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1dd, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c0, 0x1d4c2, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a3, 0x1d6a8, 0x1d7c9, 0x20000, 0x2a6d6, 0x2f800, 0x2fa1d, 0xf0000, 0xffffd, 0x100000, 0x10fffd]; // prettier-ignore-end
25624
25625
var isBidirectionalL = function isBidirectionalL(character) {
25626
  return inRange(character, bidirectional_l);
25627
};
25628
25629
/**
25630
 * non-ASCII space characters [StringPrep, C.1.2] that can be
25631
 * mapped to SPACE (U+0020)
25632
 */
25633
25634
var mapping2space = isNonASCIISpaceCharacter;
25635
/**
25636
 * the "commonly mapped to nothing" characters [StringPrep, B.1]
25637
 * that can be mapped to nothing.
25638
 */
25639
25640
var mapping2nothing = isCommonlyMappedToNothing; // utils
25641
25642
var getCodePoint = function getCodePoint(character) {
25643
  return character.codePointAt(0);
25644
};
25645
var first = function first(x) {
25646
  return x[0];
25647
};
25648
var last = function last(x) {
25649
  return x[x.length - 1];
25650
};
25651
/**
25652
 * Convert provided string into an array of Unicode Code Points.
25653
 * Based on https://stackoverflow.com/a/21409165/1556249
25654
 * and https://www.npmjs.com/package/code-point-at.
25655
 * @param {string} input
25656
 * @returns {number[]}
25657
 */
25658
25659
function toCodePoints(input) {
25660
  var codepoints = [];
25661
  var size = input.length;
25662
  for (var i = 0; i < size; i += 1) {
25663
    var before = input.charCodeAt(i);
25664
    if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {
25665
      var next = input.charCodeAt(i + 1);
25666
      if (next >= 0xdc00 && next <= 0xdfff) {
25667
        codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);
25668
        i += 1;
25669
        continue;
25670
      }
25671
    }
25672
    codepoints.push(before);
25673
  }
25674
  return codepoints;
25675
}
25676
/**
25677
 * SASLprep.
25678
 * @param {string} input
25679
 * @param {Object} opts
25680
 * @param {boolean} opts.allowUnassigned
25681
 * @returns {string}
25682
 */
25683
25684
function saslprep(input) {
25685
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25686
  if (typeof input !== 'string') {
25687
    throw new TypeError('Expected string.');
25688
  }
25689
  if (input.length === 0) {
25690
    return '';
25691
  } // 1. Map
25692
25693
  var mapped_input = toCodePoints(input) // 1.1 mapping to space
25694
  .map(function (character) {
25695
    return mapping2space(character) ? 0x20 : character;
25696
  }) // 1.2 mapping to nothing
25697
  .filter(function (character) {
25698
    return !mapping2nothing(character);
25699
  }); // 2. Normalize
25700
25701
  var normalized_input = String.fromCodePoint.apply(null, mapped_input).normalize('NFKC');
25702
  var normalized_map = toCodePoints(normalized_input); // 3. Prohibit
25703
25704
  var hasProhibited = normalized_map.some(isProhibitedCharacter);
25705
  if (hasProhibited) {
25706
    throw new Error('Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3');
25707
  } // Unassigned Code Points
25708
25709
  if (opts.allowUnassigned !== true) {
25710
    var hasUnassigned = normalized_map.some(isUnassignedCodePoint);
25711
    if (hasUnassigned) {
25712
      throw new Error('Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5');
25713
    }
25714
  } // 4. check bidi
25715
25716
  var hasBidiRAL = normalized_map.some(isBidirectionalRAL);
25717
  var hasBidiL = normalized_map.some(isBidirectionalL); // 4.1 If a string contains any RandALCat character, the string MUST NOT
25718
  // contain any LCat character.
25719
25720
  if (hasBidiRAL && hasBidiL) {
25721
    throw new Error('String must not contain RandALCat and LCat at the same time,' + ' see https://tools.ietf.org/html/rfc3454#section-6');
25722
  }
25723
  /**
25724
   * 4.2 If a string contains any RandALCat character, a RandALCat
25725
   * character MUST be the first character of the string, and a
25726
   * RandALCat character MUST be the last character of the string.
25727
   */
25728
25729
  var isFirstBidiRAL = isBidirectionalRAL(getCodePoint(first(normalized_input)));
25730
  var isLastBidiRAL = isBidirectionalRAL(getCodePoint(last(normalized_input)));
25731
  if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {
25732
    throw new Error('Bidirectional RandALCat character must be the first and the last' + ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6');
25733
  }
25734
  return normalized_input;
25735
}
25736
var PDFSecurity = /*#__PURE__*/function () {
25737
  _createClass(PDFSecurity, null, [{
25738
    key: "generateFileID",
25739
    value: function generateFileID() {
25740
      var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25741
      var infoStr = "".concat(info.CreationDate.getTime(), "\n");
25742
      for (var key in info) {
25743
        // eslint-disable-next-line no-prototype-builtins
25744
        if (!info.hasOwnProperty(key)) {
25745
          continue;
25746
        }
25747
        infoStr += "".concat(key, ": ").concat(info[key].valueOf(), "\n");
25748
      }
25749
      return wordArrayToBuffer(_cryptoJs.default.MD5(infoStr));
25750
    }
25751
  }, {
25752
    key: "generateRandomWordArray",
25753
    value: function generateRandomWordArray(bytes) {
25754
      return _cryptoJs.default.lib.WordArray.random(bytes);
25755
    }
25756
  }, {
25757
    key: "create",
25758
    value: function create(document) {
25759
      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25760
      if (!options.ownerPassword && !options.userPassword) {
25761
        return null;
25762
      }
25763
      return new PDFSecurity(document, options);
25764
    }
25765
  }]);
25766
  function PDFSecurity(document) {
25767
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25768
    _classCallCheck(this, PDFSecurity);
25769
    if (!options.ownerPassword && !options.userPassword) {
25770
      throw new Error('None of owner password and user password is defined.');
25771
    }
25772
    this.document = document;
25773
    this._setupEncryption(options);
25774
  }
25775
  _createClass(PDFSecurity, [{
25776
    key: "_setupEncryption",
25777
    value: function _setupEncryption(options) {
25778
      switch (options.pdfVersion) {
25779
        case '1.4':
25780
        case '1.5':
25781
          this.version = 2;
25782
          break;
25783
        case '1.6':
25784
        case '1.7':
25785
          this.version = 4;
25786
          break;
25787
        case '1.7ext3':
25788
          this.version = 5;
25789
          break;
25790
        default:
25791
          this.version = 1;
25792
          break;
25793
      }
25794
      var encDict = {
25795
        Filter: 'Standard'
25796
      };
25797
      switch (this.version) {
25798
        case 1:
25799
        case 2:
25800
        case 4:
25801
          this._setupEncryptionV1V2V4(this.version, encDict, options);
25802
          break;
25803
        case 5:
25804
          this._setupEncryptionV5(encDict, options);
25805
          break;
25806
      }
25807
      this.dictionary = this.document.ref(encDict);
25808
    }
25809
  }, {
25810
    key: "_setupEncryptionV1V2V4",
25811
    value: function _setupEncryptionV1V2V4(v, encDict, options) {
25812
      var r, permissions;
25813
      switch (v) {
25814
        case 1:
25815
          r = 2;
25816
          this.keyBits = 40;
25817
          permissions = getPermissionsR2(options.permissions);
25818
          break;
25819
        case 2:
25820
          r = 3;
25821
          this.keyBits = 128;
25822
          permissions = getPermissionsR3(options.permissions);
25823
          break;
25824
        case 4:
25825
          r = 4;
25826
          this.keyBits = 128;
25827
          permissions = getPermissionsR3(options.permissions);
25828
          break;
25829
      }
25830
      var paddedUserPassword = processPasswordR2R3R4(options.userPassword);
25831
      var paddedOwnerPassword = options.ownerPassword ? processPasswordR2R3R4(options.ownerPassword) : paddedUserPassword;
25832
      var ownerPasswordEntry = getOwnerPasswordR2R3R4(r, this.keyBits, paddedUserPassword, paddedOwnerPassword);
25833
      this.encryptionKey = getEncryptionKeyR2R3R4(r, this.keyBits, this.document._id, paddedUserPassword, ownerPasswordEntry, permissions);
25834
      var userPasswordEntry;
25835
      if (r === 2) {
25836
        userPasswordEntry = getUserPasswordR2(this.encryptionKey);
25837
      } else {
25838
        userPasswordEntry = getUserPasswordR3R4(this.document._id, this.encryptionKey);
25839
      }
25840
      encDict.V = v;
25841
      if (v >= 2) {
25842
        encDict.Length = this.keyBits;
25843
      }
25844
      if (v === 4) {
25845
        encDict.CF = {
25846
          StdCF: {
25847
            AuthEvent: 'DocOpen',
25848
            CFM: 'AESV2',
25849
            Length: this.keyBits / 8
25850
          }
25851
        };
25852
        encDict.StmF = 'StdCF';
25853
        encDict.StrF = 'StdCF';
25854
      }
25855
      encDict.R = r;
25856
      encDict.O = wordArrayToBuffer(ownerPasswordEntry);
25857
      encDict.U = wordArrayToBuffer(userPasswordEntry);
25858
      encDict.P = permissions;
25859
    }
25860
  }, {
25861
    key: "_setupEncryptionV5",
25862
    value: function _setupEncryptionV5(encDict, options) {
25863
      this.keyBits = 256;
25864
      var permissions = getPermissionsR3(options.permissions);
25865
      var processedUserPassword = processPasswordR5(options.userPassword);
25866
      var processedOwnerPassword = options.ownerPassword ? processPasswordR5(options.ownerPassword) : processedUserPassword;
25867
      this.encryptionKey = getEncryptionKeyR5(PDFSecurity.generateRandomWordArray);
25868
      var userPasswordEntry = getUserPasswordR5(processedUserPassword, PDFSecurity.generateRandomWordArray);
25869
      var userKeySalt = _cryptoJs.default.lib.WordArray.create(userPasswordEntry.words.slice(10, 12), 8);
25870
      var userEncryptionKeyEntry = getUserEncryptionKeyR5(processedUserPassword, userKeySalt, this.encryptionKey);
25871
      var ownerPasswordEntry = getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry, PDFSecurity.generateRandomWordArray);
25872
      var ownerKeySalt = _cryptoJs.default.lib.WordArray.create(ownerPasswordEntry.words.slice(10, 12), 8);
25873
      var ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, this.encryptionKey);
25874
      var permsEntry = getEncryptedPermissionsR5(permissions, this.encryptionKey, PDFSecurity.generateRandomWordArray);
25875
      encDict.V = 5;
25876
      encDict.Length = this.keyBits;
25877
      encDict.CF = {
25878
        StdCF: {
25879
          AuthEvent: 'DocOpen',
25880
          CFM: 'AESV3',
25881
          Length: this.keyBits / 8
25882
        }
25883
      };
25884
      encDict.StmF = 'StdCF';
25885
      encDict.StrF = 'StdCF';
25886
      encDict.R = 5;
25887
      encDict.O = wordArrayToBuffer(ownerPasswordEntry);
25888
      encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);
25889
      encDict.U = wordArrayToBuffer(userPasswordEntry);
25890
      encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);
25891
      encDict.P = permissions;
25892
      encDict.Perms = wordArrayToBuffer(permsEntry);
25893
    }
25894
  }, {
25895
    key: "getEncryptFn",
25896
    value: function getEncryptFn(obj, gen) {
25897
      var digest;
25898
      if (this.version < 5) {
25899
        digest = this.encryptionKey.clone().concat(_cryptoJs.default.lib.WordArray.create([(obj & 0xff) << 24 | (obj & 0xff00) << 8 | obj >> 8 & 0xff00 | gen & 0xff, (gen & 0xff00) << 16], 5));
25900
      }
25901
      if (this.version === 1 || this.version === 2) {
25902
        var _key = _cryptoJs.default.MD5(digest);
25903
        _key.sigBytes = Math.min(16, this.keyBits / 8 + 5);
25904
        return function (buffer) {
25905
          return wordArrayToBuffer(_cryptoJs.default.RC4.encrypt(_cryptoJs.default.lib.WordArray.create(buffer), _key).ciphertext);
25906
        };
25907
      }
25908
      var key;
25909
      if (this.version === 4) {
25910
        key = _cryptoJs.default.MD5(digest.concat(_cryptoJs.default.lib.WordArray.create([0x73416c54], 4)));
25911
      } else {
25912
        key = this.encryptionKey;
25913
      }
25914
      var iv = PDFSecurity.generateRandomWordArray(16);
25915
      var options = {
25916
        mode: _cryptoJs.default.mode.CBC,
25917
        padding: _cryptoJs.default.pad.Pkcs7,
25918
        iv: iv
25919
      };
25920
      return function (buffer) {
25921
        return wordArrayToBuffer(iv.clone().concat(_cryptoJs.default.AES.encrypt(_cryptoJs.default.lib.WordArray.create(buffer), key, options).ciphertext));
25922
      };
25923
    }
25924
  }, {
25925
    key: "end",
25926
    value: function end() {
25927
      this.dictionary.end();
25928
    }
25929
  }]);
25930
  return PDFSecurity;
25931
}();
25932
function getPermissionsR2() {
25933
  var permissionObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25934
  var permissions = 0xffffffc0 >> 0;
25935
  if (permissionObject.printing) {
25936
    permissions |= 4;
25937
  }
25938
  if (permissionObject.modifying) {
25939
    permissions |= 8;
25940
  }
25941
  if (permissionObject.copying) {
25942
    permissions |= 16;
25943
  }
25944
  if (permissionObject.annotating) {
25945
    permissions |= 32;
25946
  }
25947
  return permissions;
25948
}
25949
function getPermissionsR3() {
25950
  var permissionObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25951
  var permissions = 0xfffff0c0 >> 0;
25952
  if (permissionObject.printing === 'lowResolution') {
25953
    permissions |= 4;
25954
  }
25955
  if (permissionObject.printing === 'highResolution') {
25956
    permissions |= 2052;
25957
  }
25958
  if (permissionObject.modifying) {
25959
    permissions |= 8;
25960
  }
25961
  if (permissionObject.copying) {
25962
    permissions |= 16;
25963
  }
25964
  if (permissionObject.annotating) {
25965
    permissions |= 32;
25966
  }
25967
  if (permissionObject.fillingForms) {
25968
    permissions |= 256;
25969
  }
25970
  if (permissionObject.contentAccessibility) {
25971
    permissions |= 512;
25972
  }
25973
  if (permissionObject.documentAssembly) {
25974
    permissions |= 1024;
25975
  }
25976
  return permissions;
25977
}
25978
function getUserPasswordR2(encryptionKey) {
25979
  return _cryptoJs.default.RC4.encrypt(processPasswordR2R3R4(), encryptionKey).ciphertext;
25980
}
25981
function getUserPasswordR3R4(documentId, encryptionKey) {
25982
  var key = encryptionKey.clone();
25983
  var cipher = _cryptoJs.default.MD5(processPasswordR2R3R4().concat(_cryptoJs.default.lib.WordArray.create(documentId)));
25984
  for (var i = 0; i < 20; i++) {
25985
    var xorRound = Math.ceil(key.sigBytes / 4);
25986
    for (var j = 0; j < xorRound; j++) {
25987
      key.words[j] = encryptionKey.words[j] ^ (i | i << 8 | i << 16 | i << 24);
25988
    }
25989
    cipher = _cryptoJs.default.RC4.encrypt(cipher, key).ciphertext;
25990
  }
25991
  return cipher.concat(_cryptoJs.default.lib.WordArray.create(null, 16));
25992
}
25993
function getOwnerPasswordR2R3R4(r, keyBits, paddedUserPassword, paddedOwnerPassword) {
25994
  var digest = paddedOwnerPassword;
25995
  var round = r >= 3 ? 51 : 1;
25996
  for (var i = 0; i < round; i++) {
25997
    digest = _cryptoJs.default.MD5(digest);
25998
  }
25999
  var key = digest.clone();
26000
  key.sigBytes = keyBits / 8;
26001
  var cipher = paddedUserPassword;
26002
  round = r >= 3 ? 20 : 1;
26003
  for (var _i = 0; _i < round; _i++) {
26004
    var xorRound = Math.ceil(key.sigBytes / 4);
26005
    for (var j = 0; j < xorRound; j++) {
26006
      key.words[j] = digest.words[j] ^ (_i | _i << 8 | _i << 16 | _i << 24);
26007
    }
26008
    cipher = _cryptoJs.default.RC4.encrypt(cipher, key).ciphertext;
26009
  }
26010
  return cipher;
26011
}
26012
function getEncryptionKeyR2R3R4(r, keyBits, documentId, paddedUserPassword, ownerPasswordEntry, permissions) {
26013
  var key = paddedUserPassword.clone().concat(ownerPasswordEntry).concat(_cryptoJs.default.lib.WordArray.create([lsbFirstWord(permissions)], 4)).concat(_cryptoJs.default.lib.WordArray.create(documentId));
26014
  var round = r >= 3 ? 51 : 1;
26015
  for (var i = 0; i < round; i++) {
26016
    key = _cryptoJs.default.MD5(key);
26017
    key.sigBytes = keyBits / 8;
26018
  }
26019
  return key;
26020
}
26021
function getUserPasswordR5(processedUserPassword, generateRandomWordArray) {
26022
  var validationSalt = generateRandomWordArray(8);
26023
  var keySalt = generateRandomWordArray(8);
26024
  return _cryptoJs.default.SHA256(processedUserPassword.clone().concat(validationSalt)).concat(validationSalt).concat(keySalt);
26025
}
26026
function getUserEncryptionKeyR5(processedUserPassword, userKeySalt, encryptionKey) {
26027
  var key = _cryptoJs.default.SHA256(processedUserPassword.clone().concat(userKeySalt));
26028
  var options = {
26029
    mode: _cryptoJs.default.mode.CBC,
26030
    padding: _cryptoJs.default.pad.NoPadding,
26031
    iv: _cryptoJs.default.lib.WordArray.create(null, 16)
26032
  };
26033
  return _cryptoJs.default.AES.encrypt(encryptionKey, key, options).ciphertext;
26034
}
26035
function getOwnerPasswordR5(processedOwnerPassword, userPasswordEntry, generateRandomWordArray) {
26036
  var validationSalt = generateRandomWordArray(8);
26037
  var keySalt = generateRandomWordArray(8);
26038
  return _cryptoJs.default.SHA256(processedOwnerPassword.clone().concat(validationSalt).concat(userPasswordEntry)).concat(validationSalt).concat(keySalt);
26039
}
26040
function getOwnerEncryptionKeyR5(processedOwnerPassword, ownerKeySalt, userPasswordEntry, encryptionKey) {
26041
  var key = _cryptoJs.default.SHA256(processedOwnerPassword.clone().concat(ownerKeySalt).concat(userPasswordEntry));
26042
  var options = {
26043
    mode: _cryptoJs.default.mode.CBC,
26044
    padding: _cryptoJs.default.pad.NoPadding,
26045
    iv: _cryptoJs.default.lib.WordArray.create(null, 16)
26046
  };
26047
  return _cryptoJs.default.AES.encrypt(encryptionKey, key, options).ciphertext;
26048
}
26049
function getEncryptionKeyR5(generateRandomWordArray) {
26050
  return generateRandomWordArray(32);
26051
}
26052
function getEncryptedPermissionsR5(permissions, encryptionKey, generateRandomWordArray) {
26053
  var cipher = _cryptoJs.default.lib.WordArray.create([lsbFirstWord(permissions), 0xffffffff, 0x54616462], 12).concat(generateRandomWordArray(4));
26054
  var options = {
26055
    mode: _cryptoJs.default.mode.ECB,
26056
    padding: _cryptoJs.default.pad.NoPadding
26057
  };
26058
  return _cryptoJs.default.AES.encrypt(cipher, encryptionKey, options).ciphertext;
26059
}
26060
function processPasswordR2R3R4() {
26061
  var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
26062
  var out = Buffer.alloc(32);
26063
  var length = password.length;
26064
  var index = 0;
26065
  while (index < length && index < 32) {
26066
    var code = password.charCodeAt(index);
26067
    if (code > 0xff) {
26068
      throw new Error('Password contains one or more invalid characters.');
26069
    }
26070
    out[index] = code;
26071
    index++;
26072
  }
26073
  while (index < 32) {
26074
    out[index] = PASSWORD_PADDING[index - length];
26075
    index++;
26076
  }
26077
  return _cryptoJs.default.lib.WordArray.create(out);
26078
}
26079
function processPasswordR5() {
26080
  var password = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
26081
  password = unescape(encodeURIComponent(saslprep(password)));
26082
  var length = Math.min(127, password.length);
26083
  var out = Buffer.alloc(length);
26084
  for (var i = 0; i < length; i++) {
26085
    out[i] = password.charCodeAt(i);
26086
  }
26087
  return _cryptoJs.default.lib.WordArray.create(out);
26088
}
26089
function lsbFirstWord(data) {
26090
  return (data & 0xff) << 24 | (data & 0xff00) << 8 | data >> 8 & 0xff00 | data >> 24 & 0xff;
26091
}
26092
function wordArrayToBuffer(wordArray) {
26093
  var byteArray = [];
26094
  for (var i = 0; i < wordArray.sigBytes; i++) {
26095
    byteArray.push(wordArray.words[Math.floor(i / 4)] >> 8 * (3 - i % 4) & 0xff);
26096
  }
26097
  return Buffer.from(byteArray);
26098
}
26099
var PASSWORD_PADDING = [0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a];
26100
var number = PDFObject.number;
26101
var PDFGradient = /*#__PURE__*/function () {
26102
  function PDFGradient(doc) {
26103
    _classCallCheck(this, PDFGradient);
26104
    this.doc = doc;
26105
    this.stops = [];
26106
    this.embedded = false;
26107
    this.transform = [1, 0, 0, 1, 0, 0];
26108
  }
26109
  _createClass(PDFGradient, [{
26110
    key: "stop",
26111
    value: function stop(pos, color, opacity) {
26112
      if (opacity == null) {
26113
        opacity = 1;
26114
      }
26115
      color = this.doc._normalizeColor(color);
26116
      if (this.stops.length === 0) {
26117
        if (color.length === 3) {
26118
          this._colorSpace = 'DeviceRGB';
26119
        } else if (color.length === 4) {
26120
          this._colorSpace = 'DeviceCMYK';
26121
        } else if (color.length === 1) {
26122
          this._colorSpace = 'DeviceGray';
26123
        } else {
26124
          throw new Error('Unknown color space');
26125
        }
26126
      } else if (this._colorSpace === 'DeviceRGB' && color.length !== 3 || this._colorSpace === 'DeviceCMYK' && color.length !== 4 || this._colorSpace === 'DeviceGray' && color.length !== 1) {
26127
        throw new Error('All gradient stops must use the same color space');
26128
      }
26129
      opacity = Math.max(0, Math.min(1, opacity));
26130
      this.stops.push([pos, color, opacity]);
26131
      return this;
26132
    }
26133
  }, {
26134
    key: "setTransform",
26135
    value: function setTransform(m11, m12, m21, m22, dx, dy) {
26136
      this.transform = [m11, m12, m21, m22, dx, dy];
26137
      return this;
26138
    }
26139
  }, {
26140
    key: "embed",
26141
    value: function embed(m) {
26142
      var fn;
26143
      var stopsLength = this.stops.length;
26144
      if (stopsLength === 0) {
26145
        return;
26146
      }
26147
      this.embedded = true;
26148
      this.matrix = m; // if the last stop comes before 100%, add a copy at 100%
26149
26150
      var last = this.stops[stopsLength - 1];
26151
      if (last[0] < 1) {
26152
        this.stops.push([1, last[1], last[2]]);
26153
      }
26154
      var bounds = [];
26155
      var encode = [];
26156
      var stops = [];
26157
      for (var i = 0; i < stopsLength - 1; i++) {
26158
        encode.push(0, 1);
26159
        if (i + 2 !== stopsLength) {
26160
          bounds.push(this.stops[i + 1][0]);
26161
        }
26162
        fn = this.doc.ref({
26163
          FunctionType: 2,
26164
          Domain: [0, 1],
26165
          C0: this.stops[i + 0][1],
26166
          C1: this.stops[i + 1][1],
26167
          N: 1
26168
        });
26169
        stops.push(fn);
26170
        fn.end();
26171
      } // if there are only two stops, we don't need a stitching function
26172
26173
      if (stopsLength === 1) {
26174
        fn = stops[0];
26175
      } else {
26176
        fn = this.doc.ref({
26177
          FunctionType: 3,
26178
          // stitching function
26179
          Domain: [0, 1],
26180
          Functions: stops,
26181
          Bounds: bounds,
26182
          Encode: encode
26183
        });
26184
        fn.end();
26185
      }
26186
      this.id = "Sh".concat(++this.doc._gradCount);
26187
      var shader = this.shader(fn);
26188
      shader.end();
26189
      var pattern = this.doc.ref({
26190
        Type: 'Pattern',
26191
        PatternType: 2,
26192
        Shading: shader,
26193
        Matrix: this.matrix.map(number)
26194
      });
26195
      pattern.end();
26196
      if (this.stops.some(function (stop) {
26197
        return stop[2] < 1;
26198
      })) {
26199
        var grad = this.opacityGradient();
26200
        grad._colorSpace = 'DeviceGray';
26201
        var _iterator = _createForOfIteratorHelper(this.stops),
26202
          _step;
26203
        try {
26204
          for (_iterator.s(); !(_step = _iterator.n()).done;) {
26205
            var stop = _step.value;
26206
            grad.stop(stop[0], [stop[2]]);
26207
          }
26208
        } catch (err) {
26209
          _iterator.e(err);
26210
        } finally {
26211
          _iterator.f();
26212
        }
26213
        grad = grad.embed(this.matrix);
26214
        var pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];
26215
        var form = this.doc.ref({
26216
          Type: 'XObject',
26217
          Subtype: 'Form',
26218
          FormType: 1,
26219
          BBox: pageBBox,
26220
          Group: {
26221
            Type: 'Group',
26222
            S: 'Transparency',
26223
            CS: 'DeviceGray'
26224
          },
26225
          Resources: {
26226
            ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
26227
            Pattern: {
26228
              Sh1: grad
26229
            }
26230
          }
26231
        });
26232
        form.write('/Pattern cs /Sh1 scn');
26233
        form.end("".concat(pageBBox.join(' '), " re f"));
26234
        var gstate = this.doc.ref({
26235
          Type: 'ExtGState',
26236
          SMask: {
26237
            Type: 'Mask',
26238
            S: 'Luminosity',
26239
            G: form
26240
          }
26241
        });
26242
        gstate.end();
26243
        var opacityPattern = this.doc.ref({
26244
          Type: 'Pattern',
26245
          PatternType: 1,
26246
          PaintType: 1,
26247
          TilingType: 2,
26248
          BBox: pageBBox,
26249
          XStep: pageBBox[2],
26250
          YStep: pageBBox[3],
26251
          Resources: {
26252
            ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
26253
            Pattern: {
26254
              Sh1: pattern
26255
            },
26256
            ExtGState: {
26257
              Gs1: gstate
26258
            }
26259
          }
26260
        });
26261
        opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');
26262
        opacityPattern.end("".concat(pageBBox.join(' '), " re f"));
26263
        this.doc.page.patterns[this.id] = opacityPattern;
26264
      } else {
26265
        this.doc.page.patterns[this.id] = pattern;
26266
      }
26267
      return pattern;
26268
    }
26269
  }, {
26270
    key: "apply",
26271
    value: function apply(stroke) {
26272
      // apply gradient transform to existing document ctm
26273
      var _this$doc$_ctm = _slicedToArray(this.doc._ctm, 6),
26274
        m0 = _this$doc$_ctm[0],
26275
        m1 = _this$doc$_ctm[1],
26276
        m2 = _this$doc$_ctm[2],
26277
        m3 = _this$doc$_ctm[3],
26278
        m4 = _this$doc$_ctm[4],
26279
        m5 = _this$doc$_ctm[5];
26280
      var _this$transform = _slicedToArray(this.transform, 6),
26281
        m11 = _this$transform[0],
26282
        m12 = _this$transform[1],
26283
        m21 = _this$transform[2],
26284
        m22 = _this$transform[3],
26285
        dx = _this$transform[4],
26286
        dy = _this$transform[5];
26287
      var m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];
26288
      if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {
26289
        this.embed(m);
26290
      }
26291
      this.doc._setColorSpace('Pattern', stroke);
26292
      var op = stroke ? 'SCN' : 'scn';
26293
      return this.doc.addContent("/".concat(this.id, " ").concat(op));
26294
    }
26295
  }]);
26296
  return PDFGradient;
26297
}();
26298
var PDFLinearGradient = /*#__PURE__*/function (_PDFGradient) {
26299
  _inherits(PDFLinearGradient, _PDFGradient);
26300
  var _super = _createSuper(PDFLinearGradient);
26301
  function PDFLinearGradient(doc, x1, y1, x2, y2) {
26302
    var _this;
26303
    _classCallCheck(this, PDFLinearGradient);
26304
    _this = _super.call(this, doc);
26305
    _this.x1 = x1;
26306
    _this.y1 = y1;
26307
    _this.x2 = x2;
26308
    _this.y2 = y2;
26309
    return _this;
26310
  }
26311
  _createClass(PDFLinearGradient, [{
26312
    key: "shader",
26313
    value: function shader(fn) {
26314
      return this.doc.ref({
26315
        ShadingType: 2,
26316
        ColorSpace: this._colorSpace,
26317
        Coords: [this.x1, this.y1, this.x2, this.y2],
26318
        Function: fn,
26319
        Extend: [true, true]
26320
      });
26321
    }
26322
  }, {
26323
    key: "opacityGradient",
26324
    value: function opacityGradient() {
26325
      return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);
26326
    }
26327
  }]);
26328
  return PDFLinearGradient;
26329
}(PDFGradient);
26330
var PDFRadialGradient = /*#__PURE__*/function (_PDFGradient2) {
26331
  _inherits(PDFRadialGradient, _PDFGradient2);
26332
  var _super2 = _createSuper(PDFRadialGradient);
26333
  function PDFRadialGradient(doc, x1, y1, r1, x2, y2, r2) {
26334
    var _this2;
26335
    _classCallCheck(this, PDFRadialGradient);
26336
    _this2 = _super2.call(this, doc);
26337
    _this2.doc = doc;
26338
    _this2.x1 = x1;
26339
    _this2.y1 = y1;
26340
    _this2.r1 = r1;
26341
    _this2.x2 = x2;
26342
    _this2.y2 = y2;
26343
    _this2.r2 = r2;
26344
    return _this2;
26345
  }
26346
  _createClass(PDFRadialGradient, [{
26347
    key: "shader",
26348
    value: function shader(fn) {
26349
      return this.doc.ref({
26350
        ShadingType: 3,
26351
        ColorSpace: this._colorSpace,
26352
        Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],
26353
        Function: fn,
26354
        Extend: [true, true]
26355
      });
26356
    }
26357
  }, {
26358
    key: "opacityGradient",
26359
    value: function opacityGradient() {
26360
      return new PDFRadialGradient(this.doc, this.x1, this.y1, this.r1, this.x2, this.y2, this.r2);
26361
    }
26362
  }]);
26363
  return PDFRadialGradient;
26364
}(PDFGradient);
26365
var Gradient = {
26366
  PDFGradient: PDFGradient,
26367
  PDFLinearGradient: PDFLinearGradient,
26368
  PDFRadialGradient: PDFRadialGradient
26369
};
26370
26371
/*
26372
PDF tiling pattern support. Uncolored only.
26373
 */
26374
var underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];
26375
var PDFTilingPattern = /*#__PURE__*/function () {
26376
  function PDFTilingPattern(doc, bBox, xStep, yStep, stream) {
26377
    _classCallCheck(this, PDFTilingPattern);
26378
    this.doc = doc;
26379
    this.bBox = bBox;
26380
    this.xStep = xStep;
26381
    this.yStep = yStep;
26382
    this.stream = stream;
26383
  }
26384
  _createClass(PDFTilingPattern, [{
26385
    key: "createPattern",
26386
    value: function createPattern() {
26387
      // no resources needed for our current usage
26388
      // required entry
26389
      var resources = this.doc.ref();
26390
      resources.end(); // apply default transform matrix (flipped in the default doc._ctm)
26391
      // see document.js & gradient.js
26392
26393
      var _this$doc$_ctm = _slicedToArray(this.doc._ctm, 6),
26394
        m0 = _this$doc$_ctm[0],
26395
        m1 = _this$doc$_ctm[1],
26396
        m2 = _this$doc$_ctm[2],
26397
        m3 = _this$doc$_ctm[3],
26398
        m4 = _this$doc$_ctm[4],
26399
        m5 = _this$doc$_ctm[5];
26400
      var m11 = 1,
26401
        m12 = 0,
26402
        m21 = 0,
26403
        m22 = 1,
26404
        dx = 0,
26405
        dy = 0;
26406
      var m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];
26407
      var pattern = this.doc.ref({
26408
        Type: 'Pattern',
26409
        PatternType: 1,
26410
        // tiling
26411
        PaintType: 2,
26412
        // 1-colored, 2-uncolored
26413
        TilingType: 2,
26414
        // 2-no distortion
26415
        BBox: this.bBox,
26416
        XStep: this.xStep,
26417
        YStep: this.yStep,
26418
        Matrix: m.map(function (v) {
26419
          return +v.toFixed(5);
26420
        }),
26421
        Resources: resources
26422
      });
26423
      pattern.end(this.stream);
26424
      return pattern;
26425
    }
26426
  }, {
26427
    key: "embedPatternColorSpaces",
26428
    value: function embedPatternColorSpaces() {
26429
      var _this = this;
26430
26431
      // map each pattern to an underlying color space
26432
      // and embed on each page
26433
      underlyingColorSpaces.forEach(function (csName) {
26434
        var csId = _this.getPatternColorSpaceId(csName);
26435
        if (_this.doc.page.colorSpaces[csId]) return;
26436
        var cs = _this.doc.ref(['Pattern', csName]);
26437
        cs.end();
26438
        _this.doc.page.colorSpaces[csId] = cs;
26439
      });
26440
    }
26441
  }, {
26442
    key: "getPatternColorSpaceId",
26443
    value: function getPatternColorSpaceId(underlyingColorspace) {
26444
      return "CsP".concat(underlyingColorspace);
26445
    }
26446
  }, {
26447
    key: "embed",
26448
    value: function embed() {
26449
      if (!this.id) {
26450
        this.doc._patternCount = this.doc._patternCount + 1;
26451
        this.id = 'P' + this.doc._patternCount;
26452
        this.pattern = this.createPattern();
26453
      } // patterns are embedded in each page
26454
26455
      if (!this.doc.page.patterns[this.id]) {
26456
        this.doc.page.patterns[this.id] = this.pattern;
26457
      }
26458
    }
26459
  }, {
26460
    key: "apply",
26461
    value: function apply(stroke, patternColor) {
26462
      // do any embedding/creating that might be needed
26463
      this.embedPatternColorSpaces();
26464
      this.embed();
26465
      var normalizedColor = this.doc._normalizeColor(patternColor);
26466
      if (!normalizedColor) throw Error("invalid pattern color. (value: ".concat(patternColor, ")")); // select one of the pattern color spaces
26467
26468
      var csId = this.getPatternColorSpaceId(this.doc._getColorSpace(normalizedColor));
26469
      this.doc._setColorSpace(csId, stroke); // stroke/fill using the pattern and color (in the above underlying color space)
26470
26471
      var op = stroke ? 'SCN' : 'scn';
26472
      return this.doc.addContent("".concat(normalizedColor.join(' '), " /").concat(this.id, " ").concat(op));
26473
    }
26474
  }]);
26475
  return PDFTilingPattern;
26476
}();
26477
var pattern = {
26478
  PDFTilingPattern: PDFTilingPattern
26479
};
26480
var PDFGradient$1 = Gradient.PDFGradient,
26481
  PDFLinearGradient$1 = Gradient.PDFLinearGradient,
26482
  PDFRadialGradient$1 = Gradient.PDFRadialGradient;
26483
var PDFTilingPattern$1 = pattern.PDFTilingPattern;
26484
var ColorMixin = {
26485
  initColor: function initColor() {
26486
    // The opacity dictionaries
26487
    this._opacityRegistry = {};
26488
    this._opacityCount = 0;
26489
    this._patternCount = 0;
26490
    return this._gradCount = 0;
26491
  },
26492
  _normalizeColor: function _normalizeColor(color) {
26493
    if (typeof color === 'string') {
26494
      if (color.charAt(0) === '#') {
26495
        if (color.length === 4) {
26496
          color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, '#$1$1$2$2$3$3');
26497
        }
26498
        var hex = parseInt(color.slice(1), 16);
26499
        color = [hex >> 16, hex >> 8 & 0xff, hex & 0xff];
26500
      } else if (namedColors[color]) {
26501
        color = namedColors[color];
26502
      }
26503
    }
26504
    if (Array.isArray(color)) {
26505
      // RGB
26506
      if (color.length === 3) {
26507
        color = color.map(function (part) {
26508
          return part / 255;
26509
        }); // CMYK
26510
      } else if (color.length === 4) {
26511
        color = color.map(function (part) {
26512
          return part / 100;
26513
        });
26514
      }
26515
      return color;
26516
    }
26517
    return null;
26518
  },
26519
  _setColor: function _setColor(color, stroke) {
26520
    if (color instanceof PDFGradient$1) {
26521
      color.apply(stroke);
26522
      return true; // see if tiling pattern, decode & apply it it
26523
    } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern$1) {
26524
      color[0].apply(stroke, color[1]);
26525
      return true;
26526
    } // any other case should be a normal color and not a pattern
26527
26528
    return this._setColorCore(color, stroke);
26529
  },
26530
  _setColorCore: function _setColorCore(color, stroke) {
26531
    color = this._normalizeColor(color);
26532
    if (!color) {
26533
      return false;
26534
    }
26535
    var op = stroke ? 'SCN' : 'scn';
26536
    var space = this._getColorSpace(color);
26537
    this._setColorSpace(space, stroke);
26538
    color = color.join(' ');
26539
    this.addContent("".concat(color, " ").concat(op));
26540
    return true;
26541
  },
26542
  _setColorSpace: function _setColorSpace(space, stroke) {
26543
    var op = stroke ? 'CS' : 'cs';
26544
    return this.addContent("/".concat(space, " ").concat(op));
26545
  },
26546
  _getColorSpace: function _getColorSpace(color) {
26547
    return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';
26548
  },
26549
  fillColor: function fillColor(color, opacity) {
26550
    var set = this._setColor(color, false);
26551
    if (set) {
26552
      this.fillOpacity(opacity);
26553
    } // save this for text wrapper, which needs to reset
26554
    // the fill color on new pages
26555
26556
    this._fillColor = [color, opacity];
26557
    return this;
26558
  },
26559
  strokeColor: function strokeColor(color, opacity) {
26560
    var set = this._setColor(color, true);
26561
    if (set) {
26562
      this.strokeOpacity(opacity);
26563
    }
26564
    return this;
26565
  },
26566
  opacity: function opacity(_opacity) {
26567
    this._doOpacity(_opacity, _opacity);
26568
    return this;
26569
  },
26570
  fillOpacity: function fillOpacity(opacity) {
26571
    this._doOpacity(opacity, null);
26572
    return this;
26573
  },
26574
  strokeOpacity: function strokeOpacity(opacity) {
26575
    this._doOpacity(null, opacity);
26576
    return this;
26577
  },
26578
  _doOpacity: function _doOpacity(fillOpacity, strokeOpacity) {
26579
    var dictionary, name;
26580
    if (fillOpacity == null && strokeOpacity == null) {
26581
      return;
26582
    }
26583
    if (fillOpacity != null) {
26584
      fillOpacity = Math.max(0, Math.min(1, fillOpacity));
26585
    }
26586
    if (strokeOpacity != null) {
26587
      strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));
26588
    }
26589
    var key = "".concat(fillOpacity, "_").concat(strokeOpacity);
26590
    if (this._opacityRegistry[key]) {
26591
      var _this$_opacityRegistr = _slicedToArray(this._opacityRegistry[key], 2);
26592
      dictionary = _this$_opacityRegistr[0];
26593
      name = _this$_opacityRegistr[1];
26594
    } else {
26595
      dictionary = {
26596
        Type: 'ExtGState'
26597
      };
26598
      if (fillOpacity != null) {
26599
        dictionary.ca = fillOpacity;
26600
      }
26601
      if (strokeOpacity != null) {
26602
        dictionary.CA = strokeOpacity;
26603
      }
26604
      dictionary = this.ref(dictionary);
26605
      dictionary.end();
26606
      var id = ++this._opacityCount;
26607
      name = "Gs".concat(id);
26608
      this._opacityRegistry[key] = [dictionary, name];
26609
    }
26610
    this.page.ext_gstates[name] = dictionary;
26611
    return this.addContent("/".concat(name, " gs"));
26612
  },
26613
  linearGradient: function linearGradient(x1, y1, x2, y2) {
26614
    return new PDFLinearGradient$1(this, x1, y1, x2, y2);
26615
  },
26616
  radialGradient: function radialGradient(x1, y1, r1, x2, y2, r2) {
26617
    return new PDFRadialGradient$1(this, x1, y1, r1, x2, y2, r2);
26618
  },
26619
  pattern: function pattern(bbox, xStep, yStep, stream) {
26620
    return new PDFTilingPattern$1(this, bbox, xStep, yStep, stream);
26621
  }
26622
};
26623
var namedColors = {
26624
  aliceblue: [240, 248, 255],
26625
  antiquewhite: [250, 235, 215],
26626
  aqua: [0, 255, 255],
26627
  aquamarine: [127, 255, 212],
26628
  azure: [240, 255, 255],
26629
  beige: [245, 245, 220],
26630
  bisque: [255, 228, 196],
26631
  black: [0, 0, 0],
26632
  blanchedalmond: [255, 235, 205],
26633
  blue: [0, 0, 255],
26634
  blueviolet: [138, 43, 226],
26635
  brown: [165, 42, 42],
26636
  burlywood: [222, 184, 135],
26637
  cadetblue: [95, 158, 160],
26638
  chartreuse: [127, 255, 0],
26639
  chocolate: [210, 105, 30],
26640
  coral: [255, 127, 80],
26641
  cornflowerblue: [100, 149, 237],
26642
  cornsilk: [255, 248, 220],
26643
  crimson: [220, 20, 60],
26644
  cyan: [0, 255, 255],
26645
  darkblue: [0, 0, 139],
26646
  darkcyan: [0, 139, 139],
26647
  darkgoldenrod: [184, 134, 11],
26648
  darkgray: [169, 169, 169],
26649
  darkgreen: [0, 100, 0],
26650
  darkgrey: [169, 169, 169],
26651
  darkkhaki: [189, 183, 107],
26652
  darkmagenta: [139, 0, 139],
26653
  darkolivegreen: [85, 107, 47],
26654
  darkorange: [255, 140, 0],
26655
  darkorchid: [153, 50, 204],
26656
  darkred: [139, 0, 0],
26657
  darksalmon: [233, 150, 122],
26658
  darkseagreen: [143, 188, 143],
26659
  darkslateblue: [72, 61, 139],
26660
  darkslategray: [47, 79, 79],
26661
  darkslategrey: [47, 79, 79],
26662
  darkturquoise: [0, 206, 209],
26663
  darkviolet: [148, 0, 211],
26664
  deeppink: [255, 20, 147],
26665
  deepskyblue: [0, 191, 255],
26666
  dimgray: [105, 105, 105],
26667
  dimgrey: [105, 105, 105],
26668
  dodgerblue: [30, 144, 255],
26669
  firebrick: [178, 34, 34],
26670
  floralwhite: [255, 250, 240],
26671
  forestgreen: [34, 139, 34],
26672
  fuchsia: [255, 0, 255],
26673
  gainsboro: [220, 220, 220],
26674
  ghostwhite: [248, 248, 255],
26675
  gold: [255, 215, 0],
26676
  goldenrod: [218, 165, 32],
26677
  gray: [128, 128, 128],
26678
  grey: [128, 128, 128],
26679
  green: [0, 128, 0],
26680
  greenyellow: [173, 255, 47],
26681
  honeydew: [240, 255, 240],
26682
  hotpink: [255, 105, 180],
26683
  indianred: [205, 92, 92],
26684
  indigo: [75, 0, 130],
26685
  ivory: [255, 255, 240],
26686
  khaki: [240, 230, 140],
26687
  lavender: [230, 230, 250],
26688
  lavenderblush: [255, 240, 245],
26689
  lawngreen: [124, 252, 0],
26690
  lemonchiffon: [255, 250, 205],
26691
  lightblue: [173, 216, 230],
26692
  lightcoral: [240, 128, 128],
26693
  lightcyan: [224, 255, 255],
26694
  lightgoldenrodyellow: [250, 250, 210],
26695
  lightgray: [211, 211, 211],
26696
  lightgreen: [144, 238, 144],
26697
  lightgrey: [211, 211, 211],
26698
  lightpink: [255, 182, 193],
26699
  lightsalmon: [255, 160, 122],
26700
  lightseagreen: [32, 178, 170],
26701
  lightskyblue: [135, 206, 250],
26702
  lightslategray: [119, 136, 153],
26703
  lightslategrey: [119, 136, 153],
26704
  lightsteelblue: [176, 196, 222],
26705
  lightyellow: [255, 255, 224],
26706
  lime: [0, 255, 0],
26707
  limegreen: [50, 205, 50],
26708
  linen: [250, 240, 230],
26709
  magenta: [255, 0, 255],
26710
  maroon: [128, 0, 0],
26711
  mediumaquamarine: [102, 205, 170],
26712
  mediumblue: [0, 0, 205],
26713
  mediumorchid: [186, 85, 211],
26714
  mediumpurple: [147, 112, 219],
26715
  mediumseagreen: [60, 179, 113],
26716
  mediumslateblue: [123, 104, 238],
26717
  mediumspringgreen: [0, 250, 154],
26718
  mediumturquoise: [72, 209, 204],
26719
  mediumvioletred: [199, 21, 133],
26720
  midnightblue: [25, 25, 112],
26721
  mintcream: [245, 255, 250],
26722
  mistyrose: [255, 228, 225],
26723
  moccasin: [255, 228, 181],
26724
  navajowhite: [255, 222, 173],
26725
  navy: [0, 0, 128],
26726
  oldlace: [253, 245, 230],
26727
  olive: [128, 128, 0],
26728
  olivedrab: [107, 142, 35],
26729
  orange: [255, 165, 0],
26730
  orangered: [255, 69, 0],
26731
  orchid: [218, 112, 214],
26732
  palegoldenrod: [238, 232, 170],
26733
  palegreen: [152, 251, 152],
26734
  paleturquoise: [175, 238, 238],
26735
  palevioletred: [219, 112, 147],
26736
  papayawhip: [255, 239, 213],
26737
  peachpuff: [255, 218, 185],
26738
  peru: [205, 133, 63],
26739
  pink: [255, 192, 203],
26740
  plum: [221, 160, 221],
26741
  powderblue: [176, 224, 230],
26742
  purple: [128, 0, 128],
26743
  red: [255, 0, 0],
26744
  rosybrown: [188, 143, 143],
26745
  royalblue: [65, 105, 225],
26746
  saddlebrown: [139, 69, 19],
26747
  salmon: [250, 128, 114],
26748
  sandybrown: [244, 164, 96],
26749
  seagreen: [46, 139, 87],
26750
  seashell: [255, 245, 238],
26751
  sienna: [160, 82, 45],
26752
  silver: [192, 192, 192],
26753
  skyblue: [135, 206, 235],
26754
  slateblue: [106, 90, 205],
26755
  slategray: [112, 128, 144],
26756
  slategrey: [112, 128, 144],
26757
  snow: [255, 250, 250],
26758
  springgreen: [0, 255, 127],
26759
  steelblue: [70, 130, 180],
26760
  tan: [210, 180, 140],
26761
  teal: [0, 128, 128],
26762
  thistle: [216, 191, 216],
26763
  tomato: [255, 99, 71],
26764
  turquoise: [64, 224, 208],
26765
  violet: [238, 130, 238],
26766
  wheat: [245, 222, 179],
26767
  white: [255, 255, 255],
26768
  whitesmoke: [245, 245, 245],
26769
  yellow: [255, 255, 0],
26770
  yellowgreen: [154, 205, 50]
26771
};
26772
var cx, cy, px, py, sx, sy;
26773
cx = cy = px = py = sx = sy = 0;
26774
var parameters = {
26775
  A: 7,
26776
  a: 7,
26777
  C: 6,
26778
  c: 6,
26779
  H: 1,
26780
  h: 1,
26781
  L: 2,
26782
  l: 2,
26783
  M: 2,
26784
  m: 2,
26785
  Q: 4,
26786
  q: 4,
26787
  S: 4,
26788
  s: 4,
26789
  T: 2,
26790
  t: 2,
26791
  V: 1,
26792
  v: 1,
26793
  Z: 0,
26794
  z: 0
26795
};
26796
var parse = function parse(path) {
26797
  var cmd;
26798
  var ret = [];
26799
  var args = [];
26800
  var curArg = '';
26801
  var foundDecimal = false;
26802
  var params = 0;
26803
  var _iterator = _createForOfIteratorHelper(path),
26804
    _step;
26805
  try {
26806
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
26807
      var c = _step.value;
26808
      if (parameters[c] != null) {
26809
        params = parameters[c];
26810
        if (cmd) {
26811
          // save existing command
26812
          if (curArg.length > 0) {
26813
            args[args.length] = +curArg;
26814
          }
26815
          ret[ret.length] = {
26816
            cmd: cmd,
26817
            args: args
26818
          };
26819
          args = [];
26820
          curArg = '';
26821
          foundDecimal = false;
26822
        }
26823
        cmd = c;
26824
      } else if ([' ', ','].includes(c) || c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e' || c === '.' && foundDecimal) {
26825
        if (curArg.length === 0) {
26826
          continue;
26827
        }
26828
        if (args.length === params) {
26829
          // handle reused commands
26830
          ret[ret.length] = {
26831
            cmd: cmd,
26832
            args: args
26833
          };
26834
          args = [+curArg]; // handle assumed commands
26835
26836
          if (cmd === 'M') {
26837
            cmd = 'L';
26838
          }
26839
          if (cmd === 'm') {
26840
            cmd = 'l';
26841
          }
26842
        } else {
26843
          args[args.length] = +curArg;
26844
        }
26845
        foundDecimal = c === '.'; // fix for negative numbers or repeated decimals with no delimeter between commands
26846
26847
        curArg = ['-', '.'].includes(c) ? c : '';
26848
      } else {
26849
        curArg += c;
26850
        if (c === '.') {
26851
          foundDecimal = true;
26852
        }
26853
      }
26854
    } // add the last command
26855
  } catch (err) {
26856
    _iterator.e(err);
26857
  } finally {
26858
    _iterator.f();
26859
  }
26860
  if (curArg.length > 0) {
26861
    if (args.length === params) {
26862
      // handle reused commands
26863
      ret[ret.length] = {
26864
        cmd: cmd,
26865
        args: args
26866
      };
26867
      args = [+curArg]; // handle assumed commands
26868
26869
      if (cmd === 'M') {
26870
        cmd = 'L';
26871
      }
26872
      if (cmd === 'm') {
26873
        cmd = 'l';
26874
      }
26875
    } else {
26876
      args[args.length] = +curArg;
26877
    }
26878
  }
26879
  ret[ret.length] = {
26880
    cmd: cmd,
26881
    args: args
26882
  };
26883
  return ret;
26884
};
26885
var _apply = function apply(commands, doc) {
26886
  // current point, control point, and subpath starting point
26887
  cx = cy = px = py = sx = sy = 0; // run the commands
26888
26889
  for (var i = 0; i < commands.length; i++) {
26890
    var c = commands[i];
26891
    if (typeof runners[c.cmd] === 'function') {
26892
      runners[c.cmd](doc, c.args);
26893
    }
26894
  }
26895
};
26896
var runners = {
26897
  M: function M(doc, a) {
26898
    cx = a[0];
26899
    cy = a[1];
26900
    px = py = null;
26901
    sx = cx;
26902
    sy = cy;
26903
    return doc.moveTo(cx, cy);
26904
  },
26905
  m: function m(doc, a) {
26906
    cx += a[0];
26907
    cy += a[1];
26908
    px = py = null;
26909
    sx = cx;
26910
    sy = cy;
26911
    return doc.moveTo(cx, cy);
26912
  },
26913
  C: function C(doc, a) {
26914
    cx = a[4];
26915
    cy = a[5];
26916
    px = a[2];
26917
    py = a[3];
26918
    return doc.bezierCurveTo.apply(doc, _toConsumableArray(a));
26919
  },
26920
  c: function c(doc, a) {
26921
    doc.bezierCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);
26922
    px = cx + a[2];
26923
    py = cy + a[3];
26924
    cx += a[4];
26925
    return cy += a[5];
26926
  },
26927
  S: function S(doc, a) {
26928
    if (px === null) {
26929
      px = cx;
26930
      py = cy;
26931
    }
26932
    doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);
26933
    px = a[0];
26934
    py = a[1];
26935
    cx = a[2];
26936
    return cy = a[3];
26937
  },
26938
  s: function s(doc, a) {
26939
    if (px === null) {
26940
      px = cx;
26941
      py = cy;
26942
    }
26943
    doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);
26944
    px = cx + a[0];
26945
    py = cy + a[1];
26946
    cx += a[2];
26947
    return cy += a[3];
26948
  },
26949
  Q: function Q(doc, a) {
26950
    px = a[0];
26951
    py = a[1];
26952
    cx = a[2];
26953
    cy = a[3];
26954
    return doc.quadraticCurveTo(a[0], a[1], cx, cy);
26955
  },
26956
  q: function q(doc, a) {
26957
    doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);
26958
    px = cx + a[0];
26959
    py = cy + a[1];
26960
    cx += a[2];
26961
    return cy += a[3];
26962
  },
26963
  T: function T(doc, a) {
26964
    if (px === null) {
26965
      px = cx;
26966
      py = cy;
26967
    } else {
26968
      px = cx - (px - cx);
26969
      py = cy - (py - cy);
26970
    }
26971
    doc.quadraticCurveTo(px, py, a[0], a[1]);
26972
    px = cx - (px - cx);
26973
    py = cy - (py - cy);
26974
    cx = a[0];
26975
    return cy = a[1];
26976
  },
26977
  t: function t(doc, a) {
26978
    if (px === null) {
26979
      px = cx;
26980
      py = cy;
26981
    } else {
26982
      px = cx - (px - cx);
26983
      py = cy - (py - cy);
26984
    }
26985
    doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);
26986
    cx += a[0];
26987
    return cy += a[1];
26988
  },
26989
  A: function A(doc, a) {
26990
    solveArc(doc, cx, cy, a);
26991
    cx = a[5];
26992
    return cy = a[6];
26993
  },
26994
  a: function a(doc, _a) {
26995
    _a[5] += cx;
26996
    _a[6] += cy;
26997
    solveArc(doc, cx, cy, _a);
26998
    cx = _a[5];
26999
    return cy = _a[6];
27000
  },
27001
  L: function L(doc, a) {
27002
    cx = a[0];
27003
    cy = a[1];
27004
    px = py = null;
27005
    return doc.lineTo(cx, cy);
27006
  },
27007
  l: function l(doc, a) {
27008
    cx += a[0];
27009
    cy += a[1];
27010
    px = py = null;
27011
    return doc.lineTo(cx, cy);
27012
  },
27013
  H: function H(doc, a) {
27014
    cx = a[0];
27015
    px = py = null;
27016
    return doc.lineTo(cx, cy);
27017
  },
27018
  h: function h(doc, a) {
27019
    cx += a[0];
27020
    px = py = null;
27021
    return doc.lineTo(cx, cy);
27022
  },
27023
  V: function V(doc, a) {
27024
    cy = a[0];
27025
    px = py = null;
27026
    return doc.lineTo(cx, cy);
27027
  },
27028
  v: function v(doc, a) {
27029
    cy += a[0];
27030
    px = py = null;
27031
    return doc.lineTo(cx, cy);
27032
  },
27033
  Z: function Z(doc) {
27034
    doc.closePath();
27035
    cx = sx;
27036
    return cy = sy;
27037
  },
27038
  z: function z(doc) {
27039
    doc.closePath();
27040
    cx = sx;
27041
    return cy = sy;
27042
  }
27043
};
27044
var solveArc = function solveArc(doc, x, y, coords) {
27045
  var _coords = _slicedToArray(coords, 7),
27046
    rx = _coords[0],
27047
    ry = _coords[1],
27048
    rot = _coords[2],
27049
    large = _coords[3],
27050
    sweep = _coords[4],
27051
    ex = _coords[5],
27052
    ey = _coords[6];
27053
  var segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);
27054
  var _iterator2 = _createForOfIteratorHelper(segs),
27055
    _step2;
27056
  try {
27057
    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
27058
      var seg = _step2.value;
27059
      var bez = segmentToBezier.apply(void 0, _toConsumableArray(seg));
27060
      doc.bezierCurveTo.apply(doc, _toConsumableArray(bez));
27061
    }
27062
  } catch (err) {
27063
    _iterator2.e(err);
27064
  } finally {
27065
    _iterator2.f();
27066
  }
27067
}; // from Inkscape svgtopdf, thanks!
27068
27069
var arcToSegments = function arcToSegments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {
27070
  var th = rotateX * (Math.PI / 180);
27071
  var sin_th = Math.sin(th);
27072
  var cos_th = Math.cos(th);
27073
  rx = Math.abs(rx);
27074
  ry = Math.abs(ry);
27075
  px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;
27076
  py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;
27077
  var pl = px * px / (rx * rx) + py * py / (ry * ry);
27078
  if (pl > 1) {
27079
    pl = Math.sqrt(pl);
27080
    rx *= pl;
27081
    ry *= pl;
27082
  }
27083
  var a00 = cos_th / rx;
27084
  var a01 = sin_th / rx;
27085
  var a10 = -sin_th / ry;
27086
  var a11 = cos_th / ry;
27087
  var x0 = a00 * ox + a01 * oy;
27088
  var y0 = a10 * ox + a11 * oy;
27089
  var x1 = a00 * x + a01 * y;
27090
  var y1 = a10 * x + a11 * y;
27091
  var d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);
27092
  var sfactor_sq = 1 / d - 0.25;
27093
  if (sfactor_sq < 0) {
27094
    sfactor_sq = 0;
27095
  }
27096
  var sfactor = Math.sqrt(sfactor_sq);
27097
  if (sweep === large) {
27098
    sfactor = -sfactor;
27099
  }
27100
  var xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);
27101
  var yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);
27102
  var th0 = Math.atan2(y0 - yc, x0 - xc);
27103
  var th1 = Math.atan2(y1 - yc, x1 - xc);
27104
  var th_arc = th1 - th0;
27105
  if (th_arc < 0 && sweep === 1) {
27106
    th_arc += 2 * Math.PI;
27107
  } else if (th_arc > 0 && sweep === 0) {
27108
    th_arc -= 2 * Math.PI;
27109
  }
27110
  var segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));
27111
  var result = [];
27112
  for (var i = 0; i < segments; i++) {
27113
    var th2 = th0 + i * th_arc / segments;
27114
    var th3 = th0 + (i + 1) * th_arc / segments;
27115
    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];
27116
  }
27117
  return result;
27118
};
27119
var segmentToBezier = function segmentToBezier(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {
27120
  var a00 = cos_th * rx;
27121
  var a01 = -sin_th * ry;
27122
  var a10 = sin_th * rx;
27123
  var a11 = cos_th * ry;
27124
  var th_half = 0.5 * (th1 - th0);
27125
  var t = 8 / 3 * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5) / Math.sin(th_half);
27126
  var x1 = cx + Math.cos(th0) - t * Math.sin(th0);
27127
  var y1 = cy + Math.sin(th0) + t * Math.cos(th0);
27128
  var x3 = cx + Math.cos(th1);
27129
  var y3 = cy + Math.sin(th1);
27130
  var x2 = x3 + t * Math.sin(th1);
27131
  var y2 = y3 - t * Math.cos(th1);
27132
  return [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];
27133
};
27134
var SVGPath = /*#__PURE__*/function () {
27135
  function SVGPath() {
27136
    _classCallCheck(this, SVGPath);
27137
  }
27138
  _createClass(SVGPath, null, [{
27139
    key: "apply",
27140
    value: function apply(doc, path) {
27141
      var commands = parse(path);
27142
      _apply(commands, doc);
27143
    }
27144
  }]);
27145
  return SVGPath;
27146
}();
27147
var number$1 = PDFObject.number; // This constant is used to approximate a symmetrical arc using a cubic
27148
// Bezier curve.
27149
27150
var KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);
27151
var VectorMixin = {
27152
  initVector: function initVector() {
27153
    this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix
27154
27155
    return this._ctmStack = [];
27156
  },
27157
  save: function save() {
27158
    this._ctmStack.push(this._ctm.slice()); // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?
27159
27160
    return this.addContent('q');
27161
  },
27162
  restore: function restore() {
27163
    this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];
27164
    return this.addContent('Q');
27165
  },
27166
  closePath: function closePath() {
27167
    return this.addContent('h');
27168
  },
27169
  lineWidth: function lineWidth(w) {
27170
    return this.addContent("".concat(number$1(w), " w"));
27171
  },
27172
  _CAP_STYLES: {
27173
    BUTT: 0,
27174
    ROUND: 1,
27175
    SQUARE: 2
27176
  },
27177
  lineCap: function lineCap(c) {
27178
    if (typeof c === 'string') {
27179
      c = this._CAP_STYLES[c.toUpperCase()];
27180
    }
27181
    return this.addContent("".concat(c, " J"));
27182
  },
27183
  _JOIN_STYLES: {
27184
    MITER: 0,
27185
    ROUND: 1,
27186
    BEVEL: 2
27187
  },
27188
  lineJoin: function lineJoin(j) {
27189
    if (typeof j === 'string') {
27190
      j = this._JOIN_STYLES[j.toUpperCase()];
27191
    }
27192
    return this.addContent("".concat(j, " j"));
27193
  },
27194
  miterLimit: function miterLimit(m) {
27195
    return this.addContent("".concat(number$1(m), " M"));
27196
  },
27197
  dash: function dash(length) {
27198
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27199
    var originalLength = length;
27200
    if (!Array.isArray(length)) {
27201
      length = [length, options.space || length];
27202
    }
27203
    var valid = length.every(function (x) {
27204
      return Number.isFinite(x) && x > 0;
27205
    });
27206
    if (!valid) {
27207
      throw new Error("dash(".concat(JSON.stringify(originalLength), ", ").concat(JSON.stringify(options), ") invalid, lengths must be numeric and greater than zero"));
27208
    }
27209
    length = length.map(number$1).join(' ');
27210
    return this.addContent("[".concat(length, "] ").concat(number$1(options.phase || 0), " d"));
27211
  },
27212
  undash: function undash() {
27213
    return this.addContent('[] 0 d');
27214
  },
27215
  moveTo: function moveTo(x, y) {
27216
    return this.addContent("".concat(number$1(x), " ").concat(number$1(y), " m"));
27217
  },
27218
  lineTo: function lineTo(x, y) {
27219
    return this.addContent("".concat(number$1(x), " ").concat(number$1(y), " l"));
27220
  },
27221
  bezierCurveTo: function bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {
27222
    return this.addContent("".concat(number$1(cp1x), " ").concat(number$1(cp1y), " ").concat(number$1(cp2x), " ").concat(number$1(cp2y), " ").concat(number$1(x), " ").concat(number$1(y), " c"));
27223
  },
27224
  quadraticCurveTo: function quadraticCurveTo(cpx, cpy, x, y) {
27225
    return this.addContent("".concat(number$1(cpx), " ").concat(number$1(cpy), " ").concat(number$1(x), " ").concat(number$1(y), " v"));
27226
  },
27227
  rect: function rect(x, y, w, h) {
27228
    return this.addContent("".concat(number$1(x), " ").concat(number$1(y), " ").concat(number$1(w), " ").concat(number$1(h), " re"));
27229
  },
27230
  roundedRect: function roundedRect(x, y, w, h, r) {
27231
    if (r == null) {
27232
      r = 0;
27233
    }
27234
    r = Math.min(r, 0.5 * w, 0.5 * h); // amount to inset control points from corners (see `ellipse`)
27235
27236
    var c = r * (1.0 - KAPPA);
27237
    this.moveTo(x + r, y);
27238
    this.lineTo(x + w - r, y);
27239
    this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);
27240
    this.lineTo(x + w, y + h - r);
27241
    this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);
27242
    this.lineTo(x + r, y + h);
27243
    this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);
27244
    this.lineTo(x, y + r);
27245
    this.bezierCurveTo(x, y + c, x + c, y, x + r, y);
27246
    return this.closePath();
27247
  },
27248
  ellipse: function ellipse(x, y, r1, r2) {
27249
    // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084
27250
    if (r2 == null) {
27251
      r2 = r1;
27252
    }
27253
    x -= r1;
27254
    y -= r2;
27255
    var ox = r1 * KAPPA;
27256
    var oy = r2 * KAPPA;
27257
    var xe = x + r1 * 2;
27258
    var ye = y + r2 * 2;
27259
    var xm = x + r1;
27260
    var ym = y + r2;
27261
    this.moveTo(x, ym);
27262
    this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
27263
    this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
27264
    this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
27265
    this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
27266
    return this.closePath();
27267
  },
27268
  circle: function circle(x, y, radius) {
27269
    return this.ellipse(x, y, radius);
27270
  },
27271
  arc: function arc(x, y, radius, startAngle, endAngle, anticlockwise) {
27272
    if (anticlockwise == null) {
27273
      anticlockwise = false;
27274
    }
27275
    var TWO_PI = 2.0 * Math.PI;
27276
    var HALF_PI = 0.5 * Math.PI;
27277
    var deltaAng = endAngle - startAngle;
27278
    if (Math.abs(deltaAng) > TWO_PI) {
27279
      // draw only full circle if more than that is specified
27280
      deltaAng = TWO_PI;
27281
    } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {
27282
      // necessary to flip direction of rendering
27283
      var dir = anticlockwise ? -1 : 1;
27284
      deltaAng = dir * TWO_PI + deltaAng;
27285
    }
27286
    var numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);
27287
    var segAng = deltaAng / numSegs;
27288
    var handleLen = segAng / HALF_PI * KAPPA * radius;
27289
    var curAng = startAngle; // component distances between anchor point and control point
27290
27291
    var deltaCx = -Math.sin(curAng) * handleLen;
27292
    var deltaCy = Math.cos(curAng) * handleLen; // anchor point
27293
27294
    var ax = x + Math.cos(curAng) * radius;
27295
    var ay = y + Math.sin(curAng) * radius; // calculate and render segments
27296
27297
    this.moveTo(ax, ay);
27298
    for (var segIdx = 0; segIdx < numSegs; segIdx++) {
27299
      // starting control point
27300
      var cp1x = ax + deltaCx;
27301
      var cp1y = ay + deltaCy; // step angle
27302
27303
      curAng += segAng; // next anchor point
27304
27305
      ax = x + Math.cos(curAng) * radius;
27306
      ay = y + Math.sin(curAng) * radius; // next control point delta
27307
27308
      deltaCx = -Math.sin(curAng) * handleLen;
27309
      deltaCy = Math.cos(curAng) * handleLen; // ending control point
27310
27311
      var cp2x = ax - deltaCx;
27312
      var cp2y = ay - deltaCy; // render segment
27313
27314
      this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);
27315
    }
27316
    return this;
27317
  },
27318
  polygon: function polygon() {
27319
    for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {
27320
      points[_key] = arguments[_key];
27321
    }
27322
    this.moveTo.apply(this, _toConsumableArray(points.shift() || []));
27323
    for (var _i = 0, _points = points; _i < _points.length; _i++) {
27324
      var point = _points[_i];
27325
      this.lineTo.apply(this, _toConsumableArray(point || []));
27326
    }
27327
    return this.closePath();
27328
  },
27329
  path: function path(_path) {
27330
    SVGPath.apply(this, _path);
27331
    return this;
27332
  },
27333
  _windingRule: function _windingRule(rule) {
27334
    if (/even-?odd/.test(rule)) {
27335
      return '*';
27336
    }
27337
    return '';
27338
  },
27339
  fill: function fill(color, rule) {
27340
    if (/(even-?odd)|(non-?zero)/.test(color)) {
27341
      rule = color;
27342
      color = null;
27343
    }
27344
    if (color) {
27345
      this.fillColor(color);
27346
    }
27347
    return this.addContent("f".concat(this._windingRule(rule)));
27348
  },
27349
  stroke: function stroke(color) {
27350
    if (color) {
27351
      this.strokeColor(color);
27352
    }
27353
    return this.addContent('S');
27354
  },
27355
  fillAndStroke: function fillAndStroke(fillColor, strokeColor, rule) {
27356
    if (strokeColor == null) {
27357
      strokeColor = fillColor;
27358
    }
27359
    var isFillRule = /(even-?odd)|(non-?zero)/;
27360
    if (isFillRule.test(fillColor)) {
27361
      rule = fillColor;
27362
      fillColor = null;
27363
    }
27364
    if (isFillRule.test(strokeColor)) {
27365
      rule = strokeColor;
27366
      strokeColor = fillColor;
27367
    }
27368
    if (fillColor) {
27369
      this.fillColor(fillColor);
27370
      this.strokeColor(strokeColor);
27371
    }
27372
    return this.addContent("B".concat(this._windingRule(rule)));
27373
  },
27374
  clip: function clip(rule) {
27375
    return this.addContent("W".concat(this._windingRule(rule), " n"));
27376
  },
27377
  transform: function transform(m11, m12, m21, m22, dx, dy) {
27378
    // keep track of the current transformation matrix
27379
    var m = this._ctm;
27380
    var _m = _slicedToArray(m, 6),
27381
      m0 = _m[0],
27382
      m1 = _m[1],
27383
      m2 = _m[2],
27384
      m3 = _m[3],
27385
      m4 = _m[4],
27386
      m5 = _m[5];
27387
    m[0] = m0 * m11 + m2 * m12;
27388
    m[1] = m1 * m11 + m3 * m12;
27389
    m[2] = m0 * m21 + m2 * m22;
27390
    m[3] = m1 * m21 + m3 * m22;
27391
    m[4] = m0 * dx + m2 * dy + m4;
27392
    m[5] = m1 * dx + m3 * dy + m5;
27393
    var values = [m11, m12, m21, m22, dx, dy].map(function (v) {
27394
      return number$1(v);
27395
    }).join(' ');
27396
    return this.addContent("".concat(values, " cm"));
27397
  },
27398
  translate: function translate(x, y) {
27399
    return this.transform(1, 0, 0, 1, x, y);
27400
  },
27401
  rotate: function rotate(angle) {
27402
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27403
    var y;
27404
    var rad = angle * Math.PI / 180;
27405
    var cos = Math.cos(rad);
27406
    var sin = Math.sin(rad);
27407
    var x = y = 0;
27408
    if (options.origin != null) {
27409
      var _options$origin = _slicedToArray(options.origin, 2);
27410
      x = _options$origin[0];
27411
      y = _options$origin[1];
27412
      var x1 = x * cos - y * sin;
27413
      var y1 = x * sin + y * cos;
27414
      x -= x1;
27415
      y -= y1;
27416
    }
27417
    return this.transform(cos, sin, -sin, cos, x, y);
27418
  },
27419
  scale: function scale(xFactor, yFactor) {
27420
    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
27421
    var y;
27422
    if (yFactor == null) {
27423
      yFactor = xFactor;
27424
    }
27425
    if (typeof yFactor === 'object') {
27426
      options = yFactor;
27427
      yFactor = xFactor;
27428
    }
27429
    var x = y = 0;
27430
    if (options.origin != null) {
27431
      var _options$origin2 = _slicedToArray(options.origin, 2);
27432
      x = _options$origin2[0];
27433
      y = _options$origin2[1];
27434
      x -= xFactor * x;
27435
      y -= yFactor * y;
27436
    }
27437
    return this.transform(xFactor, 0, 0, yFactor, x, y);
27438
  }
27439
};
27440
var WIN_ANSI_MAP = {
27441
  402: 131,
27442
  8211: 150,
27443
  8212: 151,
27444
  8216: 145,
27445
  8217: 146,
27446
  8218: 130,
27447
  8220: 147,
27448
  8221: 148,
27449
  8222: 132,
27450
  8224: 134,
27451
  8225: 135,
27452
  8226: 149,
27453
  8230: 133,
27454
  8364: 128,
27455
  8240: 137,
27456
  8249: 139,
27457
  8250: 155,
27458
  710: 136,
27459
  8482: 153,
27460
  338: 140,
27461
  339: 156,
27462
  732: 152,
27463
  352: 138,
27464
  353: 154,
27465
  376: 159,
27466
  381: 142,
27467
  382: 158
27468
};
27469
var characters = ".notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n  \nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n  \nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n  \ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n  \nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n  \nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n  \nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n  \nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis".split(/\s+/);
27470
var AFMFont = /*#__PURE__*/function () {
27471
  _createClass(AFMFont, null, [{
27472
    key: "open",
27473
    value: function open(filename) {
27474
      return new AFMFont(fs.readFileSync(filename, 'utf8'));
27475
    }
27476
  }]);
27477
  function AFMFont(contents) {
27478
    _classCallCheck(this, AFMFont);
27479
    this.contents = contents;
27480
    this.attributes = {};
27481
    this.glyphWidths = {};
27482
    this.boundingBoxes = {};
27483
    this.kernPairs = {};
27484
    this.parse(); // todo: remove charWidths since appears to not be used
27485
27486
    this.charWidths = new Array(256);
27487
    for (var char = 0; char <= 255; char++) {
27488
      this.charWidths[char] = this.glyphWidths[characters[char]];
27489
    }
27490
    this.bbox = this.attributes['FontBBox'].split(/\s+/).map(function (e) {
27491
      return +e;
27492
    });
27493
    this.ascender = +(this.attributes['Ascender'] || 0);
27494
    this.descender = +(this.attributes['Descender'] || 0);
27495
    this.xHeight = +(this.attributes['XHeight'] || 0);
27496
    this.capHeight = +(this.attributes['CapHeight'] || 0);
27497
    this.lineGap = this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);
27498
  }
27499
  _createClass(AFMFont, [{
27500
    key: "parse",
27501
    value: function parse() {
27502
      var section = '';
27503
      var _iterator = _createForOfIteratorHelper(this.contents.split('\n')),
27504
        _step;
27505
      try {
27506
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
27507
          var line = _step.value;
27508
          var match;
27509
          var a;
27510
          if (match = line.match(/^Start(\w+)/)) {
27511
            section = match[1];
27512
            continue;
27513
          } else if (match = line.match(/^End(\w+)/)) {
27514
            section = '';
27515
            continue;
27516
          }
27517
          switch (section) {
27518
            case 'FontMetrics':
27519
              match = line.match(/(^\w+)\s+(.*)/);
27520
              var key = match[1];
27521
              var value = match[2];
27522
              if (a = this.attributes[key]) {
27523
                if (!Array.isArray(a)) {
27524
                  a = this.attributes[key] = [a];
27525
                }
27526
                a.push(value);
27527
              } else {
27528
                this.attributes[key] = value;
27529
              }
27530
              break;
27531
            case 'CharMetrics':
27532
              if (!/^CH?\s/.test(line)) {
27533
                continue;
27534
              }
27535
              var name = line.match(/\bN\s+(\.?\w+)\s*;/)[1];
27536
              this.glyphWidths[name] = +line.match(/\bWX\s+(\d+)\s*;/)[1];
27537
              break;
27538
            case 'KernPairs':
27539
              match = line.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/);
27540
              if (match) {
27541
                this.kernPairs[match[1] + '\0' + match[2]] = parseInt(match[3]);
27542
              }
27543
              break;
27544
          }
27545
        }
27546
      } catch (err) {
27547
        _iterator.e(err);
27548
      } finally {
27549
        _iterator.f();
27550
      }
27551
    }
27552
  }, {
27553
    key: "encodeText",
27554
    value: function encodeText(text) {
27555
      var res = [];
27556
      for (var i = 0, len = text.length; i < len; i++) {
27557
        var char = text.charCodeAt(i);
27558
        char = WIN_ANSI_MAP[char] || char;
27559
        res.push(char.toString(16));
27560
      }
27561
      return res;
27562
    }
27563
  }, {
27564
    key: "glyphsForString",
27565
    value: function glyphsForString(string) {
27566
      var glyphs = [];
27567
      for (var i = 0, len = string.length; i < len; i++) {
27568
        var charCode = string.charCodeAt(i);
27569
        glyphs.push(this.characterToGlyph(charCode));
27570
      }
27571
      return glyphs;
27572
    }
27573
  }, {
27574
    key: "characterToGlyph",
27575
    value: function characterToGlyph(character) {
27576
      return characters[WIN_ANSI_MAP[character] || character] || '.notdef';
27577
    }
27578
  }, {
27579
    key: "widthOfGlyph",
27580
    value: function widthOfGlyph(glyph) {
27581
      return this.glyphWidths[glyph] || 0;
27582
    }
27583
  }, {
27584
    key: "getKernPair",
27585
    value: function getKernPair(left, right) {
27586
      return this.kernPairs[left + '\0' + right] || 0;
27587
    }
27588
  }, {
27589
    key: "advancesForGlyphs",
27590
    value: function advancesForGlyphs(glyphs) {
27591
      var advances = [];
27592
      for (var index = 0; index < glyphs.length; index++) {
27593
        var left = glyphs[index];
27594
        var right = glyphs[index + 1];
27595
        advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));
27596
      }
27597
      return advances;
27598
    }
27599
  }]);
27600
  return AFMFont;
27601
}();
27602
var PDFFont = /*#__PURE__*/function () {
27603
  function PDFFont() {
27604
    _classCallCheck(this, PDFFont);
27605
  }
27606
  _createClass(PDFFont, [{
27607
    key: "encode",
27608
    value: function encode() {
27609
      throw new Error('Must be implemented by subclasses');
27610
    }
27611
  }, {
27612
    key: "widthOfString",
27613
    value: function widthOfString() {
27614
      throw new Error('Must be implemented by subclasses');
27615
    }
27616
  }, {
27617
    key: "ref",
27618
    value: function ref() {
27619
      return this.dictionary != null ? this.dictionary : this.dictionary = this.document.ref();
27620
    }
27621
  }, {
27622
    key: "finalize",
27623
    value: function finalize() {
27624
      if (this.embedded || this.dictionary == null) {
27625
        return;
27626
      }
27627
      this.embed();
27628
      return this.embedded = true;
27629
    }
27630
  }, {
27631
    key: "embed",
27632
    value: function embed() {
27633
      throw new Error('Must be implemented by subclasses');
27634
    }
27635
  }, {
27636
    key: "lineHeight",
27637
    value: function lineHeight(size, includeGap) {
27638
      if (includeGap == null) {
27639
        includeGap = false;
27640
      }
27641
      var gap = includeGap ? this.lineGap : 0;
27642
      return (this.ascender + gap - this.descender) / 1000 * size;
27643
    }
27644
  }]);
27645
  return PDFFont;
27646
}();
27647
var STANDARD_FONTS = {
27648
  Courier: function Courier() {
27649
    return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');
27650
  },
27651
  'Courier-Bold': function CourierBold() {
27652
    return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');
27653
  },
27654
  'Courier-Oblique': function CourierOblique() {
27655
    return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');
27656
  },
27657
  'Courier-BoldOblique': function CourierBoldOblique() {
27658
    return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');
27659
  },
27660
  Helvetica: function Helvetica() {
27661
    return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');
27662
  },
27663
  'Helvetica-Bold': function HelveticaBold() {
27664
    return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');
27665
  },
27666
  'Helvetica-Oblique': function HelveticaOblique() {
27667
    return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');
27668
  },
27669
  'Helvetica-BoldOblique': function HelveticaBoldOblique() {
27670
    return fs.readFileSync(__dirname + '/data/Helvetica-BoldOblique.afm', 'utf8');
27671
  },
27672
  'Times-Roman': function TimesRoman() {
27673
    return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');
27674
  },
27675
  'Times-Bold': function TimesBold() {
27676
    return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');
27677
  },
27678
  'Times-Italic': function TimesItalic() {
27679
    return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');
27680
  },
27681
  'Times-BoldItalic': function TimesBoldItalic() {
27682
    return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');
27683
  },
27684
  Symbol: function Symbol() {
27685
    return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');
27686
  },
27687
  ZapfDingbats: function ZapfDingbats() {
27688
    return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');
27689
  }
27690
};
27691
var StandardFont = /*#__PURE__*/function (_PDFFont) {
27692
  _inherits(StandardFont, _PDFFont);
27693
  var _super = _createSuper(StandardFont);
27694
  function StandardFont(document, name, id) {
27695
    var _this;
27696
    _classCallCheck(this, StandardFont);
27697
    _this = _super.call(this);
27698
    _this.document = document;
27699
    _this.name = name;
27700
    _this.id = id;
27701
    _this.font = new AFMFont(STANDARD_FONTS[_this.name]());
27702
    var _this$font = _this.font;
27703
    _this.ascender = _this$font.ascender;
27704
    _this.descender = _this$font.descender;
27705
    _this.bbox = _this$font.bbox;
27706
    _this.lineGap = _this$font.lineGap;
27707
    _this.xHeight = _this$font.xHeight;
27708
    _this.capHeight = _this$font.capHeight;
27709
    return _this;
27710
  }
27711
  _createClass(StandardFont, [{
27712
    key: "embed",
27713
    value: function embed() {
27714
      this.dictionary.data = {
27715
        Type: 'Font',
27716
        BaseFont: this.name,
27717
        Subtype: 'Type1',
27718
        Encoding: 'WinAnsiEncoding'
27719
      };
27720
      return this.dictionary.end();
27721
    }
27722
  }, {
27723
    key: "encode",
27724
    value: function encode(text) {
27725
      var encoded = this.font.encodeText(text);
27726
      var glyphs = this.font.glyphsForString("".concat(text));
27727
      var advances = this.font.advancesForGlyphs(glyphs);
27728
      var positions = [];
27729
      for (var i = 0; i < glyphs.length; i++) {
27730
        var glyph = glyphs[i];
27731
        positions.push({
27732
          xAdvance: advances[i],
27733
          yAdvance: 0,
27734
          xOffset: 0,
27735
          yOffset: 0,
27736
          advanceWidth: this.font.widthOfGlyph(glyph)
27737
        });
27738
      }
27739
      return [encoded, positions];
27740
    }
27741
  }, {
27742
    key: "widthOfString",
27743
    value: function widthOfString(string, size) {
27744
      var glyphs = this.font.glyphsForString("".concat(string));
27745
      var advances = this.font.advancesForGlyphs(glyphs);
27746
      var width = 0;
27747
      var _iterator = _createForOfIteratorHelper(advances),
27748
        _step;
27749
      try {
27750
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
27751
          var advance = _step.value;
27752
          width += advance;
27753
        }
27754
      } catch (err) {
27755
        _iterator.e(err);
27756
      } finally {
27757
        _iterator.f();
27758
      }
27759
      var scale = size / 1000;
27760
      return width * scale;
27761
    }
27762
  }], [{
27763
    key: "isStandardFont",
27764
    value: function isStandardFont(name) {
27765
      return name in STANDARD_FONTS;
27766
    }
27767
  }]);
27768
  return StandardFont;
27769
}(PDFFont);
27770
var toHex = function toHex(num) {
27771
  return "0000".concat(num.toString(16)).slice(-4);
27772
};
27773
var EmbeddedFont = /*#__PURE__*/function (_PDFFont) {
27774
  _inherits(EmbeddedFont, _PDFFont);
27775
  var _super = _createSuper(EmbeddedFont);
27776
  function EmbeddedFont(document, font, id) {
27777
    var _this;
27778
    _classCallCheck(this, EmbeddedFont);
27779
    _this = _super.call(this);
27780
    _this.document = document;
27781
    _this.font = font;
27782
    _this.id = id;
27783
    _this.subset = _this.font.createSubset();
27784
    _this.unicode = [[0]];
27785
    _this.widths = [_this.font.getGlyph(0).advanceWidth];
27786
    _this.name = _this.font.postscriptName;
27787
    _this.scale = 1000 / _this.font.unitsPerEm;
27788
    _this.ascender = _this.font.ascent * _this.scale;
27789
    _this.descender = _this.font.descent * _this.scale;
27790
    _this.xHeight = _this.font.xHeight * _this.scale;
27791
    _this.capHeight = _this.font.capHeight * _this.scale;
27792
    _this.lineGap = _this.font.lineGap * _this.scale;
27793
    _this.bbox = _this.font.bbox;
27794
    if (document.options.fontLayoutCache !== false) {
27795
      _this.layoutCache = Object.create(null);
27796
    }
27797
    return _this;
27798
  }
27799
  _createClass(EmbeddedFont, [{
27800
    key: "layoutRun",
27801
    value: function layoutRun(text, features) {
27802
      var run = this.font.layout(text, features); // Normalize position values
27803
27804
      for (var i = 0; i < run.positions.length; i++) {
27805
        var position = run.positions[i];
27806
        for (var key in position) {
27807
          position[key] *= this.scale;
27808
        }
27809
        position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;
27810
      }
27811
      return run;
27812
    }
27813
  }, {
27814
    key: "layoutCached",
27815
    value: function layoutCached(text) {
27816
      if (!this.layoutCache) {
27817
        return this.layoutRun(text);
27818
      }
27819
      var cached;
27820
      if (cached = this.layoutCache[text]) {
27821
        return cached;
27822
      }
27823
      var run = this.layoutRun(text);
27824
      this.layoutCache[text] = run;
27825
      return run;
27826
    }
27827
  }, {
27828
    key: "layout",
27829
    value: function layout(text, features, onlyWidth) {
27830
      // Skip the cache if any user defined features are applied
27831
      if (features) {
27832
        return this.layoutRun(text, features);
27833
      }
27834
      var glyphs = onlyWidth ? null : [];
27835
      var positions = onlyWidth ? null : [];
27836
      var advanceWidth = 0; // Split the string by words to increase cache efficiency.
27837
      // For this purpose, spaces and tabs are a good enough delimeter.
27838
27839
      var last = 0;
27840
      var index = 0;
27841
      while (index <= text.length) {
27842
        var needle;
27843
        if (index === text.length && last < index || (needle = text.charAt(index), [' ', '\t'].includes(needle))) {
27844
          var run = this.layoutCached(text.slice(last, ++index));
27845
          if (!onlyWidth) {
27846
            glyphs = glyphs.concat(run.glyphs);
27847
            positions = positions.concat(run.positions);
27848
          }
27849
          advanceWidth += run.advanceWidth;
27850
          last = index;
27851
        } else {
27852
          index++;
27853
        }
27854
      }
27855
      return {
27856
        glyphs: glyphs,
27857
        positions: positions,
27858
        advanceWidth: advanceWidth
27859
      };
27860
    }
27861
  }, {
27862
    key: "encode",
27863
    value: function encode(text, features) {
27864
      var _this$layout = this.layout(text, features),
27865
        glyphs = _this$layout.glyphs,
27866
        positions = _this$layout.positions;
27867
      var res = [];
27868
      for (var i = 0; i < glyphs.length; i++) {
27869
        var glyph = glyphs[i];
27870
        var gid = this.subset.includeGlyph(glyph.id);
27871
        res.push("0000".concat(gid.toString(16)).slice(-4));
27872
        if (this.widths[gid] == null) {
27873
          this.widths[gid] = glyph.advanceWidth * this.scale;
27874
        }
27875
        if (this.unicode[gid] == null) {
27876
          this.unicode[gid] = glyph.codePoints;
27877
        }
27878
      }
27879
      return [res, positions];
27880
    }
27881
  }, {
27882
    key: "widthOfString",
27883
    value: function widthOfString(string, size, features) {
27884
      var width = this.layout(string, features, true).advanceWidth;
27885
      var scale = size / 1000;
27886
      return width * scale;
27887
    }
27888
  }, {
27889
    key: "embed",
27890
    value: function embed() {
27891
      var _this2 = this;
27892
      var isCFF = this.subset.cff != null;
27893
      var fontFile = this.document.ref();
27894
      if (isCFF) {
27895
        fontFile.data.Subtype = 'CIDFontType0C';
27896
      }
27897
      this.subset.encodeStream().on('data', function (data) {
27898
        return fontFile.write(data);
27899
      }).on('end', function () {
27900
        return fontFile.end();
27901
      });
27902
      var familyClass = ((this.font['OS/2'] != null ? this.font['OS/2'].sFamilyClass : undefined) || 0) >> 8;
27903
      var flags = 0;
27904
      if (this.font.post.isFixedPitch) {
27905
        flags |= 1 << 0;
27906
      }
27907
      if (1 <= familyClass && familyClass <= 7) {
27908
        flags |= 1 << 1;
27909
      }
27910
      flags |= 1 << 2; // assume the font uses non-latin characters
27911
27912
      if (familyClass === 10) {
27913
        flags |= 1 << 3;
27914
      }
27915
      if (this.font.head.macStyle.italic) {
27916
        flags |= 1 << 6;
27917
      } // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')
27918
27919
      var tag = [1, 2, 3, 4, 5, 6].map(function (i) {
27920
        return String.fromCharCode((_this2.id.charCodeAt(i) || 73) + 17);
27921
      }).join('');
27922
      var name = tag + '+' + this.font.postscriptName;
27923
      var bbox = this.font.bbox;
27924
      var descriptor = this.document.ref({
27925
        Type: 'FontDescriptor',
27926
        FontName: name,
27927
        Flags: flags,
27928
        FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale],
27929
        ItalicAngle: this.font.italicAngle,
27930
        Ascent: this.ascender,
27931
        Descent: this.descender,
27932
        CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,
27933
        XHeight: (this.font.xHeight || 0) * this.scale,
27934
        StemV: 0
27935
      }); // not sure how to calculate this
27936
27937
      if (isCFF) {
27938
        descriptor.data.FontFile3 = fontFile;
27939
      } else {
27940
        descriptor.data.FontFile2 = fontFile;
27941
      }
27942
      descriptor.end();
27943
      var descendantFontData = {
27944
        Type: 'Font',
27945
        Subtype: 'CIDFontType0',
27946
        BaseFont: name,
27947
        CIDSystemInfo: {
27948
          Registry: new String('Adobe'),
27949
          Ordering: new String('Identity'),
27950
          Supplement: 0
27951
        },
27952
        FontDescriptor: descriptor,
27953
        W: [0, this.widths]
27954
      };
27955
      if (!isCFF) {
27956
        descendantFontData.Subtype = 'CIDFontType2';
27957
        descendantFontData.CIDToGIDMap = 'Identity';
27958
      }
27959
      var descendantFont = this.document.ref(descendantFontData);
27960
      descendantFont.end();
27961
      this.dictionary.data = {
27962
        Type: 'Font',
27963
        Subtype: 'Type0',
27964
        BaseFont: name,
27965
        Encoding: 'Identity-H',
27966
        DescendantFonts: [descendantFont],
27967
        ToUnicode: this.toUnicodeCmap()
27968
      };
27969
      return this.dictionary.end();
27970
    } // Maps the glyph ids encoded in the PDF back to unicode strings
27971
    // Because of ligature substitutions and the like, there may be one or more
27972
    // unicode characters represented by each glyph.
27973
  }, {
27974
    key: "toUnicodeCmap",
27975
    value: function toUnicodeCmap() {
27976
      var cmap = this.document.ref();
27977
      var entries = [];
27978
      var _iterator = _createForOfIteratorHelper(this.unicode),
27979
        _step;
27980
      try {
27981
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
27982
          var codePoints = _step.value;
27983
          var encoded = []; // encode codePoints to utf16
27984
27985
          var _iterator2 = _createForOfIteratorHelper(codePoints),
27986
            _step2;
27987
          try {
27988
            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
27989
              var value = _step2.value;
27990
              if (value > 0xffff) {
27991
                value -= 0x10000;
27992
                encoded.push(toHex(value >>> 10 & 0x3ff | 0xd800));
27993
                value = 0xdc00 | value & 0x3ff;
27994
              }
27995
              encoded.push(toHex(value));
27996
            }
27997
          } catch (err) {
27998
            _iterator2.e(err);
27999
          } finally {
28000
            _iterator2.f();
28001
          }
28002
          entries.push("<".concat(encoded.join(' '), ">"));
28003
        }
28004
      } catch (err) {
28005
        _iterator.e(err);
28006
      } finally {
28007
        _iterator.f();
28008
      }
28009
      cmap.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <".concat(toHex(entries.length - 1), "> [").concat(entries.join(' '), "]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"));
28010
      return cmap;
28011
    }
28012
  }]);
28013
  return EmbeddedFont;
28014
}(PDFFont);
28015
var PDFFontFactory = /*#__PURE__*/function () {
28016
  function PDFFontFactory() {
28017
    _classCallCheck(this, PDFFontFactory);
28018
  }
28019
  _createClass(PDFFontFactory, null, [{
28020
    key: "open",
28021
    value: function open(document, src, family, id) {
28022
      var font;
28023
      if (typeof src === 'string') {
28024
        if (StandardFont.isStandardFont(src)) {
28025
          return new StandardFont(document, src, id);
28026
        }
28027
        src = fs.readFileSync(src);
28028
      }
28029
      if (Buffer.isBuffer(src)) {
28030
        font = _fontkit.default.create(src, family);
28031
      } else if (src instanceof Uint8Array) {
28032
        font = _fontkit.default.create(Buffer.from(src), family);
28033
      } else if (src instanceof ArrayBuffer) {
28034
        font = _fontkit.default.create(Buffer.from(new Uint8Array(src)), family);
28035
      }
28036
      if (font == null) {
28037
        throw new Error('Not a supported font format or standard PDF font.');
28038
      }
28039
      return new EmbeddedFont(document, font, id);
28040
    }
28041
  }]);
28042
  return PDFFontFactory;
28043
}();
28044
var FontsMixin = {
28045
  initFonts: function initFonts() {
28046
    var defaultFont = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Helvetica';
28047
    // Lookup table for embedded fonts
28048
    this._fontFamilies = {};
28049
    this._fontCount = 0; // Font state
28050
28051
    this._fontSize = 12;
28052
    this._font = null;
28053
    this._registeredFonts = {}; // Set the default font
28054
28055
    if (defaultFont) {
28056
      this.font(defaultFont);
28057
    }
28058
  },
28059
  font: function font(src, family, size) {
28060
    var cacheKey, font;
28061
    if (typeof family === 'number') {
28062
      size = family;
28063
      family = null;
28064
    } // check registered fonts if src is a string
28065
28066
    if (typeof src === 'string' && this._registeredFonts[src]) {
28067
      cacheKey = src;
28068
      var _this$_registeredFont = this._registeredFonts[src];
28069
      src = _this$_registeredFont.src;
28070
      family = _this$_registeredFont.family;
28071
    } else {
28072
      cacheKey = family || src;
28073
      if (typeof cacheKey !== 'string') {
28074
        cacheKey = null;
28075
      }
28076
    }
28077
    if (size != null) {
28078
      this.fontSize(size);
28079
    } // fast path: check if the font is already in the PDF
28080
28081
    if (font = this._fontFamilies[cacheKey]) {
28082
      this._font = font;
28083
      return this;
28084
    } // load the font
28085
28086
    var id = "F".concat(++this._fontCount);
28087
    this._font = PDFFontFactory.open(this, src, family, id); // check for existing font familes with the same name already in the PDF
28088
    // useful if the font was passed as a buffer
28089
28090
    if (font = this._fontFamilies[this._font.name]) {
28091
      this._font = font;
28092
      return this;
28093
    } // save the font for reuse later
28094
28095
    if (cacheKey) {
28096
      this._fontFamilies[cacheKey] = this._font;
28097
    }
28098
    if (this._font.name) {
28099
      this._fontFamilies[this._font.name] = this._font;
28100
    }
28101
    return this;
28102
  },
28103
  fontSize: function fontSize(_fontSize) {
28104
    this._fontSize = _fontSize;
28105
    return this;
28106
  },
28107
  currentLineHeight: function currentLineHeight(includeGap) {
28108
    if (includeGap == null) {
28109
      includeGap = false;
28110
    }
28111
    return this._font.lineHeight(this._fontSize, includeGap);
28112
  },
28113
  registerFont: function registerFont(name, src, family) {
28114
    this._registeredFonts[name] = {
28115
      src: src,
28116
      family: family
28117
    };
28118
    return this;
28119
  }
28120
};
28121
var LineWrapper = /*#__PURE__*/function (_EventEmitter) {
28122
  _inherits(LineWrapper, _EventEmitter);
28123
  var _super = _createSuper(LineWrapper);
28124
  function LineWrapper(document, options) {
28125
    var _this;
28126
    _classCallCheck(this, LineWrapper);
28127
    _this = _super.call(this);
28128
    _this.document = document;
28129
    _this.indent = options.indent || 0;
28130
    _this.characterSpacing = options.characterSpacing || 0;
28131
    _this.wordSpacing = options.wordSpacing === 0;
28132
    _this.columns = options.columns || 1;
28133
    _this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch
28134
28135
    _this.lineWidth = (options.width - _this.columnGap * (_this.columns - 1)) / _this.columns;
28136
    _this.spaceLeft = _this.lineWidth;
28137
    _this.startX = _this.document.x;
28138
    _this.startY = _this.document.y;
28139
    _this.column = 1;
28140
    _this.ellipsis = options.ellipsis;
28141
    _this.continuedX = 0;
28142
    _this.features = options.features; // calculate the maximum Y position the text can appear at
28143
28144
    if (options.height != null) {
28145
      _this.height = options.height;
28146
      _this.maxY = _this.startY + options.height;
28147
    } else {
28148
      _this.maxY = _this.document.page.maxY();
28149
    } // handle paragraph indents
28150
28151
    _this.on('firstLine', function (options) {
28152
      // if this is the first line of the text segment, and
28153
      // we're continuing where we left off, indent that much
28154
      // otherwise use the user specified indent option
28155
      var indent = _this.continuedX || _this.indent;
28156
      _this.document.x += indent;
28157
      _this.lineWidth -= indent;
28158
      return _this.once('line', function () {
28159
        _this.document.x -= indent;
28160
        _this.lineWidth += indent;
28161
        if (options.continued && !_this.continuedX) {
28162
          _this.continuedX = _this.indent;
28163
        }
28164
        if (!options.continued) {
28165
          return _this.continuedX = 0;
28166
        }
28167
      });
28168
    }); // handle left aligning last lines of paragraphs
28169
28170
    _this.on('lastLine', function (options) {
28171
      var align = options.align;
28172
      if (align === 'justify') {
28173
        options.align = 'left';
28174
      }
28175
      _this.lastLine = true;
28176
      return _this.once('line', function () {
28177
        _this.document.y += options.paragraphGap || 0;
28178
        options.align = align;
28179
        return _this.lastLine = false;
28180
      });
28181
    });
28182
    return _this;
28183
  }
28184
  _createClass(LineWrapper, [{
28185
    key: "wordWidth",
28186
    value: function wordWidth(word) {
28187
      return this.document.widthOfString(word, this) + this.characterSpacing + this.wordSpacing;
28188
    }
28189
  }, {
28190
    key: "eachWord",
28191
    value: function eachWord(text, fn) {
28192
      // setup a unicode line breaker
28193
      var bk;
28194
      var breaker = new _linebreak.default(text);
28195
      var last = null;
28196
      var wordWidths = Object.create(null);
28197
      while (bk = breaker.nextBreak()) {
28198
        var shouldContinue;
28199
        var word = text.slice((last != null ? last.position : undefined) || 0, bk.position);
28200
        var w = wordWidths[word] != null ? wordWidths[word] : wordWidths[word] = this.wordWidth(word); // if the word is longer than the whole line, chop it up
28201
        // TODO: break by grapheme clusters, not JS string characters
28202
28203
        if (w > this.lineWidth + this.continuedX) {
28204
          // make some fake break objects
28205
          var lbk = last;
28206
          var fbk = {};
28207
          while (word.length) {
28208
            // fit as much of the word as possible into the space we have
28209
            var l, mightGrow;
28210
            if (w > this.spaceLeft) {
28211
              // start our check at the end of our available space - this method is faster than a loop of each character and it resolves
28212
              // an issue with long loops when processing massive words, such as a huge number of spaces
28213
              l = Math.ceil(this.spaceLeft / (w / word.length));
28214
              w = this.wordWidth(word.slice(0, l));
28215
              mightGrow = w <= this.spaceLeft && l < word.length;
28216
            } else {
28217
              l = word.length;
28218
            }
28219
            var mustShrink = w > this.spaceLeft && l > 0; // shrink or grow word as necessary after our near-guess above
28220
28221
            while (mustShrink || mightGrow) {
28222
              if (mustShrink) {
28223
                w = this.wordWidth(word.slice(0, --l));
28224
                mustShrink = w > this.spaceLeft && l > 0;
28225
              } else {
28226
                w = this.wordWidth(word.slice(0, ++l));
28227
                mustShrink = w > this.spaceLeft && l > 0;
28228
                mightGrow = w <= this.spaceLeft && l < word.length;
28229
              }
28230
            } // check for the edge case where a single character cannot fit into a line.
28231
28232
            if (l === 0 && this.spaceLeft === this.lineWidth) {
28233
              l = 1;
28234
            } // send a required break unless this is the last piece and a linebreak is not specified
28235
28236
            fbk.required = bk.required || l < word.length;
28237
            shouldContinue = fn(word.slice(0, l), w, fbk, lbk);
28238
            lbk = {
28239
              required: false
28240
            }; // get the remaining piece of the word
28241
28242
            word = word.slice(l);
28243
            w = this.wordWidth(word);
28244
            if (shouldContinue === false) {
28245
              break;
28246
            }
28247
          }
28248
        } else {
28249
          // otherwise just emit the break as it was given to us
28250
          shouldContinue = fn(word, w, bk, last);
28251
        }
28252
        if (shouldContinue === false) {
28253
          break;
28254
        }
28255
        last = bk;
28256
      }
28257
    }
28258
  }, {
28259
    key: "wrap",
28260
    value: function wrap(text, options) {
28261
      var _this2 = this;
28262
28263
      // override options from previous continued fragments
28264
      if (options.indent != null) {
28265
        this.indent = options.indent;
28266
      }
28267
      if (options.characterSpacing != null) {
28268
        this.characterSpacing = options.characterSpacing;
28269
      }
28270
      if (options.wordSpacing != null) {
28271
        this.wordSpacing = options.wordSpacing;
28272
      }
28273
      if (options.ellipsis != null) {
28274
        this.ellipsis = options.ellipsis;
28275
      } // make sure we're actually on the page
28276
      // and that the first line of is never by
28277
      // itself at the bottom of a page (orphans)
28278
28279
      var nextY = this.document.y + this.document.currentLineHeight(true);
28280
      if (this.document.y > this.maxY || nextY > this.maxY) {
28281
        this.nextSection();
28282
      }
28283
      var buffer = '';
28284
      var textWidth = 0;
28285
      var wc = 0;
28286
      var lc = 0;
28287
      var y = this.document.y; // used to reset Y pos if options.continued (below)
28288
28289
      var emitLine = function emitLine() {
28290
        options.textWidth = textWidth + _this2.wordSpacing * (wc - 1);
28291
        options.wordCount = wc;
28292
        options.lineWidth = _this2.lineWidth;
28293
        y = _this2.document.y;
28294
        _this2.emit('line', buffer, options, _this2);
28295
        return lc++;
28296
      };
28297
      this.emit('sectionStart', options, this);
28298
      this.eachWord(text, function (word, w, bk, last) {
28299
        if (last == null || last.required) {
28300
          _this2.emit('firstLine', options, _this2);
28301
          _this2.spaceLeft = _this2.lineWidth;
28302
        }
28303
        if (w <= _this2.spaceLeft) {
28304
          buffer += word;
28305
          textWidth += w;
28306
          wc++;
28307
        }
28308
        if (bk.required || w > _this2.spaceLeft) {
28309
          // if the user specified a max height and an ellipsis, and is about to pass the
28310
          // max height and max columns after the next line, append the ellipsis
28311
          var lh = _this2.document.currentLineHeight(true);
28312
          if (_this2.height != null && _this2.ellipsis && _this2.document.y + lh * 2 > _this2.maxY && _this2.column >= _this2.columns) {
28313
            if (_this2.ellipsis === true) {
28314
              _this2.ellipsis = '…';
28315
            } // map default ellipsis character
28316
28317
            buffer = buffer.replace(/\s+$/, '');
28318
            textWidth = _this2.wordWidth(buffer + _this2.ellipsis); // remove characters from the buffer until the ellipsis fits
28319
            // to avoid infinite loop need to stop while-loop if buffer is empty string
28320
28321
            while (buffer && textWidth > _this2.lineWidth) {
28322
              buffer = buffer.slice(0, -1).replace(/\s+$/, '');
28323
              textWidth = _this2.wordWidth(buffer + _this2.ellipsis);
28324
            } // need to add ellipsis only if there is enough space for it
28325
28326
            if (textWidth <= _this2.lineWidth) {
28327
              buffer = buffer + _this2.ellipsis;
28328
            }
28329
            textWidth = _this2.wordWidth(buffer);
28330
          }
28331
          if (bk.required) {
28332
            if (w > _this2.spaceLeft) {
28333
              emitLine();
28334
              buffer = word;
28335
              textWidth = w;
28336
              wc = 1;
28337
            }
28338
            _this2.emit('lastLine', options, _this2);
28339
          }
28340
          emitLine(); // if we've reached the edge of the page,
28341
          // continue on a new page or column
28342
28343
          if (_this2.document.y + lh > _this2.maxY) {
28344
            var shouldContinue = _this2.nextSection(); // stop if we reached the maximum height
28345
28346
            if (!shouldContinue) {
28347
              wc = 0;
28348
              buffer = '';
28349
              return false;
28350
            }
28351
          } // reset the space left and buffer
28352
28353
          if (bk.required) {
28354
            _this2.spaceLeft = _this2.lineWidth;
28355
            buffer = '';
28356
            textWidth = 0;
28357
            return wc = 0;
28358
          } else {
28359
            // reset the space left and buffer
28360
            _this2.spaceLeft = _this2.lineWidth - w;
28361
            buffer = word;
28362
            textWidth = w;
28363
            return wc = 1;
28364
          }
28365
        } else {
28366
          return _this2.spaceLeft -= w;
28367
        }
28368
      });
28369
      if (wc > 0) {
28370
        this.emit('lastLine', options, this);
28371
        emitLine();
28372
      }
28373
      this.emit('sectionEnd', options, this); // if the wrap is set to be continued, save the X position
28374
      // to start the first line of the next segment at, and reset
28375
      // the y position
28376
28377
      if (options.continued === true) {
28378
        if (lc > 1) {
28379
          this.continuedX = 0;
28380
        }
28381
        this.continuedX += options.textWidth || 0;
28382
        return this.document.y = y;
28383
      } else {
28384
        return this.document.x = this.startX;
28385
      }
28386
    }
28387
  }, {
28388
    key: "nextSection",
28389
    value: function nextSection(options) {
28390
      this.emit('sectionEnd', options, this);
28391
      if (++this.column > this.columns) {
28392
        // if a max height was specified by the user, we're done.
28393
        // otherwise, the default is to make a new page at the bottom.
28394
        if (this.height != null) {
28395
          return false;
28396
        }
28397
        this.document.continueOnNewPage();
28398
        this.column = 1;
28399
        this.startY = this.document.page.margins.top;
28400
        this.maxY = this.document.page.maxY();
28401
        this.document.x = this.startX;
28402
        if (this.document._fillColor) {
28403
          var _this$document;
28404
          (_this$document = this.document).fillColor.apply(_this$document, _toConsumableArray(this.document._fillColor));
28405
        }
28406
        this.emit('pageBreak', options, this);
28407
      } else {
28408
        this.document.x += this.lineWidth + this.columnGap;
28409
        this.document.y = this.startY;
28410
        this.emit('columnBreak', options, this);
28411
      }
28412
      this.emit('sectionStart', options, this);
28413
      return true;
28414
    }
28415
  }]);
28416
  return LineWrapper;
28417
}(_events.EventEmitter);
28418
var number$2 = PDFObject.number;
28419
var TextMixin = {
28420
  initText: function initText() {
28421
    this._line = this._line.bind(this); // Current coordinates
28422
28423
    this.x = 0;
28424
    this.y = 0;
28425
    return this._lineGap = 0;
28426
  },
28427
  lineGap: function lineGap(_lineGap) {
28428
    this._lineGap = _lineGap;
28429
    return this;
28430
  },
28431
  moveDown: function moveDown(lines) {
28432
    if (lines == null) {
28433
      lines = 1;
28434
    }
28435
    this.y += this.currentLineHeight(true) * lines + this._lineGap;
28436
    return this;
28437
  },
28438
  moveUp: function moveUp(lines) {
28439
    if (lines == null) {
28440
      lines = 1;
28441
    }
28442
    this.y -= this.currentLineHeight(true) * lines + this._lineGap;
28443
    return this;
28444
  },
28445
  _text: function _text(text, x, y, options, lineCallback) {
28446
    var _this = this;
28447
    options = this._initOptions(x, y, options); // Convert text to a string
28448
28449
    text = text == null ? '' : "".concat(text); // if the wordSpacing option is specified, remove multiple consecutive spaces
28450
28451
    if (options.wordSpacing) {
28452
      text = text.replace(/\s{2,}/g, ' ');
28453
    }
28454
    var addStructure = function addStructure() {
28455
      if (options.structParent) {
28456
        options.structParent.add(_this.struct(options.structType || 'P', [_this.markStructureContent(options.structType || 'P')]));
28457
      }
28458
    }; // word wrapping
28459
28460
    if (options.width) {
28461
      var wrapper = this._wrapper;
28462
      if (!wrapper) {
28463
        wrapper = new LineWrapper(this, options);
28464
        wrapper.on('line', lineCallback);
28465
        wrapper.on('firstLine', addStructure);
28466
      }
28467
      this._wrapper = options.continued ? wrapper : null;
28468
      this._textOptions = options.continued ? options : null;
28469
      wrapper.wrap(text, options); // render paragraphs as single lines
28470
    } else {
28471
      var _iterator = _createForOfIteratorHelper(text.split('\n')),
28472
        _step;
28473
      try {
28474
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
28475
          var line = _step.value;
28476
          addStructure();
28477
          lineCallback(line, options);
28478
        }
28479
      } catch (err) {
28480
        _iterator.e(err);
28481
      } finally {
28482
        _iterator.f();
28483
      }
28484
    }
28485
    return this;
28486
  },
28487
  text: function text(_text2, x, y, options) {
28488
    return this._text(_text2, x, y, options, this._line);
28489
  },
28490
  widthOfString: function widthOfString(string) {
28491
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
28492
    return this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1);
28493
  },
28494
  heightOfString: function heightOfString(text, options) {
28495
    var _this2 = this;
28496
    var x = this.x,
28497
      y = this.y;
28498
    options = this._initOptions(options);
28499
    options.height = Infinity; // don't break pages
28500
28501
    var lineGap = options.lineGap || this._lineGap || 0;
28502
    this._text(text, this.x, this.y, options, function () {
28503
      return _this2.y += _this2.currentLineHeight(true) + lineGap;
28504
    });
28505
    var height = this.y - y;
28506
    this.x = x;
28507
    this.y = y;
28508
    return height;
28509
  },
28510
  list: function list(_list, x, y, options, wrapper) {
28511
    var _this3 = this;
28512
    options = this._initOptions(x, y, options);
28513
    var listType = options.listType || 'bullet';
28514
    var unit = Math.round(this._font.ascender / 1000 * this._fontSize);
28515
    var midLine = unit / 2;
28516
    var r = options.bulletRadius || unit / 3;
28517
    var indent = options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);
28518
    var itemIndent = options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);
28519
    var level = 1;
28520
    var items = [];
28521
    var levels = [];
28522
    var numbers = [];
28523
    var flatten = function flatten(list) {
28524
      var n = 1;
28525
      for (var _i = 0; _i < list.length; _i++) {
28526
        var item = list[_i];
28527
        if (Array.isArray(item)) {
28528
          level++;
28529
          flatten(item);
28530
          level--;
28531
        } else {
28532
          items.push(item);
28533
          levels.push(level);
28534
          if (listType !== 'bullet') {
28535
            numbers.push(n++);
28536
          }
28537
        }
28538
      }
28539
    };
28540
    flatten(_list);
28541
    var label = function label(n) {
28542
      switch (listType) {
28543
        case 'numbered':
28544
          return "".concat(n, ".");
28545
        case 'lettered':
28546
          var letter = String.fromCharCode((n - 1) % 26 + 65);
28547
          var times = Math.floor((n - 1) / 26 + 1);
28548
          var text = Array(times + 1).join(letter);
28549
          return "".concat(text, ".");
28550
      }
28551
    };
28552
    wrapper = new LineWrapper(this, options);
28553
    wrapper.on('line', this._line);
28554
    level = 1;
28555
    var i = 0;
28556
    wrapper.on('firstLine', function () {
28557
      var item, itemType, labelType, bodyType;
28558
      if (options.structParent) {
28559
        if (options.structTypes) {
28560
          var _options$structTypes = _slicedToArray(options.structTypes, 3);
28561
          itemType = _options$structTypes[0];
28562
          labelType = _options$structTypes[1];
28563
          bodyType = _options$structTypes[2];
28564
        } else {
28565
          itemType = 'LI';
28566
          labelType = 'Lbl';
28567
          bodyType = 'LBody';
28568
        }
28569
      }
28570
      if (itemType) {
28571
        item = _this3.struct(itemType);
28572
        options.structParent.add(item);
28573
      } else if (options.structParent) {
28574
        item = options.structParent;
28575
      }
28576
      var l;
28577
      if ((l = levels[i++]) !== level) {
28578
        var diff = itemIndent * (l - level);
28579
        _this3.x += diff;
28580
        wrapper.lineWidth -= diff;
28581
        level = l;
28582
      }
28583
      if (item && (labelType || bodyType)) {
28584
        item.add(_this3.struct(labelType || bodyType, [_this3.markStructureContent(labelType || bodyType)]));
28585
      }
28586
      switch (listType) {
28587
        case 'bullet':
28588
          _this3.circle(_this3.x - indent + r, _this3.y + midLine, r);
28589
          _this3.fill();
28590
          break;
28591
        case 'numbered':
28592
        case 'lettered':
28593
          var text = label(numbers[i - 1]);
28594
          _this3._fragment(text, _this3.x - indent, _this3.y, options);
28595
          break;
28596
      }
28597
      if (item && labelType && bodyType) {
28598
        item.add(_this3.struct(bodyType, [_this3.markStructureContent(bodyType)]));
28599
      }
28600
      if (item && item !== options.structParent) {
28601
        item.end();
28602
      }
28603
    });
28604
    wrapper.on('sectionStart', function () {
28605
      var pos = indent + itemIndent * (level - 1);
28606
      _this3.x += pos;
28607
      return wrapper.lineWidth -= pos;
28608
    });
28609
    wrapper.on('sectionEnd', function () {
28610
      var pos = indent + itemIndent * (level - 1);
28611
      _this3.x -= pos;
28612
      return wrapper.lineWidth += pos;
28613
    });
28614
    wrapper.wrap(items.join('\n'), options);
28615
    return this;
28616
  },
28617
  _initOptions: function _initOptions() {
28618
    var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28619
    var y = arguments.length > 1 ? arguments[1] : undefined;
28620
    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
28621
    if (typeof x === 'object') {
28622
      options = x;
28623
      x = null;
28624
    } // clone options object
28625
28626
    var result = Object.assign({}, options); // extend options with previous values for continued text
28627
28628
    if (this._textOptions) {
28629
      for (var key in this._textOptions) {
28630
        var val = this._textOptions[key];
28631
        if (key !== 'continued') {
28632
          if (result[key] === undefined) {
28633
            result[key] = val;
28634
          }
28635
        }
28636
      }
28637
    } // Update the current position
28638
28639
    if (x != null) {
28640
      this.x = x;
28641
    }
28642
    if (y != null) {
28643
      this.y = y;
28644
    } // wrap to margins if no x or y position passed
28645
28646
    if (result.lineBreak !== false) {
28647
      if (result.width == null) {
28648
        result.width = this.page.width - this.x - this.page.margins.right;
28649
      }
28650
      result.width = Math.max(result.width, 0);
28651
    }
28652
    if (!result.columns) {
28653
      result.columns = 0;
28654
    }
28655
    if (result.columnGap == null) {
28656
      result.columnGap = 18;
28657
    } // 1/4 inch
28658
28659
    return result;
28660
  },
28661
  _line: function _line(text) {
28662
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
28663
    var wrapper = arguments.length > 2 ? arguments[2] : undefined;
28664
    this._fragment(text, this.x, this.y, options);
28665
    var lineGap = options.lineGap || this._lineGap || 0;
28666
    if (!wrapper) {
28667
      return this.x += this.widthOfString(text);
28668
    } else {
28669
      return this.y += this.currentLineHeight(true) + lineGap;
28670
    }
28671
  },
28672
  _fragment: function _fragment(text, x, y, options) {
28673
    var _this4 = this;
28674
    var dy, encoded, i, positions, textWidth, words;
28675
    text = "".concat(text).replace(/\n/g, '');
28676
    if (text.length === 0) {
28677
      return;
28678
    } // handle options
28679
28680
    var align = options.align || 'left';
28681
    var wordSpacing = options.wordSpacing || 0;
28682
    var characterSpacing = options.characterSpacing || 0; // text alignments
28683
28684
    if (options.width) {
28685
      switch (align) {
28686
        case 'right':
28687
          textWidth = this.widthOfString(text.replace(/\s+$/, ''), options);
28688
          x += options.lineWidth - textWidth;
28689
          break;
28690
        case 'center':
28691
          x += options.lineWidth / 2 - options.textWidth / 2;
28692
          break;
28693
        case 'justify':
28694
          // calculate the word spacing value
28695
          words = text.trim().split(/\s+/);
28696
          textWidth = this.widthOfString(text.replace(/\s+/g, ''), options);
28697
          var spaceWidth = this.widthOfString(' ') + characterSpacing;
28698
          wordSpacing = Math.max(0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth);
28699
          break;
28700
      }
28701
    } // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling
28702
28703
    if (typeof options.baseline === 'number') {
28704
      dy = -options.baseline;
28705
    } else {
28706
      switch (options.baseline) {
28707
        case 'svg-middle':
28708
          dy = 0.5 * this._font.xHeight;
28709
          break;
28710
        case 'middle':
28711
        case 'svg-central':
28712
          dy = 0.5 * (this._font.descender + this._font.ascender);
28713
          break;
28714
        case 'bottom':
28715
        case 'ideographic':
28716
          dy = this._font.descender;
28717
          break;
28718
        case 'alphabetic':
28719
          dy = 0;
28720
          break;
28721
        case 'mathematical':
28722
          dy = 0.5 * this._font.ascender;
28723
          break;
28724
        case 'hanging':
28725
          dy = 0.8 * this._font.ascender;
28726
          break;
28727
        case 'top':
28728
          dy = this._font.ascender;
28729
          break;
28730
        default:
28731
          dy = this._font.ascender;
28732
      }
28733
      dy = dy / 1000 * this._fontSize;
28734
    } // calculate the actual rendered width of the string after word and character spacing
28735
28736
    var renderedWidth = options.textWidth + wordSpacing * (options.wordCount - 1) + characterSpacing * (text.length - 1); // create link annotations if the link option is given
28737
28738
    if (options.link != null) {
28739
      this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);
28740
    }
28741
    if (options.goTo != null) {
28742
      this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);
28743
    }
28744
    if (options.destination != null) {
28745
      this.addNamedDestination(options.destination, 'XYZ', x, y, null);
28746
    } // create underline
28747
28748
    if (options.underline) {
28749
      this.save();
28750
      if (!options.stroke) {
28751
        this.strokeColor.apply(this, _toConsumableArray(this._fillColor || []));
28752
      }
28753
      var lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);
28754
      this.lineWidth(lineWidth);
28755
      var lineY = y + this.currentLineHeight() - lineWidth;
28756
      this.moveTo(x, lineY);
28757
      this.lineTo(x + renderedWidth, lineY);
28758
      this.stroke();
28759
      this.restore();
28760
    } // create strikethrough line
28761
28762
    if (options.strike) {
28763
      this.save();
28764
      if (!options.stroke) {
28765
        this.strokeColor.apply(this, _toConsumableArray(this._fillColor || []));
28766
      }
28767
      var _lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);
28768
      this.lineWidth(_lineWidth);
28769
      var _lineY = y + this.currentLineHeight() / 2;
28770
      this.moveTo(x, _lineY);
28771
      this.lineTo(x + renderedWidth, _lineY);
28772
      this.stroke();
28773
      this.restore();
28774
    }
28775
    this.save(); // oblique (angle in degrees or boolean)
28776
28777
    if (options.oblique) {
28778
      var skew;
28779
      if (typeof options.oblique === 'number') {
28780
        skew = -Math.tan(options.oblique * Math.PI / 180);
28781
      } else {
28782
        skew = -0.25;
28783
      }
28784
      this.transform(1, 0, 0, 1, x, y);
28785
      this.transform(1, 0, skew, 1, -skew * dy, 0);
28786
      this.transform(1, 0, 0, 1, -x, -y);
28787
    } // flip coordinate system
28788
28789
    this.transform(1, 0, 0, -1, 0, this.page.height);
28790
    y = this.page.height - y - dy; // add current font to page if necessary
28791
28792
    if (this.page.fonts[this._font.id] == null) {
28793
      this.page.fonts[this._font.id] = this._font.ref();
28794
    } // begin the text object
28795
28796
    this.addContent('BT'); // text position
28797
28798
    this.addContent("1 0 0 1 ".concat(number$2(x), " ").concat(number$2(y), " Tm")); // font and font size
28799
28800
    this.addContent("/".concat(this._font.id, " ").concat(number$2(this._fontSize), " Tf")); // rendering mode
28801
28802
    var mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;
28803
    if (mode) {
28804
      this.addContent("".concat(mode, " Tr"));
28805
    } // Character spacing
28806
28807
    if (characterSpacing) {
28808
      this.addContent("".concat(number$2(characterSpacing), " Tc"));
28809
    } // Add the actual text
28810
    // If we have a word spacing value, we need to encode each word separately
28811
    // since the normal Tw operator only works on character code 32, which isn't
28812
    // used for embedded fonts.
28813
28814
    if (wordSpacing) {
28815
      words = text.trim().split(/\s+/);
28816
      wordSpacing += this.widthOfString(' ') + characterSpacing;
28817
      wordSpacing *= 1000 / this._fontSize;
28818
      encoded = [];
28819
      positions = [];
28820
      var _iterator2 = _createForOfIteratorHelper(words),
28821
        _step2;
28822
      try {
28823
        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
28824
          var word = _step2.value;
28825
          var _this$_font$encode = this._font.encode(word, options.features),
28826
            _this$_font$encode2 = _slicedToArray(_this$_font$encode, 2),
28827
            encodedWord = _this$_font$encode2[0],
28828
            positionsWord = _this$_font$encode2[1];
28829
          encoded = encoded.concat(encodedWord);
28830
          positions = positions.concat(positionsWord); // add the word spacing to the end of the word
28831
          // clone object because of cache
28832
28833
          var space = {};
28834
          var object = positions[positions.length - 1];
28835
          for (var key in object) {
28836
            var val = object[key];
28837
            space[key] = val;
28838
          }
28839
          space.xAdvance += wordSpacing;
28840
          positions[positions.length - 1] = space;
28841
        }
28842
      } catch (err) {
28843
        _iterator2.e(err);
28844
      } finally {
28845
        _iterator2.f();
28846
      }
28847
    } else {
28848
      var _this$_font$encode3 = this._font.encode(text, options.features);
28849
      var _this$_font$encode4 = _slicedToArray(_this$_font$encode3, 2);
28850
      encoded = _this$_font$encode4[0];
28851
      positions = _this$_font$encode4[1];
28852
    }
28853
    var scale = this._fontSize / 1000;
28854
    var commands = [];
28855
    var last = 0;
28856
    var hadOffset = false; // Adds a segment of text to the TJ command buffer
28857
28858
    var addSegment = function addSegment(cur) {
28859
      if (last < cur) {
28860
        var hex = encoded.slice(last, cur).join('');
28861
        var advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;
28862
        commands.push("<".concat(hex, "> ").concat(number$2(-advance)));
28863
      }
28864
      return last = cur;
28865
    }; // Flushes the current TJ commands to the output stream
28866
28867
    var flush = function flush(i) {
28868
      addSegment(i);
28869
      if (commands.length > 0) {
28870
        _this4.addContent("[".concat(commands.join(' '), "] TJ"));
28871
        return commands.length = 0;
28872
      }
28873
    };
28874
    for (i = 0; i < positions.length; i++) {
28875
      // If we have an x or y offset, we have to break out of the current TJ command
28876
      // so we can move the text position.
28877
      var pos = positions[i];
28878
      if (pos.xOffset || pos.yOffset) {
28879
        // Flush the current buffer
28880
        flush(i); // Move the text position and flush just the current character
28881
28882
        this.addContent("1 0 0 1 ".concat(number$2(x + pos.xOffset * scale), " ").concat(number$2(y + pos.yOffset * scale), " Tm"));
28883
        flush(i + 1);
28884
        hadOffset = true;
28885
      } else {
28886
        // If the last character had an offset, reset the text position
28887
        if (hadOffset) {
28888
          this.addContent("1 0 0 1 ".concat(number$2(x), " ").concat(number$2(y), " Tm"));
28889
          hadOffset = false;
28890
        } // Group segments that don't have any advance adjustments
28891
28892
        if (pos.xAdvance - pos.advanceWidth !== 0) {
28893
          addSegment(i + 1);
28894
        }
28895
      }
28896
      x += pos.xAdvance * scale;
28897
    } // Flush any remaining commands
28898
28899
    flush(i); // end the text object
28900
28901
    this.addContent('ET'); // restore flipped coordinate system
28902
28903
    return this.restore();
28904
  }
28905
};
28906
var MARKERS = [0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc8, 0xffc9, 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf];
28907
var COLOR_SPACE_MAP = {
28908
  1: 'DeviceGray',
28909
  3: 'DeviceRGB',
28910
  4: 'DeviceCMYK'
28911
};
28912
var JPEG = /*#__PURE__*/function () {
28913
  function JPEG(data, label) {
28914
    _classCallCheck(this, JPEG);
28915
    var marker;
28916
    this.data = data;
28917
    this.label = label;
28918
    if (this.data.readUInt16BE(0) !== 0xffd8) {
28919
      throw 'SOI not found in JPEG';
28920
    }
28921
    var pos = 2;
28922
    while (pos < this.data.length) {
28923
      marker = this.data.readUInt16BE(pos);
28924
      pos += 2;
28925
      if (MARKERS.includes(marker)) {
28926
        break;
28927
      }
28928
      pos += this.data.readUInt16BE(pos);
28929
    }
28930
    if (!MARKERS.includes(marker)) {
28931
      throw 'Invalid JPEG.';
28932
    }
28933
    pos += 2;
28934
    this.bits = this.data[pos++];
28935
    this.height = this.data.readUInt16BE(pos);
28936
    pos += 2;
28937
    this.width = this.data.readUInt16BE(pos);
28938
    pos += 2;
28939
    var channels = this.data[pos++];
28940
    this.colorSpace = COLOR_SPACE_MAP[channels];
28941
    this.obj = null;
28942
  }
28943
  _createClass(JPEG, [{
28944
    key: "embed",
28945
    value: function embed(document) {
28946
      if (this.obj) {
28947
        return;
28948
      }
28949
      this.obj = document.ref({
28950
        Type: 'XObject',
28951
        Subtype: 'Image',
28952
        BitsPerComponent: this.bits,
28953
        Width: this.width,
28954
        Height: this.height,
28955
        ColorSpace: this.colorSpace,
28956
        Filter: 'DCTDecode'
28957
      }); // add extra decode params for CMYK images. By swapping the
28958
      // min and max values from the default, we invert the colors. See
28959
      // section 4.8.4 of the spec.
28960
28961
      if (this.colorSpace === 'DeviceCMYK') {
28962
        this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];
28963
      }
28964
      this.obj.end(this.data); // free memory
28965
28966
      return this.data = null;
28967
    }
28968
  }]);
28969
  return JPEG;
28970
}();
28971
var PNGImage = /*#__PURE__*/function () {
28972
  function PNGImage(data, label) {
28973
    _classCallCheck(this, PNGImage);
28974
    this.label = label;
28975
    this.image = new _pngJs.default(data);
28976
    this.width = this.image.width;
28977
    this.height = this.image.height;
28978
    this.imgData = this.image.imgData;
28979
    this.obj = null;
28980
  }
28981
  _createClass(PNGImage, [{
28982
    key: "embed",
28983
    value: function embed(document) {
28984
      var dataDecoded = false;
28985
      this.document = document;
28986
      if (this.obj) {
28987
        return;
28988
      }
28989
      var hasAlphaChannel = this.image.hasAlphaChannel;
28990
      var isInterlaced = this.image.interlaceMethod === 1;
28991
      this.obj = this.document.ref({
28992
        Type: 'XObject',
28993
        Subtype: 'Image',
28994
        BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,
28995
        Width: this.width,
28996
        Height: this.height,
28997
        Filter: 'FlateDecode'
28998
      });
28999
      if (!hasAlphaChannel) {
29000
        var params = this.document.ref({
29001
          Predictor: isInterlaced ? 1 : 15,
29002
          Colors: this.image.colors,
29003
          BitsPerComponent: this.image.bits,
29004
          Columns: this.width
29005
        });
29006
        this.obj.data['DecodeParms'] = params;
29007
        params.end();
29008
      }
29009
      if (this.image.palette.length === 0) {
29010
        this.obj.data['ColorSpace'] = this.image.colorSpace;
29011
      } else {
29012
        // embed the color palette in the PDF as an object stream
29013
        var palette = this.document.ref();
29014
        palette.end(Buffer.from(this.image.palette)); // build the color space array for the image
29015
29016
        this.obj.data['ColorSpace'] = ['Indexed', 'DeviceRGB', this.image.palette.length / 3 - 1, palette];
29017
      } // For PNG color types 0, 2 and 3, the transparency data is stored in
29018
      // a dedicated PNG chunk.
29019
29020
      if (this.image.transparency.grayscale != null) {
29021
        // Use Color Key Masking (spec section 4.8.5)
29022
        // An array with N elements, where N is two times the number of color components.
29023
        var val = this.image.transparency.grayscale;
29024
        this.obj.data['Mask'] = [val, val];
29025
      } else if (this.image.transparency.rgb) {
29026
        // Use Color Key Masking (spec section 4.8.5)
29027
        // An array with N elements, where N is two times the number of color components.
29028
        var rgb = this.image.transparency.rgb;
29029
        var mask = [];
29030
        var _iterator = _createForOfIteratorHelper(rgb),
29031
          _step;
29032
        try {
29033
          for (_iterator.s(); !(_step = _iterator.n()).done;) {
29034
            var x = _step.value;
29035
            mask.push(x, x);
29036
          }
29037
        } catch (err) {
29038
          _iterator.e(err);
29039
        } finally {
29040
          _iterator.f();
29041
        }
29042
        this.obj.data['Mask'] = mask;
29043
      } else if (this.image.transparency.indexed) {
29044
        // Create a transparency SMask for the image based on the data
29045
        // in the PLTE and tRNS sections. See below for details on SMasks.
29046
        dataDecoded = true;
29047
        return this.loadIndexedAlphaChannel();
29048
      } else if (hasAlphaChannel) {
29049
        // For PNG color types 4 and 6, the transparency data is stored as a alpha
29050
        // channel mixed in with the main image data. Separate this data out into an
29051
        // SMask object and store it separately in the PDF.
29052
        dataDecoded = true;
29053
        return this.splitAlphaChannel();
29054
      }
29055
      if (isInterlaced && !dataDecoded) {
29056
        return this.decodeData();
29057
      }
29058
      this.finalize();
29059
    }
29060
  }, {
29061
    key: "finalize",
29062
    value: function finalize() {
29063
      if (this.alphaChannel) {
29064
        var sMask = this.document.ref({
29065
          Type: 'XObject',
29066
          Subtype: 'Image',
29067
          Height: this.height,
29068
          Width: this.width,
29069
          BitsPerComponent: 8,
29070
          Filter: 'FlateDecode',
29071
          ColorSpace: 'DeviceGray',
29072
          Decode: [0, 1]
29073
        });
29074
        sMask.end(this.alphaChannel);
29075
        this.obj.data['SMask'] = sMask;
29076
      } // add the actual image data
29077
29078
      this.obj.end(this.imgData); // free memory
29079
29080
      this.image = null;
29081
      return this.imgData = null;
29082
    }
29083
  }, {
29084
    key: "splitAlphaChannel",
29085
    value: function splitAlphaChannel() {
29086
      var _this = this;
29087
      return this.image.decodePixels(function (pixels) {
29088
        var a, p;
29089
        var colorCount = _this.image.colors;
29090
        var pixelCount = _this.width * _this.height;
29091
        var imgData = Buffer.alloc(pixelCount * colorCount);
29092
        var alphaChannel = Buffer.alloc(pixelCount);
29093
        var i = p = a = 0;
29094
        var len = pixels.length; // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)
29095
29096
        var skipByteCount = _this.image.bits === 16 ? 1 : 0;
29097
        while (i < len) {
29098
          for (var colorIndex = 0; colorIndex < colorCount; colorIndex++) {
29099
            imgData[p++] = pixels[i++];
29100
            i += skipByteCount;
29101
          }
29102
          alphaChannel[a++] = pixels[i++];
29103
          i += skipByteCount;
29104
        }
29105
        _this.imgData = _zlib.default.deflateSync(imgData);
29106
        _this.alphaChannel = _zlib.default.deflateSync(alphaChannel);
29107
        return _this.finalize();
29108
      });
29109
    }
29110
  }, {
29111
    key: "loadIndexedAlphaChannel",
29112
    value: function loadIndexedAlphaChannel() {
29113
      var _this2 = this;
29114
      var transparency = this.image.transparency.indexed;
29115
      return this.image.decodePixels(function (pixels) {
29116
        var alphaChannel = Buffer.alloc(_this2.width * _this2.height);
29117
        var i = 0;
29118
        for (var j = 0, end = pixels.length; j < end; j++) {
29119
          alphaChannel[i++] = transparency[pixels[j]];
29120
        }
29121
        _this2.alphaChannel = _zlib.default.deflateSync(alphaChannel);
29122
        return _this2.finalize();
29123
      });
29124
    }
29125
  }, {
29126
    key: "decodeData",
29127
    value: function decodeData() {
29128
      var _this3 = this;
29129
      this.image.decodePixels(function (pixels) {
29130
        _this3.imgData = _zlib.default.deflateSync(pixels);
29131
        _this3.finalize();
29132
      });
29133
    }
29134
  }]);
29135
  return PNGImage;
29136
}();
29137
var PDFImage = /*#__PURE__*/function () {
29138
  function PDFImage() {
29139
    _classCallCheck(this, PDFImage);
29140
  }
29141
  _createClass(PDFImage, null, [{
29142
    key: "open",
29143
    value: function open(src, label) {
29144
      var data;
29145
      if (Buffer.isBuffer(src)) {
29146
        data = src;
29147
      } else if (src instanceof ArrayBuffer) {
29148
        data = Buffer.from(new Uint8Array(src));
29149
      } else {
29150
        var match;
29151
        if (match = /^data:.+;base64,(.*)$/.exec(src)) {
29152
          data = Buffer.from(match[1], 'base64');
29153
        } else {
29154
          data = fs.readFileSync(src);
29155
          if (!data) {
29156
            return;
29157
          }
29158
        }
29159
      }
29160
      if (data[0] === 0xff && data[1] === 0xd8) {
29161
        return new JPEG(data, label);
29162
      } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {
29163
        return new PNGImage(data, label);
29164
      } else {
29165
        throw new Error('Unknown image format.');
29166
      }
29167
    }
29168
  }]);
29169
  return PDFImage;
29170
}();
29171
var ImagesMixin = {
29172
  initImages: function initImages() {
29173
    this._imageRegistry = {};
29174
    return this._imageCount = 0;
29175
  },
29176
  image: function image(src, x, y) {
29177
    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
29178
    var bh, bp, bw, image, ip, left, left1;
29179
    if (typeof x === 'object') {
29180
      options = x;
29181
      x = null;
29182
    }
29183
    x = (left = x != null ? x : options.x) != null ? left : this.x;
29184
    y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;
29185
    if (typeof src === 'string') {
29186
      image = this._imageRegistry[src];
29187
    }
29188
    if (!image) {
29189
      if (src.width && src.height) {
29190
        image = src;
29191
      } else {
29192
        image = this.openImage(src);
29193
      }
29194
    }
29195
    if (!image.obj) {
29196
      image.embed(this);
29197
    }
29198
    if (this.page.xobjects[image.label] == null) {
29199
      this.page.xobjects[image.label] = image.obj;
29200
    }
29201
    var w = options.width || image.width;
29202
    var h = options.height || image.height;
29203
    if (options.width && !options.height) {
29204
      var wp = w / image.width;
29205
      w = image.width * wp;
29206
      h = image.height * wp;
29207
    } else if (options.height && !options.width) {
29208
      var hp = h / image.height;
29209
      w = image.width * hp;
29210
      h = image.height * hp;
29211
    } else if (options.scale) {
29212
      w = image.width * options.scale;
29213
      h = image.height * options.scale;
29214
    } else if (options.fit) {
29215
      var _options$fit = _slicedToArray(options.fit, 2);
29216
      bw = _options$fit[0];
29217
      bh = _options$fit[1];
29218
      bp = bw / bh;
29219
      ip = image.width / image.height;
29220
      if (ip > bp) {
29221
        w = bw;
29222
        h = bw / ip;
29223
      } else {
29224
        h = bh;
29225
        w = bh * ip;
29226
      }
29227
    } else if (options.cover) {
29228
      var _options$cover = _slicedToArray(options.cover, 2);
29229
      bw = _options$cover[0];
29230
      bh = _options$cover[1];
29231
      bp = bw / bh;
29232
      ip = image.width / image.height;
29233
      if (ip > bp) {
29234
        h = bh;
29235
        w = bh * ip;
29236
      } else {
29237
        w = bw;
29238
        h = bw / ip;
29239
      }
29240
    }
29241
    if (options.fit || options.cover) {
29242
      if (options.align === 'center') {
29243
        x = x + bw / 2 - w / 2;
29244
      } else if (options.align === 'right') {
29245
        x = x + bw - w;
29246
      }
29247
      if (options.valign === 'center') {
29248
        y = y + bh / 2 - h / 2;
29249
      } else if (options.valign === 'bottom') {
29250
        y = y + bh - h;
29251
      }
29252
    } // create link annotations if the link option is given
29253
29254
    if (options.link != null) {
29255
      this.link(x, y, w, h, options.link);
29256
    }
29257
    if (options.goTo != null) {
29258
      this.goTo(x, y, w, h, options.goTo);
29259
    }
29260
    if (options.destination != null) {
29261
      this.addNamedDestination(options.destination, 'XYZ', x, y, null);
29262
    } // Set the current y position to below the image if it is in the document flow
29263
29264
    if (this.y === y) {
29265
      this.y += h;
29266
    }
29267
    this.save();
29268
    this.transform(w, 0, 0, -h, x, y + h);
29269
    this.addContent("/".concat(image.label, " Do"));
29270
    this.restore();
29271
    return this;
29272
  },
29273
  openImage: function openImage(src) {
29274
    var image;
29275
    if (typeof src === 'string') {
29276
      image = this._imageRegistry[src];
29277
    }
29278
    if (!image) {
29279
      image = PDFImage.open(src, "I".concat(++this._imageCount));
29280
      if (typeof src === 'string') {
29281
        this._imageRegistry[src] = image;
29282
      }
29283
    }
29284
    return image;
29285
  }
29286
};
29287
var AnnotationsMixin = {
29288
  annotate: function annotate(x, y, w, h, options) {
29289
    options.Type = 'Annot';
29290
    options.Rect = this._convertRect(x, y, w, h);
29291
    options.Border = [0, 0, 0];
29292
    if (options.Subtype === 'Link' && typeof options.F === 'undefined') {
29293
      options.F = 1 << 2; // Print Annotation Flag
29294
    }
29295
29296
    if (options.Subtype !== 'Link') {
29297
      if (options.C == null) {
29298
        options.C = this._normalizeColor(options.color || [0, 0, 0]);
29299
      }
29300
    } // convert colors
29301
29302
    delete options.color;
29303
    if (typeof options.Dest === 'string') {
29304
      options.Dest = new String(options.Dest);
29305
    } // Capitalize keys
29306
29307
    for (var key in options) {
29308
      var val = options[key];
29309
      options[key[0].toUpperCase() + key.slice(1)] = val;
29310
    }
29311
    var ref = this.ref(options);
29312
    this.page.annotations.push(ref);
29313
    ref.end();
29314
    return this;
29315
  },
29316
  note: function note(x, y, w, h, contents) {
29317
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
29318
    options.Subtype = 'Text';
29319
    options.Contents = new String(contents);
29320
    options.Name = 'Comment';
29321
    if (options.color == null) {
29322
      options.color = [243, 223, 92];
29323
    }
29324
    return this.annotate(x, y, w, h, options);
29325
  },
29326
  goTo: function goTo(x, y, w, h, name) {
29327
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
29328
    options.Subtype = 'Link';
29329
    options.A = this.ref({
29330
      S: 'GoTo',
29331
      D: new String(name)
29332
    });
29333
    options.A.end();
29334
    return this.annotate(x, y, w, h, options);
29335
  },
29336
  link: function link(x, y, w, h, url) {
29337
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
29338
    options.Subtype = 'Link';
29339
    if (typeof url === 'number') {
29340
      // Link to a page in the document (the page must already exist)
29341
      var pages = this._root.data.Pages.data;
29342
      if (url >= 0 && url < pages.Kids.length) {
29343
        options.A = this.ref({
29344
          S: 'GoTo',
29345
          D: [pages.Kids[url], 'XYZ', null, null, null]
29346
        });
29347
        options.A.end();
29348
      } else {
29349
        throw new Error("The document has no page ".concat(url));
29350
      }
29351
    } else {
29352
      // Link to an external url
29353
      options.A = this.ref({
29354
        S: 'URI',
29355
        URI: new String(url)
29356
      });
29357
      options.A.end();
29358
    }
29359
    return this.annotate(x, y, w, h, options);
29360
  },
29361
  _markup: function _markup(x, y, w, h) {
29362
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29363
    var _this$_convertRect = this._convertRect(x, y, w, h),
29364
      _this$_convertRect2 = _slicedToArray(_this$_convertRect, 4),
29365
      x1 = _this$_convertRect2[0],
29366
      y1 = _this$_convertRect2[1],
29367
      x2 = _this$_convertRect2[2],
29368
      y2 = _this$_convertRect2[3];
29369
    options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];
29370
    options.Contents = new String();
29371
    return this.annotate(x, y, w, h, options);
29372
  },
29373
  highlight: function highlight(x, y, w, h) {
29374
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29375
    options.Subtype = 'Highlight';
29376
    if (options.color == null) {
29377
      options.color = [241, 238, 148];
29378
    }
29379
    return this._markup(x, y, w, h, options);
29380
  },
29381
  underline: function underline(x, y, w, h) {
29382
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29383
    options.Subtype = 'Underline';
29384
    return this._markup(x, y, w, h, options);
29385
  },
29386
  strike: function strike(x, y, w, h) {
29387
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29388
    options.Subtype = 'StrikeOut';
29389
    return this._markup(x, y, w, h, options);
29390
  },
29391
  lineAnnotation: function lineAnnotation(x1, y1, x2, y2) {
29392
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29393
    options.Subtype = 'Line';
29394
    options.Contents = new String();
29395
    options.L = [x1, this.page.height - y1, x2, this.page.height - y2];
29396
    return this.annotate(x1, y1, x2, y2, options);
29397
  },
29398
  rectAnnotation: function rectAnnotation(x, y, w, h) {
29399
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29400
    options.Subtype = 'Square';
29401
    options.Contents = new String();
29402
    return this.annotate(x, y, w, h, options);
29403
  },
29404
  ellipseAnnotation: function ellipseAnnotation(x, y, w, h) {
29405
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29406
    options.Subtype = 'Circle';
29407
    options.Contents = new String();
29408
    return this.annotate(x, y, w, h, options);
29409
  },
29410
  textAnnotation: function textAnnotation(x, y, w, h, text) {
29411
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
29412
    options.Subtype = 'FreeText';
29413
    options.Contents = new String(text);
29414
    options.DA = new String();
29415
    return this.annotate(x, y, w, h, options);
29416
  },
29417
  fileAnnotation: function fileAnnotation(x, y, w, h) {
29418
    var file = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
29419
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
29420
    // create hidden file
29421
    var filespec = this.file(file.src, Object.assign({
29422
      hidden: true
29423
    }, file));
29424
    options.Subtype = 'FileAttachment';
29425
    options.FS = filespec; // add description from filespec unless description (Contents) has already been set
29426
29427
    if (options.Contents) {
29428
      options.Contents = new String(options.Contents);
29429
    } else if (filespec.data.Desc) {
29430
      options.Contents = filespec.data.Desc;
29431
    }
29432
    return this.annotate(x, y, w, h, options);
29433
  },
29434
  _convertRect: function _convertRect(x1, y1, w, h) {
29435
    // flip y1 and y2
29436
    var y2 = y1;
29437
    y1 += h; // make x2
29438
29439
    var x2 = x1 + w; // apply current transformation matrix to points
29440
29441
    var _this$_ctm = _slicedToArray(this._ctm, 6),
29442
      m0 = _this$_ctm[0],
29443
      m1 = _this$_ctm[1],
29444
      m2 = _this$_ctm[2],
29445
      m3 = _this$_ctm[3],
29446
      m4 = _this$_ctm[4],
29447
      m5 = _this$_ctm[5];
29448
    x1 = m0 * x1 + m2 * y1 + m4;
29449
    y1 = m1 * x1 + m3 * y1 + m5;
29450
    x2 = m0 * x2 + m2 * y2 + m4;
29451
    y2 = m1 * x2 + m3 * y2 + m5;
29452
    return [x1, y1, x2, y2];
29453
  }
29454
};
29455
var PDFOutline = /*#__PURE__*/function () {
29456
  function PDFOutline(document, parent, title, dest) {
29457
    var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {
29458
      expanded: false
29459
    };
29460
    _classCallCheck(this, PDFOutline);
29461
    this.document = document;
29462
    this.options = options;
29463
    this.outlineData = {};
29464
    if (dest !== null) {
29465
      this.outlineData['Dest'] = [dest.dictionary, 'Fit'];
29466
    }
29467
    if (parent !== null) {
29468
      this.outlineData['Parent'] = parent;
29469
    }
29470
    if (title !== null) {
29471
      this.outlineData['Title'] = new String(title);
29472
    }
29473
    this.dictionary = this.document.ref(this.outlineData);
29474
    this.children = [];
29475
  }
29476
  _createClass(PDFOutline, [{
29477
    key: "addItem",
29478
    value: function addItem(title) {
29479
      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
29480
        expanded: false
29481
      };
29482
      var result = new PDFOutline(this.document, this.dictionary, title, this.document.page, options);
29483
      this.children.push(result);
29484
      return result;
29485
    }
29486
  }, {
29487
    key: "endOutline",
29488
    value: function endOutline() {
29489
      if (this.children.length > 0) {
29490
        if (this.options.expanded) {
29491
          this.outlineData.Count = this.children.length;
29492
        }
29493
        var first = this.children[0],
29494
          last = this.children[this.children.length - 1];
29495
        this.outlineData.First = first.dictionary;
29496
        this.outlineData.Last = last.dictionary;
29497
        for (var i = 0, len = this.children.length; i < len; i++) {
29498
          var child = this.children[i];
29499
          if (i > 0) {
29500
            child.outlineData.Prev = this.children[i - 1].dictionary;
29501
          }
29502
          if (i < this.children.length - 1) {
29503
            child.outlineData.Next = this.children[i + 1].dictionary;
29504
          }
29505
          child.endOutline();
29506
        }
29507
      }
29508
      return this.dictionary.end();
29509
    }
29510
  }]);
29511
  return PDFOutline;
29512
}();
29513
var OutlineMixin = {
29514
  initOutline: function initOutline() {
29515
    return this.outline = new PDFOutline(this, null, null, null);
29516
  },
29517
  endOutline: function endOutline() {
29518
    this.outline.endOutline();
29519
    if (this.outline.children.length > 0) {
29520
      this._root.data.Outlines = this.outline.dictionary;
29521
      return this._root.data.PageMode = 'UseOutlines';
29522
    }
29523
  }
29524
};
29525
29526
/*
29527
PDFStructureContent - a reference to a marked structure content
29528
By Ben Schmidt
29529
*/
29530
var PDFStructureContent = /*#__PURE__*/function () {
29531
  function PDFStructureContent(pageRef, mcid) {
29532
    _classCallCheck(this, PDFStructureContent);
29533
    this.refs = [{
29534
      pageRef: pageRef,
29535
      mcid: mcid
29536
    }];
29537
  }
29538
  _createClass(PDFStructureContent, [{
29539
    key: "push",
29540
    value: function push(structContent) {
29541
      var _this = this;
29542
      structContent.refs.forEach(function (ref) {
29543
        return _this.refs.push(ref);
29544
      });
29545
    }
29546
  }]);
29547
  return PDFStructureContent;
29548
}();
29549
var PDFStructureElement = /*#__PURE__*/function () {
29550
  function PDFStructureElement(document, type) {
29551
    var _this = this;
29552
    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
29553
    var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
29554
    _classCallCheck(this, PDFStructureElement);
29555
    this.document = document;
29556
    this._attached = false;
29557
    this._ended = false;
29558
    this._flushed = false;
29559
    this.dictionary = document.ref({
29560
      // Type: "StructElem",
29561
      S: type
29562
    });
29563
    var data = this.dictionary.data;
29564
    if (Array.isArray(options) || this._isValidChild(options)) {
29565
      children = options;
29566
      options = {};
29567
    }
29568
    if (typeof options.title !== 'undefined') {
29569
      data.T = new String(options.title);
29570
    }
29571
    if (typeof options.lang !== 'undefined') {
29572
      data.Lang = new String(options.lang);
29573
    }
29574
    if (typeof options.alt !== 'undefined') {
29575
      data.Alt = new String(options.alt);
29576
    }
29577
    if (typeof options.expanded !== 'undefined') {
29578
      data.E = new String(options.expanded);
29579
    }
29580
    if (typeof options.actual !== 'undefined') {
29581
      data.ActualText = new String(options.actual);
29582
    }
29583
    this._children = [];
29584
    if (children) {
29585
      if (!Array.isArray(children)) {
29586
        children = [children];
29587
      }
29588
      children.forEach(function (child) {
29589
        return _this.add(child);
29590
      });
29591
      this.end();
29592
    }
29593
  }
29594
  _createClass(PDFStructureElement, [{
29595
    key: "add",
29596
    value: function add(child) {
29597
      if (this._ended) {
29598
        throw new Error("Cannot add child to already-ended structure element");
29599
      }
29600
      if (!this._isValidChild(child)) {
29601
        throw new Error("Invalid structure element child");
29602
      }
29603
      if (child instanceof PDFStructureElement) {
29604
        child.setParent(this.dictionary);
29605
        if (this._attached) {
29606
          child.setAttached();
29607
        }
29608
      }
29609
      if (child instanceof PDFStructureContent) {
29610
        this._addContentToParentTree(child);
29611
      }
29612
      if (typeof child === 'function' && this._attached) {
29613
        // _contentForClosure() adds the content to the parent tree
29614
        child = this._contentForClosure(child);
29615
      }
29616
      this._children.push(child);
29617
      return this;
29618
    }
29619
  }, {
29620
    key: "_addContentToParentTree",
29621
    value: function _addContentToParentTree(content) {
29622
      var _this2 = this;
29623
      content.refs.forEach(function (_ref) {
29624
        var pageRef = _ref.pageRef,
29625
          mcid = _ref.mcid;
29626
        var pageStructParents = _this2.document.getStructParentTree().get(pageRef.data.StructParents);
29627
        pageStructParents[mcid] = _this2.dictionary;
29628
      });
29629
    }
29630
  }, {
29631
    key: "setParent",
29632
    value: function setParent(parentRef) {
29633
      if (this.dictionary.data.P) {
29634
        throw new Error("Structure element added to more than one parent");
29635
      }
29636
      this.dictionary.data.P = parentRef;
29637
      this._flush();
29638
    }
29639
  }, {
29640
    key: "setAttached",
29641
    value: function setAttached() {
29642
      var _this3 = this;
29643
      if (this._attached) {
29644
        return;
29645
      }
29646
      this._children.forEach(function (child, index) {
29647
        if (child instanceof PDFStructureElement) {
29648
          child.setAttached();
29649
        }
29650
        if (typeof child === 'function') {
29651
          _this3._children[index] = _this3._contentForClosure(child);
29652
        }
29653
      });
29654
      this._attached = true;
29655
      this._flush();
29656
    }
29657
  }, {
29658
    key: "end",
29659
    value: function end() {
29660
      if (this._ended) {
29661
        return;
29662
      }
29663
      this._children.filter(function (child) {
29664
        return child instanceof PDFStructureElement;
29665
      }).forEach(function (child) {
29666
        return child.end();
29667
      });
29668
      this._ended = true;
29669
      this._flush();
29670
    }
29671
  }, {
29672
    key: "_isValidChild",
29673
    value: function _isValidChild(child) {
29674
      return child instanceof PDFStructureElement || child instanceof PDFStructureContent || typeof child === 'function';
29675
    }
29676
  }, {
29677
    key: "_contentForClosure",
29678
    value: function _contentForClosure(closure) {
29679
      var content = this.document.markStructureContent(this.dictionary.data.S);
29680
      closure();
29681
      this.document.endMarkedContent();
29682
      this._addContentToParentTree(content);
29683
      return content;
29684
    }
29685
  }, {
29686
    key: "_isFlushable",
29687
    value: function _isFlushable() {
29688
      if (!this.dictionary.data.P || !this._ended) {
29689
        return false;
29690
      }
29691
      return this._children.every(function (child) {
29692
        if (typeof child === 'function') {
29693
          return false;
29694
        }
29695
        if (child instanceof PDFStructureElement) {
29696
          return child._isFlushable();
29697
        }
29698
        return true;
29699
      });
29700
    }
29701
  }, {
29702
    key: "_flush",
29703
    value: function _flush() {
29704
      var _this4 = this;
29705
      if (this._flushed || !this._isFlushable()) {
29706
        return;
29707
      }
29708
      this.dictionary.data.K = [];
29709
      this._children.forEach(function (child) {
29710
        return _this4._flushChild(child);
29711
      });
29712
      this.dictionary.end(); // free memory used by children; the dictionary itself may still be
29713
      // referenced by a parent structure element or root, but we can
29714
      // at least trim the tree here
29715
29716
      this._children = [];
29717
      this.dictionary.data.K = null;
29718
      this._flushed = true;
29719
    }
29720
  }, {
29721
    key: "_flushChild",
29722
    value: function _flushChild(child) {
29723
      var _this5 = this;
29724
      if (child instanceof PDFStructureElement) {
29725
        this.dictionary.data.K.push(child.dictionary);
29726
      }
29727
      if (child instanceof PDFStructureContent) {
29728
        child.refs.forEach(function (_ref2) {
29729
          var pageRef = _ref2.pageRef,
29730
            mcid = _ref2.mcid;
29731
          if (!_this5.dictionary.data.Pg) {
29732
            _this5.dictionary.data.Pg = pageRef;
29733
          }
29734
          if (_this5.dictionary.data.Pg === pageRef) {
29735
            _this5.dictionary.data.K.push(mcid);
29736
          } else {
29737
            _this5.dictionary.data.K.push({
29738
              Type: "MCR",
29739
              Pg: pageRef,
29740
              MCID: mcid
29741
            });
29742
          }
29743
        });
29744
      }
29745
    }
29746
  }]);
29747
  return PDFStructureElement;
29748
}();
29749
var PDFNumberTree = /*#__PURE__*/function (_PDFTree) {
29750
  _inherits(PDFNumberTree, _PDFTree);
29751
  var _super = _createSuper(PDFNumberTree);
29752
  function PDFNumberTree() {
29753
    _classCallCheck(this, PDFNumberTree);
29754
    return _super.apply(this, arguments);
29755
  }
29756
  _createClass(PDFNumberTree, [{
29757
    key: "_compareKeys",
29758
    value: function _compareKeys(a, b) {
29759
      return parseInt(a) - parseInt(b);
29760
    }
29761
  }, {
29762
    key: "_keysName",
29763
    value: function _keysName() {
29764
      return "Nums";
29765
    }
29766
  }, {
29767
    key: "_dataForKey",
29768
    value: function _dataForKey(k) {
29769
      return parseInt(k);
29770
    }
29771
  }]);
29772
  return PDFNumberTree;
29773
}(PDFTree);
29774
var MarkingsMixin = {
29775
  initMarkings: function initMarkings(options) {
29776
    this.structChildren = [];
29777
    if (options.tagged) {
29778
      this.getMarkInfoDictionary().data.Marked = true;
29779
      this.getStructTreeRoot();
29780
    }
29781
  },
29782
  markContent: function markContent(tag) {
29783
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
29784
    if (tag === 'Artifact' || options && options.mcid) {
29785
      var toClose = 0;
29786
      this.page.markings.forEach(function (marking) {
29787
        if (toClose || marking.structContent || marking.tag === 'Artifact') {
29788
          toClose++;
29789
        }
29790
      });
29791
      while (toClose--) {
29792
        this.endMarkedContent();
29793
      }
29794
    }
29795
    if (!options) {
29796
      this.page.markings.push({
29797
        tag: tag
29798
      });
29799
      this.addContent("/".concat(tag, " BMC"));
29800
      return this;
29801
    }
29802
    this.page.markings.push({
29803
      tag: tag,
29804
      options: options
29805
    });
29806
    var dictionary = {};
29807
    if (typeof options.mcid !== 'undefined') {
29808
      dictionary.MCID = options.mcid;
29809
    }
29810
    if (tag === 'Artifact') {
29811
      if (typeof options.type === 'string') {
29812
        dictionary.Type = options.type;
29813
      }
29814
      if (Array.isArray(options.bbox)) {
29815
        dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3], options.bbox[2], this.page.height - options.bbox[1]];
29816
      }
29817
      if (Array.isArray(options.attached) && options.attached.every(function (val) {
29818
        return typeof val === 'string';
29819
      })) {
29820
        dictionary.Attached = options.attached;
29821
      }
29822
    }
29823
    if (tag === 'Span') {
29824
      if (options.lang) {
29825
        dictionary.Lang = new String(options.lang);
29826
      }
29827
      if (options.alt) {
29828
        dictionary.Alt = new String(options.alt);
29829
      }
29830
      if (options.expanded) {
29831
        dictionary.E = new String(options.expanded);
29832
      }
29833
      if (options.actual) {
29834
        dictionary.ActualText = new String(options.actual);
29835
      }
29836
    }
29837
    this.addContent("/".concat(tag, " ").concat(PDFObject.convert(dictionary), " BDC"));
29838
    return this;
29839
  },
29840
  markStructureContent: function markStructureContent(tag) {
29841
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
29842
    var pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);
29843
    var mcid = pageStructParents.length;
29844
    pageStructParents.push(null);
29845
    this.markContent(tag, _objectSpread2(_objectSpread2({}, options), {}, {
29846
      mcid: mcid
29847
    }));
29848
    var structContent = new PDFStructureContent(this.page.dictionary, mcid);
29849
    this.page.markings.slice(-1)[0].structContent = structContent;
29850
    return structContent;
29851
  },
29852
  endMarkedContent: function endMarkedContent() {
29853
    this.page.markings.pop();
29854
    this.addContent('EMC');
29855
    return this;
29856
  },
29857
  struct: function struct(type) {
29858
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
29859
    var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
29860
    return new PDFStructureElement(this, type, options, children);
29861
  },
29862
  addStructure: function addStructure(structElem) {
29863
    var structTreeRoot = this.getStructTreeRoot();
29864
    structElem.setParent(structTreeRoot);
29865
    structElem.setAttached();
29866
    this.structChildren.push(structElem);
29867
    if (!structTreeRoot.data.K) {
29868
      structTreeRoot.data.K = [];
29869
    }
29870
    structTreeRoot.data.K.push(structElem.dictionary);
29871
    return this;
29872
  },
29873
  initPageMarkings: function initPageMarkings(pageMarkings) {
29874
    var _this = this;
29875
    pageMarkings.forEach(function (marking) {
29876
      if (marking.structContent) {
29877
        var structContent = marking.structContent;
29878
        var newStructContent = _this.markStructureContent(marking.tag, marking.options);
29879
        structContent.push(newStructContent);
29880
        _this.page.markings.slice(-1)[0].structContent = structContent;
29881
      } else {
29882
        _this.markContent(marking.tag, marking.options);
29883
      }
29884
    });
29885
  },
29886
  endPageMarkings: function endPageMarkings(page) {
29887
    var pageMarkings = page.markings;
29888
    pageMarkings.forEach(function () {
29889
      return page.write('EMC');
29890
    });
29891
    page.markings = [];
29892
    return pageMarkings;
29893
  },
29894
  getMarkInfoDictionary: function getMarkInfoDictionary() {
29895
    if (!this._root.data.MarkInfo) {
29896
      this._root.data.MarkInfo = this.ref({});
29897
    }
29898
    return this._root.data.MarkInfo;
29899
  },
29900
  getStructTreeRoot: function getStructTreeRoot() {
29901
    if (!this._root.data.StructTreeRoot) {
29902
      this._root.data.StructTreeRoot = this.ref({
29903
        Type: 'StructTreeRoot',
29904
        ParentTree: new PDFNumberTree(),
29905
        ParentTreeNextKey: 0
29906
      });
29907
    }
29908
    return this._root.data.StructTreeRoot;
29909
  },
29910
  getStructParentTree: function getStructParentTree() {
29911
    return this.getStructTreeRoot().data.ParentTree;
29912
  },
29913
  createStructParentTreeNextKey: function createStructParentTreeNextKey() {
29914
    // initialise the MarkInfo dictionary
29915
    this.getMarkInfoDictionary();
29916
    var structTreeRoot = this.getStructTreeRoot();
29917
    var key = structTreeRoot.data.ParentTreeNextKey++;
29918
    structTreeRoot.data.ParentTree.add(key, []);
29919
    return key;
29920
  },
29921
  endMarkings: function endMarkings() {
29922
    var structTreeRoot = this._root.data.StructTreeRoot;
29923
    if (structTreeRoot) {
29924
      structTreeRoot.end();
29925
      this.structChildren.forEach(function (structElem) {
29926
        return structElem.end();
29927
      });
29928
    }
29929
    if (this._root.data.MarkInfo) {
29930
      this._root.data.MarkInfo.end();
29931
    }
29932
  }
29933
};
29934
var FIELD_FLAGS = {
29935
  readOnly: 1,
29936
  required: 2,
29937
  noExport: 4,
29938
  multiline: 0x1000,
29939
  password: 0x2000,
29940
  toggleToOffButton: 0x4000,
29941
  radioButton: 0x8000,
29942
  pushButton: 0x10000,
29943
  combo: 0x20000,
29944
  edit: 0x40000,
29945
  sort: 0x80000,
29946
  multiSelect: 0x200000,
29947
  noSpell: 0x400000
29948
};
29949
var FIELD_JUSTIFY = {
29950
  left: 0,
29951
  center: 1,
29952
  right: 2
29953
};
29954
var VALUE_MAP = {
29955
  value: 'V',
29956
  defaultValue: 'DV'
29957
};
29958
var FORMAT_SPECIAL = {
29959
  zip: '0',
29960
  zipPlus4: '1',
29961
  zip4: '1',
29962
  phone: '2',
29963
  ssn: '3'
29964
};
29965
var FORMAT_DEFAULT = {
29966
  number: {
29967
    nDec: 0,
29968
    sepComma: false,
29969
    negStyle: 'MinusBlack',
29970
    currency: '',
29971
    currencyPrepend: true
29972
  },
29973
  percent: {
29974
    nDec: 0,
29975
    sepComma: false
29976
  }
29977
};
29978
var AcroFormMixin = {
29979
  /**
29980
   * Must call if adding AcroForms to a document. Must also call font() before
29981
   * this method to set the default font.
29982
   */
29983
  initForm: function initForm() {
29984
    if (!this._font) {
29985
      throw new Error('Must set a font before calling initForm method');
29986
    }
29987
    this._acroform = {
29988
      fonts: {},
29989
      defaultFont: this._font.name
29990
    };
29991
    this._acroform.fonts[this._font.id] = this._font.ref();
29992
    var data = {
29993
      Fields: [],
29994
      NeedAppearances: true,
29995
      DA: new String("/".concat(this._font.id, " 0 Tf 0 g")),
29996
      DR: {
29997
        Font: {}
29998
      }
29999
    };
30000
    data.DR.Font[this._font.id] = this._font.ref();
30001
    var AcroForm = this.ref(data);
30002
    this._root.data.AcroForm = AcroForm;
30003
    return this;
30004
  },
30005
  /**
30006
   * Called automatically by document.js
30007
   */
30008
  endAcroForm: function endAcroForm() {
30009
    var _this = this;
30010
    if (this._root.data.AcroForm) {
30011
      if (!Object.keys(this._acroform.fonts).length && !this._acroform.defaultFont) {
30012
        throw new Error('No fonts specified for PDF form');
30013
      }
30014
      var fontDict = this._root.data.AcroForm.data.DR.Font;
30015
      Object.keys(this._acroform.fonts).forEach(function (name) {
30016
        fontDict[name] = _this._acroform.fonts[name];
30017
      });
30018
      this._root.data.AcroForm.data.Fields.forEach(function (fieldRef) {
30019
        _this._endChild(fieldRef);
30020
      });
30021
      this._root.data.AcroForm.end();
30022
    }
30023
    return this;
30024
  },
30025
  _endChild: function _endChild(ref) {
30026
    var _this2 = this;
30027
    if (Array.isArray(ref.data.Kids)) {
30028
      ref.data.Kids.forEach(function (childRef) {
30029
        _this2._endChild(childRef);
30030
      });
30031
      ref.end();
30032
    }
30033
    return this;
30034
  },
30035
  /**
30036
   * Creates and adds a form field to the document. Form fields are intermediate
30037
   * nodes in a PDF form that are used to specify form name heirarchy and form
30038
   * value defaults.
30039
   * @param {string} name - field name (T attribute in field dictionary)
30040
   * @param {object} options  - other attributes to include in field dictionary
30041
   */
30042
  formField: function formField(name) {
30043
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
30044
    var fieldDict = this._fieldDict(name, null, options);
30045
    var fieldRef = this.ref(fieldDict);
30046
    this._addToParent(fieldRef);
30047
    return fieldRef;
30048
  },
30049
  /**
30050
   * Creates and adds a Form Annotation to the document. Form annotations are
30051
   * called Widget annotations internally within a PDF file.
30052
   * @param {string} name - form field name (T attribute of widget annotation
30053
   * dictionary)
30054
   * @param {number} x
30055
   * @param {number} y
30056
   * @param {number} w
30057
   * @param {number} h
30058
   * @param {object} options
30059
   */
30060
  formAnnotation: function formAnnotation(name, type, x, y, w, h) {
30061
    var options = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
30062
    var fieldDict = this._fieldDict(name, type, options);
30063
    fieldDict.Subtype = 'Widget';
30064
    if (fieldDict.F === undefined) {
30065
      fieldDict.F = 4; // print the annotation
30066
    } // Add Field annot to page, and get it's ref
30067
30068
    this.annotate(x, y, w, h, fieldDict);
30069
    var annotRef = this.page.annotations[this.page.annotations.length - 1];
30070
    return this._addToParent(annotRef);
30071
  },
30072
  formText: function formText(name, x, y, w, h) {
30073
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
30074
    return this.formAnnotation(name, 'text', x, y, w, h, options);
30075
  },
30076
  formPushButton: function formPushButton(name, x, y, w, h) {
30077
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
30078
    return this.formAnnotation(name, 'pushButton', x, y, w, h, options);
30079
  },
30080
  formCombo: function formCombo(name, x, y, w, h) {
30081
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
30082
    return this.formAnnotation(name, 'combo', x, y, w, h, options);
30083
  },
30084
  formList: function formList(name, x, y, w, h) {
30085
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
30086
    return this.formAnnotation(name, 'list', x, y, w, h, options);
30087
  },
30088
  formRadioButton: function formRadioButton(name, x, y, w, h) {
30089
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
30090
    return this.formAnnotation(name, 'radioButton', x, y, w, h, options);
30091
  },
30092
  formCheckbox: function formCheckbox(name, x, y, w, h) {
30093
    var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
30094
    return this.formAnnotation(name, 'checkbox', x, y, w, h, options);
30095
  },
30096
  _addToParent: function _addToParent(fieldRef) {
30097
    var parent = fieldRef.data.Parent;
30098
    if (parent) {
30099
      if (!parent.data.Kids) {
30100
        parent.data.Kids = [];
30101
      }
30102
      parent.data.Kids.push(fieldRef);
30103
    } else {
30104
      this._root.data.AcroForm.data.Fields.push(fieldRef);
30105
    }
30106
    return this;
30107
  },
30108
  _fieldDict: function _fieldDict(name, type) {
30109
    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
30110
    if (!this._acroform) {
30111
      throw new Error('Call document.initForms() method before adding form elements to document');
30112
    }
30113
    var opts = Object.assign({}, options);
30114
    if (type !== null) {
30115
      opts = this._resolveType(type, options);
30116
    }
30117
    opts = this._resolveFlags(opts);
30118
    opts = this._resolveJustify(opts);
30119
    opts = this._resolveFont(opts);
30120
    opts = this._resolveStrings(opts);
30121
    opts = this._resolveColors(opts);
30122
    opts = this._resolveFormat(opts);
30123
    opts.T = new String(name);
30124
    if (opts.parent) {
30125
      opts.Parent = opts.parent;
30126
      delete opts.parent;
30127
    }
30128
    return opts;
30129
  },
30130
  _resolveType: function _resolveType(type, opts) {
30131
    if (type === 'text') {
30132
      opts.FT = 'Tx';
30133
    } else if (type === 'pushButton') {
30134
      opts.FT = 'Btn';
30135
      opts.pushButton = true;
30136
    } else if (type === 'radioButton') {
30137
      opts.FT = 'Btn';
30138
      opts.radioButton = true;
30139
    } else if (type === 'checkbox') {
30140
      opts.FT = 'Btn';
30141
    } else if (type === 'combo') {
30142
      opts.FT = 'Ch';
30143
      opts.combo = true;
30144
    } else if (type === 'list') {
30145
      opts.FT = 'Ch';
30146
    } else {
30147
      throw new Error("Invalid form annotation type '".concat(type, "'"));
30148
    }
30149
    return opts;
30150
  },
30151
  _resolveFormat: function _resolveFormat(opts) {
30152
    var f = opts.format;
30153
    if (f && f.type) {
30154
      var fnKeystroke;
30155
      var fnFormat;
30156
      var params = '';
30157
      if (FORMAT_SPECIAL[f.type] !== undefined) {
30158
        fnKeystroke = "AFSpecial_Keystroke";
30159
        fnFormat = "AFSpecial_Format";
30160
        params = FORMAT_SPECIAL[f.type];
30161
      } else {
30162
        var format = f.type.charAt(0).toUpperCase() + f.type.slice(1);
30163
        fnKeystroke = "AF".concat(format, "_Keystroke");
30164
        fnFormat = "AF".concat(format, "_Format");
30165
        if (f.type === 'date') {
30166
          fnKeystroke += 'Ex';
30167
          params = String(f.param);
30168
        } else if (f.type === 'time') {
30169
          params = String(f.param);
30170
        } else if (f.type === 'number') {
30171
          var p = Object.assign({}, FORMAT_DEFAULT.number, f);
30172
          params = String([String(p.nDec), p.sepComma ? '0' : '1', '"' + p.negStyle + '"', 'null', '"' + p.currency + '"', String(p.currencyPrepend)].join(','));
30173
        } else if (f.type === 'percent') {
30174
          var _p = Object.assign({}, FORMAT_DEFAULT.percent, f);
30175
          params = String([String(_p.nDec), _p.sepComma ? '0' : '1'].join(','));
30176
        }
30177
      }
30178
      opts.AA = opts.AA ? opts.AA : {};
30179
      opts.AA.K = {
30180
        S: 'JavaScript',
30181
        JS: new String("".concat(fnKeystroke, "(").concat(params, ");"))
30182
      };
30183
      opts.AA.F = {
30184
        S: 'JavaScript',
30185
        JS: new String("".concat(fnFormat, "(").concat(params, ");"))
30186
      };
30187
    }
30188
    delete opts.format;
30189
    return opts;
30190
  },
30191
  _resolveColors: function _resolveColors(opts) {
30192
    var color = this._normalizeColor(opts.backgroundColor);
30193
    if (color) {
30194
      if (!opts.MK) {
30195
        opts.MK = {};
30196
      }
30197
      opts.MK.BG = color;
30198
    }
30199
    color = this._normalizeColor(opts.borderColor);
30200
    if (color) {
30201
      if (!opts.MK) {
30202
        opts.MK = {};
30203
      }
30204
      opts.MK.BC = color;
30205
    }
30206
    delete opts.backgroundColor;
30207
    delete opts.borderColor;
30208
    return opts;
30209
  },
30210
  _resolveFlags: function _resolveFlags(options) {
30211
    var result = 0;
30212
    Object.keys(options).forEach(function (key) {
30213
      if (FIELD_FLAGS[key]) {
30214
        result |= FIELD_FLAGS[key];
30215
        delete options[key];
30216
      }
30217
    });
30218
    if (result !== 0) {
30219
      options.Ff = options.Ff ? options.Ff : 0;
30220
      options.Ff |= result;
30221
    }
30222
    return options;
30223
  },
30224
  _resolveJustify: function _resolveJustify(options) {
30225
    var result = 0;
30226
    if (options.align !== undefined) {
30227
      if (typeof FIELD_JUSTIFY[options.align] === 'number') {
30228
        result = FIELD_JUSTIFY[options.align];
30229
      }
30230
      delete options.align;
30231
    }
30232
    if (result !== 0) {
30233
      options.Q = result; // default
30234
    }
30235
30236
    return options;
30237
  },
30238
  _resolveFont: function _resolveFont(options) {
30239
    // add current font to document-level AcroForm dict if necessary
30240
    if (this._acroform.fonts[this._font.id] === null) {
30241
      this._acroform.fonts[this._font.id] = this._font.ref();
30242
    } // add current font to field's resource dict (RD) if not the default acroform font
30243
30244
    if (this._acroform.defaultFont !== this._font.name) {
30245
      options.DR = {
30246
        Font: {}
30247
      }; // Get the fontSize option. If not set use auto sizing
30248
30249
      var fontSize = options.fontSize || 0;
30250
      options.DR.Font[this._font.id] = this._font.ref();
30251
      options.DA = new String("/".concat(this._font.id, " ").concat(fontSize, " Tf 0 g"));
30252
    }
30253
    return options;
30254
  },
30255
  _resolveStrings: function _resolveStrings(options) {
30256
    var select = [];
30257
    function appendChoices(a) {
30258
      if (Array.isArray(a)) {
30259
        for (var idx = 0; idx < a.length; idx++) {
30260
          if (typeof a[idx] === 'string') {
30261
            select.push(new String(a[idx]));
30262
          } else {
30263
            select.push(a[idx]);
30264
          }
30265
        }
30266
      }
30267
    }
30268
    appendChoices(options.Opt);
30269
    if (options.select) {
30270
      appendChoices(options.select);
30271
      delete options.select;
30272
    }
30273
    if (select.length) {
30274
      options.Opt = select;
30275
    }
30276
    Object.keys(VALUE_MAP).forEach(function (key) {
30277
      if (options[key] !== undefined) {
30278
        options[VALUE_MAP[key]] = options[key];
30279
        delete options[key];
30280
      }
30281
    });
30282
    ['V', 'DV'].forEach(function (key) {
30283
      if (typeof options[key] === 'string') {
30284
        options[key] = new String(options[key]);
30285
      }
30286
    });
30287
    if (options.MK && options.MK.CA) {
30288
      options.MK.CA = new String(options.MK.CA);
30289
    }
30290
    if (options.label) {
30291
      options.MK = options.MK ? options.MK : {};
30292
      options.MK.CA = new String(options.label);
30293
      delete options.label;
30294
    }
30295
    return options;
30296
  }
30297
};
30298
var AttachmentsMixin = {
30299
  /**
30300
   * Embed contents of `src` in PDF
30301
   * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file
30302
   * @param {object} options
30303
   *  * options.name: filename to be shown in PDF, will use `src` if none set
30304
   *  * options.type: filetype to be shown in PDF
30305
   *  * options.description: description to be shown in PDF
30306
   *  * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations
30307
   *  * options.creationDate: override creation date
30308
   *  * options.modifiedDate: override modified date
30309
   * @returns filespec reference
30310
   */
30311
  file: function file(src) {
30312
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
30313
    options.name = options.name || src;
30314
    var refBody = {
30315
      Type: 'EmbeddedFile',
30316
      Params: {}
30317
    };
30318
    var data;
30319
    if (!src) {
30320
      throw new Error('No src specified');
30321
    }
30322
    if (Buffer.isBuffer(src)) {
30323
      data = src;
30324
    } else if (src instanceof ArrayBuffer) {
30325
      data = Buffer.from(new Uint8Array(src));
30326
    } else {
30327
      var match;
30328
      if (match = /^data:(.*);base64,(.*)$/.exec(src)) {
30329
        if (match[1]) {
30330
          refBody.Subtype = match[1].replace('/', '#2F');
30331
        }
30332
        data = Buffer.from(match[2], 'base64');
30333
      } else {
30334
        data = fs.readFileSync(src);
30335
        if (!data) {
30336
          throw new Error("Could not read contents of file at filepath ".concat(src));
30337
        } // update CreationDate and ModDate
30338
30339
        var _fs$statSync = fs.statSync(src),
30340
          birthtime = _fs$statSync.birthtime,
30341
          ctime = _fs$statSync.ctime;
30342
        refBody.Params.CreationDate = birthtime;
30343
        refBody.Params.ModDate = ctime;
30344
      }
30345
    } // override creation date and modified date
30346
30347
    if (options.creationDate instanceof Date) {
30348
      refBody.Params.CreationDate = options.creationDate;
30349
    }
30350
    if (options.modifiedDate instanceof Date) {
30351
      refBody.Params.ModDate = options.modifiedDate;
30352
    } // add optional subtype
30353
30354
    if (options.type) {
30355
      refBody.Subtype = options.type.replace('/', '#2F');
30356
    } // add checksum and size information
30357
30358
    var checksum = _cryptoJs.default.MD5(_cryptoJs.default.lib.WordArray.create(new Uint8Array(data)));
30359
    refBody.Params.CheckSum = new String(checksum);
30360
    refBody.Params.Size = data.byteLength; // save some space when embedding the same file again
30361
    // if a file with the same name and metadata exists, reuse its reference
30362
30363
    var ref;
30364
    if (!this._fileRegistry) this._fileRegistry = {};
30365
    var file = this._fileRegistry[options.name];
30366
    if (file && isEqual(refBody, file)) {
30367
      ref = file.ref;
30368
    } else {
30369
      ref = this.ref(refBody);
30370
      ref.end(data);
30371
      this._fileRegistry[options.name] = _objectSpread2(_objectSpread2({}, refBody), {}, {
30372
        ref: ref
30373
      });
30374
    } // add filespec for embedded file
30375
30376
    var fileSpecBody = {
30377
      Type: 'Filespec',
30378
      F: new String(options.name),
30379
      EF: {
30380
        F: ref
30381
      },
30382
      UF: new String(options.name)
30383
    };
30384
    if (options.description) {
30385
      fileSpecBody.Desc = new String(options.description);
30386
    }
30387
    var filespec = this.ref(fileSpecBody);
30388
    filespec.end();
30389
    if (!options.hidden) {
30390
      this.addNamedEmbeddedFile(options.name, filespec);
30391
    }
30392
    return filespec;
30393
  }
30394
};
30395
/** check two embedded file metadata objects for equality */
30396
30397
function isEqual(a, b) {
30398
  return a.Subtype === b.Subtype && a.Params.CheckSum.toString() === b.Params.CheckSum.toString() && a.Params.Size === b.Params.Size && a.Params.CreationDate === b.Params.CreationDate && a.Params.ModDate === b.Params.ModDate;
30399
}
30400
var PDFDocument = /*#__PURE__*/function (_stream$Readable) {
30401
  _inherits(PDFDocument, _stream$Readable);
30402
  var _super = _createSuper(PDFDocument);
30403
  function PDFDocument() {
30404
    var _this;
30405
    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
30406
    _classCallCheck(this, PDFDocument);
30407
    _this = _super.call(this, options);
30408
    _this.options = options; // PDF version
30409
30410
    switch (options.pdfVersion) {
30411
      case '1.4':
30412
        _this.version = 1.4;
30413
        break;
30414
      case '1.5':
30415
        _this.version = 1.5;
30416
        break;
30417
      case '1.6':
30418
        _this.version = 1.6;
30419
        break;
30420
      case '1.7':
30421
      case '1.7ext3':
30422
        _this.version = 1.7;
30423
        break;
30424
      default:
30425
        _this.version = 1.3;
30426
        break;
30427
    } // Whether streams should be compressed
30428
30429
    _this.compress = _this.options.compress != null ? _this.options.compress : true;
30430
    _this._pageBuffer = [];
30431
    _this._pageBufferStart = 0; // The PDF object store
30432
30433
    _this._offsets = [];
30434
    _this._waiting = 0;
30435
    _this._ended = false;
30436
    _this._offset = 0;
30437
    var Pages = _this.ref({
30438
      Type: 'Pages',
30439
      Count: 0,
30440
      Kids: []
30441
    });
30442
    var Names = _this.ref({
30443
      Dests: new PDFNameTree()
30444
    });
30445
    _this._root = _this.ref({
30446
      Type: 'Catalog',
30447
      Pages: Pages,
30448
      Names: Names
30449
    });
30450
    if (_this.options.lang) {
30451
      _this._root.data.Lang = new String(_this.options.lang);
30452
    } // The current page
30453
30454
    _this.page = null; // Initialize mixins
30455
30456
    _this.initColor();
30457
    _this.initVector();
30458
    _this.initFonts(options.font);
30459
    _this.initText();
30460
    _this.initImages();
30461
    _this.initOutline();
30462
    _this.initMarkings(options); // Initialize the metadata
30463
30464
    _this.info = {
30465
      Producer: 'PDFKit',
30466
      Creator: 'PDFKit',
30467
      CreationDate: new Date()
30468
    };
30469
    if (_this.options.info) {
30470
      for (var key in _this.options.info) {
30471
        var val = _this.options.info[key];
30472
        _this.info[key] = val;
30473
      }
30474
    }
30475
    if (_this.options.displayTitle) {
30476
      _this._root.data.ViewerPreferences = _this.ref({
30477
        DisplayDocTitle: true
30478
      });
30479
    } // Generate file ID
30480
30481
    _this._id = PDFSecurity.generateFileID(_this.info); // Initialize security settings
30482
30483
    _this._security = PDFSecurity.create(_assertThisInitialized(_this), options); // Write the header
30484
    // PDF version
30485
30486
    _this._write("%PDF-".concat(_this.version)); // 4 binary chars, as recommended by the spec
30487
30488
    _this._write('%\xFF\xFF\xFF\xFF'); // Add the first page
30489
30490
    if (_this.options.autoFirstPage !== false) {
30491
      _this.addPage();
30492
    }
30493
    return _this;
30494
  }
30495
  _createClass(PDFDocument, [{
30496
    key: "addPage",
30497
    value: function addPage(options) {
30498
      if (options == null) {
30499
        options = this.options;
30500
      } // end the current page if needed
30501
30502
      if (!this.options.bufferPages) {
30503
        this.flushPages();
30504
      } // create a page object
30505
30506
      this.page = new PDFPage(this, options);
30507
      this._pageBuffer.push(this.page); // add the page to the object store
30508
30509
      var pages = this._root.data.Pages.data;
30510
      pages.Kids.push(this.page.dictionary);
30511
      pages.Count++; // reset x and y coordinates
30512
30513
      this.x = this.page.margins.left;
30514
      this.y = this.page.margins.top; // flip PDF coordinate system so that the origin is in
30515
      // the top left rather than the bottom left
30516
30517
      this._ctm = [1, 0, 0, 1, 0, 0];
30518
      this.transform(1, 0, 0, -1, 0, this.page.height);
30519
      this.emit('pageAdded');
30520
      return this;
30521
    }
30522
  }, {
30523
    key: "continueOnNewPage",
30524
    value: function continueOnNewPage(options) {
30525
      var pageMarkings = this.endPageMarkings(this.page);
30526
      this.addPage(options);
30527
      this.initPageMarkings(pageMarkings);
30528
      return this;
30529
    }
30530
  }, {
30531
    key: "bufferedPageRange",
30532
    value: function bufferedPageRange() {
30533
      return {
30534
        start: this._pageBufferStart,
30535
        count: this._pageBuffer.length
30536
      };
30537
    }
30538
  }, {
30539
    key: "switchToPage",
30540
    value: function switchToPage(n) {
30541
      var page;
30542
      if (!(page = this._pageBuffer[n - this._pageBufferStart])) {
30543
        throw new Error("switchToPage(".concat(n, ") out of bounds, current buffer covers pages ").concat(this._pageBufferStart, " to ").concat(this._pageBufferStart + this._pageBuffer.length - 1));
30544
      }
30545
      return this.page = page;
30546
    }
30547
  }, {
30548
    key: "flushPages",
30549
    value: function flushPages() {
30550
      // this local variable exists so we're future-proof against
30551
      // reentrant calls to flushPages.
30552
      var pages = this._pageBuffer;
30553
      this._pageBuffer = [];
30554
      this._pageBufferStart += pages.length;
30555
      var _iterator = _createForOfIteratorHelper(pages),
30556
        _step;
30557
      try {
30558
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
30559
          var page = _step.value;
30560
          this.endPageMarkings(page);
30561
          page.end();
30562
        }
30563
      } catch (err) {
30564
        _iterator.e(err);
30565
      } finally {
30566
        _iterator.f();
30567
      }
30568
    }
30569
  }, {
30570
    key: "addNamedDestination",
30571
    value: function addNamedDestination(name) {
30572
      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
30573
        args[_key - 1] = arguments[_key];
30574
      }
30575
      if (args.length === 0) {
30576
        args = ['XYZ', null, null, null];
30577
      }
30578
      if (args[0] === 'XYZ' && args[2] !== null) {
30579
        args[2] = this.page.height - args[2];
30580
      }
30581
      args.unshift(this.page.dictionary);
30582
      this._root.data.Names.data.Dests.add(name, args);
30583
    }
30584
  }, {
30585
    key: "addNamedEmbeddedFile",
30586
    value: function addNamedEmbeddedFile(name, ref) {
30587
      if (!this._root.data.Names.data.EmbeddedFiles) {
30588
        // disabling /Limits for this tree fixes attachments not showing in Adobe Reader
30589
        this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({
30590
          limits: false
30591
        });
30592
      } // add filespec to EmbeddedFiles
30593
30594
      this._root.data.Names.data.EmbeddedFiles.add(name, ref);
30595
    }
30596
  }, {
30597
    key: "addNamedJavaScript",
30598
    value: function addNamedJavaScript(name, js) {
30599
      if (!this._root.data.Names.data.JavaScript) {
30600
        this._root.data.Names.data.JavaScript = new PDFNameTree();
30601
      }
30602
      var data = {
30603
        JS: new String(js),
30604
        S: 'JavaScript'
30605
      };
30606
      this._root.data.Names.data.JavaScript.add(name, data);
30607
    }
30608
  }, {
30609
    key: "ref",
30610
    value: function ref(data) {
30611
      var ref = new PDFReference(this, this._offsets.length + 1, data);
30612
      this._offsets.push(null); // placeholder for this object's offset once it is finalized
30613
30614
      this._waiting++;
30615
      return ref;
30616
    }
30617
  }, {
30618
    key: "_read",
30619
    value: function _read() {} // do nothing, but this method is required by node
30620
  }, {
30621
    key: "_write",
30622
    value: function _write(data) {
30623
      if (!Buffer.isBuffer(data)) {
30624
        data = Buffer.from(data + '\n', 'binary');
30625
      }
30626
      this.push(data);
30627
      return this._offset += data.length;
30628
    }
30629
  }, {
30630
    key: "addContent",
30631
    value: function addContent(data) {
30632
      this.page.write(data);
30633
      return this;
30634
    }
30635
  }, {
30636
    key: "_refEnd",
30637
    value: function _refEnd(ref) {
30638
      this._offsets[ref.id - 1] = ref.offset;
30639
      if (--this._waiting === 0 && this._ended) {
30640
        this._finalize();
30641
        return this._ended = false;
30642
      }
30643
    }
30644
  }, {
30645
    key: "write",
30646
    value: function write(filename, fn) {
30647
      // print a deprecation warning with a stacktrace
30648
      var err = new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream.");
30649
      console.warn(err.stack);
30650
      this.pipe(fs.createWriteStream(filename));
30651
      this.end();
30652
      return this.once('end', fn);
30653
    }
30654
  }, {
30655
    key: "end",
30656
    value: function end() {
30657
      this.flushPages();
30658
      this._info = this.ref();
30659
      for (var key in this.info) {
30660
        var val = this.info[key];
30661
        if (typeof val === 'string') {
30662
          val = new String(val);
30663
        }
30664
        var entry = this.ref(val);
30665
        entry.end();
30666
        this._info.data[key] = entry;
30667
      }
30668
      this._info.end();
30669
      for (var name in this._fontFamilies) {
30670
        var font = this._fontFamilies[name];
30671
        font.finalize();
30672
      }
30673
      this.endOutline();
30674
      this.endMarkings();
30675
      this._root.end();
30676
      this._root.data.Pages.end();
30677
      this._root.data.Names.end();
30678
      this.endAcroForm();
30679
      if (this._root.data.ViewerPreferences) {
30680
        this._root.data.ViewerPreferences.end();
30681
      }
30682
      if (this._security) {
30683
        this._security.end();
30684
      }
30685
      if (this._waiting === 0) {
30686
        return this._finalize();
30687
      } else {
30688
        return this._ended = true;
30689
      }
30690
    }
30691
  }, {
30692
    key: "_finalize",
30693
    value: function _finalize() {
30694
      // generate xref
30695
      var xRefOffset = this._offset;
30696
      this._write('xref');
30697
      this._write("0 ".concat(this._offsets.length + 1));
30698
      this._write('0000000000 65535 f ');
30699
      var _iterator2 = _createForOfIteratorHelper(this._offsets),
30700
        _step2;
30701
      try {
30702
        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
30703
          var offset = _step2.value;
30704
          offset = "0000000000".concat(offset).slice(-10);
30705
          this._write(offset + ' 00000 n ');
30706
        } // trailer
30707
      } catch (err) {
30708
        _iterator2.e(err);
30709
      } finally {
30710
        _iterator2.f();
30711
      }
30712
      var trailer = {
30713
        Size: this._offsets.length + 1,
30714
        Root: this._root,
30715
        Info: this._info,
30716
        ID: [this._id, this._id]
30717
      };
30718
      if (this._security) {
30719
        trailer.Encrypt = this._security.dictionary;
30720
      }
30721
      this._write('trailer');
30722
      this._write(PDFObject.convert(trailer));
30723
      this._write('startxref');
30724
      this._write("".concat(xRefOffset));
30725
      this._write('%%EOF'); // end the stream
30726
30727
      return this.push(null);
30728
    }
30729
  }, {
30730
    key: "toString",
30731
    value: function toString() {
30732
      return '[object PDFDocument]';
30733
    }
30734
  }]);
30735
  return PDFDocument;
30736
}(_stream.default.Readable);
30737
var mixin = function mixin(methods) {
30738
  Object.assign(PDFDocument.prototype, methods);
30739
};
30740
mixin(ColorMixin);
30741
mixin(VectorMixin);
30742
mixin(FontsMixin);
30743
mixin(TextMixin);
30744
mixin(ImagesMixin);
30745
mixin(AnnotationsMixin);
30746
mixin(OutlineMixin);
30747
mixin(MarkingsMixin);
30748
mixin(AcroFormMixin);
30749
mixin(AttachmentsMixin);
30750
PDFDocument.LineWrapper = LineWrapper;
30751
var _default = PDFDocument;
30752
exports["default"] = _default;
30753
30754
/***/ }),
30755
30756
/***/ 4559:
30757
/***/ (function(module, exports, __webpack_require__) {
30758
30759
"use strict";
30760
30761
30762
__webpack_require__(3290);
30763
/* eslint-disable node/no-deprecated-api */
30764
var buffer = __webpack_require__(8823);
30765
var Buffer = buffer.Buffer;
30766
30767
// alternative to using Object.keys for old browsers
30768
function copyProps(src, dst) {
30769
  for (var key in src) {
30770
    dst[key] = src[key];
30771
  }
30772
}
30773
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
30774
  module.exports = buffer;
30775
} else {
30776
  // Copy properties from require('buffer')
30777
  copyProps(buffer, exports);
30778
  exports.Buffer = SafeBuffer;
30779
}
30780
function SafeBuffer(arg, encodingOrOffset, length) {
30781
  return Buffer(arg, encodingOrOffset, length);
30782
}
30783
30784
// Copy static methods from Buffer
30785
copyProps(Buffer, SafeBuffer);
30786
SafeBuffer.from = function (arg, encodingOrOffset, length) {
30787
  if (typeof arg === 'number') {
30788
    throw new TypeError('Argument must not be a number');
30789
  }
30790
  return Buffer(arg, encodingOrOffset, length);
30791
};
30792
SafeBuffer.alloc = function (size, fill, encoding) {
30793
  if (typeof size !== 'number') {
30794
    throw new TypeError('Argument must be a number');
30795
  }
30796
  var buf = Buffer(size);
30797
  if (fill !== undefined) {
30798
    if (typeof encoding === 'string') {
30799
      buf.fill(fill, encoding);
30800
    } else {
30801
      buf.fill(fill);
30802
    }
30803
  } else {
30804
    buf.fill(0);
30805
  }
30806
  return buf;
30807
};
30808
SafeBuffer.allocUnsafe = function (size) {
30809
  if (typeof size !== 'number') {
30810
    throw new TypeError('Argument must be a number');
30811
  }
30812
  return Buffer(size);
30813
};
30814
SafeBuffer.allocUnsafeSlow = function (size) {
30815
  if (typeof size !== 'number') {
30816
    throw new TypeError('Argument must be a number');
30817
  }
30818
  return buffer.SlowBuffer(size);
30819
};
30820
30821
/***/ }),
30822
30823
/***/ 4781:
30824
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
30825
30826
"use strict";
30827
30828
30829
__webpack_require__(7042);
30830
__webpack_require__(6992);
30831
__webpack_require__(1539);
30832
__webpack_require__(2472);
30833
__webpack_require__(2990);
30834
__webpack_require__(8927);
30835
__webpack_require__(3105);
30836
__webpack_require__(5035);
30837
__webpack_require__(4345);
30838
__webpack_require__(7174);
30839
__webpack_require__(2846);
30840
__webpack_require__(4731);
30841
__webpack_require__(7209);
30842
__webpack_require__(6319);
30843
__webpack_require__(8867);
30844
__webpack_require__(7789);
30845
__webpack_require__(3739);
30846
__webpack_require__(9368);
30847
__webpack_require__(4483);
30848
__webpack_require__(2056);
30849
__webpack_require__(3462);
30850
__webpack_require__(678);
30851
__webpack_require__(7462);
30852
__webpack_require__(3824);
30853
__webpack_require__(5021);
30854
__webpack_require__(2974);
30855
__webpack_require__(5016);
30856
__webpack_require__(9135);
30857
var inflate = __webpack_require__(311);
30858
var _require = __webpack_require__(1753),
30859
  swap32LE = _require.swap32LE;
30860
30861
// Shift size for getting the index-1 table offset.
30862
var SHIFT_1 = 6 + 5;
30863
30864
// Shift size for getting the index-2 table offset.
30865
var SHIFT_2 = 5;
30866
30867
// Difference between the two shift sizes,
30868
// for getting an index-1 offset from an index-2 offset. 6=11-5
30869
var SHIFT_1_2 = SHIFT_1 - SHIFT_2;
30870
30871
// Number of index-1 entries for the BMP. 32=0x20
30872
// This part of the index-1 table is omitted from the serialized form.
30873
var OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;
30874
30875
// Number of entries in an index-2 block. 64=0x40
30876
var INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;
30877
30878
// Mask for getting the lower bits for the in-index-2-block offset. */
30879
var INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;
30880
30881
// Shift size for shifting left the index array values.
30882
// Increases possible data size with 16-bit index values at the cost
30883
// of compactability.
30884
// This requires data blocks to be aligned by DATA_GRANULARITY.
30885
var INDEX_SHIFT = 2;
30886
30887
// Number of entries in a data block. 32=0x20
30888
var DATA_BLOCK_LENGTH = 1 << SHIFT_2;
30889
30890
// Mask for getting the lower bits for the in-data-block offset.
30891
var DATA_MASK = DATA_BLOCK_LENGTH - 1;
30892
30893
// The part of the index-2 table for U+D800..U+DBFF stores values for
30894
// lead surrogate code _units_ not code _points_.
30895
// Values for lead surrogate code _points_ are indexed with this portion of the table.
30896
// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)
30897
var LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;
30898
var LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;
30899
30900
// Count the lengths of both BMP pieces. 2080=0x820
30901
var INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;
30902
30903
// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
30904
// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.
30905
var UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;
30906
var UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8
30907
30908
// The index-1 table, only used for supplementary code points, at offset 2112=0x840.
30909
// Variable length, for code points up to highStart, where the last single-value range starts.
30910
// Maximum length 512=0x200=0x100000>>SHIFT_1.
30911
// (For 0x100000 supplementary code points U+10000..U+10ffff.)
30912
//
30913
// The part of the index-2 table for supplementary code points starts
30914
// after this index-1 table.
30915
//
30916
// Both the index-1 table and the following part of the index-2 table
30917
// are omitted completely if there is only BMP data.
30918
var INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;
30919
30920
// The alignment size of a data block. Also the granularity for compaction.
30921
var DATA_GRANULARITY = 1 << INDEX_SHIFT;
30922
var UnicodeTrie = /*#__PURE__*/function () {
30923
  function UnicodeTrie(data) {
30924
    var isBuffer = typeof data.readUInt32BE === 'function' && typeof data.slice === 'function';
30925
    if (isBuffer || data instanceof Uint8Array) {
30926
      // read binary format
30927
      var uncompressedLength;
30928
      if (isBuffer) {
30929
        this.highStart = data.readUInt32LE(0);
30930
        this.errorValue = data.readUInt32LE(4);
30931
        uncompressedLength = data.readUInt32LE(8);
30932
        data = data.slice(12);
30933
      } else {
30934
        var view = new DataView(data.buffer);
30935
        this.highStart = view.getUint32(0, true);
30936
        this.errorValue = view.getUint32(4, true);
30937
        uncompressedLength = view.getUint32(8, true);
30938
        data = data.subarray(12);
30939
      }
30940
30941
      // double inflate the actual trie data
30942
      data = inflate(data, new Uint8Array(uncompressedLength));
30943
      data = inflate(data, new Uint8Array(uncompressedLength));
30944
30945
      // swap bytes from little-endian
30946
      swap32LE(data);
30947
      this.data = new Uint32Array(data.buffer);
30948
    } else {
30949
      // pre-parsed data
30950
      var _data = data;
30951
      this.data = _data.data;
30952
      this.highStart = _data.highStart;
30953
      this.errorValue = _data.errorValue;
30954
    }
30955
  }
30956
  var _proto = UnicodeTrie.prototype;
30957
  _proto.get = function get(codePoint) {
30958
    var index;
30959
    if (codePoint < 0 || codePoint > 0x10ffff) {
30960
      return this.errorValue;
30961
    }
30962
    if (codePoint < 0xd800 || codePoint > 0xdbff && codePoint <= 0xffff) {
30963
      // Ordinary BMP code point, excluding leading surrogates.
30964
      // BMP uses a single level lookup.  BMP index starts at offset 0 in the index.
30965
      // data is stored in the index array itself.
30966
      index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);
30967
      return this.data[index];
30968
    }
30969
    if (codePoint <= 0xffff) {
30970
      // Lead Surrogate Code Point.  A Separate index section is stored for
30971
      // lead surrogate code units and code points.
30972
      //   The main index has the code unit data.
30973
      //   For this function, we need the code point data.
30974
      index = (this.data[LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);
30975
      return this.data[index];
30976
    }
30977
    if (codePoint < this.highStart) {
30978
      // Supplemental code point, use two-level lookup.
30979
      index = this.data[INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> SHIFT_1)];
30980
      index = this.data[index + (codePoint >> SHIFT_2 & INDEX_2_MASK)];
30981
      index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);
30982
      return this.data[index];
30983
    }
30984
    return this.data[this.data.length - DATA_GRANULARITY];
30985
  };
30986
  return UnicodeTrie;
30987
}();
30988
module.exports = UnicodeTrie;
30989
30990
/***/ }),
30991
30992
/***/ 1753:
30993
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
30994
30995
"use strict";
30996
30997
30998
__webpack_require__(6992);
30999
__webpack_require__(1539);
31000
__webpack_require__(2472);
31001
__webpack_require__(2990);
31002
__webpack_require__(8927);
31003
__webpack_require__(3105);
31004
__webpack_require__(5035);
31005
__webpack_require__(4345);
31006
__webpack_require__(7174);
31007
__webpack_require__(2846);
31008
__webpack_require__(4731);
31009
__webpack_require__(7209);
31010
__webpack_require__(6319);
31011
__webpack_require__(8867);
31012
__webpack_require__(7789);
31013
__webpack_require__(3739);
31014
__webpack_require__(9368);
31015
__webpack_require__(4483);
31016
__webpack_require__(2056);
31017
__webpack_require__(3462);
31018
__webpack_require__(678);
31019
__webpack_require__(7462);
31020
__webpack_require__(3824);
31021
__webpack_require__(5021);
31022
__webpack_require__(2974);
31023
__webpack_require__(5016);
31024
__webpack_require__(9135);
31025
var isBigEndian = new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12;
31026
var swap = function swap(b, n, m) {
31027
  var i = b[n];
31028
  b[n] = b[m];
31029
  b[m] = i;
31030
};
31031
var swap32 = function swap32(array) {
31032
  var len = array.length;
31033
  for (var i = 0; i < len; i += 4) {
31034
    swap(array, i, i + 3);
31035
    swap(array, i + 1, i + 2);
31036
  }
31037
};
31038
var swap32LE = function swap32LE(array) {
31039
  if (isBigEndian) {
31040
    swap32(array);
31041
  }
31042
};
31043
module.exports = {
31044
  swap32LE: swap32LE
31045
};
31046
31047
/***/ }),
31048
31049
/***/ 8071:
31050
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
31051
31052
"use strict";
31053
31054
31055
var SVGtoPDF = __webpack_require__(8519);
31056
module.exports = SVGtoPDF;
31057
31058
/***/ }),
31059
31060
/***/ 8519:
31061
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
31062
31063
"use strict";
31064
/* module decorator */ module = __webpack_require__.nmd(module);
31065
31066
31067
__webpack_require__(8309);
31068
__webpack_require__(7941);
31069
__webpack_require__(3210);
31070
__webpack_require__(4916);
31071
__webpack_require__(4723);
31072
__webpack_require__(3728);
31073
__webpack_require__(5306);
31074
__webpack_require__(7042);
31075
__webpack_require__(9653);
31076
__webpack_require__(3123);
31077
__webpack_require__(2222);
31078
__webpack_require__(6992);
31079
__webpack_require__(1539);
31080
__webpack_require__(3948);
31081
__webpack_require__(9254);
31082
__webpack_require__(3290);
31083
var SVGtoPDF = function SVGtoPDF(doc, svg, x, y, options) {
31084
  "use strict";
31085
31086
  var NamedColors = {
31087
    aliceblue: [240, 248, 255],
31088
    antiquewhite: [250, 235, 215],
31089
    aqua: [0, 255, 255],
31090
    aquamarine: [127, 255, 212],
31091
    azure: [240, 255, 255],
31092
    beige: [245, 245, 220],
31093
    bisque: [255, 228, 196],
31094
    black: [0, 0, 0],
31095
    blanchedalmond: [255, 235, 205],
31096
    blue: [0, 0, 255],
31097
    blueviolet: [138, 43, 226],
31098
    brown: [165, 42, 42],
31099
    burlywood: [222, 184, 135],
31100
    cadetblue: [95, 158, 160],
31101
    chartreuse: [127, 255, 0],
31102
    chocolate: [210, 105, 30],
31103
    coral: [255, 127, 80],
31104
    cornflowerblue: [100, 149, 237],
31105
    cornsilk: [255, 248, 220],
31106
    crimson: [220, 20, 60],
31107
    cyan: [0, 255, 255],
31108
    darkblue: [0, 0, 139],
31109
    darkcyan: [0, 139, 139],
31110
    darkgoldenrod: [184, 134, 11],
31111
    darkgray: [169, 169, 169],
31112
    darkgrey: [169, 169, 169],
31113
    darkgreen: [0, 100, 0],
31114
    darkkhaki: [189, 183, 107],
31115
    darkmagenta: [139, 0, 139],
31116
    darkolivegreen: [85, 107, 47],
31117
    darkorange: [255, 140, 0],
31118
    darkorchid: [153, 50, 204],
31119
    darkred: [139, 0, 0],
31120
    darksalmon: [233, 150, 122],
31121
    darkseagreen: [143, 188, 143],
31122
    darkslateblue: [72, 61, 139],
31123
    darkslategray: [47, 79, 79],
31124
    darkslategrey: [47, 79, 79],
31125
    darkturquoise: [0, 206, 209],
31126
    darkviolet: [148, 0, 211],
31127
    deeppink: [255, 20, 147],
31128
    deepskyblue: [0, 191, 255],
31129
    dimgray: [105, 105, 105],
31130
    dimgrey: [105, 105, 105],
31131
    dodgerblue: [30, 144, 255],
31132
    firebrick: [178, 34, 34],
31133
    floralwhite: [255, 250, 240],
31134
    forestgreen: [34, 139, 34],
31135
    fuchsia: [255, 0, 255],
31136
    gainsboro: [220, 220, 220],
31137
    ghostwhite: [248, 248, 255],
31138
    gold: [255, 215, 0],
31139
    goldenrod: [218, 165, 32],
31140
    gray: [128, 128, 128],
31141
    grey: [128, 128, 128],
31142
    green: [0, 128, 0],
31143
    greenyellow: [173, 255, 47],
31144
    honeydew: [240, 255, 240],
31145
    hotpink: [255, 105, 180],
31146
    indianred: [205, 92, 92],
31147
    indigo: [75, 0, 130],
31148
    ivory: [255, 255, 240],
31149
    khaki: [240, 230, 140],
31150
    lavender: [230, 230, 250],
31151
    lavenderblush: [255, 240, 245],
31152
    lawngreen: [124, 252, 0],
31153
    lemonchiffon: [255, 250, 205],
31154
    lightblue: [173, 216, 230],
31155
    lightcoral: [240, 128, 128],
31156
    lightcyan: [224, 255, 255],
31157
    lightgoldenrodyellow: [250, 250, 210],
31158
    lightgray: [211, 211, 211],
31159
    lightgrey: [211, 211, 211],
31160
    lightgreen: [144, 238, 144],
31161
    lightpink: [255, 182, 193],
31162
    lightsalmon: [255, 160, 122],
31163
    lightseagreen: [32, 178, 170],
31164
    lightskyblue: [135, 206, 250],
31165
    lightslategray: [119, 136, 153],
31166
    lightslategrey: [119, 136, 153],
31167
    lightsteelblue: [176, 196, 222],
31168
    lightyellow: [255, 255, 224],
31169
    lime: [0, 255, 0],
31170
    limegreen: [50, 205, 50],
31171
    linen: [250, 240, 230],
31172
    magenta: [255, 0, 255],
31173
    maroon: [128, 0, 0],
31174
    mediumaquamarine: [102, 205, 170],
31175
    mediumblue: [0, 0, 205],
31176
    mediumorchid: [186, 85, 211],
31177
    mediumpurple: [147, 112, 219],
31178
    mediumseagreen: [60, 179, 113],
31179
    mediumslateblue: [123, 104, 238],
31180
    mediumspringgreen: [0, 250, 154],
31181
    mediumturquoise: [72, 209, 204],
31182
    mediumvioletred: [199, 21, 133],
31183
    midnightblue: [25, 25, 112],
31184
    mintcream: [245, 255, 250],
31185
    mistyrose: [255, 228, 225],
31186
    moccasin: [255, 228, 181],
31187
    navajowhite: [255, 222, 173],
31188
    navy: [0, 0, 128],
31189
    oldlace: [253, 245, 230],
31190
    olive: [128, 128, 0],
31191
    olivedrab: [107, 142, 35],
31192
    orange: [255, 165, 0],
31193
    orangered: [255, 69, 0],
31194
    orchid: [218, 112, 214],
31195
    palegoldenrod: [238, 232, 170],
31196
    palegreen: [152, 251, 152],
31197
    paleturquoise: [175, 238, 238],
31198
    palevioletred: [219, 112, 147],
31199
    papayawhip: [255, 239, 213],
31200
    peachpuff: [255, 218, 185],
31201
    peru: [205, 133, 63],
31202
    pink: [255, 192, 203],
31203
    plum: [221, 160, 221],
31204
    powderblue: [176, 224, 230],
31205
    purple: [128, 0, 128],
31206
    rebeccapurple: [102, 51, 153],
31207
    red: [255, 0, 0],
31208
    rosybrown: [188, 143, 143],
31209
    royalblue: [65, 105, 225],
31210
    saddlebrown: [139, 69, 19],
31211
    salmon: [250, 128, 114],
31212
    sandybrown: [244, 164, 96],
31213
    seagreen: [46, 139, 87],
31214
    seashell: [255, 245, 238],
31215
    sienna: [160, 82, 45],
31216
    silver: [192, 192, 192],
31217
    skyblue: [135, 206, 235],
31218
    slateblue: [106, 90, 205],
31219
    slategray: [112, 128, 144],
31220
    slategrey: [112, 128, 144],
31221
    snow: [255, 250, 250],
31222
    springgreen: [0, 255, 127],
31223
    steelblue: [70, 130, 180],
31224
    tan: [210, 180, 140],
31225
    teal: [0, 128, 128],
31226
    thistle: [216, 191, 216],
31227
    tomato: [255, 99, 71],
31228
    turquoise: [64, 224, 208],
31229
    violet: [238, 130, 238],
31230
    wheat: [245, 222, 179],
31231
    white: [255, 255, 255],
31232
    whitesmoke: [245, 245, 245],
31233
    yellow: [255, 255, 0]
31234
  };
31235
  var DefaultColors = {
31236
    black: [NamedColors.black, 1],
31237
    white: [NamedColors.white, 1],
31238
    transparent: [NamedColors.black, 0]
31239
  };
31240
  var Entities = {
31241
    quot: 34,
31242
    amp: 38,
31243
    lt: 60,
31244
    gt: 62,
31245
    apos: 39,
31246
    OElig: 338,
31247
    oelig: 339,
31248
    Scaron: 352,
31249
    scaron: 353,
31250
    Yuml: 376,
31251
    circ: 710,
31252
    tilde: 732,
31253
    ensp: 8194,
31254
    emsp: 8195,
31255
    thinsp: 8201,
31256
    zwnj: 8204,
31257
    zwj: 8205,
31258
    lrm: 8206,
31259
    rlm: 8207,
31260
    ndash: 8211,
31261
    mdash: 8212,
31262
    lsquo: 8216,
31263
    rsquo: 8217,
31264
    sbquo: 8218,
31265
    ldquo: 8220,
31266
    rdquo: 8221,
31267
    bdquo: 8222,
31268
    dagger: 8224,
31269
    Dagger: 8225,
31270
    permil: 8240,
31271
    lsaquo: 8249,
31272
    rsaquo: 8250,
31273
    euro: 8364,
31274
    nbsp: 160,
31275
    iexcl: 161,
31276
    cent: 162,
31277
    pound: 163,
31278
    curren: 164,
31279
    yen: 165,
31280
    brvbar: 166,
31281
    sect: 167,
31282
    uml: 168,
31283
    copy: 169,
31284
    ordf: 170,
31285
    laquo: 171,
31286
    not: 172,
31287
    shy: 173,
31288
    reg: 174,
31289
    macr: 175,
31290
    deg: 176,
31291
    plusmn: 177,
31292
    sup2: 178,
31293
    sup3: 179,
31294
    acute: 180,
31295
    micro: 181,
31296
    para: 182,
31297
    middot: 183,
31298
    cedil: 184,
31299
    sup1: 185,
31300
    ordm: 186,
31301
    raquo: 187,
31302
    frac14: 188,
31303
    frac12: 189,
31304
    frac34: 190,
31305
    iquest: 191,
31306
    Agrave: 192,
31307
    Aacute: 193,
31308
    Acirc: 194,
31309
    Atilde: 195,
31310
    Auml: 196,
31311
    Aring: 197,
31312
    AElig: 198,
31313
    Ccedil: 199,
31314
    Egrave: 200,
31315
    Eacute: 201,
31316
    Ecirc: 202,
31317
    Euml: 203,
31318
    Igrave: 204,
31319
    Iacute: 205,
31320
    Icirc: 206,
31321
    Iuml: 207,
31322
    ETH: 208,
31323
    Ntilde: 209,
31324
    Ograve: 210,
31325
    Oacute: 211,
31326
    Ocirc: 212,
31327
    Otilde: 213,
31328
    Ouml: 214,
31329
    times: 215,
31330
    Oslash: 216,
31331
    Ugrave: 217,
31332
    Uacute: 218,
31333
    Ucirc: 219,
31334
    Uuml: 220,
31335
    Yacute: 221,
31336
    THORN: 222,
31337
    szlig: 223,
31338
    agrave: 224,
31339
    aacute: 225,
31340
    acirc: 226,
31341
    atilde: 227,
31342
    auml: 228,
31343
    aring: 229,
31344
    aelig: 230,
31345
    ccedil: 231,
31346
    egrave: 232,
31347
    eacute: 233,
31348
    ecirc: 234,
31349
    euml: 235,
31350
    igrave: 236,
31351
    iacute: 237,
31352
    icirc: 238,
31353
    iuml: 239,
31354
    eth: 240,
31355
    ntilde: 241,
31356
    ograve: 242,
31357
    oacute: 243,
31358
    ocirc: 244,
31359
    otilde: 245,
31360
    ouml: 246,
31361
    divide: 247,
31362
    oslash: 248,
31363
    ugrave: 249,
31364
    uacute: 250,
31365
    ucirc: 251,
31366
    uuml: 252,
31367
    yacute: 253,
31368
    thorn: 254,
31369
    yuml: 255,
31370
    fnof: 402,
31371
    Alpha: 913,
31372
    Beta: 914,
31373
    Gamma: 915,
31374
    Delta: 916,
31375
    Epsilon: 917,
31376
    Zeta: 918,
31377
    Eta: 919,
31378
    Theta: 920,
31379
    Iota: 921,
31380
    Kappa: 922,
31381
    Lambda: 923,
31382
    Mu: 924,
31383
    Nu: 925,
31384
    Xi: 926,
31385
    Omicron: 927,
31386
    Pi: 928,
31387
    Rho: 929,
31388
    Sigma: 931,
31389
    Tau: 932,
31390
    Upsilon: 933,
31391
    Phi: 934,
31392
    Chi: 935,
31393
    Psi: 936,
31394
    Omega: 937,
31395
    alpha: 945,
31396
    beta: 946,
31397
    gamma: 947,
31398
    delta: 948,
31399
    epsilon: 949,
31400
    zeta: 950,
31401
    eta: 951,
31402
    theta: 952,
31403
    iota: 953,
31404
    kappa: 954,
31405
    lambda: 955,
31406
    mu: 956,
31407
    nu: 957,
31408
    xi: 958,
31409
    omicron: 959,
31410
    pi: 960,
31411
    rho: 961,
31412
    sigmaf: 962,
31413
    sigma: 963,
31414
    tau: 964,
31415
    upsilon: 965,
31416
    phi: 966,
31417
    chi: 967,
31418
    psi: 968,
31419
    omega: 969,
31420
    thetasym: 977,
31421
    upsih: 978,
31422
    piv: 982,
31423
    bull: 8226,
31424
    hellip: 8230,
31425
    prime: 8242,
31426
    Prime: 8243,
31427
    oline: 8254,
31428
    frasl: 8260,
31429
    weierp: 8472,
31430
    image: 8465,
31431
    real: 8476,
31432
    trade: 8482,
31433
    alefsym: 8501,
31434
    larr: 8592,
31435
    uarr: 8593,
31436
    rarr: 8594,
31437
    darr: 8595,
31438
    harr: 8596,
31439
    crarr: 8629,
31440
    lArr: 8656,
31441
    uArr: 8657,
31442
    rArr: 8658,
31443
    dArr: 8659,
31444
    hArr: 8660,
31445
    forall: 8704,
31446
    part: 8706,
31447
    exist: 8707,
31448
    empty: 8709,
31449
    nabla: 8711,
31450
    isin: 8712,
31451
    notin: 8713,
31452
    ni: 8715,
31453
    prod: 8719,
31454
    sum: 8721,
31455
    minus: 8722,
31456
    lowast: 8727,
31457
    radic: 8730,
31458
    prop: 8733,
31459
    infin: 8734,
31460
    ang: 8736,
31461
    and: 8743,
31462
    or: 8744,
31463
    cap: 8745,
31464
    cup: 8746,
31465
    int: 8747,
31466
    there4: 8756,
31467
    sim: 8764,
31468
    cong: 8773,
31469
    asymp: 8776,
31470
    ne: 8800,
31471
    equiv: 8801,
31472
    le: 8804,
31473
    ge: 8805,
31474
    sub: 8834,
31475
    sup: 8835,
31476
    nsub: 8836,
31477
    sube: 8838,
31478
    supe: 8839,
31479
    oplus: 8853,
31480
    otimes: 8855,
31481
    perp: 8869,
31482
    sdot: 8901,
31483
    lceil: 8968,
31484
    rceil: 8969,
31485
    lfloor: 8970,
31486
    rfloor: 8971,
31487
    lang: 9001,
31488
    rang: 9002,
31489
    loz: 9674,
31490
    spades: 9824,
31491
    clubs: 9827,
31492
    hearts: 9829,
31493
    diams: 9830
31494
  };
31495
  var PathArguments = {
31496
    A: 7,
31497
    a: 7,
31498
    C: 6,
31499
    c: 6,
31500
    H: 1,
31501
    h: 1,
31502
    L: 2,
31503
    l: 2,
31504
    M: 2,
31505
    m: 2,
31506
    Q: 4,
31507
    q: 4,
31508
    S: 4,
31509
    s: 4,
31510
    T: 2,
31511
    t: 2,
31512
    V: 1,
31513
    v: 1,
31514
    Z: 0,
31515
    z: 0
31516
  };
31517
  var PathFlags = {
31518
    A3: true,
31519
    A4: true,
31520
    a3: true,
31521
    a4: true
31522
  };
31523
  var Properties = {
31524
    'color': {
31525
      inherit: true,
31526
      initial: undefined
31527
    },
31528
    'visibility': {
31529
      inherit: true,
31530
      initial: 'visible',
31531
      values: {
31532
        'hidden': 'hidden',
31533
        'collapse': 'hidden',
31534
        'visible': 'visible'
31535
      }
31536
    },
31537
    'fill': {
31538
      inherit: true,
31539
      initial: DefaultColors.black
31540
    },
31541
    'stroke': {
31542
      inherit: true,
31543
      initial: 'none'
31544
    },
31545
    'stop-color': {
31546
      inherit: false,
31547
      initial: DefaultColors.black
31548
    },
31549
    'fill-opacity': {
31550
      inherit: true,
31551
      initial: 1
31552
    },
31553
    'stroke-opacity': {
31554
      inherit: true,
31555
      initial: 1
31556
    },
31557
    'stop-opacity': {
31558
      inherit: false,
31559
      initial: 1
31560
    },
31561
    'fill-rule': {
31562
      inherit: true,
31563
      initial: 'nonzero',
31564
      values: {
31565
        'nonzero': 'nonzero',
31566
        'evenodd': 'evenodd'
31567
      }
31568
    },
31569
    'clip-rule': {
31570
      inherit: true,
31571
      initial: 'nonzero',
31572
      values: {
31573
        'nonzero': 'nonzero',
31574
        'evenodd': 'evenodd'
31575
      }
31576
    },
31577
    'stroke-width': {
31578
      inherit: true,
31579
      initial: 1
31580
    },
31581
    'stroke-dasharray': {
31582
      inherit: true,
31583
      initial: []
31584
    },
31585
    'stroke-dashoffset': {
31586
      inherit: true,
31587
      initial: 0
31588
    },
31589
    'stroke-miterlimit': {
31590
      inherit: true,
31591
      initial: 4
31592
    },
31593
    'stroke-linejoin': {
31594
      inherit: true,
31595
      initial: 'miter',
31596
      values: {
31597
        'miter': 'miter',
31598
        'round': 'round',
31599
        'bevel': 'bevel'
31600
      }
31601
    },
31602
    'stroke-linecap': {
31603
      inherit: true,
31604
      initial: 'butt',
31605
      values: {
31606
        'butt': 'butt',
31607
        'round': 'round',
31608
        'square': 'square'
31609
      }
31610
    },
31611
    'font-size': {
31612
      inherit: true,
31613
      initial: 16,
31614
      values: {
31615
        'xx-small': 9,
31616
        'x-small': 10,
31617
        'small': 13,
31618
        'medium': 16,
31619
        'large': 18,
31620
        'x-large': 24,
31621
        'xx-large': 32
31622
      }
31623
    },
31624
    'font-family': {
31625
      inherit: true,
31626
      initial: 'sans-serif'
31627
    },
31628
    'font-weight': {
31629
      inherit: true,
31630
      initial: 'normal',
31631
      values: {
31632
        '600': 'bold',
31633
        '700': 'bold',
31634
        '800': 'bold',
31635
        '900': 'bold',
31636
        'bold': 'bold',
31637
        'bolder': 'bold',
31638
        '500': 'normal',
31639
        '400': 'normal',
31640
        '300': 'normal',
31641
        '200': 'normal',
31642
        '100': 'normal',
31643
        'normal': 'normal',
31644
        'lighter': 'normal'
31645
      }
31646
    },
31647
    'font-style': {
31648
      inherit: true,
31649
      initial: 'normal',
31650
      values: {
31651
        'italic': 'italic',
31652
        'oblique': 'italic',
31653
        'normal': 'normal'
31654
      }
31655
    },
31656
    'text-anchor': {
31657
      inherit: true,
31658
      initial: 'start',
31659
      values: {
31660
        'start': 'start',
31661
        'middle': 'middle',
31662
        'end': 'end'
31663
      }
31664
    },
31665
    'direction': {
31666
      inherit: true,
31667
      initial: 'ltr',
31668
      values: {
31669
        'ltr': 'ltr',
31670
        'rtl': 'rtl'
31671
      }
31672
    },
31673
    'dominant-baseline': {
31674
      inherit: true,
31675
      initial: 'baseline',
31676
      values: {
31677
        'auto': 'baseline',
31678
        'baseline': 'baseline',
31679
        'before-edge': 'before-edge',
31680
        'text-before-edge': 'before-edge',
31681
        'middle': 'middle',
31682
        'central': 'central',
31683
        'after-edge': 'after-edge',
31684
        'text-after-edge': 'after-edge',
31685
        'ideographic': 'ideographic',
31686
        'alphabetic': 'alphabetic',
31687
        'hanging': 'hanging',
31688
        'mathematical': 'mathematical'
31689
      }
31690
    },
31691
    'alignment-baseline': {
31692
      inherit: false,
31693
      initial: undefined,
31694
      values: {
31695
        'auto': 'baseline',
31696
        'baseline': 'baseline',
31697
        'before-edge': 'before-edge',
31698
        'text-before-edge': 'before-edge',
31699
        'middle': 'middle',
31700
        'central': 'central',
31701
        'after-edge': 'after-edge',
31702
        'text-after-edge': 'after-edge',
31703
        'ideographic': 'ideographic',
31704
        'alphabetic': 'alphabetic',
31705
        'hanging': 'hanging',
31706
        'mathematical': 'mathematical'
31707
      }
31708
    },
31709
    'baseline-shift': {
31710
      inherit: true,
31711
      initial: 'baseline',
31712
      values: {
31713
        'baseline': 'baseline',
31714
        'sub': 'sub',
31715
        'super': 'super'
31716
      }
31717
    },
31718
    'word-spacing': {
31719
      inherit: true,
31720
      initial: 0,
31721
      values: {
31722
        normal: 0
31723
      }
31724
    },
31725
    'letter-spacing': {
31726
      inherit: true,
31727
      initial: 0,
31728
      values: {
31729
        normal: 0
31730
      }
31731
    },
31732
    'text-decoration': {
31733
      inherit: false,
31734
      initial: 'none',
31735
      values: {
31736
        'none': 'none',
31737
        'underline': 'underline',
31738
        'overline': 'overline',
31739
        'line-through': 'line-through'
31740
      }
31741
    },
31742
    'xml:space': {
31743
      inherit: true,
31744
      initial: 'default',
31745
      css: 'white-space',
31746
      values: {
31747
        'preserve': 'preserve',
31748
        'default': 'default',
31749
        'pre': 'preserve',
31750
        'pre-line': 'preserve',
31751
        'pre-wrap': 'preserve',
31752
        'nowrap': 'default'
31753
      }
31754
    },
31755
    'marker-start': {
31756
      inherit: true,
31757
      initial: 'none'
31758
    },
31759
    'marker-mid': {
31760
      inherit: true,
31761
      initial: 'none'
31762
    },
31763
    'marker-end': {
31764
      inherit: true,
31765
      initial: 'none'
31766
    },
31767
    'opacity': {
31768
      inherit: false,
31769
      initial: 1
31770
    },
31771
    'transform': {
31772
      inherit: false,
31773
      initial: [1, 0, 0, 1, 0, 0]
31774
    },
31775
    'display': {
31776
      inherit: false,
31777
      initial: 'inline',
31778
      values: {
31779
        'none': 'none',
31780
        'inline': 'inline',
31781
        'block': 'inline'
31782
      }
31783
    },
31784
    'clip-path': {
31785
      inherit: false,
31786
      initial: 'none'
31787
    },
31788
    'mask': {
31789
      inherit: false,
31790
      initial: 'none'
31791
    },
31792
    'overflow': {
31793
      inherit: false,
31794
      initial: 'hidden',
31795
      values: {
31796
        'hidden': 'hidden',
31797
        'scroll': 'hidden',
31798
        'visible': 'visible'
31799
      }
31800
    }
31801
  };
31802
  function docBeginGroup(bbox) {
31803
    var group = new function PDFGroup() {}();
31804
    group.name = 'G' + (doc._groupCount = (doc._groupCount || 0) + 1);
31805
    group.resources = doc.ref();
31806
    group.xobj = doc.ref({
31807
      Type: 'XObject',
31808
      Subtype: 'Form',
31809
      FormType: 1,
31810
      BBox: bbox,
31811
      Group: {
31812
        S: 'Transparency',
31813
        CS: 'DeviceRGB',
31814
        I: true,
31815
        K: false
31816
      },
31817
      Resources: group.resources
31818
    });
31819
    group.xobj.write('');
31820
    group.savedMatrix = doc._ctm;
31821
    group.savedPage = doc.page;
31822
    groupStack.push(group);
31823
    doc._ctm = [1, 0, 0, 1, 0, 0];
31824
    doc.page = {
31825
      width: doc.page.width,
31826
      height: doc.page.height,
31827
      write: function write(data) {
31828
        group.xobj.write(data);
31829
      },
31830
      fonts: {},
31831
      xobjects: {},
31832
      ext_gstates: {},
31833
      patterns: {}
31834
    };
31835
    return group;
31836
  }
31837
  function docEndGroup(group) {
31838
    if (group !== groupStack.pop()) {
31839
      throw 'Group not matching';
31840
    }
31841
    if (Object.keys(doc.page.fonts).length) {
31842
      group.resources.data.Font = doc.page.fonts;
31843
    }
31844
    if (Object.keys(doc.page.xobjects).length) {
31845
      group.resources.data.XObject = doc.page.xobjects;
31846
    }
31847
    if (Object.keys(doc.page.ext_gstates).length) {
31848
      group.resources.data.ExtGState = doc.page.ext_gstates;
31849
    }
31850
    if (Object.keys(doc.page.patterns).length) {
31851
      group.resources.data.Pattern = doc.page.patterns;
31852
    }
31853
    group.resources.end();
31854
    group.xobj.end();
31855
    doc._ctm = group.savedMatrix;
31856
    doc.page = group.savedPage;
31857
  }
31858
  function docInsertGroup(group) {
31859
    doc.page.xobjects[group.name] = group.xobj;
31860
    doc.addContent('/' + group.name + ' Do');
31861
  }
31862
  function docApplyMask(group, clip) {
31863
    var name = 'M' + (doc._maskCount = (doc._maskCount || 0) + 1);
31864
    var gstate = doc.ref({
31865
      Type: 'ExtGState',
31866
      CA: 1,
31867
      ca: 1,
31868
      BM: 'Normal',
31869
      SMask: {
31870
        S: 'Luminosity',
31871
        G: group.xobj,
31872
        BC: clip ? [0, 0, 0] : [1, 1, 1]
31873
      }
31874
    });
31875
    gstate.end();
31876
    doc.page.ext_gstates[name] = gstate;
31877
    doc.addContent('/' + name + ' gs');
31878
  }
31879
  function docCreatePattern(group, dx, dy, matrix) {
31880
    var pattern = new function PDFPattern() {}();
31881
    pattern.group = group;
31882
    pattern.dx = dx;
31883
    pattern.dy = dy;
31884
    pattern.matrix = matrix || [1, 0, 0, 1, 0, 0];
31885
    return pattern;
31886
  }
31887
  function docUsePattern(pattern, stroke) {
31888
    var name = 'P' + (doc._patternCount = (doc._patternCount || 0) + 1);
31889
    var ref = doc.ref({
31890
      Type: 'Pattern',
31891
      PatternType: 1,
31892
      PaintType: 1,
31893
      TilingType: 2,
31894
      BBox: [0, 0, pattern.dx, pattern.dy],
31895
      XStep: pattern.dx,
31896
      YStep: pattern.dy,
31897
      Matrix: multiplyMatrix(doc._ctm, pattern.matrix),
31898
      Resources: {
31899
        ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],
31900
        XObject: function () {
31901
          var temp = {};
31902
          temp[pattern.group.name] = pattern.group.xobj;
31903
          return temp;
31904
        }()
31905
      }
31906
    });
31907
    ref.write('/' + pattern.group.name + ' Do');
31908
    ref.end();
31909
    doc.page.patterns[name] = ref;
31910
    if (stroke) {
31911
      doc.addContent('/Pattern CS');
31912
      doc.addContent('/' + name + ' SCN');
31913
    } else {
31914
      doc.addContent('/Pattern cs');
31915
      doc.addContent('/' + name + ' scn');
31916
    }
31917
  }
31918
  function docBeginText(font, size) {
31919
    if (!doc.page.fonts[font.id]) {
31920
      doc.page.fonts[font.id] = font.ref();
31921
    }
31922
    doc.addContent('BT').addContent('/' + font.id + ' ' + size + ' Tf');
31923
  }
31924
  function docSetTextMatrix(a, b, c, d, e, f) {
31925
    doc.addContent(validateNumber(a) + ' ' + validateNumber(b) + ' ' + validateNumber(-c) + ' ' + validateNumber(-d) + ' ' + validateNumber(e) + ' ' + validateNumber(f) + ' Tm');
31926
  }
31927
  function docSetTextMode(fill, stroke) {
31928
    var mode = fill && stroke ? 2 : stroke ? 1 : fill ? 0 : 3;
31929
    doc.addContent(mode + ' Tr');
31930
  }
31931
  function docWriteGlyph(glyph) {
31932
    doc.addContent('<' + glyph + '> Tj');
31933
  }
31934
  function docEndText() {
31935
    doc.addContent('ET');
31936
  }
31937
  function docFillColor(color) {
31938
    if (color[0].constructor.name === 'PDFPattern') {
31939
      doc.fillOpacity(color[1]);
31940
      docUsePattern(color[0], false);
31941
    } else {
31942
      doc.fillColor(color[0], color[1]);
31943
    }
31944
  }
31945
  function docStrokeColor(color) {
31946
    if (color[0].constructor.name === 'PDFPattern') {
31947
      doc.strokeOpacity(color[1]);
31948
      docUsePattern(color[0], true);
31949
    } else {
31950
      doc.strokeColor(color[0], color[1]);
31951
    }
31952
  }
31953
  function docInsertLink(x, y, w, h, url) {
31954
    var ref = doc.ref({
31955
      Type: 'Annot',
31956
      Subtype: 'Link',
31957
      Rect: [x, y, w, h],
31958
      Border: [0, 0, 0],
31959
      A: {
31960
        S: 'URI',
31961
        URI: new String(url)
31962
      }
31963
    });
31964
    ref.end();
31965
    links.push(ref);
31966
  }
31967
  function parseXml(xml) {
31968
    var SvgNode = function SvgNode(tag, type, value, error) {
31969
      this.error = error;
31970
      this.nodeName = tag;
31971
      this.nodeValue = value;
31972
      this.nodeType = type;
31973
      this.attributes = Object.create(null);
31974
      this.childNodes = [];
31975
      this.parentNode = null;
31976
      this.id = '';
31977
      this.textContent = '';
31978
      this.classList = [];
31979
    };
31980
    SvgNode.prototype.getAttribute = function (attr) {
31981
      return this.attributes[attr] != null ? this.attributes[attr] : null;
31982
    };
31983
    SvgNode.prototype.getElementById = function (id) {
31984
      var result = null;
31985
      (function recursive(node) {
31986
        if (result) {
31987
          return;
31988
        }
31989
        if (node.nodeType === 1) {
31990
          if (node.id === id) {
31991
            result = node;
31992
          }
31993
          for (var i = 0; i < node.childNodes.length; i++) {
31994
            recursive(node.childNodes[i]);
31995
          }
31996
        }
31997
      })(this);
31998
      return result;
31999
    };
32000
    SvgNode.prototype.getElementsByTagName = function (tag) {
32001
      var result = [];
32002
      (function recursive(node) {
32003
        if (node.nodeType === 1) {
32004
          if (node.nodeName === tag) {
32005
            result.push(node);
32006
          }
32007
          for (var i = 0; i < node.childNodes.length; i++) {
32008
            recursive(node.childNodes[i]);
32009
          }
32010
        }
32011
      })(this);
32012
      return result;
32013
    };
32014
    var parser = new StringParser(xml.trim()),
32015
      result,
32016
      child,
32017
      error = false;
32018
    var recursive = function recursive() {
32019
      var temp, child;
32020
      if (temp = parser.match(/^<([\w:.-]+)\s*/, true)) {
32021
        // Opening tag
32022
        var node = new SvgNode(temp[1], 1, null, error);
32023
        while (temp = parser.match(/^([\w:.-]+)(?:\s*=\s*"([^"]*)"|\s*=\s*'([^']*)')?\s*/, true)) {
32024
          // Attribute
32025
          var attr = temp[1],
32026
            value = decodeEntities(temp[2] || temp[3] || '');
32027
          if (!node.attributes[attr]) {
32028
            node.attributes[attr] = value;
32029
            if (attr === 'id') {
32030
              node.id = value;
32031
            }
32032
            if (attr === 'class') {
32033
              node.classList = value.split(' ');
32034
            }
32035
          } else {
32036
            warningCallback('parseXml: duplicate attribute "' + attr + '"');
32037
            error = true;
32038
          }
32039
        }
32040
        if (parser.match(/^>/)) {
32041
          // End of opening tag
32042
          while (child = recursive()) {
32043
            node.childNodes.push(child);
32044
            child.parentNode = node;
32045
            node.textContent += child.nodeType === 3 || child.nodeType === 4 ? child.nodeValue : child.textContent;
32046
          }
32047
          if (temp = parser.match(/^<\/([\w:.-]+)\s*>/, true)) {
32048
            // Closing tag
32049
            if (temp[1] === node.nodeName) {
32050
              return node;
32051
            } else {
32052
              warningCallback('parseXml: tag not matching, opening "' + node.nodeName + '" & closing "' + temp[1] + '"');
32053
              error = true;
32054
              return node;
32055
            }
32056
          } else {
32057
            warningCallback('parseXml: tag not matching, opening "' + node.nodeName + '" & not closing');
32058
            error = true;
32059
            return node;
32060
          }
32061
        } else if (parser.match(/^\/>/)) {
32062
          // Self-closing tag
32063
          return node;
32064
        } else {
32065
          warningCallback('parseXml: tag could not be parsed "' + node.nodeName + '"');
32066
          error = true;
32067
        }
32068
      } else if (temp = parser.match(/^<!--[\s\S]*?-->/)) {
32069
        // Comment
32070
        return new SvgNode(null, 8, temp, error);
32071
      } else if (temp = parser.match(/^<\?[\s\S]*?\?>/)) {
32072
        // Processing instructions
32073
        return new SvgNode(null, 7, temp, error);
32074
      } else if (temp = parser.match(/^<!DOCTYPE\s*([\s\S]*?)>/)) {
32075
        // Doctype
32076
        return new SvgNode(null, 10, temp, error);
32077
      } else if (temp = parser.match(/^<!\[CDATA\[([\s\S]*?)\]\]>/, true)) {
32078
        // Cdata node
32079
        return new SvgNode('#cdata-section', 4, temp[1], error);
32080
      } else if (temp = parser.match(/^([^<]+)/, true)) {
32081
        // Text node
32082
        return new SvgNode('#text', 3, decodeEntities(temp[1]), error);
32083
      }
32084
    };
32085
    while (child = recursive()) {
32086
      if (child.nodeType === 1 && !result) {
32087
        result = child;
32088
      } else if (child.nodeType === 1 || child.nodeType === 3 && child.nodeValue.trim() !== '') {
32089
        warningCallback('parseXml: data after document end has been discarded');
32090
      }
32091
    }
32092
    if (parser.matchAll()) {
32093
      warningCallback('parseXml: parsing error');
32094
    }
32095
    return result;
32096
  }
32097
  ;
32098
  function decodeEntities(str) {
32099
    return str.replace(/&(?:#([0-9]+)|#[xX]([0-9A-Fa-f]+)|([0-9A-Za-z]+));/g, function (mt, m0, m1, m2) {
32100
      if (m0) {
32101
        return String.fromCharCode(parseInt(m0, 10));
32102
      } else if (m1) {
32103
        return String.fromCharCode(parseInt(m1, 16));
32104
      } else if (m2 && Entities[m2]) {
32105
        return String.fromCharCode(Entities[m2]);
32106
      } else {
32107
        return mt;
32108
      }
32109
    });
32110
  }
32111
  function parseColor(raw) {
32112
    var temp, result;
32113
    raw = (raw || '').trim();
32114
    if (temp = NamedColors[raw]) {
32115
      result = [temp.slice(), 1];
32116
    } else if (temp = raw.match(/^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9.]+)\s*\)$/i)) {
32117
      temp[1] = parseInt(temp[1]);
32118
      temp[2] = parseInt(temp[2]);
32119
      temp[3] = parseInt(temp[3]);
32120
      temp[4] = parseFloat(temp[4]);
32121
      if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256 && temp[4] <= 1) {
32122
        result = [temp.slice(1, 4), temp[4]];
32123
      }
32124
    } else if (temp = raw.match(/^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/i)) {
32125
      temp[1] = parseInt(temp[1]);
32126
      temp[2] = parseInt(temp[2]);
32127
      temp[3] = parseInt(temp[3]);
32128
      if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {
32129
        result = [temp.slice(1, 4), 1];
32130
      }
32131
    } else if (temp = raw.match(/^rgb\(\s*([0-9.]+)%\s*,\s*([0-9.]+)%\s*,\s*([0-9.]+)%\s*\)$/i)) {
32132
      temp[1] = 2.55 * parseFloat(temp[1]);
32133
      temp[2] = 2.55 * parseFloat(temp[2]);
32134
      temp[3] = 2.55 * parseFloat(temp[3]);
32135
      if (temp[1] < 256 && temp[2] < 256 && temp[3] < 256) {
32136
        result = [temp.slice(1, 4), 1];
32137
      }
32138
    } else if (temp = raw.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)) {
32139
      result = [[parseInt(temp[1], 16), parseInt(temp[2], 16), parseInt(temp[3], 16)], 1];
32140
    } else if (temp = raw.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i)) {
32141
      result = [[0x11 * parseInt(temp[1], 16), 0x11 * parseInt(temp[2], 16), 0x11 * parseInt(temp[3], 16)], 1];
32142
    }
32143
    return colorCallback ? colorCallback(result, raw) : result;
32144
  }
32145
  function opacityToColor(color, opacity, isMask) {
32146
    var newColor = color[0].slice(),
32147
      newOpacity = color[1] * opacity;
32148
    if (isMask) {
32149
      for (var i = 0; i < color.length; i++) {
32150
        newColor[i] *= newOpacity;
32151
      }
32152
      return [newColor, 1];
32153
    } else {
32154
      return [newColor, newOpacity];
32155
    }
32156
  }
32157
  function multiplyMatrix() {
32158
    function multiply(a, b) {
32159
      return [a[0] * b[0] + a[2] * b[1], a[1] * b[0] + a[3] * b[1], a[0] * b[2] + a[2] * b[3], a[1] * b[2] + a[3] * b[3], a[0] * b[4] + a[2] * b[5] + a[4], a[1] * b[4] + a[3] * b[5] + a[5]];
32160
    }
32161
    var result = arguments[0];
32162
    for (var i = 1; i < arguments.length; i++) {
32163
      result = multiply(result, arguments[i]);
32164
    }
32165
    return result;
32166
  }
32167
  function transformPoint(p, m) {
32168
    return [m[0] * p[0] + m[2] * p[1] + m[4], m[1] * p[0] + m[3] * p[1] + m[5]];
32169
  }
32170
  function getGlobalMatrix() {
32171
    var ctm = doc._ctm;
32172
    for (var i = groupStack.length - 1; i >= 0; i--) {
32173
      ctm = multiplyMatrix(groupStack[i].savedMatrix, ctm);
32174
    }
32175
    return ctm;
32176
  }
32177
  function getPageBBox() {
32178
    return new SvgShape().M(0, 0).L(doc.page.width, 0).L(doc.page.width, doc.page.height).L(0, doc.page.height).transform(inverseMatrix(getGlobalMatrix())).getBoundingBox();
32179
  }
32180
  function inverseMatrix(m) {
32181
    var dt = m[0] * m[3] - m[1] * m[2];
32182
    return [m[3] / dt, -m[1] / dt, -m[2] / dt, m[0] / dt, (m[2] * m[5] - m[3] * m[4]) / dt, (m[1] * m[4] - m[0] * m[5]) / dt];
32183
  }
32184
  function validateMatrix(m) {
32185
    var m0 = validateNumber(m[0]),
32186
      m1 = validateNumber(m[1]),
32187
      m2 = validateNumber(m[2]),
32188
      m3 = validateNumber(m[3]),
32189
      m4 = validateNumber(m[4]),
32190
      m5 = validateNumber(m[5]);
32191
    if (isNotEqual(m0 * m3 - m1 * m2, 0)) {
32192
      return [m0, m1, m2, m3, m4, m5];
32193
    }
32194
  }
32195
  function solveEquation(curve) {
32196
    var a = curve[2] || 0,
32197
      b = curve[1] || 0,
32198
      c = curve[0] || 0;
32199
    if (isEqual(a, 0) && isEqual(b, 0)) {
32200
      return [];
32201
    } else if (isEqual(a, 0)) {
32202
      return [-c / b];
32203
    } else {
32204
      var d = b * b - 4 * a * c;
32205
      if (isNotEqual(d, 0) && d > 0) {
32206
        return [(-b + Math.sqrt(d)) / (2 * a), (-b - Math.sqrt(d)) / (2 * a)];
32207
      } else if (isEqual(d, 0)) {
32208
        return [-b / (2 * a)];
32209
      } else {
32210
        return [];
32211
      }
32212
    }
32213
  }
32214
  function getCurveValue(t, curve) {
32215
    return (curve[0] || 0) + (curve[1] || 0) * t + (curve[2] || 0) * t * t + (curve[3] || 0) * t * t * t;
32216
  }
32217
  function isEqual(number, ref) {
32218
    return Math.abs(number - ref) < 1e-10;
32219
  }
32220
  function isNotEqual(number, ref) {
32221
    return Math.abs(number - ref) >= 1e-10;
32222
  }
32223
  function validateNumber(n) {
32224
    return n > -1e21 && n < 1e21 ? Math.round(n * 1e6) / 1e6 : 0;
32225
  }
32226
  function isArrayLike(v) {
32227
    return typeof v === 'object' && v !== null && typeof v.length === 'number';
32228
  }
32229
  function parseTranform(v) {
32230
    var parser = new StringParser((v || '').trim()),
32231
      result = [1, 0, 0, 1, 0, 0],
32232
      temp;
32233
    while (temp = parser.match(/^([A-Za-z]+)\s*[(]([^(]+)[)]/, true)) {
32234
      var func = temp[1],
32235
        nums = [],
32236
        parser2 = new StringParser(temp[2].trim()),
32237
        temp2 = void 0;
32238
      while (temp2 = parser2.matchNumber()) {
32239
        nums.push(Number(temp2));
32240
        parser2.matchSeparator();
32241
      }
32242
      if (func === 'matrix' && nums.length === 6) {
32243
        result = multiplyMatrix(result, [nums[0], nums[1], nums[2], nums[3], nums[4], nums[5]]);
32244
      } else if (func === 'translate' && nums.length === 2) {
32245
        result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], nums[1]]);
32246
      } else if (func === 'translate' && nums.length === 1) {
32247
        result = multiplyMatrix(result, [1, 0, 0, 1, nums[0], 0]);
32248
      } else if (func === 'scale' && nums.length === 2) {
32249
        result = multiplyMatrix(result, [nums[0], 0, 0, nums[1], 0, 0]);
32250
      } else if (func === 'scale' && nums.length === 1) {
32251
        result = multiplyMatrix(result, [nums[0], 0, 0, nums[0], 0, 0]);
32252
      } else if (func === 'rotate' && nums.length === 3) {
32253
        var a = nums[0] * Math.PI / 180;
32254
        result = multiplyMatrix(result, [1, 0, 0, 1, nums[1], nums[2]], [Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0], [1, 0, 0, 1, -nums[1], -nums[2]]);
32255
      } else if (func === 'rotate' && nums.length === 1) {
32256
        var _a = nums[0] * Math.PI / 180;
32257
        result = multiplyMatrix(result, [Math.cos(_a), Math.sin(_a), -Math.sin(_a), Math.cos(_a), 0, 0]);
32258
      } else if (func === 'skewX' && nums.length === 1) {
32259
        var _a2 = nums[0] * Math.PI / 180;
32260
        result = multiplyMatrix(result, [1, 0, Math.tan(_a2), 1, 0, 0]);
32261
      } else if (func === 'skewY' && nums.length === 1) {
32262
        var _a3 = nums[0] * Math.PI / 180;
32263
        result = multiplyMatrix(result, [1, Math.tan(_a3), 0, 1, 0, 0]);
32264
      } else {
32265
        return;
32266
      }
32267
      parser.matchSeparator();
32268
    }
32269
    if (parser.matchAll()) {
32270
      return;
32271
    }
32272
    return result;
32273
  }
32274
  function parseAspectRatio(aspectRatio, availWidth, availHeight, elemWidth, elemHeight, initAlign) {
32275
    var temp = (aspectRatio || '').trim().match(/^(none)$|^x(Min|Mid|Max)Y(Min|Mid|Max)(?:\s+(meet|slice))?$/) || [],
32276
      ratioType = temp[1] || temp[4] || 'meet',
32277
      xAlign = temp[2] || 'Mid',
32278
      yAlign = temp[3] || 'Mid',
32279
      scaleX = availWidth / elemWidth,
32280
      scaleY = availHeight / elemHeight,
32281
      dx = {
32282
        'Min': 0,
32283
        'Mid': 0.5,
32284
        'Max': 1
32285
      }[xAlign] - (initAlign || 0),
32286
      dy = {
32287
        'Min': 0,
32288
        'Mid': 0.5,
32289
        'Max': 1
32290
      }[yAlign] - (initAlign || 0);
32291
    if (ratioType === 'slice') {
32292
      scaleY = scaleX = Math.max(scaleX, scaleY);
32293
    } else if (ratioType === 'meet') {
32294
      scaleY = scaleX = Math.min(scaleX, scaleY);
32295
    }
32296
    return [scaleX, 0, 0, scaleY, dx * (availWidth - elemWidth * scaleX), dy * (availHeight - elemHeight * scaleY)];
32297
  }
32298
  function parseStyleAttr(v) {
32299
    var result = Object.create(null);
32300
    v = (v || '').trim().split(/;/);
32301
    for (var i = 0; i < v.length; i++) {
32302
      var key = (v[i].split(':')[0] || '').trim(),
32303
        value = (v[i].split(':')[1] || '').trim();
32304
      if (key) {
32305
        result[key] = value;
32306
      }
32307
    }
32308
    if (result['marker']) {
32309
      if (!result['marker-start']) {
32310
        result['marker-start'] = result['marker'];
32311
      }
32312
      if (!result['marker-mid']) {
32313
        result['marker-mid'] = result['marker'];
32314
      }
32315
      if (!result['marker-end']) {
32316
        result['marker-end'] = result['marker'];
32317
      }
32318
    }
32319
    if (result['font']) {
32320
      var fontFamily = null,
32321
        fontSize = null,
32322
        fontStyle = "normal",
32323
        fontWeight = "normal",
32324
        fontVariant = "normal";
32325
      var parts = result['font'].split(/\s+/);
32326
      for (var _i = 0; _i < parts.length; _i++) {
32327
        switch (parts[_i]) {
32328
          case "normal":
32329
            break;
32330
          case "italic":
32331
          case "oblique":
32332
            fontStyle = parts[_i];
32333
            break;
32334
          case "small-caps":
32335
            fontVariant = parts[_i];
32336
            break;
32337
          case "bold":
32338
          case "bolder":
32339
          case "lighter":
32340
          case "100":
32341
          case "200":
32342
          case "300":
32343
          case "400":
32344
          case "500":
32345
          case "600":
32346
          case "700":
32347
          case "800":
32348
          case "900":
32349
            fontWeight = parts[_i];
32350
            break;
32351
          default:
32352
            if (!fontSize) {
32353
              fontSize = parts[_i].split('/')[0];
32354
            } else {
32355
              if (!fontFamily) {
32356
                fontFamily = parts[_i];
32357
              } else {
32358
                fontFamily += ' ' + parts[_i];
32359
              }
32360
            }
32361
            break;
32362
        }
32363
      }
32364
      if (!result['font-style']) {
32365
        result['font-style'] = fontStyle;
32366
      }
32367
      if (!result['font-variant']) {
32368
        result['font-variant'] = fontVariant;
32369
      }
32370
      if (!result['font-weight']) {
32371
        result['font-weight'] = fontWeight;
32372
      }
32373
      if (!result['font-size']) {
32374
        result['font-size'] = fontSize;
32375
      }
32376
      if (!result['font-family']) {
32377
        result['font-family'] = fontFamily;
32378
      }
32379
    }
32380
    return result;
32381
  }
32382
  function parseSelector(v) {
32383
    var parts = v.split(/(?=[.#])/g),
32384
      ids = [],
32385
      classes = [],
32386
      tags = [],
32387
      temp;
32388
    for (var i = 0; i < parts.length; i++) {
32389
      if (temp = parts[i].match(/^[#]([_A-Za-z0-9-]+)$/)) {
32390
        ids.push(temp[1]);
32391
      } else if (temp = parts[i].match(/^[.]([_A-Za-z0-9-]+)$/)) {
32392
        classes.push(temp[1]);
32393
      } else if (temp = parts[i].match(/^([_A-Za-z0-9-]+)$/)) {
32394
        tags.push(temp[1]);
32395
      } else if (parts[i] !== '*') {
32396
        return;
32397
      }
32398
    }
32399
    return {
32400
      tags: tags,
32401
      ids: ids,
32402
      classes: classes,
32403
      specificity: ids.length * 10000 + classes.length * 100 + tags.length
32404
    };
32405
  }
32406
  function parseStyleSheet(v) {
32407
    var parser = new StringParser(v.trim()),
32408
      rules = [],
32409
      rule;
32410
    while (rule = parser.match(/^\s*([^\{\}]*?)\s*\{([^\{\}]*?)\}/, true)) {
32411
      var selectors = rule[1].split(/\s*,\s*/g),
32412
        css = parseStyleAttr(rule[2]);
32413
      for (var i = 0; i < selectors.length; i++) {
32414
        var selector = parseSelector(selectors[i]);
32415
        if (selector) {
32416
          rules.push({
32417
            selector: selector,
32418
            css: css
32419
          });
32420
        }
32421
      }
32422
    }
32423
    return rules;
32424
  }
32425
  function matchesSelector(elem, selector) {
32426
    if (elem.nodeType !== 1) {
32427
      return false;
32428
    }
32429
    for (var i = 0; i < selector.tags.length; i++) {
32430
      if (selector.tags[i] !== elem.nodeName) {
32431
        return false;
32432
      }
32433
    }
32434
    for (var _i2 = 0; _i2 < selector.ids.length; _i2++) {
32435
      if (selector.ids[_i2] !== elem.id) {
32436
        return false;
32437
      }
32438
    }
32439
    for (var _i3 = 0; _i3 < selector.classes.length; _i3++) {
32440
      if (elem.classList.indexOf(selector.classes[_i3]) === -1) {
32441
        return false;
32442
      }
32443
    }
32444
    return true;
32445
  }
32446
  function getStyle(elem) {
32447
    var result = Object.create(null);
32448
    var specificities = Object.create(null);
32449
    for (var i = 0; i < styleRules.length; i++) {
32450
      var rule = styleRules[i];
32451
      if (matchesSelector(elem, rule.selector)) {
32452
        for (var key in rule.css) {
32453
          if (!(specificities[key] > rule.selector.specificity)) {
32454
            result[key] = rule.css[key];
32455
            specificities[key] = rule.selector.specificity;
32456
          }
32457
        }
32458
      }
32459
    }
32460
    return result;
32461
  }
32462
  function combineArrays(array1, array2) {
32463
    return array1.concat(array2.slice(array1.length));
32464
  }
32465
  function getAscent(font, size) {
32466
    return Math.max(font.ascender, (font.bbox[3] || font.bbox.maxY) * (font.scale || 1)) * size / 1000;
32467
  }
32468
  function getDescent(font, size) {
32469
    return Math.min(font.descender, (font.bbox[1] || font.bbox.minY) * (font.scale || 1)) * size / 1000;
32470
  }
32471
  function getXHeight(font, size) {
32472
    return (font.xHeight || 0.5 * (font.ascender - font.descender)) * size / 1000;
32473
  }
32474
  function getBaseline(font, size, baseline, shift) {
32475
    var dy1, dy2;
32476
    switch (baseline) {
32477
      case 'middle':
32478
        dy1 = 0.5 * getXHeight(font, size);
32479
        break;
32480
      case 'central':
32481
        dy1 = 0.5 * (getDescent(font, size) + getAscent(font, size));
32482
        break;
32483
      case 'after-edge':
32484
      case 'text-after-edge':
32485
        dy1 = getDescent(font, size);
32486
        break;
32487
      case 'alphabetic':
32488
      case 'auto':
32489
      case 'baseline':
32490
        dy1 = 0;
32491
        break;
32492
      case 'mathematical':
32493
        dy1 = 0.5 * getAscent(font, size);
32494
        break;
32495
      case 'hanging':
32496
        dy1 = 0.8 * getAscent(font, size);
32497
        break;
32498
      case 'before-edge':
32499
      case 'text-before-edge':
32500
        dy1 = getAscent(font, size);
32501
        break;
32502
      default:
32503
        dy1 = 0;
32504
        break;
32505
    }
32506
    switch (shift) {
32507
      case 'baseline':
32508
        dy2 = 0;
32509
        break;
32510
      case 'super':
32511
        dy2 = 0.6 * size;
32512
        break;
32513
      case 'sub':
32514
        dy2 = -0.6 * size;
32515
        break;
32516
      default:
32517
        dy2 = shift;
32518
        break;
32519
    }
32520
    return dy1 - dy2;
32521
  }
32522
  function getTextPos(font, size, text) {
32523
    var encoded = font.encode('' + text),
32524
      hex = encoded[0],
32525
      pos = encoded[1],
32526
      data = [];
32527
    for (var i = 0; i < hex.length; i++) {
32528
      var unicode = font.unicode ? font.unicode[parseInt(hex[i], 16)] : [text.charCodeAt(i)];
32529
      data.push({
32530
        glyph: hex[i],
32531
        unicode: unicode,
32532
        width: pos[i].advanceWidth * size / 1000,
32533
        xOffset: pos[i].xOffset * size / 1000,
32534
        yOffset: pos[i].yOffset * size / 1000,
32535
        xAdvance: pos[i].xAdvance * size / 1000,
32536
        yAdvance: pos[i].yAdvance * size / 1000
32537
      });
32538
    }
32539
    return data;
32540
  }
32541
  function createSVGElement(obj, inherits) {
32542
    switch (obj.nodeName) {
32543
      case 'use':
32544
        return new SvgElemUse(obj, inherits);
32545
      case 'symbol':
32546
        return new SvgElemSymbol(obj, inherits);
32547
      case 'g':
32548
        return new SvgElemGroup(obj, inherits);
32549
      case 'a':
32550
        return new SvgElemLink(obj, inherits);
32551
      case 'svg':
32552
        return new SvgElemSvg(obj, inherits);
32553
      case 'image':
32554
        return new SVGElemImage(obj, inherits);
32555
      case 'rect':
32556
        return new SvgElemRect(obj, inherits);
32557
      case 'circle':
32558
        return new SvgElemCircle(obj, inherits);
32559
      case 'ellipse':
32560
        return new SvgElemEllipse(obj, inherits);
32561
      case 'line':
32562
        return new SvgElemLine(obj, inherits);
32563
      case 'polyline':
32564
        return new SvgElemPolyline(obj, inherits);
32565
      case 'polygon':
32566
        return new SvgElemPolygon(obj, inherits);
32567
      case 'path':
32568
        return new SvgElemPath(obj, inherits);
32569
      case 'text':
32570
        return new SvgElemText(obj, inherits);
32571
      case 'tspan':
32572
        return new SvgElemTspan(obj, inherits);
32573
      case 'textPath':
32574
        return new SvgElemTextPath(obj, inherits);
32575
      case '#text':
32576
      case '#cdata-section':
32577
        return new SvgElemTextNode(obj, inherits);
32578
      default:
32579
        return new SvgElem(obj, inherits);
32580
    }
32581
  }
32582
  var StringParser = function StringParser(str) {
32583
    this.match = function (exp, all) {
32584
      var temp = str.match(exp);
32585
      if (!temp || temp.index !== 0) {
32586
        return;
32587
      }
32588
      str = str.substring(temp[0].length);
32589
      return all ? temp : temp[0];
32590
    };
32591
    this.matchSeparator = function () {
32592
      return this.match(/^(?:\s*,\s*|\s*|)/);
32593
    };
32594
    this.matchSpace = function () {
32595
      return this.match(/^(?:\s*)/);
32596
    };
32597
    this.matchLengthUnit = function () {
32598
      return this.match(/^(?:px|pt|cm|mm|in|pc|em|ex|%|)/);
32599
    };
32600
    this.matchNumber = function () {
32601
      return this.match(/^(?:[-+]?(?:[0-9]+[.][0-9]+|[0-9]+[.]|[.][0-9]+|[0-9]+)(?:[eE][-+]?[0-9]+)?)/);
32602
    };
32603
    this.matchAll = function () {
32604
      return this.match(/^[\s\S]+/);
32605
    };
32606
  };
32607
  var BezierSegment = function BezierSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {
32608
    var divisions = 6 * precision;
32609
    var equationX = [p1x, -3 * p1x + 3 * c1x, 3 * p1x - 6 * c1x + 3 * c2x, -p1x + 3 * c1x - 3 * c2x + p2x];
32610
    var equationY = [p1y, -3 * p1y + 3 * c1y, 3 * p1y - 6 * c1y + 3 * c2y, -p1y + 3 * c1y - 3 * c2y + p2y];
32611
    var derivativeX = [-3 * p1x + 3 * c1x, 6 * p1x - 12 * c1x + 6 * c2x, -3 * p1x + 9 * c1x - 9 * c2x + 3 * p2x];
32612
    var derivativeY = [-3 * p1y + 3 * c1y, 6 * p1y - 12 * c1y + 6 * c2y, -3 * p1y + 9 * c1y - 9 * c2y + 3 * p2y];
32613
    var lengthMap = [0];
32614
    for (var i = 1; i <= divisions; i++) {
32615
      var t = (i - 0.5) / divisions;
32616
      var dx = getCurveValue(t, derivativeX) / divisions,
32617
        dy = getCurveValue(t, derivativeY) / divisions,
32618
        l = Math.sqrt(dx * dx + dy * dy);
32619
      lengthMap[i] = lengthMap[i - 1] + l;
32620
    }
32621
    this.totalLength = lengthMap[divisions];
32622
    this.startPoint = [p1x, p1y, isEqual(p1x, c1x) && isEqual(p1y, c1y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(c1y - p1y, c1x - p1x)];
32623
    this.endPoint = [p2x, p2y, isEqual(c2x, p2x) && isEqual(c2y, p2y) ? Math.atan2(c2y - c1y, c2x - c1x) : Math.atan2(p2y - c2y, p2x - c2x)];
32624
    this.getBoundingBox = function () {
32625
      var temp;
32626
      var minX = getCurveValue(0, equationX),
32627
        minY = getCurveValue(0, equationY),
32628
        maxX = getCurveValue(1, equationX),
32629
        maxY = getCurveValue(1, equationY);
32630
      if (minX > maxX) {
32631
        temp = maxX;
32632
        maxX = minX;
32633
        minX = temp;
32634
      }
32635
      if (minY > maxY) {
32636
        temp = maxY;
32637
        maxY = minY;
32638
        minY = temp;
32639
      }
32640
      var rootsX = solveEquation(derivativeX);
32641
      for (var _i4 = 0; _i4 < rootsX.length; _i4++) {
32642
        if (rootsX[_i4] >= 0 && rootsX[_i4] <= 1) {
32643
          var _x = getCurveValue(rootsX[_i4], equationX);
32644
          if (_x < minX) {
32645
            minX = _x;
32646
          }
32647
          if (_x > maxX) {
32648
            maxX = _x;
32649
          }
32650
        }
32651
      }
32652
      var rootsY = solveEquation(derivativeY);
32653
      for (var _i5 = 0; _i5 < rootsY.length; _i5++) {
32654
        if (rootsY[_i5] >= 0 && rootsY[_i5] <= 1) {
32655
          var _y = getCurveValue(rootsY[_i5], equationY);
32656
          if (_y < minY) {
32657
            minY = _y;
32658
          }
32659
          if (_y > maxY) {
32660
            maxY = _y;
32661
          }
32662
        }
32663
      }
32664
      return [minX, minY, maxX, maxY];
32665
    };
32666
    this.getPointAtLength = function (l) {
32667
      if (isEqual(l, 0)) {
32668
        return this.startPoint;
32669
      }
32670
      if (isEqual(l, this.totalLength)) {
32671
        return this.endPoint;
32672
      }
32673
      if (l < 0 || l > this.totalLength) {
32674
        return;
32675
      }
32676
      for (var _i6 = 1; _i6 <= divisions; _i6++) {
32677
        var l1 = lengthMap[_i6 - 1],
32678
          l2 = lengthMap[_i6];
32679
        if (l1 <= l && l <= l2) {
32680
          var _t = (_i6 - (l2 - l) / (l2 - l1)) / divisions,
32681
            _x2 = getCurveValue(_t, equationX),
32682
            _y2 = getCurveValue(_t, equationY),
32683
            _dx = getCurveValue(_t, derivativeX),
32684
            _dy = getCurveValue(_t, derivativeY);
32685
          return [_x2, _y2, Math.atan2(_dy, _dx)];
32686
        }
32687
      }
32688
    };
32689
  };
32690
  var LineSegment = function LineSegment(p1x, p1y, p2x, p2y) {
32691
    this.totalLength = Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));
32692
    this.startPoint = [p1x, p1y, Math.atan2(p2y - p1y, p2x - p1x)];
32693
    this.endPoint = [p2x, p2y, Math.atan2(p2y - p1y, p2x - p1x)];
32694
    this.getBoundingBox = function () {
32695
      return [Math.min(this.startPoint[0], this.endPoint[0]), Math.min(this.startPoint[1], this.endPoint[1]), Math.max(this.startPoint[0], this.endPoint[0]), Math.max(this.startPoint[1], this.endPoint[1])];
32696
    };
32697
    this.getPointAtLength = function (l) {
32698
      if (l >= 0 && l <= this.totalLength) {
32699
        var r = l / this.totalLength || 0,
32700
          _x3 = this.startPoint[0] + r * (this.endPoint[0] - this.startPoint[0]),
32701
          _y3 = this.startPoint[1] + r * (this.endPoint[1] - this.startPoint[1]);
32702
        return [_x3, _y3, this.startPoint[2]];
32703
      }
32704
    };
32705
  };
32706
  var SvgShape = function SvgShape() {
32707
    this.pathCommands = [];
32708
    this.pathSegments = [];
32709
    this.startPoint = null;
32710
    this.endPoint = null;
32711
    this.totalLength = 0;
32712
    var startX = 0,
32713
      startY = 0,
32714
      currX = 0,
32715
      currY = 0,
32716
      lastCom,
32717
      lastCtrlX,
32718
      lastCtrlY;
32719
    this.move = function (x, y) {
32720
      startX = currX = x;
32721
      startY = currY = y;
32722
      return null;
32723
    };
32724
    this.line = function (x, y) {
32725
      var segment = new LineSegment(currX, currY, x, y);
32726
      currX = x;
32727
      currY = y;
32728
      return segment;
32729
    };
32730
    this.curve = function (c1x, c1y, c2x, c2y, x, y) {
32731
      var segment = new BezierSegment(currX, currY, c1x, c1y, c2x, c2y, x, y);
32732
      currX = x;
32733
      currY = y;
32734
      return segment;
32735
    };
32736
    this.close = function () {
32737
      var segment = new LineSegment(currX, currY, startX, startY);
32738
      currX = startX;
32739
      currY = startY;
32740
      return segment;
32741
    };
32742
    this.addCommand = function (data) {
32743
      this.pathCommands.push(data);
32744
      var segment = this[data[0]].apply(this, data.slice(3));
32745
      if (segment) {
32746
        segment.hasStart = data[1];
32747
        segment.hasEnd = data[2];
32748
        this.startPoint = this.startPoint || segment.startPoint;
32749
        this.endPoint = segment.endPoint;
32750
        this.pathSegments.push(segment);
32751
        this.totalLength += segment.totalLength;
32752
      }
32753
    };
32754
    this.M = function (x, y) {
32755
      this.addCommand(['move', true, true, x, y]);
32756
      lastCom = 'M';
32757
      return this;
32758
    };
32759
    this.m = function (x, y) {
32760
      return this.M(currX + x, currY + y);
32761
    };
32762
    this.Z = this.z = function () {
32763
      this.addCommand(['close', true, true]);
32764
      lastCom = 'Z';
32765
      return this;
32766
    };
32767
    this.L = function (x, y) {
32768
      this.addCommand(['line', true, true, x, y]);
32769
      lastCom = 'L';
32770
      return this;
32771
    };
32772
    this.l = function (x, y) {
32773
      return this.L(currX + x, currY + y);
32774
    };
32775
    this.H = function (x) {
32776
      return this.L(x, currY);
32777
    };
32778
    this.h = function (x) {
32779
      return this.L(currX + x, currY);
32780
    };
32781
    this.V = function (y) {
32782
      return this.L(currX, y);
32783
    };
32784
    this.v = function (y) {
32785
      return this.L(currX, currY + y);
32786
    };
32787
    this.C = function (c1x, c1y, c2x, c2y, x, y) {
32788
      this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);
32789
      lastCom = 'C';
32790
      lastCtrlX = c2x;
32791
      lastCtrlY = c2y;
32792
      return this;
32793
    };
32794
    this.c = function (c1x, c1y, c2x, c2y, x, y) {
32795
      return this.C(currX + c1x, currY + c1y, currX + c2x, currY + c2y, currX + x, currY + y);
32796
    };
32797
    this.S = function (c1x, c1y, x, y) {
32798
      return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), c1x, c1y, x, y);
32799
    };
32800
    this.s = function (c1x, c1y, x, y) {
32801
      return this.C(currX + (lastCom === 'C' ? currX - lastCtrlX : 0), currY + (lastCom === 'C' ? currY - lastCtrlY : 0), currX + c1x, currY + c1y, currX + x, currY + y);
32802
    };
32803
    this.Q = function (cx, cy, x, y) {
32804
      var c1x = currX + 2 / 3 * (cx - currX),
32805
        c1y = currY + 2 / 3 * (cy - currY),
32806
        c2x = x + 2 / 3 * (cx - x),
32807
        c2y = y + 2 / 3 * (cy - y);
32808
      this.addCommand(['curve', true, true, c1x, c1y, c2x, c2y, x, y]);
32809
      lastCom = 'Q';
32810
      lastCtrlX = cx;
32811
      lastCtrlY = cy;
32812
      return this;
32813
    };
32814
    this.q = function (c1x, c1y, x, y) {
32815
      return this.Q(currX + c1x, currY + c1y, currX + x, currY + y);
32816
    };
32817
    this.T = function (x, y) {
32818
      return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), x, y);
32819
    };
32820
    this.t = function (x, y) {
32821
      return this.Q(currX + (lastCom === 'Q' ? currX - lastCtrlX : 0), currY + (lastCom === 'Q' ? currY - lastCtrlY : 0), currX + x, currY + y);
32822
    };
32823
    this.A = function (rx, ry, fi, fa, fs, x, y) {
32824
      if (isEqual(rx, 0) || isEqual(ry, 0)) {
32825
        this.addCommand(['line', true, true, x, y]);
32826
      } else {
32827
        fi = fi * (Math.PI / 180);
32828
        rx = Math.abs(rx);
32829
        ry = Math.abs(ry);
32830
        fa = 1 * !!fa;
32831
        fs = 1 * !!fs;
32832
        var x1 = Math.cos(fi) * (currX - x) / 2 + Math.sin(fi) * (currY - y) / 2,
32833
          y1 = Math.cos(fi) * (currY - y) / 2 - Math.sin(fi) * (currX - x) / 2,
32834
          lambda = x1 * x1 / (rx * rx) + y1 * y1 / (ry * ry);
32835
        if (lambda > 1) {
32836
          rx *= Math.sqrt(lambda);
32837
          ry *= Math.sqrt(lambda);
32838
        }
32839
        var r = Math.sqrt(Math.max(0, rx * rx * ry * ry - rx * rx * y1 * y1 - ry * ry * x1 * x1) / (rx * rx * y1 * y1 + ry * ry * x1 * x1)),
32840
          x2 = (fa === fs ? -1 : 1) * r * rx * y1 / ry,
32841
          y2 = (fa === fs ? 1 : -1) * r * ry * x1 / rx;
32842
        var cx = Math.cos(fi) * x2 - Math.sin(fi) * y2 + (currX + x) / 2,
32843
          cy = Math.sin(fi) * x2 + Math.cos(fi) * y2 + (currY + y) / 2,
32844
          th1 = Math.atan2((y1 - y2) / ry, (x1 - x2) / rx),
32845
          th2 = Math.atan2((-y1 - y2) / ry, (-x1 - x2) / rx);
32846
        if (fs === 0 && th2 - th1 > 0) {
32847
          th2 -= 2 * Math.PI;
32848
        } else if (fs === 1 && th2 - th1 < 0) {
32849
          th2 += 2 * Math.PI;
32850
        }
32851
        var segms = Math.ceil(Math.abs(th2 - th1) / (Math.PI / precision));
32852
        for (var i = 0; i < segms; i++) {
32853
          var th3 = th1 + i * (th2 - th1) / segms,
32854
            th4 = th1 + (i + 1) * (th2 - th1) / segms,
32855
            t = 4 / 3 * Math.tan((th4 - th3) / 4);
32856
          var c1x = cx + Math.cos(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) - Math.sin(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),
32857
            c1y = cy + Math.sin(fi) * rx * (Math.cos(th3) - t * Math.sin(th3)) + Math.cos(fi) * ry * (Math.sin(th3) + t * Math.cos(th3)),
32858
            c2x = cx + Math.cos(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) - Math.sin(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),
32859
            c2y = cy + Math.sin(fi) * rx * (Math.cos(th4) + t * Math.sin(th4)) + Math.cos(fi) * ry * (Math.sin(th4) - t * Math.cos(th4)),
32860
            endX = cx + Math.cos(fi) * rx * Math.cos(th4) - Math.sin(fi) * ry * Math.sin(th4),
32861
            endY = cy + Math.sin(fi) * rx * Math.cos(th4) + Math.cos(fi) * ry * Math.sin(th4);
32862
          this.addCommand(['curve', i === 0, i === segms - 1, c1x, c1y, c2x, c2y, endX, endY]);
32863
        }
32864
      }
32865
      lastCom = 'A';
32866
      return this;
32867
    };
32868
    this.a = function (rx, ry, fi, fa, fs, x, y) {
32869
      return this.A(rx, ry, fi, fa, fs, currX + x, currY + y);
32870
    };
32871
    this.path = function (d) {
32872
      var command,
32873
        value,
32874
        temp,
32875
        parser = new StringParser((d || '').trim());
32876
      while (command = parser.match(/^[astvzqmhlcASTVZQMHLC]/)) {
32877
        parser.matchSeparator();
32878
        var values = [];
32879
        while (value = PathFlags[command + values.length] ? parser.match(/^[01]/) : parser.matchNumber()) {
32880
          parser.matchSeparator();
32881
          if (values.length === PathArguments[command]) {
32882
            this[command].apply(this, values);
32883
            values = [];
32884
            if (command === 'M') {
32885
              command = 'L';
32886
            } else if (command === 'm') {
32887
              command = 'l';
32888
            }
32889
          }
32890
          values.push(Number(value));
32891
        }
32892
        if (values.length === PathArguments[command]) {
32893
          this[command].apply(this, values);
32894
        } else {
32895
          warningCallback('SvgPath: command ' + command + ' with ' + values.length + ' numbers');
32896
          return;
32897
        }
32898
      }
32899
      if (temp = parser.matchAll()) {
32900
        warningCallback('SvgPath: unexpected string ' + temp);
32901
      }
32902
      return this;
32903
    };
32904
    this.getBoundingBox = function () {
32905
      var bbox = [Infinity, Infinity, -Infinity, -Infinity];
32906
      function addBounds(bbox1) {
32907
        if (bbox1[0] < bbox[0]) {
32908
          bbox[0] = bbox1[0];
32909
        }
32910
        if (bbox1[2] > bbox[2]) {
32911
          bbox[2] = bbox1[2];
32912
        }
32913
        if (bbox1[1] < bbox[1]) {
32914
          bbox[1] = bbox1[1];
32915
        }
32916
        if (bbox1[3] > bbox[3]) {
32917
          bbox[3] = bbox1[3];
32918
        }
32919
      }
32920
      for (var i = 0; i < this.pathSegments.length; i++) {
32921
        addBounds(this.pathSegments[i].getBoundingBox());
32922
      }
32923
      if (bbox[0] === Infinity) {
32924
        bbox[0] = 0;
32925
      }
32926
      if (bbox[1] === Infinity) {
32927
        bbox[1] = 0;
32928
      }
32929
      if (bbox[2] === -Infinity) {
32930
        bbox[2] = 0;
32931
      }
32932
      if (bbox[3] === -Infinity) {
32933
        bbox[3] = 0;
32934
      }
32935
      return bbox;
32936
    };
32937
    this.getPointAtLength = function (l) {
32938
      if (l >= 0 && l <= this.totalLength) {
32939
        var temp;
32940
        for (var i = 0; i < this.pathSegments.length; i++) {
32941
          if (temp = this.pathSegments[i].getPointAtLength(l)) {
32942
            return temp;
32943
          }
32944
          l -= this.pathSegments[i].totalLength;
32945
        }
32946
        return this.endPoint;
32947
      }
32948
    };
32949
    this.transform = function (m) {
32950
      this.pathSegments = [];
32951
      this.startPoint = null;
32952
      this.endPoint = null;
32953
      this.totalLength = 0;
32954
      for (var i = 0; i < this.pathCommands.length; i++) {
32955
        var data = this.pathCommands.shift();
32956
        for (var j = 3; j < data.length; j += 2) {
32957
          var p = transformPoint([data[j], data[j + 1]], m);
32958
          data[j] = p[0];
32959
          data[j + 1] = p[1];
32960
        }
32961
        this.addCommand(data);
32962
      }
32963
      return this;
32964
    };
32965
    this.mergeShape = function (shape) {
32966
      for (var i = 0; i < shape.pathCommands.length; i++) {
32967
        this.addCommand(shape.pathCommands[i].slice());
32968
      }
32969
      return this;
32970
    };
32971
    this.clone = function () {
32972
      return new SvgShape().mergeShape(this);
32973
    };
32974
    this.insertInDocument = function () {
32975
      for (var i = 0; i < this.pathCommands.length; i++) {
32976
        var command = this.pathCommands[i][0],
32977
          values = this.pathCommands[i].slice(3);
32978
        switch (command) {
32979
          case 'move':
32980
            doc.moveTo(values[0], values[1]);
32981
            break;
32982
          case 'line':
32983
            doc.lineTo(values[0], values[1]);
32984
            break;
32985
          case 'curve':
32986
            doc.bezierCurveTo(values[0], values[1], values[2], values[3], values[4], values[5]);
32987
            break;
32988
          case 'close':
32989
            doc.closePath();
32990
            break;
32991
        }
32992
      }
32993
    };
32994
    this.getSubPaths = function () {
32995
      var subPaths = [],
32996
        shape = new SvgShape();
32997
      for (var i = 0; i < this.pathCommands.length; i++) {
32998
        var data = this.pathCommands[i],
32999
          command = this.pathCommands[i][0];
33000
        if (command === 'move' && i !== 0) {
33001
          subPaths.push(shape);
33002
          shape = new SvgShape();
33003
        }
33004
        shape.addCommand(data);
33005
      }
33006
      subPaths.push(shape);
33007
      return subPaths;
33008
    };
33009
    this.getMarkers = function () {
33010
      var markers = [],
33011
        subPaths = this.getSubPaths();
33012
      for (var i = 0; i < subPaths.length; i++) {
33013
        var subPath = subPaths[i],
33014
          subPathMarkers = [];
33015
        for (var j = 0; j < subPath.pathSegments.length; j++) {
33016
          var segment = subPath.pathSegments[j];
33017
          if (isNotEqual(segment.totalLength, 0) || j === 0 || j === subPath.pathSegments.length - 1) {
33018
            if (segment.hasStart) {
33019
              var startMarker = segment.getPointAtLength(0),
33020
                prevEndMarker = subPathMarkers.pop();
33021
              if (prevEndMarker) {
33022
                startMarker[2] = 0.5 * (prevEndMarker[2] + startMarker[2]);
33023
              }
33024
              subPathMarkers.push(startMarker);
33025
            }
33026
            if (segment.hasEnd) {
33027
              var endMarker = segment.getPointAtLength(segment.totalLength);
33028
              subPathMarkers.push(endMarker);
33029
            }
33030
          }
33031
        }
33032
        markers = markers.concat(subPathMarkers);
33033
      }
33034
      return markers;
33035
    };
33036
  };
33037
  var SvgElem = function SvgElem(obj, inherits) {
33038
    var styleCache = Object.create(null);
33039
    var childrenCache = null;
33040
    this.name = obj.nodeName;
33041
    this.isOuterElement = obj === svg || !obj.parentNode;
33042
    this.inherits = inherits || (!this.isOuterElement ? createSVGElement(obj.parentNode, null) : null);
33043
    this.stack = this.inherits ? this.inherits.stack.concat(obj) : [obj];
33044
    this.style = parseStyleAttr(typeof obj.getAttribute === 'function' && obj.getAttribute('style'));
33045
    this.css = useCSS ? getComputedStyle(obj) : getStyle(obj);
33046
    this.allowedChildren = [];
33047
    this.attr = function (key) {
33048
      if (typeof obj.getAttribute === 'function') {
33049
        return obj.getAttribute(key);
33050
      }
33051
    };
33052
    this.resolveUrl = function (value) {
33053
      var temp = (value || '').match(/^\s*(?:url\("(.*)#(.*)"\)|url\('(.*)#(.*)'\)|url\((.*)#(.*)\)|(.*)#(.*))\s*$/) || [];
33054
      var file = temp[1] || temp[3] || temp[5] || temp[7],
33055
        id = temp[2] || temp[4] || temp[6] || temp[8];
33056
      if (id) {
33057
        if (!file) {
33058
          var svgObj = svg.getElementById(id);
33059
          if (svgObj) {
33060
            if (this.stack.indexOf(svgObj) === -1) {
33061
              return svgObj;
33062
            } else {
33063
              warningCallback('SVGtoPDF: loop of circular references for id "' + id + '"');
33064
              return;
33065
            }
33066
          }
33067
        }
33068
        if (documentCallback) {
33069
          var svgs = documentCache[file];
33070
          if (!svgs) {
33071
            svgs = documentCallback(file);
33072
            if (!isArrayLike(svgs)) {
33073
              svgs = [svgs];
33074
            }
33075
            for (var i = 0; i < svgs.length; i++) {
33076
              if (typeof svgs[i] === 'string') {
33077
                svgs[i] = parseXml(svgs[i]);
33078
              }
33079
            }
33080
            documentCache[file] = svgs;
33081
          }
33082
          for (var _i7 = 0; _i7 < svgs.length; _i7++) {
33083
            var _svgObj = svgs[_i7].getElementById(id);
33084
            if (_svgObj) {
33085
              if (this.stack.indexOf(_svgObj) === -1) {
33086
                return _svgObj;
33087
              } else {
33088
                warningCallback('SVGtoPDF: loop of circular references for id "' + file + '#' + id + '"');
33089
                return;
33090
              }
33091
            }
33092
          }
33093
        }
33094
      }
33095
    };
33096
    this.computeUnits = function (value, unit, percent, isFontSize) {
33097
      if (unit === '%') {
33098
        return parseFloat(value) / 100 * (isFontSize || percent != null ? percent : this.getViewport());
33099
      } else if (unit === 'ex' || unit === 'em') {
33100
        return value * {
33101
          'em': 1,
33102
          'ex': 0.5
33103
        }[unit] * (isFontSize ? percent : this.get('font-size'));
33104
      } else {
33105
        return value * {
33106
          '': 1,
33107
          'px': 1,
33108
          'pt': 96 / 72,
33109
          'cm': 96 / 2.54,
33110
          'mm': 96 / 25.4,
33111
          'in': 96,
33112
          'pc': 96 / 6
33113
        }[unit];
33114
      }
33115
    };
33116
    this.computeLength = function (value, percent, initial, isFontSize) {
33117
      var parser = new StringParser((value || '').trim()),
33118
        temp1,
33119
        temp2;
33120
      if (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string' && !parser.matchAll()) {
33121
        return this.computeUnits(temp1, temp2, percent, isFontSize);
33122
      }
33123
      return initial;
33124
    };
33125
    this.computeLengthList = function (value, percent, strict) {
33126
      var parser = new StringParser((value || '').trim()),
33127
        result = [],
33128
        temp1,
33129
        temp2;
33130
      while (typeof (temp1 = parser.matchNumber()) === 'string' && typeof (temp2 = parser.matchLengthUnit()) === 'string') {
33131
        result.push(this.computeUnits(temp1, temp2, percent));
33132
        parser.matchSeparator();
33133
      }
33134
      if (strict && parser.matchAll()) {
33135
        return;
33136
      }
33137
      return result;
33138
    };
33139
    this.getLength = function (key, percent, initial) {
33140
      return this.computeLength(this.attr(key), percent, initial);
33141
    };
33142
    this.getLengthList = function (key, percent) {
33143
      return this.computeLengthList(this.attr(key), percent);
33144
    };
33145
    this.getUrl = function (key) {
33146
      return this.resolveUrl(this.attr(key));
33147
    };
33148
    this.getNumberList = function (key) {
33149
      var parser = new StringParser((this.attr(key) || '').trim()),
33150
        result = [],
33151
        temp;
33152
      while (temp = parser.matchNumber()) {
33153
        result.push(Number(temp));
33154
        parser.matchSeparator();
33155
      }
33156
      result.error = parser.matchAll();
33157
      return result;
33158
    };
33159
    this.getViewbox = function (key, initial) {
33160
      var viewBox = this.getNumberList(key);
33161
      if (viewBox.length === 4 && viewBox[2] >= 0 && viewBox[3] >= 0) {
33162
        return viewBox;
33163
      }
33164
      return initial;
33165
    };
33166
    this.getPercent = function (key, initial) {
33167
      var value = this.attr(key);
33168
      var parser = new StringParser((value || '').trim()),
33169
        temp1,
33170
        temp2;
33171
      var number = parser.matchNumber();
33172
      if (!number) {
33173
        return initial;
33174
      }
33175
      if (parser.match('%')) {
33176
        number *= 0.01;
33177
      }
33178
      if (parser.matchAll()) {
33179
        return initial;
33180
      }
33181
      return Math.max(0, Math.min(1, number));
33182
    };
33183
    this.chooseValue = function (args) {
33184
      for (var i = 0; i < arguments.length; i++) {
33185
        if (arguments[i] != null && arguments[i] === arguments[i]) {
33186
          return arguments[i];
33187
        }
33188
      }
33189
      return arguments[arguments.length - 1];
33190
    };
33191
    this.get = function (key) {
33192
      if (styleCache[key] !== undefined) {
33193
        return styleCache[key];
33194
      }
33195
      var keyInfo = Properties[key] || {},
33196
        value,
33197
        result;
33198
      for (var i = 0; i < 3; i++) {
33199
        switch (i) {
33200
          case 0:
33201
            if (key !== 'transform') {
33202
              // the CSS transform behaves strangely
33203
              value = this.css[keyInfo.css || key];
33204
            }
33205
            break;
33206
          case 1:
33207
            value = this.style[key];
33208
            break;
33209
          case 2:
33210
            value = this.attr(key);
33211
            break;
33212
        }
33213
        if (value === 'inherit') {
33214
          result = this.inherits ? this.inherits.get(key) : keyInfo.initial;
33215
          if (result != null) {
33216
            return styleCache[key] = result;
33217
          }
33218
        }
33219
        if (keyInfo.values != null) {
33220
          result = keyInfo.values[value];
33221
          if (result != null) {
33222
            return styleCache[key] = result;
33223
          }
33224
        }
33225
        if (value != null) {
33226
          var parsed = void 0;
33227
          switch (key) {
33228
            case 'font-size':
33229
              result = this.computeLength(value, this.inherits ? this.inherits.get(key) : keyInfo.initial, undefined, true);
33230
              break;
33231
            case 'baseline-shift':
33232
              result = this.computeLength(value, this.get('font-size'));
33233
              break;
33234
            case 'font-family':
33235
              result = value || undefined;
33236
              break;
33237
            case 'opacity':
33238
            case 'stroke-opacity':
33239
            case 'fill-opacity':
33240
            case 'stop-opacity':
33241
              parsed = parseFloat(value);
33242
              if (!isNaN(parsed)) {
33243
                result = Math.max(0, Math.min(1, parsed));
33244
              }
33245
              break;
33246
            case 'transform':
33247
              result = parseTranform(value);
33248
              break;
33249
            case 'stroke-dasharray':
33250
              if (value === 'none') {
33251
                result = [];
33252
              } else if (parsed = this.computeLengthList(value, this.getViewport(), true)) {
33253
                var sum = 0,
33254
                  error = false;
33255
                for (var j = 0; j < parsed.length; j++) {
33256
                  if (parsed[j] < 0) {
33257
                    error = true;
33258
                  }
33259
                  sum += parsed[j];
33260
                }
33261
                if (!error) {
33262
                  if (parsed.length % 2 === 1) {
33263
                    parsed = parsed.concat(parsed);
33264
                  }
33265
                  result = sum === 0 ? [] : parsed;
33266
                }
33267
              }
33268
              break;
33269
            case 'color':
33270
              if (value === 'none' || value === 'transparent') {
33271
                result = 'none';
33272
              } else {
33273
                result = parseColor(value);
33274
              }
33275
              break;
33276
            case 'fill':
33277
            case 'stroke':
33278
              if (value === 'none' || value === 'transparent') {
33279
                result = 'none';
33280
              } else if (value === 'currentColor') {
33281
                result = this.get('color');
33282
              } else if (parsed = parseColor(value)) {
33283
                return parsed;
33284
              } else if (parsed = (value || '').split(' ')) {
33285
                var object = this.resolveUrl(parsed[0]),
33286
                  fallbackColor = parseColor(parsed[1]);
33287
                if (object == null) {
33288
                  result = fallbackColor;
33289
                } else if (object.nodeName === 'linearGradient' || object.nodeName === 'radialGradient') {
33290
                  result = new SvgElemGradient(object, null, fallbackColor);
33291
                } else if (object.nodeName === 'pattern') {
33292
                  result = new SvgElemPattern(object, null, fallbackColor);
33293
                } else {
33294
                  result = fallbackColor;
33295
                }
33296
              }
33297
              break;
33298
            case 'stop-color':
33299
              if (value === 'none' || value === 'transparent') {
33300
                result = 'none';
33301
              } else if (value === 'currentColor') {
33302
                result = this.get('color');
33303
              } else {
33304
                result = parseColor(value);
33305
              }
33306
              break;
33307
            case 'marker-start':
33308
            case 'marker-mid':
33309
            case 'marker-end':
33310
            case 'clip-path':
33311
            case 'mask':
33312
              if (value === 'none') {
33313
                result = 'none';
33314
              } else {
33315
                result = this.resolveUrl(value);
33316
              }
33317
              break;
33318
            case 'stroke-width':
33319
              parsed = this.computeLength(value, this.getViewport());
33320
              if (parsed != null && parsed >= 0) {
33321
                result = parsed;
33322
              }
33323
              break;
33324
            case 'stroke-miterlimit':
33325
              parsed = parseFloat(value);
33326
              if (parsed != null && parsed >= 1) {
33327
                result = parsed;
33328
              }
33329
              break;
33330
            case 'word-spacing':
33331
            case 'letter-spacing':
33332
              result = this.computeLength(value, this.getViewport());
33333
              break;
33334
            case 'stroke-dashoffset':
33335
              result = this.computeLength(value, this.getViewport());
33336
              if (result != null) {
33337
                if (result < 0) {
33338
                  // fix for crbug.com/660850
33339
                  var dasharray = this.get('stroke-dasharray');
33340
                  for (var _j = 0; _j < dasharray.length; _j++) {
33341
                    result += dasharray[_j];
33342
                  }
33343
                }
33344
              }
33345
              break;
33346
          }
33347
          if (result != null) {
33348
            return styleCache[key] = result;
33349
          }
33350
        }
33351
      }
33352
      return styleCache[key] = keyInfo.inherit && this.inherits ? this.inherits.get(key) : keyInfo.initial;
33353
    };
33354
    this.getChildren = function () {
33355
      if (childrenCache != null) {
33356
        return childrenCache;
33357
      }
33358
      var children = [];
33359
      for (var i = 0; i < obj.childNodes.length; i++) {
33360
        var child = obj.childNodes[i];
33361
        if (!child.error && this.allowedChildren.indexOf(child.nodeName) !== -1) {
33362
          children.push(createSVGElement(child, this));
33363
        }
33364
      }
33365
      return childrenCache = children;
33366
    };
33367
    this.getParentVWidth = function () {
33368
      return this.inherits ? this.inherits.getVWidth() : viewportWidth;
33369
    };
33370
    this.getParentVHeight = function () {
33371
      return this.inherits ? this.inherits.getVHeight() : viewportHeight;
33372
    };
33373
    this.getParentViewport = function () {
33374
      return Math.sqrt(0.5 * this.getParentVWidth() * this.getParentVWidth() + 0.5 * this.getParentVHeight() * this.getParentVHeight());
33375
    };
33376
    this.getVWidth = function () {
33377
      return this.getParentVWidth();
33378
    };
33379
    this.getVHeight = function () {
33380
      return this.getParentVHeight();
33381
    };
33382
    this.getViewport = function () {
33383
      return Math.sqrt(0.5 * this.getVWidth() * this.getVWidth() + 0.5 * this.getVHeight() * this.getVHeight());
33384
    };
33385
    this.getBoundingBox = function () {
33386
      var shape = this.getBoundingShape();
33387
      return shape.getBoundingBox();
33388
    };
33389
  };
33390
  var SvgElemStylable = function SvgElemStylable(obj, inherits) {
33391
    SvgElem.call(this, obj, inherits);
33392
    this.transform = function () {
33393
      doc.transform.apply(doc, this.getTransformation());
33394
    };
33395
    this.clip = function () {
33396
      if (this.get('clip-path') !== 'none') {
33397
        var clipPath = new SvgElemClipPath(this.get('clip-path'), null);
33398
        clipPath.useMask(this.getBoundingBox());
33399
        return true;
33400
      }
33401
    };
33402
    this.mask = function () {
33403
      if (this.get('mask') !== 'none') {
33404
        var mask = new SvgElemMask(this.get('mask'), null);
33405
        mask.useMask(this.getBoundingBox());
33406
        return true;
33407
      }
33408
    };
33409
    this.getFill = function (isClip, isMask) {
33410
      var opacity = this.get('opacity'),
33411
        fill = this.get('fill'),
33412
        fillOpacity = this.get('fill-opacity');
33413
      if (isClip) {
33414
        return DefaultColors.white;
33415
      }
33416
      if (fill !== 'none' && opacity && fillOpacity) {
33417
        if (fill instanceof SvgElemGradient || fill instanceof SvgElemPattern) {
33418
          return fill.getPaint(this.getBoundingBox(), fillOpacity * opacity, isClip, isMask);
33419
        }
33420
        return opacityToColor(fill, fillOpacity * opacity, isMask);
33421
      }
33422
    };
33423
    this.getStroke = function (isClip, isMask) {
33424
      var opacity = this.get('opacity'),
33425
        stroke = this.get('stroke'),
33426
        strokeOpacity = this.get('stroke-opacity');
33427
      if (isClip || isEqual(this.get('stroke-width'), 0)) {
33428
        return;
33429
      }
33430
      if (stroke !== 'none' && opacity && strokeOpacity) {
33431
        if (stroke instanceof SvgElemGradient || stroke instanceof SvgElemPattern) {
33432
          return stroke.getPaint(this.getBoundingBox(), strokeOpacity * opacity, isClip, isMask);
33433
        }
33434
        return opacityToColor(stroke, strokeOpacity * opacity, isMask);
33435
      }
33436
    };
33437
  };
33438
  var SvgElemHasChildren = function SvgElemHasChildren(obj, inherits) {
33439
    SvgElemStylable.call(this, obj, inherits);
33440
    this.allowedChildren = ['use', 'g', 'a', 'svg', 'image', 'rect', 'circle', 'ellipse', 'line', 'polyline', 'polygon', 'path', 'text'];
33441
    this.getBoundingShape = function () {
33442
      var shape = new SvgShape(),
33443
        children = this.getChildren();
33444
      for (var i = 0; i < children.length; i++) {
33445
        if (children[i].get('display') !== 'none') {
33446
          if (typeof children[i].getBoundingShape === 'function') {
33447
            var childShape = children[i].getBoundingShape().clone();
33448
            if (typeof children[i].getTransformation === 'function') {
33449
              childShape.transform(children[i].getTransformation());
33450
            }
33451
            shape.mergeShape(childShape);
33452
          }
33453
        }
33454
      }
33455
      return shape;
33456
    };
33457
    this.drawChildren = function (isClip, isMask) {
33458
      var children = this.getChildren();
33459
      for (var i = 0; i < children.length; i++) {
33460
        if (children[i].get('display') !== 'none') {
33461
          if (typeof children[i].drawInDocument === 'function') {
33462
            children[i].drawInDocument(isClip, isMask);
33463
          }
33464
        }
33465
      }
33466
    };
33467
  };
33468
  var SvgElemContainer = function SvgElemContainer(obj, inherits) {
33469
    SvgElemHasChildren.call(this, obj, inherits);
33470
    this.drawContent = function (isClip, isMask) {
33471
      this.transform();
33472
      var clipped = this.clip(),
33473
        masked = this.mask(),
33474
        group;
33475
      if ((this.get('opacity') < 1 || clipped || masked) && !isClip) {
33476
        group = docBeginGroup(getPageBBox());
33477
      }
33478
      this.drawChildren(isClip, isMask);
33479
      if (group) {
33480
        docEndGroup(group);
33481
        doc.fillOpacity(this.get('opacity'));
33482
        docInsertGroup(group);
33483
      }
33484
    };
33485
  };
33486
  var SvgElemUse = function SvgElemUse(obj, inherits) {
33487
    SvgElemContainer.call(this, obj, inherits);
33488
    var x = this.getLength('x', this.getVWidth(), 0),
33489
      y = this.getLength('y', this.getVHeight(), 0),
33490
      child = this.getUrl('href') || this.getUrl('xlink:href');
33491
    if (child) {
33492
      child = createSVGElement(child, this);
33493
    }
33494
    this.getChildren = function () {
33495
      return child ? [child] : [];
33496
    };
33497
    this.drawInDocument = function (isClip, isMask) {
33498
      doc.save();
33499
      this.drawContent(isClip, isMask);
33500
      doc.restore();
33501
    };
33502
    this.getTransformation = function () {
33503
      return multiplyMatrix(this.get('transform'), [1, 0, 0, 1, x, y]);
33504
    };
33505
  };
33506
  var SvgElemSymbol = function SvgElemSymbol(obj, inherits) {
33507
    SvgElemContainer.call(this, obj, inherits);
33508
    var width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),
33509
      height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight());
33510
    if (inherits instanceof SvgElemUse) {
33511
      width = inherits.getLength('width', inherits.getParentVWidth(), width);
33512
      height = inherits.getLength('height', inherits.getParentVHeight(), height);
33513
    }
33514
    var aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),
33515
      viewBox = this.getViewbox('viewBox', [0, 0, width, height]);
33516
    this.getVWidth = function () {
33517
      return viewBox[2];
33518
    };
33519
    this.getVHeight = function () {
33520
      return viewBox[3];
33521
    };
33522
    this.drawInDocument = function (isClip, isMask) {
33523
      doc.save();
33524
      this.drawContent(isClip, isMask);
33525
      doc.restore();
33526
    };
33527
    this.getTransformation = function () {
33528
      return multiplyMatrix(parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]);
33529
    };
33530
  };
33531
  var SvgElemGroup = function SvgElemGroup(obj, inherits) {
33532
    SvgElemContainer.call(this, obj, inherits);
33533
    this.drawInDocument = function (isClip, isMask) {
33534
      doc.save();
33535
      if (this.link && !isClip && !isMask) {
33536
        this.addLink();
33537
      }
33538
      this.drawContent(isClip, isMask);
33539
      doc.restore();
33540
    };
33541
    this.getTransformation = function () {
33542
      return this.get('transform');
33543
    };
33544
  };
33545
  var SvgElemLink = function SvgElemLink(obj, inherits) {
33546
    if (inherits && inherits.isText) {
33547
      SvgElemTspan.call(this, obj, inherits);
33548
      this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];
33549
    } else {
33550
      SvgElemGroup.call(this, obj, inherits);
33551
    }
33552
    this.link = this.attr('href') || this.attr('xlink:href');
33553
    this.addLink = function () {
33554
      if (this.link.match(/^(?:[a-z][a-z0-9+.-]*:|\/\/)?/i) && this.getChildren().length) {
33555
        var bbox = this.getBoundingShape().transform(getGlobalMatrix()).getBoundingBox();
33556
        docInsertLink(bbox[0], bbox[1], bbox[2], bbox[3], this.link);
33557
      }
33558
    };
33559
  };
33560
  var SvgElemSvg = function SvgElemSvg(obj, inherits) {
33561
    SvgElemContainer.call(this, obj, inherits);
33562
    var width = this.getLength('width', this.getParentVWidth(), this.getParentVWidth()),
33563
      height = this.getLength('height', this.getParentVHeight(), this.getParentVHeight()),
33564
      x = this.getLength('x', this.getParentVWidth(), 0),
33565
      y = this.getLength('y', this.getParentVHeight(), 0);
33566
    if (inherits instanceof SvgElemUse) {
33567
      width = inherits.getLength('width', inherits.getParentVWidth(), width);
33568
      height = inherits.getLength('height', inherits.getParentVHeight(), height);
33569
    }
33570
    var aspectRatio = this.attr('preserveAspectRatio'),
33571
      viewBox = this.getViewbox('viewBox', [0, 0, width, height]);
33572
    if (this.isOuterElement && preserveAspectRatio) {
33573
      x = y = 0;
33574
      width = viewportWidth;
33575
      height = viewportHeight;
33576
      aspectRatio = preserveAspectRatio;
33577
    }
33578
    this.getVWidth = function () {
33579
      return viewBox[2];
33580
    };
33581
    this.getVHeight = function () {
33582
      return viewBox[3];
33583
    };
33584
    this.drawInDocument = function (isClip, isMask) {
33585
      doc.save();
33586
      if (this.get('overflow') === 'hidden') {
33587
        new SvgShape().M(x, y).L(x + width, y).L(x + width, y + height).L(x, y + height).Z().transform(this.get('transform')).insertInDocument();
33588
        doc.clip();
33589
      }
33590
      this.drawContent(isClip, isMask);
33591
      doc.restore();
33592
    };
33593
    this.getTransformation = function () {
33594
      return multiplyMatrix(this.get('transform'), [1, 0, 0, 1, x, y], parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3]), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]);
33595
    };
33596
  };
33597
  var SVGElemImage = function SVGElemImage(obj, inherits) {
33598
    SvgElemStylable.call(this, obj, inherits);
33599
    var link = imageCallback(this.attr('href') || this.attr('xlink:href') || ''),
33600
      x = this.getLength('x', this.getVWidth(), 0),
33601
      y = this.getLength('y', this.getVHeight(), 0),
33602
      width = this.getLength('width', this.getVWidth(), 'auto'),
33603
      height = this.getLength('height', this.getVHeight(), 'auto'),
33604
      image;
33605
    try {
33606
      image = doc.openImage(link);
33607
    } catch (e) {
33608
      warningCallback('SVGElemImage: failed to open image "' + link + '" in PDFKit');
33609
    }
33610
    if (image) {
33611
      if (width === 'auto' && height !== 'auto') {
33612
        width = height * image.width / image.height;
33613
      } else if (height === 'auto' && width !== 'auto') {
33614
        height = width * image.height / image.width;
33615
      } else if (width === 'auto' && height === 'auto') {
33616
        width = image.width;
33617
        height = image.height;
33618
      }
33619
    }
33620
    if (width === 'auto' || width < 0) {
33621
      width = 0;
33622
    }
33623
    if (height === 'auto' || height < 0) {
33624
      height = 0;
33625
    }
33626
    this.getTransformation = function () {
33627
      return this.get('transform');
33628
    };
33629
    this.getBoundingShape = function () {
33630
      return new SvgShape().M(x, y).L(x + width, y).M(x + width, y + height).L(x, y + height);
33631
    };
33632
    this.drawInDocument = function (isClip, isMask) {
33633
      if (this.get('visibility') === 'hidden' || !image) {
33634
        return;
33635
      }
33636
      doc.save();
33637
      this.transform();
33638
      if (this.get('overflow') === 'hidden') {
33639
        doc.rect(x, y, width, height).clip();
33640
      }
33641
      this.clip();
33642
      this.mask();
33643
      doc.translate(x, y);
33644
      doc.transform.apply(doc, parseAspectRatio(this.attr('preserveAspectRatio'), width, height, image ? image.width : width, image ? image.height : height));
33645
      if (!isClip) {
33646
        doc.fillOpacity(this.get('opacity'));
33647
        doc.image(image, 0, 0);
33648
      } else {
33649
        doc.rect(0, 0, image.width, image.height);
33650
        docFillColor(DefaultColors.white).fill();
33651
      }
33652
      doc.restore();
33653
    };
33654
  };
33655
  var SvgElemPattern = function SvgElemPattern(obj, inherits, fallback) {
33656
    SvgElemHasChildren.call(this, obj, inherits);
33657
    this.ref = function () {
33658
      var ref = this.getUrl('href') || this.getUrl('xlink:href');
33659
      if (ref && ref.nodeName === obj.nodeName) {
33660
        return new SvgElemPattern(ref, inherits, fallback);
33661
      }
33662
    }.call(this);
33663
    var _attr = this.attr;
33664
    this.attr = function (key) {
33665
      var attr = _attr.call(this, key);
33666
      if (attr != null || key === 'href' || key === 'xlink:href') {
33667
        return attr;
33668
      }
33669
      return this.ref ? this.ref.attr(key) : null;
33670
    };
33671
    var _getChildren = this.getChildren;
33672
    this.getChildren = function () {
33673
      var children = _getChildren.call(this);
33674
      if (children.length > 0) {
33675
        return children;
33676
      }
33677
      return this.ref ? this.ref.getChildren() : [];
33678
    };
33679
    this.getPaint = function (bBox, gOpacity, isClip, isMask) {
33680
      var bBoxUnitsPattern = this.attr('patternUnits') !== 'userSpaceOnUse',
33681
        bBoxUnitsContent = this.attr('patternContentUnits') === 'objectBoundingBox',
33682
        x = this.getLength('x', bBoxUnitsPattern ? 1 : this.getParentVWidth(), 0),
33683
        y = this.getLength('y', bBoxUnitsPattern ? 1 : this.getParentVHeight(), 0),
33684
        width = this.getLength('width', bBoxUnitsPattern ? 1 : this.getParentVWidth(), 0),
33685
        height = this.getLength('height', bBoxUnitsPattern ? 1 : this.getParentVHeight(), 0);
33686
      if (bBoxUnitsContent && !bBoxUnitsPattern) {
33687
        // Use the same units for pattern & pattern content
33688
        x = (x - bBox[0]) / (bBox[2] - bBox[0]) || 0;
33689
        y = (y - bBox[1]) / (bBox[3] - bBox[1]) || 0;
33690
        width = width / (bBox[2] - bBox[0]) || 0;
33691
        height = height / (bBox[3] - bBox[1]) || 0;
33692
      } else if (!bBoxUnitsContent && bBoxUnitsPattern) {
33693
        x = bBox[0] + x * (bBox[2] - bBox[0]);
33694
        y = bBox[1] + y * (bBox[3] - bBox[1]);
33695
        width = width * (bBox[2] - bBox[0]);
33696
        height = height * (bBox[3] - bBox[1]);
33697
      }
33698
      var viewBox = this.getViewbox('viewBox', [0, 0, width, height]),
33699
        aspectRatio = (this.attr('preserveAspectRatio') || '').trim(),
33700
        aspectRatioMatrix = multiplyMatrix(parseAspectRatio(aspectRatio, width, height, viewBox[2], viewBox[3], 0), [1, 0, 0, 1, -viewBox[0], -viewBox[1]]),
33701
        matrix = parseTranform(this.attr('patternTransform'));
33702
      if (bBoxUnitsContent) {
33703
        matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);
33704
      }
33705
      matrix = multiplyMatrix(matrix, [1, 0, 0, 1, x, y]);
33706
      if ((matrix = validateMatrix(matrix)) && (aspectRatioMatrix = validateMatrix(aspectRatioMatrix)) && (width = validateNumber(width)) && (height = validateNumber(height))) {
33707
        var group = docBeginGroup([0, 0, width, height]);
33708
        doc.transform.apply(doc, aspectRatioMatrix);
33709
        this.drawChildren(isClip, isMask);
33710
        docEndGroup(group);
33711
        return [docCreatePattern(group, width, height, matrix), gOpacity];
33712
      } else {
33713
        return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;
33714
      }
33715
    };
33716
    this.getVWidth = function () {
33717
      var bBoxUnitsPattern = this.attr('patternUnits') !== 'userSpaceOnUse',
33718
        width = this.getLength('width', bBoxUnitsPattern ? 1 : this.getParentVWidth(), 0);
33719
      return this.getViewbox('viewBox', [0, 0, width, 0])[2];
33720
    };
33721
    this.getVHeight = function () {
33722
      var bBoxUnitsPattern = this.attr('patternUnits') !== 'userSpaceOnUse',
33723
        height = this.getLength('height', bBoxUnitsPattern ? 1 : this.getParentVHeight(), 0);
33724
      return this.getViewbox('viewBox', [0, 0, 0, height])[3];
33725
    };
33726
  };
33727
  var SvgElemGradient = function SvgElemGradient(obj, inherits, fallback) {
33728
    SvgElem.call(this, obj, inherits);
33729
    this.allowedChildren = ['stop'];
33730
    this.ref = function () {
33731
      var ref = this.getUrl('href') || this.getUrl('xlink:href');
33732
      if (ref && ref.nodeName === obj.nodeName) {
33733
        return new SvgElemGradient(ref, inherits, fallback);
33734
      }
33735
    }.call(this);
33736
    var _attr = this.attr;
33737
    this.attr = function (key) {
33738
      var attr = _attr.call(this, key);
33739
      if (attr != null || key === 'href' || key === 'xlink:href') {
33740
        return attr;
33741
      }
33742
      return this.ref ? this.ref.attr(key) : null;
33743
    };
33744
    var _getChildren = this.getChildren;
33745
    this.getChildren = function () {
33746
      var children = _getChildren.call(this);
33747
      if (children.length > 0) {
33748
        return children;
33749
      }
33750
      return this.ref ? this.ref.getChildren() : [];
33751
    };
33752
    this.getPaint = function (bBox, gOpacity, isClip, isMask) {
33753
      var children = this.getChildren();
33754
      if (children.length === 0) {
33755
        return;
33756
      }
33757
      if (children.length === 1) {
33758
        var child = children[0],
33759
          stopColor = child.get('stop-color');
33760
        if (stopColor === 'none') {
33761
          return;
33762
        }
33763
        return opacityToColor(stopColor, child.get('stop-opacity') * gOpacity, isMask);
33764
      }
33765
      var bBoxUnits = this.attr('gradientUnits') !== 'userSpaceOnUse',
33766
        matrix = parseTranform(this.attr('gradientTransform')),
33767
        spread = this.attr('spreadMethod'),
33768
        grad,
33769
        x1,
33770
        x2,
33771
        y1,
33772
        y2,
33773
        r2,
33774
        nAfter = 0,
33775
        nBefore = 0,
33776
        nTotal = 1;
33777
      if (bBoxUnits) {
33778
        matrix = multiplyMatrix([bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]], matrix);
33779
      }
33780
      if (matrix = validateMatrix(matrix)) {
33781
        if (this.name === 'linearGradient') {
33782
          x1 = this.getLength('x1', bBoxUnits ? 1 : this.getVWidth(), 0);
33783
          x2 = this.getLength('x2', bBoxUnits ? 1 : this.getVWidth(), bBoxUnits ? 1 : this.getVWidth());
33784
          y1 = this.getLength('y1', bBoxUnits ? 1 : this.getVHeight(), 0);
33785
          y2 = this.getLength('y2', bBoxUnits ? 1 : this.getVHeight(), 0);
33786
        } else {
33787
          x2 = this.getLength('cx', bBoxUnits ? 1 : this.getVWidth(), bBoxUnits ? 0.5 : 0.5 * this.getVWidth());
33788
          y2 = this.getLength('cy', bBoxUnits ? 1 : this.getVHeight(), bBoxUnits ? 0.5 : 0.5 * this.getVHeight());
33789
          r2 = this.getLength('r', bBoxUnits ? 1 : this.getViewport(), bBoxUnits ? 0.5 : 0.5 * this.getViewport());
33790
          x1 = this.getLength('fx', bBoxUnits ? 1 : this.getVWidth(), x2);
33791
          y1 = this.getLength('fy', bBoxUnits ? 1 : this.getVHeight(), y2);
33792
          if (r2 < 0) {
33793
            warningCallback('SvgElemGradient: negative r value');
33794
          }
33795
          var d = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)),
33796
            multiplier = 1;
33797
          if (d > r2) {
33798
            // according to specification
33799
            multiplier = r2 / d;
33800
            x1 = x2 + (x1 - x2) * multiplier;
33801
            y1 = y2 + (y1 - y2) * multiplier;
33802
          }
33803
          r2 = Math.max(r2, d * multiplier * (1 + 1e-6)); // fix for edge-case gradients see issue #84
33804
        }
33805
33806
        if (spread === 'reflect' || spread === 'repeat') {
33807
          var inv = inverseMatrix(matrix),
33808
            corner1 = transformPoint([bBox[0], bBox[1]], inv),
33809
            corner2 = transformPoint([bBox[2], bBox[1]], inv),
33810
            corner3 = transformPoint([bBox[2], bBox[3]], inv),
33811
            corner4 = transformPoint([bBox[0], bBox[3]], inv);
33812
          if (this.name === 'linearGradient') {
33813
            // See file 'gradient-repeat-maths.png'
33814
            nAfter = Math.max((corner1[0] - x2) * (x2 - x1) + (corner1[1] - y2) * (y2 - y1), (corner2[0] - x2) * (x2 - x1) + (corner2[1] - y2) * (y2 - y1), (corner3[0] - x2) * (x2 - x1) + (corner3[1] - y2) * (y2 - y1), (corner4[0] - x2) * (x2 - x1) + (corner4[1] - y2) * (y2 - y1)) / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
33815
            nBefore = Math.max((corner1[0] - x1) * (x1 - x2) + (corner1[1] - y1) * (y1 - y2), (corner2[0] - x1) * (x1 - x2) + (corner2[1] - y1) * (y1 - y2), (corner3[0] - x1) * (x1 - x2) + (corner3[1] - y1) * (y1 - y2), (corner4[0] - x1) * (x1 - x2) + (corner4[1] - y1) * (y1 - y2)) / (Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
33816
          } else {
33817
            nAfter = Math.sqrt(Math.max(Math.pow(corner1[0] - x2, 2) + Math.pow(corner1[1] - y2, 2), Math.pow(corner2[0] - x2, 2) + Math.pow(corner2[1] - y2, 2), Math.pow(corner3[0] - x2, 2) + Math.pow(corner3[1] - y2, 2), Math.pow(corner4[0] - x2, 2) + Math.pow(corner4[1] - y2, 2))) / r2 - 1;
33818
          }
33819
          nAfter = Math.ceil(nAfter + 0.5); // Add a little more because the stroke can extend outside of the bounding box
33820
          nBefore = Math.ceil(nBefore + 0.5);
33821
          nTotal = nBefore + 1 + nAfter; // How many times the gradient needs to be repeated to fill the object bounding box
33822
        }
33823
33824
        if (this.name === 'linearGradient') {
33825
          grad = doc.linearGradient(x1 - nBefore * (x2 - x1), y1 - nBefore * (y2 - y1), x2 + nAfter * (x2 - x1), y2 + nAfter * (y2 - y1));
33826
        } else {
33827
          grad = doc.radialGradient(x1, y1, 0, x2, y2, r2 + nAfter * r2);
33828
        }
33829
        for (var n = 0; n < nTotal; n++) {
33830
          var offset = 0,
33831
            inOrder = spread !== 'reflect' || (n - nBefore) % 2 === 0;
33832
          for (var i = 0; i < children.length; i++) {
33833
            var _child = children[inOrder ? i : children.length - 1 - i],
33834
              _stopColor = _child.get('stop-color');
33835
            if (_stopColor === 'none') {
33836
              _stopColor = DefaultColors.transparent;
33837
            }
33838
            _stopColor = opacityToColor(_stopColor, _child.get('stop-opacity') * gOpacity, isMask);
33839
            offset = Math.max(offset, inOrder ? _child.getPercent('offset', 0) : 1 - _child.getPercent('offset', 0));
33840
            if (i === 0 && _stopColor[0].length === 4) {
33841
              grad._colorSpace = 'DeviceCMYK';
33842
            } // Fix until PR #763 is merged into PDFKit
33843
            if (i === 0 && offset > 0) {
33844
              grad.stop((n + 0) / nTotal, _stopColor[0], _stopColor[1]);
33845
            }
33846
            grad.stop((n + offset) / (nAfter + nBefore + 1), _stopColor[0], _stopColor[1]);
33847
            if (i === children.length - 1 && offset < 1) {
33848
              grad.stop((n + 1) / nTotal, _stopColor[0], _stopColor[1]);
33849
            }
33850
          }
33851
        }
33852
        grad.setTransform.apply(grad, matrix);
33853
        return [grad, 1];
33854
      } else {
33855
        return fallback ? [fallback[0], fallback[1] * gOpacity] : undefined;
33856
      }
33857
    };
33858
  };
33859
  var SvgElemBasicShape = function SvgElemBasicShape(obj, inherits) {
33860
    SvgElemStylable.call(this, obj, inherits);
33861
    this.dashScale = 1;
33862
    this.getBoundingShape = function () {
33863
      return this.shape;
33864
    };
33865
    this.getTransformation = function () {
33866
      return this.get('transform');
33867
    };
33868
    this.drawInDocument = function (isClip, isMask) {
33869
      if (this.get('visibility') === 'hidden' || !this.shape) {
33870
        return;
33871
      }
33872
      doc.save();
33873
      this.transform();
33874
      this.clip();
33875
      if (!isClip) {
33876
        var masked = this.mask(),
33877
          group;
33878
        if (masked) {
33879
          group = docBeginGroup(getPageBBox());
33880
        }
33881
        var subPaths = this.shape.getSubPaths(),
33882
          fill = this.getFill(isClip, isMask),
33883
          stroke = this.getStroke(isClip, isMask),
33884
          lineWidth = this.get('stroke-width'),
33885
          lineCap = this.get('stroke-linecap');
33886
        if (fill || stroke) {
33887
          if (fill) {
33888
            docFillColor(fill);
33889
          }
33890
          if (stroke) {
33891
            for (var j = 0; j < subPaths.length; j++) {
33892
              if (isEqual(subPaths[j].totalLength, 0)) {
33893
                if ((lineCap === 'square' || lineCap === 'round') && lineWidth > 0) {
33894
                  if (subPaths[j].startPoint && subPaths[j].startPoint.length > 1) {
33895
                    var _x4 = subPaths[j].startPoint[0],
33896
                      _y4 = subPaths[j].startPoint[1];
33897
                    docFillColor(stroke);
33898
                    if (lineCap === 'square') {
33899
                      doc.rect(_x4 - 0.5 * lineWidth, _y4 - 0.5 * lineWidth, lineWidth, lineWidth);
33900
                    } else if (lineCap === 'round') {
33901
                      doc.circle(_x4, _y4, 0.5 * lineWidth);
33902
                    }
33903
                    doc.fill();
33904
                  }
33905
                }
33906
              }
33907
            }
33908
            var dashArray = this.get('stroke-dasharray'),
33909
              dashOffset = this.get('stroke-dashoffset');
33910
            if (isNotEqual(this.dashScale, 1)) {
33911
              for (var _j2 = 0; _j2 < dashArray.length; _j2++) {
33912
                dashArray[_j2] *= this.dashScale;
33913
              }
33914
              dashOffset *= this.dashScale;
33915
            }
33916
            docStrokeColor(stroke);
33917
            doc.lineWidth(lineWidth).miterLimit(this.get('stroke-miterlimit')).lineJoin(this.get('stroke-linejoin')).lineCap(lineCap).dash(dashArray, {
33918
              phase: dashOffset
33919
            });
33920
          }
33921
          for (var _j3 = 0; _j3 < subPaths.length; _j3++) {
33922
            if (subPaths[_j3].totalLength > 0) {
33923
              subPaths[_j3].insertInDocument();
33924
            }
33925
          }
33926
          if (fill && stroke) {
33927
            doc.fillAndStroke(this.get('fill-rule'));
33928
          } else if (fill) {
33929
            doc.fill(this.get('fill-rule'));
33930
          } else if (stroke) {
33931
            doc.stroke();
33932
          }
33933
        }
33934
        var markerStart = this.get('marker-start'),
33935
          markerMid = this.get('marker-mid'),
33936
          markerEnd = this.get('marker-end');
33937
        if (markerStart !== 'none' || markerMid !== 'none' || markerEnd !== 'none') {
33938
          var markersPos = this.shape.getMarkers();
33939
          if (markerStart !== 'none') {
33940
            var marker = new SvgElemMarker(markerStart, null);
33941
            marker.drawMarker(false, isMask, markersPos[0], lineWidth);
33942
          }
33943
          if (markerMid !== 'none') {
33944
            for (var i = 1; i < markersPos.length - 1; i++) {
33945
              var _marker = new SvgElemMarker(markerMid, null);
33946
              _marker.drawMarker(false, isMask, markersPos[i], lineWidth);
33947
            }
33948
          }
33949
          if (markerEnd !== 'none') {
33950
            var _marker2 = new SvgElemMarker(markerEnd, null);
33951
            _marker2.drawMarker(false, isMask, markersPos[markersPos.length - 1], lineWidth);
33952
          }
33953
        }
33954
        if (group) {
33955
          docEndGroup(group);
33956
          docInsertGroup(group);
33957
        }
33958
      } else {
33959
        this.shape.insertInDocument();
33960
        docFillColor(DefaultColors.white);
33961
        doc.fill(this.get('clip-rule'));
33962
      }
33963
      doc.restore();
33964
    };
33965
  };
33966
  var SvgElemRect = function SvgElemRect(obj, inherits) {
33967
    SvgElemBasicShape.call(this, obj, inherits);
33968
    var x = this.getLength('x', this.getVWidth(), 0),
33969
      y = this.getLength('y', this.getVHeight(), 0),
33970
      w = this.getLength('width', this.getVWidth(), 0),
33971
      h = this.getLength('height', this.getVHeight(), 0),
33972
      rx = this.getLength('rx', this.getVWidth()),
33973
      ry = this.getLength('ry', this.getVHeight());
33974
    if (rx === undefined && ry === undefined) {
33975
      rx = ry = 0;
33976
    } else if (rx === undefined && ry !== undefined) {
33977
      rx = ry;
33978
    } else if (rx !== undefined && ry === undefined) {
33979
      ry = rx;
33980
    }
33981
    if (w > 0 && h > 0) {
33982
      if (rx && ry) {
33983
        rx = Math.min(rx, 0.5 * w);
33984
        ry = Math.min(ry, 0.5 * h);
33985
        this.shape = new SvgShape().M(x + rx, y).L(x + w - rx, y).A(rx, ry, 0, 0, 1, x + w, y + ry).L(x + w, y + h - ry).A(rx, ry, 0, 0, 1, x + w - rx, y + h).L(x + rx, y + h).A(rx, ry, 0, 0, 1, x, y + h - ry).L(x, y + ry).A(rx, ry, 0, 0, 1, x + rx, y).Z();
33986
      } else {
33987
        this.shape = new SvgShape().M(x, y).L(x + w, y).L(x + w, y + h).L(x, y + h).Z();
33988
      }
33989
    } else {
33990
      this.shape = new SvgShape();
33991
    }
33992
  };
33993
  var SvgElemCircle = function SvgElemCircle(obj, inherits) {
33994
    SvgElemBasicShape.call(this, obj, inherits);
33995
    var cx = this.getLength('cx', this.getVWidth(), 0),
33996
      cy = this.getLength('cy', this.getVHeight(), 0),
33997
      r = this.getLength('r', this.getViewport(), 0);
33998
    if (r > 0) {
33999
      this.shape = new SvgShape().M(cx + r, cy).A(r, r, 0, 0, 1, cx - r, cy).A(r, r, 0, 0, 1, cx + r, cy).Z();
34000
    } else {
34001
      this.shape = new SvgShape();
34002
    }
34003
  };
34004
  var SvgElemEllipse = function SvgElemEllipse(obj, inherits) {
34005
    SvgElemBasicShape.call(this, obj, inherits);
34006
    var cx = this.getLength('cx', this.getVWidth(), 0),
34007
      cy = this.getLength('cy', this.getVHeight(), 0),
34008
      rx = this.getLength('rx', this.getVWidth(), 0),
34009
      ry = this.getLength('ry', this.getVHeight(), 0);
34010
    if (rx > 0 && ry > 0) {
34011
      this.shape = new SvgShape().M(cx + rx, cy).A(rx, ry, 0, 0, 1, cx - rx, cy).A(rx, ry, 0, 0, 1, cx + rx, cy).Z();
34012
    } else {
34013
      this.shape = new SvgShape();
34014
    }
34015
  };
34016
  var SvgElemLine = function SvgElemLine(obj, inherits) {
34017
    SvgElemBasicShape.call(this, obj, inherits);
34018
    var x1 = this.getLength('x1', this.getVWidth(), 0),
34019
      y1 = this.getLength('y1', this.getVHeight(), 0),
34020
      x2 = this.getLength('x2', this.getVWidth(), 0),
34021
      y2 = this.getLength('y2', this.getVHeight(), 0);
34022
    this.shape = new SvgShape().M(x1, y1).L(x2, y2);
34023
  };
34024
  var SvgElemPolyline = function SvgElemPolyline(obj, inherits) {
34025
    SvgElemBasicShape.call(this, obj, inherits);
34026
    var points = this.getNumberList('points');
34027
    this.shape = new SvgShape();
34028
    for (var i = 0; i < points.length - 1; i += 2) {
34029
      if (i === 0) {
34030
        this.shape.M(points[i], points[i + 1]);
34031
      } else {
34032
        this.shape.L(points[i], points[i + 1]);
34033
      }
34034
    }
34035
    if (points.error) {
34036
      warningCallback('SvgElemPolygon: unexpected string ' + points.error);
34037
    }
34038
    if (points.length % 2 === 1) {
34039
      warningCallback('SvgElemPolyline: uneven number of coordinates');
34040
    }
34041
  };
34042
  var SvgElemPolygon = function SvgElemPolygon(obj, inherits) {
34043
    SvgElemBasicShape.call(this, obj, inherits);
34044
    var points = this.getNumberList('points');
34045
    this.shape = new SvgShape();
34046
    for (var i = 0; i < points.length - 1; i += 2) {
34047
      if (i === 0) {
34048
        this.shape.M(points[i], points[i + 1]);
34049
      } else {
34050
        this.shape.L(points[i], points[i + 1]);
34051
      }
34052
    }
34053
    this.shape.Z();
34054
    if (points.error) {
34055
      warningCallback('SvgElemPolygon: unexpected string ' + points.error);
34056
    }
34057
    if (points.length % 2 === 1) {
34058
      warningCallback('SvgElemPolygon: uneven number of coordinates');
34059
    }
34060
  };
34061
  var SvgElemPath = function SvgElemPath(obj, inherits) {
34062
    SvgElemBasicShape.call(this, obj, inherits);
34063
    this.shape = new SvgShape().path(this.attr('d'));
34064
    var pathLength = this.getLength('pathLength', this.getViewport());
34065
    this.pathLength = pathLength > 0 ? pathLength : undefined;
34066
    this.dashScale = this.pathLength !== undefined ? this.shape.totalLength / this.pathLength : 1;
34067
  };
34068
  var SvgElemMarker = function SvgElemMarker(obj, inherits) {
34069
    SvgElemHasChildren.call(this, obj, inherits);
34070
    var width = this.getLength('markerWidth', this.getParentVWidth(), 3),
34071
      height = this.getLength('markerHeight', this.getParentVHeight(), 3),
34072
      viewBox = this.getViewbox('viewBox', [0, 0, width, height]);
34073
    this.getVWidth = function () {
34074
      return viewBox[2];
34075
    };
34076
    this.getVHeight = function () {
34077
      return viewBox[3];
34078
    };
34079
    this.drawMarker = function (isClip, isMask, posArray, strokeWidth) {
34080
      doc.save();
34081
      var orient = this.attr('orient'),
34082
        units = this.attr('markerUnits'),
34083
        rotate = orient === 'auto' ? posArray[2] : (parseFloat(orient) || 0) * Math.PI / 180,
34084
        scale = units === 'userSpaceOnUse' ? 1 : strokeWidth;
34085
      doc.transform(Math.cos(rotate) * scale, Math.sin(rotate) * scale, -Math.sin(rotate) * scale, Math.cos(rotate) * scale, posArray[0], posArray[1]);
34086
      var refX = this.getLength('refX', this.getVWidth(), 0),
34087
        refY = this.getLength('refY', this.getVHeight(), 0),
34088
        aspectRatioMatrix = parseAspectRatio(this.attr('preserveAspectRatio'), width, height, viewBox[2], viewBox[3], 0.5);
34089
      if (this.get('overflow') === 'hidden') {
34090
        doc.rect(aspectRatioMatrix[0] * (viewBox[0] + viewBox[2] / 2 - refX) - width / 2, aspectRatioMatrix[3] * (viewBox[1] + viewBox[3] / 2 - refY) - height / 2, width, height).clip();
34091
      }
34092
      doc.transform.apply(doc, aspectRatioMatrix);
34093
      doc.translate(-refX, -refY);
34094
      var group;
34095
      if (this.get('opacity') < 1 && !isClip) {
34096
        group = docBeginGroup(getPageBBox());
34097
      }
34098
      this.drawChildren(isClip, isMask);
34099
      if (group) {
34100
        docEndGroup(group);
34101
        doc.fillOpacity(this.get('opacity'));
34102
        docInsertGroup(group);
34103
      }
34104
      doc.restore();
34105
    };
34106
  };
34107
  var SvgElemClipPath = function SvgElemClipPath(obj, inherits) {
34108
    SvgElemHasChildren.call(this, obj, inherits);
34109
    this.useMask = function (bBox) {
34110
      var group = docBeginGroup(getPageBBox());
34111
      doc.save();
34112
      if (this.attr('clipPathUnits') === 'objectBoundingBox') {
34113
        doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);
34114
      }
34115
      this.clip();
34116
      this.drawChildren(true, false);
34117
      doc.restore();
34118
      docEndGroup(group);
34119
      docApplyMask(group, true);
34120
    };
34121
  };
34122
  var SvgElemMask = function SvgElemMask(obj, inherits) {
34123
    SvgElemHasChildren.call(this, obj, inherits);
34124
    this.useMask = function (bBox) {
34125
      var group = docBeginGroup(getPageBBox());
34126
      doc.save();
34127
      var x, y, w, h;
34128
      if (this.attr('maskUnits') === 'userSpaceOnUse') {
34129
        x = this.getLength('x', this.getVWidth(), -0.1 * (bBox[2] - bBox[0]) + bBox[0]);
34130
        y = this.getLength('y', this.getVHeight(), -0.1 * (bBox[3] - bBox[1]) + bBox[1]);
34131
        w = this.getLength('width', this.getVWidth(), 1.2 * (bBox[2] - bBox[0]));
34132
        h = this.getLength('height', this.getVHeight(), 1.2 * (bBox[3] - bBox[1]));
34133
      } else {
34134
        x = this.getLength('x', this.getVWidth(), -0.1) * (bBox[2] - bBox[0]) + bBox[0];
34135
        y = this.getLength('y', this.getVHeight(), -0.1) * (bBox[3] - bBox[1]) + bBox[1];
34136
        w = this.getLength('width', this.getVWidth(), 1.2) * (bBox[2] - bBox[0]);
34137
        h = this.getLength('height', this.getVHeight(), 1.2) * (bBox[3] - bBox[1]);
34138
      }
34139
      doc.rect(x, y, w, h).clip();
34140
      if (this.attr('maskContentUnits') === 'objectBoundingBox') {
34141
        doc.transform(bBox[2] - bBox[0], 0, 0, bBox[3] - bBox[1], bBox[0], bBox[1]);
34142
      }
34143
      this.clip();
34144
      this.drawChildren(false, true);
34145
      doc.restore();
34146
      docEndGroup(group);
34147
      docApplyMask(group, true);
34148
    };
34149
  };
34150
  var SvgElemTextContainer = function SvgElemTextContainer(obj, inherits) {
34151
    SvgElemStylable.call(this, obj, inherits);
34152
    this.allowedChildren = ['tspan', '#text', '#cdata-section', 'a'];
34153
    this.isText = true;
34154
    this.getBoundingShape = function () {
34155
      var shape = new SvgShape();
34156
      for (var i = 0; i < this._pos.length; i++) {
34157
        var pos = this._pos[i];
34158
        if (!pos.hidden) {
34159
          var dx0 = pos.ascent * Math.sin(pos.rotate),
34160
            dy0 = -pos.ascent * Math.cos(pos.rotate),
34161
            dx1 = pos.descent * Math.sin(pos.rotate),
34162
            dy1 = -pos.descent * Math.cos(pos.rotate),
34163
            dx2 = pos.width * Math.cos(pos.rotate),
34164
            dy2 = pos.width * Math.sin(pos.rotate);
34165
          shape.M(pos.x + dx0, pos.y + dy0).L(pos.x + dx0 + dx2, pos.y + dy0 + dy2).M(pos.x + dx1 + dx2, pos.y + dy1 + dy2).L(pos.x + dx1, pos.y + dy1);
34166
        }
34167
      }
34168
      return shape;
34169
    };
34170
    this.drawTextInDocument = function (isClip, isMask) {
34171
      if (this.link && !isClip && !isMask) {
34172
        this.addLink();
34173
      }
34174
      if (this.get('text-decoration') === 'underline') {
34175
        this.decorate(0.05 * this._font.size, -0.075 * this._font.size, isClip, isMask);
34176
      }
34177
      if (this.get('text-decoration') === 'overline') {
34178
        this.decorate(0.05 * this._font.size, getAscent(this._font.font, this._font.size) + 0.075 * this._font.size, isClip, isMask);
34179
      }
34180
      var fill = this.getFill(isClip, isMask),
34181
        stroke = this.getStroke(isClip, isMask),
34182
        strokeWidth = this.get('stroke-width');
34183
      if (this._font.fauxBold) {
34184
        if (!stroke) {
34185
          stroke = fill;
34186
          strokeWidth = this._font.size * 0.03;
34187
        } else {
34188
          strokeWidth += this._font.size * 0.03;
34189
        }
34190
      }
34191
      var children = this.getChildren();
34192
      for (var i = 0; i < children.length; i++) {
34193
        var childElem = children[i];
34194
        switch (childElem.name) {
34195
          case 'tspan':
34196
          case 'textPath':
34197
          case 'a':
34198
            if (childElem.get('display') !== 'none') {
34199
              childElem.drawTextInDocument(isClip, isMask);
34200
            }
34201
            break;
34202
          case '#text':
34203
          case '#cdata-section':
34204
            if (this.get('visibility') === 'hidden') {
34205
              continue;
34206
            }
34207
            if (fill || stroke || isClip) {
34208
              if (fill) {
34209
                docFillColor(fill);
34210
              }
34211
              if (stroke && strokeWidth) {
34212
                docStrokeColor(stroke);
34213
                doc.lineWidth(strokeWidth).miterLimit(this.get('stroke-miterlimit')).lineJoin(this.get('stroke-linejoin')).lineCap(this.get('stroke-linecap')).dash(this.get('stroke-dasharray'), {
34214
                  phase: this.get('stroke-dashoffset')
34215
                });
34216
              }
34217
              docBeginText(this._font.font, this._font.size);
34218
              docSetTextMode(!!fill, !!stroke);
34219
              for (var j = 0, pos = childElem._pos; j < pos.length; j++) {
34220
                if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {
34221
                  var cos = Math.cos(pos[j].rotate),
34222
                    sin = Math.sin(pos[j].rotate),
34223
                    skew = this._font.fauxItalic ? -0.25 : 0;
34224
                  docSetTextMatrix(cos * pos[j].scale, sin * pos[j].scale, cos * skew - sin, sin * skew + cos, pos[j].x, pos[j].y);
34225
                  docWriteGlyph(pos[j].glyph);
34226
                }
34227
              }
34228
              docEndText();
34229
            }
34230
            break;
34231
        }
34232
      }
34233
      if (this.get('text-decoration') === 'line-through') {
34234
        this.decorate(0.05 * this._font.size, 0.5 * (getAscent(this._font.font, this._font.size) + getDescent(this._font.font, this._font.size)), isClip, isMask);
34235
      }
34236
    };
34237
    this.decorate = function (lineWidth, linePosition, isClip, isMask) {
34238
      var fill = this.getFill(isClip, isMask),
34239
        stroke = this.getStroke(isClip, isMask);
34240
      if (fill) {
34241
        docFillColor(fill);
34242
      }
34243
      if (stroke) {
34244
        docStrokeColor(stroke);
34245
        doc.lineWidth(this.get('stroke-width')).miterLimit(this.get('stroke-miterlimit')).lineJoin(this.get('stroke-linejoin')).lineCap(this.get('stroke-linecap')).dash(this.get('stroke-dasharray'), {
34246
          phase: this.get('stroke-dashoffset')
34247
        });
34248
      }
34249
      for (var j = 0, pos = this._pos; j < pos.length; j++) {
34250
        if (!pos[j].hidden && isNotEqual(pos[j].width, 0)) {
34251
          var dx0 = (linePosition + lineWidth / 2) * Math.sin(pos[j].rotate),
34252
            dy0 = -(linePosition + lineWidth / 2) * Math.cos(pos[j].rotate),
34253
            dx1 = (linePosition - lineWidth / 2) * Math.sin(pos[j].rotate),
34254
            dy1 = -(linePosition - lineWidth / 2) * Math.cos(pos[j].rotate),
34255
            dx2 = pos[j].width * Math.cos(pos[j].rotate),
34256
            dy2 = pos[j].width * Math.sin(pos[j].rotate);
34257
          new SvgShape().M(pos[j].x + dx0, pos[j].y + dy0).L(pos[j].x + dx0 + dx2, pos[j].y + dy0 + dy2).L(pos[j].x + dx1 + dx2, pos[j].y + dy1 + dy2).L(pos[j].x + dx1, pos[j].y + dy1).Z().insertInDocument();
34258
          if (fill && stroke) {
34259
            doc.fillAndStroke();
34260
          } else if (fill) {
34261
            doc.fill();
34262
          } else if (stroke) {
34263
            doc.stroke();
34264
          }
34265
        }
34266
      }
34267
    };
34268
  };
34269
  var SvgElemTextNode = function SvgElemTextNode(obj, inherits) {
34270
    this.name = obj.nodeName;
34271
    this.textContent = obj.nodeValue;
34272
  };
34273
  var SvgElemTspan = function SvgElemTspan(obj, inherits) {
34274
    SvgElemTextContainer.call(this, obj, inherits);
34275
  };
34276
  var SvgElemTextPath = function SvgElemTextPath(obj, inherits) {
34277
    SvgElemTextContainer.call(this, obj, inherits);
34278
    var pathObject, pathLength, temp;
34279
    if ((temp = this.attr('path')) && temp.trim() !== '') {
34280
      var _pathLength = this.getLength('pathLength', this.getViewport());
34281
      this.pathObject = new SvgShape().path(temp);
34282
      this.pathLength = _pathLength > 0 ? _pathLength : this.pathObject.totalLength;
34283
      this.pathScale = this.pathObject.totalLength / this.pathLength;
34284
    } else if ((temp = this.getUrl('href') || this.getUrl('xlink:href')) && temp.nodeName === 'path') {
34285
      var pathElem = new SvgElemPath(temp, this);
34286
      this.pathObject = pathElem.shape.clone().transform(pathElem.get('transform'));
34287
      this.pathLength = this.chooseValue(pathElem.pathLength, this.pathObject.totalLength);
34288
      this.pathScale = this.pathObject.totalLength / this.pathLength;
34289
    }
34290
  };
34291
  var SvgElemText = function SvgElemText(obj, inherits) {
34292
    SvgElemTextContainer.call(this, obj, inherits);
34293
    this.allowedChildren = ['textPath', 'tspan', '#text', '#cdata-section', 'a'];
34294
    (function (textParentElem) {
34295
      var processedText = '',
34296
        remainingText = obj.textContent,
34297
        textPaths = [],
34298
        currentChunk = [],
34299
        currentAnchor,
34300
        currentDirection,
34301
        currentX = 0,
34302
        currentY = 0;
34303
      function doAnchoring() {
34304
        if (currentChunk.length) {
34305
          var last = currentChunk[currentChunk.length - 1];
34306
          var first = currentChunk[0];
34307
          var width = last.x + last.width - first.x;
34308
          var anchordx = {
34309
            'startltr': 0,
34310
            'middleltr': 0.5,
34311
            'endltr': 1,
34312
            'startrtl': 1,
34313
            'middlertl': 0.5,
34314
            'endrtl': 0
34315
          }[currentAnchor + currentDirection] * width || 0;
34316
          for (var i = 0; i < currentChunk.length; i++) {
34317
            currentChunk[i].x -= anchordx;
34318
          }
34319
        }
34320
        currentChunk = [];
34321
      }
34322
      function adjustLength(pos, length, spacingAndGlyphs) {
34323
        var firstChar = pos[0],
34324
          lastChar = pos[pos.length - 1],
34325
          startX = firstChar.x,
34326
          endX = lastChar.x + lastChar.width;
34327
        if (spacingAndGlyphs) {
34328
          var textScale = length / (endX - startX);
34329
          if (textScale > 0 && textScale < Infinity) {
34330
            for (var j = 0; j < pos.length; j++) {
34331
              pos[j].x = startX + textScale * (pos[j].x - startX);
34332
              pos[j].scale *= textScale;
34333
              pos[j].width *= textScale;
34334
            }
34335
          }
34336
        } else {
34337
          if (pos.length >= 2) {
34338
            var spaceDiff = (length - (endX - startX)) / (pos.length - 1);
34339
            for (var _j4 = 0; _j4 < pos.length; _j4++) {
34340
              pos[_j4].x += _j4 * spaceDiff;
34341
            }
34342
          }
34343
        }
34344
        currentX += length - (endX - startX);
34345
      }
34346
      function recursive(currentElem, parentElem) {
34347
        currentElem._x = combineArrays(currentElem.getLengthList('x', currentElem.getVWidth()), parentElem ? parentElem._x.slice(parentElem._pos.length) : []);
34348
        currentElem._y = combineArrays(currentElem.getLengthList('y', currentElem.getVHeight()), parentElem ? parentElem._y.slice(parentElem._pos.length) : []);
34349
        currentElem._dx = combineArrays(currentElem.getLengthList('dx', currentElem.getVWidth()), parentElem ? parentElem._dx.slice(parentElem._pos.length) : []);
34350
        currentElem._dy = combineArrays(currentElem.getLengthList('dy', currentElem.getVHeight()), parentElem ? parentElem._dy.slice(parentElem._pos.length) : []);
34351
        currentElem._rot = combineArrays(currentElem.getNumberList('rotate'), parentElem ? parentElem._rot.slice(parentElem._pos.length) : []);
34352
        currentElem._defRot = currentElem.chooseValue(currentElem._rot[currentElem._rot.length - 1], parentElem && parentElem._defRot, 0);
34353
        if (currentElem.name === 'textPath') {
34354
          currentElem._y = [];
34355
        }
34356
        var fontOptions = {
34357
            fauxItalic: false,
34358
            fauxBold: false
34359
          },
34360
          fontNameorLink = fontCallback(currentElem.get('font-family'), currentElem.get('font-weight') === 'bold', currentElem.get('font-style') === 'italic', fontOptions);
34361
        try {
34362
          doc.font(fontNameorLink);
34363
        } catch (e) {
34364
          warningCallback('SVGElemText: failed to open font "' + fontNameorLink + '" in PDFKit');
34365
        }
34366
        currentElem._pos = [];
34367
        currentElem._index = 0;
34368
        currentElem._font = {
34369
          font: doc._font,
34370
          size: currentElem.get('font-size'),
34371
          fauxItalic: fontOptions.fauxItalic,
34372
          fauxBold: fontOptions.fauxBold
34373
        };
34374
        var textLength = currentElem.getLength('textLength', currentElem.getVWidth(), undefined),
34375
          spacingAndGlyphs = currentElem.attr('lengthAdjust') === 'spacingAndGlyphs',
34376
          wordSpacing = currentElem.get('word-spacing'),
34377
          letterSpacing = currentElem.get('letter-spacing'),
34378
          textAnchor = currentElem.get('text-anchor'),
34379
          textDirection = currentElem.get('direction'),
34380
          baseline = getBaseline(currentElem._font.font, currentElem._font.size, currentElem.get('alignment-baseline') || currentElem.get('dominant-baseline'), currentElem.get('baseline-shift'));
34381
        if (currentElem.name === 'textPath') {
34382
          doAnchoring();
34383
          currentX = currentY = 0;
34384
        }
34385
        var children = currentElem.getChildren();
34386
        for (var i = 0; i < children.length; i++) {
34387
          var childElem = children[i];
34388
          switch (childElem.name) {
34389
            case 'tspan':
34390
            case 'textPath':
34391
            case 'a':
34392
              recursive(childElem, currentElem);
34393
              break;
34394
            case '#text':
34395
            case '#cdata-section':
34396
              var rawText = childElem.textContent,
34397
                renderedText = rawText,
34398
                words = void 0;
34399
              childElem._font = currentElem._font;
34400
              childElem._pos = [];
34401
              remainingText = remainingText.substring(rawText.length);
34402
              if (currentElem.get('xml:space') === 'preserve') {
34403
                renderedText = renderedText.replace(/[\s]/g, ' ');
34404
              } else {
34405
                renderedText = renderedText.replace(/[\s]+/g, ' ');
34406
                if (processedText.match(/[\s]$|^$/)) {
34407
                  renderedText = renderedText.replace(/^[\s]/, '');
34408
                }
34409
                if (remainingText.match(/^[\s]*$/)) {
34410
                  renderedText = renderedText.replace(/[\s]$/, '');
34411
                }
34412
              }
34413
              processedText += rawText;
34414
              if (wordSpacing === 0) {
34415
                words = [renderedText];
34416
              } else {
34417
                words = renderedText.split(/(\s)/);
34418
              }
34419
              for (var w = 0; w < words.length; w++) {
34420
                var pos = getTextPos(currentElem._font.font, currentElem._font.size, words[w]);
34421
                for (var j = 0; j < pos.length; j++) {
34422
                  var index = currentElem._index,
34423
                    xAttr = currentElem._x[index],
34424
                    yAttr = currentElem._y[index],
34425
                    dxAttr = currentElem._dx[index],
34426
                    dyAttr = currentElem._dy[index],
34427
                    rotAttr = currentElem._rot[index],
34428
                    continuous = !(w === 0 && j === 0);
34429
                  if (xAttr !== undefined) {
34430
                    continuous = false;
34431
                    doAnchoring();
34432
                    currentX = xAttr;
34433
                  }
34434
                  if (yAttr !== undefined) {
34435
                    continuous = false;
34436
                    doAnchoring();
34437
                    currentY = yAttr;
34438
                  }
34439
                  if (dxAttr !== undefined) {
34440
                    continuous = false;
34441
                    currentX += dxAttr;
34442
                  }
34443
                  if (dyAttr !== undefined) {
34444
                    continuous = false;
34445
                    currentY += dyAttr;
34446
                  }
34447
                  if (rotAttr !== undefined || currentElem._defRot !== 0) {
34448
                    continuous = false;
34449
                  }
34450
                  var position = {
34451
                    glyph: pos[j].glyph,
34452
                    rotate: Math.PI / 180 * currentElem.chooseValue(rotAttr, currentElem._defRot),
34453
                    x: currentX + pos[j].xOffset,
34454
                    y: currentY + baseline + pos[j].yOffset,
34455
                    width: pos[j].width,
34456
                    ascent: getAscent(currentElem._font.font, currentElem._font.size),
34457
                    descent: getDescent(currentElem._font.font, currentElem._font.size),
34458
                    scale: 1,
34459
                    hidden: false,
34460
                    continuous: continuous
34461
                  };
34462
                  currentChunk.push(position);
34463
                  childElem._pos.push(position);
34464
                  currentElem._pos.push(position);
34465
                  currentElem._index += pos[j].unicode.length;
34466
                  if (currentChunk.length === 1) {
34467
                    currentAnchor = textAnchor;
34468
                    currentDirection = textDirection;
34469
                  }
34470
                  currentX += pos[j].xAdvance + letterSpacing;
34471
                  currentY += pos[j].yAdvance;
34472
                }
34473
                if (words[w] === ' ') {
34474
                  currentX += wordSpacing;
34475
                }
34476
              }
34477
              break;
34478
            default:
34479
              remainingText = remainingText.substring(childElem.textContent.length);
34480
          }
34481
        }
34482
        if (textLength && currentElem._pos.length) {
34483
          adjustLength(currentElem._pos, textLength, spacingAndGlyphs);
34484
        }
34485
        if (currentElem.name === 'textPath' || currentElem.name === 'text') {
34486
          doAnchoring();
34487
        }
34488
        if (currentElem.name === 'textPath') {
34489
          textPaths.push(currentElem);
34490
          var pathObject = currentElem.pathObject;
34491
          if (pathObject) {
34492
            currentX = pathObject.endPoint[0];
34493
            currentY = pathObject.endPoint[1];
34494
          }
34495
        }
34496
        if (parentElem) {
34497
          parentElem._pos = parentElem._pos.concat(currentElem._pos);
34498
          parentElem._index += currentElem._index;
34499
        }
34500
      }
34501
      function textOnPath(currentElem) {
34502
        var pathObject = currentElem.pathObject,
34503
          pathLength = currentElem.pathLength,
34504
          pathScale = currentElem.pathScale;
34505
        if (pathObject) {
34506
          var textOffset = currentElem.getLength('startOffset', pathLength, 0);
34507
          for (var j = 0; j < currentElem._pos.length; j++) {
34508
            var charMidX = textOffset + currentElem._pos[j].x + 0.5 * currentElem._pos[j].width;
34509
            if (charMidX > pathLength || charMidX < 0) {
34510
              currentElem._pos[j].hidden = true;
34511
            } else {
34512
              var pointOnPath = pathObject.getPointAtLength(charMidX * pathScale);
34513
              if (isNotEqual(pathScale, 1)) {
34514
                currentElem._pos[j].scale *= pathScale;
34515
                currentElem._pos[j].width *= pathScale;
34516
              }
34517
              currentElem._pos[j].x = pointOnPath[0] - 0.5 * currentElem._pos[j].width * Math.cos(pointOnPath[2]) - currentElem._pos[j].y * Math.sin(pointOnPath[2]);
34518
              currentElem._pos[j].y = pointOnPath[1] - 0.5 * currentElem._pos[j].width * Math.sin(pointOnPath[2]) + currentElem._pos[j].y * Math.cos(pointOnPath[2]);
34519
              currentElem._pos[j].rotate = pointOnPath[2] + currentElem._pos[j].rotate;
34520
              currentElem._pos[j].continuous = false;
34521
            }
34522
          }
34523
        } else {
34524
          for (var _j5 = 0; _j5 < currentElem._pos.length; _j5++) {
34525
            currentElem._pos[_j5].hidden = true;
34526
          }
34527
        }
34528
      }
34529
      recursive(textParentElem, null);
34530
      for (var i = 0; i < textPaths.length; i++) {
34531
        textOnPath(textPaths[i]);
34532
      }
34533
    })(this);
34534
    this.getTransformation = function () {
34535
      return this.get('transform');
34536
    };
34537
    this.drawInDocument = function (isClip, isMask) {
34538
      doc.save();
34539
      this.transform();
34540
      this.clip();
34541
      var masked = this.mask(),
34542
        group;
34543
      if (masked) {
34544
        group = docBeginGroup(getPageBBox());
34545
      }
34546
      this.drawTextInDocument(isClip, isMask);
34547
      if (group) {
34548
        docEndGroup(group);
34549
        docInsertGroup(group);
34550
      }
34551
      doc.restore();
34552
    };
34553
  };
34554
  options = options || {};
34555
  var pxToPt = options.assumePt ? 1 : 72 / 96,
34556
    // 1px = 72/96pt, but only if assumePt is false
34557
    viewportWidth = (options.width || doc.page.width) / pxToPt,
34558
    viewportHeight = (options.height || doc.page.height) / pxToPt,
34559
    preserveAspectRatio = options.preserveAspectRatio || null,
34560
    // default to null so that the attr can override if not passed
34561
    useCSS = options.useCSS && typeof SVGElement !== 'undefined' && svg instanceof SVGElement && typeof getComputedStyle === 'function',
34562
    warningCallback = options.warningCallback,
34563
    fontCallback = options.fontCallback,
34564
    imageCallback = options.imageCallback,
34565
    colorCallback = options.colorCallback,
34566
    documentCallback = options.documentCallback,
34567
    precision = Math.ceil(Math.max(1, options.precision)) || 3,
34568
    groupStack = [],
34569
    documentCache = {},
34570
    links = [],
34571
    styleRules = [];
34572
  if (typeof warningCallback !== 'function') {
34573
    warningCallback = function warningCallback(str) {
34574
      if (typeof console !== undefined && typeof console.warn === 'function') {
34575
        console.warn(str);
34576
      }
34577
    };
34578
  }
34579
  if (typeof fontCallback !== 'function') {
34580
    fontCallback = function fontCallback(family, bold, italic, fontOptions) {
34581
      // Check if the font is already registered in the document
34582
      if (bold && italic) {
34583
        if (doc._registeredFonts.hasOwnProperty(family + '-BoldItalic')) {
34584
          return family + '-BoldItalic';
34585
        } else if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {
34586
          fontOptions.fauxBold = true;
34587
          return family + '-Italic';
34588
        } else if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {
34589
          fontOptions.fauxItalic = true;
34590
          return family + '-Bold';
34591
        } else if (doc._registeredFonts.hasOwnProperty(family)) {
34592
          fontOptions.fauxBold = true;
34593
          fontOptions.fauxItalic = true;
34594
          return family;
34595
        }
34596
      }
34597
      if (bold && !italic) {
34598
        if (doc._registeredFonts.hasOwnProperty(family + '-Bold')) {
34599
          return family + '-Bold';
34600
        } else if (doc._registeredFonts.hasOwnProperty(family)) {
34601
          fontOptions.fauxBold = true;
34602
          return family;
34603
        }
34604
      }
34605
      if (!bold && italic) {
34606
        if (doc._registeredFonts.hasOwnProperty(family + '-Italic')) {
34607
          return family + '-Italic';
34608
        } else if (doc._registeredFonts.hasOwnProperty(family)) {
34609
          fontOptions.fauxItalic = true;
34610
          return family;
34611
        }
34612
      }
34613
      if (!bold && !italic) {
34614
        if (doc._registeredFonts.hasOwnProperty(family)) {
34615
          return family;
34616
        }
34617
      }
34618
      // Use standard fonts as fallback
34619
      if (family.match(/(?:^|,)\s*serif\s*$/)) {
34620
        if (bold && italic) {
34621
          return 'Times-BoldItalic';
34622
        }
34623
        if (bold && !italic) {
34624
          return 'Times-Bold';
34625
        }
34626
        if (!bold && italic) {
34627
          return 'Times-Italic';
34628
        }
34629
        if (!bold && !italic) {
34630
          return 'Times-Roman';
34631
        }
34632
      } else if (family.match(/(?:^|,)\s*monospace\s*$/)) {
34633
        if (bold && italic) {
34634
          return 'Courier-BoldOblique';
34635
        }
34636
        if (bold && !italic) {
34637
          return 'Courier-Bold';
34638
        }
34639
        if (!bold && italic) {
34640
          return 'Courier-Oblique';
34641
        }
34642
        if (!bold && !italic) {
34643
          return 'Courier';
34644
        }
34645
      } else if (family.match(/(?:^|,)\s*sans-serif\s*$/) || true) {
34646
        if (bold && italic) {
34647
          return 'Helvetica-BoldOblique';
34648
        }
34649
        if (bold && !italic) {
34650
          return 'Helvetica-Bold';
34651
        }
34652
        if (!bold && italic) {
34653
          return 'Helvetica-Oblique';
34654
        }
34655
        if (!bold && !italic) {
34656
          return 'Helvetica';
34657
        }
34658
      }
34659
    };
34660
  }
34661
  if (typeof imageCallback !== 'function') {
34662
    imageCallback = function imageCallback(link) {
34663
      return link.replace(/\s+/g, '');
34664
    };
34665
  }
34666
  if (typeof colorCallback !== 'function') {
34667
    colorCallback = null;
34668
  } else {
34669
    for (var color in DefaultColors) {
34670
      var newColor = colorCallback(DefaultColors[color]);
34671
      DefaultColors[color][0] = newColor[0];
34672
      DefaultColors[color][1] = newColor[1];
34673
    }
34674
  }
34675
  if (typeof documentCallback !== 'function') {
34676
    documentCallback = null;
34677
  }
34678
  if (typeof svg === 'string') {
34679
    svg = parseXml(svg);
34680
  }
34681
  if (svg) {
34682
    var styles = svg.getElementsByTagName('style');
34683
    for (var i = 0; i < styles.length; i++) {
34684
      styleRules = styleRules.concat(parseStyleSheet(styles[i].textContent));
34685
    }
34686
    var elem = createSVGElement(svg, null);
34687
    if (typeof elem.drawInDocument === 'function') {
34688
      if (options.useCSS && !useCSS) {
34689
        warningCallback('SVGtoPDF: useCSS option can only be used for SVG *elements* in compatible browsers');
34690
      }
34691
      var savedFillColor = doc._fillColor;
34692
      doc.save().translate(x || 0, y || 0).scale(pxToPt);
34693
      elem.drawInDocument();
34694
      for (var _i8 = 0; _i8 < links.length; _i8++) {
34695
        doc.page.annotations.push(links[_i8]);
34696
      }
34697
      doc.restore();
34698
      doc._fillColor = savedFillColor;
34699
    } else {
34700
      warningCallback('SVGtoPDF: this element can\'t be rendered directly: ' + svg.nodeName);
34701
    }
34702
  } else {
34703
    warningCallback('SVGtoPDF: the input does not look like a valid SVG');
34704
  }
34705
};
34706
if ( true && module && typeof module.exports !== 'undefined') {
34707
  module.exports = SVGtoPDF;
34708
}
34709
34710
/***/ }),
34711
34712
/***/ 9742:
34713
/***/ (function(__unused_webpack_module, exports) {
34714
34715
"use strict";
34716
34717
34718
exports.byteLength = byteLength
34719
exports.toByteArray = toByteArray
34720
exports.fromByteArray = fromByteArray
34721
34722
var lookup = []
34723
var revLookup = []
34724
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
34725
34726
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
34727
for (var i = 0, len = code.length; i < len; ++i) {
34728
  lookup[i] = code[i]
34729
  revLookup[code.charCodeAt(i)] = i
34730
}
34731
34732
// Support decoding URL-safe base64 strings, as Node.js does.
34733
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
34734
revLookup['-'.charCodeAt(0)] = 62
34735
revLookup['_'.charCodeAt(0)] = 63
34736
34737
function getLens (b64) {
34738
  var len = b64.length
34739
34740
  if (len % 4 > 0) {
34741
    throw new Error('Invalid string. Length must be a multiple of 4')
34742
  }
34743
34744
  // Trim off extra bytes after placeholder bytes are found
34745
  // See: https://github.com/beatgammit/base64-js/issues/42
34746
  var validLen = b64.indexOf('=')
34747
  if (validLen === -1) validLen = len
34748
34749
  var placeHoldersLen = validLen === len
34750
    ? 0
34751
    : 4 - (validLen % 4)
34752
34753
  return [validLen, placeHoldersLen]
34754
}
34755
34756
// base64 is 4/3 + up to two characters of the original data
34757
function byteLength (b64) {
34758
  var lens = getLens(b64)
34759
  var validLen = lens[0]
34760
  var placeHoldersLen = lens[1]
34761
  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
34762
}
34763
34764
function _byteLength (b64, validLen, placeHoldersLen) {
34765
  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
34766
}
34767
34768
function toByteArray (b64) {
34769
  var tmp
34770
  var lens = getLens(b64)
34771
  var validLen = lens[0]
34772
  var placeHoldersLen = lens[1]
34773
34774
  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
34775
34776
  var curByte = 0
34777
34778
  // if there are placeholders, only get up to the last complete 4 chars
34779
  var len = placeHoldersLen > 0
34780
    ? validLen - 4
34781
    : validLen
34782
34783
  var i
34784
  for (i = 0; i < len; i += 4) {
34785
    tmp =
34786
      (revLookup[b64.charCodeAt(i)] << 18) |
34787
      (revLookup[b64.charCodeAt(i + 1)] << 12) |
34788
      (revLookup[b64.charCodeAt(i + 2)] << 6) |
34789
      revLookup[b64.charCodeAt(i + 3)]
34790
    arr[curByte++] = (tmp >> 16) & 0xFF
34791
    arr[curByte++] = (tmp >> 8) & 0xFF
34792
    arr[curByte++] = tmp & 0xFF
34793
  }
34794
34795
  if (placeHoldersLen === 2) {
34796
    tmp =
34797
      (revLookup[b64.charCodeAt(i)] << 2) |
34798
      (revLookup[b64.charCodeAt(i + 1)] >> 4)
34799
    arr[curByte++] = tmp & 0xFF
34800
  }
34801
34802
  if (placeHoldersLen === 1) {
34803
    tmp =
34804
      (revLookup[b64.charCodeAt(i)] << 10) |
34805
      (revLookup[b64.charCodeAt(i + 1)] << 4) |
34806
      (revLookup[b64.charCodeAt(i + 2)] >> 2)
34807
    arr[curByte++] = (tmp >> 8) & 0xFF
34808
    arr[curByte++] = tmp & 0xFF
34809
  }
34810
34811
  return arr
34812
}
34813
34814
function tripletToBase64 (num) {
34815
  return lookup[num >> 18 & 0x3F] +
34816
    lookup[num >> 12 & 0x3F] +
34817
    lookup[num >> 6 & 0x3F] +
34818
    lookup[num & 0x3F]
34819
}
34820
34821
function encodeChunk (uint8, start, end) {
34822
  var tmp
34823
  var output = []
34824
  for (var i = start; i < end; i += 3) {
34825
    tmp =
34826
      ((uint8[i] << 16) & 0xFF0000) +
34827
      ((uint8[i + 1] << 8) & 0xFF00) +
34828
      (uint8[i + 2] & 0xFF)
34829
    output.push(tripletToBase64(tmp))
34830
  }
34831
  return output.join('')
34832
}
34833
34834
function fromByteArray (uint8) {
34835
  var tmp
34836
  var len = uint8.length
34837
  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
34838
  var parts = []
34839
  var maxChunkLength = 16383 // must be multiple of 3
34840
34841
  // go through the array every three bytes, we'll deal with trailing stuff later
34842
  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
34843
    parts.push(encodeChunk(
34844
      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
34845
    ))
34846
  }
34847
34848
  // pad the end with zeros, but make sure to not forget the extra bytes
34849
  if (extraBytes === 1) {
34850
    tmp = uint8[len - 1]
34851
    parts.push(
34852
      lookup[tmp >> 2] +
34853
      lookup[(tmp << 4) & 0x3F] +
34854
      '=='
34855
    )
34856
  } else if (extraBytes === 2) {
34857
    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
34858
    parts.push(
34859
      lookup[tmp >> 10] +
34860
      lookup[(tmp >> 4) & 0x3F] +
34861
      lookup[(tmp << 2) & 0x3F] +
34862
      '='
34863
    )
34864
  }
34865
34866
  return parts.join('')
34867
}
34868
34869
34870
/***/ }),
34871
34872
/***/ 4181:
34873
/***/ (function(module) {
34874
34875
/* Copyright 2013 Google Inc. All Rights Reserved.
34876
34877
   Licensed under the Apache License, Version 2.0 (the "License");
34878
   you may not use this file except in compliance with the License.
34879
   You may obtain a copy of the License at
34880
34881
   http://www.apache.org/licenses/LICENSE-2.0
34882
34883
   Unless required by applicable law or agreed to in writing, software
34884
   distributed under the License is distributed on an "AS IS" BASIS,
34885
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
34886
   See the License for the specific language governing permissions and
34887
   limitations under the License.
34888
34889
   Bit reading helpers
34890
*/
34891
34892
var BROTLI_READ_SIZE = 4096;
34893
var BROTLI_IBUF_SIZE =  (2 * BROTLI_READ_SIZE + 32);
34894
var BROTLI_IBUF_MASK =  (2 * BROTLI_READ_SIZE - 1);
34895
34896
var kBitMask = new Uint32Array([
34897
  0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,
34898
  65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215
34899
]);
34900
34901
/* Input byte buffer, consist of a ringbuffer and a "slack" region where */
34902
/* bytes from the start of the ringbuffer are copied. */
34903
function BrotliBitReader(input) {
34904
  this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
34905
  this.input_ = input;    /* input callback */
34906
34907
  this.reset();
34908
}
34909
34910
BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
34911
BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
34912
34913
BrotliBitReader.prototype.reset = function() {
34914
  this.buf_ptr_ = 0;      /* next input will write here */
34915
  this.val_ = 0;          /* pre-fetched bits */
34916
  this.pos_ = 0;          /* byte position in stream */
34917
  this.bit_pos_ = 0;      /* current bit-reading position in val_ */
34918
  this.bit_end_pos_ = 0;  /* bit-reading end position from LSB of val_ */
34919
  this.eos_ = 0;          /* input stream is finished */
34920
34921
  this.readMoreInput();
34922
  for (var i = 0; i < 4; i++) {
34923
    this.val_ |= this.buf_[this.pos_] << (8 * i);
34924
    ++this.pos_;
34925
  }
34926
34927
  return this.bit_end_pos_ > 0;
34928
};
34929
34930
/* Fills up the input ringbuffer by calling the input callback.
34931
34932
   Does nothing if there are at least 32 bytes present after current position.
34933
34934
   Returns 0 if either:
34935
    - the input callback returned an error, or
34936
    - there is no more input and the position is past the end of the stream.
34937
34938
   After encountering the end of the input stream, 32 additional zero bytes are
34939
   copied to the ringbuffer, therefore it is safe to call this function after
34940
   every 32 bytes of input is read.
34941
*/
34942
BrotliBitReader.prototype.readMoreInput = function() {
34943
  if (this.bit_end_pos_ > 256) {
34944
    return;
34945
  } else if (this.eos_) {
34946
    if (this.bit_pos_ > this.bit_end_pos_)
34947
      throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);
34948
  } else {
34949
    var dst = this.buf_ptr_;
34950
    var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);
34951
    if (bytes_read < 0) {
34952
      throw new Error('Unexpected end of input');
34953
    }
34954
34955
    if (bytes_read < BROTLI_READ_SIZE) {
34956
      this.eos_ = 1;
34957
      /* Store 32 bytes of zero after the stream end. */
34958
      for (var p = 0; p < 32; p++)
34959
        this.buf_[dst + bytes_read + p] = 0;
34960
    }
34961
34962
    if (dst === 0) {
34963
      /* Copy the head of the ringbuffer to the slack region. */
34964
      for (var p = 0; p < 32; p++)
34965
        this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];
34966
34967
      this.buf_ptr_ = BROTLI_READ_SIZE;
34968
    } else {
34969
      this.buf_ptr_ = 0;
34970
    }
34971
34972
    this.bit_end_pos_ += bytes_read << 3;
34973
  }
34974
};
34975
34976
/* Guarantees that there are at least 24 bits in the buffer. */
34977
BrotliBitReader.prototype.fillBitWindow = function() {
34978
  while (this.bit_pos_ >= 8) {
34979
    this.val_ >>>= 8;
34980
    this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
34981
    ++this.pos_;
34982
    this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
34983
    this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
34984
  }
34985
};
34986
34987
/* Reads the specified number of bits from Read Buffer. */
34988
BrotliBitReader.prototype.readBits = function(n_bits) {
34989
  if (32 - this.bit_pos_ < n_bits) {
34990
    this.fillBitWindow();
34991
  }
34992
34993
  var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);
34994
  this.bit_pos_ += n_bits;
34995
  return val;
34996
};
34997
34998
module.exports = BrotliBitReader;
34999
35000
35001
/***/ }),
35002
35003
/***/ 7080:
35004
/***/ (function(__unused_webpack_module, exports) {
35005
35006
/* Copyright 2013 Google Inc. All Rights Reserved.
35007
35008
   Licensed under the Apache License, Version 2.0 (the "License");
35009
   you may not use this file except in compliance with the License.
35010
   You may obtain a copy of the License at
35011
35012
   http://www.apache.org/licenses/LICENSE-2.0
35013
35014
   Unless required by applicable law or agreed to in writing, software
35015
   distributed under the License is distributed on an "AS IS" BASIS,
35016
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
35017
   See the License for the specific language governing permissions and
35018
   limitations under the License.
35019
35020
   Lookup table to map the previous two bytes to a context id.
35021
35022
   There are four different context modeling modes defined here:
35023
     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
35024
     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
35025
     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
35026
     CONTEXT_SIGNED: second-order context model tuned for signed integers.
35027
35028
   The context id for the UTF8 context model is calculated as follows. If p1
35029
   and p2 are the previous two bytes, we calcualte the context as
35030
35031
     context = kContextLookup[p1] | kContextLookup[p2 + 256].
35032
35033
   If the previous two bytes are ASCII characters (i.e. < 128), this will be
35034
   equivalent to
35035
35036
     context = 4 * context1(p1) + context2(p2),
35037
35038
   where context1 is based on the previous byte in the following way:
35039
35040
     0  : non-ASCII control
35041
     1  : \t, \n, \r
35042
     2  : space
35043
     3  : other punctuation
35044
     4  : " '
35045
     5  : %
35046
     6  : ( < [ {
35047
     7  : ) > ] }
35048
     8  : , ; :
35049
     9  : .
35050
     10 : =
35051
     11 : number
35052
     12 : upper-case vowel
35053
     13 : upper-case consonant
35054
     14 : lower-case vowel
35055
     15 : lower-case consonant
35056
35057
   and context2 is based on the second last byte:
35058
35059
     0 : control, space
35060
     1 : punctuation
35061
     2 : upper-case letter, number
35062
     3 : lower-case letter
35063
35064
   If the last byte is ASCII, and the second last byte is not (in a valid UTF8
35065
   stream it will be a continuation byte, value between 128 and 191), the
35066
   context is the same as if the second last byte was an ASCII control or space.
35067
35068
   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
35069
   be a continuation byte and the context id is 2 or 3 depending on the LSB of
35070
   the last byte and to a lesser extent on the second last byte if it is ASCII.
35071
35072
   If the last byte is a UTF8 continuation byte, the second last byte can be:
35073
     - continuation byte: the next byte is probably ASCII or lead byte (assuming
35074
       4-byte UTF8 characters are rare) and the context id is 0 or 1.
35075
     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
35076
     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
35077
35078
   The possible value combinations of the previous two bytes, the range of
35079
   context ids and the type of the next byte is summarized in the table below:
35080
35081
   |--------\-----------------------------------------------------------------|
35082
   |         \                         Last byte                              |
35083
   | Second   \---------------------------------------------------------------|
35084
   | last byte \    ASCII            |   cont. byte        |   lead byte      |
35085
   |            \   (0-127)          |   (128-191)         |   (192-)         |
35086
   |=============|===================|=====================|==================|
35087
   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |
35088
   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |
35089
   |-------------|-------------------|---------------------|------------------|
35090
   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |
35091
   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |
35092
   |-------------|-------------------|---------------------|------------------|
35093
   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |
35094
   |  (192-207)  |                   |  context: 0 - 1     |                  |
35095
   |-------------|-------------------|---------------------|------------------|
35096
   |  lead byte  | not valid         |  next: cont.        |  not valid       |
35097
   |  (208-)     |                   |  context: 2 - 3     |                  |
35098
   |-------------|-------------------|---------------------|------------------|
35099
35100
   The context id for the signed context mode is calculated as:
35101
35102
     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].
35103
35104
   For any context modeling modes, the context ids can be calculated by |-ing
35105
   together two lookups from one table using context model dependent offsets:
35106
35107
     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].
35108
35109
   where offset1 and offset2 are dependent on the context mode.
35110
*/
35111
35112
var CONTEXT_LSB6         = 0;
35113
var CONTEXT_MSB6         = 1;
35114
var CONTEXT_UTF8         = 2;
35115
var CONTEXT_SIGNED       = 3;
35116
35117
/* Common context lookup table for all context modes. */
35118
exports.lookup = new Uint8Array([
35119
  /* CONTEXT_UTF8, last byte. */
35120
  /* ASCII range. */
35121
   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,
35122
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
35123
   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
35124
  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
35125
  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
35126
  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
35127
  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
35128
  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,
35129
  /* UTF8 continuation byte range. */
35130
  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
35131
  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
35132
  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
35133
  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
35134
  /* UTF8 lead byte range. */
35135
  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
35136
  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
35137
  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
35138
  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
35139
  /* CONTEXT_UTF8 second last byte. */
35140
  /* ASCII range. */
35141
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35142
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35143
  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
35144
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
35145
  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
35146
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
35147
  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
35148
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
35149
  /* UTF8 continuation byte range. */
35150
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35151
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35152
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35153
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35154
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35155
  /* UTF8 lead byte range. */
35156
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35157
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
35158
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
35159
  /* CONTEXT_SIGNED, second last byte. */
35160
  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
35161
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
35162
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
35163
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
35164
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
35165
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
35166
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
35167
  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
35168
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
35169
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
35170
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
35171
  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
35172
  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
35173
  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
35174
  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
35175
  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
35176
  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
35177
   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
35178
  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
35179
  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
35180
  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
35181
  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
35182
  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
35183
  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
35184
  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
35185
  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
35186
  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
35187
  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
35188
  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
35189
  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
35190
  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
35191
  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
35192
  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
35193
  /* CONTEXT_LSB6, last byte. */
35194
   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
35195
  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
35196
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
35197
  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
35198
   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
35199
  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
35200
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
35201
  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
35202
   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
35203
  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
35204
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
35205
  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
35206
   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
35207
  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
35208
  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
35209
  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
35210
  /* CONTEXT_MSB6, last byte. */
35211
   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,
35212
   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
35213
   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,
35214
  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
35215
  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
35216
  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
35217
  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
35218
  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
35219
  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
35220
  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
35221
  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
35222
  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
35223
  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
35224
  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
35225
  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
35226
  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
35227
  /* CONTEXT_{M,L}SB6, second last byte, */
35228
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35229
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35230
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35231
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35232
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35233
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35234
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35235
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35236
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35237
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35238
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35239
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35240
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35241
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35242
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35243
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35244
]);
35245
35246
exports.lookupOffsets = new Uint16Array([
35247
  /* CONTEXT_LSB6 */
35248
  1024, 1536,
35249
  /* CONTEXT_MSB6 */
35250
  1280, 1536,
35251
  /* CONTEXT_UTF8 */
35252
  0, 256,
35253
  /* CONTEXT_SIGNED */
35254
  768, 512,
35255
]);
35256
35257
35258
/***/ }),
35259
35260
/***/ 6450:
35261
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
35262
35263
var __webpack_unused_export__;
35264
/* Copyright 2013 Google Inc. All Rights Reserved.
35265
35266
   Licensed under the Apache License, Version 2.0 (the "License");
35267
   you may not use this file except in compliance with the License.
35268
   You may obtain a copy of the License at
35269
35270
   http://www.apache.org/licenses/LICENSE-2.0
35271
35272
   Unless required by applicable law or agreed to in writing, software
35273
   distributed under the License is distributed on an "AS IS" BASIS,
35274
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
35275
   See the License for the specific language governing permissions and
35276
   limitations under the License.
35277
*/
35278
35279
var BrotliInput = (__webpack_require__(6154)/* .BrotliInput */ .g);
35280
var BrotliOutput = (__webpack_require__(6154)/* .BrotliOutput */ .j);
35281
var BrotliBitReader = __webpack_require__(4181);
35282
var BrotliDictionary = __webpack_require__(5139);
35283
var HuffmanCode = (__webpack_require__(966)/* .HuffmanCode */ .h);
35284
var BrotliBuildHuffmanTable = (__webpack_require__(966)/* .BrotliBuildHuffmanTable */ .g);
35285
var Context = __webpack_require__(7080);
35286
var Prefix = __webpack_require__(8435);
35287
var Transform = __webpack_require__(2973);
35288
35289
var kDefaultCodeLength = 8;
35290
var kCodeLengthRepeatCode = 16;
35291
var kNumLiteralCodes = 256;
35292
var kNumInsertAndCopyCodes = 704;
35293
var kNumBlockLengthCodes = 26;
35294
var kLiteralContextBits = 6;
35295
var kDistanceContextBits = 2;
35296
35297
var HUFFMAN_TABLE_BITS = 8;
35298
var HUFFMAN_TABLE_MASK = 0xff;
35299
/* Maximum possible Huffman table size for an alphabet size of 704, max code
35300
 * length 15 and root table bits 8. */
35301
var HUFFMAN_MAX_TABLE_SIZE = 1080;
35302
35303
var CODE_LENGTH_CODES = 18;
35304
var kCodeLengthCodeOrder = new Uint8Array([
35305
  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35306
]);
35307
35308
var NUM_DISTANCE_SHORT_CODES = 16;
35309
var kDistanceShortCodeIndexOffset = new Uint8Array([
35310
  3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2
35311
]);
35312
35313
var kDistanceShortCodeValueOffset = new Int8Array([
35314
  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3
35315
]);
35316
35317
var kMaxHuffmanTableSize = new Uint16Array([
35318
  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,
35319
  854, 886, 920, 952, 984, 1016, 1048, 1080
35320
]);
35321
35322
function DecodeWindowBits(br) {
35323
  var n;
35324
  if (br.readBits(1) === 0) {
35325
    return 16;
35326
  }
35327
35328
  n = br.readBits(3);
35329
  if (n > 0) {
35330
    return 17 + n;
35331
  }
35332
35333
  n = br.readBits(3);
35334
  if (n > 0) {
35335
    return 8 + n;
35336
  }
35337
35338
  return 17;
35339
}
35340
35341
/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
35342
function DecodeVarLenUint8(br) {
35343
  if (br.readBits(1)) {
35344
    var nbits = br.readBits(3);
35345
    if (nbits === 0) {
35346
      return 1;
35347
    } else {
35348
      return br.readBits(nbits) + (1 << nbits);
35349
    }
35350
  }
35351
  return 0;
35352
}
35353
35354
function MetaBlockLength() {
35355
  this.meta_block_length = 0;
35356
  this.input_end = 0;
35357
  this.is_uncompressed = 0;
35358
  this.is_metadata = false;
35359
}
35360
35361
function DecodeMetaBlockLength(br) {
35362
  var out = new MetaBlockLength;
35363
  var size_nibbles;
35364
  var size_bytes;
35365
  var i;
35366
35367
  out.input_end = br.readBits(1);
35368
  if (out.input_end && br.readBits(1)) {
35369
    return out;
35370
  }
35371
35372
  size_nibbles = br.readBits(2) + 4;
35373
  if (size_nibbles === 7) {
35374
    out.is_metadata = true;
35375
35376
    if (br.readBits(1) !== 0)
35377
      throw new Error('Invalid reserved bit');
35378
35379
    size_bytes = br.readBits(2);
35380
    if (size_bytes === 0)
35381
      return out;
35382
35383
    for (i = 0; i < size_bytes; i++) {
35384
      var next_byte = br.readBits(8);
35385
      if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
35386
        throw new Error('Invalid size byte');
35387
35388
      out.meta_block_length |= next_byte << (i * 8);
35389
    }
35390
  } else {
35391
    for (i = 0; i < size_nibbles; ++i) {
35392
      var next_nibble = br.readBits(4);
35393
      if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
35394
        throw new Error('Invalid size nibble');
35395
35396
      out.meta_block_length |= next_nibble << (i * 4);
35397
    }
35398
  }
35399
35400
  ++out.meta_block_length;
35401
35402
  if (!out.input_end && !out.is_metadata) {
35403
    out.is_uncompressed = br.readBits(1);
35404
  }
35405
35406
  return out;
35407
}
35408
35409
/* Decodes the next Huffman code from bit-stream. */
35410
function ReadSymbol(table, index, br) {
35411
  var start_index = index;
35412
35413
  var nbits;
35414
  br.fillBitWindow();
35415
  index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;
35416
  nbits = table[index].bits - HUFFMAN_TABLE_BITS;
35417
  if (nbits > 0) {
35418
    br.bit_pos_ += HUFFMAN_TABLE_BITS;
35419
    index += table[index].value;
35420
    index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);
35421
  }
35422
  br.bit_pos_ += table[index].bits;
35423
  return table[index].value;
35424
}
35425
35426
function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
35427
  var symbol = 0;
35428
  var prev_code_len = kDefaultCodeLength;
35429
  var repeat = 0;
35430
  var repeat_code_len = 0;
35431
  var space = 32768;
35432
35433
  var table = [];
35434
  for (var i = 0; i < 32; i++)
35435
    table.push(new HuffmanCode(0, 0));
35436
35437
  BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);
35438
35439
  while (symbol < num_symbols && space > 0) {
35440
    var p = 0;
35441
    var code_len;
35442
35443
    br.readMoreInput();
35444
    br.fillBitWindow();
35445
    p += (br.val_ >>> br.bit_pos_) & 31;
35446
    br.bit_pos_ += table[p].bits;
35447
    code_len = table[p].value & 0xff;
35448
    if (code_len < kCodeLengthRepeatCode) {
35449
      repeat = 0;
35450
      code_lengths[symbol++] = code_len;
35451
      if (code_len !== 0) {
35452
        prev_code_len = code_len;
35453
        space -= 32768 >> code_len;
35454
      }
35455
    } else {
35456
      var extra_bits = code_len - 14;
35457
      var old_repeat;
35458
      var repeat_delta;
35459
      var new_len = 0;
35460
      if (code_len === kCodeLengthRepeatCode) {
35461
        new_len = prev_code_len;
35462
      }
35463
      if (repeat_code_len !== new_len) {
35464
        repeat = 0;
35465
        repeat_code_len = new_len;
35466
      }
35467
      old_repeat = repeat;
35468
      if (repeat > 0) {
35469
        repeat -= 2;
35470
        repeat <<= extra_bits;
35471
      }
35472
      repeat += br.readBits(extra_bits) + 3;
35473
      repeat_delta = repeat - old_repeat;
35474
      if (symbol + repeat_delta > num_symbols) {
35475
        throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');
35476
      }
35477
35478
      for (var x = 0; x < repeat_delta; x++)
35479
        code_lengths[symbol + x] = repeat_code_len;
35480
35481
      symbol += repeat_delta;
35482
35483
      if (repeat_code_len !== 0) {
35484
        space -= repeat_delta << (15 - repeat_code_len);
35485
      }
35486
    }
35487
  }
35488
  if (space !== 0) {
35489
    throw new Error("[ReadHuffmanCodeLengths] space = " + space);
35490
  }
35491
35492
  for (; symbol < num_symbols; symbol++)
35493
    code_lengths[symbol] = 0;
35494
}
35495
35496
function ReadHuffmanCode(alphabet_size, tables, table, br) {
35497
  var table_size = 0;
35498
  var simple_code_or_skip;
35499
  var code_lengths = new Uint8Array(alphabet_size);
35500
35501
  br.readMoreInput();
35502
35503
  /* simple_code_or_skip is used as follows:
35504
     1 for simple code;
35505
     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
35506
  simple_code_or_skip = br.readBits(2);
35507
  if (simple_code_or_skip === 1) {
35508
    /* Read symbols, codes & code lengths directly. */
35509
    var i;
35510
    var max_bits_counter = alphabet_size - 1;
35511
    var max_bits = 0;
35512
    var symbols = new Int32Array(4);
35513
    var num_symbols = br.readBits(2) + 1;
35514
    while (max_bits_counter) {
35515
      max_bits_counter >>= 1;
35516
      ++max_bits;
35517
    }
35518
35519
    for (i = 0; i < num_symbols; ++i) {
35520
      symbols[i] = br.readBits(max_bits) % alphabet_size;
35521
      code_lengths[symbols[i]] = 2;
35522
    }
35523
    code_lengths[symbols[0]] = 1;
35524
    switch (num_symbols) {
35525
      case 1:
35526
        break;
35527
      case 3:
35528
        if ((symbols[0] === symbols[1]) ||
35529
            (symbols[0] === symbols[2]) ||
35530
            (symbols[1] === symbols[2])) {
35531
          throw new Error('[ReadHuffmanCode] invalid symbols');
35532
        }
35533
        break;
35534
      case 2:
35535
        if (symbols[0] === symbols[1]) {
35536
          throw new Error('[ReadHuffmanCode] invalid symbols');
35537
        }
35538
35539
        code_lengths[symbols[1]] = 1;
35540
        break;
35541
      case 4:
35542
        if ((symbols[0] === symbols[1]) ||
35543
            (symbols[0] === symbols[2]) ||
35544
            (symbols[0] === symbols[3]) ||
35545
            (symbols[1] === symbols[2]) ||
35546
            (symbols[1] === symbols[3]) ||
35547
            (symbols[2] === symbols[3])) {
35548
          throw new Error('[ReadHuffmanCode] invalid symbols');
35549
        }
35550
35551
        if (br.readBits(1)) {
35552
          code_lengths[symbols[2]] = 3;
35553
          code_lengths[symbols[3]] = 3;
35554
        } else {
35555
          code_lengths[symbols[0]] = 2;
35556
        }
35557
        break;
35558
    }
35559
  } else {  /* Decode Huffman-coded code lengths. */
35560
    var i;
35561
    var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);
35562
    var space = 32;
35563
    var num_codes = 0;
35564
    /* Static Huffman code for the code length code lengths */
35565
    var huff = [
35566
      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),
35567
      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),
35568
      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),
35569
      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)
35570
    ];
35571
    for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {
35572
      var code_len_idx = kCodeLengthCodeOrder[i];
35573
      var p = 0;
35574
      var v;
35575
      br.fillBitWindow();
35576
      p += (br.val_ >>> br.bit_pos_) & 15;
35577
      br.bit_pos_ += huff[p].bits;
35578
      v = huff[p].value;
35579
      code_length_code_lengths[code_len_idx] = v;
35580
      if (v !== 0) {
35581
        space -= (32 >> v);
35582
        ++num_codes;
35583
      }
35584
    }
35585
35586
    if (!(num_codes === 1 || space === 0))
35587
      throw new Error('[ReadHuffmanCode] invalid num_codes or space');
35588
35589
    ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);
35590
  }
35591
35592
  table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);
35593
35594
  if (table_size === 0) {
35595
    throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");
35596
  }
35597
35598
  return table_size;
35599
}
35600
35601
function ReadBlockLength(table, index, br) {
35602
  var code;
35603
  var nbits;
35604
  code = ReadSymbol(table, index, br);
35605
  nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
35606
  return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
35607
}
35608
35609
function TranslateShortCodes(code, ringbuffer, index) {
35610
  var val;
35611
  if (code < NUM_DISTANCE_SHORT_CODES) {
35612
    index += kDistanceShortCodeIndexOffset[code];
35613
    index &= 3;
35614
    val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
35615
  } else {
35616
    val = code - NUM_DISTANCE_SHORT_CODES + 1;
35617
  }
35618
  return val;
35619
}
35620
35621
function MoveToFront(v, index) {
35622
  var value = v[index];
35623
  var i = index;
35624
  for (; i; --i) v[i] = v[i - 1];
35625
  v[0] = value;
35626
}
35627
35628
function InverseMoveToFrontTransform(v, v_len) {
35629
  var mtf = new Uint8Array(256);
35630
  var i;
35631
  for (i = 0; i < 256; ++i) {
35632
    mtf[i] = i;
35633
  }
35634
  for (i = 0; i < v_len; ++i) {
35635
    var index = v[i];
35636
    v[i] = mtf[index];
35637
    if (index) MoveToFront(mtf, index);
35638
  }
35639
}
35640
35641
/* Contains a collection of huffman trees with the same alphabet size. */
35642
function HuffmanTreeGroup(alphabet_size, num_htrees) {
35643
  this.alphabet_size = alphabet_size;
35644
  this.num_htrees = num_htrees;
35645
  this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);
35646
  this.htrees = new Uint32Array(num_htrees);
35647
}
35648
35649
HuffmanTreeGroup.prototype.decode = function(br) {
35650
  var i;
35651
  var table_size;
35652
  var next = 0;
35653
  for (i = 0; i < this.num_htrees; ++i) {
35654
    this.htrees[i] = next;
35655
    table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);
35656
    next += table_size;
35657
  }
35658
};
35659
35660
function DecodeContextMap(context_map_size, br) {
35661
  var out = { num_htrees: null, context_map: null };
35662
  var use_rle_for_zeros;
35663
  var max_run_length_prefix = 0;
35664
  var table;
35665
  var i;
35666
35667
  br.readMoreInput();
35668
  var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
35669
35670
  var context_map = out.context_map = new Uint8Array(context_map_size);
35671
  if (num_htrees <= 1) {
35672
    return out;
35673
  }
35674
35675
  use_rle_for_zeros = br.readBits(1);
35676
  if (use_rle_for_zeros) {
35677
    max_run_length_prefix = br.readBits(4) + 1;
35678
  }
35679
35680
  table = [];
35681
  for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {
35682
    table[i] = new HuffmanCode(0, 0);
35683
  }
35684
35685
  ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);
35686
35687
  for (i = 0; i < context_map_size;) {
35688
    var code;
35689
35690
    br.readMoreInput();
35691
    code = ReadSymbol(table, 0, br);
35692
    if (code === 0) {
35693
      context_map[i] = 0;
35694
      ++i;
35695
    } else if (code <= max_run_length_prefix) {
35696
      var reps = 1 + (1 << code) + br.readBits(code);
35697
      while (--reps) {
35698
        if (i >= context_map_size) {
35699
          throw new Error("[DecodeContextMap] i >= context_map_size");
35700
        }
35701
        context_map[i] = 0;
35702
        ++i;
35703
      }
35704
    } else {
35705
      context_map[i] = code - max_run_length_prefix;
35706
      ++i;
35707
    }
35708
  }
35709
  if (br.readBits(1)) {
35710
    InverseMoveToFrontTransform(context_map, context_map_size);
35711
  }
35712
35713
  return out;
35714
}
35715
35716
function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
35717
  var ringbuffer = tree_type * 2;
35718
  var index = tree_type;
35719
  var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);
35720
  var block_type;
35721
  if (type_code === 0) {
35722
    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
35723
  } else if (type_code === 1) {
35724
    block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;
35725
  } else {
35726
    block_type = type_code - 2;
35727
  }
35728
  if (block_type >= max_block_type) {
35729
    block_type -= max_block_type;
35730
  }
35731
  block_types[tree_type] = block_type;
35732
  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
35733
  ++indexes[index];
35734
}
35735
35736
function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
35737
  var rb_size = ringbuffer_mask + 1;
35738
  var rb_pos = pos & ringbuffer_mask;
35739
  var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
35740
  var nbytes;
35741
35742
  /* For short lengths copy byte-by-byte */
35743
  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
35744
    while (len-- > 0) {
35745
      br.readMoreInput();
35746
      ringbuffer[rb_pos++] = br.readBits(8);
35747
      if (rb_pos === rb_size) {
35748
        output.write(ringbuffer, rb_size);
35749
        rb_pos = 0;
35750
      }
35751
    }
35752
    return;
35753
  }
35754
35755
  if (br.bit_end_pos_ < 32) {
35756
    throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');
35757
  }
35758
35759
  /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */
35760
  while (br.bit_pos_ < 32) {
35761
    ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);
35762
    br.bit_pos_ += 8;
35763
    ++rb_pos;
35764
    --len;
35765
  }
35766
35767
  /* Copy remaining bytes from br.buf_ to ringbuffer. */
35768
  nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;
35769
  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
35770
    var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
35771
    for (var x = 0; x < tail; x++)
35772
      ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
35773
35774
    nbytes -= tail;
35775
    rb_pos += tail;
35776
    len -= tail;
35777
    br_pos = 0;
35778
  }
35779
35780
  for (var x = 0; x < nbytes; x++)
35781
    ringbuffer[rb_pos + x] = br.buf_[br_pos + x];
35782
35783
  rb_pos += nbytes;
35784
  len -= nbytes;
35785
35786
  /* If we wrote past the logical end of the ringbuffer, copy the tail of the
35787
     ringbuffer to its beginning and flush the ringbuffer to the output. */
35788
  if (rb_pos >= rb_size) {
35789
    output.write(ringbuffer, rb_size);
35790
    rb_pos -= rb_size;
35791
    for (var x = 0; x < rb_pos; x++)
35792
      ringbuffer[x] = ringbuffer[rb_size + x];
35793
  }
35794
35795
  /* If we have more to copy than the remaining size of the ringbuffer, then we
35796
     first fill the ringbuffer from the input and then flush the ringbuffer to
35797
     the output */
35798
  while (rb_pos + len >= rb_size) {
35799
    nbytes = rb_size - rb_pos;
35800
    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
35801
      throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
35802
    }
35803
    output.write(ringbuffer, rb_size);
35804
    len -= nbytes;
35805
    rb_pos = 0;
35806
  }
35807
35808
  /* Copy straight from the input onto the ringbuffer. The ringbuffer will be
35809
     flushed to the output at a later time. */
35810
  if (br.input_.read(ringbuffer, rb_pos, len) < len) {
35811
    throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');
35812
  }
35813
35814
  /* Restore the state of the bit reader. */
35815
  br.reset();
35816
}
35817
35818
/* Advances the bit reader position to the next byte boundary and verifies
35819
   that any skipped bits are set to zero. */
35820
function JumpToByteBoundary(br) {
35821
  var new_bit_pos = (br.bit_pos_ + 7) & ~7;
35822
  var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
35823
  return pad_bits == 0;
35824
}
35825
35826
function BrotliDecompressedSize(buffer) {
35827
  var input = new BrotliInput(buffer);
35828
  var br = new BrotliBitReader(input);
35829
  DecodeWindowBits(br);
35830
  var out = DecodeMetaBlockLength(br);
35831
  return out.meta_block_length;
35832
}
35833
35834
__webpack_unused_export__ = BrotliDecompressedSize;
35835
35836
function BrotliDecompressBuffer(buffer, output_size) {
35837
  var input = new BrotliInput(buffer);
35838
35839
  if (output_size == null) {
35840
    output_size = BrotliDecompressedSize(buffer);
35841
  }
35842
35843
  var output_buffer = new Uint8Array(output_size);
35844
  var output = new BrotliOutput(output_buffer);
35845
35846
  BrotliDecompress(input, output);
35847
35848
  if (output.pos < output.buffer.length) {
35849
    output.buffer = output.buffer.subarray(0, output.pos);
35850
  }
35851
35852
  return output.buffer;
35853
}
35854
35855
exports.BrotliDecompressBuffer = BrotliDecompressBuffer;
35856
35857
function BrotliDecompress(input, output) {
35858
  var i;
35859
  var pos = 0;
35860
  var input_end = 0;
35861
  var window_bits = 0;
35862
  var max_backward_distance;
35863
  var max_distance = 0;
35864
  var ringbuffer_size;
35865
  var ringbuffer_mask;
35866
  var ringbuffer;
35867
  var ringbuffer_end;
35868
  /* This ring buffer holds a few past copy distances that will be used by */
35869
  /* some special distance codes. */
35870
  var dist_rb = [ 16, 15, 11, 4 ];
35871
  var dist_rb_idx = 0;
35872
  /* The previous 2 bytes used for context. */
35873
  var prev_byte1 = 0;
35874
  var prev_byte2 = 0;
35875
  var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];
35876
  var block_type_trees;
35877
  var block_len_trees;
35878
  var br;
35879
35880
  /* We need the slack region for the following reasons:
35881
       - always doing two 8-byte copies for fast backward copying
35882
       - transforms
35883
       - flushing the input ringbuffer when decoding uncompressed blocks */
35884
  var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
35885
35886
  br = new BrotliBitReader(input);
35887
35888
  /* Decode window size. */
35889
  window_bits = DecodeWindowBits(br);
35890
  max_backward_distance = (1 << window_bits) - 16;
35891
35892
  ringbuffer_size = 1 << window_bits;
35893
  ringbuffer_mask = ringbuffer_size - 1;
35894
  ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);
35895
  ringbuffer_end = ringbuffer_size;
35896
35897
  block_type_trees = [];
35898
  block_len_trees = [];
35899
  for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {
35900
    block_type_trees[x] = new HuffmanCode(0, 0);
35901
    block_len_trees[x] = new HuffmanCode(0, 0);
35902
  }
35903
35904
  while (!input_end) {
35905
    var meta_block_remaining_len = 0;
35906
    var is_uncompressed;
35907
    var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];
35908
    var block_type = [ 0 ];
35909
    var num_block_types = [ 1, 1, 1 ];
35910
    var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];
35911
    var block_type_rb_index = [ 0 ];
35912
    var distance_postfix_bits;
35913
    var num_direct_distance_codes;
35914
    var distance_postfix_mask;
35915
    var num_distance_codes;
35916
    var context_map = null;
35917
    var context_modes = null;
35918
    var num_literal_htrees;
35919
    var dist_context_map = null;
35920
    var num_dist_htrees;
35921
    var context_offset = 0;
35922
    var context_map_slice = null;
35923
    var literal_htree_index = 0;
35924
    var dist_context_offset = 0;
35925
    var dist_context_map_slice = null;
35926
    var dist_htree_index = 0;
35927
    var context_lookup_offset1 = 0;
35928
    var context_lookup_offset2 = 0;
35929
    var context_mode;
35930
    var htree_command;
35931
35932
    for (i = 0; i < 3; ++i) {
35933
      hgroup[i].codes = null;
35934
      hgroup[i].htrees = null;
35935
    }
35936
35937
    br.readMoreInput();
35938
35939
    var _out = DecodeMetaBlockLength(br);
35940
    meta_block_remaining_len = _out.meta_block_length;
35941
    if (pos + meta_block_remaining_len > output.buffer.length) {
35942
      /* We need to grow the output buffer to fit the additional data. */
35943
      var tmp = new Uint8Array( pos + meta_block_remaining_len );
35944
      tmp.set( output.buffer );
35945
      output.buffer = tmp;
35946
    }
35947
    input_end = _out.input_end;
35948
    is_uncompressed = _out.is_uncompressed;
35949
35950
    if (_out.is_metadata) {
35951
      JumpToByteBoundary(br);
35952
35953
      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
35954
        br.readMoreInput();
35955
        /* Read one byte and ignore it. */
35956
        br.readBits(8);
35957
      }
35958
35959
      continue;
35960
    }
35961
35962
    if (meta_block_remaining_len === 0) {
35963
      continue;
35964
    }
35965
35966
    if (is_uncompressed) {
35967
      br.bit_pos_ = (br.bit_pos_ + 7) & ~7;
35968
      CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,
35969
                                    ringbuffer, ringbuffer_mask, br);
35970
      pos += meta_block_remaining_len;
35971
      continue;
35972
    }
35973
35974
    for (i = 0; i < 3; ++i) {
35975
      num_block_types[i] = DecodeVarLenUint8(br) + 1;
35976
      if (num_block_types[i] >= 2) {
35977
        ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
35978
        ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
35979
        block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);
35980
        block_type_rb_index[i] = 1;
35981
      }
35982
    }
35983
35984
    br.readMoreInput();
35985
35986
    distance_postfix_bits = br.readBits(2);
35987
    num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
35988
    distance_postfix_mask = (1 << distance_postfix_bits) - 1;
35989
    num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));
35990
    context_modes = new Uint8Array(num_block_types[0]);
35991
35992
    for (i = 0; i < num_block_types[0]; ++i) {
35993
       br.readMoreInput();
35994
       context_modes[i] = (br.readBits(2) << 1);
35995
    }
35996
35997
    var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);
35998
    num_literal_htrees = _o1.num_htrees;
35999
    context_map = _o1.context_map;
36000
36001
    var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);
36002
    num_dist_htrees = _o2.num_htrees;
36003
    dist_context_map = _o2.context_map;
36004
36005
    hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);
36006
    hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);
36007
    hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);
36008
36009
    for (i = 0; i < 3; ++i) {
36010
      hgroup[i].decode(br);
36011
    }
36012
36013
    context_map_slice = 0;
36014
    dist_context_map_slice = 0;
36015
    context_mode = context_modes[block_type[0]];
36016
    context_lookup_offset1 = Context.lookupOffsets[context_mode];
36017
    context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
36018
    htree_command = hgroup[1].htrees[0];
36019
36020
    while (meta_block_remaining_len > 0) {
36021
      var cmd_code;
36022
      var range_idx;
36023
      var insert_code;
36024
      var copy_code;
36025
      var insert_length;
36026
      var copy_length;
36027
      var distance_code;
36028
      var distance;
36029
      var context;
36030
      var j;
36031
      var copy_dst;
36032
36033
      br.readMoreInput();
36034
36035
      if (block_length[1] === 0) {
36036
        DecodeBlockType(num_block_types[1],
36037
                        block_type_trees, 1, block_type, block_type_rb,
36038
                        block_type_rb_index, br);
36039
        block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);
36040
        htree_command = hgroup[1].htrees[block_type[1]];
36041
      }
36042
      --block_length[1];
36043
      cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);
36044
      range_idx = cmd_code >> 6;
36045
      if (range_idx >= 2) {
36046
        range_idx -= 2;
36047
        distance_code = -1;
36048
      } else {
36049
        distance_code = 0;
36050
      }
36051
      insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);
36052
      copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
36053
      insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +
36054
          br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);
36055
      copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +
36056
          br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);
36057
      prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];
36058
      prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];
36059
      for (j = 0; j < insert_length; ++j) {
36060
        br.readMoreInput();
36061
36062
        if (block_length[0] === 0) {
36063
          DecodeBlockType(num_block_types[0],
36064
                          block_type_trees, 0, block_type, block_type_rb,
36065
                          block_type_rb_index, br);
36066
          block_length[0] = ReadBlockLength(block_len_trees, 0, br);
36067
          context_offset = block_type[0] << kLiteralContextBits;
36068
          context_map_slice = context_offset;
36069
          context_mode = context_modes[block_type[0]];
36070
          context_lookup_offset1 = Context.lookupOffsets[context_mode];
36071
          context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
36072
        }
36073
        context = (Context.lookup[context_lookup_offset1 + prev_byte1] |
36074
                   Context.lookup[context_lookup_offset2 + prev_byte2]);
36075
        literal_htree_index = context_map[context_map_slice + context];
36076
        --block_length[0];
36077
        prev_byte2 = prev_byte1;
36078
        prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);
36079
        ringbuffer[pos & ringbuffer_mask] = prev_byte1;
36080
        if ((pos & ringbuffer_mask) === ringbuffer_mask) {
36081
          output.write(ringbuffer, ringbuffer_size);
36082
        }
36083
        ++pos;
36084
      }
36085
      meta_block_remaining_len -= insert_length;
36086
      if (meta_block_remaining_len <= 0) break;
36087
36088
      if (distance_code < 0) {
36089
        var context;
36090
36091
        br.readMoreInput();
36092
        if (block_length[2] === 0) {
36093
          DecodeBlockType(num_block_types[2],
36094
                          block_type_trees, 2, block_type, block_type_rb,
36095
                          block_type_rb_index, br);
36096
          block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);
36097
          dist_context_offset = block_type[2] << kDistanceContextBits;
36098
          dist_context_map_slice = dist_context_offset;
36099
        }
36100
        --block_length[2];
36101
        context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;
36102
        dist_htree_index = dist_context_map[dist_context_map_slice + context];
36103
        distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);
36104
        if (distance_code >= num_direct_distance_codes) {
36105
          var nbits;
36106
          var postfix;
36107
          var offset;
36108
          distance_code -= num_direct_distance_codes;
36109
          postfix = distance_code & distance_postfix_mask;
36110
          distance_code >>= distance_postfix_bits;
36111
          nbits = (distance_code >> 1) + 1;
36112
          offset = ((2 + (distance_code & 1)) << nbits) - 4;
36113
          distance_code = num_direct_distance_codes +
36114
              ((offset + br.readBits(nbits)) <<
36115
               distance_postfix_bits) + postfix;
36116
        }
36117
      }
36118
36119
      /* Convert the distance code to the actual distance by possibly looking */
36120
      /* up past distnaces from the ringbuffer. */
36121
      distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);
36122
      if (distance < 0) {
36123
        throw new Error('[BrotliDecompress] invalid distance');
36124
      }
36125
36126
      if (pos < max_backward_distance &&
36127
          max_distance !== max_backward_distance) {
36128
        max_distance = pos;
36129
      } else {
36130
        max_distance = max_backward_distance;
36131
      }
36132
36133
      copy_dst = pos & ringbuffer_mask;
36134
36135
      if (distance > max_distance) {
36136
        if (copy_length >= BrotliDictionary.minDictionaryWordLength &&
36137
            copy_length <= BrotliDictionary.maxDictionaryWordLength) {
36138
          var offset = BrotliDictionary.offsetsByLength[copy_length];
36139
          var word_id = distance - max_distance - 1;
36140
          var shift = BrotliDictionary.sizeBitsByLength[copy_length];
36141
          var mask = (1 << shift) - 1;
36142
          var word_idx = word_id & mask;
36143
          var transform_idx = word_id >> shift;
36144
          offset += word_idx * copy_length;
36145
          if (transform_idx < Transform.kNumTransforms) {
36146
            var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);
36147
            copy_dst += len;
36148
            pos += len;
36149
            meta_block_remaining_len -= len;
36150
            if (copy_dst >= ringbuffer_end) {
36151
              output.write(ringbuffer, ringbuffer_size);
36152
36153
              for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)
36154
                ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];
36155
            }
36156
          } else {
36157
            throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
36158
              " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
36159
          }
36160
        } else {
36161
          throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
36162
            " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
36163
        }
36164
      } else {
36165
        if (distance_code > 0) {
36166
          dist_rb[dist_rb_idx & 3] = distance;
36167
          ++dist_rb_idx;
36168
        }
36169
36170
        if (copy_length > meta_block_remaining_len) {
36171
          throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance +
36172
            " len: " + copy_length + " bytes left: " + meta_block_remaining_len);
36173
        }
36174
36175
        for (j = 0; j < copy_length; ++j) {
36176
          ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];
36177
          if ((pos & ringbuffer_mask) === ringbuffer_mask) {
36178
            output.write(ringbuffer, ringbuffer_size);
36179
          }
36180
          ++pos;
36181
          --meta_block_remaining_len;
36182
        }
36183
      }
36184
36185
      /* When we get here, we must have inserted at least one literal and */
36186
      /* made a copy of at least length two, therefore accessing the last 2 */
36187
      /* bytes is valid. */
36188
      prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];
36189
      prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];
36190
    }
36191
36192
    /* Protect pos from overflow, wrap it around at every GB of input data */
36193
    pos &= 0x3fffffff;
36194
  }
36195
36196
  output.write(ringbuffer, pos & ringbuffer_mask);
36197
}
36198
36199
__webpack_unused_export__ = BrotliDecompress;
36200
36201
BrotliDictionary.init();
36202
36203
36204
/***/ }),
36205
36206
/***/ 5340:
36207
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
36208
36209
var base64 = __webpack_require__(9742);
36210
36211
/**
36212
 * The normal dictionary-data.js is quite large, which makes it
36213
 * unsuitable for browser usage. In order to make it smaller,
36214
 * we read dictionary.bin, which is a compressed version of
36215
 * the dictionary, and on initial load, Brotli decompresses
36216
 * it's own dictionary. 😜
36217
 */
36218
exports.init = function() {
36219
  var BrotliDecompressBuffer = (__webpack_require__(6450).BrotliDecompressBuffer);
36220
  var compressed = base64.toByteArray(__webpack_require__(2722));
36221
  return BrotliDecompressBuffer(compressed);
36222
};
36223
36224
36225
/***/ }),
36226
36227
/***/ 2722:
36228
/***/ (function(module) {
36229
36230
module.exports="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";
36231
36232
36233
/***/ }),
36234
36235
/***/ 5139:
36236
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
36237
36238
/* Copyright 2013 Google Inc. All Rights Reserved.
36239
36240
   Licensed under the Apache License, Version 2.0 (the "License");
36241
   you may not use this file except in compliance with the License.
36242
   You may obtain a copy of the License at
36243
36244
   http://www.apache.org/licenses/LICENSE-2.0
36245
36246
   Unless required by applicable law or agreed to in writing, software
36247
   distributed under the License is distributed on an "AS IS" BASIS,
36248
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36249
   See the License for the specific language governing permissions and
36250
   limitations under the License.
36251
36252
   Collection of static dictionary words.
36253
*/
36254
36255
var data = __webpack_require__(5340);
36256
exports.init = function() {
36257
  exports.dictionary = data.init();
36258
};
36259
36260
exports.offsetsByLength = new Uint32Array([
36261
     0,     0,     0,     0,     0,  4096,  9216, 21504, 35840, 44032,
36262
 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,
36263
 115968, 118528, 119872, 121280, 122016,
36264
]);
36265
36266
exports.sizeBitsByLength = new Uint8Array([
36267
  0,  0,  0,  0, 10, 10, 11, 11, 10, 10,
36268
 10, 10, 10,  9,  9,  8,  7,  7,  8,  7,
36269
  7,  6,  6,  5,  5,
36270
]);
36271
36272
exports.minDictionaryWordLength = 4;
36273
exports.maxDictionaryWordLength = 24;
36274
36275
36276
/***/ }),
36277
36278
/***/ 966:
36279
/***/ (function(__unused_webpack_module, exports) {
36280
36281
function HuffmanCode(bits, value) {
36282
  this.bits = bits;   /* number of bits used for this symbol */
36283
  this.value = value; /* symbol value or table offset */
36284
}
36285
36286
exports.h = HuffmanCode;
36287
36288
var MAX_LENGTH = 15;
36289
36290
/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
36291
   bit-wise reversal of the len least significant bits of key. */
36292
function GetNextKey(key, len) {
36293
  var step = 1 << (len - 1);
36294
  while (key & step) {
36295
    step >>= 1;
36296
  }
36297
  return (key & (step - 1)) + step;
36298
}
36299
36300
/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
36301
/* Assumes that end is an integer multiple of step */
36302
function ReplicateValue(table, i, step, end, code) {
36303
  do {
36304
    end -= step;
36305
    table[i + end] = new HuffmanCode(code.bits, code.value);
36306
  } while (end > 0);
36307
}
36308
36309
/* Returns the table width of the next 2nd level table. count is the histogram
36310
   of bit lengths for the remaining symbols, len is the code length of the next
36311
   processed symbol */
36312
function NextTableBitSize(count, len, root_bits) {
36313
  var left = 1 << (len - root_bits);
36314
  while (len < MAX_LENGTH) {
36315
    left -= count[len];
36316
    if (left <= 0) break;
36317
    ++len;
36318
    left <<= 1;
36319
  }
36320
  return len - root_bits;
36321
}
36322
36323
exports.g = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
36324
  var start_table = table;
36325
  var code;            /* current table entry */
36326
  var len;             /* current code length */
36327
  var symbol;          /* symbol index in original or sorted table */
36328
  var key;             /* reversed prefix code */
36329
  var step;            /* step size to replicate values in current table */
36330
  var low;             /* low bits for current root entry */
36331
  var mask;            /* mask for low bits */
36332
  var table_bits;      /* key length of current table */
36333
  var table_size;      /* size of current table */
36334
  var total_size;      /* sum of root table size and 2nd level table sizes */
36335
  var sorted;          /* symbols sorted by code length */
36336
  var count = new Int32Array(MAX_LENGTH + 1);  /* number of codes of each length */
36337
  var offset = new Int32Array(MAX_LENGTH + 1);  /* offsets in sorted table for each length */
36338
36339
  sorted = new Int32Array(code_lengths_size);
36340
36341
  /* build histogram of code lengths */
36342
  for (symbol = 0; symbol < code_lengths_size; symbol++) {
36343
    count[code_lengths[symbol]]++;
36344
  }
36345
36346
  /* generate offsets into sorted symbol table by code length */
36347
  offset[1] = 0;
36348
  for (len = 1; len < MAX_LENGTH; len++) {
36349
    offset[len + 1] = offset[len] + count[len];
36350
  }
36351
36352
  /* sort symbols by length, by symbol order within each length */
36353
  for (symbol = 0; symbol < code_lengths_size; symbol++) {
36354
    if (code_lengths[symbol] !== 0) {
36355
      sorted[offset[code_lengths[symbol]]++] = symbol;
36356
    }
36357
  }
36358
36359
  table_bits = root_bits;
36360
  table_size = 1 << table_bits;
36361
  total_size = table_size;
36362
36363
  /* special case code with only one value */
36364
  if (offset[MAX_LENGTH] === 1) {
36365
    for (key = 0; key < total_size; ++key) {
36366
      root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);
36367
    }
36368
36369
    return total_size;
36370
  }
36371
36372
  /* fill in root table */
36373
  key = 0;
36374
  symbol = 0;
36375
  for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
36376
    for (; count[len] > 0; --count[len]) {
36377
      code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);
36378
      ReplicateValue(root_table, table + key, step, table_size, code);
36379
      key = GetNextKey(key, len);
36380
    }
36381
  }
36382
36383
  /* fill in 2nd level tables and add pointers to root table */
36384
  mask = total_size - 1;
36385
  low = -1;
36386
  for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
36387
    for (; count[len] > 0; --count[len]) {
36388
      if ((key & mask) !== low) {
36389
        table += table_size;
36390
        table_bits = NextTableBitSize(count, len, root_bits);
36391
        table_size = 1 << table_bits;
36392
        total_size += table_size;
36393
        low = key & mask;
36394
        root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);
36395
      }
36396
      code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);
36397
      ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);
36398
      key = GetNextKey(key, len);
36399
    }
36400
  }
36401
36402
  return total_size;
36403
}
36404
36405
36406
/***/ }),
36407
36408
/***/ 8435:
36409
/***/ (function(__unused_webpack_module, exports) {
36410
36411
/* Copyright 2013 Google Inc. All Rights Reserved.
36412
36413
   Licensed under the Apache License, Version 2.0 (the "License");
36414
   you may not use this file except in compliance with the License.
36415
   You may obtain a copy of the License at
36416
36417
   http://www.apache.org/licenses/LICENSE-2.0
36418
36419
   Unless required by applicable law or agreed to in writing, software
36420
   distributed under the License is distributed on an "AS IS" BASIS,
36421
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36422
   See the License for the specific language governing permissions and
36423
   limitations under the License.
36424
36425
   Lookup tables to map prefix codes to value ranges. This is used during
36426
   decoding of the block lengths, literal insertion lengths and copy lengths.
36427
*/
36428
36429
/* Represents the range of values belonging to a prefix code: */
36430
/* [offset, offset + 2^nbits) */
36431
function PrefixCodeRange(offset, nbits) {
36432
  this.offset = offset;
36433
  this.nbits = nbits;
36434
}
36435
36436
exports.kBlockLengthPrefixCode = [
36437
  new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),
36438
  new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),
36439
  new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),
36440
  new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),
36441
  new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),
36442
  new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),
36443
  new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)
36444
];
36445
36446
exports.kInsertLengthPrefixCode = [
36447
  new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),
36448
  new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),
36449
  new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),
36450
  new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),
36451
  new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),
36452
  new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),
36453
];
36454
36455
exports.kCopyLengthPrefixCode = [
36456
  new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),
36457
  new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),
36458
  new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),
36459
  new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),
36460
  new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),
36461
  new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),
36462
];
36463
36464
exports.kInsertRangeLut = [
36465
  0, 0, 8, 8, 0, 16, 8, 16, 16,
36466
];
36467
36468
exports.kCopyRangeLut = [
36469
  0, 8, 0, 8, 16, 0, 16, 8, 16,
36470
];
36471
36472
36473
/***/ }),
36474
36475
/***/ 6154:
36476
/***/ (function(__unused_webpack_module, exports) {
36477
36478
function BrotliInput(buffer) {
36479
  this.buffer = buffer;
36480
  this.pos = 0;
36481
}
36482
36483
BrotliInput.prototype.read = function(buf, i, count) {
36484
  if (this.pos + count > this.buffer.length) {
36485
    count = this.buffer.length - this.pos;
36486
  }
36487
36488
  for (var p = 0; p < count; p++)
36489
    buf[i + p] = this.buffer[this.pos + p];
36490
36491
  this.pos += count;
36492
  return count;
36493
}
36494
36495
exports.g = BrotliInput;
36496
36497
function BrotliOutput(buf) {
36498
  this.buffer = buf;
36499
  this.pos = 0;
36500
}
36501
36502
BrotliOutput.prototype.write = function(buf, count) {
36503
  if (this.pos + count > this.buffer.length)
36504
    throw new Error('Output buffer is not large enough');
36505
36506
  this.buffer.set(buf.subarray(0, count), this.pos);
36507
  this.pos += count;
36508
  return count;
36509
};
36510
36511
exports.j = BrotliOutput;
36512
36513
36514
/***/ }),
36515
36516
/***/ 2973:
36517
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
36518
36519
/* Copyright 2013 Google Inc. All Rights Reserved.
36520
36521
   Licensed under the Apache License, Version 2.0 (the "License");
36522
   you may not use this file except in compliance with the License.
36523
   You may obtain a copy of the License at
36524
36525
   http://www.apache.org/licenses/LICENSE-2.0
36526
36527
   Unless required by applicable law or agreed to in writing, software
36528
   distributed under the License is distributed on an "AS IS" BASIS,
36529
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36530
   See the License for the specific language governing permissions and
36531
   limitations under the License.
36532
36533
   Transformations on dictionary words.
36534
*/
36535
36536
var BrotliDictionary = __webpack_require__(5139);
36537
36538
var kIdentity       = 0;
36539
var kOmitLast1      = 1;
36540
var kOmitLast2      = 2;
36541
var kOmitLast3      = 3;
36542
var kOmitLast4      = 4;
36543
var kOmitLast5      = 5;
36544
var kOmitLast6      = 6;
36545
var kOmitLast7      = 7;
36546
var kOmitLast8      = 8;
36547
var kOmitLast9      = 9;
36548
var kUppercaseFirst = 10;
36549
var kUppercaseAll   = 11;
36550
var kOmitFirst1     = 12;
36551
var kOmitFirst2     = 13;
36552
var kOmitFirst3     = 14;
36553
var kOmitFirst4     = 15;
36554
var kOmitFirst5     = 16;
36555
var kOmitFirst6     = 17;
36556
var kOmitFirst7     = 18;
36557
var kOmitFirst8     = 19;
36558
var kOmitFirst9     = 20;
36559
36560
function Transform(prefix, transform, suffix) {
36561
  this.prefix = new Uint8Array(prefix.length);
36562
  this.transform = transform;
36563
  this.suffix = new Uint8Array(suffix.length);
36564
36565
  for (var i = 0; i < prefix.length; i++)
36566
    this.prefix[i] = prefix.charCodeAt(i);
36567
36568
  for (var i = 0; i < suffix.length; i++)
36569
    this.suffix[i] = suffix.charCodeAt(i);
36570
}
36571
36572
var kTransforms = [
36573
     new Transform(         "", kIdentity,       ""           ),
36574
     new Transform(         "", kIdentity,       " "          ),
36575
     new Transform(        " ", kIdentity,       " "          ),
36576
     new Transform(         "", kOmitFirst1,     ""           ),
36577
     new Transform(         "", kUppercaseFirst, " "          ),
36578
     new Transform(         "", kIdentity,       " the "      ),
36579
     new Transform(        " ", kIdentity,       ""           ),
36580
     new Transform(       "s ", kIdentity,       " "          ),
36581
     new Transform(         "", kIdentity,       " of "       ),
36582
     new Transform(         "", kUppercaseFirst, ""           ),
36583
     new Transform(         "", kIdentity,       " and "      ),
36584
     new Transform(         "", kOmitFirst2,     ""           ),
36585
     new Transform(         "", kOmitLast1,      ""           ),
36586
     new Transform(       ", ", kIdentity,       " "          ),
36587
     new Transform(         "", kIdentity,       ", "         ),
36588
     new Transform(        " ", kUppercaseFirst, " "          ),
36589
     new Transform(         "", kIdentity,       " in "       ),
36590
     new Transform(         "", kIdentity,       " to "       ),
36591
     new Transform(       "e ", kIdentity,       " "          ),
36592
     new Transform(         "", kIdentity,       "\""         ),
36593
     new Transform(         "", kIdentity,       "."          ),
36594
     new Transform(         "", kIdentity,       "\">"        ),
36595
     new Transform(         "", kIdentity,       "\n"         ),
36596
     new Transform(         "", kOmitLast3,      ""           ),
36597
     new Transform(         "", kIdentity,       "]"          ),
36598
     new Transform(         "", kIdentity,       " for "      ),
36599
     new Transform(         "", kOmitFirst3,     ""           ),
36600
     new Transform(         "", kOmitLast2,      ""           ),
36601
     new Transform(         "", kIdentity,       " a "        ),
36602
     new Transform(         "", kIdentity,       " that "     ),
36603
     new Transform(        " ", kUppercaseFirst, ""           ),
36604
     new Transform(         "", kIdentity,       ". "         ),
36605
     new Transform(        ".", kIdentity,       ""           ),
36606
     new Transform(        " ", kIdentity,       ", "         ),
36607
     new Transform(         "", kOmitFirst4,     ""           ),
36608
     new Transform(         "", kIdentity,       " with "     ),
36609
     new Transform(         "", kIdentity,       "'"          ),
36610
     new Transform(         "", kIdentity,       " from "     ),
36611
     new Transform(         "", kIdentity,       " by "       ),
36612
     new Transform(         "", kOmitFirst5,     ""           ),
36613
     new Transform(         "", kOmitFirst6,     ""           ),
36614
     new Transform(    " the ", kIdentity,       ""           ),
36615
     new Transform(         "", kOmitLast4,      ""           ),
36616
     new Transform(         "", kIdentity,       ". The "     ),
36617
     new Transform(         "", kUppercaseAll,   ""           ),
36618
     new Transform(         "", kIdentity,       " on "       ),
36619
     new Transform(         "", kIdentity,       " as "       ),
36620
     new Transform(         "", kIdentity,       " is "       ),
36621
     new Transform(         "", kOmitLast7,      ""           ),
36622
     new Transform(         "", kOmitLast1,      "ing "       ),
36623
     new Transform(         "", kIdentity,       "\n\t"       ),
36624
     new Transform(         "", kIdentity,       ":"          ),
36625
     new Transform(        " ", kIdentity,       ". "         ),
36626
     new Transform(         "", kIdentity,       "ed "        ),
36627
     new Transform(         "", kOmitFirst9,     ""           ),
36628
     new Transform(         "", kOmitFirst7,     ""           ),
36629
     new Transform(         "", kOmitLast6,      ""           ),
36630
     new Transform(         "", kIdentity,       "("          ),
36631
     new Transform(         "", kUppercaseFirst, ", "         ),
36632
     new Transform(         "", kOmitLast8,      ""           ),
36633
     new Transform(         "", kIdentity,       " at "       ),
36634
     new Transform(         "", kIdentity,       "ly "        ),
36635
     new Transform(    " the ", kIdentity,       " of "       ),
36636
     new Transform(         "", kOmitLast5,      ""           ),
36637
     new Transform(         "", kOmitLast9,      ""           ),
36638
     new Transform(        " ", kUppercaseFirst, ", "         ),
36639
     new Transform(         "", kUppercaseFirst, "\""         ),
36640
     new Transform(        ".", kIdentity,       "("          ),
36641
     new Transform(         "", kUppercaseAll,   " "          ),
36642
     new Transform(         "", kUppercaseFirst, "\">"        ),
36643
     new Transform(         "", kIdentity,       "=\""        ),
36644
     new Transform(        " ", kIdentity,       "."          ),
36645
     new Transform(    ".com/", kIdentity,       ""           ),
36646
     new Transform(    " the ", kIdentity,       " of the "   ),
36647
     new Transform(         "", kUppercaseFirst, "'"          ),
36648
     new Transform(         "", kIdentity,       ". This "    ),
36649
     new Transform(         "", kIdentity,       ","          ),
36650
     new Transform(        ".", kIdentity,       " "          ),
36651
     new Transform(         "", kUppercaseFirst, "("          ),
36652
     new Transform(         "", kUppercaseFirst, "."          ),
36653
     new Transform(         "", kIdentity,       " not "      ),
36654
     new Transform(        " ", kIdentity,       "=\""        ),
36655
     new Transform(         "", kIdentity,       "er "        ),
36656
     new Transform(        " ", kUppercaseAll,   " "          ),
36657
     new Transform(         "", kIdentity,       "al "        ),
36658
     new Transform(        " ", kUppercaseAll,   ""           ),
36659
     new Transform(         "", kIdentity,       "='"         ),
36660
     new Transform(         "", kUppercaseAll,   "\""         ),
36661
     new Transform(         "", kUppercaseFirst, ". "         ),
36662
     new Transform(        " ", kIdentity,       "("          ),
36663
     new Transform(         "", kIdentity,       "ful "       ),
36664
     new Transform(        " ", kUppercaseFirst, ". "         ),
36665
     new Transform(         "", kIdentity,       "ive "       ),
36666
     new Transform(         "", kIdentity,       "less "      ),
36667
     new Transform(         "", kUppercaseAll,   "'"          ),
36668
     new Transform(         "", kIdentity,       "est "       ),
36669
     new Transform(        " ", kUppercaseFirst, "."          ),
36670
     new Transform(         "", kUppercaseAll,   "\">"        ),
36671
     new Transform(        " ", kIdentity,       "='"         ),
36672
     new Transform(         "", kUppercaseFirst, ","          ),
36673
     new Transform(         "", kIdentity,       "ize "       ),
36674
     new Transform(         "", kUppercaseAll,   "."          ),
36675
     new Transform( "\xc2\xa0", kIdentity,       ""           ),
36676
     new Transform(        " ", kIdentity,       ","          ),
36677
     new Transform(         "", kUppercaseFirst, "=\""        ),
36678
     new Transform(         "", kUppercaseAll,   "=\""        ),
36679
     new Transform(         "", kIdentity,       "ous "       ),
36680
     new Transform(         "", kUppercaseAll,   ", "         ),
36681
     new Transform(         "", kUppercaseFirst, "='"         ),
36682
     new Transform(        " ", kUppercaseFirst, ","          ),
36683
     new Transform(        " ", kUppercaseAll,   "=\""        ),
36684
     new Transform(        " ", kUppercaseAll,   ", "         ),
36685
     new Transform(         "", kUppercaseAll,   ","          ),
36686
     new Transform(         "", kUppercaseAll,   "("          ),
36687
     new Transform(         "", kUppercaseAll,   ". "         ),
36688
     new Transform(        " ", kUppercaseAll,   "."          ),
36689
     new Transform(         "", kUppercaseAll,   "='"         ),
36690
     new Transform(        " ", kUppercaseAll,   ". "         ),
36691
     new Transform(        " ", kUppercaseFirst, "=\""        ),
36692
     new Transform(        " ", kUppercaseAll,   "='"         ),
36693
     new Transform(        " ", kUppercaseFirst, "='"         )
36694
];
36695
36696
exports.kTransforms = kTransforms;
36697
exports.kNumTransforms = kTransforms.length;
36698
36699
function ToUpperCase(p, i) {
36700
  if (p[i] < 0xc0) {
36701
    if (p[i] >= 97 && p[i] <= 122) {
36702
      p[i] ^= 32;
36703
    }
36704
    return 1;
36705
  }
36706
36707
  /* An overly simplified uppercasing model for utf-8. */
36708
  if (p[i] < 0xe0) {
36709
    p[i + 1] ^= 32;
36710
    return 2;
36711
  }
36712
36713
  /* An arbitrary transform for three byte characters. */
36714
  p[i + 2] ^= 5;
36715
  return 3;
36716
}
36717
36718
exports.transformDictionaryWord = function(dst, idx, word, len, transform) {
36719
  var prefix = kTransforms[transform].prefix;
36720
  var suffix = kTransforms[transform].suffix;
36721
  var t = kTransforms[transform].transform;
36722
  var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);
36723
  var i = 0;
36724
  var start_idx = idx;
36725
  var uppercase;
36726
36727
  if (skip > len) {
36728
    skip = len;
36729
  }
36730
36731
  var prefix_pos = 0;
36732
  while (prefix_pos < prefix.length) {
36733
    dst[idx++] = prefix[prefix_pos++];
36734
  }
36735
36736
  word += skip;
36737
  len -= skip;
36738
36739
  if (t <= kOmitLast9) {
36740
    len -= t;
36741
  }
36742
36743
  for (i = 0; i < len; i++) {
36744
    dst[idx++] = BrotliDictionary.dictionary[word + i];
36745
  }
36746
36747
  uppercase = idx - len;
36748
36749
  if (t === kUppercaseFirst) {
36750
    ToUpperCase(dst, uppercase);
36751
  } else if (t === kUppercaseAll) {
36752
    while (len > 0) {
36753
      var step = ToUpperCase(dst, uppercase);
36754
      uppercase += step;
36755
      len -= step;
36756
    }
36757
  }
36758
36759
  var suffix_pos = 0;
36760
  while (suffix_pos < suffix.length) {
36761
    dst[idx++] = suffix[suffix_pos++];
36762
  }
36763
36764
  return idx - start_idx;
36765
}
36766
36767
36768
/***/ }),
36769
36770
/***/ 7709:
36771
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
36772
36773
module.exports = __webpack_require__(6450).BrotliDecompressBuffer;
36774
36775
36776
/***/ }),
36777
36778
/***/ 4505:
36779
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
36780
36781
"use strict";
36782
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
36783
/* provided dependency */ var process = __webpack_require__(4155);
36784
36785
/* eslint camelcase: "off" */
36786
36787
var assert = __webpack_require__(9282);
36788
36789
var Zstream = __webpack_require__(2292);
36790
var zlib_deflate = __webpack_require__(405);
36791
var zlib_inflate = __webpack_require__(7948);
36792
var constants = __webpack_require__(1619);
36793
36794
for (var key in constants) {
36795
  exports[key] = constants[key];
36796
}
36797
36798
// zlib modes
36799
exports.NONE = 0;
36800
exports.DEFLATE = 1;
36801
exports.INFLATE = 2;
36802
exports.GZIP = 3;
36803
exports.GUNZIP = 4;
36804
exports.DEFLATERAW = 5;
36805
exports.INFLATERAW = 6;
36806
exports.UNZIP = 7;
36807
36808
var GZIP_HEADER_ID1 = 0x1f;
36809
var GZIP_HEADER_ID2 = 0x8b;
36810
36811
/**
36812
 * Emulate Node's zlib C++ layer for use by the JS layer in index.js
36813
 */
36814
function Zlib(mode) {
36815
  if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {
36816
    throw new TypeError('Bad argument');
36817
  }
36818
36819
  this.dictionary = null;
36820
  this.err = 0;
36821
  this.flush = 0;
36822
  this.init_done = false;
36823
  this.level = 0;
36824
  this.memLevel = 0;
36825
  this.mode = mode;
36826
  this.strategy = 0;
36827
  this.windowBits = 0;
36828
  this.write_in_progress = false;
36829
  this.pending_close = false;
36830
  this.gzip_id_bytes_read = 0;
36831
}
36832
36833
Zlib.prototype.close = function () {
36834
  if (this.write_in_progress) {
36835
    this.pending_close = true;
36836
    return;
36837
  }
36838
36839
  this.pending_close = false;
36840
36841
  assert(this.init_done, 'close before init');
36842
  assert(this.mode <= exports.UNZIP);
36843
36844
  if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {
36845
    zlib_deflate.deflateEnd(this.strm);
36846
  } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {
36847
    zlib_inflate.inflateEnd(this.strm);
36848
  }
36849
36850
  this.mode = exports.NONE;
36851
36852
  this.dictionary = null;
36853
};
36854
36855
Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {
36856
  return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);
36857
};
36858
36859
Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {
36860
  return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);
36861
};
36862
36863
Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {
36864
  assert.equal(arguments.length, 8);
36865
36866
  assert(this.init_done, 'write before init');
36867
  assert(this.mode !== exports.NONE, 'already finalized');
36868
  assert.equal(false, this.write_in_progress, 'write already in progress');
36869
  assert.equal(false, this.pending_close, 'close is pending');
36870
36871
  this.write_in_progress = true;
36872
36873
  assert.equal(false, flush === undefined, 'must provide flush value');
36874
36875
  this.write_in_progress = true;
36876
36877
  if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {
36878
    throw new Error('Invalid flush value');
36879
  }
36880
36881
  if (input == null) {
36882
    input = Buffer.alloc(0);
36883
    in_len = 0;
36884
    in_off = 0;
36885
  }
36886
36887
  this.strm.avail_in = in_len;
36888
  this.strm.input = input;
36889
  this.strm.next_in = in_off;
36890
  this.strm.avail_out = out_len;
36891
  this.strm.output = out;
36892
  this.strm.next_out = out_off;
36893
  this.flush = flush;
36894
36895
  if (!async) {
36896
    // sync version
36897
    this._process();
36898
36899
    if (this._checkError()) {
36900
      return this._afterSync();
36901
    }
36902
    return;
36903
  }
36904
36905
  // async version
36906
  var self = this;
36907
  process.nextTick(function () {
36908
    self._process();
36909
    self._after();
36910
  });
36911
36912
  return this;
36913
};
36914
36915
Zlib.prototype._afterSync = function () {
36916
  var avail_out = this.strm.avail_out;
36917
  var avail_in = this.strm.avail_in;
36918
36919
  this.write_in_progress = false;
36920
36921
  return [avail_in, avail_out];
36922
};
36923
36924
Zlib.prototype._process = function () {
36925
  var next_expected_header_byte = null;
36926
36927
  // If the avail_out is left at 0, then it means that it ran out
36928
  // of room.  If there was avail_out left over, then it means
36929
  // that all of the input was consumed.
36930
  switch (this.mode) {
36931
    case exports.DEFLATE:
36932
    case exports.GZIP:
36933
    case exports.DEFLATERAW:
36934
      this.err = zlib_deflate.deflate(this.strm, this.flush);
36935
      break;
36936
    case exports.UNZIP:
36937
      if (this.strm.avail_in > 0) {
36938
        next_expected_header_byte = this.strm.next_in;
36939
      }
36940
36941
      switch (this.gzip_id_bytes_read) {
36942
        case 0:
36943
          if (next_expected_header_byte === null) {
36944
            break;
36945
          }
36946
36947
          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {
36948
            this.gzip_id_bytes_read = 1;
36949
            next_expected_header_byte++;
36950
36951
            if (this.strm.avail_in === 1) {
36952
              // The only available byte was already read.
36953
              break;
36954
            }
36955
          } else {
36956
            this.mode = exports.INFLATE;
36957
            break;
36958
          }
36959
36960
        // fallthrough
36961
        case 1:
36962
          if (next_expected_header_byte === null) {
36963
            break;
36964
          }
36965
36966
          if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {
36967
            this.gzip_id_bytes_read = 2;
36968
            this.mode = exports.GUNZIP;
36969
          } else {
36970
            // There is no actual difference between INFLATE and INFLATERAW
36971
            // (after initialization).
36972
            this.mode = exports.INFLATE;
36973
          }
36974
36975
          break;
36976
        default:
36977
          throw new Error('invalid number of gzip magic number bytes read');
36978
      }
36979
36980
    // fallthrough
36981
    case exports.INFLATE:
36982
    case exports.GUNZIP:
36983
    case exports.INFLATERAW:
36984
      this.err = zlib_inflate.inflate(this.strm, this.flush
36985
36986
      // If data was encoded with dictionary
36987
      );if (this.err === exports.Z_NEED_DICT && this.dictionary) {
36988
        // Load it
36989
        this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);
36990
        if (this.err === exports.Z_OK) {
36991
          // And try to decode again
36992
          this.err = zlib_inflate.inflate(this.strm, this.flush);
36993
        } else if (this.err === exports.Z_DATA_ERROR) {
36994
          // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.
36995
          // Make it possible for After() to tell a bad dictionary from bad
36996
          // input.
36997
          this.err = exports.Z_NEED_DICT;
36998
        }
36999
      }
37000
      while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {
37001
        // Bytes remain in input buffer. Perhaps this is another compressed
37002
        // member in the same archive, or just trailing garbage.
37003
        // Trailing zero bytes are okay, though, since they are frequently
37004
        // used for padding.
37005
37006
        this.reset();
37007
        this.err = zlib_inflate.inflate(this.strm, this.flush);
37008
      }
37009
      break;
37010
    default:
37011
      throw new Error('Unknown mode ' + this.mode);
37012
  }
37013
};
37014
37015
Zlib.prototype._checkError = function () {
37016
  // Acceptable error states depend on the type of zlib stream.
37017
  switch (this.err) {
37018
    case exports.Z_OK:
37019
    case exports.Z_BUF_ERROR:
37020
      if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {
37021
        this._error('unexpected end of file');
37022
        return false;
37023
      }
37024
      break;
37025
    case exports.Z_STREAM_END:
37026
      // normal statuses, not fatal
37027
      break;
37028
    case exports.Z_NEED_DICT:
37029
      if (this.dictionary == null) {
37030
        this._error('Missing dictionary');
37031
      } else {
37032
        this._error('Bad dictionary');
37033
      }
37034
      return false;
37035
    default:
37036
      // something else.
37037
      this._error('Zlib error');
37038
      return false;
37039
  }
37040
37041
  return true;
37042
};
37043
37044
Zlib.prototype._after = function () {
37045
  if (!this._checkError()) {
37046
    return;
37047
  }
37048
37049
  var avail_out = this.strm.avail_out;
37050
  var avail_in = this.strm.avail_in;
37051
37052
  this.write_in_progress = false;
37053
37054
  // call the write() cb
37055
  this.callback(avail_in, avail_out);
37056
37057
  if (this.pending_close) {
37058
    this.close();
37059
  }
37060
};
37061
37062
Zlib.prototype._error = function (message) {
37063
  if (this.strm.msg) {
37064
    message = this.strm.msg;
37065
  }
37066
  this.onerror(message, this.err
37067
37068
  // no hope of rescue.
37069
  );this.write_in_progress = false;
37070
  if (this.pending_close) {
37071
    this.close();
37072
  }
37073
};
37074
37075
Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {
37076
  assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');
37077
37078
  assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');
37079
  assert(level >= -1 && level <= 9, 'invalid compression level');
37080
37081
  assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');
37082
37083
  assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');
37084
37085
  this._init(level, windowBits, memLevel, strategy, dictionary);
37086
  this._setDictionary();
37087
};
37088
37089
Zlib.prototype.params = function () {
37090
  throw new Error('deflateParams Not supported');
37091
};
37092
37093
Zlib.prototype.reset = function () {
37094
  this._reset();
37095
  this._setDictionary();
37096
};
37097
37098
Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {
37099
  this.level = level;
37100
  this.windowBits = windowBits;
37101
  this.memLevel = memLevel;
37102
  this.strategy = strategy;
37103
37104
  this.flush = exports.Z_NO_FLUSH;
37105
37106
  this.err = exports.Z_OK;
37107
37108
  if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {
37109
    this.windowBits += 16;
37110
  }
37111
37112
  if (this.mode === exports.UNZIP) {
37113
    this.windowBits += 32;
37114
  }
37115
37116
  if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {
37117
    this.windowBits = -1 * this.windowBits;
37118
  }
37119
37120
  this.strm = new Zstream();
37121
37122
  switch (this.mode) {
37123
    case exports.DEFLATE:
37124
    case exports.GZIP:
37125
    case exports.DEFLATERAW:
37126
      this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);
37127
      break;
37128
    case exports.INFLATE:
37129
    case exports.GUNZIP:
37130
    case exports.INFLATERAW:
37131
    case exports.UNZIP:
37132
      this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);
37133
      break;
37134
    default:
37135
      throw new Error('Unknown mode ' + this.mode);
37136
  }
37137
37138
  if (this.err !== exports.Z_OK) {
37139
    this._error('Init error');
37140
  }
37141
37142
  this.dictionary = dictionary;
37143
37144
  this.write_in_progress = false;
37145
  this.init_done = true;
37146
};
37147
37148
Zlib.prototype._setDictionary = function () {
37149
  if (this.dictionary == null) {
37150
    return;
37151
  }
37152
37153
  this.err = exports.Z_OK;
37154
37155
  switch (this.mode) {
37156
    case exports.DEFLATE:
37157
    case exports.DEFLATERAW:
37158
      this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);
37159
      break;
37160
    default:
37161
      break;
37162
  }
37163
37164
  if (this.err !== exports.Z_OK) {
37165
    this._error('Failed to set dictionary');
37166
  }
37167
};
37168
37169
Zlib.prototype._reset = function () {
37170
  this.err = exports.Z_OK;
37171
37172
  switch (this.mode) {
37173
    case exports.DEFLATE:
37174
    case exports.DEFLATERAW:
37175
    case exports.GZIP:
37176
      this.err = zlib_deflate.deflateReset(this.strm);
37177
      break;
37178
    case exports.INFLATE:
37179
    case exports.INFLATERAW:
37180
    case exports.GUNZIP:
37181
      this.err = zlib_inflate.inflateReset(this.strm);
37182
      break;
37183
    default:
37184
      break;
37185
  }
37186
37187
  if (this.err !== exports.Z_OK) {
37188
    this._error('Failed to reset stream');
37189
  }
37190
};
37191
37192
exports.Zlib = Zlib;
37193
37194
/***/ }),
37195
37196
/***/ 2635:
37197
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
37198
37199
"use strict";
37200
/* provided dependency */ var process = __webpack_require__(4155);
37201
37202
37203
var Buffer = (__webpack_require__(8823).Buffer);
37204
var Transform = (__webpack_require__(2830).Transform);
37205
var binding = __webpack_require__(4505);
37206
var util = __webpack_require__(9539);
37207
var assert = (__webpack_require__(9282).ok);
37208
var kMaxLength = (__webpack_require__(8823).kMaxLength);
37209
var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';
37210
37211
// zlib doesn't provide these, so kludge them in following the same
37212
// const naming scheme zlib uses.
37213
binding.Z_MIN_WINDOWBITS = 8;
37214
binding.Z_MAX_WINDOWBITS = 15;
37215
binding.Z_DEFAULT_WINDOWBITS = 15;
37216
37217
// fewer than 64 bytes per chunk is stupid.
37218
// technically it could work with as few as 8, but even 64 bytes
37219
// is absurdly low.  Usually a MB or more is best.
37220
binding.Z_MIN_CHUNK = 64;
37221
binding.Z_MAX_CHUNK = Infinity;
37222
binding.Z_DEFAULT_CHUNK = 16 * 1024;
37223
37224
binding.Z_MIN_MEMLEVEL = 1;
37225
binding.Z_MAX_MEMLEVEL = 9;
37226
binding.Z_DEFAULT_MEMLEVEL = 8;
37227
37228
binding.Z_MIN_LEVEL = -1;
37229
binding.Z_MAX_LEVEL = 9;
37230
binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;
37231
37232
// expose all the zlib constants
37233
var bkeys = Object.keys(binding);
37234
for (var bk = 0; bk < bkeys.length; bk++) {
37235
  var bkey = bkeys[bk];
37236
  if (bkey.match(/^Z/)) {
37237
    Object.defineProperty(exports, bkey, {
37238
      enumerable: true, value: binding[bkey], writable: false
37239
    });
37240
  }
37241
}
37242
37243
// translation table for return codes.
37244
var codes = {
37245
  Z_OK: binding.Z_OK,
37246
  Z_STREAM_END: binding.Z_STREAM_END,
37247
  Z_NEED_DICT: binding.Z_NEED_DICT,
37248
  Z_ERRNO: binding.Z_ERRNO,
37249
  Z_STREAM_ERROR: binding.Z_STREAM_ERROR,
37250
  Z_DATA_ERROR: binding.Z_DATA_ERROR,
37251
  Z_MEM_ERROR: binding.Z_MEM_ERROR,
37252
  Z_BUF_ERROR: binding.Z_BUF_ERROR,
37253
  Z_VERSION_ERROR: binding.Z_VERSION_ERROR
37254
};
37255
37256
var ckeys = Object.keys(codes);
37257
for (var ck = 0; ck < ckeys.length; ck++) {
37258
  var ckey = ckeys[ck];
37259
  codes[codes[ckey]] = ckey;
37260
}
37261
37262
Object.defineProperty(exports, "codes", ({
37263
  enumerable: true, value: Object.freeze(codes), writable: false
37264
}));
37265
37266
exports.Deflate = Deflate;
37267
exports.Inflate = Inflate;
37268
exports.Gzip = Gzip;
37269
exports.Gunzip = Gunzip;
37270
exports.DeflateRaw = DeflateRaw;
37271
exports.InflateRaw = InflateRaw;
37272
exports.Unzip = Unzip;
37273
37274
exports.createDeflate = function (o) {
37275
  return new Deflate(o);
37276
};
37277
37278
exports.createInflate = function (o) {
37279
  return new Inflate(o);
37280
};
37281
37282
exports.createDeflateRaw = function (o) {
37283
  return new DeflateRaw(o);
37284
};
37285
37286
exports.createInflateRaw = function (o) {
37287
  return new InflateRaw(o);
37288
};
37289
37290
exports.createGzip = function (o) {
37291
  return new Gzip(o);
37292
};
37293
37294
exports.createGunzip = function (o) {
37295
  return new Gunzip(o);
37296
};
37297
37298
exports.createUnzip = function (o) {
37299
  return new Unzip(o);
37300
};
37301
37302
// Convenience methods.
37303
// compress/decompress a string or buffer in one step.
37304
exports.deflate = function (buffer, opts, callback) {
37305
  if (typeof opts === 'function') {
37306
    callback = opts;
37307
    opts = {};
37308
  }
37309
  return zlibBuffer(new Deflate(opts), buffer, callback);
37310
};
37311
37312
exports.deflateSync = function (buffer, opts) {
37313
  return zlibBufferSync(new Deflate(opts), buffer);
37314
};
37315
37316
exports.gzip = function (buffer, opts, callback) {
37317
  if (typeof opts === 'function') {
37318
    callback = opts;
37319
    opts = {};
37320
  }
37321
  return zlibBuffer(new Gzip(opts), buffer, callback);
37322
};
37323
37324
exports.gzipSync = function (buffer, opts) {
37325
  return zlibBufferSync(new Gzip(opts), buffer);
37326
};
37327
37328
exports.deflateRaw = function (buffer, opts, callback) {
37329
  if (typeof opts === 'function') {
37330
    callback = opts;
37331
    opts = {};
37332
  }
37333
  return zlibBuffer(new DeflateRaw(opts), buffer, callback);
37334
};
37335
37336
exports.deflateRawSync = function (buffer, opts) {
37337
  return zlibBufferSync(new DeflateRaw(opts), buffer);
37338
};
37339
37340
exports.unzip = function (buffer, opts, callback) {
37341
  if (typeof opts === 'function') {
37342
    callback = opts;
37343
    opts = {};
37344
  }
37345
  return zlibBuffer(new Unzip(opts), buffer, callback);
37346
};
37347
37348
exports.unzipSync = function (buffer, opts) {
37349
  return zlibBufferSync(new Unzip(opts), buffer);
37350
};
37351
37352
exports.inflate = function (buffer, opts, callback) {
37353
  if (typeof opts === 'function') {
37354
    callback = opts;
37355
    opts = {};
37356
  }
37357
  return zlibBuffer(new Inflate(opts), buffer, callback);
37358
};
37359
37360
exports.inflateSync = function (buffer, opts) {
37361
  return zlibBufferSync(new Inflate(opts), buffer);
37362
};
37363
37364
exports.gunzip = function (buffer, opts, callback) {
37365
  if (typeof opts === 'function') {
37366
    callback = opts;
37367
    opts = {};
37368
  }
37369
  return zlibBuffer(new Gunzip(opts), buffer, callback);
37370
};
37371
37372
exports.gunzipSync = function (buffer, opts) {
37373
  return zlibBufferSync(new Gunzip(opts), buffer);
37374
};
37375
37376
exports.inflateRaw = function (buffer, opts, callback) {
37377
  if (typeof opts === 'function') {
37378
    callback = opts;
37379
    opts = {};
37380
  }
37381
  return zlibBuffer(new InflateRaw(opts), buffer, callback);
37382
};
37383
37384
exports.inflateRawSync = function (buffer, opts) {
37385
  return zlibBufferSync(new InflateRaw(opts), buffer);
37386
};
37387
37388
function zlibBuffer(engine, buffer, callback) {
37389
  var buffers = [];
37390
  var nread = 0;
37391
37392
  engine.on('error', onError);
37393
  engine.on('end', onEnd);
37394
37395
  engine.end(buffer);
37396
  flow();
37397
37398
  function flow() {
37399
    var chunk;
37400
    while (null !== (chunk = engine.read())) {
37401
      buffers.push(chunk);
37402
      nread += chunk.length;
37403
    }
37404
    engine.once('readable', flow);
37405
  }
37406
37407
  function onError(err) {
37408
    engine.removeListener('end', onEnd);
37409
    engine.removeListener('readable', flow);
37410
    callback(err);
37411
  }
37412
37413
  function onEnd() {
37414
    var buf;
37415
    var err = null;
37416
37417
    if (nread >= kMaxLength) {
37418
      err = new RangeError(kRangeErrorMessage);
37419
    } else {
37420
      buf = Buffer.concat(buffers, nread);
37421
    }
37422
37423
    buffers = [];
37424
    engine.close();
37425
    callback(err, buf);
37426
  }
37427
}
37428
37429
function zlibBufferSync(engine, buffer) {
37430
  if (typeof buffer === 'string') buffer = Buffer.from(buffer);
37431
37432
  if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');
37433
37434
  var flushFlag = engine._finishFlushFlag;
37435
37436
  return engine._processChunk(buffer, flushFlag);
37437
}
37438
37439
// generic zlib
37440
// minimal 2-byte header
37441
function Deflate(opts) {
37442
  if (!(this instanceof Deflate)) return new Deflate(opts);
37443
  Zlib.call(this, opts, binding.DEFLATE);
37444
}
37445
37446
function Inflate(opts) {
37447
  if (!(this instanceof Inflate)) return new Inflate(opts);
37448
  Zlib.call(this, opts, binding.INFLATE);
37449
}
37450
37451
// gzip - bigger header, same deflate compression
37452
function Gzip(opts) {
37453
  if (!(this instanceof Gzip)) return new Gzip(opts);
37454
  Zlib.call(this, opts, binding.GZIP);
37455
}
37456
37457
function Gunzip(opts) {
37458
  if (!(this instanceof Gunzip)) return new Gunzip(opts);
37459
  Zlib.call(this, opts, binding.GUNZIP);
37460
}
37461
37462
// raw - no header
37463
function DeflateRaw(opts) {
37464
  if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);
37465
  Zlib.call(this, opts, binding.DEFLATERAW);
37466
}
37467
37468
function InflateRaw(opts) {
37469
  if (!(this instanceof InflateRaw)) return new InflateRaw(opts);
37470
  Zlib.call(this, opts, binding.INFLATERAW);
37471
}
37472
37473
// auto-detect header.
37474
function Unzip(opts) {
37475
  if (!(this instanceof Unzip)) return new Unzip(opts);
37476
  Zlib.call(this, opts, binding.UNZIP);
37477
}
37478
37479
function isValidFlushFlag(flag) {
37480
  return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;
37481
}
37482
37483
// the Zlib class they all inherit from
37484
// This thing manages the queue of requests, and returns
37485
// true or false if there is anything in the queue when
37486
// you call the .write() method.
37487
37488
function Zlib(opts, mode) {
37489
  var _this = this;
37490
37491
  this._opts = opts = opts || {};
37492
  this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;
37493
37494
  Transform.call(this, opts);
37495
37496
  if (opts.flush && !isValidFlushFlag(opts.flush)) {
37497
    throw new Error('Invalid flush flag: ' + opts.flush);
37498
  }
37499
  if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {
37500
    throw new Error('Invalid flush flag: ' + opts.finishFlush);
37501
  }
37502
37503
  this._flushFlag = opts.flush || binding.Z_NO_FLUSH;
37504
  this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;
37505
37506
  if (opts.chunkSize) {
37507
    if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {
37508
      throw new Error('Invalid chunk size: ' + opts.chunkSize);
37509
    }
37510
  }
37511
37512
  if (opts.windowBits) {
37513
    if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {
37514
      throw new Error('Invalid windowBits: ' + opts.windowBits);
37515
    }
37516
  }
37517
37518
  if (opts.level) {
37519
    if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {
37520
      throw new Error('Invalid compression level: ' + opts.level);
37521
    }
37522
  }
37523
37524
  if (opts.memLevel) {
37525
    if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {
37526
      throw new Error('Invalid memLevel: ' + opts.memLevel);
37527
    }
37528
  }
37529
37530
  if (opts.strategy) {
37531
    if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {
37532
      throw new Error('Invalid strategy: ' + opts.strategy);
37533
    }
37534
  }
37535
37536
  if (opts.dictionary) {
37537
    if (!Buffer.isBuffer(opts.dictionary)) {
37538
      throw new Error('Invalid dictionary: it should be a Buffer instance');
37539
    }
37540
  }
37541
37542
  this._handle = new binding.Zlib(mode);
37543
37544
  var self = this;
37545
  this._hadError = false;
37546
  this._handle.onerror = function (message, errno) {
37547
    // there is no way to cleanly recover.
37548
    // continuing only obscures problems.
37549
    _close(self);
37550
    self._hadError = true;
37551
37552
    var error = new Error(message);
37553
    error.errno = errno;
37554
    error.code = exports.codes[errno];
37555
    self.emit('error', error);
37556
  };
37557
37558
  var level = exports.Z_DEFAULT_COMPRESSION;
37559
  if (typeof opts.level === 'number') level = opts.level;
37560
37561
  var strategy = exports.Z_DEFAULT_STRATEGY;
37562
  if (typeof opts.strategy === 'number') strategy = opts.strategy;
37563
37564
  this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);
37565
37566
  this._buffer = Buffer.allocUnsafe(this._chunkSize);
37567
  this._offset = 0;
37568
  this._level = level;
37569
  this._strategy = strategy;
37570
37571
  this.once('end', this.close);
37572
37573
  Object.defineProperty(this, '_closed', {
37574
    get: function () {
37575
      return !_this._handle;
37576
    },
37577
    configurable: true,
37578
    enumerable: true
37579
  });
37580
}
37581
37582
util.inherits(Zlib, Transform);
37583
37584
Zlib.prototype.params = function (level, strategy, callback) {
37585
  if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {
37586
    throw new RangeError('Invalid compression level: ' + level);
37587
  }
37588
  if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {
37589
    throw new TypeError('Invalid strategy: ' + strategy);
37590
  }
37591
37592
  if (this._level !== level || this._strategy !== strategy) {
37593
    var self = this;
37594
    this.flush(binding.Z_SYNC_FLUSH, function () {
37595
      assert(self._handle, 'zlib binding closed');
37596
      self._handle.params(level, strategy);
37597
      if (!self._hadError) {
37598
        self._level = level;
37599
        self._strategy = strategy;
37600
        if (callback) callback();
37601
      }
37602
    });
37603
  } else {
37604
    process.nextTick(callback);
37605
  }
37606
};
37607
37608
Zlib.prototype.reset = function () {
37609
  assert(this._handle, 'zlib binding closed');
37610
  return this._handle.reset();
37611
};
37612
37613
// This is the _flush function called by the transform class,
37614
// internally, when the last chunk has been written.
37615
Zlib.prototype._flush = function (callback) {
37616
  this._transform(Buffer.alloc(0), '', callback);
37617
};
37618
37619
Zlib.prototype.flush = function (kind, callback) {
37620
  var _this2 = this;
37621
37622
  var ws = this._writableState;
37623
37624
  if (typeof kind === 'function' || kind === undefined && !callback) {
37625
    callback = kind;
37626
    kind = binding.Z_FULL_FLUSH;
37627
  }
37628
37629
  if (ws.ended) {
37630
    if (callback) process.nextTick(callback);
37631
  } else if (ws.ending) {
37632
    if (callback) this.once('end', callback);
37633
  } else if (ws.needDrain) {
37634
    if (callback) {
37635
      this.once('drain', function () {
37636
        return _this2.flush(kind, callback);
37637
      });
37638
    }
37639
  } else {
37640
    this._flushFlag = kind;
37641
    this.write(Buffer.alloc(0), '', callback);
37642
  }
37643
};
37644
37645
Zlib.prototype.close = function (callback) {
37646
  _close(this, callback);
37647
  process.nextTick(emitCloseNT, this);
37648
};
37649
37650
function _close(engine, callback) {
37651
  if (callback) process.nextTick(callback);
37652
37653
  // Caller may invoke .close after a zlib error (which will null _handle).
37654
  if (!engine._handle) return;
37655
37656
  engine._handle.close();
37657
  engine._handle = null;
37658
}
37659
37660
function emitCloseNT(self) {
37661
  self.emit('close');
37662
}
37663
37664
Zlib.prototype._transform = function (chunk, encoding, cb) {
37665
  var flushFlag;
37666
  var ws = this._writableState;
37667
  var ending = ws.ending || ws.ended;
37668
  var last = ending && (!chunk || ws.length === chunk.length);
37669
37670
  if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));
37671
37672
  if (!this._handle) return cb(new Error('zlib binding closed'));
37673
37674
  // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag
37675
  // (or whatever flag was provided using opts.finishFlush).
37676
  // If it's explicitly flushing at some other time, then we use
37677
  // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression
37678
  // goodness.
37679
  if (last) flushFlag = this._finishFlushFlag;else {
37680
    flushFlag = this._flushFlag;
37681
    // once we've flushed the last of the queue, stop flushing and
37682
    // go back to the normal behavior.
37683
    if (chunk.length >= ws.length) {
37684
      this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;
37685
    }
37686
  }
37687
37688
  this._processChunk(chunk, flushFlag, cb);
37689
};
37690
37691
Zlib.prototype._processChunk = function (chunk, flushFlag, cb) {
37692
  var availInBefore = chunk && chunk.length;
37693
  var availOutBefore = this._chunkSize - this._offset;
37694
  var inOff = 0;
37695
37696
  var self = this;
37697
37698
  var async = typeof cb === 'function';
37699
37700
  if (!async) {
37701
    var buffers = [];
37702
    var nread = 0;
37703
37704
    var error;
37705
    this.on('error', function (er) {
37706
      error = er;
37707
    });
37708
37709
    assert(this._handle, 'zlib binding closed');
37710
    do {
37711
      var res = this._handle.writeSync(flushFlag, chunk, // in
37712
      inOff, // in_off
37713
      availInBefore, // in_len
37714
      this._buffer, // out
37715
      this._offset, //out_off
37716
      availOutBefore); // out_len
37717
    } while (!this._hadError && callback(res[0], res[1]));
37718
37719
    if (this._hadError) {
37720
      throw error;
37721
    }
37722
37723
    if (nread >= kMaxLength) {
37724
      _close(this);
37725
      throw new RangeError(kRangeErrorMessage);
37726
    }
37727
37728
    var buf = Buffer.concat(buffers, nread);
37729
    _close(this);
37730
37731
    return buf;
37732
  }
37733
37734
  assert(this._handle, 'zlib binding closed');
37735
  var req = this._handle.write(flushFlag, chunk, // in
37736
  inOff, // in_off
37737
  availInBefore, // in_len
37738
  this._buffer, // out
37739
  this._offset, //out_off
37740
  availOutBefore); // out_len
37741
37742
  req.buffer = chunk;
37743
  req.callback = callback;
37744
37745
  function callback(availInAfter, availOutAfter) {
37746
    // When the callback is used in an async write, the callback's
37747
    // context is the `req` object that was created. The req object
37748
    // is === this._handle, and that's why it's important to null
37749
    // out the values after they are done being used. `this._handle`
37750
    // can stay in memory longer than the callback and buffer are needed.
37751
    if (this) {
37752
      this.buffer = null;
37753
      this.callback = null;
37754
    }
37755
37756
    if (self._hadError) return;
37757
37758
    var have = availOutBefore - availOutAfter;
37759
    assert(have >= 0, 'have should not go down');
37760
37761
    if (have > 0) {
37762
      var out = self._buffer.slice(self._offset, self._offset + have);
37763
      self._offset += have;
37764
      // serve some output to the consumer.
37765
      if (async) {
37766
        self.push(out);
37767
      } else {
37768
        buffers.push(out);
37769
        nread += out.length;
37770
      }
37771
    }
37772
37773
    // exhausted the output buffer, or used all the input create a new one.
37774
    if (availOutAfter === 0 || self._offset >= self._chunkSize) {
37775
      availOutBefore = self._chunkSize;
37776
      self._offset = 0;
37777
      self._buffer = Buffer.allocUnsafe(self._chunkSize);
37778
    }
37779
37780
    if (availOutAfter === 0) {
37781
      // Not actually done.  Need to reprocess.
37782
      // Also, update the availInBefore to the availInAfter value,
37783
      // so that if we have to hit it a third (fourth, etc.) time,
37784
      // it'll have the correct byte counts.
37785
      inOff += availInBefore - availInAfter;
37786
      availInBefore = availInAfter;
37787
37788
      if (!async) return true;
37789
37790
      var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);
37791
      newReq.callback = callback; // this same function
37792
      newReq.buffer = chunk;
37793
      return;
37794
    }
37795
37796
    if (!async) return false;
37797
37798
    // finished with the chunk.
37799
    cb();
37800
  }
37801
};
37802
37803
util.inherits(Deflate, Zlib);
37804
util.inherits(Inflate, Zlib);
37805
util.inherits(Gzip, Zlib);
37806
util.inherits(Gunzip, Zlib);
37807
util.inherits(DeflateRaw, Zlib);
37808
util.inherits(InflateRaw, Zlib);
37809
util.inherits(Unzip, Zlib);
37810
37811
/***/ }),
37812
37813
/***/ 1924:
37814
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
37815
37816
"use strict";
37817
37818
37819
var GetIntrinsic = __webpack_require__(210);
37820
37821
var callBind = __webpack_require__(5559);
37822
37823
var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));
37824
37825
module.exports = function callBoundIntrinsic(name, allowMissing) {
37826
	var intrinsic = GetIntrinsic(name, !!allowMissing);
37827
	if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {
37828
		return callBind(intrinsic);
37829
	}
37830
	return intrinsic;
37831
};
37832
37833
37834
/***/ }),
37835
37836
/***/ 5559:
37837
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
37838
37839
"use strict";
37840
37841
37842
var bind = __webpack_require__(8612);
37843
var GetIntrinsic = __webpack_require__(210);
37844
37845
var $apply = GetIntrinsic('%Function.prototype.apply%');
37846
var $call = GetIntrinsic('%Function.prototype.call%');
37847
var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);
37848
37849
var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);
37850
var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
37851
var $max = GetIntrinsic('%Math.max%');
37852
37853
if ($defineProperty) {
37854
	try {
37855
		$defineProperty({}, 'a', { value: 1 });
37856
	} catch (e) {
37857
		// IE 8 has a broken defineProperty
37858
		$defineProperty = null;
37859
	}
37860
}
37861
37862
module.exports = function callBind(originalFunction) {
37863
	var func = $reflectApply(bind, $call, arguments);
37864
	if ($gOPD && $defineProperty) {
37865
		var desc = $gOPD(func, 'length');
37866
		if (desc.configurable) {
37867
			// original length, plus the receiver, minus any additional arguments (after the receiver)
37868
			$defineProperty(
37869
				func,
37870
				'length',
37871
				{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }
37872
			);
37873
		}
37874
	}
37875
	return func;
37876
};
37877
37878
var applyBind = function applyBind() {
37879
	return $reflectApply(bind, $apply, arguments);
37880
};
37881
37882
if ($defineProperty) {
37883
	$defineProperty(module.exports, 'apply', { value: applyBind });
37884
} else {
37885
	module.exports.apply = applyBind;
37886
}
37887
37888
37889
/***/ }),
37890
37891
/***/ 6313:
37892
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
37893
37894
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
37895
var clone = (function() {
37896
'use strict';
37897
37898
/**
37899
 * Clones (copies) an Object using deep copying.
37900
 *
37901
 * This function supports circular references by default, but if you are certain
37902
 * there are no circular references in your object, you can save some CPU time
37903
 * by calling clone(obj, false).
37904
 *
37905
 * Caution: if `circular` is false and `parent` contains circular references,
37906
 * your program may enter an infinite loop and crash.
37907
 *
37908
 * @param `parent` - the object to be cloned
37909
 * @param `circular` - set to true if the object to be cloned may contain
37910
 *    circular references. (optional - true by default)
37911
 * @param `depth` - set to a number if the object is only to be cloned to
37912
 *    a particular depth. (optional - defaults to Infinity)
37913
 * @param `prototype` - sets the prototype to be used when cloning an object.
37914
 *    (optional - defaults to parent prototype).
37915
*/
37916
function clone(parent, circular, depth, prototype) {
37917
  var filter;
37918
  if (typeof circular === 'object') {
37919
    depth = circular.depth;
37920
    prototype = circular.prototype;
37921
    filter = circular.filter;
37922
    circular = circular.circular
37923
  }
37924
  // maintain two arrays for circular references, where corresponding parents
37925
  // and children have the same index
37926
  var allParents = [];
37927
  var allChildren = [];
37928
37929
  var useBuffer = typeof Buffer != 'undefined';
37930
37931
  if (typeof circular == 'undefined')
37932
    circular = true;
37933
37934
  if (typeof depth == 'undefined')
37935
    depth = Infinity;
37936
37937
  // recurse this function so we don't reset allParents and allChildren
37938
  function _clone(parent, depth) {
37939
    // cloning null always returns null
37940
    if (parent === null)
37941
      return null;
37942
37943
    if (depth == 0)
37944
      return parent;
37945
37946
    var child;
37947
    var proto;
37948
    if (typeof parent != 'object') {
37949
      return parent;
37950
    }
37951
37952
    if (clone.__isArray(parent)) {
37953
      child = [];
37954
    } else if (clone.__isRegExp(parent)) {
37955
      child = new RegExp(parent.source, __getRegExpFlags(parent));
37956
      if (parent.lastIndex) child.lastIndex = parent.lastIndex;
37957
    } else if (clone.__isDate(parent)) {
37958
      child = new Date(parent.getTime());
37959
    } else if (useBuffer && Buffer.isBuffer(parent)) {
37960
      if (Buffer.allocUnsafe) {
37961
        // Node.js >= 4.5.0
37962
        child = Buffer.allocUnsafe(parent.length);
37963
      } else {
37964
        // Older Node.js versions
37965
        child = new Buffer(parent.length);
37966
      }
37967
      parent.copy(child);
37968
      return child;
37969
    } else {
37970
      if (typeof prototype == 'undefined') {
37971
        proto = Object.getPrototypeOf(parent);
37972
        child = Object.create(proto);
37973
      }
37974
      else {
37975
        child = Object.create(prototype);
37976
        proto = prototype;
37977
      }
37978
    }
37979
37980
    if (circular) {
37981
      var index = allParents.indexOf(parent);
37982
37983
      if (index != -1) {
37984
        return allChildren[index];
37985
      }
37986
      allParents.push(parent);
37987
      allChildren.push(child);
37988
    }
37989
37990
    for (var i in parent) {
37991
      var attrs;
37992
      if (proto) {
37993
        attrs = Object.getOwnPropertyDescriptor(proto, i);
37994
      }
37995
37996
      if (attrs && attrs.set == null) {
37997
        continue;
37998
      }
37999
      child[i] = _clone(parent[i], depth - 1);
38000
    }
38001
38002
    return child;
38003
  }
38004
38005
  return _clone(parent, depth);
38006
}
38007
38008
/**
38009
 * Simple flat clone using prototype, accepts only objects, usefull for property
38010
 * override on FLAT configuration object (no nested props).
38011
 *
38012
 * USE WITH CAUTION! This may not behave as you wish if you do not know how this
38013
 * works.
38014
 */
38015
clone.clonePrototype = function clonePrototype(parent) {
38016
  if (parent === null)
38017
    return null;
38018
38019
  var c = function () {};
38020
  c.prototype = parent;
38021
  return new c();
38022
};
38023
38024
// private utility functions
38025
38026
function __objToStr(o) {
38027
  return Object.prototype.toString.call(o);
38028
};
38029
clone.__objToStr = __objToStr;
38030
38031
function __isDate(o) {
38032
  return typeof o === 'object' && __objToStr(o) === '[object Date]';
38033
};
38034
clone.__isDate = __isDate;
38035
38036
function __isArray(o) {
38037
  return typeof o === 'object' && __objToStr(o) === '[object Array]';
38038
};
38039
clone.__isArray = __isArray;
38040
38041
function __isRegExp(o) {
38042
  return typeof o === 'object' && __objToStr(o) === '[object RegExp]';
38043
};
38044
clone.__isRegExp = __isRegExp;
38045
38046
function __getRegExpFlags(re) {
38047
  var flags = '';
38048
  if (re.global) flags += 'g';
38049
  if (re.ignoreCase) flags += 'i';
38050
  if (re.multiline) flags += 'm';
38051
  return flags;
38052
};
38053
clone.__getRegExpFlags = __getRegExpFlags;
38054
38055
return clone;
38056
})();
38057
38058
if ( true && module.exports) {
38059
  module.exports = clone;
38060
}
38061
38062
38063
/***/ }),
38064
38065
/***/ 4667:
38066
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38067
38068
__webpack_require__(2479);
38069
var path = __webpack_require__(857);
38070
38071
module.exports = path.Object.values;
38072
38073
38074
/***/ }),
38075
38076
/***/ 7633:
38077
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38078
38079
__webpack_require__(9170);
38080
__webpack_require__(6992);
38081
__webpack_require__(1539);
38082
__webpack_require__(8674);
38083
__webpack_require__(7922);
38084
__webpack_require__(4668);
38085
__webpack_require__(7727);
38086
__webpack_require__(8783);
38087
var path = __webpack_require__(857);
38088
38089
module.exports = path.Promise;
38090
38091
38092
/***/ }),
38093
38094
/***/ 3867:
38095
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38096
38097
var parent = __webpack_require__(1150);
38098
__webpack_require__(8628);
38099
// TODO: Remove from `core-js@4`
38100
__webpack_require__(7314);
38101
__webpack_require__(7479);
38102
__webpack_require__(6290);
38103
38104
module.exports = parent;
38105
38106
38107
/***/ }),
38108
38109
/***/ 9662:
38110
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38111
38112
var global = __webpack_require__(7854);
38113
var isCallable = __webpack_require__(614);
38114
var tryToString = __webpack_require__(6330);
38115
38116
var TypeError = global.TypeError;
38117
38118
// `Assert: IsCallable(argument) is true`
38119
module.exports = function (argument) {
38120
  if (isCallable(argument)) return argument;
38121
  throw TypeError(tryToString(argument) + ' is not a function');
38122
};
38123
38124
38125
/***/ }),
38126
38127
/***/ 9483:
38128
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38129
38130
var global = __webpack_require__(7854);
38131
var isConstructor = __webpack_require__(4411);
38132
var tryToString = __webpack_require__(6330);
38133
38134
var TypeError = global.TypeError;
38135
38136
// `Assert: IsConstructor(argument) is true`
38137
module.exports = function (argument) {
38138
  if (isConstructor(argument)) return argument;
38139
  throw TypeError(tryToString(argument) + ' is not a constructor');
38140
};
38141
38142
38143
/***/ }),
38144
38145
/***/ 6077:
38146
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38147
38148
var global = __webpack_require__(7854);
38149
var isCallable = __webpack_require__(614);
38150
38151
var String = global.String;
38152
var TypeError = global.TypeError;
38153
38154
module.exports = function (argument) {
38155
  if (typeof argument == 'object' || isCallable(argument)) return argument;
38156
  throw TypeError("Can't set " + String(argument) + ' as a prototype');
38157
};
38158
38159
38160
/***/ }),
38161
38162
/***/ 1223:
38163
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38164
38165
var wellKnownSymbol = __webpack_require__(5112);
38166
var create = __webpack_require__(30);
38167
var definePropertyModule = __webpack_require__(3070);
38168
38169
var UNSCOPABLES = wellKnownSymbol('unscopables');
38170
var ArrayPrototype = Array.prototype;
38171
38172
// Array.prototype[@@unscopables]
38173
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
38174
if (ArrayPrototype[UNSCOPABLES] == undefined) {
38175
  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
38176
    configurable: true,
38177
    value: create(null)
38178
  });
38179
}
38180
38181
// add a key to Array.prototype[@@unscopables]
38182
module.exports = function (key) {
38183
  ArrayPrototype[UNSCOPABLES][key] = true;
38184
};
38185
38186
38187
/***/ }),
38188
38189
/***/ 1530:
38190
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38191
38192
"use strict";
38193
38194
var charAt = (__webpack_require__(8710).charAt);
38195
38196
// `AdvanceStringIndex` abstract operation
38197
// https://tc39.es/ecma262/#sec-advancestringindex
38198
module.exports = function (S, index, unicode) {
38199
  return index + (unicode ? charAt(S, index).length : 1);
38200
};
38201
38202
38203
/***/ }),
38204
38205
/***/ 5787:
38206
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38207
38208
var global = __webpack_require__(7854);
38209
var isPrototypeOf = __webpack_require__(7976);
38210
38211
var TypeError = global.TypeError;
38212
38213
module.exports = function (it, Prototype) {
38214
  if (isPrototypeOf(Prototype, it)) return it;
38215
  throw TypeError('Incorrect invocation');
38216
};
38217
38218
38219
/***/ }),
38220
38221
/***/ 9670:
38222
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38223
38224
var global = __webpack_require__(7854);
38225
var isObject = __webpack_require__(111);
38226
38227
var String = global.String;
38228
var TypeError = global.TypeError;
38229
38230
// `Assert: Type(argument) is Object`
38231
module.exports = function (argument) {
38232
  if (isObject(argument)) return argument;
38233
  throw TypeError(String(argument) + ' is not an object');
38234
};
38235
38236
38237
/***/ }),
38238
38239
/***/ 1048:
38240
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38241
38242
"use strict";
38243
38244
var toObject = __webpack_require__(7908);
38245
var toAbsoluteIndex = __webpack_require__(1400);
38246
var lengthOfArrayLike = __webpack_require__(6244);
38247
38248
var min = Math.min;
38249
38250
// `Array.prototype.copyWithin` method implementation
38251
// https://tc39.es/ecma262/#sec-array.prototype.copywithin
38252
// eslint-disable-next-line es/no-array-prototype-copywithin -- safe
38253
module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
38254
  var O = toObject(this);
38255
  var len = lengthOfArrayLike(O);
38256
  var to = toAbsoluteIndex(target, len);
38257
  var from = toAbsoluteIndex(start, len);
38258
  var end = arguments.length > 2 ? arguments[2] : undefined;
38259
  var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
38260
  var inc = 1;
38261
  if (from < to && to < from + count) {
38262
    inc = -1;
38263
    from += count - 1;
38264
    to += count - 1;
38265
  }
38266
  while (count-- > 0) {
38267
    if (from in O) O[to] = O[from];
38268
    else delete O[to];
38269
    to += inc;
38270
    from += inc;
38271
  } return O;
38272
};
38273
38274
38275
/***/ }),
38276
38277
/***/ 1285:
38278
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38279
38280
"use strict";
38281
38282
var toObject = __webpack_require__(7908);
38283
var toAbsoluteIndex = __webpack_require__(1400);
38284
var lengthOfArrayLike = __webpack_require__(6244);
38285
38286
// `Array.prototype.fill` method implementation
38287
// https://tc39.es/ecma262/#sec-array.prototype.fill
38288
module.exports = function fill(value /* , start = 0, end = @length */) {
38289
  var O = toObject(this);
38290
  var length = lengthOfArrayLike(O);
38291
  var argumentsLength = arguments.length;
38292
  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);
38293
  var end = argumentsLength > 2 ? arguments[2] : undefined;
38294
  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
38295
  while (endPos > index) O[index++] = value;
38296
  return O;
38297
};
38298
38299
38300
/***/ }),
38301
38302
/***/ 8533:
38303
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38304
38305
"use strict";
38306
38307
var $forEach = (__webpack_require__(2092).forEach);
38308
var arrayMethodIsStrict = __webpack_require__(9341);
38309
38310
var STRICT_METHOD = arrayMethodIsStrict('forEach');
38311
38312
// `Array.prototype.forEach` method implementation
38313
// https://tc39.es/ecma262/#sec-array.prototype.foreach
38314
module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {
38315
  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
38316
// eslint-disable-next-line es/no-array-prototype-foreach -- safe
38317
} : [].forEach;
38318
38319
38320
/***/ }),
38321
38322
/***/ 7745:
38323
/***/ (function(module) {
38324
38325
module.exports = function (Constructor, list) {
38326
  var index = 0;
38327
  var length = list.length;
38328
  var result = new Constructor(length);
38329
  while (length > index) result[index] = list[index++];
38330
  return result;
38331
};
38332
38333
38334
/***/ }),
38335
38336
/***/ 8457:
38337
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38338
38339
"use strict";
38340
38341
var global = __webpack_require__(7854);
38342
var bind = __webpack_require__(9974);
38343
var call = __webpack_require__(6916);
38344
var toObject = __webpack_require__(7908);
38345
var callWithSafeIterationClosing = __webpack_require__(3411);
38346
var isArrayIteratorMethod = __webpack_require__(7659);
38347
var isConstructor = __webpack_require__(4411);
38348
var lengthOfArrayLike = __webpack_require__(6244);
38349
var createProperty = __webpack_require__(6135);
38350
var getIterator = __webpack_require__(8554);
38351
var getIteratorMethod = __webpack_require__(1246);
38352
38353
var Array = global.Array;
38354
38355
// `Array.from` method implementation
38356
// https://tc39.es/ecma262/#sec-array.from
38357
module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
38358
  var O = toObject(arrayLike);
38359
  var IS_CONSTRUCTOR = isConstructor(this);
38360
  var argumentsLength = arguments.length;
38361
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
38362
  var mapping = mapfn !== undefined;
38363
  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
38364
  var iteratorMethod = getIteratorMethod(O);
38365
  var index = 0;
38366
  var length, result, step, iterator, next, value;
38367
  // if the target is not iterable or it's an array with the default iterator - use a simple case
38368
  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {
38369
    iterator = getIterator(O, iteratorMethod);
38370
    next = iterator.next;
38371
    result = IS_CONSTRUCTOR ? new this() : [];
38372
    for (;!(step = call(next, iterator)).done; index++) {
38373
      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
38374
      createProperty(result, index, value);
38375
    }
38376
  } else {
38377
    length = lengthOfArrayLike(O);
38378
    result = IS_CONSTRUCTOR ? new this(length) : Array(length);
38379
    for (;length > index; index++) {
38380
      value = mapping ? mapfn(O[index], index) : O[index];
38381
      createProperty(result, index, value);
38382
    }
38383
  }
38384
  result.length = index;
38385
  return result;
38386
};
38387
38388
38389
/***/ }),
38390
38391
/***/ 1318:
38392
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38393
38394
var toIndexedObject = __webpack_require__(5656);
38395
var toAbsoluteIndex = __webpack_require__(1400);
38396
var lengthOfArrayLike = __webpack_require__(6244);
38397
38398
// `Array.prototype.{ indexOf, includes }` methods implementation
38399
var createMethod = function (IS_INCLUDES) {
38400
  return function ($this, el, fromIndex) {
38401
    var O = toIndexedObject($this);
38402
    var length = lengthOfArrayLike(O);
38403
    var index = toAbsoluteIndex(fromIndex, length);
38404
    var value;
38405
    // Array#includes uses SameValueZero equality algorithm
38406
    // eslint-disable-next-line no-self-compare -- NaN check
38407
    if (IS_INCLUDES && el != el) while (length > index) {
38408
      value = O[index++];
38409
      // eslint-disable-next-line no-self-compare -- NaN check
38410
      if (value != value) return true;
38411
    // Array#indexOf ignores holes, Array#includes - not
38412
    } else for (;length > index; index++) {
38413
      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
38414
    } return !IS_INCLUDES && -1;
38415
  };
38416
};
38417
38418
module.exports = {
38419
  // `Array.prototype.includes` method
38420
  // https://tc39.es/ecma262/#sec-array.prototype.includes
38421
  includes: createMethod(true),
38422
  // `Array.prototype.indexOf` method
38423
  // https://tc39.es/ecma262/#sec-array.prototype.indexof
38424
  indexOf: createMethod(false)
38425
};
38426
38427
38428
/***/ }),
38429
38430
/***/ 2092:
38431
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38432
38433
var bind = __webpack_require__(9974);
38434
var uncurryThis = __webpack_require__(1702);
38435
var IndexedObject = __webpack_require__(8361);
38436
var toObject = __webpack_require__(7908);
38437
var lengthOfArrayLike = __webpack_require__(6244);
38438
var arraySpeciesCreate = __webpack_require__(5417);
38439
38440
var push = uncurryThis([].push);
38441
38442
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
38443
var createMethod = function (TYPE) {
38444
  var IS_MAP = TYPE == 1;
38445
  var IS_FILTER = TYPE == 2;
38446
  var IS_SOME = TYPE == 3;
38447
  var IS_EVERY = TYPE == 4;
38448
  var IS_FIND_INDEX = TYPE == 6;
38449
  var IS_FILTER_REJECT = TYPE == 7;
38450
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
38451
  return function ($this, callbackfn, that, specificCreate) {
38452
    var O = toObject($this);
38453
    var self = IndexedObject(O);
38454
    var boundFunction = bind(callbackfn, that);
38455
    var length = lengthOfArrayLike(self);
38456
    var index = 0;
38457
    var create = specificCreate || arraySpeciesCreate;
38458
    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
38459
    var value, result;
38460
    for (;length > index; index++) if (NO_HOLES || index in self) {
38461
      value = self[index];
38462
      result = boundFunction(value, index, O);
38463
      if (TYPE) {
38464
        if (IS_MAP) target[index] = result; // map
38465
        else if (result) switch (TYPE) {
38466
          case 3: return true;              // some
38467
          case 5: return value;             // find
38468
          case 6: return index;             // findIndex
38469
          case 2: push(target, value);      // filter
38470
        } else switch (TYPE) {
38471
          case 4: return false;             // every
38472
          case 7: push(target, value);      // filterReject
38473
        }
38474
      }
38475
    }
38476
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
38477
  };
38478
};
38479
38480
module.exports = {
38481
  // `Array.prototype.forEach` method
38482
  // https://tc39.es/ecma262/#sec-array.prototype.foreach
38483
  forEach: createMethod(0),
38484
  // `Array.prototype.map` method
38485
  // https://tc39.es/ecma262/#sec-array.prototype.map
38486
  map: createMethod(1),
38487
  // `Array.prototype.filter` method
38488
  // https://tc39.es/ecma262/#sec-array.prototype.filter
38489
  filter: createMethod(2),
38490
  // `Array.prototype.some` method
38491
  // https://tc39.es/ecma262/#sec-array.prototype.some
38492
  some: createMethod(3),
38493
  // `Array.prototype.every` method
38494
  // https://tc39.es/ecma262/#sec-array.prototype.every
38495
  every: createMethod(4),
38496
  // `Array.prototype.find` method
38497
  // https://tc39.es/ecma262/#sec-array.prototype.find
38498
  find: createMethod(5),
38499
  // `Array.prototype.findIndex` method
38500
  // https://tc39.es/ecma262/#sec-array.prototype.findIndex
38501
  findIndex: createMethod(6),
38502
  // `Array.prototype.filterReject` method
38503
  // https://github.com/tc39/proposal-array-filtering
38504
  filterReject: createMethod(7)
38505
};
38506
38507
38508
/***/ }),
38509
38510
/***/ 6583:
38511
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38512
38513
"use strict";
38514
38515
/* eslint-disable es/no-array-prototype-lastindexof -- safe */
38516
var apply = __webpack_require__(2104);
38517
var toIndexedObject = __webpack_require__(5656);
38518
var toIntegerOrInfinity = __webpack_require__(9303);
38519
var lengthOfArrayLike = __webpack_require__(6244);
38520
var arrayMethodIsStrict = __webpack_require__(9341);
38521
38522
var min = Math.min;
38523
var $lastIndexOf = [].lastIndexOf;
38524
var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;
38525
var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');
38526
var FORCED = NEGATIVE_ZERO || !STRICT_METHOD;
38527
38528
// `Array.prototype.lastIndexOf` method implementation
38529
// https://tc39.es/ecma262/#sec-array.prototype.lastindexof
38530
module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
38531
  // convert -0 to +0
38532
  if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;
38533
  var O = toIndexedObject(this);
38534
  var length = lengthOfArrayLike(O);
38535
  var index = length - 1;
38536
  if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));
38537
  if (index < 0) index = length + index;
38538
  for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;
38539
  return -1;
38540
} : $lastIndexOf;
38541
38542
38543
/***/ }),
38544
38545
/***/ 1194:
38546
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38547
38548
var fails = __webpack_require__(7293);
38549
var wellKnownSymbol = __webpack_require__(5112);
38550
var V8_VERSION = __webpack_require__(7392);
38551
38552
var SPECIES = wellKnownSymbol('species');
38553
38554
module.exports = function (METHOD_NAME) {
38555
  // We can't use this feature detection in V8 since it causes
38556
  // deoptimization and serious performance degradation
38557
  // https://github.com/zloirock/core-js/issues/677
38558
  return V8_VERSION >= 51 || !fails(function () {
38559
    var array = [];
38560
    var constructor = array.constructor = {};
38561
    constructor[SPECIES] = function () {
38562
      return { foo: 1 };
38563
    };
38564
    return array[METHOD_NAME](Boolean).foo !== 1;
38565
  });
38566
};
38567
38568
38569
/***/ }),
38570
38571
/***/ 9341:
38572
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38573
38574
"use strict";
38575
38576
var fails = __webpack_require__(7293);
38577
38578
module.exports = function (METHOD_NAME, argument) {
38579
  var method = [][METHOD_NAME];
38580
  return !!method && fails(function () {
38581
    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
38582
    method.call(null, argument || function () { throw 1; }, 1);
38583
  });
38584
};
38585
38586
38587
/***/ }),
38588
38589
/***/ 3671:
38590
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38591
38592
var global = __webpack_require__(7854);
38593
var aCallable = __webpack_require__(9662);
38594
var toObject = __webpack_require__(7908);
38595
var IndexedObject = __webpack_require__(8361);
38596
var lengthOfArrayLike = __webpack_require__(6244);
38597
38598
var TypeError = global.TypeError;
38599
38600
// `Array.prototype.{ reduce, reduceRight }` methods implementation
38601
var createMethod = function (IS_RIGHT) {
38602
  return function (that, callbackfn, argumentsLength, memo) {
38603
    aCallable(callbackfn);
38604
    var O = toObject(that);
38605
    var self = IndexedObject(O);
38606
    var length = lengthOfArrayLike(O);
38607
    var index = IS_RIGHT ? length - 1 : 0;
38608
    var i = IS_RIGHT ? -1 : 1;
38609
    if (argumentsLength < 2) while (true) {
38610
      if (index in self) {
38611
        memo = self[index];
38612
        index += i;
38613
        break;
38614
      }
38615
      index += i;
38616
      if (IS_RIGHT ? index < 0 : length <= index) {
38617
        throw TypeError('Reduce of empty array with no initial value');
38618
      }
38619
    }
38620
    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
38621
      memo = callbackfn(memo, self[index], index, O);
38622
    }
38623
    return memo;
38624
  };
38625
};
38626
38627
module.exports = {
38628
  // `Array.prototype.reduce` method
38629
  // https://tc39.es/ecma262/#sec-array.prototype.reduce
38630
  left: createMethod(false),
38631
  // `Array.prototype.reduceRight` method
38632
  // https://tc39.es/ecma262/#sec-array.prototype.reduceright
38633
  right: createMethod(true)
38634
};
38635
38636
38637
/***/ }),
38638
38639
/***/ 206:
38640
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38641
38642
var uncurryThis = __webpack_require__(1702);
38643
38644
module.exports = uncurryThis([].slice);
38645
38646
38647
/***/ }),
38648
38649
/***/ 4362:
38650
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38651
38652
var arraySlice = __webpack_require__(206);
38653
38654
var floor = Math.floor;
38655
38656
var mergeSort = function (array, comparefn) {
38657
  var length = array.length;
38658
  var middle = floor(length / 2);
38659
  return length < 8 ? insertionSort(array, comparefn) : merge(
38660
    array,
38661
    mergeSort(arraySlice(array, 0, middle), comparefn),
38662
    mergeSort(arraySlice(array, middle), comparefn),
38663
    comparefn
38664
  );
38665
};
38666
38667
var insertionSort = function (array, comparefn) {
38668
  var length = array.length;
38669
  var i = 1;
38670
  var element, j;
38671
38672
  while (i < length) {
38673
    j = i;
38674
    element = array[i];
38675
    while (j && comparefn(array[j - 1], element) > 0) {
38676
      array[j] = array[--j];
38677
    }
38678
    if (j !== i++) array[j] = element;
38679
  } return array;
38680
};
38681
38682
var merge = function (array, left, right, comparefn) {
38683
  var llength = left.length;
38684
  var rlength = right.length;
38685
  var lindex = 0;
38686
  var rindex = 0;
38687
38688
  while (lindex < llength || rindex < rlength) {
38689
    array[lindex + rindex] = (lindex < llength && rindex < rlength)
38690
      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]
38691
      : lindex < llength ? left[lindex++] : right[rindex++];
38692
  } return array;
38693
};
38694
38695
module.exports = mergeSort;
38696
38697
38698
/***/ }),
38699
38700
/***/ 7475:
38701
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38702
38703
var global = __webpack_require__(7854);
38704
var isArray = __webpack_require__(3157);
38705
var isConstructor = __webpack_require__(4411);
38706
var isObject = __webpack_require__(111);
38707
var wellKnownSymbol = __webpack_require__(5112);
38708
38709
var SPECIES = wellKnownSymbol('species');
38710
var Array = global.Array;
38711
38712
// a part of `ArraySpeciesCreate` abstract operation
38713
// https://tc39.es/ecma262/#sec-arrayspeciescreate
38714
module.exports = function (originalArray) {
38715
  var C;
38716
  if (isArray(originalArray)) {
38717
    C = originalArray.constructor;
38718
    // cross-realm fallback
38719
    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;
38720
    else if (isObject(C)) {
38721
      C = C[SPECIES];
38722
      if (C === null) C = undefined;
38723
    }
38724
  } return C === undefined ? Array : C;
38725
};
38726
38727
38728
/***/ }),
38729
38730
/***/ 5417:
38731
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38732
38733
var arraySpeciesConstructor = __webpack_require__(7475);
38734
38735
// `ArraySpeciesCreate` abstract operation
38736
// https://tc39.es/ecma262/#sec-arrayspeciescreate
38737
module.exports = function (originalArray, length) {
38738
  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
38739
};
38740
38741
38742
/***/ }),
38743
38744
/***/ 3411:
38745
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38746
38747
var anObject = __webpack_require__(9670);
38748
var iteratorClose = __webpack_require__(9212);
38749
38750
// call something on iterator step with safe closing on error
38751
module.exports = function (iterator, fn, value, ENTRIES) {
38752
  try {
38753
    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
38754
  } catch (error) {
38755
    iteratorClose(iterator, 'throw', error);
38756
  }
38757
};
38758
38759
38760
/***/ }),
38761
38762
/***/ 7072:
38763
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38764
38765
var wellKnownSymbol = __webpack_require__(5112);
38766
38767
var ITERATOR = wellKnownSymbol('iterator');
38768
var SAFE_CLOSING = false;
38769
38770
try {
38771
  var called = 0;
38772
  var iteratorWithReturn = {
38773
    next: function () {
38774
      return { done: !!called++ };
38775
    },
38776
    'return': function () {
38777
      SAFE_CLOSING = true;
38778
    }
38779
  };
38780
  iteratorWithReturn[ITERATOR] = function () {
38781
    return this;
38782
  };
38783
  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing
38784
  Array.from(iteratorWithReturn, function () { throw 2; });
38785
} catch (error) { /* empty */ }
38786
38787
module.exports = function (exec, SKIP_CLOSING) {
38788
  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
38789
  var ITERATION_SUPPORT = false;
38790
  try {
38791
    var object = {};
38792
    object[ITERATOR] = function () {
38793
      return {
38794
        next: function () {
38795
          return { done: ITERATION_SUPPORT = true };
38796
        }
38797
      };
38798
    };
38799
    exec(object);
38800
  } catch (error) { /* empty */ }
38801
  return ITERATION_SUPPORT;
38802
};
38803
38804
38805
/***/ }),
38806
38807
/***/ 4326:
38808
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38809
38810
var uncurryThis = __webpack_require__(1702);
38811
38812
var toString = uncurryThis({}.toString);
38813
var stringSlice = uncurryThis(''.slice);
38814
38815
module.exports = function (it) {
38816
  return stringSlice(toString(it), 8, -1);
38817
};
38818
38819
38820
/***/ }),
38821
38822
/***/ 648:
38823
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38824
38825
var global = __webpack_require__(7854);
38826
var TO_STRING_TAG_SUPPORT = __webpack_require__(1694);
38827
var isCallable = __webpack_require__(614);
38828
var classofRaw = __webpack_require__(4326);
38829
var wellKnownSymbol = __webpack_require__(5112);
38830
38831
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
38832
var Object = global.Object;
38833
38834
// ES3 wrong here
38835
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
38836
38837
// fallback for IE11 Script Access Denied error
38838
var tryGet = function (it, key) {
38839
  try {
38840
    return it[key];
38841
  } catch (error) { /* empty */ }
38842
};
38843
38844
// getting tag from ES6+ `Object.prototype.toString`
38845
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
38846
  var O, tag, result;
38847
  return it === undefined ? 'Undefined' : it === null ? 'Null'
38848
    // @@toStringTag case
38849
    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
38850
    // builtinTag case
38851
    : CORRECT_ARGUMENTS ? classofRaw(O)
38852
    // ES3 arguments fallback
38853
    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;
38854
};
38855
38856
38857
/***/ }),
38858
38859
/***/ 7741:
38860
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38861
38862
var uncurryThis = __webpack_require__(1702);
38863
var arraySlice = __webpack_require__(206);
38864
38865
var replace = uncurryThis(''.replace);
38866
var split = uncurryThis(''.split);
38867
var join = uncurryThis([].join);
38868
38869
var TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');
38870
var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
38871
var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
38872
var IS_FIREFOX_OR_SAFARI_STACK = /@[^\n]*\n/.test(TEST) && !/zxcasd/.test(TEST);
38873
38874
module.exports = function (stack, dropEntries) {
38875
  if (typeof stack != 'string') return stack;
38876
  if (IS_V8_OR_CHAKRA_STACK) {
38877
    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
38878
  } else if (IS_FIREFOX_OR_SAFARI_STACK) {
38879
    return join(arraySlice(split(stack, '\n'), dropEntries), '\n');
38880
  } return stack;
38881
};
38882
38883
38884
/***/ }),
38885
38886
/***/ 5631:
38887
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
38888
38889
"use strict";
38890
38891
var defineProperty = (__webpack_require__(3070).f);
38892
var create = __webpack_require__(30);
38893
var redefineAll = __webpack_require__(2248);
38894
var bind = __webpack_require__(9974);
38895
var anInstance = __webpack_require__(5787);
38896
var iterate = __webpack_require__(408);
38897
var defineIterator = __webpack_require__(654);
38898
var setSpecies = __webpack_require__(6340);
38899
var DESCRIPTORS = __webpack_require__(9781);
38900
var fastKey = (__webpack_require__(2423).fastKey);
38901
var InternalStateModule = __webpack_require__(9909);
38902
38903
var setInternalState = InternalStateModule.set;
38904
var internalStateGetterFor = InternalStateModule.getterFor;
38905
38906
module.exports = {
38907
  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
38908
    var Constructor = wrapper(function (that, iterable) {
38909
      anInstance(that, Prototype);
38910
      setInternalState(that, {
38911
        type: CONSTRUCTOR_NAME,
38912
        index: create(null),
38913
        first: undefined,
38914
        last: undefined,
38915
        size: 0
38916
      });
38917
      if (!DESCRIPTORS) that.size = 0;
38918
      if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
38919
    });
38920
38921
    var Prototype = Constructor.prototype;
38922
38923
    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
38924
38925
    var define = function (that, key, value) {
38926
      var state = getInternalState(that);
38927
      var entry = getEntry(that, key);
38928
      var previous, index;
38929
      // change existing entry
38930
      if (entry) {
38931
        entry.value = value;
38932
      // create new entry
38933
      } else {
38934
        state.last = entry = {
38935
          index: index = fastKey(key, true),
38936
          key: key,
38937
          value: value,
38938
          previous: previous = state.last,
38939
          next: undefined,
38940
          removed: false
38941
        };
38942
        if (!state.first) state.first = entry;
38943
        if (previous) previous.next = entry;
38944
        if (DESCRIPTORS) state.size++;
38945
        else that.size++;
38946
        // add to index
38947
        if (index !== 'F') state.index[index] = entry;
38948
      } return that;
38949
    };
38950
38951
    var getEntry = function (that, key) {
38952
      var state = getInternalState(that);
38953
      // fast case
38954
      var index = fastKey(key);
38955
      var entry;
38956
      if (index !== 'F') return state.index[index];
38957
      // frozen object case
38958
      for (entry = state.first; entry; entry = entry.next) {
38959
        if (entry.key == key) return entry;
38960
      }
38961
    };
38962
38963
    redefineAll(Prototype, {
38964
      // `{ Map, Set }.prototype.clear()` methods
38965
      // https://tc39.es/ecma262/#sec-map.prototype.clear
38966
      // https://tc39.es/ecma262/#sec-set.prototype.clear
38967
      clear: function clear() {
38968
        var that = this;
38969
        var state = getInternalState(that);
38970
        var data = state.index;
38971
        var entry = state.first;
38972
        while (entry) {
38973
          entry.removed = true;
38974
          if (entry.previous) entry.previous = entry.previous.next = undefined;
38975
          delete data[entry.index];
38976
          entry = entry.next;
38977
        }
38978
        state.first = state.last = undefined;
38979
        if (DESCRIPTORS) state.size = 0;
38980
        else that.size = 0;
38981
      },
38982
      // `{ Map, Set }.prototype.delete(key)` methods
38983
      // https://tc39.es/ecma262/#sec-map.prototype.delete
38984
      // https://tc39.es/ecma262/#sec-set.prototype.delete
38985
      'delete': function (key) {
38986
        var that = this;
38987
        var state = getInternalState(that);
38988
        var entry = getEntry(that, key);
38989
        if (entry) {
38990
          var next = entry.next;
38991
          var prev = entry.previous;
38992
          delete state.index[entry.index];
38993
          entry.removed = true;
38994
          if (prev) prev.next = next;
38995
          if (next) next.previous = prev;
38996
          if (state.first == entry) state.first = next;
38997
          if (state.last == entry) state.last = prev;
38998
          if (DESCRIPTORS) state.size--;
38999
          else that.size--;
39000
        } return !!entry;
39001
      },
39002
      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods
39003
      // https://tc39.es/ecma262/#sec-map.prototype.foreach
39004
      // https://tc39.es/ecma262/#sec-set.prototype.foreach
39005
      forEach: function forEach(callbackfn /* , that = undefined */) {
39006
        var state = getInternalState(this);
39007
        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
39008
        var entry;
39009
        while (entry = entry ? entry.next : state.first) {
39010
          boundFunction(entry.value, entry.key, this);
39011
          // revert to the last existing entry
39012
          while (entry && entry.removed) entry = entry.previous;
39013
        }
39014
      },
39015
      // `{ Map, Set}.prototype.has(key)` methods
39016
      // https://tc39.es/ecma262/#sec-map.prototype.has
39017
      // https://tc39.es/ecma262/#sec-set.prototype.has
39018
      has: function has(key) {
39019
        return !!getEntry(this, key);
39020
      }
39021
    });
39022
39023
    redefineAll(Prototype, IS_MAP ? {
39024
      // `Map.prototype.get(key)` method
39025
      // https://tc39.es/ecma262/#sec-map.prototype.get
39026
      get: function get(key) {
39027
        var entry = getEntry(this, key);
39028
        return entry && entry.value;
39029
      },
39030
      // `Map.prototype.set(key, value)` method
39031
      // https://tc39.es/ecma262/#sec-map.prototype.set
39032
      set: function set(key, value) {
39033
        return define(this, key === 0 ? 0 : key, value);
39034
      }
39035
    } : {
39036
      // `Set.prototype.add(value)` method
39037
      // https://tc39.es/ecma262/#sec-set.prototype.add
39038
      add: function add(value) {
39039
        return define(this, value = value === 0 ? 0 : value, value);
39040
      }
39041
    });
39042
    if (DESCRIPTORS) defineProperty(Prototype, 'size', {
39043
      get: function () {
39044
        return getInternalState(this).size;
39045
      }
39046
    });
39047
    return Constructor;
39048
  },
39049
  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {
39050
    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
39051
    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);
39052
    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);
39053
    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods
39054
    // https://tc39.es/ecma262/#sec-map.prototype.entries
39055
    // https://tc39.es/ecma262/#sec-map.prototype.keys
39056
    // https://tc39.es/ecma262/#sec-map.prototype.values
39057
    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator
39058
    // https://tc39.es/ecma262/#sec-set.prototype.entries
39059
    // https://tc39.es/ecma262/#sec-set.prototype.keys
39060
    // https://tc39.es/ecma262/#sec-set.prototype.values
39061
    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator
39062
    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {
39063
      setInternalState(this, {
39064
        type: ITERATOR_NAME,
39065
        target: iterated,
39066
        state: getInternalCollectionState(iterated),
39067
        kind: kind,
39068
        last: undefined
39069
      });
39070
    }, function () {
39071
      var state = getInternalIteratorState(this);
39072
      var kind = state.kind;
39073
      var entry = state.last;
39074
      // revert to the last existing entry
39075
      while (entry && entry.removed) entry = entry.previous;
39076
      // get next entry
39077
      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
39078
        // or finish the iteration
39079
        state.target = undefined;
39080
        return { value: undefined, done: true };
39081
      }
39082
      // return step by kind
39083
      if (kind == 'keys') return { value: entry.key, done: false };
39084
      if (kind == 'values') return { value: entry.value, done: false };
39085
      return { value: [entry.key, entry.value], done: false };
39086
    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
39087
39088
    // `{ Map, Set }.prototype[@@species]` accessors
39089
    // https://tc39.es/ecma262/#sec-get-map-@@species
39090
    // https://tc39.es/ecma262/#sec-get-set-@@species
39091
    setSpecies(CONSTRUCTOR_NAME);
39092
  }
39093
};
39094
39095
39096
/***/ }),
39097
39098
/***/ 7710:
39099
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39100
39101
"use strict";
39102
39103
var $ = __webpack_require__(2109);
39104
var global = __webpack_require__(7854);
39105
var uncurryThis = __webpack_require__(1702);
39106
var isForced = __webpack_require__(4705);
39107
var redefine = __webpack_require__(1320);
39108
var InternalMetadataModule = __webpack_require__(2423);
39109
var iterate = __webpack_require__(408);
39110
var anInstance = __webpack_require__(5787);
39111
var isCallable = __webpack_require__(614);
39112
var isObject = __webpack_require__(111);
39113
var fails = __webpack_require__(7293);
39114
var checkCorrectnessOfIteration = __webpack_require__(7072);
39115
var setToStringTag = __webpack_require__(8003);
39116
var inheritIfRequired = __webpack_require__(9587);
39117
39118
module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
39119
  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;
39120
  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;
39121
  var ADDER = IS_MAP ? 'set' : 'add';
39122
  var NativeConstructor = global[CONSTRUCTOR_NAME];
39123
  var NativePrototype = NativeConstructor && NativeConstructor.prototype;
39124
  var Constructor = NativeConstructor;
39125
  var exported = {};
39126
39127
  var fixMethod = function (KEY) {
39128
    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);
39129
    redefine(NativePrototype, KEY,
39130
      KEY == 'add' ? function add(value) {
39131
        uncurriedNativeMethod(this, value === 0 ? 0 : value);
39132
        return this;
39133
      } : KEY == 'delete' ? function (key) {
39134
        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);
39135
      } : KEY == 'get' ? function get(key) {
39136
        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);
39137
      } : KEY == 'has' ? function has(key) {
39138
        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);
39139
      } : function set(key, value) {
39140
        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);
39141
        return this;
39142
      }
39143
    );
39144
  };
39145
39146
  var REPLACE = isForced(
39147
    CONSTRUCTOR_NAME,
39148
    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {
39149
      new NativeConstructor().entries().next();
39150
    }))
39151
  );
39152
39153
  if (REPLACE) {
39154
    // create collection constructor
39155
    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
39156
    InternalMetadataModule.enable();
39157
  } else if (isForced(CONSTRUCTOR_NAME, true)) {
39158
    var instance = new Constructor();
39159
    // early implementations not supports chaining
39160
    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
39161
    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
39162
    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
39163
    // most early implementations doesn't supports iterables, most modern - not close it correctly
39164
    // eslint-disable-next-line no-new -- required for testing
39165
    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });
39166
    // for early implementations -0 and +0 not the same
39167
    var BUGGY_ZERO = !IS_WEAK && fails(function () {
39168
      // V8 ~ Chromium 42- fails only with 5+ elements
39169
      var $instance = new NativeConstructor();
39170
      var index = 5;
39171
      while (index--) $instance[ADDER](index, index);
39172
      return !$instance.has(-0);
39173
    });
39174
39175
    if (!ACCEPT_ITERABLES) {
39176
      Constructor = wrapper(function (dummy, iterable) {
39177
        anInstance(dummy, NativePrototype);
39178
        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);
39179
        if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
39180
        return that;
39181
      });
39182
      Constructor.prototype = NativePrototype;
39183
      NativePrototype.constructor = Constructor;
39184
    }
39185
39186
    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
39187
      fixMethod('delete');
39188
      fixMethod('has');
39189
      IS_MAP && fixMethod('get');
39190
    }
39191
39192
    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
39193
39194
    // weak collections should not contains .clear method
39195
    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;
39196
  }
39197
39198
  exported[CONSTRUCTOR_NAME] = Constructor;
39199
  $({ global: true, forced: Constructor != NativeConstructor }, exported);
39200
39201
  setToStringTag(Constructor, CONSTRUCTOR_NAME);
39202
39203
  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
39204
39205
  return Constructor;
39206
};
39207
39208
39209
/***/ }),
39210
39211
/***/ 9920:
39212
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39213
39214
var hasOwn = __webpack_require__(2597);
39215
var ownKeys = __webpack_require__(3887);
39216
var getOwnPropertyDescriptorModule = __webpack_require__(1236);
39217
var definePropertyModule = __webpack_require__(3070);
39218
39219
module.exports = function (target, source) {
39220
  var keys = ownKeys(source);
39221
  var defineProperty = definePropertyModule.f;
39222
  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
39223
  for (var i = 0; i < keys.length; i++) {
39224
    var key = keys[i];
39225
    if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
39226
  }
39227
};
39228
39229
39230
/***/ }),
39231
39232
/***/ 4964:
39233
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39234
39235
var wellKnownSymbol = __webpack_require__(5112);
39236
39237
var MATCH = wellKnownSymbol('match');
39238
39239
module.exports = function (METHOD_NAME) {
39240
  var regexp = /./;
39241
  try {
39242
    '/./'[METHOD_NAME](regexp);
39243
  } catch (error1) {
39244
    try {
39245
      regexp[MATCH] = false;
39246
      return '/./'[METHOD_NAME](regexp);
39247
    } catch (error2) { /* empty */ }
39248
  } return false;
39249
};
39250
39251
39252
/***/ }),
39253
39254
/***/ 8544:
39255
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39256
39257
var fails = __webpack_require__(7293);
39258
39259
module.exports = !fails(function () {
39260
  function F() { /* empty */ }
39261
  F.prototype.constructor = null;
39262
  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
39263
  return Object.getPrototypeOf(new F()) !== F.prototype;
39264
});
39265
39266
39267
/***/ }),
39268
39269
/***/ 4230:
39270
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39271
39272
var uncurryThis = __webpack_require__(1702);
39273
var requireObjectCoercible = __webpack_require__(4488);
39274
var toString = __webpack_require__(1340);
39275
39276
var quot = /"/g;
39277
var replace = uncurryThis(''.replace);
39278
39279
// `CreateHTML` abstract operation
39280
// https://tc39.es/ecma262/#sec-createhtml
39281
module.exports = function (string, tag, attribute, value) {
39282
  var S = toString(requireObjectCoercible(string));
39283
  var p1 = '<' + tag;
39284
  if (attribute !== '') p1 += ' ' + attribute + '="' + replace(toString(value), quot, '&quot;') + '"';
39285
  return p1 + '>' + S + '</' + tag + '>';
39286
};
39287
39288
39289
/***/ }),
39290
39291
/***/ 4994:
39292
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39293
39294
"use strict";
39295
39296
var IteratorPrototype = (__webpack_require__(3383).IteratorPrototype);
39297
var create = __webpack_require__(30);
39298
var createPropertyDescriptor = __webpack_require__(9114);
39299
var setToStringTag = __webpack_require__(8003);
39300
var Iterators = __webpack_require__(7497);
39301
39302
var returnThis = function () { return this; };
39303
39304
module.exports = function (IteratorConstructor, NAME, next) {
39305
  var TO_STRING_TAG = NAME + ' Iterator';
39306
  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
39307
  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
39308
  Iterators[TO_STRING_TAG] = returnThis;
39309
  return IteratorConstructor;
39310
};
39311
39312
39313
/***/ }),
39314
39315
/***/ 8880:
39316
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39317
39318
var DESCRIPTORS = __webpack_require__(9781);
39319
var definePropertyModule = __webpack_require__(3070);
39320
var createPropertyDescriptor = __webpack_require__(9114);
39321
39322
module.exports = DESCRIPTORS ? function (object, key, value) {
39323
  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
39324
} : function (object, key, value) {
39325
  object[key] = value;
39326
  return object;
39327
};
39328
39329
39330
/***/ }),
39331
39332
/***/ 9114:
39333
/***/ (function(module) {
39334
39335
module.exports = function (bitmap, value) {
39336
  return {
39337
    enumerable: !(bitmap & 1),
39338
    configurable: !(bitmap & 2),
39339
    writable: !(bitmap & 4),
39340
    value: value
39341
  };
39342
};
39343
39344
39345
/***/ }),
39346
39347
/***/ 6135:
39348
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39349
39350
"use strict";
39351
39352
var toPropertyKey = __webpack_require__(4948);
39353
var definePropertyModule = __webpack_require__(3070);
39354
var createPropertyDescriptor = __webpack_require__(9114);
39355
39356
module.exports = function (object, key, value) {
39357
  var propertyKey = toPropertyKey(key);
39358
  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
39359
  else object[propertyKey] = value;
39360
};
39361
39362
39363
/***/ }),
39364
39365
/***/ 8709:
39366
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39367
39368
"use strict";
39369
39370
var global = __webpack_require__(7854);
39371
var anObject = __webpack_require__(9670);
39372
var ordinaryToPrimitive = __webpack_require__(2140);
39373
39374
var TypeError = global.TypeError;
39375
39376
// `Date.prototype[@@toPrimitive](hint)` method implementation
39377
// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
39378
module.exports = function (hint) {
39379
  anObject(this);
39380
  if (hint === 'string' || hint === 'default') hint = 'string';
39381
  else if (hint !== 'number') throw TypeError('Incorrect hint');
39382
  return ordinaryToPrimitive(this, hint);
39383
};
39384
39385
39386
/***/ }),
39387
39388
/***/ 654:
39389
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39390
39391
"use strict";
39392
39393
var $ = __webpack_require__(2109);
39394
var call = __webpack_require__(6916);
39395
var IS_PURE = __webpack_require__(1913);
39396
var FunctionName = __webpack_require__(6530);
39397
var isCallable = __webpack_require__(614);
39398
var createIteratorConstructor = __webpack_require__(4994);
39399
var getPrototypeOf = __webpack_require__(9518);
39400
var setPrototypeOf = __webpack_require__(7674);
39401
var setToStringTag = __webpack_require__(8003);
39402
var createNonEnumerableProperty = __webpack_require__(8880);
39403
var redefine = __webpack_require__(1320);
39404
var wellKnownSymbol = __webpack_require__(5112);
39405
var Iterators = __webpack_require__(7497);
39406
var IteratorsCore = __webpack_require__(3383);
39407
39408
var PROPER_FUNCTION_NAME = FunctionName.PROPER;
39409
var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
39410
var IteratorPrototype = IteratorsCore.IteratorPrototype;
39411
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
39412
var ITERATOR = wellKnownSymbol('iterator');
39413
var KEYS = 'keys';
39414
var VALUES = 'values';
39415
var ENTRIES = 'entries';
39416
39417
var returnThis = function () { return this; };
39418
39419
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
39420
  createIteratorConstructor(IteratorConstructor, NAME, next);
39421
39422
  var getIterationMethod = function (KIND) {
39423
    if (KIND === DEFAULT && defaultIterator) return defaultIterator;
39424
    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
39425
    switch (KIND) {
39426
      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
39427
      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
39428
      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
39429
    } return function () { return new IteratorConstructor(this); };
39430
  };
39431
39432
  var TO_STRING_TAG = NAME + ' Iterator';
39433
  var INCORRECT_VALUES_NAME = false;
39434
  var IterablePrototype = Iterable.prototype;
39435
  var nativeIterator = IterablePrototype[ITERATOR]
39436
    || IterablePrototype['@@iterator']
39437
    || DEFAULT && IterablePrototype[DEFAULT];
39438
  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
39439
  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
39440
  var CurrentIteratorPrototype, methods, KEY;
39441
39442
  // fix native
39443
  if (anyNativeIterator) {
39444
    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
39445
    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
39446
      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
39447
        if (setPrototypeOf) {
39448
          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
39449
        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {
39450
          redefine(CurrentIteratorPrototype, ITERATOR, returnThis);
39451
        }
39452
      }
39453
      // Set @@toStringTag to native iterators
39454
      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
39455
      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
39456
    }
39457
  }
39458
39459
  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF
39460
  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
39461
    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {
39462
      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);
39463
    } else {
39464
      INCORRECT_VALUES_NAME = true;
39465
      defaultIterator = function values() { return call(nativeIterator, this); };
39466
    }
39467
  }
39468
39469
  // export additional methods
39470
  if (DEFAULT) {
39471
    methods = {
39472
      values: getIterationMethod(VALUES),
39473
      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
39474
      entries: getIterationMethod(ENTRIES)
39475
    };
39476
    if (FORCED) for (KEY in methods) {
39477
      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
39478
        redefine(IterablePrototype, KEY, methods[KEY]);
39479
      }
39480
    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
39481
  }
39482
39483
  // define iterator
39484
  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
39485
    redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });
39486
  }
39487
  Iterators[NAME] = defaultIterator;
39488
39489
  return methods;
39490
};
39491
39492
39493
/***/ }),
39494
39495
/***/ 7235:
39496
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39497
39498
var path = __webpack_require__(857);
39499
var hasOwn = __webpack_require__(2597);
39500
var wrappedWellKnownSymbolModule = __webpack_require__(6061);
39501
var defineProperty = (__webpack_require__(3070).f);
39502
39503
module.exports = function (NAME) {
39504
  var Symbol = path.Symbol || (path.Symbol = {});
39505
  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {
39506
    value: wrappedWellKnownSymbolModule.f(NAME)
39507
  });
39508
};
39509
39510
39511
/***/ }),
39512
39513
/***/ 9781:
39514
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39515
39516
var fails = __webpack_require__(7293);
39517
39518
// Detect IE8's incomplete defineProperty implementation
39519
module.exports = !fails(function () {
39520
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
39521
  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
39522
});
39523
39524
39525
/***/ }),
39526
39527
/***/ 317:
39528
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39529
39530
var global = __webpack_require__(7854);
39531
var isObject = __webpack_require__(111);
39532
39533
var document = global.document;
39534
// typeof document.createElement is 'object' in old IE
39535
var EXISTS = isObject(document) && isObject(document.createElement);
39536
39537
module.exports = function (it) {
39538
  return EXISTS ? document.createElement(it) : {};
39539
};
39540
39541
39542
/***/ }),
39543
39544
/***/ 8324:
39545
/***/ (function(module) {
39546
39547
// iterable DOM collections
39548
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
39549
module.exports = {
39550
  CSSRuleList: 0,
39551
  CSSStyleDeclaration: 0,
39552
  CSSValueList: 0,
39553
  ClientRectList: 0,
39554
  DOMRectList: 0,
39555
  DOMStringList: 0,
39556
  DOMTokenList: 1,
39557
  DataTransferItemList: 0,
39558
  FileList: 0,
39559
  HTMLAllCollection: 0,
39560
  HTMLCollection: 0,
39561
  HTMLFormElement: 0,
39562
  HTMLSelectElement: 0,
39563
  MediaList: 0,
39564
  MimeTypeArray: 0,
39565
  NamedNodeMap: 0,
39566
  NodeList: 1,
39567
  PaintRequestList: 0,
39568
  Plugin: 0,
39569
  PluginArray: 0,
39570
  SVGLengthList: 0,
39571
  SVGNumberList: 0,
39572
  SVGPathSegList: 0,
39573
  SVGPointList: 0,
39574
  SVGStringList: 0,
39575
  SVGTransformList: 0,
39576
  SourceBufferList: 0,
39577
  StyleSheetList: 0,
39578
  TextTrackCueList: 0,
39579
  TextTrackList: 0,
39580
  TouchList: 0
39581
};
39582
39583
39584
/***/ }),
39585
39586
/***/ 8509:
39587
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39588
39589
// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
39590
var documentCreateElement = __webpack_require__(317);
39591
39592
var classList = documentCreateElement('span').classList;
39593
var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;
39594
39595
module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;
39596
39597
39598
/***/ }),
39599
39600
/***/ 8886:
39601
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39602
39603
var userAgent = __webpack_require__(8113);
39604
39605
var firefox = userAgent.match(/firefox\/(\d+)/i);
39606
39607
module.exports = !!firefox && +firefox[1];
39608
39609
39610
/***/ }),
39611
39612
/***/ 7871:
39613
/***/ (function(module) {
39614
39615
module.exports = typeof window == 'object';
39616
39617
39618
/***/ }),
39619
39620
/***/ 256:
39621
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39622
39623
var UA = __webpack_require__(8113);
39624
39625
module.exports = /MSIE|Trident/.test(UA);
39626
39627
39628
/***/ }),
39629
39630
/***/ 1528:
39631
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39632
39633
var userAgent = __webpack_require__(8113);
39634
var global = __webpack_require__(7854);
39635
39636
module.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;
39637
39638
39639
/***/ }),
39640
39641
/***/ 6833:
39642
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39643
39644
var userAgent = __webpack_require__(8113);
39645
39646
module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
39647
39648
39649
/***/ }),
39650
39651
/***/ 5268:
39652
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39653
39654
var classof = __webpack_require__(4326);
39655
var global = __webpack_require__(7854);
39656
39657
module.exports = classof(global.process) == 'process';
39658
39659
39660
/***/ }),
39661
39662
/***/ 1036:
39663
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39664
39665
var userAgent = __webpack_require__(8113);
39666
39667
module.exports = /web0s(?!.*chrome)/i.test(userAgent);
39668
39669
39670
/***/ }),
39671
39672
/***/ 8113:
39673
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39674
39675
var getBuiltIn = __webpack_require__(5005);
39676
39677
module.exports = getBuiltIn('navigator', 'userAgent') || '';
39678
39679
39680
/***/ }),
39681
39682
/***/ 7392:
39683
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39684
39685
var global = __webpack_require__(7854);
39686
var userAgent = __webpack_require__(8113);
39687
39688
var process = global.process;
39689
var Deno = global.Deno;
39690
var versions = process && process.versions || Deno && Deno.version;
39691
var v8 = versions && versions.v8;
39692
var match, version;
39693
39694
if (v8) {
39695
  match = v8.split('.');
39696
  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
39697
  // but their correct versions are not interesting for us
39698
  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
39699
}
39700
39701
// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
39702
// so check `userAgent` even if `.v8` exists, but 0
39703
if (!version && userAgent) {
39704
  match = userAgent.match(/Edge\/(\d+)/);
39705
  if (!match || match[1] >= 74) {
39706
    match = userAgent.match(/Chrome\/(\d+)/);
39707
    if (match) version = +match[1];
39708
  }
39709
}
39710
39711
module.exports = version;
39712
39713
39714
/***/ }),
39715
39716
/***/ 8008:
39717
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39718
39719
var userAgent = __webpack_require__(8113);
39720
39721
var webkit = userAgent.match(/AppleWebKit\/(\d+)\./);
39722
39723
module.exports = !!webkit && +webkit[1];
39724
39725
39726
/***/ }),
39727
39728
/***/ 748:
39729
/***/ (function(module) {
39730
39731
// IE8- don't enum bug keys
39732
module.exports = [
39733
  'constructor',
39734
  'hasOwnProperty',
39735
  'isPrototypeOf',
39736
  'propertyIsEnumerable',
39737
  'toLocaleString',
39738
  'toString',
39739
  'valueOf'
39740
];
39741
39742
39743
/***/ }),
39744
39745
/***/ 2914:
39746
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39747
39748
var fails = __webpack_require__(7293);
39749
var createPropertyDescriptor = __webpack_require__(9114);
39750
39751
module.exports = !fails(function () {
39752
  var error = Error('a');
39753
  if (!('stack' in error)) return true;
39754
  // eslint-disable-next-line es/no-object-defineproperty -- safe
39755
  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));
39756
  return error.stack !== 7;
39757
});
39758
39759
39760
/***/ }),
39761
39762
/***/ 2109:
39763
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39764
39765
var global = __webpack_require__(7854);
39766
var getOwnPropertyDescriptor = (__webpack_require__(1236).f);
39767
var createNonEnumerableProperty = __webpack_require__(8880);
39768
var redefine = __webpack_require__(1320);
39769
var setGlobal = __webpack_require__(3505);
39770
var copyConstructorProperties = __webpack_require__(9920);
39771
var isForced = __webpack_require__(4705);
39772
39773
/*
39774
  options.target      - name of the target object
39775
  options.global      - target is the global object
39776
  options.stat        - export as static methods of target
39777
  options.proto       - export as prototype methods of target
39778
  options.real        - real prototype method for the `pure` version
39779
  options.forced      - export even if the native feature is available
39780
  options.bind        - bind methods to the target, required for the `pure` version
39781
  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
39782
  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
39783
  options.sham        - add a flag to not completely full polyfills
39784
  options.enumerable  - export as enumerable property
39785
  options.noTargetGet - prevent calling a getter on target
39786
  options.name        - the .name of the function if it does not match the key
39787
*/
39788
module.exports = function (options, source) {
39789
  var TARGET = options.target;
39790
  var GLOBAL = options.global;
39791
  var STATIC = options.stat;
39792
  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
39793
  if (GLOBAL) {
39794
    target = global;
39795
  } else if (STATIC) {
39796
    target = global[TARGET] || setGlobal(TARGET, {});
39797
  } else {
39798
    target = (global[TARGET] || {}).prototype;
39799
  }
39800
  if (target) for (key in source) {
39801
    sourceProperty = source[key];
39802
    if (options.noTargetGet) {
39803
      descriptor = getOwnPropertyDescriptor(target, key);
39804
      targetProperty = descriptor && descriptor.value;
39805
    } else targetProperty = target[key];
39806
    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
39807
    // contained in target
39808
    if (!FORCED && targetProperty !== undefined) {
39809
      if (typeof sourceProperty == typeof targetProperty) continue;
39810
      copyConstructorProperties(sourceProperty, targetProperty);
39811
    }
39812
    // add a flag to not completely full polyfills
39813
    if (options.sham || (targetProperty && targetProperty.sham)) {
39814
      createNonEnumerableProperty(sourceProperty, 'sham', true);
39815
    }
39816
    // extend global
39817
    redefine(target, key, sourceProperty, options);
39818
  }
39819
};
39820
39821
39822
/***/ }),
39823
39824
/***/ 7293:
39825
/***/ (function(module) {
39826
39827
module.exports = function (exec) {
39828
  try {
39829
    return !!exec();
39830
  } catch (error) {
39831
    return true;
39832
  }
39833
};
39834
39835
39836
/***/ }),
39837
39838
/***/ 7007:
39839
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39840
39841
"use strict";
39842
39843
// TODO: Remove from `core-js@4` since it's moved to entry points
39844
__webpack_require__(4916);
39845
var uncurryThis = __webpack_require__(1702);
39846
var redefine = __webpack_require__(1320);
39847
var regexpExec = __webpack_require__(2261);
39848
var fails = __webpack_require__(7293);
39849
var wellKnownSymbol = __webpack_require__(5112);
39850
var createNonEnumerableProperty = __webpack_require__(8880);
39851
39852
var SPECIES = wellKnownSymbol('species');
39853
var RegExpPrototype = RegExp.prototype;
39854
39855
module.exports = function (KEY, exec, FORCED, SHAM) {
39856
  var SYMBOL = wellKnownSymbol(KEY);
39857
39858
  var DELEGATES_TO_SYMBOL = !fails(function () {
39859
    // String methods call symbol-named RegEp methods
39860
    var O = {};
39861
    O[SYMBOL] = function () { return 7; };
39862
    return ''[KEY](O) != 7;
39863
  });
39864
39865
  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
39866
    // Symbol-named RegExp methods call .exec
39867
    var execCalled = false;
39868
    var re = /a/;
39869
39870
    if (KEY === 'split') {
39871
      // We can't use real regex here since it causes deoptimization
39872
      // and serious performance degradation in V8
39873
      // https://github.com/zloirock/core-js/issues/306
39874
      re = {};
39875
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
39876
      // a new one. We need to return the patched regex when creating the new one.
39877
      re.constructor = {};
39878
      re.constructor[SPECIES] = function () { return re; };
39879
      re.flags = '';
39880
      re[SYMBOL] = /./[SYMBOL];
39881
    }
39882
39883
    re.exec = function () { execCalled = true; return null; };
39884
39885
    re[SYMBOL]('');
39886
    return !execCalled;
39887
  });
39888
39889
  if (
39890
    !DELEGATES_TO_SYMBOL ||
39891
    !DELEGATES_TO_EXEC ||
39892
    FORCED
39893
  ) {
39894
    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);
39895
    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
39896
      var uncurriedNativeMethod = uncurryThis(nativeMethod);
39897
      var $exec = regexp.exec;
39898
      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
39899
        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
39900
          // The native String method already delegates to @@method (this
39901
          // polyfilled function), leasing to infinite recursion.
39902
          // We avoid it by directly calling the native @@method method.
39903
          return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };
39904
        }
39905
        return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };
39906
      }
39907
      return { done: false };
39908
    });
39909
39910
    redefine(String.prototype, KEY, methods[0]);
39911
    redefine(RegExpPrototype, SYMBOL, methods[1]);
39912
  }
39913
39914
  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
39915
};
39916
39917
39918
/***/ }),
39919
39920
/***/ 6677:
39921
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39922
39923
var fails = __webpack_require__(7293);
39924
39925
module.exports = !fails(function () {
39926
  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing
39927
  return Object.isExtensible(Object.preventExtensions({}));
39928
});
39929
39930
39931
/***/ }),
39932
39933
/***/ 2104:
39934
/***/ (function(module) {
39935
39936
var FunctionPrototype = Function.prototype;
39937
var apply = FunctionPrototype.apply;
39938
var bind = FunctionPrototype.bind;
39939
var call = FunctionPrototype.call;
39940
39941
// eslint-disable-next-line es/no-reflect -- safe
39942
module.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {
39943
  return call.apply(apply, arguments);
39944
});
39945
39946
39947
/***/ }),
39948
39949
/***/ 9974:
39950
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39951
39952
var uncurryThis = __webpack_require__(1702);
39953
var aCallable = __webpack_require__(9662);
39954
39955
var bind = uncurryThis(uncurryThis.bind);
39956
39957
// optional / simple context binding
39958
module.exports = function (fn, that) {
39959
  aCallable(fn);
39960
  return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {
39961
    return fn.apply(that, arguments);
39962
  };
39963
};
39964
39965
39966
/***/ }),
39967
39968
/***/ 7065:
39969
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
39970
39971
"use strict";
39972
39973
var global = __webpack_require__(7854);
39974
var uncurryThis = __webpack_require__(1702);
39975
var aCallable = __webpack_require__(9662);
39976
var isObject = __webpack_require__(111);
39977
var hasOwn = __webpack_require__(2597);
39978
var arraySlice = __webpack_require__(206);
39979
39980
var Function = global.Function;
39981
var concat = uncurryThis([].concat);
39982
var join = uncurryThis([].join);
39983
var factories = {};
39984
39985
var construct = function (C, argsLength, args) {
39986
  if (!hasOwn(factories, argsLength)) {
39987
    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';
39988
    factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');
39989
  } return factories[argsLength](C, args);
39990
};
39991
39992
// `Function.prototype.bind` method implementation
39993
// https://tc39.es/ecma262/#sec-function.prototype.bind
39994
module.exports = Function.bind || function bind(that /* , ...args */) {
39995
  var F = aCallable(this);
39996
  var Prototype = F.prototype;
39997
  var partArgs = arraySlice(arguments, 1);
39998
  var boundFunction = function bound(/* args... */) {
39999
    var args = concat(partArgs, arraySlice(arguments));
40000
    return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);
40001
  };
40002
  if (isObject(Prototype)) boundFunction.prototype = Prototype;
40003
  return boundFunction;
40004
};
40005
40006
40007
/***/ }),
40008
40009
/***/ 6916:
40010
/***/ (function(module) {
40011
40012
var call = Function.prototype.call;
40013
40014
module.exports = call.bind ? call.bind(call) : function () {
40015
  return call.apply(call, arguments);
40016
};
40017
40018
40019
/***/ }),
40020
40021
/***/ 6530:
40022
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40023
40024
var DESCRIPTORS = __webpack_require__(9781);
40025
var hasOwn = __webpack_require__(2597);
40026
40027
var FunctionPrototype = Function.prototype;
40028
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
40029
var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
40030
40031
var EXISTS = hasOwn(FunctionPrototype, 'name');
40032
// additional protection from minified / mangled / dropped function names
40033
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
40034
var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
40035
40036
module.exports = {
40037
  EXISTS: EXISTS,
40038
  PROPER: PROPER,
40039
  CONFIGURABLE: CONFIGURABLE
40040
};
40041
40042
40043
/***/ }),
40044
40045
/***/ 1702:
40046
/***/ (function(module) {
40047
40048
var FunctionPrototype = Function.prototype;
40049
var bind = FunctionPrototype.bind;
40050
var call = FunctionPrototype.call;
40051
var callBind = bind && bind.bind(call);
40052
40053
module.exports = bind ? function (fn) {
40054
  return fn && callBind(call, fn);
40055
} : function (fn) {
40056
  return fn && function () {
40057
    return call.apply(fn, arguments);
40058
  };
40059
};
40060
40061
40062
/***/ }),
40063
40064
/***/ 5005:
40065
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40066
40067
var global = __webpack_require__(7854);
40068
var isCallable = __webpack_require__(614);
40069
40070
var aFunction = function (argument) {
40071
  return isCallable(argument) ? argument : undefined;
40072
};
40073
40074
module.exports = function (namespace, method) {
40075
  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];
40076
};
40077
40078
40079
/***/ }),
40080
40081
/***/ 1246:
40082
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40083
40084
var classof = __webpack_require__(648);
40085
var getMethod = __webpack_require__(8173);
40086
var Iterators = __webpack_require__(7497);
40087
var wellKnownSymbol = __webpack_require__(5112);
40088
40089
var ITERATOR = wellKnownSymbol('iterator');
40090
40091
module.exports = function (it) {
40092
  if (it != undefined) return getMethod(it, ITERATOR)
40093
    || getMethod(it, '@@iterator')
40094
    || Iterators[classof(it)];
40095
};
40096
40097
40098
/***/ }),
40099
40100
/***/ 8554:
40101
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40102
40103
var global = __webpack_require__(7854);
40104
var call = __webpack_require__(6916);
40105
var aCallable = __webpack_require__(9662);
40106
var anObject = __webpack_require__(9670);
40107
var tryToString = __webpack_require__(6330);
40108
var getIteratorMethod = __webpack_require__(1246);
40109
40110
var TypeError = global.TypeError;
40111
40112
module.exports = function (argument, usingIterator) {
40113
  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;
40114
  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));
40115
  throw TypeError(tryToString(argument) + ' is not iterable');
40116
};
40117
40118
40119
/***/ }),
40120
40121
/***/ 8173:
40122
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40123
40124
var aCallable = __webpack_require__(9662);
40125
40126
// `GetMethod` abstract operation
40127
// https://tc39.es/ecma262/#sec-getmethod
40128
module.exports = function (V, P) {
40129
  var func = V[P];
40130
  return func == null ? undefined : aCallable(func);
40131
};
40132
40133
40134
/***/ }),
40135
40136
/***/ 647:
40137
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40138
40139
var uncurryThis = __webpack_require__(1702);
40140
var toObject = __webpack_require__(7908);
40141
40142
var floor = Math.floor;
40143
var charAt = uncurryThis(''.charAt);
40144
var replace = uncurryThis(''.replace);
40145
var stringSlice = uncurryThis(''.slice);
40146
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
40147
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
40148
40149
// `GetSubstitution` abstract operation
40150
// https://tc39.es/ecma262/#sec-getsubstitution
40151
module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
40152
  var tailPos = position + matched.length;
40153
  var m = captures.length;
40154
  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
40155
  if (namedCaptures !== undefined) {
40156
    namedCaptures = toObject(namedCaptures);
40157
    symbols = SUBSTITUTION_SYMBOLS;
40158
  }
40159
  return replace(replacement, symbols, function (match, ch) {
40160
    var capture;
40161
    switch (charAt(ch, 0)) {
40162
      case '$': return '$';
40163
      case '&': return matched;
40164
      case '`': return stringSlice(str, 0, position);
40165
      case "'": return stringSlice(str, tailPos);
40166
      case '<':
40167
        capture = namedCaptures[stringSlice(ch, 1, -1)];
40168
        break;
40169
      default: // \d\d?
40170
        var n = +ch;
40171
        if (n === 0) return match;
40172
        if (n > m) {
40173
          var f = floor(n / 10);
40174
          if (f === 0) return match;
40175
          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
40176
          return match;
40177
        }
40178
        capture = captures[n - 1];
40179
    }
40180
    return capture === undefined ? '' : capture;
40181
  });
40182
};
40183
40184
40185
/***/ }),
40186
40187
/***/ 7854:
40188
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40189
40190
var check = function (it) {
40191
  return it && it.Math == Math && it;
40192
};
40193
40194
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
40195
module.exports =
40196
  // eslint-disable-next-line es/no-global-this -- safe
40197
  check(typeof globalThis == 'object' && globalThis) ||
40198
  check(typeof window == 'object' && window) ||
40199
  // eslint-disable-next-line no-restricted-globals -- safe
40200
  check(typeof self == 'object' && self) ||
40201
  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||
40202
  // eslint-disable-next-line no-new-func -- fallback
40203
  (function () { return this; })() || Function('return this')();
40204
40205
40206
/***/ }),
40207
40208
/***/ 2597:
40209
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40210
40211
var uncurryThis = __webpack_require__(1702);
40212
var toObject = __webpack_require__(7908);
40213
40214
var hasOwnProperty = uncurryThis({}.hasOwnProperty);
40215
40216
// `HasOwnProperty` abstract operation
40217
// https://tc39.es/ecma262/#sec-hasownproperty
40218
module.exports = Object.hasOwn || function hasOwn(it, key) {
40219
  return hasOwnProperty(toObject(it), key);
40220
};
40221
40222
40223
/***/ }),
40224
40225
/***/ 3501:
40226
/***/ (function(module) {
40227
40228
module.exports = {};
40229
40230
40231
/***/ }),
40232
40233
/***/ 842:
40234
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40235
40236
var global = __webpack_require__(7854);
40237
40238
module.exports = function (a, b) {
40239
  var console = global.console;
40240
  if (console && console.error) {
40241
    arguments.length == 1 ? console.error(a) : console.error(a, b);
40242
  }
40243
};
40244
40245
40246
/***/ }),
40247
40248
/***/ 490:
40249
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40250
40251
var getBuiltIn = __webpack_require__(5005);
40252
40253
module.exports = getBuiltIn('document', 'documentElement');
40254
40255
40256
/***/ }),
40257
40258
/***/ 4664:
40259
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40260
40261
var DESCRIPTORS = __webpack_require__(9781);
40262
var fails = __webpack_require__(7293);
40263
var createElement = __webpack_require__(317);
40264
40265
// Thank's IE8 for his funny defineProperty
40266
module.exports = !DESCRIPTORS && !fails(function () {
40267
  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
40268
  return Object.defineProperty(createElement('div'), 'a', {
40269
    get: function () { return 7; }
40270
  }).a != 7;
40271
});
40272
40273
40274
/***/ }),
40275
40276
/***/ 1179:
40277
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40278
40279
// IEEE754 conversions based on https://github.com/feross/ieee754
40280
var global = __webpack_require__(7854);
40281
40282
var Array = global.Array;
40283
var abs = Math.abs;
40284
var pow = Math.pow;
40285
var floor = Math.floor;
40286
var log = Math.log;
40287
var LN2 = Math.LN2;
40288
40289
var pack = function (number, mantissaLength, bytes) {
40290
  var buffer = Array(bytes);
40291
  var exponentLength = bytes * 8 - mantissaLength - 1;
40292
  var eMax = (1 << exponentLength) - 1;
40293
  var eBias = eMax >> 1;
40294
  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;
40295
  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
40296
  var index = 0;
40297
  var exponent, mantissa, c;
40298
  number = abs(number);
40299
  // eslint-disable-next-line no-self-compare -- NaN check
40300
  if (number != number || number === Infinity) {
40301
    // eslint-disable-next-line no-self-compare -- NaN check
40302
    mantissa = number != number ? 1 : 0;
40303
    exponent = eMax;
40304
  } else {
40305
    exponent = floor(log(number) / LN2);
40306
    if (number * (c = pow(2, -exponent)) < 1) {
40307
      exponent--;
40308
      c *= 2;
40309
    }
40310
    if (exponent + eBias >= 1) {
40311
      number += rt / c;
40312
    } else {
40313
      number += rt * pow(2, 1 - eBias);
40314
    }
40315
    if (number * c >= 2) {
40316
      exponent++;
40317
      c /= 2;
40318
    }
40319
    if (exponent + eBias >= eMax) {
40320
      mantissa = 0;
40321
      exponent = eMax;
40322
    } else if (exponent + eBias >= 1) {
40323
      mantissa = (number * c - 1) * pow(2, mantissaLength);
40324
      exponent = exponent + eBias;
40325
    } else {
40326
      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);
40327
      exponent = 0;
40328
    }
40329
  }
40330
  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);
40331
  exponent = exponent << mantissaLength | mantissa;
40332
  exponentLength += mantissaLength;
40333
  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);
40334
  buffer[--index] |= sign * 128;
40335
  return buffer;
40336
};
40337
40338
var unpack = function (buffer, mantissaLength) {
40339
  var bytes = buffer.length;
40340
  var exponentLength = bytes * 8 - mantissaLength - 1;
40341
  var eMax = (1 << exponentLength) - 1;
40342
  var eBias = eMax >> 1;
40343
  var nBits = exponentLength - 7;
40344
  var index = bytes - 1;
40345
  var sign = buffer[index--];
40346
  var exponent = sign & 127;
40347
  var mantissa;
40348
  sign >>= 7;
40349
  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);
40350
  mantissa = exponent & (1 << -nBits) - 1;
40351
  exponent >>= -nBits;
40352
  nBits += mantissaLength;
40353
  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);
40354
  if (exponent === 0) {
40355
    exponent = 1 - eBias;
40356
  } else if (exponent === eMax) {
40357
    return mantissa ? NaN : sign ? -Infinity : Infinity;
40358
  } else {
40359
    mantissa = mantissa + pow(2, mantissaLength);
40360
    exponent = exponent - eBias;
40361
  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);
40362
};
40363
40364
module.exports = {
40365
  pack: pack,
40366
  unpack: unpack
40367
};
40368
40369
40370
/***/ }),
40371
40372
/***/ 8361:
40373
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40374
40375
var global = __webpack_require__(7854);
40376
var uncurryThis = __webpack_require__(1702);
40377
var fails = __webpack_require__(7293);
40378
var classof = __webpack_require__(4326);
40379
40380
var Object = global.Object;
40381
var split = uncurryThis(''.split);
40382
40383
// fallback for non-array-like ES3 and non-enumerable old V8 strings
40384
module.exports = fails(function () {
40385
  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
40386
  // eslint-disable-next-line no-prototype-builtins -- safe
40387
  return !Object('z').propertyIsEnumerable(0);
40388
}) ? function (it) {
40389
  return classof(it) == 'String' ? split(it, '') : Object(it);
40390
} : Object;
40391
40392
40393
/***/ }),
40394
40395
/***/ 9587:
40396
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40397
40398
var isCallable = __webpack_require__(614);
40399
var isObject = __webpack_require__(111);
40400
var setPrototypeOf = __webpack_require__(7674);
40401
40402
// makes subclassing work correct for wrapped built-ins
40403
module.exports = function ($this, dummy, Wrapper) {
40404
  var NewTarget, NewTargetPrototype;
40405
  if (
40406
    // it can work only with native `setPrototypeOf`
40407
    setPrototypeOf &&
40408
    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
40409
    isCallable(NewTarget = dummy.constructor) &&
40410
    NewTarget !== Wrapper &&
40411
    isObject(NewTargetPrototype = NewTarget.prototype) &&
40412
    NewTargetPrototype !== Wrapper.prototype
40413
  ) setPrototypeOf($this, NewTargetPrototype);
40414
  return $this;
40415
};
40416
40417
40418
/***/ }),
40419
40420
/***/ 2788:
40421
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40422
40423
var uncurryThis = __webpack_require__(1702);
40424
var isCallable = __webpack_require__(614);
40425
var store = __webpack_require__(5465);
40426
40427
var functionToString = uncurryThis(Function.toString);
40428
40429
// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
40430
if (!isCallable(store.inspectSource)) {
40431
  store.inspectSource = function (it) {
40432
    return functionToString(it);
40433
  };
40434
}
40435
40436
module.exports = store.inspectSource;
40437
40438
40439
/***/ }),
40440
40441
/***/ 8340:
40442
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40443
40444
var isObject = __webpack_require__(111);
40445
var createNonEnumerableProperty = __webpack_require__(8880);
40446
40447
// `InstallErrorCause` abstract operation
40448
// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
40449
module.exports = function (O, options) {
40450
  if (isObject(options) && 'cause' in options) {
40451
    createNonEnumerableProperty(O, 'cause', options.cause);
40452
  }
40453
};
40454
40455
40456
/***/ }),
40457
40458
/***/ 2423:
40459
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40460
40461
var $ = __webpack_require__(2109);
40462
var uncurryThis = __webpack_require__(1702);
40463
var hiddenKeys = __webpack_require__(3501);
40464
var isObject = __webpack_require__(111);
40465
var hasOwn = __webpack_require__(2597);
40466
var defineProperty = (__webpack_require__(3070).f);
40467
var getOwnPropertyNamesModule = __webpack_require__(8006);
40468
var getOwnPropertyNamesExternalModule = __webpack_require__(1156);
40469
var uid = __webpack_require__(9711);
40470
var FREEZING = __webpack_require__(6677);
40471
40472
var REQUIRED = false;
40473
var METADATA = uid('meta');
40474
var id = 0;
40475
40476
// eslint-disable-next-line es/no-object-isextensible -- safe
40477
var isExtensible = Object.isExtensible || function () {
40478
  return true;
40479
};
40480
40481
var setMetadata = function (it) {
40482
  defineProperty(it, METADATA, { value: {
40483
    objectID: 'O' + id++, // object ID
40484
    weakData: {}          // weak collections IDs
40485
  } });
40486
};
40487
40488
var fastKey = function (it, create) {
40489
  // return a primitive with prefix
40490
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
40491
  if (!hasOwn(it, METADATA)) {
40492
    // can't set metadata to uncaught frozen object
40493
    if (!isExtensible(it)) return 'F';
40494
    // not necessary to add metadata
40495
    if (!create) return 'E';
40496
    // add missing metadata
40497
    setMetadata(it);
40498
  // return object ID
40499
  } return it[METADATA].objectID;
40500
};
40501
40502
var getWeakData = function (it, create) {
40503
  if (!hasOwn(it, METADATA)) {
40504
    // can't set metadata to uncaught frozen object
40505
    if (!isExtensible(it)) return true;
40506
    // not necessary to add metadata
40507
    if (!create) return false;
40508
    // add missing metadata
40509
    setMetadata(it);
40510
  // return the store of weak collections IDs
40511
  } return it[METADATA].weakData;
40512
};
40513
40514
// add metadata on freeze-family methods calling
40515
var onFreeze = function (it) {
40516
  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);
40517
  return it;
40518
};
40519
40520
var enable = function () {
40521
  meta.enable = function () { /* empty */ };
40522
  REQUIRED = true;
40523
  var getOwnPropertyNames = getOwnPropertyNamesModule.f;
40524
  var splice = uncurryThis([].splice);
40525
  var test = {};
40526
  test[METADATA] = 1;
40527
40528
  // prevent exposing of metadata key
40529
  if (getOwnPropertyNames(test).length) {
40530
    getOwnPropertyNamesModule.f = function (it) {
40531
      var result = getOwnPropertyNames(it);
40532
      for (var i = 0, length = result.length; i < length; i++) {
40533
        if (result[i] === METADATA) {
40534
          splice(result, i, 1);
40535
          break;
40536
        }
40537
      } return result;
40538
    };
40539
40540
    $({ target: 'Object', stat: true, forced: true }, {
40541
      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f
40542
    });
40543
  }
40544
};
40545
40546
var meta = module.exports = {
40547
  enable: enable,
40548
  fastKey: fastKey,
40549
  getWeakData: getWeakData,
40550
  onFreeze: onFreeze
40551
};
40552
40553
hiddenKeys[METADATA] = true;
40554
40555
40556
/***/ }),
40557
40558
/***/ 9909:
40559
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40560
40561
var NATIVE_WEAK_MAP = __webpack_require__(8536);
40562
var global = __webpack_require__(7854);
40563
var uncurryThis = __webpack_require__(1702);
40564
var isObject = __webpack_require__(111);
40565
var createNonEnumerableProperty = __webpack_require__(8880);
40566
var hasOwn = __webpack_require__(2597);
40567
var shared = __webpack_require__(5465);
40568
var sharedKey = __webpack_require__(6200);
40569
var hiddenKeys = __webpack_require__(3501);
40570
40571
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
40572
var TypeError = global.TypeError;
40573
var WeakMap = global.WeakMap;
40574
var set, get, has;
40575
40576
var enforce = function (it) {
40577
  return has(it) ? get(it) : set(it, {});
40578
};
40579
40580
var getterFor = function (TYPE) {
40581
  return function (it) {
40582
    var state;
40583
    if (!isObject(it) || (state = get(it)).type !== TYPE) {
40584
      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
40585
    } return state;
40586
  };
40587
};
40588
40589
if (NATIVE_WEAK_MAP || shared.state) {
40590
  var store = shared.state || (shared.state = new WeakMap());
40591
  var wmget = uncurryThis(store.get);
40592
  var wmhas = uncurryThis(store.has);
40593
  var wmset = uncurryThis(store.set);
40594
  set = function (it, metadata) {
40595
    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
40596
    metadata.facade = it;
40597
    wmset(store, it, metadata);
40598
    return metadata;
40599
  };
40600
  get = function (it) {
40601
    return wmget(store, it) || {};
40602
  };
40603
  has = function (it) {
40604
    return wmhas(store, it);
40605
  };
40606
} else {
40607
  var STATE = sharedKey('state');
40608
  hiddenKeys[STATE] = true;
40609
  set = function (it, metadata) {
40610
    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
40611
    metadata.facade = it;
40612
    createNonEnumerableProperty(it, STATE, metadata);
40613
    return metadata;
40614
  };
40615
  get = function (it) {
40616
    return hasOwn(it, STATE) ? it[STATE] : {};
40617
  };
40618
  has = function (it) {
40619
    return hasOwn(it, STATE);
40620
  };
40621
}
40622
40623
module.exports = {
40624
  set: set,
40625
  get: get,
40626
  has: has,
40627
  enforce: enforce,
40628
  getterFor: getterFor
40629
};
40630
40631
40632
/***/ }),
40633
40634
/***/ 7659:
40635
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40636
40637
var wellKnownSymbol = __webpack_require__(5112);
40638
var Iterators = __webpack_require__(7497);
40639
40640
var ITERATOR = wellKnownSymbol('iterator');
40641
var ArrayPrototype = Array.prototype;
40642
40643
// check on default Array iterator
40644
module.exports = function (it) {
40645
  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
40646
};
40647
40648
40649
/***/ }),
40650
40651
/***/ 3157:
40652
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40653
40654
var classof = __webpack_require__(4326);
40655
40656
// `IsArray` abstract operation
40657
// https://tc39.es/ecma262/#sec-isarray
40658
// eslint-disable-next-line es/no-array-isarray -- safe
40659
module.exports = Array.isArray || function isArray(argument) {
40660
  return classof(argument) == 'Array';
40661
};
40662
40663
40664
/***/ }),
40665
40666
/***/ 614:
40667
/***/ (function(module) {
40668
40669
// `IsCallable` abstract operation
40670
// https://tc39.es/ecma262/#sec-iscallable
40671
module.exports = function (argument) {
40672
  return typeof argument == 'function';
40673
};
40674
40675
40676
/***/ }),
40677
40678
/***/ 4411:
40679
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40680
40681
var uncurryThis = __webpack_require__(1702);
40682
var fails = __webpack_require__(7293);
40683
var isCallable = __webpack_require__(614);
40684
var classof = __webpack_require__(648);
40685
var getBuiltIn = __webpack_require__(5005);
40686
var inspectSource = __webpack_require__(2788);
40687
40688
var noop = function () { /* empty */ };
40689
var empty = [];
40690
var construct = getBuiltIn('Reflect', 'construct');
40691
var constructorRegExp = /^\s*(?:class|function)\b/;
40692
var exec = uncurryThis(constructorRegExp.exec);
40693
var INCORRECT_TO_STRING = !constructorRegExp.exec(noop);
40694
40695
var isConstructorModern = function (argument) {
40696
  if (!isCallable(argument)) return false;
40697
  try {
40698
    construct(noop, empty, argument);
40699
    return true;
40700
  } catch (error) {
40701
    return false;
40702
  }
40703
};
40704
40705
var isConstructorLegacy = function (argument) {
40706
  if (!isCallable(argument)) return false;
40707
  switch (classof(argument)) {
40708
    case 'AsyncFunction':
40709
    case 'GeneratorFunction':
40710
    case 'AsyncGeneratorFunction': return false;
40711
    // we can't check .prototype since constructors produced by .bind haven't it
40712
  } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
40713
};
40714
40715
// `IsConstructor` abstract operation
40716
// https://tc39.es/ecma262/#sec-isconstructor
40717
module.exports = !construct || fails(function () {
40718
  var called;
40719
  return isConstructorModern(isConstructorModern.call)
40720
    || !isConstructorModern(Object)
40721
    || !isConstructorModern(function () { called = true; })
40722
    || called;
40723
}) ? isConstructorLegacy : isConstructorModern;
40724
40725
40726
/***/ }),
40727
40728
/***/ 4705:
40729
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40730
40731
var fails = __webpack_require__(7293);
40732
var isCallable = __webpack_require__(614);
40733
40734
var replacement = /#|\.prototype\./;
40735
40736
var isForced = function (feature, detection) {
40737
  var value = data[normalize(feature)];
40738
  return value == POLYFILL ? true
40739
    : value == NATIVE ? false
40740
    : isCallable(detection) ? fails(detection)
40741
    : !!detection;
40742
};
40743
40744
var normalize = isForced.normalize = function (string) {
40745
  return String(string).replace(replacement, '.').toLowerCase();
40746
};
40747
40748
var data = isForced.data = {};
40749
var NATIVE = isForced.NATIVE = 'N';
40750
var POLYFILL = isForced.POLYFILL = 'P';
40751
40752
module.exports = isForced;
40753
40754
40755
/***/ }),
40756
40757
/***/ 5988:
40758
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40759
40760
var isObject = __webpack_require__(111);
40761
40762
var floor = Math.floor;
40763
40764
// `IsIntegralNumber` abstract operation
40765
// https://tc39.es/ecma262/#sec-isintegralnumber
40766
// eslint-disable-next-line es/no-number-isinteger -- safe
40767
module.exports = Number.isInteger || function isInteger(it) {
40768
  return !isObject(it) && isFinite(it) && floor(it) === it;
40769
};
40770
40771
40772
/***/ }),
40773
40774
/***/ 111:
40775
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40776
40777
var isCallable = __webpack_require__(614);
40778
40779
module.exports = function (it) {
40780
  return typeof it == 'object' ? it !== null : isCallable(it);
40781
};
40782
40783
40784
/***/ }),
40785
40786
/***/ 1913:
40787
/***/ (function(module) {
40788
40789
module.exports = false;
40790
40791
40792
/***/ }),
40793
40794
/***/ 7850:
40795
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40796
40797
var isObject = __webpack_require__(111);
40798
var classof = __webpack_require__(4326);
40799
var wellKnownSymbol = __webpack_require__(5112);
40800
40801
var MATCH = wellKnownSymbol('match');
40802
40803
// `IsRegExp` abstract operation
40804
// https://tc39.es/ecma262/#sec-isregexp
40805
module.exports = function (it) {
40806
  var isRegExp;
40807
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
40808
};
40809
40810
40811
/***/ }),
40812
40813
/***/ 2190:
40814
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40815
40816
var global = __webpack_require__(7854);
40817
var getBuiltIn = __webpack_require__(5005);
40818
var isCallable = __webpack_require__(614);
40819
var isPrototypeOf = __webpack_require__(7976);
40820
var USE_SYMBOL_AS_UID = __webpack_require__(3307);
40821
40822
var Object = global.Object;
40823
40824
module.exports = USE_SYMBOL_AS_UID ? function (it) {
40825
  return typeof it == 'symbol';
40826
} : function (it) {
40827
  var $Symbol = getBuiltIn('Symbol');
40828
  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));
40829
};
40830
40831
40832
/***/ }),
40833
40834
/***/ 408:
40835
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40836
40837
var global = __webpack_require__(7854);
40838
var bind = __webpack_require__(9974);
40839
var call = __webpack_require__(6916);
40840
var anObject = __webpack_require__(9670);
40841
var tryToString = __webpack_require__(6330);
40842
var isArrayIteratorMethod = __webpack_require__(7659);
40843
var lengthOfArrayLike = __webpack_require__(6244);
40844
var isPrototypeOf = __webpack_require__(7976);
40845
var getIterator = __webpack_require__(8554);
40846
var getIteratorMethod = __webpack_require__(1246);
40847
var iteratorClose = __webpack_require__(9212);
40848
40849
var TypeError = global.TypeError;
40850
40851
var Result = function (stopped, result) {
40852
  this.stopped = stopped;
40853
  this.result = result;
40854
};
40855
40856
var ResultPrototype = Result.prototype;
40857
40858
module.exports = function (iterable, unboundFunction, options) {
40859
  var that = options && options.that;
40860
  var AS_ENTRIES = !!(options && options.AS_ENTRIES);
40861
  var IS_ITERATOR = !!(options && options.IS_ITERATOR);
40862
  var INTERRUPTED = !!(options && options.INTERRUPTED);
40863
  var fn = bind(unboundFunction, that);
40864
  var iterator, iterFn, index, length, result, next, step;
40865
40866
  var stop = function (condition) {
40867
    if (iterator) iteratorClose(iterator, 'normal', condition);
40868
    return new Result(true, condition);
40869
  };
40870
40871
  var callFn = function (value) {
40872
    if (AS_ENTRIES) {
40873
      anObject(value);
40874
      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
40875
    } return INTERRUPTED ? fn(value, stop) : fn(value);
40876
  };
40877
40878
  if (IS_ITERATOR) {
40879
    iterator = iterable;
40880
  } else {
40881
    iterFn = getIteratorMethod(iterable);
40882
    if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');
40883
    // optimisation for array iterators
40884
    if (isArrayIteratorMethod(iterFn)) {
40885
      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {
40886
        result = callFn(iterable[index]);
40887
        if (result && isPrototypeOf(ResultPrototype, result)) return result;
40888
      } return new Result(false);
40889
    }
40890
    iterator = getIterator(iterable, iterFn);
40891
  }
40892
40893
  next = iterator.next;
40894
  while (!(step = call(next, iterator)).done) {
40895
    try {
40896
      result = callFn(step.value);
40897
    } catch (error) {
40898
      iteratorClose(iterator, 'throw', error);
40899
    }
40900
    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;
40901
  } return new Result(false);
40902
};
40903
40904
40905
/***/ }),
40906
40907
/***/ 9212:
40908
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40909
40910
var call = __webpack_require__(6916);
40911
var anObject = __webpack_require__(9670);
40912
var getMethod = __webpack_require__(8173);
40913
40914
module.exports = function (iterator, kind, value) {
40915
  var innerResult, innerError;
40916
  anObject(iterator);
40917
  try {
40918
    innerResult = getMethod(iterator, 'return');
40919
    if (!innerResult) {
40920
      if (kind === 'throw') throw value;
40921
      return value;
40922
    }
40923
    innerResult = call(innerResult, iterator);
40924
  } catch (error) {
40925
    innerError = true;
40926
    innerResult = error;
40927
  }
40928
  if (kind === 'throw') throw value;
40929
  if (innerError) throw innerResult;
40930
  anObject(innerResult);
40931
  return value;
40932
};
40933
40934
40935
/***/ }),
40936
40937
/***/ 3383:
40938
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
40939
40940
"use strict";
40941
40942
var fails = __webpack_require__(7293);
40943
var isCallable = __webpack_require__(614);
40944
var create = __webpack_require__(30);
40945
var getPrototypeOf = __webpack_require__(9518);
40946
var redefine = __webpack_require__(1320);
40947
var wellKnownSymbol = __webpack_require__(5112);
40948
var IS_PURE = __webpack_require__(1913);
40949
40950
var ITERATOR = wellKnownSymbol('iterator');
40951
var BUGGY_SAFARI_ITERATORS = false;
40952
40953
// `%IteratorPrototype%` object
40954
// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
40955
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
40956
40957
/* eslint-disable es/no-array-prototype-keys -- safe */
40958
if ([].keys) {
40959
  arrayIterator = [].keys();
40960
  // Safari 8 has buggy iterators w/o `next`
40961
  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
40962
  else {
40963
    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
40964
    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
40965
  }
40966
}
40967
40968
var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {
40969
  var test = {};
40970
  // FF44- legacy iterators case
40971
  return IteratorPrototype[ITERATOR].call(test) !== test;
40972
});
40973
40974
if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
40975
else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);
40976
40977
// `%IteratorPrototype%[@@iterator]()` method
40978
// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
40979
if (!isCallable(IteratorPrototype[ITERATOR])) {
40980
  redefine(IteratorPrototype, ITERATOR, function () {
40981
    return this;
40982
  });
40983
}
40984
40985
module.exports = {
40986
  IteratorPrototype: IteratorPrototype,
40987
  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
40988
};
40989
40990
40991
/***/ }),
40992
40993
/***/ 7497:
40994
/***/ (function(module) {
40995
40996
module.exports = {};
40997
40998
40999
/***/ }),
41000
41001
/***/ 6244:
41002
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41003
41004
var toLength = __webpack_require__(7466);
41005
41006
// `LengthOfArrayLike` abstract operation
41007
// https://tc39.es/ecma262/#sec-lengthofarraylike
41008
module.exports = function (obj) {
41009
  return toLength(obj.length);
41010
};
41011
41012
41013
/***/ }),
41014
41015
/***/ 5948:
41016
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41017
41018
var global = __webpack_require__(7854);
41019
var bind = __webpack_require__(9974);
41020
var getOwnPropertyDescriptor = (__webpack_require__(1236).f);
41021
var macrotask = (__webpack_require__(261).set);
41022
var IS_IOS = __webpack_require__(6833);
41023
var IS_IOS_PEBBLE = __webpack_require__(1528);
41024
var IS_WEBOS_WEBKIT = __webpack_require__(1036);
41025
var IS_NODE = __webpack_require__(5268);
41026
41027
var MutationObserver = global.MutationObserver || global.WebKitMutationObserver;
41028
var document = global.document;
41029
var process = global.process;
41030
var Promise = global.Promise;
41031
// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
41032
var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');
41033
var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
41034
41035
var flush, head, last, notify, toggle, node, promise, then;
41036
41037
// modern engines have queueMicrotask method
41038
if (!queueMicrotask) {
41039
  flush = function () {
41040
    var parent, fn;
41041
    if (IS_NODE && (parent = process.domain)) parent.exit();
41042
    while (head) {
41043
      fn = head.fn;
41044
      head = head.next;
41045
      try {
41046
        fn();
41047
      } catch (error) {
41048
        if (head) notify();
41049
        else last = undefined;
41050
        throw error;
41051
      }
41052
    } last = undefined;
41053
    if (parent) parent.enter();
41054
  };
41055
41056
  // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
41057
  // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898
41058
  if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {
41059
    toggle = true;
41060
    node = document.createTextNode('');
41061
    new MutationObserver(flush).observe(node, { characterData: true });
41062
    notify = function () {
41063
      node.data = toggle = !toggle;
41064
    };
41065
  // environments with maybe non-completely correct, but existent Promise
41066
  } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {
41067
    // Promise.resolve without an argument throws an error in LG WebOS 2
41068
    promise = Promise.resolve(undefined);
41069
    // workaround of WebKit ~ iOS Safari 10.1 bug
41070
    promise.constructor = Promise;
41071
    then = bind(promise.then, promise);
41072
    notify = function () {
41073
      then(flush);
41074
    };
41075
  // Node.js without promises
41076
  } else if (IS_NODE) {
41077
    notify = function () {
41078
      process.nextTick(flush);
41079
    };
41080
  // for other environments - macrotask based on:
41081
  // - setImmediate
41082
  // - MessageChannel
41083
  // - window.postMessag
41084
  // - onreadystatechange
41085
  // - setTimeout
41086
  } else {
41087
    // strange IE + webpack dev server bug - use .bind(global)
41088
    macrotask = bind(macrotask, global);
41089
    notify = function () {
41090
      macrotask(flush);
41091
    };
41092
  }
41093
}
41094
41095
module.exports = queueMicrotask || function (fn) {
41096
  var task = { fn: fn, next: undefined };
41097
  if (last) last.next = task;
41098
  if (!head) {
41099
    head = task;
41100
    notify();
41101
  } last = task;
41102
};
41103
41104
41105
/***/ }),
41106
41107
/***/ 3366:
41108
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41109
41110
var global = __webpack_require__(7854);
41111
41112
module.exports = global.Promise;
41113
41114
41115
/***/ }),
41116
41117
/***/ 133:
41118
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41119
41120
/* eslint-disable es/no-symbol -- required for testing */
41121
var V8_VERSION = __webpack_require__(7392);
41122
var fails = __webpack_require__(7293);
41123
41124
// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
41125
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
41126
  var symbol = Symbol();
41127
  // Chrome 38 Symbol has incorrect toString conversion
41128
  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
41129
  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||
41130
    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
41131
    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
41132
});
41133
41134
41135
/***/ }),
41136
41137
/***/ 8536:
41138
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41139
41140
var global = __webpack_require__(7854);
41141
var isCallable = __webpack_require__(614);
41142
var inspectSource = __webpack_require__(2788);
41143
41144
var WeakMap = global.WeakMap;
41145
41146
module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));
41147
41148
41149
/***/ }),
41150
41151
/***/ 8523:
41152
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41153
41154
"use strict";
41155
41156
var aCallable = __webpack_require__(9662);
41157
41158
var PromiseCapability = function (C) {
41159
  var resolve, reject;
41160
  this.promise = new C(function ($$resolve, $$reject) {
41161
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
41162
    resolve = $$resolve;
41163
    reject = $$reject;
41164
  });
41165
  this.resolve = aCallable(resolve);
41166
  this.reject = aCallable(reject);
41167
};
41168
41169
// `NewPromiseCapability` abstract operation
41170
// https://tc39.es/ecma262/#sec-newpromisecapability
41171
module.exports.f = function (C) {
41172
  return new PromiseCapability(C);
41173
};
41174
41175
41176
/***/ }),
41177
41178
/***/ 6277:
41179
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41180
41181
var toString = __webpack_require__(1340);
41182
41183
module.exports = function (argument, $default) {
41184
  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);
41185
};
41186
41187
41188
/***/ }),
41189
41190
/***/ 3929:
41191
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41192
41193
var global = __webpack_require__(7854);
41194
var isRegExp = __webpack_require__(7850);
41195
41196
var TypeError = global.TypeError;
41197
41198
module.exports = function (it) {
41199
  if (isRegExp(it)) {
41200
    throw TypeError("The method doesn't accept regular expressions");
41201
  } return it;
41202
};
41203
41204
41205
/***/ }),
41206
41207
/***/ 7023:
41208
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41209
41210
var global = __webpack_require__(7854);
41211
41212
var globalIsFinite = global.isFinite;
41213
41214
// `Number.isFinite` method
41215
// https://tc39.es/ecma262/#sec-number.isfinite
41216
// eslint-disable-next-line es/no-number-isfinite -- safe
41217
module.exports = Number.isFinite || function isFinite(it) {
41218
  return typeof it == 'number' && globalIsFinite(it);
41219
};
41220
41221
41222
/***/ }),
41223
41224
/***/ 1574:
41225
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41226
41227
"use strict";
41228
41229
var DESCRIPTORS = __webpack_require__(9781);
41230
var uncurryThis = __webpack_require__(1702);
41231
var call = __webpack_require__(6916);
41232
var fails = __webpack_require__(7293);
41233
var objectKeys = __webpack_require__(1956);
41234
var getOwnPropertySymbolsModule = __webpack_require__(5181);
41235
var propertyIsEnumerableModule = __webpack_require__(5296);
41236
var toObject = __webpack_require__(7908);
41237
var IndexedObject = __webpack_require__(8361);
41238
41239
// eslint-disable-next-line es/no-object-assign -- safe
41240
var $assign = Object.assign;
41241
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
41242
var defineProperty = Object.defineProperty;
41243
var concat = uncurryThis([].concat);
41244
41245
// `Object.assign` method
41246
// https://tc39.es/ecma262/#sec-object.assign
41247
module.exports = !$assign || fails(function () {
41248
  // should have correct order of operations (Edge bug)
41249
  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {
41250
    enumerable: true,
41251
    get: function () {
41252
      defineProperty(this, 'b', {
41253
        value: 3,
41254
        enumerable: false
41255
      });
41256
    }
41257
  }), { b: 2 })).b !== 1) return true;
41258
  // should work with symbols and should have deterministic property order (V8 bug)
41259
  var A = {};
41260
  var B = {};
41261
  // eslint-disable-next-line es/no-symbol -- safe
41262
  var symbol = Symbol();
41263
  var alphabet = 'abcdefghijklmnopqrst';
41264
  A[symbol] = 7;
41265
  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
41266
  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;
41267
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`
41268
  var T = toObject(target);
41269
  var argumentsLength = arguments.length;
41270
  var index = 1;
41271
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
41272
  var propertyIsEnumerable = propertyIsEnumerableModule.f;
41273
  while (argumentsLength > index) {
41274
    var S = IndexedObject(arguments[index++]);
41275
    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);
41276
    var length = keys.length;
41277
    var j = 0;
41278
    var key;
41279
    while (length > j) {
41280
      key = keys[j++];
41281
      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];
41282
    }
41283
  } return T;
41284
} : $assign;
41285
41286
41287
/***/ }),
41288
41289
/***/ 30:
41290
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41291
41292
/* global ActiveXObject -- old IE, WSH */
41293
var anObject = __webpack_require__(9670);
41294
var defineProperties = __webpack_require__(6048);
41295
var enumBugKeys = __webpack_require__(748);
41296
var hiddenKeys = __webpack_require__(3501);
41297
var html = __webpack_require__(490);
41298
var documentCreateElement = __webpack_require__(317);
41299
var sharedKey = __webpack_require__(6200);
41300
41301
var GT = '>';
41302
var LT = '<';
41303
var PROTOTYPE = 'prototype';
41304
var SCRIPT = 'script';
41305
var IE_PROTO = sharedKey('IE_PROTO');
41306
41307
var EmptyConstructor = function () { /* empty */ };
41308
41309
var scriptTag = function (content) {
41310
  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
41311
};
41312
41313
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
41314
var NullProtoObjectViaActiveX = function (activeXDocument) {
41315
  activeXDocument.write(scriptTag(''));
41316
  activeXDocument.close();
41317
  var temp = activeXDocument.parentWindow.Object;
41318
  activeXDocument = null; // avoid memory leak
41319
  return temp;
41320
};
41321
41322
// Create object with fake `null` prototype: use iframe Object with cleared prototype
41323
var NullProtoObjectViaIFrame = function () {
41324
  // Thrash, waste and sodomy: IE GC bug
41325
  var iframe = documentCreateElement('iframe');
41326
  var JS = 'java' + SCRIPT + ':';
41327
  var iframeDocument;
41328
  iframe.style.display = 'none';
41329
  html.appendChild(iframe);
41330
  // https://github.com/zloirock/core-js/issues/475
41331
  iframe.src = String(JS);
41332
  iframeDocument = iframe.contentWindow.document;
41333
  iframeDocument.open();
41334
  iframeDocument.write(scriptTag('document.F=Object'));
41335
  iframeDocument.close();
41336
  return iframeDocument.F;
41337
};
41338
41339
// Check for document.domain and active x support
41340
// No need to use active x approach when document.domain is not set
41341
// see https://github.com/es-shims/es5-shim/issues/150
41342
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
41343
// avoid IE GC bug
41344
var activeXDocument;
41345
var NullProtoObject = function () {
41346
  try {
41347
    activeXDocument = new ActiveXObject('htmlfile');
41348
  } catch (error) { /* ignore */ }
41349
  NullProtoObject = typeof document != 'undefined'
41350
    ? document.domain && activeXDocument
41351
      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
41352
      : NullProtoObjectViaIFrame()
41353
    : NullProtoObjectViaActiveX(activeXDocument); // WSH
41354
  var length = enumBugKeys.length;
41355
  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
41356
  return NullProtoObject();
41357
};
41358
41359
hiddenKeys[IE_PROTO] = true;
41360
41361
// `Object.create` method
41362
// https://tc39.es/ecma262/#sec-object.create
41363
module.exports = Object.create || function create(O, Properties) {
41364
  var result;
41365
  if (O !== null) {
41366
    EmptyConstructor[PROTOTYPE] = anObject(O);
41367
    result = new EmptyConstructor();
41368
    EmptyConstructor[PROTOTYPE] = null;
41369
    // add "__proto__" for Object.getPrototypeOf polyfill
41370
    result[IE_PROTO] = O;
41371
  } else result = NullProtoObject();
41372
  return Properties === undefined ? result : defineProperties(result, Properties);
41373
};
41374
41375
41376
/***/ }),
41377
41378
/***/ 6048:
41379
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41380
41381
var DESCRIPTORS = __webpack_require__(9781);
41382
var definePropertyModule = __webpack_require__(3070);
41383
var anObject = __webpack_require__(9670);
41384
var toIndexedObject = __webpack_require__(5656);
41385
var objectKeys = __webpack_require__(1956);
41386
41387
// `Object.defineProperties` method
41388
// https://tc39.es/ecma262/#sec-object.defineproperties
41389
// eslint-disable-next-line es/no-object-defineproperties -- safe
41390
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
41391
  anObject(O);
41392
  var props = toIndexedObject(Properties);
41393
  var keys = objectKeys(Properties);
41394
  var length = keys.length;
41395
  var index = 0;
41396
  var key;
41397
  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
41398
  return O;
41399
};
41400
41401
41402
/***/ }),
41403
41404
/***/ 3070:
41405
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
41406
41407
var global = __webpack_require__(7854);
41408
var DESCRIPTORS = __webpack_require__(9781);
41409
var IE8_DOM_DEFINE = __webpack_require__(4664);
41410
var anObject = __webpack_require__(9670);
41411
var toPropertyKey = __webpack_require__(4948);
41412
41413
var TypeError = global.TypeError;
41414
// eslint-disable-next-line es/no-object-defineproperty -- safe
41415
var $defineProperty = Object.defineProperty;
41416
41417
// `Object.defineProperty` method
41418
// https://tc39.es/ecma262/#sec-object.defineproperty
41419
exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
41420
  anObject(O);
41421
  P = toPropertyKey(P);
41422
  anObject(Attributes);
41423
  if (IE8_DOM_DEFINE) try {
41424
    return $defineProperty(O, P, Attributes);
41425
  } catch (error) { /* empty */ }
41426
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
41427
  if ('value' in Attributes) O[P] = Attributes.value;
41428
  return O;
41429
};
41430
41431
41432
/***/ }),
41433
41434
/***/ 1236:
41435
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
41436
41437
var DESCRIPTORS = __webpack_require__(9781);
41438
var call = __webpack_require__(6916);
41439
var propertyIsEnumerableModule = __webpack_require__(5296);
41440
var createPropertyDescriptor = __webpack_require__(9114);
41441
var toIndexedObject = __webpack_require__(5656);
41442
var toPropertyKey = __webpack_require__(4948);
41443
var hasOwn = __webpack_require__(2597);
41444
var IE8_DOM_DEFINE = __webpack_require__(4664);
41445
41446
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
41447
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
41448
41449
// `Object.getOwnPropertyDescriptor` method
41450
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
41451
exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
41452
  O = toIndexedObject(O);
41453
  P = toPropertyKey(P);
41454
  if (IE8_DOM_DEFINE) try {
41455
    return $getOwnPropertyDescriptor(O, P);
41456
  } catch (error) { /* empty */ }
41457
  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
41458
};
41459
41460
41461
/***/ }),
41462
41463
/***/ 1156:
41464
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41465
41466
/* eslint-disable es/no-object-getownpropertynames -- safe */
41467
var classof = __webpack_require__(4326);
41468
var toIndexedObject = __webpack_require__(5656);
41469
var $getOwnPropertyNames = (__webpack_require__(8006).f);
41470
var arraySlice = __webpack_require__(206);
41471
41472
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
41473
  ? Object.getOwnPropertyNames(window) : [];
41474
41475
var getWindowNames = function (it) {
41476
  try {
41477
    return $getOwnPropertyNames(it);
41478
  } catch (error) {
41479
    return arraySlice(windowNames);
41480
  }
41481
};
41482
41483
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
41484
module.exports.f = function getOwnPropertyNames(it) {
41485
  return windowNames && classof(it) == 'Window'
41486
    ? getWindowNames(it)
41487
    : $getOwnPropertyNames(toIndexedObject(it));
41488
};
41489
41490
41491
/***/ }),
41492
41493
/***/ 8006:
41494
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
41495
41496
var internalObjectKeys = __webpack_require__(6324);
41497
var enumBugKeys = __webpack_require__(748);
41498
41499
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
41500
41501
// `Object.getOwnPropertyNames` method
41502
// https://tc39.es/ecma262/#sec-object.getownpropertynames
41503
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
41504
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
41505
  return internalObjectKeys(O, hiddenKeys);
41506
};
41507
41508
41509
/***/ }),
41510
41511
/***/ 5181:
41512
/***/ (function(__unused_webpack_module, exports) {
41513
41514
// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
41515
exports.f = Object.getOwnPropertySymbols;
41516
41517
41518
/***/ }),
41519
41520
/***/ 9518:
41521
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41522
41523
var global = __webpack_require__(7854);
41524
var hasOwn = __webpack_require__(2597);
41525
var isCallable = __webpack_require__(614);
41526
var toObject = __webpack_require__(7908);
41527
var sharedKey = __webpack_require__(6200);
41528
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);
41529
41530
var IE_PROTO = sharedKey('IE_PROTO');
41531
var Object = global.Object;
41532
var ObjectPrototype = Object.prototype;
41533
41534
// `Object.getPrototypeOf` method
41535
// https://tc39.es/ecma262/#sec-object.getprototypeof
41536
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
41537
  var object = toObject(O);
41538
  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
41539
  var constructor = object.constructor;
41540
  if (isCallable(constructor) && object instanceof constructor) {
41541
    return constructor.prototype;
41542
  } return object instanceof Object ? ObjectPrototype : null;
41543
};
41544
41545
41546
/***/ }),
41547
41548
/***/ 7976:
41549
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41550
41551
var uncurryThis = __webpack_require__(1702);
41552
41553
module.exports = uncurryThis({}.isPrototypeOf);
41554
41555
41556
/***/ }),
41557
41558
/***/ 6324:
41559
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41560
41561
var uncurryThis = __webpack_require__(1702);
41562
var hasOwn = __webpack_require__(2597);
41563
var toIndexedObject = __webpack_require__(5656);
41564
var indexOf = (__webpack_require__(1318).indexOf);
41565
var hiddenKeys = __webpack_require__(3501);
41566
41567
var push = uncurryThis([].push);
41568
41569
module.exports = function (object, names) {
41570
  var O = toIndexedObject(object);
41571
  var i = 0;
41572
  var result = [];
41573
  var key;
41574
  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
41575
  // Don't enum bug & hidden keys
41576
  while (names.length > i) if (hasOwn(O, key = names[i++])) {
41577
    ~indexOf(result, key) || push(result, key);
41578
  }
41579
  return result;
41580
};
41581
41582
41583
/***/ }),
41584
41585
/***/ 1956:
41586
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41587
41588
var internalObjectKeys = __webpack_require__(6324);
41589
var enumBugKeys = __webpack_require__(748);
41590
41591
// `Object.keys` method
41592
// https://tc39.es/ecma262/#sec-object.keys
41593
// eslint-disable-next-line es/no-object-keys -- safe
41594
module.exports = Object.keys || function keys(O) {
41595
  return internalObjectKeys(O, enumBugKeys);
41596
};
41597
41598
41599
/***/ }),
41600
41601
/***/ 5296:
41602
/***/ (function(__unused_webpack_module, exports) {
41603
41604
"use strict";
41605
41606
var $propertyIsEnumerable = {}.propertyIsEnumerable;
41607
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
41608
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
41609
41610
// Nashorn ~ JDK8 bug
41611
var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
41612
41613
// `Object.prototype.propertyIsEnumerable` method implementation
41614
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
41615
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
41616
  var descriptor = getOwnPropertyDescriptor(this, V);
41617
  return !!descriptor && descriptor.enumerable;
41618
} : $propertyIsEnumerable;
41619
41620
41621
/***/ }),
41622
41623
/***/ 7674:
41624
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41625
41626
/* eslint-disable no-proto -- safe */
41627
var uncurryThis = __webpack_require__(1702);
41628
var anObject = __webpack_require__(9670);
41629
var aPossiblePrototype = __webpack_require__(6077);
41630
41631
// `Object.setPrototypeOf` method
41632
// https://tc39.es/ecma262/#sec-object.setprototypeof
41633
// Works with __proto__ only. Old v8 can't work with null proto objects.
41634
// eslint-disable-next-line es/no-object-setprototypeof -- safe
41635
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
41636
  var CORRECT_SETTER = false;
41637
  var test = {};
41638
  var setter;
41639
  try {
41640
    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
41641
    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);
41642
    setter(test, []);
41643
    CORRECT_SETTER = test instanceof Array;
41644
  } catch (error) { /* empty */ }
41645
  return function setPrototypeOf(O, proto) {
41646
    anObject(O);
41647
    aPossiblePrototype(proto);
41648
    if (CORRECT_SETTER) setter(O, proto);
41649
    else O.__proto__ = proto;
41650
    return O;
41651
  };
41652
}() : undefined);
41653
41654
41655
/***/ }),
41656
41657
/***/ 4699:
41658
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41659
41660
var DESCRIPTORS = __webpack_require__(9781);
41661
var uncurryThis = __webpack_require__(1702);
41662
var objectKeys = __webpack_require__(1956);
41663
var toIndexedObject = __webpack_require__(5656);
41664
var $propertyIsEnumerable = (__webpack_require__(5296).f);
41665
41666
var propertyIsEnumerable = uncurryThis($propertyIsEnumerable);
41667
var push = uncurryThis([].push);
41668
41669
// `Object.{ entries, values }` methods implementation
41670
var createMethod = function (TO_ENTRIES) {
41671
  return function (it) {
41672
    var O = toIndexedObject(it);
41673
    var keys = objectKeys(O);
41674
    var length = keys.length;
41675
    var i = 0;
41676
    var result = [];
41677
    var key;
41678
    while (length > i) {
41679
      key = keys[i++];
41680
      if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {
41681
        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);
41682
      }
41683
    }
41684
    return result;
41685
  };
41686
};
41687
41688
module.exports = {
41689
  // `Object.entries` method
41690
  // https://tc39.es/ecma262/#sec-object.entries
41691
  entries: createMethod(true),
41692
  // `Object.values` method
41693
  // https://tc39.es/ecma262/#sec-object.values
41694
  values: createMethod(false)
41695
};
41696
41697
41698
/***/ }),
41699
41700
/***/ 288:
41701
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41702
41703
"use strict";
41704
41705
var TO_STRING_TAG_SUPPORT = __webpack_require__(1694);
41706
var classof = __webpack_require__(648);
41707
41708
// `Object.prototype.toString` method implementation
41709
// https://tc39.es/ecma262/#sec-object.prototype.tostring
41710
module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
41711
  return '[object ' + classof(this) + ']';
41712
};
41713
41714
41715
/***/ }),
41716
41717
/***/ 2140:
41718
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41719
41720
var global = __webpack_require__(7854);
41721
var call = __webpack_require__(6916);
41722
var isCallable = __webpack_require__(614);
41723
var isObject = __webpack_require__(111);
41724
41725
var TypeError = global.TypeError;
41726
41727
// `OrdinaryToPrimitive` abstract operation
41728
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
41729
module.exports = function (input, pref) {
41730
  var fn, val;
41731
  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
41732
  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
41733
  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
41734
  throw TypeError("Can't convert object to primitive value");
41735
};
41736
41737
41738
/***/ }),
41739
41740
/***/ 3887:
41741
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41742
41743
var getBuiltIn = __webpack_require__(5005);
41744
var uncurryThis = __webpack_require__(1702);
41745
var getOwnPropertyNamesModule = __webpack_require__(8006);
41746
var getOwnPropertySymbolsModule = __webpack_require__(5181);
41747
var anObject = __webpack_require__(9670);
41748
41749
var concat = uncurryThis([].concat);
41750
41751
// all object keys, includes non-enumerable and symbols
41752
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
41753
  var keys = getOwnPropertyNamesModule.f(anObject(it));
41754
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
41755
  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
41756
};
41757
41758
41759
/***/ }),
41760
41761
/***/ 857:
41762
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41763
41764
var global = __webpack_require__(7854);
41765
41766
module.exports = global;
41767
41768
41769
/***/ }),
41770
41771
/***/ 2534:
41772
/***/ (function(module) {
41773
41774
module.exports = function (exec) {
41775
  try {
41776
    return { error: false, value: exec() };
41777
  } catch (error) {
41778
    return { error: true, value: error };
41779
  }
41780
};
41781
41782
41783
/***/ }),
41784
41785
/***/ 9478:
41786
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41787
41788
var anObject = __webpack_require__(9670);
41789
var isObject = __webpack_require__(111);
41790
var newPromiseCapability = __webpack_require__(8523);
41791
41792
module.exports = function (C, x) {
41793
  anObject(C);
41794
  if (isObject(x) && x.constructor === C) return x;
41795
  var promiseCapability = newPromiseCapability.f(C);
41796
  var resolve = promiseCapability.resolve;
41797
  resolve(x);
41798
  return promiseCapability.promise;
41799
};
41800
41801
41802
/***/ }),
41803
41804
/***/ 2248:
41805
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41806
41807
var redefine = __webpack_require__(1320);
41808
41809
module.exports = function (target, src, options) {
41810
  for (var key in src) redefine(target, key, src[key], options);
41811
  return target;
41812
};
41813
41814
41815
/***/ }),
41816
41817
/***/ 1320:
41818
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41819
41820
var global = __webpack_require__(7854);
41821
var isCallable = __webpack_require__(614);
41822
var hasOwn = __webpack_require__(2597);
41823
var createNonEnumerableProperty = __webpack_require__(8880);
41824
var setGlobal = __webpack_require__(3505);
41825
var inspectSource = __webpack_require__(2788);
41826
var InternalStateModule = __webpack_require__(9909);
41827
var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(6530).CONFIGURABLE);
41828
41829
var getInternalState = InternalStateModule.get;
41830
var enforceInternalState = InternalStateModule.enforce;
41831
var TEMPLATE = String(String).split('String');
41832
41833
(module.exports = function (O, key, value, options) {
41834
  var unsafe = options ? !!options.unsafe : false;
41835
  var simple = options ? !!options.enumerable : false;
41836
  var noTargetGet = options ? !!options.noTargetGet : false;
41837
  var name = options && options.name !== undefined ? options.name : key;
41838
  var state;
41839
  if (isCallable(value)) {
41840
    if (String(name).slice(0, 7) === 'Symbol(') {
41841
      name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
41842
    }
41843
    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
41844
      createNonEnumerableProperty(value, 'name', name);
41845
    }
41846
    state = enforceInternalState(value);
41847
    if (!state.source) {
41848
      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
41849
    }
41850
  }
41851
  if (O === global) {
41852
    if (simple) O[key] = value;
41853
    else setGlobal(key, value);
41854
    return;
41855
  } else if (!unsafe) {
41856
    delete O[key];
41857
  } else if (!noTargetGet && O[key]) {
41858
    simple = true;
41859
  }
41860
  if (simple) O[key] = value;
41861
  else createNonEnumerableProperty(O, key, value);
41862
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
41863
})(Function.prototype, 'toString', function toString() {
41864
  return isCallable(this) && getInternalState(this).source || inspectSource(this);
41865
});
41866
41867
41868
/***/ }),
41869
41870
/***/ 7651:
41871
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41872
41873
var global = __webpack_require__(7854);
41874
var call = __webpack_require__(6916);
41875
var anObject = __webpack_require__(9670);
41876
var isCallable = __webpack_require__(614);
41877
var classof = __webpack_require__(4326);
41878
var regexpExec = __webpack_require__(2261);
41879
41880
var TypeError = global.TypeError;
41881
41882
// `RegExpExec` abstract operation
41883
// https://tc39.es/ecma262/#sec-regexpexec
41884
module.exports = function (R, S) {
41885
  var exec = R.exec;
41886
  if (isCallable(exec)) {
41887
    var result = call(exec, R, S);
41888
    if (result !== null) anObject(result);
41889
    return result;
41890
  }
41891
  if (classof(R) === 'RegExp') return call(regexpExec, R, S);
41892
  throw TypeError('RegExp#exec called on incompatible receiver');
41893
};
41894
41895
41896
/***/ }),
41897
41898
/***/ 2261:
41899
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
41900
41901
"use strict";
41902
41903
/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
41904
/* eslint-disable regexp/no-useless-quantifier -- testing */
41905
var call = __webpack_require__(6916);
41906
var uncurryThis = __webpack_require__(1702);
41907
var toString = __webpack_require__(1340);
41908
var regexpFlags = __webpack_require__(7066);
41909
var stickyHelpers = __webpack_require__(2999);
41910
var shared = __webpack_require__(2309);
41911
var create = __webpack_require__(30);
41912
var getInternalState = (__webpack_require__(9909).get);
41913
var UNSUPPORTED_DOT_ALL = __webpack_require__(9441);
41914
var UNSUPPORTED_NCG = __webpack_require__(7168);
41915
41916
var nativeReplace = shared('native-string-replace', String.prototype.replace);
41917
var nativeExec = RegExp.prototype.exec;
41918
var patchedExec = nativeExec;
41919
var charAt = uncurryThis(''.charAt);
41920
var indexOf = uncurryThis(''.indexOf);
41921
var replace = uncurryThis(''.replace);
41922
var stringSlice = uncurryThis(''.slice);
41923
41924
var UPDATES_LAST_INDEX_WRONG = (function () {
41925
  var re1 = /a/;
41926
  var re2 = /b*/g;
41927
  call(nativeExec, re1, 'a');
41928
  call(nativeExec, re2, 'a');
41929
  return re1.lastIndex !== 0 || re2.lastIndex !== 0;
41930
})();
41931
41932
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;
41933
41934
// nonparticipating capturing group, copied from es5-shim's String#split patch.
41935
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
41936
41937
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
41938
41939
if (PATCH) {
41940
  // eslint-disable-next-line max-statements -- TODO
41941
  patchedExec = function exec(string) {
41942
    var re = this;
41943
    var state = getInternalState(re);
41944
    var str = toString(string);
41945
    var raw = state.raw;
41946
    var result, reCopy, lastIndex, match, i, object, group;
41947
41948
    if (raw) {
41949
      raw.lastIndex = re.lastIndex;
41950
      result = call(patchedExec, raw, str);
41951
      re.lastIndex = raw.lastIndex;
41952
      return result;
41953
    }
41954
41955
    var groups = state.groups;
41956
    var sticky = UNSUPPORTED_Y && re.sticky;
41957
    var flags = call(regexpFlags, re);
41958
    var source = re.source;
41959
    var charsAdded = 0;
41960
    var strCopy = str;
41961
41962
    if (sticky) {
41963
      flags = replace(flags, 'y', '');
41964
      if (indexOf(flags, 'g') === -1) {
41965
        flags += 'g';
41966
      }
41967
41968
      strCopy = stringSlice(str, re.lastIndex);
41969
      // Support anchored sticky behavior.
41970
      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) {
41971
        source = '(?: ' + source + ')';
41972
        strCopy = ' ' + strCopy;
41973
        charsAdded++;
41974
      }
41975
      // ^(? + rx + ) is needed, in combination with some str slicing, to
41976
      // simulate the 'y' flag.
41977
      reCopy = new RegExp('^(?:' + source + ')', flags);
41978
    }
41979
41980
    if (NPCG_INCLUDED) {
41981
      reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
41982
    }
41983
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
41984
41985
    match = call(nativeExec, sticky ? reCopy : re, strCopy);
41986
41987
    if (sticky) {
41988
      if (match) {
41989
        match.input = stringSlice(match.input, charsAdded);
41990
        match[0] = stringSlice(match[0], charsAdded);
41991
        match.index = re.lastIndex;
41992
        re.lastIndex += match[0].length;
41993
      } else re.lastIndex = 0;
41994
    } else if (UPDATES_LAST_INDEX_WRONG && match) {
41995
      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
41996
    }
41997
    if (NPCG_INCLUDED && match && match.length > 1) {
41998
      // Fix browsers whose `exec` methods don't consistently return `undefined`
41999
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
42000
      call(nativeReplace, match[0], reCopy, function () {
42001
        for (i = 1; i < arguments.length - 2; i++) {
42002
          if (arguments[i] === undefined) match[i] = undefined;
42003
        }
42004
      });
42005
    }
42006
42007
    if (match && groups) {
42008
      match.groups = object = create(null);
42009
      for (i = 0; i < groups.length; i++) {
42010
        group = groups[i];
42011
        object[group[0]] = match[group[1]];
42012
      }
42013
    }
42014
42015
    return match;
42016
  };
42017
}
42018
42019
module.exports = patchedExec;
42020
42021
42022
/***/ }),
42023
42024
/***/ 7066:
42025
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42026
42027
"use strict";
42028
42029
var anObject = __webpack_require__(9670);
42030
42031
// `RegExp.prototype.flags` getter implementation
42032
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
42033
module.exports = function () {
42034
  var that = anObject(this);
42035
  var result = '';
42036
  if (that.global) result += 'g';
42037
  if (that.ignoreCase) result += 'i';
42038
  if (that.multiline) result += 'm';
42039
  if (that.dotAll) result += 's';
42040
  if (that.unicode) result += 'u';
42041
  if (that.sticky) result += 'y';
42042
  return result;
42043
};
42044
42045
42046
/***/ }),
42047
42048
/***/ 2999:
42049
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
42050
42051
var fails = __webpack_require__(7293);
42052
var global = __webpack_require__(7854);
42053
42054
// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
42055
var $RegExp = global.RegExp;
42056
42057
exports.UNSUPPORTED_Y = fails(function () {
42058
  var re = $RegExp('a', 'y');
42059
  re.lastIndex = 2;
42060
  return re.exec('abcd') != null;
42061
});
42062
42063
exports.BROKEN_CARET = fails(function () {
42064
  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
42065
  var re = $RegExp('^r', 'gy');
42066
  re.lastIndex = 2;
42067
  return re.exec('str') != null;
42068
});
42069
42070
42071
/***/ }),
42072
42073
/***/ 9441:
42074
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42075
42076
var fails = __webpack_require__(7293);
42077
var global = __webpack_require__(7854);
42078
42079
// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
42080
var $RegExp = global.RegExp;
42081
42082
module.exports = fails(function () {
42083
  var re = $RegExp('.', 's');
42084
  return !(re.dotAll && re.exec('\n') && re.flags === 's');
42085
});
42086
42087
42088
/***/ }),
42089
42090
/***/ 7168:
42091
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42092
42093
var fails = __webpack_require__(7293);
42094
var global = __webpack_require__(7854);
42095
42096
// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
42097
var $RegExp = global.RegExp;
42098
42099
module.exports = fails(function () {
42100
  var re = $RegExp('(?<a>b)', 'g');
42101
  return re.exec('b').groups.a !== 'b' ||
42102
    'b'.replace(re, '$<a>c') !== 'bc';
42103
});
42104
42105
42106
/***/ }),
42107
42108
/***/ 4488:
42109
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42110
42111
var global = __webpack_require__(7854);
42112
42113
var TypeError = global.TypeError;
42114
42115
// `RequireObjectCoercible` abstract operation
42116
// https://tc39.es/ecma262/#sec-requireobjectcoercible
42117
module.exports = function (it) {
42118
  if (it == undefined) throw TypeError("Can't call method on " + it);
42119
  return it;
42120
};
42121
42122
42123
/***/ }),
42124
42125
/***/ 3505:
42126
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42127
42128
var global = __webpack_require__(7854);
42129
42130
// eslint-disable-next-line es/no-object-defineproperty -- safe
42131
var defineProperty = Object.defineProperty;
42132
42133
module.exports = function (key, value) {
42134
  try {
42135
    defineProperty(global, key, { value: value, configurable: true, writable: true });
42136
  } catch (error) {
42137
    global[key] = value;
42138
  } return value;
42139
};
42140
42141
42142
/***/ }),
42143
42144
/***/ 6340:
42145
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42146
42147
"use strict";
42148
42149
var getBuiltIn = __webpack_require__(5005);
42150
var definePropertyModule = __webpack_require__(3070);
42151
var wellKnownSymbol = __webpack_require__(5112);
42152
var DESCRIPTORS = __webpack_require__(9781);
42153
42154
var SPECIES = wellKnownSymbol('species');
42155
42156
module.exports = function (CONSTRUCTOR_NAME) {
42157
  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
42158
  var defineProperty = definePropertyModule.f;
42159
42160
  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
42161
    defineProperty(Constructor, SPECIES, {
42162
      configurable: true,
42163
      get: function () { return this; }
42164
    });
42165
  }
42166
};
42167
42168
42169
/***/ }),
42170
42171
/***/ 8003:
42172
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42173
42174
var defineProperty = (__webpack_require__(3070).f);
42175
var hasOwn = __webpack_require__(2597);
42176
var wellKnownSymbol = __webpack_require__(5112);
42177
42178
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
42179
42180
module.exports = function (it, TAG, STATIC) {
42181
  if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
42182
    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
42183
  }
42184
};
42185
42186
42187
/***/ }),
42188
42189
/***/ 6200:
42190
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42191
42192
var shared = __webpack_require__(2309);
42193
var uid = __webpack_require__(9711);
42194
42195
var keys = shared('keys');
42196
42197
module.exports = function (key) {
42198
  return keys[key] || (keys[key] = uid(key));
42199
};
42200
42201
42202
/***/ }),
42203
42204
/***/ 5465:
42205
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42206
42207
var global = __webpack_require__(7854);
42208
var setGlobal = __webpack_require__(3505);
42209
42210
var SHARED = '__core-js_shared__';
42211
var store = global[SHARED] || setGlobal(SHARED, {});
42212
42213
module.exports = store;
42214
42215
42216
/***/ }),
42217
42218
/***/ 2309:
42219
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42220
42221
var IS_PURE = __webpack_require__(1913);
42222
var store = __webpack_require__(5465);
42223
42224
(module.exports = function (key, value) {
42225
  return store[key] || (store[key] = value !== undefined ? value : {});
42226
})('versions', []).push({
42227
  version: '3.19.0',
42228
  mode: IS_PURE ? 'pure' : 'global',
42229
  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
42230
});
42231
42232
42233
/***/ }),
42234
42235
/***/ 6707:
42236
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42237
42238
var anObject = __webpack_require__(9670);
42239
var aConstructor = __webpack_require__(9483);
42240
var wellKnownSymbol = __webpack_require__(5112);
42241
42242
var SPECIES = wellKnownSymbol('species');
42243
42244
// `SpeciesConstructor` abstract operation
42245
// https://tc39.es/ecma262/#sec-speciesconstructor
42246
module.exports = function (O, defaultConstructor) {
42247
  var C = anObject(O).constructor;
42248
  var S;
42249
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);
42250
};
42251
42252
42253
/***/ }),
42254
42255
/***/ 3429:
42256
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42257
42258
var fails = __webpack_require__(7293);
42259
42260
// check the existence of a method, lowercase
42261
// of a tag and escaping quotes in arguments
42262
module.exports = function (METHOD_NAME) {
42263
  return fails(function () {
42264
    var test = ''[METHOD_NAME]('"');
42265
    return test !== test.toLowerCase() || test.split('"').length > 3;
42266
  });
42267
};
42268
42269
42270
/***/ }),
42271
42272
/***/ 8710:
42273
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42274
42275
var uncurryThis = __webpack_require__(1702);
42276
var toIntegerOrInfinity = __webpack_require__(9303);
42277
var toString = __webpack_require__(1340);
42278
var requireObjectCoercible = __webpack_require__(4488);
42279
42280
var charAt = uncurryThis(''.charAt);
42281
var charCodeAt = uncurryThis(''.charCodeAt);
42282
var stringSlice = uncurryThis(''.slice);
42283
42284
var createMethod = function (CONVERT_TO_STRING) {
42285
  return function ($this, pos) {
42286
    var S = toString(requireObjectCoercible($this));
42287
    var position = toIntegerOrInfinity(pos);
42288
    var size = S.length;
42289
    var first, second;
42290
    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
42291
    first = charCodeAt(S, position);
42292
    return first < 0xD800 || first > 0xDBFF || position + 1 === size
42293
      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF
42294
        ? CONVERT_TO_STRING
42295
          ? charAt(S, position)
42296
          : first
42297
        : CONVERT_TO_STRING
42298
          ? stringSlice(S, position, position + 2)
42299
          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
42300
  };
42301
};
42302
42303
module.exports = {
42304
  // `String.prototype.codePointAt` method
42305
  // https://tc39.es/ecma262/#sec-string.prototype.codepointat
42306
  codeAt: createMethod(false),
42307
  // `String.prototype.at` method
42308
  // https://github.com/mathiasbynens/String.prototype.at
42309
  charAt: createMethod(true)
42310
};
42311
42312
42313
/***/ }),
42314
42315
/***/ 8415:
42316
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42317
42318
"use strict";
42319
42320
var global = __webpack_require__(7854);
42321
var toIntegerOrInfinity = __webpack_require__(9303);
42322
var toString = __webpack_require__(1340);
42323
var requireObjectCoercible = __webpack_require__(4488);
42324
42325
var RangeError = global.RangeError;
42326
42327
// `String.prototype.repeat` method implementation
42328
// https://tc39.es/ecma262/#sec-string.prototype.repeat
42329
module.exports = function repeat(count) {
42330
  var str = toString(requireObjectCoercible(this));
42331
  var result = '';
42332
  var n = toIntegerOrInfinity(count);
42333
  if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');
42334
  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
42335
  return result;
42336
};
42337
42338
42339
/***/ }),
42340
42341
/***/ 6091:
42342
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42343
42344
var PROPER_FUNCTION_NAME = (__webpack_require__(6530).PROPER);
42345
var fails = __webpack_require__(7293);
42346
var whitespaces = __webpack_require__(1361);
42347
42348
var non = '\u200B\u0085\u180E';
42349
42350
// check that a method works with the correct list
42351
// of whitespaces and has a correct name
42352
module.exports = function (METHOD_NAME) {
42353
  return fails(function () {
42354
    return !!whitespaces[METHOD_NAME]()
42355
      || non[METHOD_NAME]() !== non
42356
      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);
42357
  });
42358
};
42359
42360
42361
/***/ }),
42362
42363
/***/ 3111:
42364
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42365
42366
var uncurryThis = __webpack_require__(1702);
42367
var requireObjectCoercible = __webpack_require__(4488);
42368
var toString = __webpack_require__(1340);
42369
var whitespaces = __webpack_require__(1361);
42370
42371
var replace = uncurryThis(''.replace);
42372
var whitespace = '[' + whitespaces + ']';
42373
var ltrim = RegExp('^' + whitespace + whitespace + '*');
42374
var rtrim = RegExp(whitespace + whitespace + '*$');
42375
42376
// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
42377
var createMethod = function (TYPE) {
42378
  return function ($this) {
42379
    var string = toString(requireObjectCoercible($this));
42380
    if (TYPE & 1) string = replace(string, ltrim, '');
42381
    if (TYPE & 2) string = replace(string, rtrim, '');
42382
    return string;
42383
  };
42384
};
42385
42386
module.exports = {
42387
  // `String.prototype.{ trimLeft, trimStart }` methods
42388
  // https://tc39.es/ecma262/#sec-string.prototype.trimstart
42389
  start: createMethod(1),
42390
  // `String.prototype.{ trimRight, trimEnd }` methods
42391
  // https://tc39.es/ecma262/#sec-string.prototype.trimend
42392
  end: createMethod(2),
42393
  // `String.prototype.trim` method
42394
  // https://tc39.es/ecma262/#sec-string.prototype.trim
42395
  trim: createMethod(3)
42396
};
42397
42398
42399
/***/ }),
42400
42401
/***/ 261:
42402
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42403
42404
var global = __webpack_require__(7854);
42405
var apply = __webpack_require__(2104);
42406
var bind = __webpack_require__(9974);
42407
var isCallable = __webpack_require__(614);
42408
var hasOwn = __webpack_require__(2597);
42409
var fails = __webpack_require__(7293);
42410
var html = __webpack_require__(490);
42411
var arraySlice = __webpack_require__(206);
42412
var createElement = __webpack_require__(317);
42413
var IS_IOS = __webpack_require__(6833);
42414
var IS_NODE = __webpack_require__(5268);
42415
42416
var set = global.setImmediate;
42417
var clear = global.clearImmediate;
42418
var process = global.process;
42419
var Dispatch = global.Dispatch;
42420
var Function = global.Function;
42421
var MessageChannel = global.MessageChannel;
42422
var String = global.String;
42423
var counter = 0;
42424
var queue = {};
42425
var ONREADYSTATECHANGE = 'onreadystatechange';
42426
var location, defer, channel, port;
42427
42428
try {
42429
  // Deno throws a ReferenceError on `location` access without `--location` flag
42430
  location = global.location;
42431
} catch (error) { /* empty */ }
42432
42433
var run = function (id) {
42434
  if (hasOwn(queue, id)) {
42435
    var fn = queue[id];
42436
    delete queue[id];
42437
    fn();
42438
  }
42439
};
42440
42441
var runner = function (id) {
42442
  return function () {
42443
    run(id);
42444
  };
42445
};
42446
42447
var listener = function (event) {
42448
  run(event.data);
42449
};
42450
42451
var post = function (id) {
42452
  // old engines have not location.origin
42453
  global.postMessage(String(id), location.protocol + '//' + location.host);
42454
};
42455
42456
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
42457
if (!set || !clear) {
42458
  set = function setImmediate(fn) {
42459
    var args = arraySlice(arguments, 1);
42460
    queue[++counter] = function () {
42461
      apply(isCallable(fn) ? fn : Function(fn), undefined, args);
42462
    };
42463
    defer(counter);
42464
    return counter;
42465
  };
42466
  clear = function clearImmediate(id) {
42467
    delete queue[id];
42468
  };
42469
  // Node.js 0.8-
42470
  if (IS_NODE) {
42471
    defer = function (id) {
42472
      process.nextTick(runner(id));
42473
    };
42474
  // Sphere (JS game engine) Dispatch API
42475
  } else if (Dispatch && Dispatch.now) {
42476
    defer = function (id) {
42477
      Dispatch.now(runner(id));
42478
    };
42479
  // Browsers with MessageChannel, includes WebWorkers
42480
  // except iOS - https://github.com/zloirock/core-js/issues/624
42481
  } else if (MessageChannel && !IS_IOS) {
42482
    channel = new MessageChannel();
42483
    port = channel.port2;
42484
    channel.port1.onmessage = listener;
42485
    defer = bind(port.postMessage, port);
42486
  // Browsers with postMessage, skip WebWorkers
42487
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
42488
  } else if (
42489
    global.addEventListener &&
42490
    isCallable(global.postMessage) &&
42491
    !global.importScripts &&
42492
    location && location.protocol !== 'file:' &&
42493
    !fails(post)
42494
  ) {
42495
    defer = post;
42496
    global.addEventListener('message', listener, false);
42497
  // IE8-
42498
  } else if (ONREADYSTATECHANGE in createElement('script')) {
42499
    defer = function (id) {
42500
      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
42501
        html.removeChild(this);
42502
        run(id);
42503
      };
42504
    };
42505
  // Rest old browsers
42506
  } else {
42507
    defer = function (id) {
42508
      setTimeout(runner(id), 0);
42509
    };
42510
  }
42511
}
42512
42513
module.exports = {
42514
  set: set,
42515
  clear: clear
42516
};
42517
42518
42519
/***/ }),
42520
42521
/***/ 863:
42522
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42523
42524
var uncurryThis = __webpack_require__(1702);
42525
42526
// `thisNumberValue` abstract operation
42527
// https://tc39.es/ecma262/#sec-thisnumbervalue
42528
module.exports = uncurryThis(1.0.valueOf);
42529
42530
42531
/***/ }),
42532
42533
/***/ 1400:
42534
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42535
42536
var toIntegerOrInfinity = __webpack_require__(9303);
42537
42538
var max = Math.max;
42539
var min = Math.min;
42540
42541
// Helper for a popular repeating case of the spec:
42542
// Let integer be ? ToInteger(index).
42543
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
42544
module.exports = function (index, length) {
42545
  var integer = toIntegerOrInfinity(index);
42546
  return integer < 0 ? max(integer + length, 0) : min(integer, length);
42547
};
42548
42549
42550
/***/ }),
42551
42552
/***/ 7067:
42553
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42554
42555
var global = __webpack_require__(7854);
42556
var toIntegerOrInfinity = __webpack_require__(9303);
42557
var toLength = __webpack_require__(7466);
42558
42559
var RangeError = global.RangeError;
42560
42561
// `ToIndex` abstract operation
42562
// https://tc39.es/ecma262/#sec-toindex
42563
module.exports = function (it) {
42564
  if (it === undefined) return 0;
42565
  var number = toIntegerOrInfinity(it);
42566
  var length = toLength(number);
42567
  if (number !== length) throw RangeError('Wrong length or index');
42568
  return length;
42569
};
42570
42571
42572
/***/ }),
42573
42574
/***/ 5656:
42575
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42576
42577
// toObject with fallback for non-array-like ES3 strings
42578
var IndexedObject = __webpack_require__(8361);
42579
var requireObjectCoercible = __webpack_require__(4488);
42580
42581
module.exports = function (it) {
42582
  return IndexedObject(requireObjectCoercible(it));
42583
};
42584
42585
42586
/***/ }),
42587
42588
/***/ 9303:
42589
/***/ (function(module) {
42590
42591
var ceil = Math.ceil;
42592
var floor = Math.floor;
42593
42594
// `ToIntegerOrInfinity` abstract operation
42595
// https://tc39.es/ecma262/#sec-tointegerorinfinity
42596
module.exports = function (argument) {
42597
  var number = +argument;
42598
  // eslint-disable-next-line no-self-compare -- safe
42599
  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);
42600
};
42601
42602
42603
/***/ }),
42604
42605
/***/ 7466:
42606
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42607
42608
var toIntegerOrInfinity = __webpack_require__(9303);
42609
42610
var min = Math.min;
42611
42612
// `ToLength` abstract operation
42613
// https://tc39.es/ecma262/#sec-tolength
42614
module.exports = function (argument) {
42615
  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
42616
};
42617
42618
42619
/***/ }),
42620
42621
/***/ 7908:
42622
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42623
42624
var global = __webpack_require__(7854);
42625
var requireObjectCoercible = __webpack_require__(4488);
42626
42627
var Object = global.Object;
42628
42629
// `ToObject` abstract operation
42630
// https://tc39.es/ecma262/#sec-toobject
42631
module.exports = function (argument) {
42632
  return Object(requireObjectCoercible(argument));
42633
};
42634
42635
42636
/***/ }),
42637
42638
/***/ 4590:
42639
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42640
42641
var global = __webpack_require__(7854);
42642
var toPositiveInteger = __webpack_require__(3002);
42643
42644
var RangeError = global.RangeError;
42645
42646
module.exports = function (it, BYTES) {
42647
  var offset = toPositiveInteger(it);
42648
  if (offset % BYTES) throw RangeError('Wrong offset');
42649
  return offset;
42650
};
42651
42652
42653
/***/ }),
42654
42655
/***/ 3002:
42656
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42657
42658
var global = __webpack_require__(7854);
42659
var toIntegerOrInfinity = __webpack_require__(9303);
42660
42661
var RangeError = global.RangeError;
42662
42663
module.exports = function (it) {
42664
  var result = toIntegerOrInfinity(it);
42665
  if (result < 0) throw RangeError("The argument can't be less than 0");
42666
  return result;
42667
};
42668
42669
42670
/***/ }),
42671
42672
/***/ 7593:
42673
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42674
42675
var global = __webpack_require__(7854);
42676
var call = __webpack_require__(6916);
42677
var isObject = __webpack_require__(111);
42678
var isSymbol = __webpack_require__(2190);
42679
var getMethod = __webpack_require__(8173);
42680
var ordinaryToPrimitive = __webpack_require__(2140);
42681
var wellKnownSymbol = __webpack_require__(5112);
42682
42683
var TypeError = global.TypeError;
42684
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
42685
42686
// `ToPrimitive` abstract operation
42687
// https://tc39.es/ecma262/#sec-toprimitive
42688
module.exports = function (input, pref) {
42689
  if (!isObject(input) || isSymbol(input)) return input;
42690
  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
42691
  var result;
42692
  if (exoticToPrim) {
42693
    if (pref === undefined) pref = 'default';
42694
    result = call(exoticToPrim, input, pref);
42695
    if (!isObject(result) || isSymbol(result)) return result;
42696
    throw TypeError("Can't convert object to primitive value");
42697
  }
42698
  if (pref === undefined) pref = 'number';
42699
  return ordinaryToPrimitive(input, pref);
42700
};
42701
42702
42703
/***/ }),
42704
42705
/***/ 4948:
42706
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42707
42708
var toPrimitive = __webpack_require__(7593);
42709
var isSymbol = __webpack_require__(2190);
42710
42711
// `ToPropertyKey` abstract operation
42712
// https://tc39.es/ecma262/#sec-topropertykey
42713
module.exports = function (argument) {
42714
  var key = toPrimitive(argument, 'string');
42715
  return isSymbol(key) ? key : key + '';
42716
};
42717
42718
42719
/***/ }),
42720
42721
/***/ 1694:
42722
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42723
42724
var wellKnownSymbol = __webpack_require__(5112);
42725
42726
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
42727
var test = {};
42728
42729
test[TO_STRING_TAG] = 'z';
42730
42731
module.exports = String(test) === '[object z]';
42732
42733
42734
/***/ }),
42735
42736
/***/ 1340:
42737
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42738
42739
var global = __webpack_require__(7854);
42740
var classof = __webpack_require__(648);
42741
42742
var String = global.String;
42743
42744
module.exports = function (argument) {
42745
  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
42746
  return String(argument);
42747
};
42748
42749
42750
/***/ }),
42751
42752
/***/ 6330:
42753
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42754
42755
var global = __webpack_require__(7854);
42756
42757
var String = global.String;
42758
42759
module.exports = function (argument) {
42760
  try {
42761
    return String(argument);
42762
  } catch (error) {
42763
    return 'Object';
42764
  }
42765
};
42766
42767
42768
/***/ }),
42769
42770
/***/ 9843:
42771
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
42772
42773
"use strict";
42774
42775
var $ = __webpack_require__(2109);
42776
var global = __webpack_require__(7854);
42777
var call = __webpack_require__(6916);
42778
var DESCRIPTORS = __webpack_require__(9781);
42779
var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(3832);
42780
var ArrayBufferViewCore = __webpack_require__(2094);
42781
var ArrayBufferModule = __webpack_require__(2091);
42782
var anInstance = __webpack_require__(5787);
42783
var createPropertyDescriptor = __webpack_require__(9114);
42784
var createNonEnumerableProperty = __webpack_require__(8880);
42785
var isIntegralNumber = __webpack_require__(5988);
42786
var toLength = __webpack_require__(7466);
42787
var toIndex = __webpack_require__(7067);
42788
var toOffset = __webpack_require__(4590);
42789
var toPropertyKey = __webpack_require__(4948);
42790
var hasOwn = __webpack_require__(2597);
42791
var classof = __webpack_require__(648);
42792
var isObject = __webpack_require__(111);
42793
var isSymbol = __webpack_require__(2190);
42794
var create = __webpack_require__(30);
42795
var isPrototypeOf = __webpack_require__(7976);
42796
var setPrototypeOf = __webpack_require__(7674);
42797
var getOwnPropertyNames = (__webpack_require__(8006).f);
42798
var typedArrayFrom = __webpack_require__(7321);
42799
var forEach = (__webpack_require__(2092).forEach);
42800
var setSpecies = __webpack_require__(6340);
42801
var definePropertyModule = __webpack_require__(3070);
42802
var getOwnPropertyDescriptorModule = __webpack_require__(1236);
42803
var InternalStateModule = __webpack_require__(9909);
42804
var inheritIfRequired = __webpack_require__(9587);
42805
42806
var getInternalState = InternalStateModule.get;
42807
var setInternalState = InternalStateModule.set;
42808
var nativeDefineProperty = definePropertyModule.f;
42809
var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
42810
var round = Math.round;
42811
var RangeError = global.RangeError;
42812
var ArrayBuffer = ArrayBufferModule.ArrayBuffer;
42813
var ArrayBufferPrototype = ArrayBuffer.prototype;
42814
var DataView = ArrayBufferModule.DataView;
42815
var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
42816
var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;
42817
var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;
42818
var TypedArray = ArrayBufferViewCore.TypedArray;
42819
var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;
42820
var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
42821
var isTypedArray = ArrayBufferViewCore.isTypedArray;
42822
var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
42823
var WRONG_LENGTH = 'Wrong length';
42824
42825
var fromList = function (C, list) {
42826
  aTypedArrayConstructor(C);
42827
  var index = 0;
42828
  var length = list.length;
42829
  var result = new C(length);
42830
  while (length > index) result[index] = list[index++];
42831
  return result;
42832
};
42833
42834
var addGetter = function (it, key) {
42835
  nativeDefineProperty(it, key, { get: function () {
42836
    return getInternalState(this)[key];
42837
  } });
42838
};
42839
42840
var isArrayBuffer = function (it) {
42841
  var klass;
42842
  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';
42843
};
42844
42845
var isTypedArrayIndex = function (target, key) {
42846
  return isTypedArray(target)
42847
    && !isSymbol(key)
42848
    && key in target
42849
    && isIntegralNumber(+key)
42850
    && key >= 0;
42851
};
42852
42853
var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {
42854
  key = toPropertyKey(key);
42855
  return isTypedArrayIndex(target, key)
42856
    ? createPropertyDescriptor(2, target[key])
42857
    : nativeGetOwnPropertyDescriptor(target, key);
42858
};
42859
42860
var wrappedDefineProperty = function defineProperty(target, key, descriptor) {
42861
  key = toPropertyKey(key);
42862
  if (isTypedArrayIndex(target, key)
42863
    && isObject(descriptor)
42864
    && hasOwn(descriptor, 'value')
42865
    && !hasOwn(descriptor, 'get')
42866
    && !hasOwn(descriptor, 'set')
42867
    // TODO: add validation descriptor w/o calling accessors
42868
    && !descriptor.configurable
42869
    && (!hasOwn(descriptor, 'writable') || descriptor.writable)
42870
    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)
42871
  ) {
42872
    target[key] = descriptor.value;
42873
    return target;
42874
  } return nativeDefineProperty(target, key, descriptor);
42875
};
42876
42877
if (DESCRIPTORS) {
42878
  if (!NATIVE_ARRAY_BUFFER_VIEWS) {
42879
    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;
42880
    definePropertyModule.f = wrappedDefineProperty;
42881
    addGetter(TypedArrayPrototype, 'buffer');
42882
    addGetter(TypedArrayPrototype, 'byteOffset');
42883
    addGetter(TypedArrayPrototype, 'byteLength');
42884
    addGetter(TypedArrayPrototype, 'length');
42885
  }
42886
42887
  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
42888
    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
42889
    defineProperty: wrappedDefineProperty
42890
  });
42891
42892
  module.exports = function (TYPE, wrapper, CLAMPED) {
42893
    var BYTES = TYPE.match(/\d+$/)[0] / 8;
42894
    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';
42895
    var GETTER = 'get' + TYPE;
42896
    var SETTER = 'set' + TYPE;
42897
    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];
42898
    var TypedArrayConstructor = NativeTypedArrayConstructor;
42899
    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
42900
    var exported = {};
42901
42902
    var getter = function (that, index) {
42903
      var data = getInternalState(that);
42904
      return data.view[GETTER](index * BYTES + data.byteOffset, true);
42905
    };
42906
42907
    var setter = function (that, index, value) {
42908
      var data = getInternalState(that);
42909
      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
42910
      data.view[SETTER](index * BYTES + data.byteOffset, value, true);
42911
    };
42912
42913
    var addElement = function (that, index) {
42914
      nativeDefineProperty(that, index, {
42915
        get: function () {
42916
          return getter(this, index);
42917
        },
42918
        set: function (value) {
42919
          return setter(this, index, value);
42920
        },
42921
        enumerable: true
42922
      });
42923
    };
42924
42925
    if (!NATIVE_ARRAY_BUFFER_VIEWS) {
42926
      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {
42927
        anInstance(that, TypedArrayConstructorPrototype);
42928
        var index = 0;
42929
        var byteOffset = 0;
42930
        var buffer, byteLength, length;
42931
        if (!isObject(data)) {
42932
          length = toIndex(data);
42933
          byteLength = length * BYTES;
42934
          buffer = new ArrayBuffer(byteLength);
42935
        } else if (isArrayBuffer(data)) {
42936
          buffer = data;
42937
          byteOffset = toOffset(offset, BYTES);
42938
          var $len = data.byteLength;
42939
          if ($length === undefined) {
42940
            if ($len % BYTES) throw RangeError(WRONG_LENGTH);
42941
            byteLength = $len - byteOffset;
42942
            if (byteLength < 0) throw RangeError(WRONG_LENGTH);
42943
          } else {
42944
            byteLength = toLength($length) * BYTES;
42945
            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);
42946
          }
42947
          length = byteLength / BYTES;
42948
        } else if (isTypedArray(data)) {
42949
          return fromList(TypedArrayConstructor, data);
42950
        } else {
42951
          return call(typedArrayFrom, TypedArrayConstructor, data);
42952
        }
42953
        setInternalState(that, {
42954
          buffer: buffer,
42955
          byteOffset: byteOffset,
42956
          byteLength: byteLength,
42957
          length: length,
42958
          view: new DataView(buffer)
42959
        });
42960
        while (index < length) addElement(that, index++);
42961
      });
42962
42963
      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
42964
      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);
42965
    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {
42966
      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
42967
        anInstance(dummy, TypedArrayConstructorPrototype);
42968
        return inheritIfRequired(function () {
42969
          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));
42970
          if (isArrayBuffer(data)) return $length !== undefined
42971
            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)
42972
            : typedArrayOffset !== undefined
42973
              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))
42974
              : new NativeTypedArrayConstructor(data);
42975
          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);
42976
          return call(typedArrayFrom, TypedArrayConstructor, data);
42977
        }(), dummy, TypedArrayConstructor);
42978
      });
42979
42980
      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);
42981
      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {
42982
        if (!(key in TypedArrayConstructor)) {
42983
          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
42984
        }
42985
      });
42986
      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
42987
    }
42988
42989
    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
42990
      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
42991
    }
42992
42993
    createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);
42994
42995
    if (TYPED_ARRAY_TAG) {
42996
      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
42997
    }
42998
42999
    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
43000
43001
    $({
43002
      global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS
43003
    }, exported);
43004
43005
    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
43006
      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
43007
    }
43008
43009
    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
43010
      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
43011
    }
43012
43013
    setSpecies(CONSTRUCTOR_NAME);
43014
  };
43015
} else module.exports = function () { /* empty */ };
43016
43017
43018
/***/ }),
43019
43020
/***/ 3832:
43021
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43022
43023
/* eslint-disable no-new -- required for testing */
43024
var global = __webpack_require__(7854);
43025
var fails = __webpack_require__(7293);
43026
var checkCorrectnessOfIteration = __webpack_require__(7072);
43027
var NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(2094).NATIVE_ARRAY_BUFFER_VIEWS);
43028
43029
var ArrayBuffer = global.ArrayBuffer;
43030
var Int8Array = global.Int8Array;
43031
43032
module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {
43033
  Int8Array(1);
43034
}) || !fails(function () {
43035
  new Int8Array(-1);
43036
}) || !checkCorrectnessOfIteration(function (iterable) {
43037
  new Int8Array();
43038
  new Int8Array(null);
43039
  new Int8Array(1.5);
43040
  new Int8Array(iterable);
43041
}, true) || fails(function () {
43042
  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill
43043
  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;
43044
});
43045
43046
43047
/***/ }),
43048
43049
/***/ 3074:
43050
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43051
43052
var arrayFromConstructorAndList = __webpack_require__(7745);
43053
var typedArraySpeciesConstructor = __webpack_require__(6304);
43054
43055
module.exports = function (instance, list) {
43056
  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);
43057
};
43058
43059
43060
/***/ }),
43061
43062
/***/ 7321:
43063
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43064
43065
var bind = __webpack_require__(9974);
43066
var call = __webpack_require__(6916);
43067
var aConstructor = __webpack_require__(9483);
43068
var toObject = __webpack_require__(7908);
43069
var lengthOfArrayLike = __webpack_require__(6244);
43070
var getIterator = __webpack_require__(8554);
43071
var getIteratorMethod = __webpack_require__(1246);
43072
var isArrayIteratorMethod = __webpack_require__(7659);
43073
var aTypedArrayConstructor = (__webpack_require__(2094).aTypedArrayConstructor);
43074
43075
module.exports = function from(source /* , mapfn, thisArg */) {
43076
  var C = aConstructor(this);
43077
  var O = toObject(source);
43078
  var argumentsLength = arguments.length;
43079
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
43080
  var mapping = mapfn !== undefined;
43081
  var iteratorMethod = getIteratorMethod(O);
43082
  var i, length, result, step, iterator, next;
43083
  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {
43084
    iterator = getIterator(O, iteratorMethod);
43085
    next = iterator.next;
43086
    O = [];
43087
    while (!(step = call(next, iterator)).done) {
43088
      O.push(step.value);
43089
    }
43090
  }
43091
  if (mapping && argumentsLength > 2) {
43092
    mapfn = bind(mapfn, arguments[2]);
43093
  }
43094
  length = lengthOfArrayLike(O);
43095
  result = new (aTypedArrayConstructor(C))(length);
43096
  for (i = 0; length > i; i++) {
43097
    result[i] = mapping ? mapfn(O[i], i) : O[i];
43098
  }
43099
  return result;
43100
};
43101
43102
43103
/***/ }),
43104
43105
/***/ 6304:
43106
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43107
43108
var ArrayBufferViewCore = __webpack_require__(2094);
43109
var speciesConstructor = __webpack_require__(6707);
43110
43111
var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;
43112
var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;
43113
43114
// a part of `TypedArraySpeciesCreate` abstract operation
43115
// https://tc39.es/ecma262/#typedarray-species-create
43116
module.exports = function (originalArray) {
43117
  return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));
43118
};
43119
43120
43121
/***/ }),
43122
43123
/***/ 9711:
43124
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43125
43126
var uncurryThis = __webpack_require__(1702);
43127
43128
var id = 0;
43129
var postfix = Math.random();
43130
var toString = uncurryThis(1.0.toString);
43131
43132
module.exports = function (key) {
43133
  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
43134
};
43135
43136
43137
/***/ }),
43138
43139
/***/ 3307:
43140
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43141
43142
/* eslint-disable es/no-symbol -- required for testing */
43143
var NATIVE_SYMBOL = __webpack_require__(133);
43144
43145
module.exports = NATIVE_SYMBOL
43146
  && !Symbol.sham
43147
  && typeof Symbol.iterator == 'symbol';
43148
43149
43150
/***/ }),
43151
43152
/***/ 6061:
43153
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
43154
43155
var wellKnownSymbol = __webpack_require__(5112);
43156
43157
exports.f = wellKnownSymbol;
43158
43159
43160
/***/ }),
43161
43162
/***/ 5112:
43163
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43164
43165
var global = __webpack_require__(7854);
43166
var shared = __webpack_require__(2309);
43167
var hasOwn = __webpack_require__(2597);
43168
var uid = __webpack_require__(9711);
43169
var NATIVE_SYMBOL = __webpack_require__(133);
43170
var USE_SYMBOL_AS_UID = __webpack_require__(3307);
43171
43172
var WellKnownSymbolsStore = shared('wks');
43173
var Symbol = global.Symbol;
43174
var symbolFor = Symbol && Symbol['for'];
43175
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
43176
43177
module.exports = function (name) {
43178
  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
43179
    var description = 'Symbol.' + name;
43180
    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {
43181
      WellKnownSymbolsStore[name] = Symbol[name];
43182
    } else if (USE_SYMBOL_AS_UID && symbolFor) {
43183
      WellKnownSymbolsStore[name] = symbolFor(description);
43184
    } else {
43185
      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);
43186
    }
43187
  } return WellKnownSymbolsStore[name];
43188
};
43189
43190
43191
/***/ }),
43192
43193
/***/ 1361:
43194
/***/ (function(module) {
43195
43196
// a string of all valid unicode whitespaces
43197
module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' +
43198
  '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
43199
43200
43201
/***/ }),
43202
43203
/***/ 9170:
43204
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43205
43206
"use strict";
43207
43208
var $ = __webpack_require__(2109);
43209
var global = __webpack_require__(7854);
43210
var isPrototypeOf = __webpack_require__(7976);
43211
var getPrototypeOf = __webpack_require__(9518);
43212
var setPrototypeOf = __webpack_require__(7674);
43213
var copyConstructorProperties = __webpack_require__(9920);
43214
var create = __webpack_require__(30);
43215
var createNonEnumerableProperty = __webpack_require__(8880);
43216
var createPropertyDescriptor = __webpack_require__(9114);
43217
var clearErrorStack = __webpack_require__(7741);
43218
var installErrorCause = __webpack_require__(8340);
43219
var iterate = __webpack_require__(408);
43220
var normalizeStringArgument = __webpack_require__(6277);
43221
var ERROR_STACK_INSTALLABLE = __webpack_require__(2914);
43222
43223
var Error = global.Error;
43224
var push = [].push;
43225
43226
var $AggregateError = function AggregateError(errors, message /* , options */) {
43227
  var that = isPrototypeOf(AggregateErrorPrototype, this) ? this : create(AggregateErrorPrototype);
43228
  var options = arguments.length > 2 ? arguments[2] : undefined;
43229
  if (setPrototypeOf) {
43230
    that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));
43231
  }
43232
  createNonEnumerableProperty(that, 'message', normalizeStringArgument(message, ''));
43233
  if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));
43234
  installErrorCause(that, options);
43235
  var errorsArray = [];
43236
  iterate(errors, push, { that: errorsArray });
43237
  createNonEnumerableProperty(that, 'errors', errorsArray);
43238
  return that;
43239
};
43240
43241
if (setPrototypeOf) setPrototypeOf($AggregateError, Error);
43242
else copyConstructorProperties($AggregateError, Error);
43243
43244
var AggregateErrorPrototype = $AggregateError.prototype = create(Error.prototype, {
43245
  constructor: createPropertyDescriptor(1, $AggregateError),
43246
  message: createPropertyDescriptor(1, ''),
43247
  name: createPropertyDescriptor(1, 'AggregateError')
43248
});
43249
43250
// `AggregateError` constructor
43251
// https://tc39.es/ecma262/#sec-aggregate-error-constructor
43252
$({ global: true }, {
43253
  AggregateError: $AggregateError
43254
});
43255
43256
43257
/***/ }),
43258
43259
/***/ 2222:
43260
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43261
43262
"use strict";
43263
43264
var $ = __webpack_require__(2109);
43265
var global = __webpack_require__(7854);
43266
var fails = __webpack_require__(7293);
43267
var isArray = __webpack_require__(3157);
43268
var isObject = __webpack_require__(111);
43269
var toObject = __webpack_require__(7908);
43270
var lengthOfArrayLike = __webpack_require__(6244);
43271
var createProperty = __webpack_require__(6135);
43272
var arraySpeciesCreate = __webpack_require__(5417);
43273
var arrayMethodHasSpeciesSupport = __webpack_require__(1194);
43274
var wellKnownSymbol = __webpack_require__(5112);
43275
var V8_VERSION = __webpack_require__(7392);
43276
43277
var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
43278
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
43279
var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
43280
var TypeError = global.TypeError;
43281
43282
// We can't use this feature detection in V8 since it causes
43283
// deoptimization and serious performance degradation
43284
// https://github.com/zloirock/core-js/issues/679
43285
var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {
43286
  var array = [];
43287
  array[IS_CONCAT_SPREADABLE] = false;
43288
  return array.concat()[0] !== array;
43289
});
43290
43291
var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
43292
43293
var isConcatSpreadable = function (O) {
43294
  if (!isObject(O)) return false;
43295
  var spreadable = O[IS_CONCAT_SPREADABLE];
43296
  return spreadable !== undefined ? !!spreadable : isArray(O);
43297
};
43298
43299
var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
43300
43301
// `Array.prototype.concat` method
43302
// https://tc39.es/ecma262/#sec-array.prototype.concat
43303
// with adding support of @@isConcatSpreadable and @@species
43304
$({ target: 'Array', proto: true, forced: FORCED }, {
43305
  // eslint-disable-next-line no-unused-vars -- required for `.length`
43306
  concat: function concat(arg) {
43307
    var O = toObject(this);
43308
    var A = arraySpeciesCreate(O, 0);
43309
    var n = 0;
43310
    var i, k, length, len, E;
43311
    for (i = -1, length = arguments.length; i < length; i++) {
43312
      E = i === -1 ? O : arguments[i];
43313
      if (isConcatSpreadable(E)) {
43314
        len = lengthOfArrayLike(E);
43315
        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
43316
        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
43317
      } else {
43318
        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
43319
        createProperty(A, n++, E);
43320
      }
43321
    }
43322
    A.length = n;
43323
    return A;
43324
  }
43325
});
43326
43327
43328
/***/ }),
43329
43330
/***/ 545:
43331
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43332
43333
var $ = __webpack_require__(2109);
43334
var copyWithin = __webpack_require__(1048);
43335
var addToUnscopables = __webpack_require__(1223);
43336
43337
// `Array.prototype.copyWithin` method
43338
// https://tc39.es/ecma262/#sec-array.prototype.copywithin
43339
$({ target: 'Array', proto: true }, {
43340
  copyWithin: copyWithin
43341
});
43342
43343
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
43344
addToUnscopables('copyWithin');
43345
43346
43347
/***/ }),
43348
43349
/***/ 3290:
43350
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43351
43352
var $ = __webpack_require__(2109);
43353
var fill = __webpack_require__(1285);
43354
var addToUnscopables = __webpack_require__(1223);
43355
43356
// `Array.prototype.fill` method
43357
// https://tc39.es/ecma262/#sec-array.prototype.fill
43358
$({ target: 'Array', proto: true }, {
43359
  fill: fill
43360
});
43361
43362
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
43363
addToUnscopables('fill');
43364
43365
43366
/***/ }),
43367
43368
/***/ 7327:
43369
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43370
43371
"use strict";
43372
43373
var $ = __webpack_require__(2109);
43374
var $filter = (__webpack_require__(2092).filter);
43375
var arrayMethodHasSpeciesSupport = __webpack_require__(1194);
43376
43377
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
43378
43379
// `Array.prototype.filter` method
43380
// https://tc39.es/ecma262/#sec-array.prototype.filter
43381
// with adding support of @@species
43382
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
43383
  filter: function filter(callbackfn /* , thisArg */) {
43384
    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
43385
  }
43386
});
43387
43388
43389
/***/ }),
43390
43391
/***/ 1038:
43392
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43393
43394
var $ = __webpack_require__(2109);
43395
var from = __webpack_require__(8457);
43396
var checkCorrectnessOfIteration = __webpack_require__(7072);
43397
43398
var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
43399
  // eslint-disable-next-line es/no-array-from -- required for testing
43400
  Array.from(iterable);
43401
});
43402
43403
// `Array.from` method
43404
// https://tc39.es/ecma262/#sec-array.from
43405
$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {
43406
  from: from
43407
});
43408
43409
43410
/***/ }),
43411
43412
/***/ 6699:
43413
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43414
43415
"use strict";
43416
43417
var $ = __webpack_require__(2109);
43418
var $includes = (__webpack_require__(1318).includes);
43419
var addToUnscopables = __webpack_require__(1223);
43420
43421
// `Array.prototype.includes` method
43422
// https://tc39.es/ecma262/#sec-array.prototype.includes
43423
$({ target: 'Array', proto: true }, {
43424
  includes: function includes(el /* , fromIndex = 0 */) {
43425
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
43426
  }
43427
});
43428
43429
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
43430
addToUnscopables('includes');
43431
43432
43433
/***/ }),
43434
43435
/***/ 6992:
43436
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
43437
43438
"use strict";
43439
43440
var toIndexedObject = __webpack_require__(5656);
43441
var addToUnscopables = __webpack_require__(1223);
43442
var Iterators = __webpack_require__(7497);
43443
var InternalStateModule = __webpack_require__(9909);
43444
var defineIterator = __webpack_require__(654);
43445
43446
var ARRAY_ITERATOR = 'Array Iterator';
43447
var setInternalState = InternalStateModule.set;
43448
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
43449
43450
// `Array.prototype.entries` method
43451
// https://tc39.es/ecma262/#sec-array.prototype.entries
43452
// `Array.prototype.keys` method
43453
// https://tc39.es/ecma262/#sec-array.prototype.keys
43454
// `Array.prototype.values` method
43455
// https://tc39.es/ecma262/#sec-array.prototype.values
43456
// `Array.prototype[@@iterator]` method
43457
// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
43458
// `CreateArrayIterator` internal method
43459
// https://tc39.es/ecma262/#sec-createarrayiterator
43460
module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
43461
  setInternalState(this, {
43462
    type: ARRAY_ITERATOR,
43463
    target: toIndexedObject(iterated), // target
43464
    index: 0,                          // next index
43465
    kind: kind                         // kind
43466
  });
43467
// `%ArrayIteratorPrototype%.next` method
43468
// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
43469
}, function () {
43470
  var state = getInternalState(this);
43471
  var target = state.target;
43472
  var kind = state.kind;
43473
  var index = state.index++;
43474
  if (!target || index >= target.length) {
43475
    state.target = undefined;
43476
    return { value: undefined, done: true };
43477
  }
43478
  if (kind == 'keys') return { value: index, done: false };
43479
  if (kind == 'values') return { value: target[index], done: false };
43480
  return { value: [index, target[index]], done: false };
43481
}, 'values');
43482
43483
// argumentsList[@@iterator] is %ArrayProto_values%
43484
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
43485
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
43486
Iterators.Arguments = Iterators.Array;
43487
43488
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
43489
addToUnscopables('keys');
43490
addToUnscopables('values');
43491
addToUnscopables('entries');
43492
43493
43494
/***/ }),
43495
43496
/***/ 9600:
43497
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43498
43499
"use strict";
43500
43501
var $ = __webpack_require__(2109);
43502
var uncurryThis = __webpack_require__(1702);
43503
var IndexedObject = __webpack_require__(8361);
43504
var toIndexedObject = __webpack_require__(5656);
43505
var arrayMethodIsStrict = __webpack_require__(9341);
43506
43507
var un$Join = uncurryThis([].join);
43508
43509
var ES3_STRINGS = IndexedObject != Object;
43510
var STRICT_METHOD = arrayMethodIsStrict('join', ',');
43511
43512
// `Array.prototype.join` method
43513
// https://tc39.es/ecma262/#sec-array.prototype.join
43514
$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {
43515
  join: function join(separator) {
43516
    return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);
43517
  }
43518
});
43519
43520
43521
/***/ }),
43522
43523
/***/ 1249:
43524
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43525
43526
"use strict";
43527
43528
var $ = __webpack_require__(2109);
43529
var $map = (__webpack_require__(2092).map);
43530
var arrayMethodHasSpeciesSupport = __webpack_require__(1194);
43531
43532
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
43533
43534
// `Array.prototype.map` method
43535
// https://tc39.es/ecma262/#sec-array.prototype.map
43536
// with adding support of @@species
43537
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
43538
  map: function map(callbackfn /* , thisArg */) {
43539
    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
43540
  }
43541
});
43542
43543
43544
/***/ }),
43545
43546
/***/ 7042:
43547
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43548
43549
"use strict";
43550
43551
var $ = __webpack_require__(2109);
43552
var global = __webpack_require__(7854);
43553
var isArray = __webpack_require__(3157);
43554
var isConstructor = __webpack_require__(4411);
43555
var isObject = __webpack_require__(111);
43556
var toAbsoluteIndex = __webpack_require__(1400);
43557
var lengthOfArrayLike = __webpack_require__(6244);
43558
var toIndexedObject = __webpack_require__(5656);
43559
var createProperty = __webpack_require__(6135);
43560
var wellKnownSymbol = __webpack_require__(5112);
43561
var arrayMethodHasSpeciesSupport = __webpack_require__(1194);
43562
var un$Slice = __webpack_require__(206);
43563
43564
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
43565
43566
var SPECIES = wellKnownSymbol('species');
43567
var Array = global.Array;
43568
var max = Math.max;
43569
43570
// `Array.prototype.slice` method
43571
// https://tc39.es/ecma262/#sec-array.prototype.slice
43572
// fallback for not array-like ES3 strings and DOM objects
43573
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
43574
  slice: function slice(start, end) {
43575
    var O = toIndexedObject(this);
43576
    var length = lengthOfArrayLike(O);
43577
    var k = toAbsoluteIndex(start, length);
43578
    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
43579
    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
43580
    var Constructor, result, n;
43581
    if (isArray(O)) {
43582
      Constructor = O.constructor;
43583
      // cross-realm fallback
43584
      if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {
43585
        Constructor = undefined;
43586
      } else if (isObject(Constructor)) {
43587
        Constructor = Constructor[SPECIES];
43588
        if (Constructor === null) Constructor = undefined;
43589
      }
43590
      if (Constructor === Array || Constructor === undefined) {
43591
        return un$Slice(O, k, fin);
43592
      }
43593
    }
43594
    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
43595
    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
43596
    result.length = n;
43597
    return result;
43598
  }
43599
});
43600
43601
43602
/***/ }),
43603
43604
/***/ 2707:
43605
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43606
43607
"use strict";
43608
43609
var $ = __webpack_require__(2109);
43610
var uncurryThis = __webpack_require__(1702);
43611
var aCallable = __webpack_require__(9662);
43612
var toObject = __webpack_require__(7908);
43613
var lengthOfArrayLike = __webpack_require__(6244);
43614
var toString = __webpack_require__(1340);
43615
var fails = __webpack_require__(7293);
43616
var internalSort = __webpack_require__(4362);
43617
var arrayMethodIsStrict = __webpack_require__(9341);
43618
var FF = __webpack_require__(8886);
43619
var IE_OR_EDGE = __webpack_require__(256);
43620
var V8 = __webpack_require__(7392);
43621
var WEBKIT = __webpack_require__(8008);
43622
43623
var test = [];
43624
var un$Sort = uncurryThis(test.sort);
43625
var push = uncurryThis(test.push);
43626
43627
// IE8-
43628
var FAILS_ON_UNDEFINED = fails(function () {
43629
  test.sort(undefined);
43630
});
43631
// V8 bug
43632
var FAILS_ON_NULL = fails(function () {
43633
  test.sort(null);
43634
});
43635
// Old WebKit
43636
var STRICT_METHOD = arrayMethodIsStrict('sort');
43637
43638
var STABLE_SORT = !fails(function () {
43639
  // feature detection can be too slow, so check engines versions
43640
  if (V8) return V8 < 70;
43641
  if (FF && FF > 3) return;
43642
  if (IE_OR_EDGE) return true;
43643
  if (WEBKIT) return WEBKIT < 603;
43644
43645
  var result = '';
43646
  var code, chr, value, index;
43647
43648
  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)
43649
  for (code = 65; code < 76; code++) {
43650
    chr = String.fromCharCode(code);
43651
43652
    switch (code) {
43653
      case 66: case 69: case 70: case 72: value = 3; break;
43654
      case 68: case 71: value = 4; break;
43655
      default: value = 2;
43656
    }
43657
43658
    for (index = 0; index < 47; index++) {
43659
      test.push({ k: chr + index, v: value });
43660
    }
43661
  }
43662
43663
  test.sort(function (a, b) { return b.v - a.v; });
43664
43665
  for (index = 0; index < test.length; index++) {
43666
    chr = test[index].k.charAt(0);
43667
    if (result.charAt(result.length - 1) !== chr) result += chr;
43668
  }
43669
43670
  return result !== 'DGBEFHACIJK';
43671
});
43672
43673
var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;
43674
43675
var getSortCompare = function (comparefn) {
43676
  return function (x, y) {
43677
    if (y === undefined) return -1;
43678
    if (x === undefined) return 1;
43679
    if (comparefn !== undefined) return +comparefn(x, y) || 0;
43680
    return toString(x) > toString(y) ? 1 : -1;
43681
  };
43682
};
43683
43684
// `Array.prototype.sort` method
43685
// https://tc39.es/ecma262/#sec-array.prototype.sort
43686
$({ target: 'Array', proto: true, forced: FORCED }, {
43687
  sort: function sort(comparefn) {
43688
    if (comparefn !== undefined) aCallable(comparefn);
43689
43690
    var array = toObject(this);
43691
43692
    if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);
43693
43694
    var items = [];
43695
    var arrayLength = lengthOfArrayLike(array);
43696
    var itemsLength, index;
43697
43698
    for (index = 0; index < arrayLength; index++) {
43699
      if (index in array) push(items, array[index]);
43700
    }
43701
43702
    internalSort(items, getSortCompare(comparefn));
43703
43704
    itemsLength = items.length;
43705
    index = 0;
43706
43707
    while (index < itemsLength) array[index] = items[index++];
43708
    while (index < arrayLength) delete array[index++];
43709
43710
    return array;
43711
  }
43712
});
43713
43714
43715
/***/ }),
43716
43717
/***/ 561:
43718
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43719
43720
"use strict";
43721
43722
var $ = __webpack_require__(2109);
43723
var global = __webpack_require__(7854);
43724
var toAbsoluteIndex = __webpack_require__(1400);
43725
var toIntegerOrInfinity = __webpack_require__(9303);
43726
var lengthOfArrayLike = __webpack_require__(6244);
43727
var toObject = __webpack_require__(7908);
43728
var arraySpeciesCreate = __webpack_require__(5417);
43729
var createProperty = __webpack_require__(6135);
43730
var arrayMethodHasSpeciesSupport = __webpack_require__(1194);
43731
43732
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
43733
43734
var TypeError = global.TypeError;
43735
var max = Math.max;
43736
var min = Math.min;
43737
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
43738
var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
43739
43740
// `Array.prototype.splice` method
43741
// https://tc39.es/ecma262/#sec-array.prototype.splice
43742
// with adding support of @@species
43743
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
43744
  splice: function splice(start, deleteCount /* , ...items */) {
43745
    var O = toObject(this);
43746
    var len = lengthOfArrayLike(O);
43747
    var actualStart = toAbsoluteIndex(start, len);
43748
    var argumentsLength = arguments.length;
43749
    var insertCount, actualDeleteCount, A, k, from, to;
43750
    if (argumentsLength === 0) {
43751
      insertCount = actualDeleteCount = 0;
43752
    } else if (argumentsLength === 1) {
43753
      insertCount = 0;
43754
      actualDeleteCount = len - actualStart;
43755
    } else {
43756
      insertCount = argumentsLength - 2;
43757
      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);
43758
    }
43759
    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {
43760
      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
43761
    }
43762
    A = arraySpeciesCreate(O, actualDeleteCount);
43763
    for (k = 0; k < actualDeleteCount; k++) {
43764
      from = actualStart + k;
43765
      if (from in O) createProperty(A, k, O[from]);
43766
    }
43767
    A.length = actualDeleteCount;
43768
    if (insertCount < actualDeleteCount) {
43769
      for (k = actualStart; k < len - actualDeleteCount; k++) {
43770
        from = k + actualDeleteCount;
43771
        to = k + insertCount;
43772
        if (from in O) O[to] = O[from];
43773
        else delete O[to];
43774
      }
43775
      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
43776
    } else if (insertCount > actualDeleteCount) {
43777
      for (k = len - actualDeleteCount; k > actualStart; k--) {
43778
        from = k + actualDeleteCount - 1;
43779
        to = k + insertCount - 1;
43780
        if (from in O) O[to] = O[from];
43781
        else delete O[to];
43782
      }
43783
    }
43784
    for (k = 0; k < insertCount; k++) {
43785
      O[k + actualStart] = arguments[k + 2];
43786
    }
43787
    O.length = len - actualDeleteCount + insertCount;
43788
    return A;
43789
  }
43790
});
43791
43792
43793
/***/ }),
43794
43795
/***/ 6078:
43796
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43797
43798
var hasOwn = __webpack_require__(2597);
43799
var redefine = __webpack_require__(1320);
43800
var dateToPrimitive = __webpack_require__(8709);
43801
var wellKnownSymbol = __webpack_require__(5112);
43802
43803
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
43804
var DatePrototype = Date.prototype;
43805
43806
// `Date.prototype[@@toPrimitive]` method
43807
// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
43808
if (!hasOwn(DatePrototype, TO_PRIMITIVE)) {
43809
  redefine(DatePrototype, TO_PRIMITIVE, dateToPrimitive);
43810
}
43811
43812
43813
/***/ }),
43814
43815
/***/ 8309:
43816
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43817
43818
var DESCRIPTORS = __webpack_require__(9781);
43819
var FUNCTION_NAME_EXISTS = (__webpack_require__(6530).EXISTS);
43820
var uncurryThis = __webpack_require__(1702);
43821
var defineProperty = (__webpack_require__(3070).f);
43822
43823
var FunctionPrototype = Function.prototype;
43824
var functionToString = uncurryThis(FunctionPrototype.toString);
43825
var nameRE = /^\s*function ([^ (]*)/;
43826
var regExpExec = uncurryThis(nameRE.exec);
43827
var NAME = 'name';
43828
43829
// Function instances `.name` property
43830
// https://tc39.es/ecma262/#sec-function-instances-name
43831
if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {
43832
  defineProperty(FunctionPrototype, NAME, {
43833
    configurable: true,
43834
    get: function () {
43835
      try {
43836
        return regExpExec(nameRE, functionToString(this))[1];
43837
      } catch (error) {
43838
        return '';
43839
      }
43840
    }
43841
  });
43842
}
43843
43844
43845
/***/ }),
43846
43847
/***/ 5837:
43848
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43849
43850
var $ = __webpack_require__(2109);
43851
var global = __webpack_require__(7854);
43852
43853
// `globalThis` object
43854
// https://tc39.es/ecma262/#sec-globalthis
43855
$({ global: true }, {
43856
  globalThis: global
43857
});
43858
43859
43860
/***/ }),
43861
43862
/***/ 3706:
43863
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43864
43865
var global = __webpack_require__(7854);
43866
var setToStringTag = __webpack_require__(8003);
43867
43868
// JSON[@@toStringTag] property
43869
// https://tc39.es/ecma262/#sec-json-@@tostringtag
43870
setToStringTag(global.JSON, 'JSON', true);
43871
43872
43873
/***/ }),
43874
43875
/***/ 1532:
43876
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43877
43878
"use strict";
43879
43880
var collection = __webpack_require__(7710);
43881
var collectionStrong = __webpack_require__(5631);
43882
43883
// `Map` constructor
43884
// https://tc39.es/ecma262/#sec-map-objects
43885
collection('Map', function (init) {
43886
  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };
43887
}, collectionStrong);
43888
43889
43890
/***/ }),
43891
43892
/***/ 2703:
43893
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43894
43895
var setToStringTag = __webpack_require__(8003);
43896
43897
// Math[@@toStringTag] property
43898
// https://tc39.es/ecma262/#sec-math-@@tostringtag
43899
setToStringTag(Math, 'Math', true);
43900
43901
43902
/***/ }),
43903
43904
/***/ 9653:
43905
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
43906
43907
"use strict";
43908
43909
var DESCRIPTORS = __webpack_require__(9781);
43910
var global = __webpack_require__(7854);
43911
var uncurryThis = __webpack_require__(1702);
43912
var isForced = __webpack_require__(4705);
43913
var redefine = __webpack_require__(1320);
43914
var hasOwn = __webpack_require__(2597);
43915
var inheritIfRequired = __webpack_require__(9587);
43916
var isPrototypeOf = __webpack_require__(7976);
43917
var isSymbol = __webpack_require__(2190);
43918
var toPrimitive = __webpack_require__(7593);
43919
var fails = __webpack_require__(7293);
43920
var getOwnPropertyNames = (__webpack_require__(8006).f);
43921
var getOwnPropertyDescriptor = (__webpack_require__(1236).f);
43922
var defineProperty = (__webpack_require__(3070).f);
43923
var thisNumberValue = __webpack_require__(863);
43924
var trim = (__webpack_require__(3111).trim);
43925
43926
var NUMBER = 'Number';
43927
var NativeNumber = global[NUMBER];
43928
var NumberPrototype = NativeNumber.prototype;
43929
var TypeError = global.TypeError;
43930
var arraySlice = uncurryThis(''.slice);
43931
var charCodeAt = uncurryThis(''.charCodeAt);
43932
43933
// `ToNumeric` abstract operation
43934
// https://tc39.es/ecma262/#sec-tonumeric
43935
var toNumeric = function (value) {
43936
  var primValue = toPrimitive(value, 'number');
43937
  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);
43938
};
43939
43940
// `ToNumber` abstract operation
43941
// https://tc39.es/ecma262/#sec-tonumber
43942
var toNumber = function (argument) {
43943
  var it = toPrimitive(argument, 'number');
43944
  var first, third, radix, maxCode, digits, length, index, code;
43945
  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');
43946
  if (typeof it == 'string' && it.length > 2) {
43947
    it = trim(it);
43948
    first = charCodeAt(it, 0);
43949
    if (first === 43 || first === 45) {
43950
      third = charCodeAt(it, 2);
43951
      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
43952
    } else if (first === 48) {
43953
      switch (charCodeAt(it, 1)) {
43954
        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i
43955
        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i
43956
        default: return +it;
43957
      }
43958
      digits = arraySlice(it, 2);
43959
      length = digits.length;
43960
      for (index = 0; index < length; index++) {
43961
        code = charCodeAt(digits, index);
43962
        // parseInt parses a string to a first unavailable symbol
43963
        // but ToNumber should return NaN if a string contains unavailable symbols
43964
        if (code < 48 || code > maxCode) return NaN;
43965
      } return parseInt(digits, radix);
43966
    }
43967
  } return +it;
43968
};
43969
43970
// `Number` constructor
43971
// https://tc39.es/ecma262/#sec-number-constructor
43972
if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
43973
  var NumberWrapper = function Number(value) {
43974
    var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
43975
    var dummy = this;
43976
    // check on 1..constructor(foo) case
43977
    return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })
43978
      ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;
43979
  };
43980
  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (
43981
    // ES3:
43982
    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
43983
    // ES2015 (in case, if modules with ES2015 Number statics required before):
43984
    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +
43985
    // ESNext
43986
    'fromString,range'
43987
  ).split(','), j = 0, key; keys.length > j; j++) {
43988
    if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {
43989
      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));
43990
    }
43991
  }
43992
  NumberWrapper.prototype = NumberPrototype;
43993
  NumberPrototype.constructor = NumberWrapper;
43994
  redefine(global, NUMBER, NumberWrapper);
43995
}
43996
43997
43998
/***/ }),
43999
44000
/***/ 3299:
44001
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44002
44003
var $ = __webpack_require__(2109);
44004
44005
// `Number.EPSILON` constant
44006
// https://tc39.es/ecma262/#sec-number.epsilon
44007
$({ target: 'Number', stat: true }, {
44008
  EPSILON: Math.pow(2, -52)
44009
});
44010
44011
44012
/***/ }),
44013
44014
/***/ 5192:
44015
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44016
44017
var $ = __webpack_require__(2109);
44018
var numberIsFinite = __webpack_require__(7023);
44019
44020
// `Number.isFinite` method
44021
// https://tc39.es/ecma262/#sec-number.isfinite
44022
$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });
44023
44024
44025
/***/ }),
44026
44027
/***/ 3161:
44028
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44029
44030
var $ = __webpack_require__(2109);
44031
var isIntegralNumber = __webpack_require__(5988);
44032
44033
// `Number.isInteger` method
44034
// https://tc39.es/ecma262/#sec-number.isinteger
44035
$({ target: 'Number', stat: true }, {
44036
  isInteger: isIntegralNumber
44037
});
44038
44039
44040
/***/ }),
44041
44042
/***/ 6977:
44043
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44044
44045
"use strict";
44046
44047
var $ = __webpack_require__(2109);
44048
var global = __webpack_require__(7854);
44049
var uncurryThis = __webpack_require__(1702);
44050
var toIntegerOrInfinity = __webpack_require__(9303);
44051
var thisNumberValue = __webpack_require__(863);
44052
var $repeat = __webpack_require__(8415);
44053
var fails = __webpack_require__(7293);
44054
44055
var RangeError = global.RangeError;
44056
var String = global.String;
44057
var floor = Math.floor;
44058
var repeat = uncurryThis($repeat);
44059
var stringSlice = uncurryThis(''.slice);
44060
var un$ToFixed = uncurryThis(1.0.toFixed);
44061
44062
var pow = function (x, n, acc) {
44063
  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
44064
};
44065
44066
var log = function (x) {
44067
  var n = 0;
44068
  var x2 = x;
44069
  while (x2 >= 4096) {
44070
    n += 12;
44071
    x2 /= 4096;
44072
  }
44073
  while (x2 >= 2) {
44074
    n += 1;
44075
    x2 /= 2;
44076
  } return n;
44077
};
44078
44079
var multiply = function (data, n, c) {
44080
  var index = -1;
44081
  var c2 = c;
44082
  while (++index < 6) {
44083
    c2 += n * data[index];
44084
    data[index] = c2 % 1e7;
44085
    c2 = floor(c2 / 1e7);
44086
  }
44087
};
44088
44089
var divide = function (data, n) {
44090
  var index = 6;
44091
  var c = 0;
44092
  while (--index >= 0) {
44093
    c += data[index];
44094
    data[index] = floor(c / n);
44095
    c = (c % n) * 1e7;
44096
  }
44097
};
44098
44099
var dataToString = function (data) {
44100
  var index = 6;
44101
  var s = '';
44102
  while (--index >= 0) {
44103
    if (s !== '' || index === 0 || data[index] !== 0) {
44104
      var t = String(data[index]);
44105
      s = s === '' ? t : s + repeat('0', 7 - t.length) + t;
44106
    }
44107
  } return s;
44108
};
44109
44110
var FORCED = fails(function () {
44111
  return un$ToFixed(0.00008, 3) !== '0.000' ||
44112
    un$ToFixed(0.9, 0) !== '1' ||
44113
    un$ToFixed(1.255, 2) !== '1.25' ||
44114
    un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';
44115
}) || !fails(function () {
44116
  // V8 ~ Android 4.3-
44117
  un$ToFixed({});
44118
});
44119
44120
// `Number.prototype.toFixed` method
44121
// https://tc39.es/ecma262/#sec-number.prototype.tofixed
44122
$({ target: 'Number', proto: true, forced: FORCED }, {
44123
  toFixed: function toFixed(fractionDigits) {
44124
    var number = thisNumberValue(this);
44125
    var fractDigits = toIntegerOrInfinity(fractionDigits);
44126
    var data = [0, 0, 0, 0, 0, 0];
44127
    var sign = '';
44128
    var result = '0';
44129
    var e, z, j, k;
44130
44131
    if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');
44132
    // eslint-disable-next-line no-self-compare -- NaN check
44133
    if (number != number) return 'NaN';
44134
    if (number <= -1e21 || number >= 1e21) return String(number);
44135
    if (number < 0) {
44136
      sign = '-';
44137
      number = -number;
44138
    }
44139
    if (number > 1e-21) {
44140
      e = log(number * pow(2, 69, 1)) - 69;
44141
      z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);
44142
      z *= 0x10000000000000;
44143
      e = 52 - e;
44144
      if (e > 0) {
44145
        multiply(data, 0, z);
44146
        j = fractDigits;
44147
        while (j >= 7) {
44148
          multiply(data, 1e7, 0);
44149
          j -= 7;
44150
        }
44151
        multiply(data, pow(10, j, 1), 0);
44152
        j = e - 1;
44153
        while (j >= 23) {
44154
          divide(data, 1 << 23);
44155
          j -= 23;
44156
        }
44157
        divide(data, 1 << j);
44158
        multiply(data, 1, 1);
44159
        divide(data, 2);
44160
        result = dataToString(data);
44161
      } else {
44162
        multiply(data, 0, z);
44163
        multiply(data, 1 << -e, 0);
44164
        result = dataToString(data) + repeat('0', fractDigits);
44165
      }
44166
    }
44167
    if (fractDigits > 0) {
44168
      k = result.length;
44169
      result = sign + (k <= fractDigits
44170
        ? '0.' + repeat('0', fractDigits - k) + result
44171
        : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));
44172
    } else {
44173
      result = sign + result;
44174
    } return result;
44175
  }
44176
});
44177
44178
44179
/***/ }),
44180
44181
/***/ 9601:
44182
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44183
44184
var $ = __webpack_require__(2109);
44185
var assign = __webpack_require__(1574);
44186
44187
// `Object.assign` method
44188
// https://tc39.es/ecma262/#sec-object.assign
44189
// eslint-disable-next-line es/no-object-assign -- required for testing
44190
$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {
44191
  assign: assign
44192
});
44193
44194
44195
/***/ }),
44196
44197
/***/ 3371:
44198
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44199
44200
var $ = __webpack_require__(2109);
44201
var FREEZING = __webpack_require__(6677);
44202
var fails = __webpack_require__(7293);
44203
var isObject = __webpack_require__(111);
44204
var onFreeze = (__webpack_require__(2423).onFreeze);
44205
44206
// eslint-disable-next-line es/no-object-freeze -- safe
44207
var $freeze = Object.freeze;
44208
var FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });
44209
44210
// `Object.freeze` method
44211
// https://tc39.es/ecma262/#sec-object.freeze
44212
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {
44213
  freeze: function freeze(it) {
44214
    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;
44215
  }
44216
});
44217
44218
44219
/***/ }),
44220
44221
/***/ 5003:
44222
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44223
44224
var $ = __webpack_require__(2109);
44225
var fails = __webpack_require__(7293);
44226
var toIndexedObject = __webpack_require__(5656);
44227
var nativeGetOwnPropertyDescriptor = (__webpack_require__(1236).f);
44228
var DESCRIPTORS = __webpack_require__(9781);
44229
44230
var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });
44231
var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;
44232
44233
// `Object.getOwnPropertyDescriptor` method
44234
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
44235
$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {
44236
  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {
44237
    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);
44238
  }
44239
});
44240
44241
44242
/***/ }),
44243
44244
/***/ 9337:
44245
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44246
44247
var $ = __webpack_require__(2109);
44248
var DESCRIPTORS = __webpack_require__(9781);
44249
var ownKeys = __webpack_require__(3887);
44250
var toIndexedObject = __webpack_require__(5656);
44251
var getOwnPropertyDescriptorModule = __webpack_require__(1236);
44252
var createProperty = __webpack_require__(6135);
44253
44254
// `Object.getOwnPropertyDescriptors` method
44255
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
44256
$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
44257
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
44258
    var O = toIndexedObject(object);
44259
    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
44260
    var keys = ownKeys(O);
44261
    var result = {};
44262
    var index = 0;
44263
    var key, descriptor;
44264
    while (keys.length > index) {
44265
      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);
44266
      if (descriptor !== undefined) createProperty(result, key, descriptor);
44267
    }
44268
    return result;
44269
  }
44270
});
44271
44272
44273
/***/ }),
44274
44275
/***/ 489:
44276
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44277
44278
var $ = __webpack_require__(2109);
44279
var fails = __webpack_require__(7293);
44280
var toObject = __webpack_require__(7908);
44281
var nativeGetPrototypeOf = __webpack_require__(9518);
44282
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);
44283
44284
var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });
44285
44286
// `Object.getPrototypeOf` method
44287
// https://tc39.es/ecma262/#sec-object.getprototypeof
44288
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {
44289
  getPrototypeOf: function getPrototypeOf(it) {
44290
    return nativeGetPrototypeOf(toObject(it));
44291
  }
44292
});
44293
44294
44295
44296
/***/ }),
44297
44298
/***/ 7941:
44299
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44300
44301
var $ = __webpack_require__(2109);
44302
var toObject = __webpack_require__(7908);
44303
var nativeKeys = __webpack_require__(1956);
44304
var fails = __webpack_require__(7293);
44305
44306
var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });
44307
44308
// `Object.keys` method
44309
// https://tc39.es/ecma262/#sec-object.keys
44310
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
44311
  keys: function keys(it) {
44312
    return nativeKeys(toObject(it));
44313
  }
44314
});
44315
44316
44317
/***/ }),
44318
44319
/***/ 1539:
44320
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44321
44322
var TO_STRING_TAG_SUPPORT = __webpack_require__(1694);
44323
var redefine = __webpack_require__(1320);
44324
var toString = __webpack_require__(288);
44325
44326
// `Object.prototype.toString` method
44327
// https://tc39.es/ecma262/#sec-object.prototype.tostring
44328
if (!TO_STRING_TAG_SUPPORT) {
44329
  redefine(Object.prototype, 'toString', toString, { unsafe: true });
44330
}
44331
44332
44333
/***/ }),
44334
44335
/***/ 2479:
44336
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44337
44338
var $ = __webpack_require__(2109);
44339
var $values = (__webpack_require__(4699).values);
44340
44341
// `Object.values` method
44342
// https://tc39.es/ecma262/#sec-object.values
44343
$({ target: 'Object', stat: true }, {
44344
  values: function values(O) {
44345
    return $values(O);
44346
  }
44347
});
44348
44349
44350
/***/ }),
44351
44352
/***/ 7922:
44353
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44354
44355
"use strict";
44356
44357
var $ = __webpack_require__(2109);
44358
var call = __webpack_require__(6916);
44359
var aCallable = __webpack_require__(9662);
44360
var newPromiseCapabilityModule = __webpack_require__(8523);
44361
var perform = __webpack_require__(2534);
44362
var iterate = __webpack_require__(408);
44363
44364
// `Promise.allSettled` method
44365
// https://tc39.es/ecma262/#sec-promise.allsettled
44366
$({ target: 'Promise', stat: true }, {
44367
  allSettled: function allSettled(iterable) {
44368
    var C = this;
44369
    var capability = newPromiseCapabilityModule.f(C);
44370
    var resolve = capability.resolve;
44371
    var reject = capability.reject;
44372
    var result = perform(function () {
44373
      var promiseResolve = aCallable(C.resolve);
44374
      var values = [];
44375
      var counter = 0;
44376
      var remaining = 1;
44377
      iterate(iterable, function (promise) {
44378
        var index = counter++;
44379
        var alreadyCalled = false;
44380
        remaining++;
44381
        call(promiseResolve, C, promise).then(function (value) {
44382
          if (alreadyCalled) return;
44383
          alreadyCalled = true;
44384
          values[index] = { status: 'fulfilled', value: value };
44385
          --remaining || resolve(values);
44386
        }, function (error) {
44387
          if (alreadyCalled) return;
44388
          alreadyCalled = true;
44389
          values[index] = { status: 'rejected', reason: error };
44390
          --remaining || resolve(values);
44391
        });
44392
      });
44393
      --remaining || resolve(values);
44394
    });
44395
    if (result.error) reject(result.value);
44396
    return capability.promise;
44397
  }
44398
});
44399
44400
44401
/***/ }),
44402
44403
/***/ 4668:
44404
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44405
44406
"use strict";
44407
44408
var $ = __webpack_require__(2109);
44409
var aCallable = __webpack_require__(9662);
44410
var getBuiltIn = __webpack_require__(5005);
44411
var call = __webpack_require__(6916);
44412
var newPromiseCapabilityModule = __webpack_require__(8523);
44413
var perform = __webpack_require__(2534);
44414
var iterate = __webpack_require__(408);
44415
44416
var PROMISE_ANY_ERROR = 'No one promise resolved';
44417
44418
// `Promise.any` method
44419
// https://tc39.es/ecma262/#sec-promise.any
44420
$({ target: 'Promise', stat: true }, {
44421
  any: function any(iterable) {
44422
    var C = this;
44423
    var AggregateError = getBuiltIn('AggregateError');
44424
    var capability = newPromiseCapabilityModule.f(C);
44425
    var resolve = capability.resolve;
44426
    var reject = capability.reject;
44427
    var result = perform(function () {
44428
      var promiseResolve = aCallable(C.resolve);
44429
      var errors = [];
44430
      var counter = 0;
44431
      var remaining = 1;
44432
      var alreadyResolved = false;
44433
      iterate(iterable, function (promise) {
44434
        var index = counter++;
44435
        var alreadyRejected = false;
44436
        remaining++;
44437
        call(promiseResolve, C, promise).then(function (value) {
44438
          if (alreadyRejected || alreadyResolved) return;
44439
          alreadyResolved = true;
44440
          resolve(value);
44441
        }, function (error) {
44442
          if (alreadyRejected || alreadyResolved) return;
44443
          alreadyRejected = true;
44444
          errors[index] = error;
44445
          --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
44446
        });
44447
      });
44448
      --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
44449
    });
44450
    if (result.error) reject(result.value);
44451
    return capability.promise;
44452
  }
44453
});
44454
44455
44456
/***/ }),
44457
44458
/***/ 7727:
44459
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44460
44461
"use strict";
44462
44463
var $ = __webpack_require__(2109);
44464
var IS_PURE = __webpack_require__(1913);
44465
var NativePromise = __webpack_require__(3366);
44466
var fails = __webpack_require__(7293);
44467
var getBuiltIn = __webpack_require__(5005);
44468
var isCallable = __webpack_require__(614);
44469
var speciesConstructor = __webpack_require__(6707);
44470
var promiseResolve = __webpack_require__(9478);
44471
var redefine = __webpack_require__(1320);
44472
44473
// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
44474
var NON_GENERIC = !!NativePromise && fails(function () {
44475
  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });
44476
});
44477
44478
// `Promise.prototype.finally` method
44479
// https://tc39.es/ecma262/#sec-promise.prototype.finally
44480
$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
44481
  'finally': function (onFinally) {
44482
    var C = speciesConstructor(this, getBuiltIn('Promise'));
44483
    var isFunction = isCallable(onFinally);
44484
    return this.then(
44485
      isFunction ? function (x) {
44486
        return promiseResolve(C, onFinally()).then(function () { return x; });
44487
      } : onFinally,
44488
      isFunction ? function (e) {
44489
        return promiseResolve(C, onFinally()).then(function () { throw e; });
44490
      } : onFinally
44491
    );
44492
  }
44493
});
44494
44495
// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
44496
if (!IS_PURE && isCallable(NativePromise)) {
44497
  var method = getBuiltIn('Promise').prototype['finally'];
44498
  if (NativePromise.prototype['finally'] !== method) {
44499
    redefine(NativePromise.prototype, 'finally', method, { unsafe: true });
44500
  }
44501
}
44502
44503
44504
/***/ }),
44505
44506
/***/ 8674:
44507
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44508
44509
"use strict";
44510
44511
var $ = __webpack_require__(2109);
44512
var IS_PURE = __webpack_require__(1913);
44513
var global = __webpack_require__(7854);
44514
var getBuiltIn = __webpack_require__(5005);
44515
var call = __webpack_require__(6916);
44516
var NativePromise = __webpack_require__(3366);
44517
var redefine = __webpack_require__(1320);
44518
var redefineAll = __webpack_require__(2248);
44519
var setPrototypeOf = __webpack_require__(7674);
44520
var setToStringTag = __webpack_require__(8003);
44521
var setSpecies = __webpack_require__(6340);
44522
var aCallable = __webpack_require__(9662);
44523
var isCallable = __webpack_require__(614);
44524
var isObject = __webpack_require__(111);
44525
var anInstance = __webpack_require__(5787);
44526
var inspectSource = __webpack_require__(2788);
44527
var iterate = __webpack_require__(408);
44528
var checkCorrectnessOfIteration = __webpack_require__(7072);
44529
var speciesConstructor = __webpack_require__(6707);
44530
var task = (__webpack_require__(261).set);
44531
var microtask = __webpack_require__(5948);
44532
var promiseResolve = __webpack_require__(9478);
44533
var hostReportErrors = __webpack_require__(842);
44534
var newPromiseCapabilityModule = __webpack_require__(8523);
44535
var perform = __webpack_require__(2534);
44536
var InternalStateModule = __webpack_require__(9909);
44537
var isForced = __webpack_require__(4705);
44538
var wellKnownSymbol = __webpack_require__(5112);
44539
var IS_BROWSER = __webpack_require__(7871);
44540
var IS_NODE = __webpack_require__(5268);
44541
var V8_VERSION = __webpack_require__(7392);
44542
44543
var SPECIES = wellKnownSymbol('species');
44544
var PROMISE = 'Promise';
44545
44546
var getInternalState = InternalStateModule.get;
44547
var setInternalState = InternalStateModule.set;
44548
var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
44549
var NativePromisePrototype = NativePromise && NativePromise.prototype;
44550
var PromiseConstructor = NativePromise;
44551
var PromisePrototype = NativePromisePrototype;
44552
var TypeError = global.TypeError;
44553
var document = global.document;
44554
var process = global.process;
44555
var newPromiseCapability = newPromiseCapabilityModule.f;
44556
var newGenericPromiseCapability = newPromiseCapability;
44557
44558
var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
44559
var NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);
44560
var UNHANDLED_REJECTION = 'unhandledrejection';
44561
var REJECTION_HANDLED = 'rejectionhandled';
44562
var PENDING = 0;
44563
var FULFILLED = 1;
44564
var REJECTED = 2;
44565
var HANDLED = 1;
44566
var UNHANDLED = 2;
44567
var SUBCLASSING = false;
44568
44569
var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
44570
44571
var FORCED = isForced(PROMISE, function () {
44572
  var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);
44573
  var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);
44574
  // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
44575
  // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
44576
  // We can't detect it synchronously, so just check versions
44577
  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
44578
  // We need Promise#finally in the pure version for preventing prototype pollution
44579
  if (IS_PURE && !PromisePrototype['finally']) return true;
44580
  // We can't use @@species feature detection in V8 since it causes
44581
  // deoptimization and performance degradation
44582
  // https://github.com/zloirock/core-js/issues/679
44583
  if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;
44584
  // Detect correctness of subclassing with @@species support
44585
  var promise = new PromiseConstructor(function (resolve) { resolve(1); });
44586
  var FakePromise = function (exec) {
44587
    exec(function () { /* empty */ }, function () { /* empty */ });
44588
  };
44589
  var constructor = promise.constructor = {};
44590
  constructor[SPECIES] = FakePromise;
44591
  SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;
44592
  if (!SUBCLASSING) return true;
44593
  // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
44594
  return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;
44595
});
44596
44597
var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {
44598
  PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });
44599
});
44600
44601
// helpers
44602
var isThenable = function (it) {
44603
  var then;
44604
  return isObject(it) && isCallable(then = it.then) ? then : false;
44605
};
44606
44607
var notify = function (state, isReject) {
44608
  if (state.notified) return;
44609
  state.notified = true;
44610
  var chain = state.reactions;
44611
  microtask(function () {
44612
    var value = state.value;
44613
    var ok = state.state == FULFILLED;
44614
    var index = 0;
44615
    // variable length - can't use forEach
44616
    while (chain.length > index) {
44617
      var reaction = chain[index++];
44618
      var handler = ok ? reaction.ok : reaction.fail;
44619
      var resolve = reaction.resolve;
44620
      var reject = reaction.reject;
44621
      var domain = reaction.domain;
44622
      var result, then, exited;
44623
      try {
44624
        if (handler) {
44625
          if (!ok) {
44626
            if (state.rejection === UNHANDLED) onHandleUnhandled(state);
44627
            state.rejection = HANDLED;
44628
          }
44629
          if (handler === true) result = value;
44630
          else {
44631
            if (domain) domain.enter();
44632
            result = handler(value); // can throw
44633
            if (domain) {
44634
              domain.exit();
44635
              exited = true;
44636
            }
44637
          }
44638
          if (result === reaction.promise) {
44639
            reject(TypeError('Promise-chain cycle'));
44640
          } else if (then = isThenable(result)) {
44641
            call(then, result, resolve, reject);
44642
          } else resolve(result);
44643
        } else reject(value);
44644
      } catch (error) {
44645
        if (domain && !exited) domain.exit();
44646
        reject(error);
44647
      }
44648
    }
44649
    state.reactions = [];
44650
    state.notified = false;
44651
    if (isReject && !state.rejection) onUnhandled(state);
44652
  });
44653
};
44654
44655
var dispatchEvent = function (name, promise, reason) {
44656
  var event, handler;
44657
  if (DISPATCH_EVENT) {
44658
    event = document.createEvent('Event');
44659
    event.promise = promise;
44660
    event.reason = reason;
44661
    event.initEvent(name, false, true);
44662
    global.dispatchEvent(event);
44663
  } else event = { promise: promise, reason: reason };
44664
  if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);
44665
  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
44666
};
44667
44668
var onUnhandled = function (state) {
44669
  call(task, global, function () {
44670
    var promise = state.facade;
44671
    var value = state.value;
44672
    var IS_UNHANDLED = isUnhandled(state);
44673
    var result;
44674
    if (IS_UNHANDLED) {
44675
      result = perform(function () {
44676
        if (IS_NODE) {
44677
          process.emit('unhandledRejection', value, promise);
44678
        } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
44679
      });
44680
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
44681
      state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
44682
      if (result.error) throw result.value;
44683
    }
44684
  });
44685
};
44686
44687
var isUnhandled = function (state) {
44688
  return state.rejection !== HANDLED && !state.parent;
44689
};
44690
44691
var onHandleUnhandled = function (state) {
44692
  call(task, global, function () {
44693
    var promise = state.facade;
44694
    if (IS_NODE) {
44695
      process.emit('rejectionHandled', promise);
44696
    } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
44697
  });
44698
};
44699
44700
var bind = function (fn, state, unwrap) {
44701
  return function (value) {
44702
    fn(state, value, unwrap);
44703
  };
44704
};
44705
44706
var internalReject = function (state, value, unwrap) {
44707
  if (state.done) return;
44708
  state.done = true;
44709
  if (unwrap) state = unwrap;
44710
  state.value = value;
44711
  state.state = REJECTED;
44712
  notify(state, true);
44713
};
44714
44715
var internalResolve = function (state, value, unwrap) {
44716
  if (state.done) return;
44717
  state.done = true;
44718
  if (unwrap) state = unwrap;
44719
  try {
44720
    if (state.facade === value) throw TypeError("Promise can't be resolved itself");
44721
    var then = isThenable(value);
44722
    if (then) {
44723
      microtask(function () {
44724
        var wrapper = { done: false };
44725
        try {
44726
          call(then, value,
44727
            bind(internalResolve, wrapper, state),
44728
            bind(internalReject, wrapper, state)
44729
          );
44730
        } catch (error) {
44731
          internalReject(wrapper, error, state);
44732
        }
44733
      });
44734
    } else {
44735
      state.value = value;
44736
      state.state = FULFILLED;
44737
      notify(state, false);
44738
    }
44739
  } catch (error) {
44740
    internalReject({ done: false }, error, state);
44741
  }
44742
};
44743
44744
// constructor polyfill
44745
if (FORCED) {
44746
  // 25.4.3.1 Promise(executor)
44747
  PromiseConstructor = function Promise(executor) {
44748
    anInstance(this, PromisePrototype);
44749
    aCallable(executor);
44750
    call(Internal, this);
44751
    var state = getInternalState(this);
44752
    try {
44753
      executor(bind(internalResolve, state), bind(internalReject, state));
44754
    } catch (error) {
44755
      internalReject(state, error);
44756
    }
44757
  };
44758
  PromisePrototype = PromiseConstructor.prototype;
44759
  // eslint-disable-next-line no-unused-vars -- required for `.length`
44760
  Internal = function Promise(executor) {
44761
    setInternalState(this, {
44762
      type: PROMISE,
44763
      done: false,
44764
      notified: false,
44765
      parent: false,
44766
      reactions: [],
44767
      rejection: false,
44768
      state: PENDING,
44769
      value: undefined
44770
    });
44771
  };
44772
  Internal.prototype = redefineAll(PromisePrototype, {
44773
    // `Promise.prototype.then` method
44774
    // https://tc39.es/ecma262/#sec-promise.prototype.then
44775
    then: function then(onFulfilled, onRejected) {
44776
      var state = getInternalPromiseState(this);
44777
      var reactions = state.reactions;
44778
      var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
44779
      reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
44780
      reaction.fail = isCallable(onRejected) && onRejected;
44781
      reaction.domain = IS_NODE ? process.domain : undefined;
44782
      state.parent = true;
44783
      reactions[reactions.length] = reaction;
44784
      if (state.state != PENDING) notify(state, false);
44785
      return reaction.promise;
44786
    },
44787
    // `Promise.prototype.catch` method
44788
    // https://tc39.es/ecma262/#sec-promise.prototype.catch
44789
    'catch': function (onRejected) {
44790
      return this.then(undefined, onRejected);
44791
    }
44792
  });
44793
  OwnPromiseCapability = function () {
44794
    var promise = new Internal();
44795
    var state = getInternalState(promise);
44796
    this.promise = promise;
44797
    this.resolve = bind(internalResolve, state);
44798
    this.reject = bind(internalReject, state);
44799
  };
44800
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
44801
    return C === PromiseConstructor || C === PromiseWrapper
44802
      ? new OwnPromiseCapability(C)
44803
      : newGenericPromiseCapability(C);
44804
  };
44805
44806
  if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {
44807
    nativeThen = NativePromisePrototype.then;
44808
44809
    if (!SUBCLASSING) {
44810
      // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
44811
      redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
44812
        var that = this;
44813
        return new PromiseConstructor(function (resolve, reject) {
44814
          call(nativeThen, that, resolve, reject);
44815
        }).then(onFulfilled, onRejected);
44816
      // https://github.com/zloirock/core-js/issues/640
44817
      }, { unsafe: true });
44818
44819
      // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
44820
      redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });
44821
    }
44822
44823
    // make `.constructor === Promise` work for native promise-based APIs
44824
    try {
44825
      delete NativePromisePrototype.constructor;
44826
    } catch (error) { /* empty */ }
44827
44828
    // make `instanceof Promise` work for native promise-based APIs
44829
    if (setPrototypeOf) {
44830
      setPrototypeOf(NativePromisePrototype, PromisePrototype);
44831
    }
44832
  }
44833
}
44834
44835
$({ global: true, wrap: true, forced: FORCED }, {
44836
  Promise: PromiseConstructor
44837
});
44838
44839
setToStringTag(PromiseConstructor, PROMISE, false, true);
44840
setSpecies(PROMISE);
44841
44842
PromiseWrapper = getBuiltIn(PROMISE);
44843
44844
// statics
44845
$({ target: PROMISE, stat: true, forced: FORCED }, {
44846
  // `Promise.reject` method
44847
  // https://tc39.es/ecma262/#sec-promise.reject
44848
  reject: function reject(r) {
44849
    var capability = newPromiseCapability(this);
44850
    call(capability.reject, undefined, r);
44851
    return capability.promise;
44852
  }
44853
});
44854
44855
$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {
44856
  // `Promise.resolve` method
44857
  // https://tc39.es/ecma262/#sec-promise.resolve
44858
  resolve: function resolve(x) {
44859
    return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);
44860
  }
44861
});
44862
44863
$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
44864
  // `Promise.all` method
44865
  // https://tc39.es/ecma262/#sec-promise.all
44866
  all: function all(iterable) {
44867
    var C = this;
44868
    var capability = newPromiseCapability(C);
44869
    var resolve = capability.resolve;
44870
    var reject = capability.reject;
44871
    var result = perform(function () {
44872
      var $promiseResolve = aCallable(C.resolve);
44873
      var values = [];
44874
      var counter = 0;
44875
      var remaining = 1;
44876
      iterate(iterable, function (promise) {
44877
        var index = counter++;
44878
        var alreadyCalled = false;
44879
        remaining++;
44880
        call($promiseResolve, C, promise).then(function (value) {
44881
          if (alreadyCalled) return;
44882
          alreadyCalled = true;
44883
          values[index] = value;
44884
          --remaining || resolve(values);
44885
        }, reject);
44886
      });
44887
      --remaining || resolve(values);
44888
    });
44889
    if (result.error) reject(result.value);
44890
    return capability.promise;
44891
  },
44892
  // `Promise.race` method
44893
  // https://tc39.es/ecma262/#sec-promise.race
44894
  race: function race(iterable) {
44895
    var C = this;
44896
    var capability = newPromiseCapability(C);
44897
    var reject = capability.reject;
44898
    var result = perform(function () {
44899
      var $promiseResolve = aCallable(C.resolve);
44900
      iterate(iterable, function (promise) {
44901
        call($promiseResolve, C, promise).then(capability.resolve, reject);
44902
      });
44903
    });
44904
    if (result.error) reject(result.value);
44905
    return capability.promise;
44906
  }
44907
});
44908
44909
44910
/***/ }),
44911
44912
/***/ 2419:
44913
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44914
44915
var $ = __webpack_require__(2109);
44916
var getBuiltIn = __webpack_require__(5005);
44917
var apply = __webpack_require__(2104);
44918
var bind = __webpack_require__(7065);
44919
var aConstructor = __webpack_require__(9483);
44920
var anObject = __webpack_require__(9670);
44921
var isObject = __webpack_require__(111);
44922
var create = __webpack_require__(30);
44923
var fails = __webpack_require__(7293);
44924
44925
var nativeConstruct = getBuiltIn('Reflect', 'construct');
44926
var ObjectPrototype = Object.prototype;
44927
var push = [].push;
44928
44929
// `Reflect.construct` method
44930
// https://tc39.es/ecma262/#sec-reflect.construct
44931
// MS Edge supports only 2 arguments and argumentsList argument is optional
44932
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
44933
var NEW_TARGET_BUG = fails(function () {
44934
  function F() { /* empty */ }
44935
  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);
44936
});
44937
44938
var ARGS_BUG = !fails(function () {
44939
  nativeConstruct(function () { /* empty */ });
44940
});
44941
44942
var FORCED = NEW_TARGET_BUG || ARGS_BUG;
44943
44944
$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
44945
  construct: function construct(Target, args /* , newTarget */) {
44946
    aConstructor(Target);
44947
    anObject(args);
44948
    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);
44949
    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);
44950
    if (Target == newTarget) {
44951
      // w/o altered newTarget, optimization for 0-4 arguments
44952
      switch (args.length) {
44953
        case 0: return new Target();
44954
        case 1: return new Target(args[0]);
44955
        case 2: return new Target(args[0], args[1]);
44956
        case 3: return new Target(args[0], args[1], args[2]);
44957
        case 4: return new Target(args[0], args[1], args[2], args[3]);
44958
      }
44959
      // w/o altered newTarget, lot of arguments case
44960
      var $args = [null];
44961
      apply(push, $args, args);
44962
      return new (apply(bind, Target, $args))();
44963
    }
44964
    // with altered newTarget, not support built-in constructors
44965
    var proto = newTarget.prototype;
44966
    var instance = create(isObject(proto) ? proto : ObjectPrototype);
44967
    var result = apply(Target, instance, args);
44968
    return isObject(result) ? result : instance;
44969
  }
44970
});
44971
44972
44973
/***/ }),
44974
44975
/***/ 4916:
44976
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44977
44978
"use strict";
44979
44980
var $ = __webpack_require__(2109);
44981
var exec = __webpack_require__(2261);
44982
44983
// `RegExp.prototype.exec` method
44984
// https://tc39.es/ecma262/#sec-regexp.prototype.exec
44985
$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
44986
  exec: exec
44987
});
44988
44989
44990
/***/ }),
44991
44992
/***/ 2087:
44993
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
44994
44995
var DESCRIPTORS = __webpack_require__(9781);
44996
var objectDefinePropertyModule = __webpack_require__(3070);
44997
var regExpFlags = __webpack_require__(7066);
44998
var fails = __webpack_require__(7293);
44999
45000
var RegExpPrototype = RegExp.prototype;
45001
45002
var FORCED = DESCRIPTORS && fails(function () {
45003
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
45004
  return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
45005
});
45006
45007
// `RegExp.prototype.flags` getter
45008
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
45009
if (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {
45010
  configurable: true,
45011
  get: regExpFlags
45012
});
45013
45014
45015
/***/ }),
45016
45017
/***/ 9714:
45018
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45019
45020
"use strict";
45021
45022
var uncurryThis = __webpack_require__(1702);
45023
var PROPER_FUNCTION_NAME = (__webpack_require__(6530).PROPER);
45024
var redefine = __webpack_require__(1320);
45025
var anObject = __webpack_require__(9670);
45026
var isPrototypeOf = __webpack_require__(7976);
45027
var $toString = __webpack_require__(1340);
45028
var fails = __webpack_require__(7293);
45029
var regExpFlags = __webpack_require__(7066);
45030
45031
var TO_STRING = 'toString';
45032
var RegExpPrototype = RegExp.prototype;
45033
var n$ToString = RegExpPrototype[TO_STRING];
45034
var getFlags = uncurryThis(regExpFlags);
45035
45036
var NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
45037
// FF44- RegExp#toString has a wrong name
45038
var INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;
45039
45040
// `RegExp.prototype.toString` method
45041
// https://tc39.es/ecma262/#sec-regexp.prototype.tostring
45042
if (NOT_GENERIC || INCORRECT_NAME) {
45043
  redefine(RegExp.prototype, TO_STRING, function toString() {
45044
    var R = anObject(this);
45045
    var p = $toString(R.source);
45046
    var rf = R.flags;
45047
    var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);
45048
    return '/' + p + '/' + f;
45049
  }, { unsafe: true });
45050
}
45051
45052
45053
/***/ }),
45054
45055
/***/ 189:
45056
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45057
45058
"use strict";
45059
45060
var collection = __webpack_require__(7710);
45061
var collectionStrong = __webpack_require__(5631);
45062
45063
// `Set` constructor
45064
// https://tc39.es/ecma262/#sec-set-objects
45065
collection('Set', function (init) {
45066
  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
45067
}, collectionStrong);
45068
45069
45070
/***/ }),
45071
45072
/***/ 9841:
45073
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45074
45075
"use strict";
45076
45077
var $ = __webpack_require__(2109);
45078
var codeAt = (__webpack_require__(8710).codeAt);
45079
45080
// `String.prototype.codePointAt` method
45081
// https://tc39.es/ecma262/#sec-string.prototype.codepointat
45082
$({ target: 'String', proto: true }, {
45083
  codePointAt: function codePointAt(pos) {
45084
    return codeAt(this, pos);
45085
  }
45086
});
45087
45088
45089
/***/ }),
45090
45091
/***/ 4953:
45092
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45093
45094
var $ = __webpack_require__(2109);
45095
var global = __webpack_require__(7854);
45096
var uncurryThis = __webpack_require__(1702);
45097
var toAbsoluteIndex = __webpack_require__(1400);
45098
45099
var RangeError = global.RangeError;
45100
var fromCharCode = String.fromCharCode;
45101
// eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
45102
var $fromCodePoint = String.fromCodePoint;
45103
var join = uncurryThis([].join);
45104
45105
// length should be 1, old FF problem
45106
var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;
45107
45108
// `String.fromCodePoint` method
45109
// https://tc39.es/ecma262/#sec-string.fromcodepoint
45110
$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {
45111
  // eslint-disable-next-line no-unused-vars -- required for `.length`
45112
  fromCodePoint: function fromCodePoint(x) {
45113
    var elements = [];
45114
    var length = arguments.length;
45115
    var i = 0;
45116
    var code;
45117
    while (length > i) {
45118
      code = +arguments[i++];
45119
      if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
45120
      elements[i] = code < 0x10000
45121
        ? fromCharCode(code)
45122
        : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);
45123
    } return join(elements, '');
45124
  }
45125
});
45126
45127
45128
/***/ }),
45129
45130
/***/ 2023:
45131
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45132
45133
"use strict";
45134
45135
var $ = __webpack_require__(2109);
45136
var uncurryThis = __webpack_require__(1702);
45137
var notARegExp = __webpack_require__(3929);
45138
var requireObjectCoercible = __webpack_require__(4488);
45139
var toString = __webpack_require__(1340);
45140
var correctIsRegExpLogic = __webpack_require__(4964);
45141
45142
var stringIndexOf = uncurryThis(''.indexOf);
45143
45144
// `String.prototype.includes` method
45145
// https://tc39.es/ecma262/#sec-string.prototype.includes
45146
$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
45147
  includes: function includes(searchString /* , position = 0 */) {
45148
    return !!~stringIndexOf(
45149
      toString(requireObjectCoercible(this)),
45150
      toString(notARegExp(searchString)),
45151
      arguments.length > 1 ? arguments[1] : undefined
45152
    );
45153
  }
45154
});
45155
45156
45157
/***/ }),
45158
45159
/***/ 8734:
45160
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45161
45162
"use strict";
45163
45164
var $ = __webpack_require__(2109);
45165
var createHTML = __webpack_require__(4230);
45166
var forcedStringHTMLMethod = __webpack_require__(3429);
45167
45168
// `String.prototype.italics` method
45169
// https://tc39.es/ecma262/#sec-string.prototype.italics
45170
$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {
45171
  italics: function italics() {
45172
    return createHTML(this, 'i', '', '');
45173
  }
45174
});
45175
45176
45177
/***/ }),
45178
45179
/***/ 8783:
45180
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45181
45182
"use strict";
45183
45184
var charAt = (__webpack_require__(8710).charAt);
45185
var toString = __webpack_require__(1340);
45186
var InternalStateModule = __webpack_require__(9909);
45187
var defineIterator = __webpack_require__(654);
45188
45189
var STRING_ITERATOR = 'String Iterator';
45190
var setInternalState = InternalStateModule.set;
45191
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
45192
45193
// `String.prototype[@@iterator]` method
45194
// https://tc39.es/ecma262/#sec-string.prototype-@@iterator
45195
defineIterator(String, 'String', function (iterated) {
45196
  setInternalState(this, {
45197
    type: STRING_ITERATOR,
45198
    string: toString(iterated),
45199
    index: 0
45200
  });
45201
// `%StringIteratorPrototype%.next` method
45202
// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next
45203
}, function next() {
45204
  var state = getInternalState(this);
45205
  var string = state.string;
45206
  var index = state.index;
45207
  var point;
45208
  if (index >= string.length) return { value: undefined, done: true };
45209
  point = charAt(string, index);
45210
  state.index += point.length;
45211
  return { value: point, done: false };
45212
});
45213
45214
45215
/***/ }),
45216
45217
/***/ 9254:
45218
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45219
45220
"use strict";
45221
45222
var $ = __webpack_require__(2109);
45223
var createHTML = __webpack_require__(4230);
45224
var forcedStringHTMLMethod = __webpack_require__(3429);
45225
45226
// `String.prototype.link` method
45227
// https://tc39.es/ecma262/#sec-string.prototype.link
45228
$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {
45229
  link: function link(url) {
45230
    return createHTML(this, 'a', 'href', url);
45231
  }
45232
});
45233
45234
45235
/***/ }),
45236
45237
/***/ 6373:
45238
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45239
45240
"use strict";
45241
45242
/* eslint-disable es/no-string-prototype-matchall -- safe */
45243
var $ = __webpack_require__(2109);
45244
var global = __webpack_require__(7854);
45245
var call = __webpack_require__(6916);
45246
var uncurryThis = __webpack_require__(1702);
45247
var createIteratorConstructor = __webpack_require__(4994);
45248
var requireObjectCoercible = __webpack_require__(4488);
45249
var toLength = __webpack_require__(7466);
45250
var toString = __webpack_require__(1340);
45251
var anObject = __webpack_require__(9670);
45252
var classof = __webpack_require__(4326);
45253
var isPrototypeOf = __webpack_require__(7976);
45254
var isRegExp = __webpack_require__(7850);
45255
var regExpFlags = __webpack_require__(7066);
45256
var getMethod = __webpack_require__(8173);
45257
var redefine = __webpack_require__(1320);
45258
var fails = __webpack_require__(7293);
45259
var wellKnownSymbol = __webpack_require__(5112);
45260
var speciesConstructor = __webpack_require__(6707);
45261
var advanceStringIndex = __webpack_require__(1530);
45262
var regExpExec = __webpack_require__(7651);
45263
var InternalStateModule = __webpack_require__(9909);
45264
var IS_PURE = __webpack_require__(1913);
45265
45266
var MATCH_ALL = wellKnownSymbol('matchAll');
45267
var REGEXP_STRING = 'RegExp String';
45268
var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
45269
var setInternalState = InternalStateModule.set;
45270
var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
45271
var RegExpPrototype = RegExp.prototype;
45272
var TypeError = global.TypeError;
45273
var getFlags = uncurryThis(regExpFlags);
45274
var stringIndexOf = uncurryThis(''.indexOf);
45275
var un$MatchAll = uncurryThis(''.matchAll);
45276
45277
var WORKS_WITH_NON_GLOBAL_REGEX = !!un$MatchAll && !fails(function () {
45278
  un$MatchAll('a', /./);
45279
});
45280
45281
var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {
45282
  setInternalState(this, {
45283
    type: REGEXP_STRING_ITERATOR,
45284
    regexp: regexp,
45285
    string: string,
45286
    global: $global,
45287
    unicode: fullUnicode,
45288
    done: false
45289
  });
45290
}, REGEXP_STRING, function next() {
45291
  var state = getInternalState(this);
45292
  if (state.done) return { value: undefined, done: true };
45293
  var R = state.regexp;
45294
  var S = state.string;
45295
  var match = regExpExec(R, S);
45296
  if (match === null) return { value: undefined, done: state.done = true };
45297
  if (state.global) {
45298
    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);
45299
    return { value: match, done: false };
45300
  }
45301
  state.done = true;
45302
  return { value: match, done: false };
45303
});
45304
45305
var $matchAll = function (string) {
45306
  var R = anObject(this);
45307
  var S = toString(string);
45308
  var C, flagsValue, flags, matcher, $global, fullUnicode;
45309
  C = speciesConstructor(R, RegExp);
45310
  flagsValue = R.flags;
45311
  if (flagsValue === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype)) {
45312
    flagsValue = getFlags(R);
45313
  }
45314
  flags = flagsValue === undefined ? '' : toString(flagsValue);
45315
  matcher = new C(C === RegExp ? R.source : R, flags);
45316
  $global = !!~stringIndexOf(flags, 'g');
45317
  fullUnicode = !!~stringIndexOf(flags, 'u');
45318
  matcher.lastIndex = toLength(R.lastIndex);
45319
  return new $RegExpStringIterator(matcher, S, $global, fullUnicode);
45320
};
45321
45322
// `String.prototype.matchAll` method
45323
// https://tc39.es/ecma262/#sec-string.prototype.matchall
45324
$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
45325
  matchAll: function matchAll(regexp) {
45326
    var O = requireObjectCoercible(this);
45327
    var flags, S, matcher, rx;
45328
    if (regexp != null) {
45329
      if (isRegExp(regexp)) {
45330
        flags = toString(requireObjectCoercible('flags' in RegExpPrototype
45331
          ? regexp.flags
45332
          : getFlags(regexp)
45333
        ));
45334
        if (!~stringIndexOf(flags, 'g')) throw TypeError('`.matchAll` does not allow non-global regexes');
45335
      }
45336
      if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);
45337
      matcher = getMethod(regexp, MATCH_ALL);
45338
      if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
45339
      if (matcher) return call(matcher, regexp, O);
45340
    } else if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);
45341
    S = toString(O);
45342
    rx = new RegExp(regexp, 'g');
45343
    return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);
45344
  }
45345
});
45346
45347
IS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);
45348
45349
45350
/***/ }),
45351
45352
/***/ 4723:
45353
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45354
45355
"use strict";
45356
45357
var call = __webpack_require__(6916);
45358
var fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);
45359
var anObject = __webpack_require__(9670);
45360
var toLength = __webpack_require__(7466);
45361
var toString = __webpack_require__(1340);
45362
var requireObjectCoercible = __webpack_require__(4488);
45363
var getMethod = __webpack_require__(8173);
45364
var advanceStringIndex = __webpack_require__(1530);
45365
var regExpExec = __webpack_require__(7651);
45366
45367
// @@match logic
45368
fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {
45369
  return [
45370
    // `String.prototype.match` method
45371
    // https://tc39.es/ecma262/#sec-string.prototype.match
45372
    function match(regexp) {
45373
      var O = requireObjectCoercible(this);
45374
      var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);
45375
      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));
45376
    },
45377
    // `RegExp.prototype[@@match]` method
45378
    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
45379
    function (string) {
45380
      var rx = anObject(this);
45381
      var S = toString(string);
45382
      var res = maybeCallNative(nativeMatch, rx, S);
45383
45384
      if (res.done) return res.value;
45385
45386
      if (!rx.global) return regExpExec(rx, S);
45387
45388
      var fullUnicode = rx.unicode;
45389
      rx.lastIndex = 0;
45390
      var A = [];
45391
      var n = 0;
45392
      var result;
45393
      while ((result = regExpExec(rx, S)) !== null) {
45394
        var matchStr = toString(result[0]);
45395
        A[n] = matchStr;
45396
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
45397
        n++;
45398
      }
45399
      return n === 0 ? null : A;
45400
    }
45401
  ];
45402
});
45403
45404
45405
/***/ }),
45406
45407
/***/ 2481:
45408
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45409
45410
var $ = __webpack_require__(2109);
45411
var repeat = __webpack_require__(8415);
45412
45413
// `String.prototype.repeat` method
45414
// https://tc39.es/ecma262/#sec-string.prototype.repeat
45415
$({ target: 'String', proto: true }, {
45416
  repeat: repeat
45417
});
45418
45419
45420
/***/ }),
45421
45422
/***/ 5306:
45423
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45424
45425
"use strict";
45426
45427
var apply = __webpack_require__(2104);
45428
var call = __webpack_require__(6916);
45429
var uncurryThis = __webpack_require__(1702);
45430
var fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);
45431
var fails = __webpack_require__(7293);
45432
var anObject = __webpack_require__(9670);
45433
var isCallable = __webpack_require__(614);
45434
var toIntegerOrInfinity = __webpack_require__(9303);
45435
var toLength = __webpack_require__(7466);
45436
var toString = __webpack_require__(1340);
45437
var requireObjectCoercible = __webpack_require__(4488);
45438
var advanceStringIndex = __webpack_require__(1530);
45439
var getMethod = __webpack_require__(8173);
45440
var getSubstitution = __webpack_require__(647);
45441
var regExpExec = __webpack_require__(7651);
45442
var wellKnownSymbol = __webpack_require__(5112);
45443
45444
var REPLACE = wellKnownSymbol('replace');
45445
var max = Math.max;
45446
var min = Math.min;
45447
var concat = uncurryThis([].concat);
45448
var push = uncurryThis([].push);
45449
var stringIndexOf = uncurryThis(''.indexOf);
45450
var stringSlice = uncurryThis(''.slice);
45451
45452
var maybeToString = function (it) {
45453
  return it === undefined ? it : String(it);
45454
};
45455
45456
// IE <= 11 replaces $0 with the whole match, as if it was $&
45457
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
45458
var REPLACE_KEEPS_$0 = (function () {
45459
  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
45460
  return 'a'.replace(/./, '$0') === '$0';
45461
})();
45462
45463
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
45464
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
45465
  if (/./[REPLACE]) {
45466
    return /./[REPLACE]('a', '$0') === '';
45467
  }
45468
  return false;
45469
})();
45470
45471
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
45472
  var re = /./;
45473
  re.exec = function () {
45474
    var result = [];
45475
    result.groups = { a: '7' };
45476
    return result;
45477
  };
45478
  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
45479
  return ''.replace(re, '$<a>') !== '7';
45480
});
45481
45482
// @@replace logic
45483
fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
45484
  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
45485
45486
  return [
45487
    // `String.prototype.replace` method
45488
    // https://tc39.es/ecma262/#sec-string.prototype.replace
45489
    function replace(searchValue, replaceValue) {
45490
      var O = requireObjectCoercible(this);
45491
      var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);
45492
      return replacer
45493
        ? call(replacer, searchValue, O, replaceValue)
45494
        : call(nativeReplace, toString(O), searchValue, replaceValue);
45495
    },
45496
    // `RegExp.prototype[@@replace]` method
45497
    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
45498
    function (string, replaceValue) {
45499
      var rx = anObject(this);
45500
      var S = toString(string);
45501
45502
      if (
45503
        typeof replaceValue == 'string' &&
45504
        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
45505
        stringIndexOf(replaceValue, '$<') === -1
45506
      ) {
45507
        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
45508
        if (res.done) return res.value;
45509
      }
45510
45511
      var functionalReplace = isCallable(replaceValue);
45512
      if (!functionalReplace) replaceValue = toString(replaceValue);
45513
45514
      var global = rx.global;
45515
      if (global) {
45516
        var fullUnicode = rx.unicode;
45517
        rx.lastIndex = 0;
45518
      }
45519
      var results = [];
45520
      while (true) {
45521
        var result = regExpExec(rx, S);
45522
        if (result === null) break;
45523
45524
        push(results, result);
45525
        if (!global) break;
45526
45527
        var matchStr = toString(result[0]);
45528
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
45529
      }
45530
45531
      var accumulatedResult = '';
45532
      var nextSourcePosition = 0;
45533
      for (var i = 0; i < results.length; i++) {
45534
        result = results[i];
45535
45536
        var matched = toString(result[0]);
45537
        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
45538
        var captures = [];
45539
        // NOTE: This is equivalent to
45540
        //   captures = result.slice(1).map(maybeToString)
45541
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
45542
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
45543
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
45544
        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
45545
        var namedCaptures = result.groups;
45546
        if (functionalReplace) {
45547
          var replacerArgs = concat([matched], captures, position, S);
45548
          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);
45549
          var replacement = toString(apply(replaceValue, undefined, replacerArgs));
45550
        } else {
45551
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
45552
        }
45553
        if (position >= nextSourcePosition) {
45554
          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
45555
          nextSourcePosition = position + matched.length;
45556
        }
45557
      }
45558
      return accumulatedResult + stringSlice(S, nextSourcePosition);
45559
    }
45560
  ];
45561
}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
45562
45563
45564
/***/ }),
45565
45566
/***/ 3123:
45567
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45568
45569
"use strict";
45570
45571
var apply = __webpack_require__(2104);
45572
var call = __webpack_require__(6916);
45573
var uncurryThis = __webpack_require__(1702);
45574
var fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);
45575
var isRegExp = __webpack_require__(7850);
45576
var anObject = __webpack_require__(9670);
45577
var requireObjectCoercible = __webpack_require__(4488);
45578
var speciesConstructor = __webpack_require__(6707);
45579
var advanceStringIndex = __webpack_require__(1530);
45580
var toLength = __webpack_require__(7466);
45581
var toString = __webpack_require__(1340);
45582
var getMethod = __webpack_require__(8173);
45583
var arraySlice = __webpack_require__(206);
45584
var callRegExpExec = __webpack_require__(7651);
45585
var regexpExec = __webpack_require__(2261);
45586
var stickyHelpers = __webpack_require__(2999);
45587
var fails = __webpack_require__(7293);
45588
45589
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
45590
var MAX_UINT32 = 0xFFFFFFFF;
45591
var min = Math.min;
45592
var $push = [].push;
45593
var exec = uncurryThis(/./.exec);
45594
var push = uncurryThis($push);
45595
var stringSlice = uncurryThis(''.slice);
45596
45597
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
45598
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
45599
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
45600
  // eslint-disable-next-line regexp/no-empty-group -- required for testing
45601
  var re = /(?:)/;
45602
  var originalExec = re.exec;
45603
  re.exec = function () { return originalExec.apply(this, arguments); };
45604
  var result = 'ab'.split(re);
45605
  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
45606
});
45607
45608
// @@split logic
45609
fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {
45610
  var internalSplit;
45611
  if (
45612
    'abbc'.split(/(b)*/)[1] == 'c' ||
45613
    // eslint-disable-next-line regexp/no-empty-group -- required for testing
45614
    'test'.split(/(?:)/, -1).length != 4 ||
45615
    'ab'.split(/(?:ab)*/).length != 2 ||
45616
    '.'.split(/(.?)(.?)/).length != 4 ||
45617
    // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
45618
    '.'.split(/()()/).length > 1 ||
45619
    ''.split(/.?/).length
45620
  ) {
45621
    // based on es5-shim implementation, need to rework it
45622
    internalSplit = function (separator, limit) {
45623
      var string = toString(requireObjectCoercible(this));
45624
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
45625
      if (lim === 0) return [];
45626
      if (separator === undefined) return [string];
45627
      // If `separator` is not a regex, use native split
45628
      if (!isRegExp(separator)) {
45629
        return call(nativeSplit, string, separator, lim);
45630
      }
45631
      var output = [];
45632
      var flags = (separator.ignoreCase ? 'i' : '') +
45633
                  (separator.multiline ? 'm' : '') +
45634
                  (separator.unicode ? 'u' : '') +
45635
                  (separator.sticky ? 'y' : '');
45636
      var lastLastIndex = 0;
45637
      // Make `global` and avoid `lastIndex` issues by working with a copy
45638
      var separatorCopy = new RegExp(separator.source, flags + 'g');
45639
      var match, lastIndex, lastLength;
45640
      while (match = call(regexpExec, separatorCopy, string)) {
45641
        lastIndex = separatorCopy.lastIndex;
45642
        if (lastIndex > lastLastIndex) {
45643
          push(output, stringSlice(string, lastLastIndex, match.index));
45644
          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));
45645
          lastLength = match[0].length;
45646
          lastLastIndex = lastIndex;
45647
          if (output.length >= lim) break;
45648
        }
45649
        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
45650
      }
45651
      if (lastLastIndex === string.length) {
45652
        if (lastLength || !exec(separatorCopy, '')) push(output, '');
45653
      } else push(output, stringSlice(string, lastLastIndex));
45654
      return output.length > lim ? arraySlice(output, 0, lim) : output;
45655
    };
45656
  // Chakra, V8
45657
  } else if ('0'.split(undefined, 0).length) {
45658
    internalSplit = function (separator, limit) {
45659
      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);
45660
    };
45661
  } else internalSplit = nativeSplit;
45662
45663
  return [
45664
    // `String.prototype.split` method
45665
    // https://tc39.es/ecma262/#sec-string.prototype.split
45666
    function split(separator, limit) {
45667
      var O = requireObjectCoercible(this);
45668
      var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);
45669
      return splitter
45670
        ? call(splitter, separator, O, limit)
45671
        : call(internalSplit, toString(O), separator, limit);
45672
    },
45673
    // `RegExp.prototype[@@split]` method
45674
    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
45675
    //
45676
    // NOTE: This cannot be properly polyfilled in engines that don't support
45677
    // the 'y' flag.
45678
    function (string, limit) {
45679
      var rx = anObject(this);
45680
      var S = toString(string);
45681
      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);
45682
45683
      if (res.done) return res.value;
45684
45685
      var C = speciesConstructor(rx, RegExp);
45686
45687
      var unicodeMatching = rx.unicode;
45688
      var flags = (rx.ignoreCase ? 'i' : '') +
45689
                  (rx.multiline ? 'm' : '') +
45690
                  (rx.unicode ? 'u' : '') +
45691
                  (UNSUPPORTED_Y ? 'g' : 'y');
45692
45693
      // ^(? + rx + ) is needed, in combination with some S slicing, to
45694
      // simulate the 'y' flag.
45695
      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);
45696
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
45697
      if (lim === 0) return [];
45698
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
45699
      var p = 0;
45700
      var q = 0;
45701
      var A = [];
45702
      while (q < S.length) {
45703
        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
45704
        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);
45705
        var e;
45706
        if (
45707
          z === null ||
45708
          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p
45709
        ) {
45710
          q = advanceStringIndex(S, q, unicodeMatching);
45711
        } else {
45712
          push(A, stringSlice(S, p, q));
45713
          if (A.length === lim) return A;
45714
          for (var i = 1; i <= z.length - 1; i++) {
45715
            push(A, z[i]);
45716
            if (A.length === lim) return A;
45717
          }
45718
          q = p = e;
45719
        }
45720
      }
45721
      push(A, stringSlice(S, p));
45722
      return A;
45723
    }
45724
  ];
45725
}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
45726
45727
45728
/***/ }),
45729
45730
/***/ 7397:
45731
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45732
45733
"use strict";
45734
45735
var $ = __webpack_require__(2109);
45736
var createHTML = __webpack_require__(4230);
45737
var forcedStringHTMLMethod = __webpack_require__(3429);
45738
45739
// `String.prototype.strike` method
45740
// https://tc39.es/ecma262/#sec-string.prototype.strike
45741
$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {
45742
  strike: function strike() {
45743
    return createHTML(this, 'strike', '', '');
45744
  }
45745
});
45746
45747
45748
/***/ }),
45749
45750
/***/ 3210:
45751
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45752
45753
"use strict";
45754
45755
var $ = __webpack_require__(2109);
45756
var $trim = (__webpack_require__(3111).trim);
45757
var forcedStringTrimMethod = __webpack_require__(6091);
45758
45759
// `String.prototype.trim` method
45760
// https://tc39.es/ecma262/#sec-string.prototype.trim
45761
$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
45762
  trim: function trim() {
45763
    return $trim(this);
45764
  }
45765
});
45766
45767
45768
/***/ }),
45769
45770
/***/ 2443:
45771
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45772
45773
var defineWellKnownSymbol = __webpack_require__(7235);
45774
45775
// `Symbol.asyncIterator` well-known symbol
45776
// https://tc39.es/ecma262/#sec-symbol.asynciterator
45777
defineWellKnownSymbol('asyncIterator');
45778
45779
45780
/***/ }),
45781
45782
/***/ 1817:
45783
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45784
45785
"use strict";
45786
// `Symbol.prototype.description` getter
45787
// https://tc39.es/ecma262/#sec-symbol.prototype.description
45788
45789
var $ = __webpack_require__(2109);
45790
var DESCRIPTORS = __webpack_require__(9781);
45791
var global = __webpack_require__(7854);
45792
var uncurryThis = __webpack_require__(1702);
45793
var hasOwn = __webpack_require__(2597);
45794
var isCallable = __webpack_require__(614);
45795
var isPrototypeOf = __webpack_require__(7976);
45796
var toString = __webpack_require__(1340);
45797
var defineProperty = (__webpack_require__(3070).f);
45798
var copyConstructorProperties = __webpack_require__(9920);
45799
45800
var NativeSymbol = global.Symbol;
45801
var SymbolPrototype = NativeSymbol && NativeSymbol.prototype;
45802
45803
if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||
45804
  // Safari 12 bug
45805
  NativeSymbol().description !== undefined
45806
)) {
45807
  var EmptyStringDescriptionStore = {};
45808
  // wrap Symbol constructor for correct work with undefined description
45809
  var SymbolWrapper = function Symbol() {
45810
    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);
45811
    var result = isPrototypeOf(SymbolPrototype, this)
45812
      ? new NativeSymbol(description)
45813
      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
45814
      : description === undefined ? NativeSymbol() : NativeSymbol(description);
45815
    if (description === '') EmptyStringDescriptionStore[result] = true;
45816
    return result;
45817
  };
45818
45819
  copyConstructorProperties(SymbolWrapper, NativeSymbol);
45820
  SymbolWrapper.prototype = SymbolPrototype;
45821
  SymbolPrototype.constructor = SymbolWrapper;
45822
45823
  var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';
45824
  var symbolToString = uncurryThis(SymbolPrototype.toString);
45825
  var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);
45826
  var regexp = /^Symbol\((.*)\)[^)]+$/;
45827
  var replace = uncurryThis(''.replace);
45828
  var stringSlice = uncurryThis(''.slice);
45829
45830
  defineProperty(SymbolPrototype, 'description', {
45831
    configurable: true,
45832
    get: function description() {
45833
      var symbol = symbolValueOf(this);
45834
      var string = symbolToString(symbol);
45835
      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';
45836
      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');
45837
      return desc === '' ? undefined : desc;
45838
    }
45839
  });
45840
45841
  $({ global: true, forced: true }, {
45842
    Symbol: SymbolWrapper
45843
  });
45844
}
45845
45846
45847
/***/ }),
45848
45849
/***/ 2165:
45850
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45851
45852
var defineWellKnownSymbol = __webpack_require__(7235);
45853
45854
// `Symbol.iterator` well-known symbol
45855
// https://tc39.es/ecma262/#sec-symbol.iterator
45856
defineWellKnownSymbol('iterator');
45857
45858
45859
/***/ }),
45860
45861
/***/ 2526:
45862
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
45863
45864
"use strict";
45865
45866
var $ = __webpack_require__(2109);
45867
var global = __webpack_require__(7854);
45868
var getBuiltIn = __webpack_require__(5005);
45869
var apply = __webpack_require__(2104);
45870
var call = __webpack_require__(6916);
45871
var uncurryThis = __webpack_require__(1702);
45872
var IS_PURE = __webpack_require__(1913);
45873
var DESCRIPTORS = __webpack_require__(9781);
45874
var NATIVE_SYMBOL = __webpack_require__(133);
45875
var fails = __webpack_require__(7293);
45876
var hasOwn = __webpack_require__(2597);
45877
var isArray = __webpack_require__(3157);
45878
var isCallable = __webpack_require__(614);
45879
var isObject = __webpack_require__(111);
45880
var isPrototypeOf = __webpack_require__(7976);
45881
var isSymbol = __webpack_require__(2190);
45882
var anObject = __webpack_require__(9670);
45883
var toObject = __webpack_require__(7908);
45884
var toIndexedObject = __webpack_require__(5656);
45885
var toPropertyKey = __webpack_require__(4948);
45886
var $toString = __webpack_require__(1340);
45887
var createPropertyDescriptor = __webpack_require__(9114);
45888
var nativeObjectCreate = __webpack_require__(30);
45889
var objectKeys = __webpack_require__(1956);
45890
var getOwnPropertyNamesModule = __webpack_require__(8006);
45891
var getOwnPropertyNamesExternal = __webpack_require__(1156);
45892
var getOwnPropertySymbolsModule = __webpack_require__(5181);
45893
var getOwnPropertyDescriptorModule = __webpack_require__(1236);
45894
var definePropertyModule = __webpack_require__(3070);
45895
var propertyIsEnumerableModule = __webpack_require__(5296);
45896
var arraySlice = __webpack_require__(206);
45897
var redefine = __webpack_require__(1320);
45898
var shared = __webpack_require__(2309);
45899
var sharedKey = __webpack_require__(6200);
45900
var hiddenKeys = __webpack_require__(3501);
45901
var uid = __webpack_require__(9711);
45902
var wellKnownSymbol = __webpack_require__(5112);
45903
var wrappedWellKnownSymbolModule = __webpack_require__(6061);
45904
var defineWellKnownSymbol = __webpack_require__(7235);
45905
var setToStringTag = __webpack_require__(8003);
45906
var InternalStateModule = __webpack_require__(9909);
45907
var $forEach = (__webpack_require__(2092).forEach);
45908
45909
var HIDDEN = sharedKey('hidden');
45910
var SYMBOL = 'Symbol';
45911
var PROTOTYPE = 'prototype';
45912
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
45913
45914
var setInternalState = InternalStateModule.set;
45915
var getInternalState = InternalStateModule.getterFor(SYMBOL);
45916
45917
var ObjectPrototype = Object[PROTOTYPE];
45918
var $Symbol = global.Symbol;
45919
var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];
45920
var TypeError = global.TypeError;
45921
var QObject = global.QObject;
45922
var $stringify = getBuiltIn('JSON', 'stringify');
45923
var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
45924
var nativeDefineProperty = definePropertyModule.f;
45925
var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
45926
var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
45927
var push = uncurryThis([].push);
45928
45929
var AllSymbols = shared('symbols');
45930
var ObjectPrototypeSymbols = shared('op-symbols');
45931
var StringToSymbolRegistry = shared('string-to-symbol-registry');
45932
var SymbolToStringRegistry = shared('symbol-to-string-registry');
45933
var WellKnownSymbolsStore = shared('wks');
45934
45935
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
45936
var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
45937
45938
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
45939
var setSymbolDescriptor = DESCRIPTORS && fails(function () {
45940
  return nativeObjectCreate(nativeDefineProperty({}, 'a', {
45941
    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }
45942
  })).a != 7;
45943
}) ? function (O, P, Attributes) {
45944
  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
45945
  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
45946
  nativeDefineProperty(O, P, Attributes);
45947
  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
45948
    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
45949
  }
45950
} : nativeDefineProperty;
45951
45952
var wrap = function (tag, description) {
45953
  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);
45954
  setInternalState(symbol, {
45955
    type: SYMBOL,
45956
    tag: tag,
45957
    description: description
45958
  });
45959
  if (!DESCRIPTORS) symbol.description = description;
45960
  return symbol;
45961
};
45962
45963
var $defineProperty = function defineProperty(O, P, Attributes) {
45964
  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
45965
  anObject(O);
45966
  var key = toPropertyKey(P);
45967
  anObject(Attributes);
45968
  if (hasOwn(AllSymbols, key)) {
45969
    if (!Attributes.enumerable) {
45970
      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
45971
      O[HIDDEN][key] = true;
45972
    } else {
45973
      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
45974
      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
45975
    } return setSymbolDescriptor(O, key, Attributes);
45976
  } return nativeDefineProperty(O, key, Attributes);
45977
};
45978
45979
var $defineProperties = function defineProperties(O, Properties) {
45980
  anObject(O);
45981
  var properties = toIndexedObject(Properties);
45982
  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
45983
  $forEach(keys, function (key) {
45984
    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);
45985
  });
45986
  return O;
45987
};
45988
45989
var $create = function create(O, Properties) {
45990
  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
45991
};
45992
45993
var $propertyIsEnumerable = function propertyIsEnumerable(V) {
45994
  var P = toPropertyKey(V);
45995
  var enumerable = call(nativePropertyIsEnumerable, this, P);
45996
  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;
45997
  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]
45998
    ? enumerable : true;
45999
};
46000
46001
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
46002
  var it = toIndexedObject(O);
46003
  var key = toPropertyKey(P);
46004
  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;
46005
  var descriptor = nativeGetOwnPropertyDescriptor(it, key);
46006
  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {
46007
    descriptor.enumerable = true;
46008
  }
46009
  return descriptor;
46010
};
46011
46012
var $getOwnPropertyNames = function getOwnPropertyNames(O) {
46013
  var names = nativeGetOwnPropertyNames(toIndexedObject(O));
46014
  var result = [];
46015
  $forEach(names, function (key) {
46016
    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);
46017
  });
46018
  return result;
46019
};
46020
46021
var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
46022
  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
46023
  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
46024
  var result = [];
46025
  $forEach(names, function (key) {
46026
    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {
46027
      push(result, AllSymbols[key]);
46028
    }
46029
  });
46030
  return result;
46031
};
46032
46033
// `Symbol` constructor
46034
// https://tc39.es/ecma262/#sec-symbol-constructor
46035
if (!NATIVE_SYMBOL) {
46036
  $Symbol = function Symbol() {
46037
    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');
46038
    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);
46039
    var tag = uid(description);
46040
    var setter = function (value) {
46041
      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);
46042
      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
46043
      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
46044
    };
46045
    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
46046
    return wrap(tag, description);
46047
  };
46048
46049
  SymbolPrototype = $Symbol[PROTOTYPE];
46050
46051
  redefine(SymbolPrototype, 'toString', function toString() {
46052
    return getInternalState(this).tag;
46053
  });
46054
46055
  redefine($Symbol, 'withoutSetter', function (description) {
46056
    return wrap(uid(description), description);
46057
  });
46058
46059
  propertyIsEnumerableModule.f = $propertyIsEnumerable;
46060
  definePropertyModule.f = $defineProperty;
46061
  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
46062
  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
46063
  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
46064
46065
  wrappedWellKnownSymbolModule.f = function (name) {
46066
    return wrap(wellKnownSymbol(name), name);
46067
  };
46068
46069
  if (DESCRIPTORS) {
46070
    // https://github.com/tc39/proposal-Symbol-description
46071
    nativeDefineProperty(SymbolPrototype, 'description', {
46072
      configurable: true,
46073
      get: function description() {
46074
        return getInternalState(this).description;
46075
      }
46076
    });
46077
    if (!IS_PURE) {
46078
      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
46079
    }
46080
  }
46081
}
46082
46083
$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
46084
  Symbol: $Symbol
46085
});
46086
46087
$forEach(objectKeys(WellKnownSymbolsStore), function (name) {
46088
  defineWellKnownSymbol(name);
46089
});
46090
46091
$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
46092
  // `Symbol.for` method
46093
  // https://tc39.es/ecma262/#sec-symbol.for
46094
  'for': function (key) {
46095
    var string = $toString(key);
46096
    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
46097
    var symbol = $Symbol(string);
46098
    StringToSymbolRegistry[string] = symbol;
46099
    SymbolToStringRegistry[symbol] = string;
46100
    return symbol;
46101
  },
46102
  // `Symbol.keyFor` method
46103
  // https://tc39.es/ecma262/#sec-symbol.keyfor
46104
  keyFor: function keyFor(sym) {
46105
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
46106
    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
46107
  },
46108
  useSetter: function () { USE_SETTER = true; },
46109
  useSimple: function () { USE_SETTER = false; }
46110
});
46111
46112
$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {
46113
  // `Object.create` method
46114
  // https://tc39.es/ecma262/#sec-object.create
46115
  create: $create,
46116
  // `Object.defineProperty` method
46117
  // https://tc39.es/ecma262/#sec-object.defineproperty
46118
  defineProperty: $defineProperty,
46119
  // `Object.defineProperties` method
46120
  // https://tc39.es/ecma262/#sec-object.defineproperties
46121
  defineProperties: $defineProperties,
46122
  // `Object.getOwnPropertyDescriptor` method
46123
  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors
46124
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor
46125
});
46126
46127
$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {
46128
  // `Object.getOwnPropertyNames` method
46129
  // https://tc39.es/ecma262/#sec-object.getownpropertynames
46130
  getOwnPropertyNames: $getOwnPropertyNames,
46131
  // `Object.getOwnPropertySymbols` method
46132
  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols
46133
  getOwnPropertySymbols: $getOwnPropertySymbols
46134
});
46135
46136
// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
46137
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
46138
$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {
46139
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
46140
    return getOwnPropertySymbolsModule.f(toObject(it));
46141
  }
46142
});
46143
46144
// `JSON.stringify` method behavior with symbols
46145
// https://tc39.es/ecma262/#sec-json.stringify
46146
if ($stringify) {
46147
  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {
46148
    var symbol = $Symbol();
46149
    // MS Edge converts symbol values to JSON as {}
46150
    return $stringify([symbol]) != '[null]'
46151
      // WebKit converts symbol values to JSON as null
46152
      || $stringify({ a: symbol }) != '{}'
46153
      // V8 throws on boxed symbols
46154
      || $stringify(Object(symbol)) != '{}';
46155
  });
46156
46157
  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {
46158
    // eslint-disable-next-line no-unused-vars -- required for `.length`
46159
    stringify: function stringify(it, replacer, space) {
46160
      var args = arraySlice(arguments);
46161
      var $replacer = replacer;
46162
      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
46163
      if (!isArray(replacer)) replacer = function (key, value) {
46164
        if (isCallable($replacer)) value = call($replacer, this, key, value);
46165
        if (!isSymbol(value)) return value;
46166
      };
46167
      args[1] = replacer;
46168
      return apply($stringify, null, args);
46169
    }
46170
  });
46171
}
46172
46173
// `Symbol.prototype[@@toPrimitive]` method
46174
// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
46175
if (!SymbolPrototype[TO_PRIMITIVE]) {
46176
  var valueOf = SymbolPrototype.valueOf;
46177
  // eslint-disable-next-line no-unused-vars -- required for .length
46178
  redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {
46179
    // TODO: improve hint logic
46180
    return call(valueOf, this);
46181
  });
46182
}
46183
// `Symbol.prototype[@@toStringTag]` property
46184
// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag
46185
setToStringTag($Symbol, SYMBOL);
46186
46187
hiddenKeys[HIDDEN] = true;
46188
46189
46190
/***/ }),
46191
46192
/***/ 6649:
46193
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46194
46195
var defineWellKnownSymbol = __webpack_require__(7235);
46196
46197
// `Symbol.toPrimitive` well-known symbol
46198
// https://tc39.es/ecma262/#sec-symbol.toprimitive
46199
defineWellKnownSymbol('toPrimitive');
46200
46201
46202
/***/ }),
46203
46204
/***/ 3680:
46205
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46206
46207
var defineWellKnownSymbol = __webpack_require__(7235);
46208
46209
// `Symbol.toStringTag` well-known symbol
46210
// https://tc39.es/ecma262/#sec-symbol.tostringtag
46211
defineWellKnownSymbol('toStringTag');
46212
46213
46214
/***/ }),
46215
46216
/***/ 2990:
46217
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46218
46219
"use strict";
46220
46221
var uncurryThis = __webpack_require__(1702);
46222
var ArrayBufferViewCore = __webpack_require__(2094);
46223
var $ArrayCopyWithin = __webpack_require__(1048);
46224
46225
var u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);
46226
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46227
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46228
46229
// `%TypedArray%.prototype.copyWithin` method
46230
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin
46231
exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {
46232
  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
46233
});
46234
46235
46236
/***/ }),
46237
46238
/***/ 8927:
46239
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46240
46241
"use strict";
46242
46243
var ArrayBufferViewCore = __webpack_require__(2094);
46244
var $every = (__webpack_require__(2092).every);
46245
46246
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46247
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46248
46249
// `%TypedArray%.prototype.every` method
46250
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every
46251
exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {
46252
  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
46253
});
46254
46255
46256
/***/ }),
46257
46258
/***/ 3105:
46259
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46260
46261
"use strict";
46262
46263
var ArrayBufferViewCore = __webpack_require__(2094);
46264
var call = __webpack_require__(6916);
46265
var $fill = __webpack_require__(1285);
46266
46267
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46268
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46269
46270
// `%TypedArray%.prototype.fill` method
46271
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill
46272
exportTypedArrayMethod('fill', function fill(value /* , start, end */) {
46273
  var length = arguments.length;
46274
  return call(
46275
    $fill,
46276
    aTypedArray(this),
46277
    value,
46278
    length > 1 ? arguments[1] : undefined,
46279
    length > 2 ? arguments[2] : undefined
46280
  );
46281
});
46282
46283
46284
/***/ }),
46285
46286
/***/ 5035:
46287
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46288
46289
"use strict";
46290
46291
var ArrayBufferViewCore = __webpack_require__(2094);
46292
var $filter = (__webpack_require__(2092).filter);
46293
var fromSpeciesAndList = __webpack_require__(3074);
46294
46295
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46296
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46297
46298
// `%TypedArray%.prototype.filter` method
46299
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter
46300
exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {
46301
  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
46302
  return fromSpeciesAndList(this, list);
46303
});
46304
46305
46306
/***/ }),
46307
46308
/***/ 7174:
46309
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46310
46311
"use strict";
46312
46313
var ArrayBufferViewCore = __webpack_require__(2094);
46314
var $findIndex = (__webpack_require__(2092).findIndex);
46315
46316
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46317
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46318
46319
// `%TypedArray%.prototype.findIndex` method
46320
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex
46321
exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {
46322
  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
46323
});
46324
46325
46326
/***/ }),
46327
46328
/***/ 4345:
46329
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46330
46331
"use strict";
46332
46333
var ArrayBufferViewCore = __webpack_require__(2094);
46334
var $find = (__webpack_require__(2092).find);
46335
46336
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46337
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46338
46339
// `%TypedArray%.prototype.find` method
46340
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find
46341
exportTypedArrayMethod('find', function find(predicate /* , thisArg */) {
46342
  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
46343
});
46344
46345
46346
/***/ }),
46347
46348
/***/ 4197:
46349
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46350
46351
var createTypedArrayConstructor = __webpack_require__(9843);
46352
46353
// `Float32Array` constructor
46354
// https://tc39.es/ecma262/#sec-typedarray-objects
46355
createTypedArrayConstructor('Float32', function (init) {
46356
  return function Float32Array(data, byteOffset, length) {
46357
    return init(this, data, byteOffset, length);
46358
  };
46359
});
46360
46361
46362
/***/ }),
46363
46364
/***/ 6495:
46365
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46366
46367
var createTypedArrayConstructor = __webpack_require__(9843);
46368
46369
// `Float64Array` constructor
46370
// https://tc39.es/ecma262/#sec-typedarray-objects
46371
createTypedArrayConstructor('Float64', function (init) {
46372
  return function Float64Array(data, byteOffset, length) {
46373
    return init(this, data, byteOffset, length);
46374
  };
46375
});
46376
46377
46378
/***/ }),
46379
46380
/***/ 2846:
46381
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46382
46383
"use strict";
46384
46385
var ArrayBufferViewCore = __webpack_require__(2094);
46386
var $forEach = (__webpack_require__(2092).forEach);
46387
46388
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46389
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46390
46391
// `%TypedArray%.prototype.forEach` method
46392
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach
46393
exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {
46394
  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
46395
});
46396
46397
46398
/***/ }),
46399
46400
/***/ 8145:
46401
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46402
46403
"use strict";
46404
46405
var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(3832);
46406
var exportTypedArrayStaticMethod = (__webpack_require__(2094).exportTypedArrayStaticMethod);
46407
var typedArrayFrom = __webpack_require__(7321);
46408
46409
// `%TypedArray%.from` method
46410
// https://tc39.es/ecma262/#sec-%typedarray%.from
46411
exportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
46412
46413
46414
/***/ }),
46415
46416
/***/ 4731:
46417
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46418
46419
"use strict";
46420
46421
var ArrayBufferViewCore = __webpack_require__(2094);
46422
var $includes = (__webpack_require__(1318).includes);
46423
46424
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46425
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46426
46427
// `%TypedArray%.prototype.includes` method
46428
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes
46429
exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {
46430
  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
46431
});
46432
46433
46434
/***/ }),
46435
46436
/***/ 7209:
46437
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46438
46439
"use strict";
46440
46441
var ArrayBufferViewCore = __webpack_require__(2094);
46442
var $indexOf = (__webpack_require__(1318).indexOf);
46443
46444
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46445
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46446
46447
// `%TypedArray%.prototype.indexOf` method
46448
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof
46449
exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {
46450
  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
46451
});
46452
46453
46454
/***/ }),
46455
46456
/***/ 5109:
46457
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46458
46459
var createTypedArrayConstructor = __webpack_require__(9843);
46460
46461
// `Int16Array` constructor
46462
// https://tc39.es/ecma262/#sec-typedarray-objects
46463
createTypedArrayConstructor('Int16', function (init) {
46464
  return function Int16Array(data, byteOffset, length) {
46465
    return init(this, data, byteOffset, length);
46466
  };
46467
});
46468
46469
46470
/***/ }),
46471
46472
/***/ 5125:
46473
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46474
46475
var createTypedArrayConstructor = __webpack_require__(9843);
46476
46477
// `Int32Array` constructor
46478
// https://tc39.es/ecma262/#sec-typedarray-objects
46479
createTypedArrayConstructor('Int32', function (init) {
46480
  return function Int32Array(data, byteOffset, length) {
46481
    return init(this, data, byteOffset, length);
46482
  };
46483
});
46484
46485
46486
/***/ }),
46487
46488
/***/ 7145:
46489
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46490
46491
var createTypedArrayConstructor = __webpack_require__(9843);
46492
46493
// `Int8Array` constructor
46494
// https://tc39.es/ecma262/#sec-typedarray-objects
46495
createTypedArrayConstructor('Int8', function (init) {
46496
  return function Int8Array(data, byteOffset, length) {
46497
    return init(this, data, byteOffset, length);
46498
  };
46499
});
46500
46501
46502
/***/ }),
46503
46504
/***/ 6319:
46505
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46506
46507
"use strict";
46508
46509
var global = __webpack_require__(7854);
46510
var uncurryThis = __webpack_require__(1702);
46511
var PROPER_FUNCTION_NAME = (__webpack_require__(6530).PROPER);
46512
var ArrayBufferViewCore = __webpack_require__(2094);
46513
var ArrayIterators = __webpack_require__(6992);
46514
var wellKnownSymbol = __webpack_require__(5112);
46515
46516
var ITERATOR = wellKnownSymbol('iterator');
46517
var Uint8Array = global.Uint8Array;
46518
var arrayValues = uncurryThis(ArrayIterators.values);
46519
var arrayKeys = uncurryThis(ArrayIterators.keys);
46520
var arrayEntries = uncurryThis(ArrayIterators.entries);
46521
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46522
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46523
var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];
46524
46525
var PROPER_ARRAY_VALUES_NAME = !!nativeTypedArrayIterator && nativeTypedArrayIterator.name === 'values';
46526
46527
var typedArrayValues = function values() {
46528
  return arrayValues(aTypedArray(this));
46529
};
46530
46531
// `%TypedArray%.prototype.entries` method
46532
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries
46533
exportTypedArrayMethod('entries', function entries() {
46534
  return arrayEntries(aTypedArray(this));
46535
});
46536
// `%TypedArray%.prototype.keys` method
46537
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys
46538
exportTypedArrayMethod('keys', function keys() {
46539
  return arrayKeys(aTypedArray(this));
46540
});
46541
// `%TypedArray%.prototype.values` method
46542
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
46543
exportTypedArrayMethod('values', typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
46544
// `%TypedArray%.prototype[@@iterator]` method
46545
// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
46546
exportTypedArrayMethod(ITERATOR, typedArrayValues, PROPER_FUNCTION_NAME && !PROPER_ARRAY_VALUES_NAME);
46547
46548
46549
/***/ }),
46550
46551
/***/ 8867:
46552
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46553
46554
"use strict";
46555
46556
var ArrayBufferViewCore = __webpack_require__(2094);
46557
var uncurryThis = __webpack_require__(1702);
46558
46559
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46560
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46561
var $join = uncurryThis([].join);
46562
46563
// `%TypedArray%.prototype.join` method
46564
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join
46565
exportTypedArrayMethod('join', function join(separator) {
46566
  return $join(aTypedArray(this), separator);
46567
});
46568
46569
46570
/***/ }),
46571
46572
/***/ 7789:
46573
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46574
46575
"use strict";
46576
46577
var ArrayBufferViewCore = __webpack_require__(2094);
46578
var apply = __webpack_require__(2104);
46579
var $lastIndexOf = __webpack_require__(6583);
46580
46581
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46582
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46583
46584
// `%TypedArray%.prototype.lastIndexOf` method
46585
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof
46586
exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {
46587
  var length = arguments.length;
46588
  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);
46589
});
46590
46591
46592
/***/ }),
46593
46594
/***/ 3739:
46595
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46596
46597
"use strict";
46598
46599
var ArrayBufferViewCore = __webpack_require__(2094);
46600
var $map = (__webpack_require__(2092).map);
46601
var typedArraySpeciesConstructor = __webpack_require__(6304);
46602
46603
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46604
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46605
46606
// `%TypedArray%.prototype.map` method
46607
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
46608
exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {
46609
  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
46610
    return new (typedArraySpeciesConstructor(O))(length);
46611
  });
46612
});
46613
46614
46615
/***/ }),
46616
46617
/***/ 4483:
46618
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46619
46620
"use strict";
46621
46622
var ArrayBufferViewCore = __webpack_require__(2094);
46623
var $reduceRight = (__webpack_require__(3671).right);
46624
46625
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46626
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46627
46628
// `%TypedArray%.prototype.reduceRicht` method
46629
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright
46630
exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {
46631
  var length = arguments.length;
46632
  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);
46633
});
46634
46635
46636
/***/ }),
46637
46638
/***/ 9368:
46639
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46640
46641
"use strict";
46642
46643
var ArrayBufferViewCore = __webpack_require__(2094);
46644
var $reduce = (__webpack_require__(3671).left);
46645
46646
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46647
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46648
46649
// `%TypedArray%.prototype.reduce` method
46650
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce
46651
exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {
46652
  var length = arguments.length;
46653
  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);
46654
});
46655
46656
46657
/***/ }),
46658
46659
/***/ 2056:
46660
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46661
46662
"use strict";
46663
46664
var ArrayBufferViewCore = __webpack_require__(2094);
46665
46666
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46667
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46668
var floor = Math.floor;
46669
46670
// `%TypedArray%.prototype.reverse` method
46671
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse
46672
exportTypedArrayMethod('reverse', function reverse() {
46673
  var that = this;
46674
  var length = aTypedArray(that).length;
46675
  var middle = floor(length / 2);
46676
  var index = 0;
46677
  var value;
46678
  while (index < middle) {
46679
    value = that[index];
46680
    that[index++] = that[--length];
46681
    that[length] = value;
46682
  } return that;
46683
});
46684
46685
46686
/***/ }),
46687
46688
/***/ 3462:
46689
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46690
46691
"use strict";
46692
46693
var global = __webpack_require__(7854);
46694
var ArrayBufferViewCore = __webpack_require__(2094);
46695
var lengthOfArrayLike = __webpack_require__(6244);
46696
var toOffset = __webpack_require__(4590);
46697
var toObject = __webpack_require__(7908);
46698
var fails = __webpack_require__(7293);
46699
46700
var RangeError = global.RangeError;
46701
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46702
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46703
46704
var FORCED = fails(function () {
46705
  // eslint-disable-next-line es/no-typed-arrays -- required for testing
46706
  new Int8Array(1).set({});
46707
});
46708
46709
// `%TypedArray%.prototype.set` method
46710
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set
46711
exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
46712
  aTypedArray(this);
46713
  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
46714
  var length = this.length;
46715
  var src = toObject(arrayLike);
46716
  var len = lengthOfArrayLike(src);
46717
  var index = 0;
46718
  if (len + offset > length) throw RangeError('Wrong length');
46719
  while (index < len) this[offset + index] = src[index++];
46720
}, FORCED);
46721
46722
46723
/***/ }),
46724
46725
/***/ 678:
46726
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46727
46728
"use strict";
46729
46730
var ArrayBufferViewCore = __webpack_require__(2094);
46731
var typedArraySpeciesConstructor = __webpack_require__(6304);
46732
var fails = __webpack_require__(7293);
46733
var arraySlice = __webpack_require__(206);
46734
46735
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46736
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46737
46738
var FORCED = fails(function () {
46739
  // eslint-disable-next-line es/no-typed-arrays -- required for testing
46740
  new Int8Array(1).slice();
46741
});
46742
46743
// `%TypedArray%.prototype.slice` method
46744
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice
46745
exportTypedArrayMethod('slice', function slice(start, end) {
46746
  var list = arraySlice(aTypedArray(this), start, end);
46747
  var C = typedArraySpeciesConstructor(this);
46748
  var index = 0;
46749
  var length = list.length;
46750
  var result = new C(length);
46751
  while (length > index) result[index] = list[index++];
46752
  return result;
46753
}, FORCED);
46754
46755
46756
/***/ }),
46757
46758
/***/ 7462:
46759
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46760
46761
"use strict";
46762
46763
var ArrayBufferViewCore = __webpack_require__(2094);
46764
var $some = (__webpack_require__(2092).some);
46765
46766
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46767
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46768
46769
// `%TypedArray%.prototype.some` method
46770
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some
46771
exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {
46772
  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
46773
});
46774
46775
46776
/***/ }),
46777
46778
/***/ 3824:
46779
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46780
46781
"use strict";
46782
46783
var global = __webpack_require__(7854);
46784
var uncurryThis = __webpack_require__(1702);
46785
var fails = __webpack_require__(7293);
46786
var aCallable = __webpack_require__(9662);
46787
var internalSort = __webpack_require__(4362);
46788
var ArrayBufferViewCore = __webpack_require__(2094);
46789
var FF = __webpack_require__(8886);
46790
var IE_OR_EDGE = __webpack_require__(256);
46791
var V8 = __webpack_require__(7392);
46792
var WEBKIT = __webpack_require__(8008);
46793
46794
var Array = global.Array;
46795
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46796
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46797
var Uint16Array = global.Uint16Array;
46798
var un$Sort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);
46799
46800
// WebKit
46801
var ACCEPT_INCORRECT_ARGUMENTS = !!un$Sort && !(fails(function () {
46802
  un$Sort(new Uint16Array(2), null);
46803
}) && fails(function () {
46804
  un$Sort(new Uint16Array(2), {});
46805
}));
46806
46807
var STABLE_SORT = !!un$Sort && !fails(function () {
46808
  // feature detection can be too slow, so check engines versions
46809
  if (V8) return V8 < 74;
46810
  if (FF) return FF < 67;
46811
  if (IE_OR_EDGE) return true;
46812
  if (WEBKIT) return WEBKIT < 602;
46813
46814
  var array = new Uint16Array(516);
46815
  var expected = Array(516);
46816
  var index, mod;
46817
46818
  for (index = 0; index < 516; index++) {
46819
    mod = index % 4;
46820
    array[index] = 515 - index;
46821
    expected[index] = index - 2 * mod + 3;
46822
  }
46823
46824
  un$Sort(array, function (a, b) {
46825
    return (a / 4 | 0) - (b / 4 | 0);
46826
  });
46827
46828
  for (index = 0; index < 516; index++) {
46829
    if (array[index] !== expected[index]) return true;
46830
  }
46831
});
46832
46833
var getSortCompare = function (comparefn) {
46834
  return function (x, y) {
46835
    if (comparefn !== undefined) return +comparefn(x, y) || 0;
46836
    // eslint-disable-next-line no-self-compare -- NaN check
46837
    if (y !== y) return -1;
46838
    // eslint-disable-next-line no-self-compare -- NaN check
46839
    if (x !== x) return 1;
46840
    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;
46841
    return x > y;
46842
  };
46843
};
46844
46845
// `%TypedArray%.prototype.sort` method
46846
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
46847
exportTypedArrayMethod('sort', function sort(comparefn) {
46848
  if (comparefn !== undefined) aCallable(comparefn);
46849
  if (STABLE_SORT) return un$Sort(this, comparefn);
46850
46851
  return internalSort(aTypedArray(this), getSortCompare(comparefn));
46852
}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);
46853
46854
46855
/***/ }),
46856
46857
/***/ 5021:
46858
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46859
46860
"use strict";
46861
46862
var ArrayBufferViewCore = __webpack_require__(2094);
46863
var toLength = __webpack_require__(7466);
46864
var toAbsoluteIndex = __webpack_require__(1400);
46865
var typedArraySpeciesConstructor = __webpack_require__(6304);
46866
46867
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46868
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46869
46870
// `%TypedArray%.prototype.subarray` method
46871
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray
46872
exportTypedArrayMethod('subarray', function subarray(begin, end) {
46873
  var O = aTypedArray(this);
46874
  var length = O.length;
46875
  var beginIndex = toAbsoluteIndex(begin, length);
46876
  var C = typedArraySpeciesConstructor(O);
46877
  return new C(
46878
    O.buffer,
46879
    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
46880
    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)
46881
  );
46882
});
46883
46884
46885
/***/ }),
46886
46887
/***/ 2974:
46888
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46889
46890
"use strict";
46891
46892
var global = __webpack_require__(7854);
46893
var apply = __webpack_require__(2104);
46894
var ArrayBufferViewCore = __webpack_require__(2094);
46895
var fails = __webpack_require__(7293);
46896
var arraySlice = __webpack_require__(206);
46897
46898
var Int8Array = global.Int8Array;
46899
var aTypedArray = ArrayBufferViewCore.aTypedArray;
46900
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
46901
var $toLocaleString = [].toLocaleString;
46902
46903
// iOS Safari 6.x fails here
46904
var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {
46905
  $toLocaleString.call(new Int8Array(1));
46906
});
46907
46908
var FORCED = fails(function () {
46909
  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();
46910
}) || !fails(function () {
46911
  Int8Array.prototype.toLocaleString.call([1, 2]);
46912
});
46913
46914
// `%TypedArray%.prototype.toLocaleString` method
46915
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring
46916
exportTypedArrayMethod('toLocaleString', function toLocaleString() {
46917
  return apply(
46918
    $toLocaleString,
46919
    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),
46920
    arraySlice(arguments)
46921
  );
46922
}, FORCED);
46923
46924
46925
/***/ }),
46926
46927
/***/ 5016:
46928
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46929
46930
"use strict";
46931
46932
var exportTypedArrayMethod = (__webpack_require__(2094).exportTypedArrayMethod);
46933
var fails = __webpack_require__(7293);
46934
var global = __webpack_require__(7854);
46935
var uncurryThis = __webpack_require__(1702);
46936
46937
var Uint8Array = global.Uint8Array;
46938
var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};
46939
var arrayToString = [].toString;
46940
var join = uncurryThis([].join);
46941
46942
if (fails(function () { arrayToString.call({}); })) {
46943
  arrayToString = function toString() {
46944
    return join(this);
46945
  };
46946
}
46947
46948
var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;
46949
46950
// `%TypedArray%.prototype.toString` method
46951
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring
46952
exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);
46953
46954
46955
/***/ }),
46956
46957
/***/ 8255:
46958
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46959
46960
var createTypedArrayConstructor = __webpack_require__(9843);
46961
46962
// `Uint16Array` constructor
46963
// https://tc39.es/ecma262/#sec-typedarray-objects
46964
createTypedArrayConstructor('Uint16', function (init) {
46965
  return function Uint16Array(data, byteOffset, length) {
46966
    return init(this, data, byteOffset, length);
46967
  };
46968
});
46969
46970
46971
/***/ }),
46972
46973
/***/ 9135:
46974
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46975
46976
var createTypedArrayConstructor = __webpack_require__(9843);
46977
46978
// `Uint32Array` constructor
46979
// https://tc39.es/ecma262/#sec-typedarray-objects
46980
createTypedArrayConstructor('Uint32', function (init) {
46981
  return function Uint32Array(data, byteOffset, length) {
46982
    return init(this, data, byteOffset, length);
46983
  };
46984
});
46985
46986
46987
/***/ }),
46988
46989
/***/ 2472:
46990
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
46991
46992
var createTypedArrayConstructor = __webpack_require__(9843);
46993
46994
// `Uint8Array` constructor
46995
// https://tc39.es/ecma262/#sec-typedarray-objects
46996
createTypedArrayConstructor('Uint8', function (init) {
46997
  return function Uint8Array(data, byteOffset, length) {
46998
    return init(this, data, byteOffset, length);
46999
  };
47000
});
47001
47002
47003
/***/ }),
47004
47005
/***/ 9743:
47006
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47007
47008
var createTypedArrayConstructor = __webpack_require__(9843);
47009
47010
// `Uint8ClampedArray` constructor
47011
// https://tc39.es/ecma262/#sec-typedarray-objects
47012
createTypedArrayConstructor('Uint8', function (init) {
47013
  return function Uint8ClampedArray(data, byteOffset, length) {
47014
    return init(this, data, byteOffset, length);
47015
  };
47016
}, true);
47017
47018
47019
/***/ }),
47020
47021
/***/ 8628:
47022
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47023
47024
// TODO: Remove from `core-js@4`
47025
__webpack_require__(9170);
47026
47027
47028
/***/ }),
47029
47030
/***/ 5743:
47031
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47032
47033
// TODO: Remove from `core-js@4`
47034
__webpack_require__(5837);
47035
47036
47037
/***/ }),
47038
47039
/***/ 7314:
47040
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47041
47042
// TODO: Remove from `core-js@4`
47043
__webpack_require__(7922);
47044
47045
47046
/***/ }),
47047
47048
/***/ 6290:
47049
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47050
47051
// TODO: Remove from `core-js@4`
47052
__webpack_require__(4668);
47053
47054
47055
/***/ }),
47056
47057
/***/ 7479:
47058
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47059
47060
"use strict";
47061
47062
var $ = __webpack_require__(2109);
47063
var newPromiseCapabilityModule = __webpack_require__(8523);
47064
var perform = __webpack_require__(2534);
47065
47066
// `Promise.try` method
47067
// https://github.com/tc39/proposal-promise-try
47068
$({ target: 'Promise', stat: true }, {
47069
  'try': function (callbackfn) {
47070
    var promiseCapability = newPromiseCapabilityModule.f(this);
47071
    var result = perform(callbackfn);
47072
    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
47073
    return promiseCapability.promise;
47074
  }
47075
});
47076
47077
47078
/***/ }),
47079
47080
/***/ 3728:
47081
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47082
47083
// TODO: Remove from `core-js@4`
47084
__webpack_require__(6373);
47085
47086
47087
/***/ }),
47088
47089
/***/ 4747:
47090
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47091
47092
var global = __webpack_require__(7854);
47093
var DOMIterables = __webpack_require__(8324);
47094
var DOMTokenListPrototype = __webpack_require__(8509);
47095
var forEach = __webpack_require__(8533);
47096
var createNonEnumerableProperty = __webpack_require__(8880);
47097
47098
var handlePrototype = function (CollectionPrototype) {
47099
  // some Chrome versions have non-configurable methods on DOMTokenList
47100
  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
47101
    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
47102
  } catch (error) {
47103
    CollectionPrototype.forEach = forEach;
47104
  }
47105
};
47106
47107
for (var COLLECTION_NAME in DOMIterables) {
47108
  if (DOMIterables[COLLECTION_NAME]) {
47109
    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);
47110
  }
47111
}
47112
47113
handlePrototype(DOMTokenListPrototype);
47114
47115
47116
/***/ }),
47117
47118
/***/ 3948:
47119
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47120
47121
var global = __webpack_require__(7854);
47122
var DOMIterables = __webpack_require__(8324);
47123
var DOMTokenListPrototype = __webpack_require__(8509);
47124
var ArrayIteratorMethods = __webpack_require__(6992);
47125
var createNonEnumerableProperty = __webpack_require__(8880);
47126
var wellKnownSymbol = __webpack_require__(5112);
47127
47128
var ITERATOR = wellKnownSymbol('iterator');
47129
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
47130
var ArrayValues = ArrayIteratorMethods.values;
47131
47132
var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
47133
  if (CollectionPrototype) {
47134
    // some Chrome versions have non-configurable methods on DOMTokenList
47135
    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
47136
      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
47137
    } catch (error) {
47138
      CollectionPrototype[ITERATOR] = ArrayValues;
47139
    }
47140
    if (!CollectionPrototype[TO_STRING_TAG]) {
47141
      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
47142
    }
47143
    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
47144
      // some Chrome versions have non-configurable methods on DOMTokenList
47145
      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
47146
        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
47147
      } catch (error) {
47148
        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
47149
      }
47150
    }
47151
  }
47152
};
47153
47154
for (var COLLECTION_NAME in DOMIterables) {
47155
  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);
47156
}
47157
47158
handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
47159
47160
47161
/***/ }),
47162
47163
/***/ 3753:
47164
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
47165
47166
"use strict";
47167
47168
var $ = __webpack_require__(2109);
47169
var call = __webpack_require__(6916);
47170
47171
// `URL.prototype.toJSON` method
47172
// https://url.spec.whatwg.org/#dom-url-tojson
47173
$({ target: 'URL', proto: true, enumerable: true }, {
47174
  toJSON: function toJSON() {
47175
    return call(URL.prototype.toString, this);
47176
  }
47177
});
47178
47179
47180
/***/ }),
47181
47182
/***/ 1150:
47183
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
47184
47185
var parent = __webpack_require__(7633);
47186
__webpack_require__(3948);
47187
47188
module.exports = parent;
47189
47190
47191
/***/ }),
47192
47193
/***/ 251:
47194
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
47195
47196
var objectKeys = __webpack_require__(2215);
47197
var isArguments = __webpack_require__(2584);
47198
var is = __webpack_require__(609);
47199
var isRegex = __webpack_require__(8420);
47200
var flags = __webpack_require__(2847);
47201
var isDate = __webpack_require__(8923);
47202
47203
var getTime = Date.prototype.getTime;
47204
47205
function deepEqual(actual, expected, options) {
47206
  var opts = options || {};
47207
47208
  // 7.1. All identical values are equivalent, as determined by ===.
47209
  if (opts.strict ? is(actual, expected) : actual === expected) {
47210
    return true;
47211
  }
47212
47213
  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.
47214
  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {
47215
    return opts.strict ? is(actual, expected) : actual == expected;
47216
  }
47217
47218
  /*
47219
   * 7.4. For all other Object pairs, including Array objects, equivalence is
47220
   * determined by having the same number of owned properties (as verified
47221
   * with Object.prototype.hasOwnProperty.call), the same set of keys
47222
   * (although not necessarily the same order), equivalent values for every
47223
   * corresponding key, and an identical 'prototype' property. Note: this
47224
   * accounts for both named and indexed properties on Arrays.
47225
   */
47226
  // eslint-disable-next-line no-use-before-define
47227
  return objEquiv(actual, expected, opts);
47228
}
47229
47230
function isUndefinedOrNull(value) {
47231
  return value === null || value === undefined;
47232
}
47233
47234
function isBuffer(x) {
47235
  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {
47236
    return false;
47237
  }
47238
  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
47239
    return false;
47240
  }
47241
  if (x.length > 0 && typeof x[0] !== 'number') {
47242
    return false;
47243
  }
47244
  return true;
47245
}
47246
47247
function objEquiv(a, b, opts) {
47248
  /* eslint max-statements: [2, 50] */
47249
  var i, key;
47250
  if (typeof a !== typeof b) { return false; }
47251
  if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }
47252
47253
  // an identical 'prototype' property.
47254
  if (a.prototype !== b.prototype) { return false; }
47255
47256
  if (isArguments(a) !== isArguments(b)) { return false; }
47257
47258
  var aIsRegex = isRegex(a);
47259
  var bIsRegex = isRegex(b);
47260
  if (aIsRegex !== bIsRegex) { return false; }
47261
  if (aIsRegex || bIsRegex) {
47262
    return a.source === b.source && flags(a) === flags(b);
47263
  }
47264
47265
  if (isDate(a) && isDate(b)) {
47266
    return getTime.call(a) === getTime.call(b);
47267
  }
47268
47269
  var aIsBuffer = isBuffer(a);
47270
  var bIsBuffer = isBuffer(b);
47271
  if (aIsBuffer !== bIsBuffer) { return false; }
47272
  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here
47273
    if (a.length !== b.length) { return false; }
47274
    for (i = 0; i < a.length; i++) {
47275
      if (a[i] !== b[i]) { return false; }
47276
    }
47277
    return true;
47278
  }
47279
47280
  if (typeof a !== typeof b) { return false; }
47281
47282
  try {
47283
    var ka = objectKeys(a);
47284
    var kb = objectKeys(b);
47285
  } catch (e) { // happens when one is a string literal and the other isn't
47286
    return false;
47287
  }
47288
  // having the same number of owned properties (keys incorporates hasOwnProperty)
47289
  if (ka.length !== kb.length) { return false; }
47290
47291
  // the same set of keys (although not necessarily the same order),
47292
  ka.sort();
47293
  kb.sort();
47294
  // ~~~cheap key test
47295
  for (i = ka.length - 1; i >= 0; i--) {
47296
    if (ka[i] != kb[i]) { return false; }
47297
  }
47298
  // equivalent values for every corresponding key, and ~~~possibly expensive deep test
47299
  for (i = ka.length - 1; i >= 0; i--) {
47300
    key = ka[i];
47301
    if (!deepEqual(a[key], b[key], opts)) { return false; }
47302
  }
47303
47304
  return true;
47305
}
47306
47307
module.exports = deepEqual;
47308
47309
47310
/***/ }),
47311
47312
/***/ 4289:
47313
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
47314
47315
"use strict";
47316
47317
47318
var keys = __webpack_require__(2215);
47319
var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
47320
47321
var toStr = Object.prototype.toString;
47322
var concat = Array.prototype.concat;
47323
var origDefineProperty = Object.defineProperty;
47324
47325
var isFunction = function (fn) {
47326
	return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
47327
};
47328
47329
var hasPropertyDescriptors = __webpack_require__(1044)();
47330
47331
var supportsDescriptors = origDefineProperty && hasPropertyDescriptors;
47332
47333
var defineProperty = function (object, name, value, predicate) {
47334
	if (name in object && (!isFunction(predicate) || !predicate())) {
47335
		return;
47336
	}
47337
	if (supportsDescriptors) {
47338
		origDefineProperty(object, name, {
47339
			configurable: true,
47340
			enumerable: false,
47341
			value: value,
47342
			writable: true
47343
		});
47344
	} else {
47345
		object[name] = value; // eslint-disable-line no-param-reassign
47346
	}
47347
};
47348
47349
var defineProperties = function (object, map) {
47350
	var predicates = arguments.length > 2 ? arguments[2] : {};
47351
	var props = keys(map);
47352
	if (hasSymbols) {
47353
		props = concat.call(props, Object.getOwnPropertySymbols(map));
47354
	}
47355
	for (var i = 0; i < props.length; i += 1) {
47356
		defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
47357
	}
47358
};
47359
47360
defineProperties.supportsDescriptors = !!supportsDescriptors;
47361
47362
module.exports = defineProperties;
47363
47364
47365
/***/ }),
47366
47367
/***/ 8091:
47368
/***/ (function(module) {
47369
47370
"use strict";
47371
/**
47372
 * Code refactored from Mozilla Developer Network:
47373
 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
47374
 */
47375
47376
47377
47378
function assign(target, firstSource) {
47379
  if (target === undefined || target === null) {
47380
    throw new TypeError('Cannot convert first argument to object');
47381
  }
47382
47383
  var to = Object(target);
47384
  for (var i = 1; i < arguments.length; i++) {
47385
    var nextSource = arguments[i];
47386
    if (nextSource === undefined || nextSource === null) {
47387
      continue;
47388
    }
47389
47390
    var keysArray = Object.keys(Object(nextSource));
47391
    for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
47392
      var nextKey = keysArray[nextIndex];
47393
      var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
47394
      if (desc !== undefined && desc.enumerable) {
47395
        to[nextKey] = nextSource[nextKey];
47396
      }
47397
    }
47398
  }
47399
  return to;
47400
}
47401
47402
function polyfill() {
47403
  if (!Object.assign) {
47404
    Object.defineProperty(Object, 'assign', {
47405
      enumerable: false,
47406
      configurable: true,
47407
      writable: true,
47408
      value: assign
47409
    });
47410
  }
47411
}
47412
47413
module.exports = {
47414
  assign: assign,
47415
  polyfill: polyfill
47416
};
47417
47418
47419
/***/ }),
47420
47421
/***/ 7187:
47422
/***/ (function(module) {
47423
47424
"use strict";
47425
// Copyright Joyent, Inc. and other Node contributors.
47426
//
47427
// Permission is hereby granted, free of charge, to any person obtaining a
47428
// copy of this software and associated documentation files (the
47429
// "Software"), to deal in the Software without restriction, including
47430
// without limitation the rights to use, copy, modify, merge, publish,
47431
// distribute, sublicense, and/or sell copies of the Software, and to permit
47432
// persons to whom the Software is furnished to do so, subject to the
47433
// following conditions:
47434
//
47435
// The above copyright notice and this permission notice shall be included
47436
// in all copies or substantial portions of the Software.
47437
//
47438
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
47439
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
47440
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
47441
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
47442
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
47443
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
47444
// USE OR OTHER DEALINGS IN THE SOFTWARE.
47445
47446
47447
47448
var R = typeof Reflect === 'object' ? Reflect : null
47449
var ReflectApply = R && typeof R.apply === 'function'
47450
  ? R.apply
47451
  : function ReflectApply(target, receiver, args) {
47452
    return Function.prototype.apply.call(target, receiver, args);
47453
  }
47454
47455
var ReflectOwnKeys
47456
if (R && typeof R.ownKeys === 'function') {
47457
  ReflectOwnKeys = R.ownKeys
47458
} else if (Object.getOwnPropertySymbols) {
47459
  ReflectOwnKeys = function ReflectOwnKeys(target) {
47460
    return Object.getOwnPropertyNames(target)
47461
      .concat(Object.getOwnPropertySymbols(target));
47462
  };
47463
} else {
47464
  ReflectOwnKeys = function ReflectOwnKeys(target) {
47465
    return Object.getOwnPropertyNames(target);
47466
  };
47467
}
47468
47469
function ProcessEmitWarning(warning) {
47470
  if (console && console.warn) console.warn(warning);
47471
}
47472
47473
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
47474
  return value !== value;
47475
}
47476
47477
function EventEmitter() {
47478
  EventEmitter.init.call(this);
47479
}
47480
module.exports = EventEmitter;
47481
module.exports.once = once;
47482
47483
// Backwards-compat with node 0.10.x
47484
EventEmitter.EventEmitter = EventEmitter;
47485
47486
EventEmitter.prototype._events = undefined;
47487
EventEmitter.prototype._eventsCount = 0;
47488
EventEmitter.prototype._maxListeners = undefined;
47489
47490
// By default EventEmitters will print a warning if more than 10 listeners are
47491
// added to it. This is a useful default which helps finding memory leaks.
47492
var defaultMaxListeners = 10;
47493
47494
function checkListener(listener) {
47495
  if (typeof listener !== 'function') {
47496
    throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
47497
  }
47498
}
47499
47500
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
47501
  enumerable: true,
47502
  get: function() {
47503
    return defaultMaxListeners;
47504
  },
47505
  set: function(arg) {
47506
    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
47507
      throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
47508
    }
47509
    defaultMaxListeners = arg;
47510
  }
47511
});
47512
47513
EventEmitter.init = function() {
47514
47515
  if (this._events === undefined ||
47516
      this._events === Object.getPrototypeOf(this)._events) {
47517
    this._events = Object.create(null);
47518
    this._eventsCount = 0;
47519
  }
47520
47521
  this._maxListeners = this._maxListeners || undefined;
47522
};
47523
47524
// Obviously not all Emitters should be limited to 10. This function allows
47525
// that to be increased. Set to zero for unlimited.
47526
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
47527
  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
47528
    throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
47529
  }
47530
  this._maxListeners = n;
47531
  return this;
47532
};
47533
47534
function _getMaxListeners(that) {
47535
  if (that._maxListeners === undefined)
47536
    return EventEmitter.defaultMaxListeners;
47537
  return that._maxListeners;
47538
}
47539
47540
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
47541
  return _getMaxListeners(this);
47542
};
47543
47544
EventEmitter.prototype.emit = function emit(type) {
47545
  var args = [];
47546
  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
47547
  var doError = (type === 'error');
47548
47549
  var events = this._events;
47550
  if (events !== undefined)
47551
    doError = (doError && events.error === undefined);
47552
  else if (!doError)
47553
    return false;
47554
47555
  // If there is no 'error' event listener then throw.
47556
  if (doError) {
47557
    var er;
47558
    if (args.length > 0)
47559
      er = args[0];
47560
    if (er instanceof Error) {
47561
      // Note: The comments on the `throw` lines are intentional, they show
47562
      // up in Node's output if this results in an unhandled exception.
47563
      throw er; // Unhandled 'error' event
47564
    }
47565
    // At least give some kind of context to the user
47566
    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
47567
    err.context = er;
47568
    throw err; // Unhandled 'error' event
47569
  }
47570
47571
  var handler = events[type];
47572
47573
  if (handler === undefined)
47574
    return false;
47575
47576
  if (typeof handler === 'function') {
47577
    ReflectApply(handler, this, args);
47578
  } else {
47579
    var len = handler.length;
47580
    var listeners = arrayClone(handler, len);
47581
    for (var i = 0; i < len; ++i)
47582
      ReflectApply(listeners[i], this, args);
47583
  }
47584
47585
  return true;
47586
};
47587
47588
function _addListener(target, type, listener, prepend) {
47589
  var m;
47590
  var events;
47591
  var existing;
47592
47593
  checkListener(listener);
47594
47595
  events = target._events;
47596
  if (events === undefined) {
47597
    events = target._events = Object.create(null);
47598
    target._eventsCount = 0;
47599
  } else {
47600
    // To avoid recursion in the case that type === "newListener"! Before
47601
    // adding it to the listeners, first emit "newListener".
47602
    if (events.newListener !== undefined) {
47603
      target.emit('newListener', type,
47604
                  listener.listener ? listener.listener : listener);
47605
47606
      // Re-assign `events` because a newListener handler could have caused the
47607
      // this._events to be assigned to a new object
47608
      events = target._events;
47609
    }
47610
    existing = events[type];
47611
  }
47612
47613
  if (existing === undefined) {
47614
    // Optimize the case of one listener. Don't need the extra array object.
47615
    existing = events[type] = listener;
47616
    ++target._eventsCount;
47617
  } else {
47618
    if (typeof existing === 'function') {
47619
      // Adding the second element, need to change to array.
47620
      existing = events[type] =
47621
        prepend ? [listener, existing] : [existing, listener];
47622
      // If we've already got an array, just append.
47623
    } else if (prepend) {
47624
      existing.unshift(listener);
47625
    } else {
47626
      existing.push(listener);
47627
    }
47628
47629
    // Check for listener leak
47630
    m = _getMaxListeners(target);
47631
    if (m > 0 && existing.length > m && !existing.warned) {
47632
      existing.warned = true;
47633
      // No error code for this since it is a Warning
47634
      // eslint-disable-next-line no-restricted-syntax
47635
      var w = new Error('Possible EventEmitter memory leak detected. ' +
47636
                          existing.length + ' ' + String(type) + ' listeners ' +
47637
                          'added. Use emitter.setMaxListeners() to ' +
47638
                          'increase limit');
47639
      w.name = 'MaxListenersExceededWarning';
47640
      w.emitter = target;
47641
      w.type = type;
47642
      w.count = existing.length;
47643
      ProcessEmitWarning(w);
47644
    }
47645
  }
47646
47647
  return target;
47648
}
47649
47650
EventEmitter.prototype.addListener = function addListener(type, listener) {
47651
  return _addListener(this, type, listener, false);
47652
};
47653
47654
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
47655
47656
EventEmitter.prototype.prependListener =
47657
    function prependListener(type, listener) {
47658
      return _addListener(this, type, listener, true);
47659
    };
47660
47661
function onceWrapper() {
47662
  if (!this.fired) {
47663
    this.target.removeListener(this.type, this.wrapFn);
47664
    this.fired = true;
47665
    if (arguments.length === 0)
47666
      return this.listener.call(this.target);
47667
    return this.listener.apply(this.target, arguments);
47668
  }
47669
}
47670
47671
function _onceWrap(target, type, listener) {
47672
  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
47673
  var wrapped = onceWrapper.bind(state);
47674
  wrapped.listener = listener;
47675
  state.wrapFn = wrapped;
47676
  return wrapped;
47677
}
47678
47679
EventEmitter.prototype.once = function once(type, listener) {
47680
  checkListener(listener);
47681
  this.on(type, _onceWrap(this, type, listener));
47682
  return this;
47683
};
47684
47685
EventEmitter.prototype.prependOnceListener =
47686
    function prependOnceListener(type, listener) {
47687
      checkListener(listener);
47688
      this.prependListener(type, _onceWrap(this, type, listener));
47689
      return this;
47690
    };
47691
47692
// Emits a 'removeListener' event if and only if the listener was removed.
47693
EventEmitter.prototype.removeListener =
47694
    function removeListener(type, listener) {
47695
      var list, events, position, i, originalListener;
47696
47697
      checkListener(listener);
47698
47699
      events = this._events;
47700
      if (events === undefined)
47701
        return this;
47702
47703
      list = events[type];
47704
      if (list === undefined)
47705
        return this;
47706
47707
      if (list === listener || list.listener === listener) {
47708
        if (--this._eventsCount === 0)
47709
          this._events = Object.create(null);
47710
        else {
47711
          delete events[type];
47712
          if (events.removeListener)
47713
            this.emit('removeListener', type, list.listener || listener);
47714
        }
47715
      } else if (typeof list !== 'function') {
47716
        position = -1;
47717
47718
        for (i = list.length - 1; i >= 0; i--) {
47719
          if (list[i] === listener || list[i].listener === listener) {
47720
            originalListener = list[i].listener;
47721
            position = i;
47722
            break;
47723
          }
47724
        }
47725
47726
        if (position < 0)
47727
          return this;
47728
47729
        if (position === 0)
47730
          list.shift();
47731
        else {
47732
          spliceOne(list, position);
47733
        }
47734
47735
        if (list.length === 1)
47736
          events[type] = list[0];
47737
47738
        if (events.removeListener !== undefined)
47739
          this.emit('removeListener', type, originalListener || listener);
47740
      }
47741
47742
      return this;
47743
    };
47744
47745
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
47746
47747
EventEmitter.prototype.removeAllListeners =
47748
    function removeAllListeners(type) {
47749
      var listeners, events, i;
47750
47751
      events = this._events;
47752
      if (events === undefined)
47753
        return this;
47754
47755
      // not listening for removeListener, no need to emit
47756
      if (events.removeListener === undefined) {
47757
        if (arguments.length === 0) {
47758
          this._events = Object.create(null);
47759
          this._eventsCount = 0;
47760
        } else if (events[type] !== undefined) {
47761
          if (--this._eventsCount === 0)
47762
            this._events = Object.create(null);
47763
          else
47764
            delete events[type];
47765
        }
47766
        return this;
47767
      }
47768
47769
      // emit removeListener for all listeners on all events
47770
      if (arguments.length === 0) {
47771
        var keys = Object.keys(events);
47772
        var key;
47773
        for (i = 0; i < keys.length; ++i) {
47774
          key = keys[i];
47775
          if (key === 'removeListener') continue;
47776
          this.removeAllListeners(key);
47777
        }
47778
        this.removeAllListeners('removeListener');
47779
        this._events = Object.create(null);
47780
        this._eventsCount = 0;
47781
        return this;
47782
      }
47783
47784
      listeners = events[type];
47785
47786
      if (typeof listeners === 'function') {
47787
        this.removeListener(type, listeners);
47788
      } else if (listeners !== undefined) {
47789
        // LIFO order
47790
        for (i = listeners.length - 1; i >= 0; i--) {
47791
          this.removeListener(type, listeners[i]);
47792
        }
47793
      }
47794
47795
      return this;
47796
    };
47797
47798
function _listeners(target, type, unwrap) {
47799
  var events = target._events;
47800
47801
  if (events === undefined)
47802
    return [];
47803
47804
  var evlistener = events[type];
47805
  if (evlistener === undefined)
47806
    return [];
47807
47808
  if (typeof evlistener === 'function')
47809
    return unwrap ? [evlistener.listener || evlistener] : [evlistener];
47810
47811
  return unwrap ?
47812
    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
47813
}
47814
47815
EventEmitter.prototype.listeners = function listeners(type) {
47816
  return _listeners(this, type, true);
47817
};
47818
47819
EventEmitter.prototype.rawListeners = function rawListeners(type) {
47820
  return _listeners(this, type, false);
47821
};
47822
47823
EventEmitter.listenerCount = function(emitter, type) {
47824
  if (typeof emitter.listenerCount === 'function') {
47825
    return emitter.listenerCount(type);
47826
  } else {
47827
    return listenerCount.call(emitter, type);
47828
  }
47829
};
47830
47831
EventEmitter.prototype.listenerCount = listenerCount;
47832
function listenerCount(type) {
47833
  var events = this._events;
47834
47835
  if (events !== undefined) {
47836
    var evlistener = events[type];
47837
47838
    if (typeof evlistener === 'function') {
47839
      return 1;
47840
    } else if (evlistener !== undefined) {
47841
      return evlistener.length;
47842
    }
47843
  }
47844
47845
  return 0;
47846
}
47847
47848
EventEmitter.prototype.eventNames = function eventNames() {
47849
  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
47850
};
47851
47852
function arrayClone(arr, n) {
47853
  var copy = new Array(n);
47854
  for (var i = 0; i < n; ++i)
47855
    copy[i] = arr[i];
47856
  return copy;
47857
}
47858
47859
function spliceOne(list, index) {
47860
  for (; index + 1 < list.length; index++)
47861
    list[index] = list[index + 1];
47862
  list.pop();
47863
}
47864
47865
function unwrapListeners(arr) {
47866
  var ret = new Array(arr.length);
47867
  for (var i = 0; i < ret.length; ++i) {
47868
    ret[i] = arr[i].listener || arr[i];
47869
  }
47870
  return ret;
47871
}
47872
47873
function once(emitter, name) {
47874
  return new Promise(function (resolve, reject) {
47875
    function errorListener(err) {
47876
      emitter.removeListener(name, resolver);
47877
      reject(err);
47878
    }
47879
47880
    function resolver() {
47881
      if (typeof emitter.removeListener === 'function') {
47882
        emitter.removeListener('error', errorListener);
47883
      }
47884
      resolve([].slice.call(arguments));
47885
    };
47886
47887
    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
47888
    if (name !== 'error') {
47889
      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
47890
    }
47891
  });
47892
}
47893
47894
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
47895
  if (typeof emitter.on === 'function') {
47896
    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
47897
  }
47898
}
47899
47900
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
47901
  if (typeof emitter.on === 'function') {
47902
    if (flags.once) {
47903
      emitter.once(name, listener);
47904
    } else {
47905
      emitter.on(name, listener);
47906
    }
47907
  } else if (typeof emitter.addEventListener === 'function') {
47908
    // EventTarget does not have `error` event semantics like Node
47909
    // EventEmitters, we do not listen for `error` events here.
47910
    emitter.addEventListener(name, function wrapListener(arg) {
47911
      // IE does not have builtin `{ once: true }` support so we
47912
      // have to do it manually.
47913
      if (flags.once) {
47914
        emitter.removeEventListener(name, wrapListener);
47915
      }
47916
      listener(arg);
47917
    });
47918
  } else {
47919
    throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
47920
  }
47921
}
47922
47923
47924
/***/ }),
47925
47926
/***/ 2536:
47927
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
47928
47929
var ___EXPOSE_LOADER_IMPORT___ = __webpack_require__(4275);
47930
var ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = __webpack_require__(7672);
47931
var ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;
47932
if (typeof ___EXPOSE_LOADER_GLOBAL_THIS___["pdfMake"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___["pdfMake"] = ___EXPOSE_LOADER_IMPORT___;
47933
module.exports = ___EXPOSE_LOADER_IMPORT___;
47934
47935
47936
/***/ }),
47937
47938
/***/ 7672:
47939
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
47940
47941
"use strict";
47942
47943
47944
// eslint-disable-next-line func-names
47945
module.exports = function () {
47946
  if (typeof globalThis === "object") {
47947
    return globalThis;
47948
  }
47949
47950
  var g;
47951
47952
  try {
47953
    // This works if eval is allowed (see CSP)
47954
    // eslint-disable-next-line no-new-func
47955
    g = this || new Function("return this")();
47956
  } catch (e) {
47957
    // This works if the window reference is available
47958
    if (typeof window === "object") {
47959
      return window;
47960
    } // This works if the self reference is available
47961
47962
47963
    if (typeof self === "object") {
47964
      return self;
47965
    } // This works if the global reference is available
47966
47967
47968
    if (typeof __webpack_require__.g !== "undefined") {
47969
      return __webpack_require__.g;
47970
    }
47971
  }
47972
47973
  return g;
47974
}();
47975
47976
/***/ }),
47977
47978
/***/ 4029:
47979
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
47980
47981
"use strict";
47982
47983
47984
var isCallable = __webpack_require__(5320);
47985
47986
var toStr = Object.prototype.toString;
47987
var hasOwnProperty = Object.prototype.hasOwnProperty;
47988
47989
var forEachArray = function forEachArray(array, iterator, receiver) {
47990
    for (var i = 0, len = array.length; i < len; i++) {
47991
        if (hasOwnProperty.call(array, i)) {
47992
            if (receiver == null) {
47993
                iterator(array[i], i, array);
47994
            } else {
47995
                iterator.call(receiver, array[i], i, array);
47996
            }
47997
        }
47998
    }
47999
};
48000
48001
var forEachString = function forEachString(string, iterator, receiver) {
48002
    for (var i = 0, len = string.length; i < len; i++) {
48003
        // no such thing as a sparse string.
48004
        if (receiver == null) {
48005
            iterator(string.charAt(i), i, string);
48006
        } else {
48007
            iterator.call(receiver, string.charAt(i), i, string);
48008
        }
48009
    }
48010
};
48011
48012
var forEachObject = function forEachObject(object, iterator, receiver) {
48013
    for (var k in object) {
48014
        if (hasOwnProperty.call(object, k)) {
48015
            if (receiver == null) {
48016
                iterator(object[k], k, object);
48017
            } else {
48018
                iterator.call(receiver, object[k], k, object);
48019
            }
48020
        }
48021
    }
48022
};
48023
48024
var forEach = function forEach(list, iterator, thisArg) {
48025
    if (!isCallable(iterator)) {
48026
        throw new TypeError('iterator must be a function');
48027
    }
48028
48029
    var receiver;
48030
    if (arguments.length >= 3) {
48031
        receiver = thisArg;
48032
    }
48033
48034
    if (toStr.call(list) === '[object Array]') {
48035
        forEachArray(list, iterator, receiver);
48036
    } else if (typeof list === 'string') {
48037
        forEachString(list, iterator, receiver);
48038
    } else {
48039
        forEachObject(list, iterator, receiver);
48040
    }
48041
};
48042
48043
module.exports = forEach;
48044
48045
48046
/***/ }),
48047
48048
/***/ 7648:
48049
/***/ (function(module) {
48050
48051
"use strict";
48052
48053
48054
/* eslint no-invalid-this: 1 */
48055
48056
var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
48057
var slice = Array.prototype.slice;
48058
var toStr = Object.prototype.toString;
48059
var funcType = '[object Function]';
48060
48061
module.exports = function bind(that) {
48062
    var target = this;
48063
    if (typeof target !== 'function' || toStr.call(target) !== funcType) {
48064
        throw new TypeError(ERROR_MESSAGE + target);
48065
    }
48066
    var args = slice.call(arguments, 1);
48067
48068
    var bound;
48069
    var binder = function () {
48070
        if (this instanceof bound) {
48071
            var result = target.apply(
48072
                this,
48073
                args.concat(slice.call(arguments))
48074
            );
48075
            if (Object(result) === result) {
48076
                return result;
48077
            }
48078
            return this;
48079
        } else {
48080
            return target.apply(
48081
                that,
48082
                args.concat(slice.call(arguments))
48083
            );
48084
        }
48085
    };
48086
48087
    var boundLength = Math.max(0, target.length - args.length);
48088
    var boundArgs = [];
48089
    for (var i = 0; i < boundLength; i++) {
48090
        boundArgs.push('$' + i);
48091
    }
48092
48093
    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);
48094
48095
    if (target.prototype) {
48096
        var Empty = function Empty() {};
48097
        Empty.prototype = target.prototype;
48098
        bound.prototype = new Empty();
48099
        Empty.prototype = null;
48100
    }
48101
48102
    return bound;
48103
};
48104
48105
48106
/***/ }),
48107
48108
/***/ 8612:
48109
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48110
48111
"use strict";
48112
48113
48114
var implementation = __webpack_require__(7648);
48115
48116
module.exports = Function.prototype.bind || implementation;
48117
48118
48119
/***/ }),
48120
48121
/***/ 5972:
48122
/***/ (function(module) {
48123
48124
"use strict";
48125
48126
48127
var functionsHaveNames = function functionsHaveNames() {
48128
	return typeof function f() {}.name === 'string';
48129
};
48130
48131
var gOPD = Object.getOwnPropertyDescriptor;
48132
if (gOPD) {
48133
	try {
48134
		gOPD([], 'length');
48135
	} catch (e) {
48136
		// IE 8 has a broken gOPD
48137
		gOPD = null;
48138
	}
48139
}
48140
48141
functionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {
48142
	if (!functionsHaveNames() || !gOPD) {
48143
		return false;
48144
	}
48145
	var desc = gOPD(function () {}, 'name');
48146
	return !!desc && !!desc.configurable;
48147
};
48148
48149
var $bind = Function.prototype.bind;
48150
48151
functionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {
48152
	return functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';
48153
};
48154
48155
module.exports = functionsHaveNames;
48156
48157
48158
/***/ }),
48159
48160
/***/ 210:
48161
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48162
48163
"use strict";
48164
48165
48166
var undefined;
48167
48168
var $SyntaxError = SyntaxError;
48169
var $Function = Function;
48170
var $TypeError = TypeError;
48171
48172
// eslint-disable-next-line consistent-return
48173
var getEvalledConstructor = function (expressionSyntax) {
48174
	try {
48175
		return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
48176
	} catch (e) {}
48177
};
48178
48179
var $gOPD = Object.getOwnPropertyDescriptor;
48180
if ($gOPD) {
48181
	try {
48182
		$gOPD({}, '');
48183
	} catch (e) {
48184
		$gOPD = null; // this is IE 8, which has a broken gOPD
48185
	}
48186
}
48187
48188
var throwTypeError = function () {
48189
	throw new $TypeError();
48190
};
48191
var ThrowTypeError = $gOPD
48192
	? (function () {
48193
		try {
48194
			// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
48195
			arguments.callee; // IE 8 does not throw here
48196
			return throwTypeError;
48197
		} catch (calleeThrows) {
48198
			try {
48199
				// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
48200
				return $gOPD(arguments, 'callee').get;
48201
			} catch (gOPDthrows) {
48202
				return throwTypeError;
48203
			}
48204
		}
48205
	}())
48206
	: throwTypeError;
48207
48208
var hasSymbols = __webpack_require__(1405)();
48209
48210
var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
48211
48212
var needsEval = {};
48213
48214
var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);
48215
48216
var INTRINSICS = {
48217
	'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
48218
	'%Array%': Array,
48219
	'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
48220
	'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,
48221
	'%AsyncFromSyncIteratorPrototype%': undefined,
48222
	'%AsyncFunction%': needsEval,
48223
	'%AsyncGenerator%': needsEval,
48224
	'%AsyncGeneratorFunction%': needsEval,
48225
	'%AsyncIteratorPrototype%': needsEval,
48226
	'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
48227
	'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
48228
	'%Boolean%': Boolean,
48229
	'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
48230
	'%Date%': Date,
48231
	'%decodeURI%': decodeURI,
48232
	'%decodeURIComponent%': decodeURIComponent,
48233
	'%encodeURI%': encodeURI,
48234
	'%encodeURIComponent%': encodeURIComponent,
48235
	'%Error%': Error,
48236
	'%eval%': eval, // eslint-disable-line no-eval
48237
	'%EvalError%': EvalError,
48238
	'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
48239
	'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
48240
	'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
48241
	'%Function%': $Function,
48242
	'%GeneratorFunction%': needsEval,
48243
	'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
48244
	'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
48245
	'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
48246
	'%isFinite%': isFinite,
48247
	'%isNaN%': isNaN,
48248
	'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,
48249
	'%JSON%': typeof JSON === 'object' ? JSON : undefined,
48250
	'%Map%': typeof Map === 'undefined' ? undefined : Map,
48251
	'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),
48252
	'%Math%': Math,
48253
	'%Number%': Number,
48254
	'%Object%': Object,
48255
	'%parseFloat%': parseFloat,
48256
	'%parseInt%': parseInt,
48257
	'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
48258
	'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
48259
	'%RangeError%': RangeError,
48260
	'%ReferenceError%': ReferenceError,
48261
	'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
48262
	'%RegExp%': RegExp,
48263
	'%Set%': typeof Set === 'undefined' ? undefined : Set,
48264
	'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),
48265
	'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
48266
	'%String%': String,
48267
	'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,
48268
	'%Symbol%': hasSymbols ? Symbol : undefined,
48269
	'%SyntaxError%': $SyntaxError,
48270
	'%ThrowTypeError%': ThrowTypeError,
48271
	'%TypedArray%': TypedArray,
48272
	'%TypeError%': $TypeError,
48273
	'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
48274
	'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
48275
	'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
48276
	'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
48277
	'%URIError%': URIError,
48278
	'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
48279
	'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
48280
	'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
48281
};
48282
48283
var doEval = function doEval(name) {
48284
	var value;
48285
	if (name === '%AsyncFunction%') {
48286
		value = getEvalledConstructor('async function () {}');
48287
	} else if (name === '%GeneratorFunction%') {
48288
		value = getEvalledConstructor('function* () {}');
48289
	} else if (name === '%AsyncGeneratorFunction%') {
48290
		value = getEvalledConstructor('async function* () {}');
48291
	} else if (name === '%AsyncGenerator%') {
48292
		var fn = doEval('%AsyncGeneratorFunction%');
48293
		if (fn) {
48294
			value = fn.prototype;
48295
		}
48296
	} else if (name === '%AsyncIteratorPrototype%') {
48297
		var gen = doEval('%AsyncGenerator%');
48298
		if (gen) {
48299
			value = getProto(gen.prototype);
48300
		}
48301
	}
48302
48303
	INTRINSICS[name] = value;
48304
48305
	return value;
48306
};
48307
48308
var LEGACY_ALIASES = {
48309
	'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
48310
	'%ArrayPrototype%': ['Array', 'prototype'],
48311
	'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
48312
	'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
48313
	'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
48314
	'%ArrayProto_values%': ['Array', 'prototype', 'values'],
48315
	'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
48316
	'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
48317
	'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
48318
	'%BooleanPrototype%': ['Boolean', 'prototype'],
48319
	'%DataViewPrototype%': ['DataView', 'prototype'],
48320
	'%DatePrototype%': ['Date', 'prototype'],
48321
	'%ErrorPrototype%': ['Error', 'prototype'],
48322
	'%EvalErrorPrototype%': ['EvalError', 'prototype'],
48323
	'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
48324
	'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
48325
	'%FunctionPrototype%': ['Function', 'prototype'],
48326
	'%Generator%': ['GeneratorFunction', 'prototype'],
48327
	'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
48328
	'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
48329
	'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
48330
	'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
48331
	'%JSONParse%': ['JSON', 'parse'],
48332
	'%JSONStringify%': ['JSON', 'stringify'],
48333
	'%MapPrototype%': ['Map', 'prototype'],
48334
	'%NumberPrototype%': ['Number', 'prototype'],
48335
	'%ObjectPrototype%': ['Object', 'prototype'],
48336
	'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
48337
	'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
48338
	'%PromisePrototype%': ['Promise', 'prototype'],
48339
	'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
48340
	'%Promise_all%': ['Promise', 'all'],
48341
	'%Promise_reject%': ['Promise', 'reject'],
48342
	'%Promise_resolve%': ['Promise', 'resolve'],
48343
	'%RangeErrorPrototype%': ['RangeError', 'prototype'],
48344
	'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
48345
	'%RegExpPrototype%': ['RegExp', 'prototype'],
48346
	'%SetPrototype%': ['Set', 'prototype'],
48347
	'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
48348
	'%StringPrototype%': ['String', 'prototype'],
48349
	'%SymbolPrototype%': ['Symbol', 'prototype'],
48350
	'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
48351
	'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
48352
	'%TypeErrorPrototype%': ['TypeError', 'prototype'],
48353
	'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
48354
	'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
48355
	'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
48356
	'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
48357
	'%URIErrorPrototype%': ['URIError', 'prototype'],
48358
	'%WeakMapPrototype%': ['WeakMap', 'prototype'],
48359
	'%WeakSetPrototype%': ['WeakSet', 'prototype']
48360
};
48361
48362
var bind = __webpack_require__(8612);
48363
var hasOwn = __webpack_require__(7642);
48364
var $concat = bind.call(Function.call, Array.prototype.concat);
48365
var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
48366
var $replace = bind.call(Function.call, String.prototype.replace);
48367
var $strSlice = bind.call(Function.call, String.prototype.slice);
48368
var $exec = bind.call(Function.call, RegExp.prototype.exec);
48369
48370
/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
48371
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
48372
var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
48373
var stringToPath = function stringToPath(string) {
48374
	var first = $strSlice(string, 0, 1);
48375
	var last = $strSlice(string, -1);
48376
	if (first === '%' && last !== '%') {
48377
		throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
48378
	} else if (last === '%' && first !== '%') {
48379
		throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
48380
	}
48381
	var result = [];
48382
	$replace(string, rePropName, function (match, number, quote, subString) {
48383
		result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
48384
	});
48385
	return result;
48386
};
48387
/* end adaptation */
48388
48389
var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
48390
	var intrinsicName = name;
48391
	var alias;
48392
	if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
48393
		alias = LEGACY_ALIASES[intrinsicName];
48394
		intrinsicName = '%' + alias[0] + '%';
48395
	}
48396
48397
	if (hasOwn(INTRINSICS, intrinsicName)) {
48398
		var value = INTRINSICS[intrinsicName];
48399
		if (value === needsEval) {
48400
			value = doEval(intrinsicName);
48401
		}
48402
		if (typeof value === 'undefined' && !allowMissing) {
48403
			throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
48404
		}
48405
48406
		return {
48407
			alias: alias,
48408
			name: intrinsicName,
48409
			value: value
48410
		};
48411
	}
48412
48413
	throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
48414
};
48415
48416
module.exports = function GetIntrinsic(name, allowMissing) {
48417
	if (typeof name !== 'string' || name.length === 0) {
48418
		throw new $TypeError('intrinsic name must be a non-empty string');
48419
	}
48420
	if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
48421
		throw new $TypeError('"allowMissing" argument must be a boolean');
48422
	}
48423
48424
	if ($exec(/^%?[^%]*%?$/, name) === null) {
48425
		throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
48426
	}
48427
	var parts = stringToPath(name);
48428
	var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
48429
48430
	var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
48431
	var intrinsicRealName = intrinsic.name;
48432
	var value = intrinsic.value;
48433
	var skipFurtherCaching = false;
48434
48435
	var alias = intrinsic.alias;
48436
	if (alias) {
48437
		intrinsicBaseName = alias[0];
48438
		$spliceApply(parts, $concat([0, 1], alias));
48439
	}
48440
48441
	for (var i = 1, isOwn = true; i < parts.length; i += 1) {
48442
		var part = parts[i];
48443
		var first = $strSlice(part, 0, 1);
48444
		var last = $strSlice(part, -1);
48445
		if (
48446
			(
48447
				(first === '"' || first === "'" || first === '`')
48448
				|| (last === '"' || last === "'" || last === '`')
48449
			)
48450
			&& first !== last
48451
		) {
48452
			throw new $SyntaxError('property names with quotes must have matching quotes');
48453
		}
48454
		if (part === 'constructor' || !isOwn) {
48455
			skipFurtherCaching = true;
48456
		}
48457
48458
		intrinsicBaseName += '.' + part;
48459
		intrinsicRealName = '%' + intrinsicBaseName + '%';
48460
48461
		if (hasOwn(INTRINSICS, intrinsicRealName)) {
48462
			value = INTRINSICS[intrinsicRealName];
48463
		} else if (value != null) {
48464
			if (!(part in value)) {
48465
				if (!allowMissing) {
48466
					throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
48467
				}
48468
				return void undefined;
48469
			}
48470
			if ($gOPD && (i + 1) >= parts.length) {
48471
				var desc = $gOPD(value, part);
48472
				isOwn = !!desc;
48473
48474
				// By convention, when a data property is converted to an accessor
48475
				// property to emulate a data property that does not suffer from
48476
				// the override mistake, that accessor's getter is marked with
48477
				// an `originalValue` property. Here, when we detect this, we
48478
				// uphold the illusion by pretending to see that original data
48479
				// property, i.e., returning the value rather than the getter
48480
				// itself.
48481
				if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
48482
					value = desc.get;
48483
				} else {
48484
					value = value[part];
48485
				}
48486
			} else {
48487
				isOwn = hasOwn(value, part);
48488
				value = value[part];
48489
			}
48490
48491
			if (isOwn && !skipFurtherCaching) {
48492
				INTRINSICS[intrinsicRealName] = value;
48493
			}
48494
		}
48495
	}
48496
	return value;
48497
};
48498
48499
48500
/***/ }),
48501
48502
/***/ 7296:
48503
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48504
48505
"use strict";
48506
48507
48508
var GetIntrinsic = __webpack_require__(210);
48509
48510
var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);
48511
48512
if ($gOPD) {
48513
	try {
48514
		$gOPD([], 'length');
48515
	} catch (e) {
48516
		// IE 8 has a broken gOPD
48517
		$gOPD = null;
48518
	}
48519
}
48520
48521
module.exports = $gOPD;
48522
48523
48524
/***/ }),
48525
48526
/***/ 1044:
48527
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48528
48529
"use strict";
48530
48531
48532
var GetIntrinsic = __webpack_require__(210);
48533
48534
var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
48535
48536
var hasPropertyDescriptors = function hasPropertyDescriptors() {
48537
	if ($defineProperty) {
48538
		try {
48539
			$defineProperty({}, 'a', { value: 1 });
48540
			return true;
48541
		} catch (e) {
48542
			// IE 8 has a broken defineProperty
48543
			return false;
48544
		}
48545
	}
48546
	return false;
48547
};
48548
48549
hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
48550
	// node v0.6 has a bug where array lengths can be Set but not Defined
48551
	if (!hasPropertyDescriptors()) {
48552
		return null;
48553
	}
48554
	try {
48555
		return $defineProperty([], 'length', { value: 1 }).length !== 1;
48556
	} catch (e) {
48557
		// In Firefox 4-22, defining length on an array throws an exception.
48558
		return true;
48559
	}
48560
};
48561
48562
module.exports = hasPropertyDescriptors;
48563
48564
48565
/***/ }),
48566
48567
/***/ 1405:
48568
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48569
48570
"use strict";
48571
48572
48573
var origSymbol = typeof Symbol !== 'undefined' && Symbol;
48574
var hasSymbolSham = __webpack_require__(5419);
48575
48576
module.exports = function hasNativeSymbols() {
48577
	if (typeof origSymbol !== 'function') { return false; }
48578
	if (typeof Symbol !== 'function') { return false; }
48579
	if (typeof origSymbol('foo') !== 'symbol') { return false; }
48580
	if (typeof Symbol('bar') !== 'symbol') { return false; }
48581
48582
	return hasSymbolSham();
48583
};
48584
48585
48586
/***/ }),
48587
48588
/***/ 5419:
48589
/***/ (function(module) {
48590
48591
"use strict";
48592
48593
48594
/* eslint complexity: [2, 18], max-statements: [2, 33] */
48595
module.exports = function hasSymbols() {
48596
	if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
48597
	if (typeof Symbol.iterator === 'symbol') { return true; }
48598
48599
	var obj = {};
48600
	var sym = Symbol('test');
48601
	var symObj = Object(sym);
48602
	if (typeof sym === 'string') { return false; }
48603
48604
	if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
48605
	if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
48606
48607
	// temp disabled per https://github.com/ljharb/object.assign/issues/17
48608
	// if (sym instanceof Symbol) { return false; }
48609
	// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
48610
	// if (!(symObj instanceof Symbol)) { return false; }
48611
48612
	// if (typeof Symbol.prototype.toString !== 'function') { return false; }
48613
	// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
48614
48615
	var symVal = 42;
48616
	obj[sym] = symVal;
48617
	for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop
48618
	if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
48619
48620
	if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
48621
48622
	var syms = Object.getOwnPropertySymbols(obj);
48623
	if (syms.length !== 1 || syms[0] !== sym) { return false; }
48624
48625
	if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
48626
48627
	if (typeof Object.getOwnPropertyDescriptor === 'function') {
48628
		var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
48629
		if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
48630
	}
48631
48632
	return true;
48633
};
48634
48635
48636
/***/ }),
48637
48638
/***/ 6410:
48639
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48640
48641
"use strict";
48642
48643
48644
var hasSymbols = __webpack_require__(5419);
48645
48646
module.exports = function hasToStringTagShams() {
48647
	return hasSymbols() && !!Symbol.toStringTag;
48648
};
48649
48650
48651
/***/ }),
48652
48653
/***/ 7642:
48654
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48655
48656
"use strict";
48657
48658
48659
var bind = __webpack_require__(8612);
48660
48661
module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);
48662
48663
48664
/***/ }),
48665
48666
/***/ 688:
48667
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
48668
48669
"use strict";
48670
48671
var Buffer = (__webpack_require__(7103).Buffer);
48672
48673
// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
48674
// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
48675
// To save memory and loading time, we read table files only when requested.
48676
48677
exports._dbcs = DBCSCodec;
48678
48679
var UNASSIGNED = -1,
48680
    GB18030_CODE = -2,
48681
    SEQ_START  = -10,
48682
    NODE_START = -1000,
48683
    UNASSIGNED_NODE = new Array(0x100),
48684
    DEF_CHAR = -1;
48685
48686
for (var i = 0; i < 0x100; i++)
48687
    UNASSIGNED_NODE[i] = UNASSIGNED;
48688
48689
48690
// Class DBCSCodec reads and initializes mapping tables.
48691
function DBCSCodec(codecOptions, iconv) {
48692
    this.encodingName = codecOptions.encodingName;
48693
    if (!codecOptions)
48694
        throw new Error("DBCS codec is called without the data.")
48695
    if (!codecOptions.table)
48696
        throw new Error("Encoding '" + this.encodingName + "' has no data.");
48697
48698
    // Load tables.
48699
    var mappingTable = codecOptions.table();
48700
48701
48702
    // Decode tables: MBCS -> Unicode.
48703
48704
    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
48705
    // Trie root is decodeTables[0].
48706
    // Values: >=  0 -> unicode character code. can be > 0xFFFF
48707
    //         == UNASSIGNED -> unknown/unassigned sequence.
48708
    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
48709
    //         <= NODE_START -> index of the next node in our trie to process next byte.
48710
    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.
48711
    this.decodeTables = [];
48712
    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
48713
48714
    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.
48715
    this.decodeTableSeq = [];
48716
48717
    // Actual mapping tables consist of chunks. Use them to fill up decode tables.
48718
    for (var i = 0; i < mappingTable.length; i++)
48719
        this._addDecodeChunk(mappingTable[i]);
48720
48721
    // Load & create GB18030 tables when needed.
48722
    if (typeof codecOptions.gb18030 === 'function') {
48723
        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
48724
48725
        // Add GB18030 common decode nodes.
48726
        var commonThirdByteNodeIdx = this.decodeTables.length;
48727
        this.decodeTables.push(UNASSIGNED_NODE.slice(0));
48728
48729
        var commonFourthByteNodeIdx = this.decodeTables.length;
48730
        this.decodeTables.push(UNASSIGNED_NODE.slice(0));
48731
48732
        // Fill out the tree
48733
        var firstByteNode = this.decodeTables[0];
48734
        for (var i = 0x81; i <= 0xFE; i++) {
48735
            var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];
48736
            for (var j = 0x30; j <= 0x39; j++) {
48737
                if (secondByteNode[j] === UNASSIGNED) {
48738
                    secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;
48739
                } else if (secondByteNode[j] > NODE_START) {
48740
                    throw new Error("gb18030 decode tables conflict at byte 2");
48741
                }
48742
48743
                var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];
48744
                for (var k = 0x81; k <= 0xFE; k++) {
48745
                    if (thirdByteNode[k] === UNASSIGNED) {
48746
                        thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;
48747
                    } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {
48748
                        continue;
48749
                    } else if (thirdByteNode[k] > NODE_START) {
48750
                        throw new Error("gb18030 decode tables conflict at byte 3");
48751
                    }
48752
48753
                    var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];
48754
                    for (var l = 0x30; l <= 0x39; l++) {
48755
                        if (fourthByteNode[l] === UNASSIGNED)
48756
                            fourthByteNode[l] = GB18030_CODE;
48757
                    }
48758
                }
48759
            }
48760
        }
48761
    }
48762
48763
    this.defaultCharUnicode = iconv.defaultCharUnicode;
48764
48765
48766
    // Encode tables: Unicode -> DBCS.
48767
48768
    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
48769
    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
48770
    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
48771
    //         == UNASSIGNED -> no conversion found. Output a default char.
48772
    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.
48773
    this.encodeTable = [];
48774
48775
    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
48776
    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
48777
    // means end of sequence (needed when one sequence is a strict subsequence of another).
48778
    // Objects are kept separately from encodeTable to increase performance.
48779
    this.encodeTableSeq = [];
48780
48781
    // Some chars can be decoded, but need not be encoded.
48782
    var skipEncodeChars = {};
48783
    if (codecOptions.encodeSkipVals)
48784
        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
48785
            var val = codecOptions.encodeSkipVals[i];
48786
            if (typeof val === 'number')
48787
                skipEncodeChars[val] = true;
48788
            else
48789
                for (var j = val.from; j <= val.to; j++)
48790
                    skipEncodeChars[j] = true;
48791
        }
48792
48793
    // Use decode trie to recursively fill out encode tables.
48794
    this._fillEncodeTable(0, 0, skipEncodeChars);
48795
48796
    // Add more encoding pairs when needed.
48797
    if (codecOptions.encodeAdd) {
48798
        for (var uChar in codecOptions.encodeAdd)
48799
            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
48800
                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
48801
    }
48802
48803
    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
48804
    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
48805
    if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
48806
}
48807
48808
DBCSCodec.prototype.encoder = DBCSEncoder;
48809
DBCSCodec.prototype.decoder = DBCSDecoder;
48810
48811
// Decoder helpers
48812
DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
48813
    var bytes = [];
48814
    for (; addr > 0; addr >>>= 8)
48815
        bytes.push(addr & 0xFF);
48816
    if (bytes.length == 0)
48817
        bytes.push(0);
48818
48819
    var node = this.decodeTables[0];
48820
    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
48821
        var val = node[bytes[i]];
48822
48823
        if (val == UNASSIGNED) { // Create new node.
48824
            node[bytes[i]] = NODE_START - this.decodeTables.length;
48825
            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
48826
        }
48827
        else if (val <= NODE_START) { // Existing node.
48828
            node = this.decodeTables[NODE_START - val];
48829
        }
48830
        else
48831
            throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
48832
    }
48833
    return node;
48834
}
48835
48836
48837
DBCSCodec.prototype._addDecodeChunk = function(chunk) {
48838
    // First element of chunk is the hex mbcs code where we start.
48839
    var curAddr = parseInt(chunk[0], 16);
48840
48841
    // Choose the decoding node where we'll write our chars.
48842
    var writeTable = this._getDecodeTrieNode(curAddr);
48843
    curAddr = curAddr & 0xFF;
48844
48845
    // Write all other elements of the chunk to the table.
48846
    for (var k = 1; k < chunk.length; k++) {
48847
        var part = chunk[k];
48848
        if (typeof part === "string") { // String, write as-is.
48849
            for (var l = 0; l < part.length;) {
48850
                var code = part.charCodeAt(l++);
48851
                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
48852
                    var codeTrail = part.charCodeAt(l++);
48853
                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)
48854
                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
48855
                    else
48856
                        throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);
48857
                }
48858
                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
48859
                    var len = 0xFFF - code + 2;
48860
                    var seq = [];
48861
                    for (var m = 0; m < len; m++)
48862
                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
48863
48864
                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
48865
                    this.decodeTableSeq.push(seq);
48866
                }
48867
                else
48868
                    writeTable[curAddr++] = code; // Basic char
48869
            }
48870
        }
48871
        else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
48872
            var charCode = writeTable[curAddr - 1] + 1;
48873
            for (var l = 0; l < part; l++)
48874
                writeTable[curAddr++] = charCode++;
48875
        }
48876
        else
48877
            throw new Error("Incorrect type '" + typeof part + "' given in "  + this.encodingName + " at chunk " + chunk[0]);
48878
    }
48879
    if (curAddr > 0xFF)
48880
        throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
48881
}
48882
48883
// Encoder helpers
48884
DBCSCodec.prototype._getEncodeBucket = function(uCode) {
48885
    var high = uCode >> 8; // This could be > 0xFF because of astral characters.
48886
    if (this.encodeTable[high] === undefined)
48887
        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
48888
    return this.encodeTable[high];
48889
}
48890
48891
DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
48892
    var bucket = this._getEncodeBucket(uCode);
48893
    var low = uCode & 0xFF;
48894
    if (bucket[low] <= SEQ_START)
48895
        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
48896
    else if (bucket[low] == UNASSIGNED)
48897
        bucket[low] = dbcsCode;
48898
}
48899
48900
DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
48901
48902
    // Get the root of character tree according to first character of the sequence.
48903
    var uCode = seq[0];
48904
    var bucket = this._getEncodeBucket(uCode);
48905
    var low = uCode & 0xFF;
48906
48907
    var node;
48908
    if (bucket[low] <= SEQ_START) {
48909
        // There's already a sequence with  - use it.
48910
        node = this.encodeTableSeq[SEQ_START-bucket[low]];
48911
    }
48912
    else {
48913
        // There was no sequence object - allocate a new one.
48914
        node = {};
48915
        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
48916
        bucket[low] = SEQ_START - this.encodeTableSeq.length;
48917
        this.encodeTableSeq.push(node);
48918
    }
48919
48920
    // Traverse the character tree, allocating new nodes as needed.
48921
    for (var j = 1; j < seq.length-1; j++) {
48922
        var oldVal = node[uCode];
48923
        if (typeof oldVal === 'object')
48924
            node = oldVal;
48925
        else {
48926
            node = node[uCode] = {}
48927
            if (oldVal !== undefined)
48928
                node[DEF_CHAR] = oldVal
48929
        }
48930
    }
48931
48932
    // Set the leaf to given dbcsCode.
48933
    uCode = seq[seq.length-1];
48934
    node[uCode] = dbcsCode;
48935
}
48936
48937
DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
48938
    var node = this.decodeTables[nodeIdx];
48939
    var hasValues = false;
48940
    var subNodeEmpty = {};
48941
    for (var i = 0; i < 0x100; i++) {
48942
        var uCode = node[i];
48943
        var mbCode = prefix + i;
48944
        if (skipEncodeChars[mbCode])
48945
            continue;
48946
48947
        if (uCode >= 0) {
48948
            this._setEncodeChar(uCode, mbCode);
48949
            hasValues = true;
48950
        } else if (uCode <= NODE_START) {
48951
            var subNodeIdx = NODE_START - uCode;
48952
            if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).
48953
                var newPrefix = (mbCode << 8) >>> 0;  // NOTE: '>>> 0' keeps 32-bit num positive.
48954
                if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))
48955
                    hasValues = true;
48956
                else
48957
                    subNodeEmpty[subNodeIdx] = true;
48958
            }
48959
        } else if (uCode <= SEQ_START) {
48960
            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
48961
            hasValues = true;
48962
        }
48963
    }
48964
    return hasValues;
48965
}
48966
48967
48968
48969
// == Encoder ==================================================================
48970
48971
function DBCSEncoder(options, codec) {
48972
    // Encoder state
48973
    this.leadSurrogate = -1;
48974
    this.seqObj = undefined;
48975
48976
    // Static data
48977
    this.encodeTable = codec.encodeTable;
48978
    this.encodeTableSeq = codec.encodeTableSeq;
48979
    this.defaultCharSingleByte = codec.defCharSB;
48980
    this.gb18030 = codec.gb18030;
48981
}
48982
48983
DBCSEncoder.prototype.write = function(str) {
48984
    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),
48985
        leadSurrogate = this.leadSurrogate,
48986
        seqObj = this.seqObj, nextChar = -1,
48987
        i = 0, j = 0;
48988
48989
    while (true) {
48990
        // 0. Get next character.
48991
        if (nextChar === -1) {
48992
            if (i == str.length) break;
48993
            var uCode = str.charCodeAt(i++);
48994
        }
48995
        else {
48996
            var uCode = nextChar;
48997
            nextChar = -1;
48998
        }
48999
49000
        // 1. Handle surrogates.
49001
        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
49002
            if (uCode < 0xDC00) { // We've got lead surrogate.
49003
                if (leadSurrogate === -1) {
49004
                    leadSurrogate = uCode;
49005
                    continue;
49006
                } else {
49007
                    leadSurrogate = uCode;
49008
                    // Double lead surrogate found.
49009
                    uCode = UNASSIGNED;
49010
                }
49011
            } else { // We've got trail surrogate.
49012
                if (leadSurrogate !== -1) {
49013
                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
49014
                    leadSurrogate = -1;
49015
                } else {
49016
                    // Incomplete surrogate pair - only trail surrogate found.
49017
                    uCode = UNASSIGNED;
49018
                }
49019
49020
            }
49021
        }
49022
        else if (leadSurrogate !== -1) {
49023
            // Incomplete surrogate pair - only lead surrogate found.
49024
            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
49025
            leadSurrogate = -1;
49026
        }
49027
49028
        // 2. Convert uCode character.
49029
        var dbcsCode = UNASSIGNED;
49030
        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
49031
            var resCode = seqObj[uCode];
49032
            if (typeof resCode === 'object') { // Sequence continues.
49033
                seqObj = resCode;
49034
                continue;
49035
49036
            } else if (typeof resCode == 'number') { // Sequence finished. Write it.
49037
                dbcsCode = resCode;
49038
49039
            } else if (resCode == undefined) { // Current character is not part of the sequence.
49040
49041
                // Try default character for this sequence
49042
                resCode = seqObj[DEF_CHAR];
49043
                if (resCode !== undefined) {
49044
                    dbcsCode = resCode; // Found. Write it.
49045
                    nextChar = uCode; // Current character will be written too in the next iteration.
49046
49047
                } else {
49048
                    // TODO: What if we have no default? (resCode == undefined)
49049
                    // Then, we should write first char of the sequence as-is and try the rest recursively.
49050
                    // Didn't do it for now because no encoding has this situation yet.
49051
                    // Currently, just skip the sequence and write current char.
49052
                }
49053
            }
49054
            seqObj = undefined;
49055
        }
49056
        else if (uCode >= 0) {  // Regular character
49057
            var subtable = this.encodeTable[uCode >> 8];
49058
            if (subtable !== undefined)
49059
                dbcsCode = subtable[uCode & 0xFF];
49060
49061
            if (dbcsCode <= SEQ_START) { // Sequence start
49062
                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
49063
                continue;
49064
            }
49065
49066
            if (dbcsCode == UNASSIGNED && this.gb18030) {
49067
                // Use GB18030 algorithm to find character(s) to write.
49068
                var idx = findIdx(this.gb18030.uChars, uCode);
49069
                if (idx != -1) {
49070
                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
49071
                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
49072
                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
49073
                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
49074
                    newBuf[j++] = 0x30 + dbcsCode;
49075
                    continue;
49076
                }
49077
            }
49078
        }
49079
49080
        // 3. Write dbcsCode character.
49081
        if (dbcsCode === UNASSIGNED)
49082
            dbcsCode = this.defaultCharSingleByte;
49083
49084
        if (dbcsCode < 0x100) {
49085
            newBuf[j++] = dbcsCode;
49086
        }
49087
        else if (dbcsCode < 0x10000) {
49088
            newBuf[j++] = dbcsCode >> 8;   // high byte
49089
            newBuf[j++] = dbcsCode & 0xFF; // low byte
49090
        }
49091
        else if (dbcsCode < 0x1000000) {
49092
            newBuf[j++] = dbcsCode >> 16;
49093
            newBuf[j++] = (dbcsCode >> 8) & 0xFF;
49094
            newBuf[j++] = dbcsCode & 0xFF;
49095
        } else {
49096
            newBuf[j++] = dbcsCode >>> 24;
49097
            newBuf[j++] = (dbcsCode >>> 16) & 0xFF;
49098
            newBuf[j++] = (dbcsCode >>> 8) & 0xFF;
49099
            newBuf[j++] = dbcsCode & 0xFF;
49100
        }
49101
    }
49102
49103
    this.seqObj = seqObj;
49104
    this.leadSurrogate = leadSurrogate;
49105
    return newBuf.slice(0, j);
49106
}
49107
49108
DBCSEncoder.prototype.end = function() {
49109
    if (this.leadSurrogate === -1 && this.seqObj === undefined)
49110
        return; // All clean. Most often case.
49111
49112
    var newBuf = Buffer.alloc(10), j = 0;
49113
49114
    if (this.seqObj) { // We're in the sequence.
49115
        var dbcsCode = this.seqObj[DEF_CHAR];
49116
        if (dbcsCode !== undefined) { // Write beginning of the sequence.
49117
            if (dbcsCode < 0x100) {
49118
                newBuf[j++] = dbcsCode;
49119
            }
49120
            else {
49121
                newBuf[j++] = dbcsCode >> 8;   // high byte
49122
                newBuf[j++] = dbcsCode & 0xFF; // low byte
49123
            }
49124
        } else {
49125
            // See todo above.
49126
        }
49127
        this.seqObj = undefined;
49128
    }
49129
49130
    if (this.leadSurrogate !== -1) {
49131
        // Incomplete surrogate pair - only lead surrogate found.
49132
        newBuf[j++] = this.defaultCharSingleByte;
49133
        this.leadSurrogate = -1;
49134
    }
49135
49136
    return newBuf.slice(0, j);
49137
}
49138
49139
// Export for testing
49140
DBCSEncoder.prototype.findIdx = findIdx;
49141
49142
49143
// == Decoder ==================================================================
49144
49145
function DBCSDecoder(options, codec) {
49146
    // Decoder state
49147
    this.nodeIdx = 0;
49148
    this.prevBytes = [];
49149
49150
    // Static data
49151
    this.decodeTables = codec.decodeTables;
49152
    this.decodeTableSeq = codec.decodeTableSeq;
49153
    this.defaultCharUnicode = codec.defaultCharUnicode;
49154
    this.gb18030 = codec.gb18030;
49155
}
49156
49157
DBCSDecoder.prototype.write = function(buf) {
49158
    var newBuf = Buffer.alloc(buf.length*2),
49159
        nodeIdx = this.nodeIdx,
49160
        prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,
49161
        seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.
49162
        uCode;
49163
49164
    for (var i = 0, j = 0; i < buf.length; i++) {
49165
        var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];
49166
49167
        // Lookup in current trie node.
49168
        var uCode = this.decodeTables[nodeIdx][curByte];
49169
49170
        if (uCode >= 0) {
49171
            // Normal character, just use it.
49172
        }
49173
        else if (uCode === UNASSIGNED) { // Unknown char.
49174
            // TODO: Callback with seq.
49175
            uCode = this.defaultCharUnicode.charCodeAt(0);
49176
            i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.
49177
        }
49178
        else if (uCode === GB18030_CODE) {
49179
            if (i >= 3) {
49180
                var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);
49181
            } else {
49182
                var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 +
49183
                          (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 +
49184
                          (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 +
49185
                          (curByte-0x30);
49186
            }
49187
            var idx = findIdx(this.gb18030.gbChars, ptr);
49188
            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
49189
        }
49190
        else if (uCode <= NODE_START) { // Go to next trie node.
49191
            nodeIdx = NODE_START - uCode;
49192
            continue;
49193
        }
49194
        else if (uCode <= SEQ_START) { // Output a sequence of chars.
49195
            var seq = this.decodeTableSeq[SEQ_START - uCode];
49196
            for (var k = 0; k < seq.length - 1; k++) {
49197
                uCode = seq[k];
49198
                newBuf[j++] = uCode & 0xFF;
49199
                newBuf[j++] = uCode >> 8;
49200
            }
49201
            uCode = seq[seq.length-1];
49202
        }
49203
        else
49204
            throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
49205
49206
        // Write the character to buffer, handling higher planes using surrogate pair.
49207
        if (uCode >= 0x10000) {
49208
            uCode -= 0x10000;
49209
            var uCodeLead = 0xD800 | (uCode >> 10);
49210
            newBuf[j++] = uCodeLead & 0xFF;
49211
            newBuf[j++] = uCodeLead >> 8;
49212
49213
            uCode = 0xDC00 | (uCode & 0x3FF);
49214
        }
49215
        newBuf[j++] = uCode & 0xFF;
49216
        newBuf[j++] = uCode >> 8;
49217
49218
        // Reset trie node.
49219
        nodeIdx = 0; seqStart = i+1;
49220
    }
49221
49222
    this.nodeIdx = nodeIdx;
49223
    this.prevBytes = (seqStart >= 0)
49224
        ? Array.prototype.slice.call(buf, seqStart)
49225
        : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));
49226
49227
    return newBuf.slice(0, j).toString('ucs2');
49228
}
49229
49230
DBCSDecoder.prototype.end = function() {
49231
    var ret = '';
49232
49233
    // Try to parse all remaining chars.
49234
    while (this.prevBytes.length > 0) {
49235
        // Skip 1 character in the buffer.
49236
        ret += this.defaultCharUnicode;
49237
        var bytesArr = this.prevBytes.slice(1);
49238
49239
        // Parse remaining as usual.
49240
        this.prevBytes = [];
49241
        this.nodeIdx = 0;
49242
        if (bytesArr.length > 0)
49243
            ret += this.write(bytesArr);
49244
    }
49245
49246
    this.prevBytes = [];
49247
    this.nodeIdx = 0;
49248
    return ret;
49249
}
49250
49251
// Binary search for GB18030. Returns largest i such that table[i] <= val.
49252
function findIdx(table, val) {
49253
    if (table[0] > val)
49254
        return -1;
49255
49256
    var l = 0, r = table.length;
49257
    while (l < r-1) { // always table[l] <= val < table[r]
49258
        var mid = l + ((r-l+1) >> 1);
49259
        if (table[mid] <= val)
49260
            l = mid;
49261
        else
49262
            r = mid;
49263
    }
49264
    return l;
49265
}
49266
49267
49268
49269
/***/ }),
49270
49271
/***/ 5990:
49272
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
49273
49274
"use strict";
49275
49276
49277
// Description of supported double byte encodings and aliases.
49278
// Tables are not require()-d until they are needed to speed up library load.
49279
// require()-s are direct to support Browserify.
49280
49281
module.exports = {
49282
49283
    // == Japanese/ShiftJIS ====================================================
49284
    // All japanese encodings are based on JIS X set of standards:
49285
    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
49286
    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.
49287
    //              Has several variations in 1978, 1983, 1990 and 1997.
49288
    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
49289
    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
49290
    //              2 planes, first is superset of 0208, second - revised 0212.
49291
    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
49292
49293
    // Byte encodings are:
49294
    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
49295
    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
49296
    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
49297
    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
49298
    //               0x00-0x7F       - lower part of 0201
49299
    //               0x8E, 0xA1-0xDF - upper part of 0201
49300
    //               (0xA1-0xFE)x2   - 0208 plane (94x94).
49301
    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
49302
    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
49303
    //               Used as-is in ISO2022 family.
49304
    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,
49305
    //                0201-1976 Roman, 0208-1978, 0208-1983.
49306
    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
49307
    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
49308
    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
49309
    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
49310
    //
49311
    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
49312
    //
49313
    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
49314
49315
    'shiftjis': {
49316
        type: '_dbcs',
49317
        table: function() { return __webpack_require__(7014) },
49318
        encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
49319
        encodeSkipVals: [{from: 0xED40, to: 0xF940}],
49320
    },
49321
    'csshiftjis': 'shiftjis',
49322
    'mskanji': 'shiftjis',
49323
    'sjis': 'shiftjis',
49324
    'windows31j': 'shiftjis',
49325
    'ms31j': 'shiftjis',
49326
    'xsjis': 'shiftjis',
49327
    'windows932': 'shiftjis',
49328
    'ms932': 'shiftjis',
49329
    '932': 'shiftjis',
49330
    'cp932': 'shiftjis',
49331
49332
    'eucjp': {
49333
        type: '_dbcs',
49334
        table: function() { return __webpack_require__(5633) },
49335
        encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
49336
    },
49337
49338
    // TODO: KDDI extension to Shift_JIS
49339
    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
49340
    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
49341
49342
49343
    // == Chinese/GBK ==========================================================
49344
    // http://en.wikipedia.org/wiki/GBK
49345
    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
49346
49347
    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
49348
    'gb2312': 'cp936',
49349
    'gb231280': 'cp936',
49350
    'gb23121980': 'cp936',
49351
    'csgb2312': 'cp936',
49352
    'csiso58gb231280': 'cp936',
49353
    'euccn': 'cp936',
49354
49355
    // Microsoft's CP936 is a subset and approximation of GBK.
49356
    'windows936': 'cp936',
49357
    'ms936': 'cp936',
49358
    '936': 'cp936',
49359
    'cp936': {
49360
        type: '_dbcs',
49361
        table: function() { return __webpack_require__(3336) },
49362
    },
49363
49364
    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
49365
    'gbk': {
49366
        type: '_dbcs',
49367
        table: function() { return (__webpack_require__(3336).concat)(__webpack_require__(4346)) },
49368
    },
49369
    'xgbk': 'gbk',
49370
    'isoir58': 'gbk',
49371
49372
    // GB18030 is an algorithmic extension of GBK.
49373
    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
49374
    // http://icu-project.org/docs/papers/gb18030.html
49375
    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
49376
    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
49377
    'gb18030': {
49378
        type: '_dbcs',
49379
        table: function() { return (__webpack_require__(3336).concat)(__webpack_require__(4346)) },
49380
        gb18030: function() { return __webpack_require__(6258) },
49381
        encodeSkipVals: [0x80],
49382
        encodeAdd: {'€': 0xA2E3},
49383
    },
49384
49385
    'chinese': 'gb18030',
49386
49387
49388
    // == Korean ===============================================================
49389
    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
49390
    'windows949': 'cp949',
49391
    'ms949': 'cp949',
49392
    '949': 'cp949',
49393
    'cp949': {
49394
        type: '_dbcs',
49395
        table: function() { return __webpack_require__(7348) },
49396
    },
49397
49398
    'cseuckr': 'cp949',
49399
    'csksc56011987': 'cp949',
49400
    'euckr': 'cp949',
49401
    'isoir149': 'cp949',
49402
    'korean': 'cp949',
49403
    'ksc56011987': 'cp949',
49404
    'ksc56011989': 'cp949',
49405
    'ksc5601': 'cp949',
49406
49407
49408
    // == Big5/Taiwan/Hong Kong ================================================
49409
    // There are lots of tables for Big5 and cp950. Please see the following links for history:
49410
    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
49411
    // Variations, in roughly number of defined chars:
49412
    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
49413
    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
49414
    //  * Big5-2003 (Taiwan standard) almost superset of cp950.
49415
    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
49416
    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.
49417
    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
49418
    //    Plus, it has 4 combining sequences.
49419
    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
49420
    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
49421
    //    Implementations are not consistent within browsers; sometimes labeled as just big5.
49422
    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
49423
    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
49424
    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
49425
    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
49426
    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
49427
    //
49428
    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
49429
    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
49430
49431
    'windows950': 'cp950',
49432
    'ms950': 'cp950',
49433
    '950': 'cp950',
49434
    'cp950': {
49435
        type: '_dbcs',
49436
        table: function() { return __webpack_require__(4284) },
49437
    },
49438
49439
    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
49440
    'big5': 'big5hkscs',
49441
    'big5hkscs': {
49442
        type: '_dbcs',
49443
        table: function() { return (__webpack_require__(4284).concat)(__webpack_require__(3480)) },
49444
        encodeSkipVals: [
49445
            // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of
49446
            // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.
49447
            // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.
49448
            0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,
49449
            0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,
49450
            0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,
49451
            0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,
49452
            0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,
49453
49454
            // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345
49455
            0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,
49456
        ],
49457
    },
49458
49459
    'cnbig5': 'big5hkscs',
49460
    'csbig5': 'big5hkscs',
49461
    'xxbig5': 'big5hkscs',
49462
};
49463
49464
49465
/***/ }),
49466
49467
/***/ 6934:
49468
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
49469
49470
"use strict";
49471
49472
49473
// Update this array if you add/rename/remove files in this directory.
49474
// We support Browserify by skipping automatic module discovery and requiring modules directly.
49475
var modules = [
49476
    __webpack_require__(1025),
49477
    __webpack_require__(7688),
49478
    __webpack_require__(1279),
49479
    __webpack_require__(758),
49480
    __webpack_require__(9068),
49481
    __webpack_require__(3769),
49482
    __webpack_require__(7018),
49483
    __webpack_require__(688),
49484
    __webpack_require__(5990),
49485
];
49486
49487
// Put all encoding/alias/codec definitions to single object and export it.
49488
for (var i = 0; i < modules.length; i++) {
49489
    var module = modules[i];
49490
    for (var enc in module)
49491
        if (Object.prototype.hasOwnProperty.call(module, enc))
49492
            exports[enc] = module[enc];
49493
}
49494
49495
49496
/***/ }),
49497
49498
/***/ 1025:
49499
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
49500
49501
"use strict";
49502
49503
var Buffer = (__webpack_require__(7103).Buffer);
49504
49505
// Export Node.js internal encodings.
49506
49507
module.exports = {
49508
    // Encodings
49509
    utf8:   { type: "_internal", bomAware: true},
49510
    cesu8:  { type: "_internal", bomAware: true},
49511
    unicode11utf8: "utf8",
49512
49513
    ucs2:   { type: "_internal", bomAware: true},
49514
    utf16le: "ucs2",
49515
49516
    binary: { type: "_internal" },
49517
    base64: { type: "_internal" },
49518
    hex:    { type: "_internal" },
49519
49520
    // Codec.
49521
    _internal: InternalCodec,
49522
};
49523
49524
//------------------------------------------------------------------------------
49525
49526
function InternalCodec(codecOptions, iconv) {
49527
    this.enc = codecOptions.encodingName;
49528
    this.bomAware = codecOptions.bomAware;
49529
49530
    if (this.enc === "base64")
49531
        this.encoder = InternalEncoderBase64;
49532
    else if (this.enc === "cesu8") {
49533
        this.enc = "utf8"; // Use utf8 for decoding.
49534
        this.encoder = InternalEncoderCesu8;
49535
49536
        // Add decoder for versions of Node not supporting CESU-8
49537
        if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {
49538
            this.decoder = InternalDecoderCesu8;
49539
            this.defaultCharUnicode = iconv.defaultCharUnicode;
49540
        }
49541
    }
49542
}
49543
49544
InternalCodec.prototype.encoder = InternalEncoder;
49545
InternalCodec.prototype.decoder = InternalDecoder;
49546
49547
//------------------------------------------------------------------------------
49548
49549
// We use node.js internal decoder. Its signature is the same as ours.
49550
var StringDecoder = (__webpack_require__(2553)/* .StringDecoder */ .s);
49551
49552
if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
49553
    StringDecoder.prototype.end = function() {};
49554
49555
49556
function InternalDecoder(options, codec) {
49557
    this.decoder = new StringDecoder(codec.enc);
49558
}
49559
49560
InternalDecoder.prototype.write = function(buf) {
49561
    if (!Buffer.isBuffer(buf)) {
49562
        buf = Buffer.from(buf);
49563
    }
49564
49565
    return this.decoder.write(buf);
49566
}
49567
49568
InternalDecoder.prototype.end = function() {
49569
    return this.decoder.end();
49570
}
49571
49572
49573
//------------------------------------------------------------------------------
49574
// Encoder is mostly trivial
49575
49576
function InternalEncoder(options, codec) {
49577
    this.enc = codec.enc;
49578
}
49579
49580
InternalEncoder.prototype.write = function(str) {
49581
    return Buffer.from(str, this.enc);
49582
}
49583
49584
InternalEncoder.prototype.end = function() {
49585
}
49586
49587
49588
//------------------------------------------------------------------------------
49589
// Except base64 encoder, which must keep its state.
49590
49591
function InternalEncoderBase64(options, codec) {
49592
    this.prevStr = '';
49593
}
49594
49595
InternalEncoderBase64.prototype.write = function(str) {
49596
    str = this.prevStr + str;
49597
    var completeQuads = str.length - (str.length % 4);
49598
    this.prevStr = str.slice(completeQuads);
49599
    str = str.slice(0, completeQuads);
49600
49601
    return Buffer.from(str, "base64");
49602
}
49603
49604
InternalEncoderBase64.prototype.end = function() {
49605
    return Buffer.from(this.prevStr, "base64");
49606
}
49607
49608
49609
//------------------------------------------------------------------------------
49610
// CESU-8 encoder is also special.
49611
49612
function InternalEncoderCesu8(options, codec) {
49613
}
49614
49615
InternalEncoderCesu8.prototype.write = function(str) {
49616
    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;
49617
    for (var i = 0; i < str.length; i++) {
49618
        var charCode = str.charCodeAt(i);
49619
        // Naive implementation, but it works because CESU-8 is especially easy
49620
        // to convert from UTF-16 (which all JS strings are encoded in).
49621
        if (charCode < 0x80)
49622
            buf[bufIdx++] = charCode;
49623
        else if (charCode < 0x800) {
49624
            buf[bufIdx++] = 0xC0 + (charCode >>> 6);
49625
            buf[bufIdx++] = 0x80 + (charCode & 0x3f);
49626
        }
49627
        else { // charCode will always be < 0x10000 in javascript.
49628
            buf[bufIdx++] = 0xE0 + (charCode >>> 12);
49629
            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
49630
            buf[bufIdx++] = 0x80 + (charCode & 0x3f);
49631
        }
49632
    }
49633
    return buf.slice(0, bufIdx);
49634
}
49635
49636
InternalEncoderCesu8.prototype.end = function() {
49637
}
49638
49639
//------------------------------------------------------------------------------
49640
// CESU-8 decoder is not implemented in Node v4.0+
49641
49642
function InternalDecoderCesu8(options, codec) {
49643
    this.acc = 0;
49644
    this.contBytes = 0;
49645
    this.accBytes = 0;
49646
    this.defaultCharUnicode = codec.defaultCharUnicode;
49647
}
49648
49649
InternalDecoderCesu8.prototype.write = function(buf) {
49650
    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes,
49651
        res = '';
49652
    for (var i = 0; i < buf.length; i++) {
49653
        var curByte = buf[i];
49654
        if ((curByte & 0xC0) !== 0x80) { // Leading byte
49655
            if (contBytes > 0) { // Previous code is invalid
49656
                res += this.defaultCharUnicode;
49657
                contBytes = 0;
49658
            }
49659
49660
            if (curByte < 0x80) { // Single-byte code
49661
                res += String.fromCharCode(curByte);
49662
            } else if (curByte < 0xE0) { // Two-byte code
49663
                acc = curByte & 0x1F;
49664
                contBytes = 1; accBytes = 1;
49665
            } else if (curByte < 0xF0) { // Three-byte code
49666
                acc = curByte & 0x0F;
49667
                contBytes = 2; accBytes = 1;
49668
            } else { // Four or more are not supported for CESU-8.
49669
                res += this.defaultCharUnicode;
49670
            }
49671
        } else { // Continuation byte
49672
            if (contBytes > 0) { // We're waiting for it.
49673
                acc = (acc << 6) | (curByte & 0x3f);
49674
                contBytes--; accBytes++;
49675
                if (contBytes === 0) {
49676
                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
49677
                    if (accBytes === 2 && acc < 0x80 && acc > 0)
49678
                        res += this.defaultCharUnicode;
49679
                    else if (accBytes === 3 && acc < 0x800)
49680
                        res += this.defaultCharUnicode;
49681
                    else
49682
                        // Actually add character.
49683
                        res += String.fromCharCode(acc);
49684
                }
49685
            } else { // Unexpected continuation byte
49686
                res += this.defaultCharUnicode;
49687
            }
49688
        }
49689
    }
49690
    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;
49691
    return res;
49692
}
49693
49694
InternalDecoderCesu8.prototype.end = function() {
49695
    var res = 0;
49696
    if (this.contBytes > 0)
49697
        res += this.defaultCharUnicode;
49698
    return res;
49699
}
49700
49701
49702
/***/ }),
49703
49704
/***/ 9068:
49705
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
49706
49707
"use strict";
49708
49709
var Buffer = (__webpack_require__(7103).Buffer);
49710
49711
// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
49712
// correspond to encoded bytes (if 128 - then lower half is ASCII).
49713
49714
exports._sbcs = SBCSCodec;
49715
function SBCSCodec(codecOptions, iconv) {
49716
    if (!codecOptions)
49717
        throw new Error("SBCS codec is called without the data.")
49718
49719
    // Prepare char buffer for decoding.
49720
    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
49721
        throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
49722
49723
    if (codecOptions.chars.length === 128) {
49724
        var asciiString = "";
49725
        for (var i = 0; i < 128; i++)
49726
            asciiString += String.fromCharCode(i);
49727
        codecOptions.chars = asciiString + codecOptions.chars;
49728
    }
49729
49730
    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');
49731
49732
    // Encoding buffer.
49733
    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));
49734
49735
    for (var i = 0; i < codecOptions.chars.length; i++)
49736
        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
49737
49738
    this.encodeBuf = encodeBuf;
49739
}
49740
49741
SBCSCodec.prototype.encoder = SBCSEncoder;
49742
SBCSCodec.prototype.decoder = SBCSDecoder;
49743
49744
49745
function SBCSEncoder(options, codec) {
49746
    this.encodeBuf = codec.encodeBuf;
49747
}
49748
49749
SBCSEncoder.prototype.write = function(str) {
49750
    var buf = Buffer.alloc(str.length);
49751
    for (var i = 0; i < str.length; i++)
49752
        buf[i] = this.encodeBuf[str.charCodeAt(i)];
49753
49754
    return buf;
49755
}
49756
49757
SBCSEncoder.prototype.end = function() {
49758
}
49759
49760
49761
function SBCSDecoder(options, codec) {
49762
    this.decodeBuf = codec.decodeBuf;
49763
}
49764
49765
SBCSDecoder.prototype.write = function(buf) {
49766
    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
49767
    var decodeBuf = this.decodeBuf;
49768
    var newBuf = Buffer.alloc(buf.length*2);
49769
    var idx1 = 0, idx2 = 0;
49770
    for (var i = 0; i < buf.length; i++) {
49771
        idx1 = buf[i]*2; idx2 = i*2;
49772
        newBuf[idx2] = decodeBuf[idx1];
49773
        newBuf[idx2+1] = decodeBuf[idx1+1];
49774
    }
49775
    return newBuf.toString('ucs2');
49776
}
49777
49778
SBCSDecoder.prototype.end = function() {
49779
}
49780
49781
49782
/***/ }),
49783
49784
/***/ 7018:
49785
/***/ (function(module) {
49786
49787
"use strict";
49788
49789
49790
// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.
49791
module.exports = {
49792
  "437": "cp437",
49793
  "737": "cp737",
49794
  "775": "cp775",
49795
  "850": "cp850",
49796
  "852": "cp852",
49797
  "855": "cp855",
49798
  "856": "cp856",
49799
  "857": "cp857",
49800
  "858": "cp858",
49801
  "860": "cp860",
49802
  "861": "cp861",
49803
  "862": "cp862",
49804
  "863": "cp863",
49805
  "864": "cp864",
49806
  "865": "cp865",
49807
  "866": "cp866",
49808
  "869": "cp869",
49809
  "874": "windows874",
49810
  "922": "cp922",
49811
  "1046": "cp1046",
49812
  "1124": "cp1124",
49813
  "1125": "cp1125",
49814
  "1129": "cp1129",
49815
  "1133": "cp1133",
49816
  "1161": "cp1161",
49817
  "1162": "cp1162",
49818
  "1163": "cp1163",
49819
  "1250": "windows1250",
49820
  "1251": "windows1251",
49821
  "1252": "windows1252",
49822
  "1253": "windows1253",
49823
  "1254": "windows1254",
49824
  "1255": "windows1255",
49825
  "1256": "windows1256",
49826
  "1257": "windows1257",
49827
  "1258": "windows1258",
49828
  "28591": "iso88591",
49829
  "28592": "iso88592",
49830
  "28593": "iso88593",
49831
  "28594": "iso88594",
49832
  "28595": "iso88595",
49833
  "28596": "iso88596",
49834
  "28597": "iso88597",
49835
  "28598": "iso88598",
49836
  "28599": "iso88599",
49837
  "28600": "iso885910",
49838
  "28601": "iso885911",
49839
  "28603": "iso885913",
49840
  "28604": "iso885914",
49841
  "28605": "iso885915",
49842
  "28606": "iso885916",
49843
  "windows874": {
49844
    "type": "_sbcs",
49845
    "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
49846
  },
49847
  "win874": "windows874",
49848
  "cp874": "windows874",
49849
  "windows1250": {
49850
    "type": "_sbcs",
49851
    "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
49852
  },
49853
  "win1250": "windows1250",
49854
  "cp1250": "windows1250",
49855
  "windows1251": {
49856
    "type": "_sbcs",
49857
    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
49858
  },
49859
  "win1251": "windows1251",
49860
  "cp1251": "windows1251",
49861
  "windows1252": {
49862
    "type": "_sbcs",
49863
    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
49864
  },
49865
  "win1252": "windows1252",
49866
  "cp1252": "windows1252",
49867
  "windows1253": {
49868
    "type": "_sbcs",
49869
    "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
49870
  },
49871
  "win1253": "windows1253",
49872
  "cp1253": "windows1253",
49873
  "windows1254": {
49874
    "type": "_sbcs",
49875
    "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
49876
  },
49877
  "win1254": "windows1254",
49878
  "cp1254": "windows1254",
49879
  "windows1255": {
49880
    "type": "_sbcs",
49881
    "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
49882
  },
49883
  "win1255": "windows1255",
49884
  "cp1255": "windows1255",
49885
  "windows1256": {
49886
    "type": "_sbcs",
49887
    "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"
49888
  },
49889
  "win1256": "windows1256",
49890
  "cp1256": "windows1256",
49891
  "windows1257": {
49892
    "type": "_sbcs",
49893
    "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
49894
  },
49895
  "win1257": "windows1257",
49896
  "cp1257": "windows1257",
49897
  "windows1258": {
49898
    "type": "_sbcs",
49899
    "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
49900
  },
49901
  "win1258": "windows1258",
49902
  "cp1258": "windows1258",
49903
  "iso88591": {
49904
    "type": "_sbcs",
49905
    "chars": " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
49906
  },
49907
  "cp28591": "iso88591",
49908
  "iso88592": {
49909
    "type": "_sbcs",
49910
    "chars": " Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
49911
  },
49912
  "cp28592": "iso88592",
49913
  "iso88593": {
49914
    "type": "_sbcs",
49915
    "chars": " Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"
49916
  },
49917
  "cp28593": "iso88593",
49918
  "iso88594": {
49919
    "type": "_sbcs",
49920
    "chars": " ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
49921
  },
49922
  "cp28594": "iso88594",
49923
  "iso88595": {
49924
    "type": "_sbcs",
49925
    "chars": " ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
49926
  },
49927
  "cp28595": "iso88595",
49928
  "iso88596": {
49929
    "type": "_sbcs",
49930
    "chars": " ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"
49931
  },
49932
  "cp28596": "iso88596",
49933
  "iso88597": {
49934
    "type": "_sbcs",
49935
    "chars": " ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
49936
  },
49937
  "cp28597": "iso88597",
49938
  "iso88598": {
49939
    "type": "_sbcs",
49940
    "chars": " �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
49941
  },
49942
  "cp28598": "iso88598",
49943
  "iso88599": {
49944
    "type": "_sbcs",
49945
    "chars": " ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
49946
  },
49947
  "cp28599": "iso88599",
49948
  "iso885910": {
49949
    "type": "_sbcs",
49950
    "chars": " ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
49951
  },
49952
  "cp28600": "iso885910",
49953
  "iso885911": {
49954
    "type": "_sbcs",
49955
    "chars": " กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
49956
  },
49957
  "cp28601": "iso885911",
49958
  "iso885913": {
49959
    "type": "_sbcs",
49960
    "chars": " ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
49961
  },
49962
  "cp28603": "iso885913",
49963
  "iso885914": {
49964
    "type": "_sbcs",
49965
    "chars": " Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
49966
  },
49967
  "cp28604": "iso885914",
49968
  "iso885915": {
49969
    "type": "_sbcs",
49970
    "chars": " ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
49971
  },
49972
  "cp28605": "iso885915",
49973
  "iso885916": {
49974
    "type": "_sbcs",
49975
    "chars": " ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
49976
  },
49977
  "cp28606": "iso885916",
49978
  "cp437": {
49979
    "type": "_sbcs",
49980
    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
49981
  },
49982
  "ibm437": "cp437",
49983
  "csibm437": "cp437",
49984
  "cp737": {
49985
    "type": "_sbcs",
49986
    "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
49987
  },
49988
  "ibm737": "cp737",
49989
  "csibm737": "cp737",
49990
  "cp775": {
49991
    "type": "_sbcs",
49992
    "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "
49993
  },
49994
  "ibm775": "cp775",
49995
  "csibm775": "cp775",
49996
  "cp850": {
49997
    "type": "_sbcs",
49998
    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "
49999
  },
50000
  "ibm850": "cp850",
50001
  "csibm850": "cp850",
50002
  "cp852": {
50003
    "type": "_sbcs",
50004
    "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "
50005
  },
50006
  "ibm852": "cp852",
50007
  "csibm852": "cp852",
50008
  "cp855": {
50009
    "type": "_sbcs",
50010
    "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "
50011
  },
50012
  "ibm855": "cp855",
50013
  "csibm855": "cp855",
50014
  "cp856": {
50015
    "type": "_sbcs",
50016
    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "
50017
  },
50018
  "ibm856": "cp856",
50019
  "csibm856": "cp856",
50020
  "cp857": {
50021
    "type": "_sbcs",
50022
    "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "
50023
  },
50024
  "ibm857": "cp857",
50025
  "csibm857": "cp857",
50026
  "cp858": {
50027
    "type": "_sbcs",
50028
    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "
50029
  },
50030
  "ibm858": "cp858",
50031
  "csibm858": "cp858",
50032
  "cp860": {
50033
    "type": "_sbcs",
50034
    "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
50035
  },
50036
  "ibm860": "cp860",
50037
  "csibm860": "cp860",
50038
  "cp861": {
50039
    "type": "_sbcs",
50040
    "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
50041
  },
50042
  "ibm861": "cp861",
50043
  "csibm861": "cp861",
50044
  "cp862": {
50045
    "type": "_sbcs",
50046
    "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
50047
  },
50048
  "ibm862": "cp862",
50049
  "csibm862": "cp862",
50050
  "cp863": {
50051
    "type": "_sbcs",
50052
    "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
50053
  },
50054
  "ibm863": "cp863",
50055
  "csibm863": "cp863",
50056
  "cp864": {
50057
    "type": "_sbcs",
50058
    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"
50059
  },
50060
  "ibm864": "cp864",
50061
  "csibm864": "cp864",
50062
  "cp865": {
50063
    "type": "_sbcs",
50064
    "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
50065
  },
50066
  "ibm865": "cp865",
50067
  "csibm865": "cp865",
50068
  "cp866": {
50069
    "type": "_sbcs",
50070
    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
50071
  },
50072
  "ibm866": "cp866",
50073
  "csibm866": "cp866",
50074
  "cp869": {
50075
    "type": "_sbcs",
50076
    "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "
50077
  },
50078
  "ibm869": "cp869",
50079
  "csibm869": "cp869",
50080
  "cp922": {
50081
    "type": "_sbcs",
50082
    "chars": " ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
50083
  },
50084
  "ibm922": "cp922",
50085
  "csibm922": "cp922",
50086
  "cp1046": {
50087
    "type": "_sbcs",
50088
    "chars": "ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"
50089
  },
50090
  "ibm1046": "cp1046",
50091
  "csibm1046": "cp1046",
50092
  "cp1124": {
50093
    "type": "_sbcs",
50094
    "chars": " ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
50095
  },
50096
  "ibm1124": "cp1124",
50097
  "csibm1124": "cp1124",
50098
  "cp1125": {
50099
    "type": "_sbcs",
50100
    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
50101
  },
50102
  "ibm1125": "cp1125",
50103
  "csibm1125": "cp1125",
50104
  "cp1129": {
50105
    "type": "_sbcs",
50106
    "chars": " ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
50107
  },
50108
  "ibm1129": "cp1129",
50109
  "csibm1129": "cp1129",
50110
  "cp1133": {
50111
    "type": "_sbcs",
50112
    "chars": " ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"
50113
  },
50114
  "ibm1133": "cp1133",
50115
  "csibm1133": "cp1133",
50116
  "cp1161": {
50117
    "type": "_sbcs",
50118
    "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
50119
  },
50120
  "ibm1161": "cp1161",
50121
  "csibm1161": "cp1161",
50122
  "cp1162": {
50123
    "type": "_sbcs",
50124
    "chars": "€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
50125
  },
50126
  "ibm1162": "cp1162",
50127
  "csibm1162": "cp1162",
50128
  "cp1163": {
50129
    "type": "_sbcs",
50130
    "chars": " ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
50131
  },
50132
  "ibm1163": "cp1163",
50133
  "csibm1163": "cp1163",
50134
  "maccroatian": {
50135
    "type": "_sbcs",
50136
    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
50137
  },
50138
  "maccyrillic": {
50139
    "type": "_sbcs",
50140
    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
50141
  },
50142
  "macgreek": {
50143
    "type": "_sbcs",
50144
    "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"
50145
  },
50146
  "maciceland": {
50147
    "type": "_sbcs",
50148
    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
50149
  },
50150
  "macroman": {
50151
    "type": "_sbcs",
50152
    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
50153
  },
50154
  "macromania": {
50155
    "type": "_sbcs",
50156
    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
50157
  },
50158
  "macthai": {
50159
    "type": "_sbcs",
50160
    "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"
50161
  },
50162
  "macturkish": {
50163
    "type": "_sbcs",
50164
    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"
50165
  },
50166
  "macukraine": {
50167
    "type": "_sbcs",
50168
    "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
50169
  },
50170
  "koi8r": {
50171
    "type": "_sbcs",
50172
    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
50173
  },
50174
  "koi8u": {
50175
    "type": "_sbcs",
50176
    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
50177
  },
50178
  "koi8ru": {
50179
    "type": "_sbcs",
50180
    "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
50181
  },
50182
  "koi8t": {
50183
    "type": "_sbcs",
50184
    "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
50185
  },
50186
  "armscii8": {
50187
    "type": "_sbcs",
50188
    "chars": " �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"
50189
  },
50190
  "rk1048": {
50191
    "type": "_sbcs",
50192
    "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
50193
  },
50194
  "tcvn": {
50195
    "type": "_sbcs",
50196
    "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
50197
  },
50198
  "georgianacademy": {
50199
    "type": "_sbcs",
50200
    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
50201
  },
50202
  "georgianps": {
50203
    "type": "_sbcs",
50204
    "chars": "‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
50205
  },
50206
  "pt154": {
50207
    "type": "_sbcs",
50208
    "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
50209
  },
50210
  "viscii": {
50211
    "type": "_sbcs",
50212
    "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
50213
  },
50214
  "iso646cn": {
50215
    "type": "_sbcs",
50216
    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
50217
  },
50218
  "iso646jp": {
50219
    "type": "_sbcs",
50220
    "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
50221
  },
50222
  "hproman8": {
50223
    "type": "_sbcs",
50224
    "chars": " ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"
50225
  },
50226
  "macintosh": {
50227
    "type": "_sbcs",
50228
    "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
50229
  },
50230
  "ascii": {
50231
    "type": "_sbcs",
50232
    "chars": "��������������������������������������������������������������������������������������������������������������������������������"
50233
  },
50234
  "tis620": {
50235
    "type": "_sbcs",
50236
    "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
50237
  }
50238
}
50239
50240
/***/ }),
50241
50242
/***/ 3769:
50243
/***/ (function(module) {
50244
50245
"use strict";
50246
50247
50248
// Manually added data to be used by sbcs codec in addition to generated one.
50249
50250
module.exports = {
50251
    // Not supported by iconv, not sure why.
50252
    "10029": "maccenteuro",
50253
    "maccenteuro": {
50254
        "type": "_sbcs",
50255
        "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
50256
    },
50257
50258
    "808": "cp808",
50259
    "ibm808": "cp808",
50260
    "cp808": {
50261
        "type": "_sbcs",
50262
        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
50263
    },
50264
50265
    "mik": {
50266
        "type": "_sbcs",
50267
        "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
50268
    },
50269
50270
    "cp720": {
50271
        "type": "_sbcs",
50272
        "chars": "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0"
50273
    },
50274
50275
    // Aliases of generated encodings.
50276
    "ascii8bit": "ascii",
50277
    "usascii": "ascii",
50278
    "ansix34": "ascii",
50279
    "ansix341968": "ascii",
50280
    "ansix341986": "ascii",
50281
    "csascii": "ascii",
50282
    "cp367": "ascii",
50283
    "ibm367": "ascii",
50284
    "isoir6": "ascii",
50285
    "iso646us": "ascii",
50286
    "iso646irv": "ascii",
50287
    "us": "ascii",
50288
50289
    "latin1": "iso88591",
50290
    "latin2": "iso88592",
50291
    "latin3": "iso88593",
50292
    "latin4": "iso88594",
50293
    "latin5": "iso88599",
50294
    "latin6": "iso885910",
50295
    "latin7": "iso885913",
50296
    "latin8": "iso885914",
50297
    "latin9": "iso885915",
50298
    "latin10": "iso885916",
50299
50300
    "csisolatin1": "iso88591",
50301
    "csisolatin2": "iso88592",
50302
    "csisolatin3": "iso88593",
50303
    "csisolatin4": "iso88594",
50304
    "csisolatincyrillic": "iso88595",
50305
    "csisolatinarabic": "iso88596",
50306
    "csisolatingreek" : "iso88597",
50307
    "csisolatinhebrew": "iso88598",
50308
    "csisolatin5": "iso88599",
50309
    "csisolatin6": "iso885910",
50310
50311
    "l1": "iso88591",
50312
    "l2": "iso88592",
50313
    "l3": "iso88593",
50314
    "l4": "iso88594",
50315
    "l5": "iso88599",
50316
    "l6": "iso885910",
50317
    "l7": "iso885913",
50318
    "l8": "iso885914",
50319
    "l9": "iso885915",
50320
    "l10": "iso885916",
50321
50322
    "isoir14": "iso646jp",
50323
    "isoir57": "iso646cn",
50324
    "isoir100": "iso88591",
50325
    "isoir101": "iso88592",
50326
    "isoir109": "iso88593",
50327
    "isoir110": "iso88594",
50328
    "isoir144": "iso88595",
50329
    "isoir127": "iso88596",
50330
    "isoir126": "iso88597",
50331
    "isoir138": "iso88598",
50332
    "isoir148": "iso88599",
50333
    "isoir157": "iso885910",
50334
    "isoir166": "tis620",
50335
    "isoir179": "iso885913",
50336
    "isoir199": "iso885914",
50337
    "isoir203": "iso885915",
50338
    "isoir226": "iso885916",
50339
50340
    "cp819": "iso88591",
50341
    "ibm819": "iso88591",
50342
50343
    "cyrillic": "iso88595",
50344
50345
    "arabic": "iso88596",
50346
    "arabic8": "iso88596",
50347
    "ecma114": "iso88596",
50348
    "asmo708": "iso88596",
50349
50350
    "greek" : "iso88597",
50351
    "greek8" : "iso88597",
50352
    "ecma118" : "iso88597",
50353
    "elot928" : "iso88597",
50354
50355
    "hebrew": "iso88598",
50356
    "hebrew8": "iso88598",
50357
50358
    "turkish": "iso88599",
50359
    "turkish8": "iso88599",
50360
50361
    "thai": "iso885911",
50362
    "thai8": "iso885911",
50363
50364
    "celtic": "iso885914",
50365
    "celtic8": "iso885914",
50366
    "isoceltic": "iso885914",
50367
50368
    "tis6200": "tis620",
50369
    "tis62025291": "tis620",
50370
    "tis62025330": "tis620",
50371
50372
    "10000": "macroman",
50373
    "10006": "macgreek",
50374
    "10007": "maccyrillic",
50375
    "10079": "maciceland",
50376
    "10081": "macturkish",
50377
50378
    "cspc8codepage437": "cp437",
50379
    "cspc775baltic": "cp775",
50380
    "cspc850multilingual": "cp850",
50381
    "cspcp852": "cp852",
50382
    "cspc862latinhebrew": "cp862",
50383
    "cpgr": "cp869",
50384
50385
    "msee": "cp1250",
50386
    "mscyrl": "cp1251",
50387
    "msansi": "cp1252",
50388
    "msgreek": "cp1253",
50389
    "msturk": "cp1254",
50390
    "mshebr": "cp1255",
50391
    "msarab": "cp1256",
50392
    "winbaltrim": "cp1257",
50393
50394
    "cp20866": "koi8r",
50395
    "20866": "koi8r",
50396
    "ibm878": "koi8r",
50397
    "cskoi8r": "koi8r",
50398
50399
    "cp21866": "koi8u",
50400
    "21866": "koi8u",
50401
    "ibm1168": "koi8u",
50402
50403
    "strk10482002": "rk1048",
50404
50405
    "tcvn5712": "tcvn",
50406
    "tcvn57121": "tcvn",
50407
50408
    "gb198880": "iso646cn",
50409
    "cn": "iso646cn",
50410
50411
    "csiso14jisc6220ro": "iso646jp",
50412
    "jisc62201969ro": "iso646jp",
50413
    "jp": "iso646jp",
50414
50415
    "cshproman8": "hproman8",
50416
    "r8": "hproman8",
50417
    "roman8": "hproman8",
50418
    "xroman8": "hproman8",
50419
    "ibm1051": "hproman8",
50420
50421
    "mac": "macintosh",
50422
    "csmacintosh": "macintosh",
50423
};
50424
50425
50426
50427
/***/ }),
50428
50429
/***/ 1279:
50430
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
50431
50432
"use strict";
50433
50434
var Buffer = (__webpack_require__(7103).Buffer);
50435
50436
// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js
50437
50438
// == UTF16-BE codec. ==========================================================
50439
50440
exports.utf16be = Utf16BECodec;
50441
function Utf16BECodec() {
50442
}
50443
50444
Utf16BECodec.prototype.encoder = Utf16BEEncoder;
50445
Utf16BECodec.prototype.decoder = Utf16BEDecoder;
50446
Utf16BECodec.prototype.bomAware = true;
50447
50448
50449
// -- Encoding
50450
50451
function Utf16BEEncoder() {
50452
}
50453
50454
Utf16BEEncoder.prototype.write = function(str) {
50455
    var buf = Buffer.from(str, 'ucs2');
50456
    for (var i = 0; i < buf.length; i += 2) {
50457
        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;
50458
    }
50459
    return buf;
50460
}
50461
50462
Utf16BEEncoder.prototype.end = function() {
50463
}
50464
50465
50466
// -- Decoding
50467
50468
function Utf16BEDecoder() {
50469
    this.overflowByte = -1;
50470
}
50471
50472
Utf16BEDecoder.prototype.write = function(buf) {
50473
    if (buf.length == 0)
50474
        return '';
50475
50476
    var buf2 = Buffer.alloc(buf.length + 1),
50477
        i = 0, j = 0;
50478
50479
    if (this.overflowByte !== -1) {
50480
        buf2[0] = buf[0];
50481
        buf2[1] = this.overflowByte;
50482
        i = 1; j = 2;
50483
    }
50484
50485
    for (; i < buf.length-1; i += 2, j+= 2) {
50486
        buf2[j] = buf[i+1];
50487
        buf2[j+1] = buf[i];
50488
    }
50489
50490
    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;
50491
50492
    return buf2.slice(0, j).toString('ucs2');
50493
}
50494
50495
Utf16BEDecoder.prototype.end = function() {
50496
    this.overflowByte = -1;
50497
}
50498
50499
50500
// == UTF-16 codec =============================================================
50501
// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.
50502
// Defaults to UTF-16LE, as it's prevalent and default in Node.
50503
// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le
50504
// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});
50505
50506
// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).
50507
50508
exports.utf16 = Utf16Codec;
50509
function Utf16Codec(codecOptions, iconv) {
50510
    this.iconv = iconv;
50511
}
50512
50513
Utf16Codec.prototype.encoder = Utf16Encoder;
50514
Utf16Codec.prototype.decoder = Utf16Decoder;
50515
50516
50517
// -- Encoding (pass-through)
50518
50519
function Utf16Encoder(options, codec) {
50520
    options = options || {};
50521
    if (options.addBOM === undefined)
50522
        options.addBOM = true;
50523
    this.encoder = codec.iconv.getEncoder('utf-16le', options);
50524
}
50525
50526
Utf16Encoder.prototype.write = function(str) {
50527
    return this.encoder.write(str);
50528
}
50529
50530
Utf16Encoder.prototype.end = function() {
50531
    return this.encoder.end();
50532
}
50533
50534
50535
// -- Decoding
50536
50537
function Utf16Decoder(options, codec) {
50538
    this.decoder = null;
50539
    this.initialBufs = [];
50540
    this.initialBufsLen = 0;
50541
50542
    this.options = options || {};
50543
    this.iconv = codec.iconv;
50544
}
50545
50546
Utf16Decoder.prototype.write = function(buf) {
50547
    if (!this.decoder) {
50548
        // Codec is not chosen yet. Accumulate initial bytes.
50549
        this.initialBufs.push(buf);
50550
        this.initialBufsLen += buf.length;
50551
50552
        if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)
50553
            return '';
50554
50555
        // We have enough bytes -> detect endianness.
50556
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
50557
        this.decoder = this.iconv.getDecoder(encoding, this.options);
50558
50559
        var resStr = '';
50560
        for (var i = 0; i < this.initialBufs.length; i++)
50561
            resStr += this.decoder.write(this.initialBufs[i]);
50562
50563
        this.initialBufs.length = this.initialBufsLen = 0;
50564
        return resStr;
50565
    }
50566
50567
    return this.decoder.write(buf);
50568
}
50569
50570
Utf16Decoder.prototype.end = function() {
50571
    if (!this.decoder) {
50572
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
50573
        this.decoder = this.iconv.getDecoder(encoding, this.options);
50574
50575
        var resStr = '';
50576
        for (var i = 0; i < this.initialBufs.length; i++)
50577
            resStr += this.decoder.write(this.initialBufs[i]);
50578
50579
        var trail = this.decoder.end();
50580
        if (trail)
50581
            resStr += trail;
50582
50583
        this.initialBufs.length = this.initialBufsLen = 0;
50584
        return resStr;
50585
    }
50586
    return this.decoder.end();
50587
}
50588
50589
function detectEncoding(bufs, defaultEncoding) {
50590
    var b = [];
50591
    var charsProcessed = 0;
50592
    var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.
50593
50594
    outer_loop:
50595
    for (var i = 0; i < bufs.length; i++) {
50596
        var buf = bufs[i];
50597
        for (var j = 0; j < buf.length; j++) {
50598
            b.push(buf[j]);
50599
            if (b.length === 2) {
50600
                if (charsProcessed === 0) {
50601
                    // Check BOM first.
50602
                    if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';
50603
                    if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';
50604
                }
50605
50606
                if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;
50607
                if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;
50608
50609
                b.length = 0;
50610
                charsProcessed++;
50611
50612
                if (charsProcessed >= 100) {
50613
                    break outer_loop;
50614
                }
50615
            }
50616
        }
50617
    }
50618
50619
    // Make decisions.
50620
    // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
50621
    // So, we count ASCII as if it was LE or BE, and decide from that.
50622
    if (asciiCharsBE > asciiCharsLE) return 'utf-16be';
50623
    if (asciiCharsBE < asciiCharsLE) return 'utf-16le';
50624
50625
    // Couldn't decide (likely all zeros or not enough data).
50626
    return defaultEncoding || 'utf-16le';
50627
}
50628
50629
50630
50631
50632
/***/ }),
50633
50634
/***/ 7688:
50635
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
50636
50637
"use strict";
50638
50639
50640
var Buffer = (__webpack_require__(7103).Buffer);
50641
50642
// == UTF32-LE/BE codec. ==========================================================
50643
50644
exports._utf32 = Utf32Codec;
50645
50646
function Utf32Codec(codecOptions, iconv) {
50647
    this.iconv = iconv;
50648
    this.bomAware = true;
50649
    this.isLE = codecOptions.isLE;
50650
}
50651
50652
exports.utf32le = { type: '_utf32', isLE: true };
50653
exports.utf32be = { type: '_utf32', isLE: false };
50654
50655
// Aliases
50656
exports.ucs4le = 'utf32le';
50657
exports.ucs4be = 'utf32be';
50658
50659
Utf32Codec.prototype.encoder = Utf32Encoder;
50660
Utf32Codec.prototype.decoder = Utf32Decoder;
50661
50662
// -- Encoding
50663
50664
function Utf32Encoder(options, codec) {
50665
    this.isLE = codec.isLE;
50666
    this.highSurrogate = 0;
50667
}
50668
50669
Utf32Encoder.prototype.write = function(str) {
50670
    var src = Buffer.from(str, 'ucs2');
50671
    var dst = Buffer.alloc(src.length * 2);
50672
    var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;
50673
    var offset = 0;
50674
50675
    for (var i = 0; i < src.length; i += 2) {
50676
        var code = src.readUInt16LE(i);
50677
        var isHighSurrogate = (0xD800 <= code && code < 0xDC00);
50678
        var isLowSurrogate = (0xDC00 <= code && code < 0xE000);
50679
50680
        if (this.highSurrogate) {
50681
            if (isHighSurrogate || !isLowSurrogate) {
50682
                // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low
50683
                // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character
50684
                // (technically wrong, but expected by some applications, like Windows file names).
50685
                write32.call(dst, this.highSurrogate, offset);
50686
                offset += 4;
50687
            }
50688
            else {
50689
                // Create 32-bit value from high and low surrogates;
50690
                var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;
50691
50692
                write32.call(dst, codepoint, offset);
50693
                offset += 4;
50694
                this.highSurrogate = 0;
50695
50696
                continue;
50697
            }
50698
        }
50699
50700
        if (isHighSurrogate)
50701
            this.highSurrogate = code;
50702
        else {
50703
            // Even if the current character is a low surrogate, with no previous high surrogate, we'll
50704
            // encode it as a semi-invalid stand-alone character for the same reasons expressed above for
50705
            // unpaired high surrogates.
50706
            write32.call(dst, code, offset);
50707
            offset += 4;
50708
            this.highSurrogate = 0;
50709
        }
50710
    }
50711
50712
    if (offset < dst.length)
50713
        dst = dst.slice(0, offset);
50714
50715
    return dst;
50716
};
50717
50718
Utf32Encoder.prototype.end = function() {
50719
    // Treat any leftover high surrogate as a semi-valid independent character.
50720
    if (!this.highSurrogate)
50721
        return;
50722
50723
    var buf = Buffer.alloc(4);
50724
50725
    if (this.isLE)
50726
        buf.writeUInt32LE(this.highSurrogate, 0);
50727
    else
50728
        buf.writeUInt32BE(this.highSurrogate, 0);
50729
50730
    this.highSurrogate = 0;
50731
50732
    return buf;
50733
};
50734
50735
// -- Decoding
50736
50737
function Utf32Decoder(options, codec) {
50738
    this.isLE = codec.isLE;
50739
    this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);
50740
    this.overflow = [];
50741
}
50742
50743
Utf32Decoder.prototype.write = function(src) {
50744
    if (src.length === 0)
50745
        return '';
50746
50747
    var i = 0;
50748
    var codepoint = 0;
50749
    var dst = Buffer.alloc(src.length + 4);
50750
    var offset = 0;
50751
    var isLE = this.isLE;
50752
    var overflow = this.overflow;
50753
    var badChar = this.badChar;
50754
50755
    if (overflow.length > 0) {
50756
        for (; i < src.length && overflow.length < 4; i++)
50757
            overflow.push(src[i]);
50758
50759
        if (overflow.length === 4) {
50760
            // NOTE: codepoint is a signed int32 and can be negative.
50761
            // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).
50762
            if (isLE) {
50763
                codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);
50764
            } else {
50765
                codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);
50766
            }
50767
            overflow.length = 0;
50768
50769
            offset = _writeCodepoint(dst, offset, codepoint, badChar);
50770
        }
50771
    }
50772
50773
    // Main loop. Should be as optimized as possible.
50774
    for (; i < src.length - 3; i += 4) {
50775
        // NOTE: codepoint is a signed int32 and can be negative.
50776
        if (isLE) {
50777
            codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);
50778
        } else {
50779
            codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);
50780
        }
50781
        offset = _writeCodepoint(dst, offset, codepoint, badChar);
50782
    }
50783
50784
    // Keep overflowing bytes.
50785
    for (; i < src.length; i++) {
50786
        overflow.push(src[i]);
50787
    }
50788
50789
    return dst.slice(0, offset).toString('ucs2');
50790
};
50791
50792
function _writeCodepoint(dst, offset, codepoint, badChar) {
50793
    // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.
50794
    if (codepoint < 0 || codepoint > 0x10FFFF) {
50795
        // Not a valid Unicode codepoint
50796
        codepoint = badChar;
50797
    }
50798
50799
    // Ephemeral Planes: Write high surrogate.
50800
    if (codepoint >= 0x10000) {
50801
        codepoint -= 0x10000;
50802
50803
        var high = 0xD800 | (codepoint >> 10);
50804
        dst[offset++] = high & 0xff;
50805
        dst[offset++] = high >> 8;
50806
50807
        // Low surrogate is written below.
50808
        var codepoint = 0xDC00 | (codepoint & 0x3FF);
50809
    }
50810
50811
    // Write BMP char or low surrogate.
50812
    dst[offset++] = codepoint & 0xff;
50813
    dst[offset++] = codepoint >> 8;
50814
50815
    return offset;
50816
};
50817
50818
Utf32Decoder.prototype.end = function() {
50819
    this.overflow.length = 0;
50820
};
50821
50822
// == UTF-32 Auto codec =============================================================
50823
// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.
50824
// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32
50825
// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});
50826
50827
// Encoder prepends BOM (which can be overridden with (addBOM: false}).
50828
50829
exports.utf32 = Utf32AutoCodec;
50830
exports.ucs4 = 'utf32';
50831
50832
function Utf32AutoCodec(options, iconv) {
50833
    this.iconv = iconv;
50834
}
50835
50836
Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder;
50837
Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder;
50838
50839
// -- Encoding
50840
50841
function Utf32AutoEncoder(options, codec) {
50842
    options = options || {};
50843
50844
    if (options.addBOM === undefined)
50845
        options.addBOM = true;
50846
50847
    this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);
50848
}
50849
50850
Utf32AutoEncoder.prototype.write = function(str) {
50851
    return this.encoder.write(str);
50852
};
50853
50854
Utf32AutoEncoder.prototype.end = function() {
50855
    return this.encoder.end();
50856
};
50857
50858
// -- Decoding
50859
50860
function Utf32AutoDecoder(options, codec) {
50861
    this.decoder = null;
50862
    this.initialBufs = [];
50863
    this.initialBufsLen = 0;
50864
    this.options = options || {};
50865
    this.iconv = codec.iconv;
50866
}
50867
50868
Utf32AutoDecoder.prototype.write = function(buf) {
50869
    if (!this.decoder) {
50870
        // Codec is not chosen yet. Accumulate initial bytes.
50871
        this.initialBufs.push(buf);
50872
        this.initialBufsLen += buf.length;
50873
50874
        if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)
50875
            return '';
50876
50877
        // We have enough bytes -> detect endianness.
50878
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
50879
        this.decoder = this.iconv.getDecoder(encoding, this.options);
50880
50881
        var resStr = '';
50882
        for (var i = 0; i < this.initialBufs.length; i++)
50883
            resStr += this.decoder.write(this.initialBufs[i]);
50884
50885
        this.initialBufs.length = this.initialBufsLen = 0;
50886
        return resStr;
50887
    }
50888
50889
    return this.decoder.write(buf);
50890
};
50891
50892
Utf32AutoDecoder.prototype.end = function() {
50893
    if (!this.decoder) {
50894
        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
50895
        this.decoder = this.iconv.getDecoder(encoding, this.options);
50896
50897
        var resStr = '';
50898
        for (var i = 0; i < this.initialBufs.length; i++)
50899
            resStr += this.decoder.write(this.initialBufs[i]);
50900
50901
        var trail = this.decoder.end();
50902
        if (trail)
50903
            resStr += trail;
50904
50905
        this.initialBufs.length = this.initialBufsLen = 0;
50906
        return resStr;
50907
    }
50908
50909
    return this.decoder.end();
50910
};
50911
50912
function detectEncoding(bufs, defaultEncoding) {
50913
    var b = [];
50914
    var charsProcessed = 0;
50915
    var invalidLE = 0, invalidBE = 0;   // Number of invalid chars when decoded as LE or BE.
50916
    var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.
50917
50918
    outer_loop:
50919
    for (var i = 0; i < bufs.length; i++) {
50920
        var buf = bufs[i];
50921
        for (var j = 0; j < buf.length; j++) {
50922
            b.push(buf[j]);
50923
            if (b.length === 4) {
50924
                if (charsProcessed === 0) {
50925
                    // Check BOM first.
50926
                    if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {
50927
                        return 'utf-32le';
50928
                    }
50929
                    if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {
50930
                        return 'utf-32be';
50931
                    }
50932
                }
50933
50934
                if (b[0] !== 0 || b[1] > 0x10) invalidBE++;
50935
                if (b[3] !== 0 || b[2] > 0x10) invalidLE++;
50936
50937
                if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;
50938
                if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;
50939
50940
                b.length = 0;
50941
                charsProcessed++;
50942
50943
                if (charsProcessed >= 100) {
50944
                    break outer_loop;
50945
                }
50946
            }
50947
        }
50948
    }
50949
50950
    // Make decisions.
50951
    if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)  return 'utf-32be';
50952
    if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)  return 'utf-32le';
50953
50954
    // Couldn't decide (likely all zeros or not enough data).
50955
    return defaultEncoding || 'utf-32le';
50956
}
50957
50958
50959
/***/ }),
50960
50961
/***/ 758:
50962
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
50963
50964
"use strict";
50965
50966
var Buffer = (__webpack_require__(7103).Buffer);
50967
50968
// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152
50969
// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3
50970
50971
exports.utf7 = Utf7Codec;
50972
exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7
50973
function Utf7Codec(codecOptions, iconv) {
50974
    this.iconv = iconv;
50975
};
50976
50977
Utf7Codec.prototype.encoder = Utf7Encoder;
50978
Utf7Codec.prototype.decoder = Utf7Decoder;
50979
Utf7Codec.prototype.bomAware = true;
50980
50981
50982
// -- Encoding
50983
50984
var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
50985
50986
function Utf7Encoder(options, codec) {
50987
    this.iconv = codec.iconv;
50988
}
50989
50990
Utf7Encoder.prototype.write = function(str) {
50991
    // Naive implementation.
50992
    // Non-direct chars are encoded as "+<base64>-"; single "+" char is encoded as "+-".
50993
    return Buffer.from(str.replace(nonDirectChars, function(chunk) {
50994
        return "+" + (chunk === '+' ? '' :
50995
            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, ''))
50996
            + "-";
50997
    }.bind(this)));
50998
}
50999
51000
Utf7Encoder.prototype.end = function() {
51001
}
51002
51003
51004
// -- Decoding
51005
51006
function Utf7Decoder(options, codec) {
51007
    this.iconv = codec.iconv;
51008
    this.inBase64 = false;
51009
    this.base64Accum = '';
51010
}
51011
51012
var base64Regex = /[A-Za-z0-9\/+]/;
51013
var base64Chars = [];
51014
for (var i = 0; i < 256; i++)
51015
    base64Chars[i] = base64Regex.test(String.fromCharCode(i));
51016
51017
var plusChar = '+'.charCodeAt(0),
51018
    minusChar = '-'.charCodeAt(0),
51019
    andChar = '&'.charCodeAt(0);
51020
51021
Utf7Decoder.prototype.write = function(buf) {
51022
    var res = "", lastI = 0,
51023
        inBase64 = this.inBase64,
51024
        base64Accum = this.base64Accum;
51025
51026
    // The decoder is more involved as we must handle chunks in stream.
51027
51028
    for (var i = 0; i < buf.length; i++) {
51029
        if (!inBase64) { // We're in direct mode.
51030
            // Write direct chars until '+'
51031
            if (buf[i] == plusChar) {
51032
                res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
51033
                lastI = i+1;
51034
                inBase64 = true;
51035
            }
51036
        } else { // We decode base64.
51037
            if (!base64Chars[buf[i]]) { // Base64 ended.
51038
                if (i == lastI && buf[i] == minusChar) {// "+-" -> "+"
51039
                    res += "+";
51040
                } else {
51041
                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii");
51042
                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
51043
                }
51044
51045
                if (buf[i] != minusChar) // Minus is absorbed after base64.
51046
                    i--;
51047
51048
                lastI = i+1;
51049
                inBase64 = false;
51050
                base64Accum = '';
51051
            }
51052
        }
51053
    }
51054
51055
    if (!inBase64) {
51056
        res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
51057
    } else {
51058
        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii");
51059
51060
        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
51061
        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
51062
        b64str = b64str.slice(0, canBeDecoded);
51063
51064
        res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
51065
    }
51066
51067
    this.inBase64 = inBase64;
51068
    this.base64Accum = base64Accum;
51069
51070
    return res;
51071
}
51072
51073
Utf7Decoder.prototype.end = function() {
51074
    var res = "";
51075
    if (this.inBase64 && this.base64Accum.length > 0)
51076
        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
51077
51078
    this.inBase64 = false;
51079
    this.base64Accum = '';
51080
    return res;
51081
}
51082
51083
51084
// UTF-7-IMAP codec.
51085
// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)
51086
// Differences:
51087
//  * Base64 part is started by "&" instead of "+"
51088
//  * Direct characters are 0x20-0x7E, except "&" (0x26)
51089
//  * In Base64, "," is used instead of "/"
51090
//  * Base64 must not be used to represent direct characters.
51091
//  * No implicit shift back from Base64 (should always end with '-')
51092
//  * String must end in non-shifted position.
51093
//  * "-&" while in base64 is not allowed.
51094
51095
51096
exports.utf7imap = Utf7IMAPCodec;
51097
function Utf7IMAPCodec(codecOptions, iconv) {
51098
    this.iconv = iconv;
51099
};
51100
51101
Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
51102
Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
51103
Utf7IMAPCodec.prototype.bomAware = true;
51104
51105
51106
// -- Encoding
51107
51108
function Utf7IMAPEncoder(options, codec) {
51109
    this.iconv = codec.iconv;
51110
    this.inBase64 = false;
51111
    this.base64Accum = Buffer.alloc(6);
51112
    this.base64AccumIdx = 0;
51113
}
51114
51115
Utf7IMAPEncoder.prototype.write = function(str) {
51116
    var inBase64 = this.inBase64,
51117
        base64Accum = this.base64Accum,
51118
        base64AccumIdx = this.base64AccumIdx,
51119
        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;
51120
51121
    for (var i = 0; i < str.length; i++) {
51122
        var uChar = str.charCodeAt(i);
51123
        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.
51124
            if (inBase64) {
51125
                if (base64AccumIdx > 0) {
51126
                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
51127
                    base64AccumIdx = 0;
51128
                }
51129
51130
                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
51131
                inBase64 = false;
51132
            }
51133
51134
            if (!inBase64) {
51135
                buf[bufIdx++] = uChar; // Write direct character
51136
51137
                if (uChar === andChar)  // Ampersand -> '&-'
51138
                    buf[bufIdx++] = minusChar;
51139
            }
51140
51141
        } else { // Non-direct character
51142
            if (!inBase64) {
51143
                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.
51144
                inBase64 = true;
51145
            }
51146
            if (inBase64) {
51147
                base64Accum[base64AccumIdx++] = uChar >> 8;
51148
                base64Accum[base64AccumIdx++] = uChar & 0xFF;
51149
51150
                if (base64AccumIdx == base64Accum.length) {
51151
                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx);
51152
                    base64AccumIdx = 0;
51153
                }
51154
            }
51155
        }
51156
    }
51157
51158
    this.inBase64 = inBase64;
51159
    this.base64AccumIdx = base64AccumIdx;
51160
51161
    return buf.slice(0, bufIdx);
51162
}
51163
51164
Utf7IMAPEncoder.prototype.end = function() {
51165
    var buf = Buffer.alloc(10), bufIdx = 0;
51166
    if (this.inBase64) {
51167
        if (this.base64AccumIdx > 0) {
51168
            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
51169
            this.base64AccumIdx = 0;
51170
        }
51171
51172
        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
51173
        this.inBase64 = false;
51174
    }
51175
51176
    return buf.slice(0, bufIdx);
51177
}
51178
51179
51180
// -- Decoding
51181
51182
function Utf7IMAPDecoder(options, codec) {
51183
    this.iconv = codec.iconv;
51184
    this.inBase64 = false;
51185
    this.base64Accum = '';
51186
}
51187
51188
var base64IMAPChars = base64Chars.slice();
51189
base64IMAPChars[','.charCodeAt(0)] = true;
51190
51191
Utf7IMAPDecoder.prototype.write = function(buf) {
51192
    var res = "", lastI = 0,
51193
        inBase64 = this.inBase64,
51194
        base64Accum = this.base64Accum;
51195
51196
    // The decoder is more involved as we must handle chunks in stream.
51197
    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
51198
51199
    for (var i = 0; i < buf.length; i++) {
51200
        if (!inBase64) { // We're in direct mode.
51201
            // Write direct chars until '&'
51202
            if (buf[i] == andChar) {
51203
                res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
51204
                lastI = i+1;
51205
                inBase64 = true;
51206
            }
51207
        } else { // We decode base64.
51208
            if (!base64IMAPChars[buf[i]]) { // Base64 ended.
51209
                if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
51210
                    res += "&";
51211
                } else {
51212
                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/');
51213
                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
51214
                }
51215
51216
                if (buf[i] != minusChar) // Minus may be absorbed after base64.
51217
                    i--;
51218
51219
                lastI = i+1;
51220
                inBase64 = false;
51221
                base64Accum = '';
51222
            }
51223
        }
51224
    }
51225
51226
    if (!inBase64) {
51227
        res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
51228
    } else {
51229
        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/');
51230
51231
        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
51232
        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
51233
        b64str = b64str.slice(0, canBeDecoded);
51234
51235
        res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
51236
    }
51237
51238
    this.inBase64 = inBase64;
51239
    this.base64Accum = base64Accum;
51240
51241
    return res;
51242
}
51243
51244
Utf7IMAPDecoder.prototype.end = function() {
51245
    var res = "";
51246
    if (this.inBase64 && this.base64Accum.length > 0)
51247
        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
51248
51249
    this.inBase64 = false;
51250
    this.base64Accum = '';
51251
    return res;
51252
}
51253
51254
51255
51256
51257
/***/ }),
51258
51259
/***/ 5395:
51260
/***/ (function(__unused_webpack_module, exports) {
51261
51262
"use strict";
51263
51264
51265
var BOMChar = '\uFEFF';
51266
51267
exports.PrependBOM = PrependBOMWrapper
51268
function PrependBOMWrapper(encoder, options) {
51269
    this.encoder = encoder;
51270
    this.addBOM = true;
51271
}
51272
51273
PrependBOMWrapper.prototype.write = function(str) {
51274
    if (this.addBOM) {
51275
        str = BOMChar + str;
51276
        this.addBOM = false;
51277
    }
51278
51279
    return this.encoder.write(str);
51280
}
51281
51282
PrependBOMWrapper.prototype.end = function() {
51283
    return this.encoder.end();
51284
}
51285
51286
51287
//------------------------------------------------------------------------------
51288
51289
exports.StripBOM = StripBOMWrapper;
51290
function StripBOMWrapper(decoder, options) {
51291
    this.decoder = decoder;
51292
    this.pass = false;
51293
    this.options = options || {};
51294
}
51295
51296
StripBOMWrapper.prototype.write = function(buf) {
51297
    var res = this.decoder.write(buf);
51298
    if (this.pass || !res)
51299
        return res;
51300
51301
    if (res[0] === BOMChar) {
51302
        res = res.slice(1);
51303
        if (typeof this.options.stripBOM === 'function')
51304
            this.options.stripBOM();
51305
    }
51306
51307
    this.pass = true;
51308
    return res;
51309
}
51310
51311
StripBOMWrapper.prototype.end = function() {
51312
    return this.decoder.end();
51313
}
51314
51315
51316
51317
/***/ }),
51318
51319
/***/ 4914:
51320
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51321
51322
"use strict";
51323
51324
51325
var Buffer = (__webpack_require__(7103).Buffer);
51326
51327
var bomHandling = __webpack_require__(5395),
51328
    iconv = module.exports;
51329
51330
// All codecs and aliases are kept here, keyed by encoding name/alias.
51331
// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.
51332
iconv.encodings = null;
51333
51334
// Characters emitted in case of error.
51335
iconv.defaultCharUnicode = '�';
51336
iconv.defaultCharSingleByte = '?';
51337
51338
// Public API.
51339
iconv.encode = function encode(str, encoding, options) {
51340
    str = "" + (str || ""); // Ensure string.
51341
51342
    var encoder = iconv.getEncoder(encoding, options);
51343
51344
    var res = encoder.write(str);
51345
    var trail = encoder.end();
51346
51347
    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;
51348
}
51349
51350
iconv.decode = function decode(buf, encoding, options) {
51351
    if (typeof buf === 'string') {
51352
        if (!iconv.skipDecodeWarning) {
51353
            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');
51354
            iconv.skipDecodeWarning = true;
51355
        }
51356
51357
        buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer.
51358
    }
51359
51360
    var decoder = iconv.getDecoder(encoding, options);
51361
51362
    var res = decoder.write(buf);
51363
    var trail = decoder.end();
51364
51365
    return trail ? (res + trail) : res;
51366
}
51367
51368
iconv.encodingExists = function encodingExists(enc) {
51369
    try {
51370
        iconv.getCodec(enc);
51371
        return true;
51372
    } catch (e) {
51373
        return false;
51374
    }
51375
}
51376
51377
// Legacy aliases to convert functions
51378
iconv.toEncoding = iconv.encode;
51379
iconv.fromEncoding = iconv.decode;
51380
51381
// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.
51382
iconv._codecDataCache = {};
51383
iconv.getCodec = function getCodec(encoding) {
51384
    if (!iconv.encodings)
51385
        iconv.encodings = __webpack_require__(6934); // Lazy load all encoding definitions.
51386
51387
    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
51388
    var enc = iconv._canonicalizeEncoding(encoding);
51389
51390
    // Traverse iconv.encodings to find actual codec.
51391
    var codecOptions = {};
51392
    while (true) {
51393
        var codec = iconv._codecDataCache[enc];
51394
        if (codec)
51395
            return codec;
51396
51397
        var codecDef = iconv.encodings[enc];
51398
51399
        switch (typeof codecDef) {
51400
            case "string": // Direct alias to other encoding.
51401
                enc = codecDef;
51402
                break;
51403
51404
            case "object": // Alias with options. Can be layered.
51405
                for (var key in codecDef)
51406
                    codecOptions[key] = codecDef[key];
51407
51408
                if (!codecOptions.encodingName)
51409
                    codecOptions.encodingName = enc;
51410
51411
                enc = codecDef.type;
51412
                break;
51413
51414
            case "function": // Codec itself.
51415
                if (!codecOptions.encodingName)
51416
                    codecOptions.encodingName = enc;
51417
51418
                // The codec function must load all tables and return object with .encoder and .decoder methods.
51419
                // It'll be called only once (for each different options object).
51420
                codec = new codecDef(codecOptions, iconv);
51421
51422
                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.
51423
                return codec;
51424
51425
            default:
51426
                throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
51427
        }
51428
    }
51429
}
51430
51431
iconv._canonicalizeEncoding = function(encoding) {
51432
    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
51433
    return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
51434
}
51435
51436
iconv.getEncoder = function getEncoder(encoding, options) {
51437
    var codec = iconv.getCodec(encoding),
51438
        encoder = new codec.encoder(options, codec);
51439
51440
    if (codec.bomAware && options && options.addBOM)
51441
        encoder = new bomHandling.PrependBOM(encoder, options);
51442
51443
    return encoder;
51444
}
51445
51446
iconv.getDecoder = function getDecoder(encoding, options) {
51447
    var codec = iconv.getCodec(encoding),
51448
        decoder = new codec.decoder(options, codec);
51449
51450
    if (codec.bomAware && !(options && options.stripBOM === false))
51451
        decoder = new bomHandling.StripBOM(decoder, options);
51452
51453
    return decoder;
51454
}
51455
51456
// Streaming API
51457
// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add
51458
// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.
51459
// If you would like to enable it explicitly, please add the following code to your app:
51460
// > iconv.enableStreamingAPI(require('stream'));
51461
iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {
51462
    if (iconv.supportsStreams)
51463
        return;
51464
51465
    // Dependency-inject stream module to create IconvLite stream classes.
51466
    var streams = __webpack_require__(8044)(stream_module);
51467
51468
    // Not public API yet, but expose the stream classes.
51469
    iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;
51470
    iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;
51471
51472
    // Streaming API.
51473
    iconv.encodeStream = function encodeStream(encoding, options) {
51474
        return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
51475
    }
51476
51477
    iconv.decodeStream = function decodeStream(encoding, options) {
51478
        return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
51479
    }
51480
51481
    iconv.supportsStreams = true;
51482
}
51483
51484
// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).
51485
var stream_module;
51486
try {
51487
    stream_module = __webpack_require__(5832);
51488
} catch (e) {}
51489
51490
if (stream_module && stream_module.Transform) {
51491
    iconv.enableStreamingAPI(stream_module);
51492
51493
} else {
51494
    // In rare cases where 'stream' module is not available by default, throw a helpful exception.
51495
    iconv.encodeStream = iconv.decodeStream = function() {
51496
        throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.");
51497
    };
51498
}
51499
51500
if (false) {}
51501
51502
51503
/***/ }),
51504
51505
/***/ 8044:
51506
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51507
51508
"use strict";
51509
51510
51511
var Buffer = (__webpack_require__(7103).Buffer);
51512
51513
// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments),
51514
// we opt to dependency-inject it instead of creating a hard dependency.
51515
module.exports = function(stream_module) {
51516
    var Transform = stream_module.Transform;
51517
51518
    // == Encoder stream =======================================================
51519
51520
    function IconvLiteEncoderStream(conv, options) {
51521
        this.conv = conv;
51522
        options = options || {};
51523
        options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
51524
        Transform.call(this, options);
51525
    }
51526
51527
    IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
51528
        constructor: { value: IconvLiteEncoderStream }
51529
    });
51530
51531
    IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
51532
        if (typeof chunk != 'string')
51533
            return done(new Error("Iconv encoding stream needs strings as its input."));
51534
        try {
51535
            var res = this.conv.write(chunk);
51536
            if (res && res.length) this.push(res);
51537
            done();
51538
        }
51539
        catch (e) {
51540
            done(e);
51541
        }
51542
    }
51543
51544
    IconvLiteEncoderStream.prototype._flush = function(done) {
51545
        try {
51546
            var res = this.conv.end();
51547
            if (res && res.length) this.push(res);
51548
            done();
51549
        }
51550
        catch (e) {
51551
            done(e);
51552
        }
51553
    }
51554
51555
    IconvLiteEncoderStream.prototype.collect = function(cb) {
51556
        var chunks = [];
51557
        this.on('error', cb);
51558
        this.on('data', function(chunk) { chunks.push(chunk); });
51559
        this.on('end', function() {
51560
            cb(null, Buffer.concat(chunks));
51561
        });
51562
        return this;
51563
    }
51564
51565
51566
    // == Decoder stream =======================================================
51567
51568
    function IconvLiteDecoderStream(conv, options) {
51569
        this.conv = conv;
51570
        options = options || {};
51571
        options.encoding = this.encoding = 'utf8'; // We output strings.
51572
        Transform.call(this, options);
51573
    }
51574
51575
    IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
51576
        constructor: { value: IconvLiteDecoderStream }
51577
    });
51578
51579
    IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
51580
        if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))
51581
            return done(new Error("Iconv decoding stream needs buffers as its input."));
51582
        try {
51583
            var res = this.conv.write(chunk);
51584
            if (res && res.length) this.push(res, this.encoding);
51585
            done();
51586
        }
51587
        catch (e) {
51588
            done(e);
51589
        }
51590
    }
51591
51592
    IconvLiteDecoderStream.prototype._flush = function(done) {
51593
        try {
51594
            var res = this.conv.end();
51595
            if (res && res.length) this.push(res, this.encoding);
51596
            done();
51597
        }
51598
        catch (e) {
51599
            done(e);
51600
        }
51601
    }
51602
51603
    IconvLiteDecoderStream.prototype.collect = function(cb) {
51604
        var res = '';
51605
        this.on('error', cb);
51606
        this.on('data', function(chunk) { res += chunk; });
51607
        this.on('end', function() {
51608
            cb(null, res);
51609
        });
51610
        return this;
51611
    }
51612
51613
    return {
51614
        IconvLiteEncoderStream: IconvLiteEncoderStream,
51615
        IconvLiteDecoderStream: IconvLiteDecoderStream,
51616
    };
51617
};
51618
51619
51620
/***/ }),
51621
51622
/***/ 645:
51623
/***/ (function(__unused_webpack_module, exports) {
51624
51625
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
51626
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
51627
  var e, m
51628
  var eLen = (nBytes * 8) - mLen - 1
51629
  var eMax = (1 << eLen) - 1
51630
  var eBias = eMax >> 1
51631
  var nBits = -7
51632
  var i = isLE ? (nBytes - 1) : 0
51633
  var d = isLE ? -1 : 1
51634
  var s = buffer[offset + i]
51635
51636
  i += d
51637
51638
  e = s & ((1 << (-nBits)) - 1)
51639
  s >>= (-nBits)
51640
  nBits += eLen
51641
  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
51642
51643
  m = e & ((1 << (-nBits)) - 1)
51644
  e >>= (-nBits)
51645
  nBits += mLen
51646
  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
51647
51648
  if (e === 0) {
51649
    e = 1 - eBias
51650
  } else if (e === eMax) {
51651
    return m ? NaN : ((s ? -1 : 1) * Infinity)
51652
  } else {
51653
    m = m + Math.pow(2, mLen)
51654
    e = e - eBias
51655
  }
51656
  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
51657
}
51658
51659
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
51660
  var e, m, c
51661
  var eLen = (nBytes * 8) - mLen - 1
51662
  var eMax = (1 << eLen) - 1
51663
  var eBias = eMax >> 1
51664
  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
51665
  var i = isLE ? 0 : (nBytes - 1)
51666
  var d = isLE ? 1 : -1
51667
  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
51668
51669
  value = Math.abs(value)
51670
51671
  if (isNaN(value) || value === Infinity) {
51672
    m = isNaN(value) ? 1 : 0
51673
    e = eMax
51674
  } else {
51675
    e = Math.floor(Math.log(value) / Math.LN2)
51676
    if (value * (c = Math.pow(2, -e)) < 1) {
51677
      e--
51678
      c *= 2
51679
    }
51680
    if (e + eBias >= 1) {
51681
      value += rt / c
51682
    } else {
51683
      value += rt * Math.pow(2, 1 - eBias)
51684
    }
51685
    if (value * c >= 2) {
51686
      e++
51687
      c /= 2
51688
    }
51689
51690
    if (e + eBias >= eMax) {
51691
      m = 0
51692
      e = eMax
51693
    } else if (e + eBias >= 1) {
51694
      m = ((value * c) - 1) * Math.pow(2, mLen)
51695
      e = e + eBias
51696
    } else {
51697
      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
51698
      e = 0
51699
    }
51700
  }
51701
51702
  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
51703
51704
  e = (e << mLen) | m
51705
  eLen += mLen
51706
  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
51707
51708
  buffer[offset + i - d] |= s * 128
51709
}
51710
51711
51712
/***/ }),
51713
51714
/***/ 5717:
51715
/***/ (function(module) {
51716
51717
if (typeof Object.create === 'function') {
51718
  // implementation from standard node.js 'util' module
51719
  module.exports = function inherits(ctor, superCtor) {
51720
    if (superCtor) {
51721
      ctor.super_ = superCtor
51722
      ctor.prototype = Object.create(superCtor.prototype, {
51723
        constructor: {
51724
          value: ctor,
51725
          enumerable: false,
51726
          writable: true,
51727
          configurable: true
51728
        }
51729
      })
51730
    }
51731
  };
51732
} else {
51733
  // old school shim for old browsers
51734
  module.exports = function inherits(ctor, superCtor) {
51735
    if (superCtor) {
51736
      ctor.super_ = superCtor
51737
      var TempCtor = function () {}
51738
      TempCtor.prototype = superCtor.prototype
51739
      ctor.prototype = new TempCtor()
51740
      ctor.prototype.constructor = ctor
51741
    }
51742
  }
51743
}
51744
51745
51746
/***/ }),
51747
51748
/***/ 2584:
51749
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51750
51751
"use strict";
51752
51753
51754
var hasToStringTag = __webpack_require__(6410)();
51755
var callBound = __webpack_require__(1924);
51756
51757
var $toString = callBound('Object.prototype.toString');
51758
51759
var isStandardArguments = function isArguments(value) {
51760
	if (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {
51761
		return false;
51762
	}
51763
	return $toString(value) === '[object Arguments]';
51764
};
51765
51766
var isLegacyArguments = function isArguments(value) {
51767
	if (isStandardArguments(value)) {
51768
		return true;
51769
	}
51770
	return value !== null &&
51771
		typeof value === 'object' &&
51772
		typeof value.length === 'number' &&
51773
		value.length >= 0 &&
51774
		$toString(value) !== '[object Array]' &&
51775
		$toString(value.callee) === '[object Function]';
51776
};
51777
51778
var supportsStandardArguments = (function () {
51779
	return isStandardArguments(arguments);
51780
}());
51781
51782
isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests
51783
51784
module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;
51785
51786
51787
/***/ }),
51788
51789
/***/ 5320:
51790
/***/ (function(module) {
51791
51792
"use strict";
51793
51794
51795
var fnToStr = Function.prototype.toString;
51796
var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;
51797
var badArrayLike;
51798
var isCallableMarker;
51799
if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {
51800
	try {
51801
		badArrayLike = Object.defineProperty({}, 'length', {
51802
			get: function () {
51803
				throw isCallableMarker;
51804
			}
51805
		});
51806
		isCallableMarker = {};
51807
		// eslint-disable-next-line no-throw-literal
51808
		reflectApply(function () { throw 42; }, null, badArrayLike);
51809
	} catch (_) {
51810
		if (_ !== isCallableMarker) {
51811
			reflectApply = null;
51812
		}
51813
	}
51814
} else {
51815
	reflectApply = null;
51816
}
51817
51818
var constructorRegex = /^\s*class\b/;
51819
var isES6ClassFn = function isES6ClassFunction(value) {
51820
	try {
51821
		var fnStr = fnToStr.call(value);
51822
		return constructorRegex.test(fnStr);
51823
	} catch (e) {
51824
		return false; // not a function
51825
	}
51826
};
51827
51828
var tryFunctionObject = function tryFunctionToStr(value) {
51829
	try {
51830
		if (isES6ClassFn(value)) { return false; }
51831
		fnToStr.call(value);
51832
		return true;
51833
	} catch (e) {
51834
		return false;
51835
	}
51836
};
51837
var toStr = Object.prototype.toString;
51838
var objectClass = '[object Object]';
51839
var fnClass = '[object Function]';
51840
var genClass = '[object GeneratorFunction]';
51841
var ddaClass = '[object HTMLAllCollection]'; // IE 11
51842
var ddaClass2 = '[object HTML document.all class]';
51843
var ddaClass3 = '[object HTMLCollection]'; // IE 9-10
51844
var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`
51845
51846
var isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing
51847
51848
var isDDA = function isDocumentDotAll() { return false; };
51849
if (typeof document === 'object') {
51850
	// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly
51851
	var all = document.all;
51852
	if (toStr.call(all) === toStr.call(document.all)) {
51853
		isDDA = function isDocumentDotAll(value) {
51854
			/* globals document: false */
51855
			// in IE 6-8, typeof document.all is "object" and it's truthy
51856
			if ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {
51857
				try {
51858
					var str = toStr.call(value);
51859
					return (
51860
						str === ddaClass
51861
						|| str === ddaClass2
51862
						|| str === ddaClass3 // opera 12.16
51863
						|| str === objectClass // IE 6-8
51864
					) && value('') == null; // eslint-disable-line eqeqeq
51865
				} catch (e) { /**/ }
51866
			}
51867
			return false;
51868
		};
51869
	}
51870
}
51871
51872
module.exports = reflectApply
51873
	? function isCallable(value) {
51874
		if (isDDA(value)) { return true; }
51875
		if (!value) { return false; }
51876
		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
51877
		try {
51878
			reflectApply(value, null, badArrayLike);
51879
		} catch (e) {
51880
			if (e !== isCallableMarker) { return false; }
51881
		}
51882
		return !isES6ClassFn(value) && tryFunctionObject(value);
51883
	}
51884
	: function isCallable(value) {
51885
		if (isDDA(value)) { return true; }
51886
		if (!value) { return false; }
51887
		if (typeof value !== 'function' && typeof value !== 'object') { return false; }
51888
		if (hasToStringTag) { return tryFunctionObject(value); }
51889
		if (isES6ClassFn(value)) { return false; }
51890
		var strClass = toStr.call(value);
51891
		if (strClass !== fnClass && strClass !== genClass && !(/^\[object HTML/).test(strClass)) { return false; }
51892
		return tryFunctionObject(value);
51893
	};
51894
51895
51896
/***/ }),
51897
51898
/***/ 8923:
51899
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51900
51901
"use strict";
51902
51903
51904
var getDay = Date.prototype.getDay;
51905
var tryDateObject = function tryDateGetDayCall(value) {
51906
	try {
51907
		getDay.call(value);
51908
		return true;
51909
	} catch (e) {
51910
		return false;
51911
	}
51912
};
51913
51914
var toStr = Object.prototype.toString;
51915
var dateClass = '[object Date]';
51916
var hasToStringTag = __webpack_require__(6410)();
51917
51918
module.exports = function isDateObject(value) {
51919
	if (typeof value !== 'object' || value === null) {
51920
		return false;
51921
	}
51922
	return hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;
51923
};
51924
51925
51926
/***/ }),
51927
51928
/***/ 8662:
51929
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51930
51931
"use strict";
51932
51933
51934
var toStr = Object.prototype.toString;
51935
var fnToStr = Function.prototype.toString;
51936
var isFnRegex = /^\s*(?:function)?\*/;
51937
var hasToStringTag = __webpack_require__(6410)();
51938
var getProto = Object.getPrototypeOf;
51939
var getGeneratorFunc = function () { // eslint-disable-line consistent-return
51940
	if (!hasToStringTag) {
51941
		return false;
51942
	}
51943
	try {
51944
		return Function('return function*() {}')();
51945
	} catch (e) {
51946
	}
51947
};
51948
var GeneratorFunction;
51949
51950
module.exports = function isGeneratorFunction(fn) {
51951
	if (typeof fn !== 'function') {
51952
		return false;
51953
	}
51954
	if (isFnRegex.test(fnToStr.call(fn))) {
51955
		return true;
51956
	}
51957
	if (!hasToStringTag) {
51958
		var str = toStr.call(fn);
51959
		return str === '[object GeneratorFunction]';
51960
	}
51961
	if (!getProto) {
51962
		return false;
51963
	}
51964
	if (typeof GeneratorFunction === 'undefined') {
51965
		var generatorFunc = getGeneratorFunc();
51966
		GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;
51967
	}
51968
	return getProto(fn) === GeneratorFunction;
51969
};
51970
51971
51972
/***/ }),
51973
51974
/***/ 8611:
51975
/***/ (function(module) {
51976
51977
"use strict";
51978
51979
51980
/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */
51981
51982
module.exports = function isNaN(value) {
51983
	return value !== value;
51984
};
51985
51986
51987
/***/ }),
51988
51989
/***/ 360:
51990
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51991
51992
"use strict";
51993
51994
51995
var callBind = __webpack_require__(5559);
51996
var define = __webpack_require__(4289);
51997
51998
var implementation = __webpack_require__(8611);
51999
var getPolyfill = __webpack_require__(9415);
52000
var shim = __webpack_require__(6743);
52001
52002
var polyfill = callBind(getPolyfill(), Number);
52003
52004
/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */
52005
52006
define(polyfill, {
52007
	getPolyfill: getPolyfill,
52008
	implementation: implementation,
52009
	shim: shim
52010
});
52011
52012
module.exports = polyfill;
52013
52014
52015
/***/ }),
52016
52017
/***/ 9415:
52018
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52019
52020
"use strict";
52021
52022
52023
var implementation = __webpack_require__(8611);
52024
52025
module.exports = function getPolyfill() {
52026
	if (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {
52027
		return Number.isNaN;
52028
	}
52029
	return implementation;
52030
};
52031
52032
52033
/***/ }),
52034
52035
/***/ 6743:
52036
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52037
52038
"use strict";
52039
52040
52041
var define = __webpack_require__(4289);
52042
var getPolyfill = __webpack_require__(9415);
52043
52044
/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */
52045
52046
module.exports = function shimNumberIsNaN() {
52047
	var polyfill = getPolyfill();
52048
	define(Number, { isNaN: polyfill }, {
52049
		isNaN: function testIsNaN() {
52050
			return Number.isNaN !== polyfill;
52051
		}
52052
	});
52053
	return polyfill;
52054
};
52055
52056
52057
/***/ }),
52058
52059
/***/ 8420:
52060
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52061
52062
"use strict";
52063
52064
52065
var callBound = __webpack_require__(1924);
52066
var hasToStringTag = __webpack_require__(6410)();
52067
var has;
52068
var $exec;
52069
var isRegexMarker;
52070
var badStringifier;
52071
52072
if (hasToStringTag) {
52073
	has = callBound('Object.prototype.hasOwnProperty');
52074
	$exec = callBound('RegExp.prototype.exec');
52075
	isRegexMarker = {};
52076
52077
	var throwRegexMarker = function () {
52078
		throw isRegexMarker;
52079
	};
52080
	badStringifier = {
52081
		toString: throwRegexMarker,
52082
		valueOf: throwRegexMarker
52083
	};
52084
52085
	if (typeof Symbol.toPrimitive === 'symbol') {
52086
		badStringifier[Symbol.toPrimitive] = throwRegexMarker;
52087
	}
52088
}
52089
52090
var $toString = callBound('Object.prototype.toString');
52091
var gOPD = Object.getOwnPropertyDescriptor;
52092
var regexClass = '[object RegExp]';
52093
52094
module.exports = hasToStringTag
52095
	// eslint-disable-next-line consistent-return
52096
	? function isRegex(value) {
52097
		if (!value || typeof value !== 'object') {
52098
			return false;
52099
		}
52100
52101
		var descriptor = gOPD(value, 'lastIndex');
52102
		var hasLastIndexDataProperty = descriptor && has(descriptor, 'value');
52103
		if (!hasLastIndexDataProperty) {
52104
			return false;
52105
		}
52106
52107
		try {
52108
			$exec(value, badStringifier);
52109
		} catch (e) {
52110
			return e === isRegexMarker;
52111
		}
52112
	}
52113
	: function isRegex(value) {
52114
		// In older browsers, typeof regex incorrectly returns 'function'
52115
		if (!value || (typeof value !== 'object' && typeof value !== 'function')) {
52116
			return false;
52117
		}
52118
52119
		return $toString(value) === regexClass;
52120
	};
52121
52122
52123
/***/ }),
52124
52125
/***/ 5692:
52126
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52127
52128
"use strict";
52129
52130
52131
var forEach = __webpack_require__(4029);
52132
var availableTypedArrays = __webpack_require__(3083);
52133
var callBound = __webpack_require__(1924);
52134
52135
var $toString = callBound('Object.prototype.toString');
52136
var hasToStringTag = __webpack_require__(6410)();
52137
var gOPD = __webpack_require__(7296);
52138
52139
var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;
52140
var typedArrays = availableTypedArrays();
52141
52142
var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {
52143
	for (var i = 0; i < array.length; i += 1) {
52144
		if (array[i] === value) {
52145
			return i;
52146
		}
52147
	}
52148
	return -1;
52149
};
52150
var $slice = callBound('String.prototype.slice');
52151
var toStrTags = {};
52152
var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');
52153
if (hasToStringTag && gOPD && getPrototypeOf) {
52154
	forEach(typedArrays, function (typedArray) {
52155
		var arr = new g[typedArray]();
52156
		if (Symbol.toStringTag in arr) {
52157
			var proto = getPrototypeOf(arr);
52158
			var descriptor = gOPD(proto, Symbol.toStringTag);
52159
			if (!descriptor) {
52160
				var superProto = getPrototypeOf(proto);
52161
				descriptor = gOPD(superProto, Symbol.toStringTag);
52162
			}
52163
			toStrTags[typedArray] = descriptor.get;
52164
		}
52165
	});
52166
}
52167
52168
var tryTypedArrays = function tryAllTypedArrays(value) {
52169
	var anyTrue = false;
52170
	forEach(toStrTags, function (getter, typedArray) {
52171
		if (!anyTrue) {
52172
			try {
52173
				anyTrue = getter.call(value) === typedArray;
52174
			} catch (e) { /**/ }
52175
		}
52176
	});
52177
	return anyTrue;
52178
};
52179
52180
module.exports = function isTypedArray(value) {
52181
	if (!value || typeof value !== 'object') { return false; }
52182
	if (!hasToStringTag || !(Symbol.toStringTag in value)) {
52183
		var tag = $slice($toString(value), 8, -1);
52184
		return $indexOf(typedArrays, tag) > -1;
52185
	}
52186
	if (!gOPD) { return false; }
52187
	return tryTypedArrays(value);
52188
};
52189
52190
52191
/***/ }),
52192
52193
/***/ 4244:
52194
/***/ (function(module) {
52195
52196
"use strict";
52197
52198
52199
var numberIsNaN = function (value) {
52200
	return value !== value;
52201
};
52202
52203
module.exports = function is(a, b) {
52204
	if (a === 0 && b === 0) {
52205
		return 1 / a === 1 / b;
52206
	}
52207
	if (a === b) {
52208
		return true;
52209
	}
52210
	if (numberIsNaN(a) && numberIsNaN(b)) {
52211
		return true;
52212
	}
52213
	return false;
52214
};
52215
52216
52217
52218
/***/ }),
52219
52220
/***/ 609:
52221
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52222
52223
"use strict";
52224
52225
52226
var define = __webpack_require__(4289);
52227
var callBind = __webpack_require__(5559);
52228
52229
var implementation = __webpack_require__(4244);
52230
var getPolyfill = __webpack_require__(5624);
52231
var shim = __webpack_require__(2281);
52232
52233
var polyfill = callBind(getPolyfill(), Object);
52234
52235
define(polyfill, {
52236
	getPolyfill: getPolyfill,
52237
	implementation: implementation,
52238
	shim: shim
52239
});
52240
52241
module.exports = polyfill;
52242
52243
52244
/***/ }),
52245
52246
/***/ 5624:
52247
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52248
52249
"use strict";
52250
52251
52252
var implementation = __webpack_require__(4244);
52253
52254
module.exports = function getPolyfill() {
52255
	return typeof Object.is === 'function' ? Object.is : implementation;
52256
};
52257
52258
52259
/***/ }),
52260
52261
/***/ 2281:
52262
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52263
52264
"use strict";
52265
52266
52267
var getPolyfill = __webpack_require__(5624);
52268
var define = __webpack_require__(4289);
52269
52270
module.exports = function shimObjectIs() {
52271
	var polyfill = getPolyfill();
52272
	define(Object, { is: polyfill }, {
52273
		is: function testObjectIs() {
52274
			return Object.is !== polyfill;
52275
		}
52276
	});
52277
	return polyfill;
52278
};
52279
52280
52281
/***/ }),
52282
52283
/***/ 8987:
52284
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52285
52286
"use strict";
52287
52288
52289
var keysShim;
52290
if (!Object.keys) {
52291
	// modified from https://github.com/es-shims/es5-shim
52292
	var has = Object.prototype.hasOwnProperty;
52293
	var toStr = Object.prototype.toString;
52294
	var isArgs = __webpack_require__(1414); // eslint-disable-line global-require
52295
	var isEnumerable = Object.prototype.propertyIsEnumerable;
52296
	var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
52297
	var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
52298
	var dontEnums = [
52299
		'toString',
52300
		'toLocaleString',
52301
		'valueOf',
52302
		'hasOwnProperty',
52303
		'isPrototypeOf',
52304
		'propertyIsEnumerable',
52305
		'constructor'
52306
	];
52307
	var equalsConstructorPrototype = function (o) {
52308
		var ctor = o.constructor;
52309
		return ctor && ctor.prototype === o;
52310
	};
52311
	var excludedKeys = {
52312
		$applicationCache: true,
52313
		$console: true,
52314
		$external: true,
52315
		$frame: true,
52316
		$frameElement: true,
52317
		$frames: true,
52318
		$innerHeight: true,
52319
		$innerWidth: true,
52320
		$onmozfullscreenchange: true,
52321
		$onmozfullscreenerror: true,
52322
		$outerHeight: true,
52323
		$outerWidth: true,
52324
		$pageXOffset: true,
52325
		$pageYOffset: true,
52326
		$parent: true,
52327
		$scrollLeft: true,
52328
		$scrollTop: true,
52329
		$scrollX: true,
52330
		$scrollY: true,
52331
		$self: true,
52332
		$webkitIndexedDB: true,
52333
		$webkitStorageInfo: true,
52334
		$window: true
52335
	};
52336
	var hasAutomationEqualityBug = (function () {
52337
		/* global window */
52338
		if (typeof window === 'undefined') { return false; }
52339
		for (var k in window) {
52340
			try {
52341
				if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
52342
					try {
52343
						equalsConstructorPrototype(window[k]);
52344
					} catch (e) {
52345
						return true;
52346
					}
52347
				}
52348
			} catch (e) {
52349
				return true;
52350
			}
52351
		}
52352
		return false;
52353
	}());
52354
	var equalsConstructorPrototypeIfNotBuggy = function (o) {
52355
		/* global window */
52356
		if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
52357
			return equalsConstructorPrototype(o);
52358
		}
52359
		try {
52360
			return equalsConstructorPrototype(o);
52361
		} catch (e) {
52362
			return false;
52363
		}
52364
	};
52365
52366
	keysShim = function keys(object) {
52367
		var isObject = object !== null && typeof object === 'object';
52368
		var isFunction = toStr.call(object) === '[object Function]';
52369
		var isArguments = isArgs(object);
52370
		var isString = isObject && toStr.call(object) === '[object String]';
52371
		var theKeys = [];
52372
52373
		if (!isObject && !isFunction && !isArguments) {
52374
			throw new TypeError('Object.keys called on a non-object');
52375
		}
52376
52377
		var skipProto = hasProtoEnumBug && isFunction;
52378
		if (isString && object.length > 0 && !has.call(object, 0)) {
52379
			for (var i = 0; i < object.length; ++i) {
52380
				theKeys.push(String(i));
52381
			}
52382
		}
52383
52384
		if (isArguments && object.length > 0) {
52385
			for (var j = 0; j < object.length; ++j) {
52386
				theKeys.push(String(j));
52387
			}
52388
		} else {
52389
			for (var name in object) {
52390
				if (!(skipProto && name === 'prototype') && has.call(object, name)) {
52391
					theKeys.push(String(name));
52392
				}
52393
			}
52394
		}
52395
52396
		if (hasDontEnumBug) {
52397
			var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
52398
52399
			for (var k = 0; k < dontEnums.length; ++k) {
52400
				if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
52401
					theKeys.push(dontEnums[k]);
52402
				}
52403
			}
52404
		}
52405
		return theKeys;
52406
	};
52407
}
52408
module.exports = keysShim;
52409
52410
52411
/***/ }),
52412
52413
/***/ 2215:
52414
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
52415
52416
"use strict";
52417
52418
52419
var slice = Array.prototype.slice;
52420
var isArgs = __webpack_require__(1414);
52421
52422
var origKeys = Object.keys;
52423
var keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(8987);
52424
52425
var originalKeys = Object.keys;
52426
52427
keysShim.shim = function shimObjectKeys() {
52428
	if (Object.keys) {
52429
		var keysWorksWithArguments = (function () {
52430
			// Safari 5.0 bug
52431
			var args = Object.keys(arguments);
52432
			return args && args.length === arguments.length;
52433
		}(1, 2));
52434
		if (!keysWorksWithArguments) {
52435
			Object.keys = function keys(object) { // eslint-disable-line func-name-matching
52436
				if (isArgs(object)) {
52437
					return originalKeys(slice.call(object));
52438
				}
52439
				return originalKeys(object);
52440
			};
52441
		}
52442
	} else {
52443
		Object.keys = keysShim;
52444
	}
52445
	return Object.keys || keysShim;
52446
};
52447
52448
module.exports = keysShim;
52449
52450
52451
/***/ }),
52452
52453
/***/ 1414:
52454
/***/ (function(module) {
52455
52456
"use strict";
52457
52458
52459
var toStr = Object.prototype.toString;
52460
52461
module.exports = function isArguments(value) {
52462
	var str = toStr.call(value);
52463
	var isArgs = str === '[object Arguments]';
52464
	if (!isArgs) {
52465
		isArgs = str !== '[object Array]' &&
52466
			value !== null &&
52467
			typeof value === 'object' &&
52468
			typeof value.length === 'number' &&
52469
			value.length >= 0 &&
52470
			toStr.call(value.callee) === '[object Function]';
52471
	}
52472
	return isArgs;
52473
};
52474
52475
52476
/***/ }),
52477
52478
/***/ 4236:
52479
/***/ (function(__unused_webpack_module, exports) {
52480
52481
"use strict";
52482
52483
52484
52485
var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
52486
                (typeof Uint16Array !== 'undefined') &&
52487
                (typeof Int32Array !== 'undefined');
52488
52489
function _has(obj, key) {
52490
  return Object.prototype.hasOwnProperty.call(obj, key);
52491
}
52492
52493
exports.assign = function (obj /*from1, from2, from3, ...*/) {
52494
  var sources = Array.prototype.slice.call(arguments, 1);
52495
  while (sources.length) {
52496
    var source = sources.shift();
52497
    if (!source) { continue; }
52498
52499
    if (typeof source !== 'object') {
52500
      throw new TypeError(source + 'must be non-object');
52501
    }
52502
52503
    for (var p in source) {
52504
      if (_has(source, p)) {
52505
        obj[p] = source[p];
52506
      }
52507
    }
52508
  }
52509
52510
  return obj;
52511
};
52512
52513
52514
// reduce buffer size, avoiding mem copy
52515
exports.shrinkBuf = function (buf, size) {
52516
  if (buf.length === size) { return buf; }
52517
  if (buf.subarray) { return buf.subarray(0, size); }
52518
  buf.length = size;
52519
  return buf;
52520
};
52521
52522
52523
var fnTyped = {
52524
  arraySet: function (dest, src, src_offs, len, dest_offs) {
52525
    if (src.subarray && dest.subarray) {
52526
      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
52527
      return;
52528
    }
52529
    // Fallback to ordinary array
52530
    for (var i = 0; i < len; i++) {
52531
      dest[dest_offs + i] = src[src_offs + i];
52532
    }
52533
  },
52534
  // Join array of chunks to single array.
52535
  flattenChunks: function (chunks) {
52536
    var i, l, len, pos, chunk, result;
52537
52538
    // calculate data length
52539
    len = 0;
52540
    for (i = 0, l = chunks.length; i < l; i++) {
52541
      len += chunks[i].length;
52542
    }
52543
52544
    // join chunks
52545
    result = new Uint8Array(len);
52546
    pos = 0;
52547
    for (i = 0, l = chunks.length; i < l; i++) {
52548
      chunk = chunks[i];
52549
      result.set(chunk, pos);
52550
      pos += chunk.length;
52551
    }
52552
52553
    return result;
52554
  }
52555
};
52556
52557
var fnUntyped = {
52558
  arraySet: function (dest, src, src_offs, len, dest_offs) {
52559
    for (var i = 0; i < len; i++) {
52560
      dest[dest_offs + i] = src[src_offs + i];
52561
    }
52562
  },
52563
  // Join array of chunks to single array.
52564
  flattenChunks: function (chunks) {
52565
    return [].concat.apply([], chunks);
52566
  }
52567
};
52568
52569
52570
// Enable/Disable typed arrays use, for testing
52571
//
52572
exports.setTyped = function (on) {
52573
  if (on) {
52574
    exports.Buf8  = Uint8Array;
52575
    exports.Buf16 = Uint16Array;
52576
    exports.Buf32 = Int32Array;
52577
    exports.assign(exports, fnTyped);
52578
  } else {
52579
    exports.Buf8  = Array;
52580
    exports.Buf16 = Array;
52581
    exports.Buf32 = Array;
52582
    exports.assign(exports, fnUntyped);
52583
  }
52584
};
52585
52586
exports.setTyped(TYPED_OK);
52587
52588
52589
/***/ }),
52590
52591
/***/ 6069:
52592
/***/ (function(module) {
52593
52594
"use strict";
52595
52596
52597
// Note: adler32 takes 12% for level 0 and 2% for level 6.
52598
// It isn't worth it to make additional optimizations as in original.
52599
// Small size is preferable.
52600
52601
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
52602
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
52603
//
52604
// This software is provided 'as-is', without any express or implied
52605
// warranty. In no event will the authors be held liable for any damages
52606
// arising from the use of this software.
52607
//
52608
// Permission is granted to anyone to use this software for any purpose,
52609
// including commercial applications, and to alter it and redistribute it
52610
// freely, subject to the following restrictions:
52611
//
52612
// 1. The origin of this software must not be misrepresented; you must not
52613
//   claim that you wrote the original software. If you use this software
52614
//   in a product, an acknowledgment in the product documentation would be
52615
//   appreciated but is not required.
52616
// 2. Altered source versions must be plainly marked as such, and must not be
52617
//   misrepresented as being the original software.
52618
// 3. This notice may not be removed or altered from any source distribution.
52619
52620
function adler32(adler, buf, len, pos) {
52621
  var s1 = (adler & 0xffff) |0,
52622
      s2 = ((adler >>> 16) & 0xffff) |0,
52623
      n = 0;
52624
52625
  while (len !== 0) {
52626
    // Set limit ~ twice less than 5552, to keep
52627
    // s2 in 31-bits, because we force signed ints.
52628
    // in other case %= will fail.
52629
    n = len > 2000 ? 2000 : len;
52630
    len -= n;
52631
52632
    do {
52633
      s1 = (s1 + buf[pos++]) |0;
52634
      s2 = (s2 + s1) |0;
52635
    } while (--n);
52636
52637
    s1 %= 65521;
52638
    s2 %= 65521;
52639
  }
52640
52641
  return (s1 | (s2 << 16)) |0;
52642
}
52643
52644
52645
module.exports = adler32;
52646
52647
52648
/***/ }),
52649
52650
/***/ 1619:
52651
/***/ (function(module) {
52652
52653
"use strict";
52654
52655
52656
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
52657
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
52658
//
52659
// This software is provided 'as-is', without any express or implied
52660
// warranty. In no event will the authors be held liable for any damages
52661
// arising from the use of this software.
52662
//
52663
// Permission is granted to anyone to use this software for any purpose,
52664
// including commercial applications, and to alter it and redistribute it
52665
// freely, subject to the following restrictions:
52666
//
52667
// 1. The origin of this software must not be misrepresented; you must not
52668
//   claim that you wrote the original software. If you use this software
52669
//   in a product, an acknowledgment in the product documentation would be
52670
//   appreciated but is not required.
52671
// 2. Altered source versions must be plainly marked as such, and must not be
52672
//   misrepresented as being the original software.
52673
// 3. This notice may not be removed or altered from any source distribution.
52674
52675
module.exports = {
52676
52677
  /* Allowed flush values; see deflate() and inflate() below for details */
52678
  Z_NO_FLUSH:         0,
52679
  Z_PARTIAL_FLUSH:    1,
52680
  Z_SYNC_FLUSH:       2,
52681
  Z_FULL_FLUSH:       3,
52682
  Z_FINISH:           4,
52683
  Z_BLOCK:            5,
52684
  Z_TREES:            6,
52685
52686
  /* Return codes for the compression/decompression functions. Negative values
52687
  * are errors, positive values are used for special but normal events.
52688
  */
52689
  Z_OK:               0,
52690
  Z_STREAM_END:       1,
52691
  Z_NEED_DICT:        2,
52692
  Z_ERRNO:           -1,
52693
  Z_STREAM_ERROR:    -2,
52694
  Z_DATA_ERROR:      -3,
52695
  //Z_MEM_ERROR:     -4,
52696
  Z_BUF_ERROR:       -5,
52697
  //Z_VERSION_ERROR: -6,
52698
52699
  /* compression levels */
52700
  Z_NO_COMPRESSION:         0,
52701
  Z_BEST_SPEED:             1,
52702
  Z_BEST_COMPRESSION:       9,
52703
  Z_DEFAULT_COMPRESSION:   -1,
52704
52705
52706
  Z_FILTERED:               1,
52707
  Z_HUFFMAN_ONLY:           2,
52708
  Z_RLE:                    3,
52709
  Z_FIXED:                  4,
52710
  Z_DEFAULT_STRATEGY:       0,
52711
52712
  /* Possible values of the data_type field (though see inflate()) */
52713
  Z_BINARY:                 0,
52714
  Z_TEXT:                   1,
52715
  //Z_ASCII:                1, // = Z_TEXT (deprecated)
52716
  Z_UNKNOWN:                2,
52717
52718
  /* The deflate compression method */
52719
  Z_DEFLATED:               8
52720
  //Z_NULL:                 null // Use -1 or null inline, depending on var type
52721
};
52722
52723
52724
/***/ }),
52725
52726
/***/ 2869:
52727
/***/ (function(module) {
52728
52729
"use strict";
52730
52731
52732
// Note: we can't get significant speed boost here.
52733
// So write code to minimize size - no pregenerated tables
52734
// and array tools dependencies.
52735
52736
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
52737
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
52738
//
52739
// This software is provided 'as-is', without any express or implied
52740
// warranty. In no event will the authors be held liable for any damages
52741
// arising from the use of this software.
52742
//
52743
// Permission is granted to anyone to use this software for any purpose,
52744
// including commercial applications, and to alter it and redistribute it
52745
// freely, subject to the following restrictions:
52746
//
52747
// 1. The origin of this software must not be misrepresented; you must not
52748
//   claim that you wrote the original software. If you use this software
52749
//   in a product, an acknowledgment in the product documentation would be
52750
//   appreciated but is not required.
52751
// 2. Altered source versions must be plainly marked as such, and must not be
52752
//   misrepresented as being the original software.
52753
// 3. This notice may not be removed or altered from any source distribution.
52754
52755
// Use ordinary array, since untyped makes no boost here
52756
function makeTable() {
52757
  var c, table = [];
52758
52759
  for (var n = 0; n < 256; n++) {
52760
    c = n;
52761
    for (var k = 0; k < 8; k++) {
52762
      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
52763
    }
52764
    table[n] = c;
52765
  }
52766
52767
  return table;
52768
}
52769
52770
// Create table on load. Just 255 signed longs. Not a problem.
52771
var crcTable = makeTable();
52772
52773
52774
function crc32(crc, buf, len, pos) {
52775
  var t = crcTable,
52776
      end = pos + len;
52777
52778
  crc ^= -1;
52779
52780
  for (var i = pos; i < end; i++) {
52781
    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
52782
  }
52783
52784
  return (crc ^ (-1)); // >>> 0;
52785
}
52786
52787
52788
module.exports = crc32;
52789
52790
52791
/***/ }),
52792
52793
/***/ 405:
52794
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
52795
52796
"use strict";
52797
52798
52799
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
52800
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
52801
//
52802
// This software is provided 'as-is', without any express or implied
52803
// warranty. In no event will the authors be held liable for any damages
52804
// arising from the use of this software.
52805
//
52806
// Permission is granted to anyone to use this software for any purpose,
52807
// including commercial applications, and to alter it and redistribute it
52808
// freely, subject to the following restrictions:
52809
//
52810
// 1. The origin of this software must not be misrepresented; you must not
52811
//   claim that you wrote the original software. If you use this software
52812
//   in a product, an acknowledgment in the product documentation would be
52813
//   appreciated but is not required.
52814
// 2. Altered source versions must be plainly marked as such, and must not be
52815
//   misrepresented as being the original software.
52816
// 3. This notice may not be removed or altered from any source distribution.
52817
52818
var utils   = __webpack_require__(4236);
52819
var trees   = __webpack_require__(342);
52820
var adler32 = __webpack_require__(6069);
52821
var crc32   = __webpack_require__(2869);
52822
var msg     = __webpack_require__(8898);
52823
52824
/* Public constants ==========================================================*/
52825
/* ===========================================================================*/
52826
52827
52828
/* Allowed flush values; see deflate() and inflate() below for details */
52829
var Z_NO_FLUSH      = 0;
52830
var Z_PARTIAL_FLUSH = 1;
52831
//var Z_SYNC_FLUSH    = 2;
52832
var Z_FULL_FLUSH    = 3;
52833
var Z_FINISH        = 4;
52834
var Z_BLOCK         = 5;
52835
//var Z_TREES         = 6;
52836
52837
52838
/* Return codes for the compression/decompression functions. Negative values
52839
 * are errors, positive values are used for special but normal events.
52840
 */
52841
var Z_OK            = 0;
52842
var Z_STREAM_END    = 1;
52843
//var Z_NEED_DICT     = 2;
52844
//var Z_ERRNO         = -1;
52845
var Z_STREAM_ERROR  = -2;
52846
var Z_DATA_ERROR    = -3;
52847
//var Z_MEM_ERROR     = -4;
52848
var Z_BUF_ERROR     = -5;
52849
//var Z_VERSION_ERROR = -6;
52850
52851
52852
/* compression levels */
52853
//var Z_NO_COMPRESSION      = 0;
52854
//var Z_BEST_SPEED          = 1;
52855
//var Z_BEST_COMPRESSION    = 9;
52856
var Z_DEFAULT_COMPRESSION = -1;
52857
52858
52859
var Z_FILTERED            = 1;
52860
var Z_HUFFMAN_ONLY        = 2;
52861
var Z_RLE                 = 3;
52862
var Z_FIXED               = 4;
52863
var Z_DEFAULT_STRATEGY    = 0;
52864
52865
/* Possible values of the data_type field (though see inflate()) */
52866
//var Z_BINARY              = 0;
52867
//var Z_TEXT                = 1;
52868
//var Z_ASCII               = 1; // = Z_TEXT
52869
var Z_UNKNOWN             = 2;
52870
52871
52872
/* The deflate compression method */
52873
var Z_DEFLATED  = 8;
52874
52875
/*============================================================================*/
52876
52877
52878
var MAX_MEM_LEVEL = 9;
52879
/* Maximum value for memLevel in deflateInit2 */
52880
var MAX_WBITS = 15;
52881
/* 32K LZ77 window */
52882
var DEF_MEM_LEVEL = 8;
52883
52884
52885
var LENGTH_CODES  = 29;
52886
/* number of length codes, not counting the special END_BLOCK code */
52887
var LITERALS      = 256;
52888
/* number of literal bytes 0..255 */
52889
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
52890
/* number of Literal or Length codes, including the END_BLOCK code */
52891
var D_CODES       = 30;
52892
/* number of distance codes */
52893
var BL_CODES      = 19;
52894
/* number of codes used to transfer the bit lengths */
52895
var HEAP_SIZE     = 2 * L_CODES + 1;
52896
/* maximum heap size */
52897
var MAX_BITS  = 15;
52898
/* All codes must not exceed MAX_BITS bits */
52899
52900
var MIN_MATCH = 3;
52901
var MAX_MATCH = 258;
52902
var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
52903
52904
var PRESET_DICT = 0x20;
52905
52906
var INIT_STATE = 42;
52907
var EXTRA_STATE = 69;
52908
var NAME_STATE = 73;
52909
var COMMENT_STATE = 91;
52910
var HCRC_STATE = 103;
52911
var BUSY_STATE = 113;
52912
var FINISH_STATE = 666;
52913
52914
var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
52915
var BS_BLOCK_DONE     = 2; /* block flush performed */
52916
var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
52917
var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
52918
52919
var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
52920
52921
function err(strm, errorCode) {
52922
  strm.msg = msg[errorCode];
52923
  return errorCode;
52924
}
52925
52926
function rank(f) {
52927
  return ((f) << 1) - ((f) > 4 ? 9 : 0);
52928
}
52929
52930
function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
52931
52932
52933
/* =========================================================================
52934
 * Flush as much pending output as possible. All deflate() output goes
52935
 * through this function so some applications may wish to modify it
52936
 * to avoid allocating a large strm->output buffer and copying into it.
52937
 * (See also read_buf()).
52938
 */
52939
function flush_pending(strm) {
52940
  var s = strm.state;
52941
52942
  //_tr_flush_bits(s);
52943
  var len = s.pending;
52944
  if (len > strm.avail_out) {
52945
    len = strm.avail_out;
52946
  }
52947
  if (len === 0) { return; }
52948
52949
  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
52950
  strm.next_out += len;
52951
  s.pending_out += len;
52952
  strm.total_out += len;
52953
  strm.avail_out -= len;
52954
  s.pending -= len;
52955
  if (s.pending === 0) {
52956
    s.pending_out = 0;
52957
  }
52958
}
52959
52960
52961
function flush_block_only(s, last) {
52962
  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
52963
  s.block_start = s.strstart;
52964
  flush_pending(s.strm);
52965
}
52966
52967
52968
function put_byte(s, b) {
52969
  s.pending_buf[s.pending++] = b;
52970
}
52971
52972
52973
/* =========================================================================
52974
 * Put a short in the pending buffer. The 16-bit value is put in MSB order.
52975
 * IN assertion: the stream state is correct and there is enough room in
52976
 * pending_buf.
52977
 */
52978
function putShortMSB(s, b) {
52979
//  put_byte(s, (Byte)(b >> 8));
52980
//  put_byte(s, (Byte)(b & 0xff));
52981
  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
52982
  s.pending_buf[s.pending++] = b & 0xff;
52983
}
52984
52985
52986
/* ===========================================================================
52987
 * Read a new buffer from the current input stream, update the adler32
52988
 * and total number of bytes read.  All deflate() input goes through
52989
 * this function so some applications may wish to modify it to avoid
52990
 * allocating a large strm->input buffer and copying from it.
52991
 * (See also flush_pending()).
52992
 */
52993
function read_buf(strm, buf, start, size) {
52994
  var len = strm.avail_in;
52995
52996
  if (len > size) { len = size; }
52997
  if (len === 0) { return 0; }
52998
52999
  strm.avail_in -= len;
53000
53001
  // zmemcpy(buf, strm->next_in, len);
53002
  utils.arraySet(buf, strm.input, strm.next_in, len, start);
53003
  if (strm.state.wrap === 1) {
53004
    strm.adler = adler32(strm.adler, buf, len, start);
53005
  }
53006
53007
  else if (strm.state.wrap === 2) {
53008
    strm.adler = crc32(strm.adler, buf, len, start);
53009
  }
53010
53011
  strm.next_in += len;
53012
  strm.total_in += len;
53013
53014
  return len;
53015
}
53016
53017
53018
/* ===========================================================================
53019
 * Set match_start to the longest match starting at the given string and
53020
 * return its length. Matches shorter or equal to prev_length are discarded,
53021
 * in which case the result is equal to prev_length and match_start is
53022
 * garbage.
53023
 * IN assertions: cur_match is the head of the hash chain for the current
53024
 *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
53025
 * OUT assertion: the match length is not greater than s->lookahead.
53026
 */
53027
function longest_match(s, cur_match) {
53028
  var chain_length = s.max_chain_length;      /* max hash chain length */
53029
  var scan = s.strstart; /* current string */
53030
  var match;                       /* matched string */
53031
  var len;                           /* length of current match */
53032
  var best_len = s.prev_length;              /* best match length so far */
53033
  var nice_match = s.nice_match;             /* stop if match long enough */
53034
  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
53035
      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
53036
53037
  var _win = s.window; // shortcut
53038
53039
  var wmask = s.w_mask;
53040
  var prev  = s.prev;
53041
53042
  /* Stop when cur_match becomes <= limit. To simplify the code,
53043
   * we prevent matches with the string of window index 0.
53044
   */
53045
53046
  var strend = s.strstart + MAX_MATCH;
53047
  var scan_end1  = _win[scan + best_len - 1];
53048
  var scan_end   = _win[scan + best_len];
53049
53050
  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
53051
   * It is easy to get rid of this optimization if necessary.
53052
   */
53053
  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
53054
53055
  /* Do not waste too much time if we already have a good match: */
53056
  if (s.prev_length >= s.good_match) {
53057
    chain_length >>= 2;
53058
  }
53059
  /* Do not look for matches beyond the end of the input. This is necessary
53060
   * to make deflate deterministic.
53061
   */
53062
  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
53063
53064
  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
53065
53066
  do {
53067
    // Assert(cur_match < s->strstart, "no future");
53068
    match = cur_match;
53069
53070
    /* Skip to next match if the match length cannot increase
53071
     * or if the match length is less than 2.  Note that the checks below
53072
     * for insufficient lookahead only occur occasionally for performance
53073
     * reasons.  Therefore uninitialized memory will be accessed, and
53074
     * conditional jumps will be made that depend on those values.
53075
     * However the length of the match is limited to the lookahead, so
53076
     * the output of deflate is not affected by the uninitialized values.
53077
     */
53078
53079
    if (_win[match + best_len]     !== scan_end  ||
53080
        _win[match + best_len - 1] !== scan_end1 ||
53081
        _win[match]                !== _win[scan] ||
53082
        _win[++match]              !== _win[scan + 1]) {
53083
      continue;
53084
    }
53085
53086
    /* The check at best_len-1 can be removed because it will be made
53087
     * again later. (This heuristic is not always a win.)
53088
     * It is not necessary to compare scan[2] and match[2] since they
53089
     * are always equal when the other bytes match, given that
53090
     * the hash keys are equal and that HASH_BITS >= 8.
53091
     */
53092
    scan += 2;
53093
    match++;
53094
    // Assert(*scan == *match, "match[2]?");
53095
53096
    /* We check for insufficient lookahead only every 8th comparison;
53097
     * the 256th check will be made at strstart+258.
53098
     */
53099
    do {
53100
      /*jshint noempty:false*/
53101
    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
53102
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
53103
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
53104
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
53105
             scan < strend);
53106
53107
    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
53108
53109
    len = MAX_MATCH - (strend - scan);
53110
    scan = strend - MAX_MATCH;
53111
53112
    if (len > best_len) {
53113
      s.match_start = cur_match;
53114
      best_len = len;
53115
      if (len >= nice_match) {
53116
        break;
53117
      }
53118
      scan_end1  = _win[scan + best_len - 1];
53119
      scan_end   = _win[scan + best_len];
53120
    }
53121
  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
53122
53123
  if (best_len <= s.lookahead) {
53124
    return best_len;
53125
  }
53126
  return s.lookahead;
53127
}
53128
53129
53130
/* ===========================================================================
53131
 * Fill the window when the lookahead becomes insufficient.
53132
 * Updates strstart and lookahead.
53133
 *
53134
 * IN assertion: lookahead < MIN_LOOKAHEAD
53135
 * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
53136
 *    At least one byte has been read, or avail_in == 0; reads are
53137
 *    performed for at least two bytes (required for the zip translate_eol
53138
 *    option -- not supported here).
53139
 */
53140
function fill_window(s) {
53141
  var _w_size = s.w_size;
53142
  var p, n, m, more, str;
53143
53144
  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
53145
53146
  do {
53147
    more = s.window_size - s.lookahead - s.strstart;
53148
53149
    // JS ints have 32 bit, block below not needed
53150
    /* Deal with !@#$% 64K limit: */
53151
    //if (sizeof(int) <= 2) {
53152
    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
53153
    //        more = wsize;
53154
    //
53155
    //  } else if (more == (unsigned)(-1)) {
53156
    //        /* Very unlikely, but possible on 16 bit machine if
53157
    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
53158
    //         */
53159
    //        more--;
53160
    //    }
53161
    //}
53162
53163
53164
    /* If the window is almost full and there is insufficient lookahead,
53165
     * move the upper half to the lower one to make room in the upper half.
53166
     */
53167
    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
53168
53169
      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
53170
      s.match_start -= _w_size;
53171
      s.strstart -= _w_size;
53172
      /* we now have strstart >= MAX_DIST */
53173
      s.block_start -= _w_size;
53174
53175
      /* Slide the hash table (could be avoided with 32 bit values
53176
       at the expense of memory usage). We slide even when level == 0
53177
       to keep the hash table consistent if we switch back to level > 0
53178
       later. (Using level 0 permanently is not an optimal usage of
53179
       zlib, so we don't care about this pathological case.)
53180
       */
53181
53182
      n = s.hash_size;
53183
      p = n;
53184
      do {
53185
        m = s.head[--p];
53186
        s.head[p] = (m >= _w_size ? m - _w_size : 0);
53187
      } while (--n);
53188
53189
      n = _w_size;
53190
      p = n;
53191
      do {
53192
        m = s.prev[--p];
53193
        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
53194
        /* If n is not on any hash chain, prev[n] is garbage but
53195
         * its value will never be used.
53196
         */
53197
      } while (--n);
53198
53199
      more += _w_size;
53200
    }
53201
    if (s.strm.avail_in === 0) {
53202
      break;
53203
    }
53204
53205
    /* If there was no sliding:
53206
     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
53207
     *    more == window_size - lookahead - strstart
53208
     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
53209
     * => more >= window_size - 2*WSIZE + 2
53210
     * In the BIG_MEM or MMAP case (not yet supported),
53211
     *   window_size == input_size + MIN_LOOKAHEAD  &&
53212
     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
53213
     * Otherwise, window_size == 2*WSIZE so more >= 2.
53214
     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
53215
     */
53216
    //Assert(more >= 2, "more < 2");
53217
    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
53218
    s.lookahead += n;
53219
53220
    /* Initialize the hash value now that we have some input: */
53221
    if (s.lookahead + s.insert >= MIN_MATCH) {
53222
      str = s.strstart - s.insert;
53223
      s.ins_h = s.window[str];
53224
53225
      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
53226
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
53227
//#if MIN_MATCH != 3
53228
//        Call update_hash() MIN_MATCH-3 more times
53229
//#endif
53230
      while (s.insert) {
53231
        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
53232
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
53233
53234
        s.prev[str & s.w_mask] = s.head[s.ins_h];
53235
        s.head[s.ins_h] = str;
53236
        str++;
53237
        s.insert--;
53238
        if (s.lookahead + s.insert < MIN_MATCH) {
53239
          break;
53240
        }
53241
      }
53242
    }
53243
    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
53244
     * but this is not important since only literal bytes will be emitted.
53245
     */
53246
53247
  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
53248
53249
  /* If the WIN_INIT bytes after the end of the current data have never been
53250
   * written, then zero those bytes in order to avoid memory check reports of
53251
   * the use of uninitialized (or uninitialised as Julian writes) bytes by
53252
   * the longest match routines.  Update the high water mark for the next
53253
   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
53254
   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
53255
   */
53256
//  if (s.high_water < s.window_size) {
53257
//    var curr = s.strstart + s.lookahead;
53258
//    var init = 0;
53259
//
53260
//    if (s.high_water < curr) {
53261
//      /* Previous high water mark below current data -- zero WIN_INIT
53262
//       * bytes or up to end of window, whichever is less.
53263
//       */
53264
//      init = s.window_size - curr;
53265
//      if (init > WIN_INIT)
53266
//        init = WIN_INIT;
53267
//      zmemzero(s->window + curr, (unsigned)init);
53268
//      s->high_water = curr + init;
53269
//    }
53270
//    else if (s->high_water < (ulg)curr + WIN_INIT) {
53271
//      /* High water mark at or above current data, but below current data
53272
//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
53273
//       * to end of window, whichever is less.
53274
//       */
53275
//      init = (ulg)curr + WIN_INIT - s->high_water;
53276
//      if (init > s->window_size - s->high_water)
53277
//        init = s->window_size - s->high_water;
53278
//      zmemzero(s->window + s->high_water, (unsigned)init);
53279
//      s->high_water += init;
53280
//    }
53281
//  }
53282
//
53283
//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
53284
//    "not enough room for search");
53285
}
53286
53287
/* ===========================================================================
53288
 * Copy without compression as much as possible from the input stream, return
53289
 * the current block state.
53290
 * This function does not insert new strings in the dictionary since
53291
 * uncompressible data is probably not useful. This function is used
53292
 * only for the level=0 compression option.
53293
 * NOTE: this function should be optimized to avoid extra copying from
53294
 * window to pending_buf.
53295
 */
53296
function deflate_stored(s, flush) {
53297
  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
53298
   * to pending_buf_size, and each stored block has a 5 byte header:
53299
   */
53300
  var max_block_size = 0xffff;
53301
53302
  if (max_block_size > s.pending_buf_size - 5) {
53303
    max_block_size = s.pending_buf_size - 5;
53304
  }
53305
53306
  /* Copy as much as possible from input to output: */
53307
  for (;;) {
53308
    /* Fill the window as much as possible: */
53309
    if (s.lookahead <= 1) {
53310
53311
      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
53312
      //  s->block_start >= (long)s->w_size, "slide too late");
53313
//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
53314
//        s.block_start >= s.w_size)) {
53315
//        throw  new Error("slide too late");
53316
//      }
53317
53318
      fill_window(s);
53319
      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
53320
        return BS_NEED_MORE;
53321
      }
53322
53323
      if (s.lookahead === 0) {
53324
        break;
53325
      }
53326
      /* flush the current block */
53327
    }
53328
    //Assert(s->block_start >= 0L, "block gone");
53329
//    if (s.block_start < 0) throw new Error("block gone");
53330
53331
    s.strstart += s.lookahead;
53332
    s.lookahead = 0;
53333
53334
    /* Emit a stored block if pending_buf will be full: */
53335
    var max_start = s.block_start + max_block_size;
53336
53337
    if (s.strstart === 0 || s.strstart >= max_start) {
53338
      /* strstart == 0 is possible when wraparound on 16-bit machine */
53339
      s.lookahead = s.strstart - max_start;
53340
      s.strstart = max_start;
53341
      /*** FLUSH_BLOCK(s, 0); ***/
53342
      flush_block_only(s, false);
53343
      if (s.strm.avail_out === 0) {
53344
        return BS_NEED_MORE;
53345
      }
53346
      /***/
53347
53348
53349
    }
53350
    /* Flush if we may have to slide, otherwise block_start may become
53351
     * negative and the data will be gone:
53352
     */
53353
    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
53354
      /*** FLUSH_BLOCK(s, 0); ***/
53355
      flush_block_only(s, false);
53356
      if (s.strm.avail_out === 0) {
53357
        return BS_NEED_MORE;
53358
      }
53359
      /***/
53360
    }
53361
  }
53362
53363
  s.insert = 0;
53364
53365
  if (flush === Z_FINISH) {
53366
    /*** FLUSH_BLOCK(s, 1); ***/
53367
    flush_block_only(s, true);
53368
    if (s.strm.avail_out === 0) {
53369
      return BS_FINISH_STARTED;
53370
    }
53371
    /***/
53372
    return BS_FINISH_DONE;
53373
  }
53374
53375
  if (s.strstart > s.block_start) {
53376
    /*** FLUSH_BLOCK(s, 0); ***/
53377
    flush_block_only(s, false);
53378
    if (s.strm.avail_out === 0) {
53379
      return BS_NEED_MORE;
53380
    }
53381
    /***/
53382
  }
53383
53384
  return BS_NEED_MORE;
53385
}
53386
53387
/* ===========================================================================
53388
 * Compress as much as possible from the input stream, return the current
53389
 * block state.
53390
 * This function does not perform lazy evaluation of matches and inserts
53391
 * new strings in the dictionary only for unmatched strings or for short
53392
 * matches. It is used only for the fast compression options.
53393
 */
53394
function deflate_fast(s, flush) {
53395
  var hash_head;        /* head of the hash chain */
53396
  var bflush;           /* set if current block must be flushed */
53397
53398
  for (;;) {
53399
    /* Make sure that we always have enough lookahead, except
53400
     * at the end of the input file. We need MAX_MATCH bytes
53401
     * for the next match, plus MIN_MATCH bytes to insert the
53402
     * string following the next match.
53403
     */
53404
    if (s.lookahead < MIN_LOOKAHEAD) {
53405
      fill_window(s);
53406
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
53407
        return BS_NEED_MORE;
53408
      }
53409
      if (s.lookahead === 0) {
53410
        break; /* flush the current block */
53411
      }
53412
    }
53413
53414
    /* Insert the string window[strstart .. strstart+2] in the
53415
     * dictionary, and set hash_head to the head of the hash chain:
53416
     */
53417
    hash_head = 0/*NIL*/;
53418
    if (s.lookahead >= MIN_MATCH) {
53419
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
53420
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
53421
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
53422
      s.head[s.ins_h] = s.strstart;
53423
      /***/
53424
    }
53425
53426
    /* Find the longest match, discarding those <= prev_length.
53427
     * At this point we have always match_length < MIN_MATCH
53428
     */
53429
    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
53430
      /* To simplify the code, we prevent matches with the string
53431
       * of window index 0 (in particular we have to avoid a match
53432
       * of the string with itself at the start of the input file).
53433
       */
53434
      s.match_length = longest_match(s, hash_head);
53435
      /* longest_match() sets match_start */
53436
    }
53437
    if (s.match_length >= MIN_MATCH) {
53438
      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
53439
53440
      /*** _tr_tally_dist(s, s.strstart - s.match_start,
53441
                     s.match_length - MIN_MATCH, bflush); ***/
53442
      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
53443
53444
      s.lookahead -= s.match_length;
53445
53446
      /* Insert new strings in the hash table only if the match length
53447
       * is not too large. This saves time but degrades compression.
53448
       */
53449
      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
53450
        s.match_length--; /* string at strstart already in table */
53451
        do {
53452
          s.strstart++;
53453
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
53454
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
53455
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
53456
          s.head[s.ins_h] = s.strstart;
53457
          /***/
53458
          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
53459
           * always MIN_MATCH bytes ahead.
53460
           */
53461
        } while (--s.match_length !== 0);
53462
        s.strstart++;
53463
      } else
53464
      {
53465
        s.strstart += s.match_length;
53466
        s.match_length = 0;
53467
        s.ins_h = s.window[s.strstart];
53468
        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
53469
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
53470
53471
//#if MIN_MATCH != 3
53472
//                Call UPDATE_HASH() MIN_MATCH-3 more times
53473
//#endif
53474
        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
53475
         * matter since it will be recomputed at next deflate call.
53476
         */
53477
      }
53478
    } else {
53479
      /* No match, output a literal byte */
53480
      //Tracevv((stderr,"%c", s.window[s.strstart]));
53481
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
53482
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
53483
53484
      s.lookahead--;
53485
      s.strstart++;
53486
    }
53487
    if (bflush) {
53488
      /*** FLUSH_BLOCK(s, 0); ***/
53489
      flush_block_only(s, false);
53490
      if (s.strm.avail_out === 0) {
53491
        return BS_NEED_MORE;
53492
      }
53493
      /***/
53494
    }
53495
  }
53496
  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
53497
  if (flush === Z_FINISH) {
53498
    /*** FLUSH_BLOCK(s, 1); ***/
53499
    flush_block_only(s, true);
53500
    if (s.strm.avail_out === 0) {
53501
      return BS_FINISH_STARTED;
53502
    }
53503
    /***/
53504
    return BS_FINISH_DONE;
53505
  }
53506
  if (s.last_lit) {
53507
    /*** FLUSH_BLOCK(s, 0); ***/
53508
    flush_block_only(s, false);
53509
    if (s.strm.avail_out === 0) {
53510
      return BS_NEED_MORE;
53511
    }
53512
    /***/
53513
  }
53514
  return BS_BLOCK_DONE;
53515
}
53516
53517
/* ===========================================================================
53518
 * Same as above, but achieves better compression. We use a lazy
53519
 * evaluation for matches: a match is finally adopted only if there is
53520
 * no better match at the next window position.
53521
 */
53522
function deflate_slow(s, flush) {
53523
  var hash_head;          /* head of hash chain */
53524
  var bflush;              /* set if current block must be flushed */
53525
53526
  var max_insert;
53527
53528
  /* Process the input block. */
53529
  for (;;) {
53530
    /* Make sure that we always have enough lookahead, except
53531
     * at the end of the input file. We need MAX_MATCH bytes
53532
     * for the next match, plus MIN_MATCH bytes to insert the
53533
     * string following the next match.
53534
     */
53535
    if (s.lookahead < MIN_LOOKAHEAD) {
53536
      fill_window(s);
53537
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
53538
        return BS_NEED_MORE;
53539
      }
53540
      if (s.lookahead === 0) { break; } /* flush the current block */
53541
    }
53542
53543
    /* Insert the string window[strstart .. strstart+2] in the
53544
     * dictionary, and set hash_head to the head of the hash chain:
53545
     */
53546
    hash_head = 0/*NIL*/;
53547
    if (s.lookahead >= MIN_MATCH) {
53548
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
53549
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
53550
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
53551
      s.head[s.ins_h] = s.strstart;
53552
      /***/
53553
    }
53554
53555
    /* Find the longest match, discarding those <= prev_length.
53556
     */
53557
    s.prev_length = s.match_length;
53558
    s.prev_match = s.match_start;
53559
    s.match_length = MIN_MATCH - 1;
53560
53561
    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
53562
        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
53563
      /* To simplify the code, we prevent matches with the string
53564
       * of window index 0 (in particular we have to avoid a match
53565
       * of the string with itself at the start of the input file).
53566
       */
53567
      s.match_length = longest_match(s, hash_head);
53568
      /* longest_match() sets match_start */
53569
53570
      if (s.match_length <= 5 &&
53571
         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
53572
53573
        /* If prev_match is also MIN_MATCH, match_start is garbage
53574
         * but we will ignore the current match anyway.
53575
         */
53576
        s.match_length = MIN_MATCH - 1;
53577
      }
53578
    }
53579
    /* If there was a match at the previous step and the current
53580
     * match is not better, output the previous match:
53581
     */
53582
    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
53583
      max_insert = s.strstart + s.lookahead - MIN_MATCH;
53584
      /* Do not insert strings in hash table beyond this. */
53585
53586
      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
53587
53588
      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
53589
                     s.prev_length - MIN_MATCH, bflush);***/
53590
      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
53591
      /* Insert in hash table all strings up to the end of the match.
53592
       * strstart-1 and strstart are already inserted. If there is not
53593
       * enough lookahead, the last two strings are not inserted in
53594
       * the hash table.
53595
       */
53596
      s.lookahead -= s.prev_length - 1;
53597
      s.prev_length -= 2;
53598
      do {
53599
        if (++s.strstart <= max_insert) {
53600
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
53601
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
53602
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
53603
          s.head[s.ins_h] = s.strstart;
53604
          /***/
53605
        }
53606
      } while (--s.prev_length !== 0);
53607
      s.match_available = 0;
53608
      s.match_length = MIN_MATCH - 1;
53609
      s.strstart++;
53610
53611
      if (bflush) {
53612
        /*** FLUSH_BLOCK(s, 0); ***/
53613
        flush_block_only(s, false);
53614
        if (s.strm.avail_out === 0) {
53615
          return BS_NEED_MORE;
53616
        }
53617
        /***/
53618
      }
53619
53620
    } else if (s.match_available) {
53621
      /* If there was no match at the previous position, output a
53622
       * single literal. If there was a match but the current match
53623
       * is longer, truncate the previous match to a single literal.
53624
       */
53625
      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
53626
      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
53627
      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
53628
53629
      if (bflush) {
53630
        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
53631
        flush_block_only(s, false);
53632
        /***/
53633
      }
53634
      s.strstart++;
53635
      s.lookahead--;
53636
      if (s.strm.avail_out === 0) {
53637
        return BS_NEED_MORE;
53638
      }
53639
    } else {
53640
      /* There is no previous match to compare with, wait for
53641
       * the next step to decide.
53642
       */
53643
      s.match_available = 1;
53644
      s.strstart++;
53645
      s.lookahead--;
53646
    }
53647
  }
53648
  //Assert (flush != Z_NO_FLUSH, "no flush?");
53649
  if (s.match_available) {
53650
    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
53651
    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
53652
    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
53653
53654
    s.match_available = 0;
53655
  }
53656
  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
53657
  if (flush === Z_FINISH) {
53658
    /*** FLUSH_BLOCK(s, 1); ***/
53659
    flush_block_only(s, true);
53660
    if (s.strm.avail_out === 0) {
53661
      return BS_FINISH_STARTED;
53662
    }
53663
    /***/
53664
    return BS_FINISH_DONE;
53665
  }
53666
  if (s.last_lit) {
53667
    /*** FLUSH_BLOCK(s, 0); ***/
53668
    flush_block_only(s, false);
53669
    if (s.strm.avail_out === 0) {
53670
      return BS_NEED_MORE;
53671
    }
53672
    /***/
53673
  }
53674
53675
  return BS_BLOCK_DONE;
53676
}
53677
53678
53679
/* ===========================================================================
53680
 * For Z_RLE, simply look for runs of bytes, generate matches only of distance
53681
 * one.  Do not maintain a hash table.  (It will be regenerated if this run of
53682
 * deflate switches away from Z_RLE.)
53683
 */
53684
function deflate_rle(s, flush) {
53685
  var bflush;            /* set if current block must be flushed */
53686
  var prev;              /* byte at distance one to match */
53687
  var scan, strend;      /* scan goes up to strend for length of run */
53688
53689
  var _win = s.window;
53690
53691
  for (;;) {
53692
    /* Make sure that we always have enough lookahead, except
53693
     * at the end of the input file. We need MAX_MATCH bytes
53694
     * for the longest run, plus one for the unrolled loop.
53695
     */
53696
    if (s.lookahead <= MAX_MATCH) {
53697
      fill_window(s);
53698
      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
53699
        return BS_NEED_MORE;
53700
      }
53701
      if (s.lookahead === 0) { break; } /* flush the current block */
53702
    }
53703
53704
    /* See how many times the previous byte repeats */
53705
    s.match_length = 0;
53706
    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
53707
      scan = s.strstart - 1;
53708
      prev = _win[scan];
53709
      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
53710
        strend = s.strstart + MAX_MATCH;
53711
        do {
53712
          /*jshint noempty:false*/
53713
        } while (prev === _win[++scan] && prev === _win[++scan] &&
53714
                 prev === _win[++scan] && prev === _win[++scan] &&
53715
                 prev === _win[++scan] && prev === _win[++scan] &&
53716
                 prev === _win[++scan] && prev === _win[++scan] &&
53717
                 scan < strend);
53718
        s.match_length = MAX_MATCH - (strend - scan);
53719
        if (s.match_length > s.lookahead) {
53720
          s.match_length = s.lookahead;
53721
        }
53722
      }
53723
      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
53724
    }
53725
53726
    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
53727
    if (s.match_length >= MIN_MATCH) {
53728
      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
53729
53730
      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
53731
      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
53732
53733
      s.lookahead -= s.match_length;
53734
      s.strstart += s.match_length;
53735
      s.match_length = 0;
53736
    } else {
53737
      /* No match, output a literal byte */
53738
      //Tracevv((stderr,"%c", s->window[s->strstart]));
53739
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
53740
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
53741
53742
      s.lookahead--;
53743
      s.strstart++;
53744
    }
53745
    if (bflush) {
53746
      /*** FLUSH_BLOCK(s, 0); ***/
53747
      flush_block_only(s, false);
53748
      if (s.strm.avail_out === 0) {
53749
        return BS_NEED_MORE;
53750
      }
53751
      /***/
53752
    }
53753
  }
53754
  s.insert = 0;
53755
  if (flush === Z_FINISH) {
53756
    /*** FLUSH_BLOCK(s, 1); ***/
53757
    flush_block_only(s, true);
53758
    if (s.strm.avail_out === 0) {
53759
      return BS_FINISH_STARTED;
53760
    }
53761
    /***/
53762
    return BS_FINISH_DONE;
53763
  }
53764
  if (s.last_lit) {
53765
    /*** FLUSH_BLOCK(s, 0); ***/
53766
    flush_block_only(s, false);
53767
    if (s.strm.avail_out === 0) {
53768
      return BS_NEED_MORE;
53769
    }
53770
    /***/
53771
  }
53772
  return BS_BLOCK_DONE;
53773
}
53774
53775
/* ===========================================================================
53776
 * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
53777
 * (It will be regenerated if this run of deflate switches away from Huffman.)
53778
 */
53779
function deflate_huff(s, flush) {
53780
  var bflush;             /* set if current block must be flushed */
53781
53782
  for (;;) {
53783
    /* Make sure that we have a literal to write. */
53784
    if (s.lookahead === 0) {
53785
      fill_window(s);
53786
      if (s.lookahead === 0) {
53787
        if (flush === Z_NO_FLUSH) {
53788
          return BS_NEED_MORE;
53789
        }
53790
        break;      /* flush the current block */
53791
      }
53792
    }
53793
53794
    /* Output a literal byte */
53795
    s.match_length = 0;
53796
    //Tracevv((stderr,"%c", s->window[s->strstart]));
53797
    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
53798
    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
53799
    s.lookahead--;
53800
    s.strstart++;
53801
    if (bflush) {
53802
      /*** FLUSH_BLOCK(s, 0); ***/
53803
      flush_block_only(s, false);
53804
      if (s.strm.avail_out === 0) {
53805
        return BS_NEED_MORE;
53806
      }
53807
      /***/
53808
    }
53809
  }
53810
  s.insert = 0;
53811
  if (flush === Z_FINISH) {
53812
    /*** FLUSH_BLOCK(s, 1); ***/
53813
    flush_block_only(s, true);
53814
    if (s.strm.avail_out === 0) {
53815
      return BS_FINISH_STARTED;
53816
    }
53817
    /***/
53818
    return BS_FINISH_DONE;
53819
  }
53820
  if (s.last_lit) {
53821
    /*** FLUSH_BLOCK(s, 0); ***/
53822
    flush_block_only(s, false);
53823
    if (s.strm.avail_out === 0) {
53824
      return BS_NEED_MORE;
53825
    }
53826
    /***/
53827
  }
53828
  return BS_BLOCK_DONE;
53829
}
53830
53831
/* Values for max_lazy_match, good_match and max_chain_length, depending on
53832
 * the desired pack level (0..9). The values given below have been tuned to
53833
 * exclude worst case performance for pathological files. Better values may be
53834
 * found for specific files.
53835
 */
53836
function Config(good_length, max_lazy, nice_length, max_chain, func) {
53837
  this.good_length = good_length;
53838
  this.max_lazy = max_lazy;
53839
  this.nice_length = nice_length;
53840
  this.max_chain = max_chain;
53841
  this.func = func;
53842
}
53843
53844
var configuration_table;
53845
53846
configuration_table = [
53847
  /*      good lazy nice chain */
53848
  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
53849
  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
53850
  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
53851
  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
53852
53853
  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
53854
  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
53855
  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
53856
  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
53857
  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
53858
  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
53859
];
53860
53861
53862
/* ===========================================================================
53863
 * Initialize the "longest match" routines for a new zlib stream
53864
 */
53865
function lm_init(s) {
53866
  s.window_size = 2 * s.w_size;
53867
53868
  /*** CLEAR_HASH(s); ***/
53869
  zero(s.head); // Fill with NIL (= 0);
53870
53871
  /* Set the default configuration parameters:
53872
   */
53873
  s.max_lazy_match = configuration_table[s.level].max_lazy;
53874
  s.good_match = configuration_table[s.level].good_length;
53875
  s.nice_match = configuration_table[s.level].nice_length;
53876
  s.max_chain_length = configuration_table[s.level].max_chain;
53877
53878
  s.strstart = 0;
53879
  s.block_start = 0;
53880
  s.lookahead = 0;
53881
  s.insert = 0;
53882
  s.match_length = s.prev_length = MIN_MATCH - 1;
53883
  s.match_available = 0;
53884
  s.ins_h = 0;
53885
}
53886
53887
53888
function DeflateState() {
53889
  this.strm = null;            /* pointer back to this zlib stream */
53890
  this.status = 0;            /* as the name implies */
53891
  this.pending_buf = null;      /* output still pending */
53892
  this.pending_buf_size = 0;  /* size of pending_buf */
53893
  this.pending_out = 0;       /* next pending byte to output to the stream */
53894
  this.pending = 0;           /* nb of bytes in the pending buffer */
53895
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
53896
  this.gzhead = null;         /* gzip header information to write */
53897
  this.gzindex = 0;           /* where in extra, name, or comment */
53898
  this.method = Z_DEFLATED; /* can only be DEFLATED */
53899
  this.last_flush = -1;   /* value of flush param for previous deflate call */
53900
53901
  this.w_size = 0;  /* LZ77 window size (32K by default) */
53902
  this.w_bits = 0;  /* log2(w_size)  (8..16) */
53903
  this.w_mask = 0;  /* w_size - 1 */
53904
53905
  this.window = null;
53906
  /* Sliding window. Input bytes are read into the second half of the window,
53907
   * and move to the first half later to keep a dictionary of at least wSize
53908
   * bytes. With this organization, matches are limited to a distance of
53909
   * wSize-MAX_MATCH bytes, but this ensures that IO is always
53910
   * performed with a length multiple of the block size.
53911
   */
53912
53913
  this.window_size = 0;
53914
  /* Actual size of window: 2*wSize, except when the user input buffer
53915
   * is directly used as sliding window.
53916
   */
53917
53918
  this.prev = null;
53919
  /* Link to older string with same hash index. To limit the size of this
53920
   * array to 64K, this link is maintained only for the last 32K strings.
53921
   * An index in this array is thus a window index modulo 32K.
53922
   */
53923
53924
  this.head = null;   /* Heads of the hash chains or NIL. */
53925
53926
  this.ins_h = 0;       /* hash index of string to be inserted */
53927
  this.hash_size = 0;   /* number of elements in hash table */
53928
  this.hash_bits = 0;   /* log2(hash_size) */
53929
  this.hash_mask = 0;   /* hash_size-1 */
53930
53931
  this.hash_shift = 0;
53932
  /* Number of bits by which ins_h must be shifted at each input
53933
   * step. It must be such that after MIN_MATCH steps, the oldest
53934
   * byte no longer takes part in the hash key, that is:
53935
   *   hash_shift * MIN_MATCH >= hash_bits
53936
   */
53937
53938
  this.block_start = 0;
53939
  /* Window position at the beginning of the current output block. Gets
53940
   * negative when the window is moved backwards.
53941
   */
53942
53943
  this.match_length = 0;      /* length of best match */
53944
  this.prev_match = 0;        /* previous match */
53945
  this.match_available = 0;   /* set if previous match exists */
53946
  this.strstart = 0;          /* start of string to insert */
53947
  this.match_start = 0;       /* start of matching string */
53948
  this.lookahead = 0;         /* number of valid bytes ahead in window */
53949
53950
  this.prev_length = 0;
53951
  /* Length of the best match at previous step. Matches not greater than this
53952
   * are discarded. This is used in the lazy match evaluation.
53953
   */
53954
53955
  this.max_chain_length = 0;
53956
  /* To speed up deflation, hash chains are never searched beyond this
53957
   * length.  A higher limit improves compression ratio but degrades the
53958
   * speed.
53959
   */
53960
53961
  this.max_lazy_match = 0;
53962
  /* Attempt to find a better match only when the current match is strictly
53963
   * smaller than this value. This mechanism is used only for compression
53964
   * levels >= 4.
53965
   */
53966
  // That's alias to max_lazy_match, don't use directly
53967
  //this.max_insert_length = 0;
53968
  /* Insert new strings in the hash table only if the match length is not
53969
   * greater than this length. This saves time but degrades compression.
53970
   * max_insert_length is used only for compression levels <= 3.
53971
   */
53972
53973
  this.level = 0;     /* compression level (1..9) */
53974
  this.strategy = 0;  /* favor or force Huffman coding*/
53975
53976
  this.good_match = 0;
53977
  /* Use a faster search when the previous match is longer than this */
53978
53979
  this.nice_match = 0; /* Stop searching when current match exceeds this */
53980
53981
              /* used by trees.c: */
53982
53983
  /* Didn't use ct_data typedef below to suppress compiler warning */
53984
53985
  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
53986
  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
53987
  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
53988
53989
  // Use flat array of DOUBLE size, with interleaved fata,
53990
  // because JS does not support effective
53991
  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
53992
  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
53993
  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
53994
  zero(this.dyn_ltree);
53995
  zero(this.dyn_dtree);
53996
  zero(this.bl_tree);
53997
53998
  this.l_desc   = null;         /* desc. for literal tree */
53999
  this.d_desc   = null;         /* desc. for distance tree */
54000
  this.bl_desc  = null;         /* desc. for bit length tree */
54001
54002
  //ush bl_count[MAX_BITS+1];
54003
  this.bl_count = new utils.Buf16(MAX_BITS + 1);
54004
  /* number of codes at each bit length for an optimal tree */
54005
54006
  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
54007
  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
54008
  zero(this.heap);
54009
54010
  this.heap_len = 0;               /* number of elements in the heap */
54011
  this.heap_max = 0;               /* element of largest frequency */
54012
  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
54013
   * The same heap array is used to build all trees.
54014
   */
54015
54016
  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
54017
  zero(this.depth);
54018
  /* Depth of each subtree used as tie breaker for trees of equal frequency
54019
   */
54020
54021
  this.l_buf = 0;          /* buffer index for literals or lengths */
54022
54023
  this.lit_bufsize = 0;
54024
  /* Size of match buffer for literals/lengths.  There are 4 reasons for
54025
   * limiting lit_bufsize to 64K:
54026
   *   - frequencies can be kept in 16 bit counters
54027
   *   - if compression is not successful for the first block, all input
54028
   *     data is still in the window so we can still emit a stored block even
54029
   *     when input comes from standard input.  (This can also be done for
54030
   *     all blocks if lit_bufsize is not greater than 32K.)
54031
   *   - if compression is not successful for a file smaller than 64K, we can
54032
   *     even emit a stored file instead of a stored block (saving 5 bytes).
54033
   *     This is applicable only for zip (not gzip or zlib).
54034
   *   - creating new Huffman trees less frequently may not provide fast
54035
   *     adaptation to changes in the input data statistics. (Take for
54036
   *     example a binary file with poorly compressible code followed by
54037
   *     a highly compressible string table.) Smaller buffer sizes give
54038
   *     fast adaptation but have of course the overhead of transmitting
54039
   *     trees more frequently.
54040
   *   - I can't count above 4
54041
   */
54042
54043
  this.last_lit = 0;      /* running index in l_buf */
54044
54045
  this.d_buf = 0;
54046
  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
54047
   * the same number of elements. To use different lengths, an extra flag
54048
   * array would be necessary.
54049
   */
54050
54051
  this.opt_len = 0;       /* bit length of current block with optimal trees */
54052
  this.static_len = 0;    /* bit length of current block with static trees */
54053
  this.matches = 0;       /* number of string matches in current block */
54054
  this.insert = 0;        /* bytes at end of window left to insert */
54055
54056
54057
  this.bi_buf = 0;
54058
  /* Output buffer. bits are inserted starting at the bottom (least
54059
   * significant bits).
54060
   */
54061
  this.bi_valid = 0;
54062
  /* Number of valid bits in bi_buf.  All bits above the last valid bit
54063
   * are always zero.
54064
   */
54065
54066
  // Used for window memory init. We safely ignore it for JS. That makes
54067
  // sense only for pointers and memory check tools.
54068
  //this.high_water = 0;
54069
  /* High water mark offset in window for initialized bytes -- bytes above
54070
   * this are set to zero in order to avoid memory check warnings when
54071
   * longest match routines access bytes past the input.  This is then
54072
   * updated to the new high water mark.
54073
   */
54074
}
54075
54076
54077
function deflateResetKeep(strm) {
54078
  var s;
54079
54080
  if (!strm || !strm.state) {
54081
    return err(strm, Z_STREAM_ERROR);
54082
  }
54083
54084
  strm.total_in = strm.total_out = 0;
54085
  strm.data_type = Z_UNKNOWN;
54086
54087
  s = strm.state;
54088
  s.pending = 0;
54089
  s.pending_out = 0;
54090
54091
  if (s.wrap < 0) {
54092
    s.wrap = -s.wrap;
54093
    /* was made negative by deflate(..., Z_FINISH); */
54094
  }
54095
  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
54096
  strm.adler = (s.wrap === 2) ?
54097
    0  // crc32(0, Z_NULL, 0)
54098
  :
54099
    1; // adler32(0, Z_NULL, 0)
54100
  s.last_flush = Z_NO_FLUSH;
54101
  trees._tr_init(s);
54102
  return Z_OK;
54103
}
54104
54105
54106
function deflateReset(strm) {
54107
  var ret = deflateResetKeep(strm);
54108
  if (ret === Z_OK) {
54109
    lm_init(strm.state);
54110
  }
54111
  return ret;
54112
}
54113
54114
54115
function deflateSetHeader(strm, head) {
54116
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
54117
  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
54118
  strm.state.gzhead = head;
54119
  return Z_OK;
54120
}
54121
54122
54123
function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
54124
  if (!strm) { // === Z_NULL
54125
    return Z_STREAM_ERROR;
54126
  }
54127
  var wrap = 1;
54128
54129
  if (level === Z_DEFAULT_COMPRESSION) {
54130
    level = 6;
54131
  }
54132
54133
  if (windowBits < 0) { /* suppress zlib wrapper */
54134
    wrap = 0;
54135
    windowBits = -windowBits;
54136
  }
54137
54138
  else if (windowBits > 15) {
54139
    wrap = 2;           /* write gzip wrapper instead */
54140
    windowBits -= 16;
54141
  }
54142
54143
54144
  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
54145
    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
54146
    strategy < 0 || strategy > Z_FIXED) {
54147
    return err(strm, Z_STREAM_ERROR);
54148
  }
54149
54150
54151
  if (windowBits === 8) {
54152
    windowBits = 9;
54153
  }
54154
  /* until 256-byte window bug fixed */
54155
54156
  var s = new DeflateState();
54157
54158
  strm.state = s;
54159
  s.strm = strm;
54160
54161
  s.wrap = wrap;
54162
  s.gzhead = null;
54163
  s.w_bits = windowBits;
54164
  s.w_size = 1 << s.w_bits;
54165
  s.w_mask = s.w_size - 1;
54166
54167
  s.hash_bits = memLevel + 7;
54168
  s.hash_size = 1 << s.hash_bits;
54169
  s.hash_mask = s.hash_size - 1;
54170
  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
54171
54172
  s.window = new utils.Buf8(s.w_size * 2);
54173
  s.head = new utils.Buf16(s.hash_size);
54174
  s.prev = new utils.Buf16(s.w_size);
54175
54176
  // Don't need mem init magic for JS.
54177
  //s.high_water = 0;  /* nothing written to s->window yet */
54178
54179
  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
54180
54181
  s.pending_buf_size = s.lit_bufsize * 4;
54182
54183
  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
54184
  //s->pending_buf = (uchf *) overlay;
54185
  s.pending_buf = new utils.Buf8(s.pending_buf_size);
54186
54187
  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
54188
  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
54189
  s.d_buf = 1 * s.lit_bufsize;
54190
54191
  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
54192
  s.l_buf = (1 + 2) * s.lit_bufsize;
54193
54194
  s.level = level;
54195
  s.strategy = strategy;
54196
  s.method = method;
54197
54198
  return deflateReset(strm);
54199
}
54200
54201
function deflateInit(strm, level) {
54202
  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
54203
}
54204
54205
54206
function deflate(strm, flush) {
54207
  var old_flush, s;
54208
  var beg, val; // for gzip header write only
54209
54210
  if (!strm || !strm.state ||
54211
    flush > Z_BLOCK || flush < 0) {
54212
    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
54213
  }
54214
54215
  s = strm.state;
54216
54217
  if (!strm.output ||
54218
      (!strm.input && strm.avail_in !== 0) ||
54219
      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
54220
    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
54221
  }
54222
54223
  s.strm = strm; /* just in case */
54224
  old_flush = s.last_flush;
54225
  s.last_flush = flush;
54226
54227
  /* Write the header */
54228
  if (s.status === INIT_STATE) {
54229
54230
    if (s.wrap === 2) { // GZIP header
54231
      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
54232
      put_byte(s, 31);
54233
      put_byte(s, 139);
54234
      put_byte(s, 8);
54235
      if (!s.gzhead) { // s->gzhead == Z_NULL
54236
        put_byte(s, 0);
54237
        put_byte(s, 0);
54238
        put_byte(s, 0);
54239
        put_byte(s, 0);
54240
        put_byte(s, 0);
54241
        put_byte(s, s.level === 9 ? 2 :
54242
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
54243
                     4 : 0));
54244
        put_byte(s, OS_CODE);
54245
        s.status = BUSY_STATE;
54246
      }
54247
      else {
54248
        put_byte(s, (s.gzhead.text ? 1 : 0) +
54249
                    (s.gzhead.hcrc ? 2 : 0) +
54250
                    (!s.gzhead.extra ? 0 : 4) +
54251
                    (!s.gzhead.name ? 0 : 8) +
54252
                    (!s.gzhead.comment ? 0 : 16)
54253
        );
54254
        put_byte(s, s.gzhead.time & 0xff);
54255
        put_byte(s, (s.gzhead.time >> 8) & 0xff);
54256
        put_byte(s, (s.gzhead.time >> 16) & 0xff);
54257
        put_byte(s, (s.gzhead.time >> 24) & 0xff);
54258
        put_byte(s, s.level === 9 ? 2 :
54259
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
54260
                     4 : 0));
54261
        put_byte(s, s.gzhead.os & 0xff);
54262
        if (s.gzhead.extra && s.gzhead.extra.length) {
54263
          put_byte(s, s.gzhead.extra.length & 0xff);
54264
          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
54265
        }
54266
        if (s.gzhead.hcrc) {
54267
          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
54268
        }
54269
        s.gzindex = 0;
54270
        s.status = EXTRA_STATE;
54271
      }
54272
    }
54273
    else // DEFLATE header
54274
    {
54275
      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
54276
      var level_flags = -1;
54277
54278
      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
54279
        level_flags = 0;
54280
      } else if (s.level < 6) {
54281
        level_flags = 1;
54282
      } else if (s.level === 6) {
54283
        level_flags = 2;
54284
      } else {
54285
        level_flags = 3;
54286
      }
54287
      header |= (level_flags << 6);
54288
      if (s.strstart !== 0) { header |= PRESET_DICT; }
54289
      header += 31 - (header % 31);
54290
54291
      s.status = BUSY_STATE;
54292
      putShortMSB(s, header);
54293
54294
      /* Save the adler32 of the preset dictionary: */
54295
      if (s.strstart !== 0) {
54296
        putShortMSB(s, strm.adler >>> 16);
54297
        putShortMSB(s, strm.adler & 0xffff);
54298
      }
54299
      strm.adler = 1; // adler32(0L, Z_NULL, 0);
54300
    }
54301
  }
54302
54303
//#ifdef GZIP
54304
  if (s.status === EXTRA_STATE) {
54305
    if (s.gzhead.extra/* != Z_NULL*/) {
54306
      beg = s.pending;  /* start of bytes to update crc */
54307
54308
      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
54309
        if (s.pending === s.pending_buf_size) {
54310
          if (s.gzhead.hcrc && s.pending > beg) {
54311
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
54312
          }
54313
          flush_pending(strm);
54314
          beg = s.pending;
54315
          if (s.pending === s.pending_buf_size) {
54316
            break;
54317
          }
54318
        }
54319
        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
54320
        s.gzindex++;
54321
      }
54322
      if (s.gzhead.hcrc && s.pending > beg) {
54323
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
54324
      }
54325
      if (s.gzindex === s.gzhead.extra.length) {
54326
        s.gzindex = 0;
54327
        s.status = NAME_STATE;
54328
      }
54329
    }
54330
    else {
54331
      s.status = NAME_STATE;
54332
    }
54333
  }
54334
  if (s.status === NAME_STATE) {
54335
    if (s.gzhead.name/* != Z_NULL*/) {
54336
      beg = s.pending;  /* start of bytes to update crc */
54337
      //int val;
54338
54339
      do {
54340
        if (s.pending === s.pending_buf_size) {
54341
          if (s.gzhead.hcrc && s.pending > beg) {
54342
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
54343
          }
54344
          flush_pending(strm);
54345
          beg = s.pending;
54346
          if (s.pending === s.pending_buf_size) {
54347
            val = 1;
54348
            break;
54349
          }
54350
        }
54351
        // JS specific: little magic to add zero terminator to end of string
54352
        if (s.gzindex < s.gzhead.name.length) {
54353
          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
54354
        } else {
54355
          val = 0;
54356
        }
54357
        put_byte(s, val);
54358
      } while (val !== 0);
54359
54360
      if (s.gzhead.hcrc && s.pending > beg) {
54361
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
54362
      }
54363
      if (val === 0) {
54364
        s.gzindex = 0;
54365
        s.status = COMMENT_STATE;
54366
      }
54367
    }
54368
    else {
54369
      s.status = COMMENT_STATE;
54370
    }
54371
  }
54372
  if (s.status === COMMENT_STATE) {
54373
    if (s.gzhead.comment/* != Z_NULL*/) {
54374
      beg = s.pending;  /* start of bytes to update crc */
54375
      //int val;
54376
54377
      do {
54378
        if (s.pending === s.pending_buf_size) {
54379
          if (s.gzhead.hcrc && s.pending > beg) {
54380
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
54381
          }
54382
          flush_pending(strm);
54383
          beg = s.pending;
54384
          if (s.pending === s.pending_buf_size) {
54385
            val = 1;
54386
            break;
54387
          }
54388
        }
54389
        // JS specific: little magic to add zero terminator to end of string
54390
        if (s.gzindex < s.gzhead.comment.length) {
54391
          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
54392
        } else {
54393
          val = 0;
54394
        }
54395
        put_byte(s, val);
54396
      } while (val !== 0);
54397
54398
      if (s.gzhead.hcrc && s.pending > beg) {
54399
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
54400
      }
54401
      if (val === 0) {
54402
        s.status = HCRC_STATE;
54403
      }
54404
    }
54405
    else {
54406
      s.status = HCRC_STATE;
54407
    }
54408
  }
54409
  if (s.status === HCRC_STATE) {
54410
    if (s.gzhead.hcrc) {
54411
      if (s.pending + 2 > s.pending_buf_size) {
54412
        flush_pending(strm);
54413
      }
54414
      if (s.pending + 2 <= s.pending_buf_size) {
54415
        put_byte(s, strm.adler & 0xff);
54416
        put_byte(s, (strm.adler >> 8) & 0xff);
54417
        strm.adler = 0; //crc32(0L, Z_NULL, 0);
54418
        s.status = BUSY_STATE;
54419
      }
54420
    }
54421
    else {
54422
      s.status = BUSY_STATE;
54423
    }
54424
  }
54425
//#endif
54426
54427
  /* Flush as much pending output as possible */
54428
  if (s.pending !== 0) {
54429
    flush_pending(strm);
54430
    if (strm.avail_out === 0) {
54431
      /* Since avail_out is 0, deflate will be called again with
54432
       * more output space, but possibly with both pending and
54433
       * avail_in equal to zero. There won't be anything to do,
54434
       * but this is not an error situation so make sure we
54435
       * return OK instead of BUF_ERROR at next call of deflate:
54436
       */
54437
      s.last_flush = -1;
54438
      return Z_OK;
54439
    }
54440
54441
    /* Make sure there is something to do and avoid duplicate consecutive
54442
     * flushes. For repeated and useless calls with Z_FINISH, we keep
54443
     * returning Z_STREAM_END instead of Z_BUF_ERROR.
54444
     */
54445
  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
54446
    flush !== Z_FINISH) {
54447
    return err(strm, Z_BUF_ERROR);
54448
  }
54449
54450
  /* User must not provide more input after the first FINISH: */
54451
  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
54452
    return err(strm, Z_BUF_ERROR);
54453
  }
54454
54455
  /* Start a new block or continue the current one.
54456
   */
54457
  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
54458
    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
54459
    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
54460
      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
54461
        configuration_table[s.level].func(s, flush));
54462
54463
    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
54464
      s.status = FINISH_STATE;
54465
    }
54466
    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
54467
      if (strm.avail_out === 0) {
54468
        s.last_flush = -1;
54469
        /* avoid BUF_ERROR next call, see above */
54470
      }
54471
      return Z_OK;
54472
      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
54473
       * of deflate should use the same flush parameter to make sure
54474
       * that the flush is complete. So we don't have to output an
54475
       * empty block here, this will be done at next call. This also
54476
       * ensures that for a very small output buffer, we emit at most
54477
       * one empty block.
54478
       */
54479
    }
54480
    if (bstate === BS_BLOCK_DONE) {
54481
      if (flush === Z_PARTIAL_FLUSH) {
54482
        trees._tr_align(s);
54483
      }
54484
      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
54485
54486
        trees._tr_stored_block(s, 0, 0, false);
54487
        /* For a full flush, this empty block will be recognized
54488
         * as a special marker by inflate_sync().
54489
         */
54490
        if (flush === Z_FULL_FLUSH) {
54491
          /*** CLEAR_HASH(s); ***/             /* forget history */
54492
          zero(s.head); // Fill with NIL (= 0);
54493
54494
          if (s.lookahead === 0) {
54495
            s.strstart = 0;
54496
            s.block_start = 0;
54497
            s.insert = 0;
54498
          }
54499
        }
54500
      }
54501
      flush_pending(strm);
54502
      if (strm.avail_out === 0) {
54503
        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
54504
        return Z_OK;
54505
      }
54506
    }
54507
  }
54508
  //Assert(strm->avail_out > 0, "bug2");
54509
  //if (strm.avail_out <= 0) { throw new Error("bug2");}
54510
54511
  if (flush !== Z_FINISH) { return Z_OK; }
54512
  if (s.wrap <= 0) { return Z_STREAM_END; }
54513
54514
  /* Write the trailer */
54515
  if (s.wrap === 2) {
54516
    put_byte(s, strm.adler & 0xff);
54517
    put_byte(s, (strm.adler >> 8) & 0xff);
54518
    put_byte(s, (strm.adler >> 16) & 0xff);
54519
    put_byte(s, (strm.adler >> 24) & 0xff);
54520
    put_byte(s, strm.total_in & 0xff);
54521
    put_byte(s, (strm.total_in >> 8) & 0xff);
54522
    put_byte(s, (strm.total_in >> 16) & 0xff);
54523
    put_byte(s, (strm.total_in >> 24) & 0xff);
54524
  }
54525
  else
54526
  {
54527
    putShortMSB(s, strm.adler >>> 16);
54528
    putShortMSB(s, strm.adler & 0xffff);
54529
  }
54530
54531
  flush_pending(strm);
54532
  /* If avail_out is zero, the application will call deflate again
54533
   * to flush the rest.
54534
   */
54535
  if (s.wrap > 0) { s.wrap = -s.wrap; }
54536
  /* write the trailer only once! */
54537
  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
54538
}
54539
54540
function deflateEnd(strm) {
54541
  var status;
54542
54543
  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
54544
    return Z_STREAM_ERROR;
54545
  }
54546
54547
  status = strm.state.status;
54548
  if (status !== INIT_STATE &&
54549
    status !== EXTRA_STATE &&
54550
    status !== NAME_STATE &&
54551
    status !== COMMENT_STATE &&
54552
    status !== HCRC_STATE &&
54553
    status !== BUSY_STATE &&
54554
    status !== FINISH_STATE
54555
  ) {
54556
    return err(strm, Z_STREAM_ERROR);
54557
  }
54558
54559
  strm.state = null;
54560
54561
  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
54562
}
54563
54564
54565
/* =========================================================================
54566
 * Initializes the compression dictionary from the given byte
54567
 * sequence without producing any compressed output.
54568
 */
54569
function deflateSetDictionary(strm, dictionary) {
54570
  var dictLength = dictionary.length;
54571
54572
  var s;
54573
  var str, n;
54574
  var wrap;
54575
  var avail;
54576
  var next;
54577
  var input;
54578
  var tmpDict;
54579
54580
  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
54581
    return Z_STREAM_ERROR;
54582
  }
54583
54584
  s = strm.state;
54585
  wrap = s.wrap;
54586
54587
  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
54588
    return Z_STREAM_ERROR;
54589
  }
54590
54591
  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
54592
  if (wrap === 1) {
54593
    /* adler32(strm->adler, dictionary, dictLength); */
54594
    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
54595
  }
54596
54597
  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
54598
54599
  /* if dictionary would fill window, just replace the history */
54600
  if (dictLength >= s.w_size) {
54601
    if (wrap === 0) {            /* already empty otherwise */
54602
      /*** CLEAR_HASH(s); ***/
54603
      zero(s.head); // Fill with NIL (= 0);
54604
      s.strstart = 0;
54605
      s.block_start = 0;
54606
      s.insert = 0;
54607
    }
54608
    /* use the tail */
54609
    // dictionary = dictionary.slice(dictLength - s.w_size);
54610
    tmpDict = new utils.Buf8(s.w_size);
54611
    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
54612
    dictionary = tmpDict;
54613
    dictLength = s.w_size;
54614
  }
54615
  /* insert dictionary into window and hash */
54616
  avail = strm.avail_in;
54617
  next = strm.next_in;
54618
  input = strm.input;
54619
  strm.avail_in = dictLength;
54620
  strm.next_in = 0;
54621
  strm.input = dictionary;
54622
  fill_window(s);
54623
  while (s.lookahead >= MIN_MATCH) {
54624
    str = s.strstart;
54625
    n = s.lookahead - (MIN_MATCH - 1);
54626
    do {
54627
      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
54628
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
54629
54630
      s.prev[str & s.w_mask] = s.head[s.ins_h];
54631
54632
      s.head[s.ins_h] = str;
54633
      str++;
54634
    } while (--n);
54635
    s.strstart = str;
54636
    s.lookahead = MIN_MATCH - 1;
54637
    fill_window(s);
54638
  }
54639
  s.strstart += s.lookahead;
54640
  s.block_start = s.strstart;
54641
  s.insert = s.lookahead;
54642
  s.lookahead = 0;
54643
  s.match_length = s.prev_length = MIN_MATCH - 1;
54644
  s.match_available = 0;
54645
  strm.next_in = next;
54646
  strm.input = input;
54647
  strm.avail_in = avail;
54648
  s.wrap = wrap;
54649
  return Z_OK;
54650
}
54651
54652
54653
exports.deflateInit = deflateInit;
54654
exports.deflateInit2 = deflateInit2;
54655
exports.deflateReset = deflateReset;
54656
exports.deflateResetKeep = deflateResetKeep;
54657
exports.deflateSetHeader = deflateSetHeader;
54658
exports.deflate = deflate;
54659
exports.deflateEnd = deflateEnd;
54660
exports.deflateSetDictionary = deflateSetDictionary;
54661
exports.deflateInfo = 'pako deflate (from Nodeca project)';
54662
54663
/* Not implemented
54664
exports.deflateBound = deflateBound;
54665
exports.deflateCopy = deflateCopy;
54666
exports.deflateParams = deflateParams;
54667
exports.deflatePending = deflatePending;
54668
exports.deflatePrime = deflatePrime;
54669
exports.deflateTune = deflateTune;
54670
*/
54671
54672
54673
/***/ }),
54674
54675
/***/ 4264:
54676
/***/ (function(module) {
54677
54678
"use strict";
54679
54680
54681
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
54682
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
54683
//
54684
// This software is provided 'as-is', without any express or implied
54685
// warranty. In no event will the authors be held liable for any damages
54686
// arising from the use of this software.
54687
//
54688
// Permission is granted to anyone to use this software for any purpose,
54689
// including commercial applications, and to alter it and redistribute it
54690
// freely, subject to the following restrictions:
54691
//
54692
// 1. The origin of this software must not be misrepresented; you must not
54693
//   claim that you wrote the original software. If you use this software
54694
//   in a product, an acknowledgment in the product documentation would be
54695
//   appreciated but is not required.
54696
// 2. Altered source versions must be plainly marked as such, and must not be
54697
//   misrepresented as being the original software.
54698
// 3. This notice may not be removed or altered from any source distribution.
54699
54700
// See state defs from inflate.js
54701
var BAD = 30;       /* got a data error -- remain here until reset */
54702
var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
54703
54704
/*
54705
   Decode literal, length, and distance codes and write out the resulting
54706
   literal and match bytes until either not enough input or output is
54707
   available, an end-of-block is encountered, or a data error is encountered.
54708
   When large enough input and output buffers are supplied to inflate(), for
54709
   example, a 16K input buffer and a 64K output buffer, more than 95% of the
54710
   inflate execution time is spent in this routine.
54711
54712
   Entry assumptions:
54713
54714
        state.mode === LEN
54715
        strm.avail_in >= 6
54716
        strm.avail_out >= 258
54717
        start >= strm.avail_out
54718
        state.bits < 8
54719
54720
   On return, state.mode is one of:
54721
54722
        LEN -- ran out of enough output space or enough available input
54723
        TYPE -- reached end of block code, inflate() to interpret next block
54724
        BAD -- error in block data
54725
54726
   Notes:
54727
54728
    - The maximum input bits used by a length/distance pair is 15 bits for the
54729
      length code, 5 bits for the length extra, 15 bits for the distance code,
54730
      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
54731
      Therefore if strm.avail_in >= 6, then there is enough input to avoid
54732
      checking for available input while decoding.
54733
54734
    - The maximum bytes that a single length/distance pair can output is 258
54735
      bytes, which is the maximum length that can be coded.  inflate_fast()
54736
      requires strm.avail_out >= 258 for each loop to avoid checking for
54737
      output space.
54738
 */
54739
module.exports = function inflate_fast(strm, start) {
54740
  var state;
54741
  var _in;                    /* local strm.input */
54742
  var last;                   /* have enough input while in < last */
54743
  var _out;                   /* local strm.output */
54744
  var beg;                    /* inflate()'s initial strm.output */
54745
  var end;                    /* while out < end, enough space available */
54746
//#ifdef INFLATE_STRICT
54747
  var dmax;                   /* maximum distance from zlib header */
54748
//#endif
54749
  var wsize;                  /* window size or zero if not using window */
54750
  var whave;                  /* valid bytes in the window */
54751
  var wnext;                  /* window write index */
54752
  // Use `s_window` instead `window`, avoid conflict with instrumentation tools
54753
  var s_window;               /* allocated sliding window, if wsize != 0 */
54754
  var hold;                   /* local strm.hold */
54755
  var bits;                   /* local strm.bits */
54756
  var lcode;                  /* local strm.lencode */
54757
  var dcode;                  /* local strm.distcode */
54758
  var lmask;                  /* mask for first level of length codes */
54759
  var dmask;                  /* mask for first level of distance codes */
54760
  var here;                   /* retrieved table entry */
54761
  var op;                     /* code bits, operation, extra bits, or */
54762
                              /*  window position, window bytes to copy */
54763
  var len;                    /* match length, unused bytes */
54764
  var dist;                   /* match distance */
54765
  var from;                   /* where to copy match from */
54766
  var from_source;
54767
54768
54769
  var input, output; // JS specific, because we have no pointers
54770
54771
  /* copy state to local variables */
54772
  state = strm.state;
54773
  //here = state.here;
54774
  _in = strm.next_in;
54775
  input = strm.input;
54776
  last = _in + (strm.avail_in - 5);
54777
  _out = strm.next_out;
54778
  output = strm.output;
54779
  beg = _out - (start - strm.avail_out);
54780
  end = _out + (strm.avail_out - 257);
54781
//#ifdef INFLATE_STRICT
54782
  dmax = state.dmax;
54783
//#endif
54784
  wsize = state.wsize;
54785
  whave = state.whave;
54786
  wnext = state.wnext;
54787
  s_window = state.window;
54788
  hold = state.hold;
54789
  bits = state.bits;
54790
  lcode = state.lencode;
54791
  dcode = state.distcode;
54792
  lmask = (1 << state.lenbits) - 1;
54793
  dmask = (1 << state.distbits) - 1;
54794
54795
54796
  /* decode literals and length/distances until end-of-block or not enough
54797
     input data or output space */
54798
54799
  top:
54800
  do {
54801
    if (bits < 15) {
54802
      hold += input[_in++] << bits;
54803
      bits += 8;
54804
      hold += input[_in++] << bits;
54805
      bits += 8;
54806
    }
54807
54808
    here = lcode[hold & lmask];
54809
54810
    dolen:
54811
    for (;;) { // Goto emulation
54812
      op = here >>> 24/*here.bits*/;
54813
      hold >>>= op;
54814
      bits -= op;
54815
      op = (here >>> 16) & 0xff/*here.op*/;
54816
      if (op === 0) {                          /* literal */
54817
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
54818
        //        "inflate:         literal '%c'\n" :
54819
        //        "inflate:         literal 0x%02x\n", here.val));
54820
        output[_out++] = here & 0xffff/*here.val*/;
54821
      }
54822
      else if (op & 16) {                     /* length base */
54823
        len = here & 0xffff/*here.val*/;
54824
        op &= 15;                           /* number of extra bits */
54825
        if (op) {
54826
          if (bits < op) {
54827
            hold += input[_in++] << bits;
54828
            bits += 8;
54829
          }
54830
          len += hold & ((1 << op) - 1);
54831
          hold >>>= op;
54832
          bits -= op;
54833
        }
54834
        //Tracevv((stderr, "inflate:         length %u\n", len));
54835
        if (bits < 15) {
54836
          hold += input[_in++] << bits;
54837
          bits += 8;
54838
          hold += input[_in++] << bits;
54839
          bits += 8;
54840
        }
54841
        here = dcode[hold & dmask];
54842
54843
        dodist:
54844
        for (;;) { // goto emulation
54845
          op = here >>> 24/*here.bits*/;
54846
          hold >>>= op;
54847
          bits -= op;
54848
          op = (here >>> 16) & 0xff/*here.op*/;
54849
54850
          if (op & 16) {                      /* distance base */
54851
            dist = here & 0xffff/*here.val*/;
54852
            op &= 15;                       /* number of extra bits */
54853
            if (bits < op) {
54854
              hold += input[_in++] << bits;
54855
              bits += 8;
54856
              if (bits < op) {
54857
                hold += input[_in++] << bits;
54858
                bits += 8;
54859
              }
54860
            }
54861
            dist += hold & ((1 << op) - 1);
54862
//#ifdef INFLATE_STRICT
54863
            if (dist > dmax) {
54864
              strm.msg = 'invalid distance too far back';
54865
              state.mode = BAD;
54866
              break top;
54867
            }
54868
//#endif
54869
            hold >>>= op;
54870
            bits -= op;
54871
            //Tracevv((stderr, "inflate:         distance %u\n", dist));
54872
            op = _out - beg;                /* max distance in output */
54873
            if (dist > op) {                /* see if copy from window */
54874
              op = dist - op;               /* distance back in window */
54875
              if (op > whave) {
54876
                if (state.sane) {
54877
                  strm.msg = 'invalid distance too far back';
54878
                  state.mode = BAD;
54879
                  break top;
54880
                }
54881
54882
// (!) This block is disabled in zlib defaults,
54883
// don't enable it for binary compatibility
54884
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
54885
//                if (len <= op - whave) {
54886
//                  do {
54887
//                    output[_out++] = 0;
54888
//                  } while (--len);
54889
//                  continue top;
54890
//                }
54891
//                len -= op - whave;
54892
//                do {
54893
//                  output[_out++] = 0;
54894
//                } while (--op > whave);
54895
//                if (op === 0) {
54896
//                  from = _out - dist;
54897
//                  do {
54898
//                    output[_out++] = output[from++];
54899
//                  } while (--len);
54900
//                  continue top;
54901
//                }
54902
//#endif
54903
              }
54904
              from = 0; // window index
54905
              from_source = s_window;
54906
              if (wnext === 0) {           /* very common case */
54907
                from += wsize - op;
54908
                if (op < len) {         /* some from window */
54909
                  len -= op;
54910
                  do {
54911
                    output[_out++] = s_window[from++];
54912
                  } while (--op);
54913
                  from = _out - dist;  /* rest from output */
54914
                  from_source = output;
54915
                }
54916
              }
54917
              else if (wnext < op) {      /* wrap around window */
54918
                from += wsize + wnext - op;
54919
                op -= wnext;
54920
                if (op < len) {         /* some from end of window */
54921
                  len -= op;
54922
                  do {
54923
                    output[_out++] = s_window[from++];
54924
                  } while (--op);
54925
                  from = 0;
54926
                  if (wnext < len) {  /* some from start of window */
54927
                    op = wnext;
54928
                    len -= op;
54929
                    do {
54930
                      output[_out++] = s_window[from++];
54931
                    } while (--op);
54932
                    from = _out - dist;      /* rest from output */
54933
                    from_source = output;
54934
                  }
54935
                }
54936
              }
54937
              else {                      /* contiguous in window */
54938
                from += wnext - op;
54939
                if (op < len) {         /* some from window */
54940
                  len -= op;
54941
                  do {
54942
                    output[_out++] = s_window[from++];
54943
                  } while (--op);
54944
                  from = _out - dist;  /* rest from output */
54945
                  from_source = output;
54946
                }
54947
              }
54948
              while (len > 2) {
54949
                output[_out++] = from_source[from++];
54950
                output[_out++] = from_source[from++];
54951
                output[_out++] = from_source[from++];
54952
                len -= 3;
54953
              }
54954
              if (len) {
54955
                output[_out++] = from_source[from++];
54956
                if (len > 1) {
54957
                  output[_out++] = from_source[from++];
54958
                }
54959
              }
54960
            }
54961
            else {
54962
              from = _out - dist;          /* copy direct from output */
54963
              do {                        /* minimum length is three */
54964
                output[_out++] = output[from++];
54965
                output[_out++] = output[from++];
54966
                output[_out++] = output[from++];
54967
                len -= 3;
54968
              } while (len > 2);
54969
              if (len) {
54970
                output[_out++] = output[from++];
54971
                if (len > 1) {
54972
                  output[_out++] = output[from++];
54973
                }
54974
              }
54975
            }
54976
          }
54977
          else if ((op & 64) === 0) {          /* 2nd level distance code */
54978
            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
54979
            continue dodist;
54980
          }
54981
          else {
54982
            strm.msg = 'invalid distance code';
54983
            state.mode = BAD;
54984
            break top;
54985
          }
54986
54987
          break; // need to emulate goto via "continue"
54988
        }
54989
      }
54990
      else if ((op & 64) === 0) {              /* 2nd level length code */
54991
        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
54992
        continue dolen;
54993
      }
54994
      else if (op & 32) {                     /* end-of-block */
54995
        //Tracevv((stderr, "inflate:         end of block\n"));
54996
        state.mode = TYPE;
54997
        break top;
54998
      }
54999
      else {
55000
        strm.msg = 'invalid literal/length code';
55001
        state.mode = BAD;
55002
        break top;
55003
      }
55004
55005
      break; // need to emulate goto via "continue"
55006
    }
55007
  } while (_in < last && _out < end);
55008
55009
  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
55010
  len = bits >> 3;
55011
  _in -= len;
55012
  bits -= len << 3;
55013
  hold &= (1 << bits) - 1;
55014
55015
  /* update state and return */
55016
  strm.next_in = _in;
55017
  strm.next_out = _out;
55018
  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
55019
  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
55020
  state.hold = hold;
55021
  state.bits = bits;
55022
  return;
55023
};
55024
55025
55026
/***/ }),
55027
55028
/***/ 7948:
55029
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
55030
55031
"use strict";
55032
55033
55034
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
55035
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
55036
//
55037
// This software is provided 'as-is', without any express or implied
55038
// warranty. In no event will the authors be held liable for any damages
55039
// arising from the use of this software.
55040
//
55041
// Permission is granted to anyone to use this software for any purpose,
55042
// including commercial applications, and to alter it and redistribute it
55043
// freely, subject to the following restrictions:
55044
//
55045
// 1. The origin of this software must not be misrepresented; you must not
55046
//   claim that you wrote the original software. If you use this software
55047
//   in a product, an acknowledgment in the product documentation would be
55048
//   appreciated but is not required.
55049
// 2. Altered source versions must be plainly marked as such, and must not be
55050
//   misrepresented as being the original software.
55051
// 3. This notice may not be removed or altered from any source distribution.
55052
55053
var utils         = __webpack_require__(4236);
55054
var adler32       = __webpack_require__(6069);
55055
var crc32         = __webpack_require__(2869);
55056
var inflate_fast  = __webpack_require__(4264);
55057
var inflate_table = __webpack_require__(9241);
55058
55059
var CODES = 0;
55060
var LENS = 1;
55061
var DISTS = 2;
55062
55063
/* Public constants ==========================================================*/
55064
/* ===========================================================================*/
55065
55066
55067
/* Allowed flush values; see deflate() and inflate() below for details */
55068
//var Z_NO_FLUSH      = 0;
55069
//var Z_PARTIAL_FLUSH = 1;
55070
//var Z_SYNC_FLUSH    = 2;
55071
//var Z_FULL_FLUSH    = 3;
55072
var Z_FINISH        = 4;
55073
var Z_BLOCK         = 5;
55074
var Z_TREES         = 6;
55075
55076
55077
/* Return codes for the compression/decompression functions. Negative values
55078
 * are errors, positive values are used for special but normal events.
55079
 */
55080
var Z_OK            = 0;
55081
var Z_STREAM_END    = 1;
55082
var Z_NEED_DICT     = 2;
55083
//var Z_ERRNO         = -1;
55084
var Z_STREAM_ERROR  = -2;
55085
var Z_DATA_ERROR    = -3;
55086
var Z_MEM_ERROR     = -4;
55087
var Z_BUF_ERROR     = -5;
55088
//var Z_VERSION_ERROR = -6;
55089
55090
/* The deflate compression method */
55091
var Z_DEFLATED  = 8;
55092
55093
55094
/* STATES ====================================================================*/
55095
/* ===========================================================================*/
55096
55097
55098
var    HEAD = 1;       /* i: waiting for magic header */
55099
var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
55100
var    TIME = 3;       /* i: waiting for modification time (gzip) */
55101
var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
55102
var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
55103
var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
55104
var    NAME = 7;       /* i: waiting for end of file name (gzip) */
55105
var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
55106
var    HCRC = 9;       /* i: waiting for header crc (gzip) */
55107
var    DICTID = 10;    /* i: waiting for dictionary check value */
55108
var    DICT = 11;      /* waiting for inflateSetDictionary() call */
55109
var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
55110
var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
55111
var        STORED = 14;    /* i: waiting for stored size (length and complement) */
55112
var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
55113
var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
55114
var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
55115
var        LENLENS = 18;   /* i: waiting for code length code lengths */
55116
var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
55117
var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
55118
var            LEN = 21;       /* i: waiting for length/lit/eob code */
55119
var            LENEXT = 22;    /* i: waiting for length extra bits */
55120
var            DIST = 23;      /* i: waiting for distance code */
55121
var            DISTEXT = 24;   /* i: waiting for distance extra bits */
55122
var            MATCH = 25;     /* o: waiting for output space to copy string */
55123
var            LIT = 26;       /* o: waiting for output space to write literal */
55124
var    CHECK = 27;     /* i: waiting for 32-bit check value */
55125
var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
55126
var    DONE = 29;      /* finished check, done -- remain here until reset */
55127
var    BAD = 30;       /* got a data error -- remain here until reset */
55128
var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
55129
var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
55130
55131
/* ===========================================================================*/
55132
55133
55134
55135
var ENOUGH_LENS = 852;
55136
var ENOUGH_DISTS = 592;
55137
//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
55138
55139
var MAX_WBITS = 15;
55140
/* 32K LZ77 window */
55141
var DEF_WBITS = MAX_WBITS;
55142
55143
55144
function zswap32(q) {
55145
  return  (((q >>> 24) & 0xff) +
55146
          ((q >>> 8) & 0xff00) +
55147
          ((q & 0xff00) << 8) +
55148
          ((q & 0xff) << 24));
55149
}
55150
55151
55152
function InflateState() {
55153
  this.mode = 0;             /* current inflate mode */
55154
  this.last = false;          /* true if processing last block */
55155
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
55156
  this.havedict = false;      /* true if dictionary provided */
55157
  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
55158
  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
55159
  this.check = 0;             /* protected copy of check value */
55160
  this.total = 0;             /* protected copy of output count */
55161
  // TODO: may be {}
55162
  this.head = null;           /* where to save gzip header information */
55163
55164
  /* sliding window */
55165
  this.wbits = 0;             /* log base 2 of requested window size */
55166
  this.wsize = 0;             /* window size or zero if not using window */
55167
  this.whave = 0;             /* valid bytes in the window */
55168
  this.wnext = 0;             /* window write index */
55169
  this.window = null;         /* allocated sliding window, if needed */
55170
55171
  /* bit accumulator */
55172
  this.hold = 0;              /* input bit accumulator */
55173
  this.bits = 0;              /* number of bits in "in" */
55174
55175
  /* for string and stored block copying */
55176
  this.length = 0;            /* literal or length of data to copy */
55177
  this.offset = 0;            /* distance back to copy string from */
55178
55179
  /* for table and code decoding */
55180
  this.extra = 0;             /* extra bits needed */
55181
55182
  /* fixed and dynamic code tables */
55183
  this.lencode = null;          /* starting table for length/literal codes */
55184
  this.distcode = null;         /* starting table for distance codes */
55185
  this.lenbits = 0;           /* index bits for lencode */
55186
  this.distbits = 0;          /* index bits for distcode */
55187
55188
  /* dynamic table building */
55189
  this.ncode = 0;             /* number of code length code lengths */
55190
  this.nlen = 0;              /* number of length code lengths */
55191
  this.ndist = 0;             /* number of distance code lengths */
55192
  this.have = 0;              /* number of code lengths in lens[] */
55193
  this.next = null;              /* next available space in codes[] */
55194
55195
  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
55196
  this.work = new utils.Buf16(288); /* work area for code table building */
55197
55198
  /*
55199
   because we don't have pointers in js, we use lencode and distcode directly
55200
   as buffers so we don't need codes
55201
  */
55202
  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
55203
  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
55204
  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
55205
  this.sane = 0;                   /* if false, allow invalid distance too far */
55206
  this.back = 0;                   /* bits back of last unprocessed length/lit */
55207
  this.was = 0;                    /* initial length of match */
55208
}
55209
55210
function inflateResetKeep(strm) {
55211
  var state;
55212
55213
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
55214
  state = strm.state;
55215
  strm.total_in = strm.total_out = state.total = 0;
55216
  strm.msg = ''; /*Z_NULL*/
55217
  if (state.wrap) {       /* to support ill-conceived Java test suite */
55218
    strm.adler = state.wrap & 1;
55219
  }
55220
  state.mode = HEAD;
55221
  state.last = 0;
55222
  state.havedict = 0;
55223
  state.dmax = 32768;
55224
  state.head = null/*Z_NULL*/;
55225
  state.hold = 0;
55226
  state.bits = 0;
55227
  //state.lencode = state.distcode = state.next = state.codes;
55228
  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
55229
  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
55230
55231
  state.sane = 1;
55232
  state.back = -1;
55233
  //Tracev((stderr, "inflate: reset\n"));
55234
  return Z_OK;
55235
}
55236
55237
function inflateReset(strm) {
55238
  var state;
55239
55240
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
55241
  state = strm.state;
55242
  state.wsize = 0;
55243
  state.whave = 0;
55244
  state.wnext = 0;
55245
  return inflateResetKeep(strm);
55246
55247
}
55248
55249
function inflateReset2(strm, windowBits) {
55250
  var wrap;
55251
  var state;
55252
55253
  /* get the state */
55254
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
55255
  state = strm.state;
55256
55257
  /* extract wrap request from windowBits parameter */
55258
  if (windowBits < 0) {
55259
    wrap = 0;
55260
    windowBits = -windowBits;
55261
  }
55262
  else {
55263
    wrap = (windowBits >> 4) + 1;
55264
    if (windowBits < 48) {
55265
      windowBits &= 15;
55266
    }
55267
  }
55268
55269
  /* set number of window bits, free window if different */
55270
  if (windowBits && (windowBits < 8 || windowBits > 15)) {
55271
    return Z_STREAM_ERROR;
55272
  }
55273
  if (state.window !== null && state.wbits !== windowBits) {
55274
    state.window = null;
55275
  }
55276
55277
  /* update state and reset the rest of it */
55278
  state.wrap = wrap;
55279
  state.wbits = windowBits;
55280
  return inflateReset(strm);
55281
}
55282
55283
function inflateInit2(strm, windowBits) {
55284
  var ret;
55285
  var state;
55286
55287
  if (!strm) { return Z_STREAM_ERROR; }
55288
  //strm.msg = Z_NULL;                 /* in case we return an error */
55289
55290
  state = new InflateState();
55291
55292
  //if (state === Z_NULL) return Z_MEM_ERROR;
55293
  //Tracev((stderr, "inflate: allocated\n"));
55294
  strm.state = state;
55295
  state.window = null/*Z_NULL*/;
55296
  ret = inflateReset2(strm, windowBits);
55297
  if (ret !== Z_OK) {
55298
    strm.state = null/*Z_NULL*/;
55299
  }
55300
  return ret;
55301
}
55302
55303
function inflateInit(strm) {
55304
  return inflateInit2(strm, DEF_WBITS);
55305
}
55306
55307
55308
/*
55309
 Return state with length and distance decoding tables and index sizes set to
55310
 fixed code decoding.  Normally this returns fixed tables from inffixed.h.
55311
 If BUILDFIXED is defined, then instead this routine builds the tables the
55312
 first time it's called, and returns those tables the first time and
55313
 thereafter.  This reduces the size of the code by about 2K bytes, in
55314
 exchange for a little execution time.  However, BUILDFIXED should not be
55315
 used for threaded applications, since the rewriting of the tables and virgin
55316
 may not be thread-safe.
55317
 */
55318
var virgin = true;
55319
55320
var lenfix, distfix; // We have no pointers in JS, so keep tables separate
55321
55322
function fixedtables(state) {
55323
  /* build fixed huffman tables if first call (may not be thread safe) */
55324
  if (virgin) {
55325
    var sym;
55326
55327
    lenfix = new utils.Buf32(512);
55328
    distfix = new utils.Buf32(32);
55329
55330
    /* literal/length table */
55331
    sym = 0;
55332
    while (sym < 144) { state.lens[sym++] = 8; }
55333
    while (sym < 256) { state.lens[sym++] = 9; }
55334
    while (sym < 280) { state.lens[sym++] = 7; }
55335
    while (sym < 288) { state.lens[sym++] = 8; }
55336
55337
    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
55338
55339
    /* distance table */
55340
    sym = 0;
55341
    while (sym < 32) { state.lens[sym++] = 5; }
55342
55343
    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
55344
55345
    /* do this just once */
55346
    virgin = false;
55347
  }
55348
55349
  state.lencode = lenfix;
55350
  state.lenbits = 9;
55351
  state.distcode = distfix;
55352
  state.distbits = 5;
55353
}
55354
55355
55356
/*
55357
 Update the window with the last wsize (normally 32K) bytes written before
55358
 returning.  If window does not exist yet, create it.  This is only called
55359
 when a window is already in use, or when output has been written during this
55360
 inflate call, but the end of the deflate stream has not been reached yet.
55361
 It is also called to create a window for dictionary data when a dictionary
55362
 is loaded.
55363
55364
 Providing output buffers larger than 32K to inflate() should provide a speed
55365
 advantage, since only the last 32K of output is copied to the sliding window
55366
 upon return from inflate(), and since all distances after the first 32K of
55367
 output will fall in the output data, making match copies simpler and faster.
55368
 The advantage may be dependent on the size of the processor's data caches.
55369
 */
55370
function updatewindow(strm, src, end, copy) {
55371
  var dist;
55372
  var state = strm.state;
55373
55374
  /* if it hasn't been done already, allocate space for the window */
55375
  if (state.window === null) {
55376
    state.wsize = 1 << state.wbits;
55377
    state.wnext = 0;
55378
    state.whave = 0;
55379
55380
    state.window = new utils.Buf8(state.wsize);
55381
  }
55382
55383
  /* copy state->wsize or less output bytes into the circular window */
55384
  if (copy >= state.wsize) {
55385
    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
55386
    state.wnext = 0;
55387
    state.whave = state.wsize;
55388
  }
55389
  else {
55390
    dist = state.wsize - state.wnext;
55391
    if (dist > copy) {
55392
      dist = copy;
55393
    }
55394
    //zmemcpy(state->window + state->wnext, end - copy, dist);
55395
    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
55396
    copy -= dist;
55397
    if (copy) {
55398
      //zmemcpy(state->window, end - copy, copy);
55399
      utils.arraySet(state.window, src, end - copy, copy, 0);
55400
      state.wnext = copy;
55401
      state.whave = state.wsize;
55402
    }
55403
    else {
55404
      state.wnext += dist;
55405
      if (state.wnext === state.wsize) { state.wnext = 0; }
55406
      if (state.whave < state.wsize) { state.whave += dist; }
55407
    }
55408
  }
55409
  return 0;
55410
}
55411
55412
function inflate(strm, flush) {
55413
  var state;
55414
  var input, output;          // input/output buffers
55415
  var next;                   /* next input INDEX */
55416
  var put;                    /* next output INDEX */
55417
  var have, left;             /* available input and output */
55418
  var hold;                   /* bit buffer */
55419
  var bits;                   /* bits in bit buffer */
55420
  var _in, _out;              /* save starting available input and output */
55421
  var copy;                   /* number of stored or match bytes to copy */
55422
  var from;                   /* where to copy match bytes from */
55423
  var from_source;
55424
  var here = 0;               /* current decoding table entry */
55425
  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
55426
  //var last;                   /* parent table entry */
55427
  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
55428
  var len;                    /* length to copy for repeats, bits to drop */
55429
  var ret;                    /* return code */
55430
  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
55431
  var opts;
55432
55433
  var n; // temporary var for NEED_BITS
55434
55435
  var order = /* permutation of code lengths */
55436
    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
55437
55438
55439
  if (!strm || !strm.state || !strm.output ||
55440
      (!strm.input && strm.avail_in !== 0)) {
55441
    return Z_STREAM_ERROR;
55442
  }
55443
55444
  state = strm.state;
55445
  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
55446
55447
55448
  //--- LOAD() ---
55449
  put = strm.next_out;
55450
  output = strm.output;
55451
  left = strm.avail_out;
55452
  next = strm.next_in;
55453
  input = strm.input;
55454
  have = strm.avail_in;
55455
  hold = state.hold;
55456
  bits = state.bits;
55457
  //---
55458
55459
  _in = have;
55460
  _out = left;
55461
  ret = Z_OK;
55462
55463
  inf_leave: // goto emulation
55464
  for (;;) {
55465
    switch (state.mode) {
55466
      case HEAD:
55467
        if (state.wrap === 0) {
55468
          state.mode = TYPEDO;
55469
          break;
55470
        }
55471
        //=== NEEDBITS(16);
55472
        while (bits < 16) {
55473
          if (have === 0) { break inf_leave; }
55474
          have--;
55475
          hold += input[next++] << bits;
55476
          bits += 8;
55477
        }
55478
        //===//
55479
        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
55480
          state.check = 0/*crc32(0L, Z_NULL, 0)*/;
55481
          //=== CRC2(state.check, hold);
55482
          hbuf[0] = hold & 0xff;
55483
          hbuf[1] = (hold >>> 8) & 0xff;
55484
          state.check = crc32(state.check, hbuf, 2, 0);
55485
          //===//
55486
55487
          //=== INITBITS();
55488
          hold = 0;
55489
          bits = 0;
55490
          //===//
55491
          state.mode = FLAGS;
55492
          break;
55493
        }
55494
        state.flags = 0;           /* expect zlib header */
55495
        if (state.head) {
55496
          state.head.done = false;
55497
        }
55498
        if (!(state.wrap & 1) ||   /* check if zlib header allowed */
55499
          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
55500
          strm.msg = 'incorrect header check';
55501
          state.mode = BAD;
55502
          break;
55503
        }
55504
        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
55505
          strm.msg = 'unknown compression method';
55506
          state.mode = BAD;
55507
          break;
55508
        }
55509
        //--- DROPBITS(4) ---//
55510
        hold >>>= 4;
55511
        bits -= 4;
55512
        //---//
55513
        len = (hold & 0x0f)/*BITS(4)*/ + 8;
55514
        if (state.wbits === 0) {
55515
          state.wbits = len;
55516
        }
55517
        else if (len > state.wbits) {
55518
          strm.msg = 'invalid window size';
55519
          state.mode = BAD;
55520
          break;
55521
        }
55522
        state.dmax = 1 << len;
55523
        //Tracev((stderr, "inflate:   zlib header ok\n"));
55524
        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
55525
        state.mode = hold & 0x200 ? DICTID : TYPE;
55526
        //=== INITBITS();
55527
        hold = 0;
55528
        bits = 0;
55529
        //===//
55530
        break;
55531
      case FLAGS:
55532
        //=== NEEDBITS(16); */
55533
        while (bits < 16) {
55534
          if (have === 0) { break inf_leave; }
55535
          have--;
55536
          hold += input[next++] << bits;
55537
          bits += 8;
55538
        }
55539
        //===//
55540
        state.flags = hold;
55541
        if ((state.flags & 0xff) !== Z_DEFLATED) {
55542
          strm.msg = 'unknown compression method';
55543
          state.mode = BAD;
55544
          break;
55545
        }
55546
        if (state.flags & 0xe000) {
55547
          strm.msg = 'unknown header flags set';
55548
          state.mode = BAD;
55549
          break;
55550
        }
55551
        if (state.head) {
55552
          state.head.text = ((hold >> 8) & 1);
55553
        }
55554
        if (state.flags & 0x0200) {
55555
          //=== CRC2(state.check, hold);
55556
          hbuf[0] = hold & 0xff;
55557
          hbuf[1] = (hold >>> 8) & 0xff;
55558
          state.check = crc32(state.check, hbuf, 2, 0);
55559
          //===//
55560
        }
55561
        //=== INITBITS();
55562
        hold = 0;
55563
        bits = 0;
55564
        //===//
55565
        state.mode = TIME;
55566
        /* falls through */
55567
      case TIME:
55568
        //=== NEEDBITS(32); */
55569
        while (bits < 32) {
55570
          if (have === 0) { break inf_leave; }
55571
          have--;
55572
          hold += input[next++] << bits;
55573
          bits += 8;
55574
        }
55575
        //===//
55576
        if (state.head) {
55577
          state.head.time = hold;
55578
        }
55579
        if (state.flags & 0x0200) {
55580
          //=== CRC4(state.check, hold)
55581
          hbuf[0] = hold & 0xff;
55582
          hbuf[1] = (hold >>> 8) & 0xff;
55583
          hbuf[2] = (hold >>> 16) & 0xff;
55584
          hbuf[3] = (hold >>> 24) & 0xff;
55585
          state.check = crc32(state.check, hbuf, 4, 0);
55586
          //===
55587
        }
55588
        //=== INITBITS();
55589
        hold = 0;
55590
        bits = 0;
55591
        //===//
55592
        state.mode = OS;
55593
        /* falls through */
55594
      case OS:
55595
        //=== NEEDBITS(16); */
55596
        while (bits < 16) {
55597
          if (have === 0) { break inf_leave; }
55598
          have--;
55599
          hold += input[next++] << bits;
55600
          bits += 8;
55601
        }
55602
        //===//
55603
        if (state.head) {
55604
          state.head.xflags = (hold & 0xff);
55605
          state.head.os = (hold >> 8);
55606
        }
55607
        if (state.flags & 0x0200) {
55608
          //=== CRC2(state.check, hold);
55609
          hbuf[0] = hold & 0xff;
55610
          hbuf[1] = (hold >>> 8) & 0xff;
55611
          state.check = crc32(state.check, hbuf, 2, 0);
55612
          //===//
55613
        }
55614
        //=== INITBITS();
55615
        hold = 0;
55616
        bits = 0;
55617
        //===//
55618
        state.mode = EXLEN;
55619
        /* falls through */
55620
      case EXLEN:
55621
        if (state.flags & 0x0400) {
55622
          //=== NEEDBITS(16); */
55623
          while (bits < 16) {
55624
            if (have === 0) { break inf_leave; }
55625
            have--;
55626
            hold += input[next++] << bits;
55627
            bits += 8;
55628
          }
55629
          //===//
55630
          state.length = hold;
55631
          if (state.head) {
55632
            state.head.extra_len = hold;
55633
          }
55634
          if (state.flags & 0x0200) {
55635
            //=== CRC2(state.check, hold);
55636
            hbuf[0] = hold & 0xff;
55637
            hbuf[1] = (hold >>> 8) & 0xff;
55638
            state.check = crc32(state.check, hbuf, 2, 0);
55639
            //===//
55640
          }
55641
          //=== INITBITS();
55642
          hold = 0;
55643
          bits = 0;
55644
          //===//
55645
        }
55646
        else if (state.head) {
55647
          state.head.extra = null/*Z_NULL*/;
55648
        }
55649
        state.mode = EXTRA;
55650
        /* falls through */
55651
      case EXTRA:
55652
        if (state.flags & 0x0400) {
55653
          copy = state.length;
55654
          if (copy > have) { copy = have; }
55655
          if (copy) {
55656
            if (state.head) {
55657
              len = state.head.extra_len - state.length;
55658
              if (!state.head.extra) {
55659
                // Use untyped array for more convenient processing later
55660
                state.head.extra = new Array(state.head.extra_len);
55661
              }
55662
              utils.arraySet(
55663
                state.head.extra,
55664
                input,
55665
                next,
55666
                // extra field is limited to 65536 bytes
55667
                // - no need for additional size check
55668
                copy,
55669
                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
55670
                len
55671
              );
55672
              //zmemcpy(state.head.extra + len, next,
55673
              //        len + copy > state.head.extra_max ?
55674
              //        state.head.extra_max - len : copy);
55675
            }
55676
            if (state.flags & 0x0200) {
55677
              state.check = crc32(state.check, input, copy, next);
55678
            }
55679
            have -= copy;
55680
            next += copy;
55681
            state.length -= copy;
55682
          }
55683
          if (state.length) { break inf_leave; }
55684
        }
55685
        state.length = 0;
55686
        state.mode = NAME;
55687
        /* falls through */
55688
      case NAME:
55689
        if (state.flags & 0x0800) {
55690
          if (have === 0) { break inf_leave; }
55691
          copy = 0;
55692
          do {
55693
            // TODO: 2 or 1 bytes?
55694
            len = input[next + copy++];
55695
            /* use constant limit because in js we should not preallocate memory */
55696
            if (state.head && len &&
55697
                (state.length < 65536 /*state.head.name_max*/)) {
55698
              state.head.name += String.fromCharCode(len);
55699
            }
55700
          } while (len && copy < have);
55701
55702
          if (state.flags & 0x0200) {
55703
            state.check = crc32(state.check, input, copy, next);
55704
          }
55705
          have -= copy;
55706
          next += copy;
55707
          if (len) { break inf_leave; }
55708
        }
55709
        else if (state.head) {
55710
          state.head.name = null;
55711
        }
55712
        state.length = 0;
55713
        state.mode = COMMENT;
55714
        /* falls through */
55715
      case COMMENT:
55716
        if (state.flags & 0x1000) {
55717
          if (have === 0) { break inf_leave; }
55718
          copy = 0;
55719
          do {
55720
            len = input[next + copy++];
55721
            /* use constant limit because in js we should not preallocate memory */
55722
            if (state.head && len &&
55723
                (state.length < 65536 /*state.head.comm_max*/)) {
55724
              state.head.comment += String.fromCharCode(len);
55725
            }
55726
          } while (len && copy < have);
55727
          if (state.flags & 0x0200) {
55728
            state.check = crc32(state.check, input, copy, next);
55729
          }
55730
          have -= copy;
55731
          next += copy;
55732
          if (len) { break inf_leave; }
55733
        }
55734
        else if (state.head) {
55735
          state.head.comment = null;
55736
        }
55737
        state.mode = HCRC;
55738
        /* falls through */
55739
      case HCRC:
55740
        if (state.flags & 0x0200) {
55741
          //=== NEEDBITS(16); */
55742
          while (bits < 16) {
55743
            if (have === 0) { break inf_leave; }
55744
            have--;
55745
            hold += input[next++] << bits;
55746
            bits += 8;
55747
          }
55748
          //===//
55749
          if (hold !== (state.check & 0xffff)) {
55750
            strm.msg = 'header crc mismatch';
55751
            state.mode = BAD;
55752
            break;
55753
          }
55754
          //=== INITBITS();
55755
          hold = 0;
55756
          bits = 0;
55757
          //===//
55758
        }
55759
        if (state.head) {
55760
          state.head.hcrc = ((state.flags >> 9) & 1);
55761
          state.head.done = true;
55762
        }
55763
        strm.adler = state.check = 0;
55764
        state.mode = TYPE;
55765
        break;
55766
      case DICTID:
55767
        //=== NEEDBITS(32); */
55768
        while (bits < 32) {
55769
          if (have === 0) { break inf_leave; }
55770
          have--;
55771
          hold += input[next++] << bits;
55772
          bits += 8;
55773
        }
55774
        //===//
55775
        strm.adler = state.check = zswap32(hold);
55776
        //=== INITBITS();
55777
        hold = 0;
55778
        bits = 0;
55779
        //===//
55780
        state.mode = DICT;
55781
        /* falls through */
55782
      case DICT:
55783
        if (state.havedict === 0) {
55784
          //--- RESTORE() ---
55785
          strm.next_out = put;
55786
          strm.avail_out = left;
55787
          strm.next_in = next;
55788
          strm.avail_in = have;
55789
          state.hold = hold;
55790
          state.bits = bits;
55791
          //---
55792
          return Z_NEED_DICT;
55793
        }
55794
        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
55795
        state.mode = TYPE;
55796
        /* falls through */
55797
      case TYPE:
55798
        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
55799
        /* falls through */
55800
      case TYPEDO:
55801
        if (state.last) {
55802
          //--- BYTEBITS() ---//
55803
          hold >>>= bits & 7;
55804
          bits -= bits & 7;
55805
          //---//
55806
          state.mode = CHECK;
55807
          break;
55808
        }
55809
        //=== NEEDBITS(3); */
55810
        while (bits < 3) {
55811
          if (have === 0) { break inf_leave; }
55812
          have--;
55813
          hold += input[next++] << bits;
55814
          bits += 8;
55815
        }
55816
        //===//
55817
        state.last = (hold & 0x01)/*BITS(1)*/;
55818
        //--- DROPBITS(1) ---//
55819
        hold >>>= 1;
55820
        bits -= 1;
55821
        //---//
55822
55823
        switch ((hold & 0x03)/*BITS(2)*/) {
55824
          case 0:                             /* stored block */
55825
            //Tracev((stderr, "inflate:     stored block%s\n",
55826
            //        state.last ? " (last)" : ""));
55827
            state.mode = STORED;
55828
            break;
55829
          case 1:                             /* fixed block */
55830
            fixedtables(state);
55831
            //Tracev((stderr, "inflate:     fixed codes block%s\n",
55832
            //        state.last ? " (last)" : ""));
55833
            state.mode = LEN_;             /* decode codes */
55834
            if (flush === Z_TREES) {
55835
              //--- DROPBITS(2) ---//
55836
              hold >>>= 2;
55837
              bits -= 2;
55838
              //---//
55839
              break inf_leave;
55840
            }
55841
            break;
55842
          case 2:                             /* dynamic block */
55843
            //Tracev((stderr, "inflate:     dynamic codes block%s\n",
55844
            //        state.last ? " (last)" : ""));
55845
            state.mode = TABLE;
55846
            break;
55847
          case 3:
55848
            strm.msg = 'invalid block type';
55849
            state.mode = BAD;
55850
        }
55851
        //--- DROPBITS(2) ---//
55852
        hold >>>= 2;
55853
        bits -= 2;
55854
        //---//
55855
        break;
55856
      case STORED:
55857
        //--- BYTEBITS() ---// /* go to byte boundary */
55858
        hold >>>= bits & 7;
55859
        bits -= bits & 7;
55860
        //---//
55861
        //=== NEEDBITS(32); */
55862
        while (bits < 32) {
55863
          if (have === 0) { break inf_leave; }
55864
          have--;
55865
          hold += input[next++] << bits;
55866
          bits += 8;
55867
        }
55868
        //===//
55869
        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
55870
          strm.msg = 'invalid stored block lengths';
55871
          state.mode = BAD;
55872
          break;
55873
        }
55874
        state.length = hold & 0xffff;
55875
        //Tracev((stderr, "inflate:       stored length %u\n",
55876
        //        state.length));
55877
        //=== INITBITS();
55878
        hold = 0;
55879
        bits = 0;
55880
        //===//
55881
        state.mode = COPY_;
55882
        if (flush === Z_TREES) { break inf_leave; }
55883
        /* falls through */
55884
      case COPY_:
55885
        state.mode = COPY;
55886
        /* falls through */
55887
      case COPY:
55888
        copy = state.length;
55889
        if (copy) {
55890
          if (copy > have) { copy = have; }
55891
          if (copy > left) { copy = left; }
55892
          if (copy === 0) { break inf_leave; }
55893
          //--- zmemcpy(put, next, copy); ---
55894
          utils.arraySet(output, input, next, copy, put);
55895
          //---//
55896
          have -= copy;
55897
          next += copy;
55898
          left -= copy;
55899
          put += copy;
55900
          state.length -= copy;
55901
          break;
55902
        }
55903
        //Tracev((stderr, "inflate:       stored end\n"));
55904
        state.mode = TYPE;
55905
        break;
55906
      case TABLE:
55907
        //=== NEEDBITS(14); */
55908
        while (bits < 14) {
55909
          if (have === 0) { break inf_leave; }
55910
          have--;
55911
          hold += input[next++] << bits;
55912
          bits += 8;
55913
        }
55914
        //===//
55915
        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
55916
        //--- DROPBITS(5) ---//
55917
        hold >>>= 5;
55918
        bits -= 5;
55919
        //---//
55920
        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
55921
        //--- DROPBITS(5) ---//
55922
        hold >>>= 5;
55923
        bits -= 5;
55924
        //---//
55925
        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
55926
        //--- DROPBITS(4) ---//
55927
        hold >>>= 4;
55928
        bits -= 4;
55929
        //---//
55930
//#ifndef PKZIP_BUG_WORKAROUND
55931
        if (state.nlen > 286 || state.ndist > 30) {
55932
          strm.msg = 'too many length or distance symbols';
55933
          state.mode = BAD;
55934
          break;
55935
        }
55936
//#endif
55937
        //Tracev((stderr, "inflate:       table sizes ok\n"));
55938
        state.have = 0;
55939
        state.mode = LENLENS;
55940
        /* falls through */
55941
      case LENLENS:
55942
        while (state.have < state.ncode) {
55943
          //=== NEEDBITS(3);
55944
          while (bits < 3) {
55945
            if (have === 0) { break inf_leave; }
55946
            have--;
55947
            hold += input[next++] << bits;
55948
            bits += 8;
55949
          }
55950
          //===//
55951
          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
55952
          //--- DROPBITS(3) ---//
55953
          hold >>>= 3;
55954
          bits -= 3;
55955
          //---//
55956
        }
55957
        while (state.have < 19) {
55958
          state.lens[order[state.have++]] = 0;
55959
        }
55960
        // We have separate tables & no pointers. 2 commented lines below not needed.
55961
        //state.next = state.codes;
55962
        //state.lencode = state.next;
55963
        // Switch to use dynamic table
55964
        state.lencode = state.lendyn;
55965
        state.lenbits = 7;
55966
55967
        opts = { bits: state.lenbits };
55968
        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
55969
        state.lenbits = opts.bits;
55970
55971
        if (ret) {
55972
          strm.msg = 'invalid code lengths set';
55973
          state.mode = BAD;
55974
          break;
55975
        }
55976
        //Tracev((stderr, "inflate:       code lengths ok\n"));
55977
        state.have = 0;
55978
        state.mode = CODELENS;
55979
        /* falls through */
55980
      case CODELENS:
55981
        while (state.have < state.nlen + state.ndist) {
55982
          for (;;) {
55983
            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
55984
            here_bits = here >>> 24;
55985
            here_op = (here >>> 16) & 0xff;
55986
            here_val = here & 0xffff;
55987
55988
            if ((here_bits) <= bits) { break; }
55989
            //--- PULLBYTE() ---//
55990
            if (have === 0) { break inf_leave; }
55991
            have--;
55992
            hold += input[next++] << bits;
55993
            bits += 8;
55994
            //---//
55995
          }
55996
          if (here_val < 16) {
55997
            //--- DROPBITS(here.bits) ---//
55998
            hold >>>= here_bits;
55999
            bits -= here_bits;
56000
            //---//
56001
            state.lens[state.have++] = here_val;
56002
          }
56003
          else {
56004
            if (here_val === 16) {
56005
              //=== NEEDBITS(here.bits + 2);
56006
              n = here_bits + 2;
56007
              while (bits < n) {
56008
                if (have === 0) { break inf_leave; }
56009
                have--;
56010
                hold += input[next++] << bits;
56011
                bits += 8;
56012
              }
56013
              //===//
56014
              //--- DROPBITS(here.bits) ---//
56015
              hold >>>= here_bits;
56016
              bits -= here_bits;
56017
              //---//
56018
              if (state.have === 0) {
56019
                strm.msg = 'invalid bit length repeat';
56020
                state.mode = BAD;
56021
                break;
56022
              }
56023
              len = state.lens[state.have - 1];
56024
              copy = 3 + (hold & 0x03);//BITS(2);
56025
              //--- DROPBITS(2) ---//
56026
              hold >>>= 2;
56027
              bits -= 2;
56028
              //---//
56029
            }
56030
            else if (here_val === 17) {
56031
              //=== NEEDBITS(here.bits + 3);
56032
              n = here_bits + 3;
56033
              while (bits < n) {
56034
                if (have === 0) { break inf_leave; }
56035
                have--;
56036
                hold += input[next++] << bits;
56037
                bits += 8;
56038
              }
56039
              //===//
56040
              //--- DROPBITS(here.bits) ---//
56041
              hold >>>= here_bits;
56042
              bits -= here_bits;
56043
              //---//
56044
              len = 0;
56045
              copy = 3 + (hold & 0x07);//BITS(3);
56046
              //--- DROPBITS(3) ---//
56047
              hold >>>= 3;
56048
              bits -= 3;
56049
              //---//
56050
            }
56051
            else {
56052
              //=== NEEDBITS(here.bits + 7);
56053
              n = here_bits + 7;
56054
              while (bits < n) {
56055
                if (have === 0) { break inf_leave; }
56056
                have--;
56057
                hold += input[next++] << bits;
56058
                bits += 8;
56059
              }
56060
              //===//
56061
              //--- DROPBITS(here.bits) ---//
56062
              hold >>>= here_bits;
56063
              bits -= here_bits;
56064
              //---//
56065
              len = 0;
56066
              copy = 11 + (hold & 0x7f);//BITS(7);
56067
              //--- DROPBITS(7) ---//
56068
              hold >>>= 7;
56069
              bits -= 7;
56070
              //---//
56071
            }
56072
            if (state.have + copy > state.nlen + state.ndist) {
56073
              strm.msg = 'invalid bit length repeat';
56074
              state.mode = BAD;
56075
              break;
56076
            }
56077
            while (copy--) {
56078
              state.lens[state.have++] = len;
56079
            }
56080
          }
56081
        }
56082
56083
        /* handle error breaks in while */
56084
        if (state.mode === BAD) { break; }
56085
56086
        /* check for end-of-block code (better have one) */
56087
        if (state.lens[256] === 0) {
56088
          strm.msg = 'invalid code -- missing end-of-block';
56089
          state.mode = BAD;
56090
          break;
56091
        }
56092
56093
        /* build code tables -- note: do not change the lenbits or distbits
56094
           values here (9 and 6) without reading the comments in inftrees.h
56095
           concerning the ENOUGH constants, which depend on those values */
56096
        state.lenbits = 9;
56097
56098
        opts = { bits: state.lenbits };
56099
        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
56100
        // We have separate tables & no pointers. 2 commented lines below not needed.
56101
        // state.next_index = opts.table_index;
56102
        state.lenbits = opts.bits;
56103
        // state.lencode = state.next;
56104
56105
        if (ret) {
56106
          strm.msg = 'invalid literal/lengths set';
56107
          state.mode = BAD;
56108
          break;
56109
        }
56110
56111
        state.distbits = 6;
56112
        //state.distcode.copy(state.codes);
56113
        // Switch to use dynamic table
56114
        state.distcode = state.distdyn;
56115
        opts = { bits: state.distbits };
56116
        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
56117
        // We have separate tables & no pointers. 2 commented lines below not needed.
56118
        // state.next_index = opts.table_index;
56119
        state.distbits = opts.bits;
56120
        // state.distcode = state.next;
56121
56122
        if (ret) {
56123
          strm.msg = 'invalid distances set';
56124
          state.mode = BAD;
56125
          break;
56126
        }
56127
        //Tracev((stderr, 'inflate:       codes ok\n'));
56128
        state.mode = LEN_;
56129
        if (flush === Z_TREES) { break inf_leave; }
56130
        /* falls through */
56131
      case LEN_:
56132
        state.mode = LEN;
56133
        /* falls through */
56134
      case LEN:
56135
        if (have >= 6 && left >= 258) {
56136
          //--- RESTORE() ---
56137
          strm.next_out = put;
56138
          strm.avail_out = left;
56139
          strm.next_in = next;
56140
          strm.avail_in = have;
56141
          state.hold = hold;
56142
          state.bits = bits;
56143
          //---
56144
          inflate_fast(strm, _out);
56145
          //--- LOAD() ---
56146
          put = strm.next_out;
56147
          output = strm.output;
56148
          left = strm.avail_out;
56149
          next = strm.next_in;
56150
          input = strm.input;
56151
          have = strm.avail_in;
56152
          hold = state.hold;
56153
          bits = state.bits;
56154
          //---
56155
56156
          if (state.mode === TYPE) {
56157
            state.back = -1;
56158
          }
56159
          break;
56160
        }
56161
        state.back = 0;
56162
        for (;;) {
56163
          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
56164
          here_bits = here >>> 24;
56165
          here_op = (here >>> 16) & 0xff;
56166
          here_val = here & 0xffff;
56167
56168
          if (here_bits <= bits) { break; }
56169
          //--- PULLBYTE() ---//
56170
          if (have === 0) { break inf_leave; }
56171
          have--;
56172
          hold += input[next++] << bits;
56173
          bits += 8;
56174
          //---//
56175
        }
56176
        if (here_op && (here_op & 0xf0) === 0) {
56177
          last_bits = here_bits;
56178
          last_op = here_op;
56179
          last_val = here_val;
56180
          for (;;) {
56181
            here = state.lencode[last_val +
56182
                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
56183
            here_bits = here >>> 24;
56184
            here_op = (here >>> 16) & 0xff;
56185
            here_val = here & 0xffff;
56186
56187
            if ((last_bits + here_bits) <= bits) { break; }
56188
            //--- PULLBYTE() ---//
56189
            if (have === 0) { break inf_leave; }
56190
            have--;
56191
            hold += input[next++] << bits;
56192
            bits += 8;
56193
            //---//
56194
          }
56195
          //--- DROPBITS(last.bits) ---//
56196
          hold >>>= last_bits;
56197
          bits -= last_bits;
56198
          //---//
56199
          state.back += last_bits;
56200
        }
56201
        //--- DROPBITS(here.bits) ---//
56202
        hold >>>= here_bits;
56203
        bits -= here_bits;
56204
        //---//
56205
        state.back += here_bits;
56206
        state.length = here_val;
56207
        if (here_op === 0) {
56208
          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
56209
          //        "inflate:         literal '%c'\n" :
56210
          //        "inflate:         literal 0x%02x\n", here.val));
56211
          state.mode = LIT;
56212
          break;
56213
        }
56214
        if (here_op & 32) {
56215
          //Tracevv((stderr, "inflate:         end of block\n"));
56216
          state.back = -1;
56217
          state.mode = TYPE;
56218
          break;
56219
        }
56220
        if (here_op & 64) {
56221
          strm.msg = 'invalid literal/length code';
56222
          state.mode = BAD;
56223
          break;
56224
        }
56225
        state.extra = here_op & 15;
56226
        state.mode = LENEXT;
56227
        /* falls through */
56228
      case LENEXT:
56229
        if (state.extra) {
56230
          //=== NEEDBITS(state.extra);
56231
          n = state.extra;
56232
          while (bits < n) {
56233
            if (have === 0) { break inf_leave; }
56234
            have--;
56235
            hold += input[next++] << bits;
56236
            bits += 8;
56237
          }
56238
          //===//
56239
          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
56240
          //--- DROPBITS(state.extra) ---//
56241
          hold >>>= state.extra;
56242
          bits -= state.extra;
56243
          //---//
56244
          state.back += state.extra;
56245
        }
56246
        //Tracevv((stderr, "inflate:         length %u\n", state.length));
56247
        state.was = state.length;
56248
        state.mode = DIST;
56249
        /* falls through */
56250
      case DIST:
56251
        for (;;) {
56252
          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
56253
          here_bits = here >>> 24;
56254
          here_op = (here >>> 16) & 0xff;
56255
          here_val = here & 0xffff;
56256
56257
          if ((here_bits) <= bits) { break; }
56258
          //--- PULLBYTE() ---//
56259
          if (have === 0) { break inf_leave; }
56260
          have--;
56261
          hold += input[next++] << bits;
56262
          bits += 8;
56263
          //---//
56264
        }
56265
        if ((here_op & 0xf0) === 0) {
56266
          last_bits = here_bits;
56267
          last_op = here_op;
56268
          last_val = here_val;
56269
          for (;;) {
56270
            here = state.distcode[last_val +
56271
                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
56272
            here_bits = here >>> 24;
56273
            here_op = (here >>> 16) & 0xff;
56274
            here_val = here & 0xffff;
56275
56276
            if ((last_bits + here_bits) <= bits) { break; }
56277
            //--- PULLBYTE() ---//
56278
            if (have === 0) { break inf_leave; }
56279
            have--;
56280
            hold += input[next++] << bits;
56281
            bits += 8;
56282
            //---//
56283
          }
56284
          //--- DROPBITS(last.bits) ---//
56285
          hold >>>= last_bits;
56286
          bits -= last_bits;
56287
          //---//
56288
          state.back += last_bits;
56289
        }
56290
        //--- DROPBITS(here.bits) ---//
56291
        hold >>>= here_bits;
56292
        bits -= here_bits;
56293
        //---//
56294
        state.back += here_bits;
56295
        if (here_op & 64) {
56296
          strm.msg = 'invalid distance code';
56297
          state.mode = BAD;
56298
          break;
56299
        }
56300
        state.offset = here_val;
56301
        state.extra = (here_op) & 15;
56302
        state.mode = DISTEXT;
56303
        /* falls through */
56304
      case DISTEXT:
56305
        if (state.extra) {
56306
          //=== NEEDBITS(state.extra);
56307
          n = state.extra;
56308
          while (bits < n) {
56309
            if (have === 0) { break inf_leave; }
56310
            have--;
56311
            hold += input[next++] << bits;
56312
            bits += 8;
56313
          }
56314
          //===//
56315
          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
56316
          //--- DROPBITS(state.extra) ---//
56317
          hold >>>= state.extra;
56318
          bits -= state.extra;
56319
          //---//
56320
          state.back += state.extra;
56321
        }
56322
//#ifdef INFLATE_STRICT
56323
        if (state.offset > state.dmax) {
56324
          strm.msg = 'invalid distance too far back';
56325
          state.mode = BAD;
56326
          break;
56327
        }
56328
//#endif
56329
        //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
56330
        state.mode = MATCH;
56331
        /* falls through */
56332
      case MATCH:
56333
        if (left === 0) { break inf_leave; }
56334
        copy = _out - left;
56335
        if (state.offset > copy) {         /* copy from window */
56336
          copy = state.offset - copy;
56337
          if (copy > state.whave) {
56338
            if (state.sane) {
56339
              strm.msg = 'invalid distance too far back';
56340
              state.mode = BAD;
56341
              break;
56342
            }
56343
// (!) This block is disabled in zlib defaults,
56344
// don't enable it for binary compatibility
56345
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
56346
//          Trace((stderr, "inflate.c too far\n"));
56347
//          copy -= state.whave;
56348
//          if (copy > state.length) { copy = state.length; }
56349
//          if (copy > left) { copy = left; }
56350
//          left -= copy;
56351
//          state.length -= copy;
56352
//          do {
56353
//            output[put++] = 0;
56354
//          } while (--copy);
56355
//          if (state.length === 0) { state.mode = LEN; }
56356
//          break;
56357
//#endif
56358
          }
56359
          if (copy > state.wnext) {
56360
            copy -= state.wnext;
56361
            from = state.wsize - copy;
56362
          }
56363
          else {
56364
            from = state.wnext - copy;
56365
          }
56366
          if (copy > state.length) { copy = state.length; }
56367
          from_source = state.window;
56368
        }
56369
        else {                              /* copy from output */
56370
          from_source = output;
56371
          from = put - state.offset;
56372
          copy = state.length;
56373
        }
56374
        if (copy > left) { copy = left; }
56375
        left -= copy;
56376
        state.length -= copy;
56377
        do {
56378
          output[put++] = from_source[from++];
56379
        } while (--copy);
56380
        if (state.length === 0) { state.mode = LEN; }
56381
        break;
56382
      case LIT:
56383
        if (left === 0) { break inf_leave; }
56384
        output[put++] = state.length;
56385
        left--;
56386
        state.mode = LEN;
56387
        break;
56388
      case CHECK:
56389
        if (state.wrap) {
56390
          //=== NEEDBITS(32);
56391
          while (bits < 32) {
56392
            if (have === 0) { break inf_leave; }
56393
            have--;
56394
            // Use '|' instead of '+' to make sure that result is signed
56395
            hold |= input[next++] << bits;
56396
            bits += 8;
56397
          }
56398
          //===//
56399
          _out -= left;
56400
          strm.total_out += _out;
56401
          state.total += _out;
56402
          if (_out) {
56403
            strm.adler = state.check =
56404
                /*UPDATE(state.check, put - _out, _out);*/
56405
                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
56406
56407
          }
56408
          _out = left;
56409
          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
56410
          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
56411
            strm.msg = 'incorrect data check';
56412
            state.mode = BAD;
56413
            break;
56414
          }
56415
          //=== INITBITS();
56416
          hold = 0;
56417
          bits = 0;
56418
          //===//
56419
          //Tracev((stderr, "inflate:   check matches trailer\n"));
56420
        }
56421
        state.mode = LENGTH;
56422
        /* falls through */
56423
      case LENGTH:
56424
        if (state.wrap && state.flags) {
56425
          //=== NEEDBITS(32);
56426
          while (bits < 32) {
56427
            if (have === 0) { break inf_leave; }
56428
            have--;
56429
            hold += input[next++] << bits;
56430
            bits += 8;
56431
          }
56432
          //===//
56433
          if (hold !== (state.total & 0xffffffff)) {
56434
            strm.msg = 'incorrect length check';
56435
            state.mode = BAD;
56436
            break;
56437
          }
56438
          //=== INITBITS();
56439
          hold = 0;
56440
          bits = 0;
56441
          //===//
56442
          //Tracev((stderr, "inflate:   length matches trailer\n"));
56443
        }
56444
        state.mode = DONE;
56445
        /* falls through */
56446
      case DONE:
56447
        ret = Z_STREAM_END;
56448
        break inf_leave;
56449
      case BAD:
56450
        ret = Z_DATA_ERROR;
56451
        break inf_leave;
56452
      case MEM:
56453
        return Z_MEM_ERROR;
56454
      case SYNC:
56455
        /* falls through */
56456
      default:
56457
        return Z_STREAM_ERROR;
56458
    }
56459
  }
56460
56461
  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
56462
56463
  /*
56464
     Return from inflate(), updating the total counts and the check value.
56465
     If there was no progress during the inflate() call, return a buffer
56466
     error.  Call updatewindow() to create and/or update the window state.
56467
     Note: a memory error from inflate() is non-recoverable.
56468
   */
56469
56470
  //--- RESTORE() ---
56471
  strm.next_out = put;
56472
  strm.avail_out = left;
56473
  strm.next_in = next;
56474
  strm.avail_in = have;
56475
  state.hold = hold;
56476
  state.bits = bits;
56477
  //---
56478
56479
  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
56480
                      (state.mode < CHECK || flush !== Z_FINISH))) {
56481
    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
56482
      state.mode = MEM;
56483
      return Z_MEM_ERROR;
56484
    }
56485
  }
56486
  _in -= strm.avail_in;
56487
  _out -= strm.avail_out;
56488
  strm.total_in += _in;
56489
  strm.total_out += _out;
56490
  state.total += _out;
56491
  if (state.wrap && _out) {
56492
    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
56493
      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
56494
  }
56495
  strm.data_type = state.bits + (state.last ? 64 : 0) +
56496
                    (state.mode === TYPE ? 128 : 0) +
56497
                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
56498
  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
56499
    ret = Z_BUF_ERROR;
56500
  }
56501
  return ret;
56502
}
56503
56504
function inflateEnd(strm) {
56505
56506
  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
56507
    return Z_STREAM_ERROR;
56508
  }
56509
56510
  var state = strm.state;
56511
  if (state.window) {
56512
    state.window = null;
56513
  }
56514
  strm.state = null;
56515
  return Z_OK;
56516
}
56517
56518
function inflateGetHeader(strm, head) {
56519
  var state;
56520
56521
  /* check state */
56522
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
56523
  state = strm.state;
56524
  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
56525
56526
  /* save header structure */
56527
  state.head = head;
56528
  head.done = false;
56529
  return Z_OK;
56530
}
56531
56532
function inflateSetDictionary(strm, dictionary) {
56533
  var dictLength = dictionary.length;
56534
56535
  var state;
56536
  var dictid;
56537
  var ret;
56538
56539
  /* check state */
56540
  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
56541
  state = strm.state;
56542
56543
  if (state.wrap !== 0 && state.mode !== DICT) {
56544
    return Z_STREAM_ERROR;
56545
  }
56546
56547
  /* check for correct dictionary identifier */
56548
  if (state.mode === DICT) {
56549
    dictid = 1; /* adler32(0, null, 0)*/
56550
    /* dictid = adler32(dictid, dictionary, dictLength); */
56551
    dictid = adler32(dictid, dictionary, dictLength, 0);
56552
    if (dictid !== state.check) {
56553
      return Z_DATA_ERROR;
56554
    }
56555
  }
56556
  /* copy dictionary to window using updatewindow(), which will amend the
56557
   existing dictionary if appropriate */
56558
  ret = updatewindow(strm, dictionary, dictLength, dictLength);
56559
  if (ret) {
56560
    state.mode = MEM;
56561
    return Z_MEM_ERROR;
56562
  }
56563
  state.havedict = 1;
56564
  // Tracev((stderr, "inflate:   dictionary set\n"));
56565
  return Z_OK;
56566
}
56567
56568
exports.inflateReset = inflateReset;
56569
exports.inflateReset2 = inflateReset2;
56570
exports.inflateResetKeep = inflateResetKeep;
56571
exports.inflateInit = inflateInit;
56572
exports.inflateInit2 = inflateInit2;
56573
exports.inflate = inflate;
56574
exports.inflateEnd = inflateEnd;
56575
exports.inflateGetHeader = inflateGetHeader;
56576
exports.inflateSetDictionary = inflateSetDictionary;
56577
exports.inflateInfo = 'pako inflate (from Nodeca project)';
56578
56579
/* Not implemented
56580
exports.inflateCopy = inflateCopy;
56581
exports.inflateGetDictionary = inflateGetDictionary;
56582
exports.inflateMark = inflateMark;
56583
exports.inflatePrime = inflatePrime;
56584
exports.inflateSync = inflateSync;
56585
exports.inflateSyncPoint = inflateSyncPoint;
56586
exports.inflateUndermine = inflateUndermine;
56587
*/
56588
56589
56590
/***/ }),
56591
56592
/***/ 9241:
56593
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
56594
56595
"use strict";
56596
56597
56598
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
56599
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
56600
//
56601
// This software is provided 'as-is', without any express or implied
56602
// warranty. In no event will the authors be held liable for any damages
56603
// arising from the use of this software.
56604
//
56605
// Permission is granted to anyone to use this software for any purpose,
56606
// including commercial applications, and to alter it and redistribute it
56607
// freely, subject to the following restrictions:
56608
//
56609
// 1. The origin of this software must not be misrepresented; you must not
56610
//   claim that you wrote the original software. If you use this software
56611
//   in a product, an acknowledgment in the product documentation would be
56612
//   appreciated but is not required.
56613
// 2. Altered source versions must be plainly marked as such, and must not be
56614
//   misrepresented as being the original software.
56615
// 3. This notice may not be removed or altered from any source distribution.
56616
56617
var utils = __webpack_require__(4236);
56618
56619
var MAXBITS = 15;
56620
var ENOUGH_LENS = 852;
56621
var ENOUGH_DISTS = 592;
56622
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
56623
56624
var CODES = 0;
56625
var LENS = 1;
56626
var DISTS = 2;
56627
56628
var lbase = [ /* Length codes 257..285 base */
56629
  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
56630
  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
56631
];
56632
56633
var lext = [ /* Length codes 257..285 extra */
56634
  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
56635
  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
56636
];
56637
56638
var dbase = [ /* Distance codes 0..29 base */
56639
  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
56640
  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
56641
  8193, 12289, 16385, 24577, 0, 0
56642
];
56643
56644
var dext = [ /* Distance codes 0..29 extra */
56645
  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
56646
  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
56647
  28, 28, 29, 29, 64, 64
56648
];
56649
56650
module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
56651
{
56652
  var bits = opts.bits;
56653
      //here = opts.here; /* table entry for duplication */
56654
56655
  var len = 0;               /* a code's length in bits */
56656
  var sym = 0;               /* index of code symbols */
56657
  var min = 0, max = 0;          /* minimum and maximum code lengths */
56658
  var root = 0;              /* number of index bits for root table */
56659
  var curr = 0;              /* number of index bits for current table */
56660
  var drop = 0;              /* code bits to drop for sub-table */
56661
  var left = 0;                   /* number of prefix codes available */
56662
  var used = 0;              /* code entries in table used */
56663
  var huff = 0;              /* Huffman code */
56664
  var incr;              /* for incrementing code, index */
56665
  var fill;              /* index for replicating entries */
56666
  var low;               /* low bits for current root entry */
56667
  var mask;              /* mask for low root bits */
56668
  var next;             /* next available space in table */
56669
  var base = null;     /* base value table to use */
56670
  var base_index = 0;
56671
//  var shoextra;    /* extra bits table to use */
56672
  var end;                    /* use base and extra for symbol > end */
56673
  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
56674
  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
56675
  var extra = null;
56676
  var extra_index = 0;
56677
56678
  var here_bits, here_op, here_val;
56679
56680
  /*
56681
   Process a set of code lengths to create a canonical Huffman code.  The
56682
   code lengths are lens[0..codes-1].  Each length corresponds to the
56683
   symbols 0..codes-1.  The Huffman code is generated by first sorting the
56684
   symbols by length from short to long, and retaining the symbol order
56685
   for codes with equal lengths.  Then the code starts with all zero bits
56686
   for the first code of the shortest length, and the codes are integer
56687
   increments for the same length, and zeros are appended as the length
56688
   increases.  For the deflate format, these bits are stored backwards
56689
   from their more natural integer increment ordering, and so when the
56690
   decoding tables are built in the large loop below, the integer codes
56691
   are incremented backwards.
56692
56693
   This routine assumes, but does not check, that all of the entries in
56694
   lens[] are in the range 0..MAXBITS.  The caller must assure this.
56695
   1..MAXBITS is interpreted as that code length.  zero means that that
56696
   symbol does not occur in this code.
56697
56698
   The codes are sorted by computing a count of codes for each length,
56699
   creating from that a table of starting indices for each length in the
56700
   sorted table, and then entering the symbols in order in the sorted
56701
   table.  The sorted table is work[], with that space being provided by
56702
   the caller.
56703
56704
   The length counts are used for other purposes as well, i.e. finding
56705
   the minimum and maximum length codes, determining if there are any
56706
   codes at all, checking for a valid set of lengths, and looking ahead
56707
   at length counts to determine sub-table sizes when building the
56708
   decoding tables.
56709
   */
56710
56711
  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
56712
  for (len = 0; len <= MAXBITS; len++) {
56713
    count[len] = 0;
56714
  }
56715
  for (sym = 0; sym < codes; sym++) {
56716
    count[lens[lens_index + sym]]++;
56717
  }
56718
56719
  /* bound code lengths, force root to be within code lengths */
56720
  root = bits;
56721
  for (max = MAXBITS; max >= 1; max--) {
56722
    if (count[max] !== 0) { break; }
56723
  }
56724
  if (root > max) {
56725
    root = max;
56726
  }
56727
  if (max === 0) {                     /* no symbols to code at all */
56728
    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
56729
    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
56730
    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
56731
    table[table_index++] = (1 << 24) | (64 << 16) | 0;
56732
56733
56734
    //table.op[opts.table_index] = 64;
56735
    //table.bits[opts.table_index] = 1;
56736
    //table.val[opts.table_index++] = 0;
56737
    table[table_index++] = (1 << 24) | (64 << 16) | 0;
56738
56739
    opts.bits = 1;
56740
    return 0;     /* no symbols, but wait for decoding to report error */
56741
  }
56742
  for (min = 1; min < max; min++) {
56743
    if (count[min] !== 0) { break; }
56744
  }
56745
  if (root < min) {
56746
    root = min;
56747
  }
56748
56749
  /* check for an over-subscribed or incomplete set of lengths */
56750
  left = 1;
56751
  for (len = 1; len <= MAXBITS; len++) {
56752
    left <<= 1;
56753
    left -= count[len];
56754
    if (left < 0) {
56755
      return -1;
56756
    }        /* over-subscribed */
56757
  }
56758
  if (left > 0 && (type === CODES || max !== 1)) {
56759
    return -1;                      /* incomplete set */
56760
  }
56761
56762
  /* generate offsets into symbol table for each length for sorting */
56763
  offs[1] = 0;
56764
  for (len = 1; len < MAXBITS; len++) {
56765
    offs[len + 1] = offs[len] + count[len];
56766
  }
56767
56768
  /* sort symbols by length, by symbol order within each length */
56769
  for (sym = 0; sym < codes; sym++) {
56770
    if (lens[lens_index + sym] !== 0) {
56771
      work[offs[lens[lens_index + sym]]++] = sym;
56772
    }
56773
  }
56774
56775
  /*
56776
   Create and fill in decoding tables.  In this loop, the table being
56777
   filled is at next and has curr index bits.  The code being used is huff
56778
   with length len.  That code is converted to an index by dropping drop
56779
   bits off of the bottom.  For codes where len is less than drop + curr,
56780
   those top drop + curr - len bits are incremented through all values to
56781
   fill the table with replicated entries.
56782
56783
   root is the number of index bits for the root table.  When len exceeds
56784
   root, sub-tables are created pointed to by the root entry with an index
56785
   of the low root bits of huff.  This is saved in low to check for when a
56786
   new sub-table should be started.  drop is zero when the root table is
56787
   being filled, and drop is root when sub-tables are being filled.
56788
56789
   When a new sub-table is needed, it is necessary to look ahead in the
56790
   code lengths to determine what size sub-table is needed.  The length
56791
   counts are used for this, and so count[] is decremented as codes are
56792
   entered in the tables.
56793
56794
   used keeps track of how many table entries have been allocated from the
56795
   provided *table space.  It is checked for LENS and DIST tables against
56796
   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
56797
   the initial root table size constants.  See the comments in inftrees.h
56798
   for more information.
56799
56800
   sym increments through all symbols, and the loop terminates when
56801
   all codes of length max, i.e. all codes, have been processed.  This
56802
   routine permits incomplete codes, so another loop after this one fills
56803
   in the rest of the decoding tables with invalid code markers.
56804
   */
56805
56806
  /* set up for code type */
56807
  // poor man optimization - use if-else instead of switch,
56808
  // to avoid deopts in old v8
56809
  if (type === CODES) {
56810
    base = extra = work;    /* dummy value--not used */
56811
    end = 19;
56812
56813
  } else if (type === LENS) {
56814
    base = lbase;
56815
    base_index -= 257;
56816
    extra = lext;
56817
    extra_index -= 257;
56818
    end = 256;
56819
56820
  } else {                    /* DISTS */
56821
    base = dbase;
56822
    extra = dext;
56823
    end = -1;
56824
  }
56825
56826
  /* initialize opts for loop */
56827
  huff = 0;                   /* starting code */
56828
  sym = 0;                    /* starting code symbol */
56829
  len = min;                  /* starting code length */
56830
  next = table_index;              /* current table to fill in */
56831
  curr = root;                /* current table index bits */
56832
  drop = 0;                   /* current bits to drop from code for index */
56833
  low = -1;                   /* trigger new sub-table when len > root */
56834
  used = 1 << root;          /* use root table entries */
56835
  mask = used - 1;            /* mask for comparing low */
56836
56837
  /* check available table space */
56838
  if ((type === LENS && used > ENOUGH_LENS) ||
56839
    (type === DISTS && used > ENOUGH_DISTS)) {
56840
    return 1;
56841
  }
56842
56843
  /* process all codes and make table entries */
56844
  for (;;) {
56845
    /* create table entry */
56846
    here_bits = len - drop;
56847
    if (work[sym] < end) {
56848
      here_op = 0;
56849
      here_val = work[sym];
56850
    }
56851
    else if (work[sym] > end) {
56852
      here_op = extra[extra_index + work[sym]];
56853
      here_val = base[base_index + work[sym]];
56854
    }
56855
    else {
56856
      here_op = 32 + 64;         /* end of block */
56857
      here_val = 0;
56858
    }
56859
56860
    /* replicate for those indices with low len bits equal to huff */
56861
    incr = 1 << (len - drop);
56862
    fill = 1 << curr;
56863
    min = fill;                 /* save offset to next table */
56864
    do {
56865
      fill -= incr;
56866
      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
56867
    } while (fill !== 0);
56868
56869
    /* backwards increment the len-bit code huff */
56870
    incr = 1 << (len - 1);
56871
    while (huff & incr) {
56872
      incr >>= 1;
56873
    }
56874
    if (incr !== 0) {
56875
      huff &= incr - 1;
56876
      huff += incr;
56877
    } else {
56878
      huff = 0;
56879
    }
56880
56881
    /* go to next symbol, update count, len */
56882
    sym++;
56883
    if (--count[len] === 0) {
56884
      if (len === max) { break; }
56885
      len = lens[lens_index + work[sym]];
56886
    }
56887
56888
    /* create new sub-table if needed */
56889
    if (len > root && (huff & mask) !== low) {
56890
      /* if first time, transition to sub-tables */
56891
      if (drop === 0) {
56892
        drop = root;
56893
      }
56894
56895
      /* increment past last table */
56896
      next += min;            /* here min is 1 << curr */
56897
56898
      /* determine length of next table */
56899
      curr = len - drop;
56900
      left = 1 << curr;
56901
      while (curr + drop < max) {
56902
        left -= count[curr + drop];
56903
        if (left <= 0) { break; }
56904
        curr++;
56905
        left <<= 1;
56906
      }
56907
56908
      /* check for enough space */
56909
      used += 1 << curr;
56910
      if ((type === LENS && used > ENOUGH_LENS) ||
56911
        (type === DISTS && used > ENOUGH_DISTS)) {
56912
        return 1;
56913
      }
56914
56915
      /* point entry in root table to sub-table */
56916
      low = huff & mask;
56917
      /*table.op[low] = curr;
56918
      table.bits[low] = root;
56919
      table.val[low] = next - opts.table_index;*/
56920
      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
56921
    }
56922
  }
56923
56924
  /* fill in remaining table entry if code is incomplete (guaranteed to have
56925
   at most one remaining entry, since if the code is incomplete, the
56926
   maximum code length that was allowed to get this far is one bit) */
56927
  if (huff !== 0) {
56928
    //table.op[next + huff] = 64;            /* invalid code marker */
56929
    //table.bits[next + huff] = len - drop;
56930
    //table.val[next + huff] = 0;
56931
    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
56932
  }
56933
56934
  /* set return parameters */
56935
  //opts.table_index += used;
56936
  opts.bits = root;
56937
  return 0;
56938
};
56939
56940
56941
/***/ }),
56942
56943
/***/ 8898:
56944
/***/ (function(module) {
56945
56946
"use strict";
56947
56948
56949
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
56950
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
56951
//
56952
// This software is provided 'as-is', without any express or implied
56953
// warranty. In no event will the authors be held liable for any damages
56954
// arising from the use of this software.
56955
//
56956
// Permission is granted to anyone to use this software for any purpose,
56957
// including commercial applications, and to alter it and redistribute it
56958
// freely, subject to the following restrictions:
56959
//
56960
// 1. The origin of this software must not be misrepresented; you must not
56961
//   claim that you wrote the original software. If you use this software
56962
//   in a product, an acknowledgment in the product documentation would be
56963
//   appreciated but is not required.
56964
// 2. Altered source versions must be plainly marked as such, and must not be
56965
//   misrepresented as being the original software.
56966
// 3. This notice may not be removed or altered from any source distribution.
56967
56968
module.exports = {
56969
  2:      'need dictionary',     /* Z_NEED_DICT       2  */
56970
  1:      'stream end',          /* Z_STREAM_END      1  */
56971
  0:      '',                    /* Z_OK              0  */
56972
  '-1':   'file error',          /* Z_ERRNO         (-1) */
56973
  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
56974
  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
56975
  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
56976
  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
56977
  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
56978
};
56979
56980
56981
/***/ }),
56982
56983
/***/ 342:
56984
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
56985
56986
"use strict";
56987
56988
56989
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
56990
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
56991
//
56992
// This software is provided 'as-is', without any express or implied
56993
// warranty. In no event will the authors be held liable for any damages
56994
// arising from the use of this software.
56995
//
56996
// Permission is granted to anyone to use this software for any purpose,
56997
// including commercial applications, and to alter it and redistribute it
56998
// freely, subject to the following restrictions:
56999
//
57000
// 1. The origin of this software must not be misrepresented; you must not
57001
//   claim that you wrote the original software. If you use this software
57002
//   in a product, an acknowledgment in the product documentation would be
57003
//   appreciated but is not required.
57004
// 2. Altered source versions must be plainly marked as such, and must not be
57005
//   misrepresented as being the original software.
57006
// 3. This notice may not be removed or altered from any source distribution.
57007
57008
/* eslint-disable space-unary-ops */
57009
57010
var utils = __webpack_require__(4236);
57011
57012
/* Public constants ==========================================================*/
57013
/* ===========================================================================*/
57014
57015
57016
//var Z_FILTERED          = 1;
57017
//var Z_HUFFMAN_ONLY      = 2;
57018
//var Z_RLE               = 3;
57019
var Z_FIXED               = 4;
57020
//var Z_DEFAULT_STRATEGY  = 0;
57021
57022
/* Possible values of the data_type field (though see inflate()) */
57023
var Z_BINARY              = 0;
57024
var Z_TEXT                = 1;
57025
//var Z_ASCII             = 1; // = Z_TEXT
57026
var Z_UNKNOWN             = 2;
57027
57028
/*============================================================================*/
57029
57030
57031
function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
57032
57033
// From zutil.h
57034
57035
var STORED_BLOCK = 0;
57036
var STATIC_TREES = 1;
57037
var DYN_TREES    = 2;
57038
/* The three kinds of block type */
57039
57040
var MIN_MATCH    = 3;
57041
var MAX_MATCH    = 258;
57042
/* The minimum and maximum match lengths */
57043
57044
// From deflate.h
57045
/* ===========================================================================
57046
 * Internal compression state.
57047
 */
57048
57049
var LENGTH_CODES  = 29;
57050
/* number of length codes, not counting the special END_BLOCK code */
57051
57052
var LITERALS      = 256;
57053
/* number of literal bytes 0..255 */
57054
57055
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
57056
/* number of Literal or Length codes, including the END_BLOCK code */
57057
57058
var D_CODES       = 30;
57059
/* number of distance codes */
57060
57061
var BL_CODES      = 19;
57062
/* number of codes used to transfer the bit lengths */
57063
57064
var HEAP_SIZE     = 2 * L_CODES + 1;
57065
/* maximum heap size */
57066
57067
var MAX_BITS      = 15;
57068
/* All codes must not exceed MAX_BITS bits */
57069
57070
var Buf_size      = 16;
57071
/* size of bit buffer in bi_buf */
57072
57073
57074
/* ===========================================================================
57075
 * Constants
57076
 */
57077
57078
var MAX_BL_BITS = 7;
57079
/* Bit length codes must not exceed MAX_BL_BITS bits */
57080
57081
var END_BLOCK   = 256;
57082
/* end of block literal code */
57083
57084
var REP_3_6     = 16;
57085
/* repeat previous bit length 3-6 times (2 bits of repeat count) */
57086
57087
var REPZ_3_10   = 17;
57088
/* repeat a zero length 3-10 times  (3 bits of repeat count) */
57089
57090
var REPZ_11_138 = 18;
57091
/* repeat a zero length 11-138 times  (7 bits of repeat count) */
57092
57093
/* eslint-disable comma-spacing,array-bracket-spacing */
57094
var extra_lbits =   /* extra bits for each length code */
57095
  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
57096
57097
var extra_dbits =   /* extra bits for each distance code */
57098
  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
57099
57100
var extra_blbits =  /* extra bits for each bit length code */
57101
  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
57102
57103
var bl_order =
57104
  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
57105
/* eslint-enable comma-spacing,array-bracket-spacing */
57106
57107
/* The lengths of the bit length codes are sent in order of decreasing
57108
 * probability, to avoid transmitting the lengths for unused bit length codes.
57109
 */
57110
57111
/* ===========================================================================
57112
 * Local data. These are initialized only once.
57113
 */
57114
57115
// We pre-fill arrays with 0 to avoid uninitialized gaps
57116
57117
var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
57118
57119
// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
57120
var static_ltree  = new Array((L_CODES + 2) * 2);
57121
zero(static_ltree);
57122
/* The static literal tree. Since the bit lengths are imposed, there is no
57123
 * need for the L_CODES extra codes used during heap construction. However
57124
 * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
57125
 * below).
57126
 */
57127
57128
var static_dtree  = new Array(D_CODES * 2);
57129
zero(static_dtree);
57130
/* The static distance tree. (Actually a trivial tree since all codes use
57131
 * 5 bits.)
57132
 */
57133
57134
var _dist_code    = new Array(DIST_CODE_LEN);
57135
zero(_dist_code);
57136
/* Distance codes. The first 256 values correspond to the distances
57137
 * 3 .. 258, the last 256 values correspond to the top 8 bits of
57138
 * the 15 bit distances.
57139
 */
57140
57141
var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
57142
zero(_length_code);
57143
/* length code for each normalized match length (0 == MIN_MATCH) */
57144
57145
var base_length   = new Array(LENGTH_CODES);
57146
zero(base_length);
57147
/* First normalized length for each code (0 = MIN_MATCH) */
57148
57149
var base_dist     = new Array(D_CODES);
57150
zero(base_dist);
57151
/* First normalized distance for each code (0 = distance of 1) */
57152
57153
57154
function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
57155
57156
  this.static_tree  = static_tree;  /* static tree or NULL */
57157
  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
57158
  this.extra_base   = extra_base;   /* base index for extra_bits */
57159
  this.elems        = elems;        /* max number of elements in the tree */
57160
  this.max_length   = max_length;   /* max bit length for the codes */
57161
57162
  // show if `static_tree` has data or dummy - needed for monomorphic objects
57163
  this.has_stree    = static_tree && static_tree.length;
57164
}
57165
57166
57167
var static_l_desc;
57168
var static_d_desc;
57169
var static_bl_desc;
57170
57171
57172
function TreeDesc(dyn_tree, stat_desc) {
57173
  this.dyn_tree = dyn_tree;     /* the dynamic tree */
57174
  this.max_code = 0;            /* largest code with non zero frequency */
57175
  this.stat_desc = stat_desc;   /* the corresponding static tree */
57176
}
57177
57178
57179
57180
function d_code(dist) {
57181
  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
57182
}
57183
57184
57185
/* ===========================================================================
57186
 * Output a short LSB first on the stream.
57187
 * IN assertion: there is enough room in pendingBuf.
57188
 */
57189
function put_short(s, w) {
57190
//    put_byte(s, (uch)((w) & 0xff));
57191
//    put_byte(s, (uch)((ush)(w) >> 8));
57192
  s.pending_buf[s.pending++] = (w) & 0xff;
57193
  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
57194
}
57195
57196
57197
/* ===========================================================================
57198
 * Send a value on a given number of bits.
57199
 * IN assertion: length <= 16 and value fits in length bits.
57200
 */
57201
function send_bits(s, value, length) {
57202
  if (s.bi_valid > (Buf_size - length)) {
57203
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
57204
    put_short(s, s.bi_buf);
57205
    s.bi_buf = value >> (Buf_size - s.bi_valid);
57206
    s.bi_valid += length - Buf_size;
57207
  } else {
57208
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
57209
    s.bi_valid += length;
57210
  }
57211
}
57212
57213
57214
function send_code(s, c, tree) {
57215
  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
57216
}
57217
57218
57219
/* ===========================================================================
57220
 * Reverse the first len bits of a code, using straightforward code (a faster
57221
 * method would use a table)
57222
 * IN assertion: 1 <= len <= 15
57223
 */
57224
function bi_reverse(code, len) {
57225
  var res = 0;
57226
  do {
57227
    res |= code & 1;
57228
    code >>>= 1;
57229
    res <<= 1;
57230
  } while (--len > 0);
57231
  return res >>> 1;
57232
}
57233
57234
57235
/* ===========================================================================
57236
 * Flush the bit buffer, keeping at most 7 bits in it.
57237
 */
57238
function bi_flush(s) {
57239
  if (s.bi_valid === 16) {
57240
    put_short(s, s.bi_buf);
57241
    s.bi_buf = 0;
57242
    s.bi_valid = 0;
57243
57244
  } else if (s.bi_valid >= 8) {
57245
    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
57246
    s.bi_buf >>= 8;
57247
    s.bi_valid -= 8;
57248
  }
57249
}
57250
57251
57252
/* ===========================================================================
57253
 * Compute the optimal bit lengths for a tree and update the total bit length
57254
 * for the current block.
57255
 * IN assertion: the fields freq and dad are set, heap[heap_max] and
57256
 *    above are the tree nodes sorted by increasing frequency.
57257
 * OUT assertions: the field len is set to the optimal bit length, the
57258
 *     array bl_count contains the frequencies for each bit length.
57259
 *     The length opt_len is updated; static_len is also updated if stree is
57260
 *     not null.
57261
 */
57262
function gen_bitlen(s, desc)
57263
//    deflate_state *s;
57264
//    tree_desc *desc;    /* the tree descriptor */
57265
{
57266
  var tree            = desc.dyn_tree;
57267
  var max_code        = desc.max_code;
57268
  var stree           = desc.stat_desc.static_tree;
57269
  var has_stree       = desc.stat_desc.has_stree;
57270
  var extra           = desc.stat_desc.extra_bits;
57271
  var base            = desc.stat_desc.extra_base;
57272
  var max_length      = desc.stat_desc.max_length;
57273
  var h;              /* heap index */
57274
  var n, m;           /* iterate over the tree elements */
57275
  var bits;           /* bit length */
57276
  var xbits;          /* extra bits */
57277
  var f;              /* frequency */
57278
  var overflow = 0;   /* number of elements with bit length too large */
57279
57280
  for (bits = 0; bits <= MAX_BITS; bits++) {
57281
    s.bl_count[bits] = 0;
57282
  }
57283
57284
  /* In a first pass, compute the optimal bit lengths (which may
57285
   * overflow in the case of the bit length tree).
57286
   */
57287
  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
57288
57289
  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
57290
    n = s.heap[h];
57291
    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
57292
    if (bits > max_length) {
57293
      bits = max_length;
57294
      overflow++;
57295
    }
57296
    tree[n * 2 + 1]/*.Len*/ = bits;
57297
    /* We overwrite tree[n].Dad which is no longer needed */
57298
57299
    if (n > max_code) { continue; } /* not a leaf node */
57300
57301
    s.bl_count[bits]++;
57302
    xbits = 0;
57303
    if (n >= base) {
57304
      xbits = extra[n - base];
57305
    }
57306
    f = tree[n * 2]/*.Freq*/;
57307
    s.opt_len += f * (bits + xbits);
57308
    if (has_stree) {
57309
      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
57310
    }
57311
  }
57312
  if (overflow === 0) { return; }
57313
57314
  // Trace((stderr,"\nbit length overflow\n"));
57315
  /* This happens for example on obj2 and pic of the Calgary corpus */
57316
57317
  /* Find the first bit length which could increase: */
57318
  do {
57319
    bits = max_length - 1;
57320
    while (s.bl_count[bits] === 0) { bits--; }
57321
    s.bl_count[bits]--;      /* move one leaf down the tree */
57322
    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
57323
    s.bl_count[max_length]--;
57324
    /* The brother of the overflow item also moves one step up,
57325
     * but this does not affect bl_count[max_length]
57326
     */
57327
    overflow -= 2;
57328
  } while (overflow > 0);
57329
57330
  /* Now recompute all bit lengths, scanning in increasing frequency.
57331
   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
57332
   * lengths instead of fixing only the wrong ones. This idea is taken
57333
   * from 'ar' written by Haruhiko Okumura.)
57334
   */
57335
  for (bits = max_length; bits !== 0; bits--) {
57336
    n = s.bl_count[bits];
57337
    while (n !== 0) {
57338
      m = s.heap[--h];
57339
      if (m > max_code) { continue; }
57340
      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
57341
        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
57342
        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
57343
        tree[m * 2 + 1]/*.Len*/ = bits;
57344
      }
57345
      n--;
57346
    }
57347
  }
57348
}
57349
57350
57351
/* ===========================================================================
57352
 * Generate the codes for a given tree and bit counts (which need not be
57353
 * optimal).
57354
 * IN assertion: the array bl_count contains the bit length statistics for
57355
 * the given tree and the field len is set for all tree elements.
57356
 * OUT assertion: the field code is set for all tree elements of non
57357
 *     zero code length.
57358
 */
57359
function gen_codes(tree, max_code, bl_count)
57360
//    ct_data *tree;             /* the tree to decorate */
57361
//    int max_code;              /* largest code with non zero frequency */
57362
//    ushf *bl_count;            /* number of codes at each bit length */
57363
{
57364
  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
57365
  var code = 0;              /* running code value */
57366
  var bits;                  /* bit index */
57367
  var n;                     /* code index */
57368
57369
  /* The distribution counts are first used to generate the code values
57370
   * without bit reversal.
57371
   */
57372
  for (bits = 1; bits <= MAX_BITS; bits++) {
57373
    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
57374
  }
57375
  /* Check that the bit counts in bl_count are consistent. The last code
57376
   * must be all ones.
57377
   */
57378
  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
57379
  //        "inconsistent bit counts");
57380
  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
57381
57382
  for (n = 0;  n <= max_code; n++) {
57383
    var len = tree[n * 2 + 1]/*.Len*/;
57384
    if (len === 0) { continue; }
57385
    /* Now reverse the bits */
57386
    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
57387
57388
    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
57389
    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
57390
  }
57391
}
57392
57393
57394
/* ===========================================================================
57395
 * Initialize the various 'constant' tables.
57396
 */
57397
function tr_static_init() {
57398
  var n;        /* iterates over tree elements */
57399
  var bits;     /* bit counter */
57400
  var length;   /* length value */
57401
  var code;     /* code value */
57402
  var dist;     /* distance index */
57403
  var bl_count = new Array(MAX_BITS + 1);
57404
  /* number of codes at each bit length for an optimal tree */
57405
57406
  // do check in _tr_init()
57407
  //if (static_init_done) return;
57408
57409
  /* For some embedded targets, global variables are not initialized: */
57410
/*#ifdef NO_INIT_GLOBAL_POINTERS
57411
  static_l_desc.static_tree = static_ltree;
57412
  static_l_desc.extra_bits = extra_lbits;
57413
  static_d_desc.static_tree = static_dtree;
57414
  static_d_desc.extra_bits = extra_dbits;
57415
  static_bl_desc.extra_bits = extra_blbits;
57416
#endif*/
57417
57418
  /* Initialize the mapping length (0..255) -> length code (0..28) */
57419
  length = 0;
57420
  for (code = 0; code < LENGTH_CODES - 1; code++) {
57421
    base_length[code] = length;
57422
    for (n = 0; n < (1 << extra_lbits[code]); n++) {
57423
      _length_code[length++] = code;
57424
    }
57425
  }
57426
  //Assert (length == 256, "tr_static_init: length != 256");
57427
  /* Note that the length 255 (match length 258) can be represented
57428
   * in two different ways: code 284 + 5 bits or code 285, so we
57429
   * overwrite length_code[255] to use the best encoding:
57430
   */
57431
  _length_code[length - 1] = code;
57432
57433
  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
57434
  dist = 0;
57435
  for (code = 0; code < 16; code++) {
57436
    base_dist[code] = dist;
57437
    for (n = 0; n < (1 << extra_dbits[code]); n++) {
57438
      _dist_code[dist++] = code;
57439
    }
57440
  }
57441
  //Assert (dist == 256, "tr_static_init: dist != 256");
57442
  dist >>= 7; /* from now on, all distances are divided by 128 */
57443
  for (; code < D_CODES; code++) {
57444
    base_dist[code] = dist << 7;
57445
    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
57446
      _dist_code[256 + dist++] = code;
57447
    }
57448
  }
57449
  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
57450
57451
  /* Construct the codes of the static literal tree */
57452
  for (bits = 0; bits <= MAX_BITS; bits++) {
57453
    bl_count[bits] = 0;
57454
  }
57455
57456
  n = 0;
57457
  while (n <= 143) {
57458
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
57459
    n++;
57460
    bl_count[8]++;
57461
  }
57462
  while (n <= 255) {
57463
    static_ltree[n * 2 + 1]/*.Len*/ = 9;
57464
    n++;
57465
    bl_count[9]++;
57466
  }
57467
  while (n <= 279) {
57468
    static_ltree[n * 2 + 1]/*.Len*/ = 7;
57469
    n++;
57470
    bl_count[7]++;
57471
  }
57472
  while (n <= 287) {
57473
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
57474
    n++;
57475
    bl_count[8]++;
57476
  }
57477
  /* Codes 286 and 287 do not exist, but we must include them in the
57478
   * tree construction to get a canonical Huffman tree (longest code
57479
   * all ones)
57480
   */
57481
  gen_codes(static_ltree, L_CODES + 1, bl_count);
57482
57483
  /* The static distance tree is trivial: */
57484
  for (n = 0; n < D_CODES; n++) {
57485
    static_dtree[n * 2 + 1]/*.Len*/ = 5;
57486
    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
57487
  }
57488
57489
  // Now data ready and we can init static trees
57490
  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
57491
  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
57492
  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
57493
57494
  //static_init_done = true;
57495
}
57496
57497
57498
/* ===========================================================================
57499
 * Initialize a new block.
57500
 */
57501
function init_block(s) {
57502
  var n; /* iterates over tree elements */
57503
57504
  /* Initialize the trees. */
57505
  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
57506
  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
57507
  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
57508
57509
  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
57510
  s.opt_len = s.static_len = 0;
57511
  s.last_lit = s.matches = 0;
57512
}
57513
57514
57515
/* ===========================================================================
57516
 * Flush the bit buffer and align the output on a byte boundary
57517
 */
57518
function bi_windup(s)
57519
{
57520
  if (s.bi_valid > 8) {
57521
    put_short(s, s.bi_buf);
57522
  } else if (s.bi_valid > 0) {
57523
    //put_byte(s, (Byte)s->bi_buf);
57524
    s.pending_buf[s.pending++] = s.bi_buf;
57525
  }
57526
  s.bi_buf = 0;
57527
  s.bi_valid = 0;
57528
}
57529
57530
/* ===========================================================================
57531
 * Copy a stored block, storing first the length and its
57532
 * one's complement if requested.
57533
 */
57534
function copy_block(s, buf, len, header)
57535
//DeflateState *s;
57536
//charf    *buf;    /* the input data */
57537
//unsigned len;     /* its length */
57538
//int      header;  /* true if block header must be written */
57539
{
57540
  bi_windup(s);        /* align on byte boundary */
57541
57542
  if (header) {
57543
    put_short(s, len);
57544
    put_short(s, ~len);
57545
  }
57546
//  while (len--) {
57547
//    put_byte(s, *buf++);
57548
//  }
57549
  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
57550
  s.pending += len;
57551
}
57552
57553
/* ===========================================================================
57554
 * Compares to subtrees, using the tree depth as tie breaker when
57555
 * the subtrees have equal frequency. This minimizes the worst case length.
57556
 */
57557
function smaller(tree, n, m, depth) {
57558
  var _n2 = n * 2;
57559
  var _m2 = m * 2;
57560
  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
57561
         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
57562
}
57563
57564
/* ===========================================================================
57565
 * Restore the heap property by moving down the tree starting at node k,
57566
 * exchanging a node with the smallest of its two sons if necessary, stopping
57567
 * when the heap property is re-established (each father smaller than its
57568
 * two sons).
57569
 */
57570
function pqdownheap(s, tree, k)
57571
//    deflate_state *s;
57572
//    ct_data *tree;  /* the tree to restore */
57573
//    int k;               /* node to move down */
57574
{
57575
  var v = s.heap[k];
57576
  var j = k << 1;  /* left son of k */
57577
  while (j <= s.heap_len) {
57578
    /* Set j to the smallest of the two sons: */
57579
    if (j < s.heap_len &&
57580
      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
57581
      j++;
57582
    }
57583
    /* Exit if v is smaller than both sons */
57584
    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
57585
57586
    /* Exchange v with the smallest son */
57587
    s.heap[k] = s.heap[j];
57588
    k = j;
57589
57590
    /* And continue down the tree, setting j to the left son of k */
57591
    j <<= 1;
57592
  }
57593
  s.heap[k] = v;
57594
}
57595
57596
57597
// inlined manually
57598
// var SMALLEST = 1;
57599
57600
/* ===========================================================================
57601
 * Send the block data compressed using the given Huffman trees
57602
 */
57603
function compress_block(s, ltree, dtree)
57604
//    deflate_state *s;
57605
//    const ct_data *ltree; /* literal tree */
57606
//    const ct_data *dtree; /* distance tree */
57607
{
57608
  var dist;           /* distance of matched string */
57609
  var lc;             /* match length or unmatched char (if dist == 0) */
57610
  var lx = 0;         /* running index in l_buf */
57611
  var code;           /* the code to send */
57612
  var extra;          /* number of extra bits to send */
57613
57614
  if (s.last_lit !== 0) {
57615
    do {
57616
      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
57617
      lc = s.pending_buf[s.l_buf + lx];
57618
      lx++;
57619
57620
      if (dist === 0) {
57621
        send_code(s, lc, ltree); /* send a literal byte */
57622
        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
57623
      } else {
57624
        /* Here, lc is the match length - MIN_MATCH */
57625
        code = _length_code[lc];
57626
        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
57627
        extra = extra_lbits[code];
57628
        if (extra !== 0) {
57629
          lc -= base_length[code];
57630
          send_bits(s, lc, extra);       /* send the extra length bits */
57631
        }
57632
        dist--; /* dist is now the match distance - 1 */
57633
        code = d_code(dist);
57634
        //Assert (code < D_CODES, "bad d_code");
57635
57636
        send_code(s, code, dtree);       /* send the distance code */
57637
        extra = extra_dbits[code];
57638
        if (extra !== 0) {
57639
          dist -= base_dist[code];
57640
          send_bits(s, dist, extra);   /* send the extra distance bits */
57641
        }
57642
      } /* literal or match pair ? */
57643
57644
      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
57645
      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
57646
      //       "pendingBuf overflow");
57647
57648
    } while (lx < s.last_lit);
57649
  }
57650
57651
  send_code(s, END_BLOCK, ltree);
57652
}
57653
57654
57655
/* ===========================================================================
57656
 * Construct one Huffman tree and assigns the code bit strings and lengths.
57657
 * Update the total bit length for the current block.
57658
 * IN assertion: the field freq is set for all tree elements.
57659
 * OUT assertions: the fields len and code are set to the optimal bit length
57660
 *     and corresponding code. The length opt_len is updated; static_len is
57661
 *     also updated if stree is not null. The field max_code is set.
57662
 */
57663
function build_tree(s, desc)
57664
//    deflate_state *s;
57665
//    tree_desc *desc; /* the tree descriptor */
57666
{
57667
  var tree     = desc.dyn_tree;
57668
  var stree    = desc.stat_desc.static_tree;
57669
  var has_stree = desc.stat_desc.has_stree;
57670
  var elems    = desc.stat_desc.elems;
57671
  var n, m;          /* iterate over heap elements */
57672
  var max_code = -1; /* largest code with non zero frequency */
57673
  var node;          /* new node being created */
57674
57675
  /* Construct the initial heap, with least frequent element in
57676
   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
57677
   * heap[0] is not used.
57678
   */
57679
  s.heap_len = 0;
57680
  s.heap_max = HEAP_SIZE;
57681
57682
  for (n = 0; n < elems; n++) {
57683
    if (tree[n * 2]/*.Freq*/ !== 0) {
57684
      s.heap[++s.heap_len] = max_code = n;
57685
      s.depth[n] = 0;
57686
57687
    } else {
57688
      tree[n * 2 + 1]/*.Len*/ = 0;
57689
    }
57690
  }
57691
57692
  /* The pkzip format requires that at least one distance code exists,
57693
   * and that at least one bit should be sent even if there is only one
57694
   * possible code. So to avoid special checks later on we force at least
57695
   * two codes of non zero frequency.
57696
   */
57697
  while (s.heap_len < 2) {
57698
    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
57699
    tree[node * 2]/*.Freq*/ = 1;
57700
    s.depth[node] = 0;
57701
    s.opt_len--;
57702
57703
    if (has_stree) {
57704
      s.static_len -= stree[node * 2 + 1]/*.Len*/;
57705
    }
57706
    /* node is 0 or 1 so it does not have extra bits */
57707
  }
57708
  desc.max_code = max_code;
57709
57710
  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
57711
   * establish sub-heaps of increasing lengths:
57712
   */
57713
  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
57714
57715
  /* Construct the Huffman tree by repeatedly combining the least two
57716
   * frequent nodes.
57717
   */
57718
  node = elems;              /* next internal node of the tree */
57719
  do {
57720
    //pqremove(s, tree, n);  /* n = node of least frequency */
57721
    /*** pqremove ***/
57722
    n = s.heap[1/*SMALLEST*/];
57723
    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
57724
    pqdownheap(s, tree, 1/*SMALLEST*/);
57725
    /***/
57726
57727
    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
57728
57729
    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
57730
    s.heap[--s.heap_max] = m;
57731
57732
    /* Create a new node father of n and m */
57733
    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
57734
    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
57735
    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
57736
57737
    /* and insert the new node in the heap */
57738
    s.heap[1/*SMALLEST*/] = node++;
57739
    pqdownheap(s, tree, 1/*SMALLEST*/);
57740
57741
  } while (s.heap_len >= 2);
57742
57743
  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
57744
57745
  /* At this point, the fields freq and dad are set. We can now
57746
   * generate the bit lengths.
57747
   */
57748
  gen_bitlen(s, desc);
57749
57750
  /* The field len is now set, we can generate the bit codes */
57751
  gen_codes(tree, max_code, s.bl_count);
57752
}
57753
57754
57755
/* ===========================================================================
57756
 * Scan a literal or distance tree to determine the frequencies of the codes
57757
 * in the bit length tree.
57758
 */
57759
function scan_tree(s, tree, max_code)
57760
//    deflate_state *s;
57761
//    ct_data *tree;   /* the tree to be scanned */
57762
//    int max_code;    /* and its largest code of non zero frequency */
57763
{
57764
  var n;                     /* iterates over all tree elements */
57765
  var prevlen = -1;          /* last emitted length */
57766
  var curlen;                /* length of current code */
57767
57768
  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
57769
57770
  var count = 0;             /* repeat count of the current code */
57771
  var max_count = 7;         /* max repeat count */
57772
  var min_count = 4;         /* min repeat count */
57773
57774
  if (nextlen === 0) {
57775
    max_count = 138;
57776
    min_count = 3;
57777
  }
57778
  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
57779
57780
  for (n = 0; n <= max_code; n++) {
57781
    curlen = nextlen;
57782
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
57783
57784
    if (++count < max_count && curlen === nextlen) {
57785
      continue;
57786
57787
    } else if (count < min_count) {
57788
      s.bl_tree[curlen * 2]/*.Freq*/ += count;
57789
57790
    } else if (curlen !== 0) {
57791
57792
      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
57793
      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
57794
57795
    } else if (count <= 10) {
57796
      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
57797
57798
    } else {
57799
      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
57800
    }
57801
57802
    count = 0;
57803
    prevlen = curlen;
57804
57805
    if (nextlen === 0) {
57806
      max_count = 138;
57807
      min_count = 3;
57808
57809
    } else if (curlen === nextlen) {
57810
      max_count = 6;
57811
      min_count = 3;
57812
57813
    } else {
57814
      max_count = 7;
57815
      min_count = 4;
57816
    }
57817
  }
57818
}
57819
57820
57821
/* ===========================================================================
57822
 * Send a literal or distance tree in compressed form, using the codes in
57823
 * bl_tree.
57824
 */
57825
function send_tree(s, tree, max_code)
57826
//    deflate_state *s;
57827
//    ct_data *tree; /* the tree to be scanned */
57828
//    int max_code;       /* and its largest code of non zero frequency */
57829
{
57830
  var n;                     /* iterates over all tree elements */
57831
  var prevlen = -1;          /* last emitted length */
57832
  var curlen;                /* length of current code */
57833
57834
  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
57835
57836
  var count = 0;             /* repeat count of the current code */
57837
  var max_count = 7;         /* max repeat count */
57838
  var min_count = 4;         /* min repeat count */
57839
57840
  /* tree[max_code+1].Len = -1; */  /* guard already set */
57841
  if (nextlen === 0) {
57842
    max_count = 138;
57843
    min_count = 3;
57844
  }
57845
57846
  for (n = 0; n <= max_code; n++) {
57847
    curlen = nextlen;
57848
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
57849
57850
    if (++count < max_count && curlen === nextlen) {
57851
      continue;
57852
57853
    } else if (count < min_count) {
57854
      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
57855
57856
    } else if (curlen !== 0) {
57857
      if (curlen !== prevlen) {
57858
        send_code(s, curlen, s.bl_tree);
57859
        count--;
57860
      }
57861
      //Assert(count >= 3 && count <= 6, " 3_6?");
57862
      send_code(s, REP_3_6, s.bl_tree);
57863
      send_bits(s, count - 3, 2);
57864
57865
    } else if (count <= 10) {
57866
      send_code(s, REPZ_3_10, s.bl_tree);
57867
      send_bits(s, count - 3, 3);
57868
57869
    } else {
57870
      send_code(s, REPZ_11_138, s.bl_tree);
57871
      send_bits(s, count - 11, 7);
57872
    }
57873
57874
    count = 0;
57875
    prevlen = curlen;
57876
    if (nextlen === 0) {
57877
      max_count = 138;
57878
      min_count = 3;
57879
57880
    } else if (curlen === nextlen) {
57881
      max_count = 6;
57882
      min_count = 3;
57883
57884
    } else {
57885
      max_count = 7;
57886
      min_count = 4;
57887
    }
57888
  }
57889
}
57890
57891
57892
/* ===========================================================================
57893
 * Construct the Huffman tree for the bit lengths and return the index in
57894
 * bl_order of the last bit length code to send.
57895
 */
57896
function build_bl_tree(s) {
57897
  var max_blindex;  /* index of last bit length code of non zero freq */
57898
57899
  /* Determine the bit length frequencies for literal and distance trees */
57900
  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
57901
  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
57902
57903
  /* Build the bit length tree: */
57904
  build_tree(s, s.bl_desc);
57905
  /* opt_len now includes the length of the tree representations, except
57906
   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
57907
   */
57908
57909
  /* Determine the number of bit length codes to send. The pkzip format
57910
   * requires that at least 4 bit length codes be sent. (appnote.txt says
57911
   * 3 but the actual value used is 4.)
57912
   */
57913
  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
57914
    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
57915
      break;
57916
    }
57917
  }
57918
  /* Update opt_len to include the bit length tree and counts */
57919
  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
57920
  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
57921
  //        s->opt_len, s->static_len));
57922
57923
  return max_blindex;
57924
}
57925
57926
57927
/* ===========================================================================
57928
 * Send the header for a block using dynamic Huffman trees: the counts, the
57929
 * lengths of the bit length codes, the literal tree and the distance tree.
57930
 * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
57931
 */
57932
function send_all_trees(s, lcodes, dcodes, blcodes)
57933
//    deflate_state *s;
57934
//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
57935
{
57936
  var rank;                    /* index in bl_order */
57937
57938
  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
57939
  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
57940
  //        "too many codes");
57941
  //Tracev((stderr, "\nbl counts: "));
57942
  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
57943
  send_bits(s, dcodes - 1,   5);
57944
  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
57945
  for (rank = 0; rank < blcodes; rank++) {
57946
    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
57947
    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
57948
  }
57949
  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
57950
57951
  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
57952
  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
57953
57954
  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
57955
  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
57956
}
57957
57958
57959
/* ===========================================================================
57960
 * Check if the data type is TEXT or BINARY, using the following algorithm:
57961
 * - TEXT if the two conditions below are satisfied:
57962
 *    a) There are no non-portable control characters belonging to the
57963
 *       "black list" (0..6, 14..25, 28..31).
57964
 *    b) There is at least one printable character belonging to the
57965
 *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
57966
 * - BINARY otherwise.
57967
 * - The following partially-portable control characters form a
57968
 *   "gray list" that is ignored in this detection algorithm:
57969
 *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
57970
 * IN assertion: the fields Freq of dyn_ltree are set.
57971
 */
57972
function detect_data_type(s) {
57973
  /* black_mask is the bit mask of black-listed bytes
57974
   * set bits 0..6, 14..25, and 28..31
57975
   * 0xf3ffc07f = binary 11110011111111111100000001111111
57976
   */
57977
  var black_mask = 0xf3ffc07f;
57978
  var n;
57979
57980
  /* Check for non-textual ("black-listed") bytes. */
57981
  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
57982
    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
57983
      return Z_BINARY;
57984
    }
57985
  }
57986
57987
  /* Check for textual ("white-listed") bytes. */
57988
  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
57989
      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
57990
    return Z_TEXT;
57991
  }
57992
  for (n = 32; n < LITERALS; n++) {
57993
    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
57994
      return Z_TEXT;
57995
    }
57996
  }
57997
57998
  /* There are no "black-listed" or "white-listed" bytes:
57999
   * this stream either is empty or has tolerated ("gray-listed") bytes only.
58000
   */
58001
  return Z_BINARY;
58002
}
58003
58004
58005
var static_init_done = false;
58006
58007
/* ===========================================================================
58008
 * Initialize the tree data structures for a new zlib stream.
58009
 */
58010
function _tr_init(s)
58011
{
58012
58013
  if (!static_init_done) {
58014
    tr_static_init();
58015
    static_init_done = true;
58016
  }
58017
58018
  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
58019
  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
58020
  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
58021
58022
  s.bi_buf = 0;
58023
  s.bi_valid = 0;
58024
58025
  /* Initialize the first block of the first file: */
58026
  init_block(s);
58027
}
58028
58029
58030
/* ===========================================================================
58031
 * Send a stored block
58032
 */
58033
function _tr_stored_block(s, buf, stored_len, last)
58034
//DeflateState *s;
58035
//charf *buf;       /* input block */
58036
//ulg stored_len;   /* length of input block */
58037
//int last;         /* one if this is the last block for a file */
58038
{
58039
  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
58040
  copy_block(s, buf, stored_len, true); /* with header */
58041
}
58042
58043
58044
/* ===========================================================================
58045
 * Send one empty static block to give enough lookahead for inflate.
58046
 * This takes 10 bits, of which 7 may remain in the bit buffer.
58047
 */
58048
function _tr_align(s) {
58049
  send_bits(s, STATIC_TREES << 1, 3);
58050
  send_code(s, END_BLOCK, static_ltree);
58051
  bi_flush(s);
58052
}
58053
58054
58055
/* ===========================================================================
58056
 * Determine the best encoding for the current block: dynamic trees, static
58057
 * trees or store, and output the encoded block to the zip file.
58058
 */
58059
function _tr_flush_block(s, buf, stored_len, last)
58060
//DeflateState *s;
58061
//charf *buf;       /* input block, or NULL if too old */
58062
//ulg stored_len;   /* length of input block */
58063
//int last;         /* one if this is the last block for a file */
58064
{
58065
  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
58066
  var max_blindex = 0;        /* index of last bit length code of non zero freq */
58067
58068
  /* Build the Huffman trees unless a stored block is forced */
58069
  if (s.level > 0) {
58070
58071
    /* Check if the file is binary or text */
58072
    if (s.strm.data_type === Z_UNKNOWN) {
58073
      s.strm.data_type = detect_data_type(s);
58074
    }
58075
58076
    /* Construct the literal and distance trees */
58077
    build_tree(s, s.l_desc);
58078
    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
58079
    //        s->static_len));
58080
58081
    build_tree(s, s.d_desc);
58082
    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
58083
    //        s->static_len));
58084
    /* At this point, opt_len and static_len are the total bit lengths of
58085
     * the compressed block data, excluding the tree representations.
58086
     */
58087
58088
    /* Build the bit length tree for the above two trees, and get the index
58089
     * in bl_order of the last bit length code to send.
58090
     */
58091
    max_blindex = build_bl_tree(s);
58092
58093
    /* Determine the best encoding. Compute the block lengths in bytes. */
58094
    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
58095
    static_lenb = (s.static_len + 3 + 7) >>> 3;
58096
58097
    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
58098
    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
58099
    //        s->last_lit));
58100
58101
    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
58102
58103
  } else {
58104
    // Assert(buf != (char*)0, "lost buf");
58105
    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
58106
  }
58107
58108
  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
58109
    /* 4: two words for the lengths */
58110
58111
    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
58112
     * Otherwise we can't have processed more than WSIZE input bytes since
58113
     * the last block flush, because compression would have been
58114
     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
58115
     * transform a block into a stored block.
58116
     */
58117
    _tr_stored_block(s, buf, stored_len, last);
58118
58119
  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
58120
58121
    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
58122
    compress_block(s, static_ltree, static_dtree);
58123
58124
  } else {
58125
    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
58126
    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
58127
    compress_block(s, s.dyn_ltree, s.dyn_dtree);
58128
  }
58129
  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
58130
  /* The above check is made mod 2^32, for files larger than 512 MB
58131
   * and uLong implemented on 32 bits.
58132
   */
58133
  init_block(s);
58134
58135
  if (last) {
58136
    bi_windup(s);
58137
  }
58138
  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
58139
  //       s->compressed_len-7*last));
58140
}
58141
58142
/* ===========================================================================
58143
 * Save the match info and tally the frequency counts. Return true if
58144
 * the current block must be flushed.
58145
 */
58146
function _tr_tally(s, dist, lc)
58147
//    deflate_state *s;
58148
//    unsigned dist;  /* distance of matched string */
58149
//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
58150
{
58151
  //var out_length, in_length, dcode;
58152
58153
  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
58154
  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
58155
58156
  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
58157
  s.last_lit++;
58158
58159
  if (dist === 0) {
58160
    /* lc is the unmatched char */
58161
    s.dyn_ltree[lc * 2]/*.Freq*/++;
58162
  } else {
58163
    s.matches++;
58164
    /* Here, lc is the match length - MIN_MATCH */
58165
    dist--;             /* dist = match distance - 1 */
58166
    //Assert((ush)dist < (ush)MAX_DIST(s) &&
58167
    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
58168
    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
58169
58170
    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
58171
    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
58172
  }
58173
58174
// (!) This block is disabled in zlib defaults,
58175
// don't enable it for binary compatibility
58176
58177
//#ifdef TRUNCATE_BLOCK
58178
//  /* Try to guess if it is profitable to stop the current block here */
58179
//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
58180
//    /* Compute an upper bound for the compressed length */
58181
//    out_length = s.last_lit*8;
58182
//    in_length = s.strstart - s.block_start;
58183
//
58184
//    for (dcode = 0; dcode < D_CODES; dcode++) {
58185
//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
58186
//    }
58187
//    out_length >>>= 3;
58188
//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
58189
//    //       s->last_lit, in_length, out_length,
58190
//    //       100L - out_length*100L/in_length));
58191
//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
58192
//      return true;
58193
//    }
58194
//  }
58195
//#endif
58196
58197
  return (s.last_lit === s.lit_bufsize - 1);
58198
  /* We avoid equality with lit_bufsize because of wraparound at 64K
58199
   * on 16 bit machines and because stored blocks are restricted to
58200
   * 64K-1 bytes.
58201
   */
58202
}
58203
58204
exports._tr_init  = _tr_init;
58205
exports._tr_stored_block = _tr_stored_block;
58206
exports._tr_flush_block  = _tr_flush_block;
58207
exports._tr_tally = _tr_tally;
58208
exports._tr_align = _tr_align;
58209
58210
58211
/***/ }),
58212
58213
/***/ 2292:
58214
/***/ (function(module) {
58215
58216
"use strict";
58217
58218
58219
// (C) 1995-2013 Jean-loup Gailly and Mark Adler
58220
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
58221
//
58222
// This software is provided 'as-is', without any express or implied
58223
// warranty. In no event will the authors be held liable for any damages
58224
// arising from the use of this software.
58225
//
58226
// Permission is granted to anyone to use this software for any purpose,
58227
// including commercial applications, and to alter it and redistribute it
58228
// freely, subject to the following restrictions:
58229
//
58230
// 1. The origin of this software must not be misrepresented; you must not
58231
//   claim that you wrote the original software. If you use this software
58232
//   in a product, an acknowledgment in the product documentation would be
58233
//   appreciated but is not required.
58234
// 2. Altered source versions must be plainly marked as such, and must not be
58235
//   misrepresented as being the original software.
58236
// 3. This notice may not be removed or altered from any source distribution.
58237
58238
function ZStream() {
58239
  /* next input byte */
58240
  this.input = null; // JS specific, because we have no pointers
58241
  this.next_in = 0;
58242
  /* number of bytes available at input */
58243
  this.avail_in = 0;
58244
  /* total number of input bytes read so far */
58245
  this.total_in = 0;
58246
  /* next output byte should be put there */
58247
  this.output = null; // JS specific, because we have no pointers
58248
  this.next_out = 0;
58249
  /* remaining free space at output */
58250
  this.avail_out = 0;
58251
  /* total number of bytes output so far */
58252
  this.total_out = 0;
58253
  /* last error message, NULL if no error */
58254
  this.msg = ''/*Z_NULL*/;
58255
  /* not visible by applications */
58256
  this.state = null;
58257
  /* best guess about the data type: binary or text */
58258
  this.data_type = 2/*Z_UNKNOWN*/;
58259
  /* adler32 value of the uncompressed data */
58260
  this.adler = 0;
58261
}
58262
58263
module.exports = ZStream;
58264
58265
58266
/***/ }),
58267
58268
/***/ 4155:
58269
/***/ (function(module) {
58270
58271
// shim for using process in browser
58272
var process = module.exports = {};
58273
58274
// cached from whatever global is present so that test runners that stub it
58275
// don't break things.  But we need to wrap it in a try catch in case it is
58276
// wrapped in strict mode code which doesn't define any globals.  It's inside a
58277
// function because try/catches deoptimize in certain engines.
58278
58279
var cachedSetTimeout;
58280
var cachedClearTimeout;
58281
58282
function defaultSetTimout() {
58283
    throw new Error('setTimeout has not been defined');
58284
}
58285
function defaultClearTimeout () {
58286
    throw new Error('clearTimeout has not been defined');
58287
}
58288
(function () {
58289
    try {
58290
        if (typeof setTimeout === 'function') {
58291
            cachedSetTimeout = setTimeout;
58292
        } else {
58293
            cachedSetTimeout = defaultSetTimout;
58294
        }
58295
    } catch (e) {
58296
        cachedSetTimeout = defaultSetTimout;
58297
    }
58298
    try {
58299
        if (typeof clearTimeout === 'function') {
58300
            cachedClearTimeout = clearTimeout;
58301
        } else {
58302
            cachedClearTimeout = defaultClearTimeout;
58303
        }
58304
    } catch (e) {
58305
        cachedClearTimeout = defaultClearTimeout;
58306
    }
58307
} ())
58308
function runTimeout(fun) {
58309
    if (cachedSetTimeout === setTimeout) {
58310
        //normal enviroments in sane situations
58311
        return setTimeout(fun, 0);
58312
    }
58313
    // if setTimeout wasn't available but was latter defined
58314
    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
58315
        cachedSetTimeout = setTimeout;
58316
        return setTimeout(fun, 0);
58317
    }
58318
    try {
58319
        // when when somebody has screwed with setTimeout but no I.E. maddness
58320
        return cachedSetTimeout(fun, 0);
58321
    } catch(e){
58322
        try {
58323
            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
58324
            return cachedSetTimeout.call(null, fun, 0);
58325
        } catch(e){
58326
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
58327
            return cachedSetTimeout.call(this, fun, 0);
58328
        }
58329
    }
58330
58331
58332
}
58333
function runClearTimeout(marker) {
58334
    if (cachedClearTimeout === clearTimeout) {
58335
        //normal enviroments in sane situations
58336
        return clearTimeout(marker);
58337
    }
58338
    // if clearTimeout wasn't available but was latter defined
58339
    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
58340
        cachedClearTimeout = clearTimeout;
58341
        return clearTimeout(marker);
58342
    }
58343
    try {
58344
        // when when somebody has screwed with setTimeout but no I.E. maddness
58345
        return cachedClearTimeout(marker);
58346
    } catch (e){
58347
        try {
58348
            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
58349
            return cachedClearTimeout.call(null, marker);
58350
        } catch (e){
58351
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
58352
            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
58353
            return cachedClearTimeout.call(this, marker);
58354
        }
58355
    }
58356
58357
58358
58359
}
58360
var queue = [];
58361
var draining = false;
58362
var currentQueue;
58363
var queueIndex = -1;
58364
58365
function cleanUpNextTick() {
58366
    if (!draining || !currentQueue) {
58367
        return;
58368
    }
58369
    draining = false;
58370
    if (currentQueue.length) {
58371
        queue = currentQueue.concat(queue);
58372
    } else {
58373
        queueIndex = -1;
58374
    }
58375
    if (queue.length) {
58376
        drainQueue();
58377
    }
58378
}
58379
58380
function drainQueue() {
58381
    if (draining) {
58382
        return;
58383
    }
58384
    var timeout = runTimeout(cleanUpNextTick);
58385
    draining = true;
58386
58387
    var len = queue.length;
58388
    while(len) {
58389
        currentQueue = queue;
58390
        queue = [];
58391
        while (++queueIndex < len) {
58392
            if (currentQueue) {
58393
                currentQueue[queueIndex].run();
58394
            }
58395
        }
58396
        queueIndex = -1;
58397
        len = queue.length;
58398
    }
58399
    currentQueue = null;
58400
    draining = false;
58401
    runClearTimeout(timeout);
58402
}
58403
58404
process.nextTick = function (fun) {
58405
    var args = new Array(arguments.length - 1);
58406
    if (arguments.length > 1) {
58407
        for (var i = 1; i < arguments.length; i++) {
58408
            args[i - 1] = arguments[i];
58409
        }
58410
    }
58411
    queue.push(new Item(fun, args));
58412
    if (queue.length === 1 && !draining) {
58413
        runTimeout(drainQueue);
58414
    }
58415
};
58416
58417
// v8 likes predictible objects
58418
function Item(fun, array) {
58419
    this.fun = fun;
58420
    this.array = array;
58421
}
58422
Item.prototype.run = function () {
58423
    this.fun.apply(null, this.array);
58424
};
58425
process.title = 'browser';
58426
process.browser = true;
58427
process.env = {};
58428
process.argv = [];
58429
process.version = ''; // empty string to avoid regexp issues
58430
process.versions = {};
58431
58432
function noop() {}
58433
58434
process.on = noop;
58435
process.addListener = noop;
58436
process.once = noop;
58437
process.off = noop;
58438
process.removeListener = noop;
58439
process.removeAllListeners = noop;
58440
process.emit = noop;
58441
process.prependListener = noop;
58442
process.prependOnceListener = noop;
58443
58444
process.listeners = function (name) { return [] }
58445
58446
process.binding = function (name) {
58447
    throw new Error('process.binding is not supported');
58448
};
58449
58450
process.cwd = function () { return '/' };
58451
process.chdir = function (dir) {
58452
    throw new Error('process.chdir is not supported');
58453
};
58454
process.umask = function() { return 0; };
58455
58456
58457
/***/ }),
58458
58459
/***/ 3697:
58460
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
58461
58462
"use strict";
58463
58464
58465
var functionsHaveConfigurableNames = (__webpack_require__(5972).functionsHaveConfigurableNames)();
58466
58467
var $Object = Object;
58468
var $TypeError = TypeError;
58469
58470
module.exports = function flags() {
58471
	if (this != null && this !== $Object(this)) {
58472
		throw new $TypeError('RegExp.prototype.flags getter called on non-object');
58473
	}
58474
	var result = '';
58475
	if (this.hasIndices) {
58476
		result += 'd';
58477
	}
58478
	if (this.global) {
58479
		result += 'g';
58480
	}
58481
	if (this.ignoreCase) {
58482
		result += 'i';
58483
	}
58484
	if (this.multiline) {
58485
		result += 'm';
58486
	}
58487
	if (this.dotAll) {
58488
		result += 's';
58489
	}
58490
	if (this.unicode) {
58491
		result += 'u';
58492
	}
58493
	if (this.sticky) {
58494
		result += 'y';
58495
	}
58496
	return result;
58497
};
58498
58499
if (functionsHaveConfigurableNames && Object.defineProperty) {
58500
	Object.defineProperty(module.exports, "name", ({ value: 'get flags' }));
58501
}
58502
58503
58504
/***/ }),
58505
58506
/***/ 2847:
58507
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
58508
58509
"use strict";
58510
58511
58512
var define = __webpack_require__(4289);
58513
var callBind = __webpack_require__(5559);
58514
58515
var implementation = __webpack_require__(3697);
58516
var getPolyfill = __webpack_require__(1721);
58517
var shim = __webpack_require__(2753);
58518
58519
var flagsBound = callBind(getPolyfill());
58520
58521
define(flagsBound, {
58522
	getPolyfill: getPolyfill,
58523
	implementation: implementation,
58524
	shim: shim
58525
});
58526
58527
module.exports = flagsBound;
58528
58529
58530
/***/ }),
58531
58532
/***/ 1721:
58533
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
58534
58535
"use strict";
58536
58537
58538
var implementation = __webpack_require__(3697);
58539
58540
var supportsDescriptors = (__webpack_require__(4289).supportsDescriptors);
58541
var $gOPD = Object.getOwnPropertyDescriptor;
58542
58543
module.exports = function getPolyfill() {
58544
	if (supportsDescriptors && (/a/mig).flags === 'gim') {
58545
		var descriptor = $gOPD(RegExp.prototype, 'flags');
58546
		if (
58547
			descriptor
58548
			&& typeof descriptor.get === 'function'
58549
			&& typeof RegExp.prototype.dotAll === 'boolean'
58550
			&& typeof RegExp.prototype.hasIndices === 'boolean'
58551
		) {
58552
			/* eslint getter-return: 0 */
58553
			var calls = '';
58554
			var o = {};
58555
			Object.defineProperty(o, 'hasIndices', {
58556
				get: function () {
58557
					calls += 'd';
58558
				}
58559
			});
58560
			Object.defineProperty(o, 'sticky', {
58561
				get: function () {
58562
					calls += 'y';
58563
				}
58564
			});
58565
			if (calls === 'dy') {
58566
				return descriptor.get;
58567
			}
58568
		}
58569
	}
58570
	return implementation;
58571
};
58572
58573
58574
/***/ }),
58575
58576
/***/ 2753:
58577
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
58578
58579
"use strict";
58580
58581
58582
var supportsDescriptors = (__webpack_require__(4289).supportsDescriptors);
58583
var getPolyfill = __webpack_require__(1721);
58584
var gOPD = Object.getOwnPropertyDescriptor;
58585
var defineProperty = Object.defineProperty;
58586
var TypeErr = TypeError;
58587
var getProto = Object.getPrototypeOf;
58588
var regex = /a/;
58589
58590
module.exports = function shimFlags() {
58591
	if (!supportsDescriptors || !getProto) {
58592
		throw new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');
58593
	}
58594
	var polyfill = getPolyfill();
58595
	var proto = getProto(regex);
58596
	var descriptor = gOPD(proto, 'flags');
58597
	if (!descriptor || descriptor.get !== polyfill) {
58598
		defineProperty(proto, 'flags', {
58599
			configurable: true,
58600
			enumerable: false,
58601
			get: polyfill
58602
		});
58603
	}
58604
	return polyfill;
58605
};
58606
58607
58608
/***/ }),
58609
58610
/***/ 6099:
58611
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
58612
58613
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
58614
;(function (sax) { // wrapper for non-node envs
58615
  sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
58616
  sax.SAXParser = SAXParser
58617
  sax.SAXStream = SAXStream
58618
  sax.createStream = createStream
58619
58620
  // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
58621
  // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
58622
  // since that's the earliest that a buffer overrun could occur.  This way, checks are
58623
  // as rare as required, but as often as necessary to ensure never crossing this bound.
58624
  // Furthermore, buffers are only tested at most once per write(), so passing a very
58625
  // large string into write() might have undesirable effects, but this is manageable by
58626
  // the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme
58627
  // edge case, result in creating at most one complete copy of the string passed in.
58628
  // Set to Infinity to have unlimited buffers.
58629
  sax.MAX_BUFFER_LENGTH = 64 * 1024
58630
58631
  var buffers = [
58632
    'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',
58633
    'procInstName', 'procInstBody', 'entity', 'attribName',
58634
    'attribValue', 'cdata', 'script'
58635
  ]
58636
58637
  sax.EVENTS = [
58638
    'text',
58639
    'processinginstruction',
58640
    'sgmldeclaration',
58641
    'doctype',
58642
    'comment',
58643
    'opentagstart',
58644
    'attribute',
58645
    'opentag',
58646
    'closetag',
58647
    'opencdata',
58648
    'cdata',
58649
    'closecdata',
58650
    'error',
58651
    'end',
58652
    'ready',
58653
    'script',
58654
    'opennamespace',
58655
    'closenamespace'
58656
  ]
58657
58658
  function SAXParser (strict, opt) {
58659
    if (!(this instanceof SAXParser)) {
58660
      return new SAXParser(strict, opt)
58661
    }
58662
58663
    var parser = this
58664
    clearBuffers(parser)
58665
    parser.q = parser.c = ''
58666
    parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
58667
    parser.opt = opt || {}
58668
    parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
58669
    parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'
58670
    parser.tags = []
58671
    parser.closed = parser.closedRoot = parser.sawRoot = false
58672
    parser.tag = parser.error = null
58673
    parser.strict = !!strict
58674
    parser.noscript = !!(strict || parser.opt.noscript)
58675
    parser.state = S.BEGIN
58676
    parser.strictEntities = parser.opt.strictEntities
58677
    parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
58678
    parser.attribList = []
58679
58680
    // namespaces form a prototype chain.
58681
    // it always points at the current tag,
58682
    // which protos to its parent tag.
58683
    if (parser.opt.xmlns) {
58684
      parser.ns = Object.create(rootNS)
58685
    }
58686
58687
    // mostly just for error reporting
58688
    parser.trackPosition = parser.opt.position !== false
58689
    if (parser.trackPosition) {
58690
      parser.position = parser.line = parser.column = 0
58691
    }
58692
    emit(parser, 'onready')
58693
  }
58694
58695
  if (!Object.create) {
58696
    Object.create = function (o) {
58697
      function F () {}
58698
      F.prototype = o
58699
      var newf = new F()
58700
      return newf
58701
    }
58702
  }
58703
58704
  if (!Object.keys) {
58705
    Object.keys = function (o) {
58706
      var a = []
58707
      for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
58708
      return a
58709
    }
58710
  }
58711
58712
  function checkBufferLength (parser) {
58713
    var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
58714
    var maxActual = 0
58715
    for (var i = 0, l = buffers.length; i < l; i++) {
58716
      var len = parser[buffers[i]].length
58717
      if (len > maxAllowed) {
58718
        // Text/cdata nodes can get big, and since they're buffered,
58719
        // we can get here under normal conditions.
58720
        // Avoid issues by emitting the text node now,
58721
        // so at least it won't get any bigger.
58722
        switch (buffers[i]) {
58723
          case 'textNode':
58724
            closeText(parser)
58725
            break
58726
58727
          case 'cdata':
58728
            emitNode(parser, 'oncdata', parser.cdata)
58729
            parser.cdata = ''
58730
            break
58731
58732
          case 'script':
58733
            emitNode(parser, 'onscript', parser.script)
58734
            parser.script = ''
58735
            break
58736
58737
          default:
58738
            error(parser, 'Max buffer length exceeded: ' + buffers[i])
58739
        }
58740
      }
58741
      maxActual = Math.max(maxActual, len)
58742
    }
58743
    // schedule the next check for the earliest possible buffer overrun.
58744
    var m = sax.MAX_BUFFER_LENGTH - maxActual
58745
    parser.bufferCheckPosition = m + parser.position
58746
  }
58747
58748
  function clearBuffers (parser) {
58749
    for (var i = 0, l = buffers.length; i < l; i++) {
58750
      parser[buffers[i]] = ''
58751
    }
58752
  }
58753
58754
  function flushBuffers (parser) {
58755
    closeText(parser)
58756
    if (parser.cdata !== '') {
58757
      emitNode(parser, 'oncdata', parser.cdata)
58758
      parser.cdata = ''
58759
    }
58760
    if (parser.script !== '') {
58761
      emitNode(parser, 'onscript', parser.script)
58762
      parser.script = ''
58763
    }
58764
  }
58765
58766
  SAXParser.prototype = {
58767
    end: function () { end(this) },
58768
    write: write,
58769
    resume: function () { this.error = null; return this },
58770
    close: function () { return this.write(null) },
58771
    flush: function () { flushBuffers(this) }
58772
  }
58773
58774
  var Stream
58775
  try {
58776
    Stream = (__webpack_require__(2830).Stream)
58777
  } catch (ex) {
58778
    Stream = function () {}
58779
  }
58780
58781
  var streamWraps = sax.EVENTS.filter(function (ev) {
58782
    return ev !== 'error' && ev !== 'end'
58783
  })
58784
58785
  function createStream (strict, opt) {
58786
    return new SAXStream(strict, opt)
58787
  }
58788
58789
  function SAXStream (strict, opt) {
58790
    if (!(this instanceof SAXStream)) {
58791
      return new SAXStream(strict, opt)
58792
    }
58793
58794
    Stream.apply(this)
58795
58796
    this._parser = new SAXParser(strict, opt)
58797
    this.writable = true
58798
    this.readable = true
58799
58800
    var me = this
58801
58802
    this._parser.onend = function () {
58803
      me.emit('end')
58804
    }
58805
58806
    this._parser.onerror = function (er) {
58807
      me.emit('error', er)
58808
58809
      // if didn't throw, then means error was handled.
58810
      // go ahead and clear error, so we can write again.
58811
      me._parser.error = null
58812
    }
58813
58814
    this._decoder = null
58815
58816
    streamWraps.forEach(function (ev) {
58817
      Object.defineProperty(me, 'on' + ev, {
58818
        get: function () {
58819
          return me._parser['on' + ev]
58820
        },
58821
        set: function (h) {
58822
          if (!h) {
58823
            me.removeAllListeners(ev)
58824
            me._parser['on' + ev] = h
58825
            return h
58826
          }
58827
          me.on(ev, h)
58828
        },
58829
        enumerable: true,
58830
        configurable: false
58831
      })
58832
    })
58833
  }
58834
58835
  SAXStream.prototype = Object.create(Stream.prototype, {
58836
    constructor: {
58837
      value: SAXStream
58838
    }
58839
  })
58840
58841
  SAXStream.prototype.write = function (data) {
58842
    if (typeof Buffer === 'function' &&
58843
      typeof Buffer.isBuffer === 'function' &&
58844
      Buffer.isBuffer(data)) {
58845
      if (!this._decoder) {
58846
        var SD = (__webpack_require__(2553)/* .StringDecoder */ .s)
58847
        this._decoder = new SD('utf8')
58848
      }
58849
      data = this._decoder.write(data)
58850
    }
58851
58852
    this._parser.write(data.toString())
58853
    this.emit('data', data)
58854
    return true
58855
  }
58856
58857
  SAXStream.prototype.end = function (chunk) {
58858
    if (chunk && chunk.length) {
58859
      this.write(chunk)
58860
    }
58861
    this._parser.end()
58862
    return true
58863
  }
58864
58865
  SAXStream.prototype.on = function (ev, handler) {
58866
    var me = this
58867
    if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {
58868
      me._parser['on' + ev] = function () {
58869
        var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)
58870
        args.splice(0, 0, ev)
58871
        me.emit.apply(me, args)
58872
      }
58873
    }
58874
58875
    return Stream.prototype.on.call(me, ev, handler)
58876
  }
58877
58878
  // this really needs to be replaced with character classes.
58879
  // XML allows all manner of ridiculous numbers and digits.
58880
  var CDATA = '[CDATA['
58881
  var DOCTYPE = 'DOCTYPE'
58882
  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
58883
  var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'
58884
  var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
58885
58886
  // http://www.w3.org/TR/REC-xml/#NT-NameStartChar
58887
  // This implementation works on strings, a single character at a time
58888
  // as such, it cannot ever support astral-plane characters (10000-EFFFF)
58889
  // without a significant breaking change to either this  parser, or the
58890
  // JavaScript language.  Implementation of an emoji-capable xml parser
58891
  // is left as an exercise for the reader.
58892
  var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
58893
58894
  var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
58895
58896
  var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/
58897
  var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/
58898
58899
  function isWhitespace (c) {
58900
    return c === ' ' || c === '\n' || c === '\r' || c === '\t'
58901
  }
58902
58903
  function isQuote (c) {
58904
    return c === '"' || c === '\''
58905
  }
58906
58907
  function isAttribEnd (c) {
58908
    return c === '>' || isWhitespace(c)
58909
  }
58910
58911
  function isMatch (regex, c) {
58912
    return regex.test(c)
58913
  }
58914
58915
  function notMatch (regex, c) {
58916
    return !isMatch(regex, c)
58917
  }
58918
58919
  var S = 0
58920
  sax.STATE = {
58921
    BEGIN: S++, // leading byte order mark or whitespace
58922
    BEGIN_WHITESPACE: S++, // leading whitespace
58923
    TEXT: S++, // general stuff
58924
    TEXT_ENTITY: S++, // &amp and such.
58925
    OPEN_WAKA: S++, // <
58926
    SGML_DECL: S++, // <!BLARG
58927
    SGML_DECL_QUOTED: S++, // <!BLARG foo "bar
58928
    DOCTYPE: S++, // <!DOCTYPE
58929
    DOCTYPE_QUOTED: S++, // <!DOCTYPE "//blah
58930
    DOCTYPE_DTD: S++, // <!DOCTYPE "//blah" [ ...
58931
    DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE "//blah" [ "foo
58932
    COMMENT_STARTING: S++, // <!-
58933
    COMMENT: S++, // <!--
58934
    COMMENT_ENDING: S++, // <!-- blah -
58935
    COMMENT_ENDED: S++, // <!-- blah --
58936
    CDATA: S++, // <![CDATA[ something
58937
    CDATA_ENDING: S++, // ]
58938
    CDATA_ENDING_2: S++, // ]]
58939
    PROC_INST: S++, // <?hi
58940
    PROC_INST_BODY: S++, // <?hi there
58941
    PROC_INST_ENDING: S++, // <?hi "there" ?
58942
    OPEN_TAG: S++, // <strong
58943
    OPEN_TAG_SLASH: S++, // <strong /
58944
    ATTRIB: S++, // <a
58945
    ATTRIB_NAME: S++, // <a foo
58946
    ATTRIB_NAME_SAW_WHITE: S++, // <a foo _
58947
    ATTRIB_VALUE: S++, // <a foo=
58948
    ATTRIB_VALUE_QUOTED: S++, // <a foo="bar
58949
    ATTRIB_VALUE_CLOSED: S++, // <a foo="bar"
58950
    ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar
58951
    ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar="&quot;"
58952
    ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot
58953
    CLOSE_TAG: S++, // </a
58954
    CLOSE_TAG_SAW_WHITE: S++, // </a   >
58955
    SCRIPT: S++, // <script> ...
58956
    SCRIPT_ENDING: S++ // <script> ... <
58957
  }
58958
58959
  sax.XML_ENTITIES = {
58960
    'amp': '&',
58961
    'gt': '>',
58962
    'lt': '<',
58963
    'quot': '"',
58964
    'apos': "'"
58965
  }
58966
58967
  sax.ENTITIES = {
58968
    'amp': '&',
58969
    'gt': '>',
58970
    'lt': '<',
58971
    'quot': '"',
58972
    'apos': "'",
58973
    'AElig': 198,
58974
    'Aacute': 193,
58975
    'Acirc': 194,
58976
    'Agrave': 192,
58977
    'Aring': 197,
58978
    'Atilde': 195,
58979
    'Auml': 196,
58980
    'Ccedil': 199,
58981
    'ETH': 208,
58982
    'Eacute': 201,
58983
    'Ecirc': 202,
58984
    'Egrave': 200,
58985
    'Euml': 203,
58986
    'Iacute': 205,
58987
    'Icirc': 206,
58988
    'Igrave': 204,
58989
    'Iuml': 207,
58990
    'Ntilde': 209,
58991
    'Oacute': 211,
58992
    'Ocirc': 212,
58993
    'Ograve': 210,
58994
    'Oslash': 216,
58995
    'Otilde': 213,
58996
    'Ouml': 214,
58997
    'THORN': 222,
58998
    'Uacute': 218,
58999
    'Ucirc': 219,
59000
    'Ugrave': 217,
59001
    'Uuml': 220,
59002
    'Yacute': 221,
59003
    'aacute': 225,
59004
    'acirc': 226,
59005
    'aelig': 230,
59006
    'agrave': 224,
59007
    'aring': 229,
59008
    'atilde': 227,
59009
    'auml': 228,
59010
    'ccedil': 231,
59011
    'eacute': 233,
59012
    'ecirc': 234,
59013
    'egrave': 232,
59014
    'eth': 240,
59015
    'euml': 235,
59016
    'iacute': 237,
59017
    'icirc': 238,
59018
    'igrave': 236,
59019
    'iuml': 239,
59020
    'ntilde': 241,
59021
    'oacute': 243,
59022
    'ocirc': 244,
59023
    'ograve': 242,
59024
    'oslash': 248,
59025
    'otilde': 245,
59026
    'ouml': 246,
59027
    'szlig': 223,
59028
    'thorn': 254,
59029
    'uacute': 250,
59030
    'ucirc': 251,
59031
    'ugrave': 249,
59032
    'uuml': 252,
59033
    'yacute': 253,
59034
    'yuml': 255,
59035
    'copy': 169,
59036
    'reg': 174,
59037
    'nbsp': 160,
59038
    'iexcl': 161,
59039
    'cent': 162,
59040
    'pound': 163,
59041
    'curren': 164,
59042
    'yen': 165,
59043
    'brvbar': 166,
59044
    'sect': 167,
59045
    'uml': 168,
59046
    'ordf': 170,
59047
    'laquo': 171,
59048
    'not': 172,
59049
    'shy': 173,
59050
    'macr': 175,
59051
    'deg': 176,
59052
    'plusmn': 177,
59053
    'sup1': 185,
59054
    'sup2': 178,
59055
    'sup3': 179,
59056
    'acute': 180,
59057
    'micro': 181,
59058
    'para': 182,
59059
    'middot': 183,
59060
    'cedil': 184,
59061
    'ordm': 186,
59062
    'raquo': 187,
59063
    'frac14': 188,
59064
    'frac12': 189,
59065
    'frac34': 190,
59066
    'iquest': 191,
59067
    'times': 215,
59068
    'divide': 247,
59069
    'OElig': 338,
59070
    'oelig': 339,
59071
    'Scaron': 352,
59072
    'scaron': 353,
59073
    'Yuml': 376,
59074
    'fnof': 402,
59075
    'circ': 710,
59076
    'tilde': 732,
59077
    'Alpha': 913,
59078
    'Beta': 914,
59079
    'Gamma': 915,
59080
    'Delta': 916,
59081
    'Epsilon': 917,
59082
    'Zeta': 918,
59083
    'Eta': 919,
59084
    'Theta': 920,
59085
    'Iota': 921,
59086
    'Kappa': 922,
59087
    'Lambda': 923,
59088
    'Mu': 924,
59089
    'Nu': 925,
59090
    'Xi': 926,
59091
    'Omicron': 927,
59092
    'Pi': 928,
59093
    'Rho': 929,
59094
    'Sigma': 931,
59095
    'Tau': 932,
59096
    'Upsilon': 933,
59097
    'Phi': 934,
59098
    'Chi': 935,
59099
    'Psi': 936,
59100
    'Omega': 937,
59101
    'alpha': 945,
59102
    'beta': 946,
59103
    'gamma': 947,
59104
    'delta': 948,
59105
    'epsilon': 949,
59106
    'zeta': 950,
59107
    'eta': 951,
59108
    'theta': 952,
59109
    'iota': 953,
59110
    'kappa': 954,
59111
    'lambda': 955,
59112
    'mu': 956,
59113
    'nu': 957,
59114
    'xi': 958,
59115
    'omicron': 959,
59116
    'pi': 960,
59117
    'rho': 961,
59118
    'sigmaf': 962,
59119
    'sigma': 963,
59120
    'tau': 964,
59121
    'upsilon': 965,
59122
    'phi': 966,
59123
    'chi': 967,
59124
    'psi': 968,
59125
    'omega': 969,
59126
    'thetasym': 977,
59127
    'upsih': 978,
59128
    'piv': 982,
59129
    'ensp': 8194,
59130
    'emsp': 8195,
59131
    'thinsp': 8201,
59132
    'zwnj': 8204,
59133
    'zwj': 8205,
59134
    'lrm': 8206,
59135
    'rlm': 8207,
59136
    'ndash': 8211,
59137
    'mdash': 8212,
59138
    'lsquo': 8216,
59139
    'rsquo': 8217,
59140
    'sbquo': 8218,
59141
    'ldquo': 8220,
59142
    'rdquo': 8221,
59143
    'bdquo': 8222,
59144
    'dagger': 8224,
59145
    'Dagger': 8225,
59146
    'bull': 8226,
59147
    'hellip': 8230,
59148
    'permil': 8240,
59149
    'prime': 8242,
59150
    'Prime': 8243,
59151
    'lsaquo': 8249,
59152
    'rsaquo': 8250,
59153
    'oline': 8254,
59154
    'frasl': 8260,
59155
    'euro': 8364,
59156
    'image': 8465,
59157
    'weierp': 8472,
59158
    'real': 8476,
59159
    'trade': 8482,
59160
    'alefsym': 8501,
59161
    'larr': 8592,
59162
    'uarr': 8593,
59163
    'rarr': 8594,
59164
    'darr': 8595,
59165
    'harr': 8596,
59166
    'crarr': 8629,
59167
    'lArr': 8656,
59168
    'uArr': 8657,
59169
    'rArr': 8658,
59170
    'dArr': 8659,
59171
    'hArr': 8660,
59172
    'forall': 8704,
59173
    'part': 8706,
59174
    'exist': 8707,
59175
    'empty': 8709,
59176
    'nabla': 8711,
59177
    'isin': 8712,
59178
    'notin': 8713,
59179
    'ni': 8715,
59180
    'prod': 8719,
59181
    'sum': 8721,
59182
    'minus': 8722,
59183
    'lowast': 8727,
59184
    'radic': 8730,
59185
    'prop': 8733,
59186
    'infin': 8734,
59187
    'ang': 8736,
59188
    'and': 8743,
59189
    'or': 8744,
59190
    'cap': 8745,
59191
    'cup': 8746,
59192
    'int': 8747,
59193
    'there4': 8756,
59194
    'sim': 8764,
59195
    'cong': 8773,
59196
    'asymp': 8776,
59197
    'ne': 8800,
59198
    'equiv': 8801,
59199
    'le': 8804,
59200
    'ge': 8805,
59201
    'sub': 8834,
59202
    'sup': 8835,
59203
    'nsub': 8836,
59204
    'sube': 8838,
59205
    'supe': 8839,
59206
    'oplus': 8853,
59207
    'otimes': 8855,
59208
    'perp': 8869,
59209
    'sdot': 8901,
59210
    'lceil': 8968,
59211
    'rceil': 8969,
59212
    'lfloor': 8970,
59213
    'rfloor': 8971,
59214
    'lang': 9001,
59215
    'rang': 9002,
59216
    'loz': 9674,
59217
    'spades': 9824,
59218
    'clubs': 9827,
59219
    'hearts': 9829,
59220
    'diams': 9830
59221
  }
59222
59223
  Object.keys(sax.ENTITIES).forEach(function (key) {
59224
    var e = sax.ENTITIES[key]
59225
    var s = typeof e === 'number' ? String.fromCharCode(e) : e
59226
    sax.ENTITIES[key] = s
59227
  })
59228
59229
  for (var s in sax.STATE) {
59230
    sax.STATE[sax.STATE[s]] = s
59231
  }
59232
59233
  // shorthand
59234
  S = sax.STATE
59235
59236
  function emit (parser, event, data) {
59237
    parser[event] && parser[event](data)
59238
  }
59239
59240
  function emitNode (parser, nodeType, data) {
59241
    if (parser.textNode) closeText(parser)
59242
    emit(parser, nodeType, data)
59243
  }
59244
59245
  function closeText (parser) {
59246
    parser.textNode = textopts(parser.opt, parser.textNode)
59247
    if (parser.textNode) emit(parser, 'ontext', parser.textNode)
59248
    parser.textNode = ''
59249
  }
59250
59251
  function textopts (opt, text) {
59252
    if (opt.trim) text = text.trim()
59253
    if (opt.normalize) text = text.replace(/\s+/g, ' ')
59254
    return text
59255
  }
59256
59257
  function error (parser, er) {
59258
    closeText(parser)
59259
    if (parser.trackPosition) {
59260
      er += '\nLine: ' + parser.line +
59261
        '\nColumn: ' + parser.column +
59262
        '\nChar: ' + parser.c
59263
    }
59264
    er = new Error(er)
59265
    parser.error = er
59266
    emit(parser, 'onerror', er)
59267
    return parser
59268
  }
59269
59270
  function end (parser) {
59271
    if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')
59272
    if ((parser.state !== S.BEGIN) &&
59273
      (parser.state !== S.BEGIN_WHITESPACE) &&
59274
      (parser.state !== S.TEXT)) {
59275
      error(parser, 'Unexpected end')
59276
    }
59277
    closeText(parser)
59278
    parser.c = ''
59279
    parser.closed = true
59280
    emit(parser, 'onend')
59281
    SAXParser.call(parser, parser.strict, parser.opt)
59282
    return parser
59283
  }
59284
59285
  function strictFail (parser, message) {
59286
    if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {
59287
      throw new Error('bad call to strictFail')
59288
    }
59289
    if (parser.strict) {
59290
      error(parser, message)
59291
    }
59292
  }
59293
59294
  function newTag (parser) {
59295
    if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()
59296
    var parent = parser.tags[parser.tags.length - 1] || parser
59297
    var tag = parser.tag = { name: parser.tagName, attributes: {} }
59298
59299
    // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
59300
    if (parser.opt.xmlns) {
59301
      tag.ns = parent.ns
59302
    }
59303
    parser.attribList.length = 0
59304
    emitNode(parser, 'onopentagstart', tag)
59305
  }
59306
59307
  function qname (name, attribute) {
59308
    var i = name.indexOf(':')
59309
    var qualName = i < 0 ? [ '', name ] : name.split(':')
59310
    var prefix = qualName[0]
59311
    var local = qualName[1]
59312
59313
    // <x "xmlns"="http://foo">
59314
    if (attribute && name === 'xmlns') {
59315
      prefix = 'xmlns'
59316
      local = ''
59317
    }
59318
59319
    return { prefix: prefix, local: local }
59320
  }
59321
59322
  function attrib (parser) {
59323
    if (!parser.strict) {
59324
      parser.attribName = parser.attribName[parser.looseCase]()
59325
    }
59326
59327
    if (parser.attribList.indexOf(parser.attribName) !== -1 ||
59328
      parser.tag.attributes.hasOwnProperty(parser.attribName)) {
59329
      parser.attribName = parser.attribValue = ''
59330
      return
59331
    }
59332
59333
    if (parser.opt.xmlns) {
59334
      var qn = qname(parser.attribName, true)
59335
      var prefix = qn.prefix
59336
      var local = qn.local
59337
59338
      if (prefix === 'xmlns') {
59339
        // namespace binding attribute. push the binding into scope
59340
        if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {
59341
          strictFail(parser,
59342
            'xml: prefix must be bound to ' + XML_NAMESPACE + '\n' +
59343
            'Actual: ' + parser.attribValue)
59344
        } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {
59345
          strictFail(parser,
59346
            'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\n' +
59347
            'Actual: ' + parser.attribValue)
59348
        } else {
59349
          var tag = parser.tag
59350
          var parent = parser.tags[parser.tags.length - 1] || parser
59351
          if (tag.ns === parent.ns) {
59352
            tag.ns = Object.create(parent.ns)
59353
          }
59354
          tag.ns[local] = parser.attribValue
59355
        }
59356
      }
59357
59358
      // defer onattribute events until all attributes have been seen
59359
      // so any new bindings can take effect. preserve attribute order
59360
      // so deferred events can be emitted in document order
59361
      parser.attribList.push([parser.attribName, parser.attribValue])
59362
    } else {
59363
      // in non-xmlns mode, we can emit the event right away
59364
      parser.tag.attributes[parser.attribName] = parser.attribValue
59365
      emitNode(parser, 'onattribute', {
59366
        name: parser.attribName,
59367
        value: parser.attribValue
59368
      })
59369
    }
59370
59371
    parser.attribName = parser.attribValue = ''
59372
  }
59373
59374
  function openTag (parser, selfClosing) {
59375
    if (parser.opt.xmlns) {
59376
      // emit namespace binding events
59377
      var tag = parser.tag
59378
59379
      // add namespace info to tag
59380
      var qn = qname(parser.tagName)
59381
      tag.prefix = qn.prefix
59382
      tag.local = qn.local
59383
      tag.uri = tag.ns[qn.prefix] || ''
59384
59385
      if (tag.prefix && !tag.uri) {
59386
        strictFail(parser, 'Unbound namespace prefix: ' +
59387
          JSON.stringify(parser.tagName))
59388
        tag.uri = qn.prefix
59389
      }
59390
59391
      var parent = parser.tags[parser.tags.length - 1] || parser
59392
      if (tag.ns && parent.ns !== tag.ns) {
59393
        Object.keys(tag.ns).forEach(function (p) {
59394
          emitNode(parser, 'onopennamespace', {
59395
            prefix: p,
59396
            uri: tag.ns[p]
59397
          })
59398
        })
59399
      }
59400
59401
      // handle deferred onattribute events
59402
      // Note: do not apply default ns to attributes:
59403
      //   http://www.w3.org/TR/REC-xml-names/#defaulting
59404
      for (var i = 0, l = parser.attribList.length; i < l; i++) {
59405
        var nv = parser.attribList[i]
59406
        var name = nv[0]
59407
        var value = nv[1]
59408
        var qualName = qname(name, true)
59409
        var prefix = qualName.prefix
59410
        var local = qualName.local
59411
        var uri = prefix === '' ? '' : (tag.ns[prefix] || '')
59412
        var a = {
59413
          name: name,
59414
          value: value,
59415
          prefix: prefix,
59416
          local: local,
59417
          uri: uri
59418
        }
59419
59420
        // if there's any attributes with an undefined namespace,
59421
        // then fail on them now.
59422
        if (prefix && prefix !== 'xmlns' && !uri) {
59423
          strictFail(parser, 'Unbound namespace prefix: ' +
59424
            JSON.stringify(prefix))
59425
          a.uri = prefix
59426
        }
59427
        parser.tag.attributes[name] = a
59428
        emitNode(parser, 'onattribute', a)
59429
      }
59430
      parser.attribList.length = 0
59431
    }
59432
59433
    parser.tag.isSelfClosing = !!selfClosing
59434
59435
    // process the tag
59436
    parser.sawRoot = true
59437
    parser.tags.push(parser.tag)
59438
    emitNode(parser, 'onopentag', parser.tag)
59439
    if (!selfClosing) {
59440
      // special case for <script> in non-strict mode.
59441
      if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {
59442
        parser.state = S.SCRIPT
59443
      } else {
59444
        parser.state = S.TEXT
59445
      }
59446
      parser.tag = null
59447
      parser.tagName = ''
59448
    }
59449
    parser.attribName = parser.attribValue = ''
59450
    parser.attribList.length = 0
59451
  }
59452
59453
  function closeTag (parser) {
59454
    if (!parser.tagName) {
59455
      strictFail(parser, 'Weird empty close tag.')
59456
      parser.textNode += '</>'
59457
      parser.state = S.TEXT
59458
      return
59459
    }
59460
59461
    if (parser.script) {
59462
      if (parser.tagName !== 'script') {
59463
        parser.script += '</' + parser.tagName + '>'
59464
        parser.tagName = ''
59465
        parser.state = S.SCRIPT
59466
        return
59467
      }
59468
      emitNode(parser, 'onscript', parser.script)
59469
      parser.script = ''
59470
    }
59471
59472
    // first make sure that the closing tag actually exists.
59473
    // <a><b></c></b></a> will close everything, otherwise.
59474
    var t = parser.tags.length
59475
    var tagName = parser.tagName
59476
    if (!parser.strict) {
59477
      tagName = tagName[parser.looseCase]()
59478
    }
59479
    var closeTo = tagName
59480
    while (t--) {
59481
      var close = parser.tags[t]
59482
      if (close.name !== closeTo) {
59483
        // fail the first time in strict mode
59484
        strictFail(parser, 'Unexpected close tag')
59485
      } else {
59486
        break
59487
      }
59488
    }
59489
59490
    // didn't find it.  we already failed for strict, so just abort.
59491
    if (t < 0) {
59492
      strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)
59493
      parser.textNode += '</' + parser.tagName + '>'
59494
      parser.state = S.TEXT
59495
      return
59496
    }
59497
    parser.tagName = tagName
59498
    var s = parser.tags.length
59499
    while (s-- > t) {
59500
      var tag = parser.tag = parser.tags.pop()
59501
      parser.tagName = parser.tag.name
59502
      emitNode(parser, 'onclosetag', parser.tagName)
59503
59504
      var x = {}
59505
      for (var i in tag.ns) {
59506
        x[i] = tag.ns[i]
59507
      }
59508
59509
      var parent = parser.tags[parser.tags.length - 1] || parser
59510
      if (parser.opt.xmlns && tag.ns !== parent.ns) {
59511
        // remove namespace bindings introduced by tag
59512
        Object.keys(tag.ns).forEach(function (p) {
59513
          var n = tag.ns[p]
59514
          emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })
59515
        })
59516
      }
59517
    }
59518
    if (t === 0) parser.closedRoot = true
59519
    parser.tagName = parser.attribValue = parser.attribName = ''
59520
    parser.attribList.length = 0
59521
    parser.state = S.TEXT
59522
  }
59523
59524
  function parseEntity (parser) {
59525
    var entity = parser.entity
59526
    var entityLC = entity.toLowerCase()
59527
    var num
59528
    var numStr = ''
59529
59530
    if (parser.ENTITIES[entity]) {
59531
      return parser.ENTITIES[entity]
59532
    }
59533
    if (parser.ENTITIES[entityLC]) {
59534
      return parser.ENTITIES[entityLC]
59535
    }
59536
    entity = entityLC
59537
    if (entity.charAt(0) === '#') {
59538
      if (entity.charAt(1) === 'x') {
59539
        entity = entity.slice(2)
59540
        num = parseInt(entity, 16)
59541
        numStr = num.toString(16)
59542
      } else {
59543
        entity = entity.slice(1)
59544
        num = parseInt(entity, 10)
59545
        numStr = num.toString(10)
59546
      }
59547
    }
59548
    entity = entity.replace(/^0+/, '')
59549
    if (isNaN(num) || numStr.toLowerCase() !== entity) {
59550
      strictFail(parser, 'Invalid character entity')
59551
      return '&' + parser.entity + ';'
59552
    }
59553
59554
    return String.fromCodePoint(num)
59555
  }
59556
59557
  function beginWhiteSpace (parser, c) {
59558
    if (c === '<') {
59559
      parser.state = S.OPEN_WAKA
59560
      parser.startTagPosition = parser.position
59561
    } else if (!isWhitespace(c)) {
59562
      // have to process this as a text node.
59563
      // weird, but happens.
59564
      strictFail(parser, 'Non-whitespace before first tag.')
59565
      parser.textNode = c
59566
      parser.state = S.TEXT
59567
    }
59568
  }
59569
59570
  function charAt (chunk, i) {
59571
    var result = ''
59572
    if (i < chunk.length) {
59573
      result = chunk.charAt(i)
59574
    }
59575
    return result
59576
  }
59577
59578
  function write (chunk) {
59579
    var parser = this
59580
    if (this.error) {
59581
      throw this.error
59582
    }
59583
    if (parser.closed) {
59584
      return error(parser,
59585
        'Cannot write after close. Assign an onready handler.')
59586
    }
59587
    if (chunk === null) {
59588
      return end(parser)
59589
    }
59590
    if (typeof chunk === 'object') {
59591
      chunk = chunk.toString()
59592
    }
59593
    var i = 0
59594
    var c = ''
59595
    while (true) {
59596
      c = charAt(chunk, i++)
59597
      parser.c = c
59598
59599
      if (!c) {
59600
        break
59601
      }
59602
59603
      if (parser.trackPosition) {
59604
        parser.position++
59605
        if (c === '\n') {
59606
          parser.line++
59607
          parser.column = 0
59608
        } else {
59609
          parser.column++
59610
        }
59611
      }
59612
59613
      switch (parser.state) {
59614
        case S.BEGIN:
59615
          parser.state = S.BEGIN_WHITESPACE
59616
          if (c === '\uFEFF') {
59617
            continue
59618
          }
59619
          beginWhiteSpace(parser, c)
59620
          continue
59621
59622
        case S.BEGIN_WHITESPACE:
59623
          beginWhiteSpace(parser, c)
59624
          continue
59625
59626
        case S.TEXT:
59627
          if (parser.sawRoot && !parser.closedRoot) {
59628
            var starti = i - 1
59629
            while (c && c !== '<' && c !== '&') {
59630
              c = charAt(chunk, i++)
59631
              if (c && parser.trackPosition) {
59632
                parser.position++
59633
                if (c === '\n') {
59634
                  parser.line++
59635
                  parser.column = 0
59636
                } else {
59637
                  parser.column++
59638
                }
59639
              }
59640
            }
59641
            parser.textNode += chunk.substring(starti, i - 1)
59642
          }
59643
          if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
59644
            parser.state = S.OPEN_WAKA
59645
            parser.startTagPosition = parser.position
59646
          } else {
59647
            if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {
59648
              strictFail(parser, 'Text data outside of root node.')
59649
            }
59650
            if (c === '&') {
59651
              parser.state = S.TEXT_ENTITY
59652
            } else {
59653
              parser.textNode += c
59654
            }
59655
          }
59656
          continue
59657
59658
        case S.SCRIPT:
59659
          // only non-strict
59660
          if (c === '<') {
59661
            parser.state = S.SCRIPT_ENDING
59662
          } else {
59663
            parser.script += c
59664
          }
59665
          continue
59666
59667
        case S.SCRIPT_ENDING:
59668
          if (c === '/') {
59669
            parser.state = S.CLOSE_TAG
59670
          } else {
59671
            parser.script += '<' + c
59672
            parser.state = S.SCRIPT
59673
          }
59674
          continue
59675
59676
        case S.OPEN_WAKA:
59677
          // either a /, ?, !, or text is coming next.
59678
          if (c === '!') {
59679
            parser.state = S.SGML_DECL
59680
            parser.sgmlDecl = ''
59681
          } else if (isWhitespace(c)) {
59682
            // wait for it...
59683
          } else if (isMatch(nameStart, c)) {
59684
            parser.state = S.OPEN_TAG
59685
            parser.tagName = c
59686
          } else if (c === '/') {
59687
            parser.state = S.CLOSE_TAG
59688
            parser.tagName = ''
59689
          } else if (c === '?') {
59690
            parser.state = S.PROC_INST
59691
            parser.procInstName = parser.procInstBody = ''
59692
          } else {
59693
            strictFail(parser, 'Unencoded <')
59694
            // if there was some whitespace, then add that in.
59695
            if (parser.startTagPosition + 1 < parser.position) {
59696
              var pad = parser.position - parser.startTagPosition
59697
              c = new Array(pad).join(' ') + c
59698
            }
59699
            parser.textNode += '<' + c
59700
            parser.state = S.TEXT
59701
          }
59702
          continue
59703
59704
        case S.SGML_DECL:
59705
          if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {
59706
            emitNode(parser, 'onopencdata')
59707
            parser.state = S.CDATA
59708
            parser.sgmlDecl = ''
59709
            parser.cdata = ''
59710
          } else if (parser.sgmlDecl + c === '--') {
59711
            parser.state = S.COMMENT
59712
            parser.comment = ''
59713
            parser.sgmlDecl = ''
59714
          } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {
59715
            parser.state = S.DOCTYPE
59716
            if (parser.doctype || parser.sawRoot) {
59717
              strictFail(parser,
59718
                'Inappropriately located doctype declaration')
59719
            }
59720
            parser.doctype = ''
59721
            parser.sgmlDecl = ''
59722
          } else if (c === '>') {
59723
            emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)
59724
            parser.sgmlDecl = ''
59725
            parser.state = S.TEXT
59726
          } else if (isQuote(c)) {
59727
            parser.state = S.SGML_DECL_QUOTED
59728
            parser.sgmlDecl += c
59729
          } else {
59730
            parser.sgmlDecl += c
59731
          }
59732
          continue
59733
59734
        case S.SGML_DECL_QUOTED:
59735
          if (c === parser.q) {
59736
            parser.state = S.SGML_DECL
59737
            parser.q = ''
59738
          }
59739
          parser.sgmlDecl += c
59740
          continue
59741
59742
        case S.DOCTYPE:
59743
          if (c === '>') {
59744
            parser.state = S.TEXT
59745
            emitNode(parser, 'ondoctype', parser.doctype)
59746
            parser.doctype = true // just remember that we saw it.
59747
          } else {
59748
            parser.doctype += c
59749
            if (c === '[') {
59750
              parser.state = S.DOCTYPE_DTD
59751
            } else if (isQuote(c)) {
59752
              parser.state = S.DOCTYPE_QUOTED
59753
              parser.q = c
59754
            }
59755
          }
59756
          continue
59757
59758
        case S.DOCTYPE_QUOTED:
59759
          parser.doctype += c
59760
          if (c === parser.q) {
59761
            parser.q = ''
59762
            parser.state = S.DOCTYPE
59763
          }
59764
          continue
59765
59766
        case S.DOCTYPE_DTD:
59767
          parser.doctype += c
59768
          if (c === ']') {
59769
            parser.state = S.DOCTYPE
59770
          } else if (isQuote(c)) {
59771
            parser.state = S.DOCTYPE_DTD_QUOTED
59772
            parser.q = c
59773
          }
59774
          continue
59775
59776
        case S.DOCTYPE_DTD_QUOTED:
59777
          parser.doctype += c
59778
          if (c === parser.q) {
59779
            parser.state = S.DOCTYPE_DTD
59780
            parser.q = ''
59781
          }
59782
          continue
59783
59784
        case S.COMMENT:
59785
          if (c === '-') {
59786
            parser.state = S.COMMENT_ENDING
59787
          } else {
59788
            parser.comment += c
59789
          }
59790
          continue
59791
59792
        case S.COMMENT_ENDING:
59793
          if (c === '-') {
59794
            parser.state = S.COMMENT_ENDED
59795
            parser.comment = textopts(parser.opt, parser.comment)
59796
            if (parser.comment) {
59797
              emitNode(parser, 'oncomment', parser.comment)
59798
            }
59799
            parser.comment = ''
59800
          } else {
59801
            parser.comment += '-' + c
59802
            parser.state = S.COMMENT
59803
          }
59804
          continue
59805
59806
        case S.COMMENT_ENDED:
59807
          if (c !== '>') {
59808
            strictFail(parser, 'Malformed comment')
59809
            // allow <!-- blah -- bloo --> in non-strict mode,
59810
            // which is a comment of " blah -- bloo "
59811
            parser.comment += '--' + c
59812
            parser.state = S.COMMENT
59813
          } else {
59814
            parser.state = S.TEXT
59815
          }
59816
          continue
59817
59818
        case S.CDATA:
59819
          if (c === ']') {
59820
            parser.state = S.CDATA_ENDING
59821
          } else {
59822
            parser.cdata += c
59823
          }
59824
          continue
59825
59826
        case S.CDATA_ENDING:
59827
          if (c === ']') {
59828
            parser.state = S.CDATA_ENDING_2
59829
          } else {
59830
            parser.cdata += ']' + c
59831
            parser.state = S.CDATA
59832
          }
59833
          continue
59834
59835
        case S.CDATA_ENDING_2:
59836
          if (c === '>') {
59837
            if (parser.cdata) {
59838
              emitNode(parser, 'oncdata', parser.cdata)
59839
            }
59840
            emitNode(parser, 'onclosecdata')
59841
            parser.cdata = ''
59842
            parser.state = S.TEXT
59843
          } else if (c === ']') {
59844
            parser.cdata += ']'
59845
          } else {
59846
            parser.cdata += ']]' + c
59847
            parser.state = S.CDATA
59848
          }
59849
          continue
59850
59851
        case S.PROC_INST:
59852
          if (c === '?') {
59853
            parser.state = S.PROC_INST_ENDING
59854
          } else if (isWhitespace(c)) {
59855
            parser.state = S.PROC_INST_BODY
59856
          } else {
59857
            parser.procInstName += c
59858
          }
59859
          continue
59860
59861
        case S.PROC_INST_BODY:
59862
          if (!parser.procInstBody && isWhitespace(c)) {
59863
            continue
59864
          } else if (c === '?') {
59865
            parser.state = S.PROC_INST_ENDING
59866
          } else {
59867
            parser.procInstBody += c
59868
          }
59869
          continue
59870
59871
        case S.PROC_INST_ENDING:
59872
          if (c === '>') {
59873
            emitNode(parser, 'onprocessinginstruction', {
59874
              name: parser.procInstName,
59875
              body: parser.procInstBody
59876
            })
59877
            parser.procInstName = parser.procInstBody = ''
59878
            parser.state = S.TEXT
59879
          } else {
59880
            parser.procInstBody += '?' + c
59881
            parser.state = S.PROC_INST_BODY
59882
          }
59883
          continue
59884
59885
        case S.OPEN_TAG:
59886
          if (isMatch(nameBody, c)) {
59887
            parser.tagName += c
59888
          } else {
59889
            newTag(parser)
59890
            if (c === '>') {
59891
              openTag(parser)
59892
            } else if (c === '/') {
59893
              parser.state = S.OPEN_TAG_SLASH
59894
            } else {
59895
              if (!isWhitespace(c)) {
59896
                strictFail(parser, 'Invalid character in tag name')
59897
              }
59898
              parser.state = S.ATTRIB
59899
            }
59900
          }
59901
          continue
59902
59903
        case S.OPEN_TAG_SLASH:
59904
          if (c === '>') {
59905
            openTag(parser, true)
59906
            closeTag(parser)
59907
          } else {
59908
            strictFail(parser, 'Forward-slash in opening tag not followed by >')
59909
            parser.state = S.ATTRIB
59910
          }
59911
          continue
59912
59913
        case S.ATTRIB:
59914
          // haven't read the attribute name yet.
59915
          if (isWhitespace(c)) {
59916
            continue
59917
          } else if (c === '>') {
59918
            openTag(parser)
59919
          } else if (c === '/') {
59920
            parser.state = S.OPEN_TAG_SLASH
59921
          } else if (isMatch(nameStart, c)) {
59922
            parser.attribName = c
59923
            parser.attribValue = ''
59924
            parser.state = S.ATTRIB_NAME
59925
          } else {
59926
            strictFail(parser, 'Invalid attribute name')
59927
          }
59928
          continue
59929
59930
        case S.ATTRIB_NAME:
59931
          if (c === '=') {
59932
            parser.state = S.ATTRIB_VALUE
59933
          } else if (c === '>') {
59934
            strictFail(parser, 'Attribute without value')
59935
            parser.attribValue = parser.attribName
59936
            attrib(parser)
59937
            openTag(parser)
59938
          } else if (isWhitespace(c)) {
59939
            parser.state = S.ATTRIB_NAME_SAW_WHITE
59940
          } else if (isMatch(nameBody, c)) {
59941
            parser.attribName += c
59942
          } else {
59943
            strictFail(parser, 'Invalid attribute name')
59944
          }
59945
          continue
59946
59947
        case S.ATTRIB_NAME_SAW_WHITE:
59948
          if (c === '=') {
59949
            parser.state = S.ATTRIB_VALUE
59950
          } else if (isWhitespace(c)) {
59951
            continue
59952
          } else {
59953
            strictFail(parser, 'Attribute without value')
59954
            parser.tag.attributes[parser.attribName] = ''
59955
            parser.attribValue = ''
59956
            emitNode(parser, 'onattribute', {
59957
              name: parser.attribName,
59958
              value: ''
59959
            })
59960
            parser.attribName = ''
59961
            if (c === '>') {
59962
              openTag(parser)
59963
            } else if (isMatch(nameStart, c)) {
59964
              parser.attribName = c
59965
              parser.state = S.ATTRIB_NAME
59966
            } else {
59967
              strictFail(parser, 'Invalid attribute name')
59968
              parser.state = S.ATTRIB
59969
            }
59970
          }
59971
          continue
59972
59973
        case S.ATTRIB_VALUE:
59974
          if (isWhitespace(c)) {
59975
            continue
59976
          } else if (isQuote(c)) {
59977
            parser.q = c
59978
            parser.state = S.ATTRIB_VALUE_QUOTED
59979
          } else {
59980
            strictFail(parser, 'Unquoted attribute value')
59981
            parser.state = S.ATTRIB_VALUE_UNQUOTED
59982
            parser.attribValue = c
59983
          }
59984
          continue
59985
59986
        case S.ATTRIB_VALUE_QUOTED:
59987
          if (c !== parser.q) {
59988
            if (c === '&') {
59989
              parser.state = S.ATTRIB_VALUE_ENTITY_Q
59990
            } else {
59991
              parser.attribValue += c
59992
            }
59993
            continue
59994
          }
59995
          attrib(parser)
59996
          parser.q = ''
59997
          parser.state = S.ATTRIB_VALUE_CLOSED
59998
          continue
59999
60000
        case S.ATTRIB_VALUE_CLOSED:
60001
          if (isWhitespace(c)) {
60002
            parser.state = S.ATTRIB
60003
          } else if (c === '>') {
60004
            openTag(parser)
60005
          } else if (c === '/') {
60006
            parser.state = S.OPEN_TAG_SLASH
60007
          } else if (isMatch(nameStart, c)) {
60008
            strictFail(parser, 'No whitespace between attributes')
60009
            parser.attribName = c
60010
            parser.attribValue = ''
60011
            parser.state = S.ATTRIB_NAME
60012
          } else {
60013
            strictFail(parser, 'Invalid attribute name')
60014
          }
60015
          continue
60016
60017
        case S.ATTRIB_VALUE_UNQUOTED:
60018
          if (!isAttribEnd(c)) {
60019
            if (c === '&') {
60020
              parser.state = S.ATTRIB_VALUE_ENTITY_U
60021
            } else {
60022
              parser.attribValue += c
60023
            }
60024
            continue
60025
          }
60026
          attrib(parser)
60027
          if (c === '>') {
60028
            openTag(parser)
60029
          } else {
60030
            parser.state = S.ATTRIB
60031
          }
60032
          continue
60033
60034
        case S.CLOSE_TAG:
60035
          if (!parser.tagName) {
60036
            if (isWhitespace(c)) {
60037
              continue
60038
            } else if (notMatch(nameStart, c)) {
60039
              if (parser.script) {
60040
                parser.script += '</' + c
60041
                parser.state = S.SCRIPT
60042
              } else {
60043
                strictFail(parser, 'Invalid tagname in closing tag.')
60044
              }
60045
            } else {
60046
              parser.tagName = c
60047
            }
60048
          } else if (c === '>') {
60049
            closeTag(parser)
60050
          } else if (isMatch(nameBody, c)) {
60051
            parser.tagName += c
60052
          } else if (parser.script) {
60053
            parser.script += '</' + parser.tagName
60054
            parser.tagName = ''
60055
            parser.state = S.SCRIPT
60056
          } else {
60057
            if (!isWhitespace(c)) {
60058
              strictFail(parser, 'Invalid tagname in closing tag')
60059
            }
60060
            parser.state = S.CLOSE_TAG_SAW_WHITE
60061
          }
60062
          continue
60063
60064
        case S.CLOSE_TAG_SAW_WHITE:
60065
          if (isWhitespace(c)) {
60066
            continue
60067
          }
60068
          if (c === '>') {
60069
            closeTag(parser)
60070
          } else {
60071
            strictFail(parser, 'Invalid characters in closing tag')
60072
          }
60073
          continue
60074
60075
        case S.TEXT_ENTITY:
60076
        case S.ATTRIB_VALUE_ENTITY_Q:
60077
        case S.ATTRIB_VALUE_ENTITY_U:
60078
          var returnState
60079
          var buffer
60080
          switch (parser.state) {
60081
            case S.TEXT_ENTITY:
60082
              returnState = S.TEXT
60083
              buffer = 'textNode'
60084
              break
60085
60086
            case S.ATTRIB_VALUE_ENTITY_Q:
60087
              returnState = S.ATTRIB_VALUE_QUOTED
60088
              buffer = 'attribValue'
60089
              break
60090
60091
            case S.ATTRIB_VALUE_ENTITY_U:
60092
              returnState = S.ATTRIB_VALUE_UNQUOTED
60093
              buffer = 'attribValue'
60094
              break
60095
          }
60096
60097
          if (c === ';') {
60098
            parser[buffer] += parseEntity(parser)
60099
            parser.entity = ''
60100
            parser.state = returnState
60101
          } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
60102
            parser.entity += c
60103
          } else {
60104
            strictFail(parser, 'Invalid character in entity name')
60105
            parser[buffer] += '&' + parser.entity + c
60106
            parser.entity = ''
60107
            parser.state = returnState
60108
          }
60109
60110
          continue
60111
60112
        default:
60113
          throw new Error(parser, 'Unknown state: ' + parser.state)
60114
      }
60115
    } // while
60116
60117
    if (parser.position >= parser.bufferCheckPosition) {
60118
      checkBufferLength(parser)
60119
    }
60120
    return parser
60121
  }
60122
60123
  /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
60124
  /* istanbul ignore next */
60125
  if (!String.fromCodePoint) {
60126
    (function () {
60127
      var stringFromCharCode = String.fromCharCode
60128
      var floor = Math.floor
60129
      var fromCodePoint = function () {
60130
        var MAX_SIZE = 0x4000
60131
        var codeUnits = []
60132
        var highSurrogate
60133
        var lowSurrogate
60134
        var index = -1
60135
        var length = arguments.length
60136
        if (!length) {
60137
          return ''
60138
        }
60139
        var result = ''
60140
        while (++index < length) {
60141
          var codePoint = Number(arguments[index])
60142
          if (
60143
            !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
60144
            codePoint < 0 || // not a valid Unicode code point
60145
            codePoint > 0x10FFFF || // not a valid Unicode code point
60146
            floor(codePoint) !== codePoint // not an integer
60147
          ) {
60148
            throw RangeError('Invalid code point: ' + codePoint)
60149
          }
60150
          if (codePoint <= 0xFFFF) { // BMP code point
60151
            codeUnits.push(codePoint)
60152
          } else { // Astral code point; split in surrogate halves
60153
            // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
60154
            codePoint -= 0x10000
60155
            highSurrogate = (codePoint >> 10) + 0xD800
60156
            lowSurrogate = (codePoint % 0x400) + 0xDC00
60157
            codeUnits.push(highSurrogate, lowSurrogate)
60158
          }
60159
          if (index + 1 === length || codeUnits.length > MAX_SIZE) {
60160
            result += stringFromCharCode.apply(null, codeUnits)
60161
            codeUnits.length = 0
60162
          }
60163
        }
60164
        return result
60165
      }
60166
      /* istanbul ignore next */
60167
      if (Object.defineProperty) {
60168
        Object.defineProperty(String, 'fromCodePoint', {
60169
          value: fromCodePoint,
60170
          configurable: true,
60171
          writable: true
60172
        })
60173
      } else {
60174
        String.fromCodePoint = fromCodePoint
60175
      }
60176
    }())
60177
  }
60178
})( false ? 0 : exports)
60179
60180
60181
/***/ }),
60182
60183
/***/ 2830:
60184
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
60185
60186
// Copyright Joyent, Inc. and other Node contributors.
60187
//
60188
// Permission is hereby granted, free of charge, to any person obtaining a
60189
// copy of this software and associated documentation files (the
60190
// "Software"), to deal in the Software without restriction, including
60191
// without limitation the rights to use, copy, modify, merge, publish,
60192
// distribute, sublicense, and/or sell copies of the Software, and to permit
60193
// persons to whom the Software is furnished to do so, subject to the
60194
// following conditions:
60195
//
60196
// The above copyright notice and this permission notice shall be included
60197
// in all copies or substantial portions of the Software.
60198
//
60199
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
60200
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
60201
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
60202
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
60203
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
60204
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
60205
// USE OR OTHER DEALINGS IN THE SOFTWARE.
60206
60207
module.exports = Stream;
60208
60209
var EE = (__webpack_require__(7187).EventEmitter);
60210
var inherits = __webpack_require__(5717);
60211
60212
inherits(Stream, EE);
60213
Stream.Readable = __webpack_require__(6577);
60214
Stream.Writable = __webpack_require__(323);
60215
Stream.Duplex = __webpack_require__(8656);
60216
Stream.Transform = __webpack_require__(4473);
60217
Stream.PassThrough = __webpack_require__(2366);
60218
Stream.finished = __webpack_require__(1086)
60219
Stream.pipeline = __webpack_require__(6472)
60220
60221
// Backwards-compat with node 0.4.x
60222
Stream.Stream = Stream;
60223
60224
60225
60226
// old-style streams.  Note that the pipe method (the only relevant
60227
// part of this class) is overridden in the Readable class.
60228
60229
function Stream() {
60230
  EE.call(this);
60231
}
60232
60233
Stream.prototype.pipe = function(dest, options) {
60234
  var source = this;
60235
60236
  function ondata(chunk) {
60237
    if (dest.writable) {
60238
      if (false === dest.write(chunk) && source.pause) {
60239
        source.pause();
60240
      }
60241
    }
60242
  }
60243
60244
  source.on('data', ondata);
60245
60246
  function ondrain() {
60247
    if (source.readable && source.resume) {
60248
      source.resume();
60249
    }
60250
  }
60251
60252
  dest.on('drain', ondrain);
60253
60254
  // If the 'end' option is not supplied, dest.end() will be called when
60255
  // source gets the 'end' or 'close' events.  Only dest.end() once.
60256
  if (!dest._isStdio && (!options || options.end !== false)) {
60257
    source.on('end', onend);
60258
    source.on('close', onclose);
60259
  }
60260
60261
  var didOnEnd = false;
60262
  function onend() {
60263
    if (didOnEnd) return;
60264
    didOnEnd = true;
60265
60266
    dest.end();
60267
  }
60268
60269
60270
  function onclose() {
60271
    if (didOnEnd) return;
60272
    didOnEnd = true;
60273
60274
    if (typeof dest.destroy === 'function') dest.destroy();
60275
  }
60276
60277
  // don't leave dangling pipes when there are errors.
60278
  function onerror(er) {
60279
    cleanup();
60280
    if (EE.listenerCount(this, 'error') === 0) {
60281
      throw er; // Unhandled stream error in pipe.
60282
    }
60283
  }
60284
60285
  source.on('error', onerror);
60286
  dest.on('error', onerror);
60287
60288
  // remove all the event listeners that were added.
60289
  function cleanup() {
60290
    source.removeListener('data', ondata);
60291
    dest.removeListener('drain', ondrain);
60292
60293
    source.removeListener('end', onend);
60294
    source.removeListener('close', onclose);
60295
60296
    source.removeListener('error', onerror);
60297
    dest.removeListener('error', onerror);
60298
60299
    source.removeListener('end', cleanup);
60300
    source.removeListener('close', cleanup);
60301
60302
    dest.removeListener('close', cleanup);
60303
  }
60304
60305
  source.on('end', cleanup);
60306
  source.on('close', cleanup);
60307
60308
  dest.on('close', cleanup);
60309
60310
  dest.emit('pipe', source);
60311
60312
  // Allow for unix-like usage: A.pipe(B).pipe(C)
60313
  return dest;
60314
};
60315
60316
60317
/***/ }),
60318
60319
/***/ 8106:
60320
/***/ (function(module) {
60321
60322
"use strict";
60323
60324
60325
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
60326
60327
var codes = {};
60328
60329
function createErrorType(code, message, Base) {
60330
  if (!Base) {
60331
    Base = Error;
60332
  }
60333
60334
  function getMessage(arg1, arg2, arg3) {
60335
    if (typeof message === 'string') {
60336
      return message;
60337
    } else {
60338
      return message(arg1, arg2, arg3);
60339
    }
60340
  }
60341
60342
  var NodeError =
60343
  /*#__PURE__*/
60344
  function (_Base) {
60345
    _inheritsLoose(NodeError, _Base);
60346
60347
    function NodeError(arg1, arg2, arg3) {
60348
      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;
60349
    }
60350
60351
    return NodeError;
60352
  }(Base);
60353
60354
  NodeError.prototype.name = Base.name;
60355
  NodeError.prototype.code = code;
60356
  codes[code] = NodeError;
60357
} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
60358
60359
60360
function oneOf(expected, thing) {
60361
  if (Array.isArray(expected)) {
60362
    var len = expected.length;
60363
    expected = expected.map(function (i) {
60364
      return String(i);
60365
    });
60366
60367
    if (len > 2) {
60368
      return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1];
60369
    } else if (len === 2) {
60370
      return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]);
60371
    } else {
60372
      return "of ".concat(thing, " ").concat(expected[0]);
60373
    }
60374
  } else {
60375
    return "of ".concat(thing, " ").concat(String(expected));
60376
  }
60377
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
60378
60379
60380
function startsWith(str, search, pos) {
60381
  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
60382
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
60383
60384
60385
function endsWith(str, search, this_len) {
60386
  if (this_len === undefined || this_len > str.length) {
60387
    this_len = str.length;
60388
  }
60389
60390
  return str.substring(this_len - search.length, this_len) === search;
60391
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
60392
60393
60394
function includes(str, search, start) {
60395
  if (typeof start !== 'number') {
60396
    start = 0;
60397
  }
60398
60399
  if (start + search.length > str.length) {
60400
    return false;
60401
  } else {
60402
    return str.indexOf(search, start) !== -1;
60403
  }
60404
}
60405
60406
createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {
60407
  return 'The value "' + value + '" is invalid for option "' + name + '"';
60408
}, TypeError);
60409
createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {
60410
  // determiner: 'must be' or 'must not be'
60411
  var determiner;
60412
60413
  if (typeof expected === 'string' && startsWith(expected, 'not ')) {
60414
    determiner = 'must not be';
60415
    expected = expected.replace(/^not /, '');
60416
  } else {
60417
    determiner = 'must be';
60418
  }
60419
60420
  var msg;
60421
60422
  if (endsWith(name, ' argument')) {
60423
    // For cases like 'first argument'
60424
    msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
60425
  } else {
60426
    var type = includes(name, '.') ? 'property' : 'argument';
60427
    msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
60428
  }
60429
60430
  msg += ". Received type ".concat(typeof actual);
60431
  return msg;
60432
}, TypeError);
60433
createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');
60434
createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {
60435
  return 'The ' + name + ' method is not implemented';
60436
});
60437
createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');
60438
createErrorType('ERR_STREAM_DESTROYED', function (name) {
60439
  return 'Cannot call ' + name + ' after a stream was destroyed';
60440
});
60441
createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');
60442
createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');
60443
createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');
60444
createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);
60445
createErrorType('ERR_UNKNOWN_ENCODING', function (arg) {
60446
  return 'Unknown encoding: ' + arg;
60447
}, TypeError);
60448
createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');
60449
module.exports.q = codes;
60450
60451
60452
/***/ }),
60453
60454
/***/ 8656:
60455
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
60456
60457
"use strict";
60458
/* provided dependency */ var process = __webpack_require__(4155);
60459
// Copyright Joyent, Inc. and other Node contributors.
60460
//
60461
// Permission is hereby granted, free of charge, to any person obtaining a
60462
// copy of this software and associated documentation files (the
60463
// "Software"), to deal in the Software without restriction, including
60464
// without limitation the rights to use, copy, modify, merge, publish,
60465
// distribute, sublicense, and/or sell copies of the Software, and to permit
60466
// persons to whom the Software is furnished to do so, subject to the
60467
// following conditions:
60468
//
60469
// The above copyright notice and this permission notice shall be included
60470
// in all copies or substantial portions of the Software.
60471
//
60472
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
60473
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
60474
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
60475
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
60476
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
60477
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
60478
// USE OR OTHER DEALINGS IN THE SOFTWARE.
60479
// a duplex stream is just a stream that is both readable and writable.
60480
// Since JS doesn't have multiple prototypal inheritance, this class
60481
// prototypally inherits from Readable, and then parasitically from
60482
// Writable.
60483
60484
/*<replacement>*/
60485
60486
var objectKeys = Object.keys || function (obj) {
60487
  var keys = [];
60488
60489
  for (var key in obj) {
60490
    keys.push(key);
60491
  }
60492
60493
  return keys;
60494
};
60495
/*</replacement>*/
60496
60497
60498
module.exports = Duplex;
60499
60500
var Readable = __webpack_require__(6577);
60501
60502
var Writable = __webpack_require__(323);
60503
60504
__webpack_require__(5717)(Duplex, Readable);
60505
60506
{
60507
  // Allow the keys array to be GC'ed.
60508
  var keys = objectKeys(Writable.prototype);
60509
60510
  for (var v = 0; v < keys.length; v++) {
60511
    var method = keys[v];
60512
    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
60513
  }
60514
}
60515
60516
function Duplex(options) {
60517
  if (!(this instanceof Duplex)) return new Duplex(options);
60518
  Readable.call(this, options);
60519
  Writable.call(this, options);
60520
  this.allowHalfOpen = true;
60521
60522
  if (options) {
60523
    if (options.readable === false) this.readable = false;
60524
    if (options.writable === false) this.writable = false;
60525
60526
    if (options.allowHalfOpen === false) {
60527
      this.allowHalfOpen = false;
60528
      this.once('end', onend);
60529
    }
60530
  }
60531
}
60532
60533
Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
60534
  // making it explicit this property is not enumerable
60535
  // because otherwise some prototype manipulation in
60536
  // userland will fail
60537
  enumerable: false,
60538
  get: function get() {
60539
    return this._writableState.highWaterMark;
60540
  }
60541
});
60542
Object.defineProperty(Duplex.prototype, 'writableBuffer', {
60543
  // making it explicit this property is not enumerable
60544
  // because otherwise some prototype manipulation in
60545
  // userland will fail
60546
  enumerable: false,
60547
  get: function get() {
60548
    return this._writableState && this._writableState.getBuffer();
60549
  }
60550
});
60551
Object.defineProperty(Duplex.prototype, 'writableLength', {
60552
  // making it explicit this property is not enumerable
60553
  // because otherwise some prototype manipulation in
60554
  // userland will fail
60555
  enumerable: false,
60556
  get: function get() {
60557
    return this._writableState.length;
60558
  }
60559
}); // the no-half-open enforcer
60560
60561
function onend() {
60562
  // If the writable side ended, then we're ok.
60563
  if (this._writableState.ended) return; // no more data can be written.
60564
  // But allow more writes to happen in this tick.
60565
60566
  process.nextTick(onEndNT, this);
60567
}
60568
60569
function onEndNT(self) {
60570
  self.end();
60571
}
60572
60573
Object.defineProperty(Duplex.prototype, 'destroyed', {
60574
  // making it explicit this property is not enumerable
60575
  // because otherwise some prototype manipulation in
60576
  // userland will fail
60577
  enumerable: false,
60578
  get: function get() {
60579
    if (this._readableState === undefined || this._writableState === undefined) {
60580
      return false;
60581
    }
60582
60583
    return this._readableState.destroyed && this._writableState.destroyed;
60584
  },
60585
  set: function set(value) {
60586
    // we ignore the value if the stream
60587
    // has not been initialized yet
60588
    if (this._readableState === undefined || this._writableState === undefined) {
60589
      return;
60590
    } // backward compatibility, the user is explicitly
60591
    // managing destroyed
60592
60593
60594
    this._readableState.destroyed = value;
60595
    this._writableState.destroyed = value;
60596
  }
60597
});
60598
60599
/***/ }),
60600
60601
/***/ 2366:
60602
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
60603
60604
"use strict";
60605
// Copyright Joyent, Inc. and other Node contributors.
60606
//
60607
// Permission is hereby granted, free of charge, to any person obtaining a
60608
// copy of this software and associated documentation files (the
60609
// "Software"), to deal in the Software without restriction, including
60610
// without limitation the rights to use, copy, modify, merge, publish,
60611
// distribute, sublicense, and/or sell copies of the Software, and to permit
60612
// persons to whom the Software is furnished to do so, subject to the
60613
// following conditions:
60614
//
60615
// The above copyright notice and this permission notice shall be included
60616
// in all copies or substantial portions of the Software.
60617
//
60618
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
60619
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
60620
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
60621
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
60622
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
60623
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
60624
// USE OR OTHER DEALINGS IN THE SOFTWARE.
60625
// a passthrough stream.
60626
// basically just the most minimal sort of Transform stream.
60627
// Every written chunk gets output as-is.
60628
60629
60630
module.exports = PassThrough;
60631
60632
var Transform = __webpack_require__(4473);
60633
60634
__webpack_require__(5717)(PassThrough, Transform);
60635
60636
function PassThrough(options) {
60637
  if (!(this instanceof PassThrough)) return new PassThrough(options);
60638
  Transform.call(this, options);
60639
}
60640
60641
PassThrough.prototype._transform = function (chunk, encoding, cb) {
60642
  cb(null, chunk);
60643
};
60644
60645
/***/ }),
60646
60647
/***/ 6577:
60648
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
60649
60650
"use strict";
60651
/* provided dependency */ var process = __webpack_require__(4155);
60652
// Copyright Joyent, Inc. and other Node contributors.
60653
//
60654
// Permission is hereby granted, free of charge, to any person obtaining a
60655
// copy of this software and associated documentation files (the
60656
// "Software"), to deal in the Software without restriction, including
60657
// without limitation the rights to use, copy, modify, merge, publish,
60658
// distribute, sublicense, and/or sell copies of the Software, and to permit
60659
// persons to whom the Software is furnished to do so, subject to the
60660
// following conditions:
60661
//
60662
// The above copyright notice and this permission notice shall be included
60663
// in all copies or substantial portions of the Software.
60664
//
60665
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
60666
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
60667
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
60668
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
60669
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
60670
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
60671
// USE OR OTHER DEALINGS IN THE SOFTWARE.
60672
60673
60674
module.exports = Readable;
60675
/*<replacement>*/
60676
60677
var Duplex;
60678
/*</replacement>*/
60679
60680
Readable.ReadableState = ReadableState;
60681
/*<replacement>*/
60682
60683
var EE = (__webpack_require__(7187).EventEmitter);
60684
60685
var EElistenerCount = function EElistenerCount(emitter, type) {
60686
  return emitter.listeners(type).length;
60687
};
60688
/*</replacement>*/
60689
60690
/*<replacement>*/
60691
60692
60693
var Stream = __webpack_require__(3194);
60694
/*</replacement>*/
60695
60696
60697
var Buffer = (__webpack_require__(8823).Buffer);
60698
60699
var OurUint8Array = __webpack_require__.g.Uint8Array || function () {};
60700
60701
function _uint8ArrayToBuffer(chunk) {
60702
  return Buffer.from(chunk);
60703
}
60704
60705
function _isUint8Array(obj) {
60706
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
60707
}
60708
/*<replacement>*/
60709
60710
60711
var debugUtil = __webpack_require__(964);
60712
60713
var debug;
60714
60715
if (debugUtil && debugUtil.debuglog) {
60716
  debug = debugUtil.debuglog('stream');
60717
} else {
60718
  debug = function debug() {};
60719
}
60720
/*</replacement>*/
60721
60722
60723
var BufferList = __webpack_require__(3361);
60724
60725
var destroyImpl = __webpack_require__(1029);
60726
60727
var _require = __webpack_require__(94),
60728
    getHighWaterMark = _require.getHighWaterMark;
60729
60730
var _require$codes = (__webpack_require__(8106)/* .codes */ .q),
60731
    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
60732
    ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,
60733
    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
60734
    ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.
60735
60736
60737
var StringDecoder;
60738
var createReadableStreamAsyncIterator;
60739
var from;
60740
60741
__webpack_require__(5717)(Readable, Stream);
60742
60743
var errorOrDestroy = destroyImpl.errorOrDestroy;
60744
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
60745
60746
function prependListener(emitter, event, fn) {
60747
  // Sadly this is not cacheable as some libraries bundle their own
60748
  // event emitter implementation with them.
60749
  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any
60750
  // userland ones.  NEVER DO THIS. This is here only because this code needs
60751
  // to continue to work with older versions of Node.js that do not include
60752
  // the prependListener() method. The goal is to eventually remove this hack.
60753
60754
  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
60755
}
60756
60757
function ReadableState(options, stream, isDuplex) {
60758
  Duplex = Duplex || __webpack_require__(8656);
60759
  options = options || {}; // Duplex streams are both readable and writable, but share
60760
  // the same options object.
60761
  // However, some cases require setting options to different
60762
  // values for the readable and the writable sides of the duplex stream.
60763
  // These options can be provided separately as readableXXX and writableXXX.
60764
60765
  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to
60766
  // make all the buffer merging and length checks go away
60767
60768
  this.objectMode = !!options.objectMode;
60769
  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer
60770
  // Note: 0 is a valid value, means "don't call _read preemptively ever"
60771
60772
  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the
60773
  // linked list can remove elements from the beginning faster than
60774
  // array.shift()
60775
60776
  this.buffer = new BufferList();
60777
  this.length = 0;
60778
  this.pipes = null;
60779
  this.pipesCount = 0;
60780
  this.flowing = null;
60781
  this.ended = false;
60782
  this.endEmitted = false;
60783
  this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted
60784
  // immediately, or on a later tick.  We set this to true at first, because
60785
  // any actions that shouldn't happen until "later" should generally also
60786
  // not happen before the first read call.
60787
60788
  this.sync = true; // whenever we return null, then we set a flag to say
60789
  // that we're awaiting a 'readable' event emission.
60790
60791
  this.needReadable = false;
60792
  this.emittedReadable = false;
60793
  this.readableListening = false;
60794
  this.resumeScheduled = false;
60795
  this.paused = true; // Should close be emitted on destroy. Defaults to true.
60796
60797
  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')
60798
60799
  this.autoDestroy = !!options.autoDestroy; // has it been destroyed
60800
60801
  this.destroyed = false; // Crypto is kind of old and crusty.  Historically, its default string
60802
  // encoding is 'binary' so we have to make this configurable.
60803
  // Everything else in the universe uses 'utf8', though.
60804
60805
  this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s
60806
60807
  this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled
60808
60809
  this.readingMore = false;
60810
  this.decoder = null;
60811
  this.encoding = null;
60812
60813
  if (options.encoding) {
60814
    if (!StringDecoder) StringDecoder = (__webpack_require__(2553)/* .StringDecoder */ .s);
60815
    this.decoder = new StringDecoder(options.encoding);
60816
    this.encoding = options.encoding;
60817
  }
60818
}
60819
60820
function Readable(options) {
60821
  Duplex = Duplex || __webpack_require__(8656);
60822
  if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside
60823
  // the ReadableState constructor, at least with V8 6.5
60824
60825
  var isDuplex = this instanceof Duplex;
60826
  this._readableState = new ReadableState(options, this, isDuplex); // legacy
60827
60828
  this.readable = true;
60829
60830
  if (options) {
60831
    if (typeof options.read === 'function') this._read = options.read;
60832
    if (typeof options.destroy === 'function') this._destroy = options.destroy;
60833
  }
60834
60835
  Stream.call(this);
60836
}
60837
60838
Object.defineProperty(Readable.prototype, 'destroyed', {
60839
  // making it explicit this property is not enumerable
60840
  // because otherwise some prototype manipulation in
60841
  // userland will fail
60842
  enumerable: false,
60843
  get: function get() {
60844
    if (this._readableState === undefined) {
60845
      return false;
60846
    }
60847
60848
    return this._readableState.destroyed;
60849
  },
60850
  set: function set(value) {
60851
    // we ignore the value if the stream
60852
    // has not been initialized yet
60853
    if (!this._readableState) {
60854
      return;
60855
    } // backward compatibility, the user is explicitly
60856
    // managing destroyed
60857
60858
60859
    this._readableState.destroyed = value;
60860
  }
60861
});
60862
Readable.prototype.destroy = destroyImpl.destroy;
60863
Readable.prototype._undestroy = destroyImpl.undestroy;
60864
60865
Readable.prototype._destroy = function (err, cb) {
60866
  cb(err);
60867
}; // Manually shove something into the read() buffer.
60868
// This returns true if the highWaterMark has not been hit yet,
60869
// similar to how Writable.write() returns true if you should
60870
// write() some more.
60871
60872
60873
Readable.prototype.push = function (chunk, encoding) {
60874
  var state = this._readableState;
60875
  var skipChunkCheck;
60876
60877
  if (!state.objectMode) {
60878
    if (typeof chunk === 'string') {
60879
      encoding = encoding || state.defaultEncoding;
60880
60881
      if (encoding !== state.encoding) {
60882
        chunk = Buffer.from(chunk, encoding);
60883
        encoding = '';
60884
      }
60885
60886
      skipChunkCheck = true;
60887
    }
60888
  } else {
60889
    skipChunkCheck = true;
60890
  }
60891
60892
  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
60893
}; // Unshift should *always* be something directly out of read()
60894
60895
60896
Readable.prototype.unshift = function (chunk) {
60897
  return readableAddChunk(this, chunk, null, true, false);
60898
};
60899
60900
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
60901
  debug('readableAddChunk', chunk);
60902
  var state = stream._readableState;
60903
60904
  if (chunk === null) {
60905
    state.reading = false;
60906
    onEofChunk(stream, state);
60907
  } else {
60908
    var er;
60909
    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
60910
60911
    if (er) {
60912
      errorOrDestroy(stream, er);
60913
    } else if (state.objectMode || chunk && chunk.length > 0) {
60914
      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
60915
        chunk = _uint8ArrayToBuffer(chunk);
60916
      }
60917
60918
      if (addToFront) {
60919
        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);
60920
      } else if (state.ended) {
60921
        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
60922
      } else if (state.destroyed) {
60923
        return false;
60924
      } else {
60925
        state.reading = false;
60926
60927
        if (state.decoder && !encoding) {
60928
          chunk = state.decoder.write(chunk);
60929
          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
60930
        } else {
60931
          addChunk(stream, state, chunk, false);
60932
        }
60933
      }
60934
    } else if (!addToFront) {
60935
      state.reading = false;
60936
      maybeReadMore(stream, state);
60937
    }
60938
  } // We can push more data if we are below the highWaterMark.
60939
  // Also, if we have no data yet, we can stand some more bytes.
60940
  // This is to work around cases where hwm=0, such as the repl.
60941
60942
60943
  return !state.ended && (state.length < state.highWaterMark || state.length === 0);
60944
}
60945
60946
function addChunk(stream, state, chunk, addToFront) {
60947
  if (state.flowing && state.length === 0 && !state.sync) {
60948
    state.awaitDrain = 0;
60949
    stream.emit('data', chunk);
60950
  } else {
60951
    // update the buffer info.
60952
    state.length += state.objectMode ? 1 : chunk.length;
60953
    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
60954
    if (state.needReadable) emitReadable(stream);
60955
  }
60956
60957
  maybeReadMore(stream, state);
60958
}
60959
60960
function chunkInvalid(state, chunk) {
60961
  var er;
60962
60963
  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
60964
    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);
60965
  }
60966
60967
  return er;
60968
}
60969
60970
Readable.prototype.isPaused = function () {
60971
  return this._readableState.flowing === false;
60972
}; // backwards compatibility.
60973
60974
60975
Readable.prototype.setEncoding = function (enc) {
60976
  if (!StringDecoder) StringDecoder = (__webpack_require__(2553)/* .StringDecoder */ .s);
60977
  var decoder = new StringDecoder(enc);
60978
  this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8
60979
60980
  this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:
60981
60982
  var p = this._readableState.buffer.head;
60983
  var content = '';
60984
60985
  while (p !== null) {
60986
    content += decoder.write(p.data);
60987
    p = p.next;
60988
  }
60989
60990
  this._readableState.buffer.clear();
60991
60992
  if (content !== '') this._readableState.buffer.push(content);
60993
  this._readableState.length = content.length;
60994
  return this;
60995
}; // Don't raise the hwm > 1GB
60996
60997
60998
var MAX_HWM = 0x40000000;
60999
61000
function computeNewHighWaterMark(n) {
61001
  if (n >= MAX_HWM) {
61002
    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
61003
    n = MAX_HWM;
61004
  } else {
61005
    // Get the next highest power of 2 to prevent increasing hwm excessively in
61006
    // tiny amounts
61007
    n--;
61008
    n |= n >>> 1;
61009
    n |= n >>> 2;
61010
    n |= n >>> 4;
61011
    n |= n >>> 8;
61012
    n |= n >>> 16;
61013
    n++;
61014
  }
61015
61016
  return n;
61017
} // This function is designed to be inlinable, so please take care when making
61018
// changes to the function body.
61019
61020
61021
function howMuchToRead(n, state) {
61022
  if (n <= 0 || state.length === 0 && state.ended) return 0;
61023
  if (state.objectMode) return 1;
61024
61025
  if (n !== n) {
61026
    // Only flow one buffer at a time
61027
    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
61028
  } // If we're asking for more than the current hwm, then raise the hwm.
61029
61030
61031
  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
61032
  if (n <= state.length) return n; // Don't have enough
61033
61034
  if (!state.ended) {
61035
    state.needReadable = true;
61036
    return 0;
61037
  }
61038
61039
  return state.length;
61040
} // you can override either this method, or the async _read(n) below.
61041
61042
61043
Readable.prototype.read = function (n) {
61044
  debug('read', n);
61045
  n = parseInt(n, 10);
61046
  var state = this._readableState;
61047
  var nOrig = n;
61048
  if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we
61049
  // already have a bunch of data in the buffer, then just trigger
61050
  // the 'readable' event and move on.
61051
61052
  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
61053
    debug('read: emitReadable', state.length, state.ended);
61054
    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
61055
    return null;
61056
  }
61057
61058
  n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.
61059
61060
  if (n === 0 && state.ended) {
61061
    if (state.length === 0) endReadable(this);
61062
    return null;
61063
  } // All the actual chunk generation logic needs to be
61064
  // *below* the call to _read.  The reason is that in certain
61065
  // synthetic stream cases, such as passthrough streams, _read
61066
  // may be a completely synchronous operation which may change
61067
  // the state of the read buffer, providing enough data when
61068
  // before there was *not* enough.
61069
  //
61070
  // So, the steps are:
61071
  // 1. Figure out what the state of things will be after we do
61072
  // a read from the buffer.
61073
  //
61074
  // 2. If that resulting state will trigger a _read, then call _read.
61075
  // Note that this may be asynchronous, or synchronous.  Yes, it is
61076
  // deeply ugly to write APIs this way, but that still doesn't mean
61077
  // that the Readable class should behave improperly, as streams are
61078
  // designed to be sync/async agnostic.
61079
  // Take note if the _read call is sync or async (ie, if the read call
61080
  // has returned yet), so that we know whether or not it's safe to emit
61081
  // 'readable' etc.
61082
  //
61083
  // 3. Actually pull the requested chunks out of the buffer and return.
61084
  // if we need a readable event, then we need to do some reading.
61085
61086
61087
  var doRead = state.needReadable;
61088
  debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some
61089
61090
  if (state.length === 0 || state.length - n < state.highWaterMark) {
61091
    doRead = true;
61092
    debug('length less than watermark', doRead);
61093
  } // however, if we've ended, then there's no point, and if we're already
61094
  // reading, then it's unnecessary.
61095
61096
61097
  if (state.ended || state.reading) {
61098
    doRead = false;
61099
    debug('reading or ended', doRead);
61100
  } else if (doRead) {
61101
    debug('do read');
61102
    state.reading = true;
61103
    state.sync = true; // if the length is currently zero, then we *need* a readable event.
61104
61105
    if (state.length === 0) state.needReadable = true; // call internal read method
61106
61107
    this._read(state.highWaterMark);
61108
61109
    state.sync = false; // If _read pushed data synchronously, then `reading` will be false,
61110
    // and we need to re-evaluate how much data we can return to the user.
61111
61112
    if (!state.reading) n = howMuchToRead(nOrig, state);
61113
  }
61114
61115
  var ret;
61116
  if (n > 0) ret = fromList(n, state);else ret = null;
61117
61118
  if (ret === null) {
61119
    state.needReadable = state.length <= state.highWaterMark;
61120
    n = 0;
61121
  } else {
61122
    state.length -= n;
61123
    state.awaitDrain = 0;
61124
  }
61125
61126
  if (state.length === 0) {
61127
    // If we have nothing in the buffer, then we want to know
61128
    // as soon as we *do* get something into the buffer.
61129
    if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.
61130
61131
    if (nOrig !== n && state.ended) endReadable(this);
61132
  }
61133
61134
  if (ret !== null) this.emit('data', ret);
61135
  return ret;
61136
};
61137
61138
function onEofChunk(stream, state) {
61139
  debug('onEofChunk');
61140
  if (state.ended) return;
61141
61142
  if (state.decoder) {
61143
    var chunk = state.decoder.end();
61144
61145
    if (chunk && chunk.length) {
61146
      state.buffer.push(chunk);
61147
      state.length += state.objectMode ? 1 : chunk.length;
61148
    }
61149
  }
61150
61151
  state.ended = true;
61152
61153
  if (state.sync) {
61154
    // if we are sync, wait until next tick to emit the data.
61155
    // Otherwise we risk emitting data in the flow()
61156
    // the readable code triggers during a read() call
61157
    emitReadable(stream);
61158
  } else {
61159
    // emit 'readable' now to make sure it gets picked up.
61160
    state.needReadable = false;
61161
61162
    if (!state.emittedReadable) {
61163
      state.emittedReadable = true;
61164
      emitReadable_(stream);
61165
    }
61166
  }
61167
} // Don't emit readable right away in sync mode, because this can trigger
61168
// another read() call => stack overflow.  This way, it might trigger
61169
// a nextTick recursion warning, but that's not so bad.
61170
61171
61172
function emitReadable(stream) {
61173
  var state = stream._readableState;
61174
  debug('emitReadable', state.needReadable, state.emittedReadable);
61175
  state.needReadable = false;
61176
61177
  if (!state.emittedReadable) {
61178
    debug('emitReadable', state.flowing);
61179
    state.emittedReadable = true;
61180
    process.nextTick(emitReadable_, stream);
61181
  }
61182
}
61183
61184
function emitReadable_(stream) {
61185
  var state = stream._readableState;
61186
  debug('emitReadable_', state.destroyed, state.length, state.ended);
61187
61188
  if (!state.destroyed && (state.length || state.ended)) {
61189
    stream.emit('readable');
61190
    state.emittedReadable = false;
61191
  } // The stream needs another readable event if
61192
  // 1. It is not flowing, as the flow mechanism will take
61193
  //    care of it.
61194
  // 2. It is not ended.
61195
  // 3. It is below the highWaterMark, so we can schedule
61196
  //    another readable later.
61197
61198
61199
  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
61200
  flow(stream);
61201
} // at this point, the user has presumably seen the 'readable' event,
61202
// and called read() to consume some data.  that may have triggered
61203
// in turn another _read(n) call, in which case reading = true if
61204
// it's in progress.
61205
// However, if we're not ended, or reading, and the length < hwm,
61206
// then go ahead and try to read some more preemptively.
61207
61208
61209
function maybeReadMore(stream, state) {
61210
  if (!state.readingMore) {
61211
    state.readingMore = true;
61212
    process.nextTick(maybeReadMore_, stream, state);
61213
  }
61214
}
61215
61216
function maybeReadMore_(stream, state) {
61217
  // Attempt to read more data if we should.
61218
  //
61219
  // The conditions for reading more data are (one of):
61220
  // - Not enough data buffered (state.length < state.highWaterMark). The loop
61221
  //   is responsible for filling the buffer with enough data if such data
61222
  //   is available. If highWaterMark is 0 and we are not in the flowing mode
61223
  //   we should _not_ attempt to buffer any extra data. We'll get more data
61224
  //   when the stream consumer calls read() instead.
61225
  // - No data in the buffer, and the stream is in flowing mode. In this mode
61226
  //   the loop below is responsible for ensuring read() is called. Failing to
61227
  //   call read here would abort the flow and there's no other mechanism for
61228
  //   continuing the flow if the stream consumer has just subscribed to the
61229
  //   'data' event.
61230
  //
61231
  // In addition to the above conditions to keep reading data, the following
61232
  // conditions prevent the data from being read:
61233
  // - The stream has ended (state.ended).
61234
  // - There is already a pending 'read' operation (state.reading). This is a
61235
  //   case where the the stream has called the implementation defined _read()
61236
  //   method, but they are processing the call asynchronously and have _not_
61237
  //   called push() with new data. In this case we skip performing more
61238
  //   read()s. The execution ends in this method again after the _read() ends
61239
  //   up calling push() with more data.
61240
  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
61241
    var len = state.length;
61242
    debug('maybeReadMore read 0');
61243
    stream.read(0);
61244
    if (len === state.length) // didn't get any data, stop spinning.
61245
      break;
61246
  }
61247
61248
  state.readingMore = false;
61249
} // abstract method.  to be overridden in specific implementation classes.
61250
// call cb(er, data) where data is <= n in length.
61251
// for virtual (non-string, non-buffer) streams, "length" is somewhat
61252
// arbitrary, and perhaps not very meaningful.
61253
61254
61255
Readable.prototype._read = function (n) {
61256
  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));
61257
};
61258
61259
Readable.prototype.pipe = function (dest, pipeOpts) {
61260
  var src = this;
61261
  var state = this._readableState;
61262
61263
  switch (state.pipesCount) {
61264
    case 0:
61265
      state.pipes = dest;
61266
      break;
61267
61268
    case 1:
61269
      state.pipes = [state.pipes, dest];
61270
      break;
61271
61272
    default:
61273
      state.pipes.push(dest);
61274
      break;
61275
  }
61276
61277
  state.pipesCount += 1;
61278
  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
61279
  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
61280
  var endFn = doEnd ? onend : unpipe;
61281
  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);
61282
  dest.on('unpipe', onunpipe);
61283
61284
  function onunpipe(readable, unpipeInfo) {
61285
    debug('onunpipe');
61286
61287
    if (readable === src) {
61288
      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
61289
        unpipeInfo.hasUnpiped = true;
61290
        cleanup();
61291
      }
61292
    }
61293
  }
61294
61295
  function onend() {
61296
    debug('onend');
61297
    dest.end();
61298
  } // when the dest drains, it reduces the awaitDrain counter
61299
  // on the source.  This would be more elegant with a .once()
61300
  // handler in flow(), but adding and removing repeatedly is
61301
  // too slow.
61302
61303
61304
  var ondrain = pipeOnDrain(src);
61305
  dest.on('drain', ondrain);
61306
  var cleanedUp = false;
61307
61308
  function cleanup() {
61309
    debug('cleanup'); // cleanup event handlers once the pipe is broken
61310
61311
    dest.removeListener('close', onclose);
61312
    dest.removeListener('finish', onfinish);
61313
    dest.removeListener('drain', ondrain);
61314
    dest.removeListener('error', onerror);
61315
    dest.removeListener('unpipe', onunpipe);
61316
    src.removeListener('end', onend);
61317
    src.removeListener('end', unpipe);
61318
    src.removeListener('data', ondata);
61319
    cleanedUp = true; // if the reader is waiting for a drain event from this
61320
    // specific writer, then it would cause it to never start
61321
    // flowing again.
61322
    // So, if this is awaiting a drain, then we just call it now.
61323
    // If we don't know, then assume that we are waiting for one.
61324
61325
    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
61326
  }
61327
61328
  src.on('data', ondata);
61329
61330
  function ondata(chunk) {
61331
    debug('ondata');
61332
    var ret = dest.write(chunk);
61333
    debug('dest.write', ret);
61334
61335
    if (ret === false) {
61336
      // If the user unpiped during `dest.write()`, it is possible
61337
      // to get stuck in a permanently paused state if that write
61338
      // also returned false.
61339
      // => Check whether `dest` is still a piping destination.
61340
      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
61341
        debug('false write response, pause', state.awaitDrain);
61342
        state.awaitDrain++;
61343
      }
61344
61345
      src.pause();
61346
    }
61347
  } // if the dest has an error, then stop piping into it.
61348
  // however, don't suppress the throwing behavior for this.
61349
61350
61351
  function onerror(er) {
61352
    debug('onerror', er);
61353
    unpipe();
61354
    dest.removeListener('error', onerror);
61355
    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);
61356
  } // Make sure our error handler is attached before userland ones.
61357
61358
61359
  prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.
61360
61361
  function onclose() {
61362
    dest.removeListener('finish', onfinish);
61363
    unpipe();
61364
  }
61365
61366
  dest.once('close', onclose);
61367
61368
  function onfinish() {
61369
    debug('onfinish');
61370
    dest.removeListener('close', onclose);
61371
    unpipe();
61372
  }
61373
61374
  dest.once('finish', onfinish);
61375
61376
  function unpipe() {
61377
    debug('unpipe');
61378
    src.unpipe(dest);
61379
  } // tell the dest that it's being piped to
61380
61381
61382
  dest.emit('pipe', src); // start the flow if it hasn't been started already.
61383
61384
  if (!state.flowing) {
61385
    debug('pipe resume');
61386
    src.resume();
61387
  }
61388
61389
  return dest;
61390
};
61391
61392
function pipeOnDrain(src) {
61393
  return function pipeOnDrainFunctionResult() {
61394
    var state = src._readableState;
61395
    debug('pipeOnDrain', state.awaitDrain);
61396
    if (state.awaitDrain) state.awaitDrain--;
61397
61398
    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
61399
      state.flowing = true;
61400
      flow(src);
61401
    }
61402
  };
61403
}
61404
61405
Readable.prototype.unpipe = function (dest) {
61406
  var state = this._readableState;
61407
  var unpipeInfo = {
61408
    hasUnpiped: false
61409
  }; // if we're not piping anywhere, then do nothing.
61410
61411
  if (state.pipesCount === 0) return this; // just one destination.  most common case.
61412
61413
  if (state.pipesCount === 1) {
61414
    // passed in one, but it's not the right one.
61415
    if (dest && dest !== state.pipes) return this;
61416
    if (!dest) dest = state.pipes; // got a match.
61417
61418
    state.pipes = null;
61419
    state.pipesCount = 0;
61420
    state.flowing = false;
61421
    if (dest) dest.emit('unpipe', this, unpipeInfo);
61422
    return this;
61423
  } // slow case. multiple pipe destinations.
61424
61425
61426
  if (!dest) {
61427
    // remove all.
61428
    var dests = state.pipes;
61429
    var len = state.pipesCount;
61430
    state.pipes = null;
61431
    state.pipesCount = 0;
61432
    state.flowing = false;
61433
61434
    for (var i = 0; i < len; i++) {
61435
      dests[i].emit('unpipe', this, {
61436
        hasUnpiped: false
61437
      });
61438
    }
61439
61440
    return this;
61441
  } // try to find the right one.
61442
61443
61444
  var index = indexOf(state.pipes, dest);
61445
  if (index === -1) return this;
61446
  state.pipes.splice(index, 1);
61447
  state.pipesCount -= 1;
61448
  if (state.pipesCount === 1) state.pipes = state.pipes[0];
61449
  dest.emit('unpipe', this, unpipeInfo);
61450
  return this;
61451
}; // set up data events if they are asked for
61452
// Ensure readable listeners eventually get something
61453
61454
61455
Readable.prototype.on = function (ev, fn) {
61456
  var res = Stream.prototype.on.call(this, ev, fn);
61457
  var state = this._readableState;
61458
61459
  if (ev === 'data') {
61460
    // update readableListening so that resume() may be a no-op
61461
    // a few lines down. This is needed to support once('readable').
61462
    state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused
61463
61464
    if (state.flowing !== false) this.resume();
61465
  } else if (ev === 'readable') {
61466
    if (!state.endEmitted && !state.readableListening) {
61467
      state.readableListening = state.needReadable = true;
61468
      state.flowing = false;
61469
      state.emittedReadable = false;
61470
      debug('on readable', state.length, state.reading);
61471
61472
      if (state.length) {
61473
        emitReadable(this);
61474
      } else if (!state.reading) {
61475
        process.nextTick(nReadingNextTick, this);
61476
      }
61477
    }
61478
  }
61479
61480
  return res;
61481
};
61482
61483
Readable.prototype.addListener = Readable.prototype.on;
61484
61485
Readable.prototype.removeListener = function (ev, fn) {
61486
  var res = Stream.prototype.removeListener.call(this, ev, fn);
61487
61488
  if (ev === 'readable') {
61489
    // We need to check if there is someone still listening to
61490
    // readable and reset the state. However this needs to happen
61491
    // after readable has been emitted but before I/O (nextTick) to
61492
    // support once('readable', fn) cycles. This means that calling
61493
    // resume within the same tick will have no
61494
    // effect.
61495
    process.nextTick(updateReadableListening, this);
61496
  }
61497
61498
  return res;
61499
};
61500
61501
Readable.prototype.removeAllListeners = function (ev) {
61502
  var res = Stream.prototype.removeAllListeners.apply(this, arguments);
61503
61504
  if (ev === 'readable' || ev === undefined) {
61505
    // We need to check if there is someone still listening to
61506
    // readable and reset the state. However this needs to happen
61507
    // after readable has been emitted but before I/O (nextTick) to
61508
    // support once('readable', fn) cycles. This means that calling
61509
    // resume within the same tick will have no
61510
    // effect.
61511
    process.nextTick(updateReadableListening, this);
61512
  }
61513
61514
  return res;
61515
};
61516
61517
function updateReadableListening(self) {
61518
  var state = self._readableState;
61519
  state.readableListening = self.listenerCount('readable') > 0;
61520
61521
  if (state.resumeScheduled && !state.paused) {
61522
    // flowing needs to be set to true now, otherwise
61523
    // the upcoming resume will not flow.
61524
    state.flowing = true; // crude way to check if we should resume
61525
  } else if (self.listenerCount('data') > 0) {
61526
    self.resume();
61527
  }
61528
}
61529
61530
function nReadingNextTick(self) {
61531
  debug('readable nexttick read 0');
61532
  self.read(0);
61533
} // pause() and resume() are remnants of the legacy readable stream API
61534
// If the user uses them, then switch into old mode.
61535
61536
61537
Readable.prototype.resume = function () {
61538
  var state = this._readableState;
61539
61540
  if (!state.flowing) {
61541
    debug('resume'); // we flow only if there is no one listening
61542
    // for readable, but we still have to call
61543
    // resume()
61544
61545
    state.flowing = !state.readableListening;
61546
    resume(this, state);
61547
  }
61548
61549
  state.paused = false;
61550
  return this;
61551
};
61552
61553
function resume(stream, state) {
61554
  if (!state.resumeScheduled) {
61555
    state.resumeScheduled = true;
61556
    process.nextTick(resume_, stream, state);
61557
  }
61558
}
61559
61560
function resume_(stream, state) {
61561
  debug('resume', state.reading);
61562
61563
  if (!state.reading) {
61564
    stream.read(0);
61565
  }
61566
61567
  state.resumeScheduled = false;
61568
  stream.emit('resume');
61569
  flow(stream);
61570
  if (state.flowing && !state.reading) stream.read(0);
61571
}
61572
61573
Readable.prototype.pause = function () {
61574
  debug('call pause flowing=%j', this._readableState.flowing);
61575
61576
  if (this._readableState.flowing !== false) {
61577
    debug('pause');
61578
    this._readableState.flowing = false;
61579
    this.emit('pause');
61580
  }
61581
61582
  this._readableState.paused = true;
61583
  return this;
61584
};
61585
61586
function flow(stream) {
61587
  var state = stream._readableState;
61588
  debug('flow', state.flowing);
61589
61590
  while (state.flowing && stream.read() !== null) {
61591
    ;
61592
  }
61593
} // wrap an old-style stream as the async data source.
61594
// This is *not* part of the readable stream interface.
61595
// It is an ugly unfortunate mess of history.
61596
61597
61598
Readable.prototype.wrap = function (stream) {
61599
  var _this = this;
61600
61601
  var state = this._readableState;
61602
  var paused = false;
61603
  stream.on('end', function () {
61604
    debug('wrapped end');
61605
61606
    if (state.decoder && !state.ended) {
61607
      var chunk = state.decoder.end();
61608
      if (chunk && chunk.length) _this.push(chunk);
61609
    }
61610
61611
    _this.push(null);
61612
  });
61613
  stream.on('data', function (chunk) {
61614
    debug('wrapped data');
61615
    if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode
61616
61617
    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
61618
61619
    var ret = _this.push(chunk);
61620
61621
    if (!ret) {
61622
      paused = true;
61623
      stream.pause();
61624
    }
61625
  }); // proxy all the other methods.
61626
  // important when wrapping filters and duplexes.
61627
61628
  for (var i in stream) {
61629
    if (this[i] === undefined && typeof stream[i] === 'function') {
61630
      this[i] = function methodWrap(method) {
61631
        return function methodWrapReturnFunction() {
61632
          return stream[method].apply(stream, arguments);
61633
        };
61634
      }(i);
61635
    }
61636
  } // proxy certain important events.
61637
61638
61639
  for (var n = 0; n < kProxyEvents.length; n++) {
61640
    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
61641
  } // when we try to consume some more bytes, simply unpause the
61642
  // underlying stream.
61643
61644
61645
  this._read = function (n) {
61646
    debug('wrapped _read', n);
61647
61648
    if (paused) {
61649
      paused = false;
61650
      stream.resume();
61651
    }
61652
  };
61653
61654
  return this;
61655
};
61656
61657
if (typeof Symbol === 'function') {
61658
  Readable.prototype[Symbol.asyncIterator] = function () {
61659
    if (createReadableStreamAsyncIterator === undefined) {
61660
      createReadableStreamAsyncIterator = __webpack_require__(828);
61661
    }
61662
61663
    return createReadableStreamAsyncIterator(this);
61664
  };
61665
}
61666
61667
Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
61668
  // making it explicit this property is not enumerable
61669
  // because otherwise some prototype manipulation in
61670
  // userland will fail
61671
  enumerable: false,
61672
  get: function get() {
61673
    return this._readableState.highWaterMark;
61674
  }
61675
});
61676
Object.defineProperty(Readable.prototype, 'readableBuffer', {
61677
  // making it explicit this property is not enumerable
61678
  // because otherwise some prototype manipulation in
61679
  // userland will fail
61680
  enumerable: false,
61681
  get: function get() {
61682
    return this._readableState && this._readableState.buffer;
61683
  }
61684
});
61685
Object.defineProperty(Readable.prototype, 'readableFlowing', {
61686
  // making it explicit this property is not enumerable
61687
  // because otherwise some prototype manipulation in
61688
  // userland will fail
61689
  enumerable: false,
61690
  get: function get() {
61691
    return this._readableState.flowing;
61692
  },
61693
  set: function set(state) {
61694
    if (this._readableState) {
61695
      this._readableState.flowing = state;
61696
    }
61697
  }
61698
}); // exposed for testing purposes only.
61699
61700
Readable._fromList = fromList;
61701
Object.defineProperty(Readable.prototype, 'readableLength', {
61702
  // making it explicit this property is not enumerable
61703
  // because otherwise some prototype manipulation in
61704
  // userland will fail
61705
  enumerable: false,
61706
  get: function get() {
61707
    return this._readableState.length;
61708
  }
61709
}); // Pluck off n bytes from an array of buffers.
61710
// Length is the combined lengths of all the buffers in the list.
61711
// This function is designed to be inlinable, so please take care when making
61712
// changes to the function body.
61713
61714
function fromList(n, state) {
61715
  // nothing buffered
61716
  if (state.length === 0) return null;
61717
  var ret;
61718
  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
61719
    // read it all, truncate the list
61720
    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);
61721
    state.buffer.clear();
61722
  } else {
61723
    // read part of list
61724
    ret = state.buffer.consume(n, state.decoder);
61725
  }
61726
  return ret;
61727
}
61728
61729
function endReadable(stream) {
61730
  var state = stream._readableState;
61731
  debug('endReadable', state.endEmitted);
61732
61733
  if (!state.endEmitted) {
61734
    state.ended = true;
61735
    process.nextTick(endReadableNT, state, stream);
61736
  }
61737
}
61738
61739
function endReadableNT(state, stream) {
61740
  debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.
61741
61742
  if (!state.endEmitted && state.length === 0) {
61743
    state.endEmitted = true;
61744
    stream.readable = false;
61745
    stream.emit('end');
61746
61747
    if (state.autoDestroy) {
61748
      // In case of duplex streams we need a way to detect
61749
      // if the writable side is ready for autoDestroy as well
61750
      var wState = stream._writableState;
61751
61752
      if (!wState || wState.autoDestroy && wState.finished) {
61753
        stream.destroy();
61754
      }
61755
    }
61756
  }
61757
}
61758
61759
if (typeof Symbol === 'function') {
61760
  Readable.from = function (iterable, opts) {
61761
    if (from === undefined) {
61762
      from = __webpack_require__(1265);
61763
    }
61764
61765
    return from(Readable, iterable, opts);
61766
  };
61767
}
61768
61769
function indexOf(xs, x) {
61770
  for (var i = 0, l = xs.length; i < l; i++) {
61771
    if (xs[i] === x) return i;
61772
  }
61773
61774
  return -1;
61775
}
61776
61777
/***/ }),
61778
61779
/***/ 4473:
61780
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
61781
61782
"use strict";
61783
// Copyright Joyent, Inc. and other Node contributors.
61784
//
61785
// Permission is hereby granted, free of charge, to any person obtaining a
61786
// copy of this software and associated documentation files (the
61787
// "Software"), to deal in the Software without restriction, including
61788
// without limitation the rights to use, copy, modify, merge, publish,
61789
// distribute, sublicense, and/or sell copies of the Software, and to permit
61790
// persons to whom the Software is furnished to do so, subject to the
61791
// following conditions:
61792
//
61793
// The above copyright notice and this permission notice shall be included
61794
// in all copies or substantial portions of the Software.
61795
//
61796
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
61797
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61798
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
61799
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
61800
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
61801
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
61802
// USE OR OTHER DEALINGS IN THE SOFTWARE.
61803
// a transform stream is a readable/writable stream where you do
61804
// something with the data.  Sometimes it's called a "filter",
61805
// but that's not a great name for it, since that implies a thing where
61806
// some bits pass through, and others are simply ignored.  (That would
61807
// be a valid example of a transform, of course.)
61808
//
61809
// While the output is causally related to the input, it's not a
61810
// necessarily symmetric or synchronous transformation.  For example,
61811
// a zlib stream might take multiple plain-text writes(), and then
61812
// emit a single compressed chunk some time in the future.
61813
//
61814
// Here's how this works:
61815
//
61816
// The Transform stream has all the aspects of the readable and writable
61817
// stream classes.  When you write(chunk), that calls _write(chunk,cb)
61818
// internally, and returns false if there's a lot of pending writes
61819
// buffered up.  When you call read(), that calls _read(n) until
61820
// there's enough pending readable data buffered up.
61821
//
61822
// In a transform stream, the written data is placed in a buffer.  When
61823
// _read(n) is called, it transforms the queued up data, calling the
61824
// buffered _write cb's as it consumes chunks.  If consuming a single
61825
// written chunk would result in multiple output chunks, then the first
61826
// outputted bit calls the readcb, and subsequent chunks just go into
61827
// the read buffer, and will cause it to emit 'readable' if necessary.
61828
//
61829
// This way, back-pressure is actually determined by the reading side,
61830
// since _read has to be called to start processing a new chunk.  However,
61831
// a pathological inflate type of transform can cause excessive buffering
61832
// here.  For example, imagine a stream where every byte of input is
61833
// interpreted as an integer from 0-255, and then results in that many
61834
// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
61835
// 1kb of data being output.  In this case, you could write a very small
61836
// amount of input, and end up with a very large amount of output.  In
61837
// such a pathological inflating mechanism, there'd be no way to tell
61838
// the system to stop doing the transform.  A single 4MB write could
61839
// cause the system to run out of memory.
61840
//
61841
// However, even in such a pathological case, only a single written chunk
61842
// would be consumed, and then the rest would wait (un-transformed) until
61843
// the results of the previous transformed chunk were consumed.
61844
61845
61846
module.exports = Transform;
61847
61848
var _require$codes = (__webpack_require__(8106)/* .codes */ .q),
61849
    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
61850
    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
61851
    ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,
61852
    ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
61853
61854
var Duplex = __webpack_require__(8656);
61855
61856
__webpack_require__(5717)(Transform, Duplex);
61857
61858
function afterTransform(er, data) {
61859
  var ts = this._transformState;
61860
  ts.transforming = false;
61861
  var cb = ts.writecb;
61862
61863
  if (cb === null) {
61864
    return this.emit('error', new ERR_MULTIPLE_CALLBACK());
61865
  }
61866
61867
  ts.writechunk = null;
61868
  ts.writecb = null;
61869
  if (data != null) // single equals check for both `null` and `undefined`
61870
    this.push(data);
61871
  cb(er);
61872
  var rs = this._readableState;
61873
  rs.reading = false;
61874
61875
  if (rs.needReadable || rs.length < rs.highWaterMark) {
61876
    this._read(rs.highWaterMark);
61877
  }
61878
}
61879
61880
function Transform(options) {
61881
  if (!(this instanceof Transform)) return new Transform(options);
61882
  Duplex.call(this, options);
61883
  this._transformState = {
61884
    afterTransform: afterTransform.bind(this),
61885
    needTransform: false,
61886
    transforming: false,
61887
    writecb: null,
61888
    writechunk: null,
61889
    writeencoding: null
61890
  }; // start out asking for a readable event once data is transformed.
61891
61892
  this._readableState.needReadable = true; // we have implemented the _read method, and done the other things
61893
  // that Readable wants before the first _read call, so unset the
61894
  // sync guard flag.
61895
61896
  this._readableState.sync = false;
61897
61898
  if (options) {
61899
    if (typeof options.transform === 'function') this._transform = options.transform;
61900
    if (typeof options.flush === 'function') this._flush = options.flush;
61901
  } // When the writable side finishes, then flush out anything remaining.
61902
61903
61904
  this.on('prefinish', prefinish);
61905
}
61906
61907
function prefinish() {
61908
  var _this = this;
61909
61910
  if (typeof this._flush === 'function' && !this._readableState.destroyed) {
61911
    this._flush(function (er, data) {
61912
      done(_this, er, data);
61913
    });
61914
  } else {
61915
    done(this, null, null);
61916
  }
61917
}
61918
61919
Transform.prototype.push = function (chunk, encoding) {
61920
  this._transformState.needTransform = false;
61921
  return Duplex.prototype.push.call(this, chunk, encoding);
61922
}; // This is the part where you do stuff!
61923
// override this function in implementation classes.
61924
// 'chunk' is an input chunk.
61925
//
61926
// Call `push(newChunk)` to pass along transformed output
61927
// to the readable side.  You may call 'push' zero or more times.
61928
//
61929
// Call `cb(err)` when you are done with this chunk.  If you pass
61930
// an error, then that'll put the hurt on the whole operation.  If you
61931
// never call cb(), then you'll never get another chunk.
61932
61933
61934
Transform.prototype._transform = function (chunk, encoding, cb) {
61935
  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));
61936
};
61937
61938
Transform.prototype._write = function (chunk, encoding, cb) {
61939
  var ts = this._transformState;
61940
  ts.writecb = cb;
61941
  ts.writechunk = chunk;
61942
  ts.writeencoding = encoding;
61943
61944
  if (!ts.transforming) {
61945
    var rs = this._readableState;
61946
    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
61947
  }
61948
}; // Doesn't matter what the args are here.
61949
// _transform does all the work.
61950
// That we got here means that the readable side wants more data.
61951
61952
61953
Transform.prototype._read = function (n) {
61954
  var ts = this._transformState;
61955
61956
  if (ts.writechunk !== null && !ts.transforming) {
61957
    ts.transforming = true;
61958
61959
    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
61960
  } else {
61961
    // mark that we need a transform, so that any data that comes in
61962
    // will get processed, now that we've asked for it.
61963
    ts.needTransform = true;
61964
  }
61965
};
61966
61967
Transform.prototype._destroy = function (err, cb) {
61968
  Duplex.prototype._destroy.call(this, err, function (err2) {
61969
    cb(err2);
61970
  });
61971
};
61972
61973
function done(stream, er, data) {
61974
  if (er) return stream.emit('error', er);
61975
  if (data != null) // single equals check for both `null` and `undefined`
61976
    stream.push(data); // TODO(BridgeAR): Write a test for these two error cases
61977
  // if there's nothing in the write buffer, then that means
61978
  // that nothing more will ever be provided
61979
61980
  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();
61981
  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();
61982
  return stream.push(null);
61983
}
61984
61985
/***/ }),
61986
61987
/***/ 323:
61988
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
61989
61990
"use strict";
61991
/* provided dependency */ var process = __webpack_require__(4155);
61992
// Copyright Joyent, Inc. and other Node contributors.
61993
//
61994
// Permission is hereby granted, free of charge, to any person obtaining a
61995
// copy of this software and associated documentation files (the
61996
// "Software"), to deal in the Software without restriction, including
61997
// without limitation the rights to use, copy, modify, merge, publish,
61998
// distribute, sublicense, and/or sell copies of the Software, and to permit
61999
// persons to whom the Software is furnished to do so, subject to the
62000
// following conditions:
62001
//
62002
// The above copyright notice and this permission notice shall be included
62003
// in all copies or substantial portions of the Software.
62004
//
62005
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
62006
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
62007
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
62008
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
62009
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
62010
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
62011
// USE OR OTHER DEALINGS IN THE SOFTWARE.
62012
// A bit simpler than readable streams.
62013
// Implement an async ._write(chunk, encoding, cb), and it'll handle all
62014
// the drain event emission and buffering.
62015
62016
62017
module.exports = Writable;
62018
/* <replacement> */
62019
62020
function WriteReq(chunk, encoding, cb) {
62021
  this.chunk = chunk;
62022
  this.encoding = encoding;
62023
  this.callback = cb;
62024
  this.next = null;
62025
} // It seems a linked list but it is not
62026
// there will be only 2 of these for each stream
62027
62028
62029
function CorkedRequest(state) {
62030
  var _this = this;
62031
62032
  this.next = null;
62033
  this.entry = null;
62034
62035
  this.finish = function () {
62036
    onCorkedFinish(_this, state);
62037
  };
62038
}
62039
/* </replacement> */
62040
62041
/*<replacement>*/
62042
62043
62044
var Duplex;
62045
/*</replacement>*/
62046
62047
Writable.WritableState = WritableState;
62048
/*<replacement>*/
62049
62050
var internalUtil = {
62051
  deprecate: __webpack_require__(4927)
62052
};
62053
/*</replacement>*/
62054
62055
/*<replacement>*/
62056
62057
var Stream = __webpack_require__(3194);
62058
/*</replacement>*/
62059
62060
62061
var Buffer = (__webpack_require__(8823).Buffer);
62062
62063
var OurUint8Array = __webpack_require__.g.Uint8Array || function () {};
62064
62065
function _uint8ArrayToBuffer(chunk) {
62066
  return Buffer.from(chunk);
62067
}
62068
62069
function _isUint8Array(obj) {
62070
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
62071
}
62072
62073
var destroyImpl = __webpack_require__(1029);
62074
62075
var _require = __webpack_require__(94),
62076
    getHighWaterMark = _require.getHighWaterMark;
62077
62078
var _require$codes = (__webpack_require__(8106)/* .codes */ .q),
62079
    ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
62080
    ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
62081
    ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
62082
    ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,
62083
    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,
62084
    ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,
62085
    ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,
62086
    ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
62087
62088
var errorOrDestroy = destroyImpl.errorOrDestroy;
62089
62090
__webpack_require__(5717)(Writable, Stream);
62091
62092
function nop() {}
62093
62094
function WritableState(options, stream, isDuplex) {
62095
  Duplex = Duplex || __webpack_require__(8656);
62096
  options = options || {}; // Duplex streams are both readable and writable, but share
62097
  // the same options object.
62098
  // However, some cases require setting options to different
62099
  // values for the readable and the writable sides of the duplex stream,
62100
  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.
62101
62102
  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream
62103
  // contains buffers or objects.
62104
62105
  this.objectMode = !!options.objectMode;
62106
  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false
62107
  // Note: 0 is a valid value, means that we always return false if
62108
  // the entire buffer is not flushed immediately on write()
62109
62110
  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called
62111
62112
  this.finalCalled = false; // drain event flag.
62113
62114
  this.needDrain = false; // at the start of calling end()
62115
62116
  this.ending = false; // when end() has been called, and returned
62117
62118
  this.ended = false; // when 'finish' is emitted
62119
62120
  this.finished = false; // has it been destroyed
62121
62122
  this.destroyed = false; // should we decode strings into buffers before passing to _write?
62123
  // this is here so that some node-core streams can optimize string
62124
  // handling at a lower level.
62125
62126
  var noDecode = options.decodeStrings === false;
62127
  this.decodeStrings = !noDecode; // Crypto is kind of old and crusty.  Historically, its default string
62128
  // encoding is 'binary' so we have to make this configurable.
62129
  // Everything else in the universe uses 'utf8', though.
62130
62131
  this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement
62132
  // of how much we're waiting to get pushed to some underlying
62133
  // socket or file.
62134
62135
  this.length = 0; // a flag to see when we're in the middle of a write.
62136
62137
  this.writing = false; // when true all writes will be buffered until .uncork() call
62138
62139
  this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,
62140
  // or on a later tick.  We set this to true at first, because any
62141
  // actions that shouldn't happen until "later" should generally also
62142
  // not happen before the first write call.
62143
62144
  this.sync = true; // a flag to know if we're processing previously buffered items, which
62145
  // may call the _write() callback in the same tick, so that we don't
62146
  // end up in an overlapped onwrite situation.
62147
62148
  this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)
62149
62150
  this.onwrite = function (er) {
62151
    onwrite(stream, er);
62152
  }; // the callback that the user supplies to write(chunk,encoding,cb)
62153
62154
62155
  this.writecb = null; // the amount that is being written when _write is called.
62156
62157
  this.writelen = 0;
62158
  this.bufferedRequest = null;
62159
  this.lastBufferedRequest = null; // number of pending user-supplied write callbacks
62160
  // this must be 0 before 'finish' can be emitted
62161
62162
  this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs
62163
  // This is relevant for synchronous Transform streams
62164
62165
  this.prefinished = false; // True if the error was already emitted and should not be thrown again
62166
62167
  this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.
62168
62169
  this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')
62170
62171
  this.autoDestroy = !!options.autoDestroy; // count buffered requests
62172
62173
  this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always
62174
  // one allocated and free to use, and we maintain at most two
62175
62176
  this.corkedRequestsFree = new CorkedRequest(this);
62177
}
62178
62179
WritableState.prototype.getBuffer = function getBuffer() {
62180
  var current = this.bufferedRequest;
62181
  var out = [];
62182
62183
  while (current) {
62184
    out.push(current);
62185
    current = current.next;
62186
  }
62187
62188
  return out;
62189
};
62190
62191
(function () {
62192
  try {
62193
    Object.defineProperty(WritableState.prototype, 'buffer', {
62194
      get: internalUtil.deprecate(function writableStateBufferGetter() {
62195
        return this.getBuffer();
62196
      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
62197
    });
62198
  } catch (_) {}
62199
})(); // Test _writableState for inheritance to account for Duplex streams,
62200
// whose prototype chain only points to Readable.
62201
62202
62203
var realHasInstance;
62204
62205
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
62206
  realHasInstance = Function.prototype[Symbol.hasInstance];
62207
  Object.defineProperty(Writable, Symbol.hasInstance, {
62208
    value: function value(object) {
62209
      if (realHasInstance.call(this, object)) return true;
62210
      if (this !== Writable) return false;
62211
      return object && object._writableState instanceof WritableState;
62212
    }
62213
  });
62214
} else {
62215
  realHasInstance = function realHasInstance(object) {
62216
    return object instanceof this;
62217
  };
62218
}
62219
62220
function Writable(options) {
62221
  Duplex = Duplex || __webpack_require__(8656); // Writable ctor is applied to Duplexes, too.
62222
  // `realHasInstance` is necessary because using plain `instanceof`
62223
  // would return false, as no `_writableState` property is attached.
62224
  // Trying to use the custom `instanceof` for Writable here will also break the
62225
  // Node.js LazyTransform implementation, which has a non-trivial getter for
62226
  // `_writableState` that would lead to infinite recursion.
62227
  // Checking for a Stream.Duplex instance is faster here instead of inside
62228
  // the WritableState constructor, at least with V8 6.5
62229
62230
  var isDuplex = this instanceof Duplex;
62231
  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);
62232
  this._writableState = new WritableState(options, this, isDuplex); // legacy.
62233
62234
  this.writable = true;
62235
62236
  if (options) {
62237
    if (typeof options.write === 'function') this._write = options.write;
62238
    if (typeof options.writev === 'function') this._writev = options.writev;
62239
    if (typeof options.destroy === 'function') this._destroy = options.destroy;
62240
    if (typeof options.final === 'function') this._final = options.final;
62241
  }
62242
62243
  Stream.call(this);
62244
} // Otherwise people can pipe Writable streams, which is just wrong.
62245
62246
62247
Writable.prototype.pipe = function () {
62248
  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());
62249
};
62250
62251
function writeAfterEnd(stream, cb) {
62252
  var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb
62253
62254
  errorOrDestroy(stream, er);
62255
  process.nextTick(cb, er);
62256
} // Checks that a user-supplied chunk is valid, especially for the particular
62257
// mode the stream is in. Currently this means that `null` is never accepted
62258
// and undefined/non-string values are only allowed in object mode.
62259
62260
62261
function validChunk(stream, state, chunk, cb) {
62262
  var er;
62263
62264
  if (chunk === null) {
62265
    er = new ERR_STREAM_NULL_VALUES();
62266
  } else if (typeof chunk !== 'string' && !state.objectMode) {
62267
    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);
62268
  }
62269
62270
  if (er) {
62271
    errorOrDestroy(stream, er);
62272
    process.nextTick(cb, er);
62273
    return false;
62274
  }
62275
62276
  return true;
62277
}
62278
62279
Writable.prototype.write = function (chunk, encoding, cb) {
62280
  var state = this._writableState;
62281
  var ret = false;
62282
62283
  var isBuf = !state.objectMode && _isUint8Array(chunk);
62284
62285
  if (isBuf && !Buffer.isBuffer(chunk)) {
62286
    chunk = _uint8ArrayToBuffer(chunk);
62287
  }
62288
62289
  if (typeof encoding === 'function') {
62290
    cb = encoding;
62291
    encoding = null;
62292
  }
62293
62294
  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
62295
  if (typeof cb !== 'function') cb = nop;
62296
  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
62297
    state.pendingcb++;
62298
    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
62299
  }
62300
  return ret;
62301
};
62302
62303
Writable.prototype.cork = function () {
62304
  this._writableState.corked++;
62305
};
62306
62307
Writable.prototype.uncork = function () {
62308
  var state = this._writableState;
62309
62310
  if (state.corked) {
62311
    state.corked--;
62312
    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
62313
  }
62314
};
62315
62316
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
62317
  // node::ParseEncoding() requires lower case.
62318
  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
62319
  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);
62320
  this._writableState.defaultEncoding = encoding;
62321
  return this;
62322
};
62323
62324
Object.defineProperty(Writable.prototype, 'writableBuffer', {
62325
  // making it explicit this property is not enumerable
62326
  // because otherwise some prototype manipulation in
62327
  // userland will fail
62328
  enumerable: false,
62329
  get: function get() {
62330
    return this._writableState && this._writableState.getBuffer();
62331
  }
62332
});
62333
62334
function decodeChunk(state, chunk, encoding) {
62335
  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
62336
    chunk = Buffer.from(chunk, encoding);
62337
  }
62338
62339
  return chunk;
62340
}
62341
62342
Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
62343
  // making it explicit this property is not enumerable
62344
  // because otherwise some prototype manipulation in
62345
  // userland will fail
62346
  enumerable: false,
62347
  get: function get() {
62348
    return this._writableState.highWaterMark;
62349
  }
62350
}); // if we're already writing something, then just put this
62351
// in the queue, and wait our turn.  Otherwise, call _write
62352
// If we return false, then we need a drain event, so set that flag.
62353
62354
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
62355
  if (!isBuf) {
62356
    var newChunk = decodeChunk(state, chunk, encoding);
62357
62358
    if (chunk !== newChunk) {
62359
      isBuf = true;
62360
      encoding = 'buffer';
62361
      chunk = newChunk;
62362
    }
62363
  }
62364
62365
  var len = state.objectMode ? 1 : chunk.length;
62366
  state.length += len;
62367
  var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.
62368
62369
  if (!ret) state.needDrain = true;
62370
62371
  if (state.writing || state.corked) {
62372
    var last = state.lastBufferedRequest;
62373
    state.lastBufferedRequest = {
62374
      chunk: chunk,
62375
      encoding: encoding,
62376
      isBuf: isBuf,
62377
      callback: cb,
62378
      next: null
62379
    };
62380
62381
    if (last) {
62382
      last.next = state.lastBufferedRequest;
62383
    } else {
62384
      state.bufferedRequest = state.lastBufferedRequest;
62385
    }
62386
62387
    state.bufferedRequestCount += 1;
62388
  } else {
62389
    doWrite(stream, state, false, len, chunk, encoding, cb);
62390
  }
62391
62392
  return ret;
62393
}
62394
62395
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
62396
  state.writelen = len;
62397
  state.writecb = cb;
62398
  state.writing = true;
62399
  state.sync = true;
62400
  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
62401
  state.sync = false;
62402
}
62403
62404
function onwriteError(stream, state, sync, er, cb) {
62405
  --state.pendingcb;
62406
62407
  if (sync) {
62408
    // defer the callback if we are being called synchronously
62409
    // to avoid piling up things on the stack
62410
    process.nextTick(cb, er); // this can emit finish, and it will always happen
62411
    // after error
62412
62413
    process.nextTick(finishMaybe, stream, state);
62414
    stream._writableState.errorEmitted = true;
62415
    errorOrDestroy(stream, er);
62416
  } else {
62417
    // the caller expect this to happen before if
62418
    // it is async
62419
    cb(er);
62420
    stream._writableState.errorEmitted = true;
62421
    errorOrDestroy(stream, er); // this can emit finish, but finish must
62422
    // always follow error
62423
62424
    finishMaybe(stream, state);
62425
  }
62426
}
62427
62428
function onwriteStateUpdate(state) {
62429
  state.writing = false;
62430
  state.writecb = null;
62431
  state.length -= state.writelen;
62432
  state.writelen = 0;
62433
}
62434
62435
function onwrite(stream, er) {
62436
  var state = stream._writableState;
62437
  var sync = state.sync;
62438
  var cb = state.writecb;
62439
  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();
62440
  onwriteStateUpdate(state);
62441
  if (er) onwriteError(stream, state, sync, er, cb);else {
62442
    // Check if we're actually ready to finish, but don't emit yet
62443
    var finished = needFinish(state) || stream.destroyed;
62444
62445
    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
62446
      clearBuffer(stream, state);
62447
    }
62448
62449
    if (sync) {
62450
      process.nextTick(afterWrite, stream, state, finished, cb);
62451
    } else {
62452
      afterWrite(stream, state, finished, cb);
62453
    }
62454
  }
62455
}
62456
62457
function afterWrite(stream, state, finished, cb) {
62458
  if (!finished) onwriteDrain(stream, state);
62459
  state.pendingcb--;
62460
  cb();
62461
  finishMaybe(stream, state);
62462
} // Must force callback to be called on nextTick, so that we don't
62463
// emit 'drain' before the write() consumer gets the 'false' return
62464
// value, and has a chance to attach a 'drain' listener.
62465
62466
62467
function onwriteDrain(stream, state) {
62468
  if (state.length === 0 && state.needDrain) {
62469
    state.needDrain = false;
62470
    stream.emit('drain');
62471
  }
62472
} // if there's something in the buffer waiting, then process it
62473
62474
62475
function clearBuffer(stream, state) {
62476
  state.bufferProcessing = true;
62477
  var entry = state.bufferedRequest;
62478
62479
  if (stream._writev && entry && entry.next) {
62480
    // Fast case, write everything using _writev()
62481
    var l = state.bufferedRequestCount;
62482
    var buffer = new Array(l);
62483
    var holder = state.corkedRequestsFree;
62484
    holder.entry = entry;
62485
    var count = 0;
62486
    var allBuffers = true;
62487
62488
    while (entry) {
62489
      buffer[count] = entry;
62490
      if (!entry.isBuf) allBuffers = false;
62491
      entry = entry.next;
62492
      count += 1;
62493
    }
62494
62495
    buffer.allBuffers = allBuffers;
62496
    doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time
62497
    // as the hot path ends with doWrite
62498
62499
    state.pendingcb++;
62500
    state.lastBufferedRequest = null;
62501
62502
    if (holder.next) {
62503
      state.corkedRequestsFree = holder.next;
62504
      holder.next = null;
62505
    } else {
62506
      state.corkedRequestsFree = new CorkedRequest(state);
62507
    }
62508
62509
    state.bufferedRequestCount = 0;
62510
  } else {
62511
    // Slow case, write chunks one-by-one
62512
    while (entry) {
62513
      var chunk = entry.chunk;
62514
      var encoding = entry.encoding;
62515
      var cb = entry.callback;
62516
      var len = state.objectMode ? 1 : chunk.length;
62517
      doWrite(stream, state, false, len, chunk, encoding, cb);
62518
      entry = entry.next;
62519
      state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then
62520
      // it means that we need to wait until it does.
62521
      // also, that means that the chunk and cb are currently
62522
      // being processed, so move the buffer counter past them.
62523
62524
      if (state.writing) {
62525
        break;
62526
      }
62527
    }
62528
62529
    if (entry === null) state.lastBufferedRequest = null;
62530
  }
62531
62532
  state.bufferedRequest = entry;
62533
  state.bufferProcessing = false;
62534
}
62535
62536
Writable.prototype._write = function (chunk, encoding, cb) {
62537
  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));
62538
};
62539
62540
Writable.prototype._writev = null;
62541
62542
Writable.prototype.end = function (chunk, encoding, cb) {
62543
  var state = this._writableState;
62544
62545
  if (typeof chunk === 'function') {
62546
    cb = chunk;
62547
    chunk = null;
62548
    encoding = null;
62549
  } else if (typeof encoding === 'function') {
62550
    cb = encoding;
62551
    encoding = null;
62552
  }
62553
62554
  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks
62555
62556
  if (state.corked) {
62557
    state.corked = 1;
62558
    this.uncork();
62559
  } // ignore unnecessary end() calls.
62560
62561
62562
  if (!state.ending) endWritable(this, state, cb);
62563
  return this;
62564
};
62565
62566
Object.defineProperty(Writable.prototype, 'writableLength', {
62567
  // making it explicit this property is not enumerable
62568
  // because otherwise some prototype manipulation in
62569
  // userland will fail
62570
  enumerable: false,
62571
  get: function get() {
62572
    return this._writableState.length;
62573
  }
62574
});
62575
62576
function needFinish(state) {
62577
  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
62578
}
62579
62580
function callFinal(stream, state) {
62581
  stream._final(function (err) {
62582
    state.pendingcb--;
62583
62584
    if (err) {
62585
      errorOrDestroy(stream, err);
62586
    }
62587
62588
    state.prefinished = true;
62589
    stream.emit('prefinish');
62590
    finishMaybe(stream, state);
62591
  });
62592
}
62593
62594
function prefinish(stream, state) {
62595
  if (!state.prefinished && !state.finalCalled) {
62596
    if (typeof stream._final === 'function' && !state.destroyed) {
62597
      state.pendingcb++;
62598
      state.finalCalled = true;
62599
      process.nextTick(callFinal, stream, state);
62600
    } else {
62601
      state.prefinished = true;
62602
      stream.emit('prefinish');
62603
    }
62604
  }
62605
}
62606
62607
function finishMaybe(stream, state) {
62608
  var need = needFinish(state);
62609
62610
  if (need) {
62611
    prefinish(stream, state);
62612
62613
    if (state.pendingcb === 0) {
62614
      state.finished = true;
62615
      stream.emit('finish');
62616
62617
      if (state.autoDestroy) {
62618
        // In case of duplex streams we need a way to detect
62619
        // if the readable side is ready for autoDestroy as well
62620
        var rState = stream._readableState;
62621
62622
        if (!rState || rState.autoDestroy && rState.endEmitted) {
62623
          stream.destroy();
62624
        }
62625
      }
62626
    }
62627
  }
62628
62629
  return need;
62630
}
62631
62632
function endWritable(stream, state, cb) {
62633
  state.ending = true;
62634
  finishMaybe(stream, state);
62635
62636
  if (cb) {
62637
    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);
62638
  }
62639
62640
  state.ended = true;
62641
  stream.writable = false;
62642
}
62643
62644
function onCorkedFinish(corkReq, state, err) {
62645
  var entry = corkReq.entry;
62646
  corkReq.entry = null;
62647
62648
  while (entry) {
62649
    var cb = entry.callback;
62650
    state.pendingcb--;
62651
    cb(err);
62652
    entry = entry.next;
62653
  } // reuse the free corkReq.
62654
62655
62656
  state.corkedRequestsFree.next = corkReq;
62657
}
62658
62659
Object.defineProperty(Writable.prototype, 'destroyed', {
62660
  // making it explicit this property is not enumerable
62661
  // because otherwise some prototype manipulation in
62662
  // userland will fail
62663
  enumerable: false,
62664
  get: function get() {
62665
    if (this._writableState === undefined) {
62666
      return false;
62667
    }
62668
62669
    return this._writableState.destroyed;
62670
  },
62671
  set: function set(value) {
62672
    // we ignore the value if the stream
62673
    // has not been initialized yet
62674
    if (!this._writableState) {
62675
      return;
62676
    } // backward compatibility, the user is explicitly
62677
    // managing destroyed
62678
62679
62680
    this._writableState.destroyed = value;
62681
  }
62682
});
62683
Writable.prototype.destroy = destroyImpl.destroy;
62684
Writable.prototype._undestroy = destroyImpl.undestroy;
62685
62686
Writable.prototype._destroy = function (err, cb) {
62687
  cb(err);
62688
};
62689
62690
/***/ }),
62691
62692
/***/ 828:
62693
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
62694
62695
"use strict";
62696
/* provided dependency */ var process = __webpack_require__(4155);
62697
62698
62699
var _Object$setPrototypeO;
62700
62701
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
62702
62703
var finished = __webpack_require__(1086);
62704
62705
var kLastResolve = Symbol('lastResolve');
62706
var kLastReject = Symbol('lastReject');
62707
var kError = Symbol('error');
62708
var kEnded = Symbol('ended');
62709
var kLastPromise = Symbol('lastPromise');
62710
var kHandlePromise = Symbol('handlePromise');
62711
var kStream = Symbol('stream');
62712
62713
function createIterResult(value, done) {
62714
  return {
62715
    value: value,
62716
    done: done
62717
  };
62718
}
62719
62720
function readAndResolve(iter) {
62721
  var resolve = iter[kLastResolve];
62722
62723
  if (resolve !== null) {
62724
    var data = iter[kStream].read(); // we defer if data is null
62725
    // we can be expecting either 'end' or
62726
    // 'error'
62727
62728
    if (data !== null) {
62729
      iter[kLastPromise] = null;
62730
      iter[kLastResolve] = null;
62731
      iter[kLastReject] = null;
62732
      resolve(createIterResult(data, false));
62733
    }
62734
  }
62735
}
62736
62737
function onReadable(iter) {
62738
  // we wait for the next tick, because it might
62739
  // emit an error with process.nextTick
62740
  process.nextTick(readAndResolve, iter);
62741
}
62742
62743
function wrapForNext(lastPromise, iter) {
62744
  return function (resolve, reject) {
62745
    lastPromise.then(function () {
62746
      if (iter[kEnded]) {
62747
        resolve(createIterResult(undefined, true));
62748
        return;
62749
      }
62750
62751
      iter[kHandlePromise](resolve, reject);
62752
    }, reject);
62753
  };
62754
}
62755
62756
var AsyncIteratorPrototype = Object.getPrototypeOf(function () {});
62757
var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
62758
  get stream() {
62759
    return this[kStream];
62760
  },
62761
62762
  next: function next() {
62763
    var _this = this;
62764
62765
    // if we have detected an error in the meanwhile
62766
    // reject straight away
62767
    var error = this[kError];
62768
62769
    if (error !== null) {
62770
      return Promise.reject(error);
62771
    }
62772
62773
    if (this[kEnded]) {
62774
      return Promise.resolve(createIterResult(undefined, true));
62775
    }
62776
62777
    if (this[kStream].destroyed) {
62778
      // We need to defer via nextTick because if .destroy(err) is
62779
      // called, the error will be emitted via nextTick, and
62780
      // we cannot guarantee that there is no error lingering around
62781
      // waiting to be emitted.
62782
      return new Promise(function (resolve, reject) {
62783
        process.nextTick(function () {
62784
          if (_this[kError]) {
62785
            reject(_this[kError]);
62786
          } else {
62787
            resolve(createIterResult(undefined, true));
62788
          }
62789
        });
62790
      });
62791
    } // if we have multiple next() calls
62792
    // we will wait for the previous Promise to finish
62793
    // this logic is optimized to support for await loops,
62794
    // where next() is only called once at a time
62795
62796
62797
    var lastPromise = this[kLastPromise];
62798
    var promise;
62799
62800
    if (lastPromise) {
62801
      promise = new Promise(wrapForNext(lastPromise, this));
62802
    } else {
62803
      // fast path needed to support multiple this.push()
62804
      // without triggering the next() queue
62805
      var data = this[kStream].read();
62806
62807
      if (data !== null) {
62808
        return Promise.resolve(createIterResult(data, false));
62809
      }
62810
62811
      promise = new Promise(this[kHandlePromise]);
62812
    }
62813
62814
    this[kLastPromise] = promise;
62815
    return promise;
62816
  }
62817
}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {
62818
  return this;
62819
}), _defineProperty(_Object$setPrototypeO, "return", function _return() {
62820
  var _this2 = this;
62821
62822
  // destroy(err, cb) is a private API
62823
  // we can guarantee we have that here, because we control the
62824
  // Readable class this is attached to
62825
  return new Promise(function (resolve, reject) {
62826
    _this2[kStream].destroy(null, function (err) {
62827
      if (err) {
62828
        reject(err);
62829
        return;
62830
      }
62831
62832
      resolve(createIterResult(undefined, true));
62833
    });
62834
  });
62835
}), _Object$setPrototypeO), AsyncIteratorPrototype);
62836
62837
var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {
62838
  var _Object$create;
62839
62840
  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
62841
    value: stream,
62842
    writable: true
62843
  }), _defineProperty(_Object$create, kLastResolve, {
62844
    value: null,
62845
    writable: true
62846
  }), _defineProperty(_Object$create, kLastReject, {
62847
    value: null,
62848
    writable: true
62849
  }), _defineProperty(_Object$create, kError, {
62850
    value: null,
62851
    writable: true
62852
  }), _defineProperty(_Object$create, kEnded, {
62853
    value: stream._readableState.endEmitted,
62854
    writable: true
62855
  }), _defineProperty(_Object$create, kHandlePromise, {
62856
    value: function value(resolve, reject) {
62857
      var data = iterator[kStream].read();
62858
62859
      if (data) {
62860
        iterator[kLastPromise] = null;
62861
        iterator[kLastResolve] = null;
62862
        iterator[kLastReject] = null;
62863
        resolve(createIterResult(data, false));
62864
      } else {
62865
        iterator[kLastResolve] = resolve;
62866
        iterator[kLastReject] = reject;
62867
      }
62868
    },
62869
    writable: true
62870
  }), _Object$create));
62871
  iterator[kLastPromise] = null;
62872
  finished(stream, function (err) {
62873
    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
62874
      var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise
62875
      // returned by next() and store the error
62876
62877
      if (reject !== null) {
62878
        iterator[kLastPromise] = null;
62879
        iterator[kLastResolve] = null;
62880
        iterator[kLastReject] = null;
62881
        reject(err);
62882
      }
62883
62884
      iterator[kError] = err;
62885
      return;
62886
    }
62887
62888
    var resolve = iterator[kLastResolve];
62889
62890
    if (resolve !== null) {
62891
      iterator[kLastPromise] = null;
62892
      iterator[kLastResolve] = null;
62893
      iterator[kLastReject] = null;
62894
      resolve(createIterResult(undefined, true));
62895
    }
62896
62897
    iterator[kEnded] = true;
62898
  });
62899
  stream.on('readable', onReadable.bind(null, iterator));
62900
  return iterator;
62901
};
62902
62903
module.exports = createReadableStreamAsyncIterator;
62904
62905
/***/ }),
62906
62907
/***/ 1029:
62908
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
62909
62910
"use strict";
62911
/* provided dependency */ var process = __webpack_require__(4155);
62912
 // undocumented cb() API, needed for core, not for public API
62913
62914
function destroy(err, cb) {
62915
  var _this = this;
62916
62917
  var readableDestroyed = this._readableState && this._readableState.destroyed;
62918
  var writableDestroyed = this._writableState && this._writableState.destroyed;
62919
62920
  if (readableDestroyed || writableDestroyed) {
62921
    if (cb) {
62922
      cb(err);
62923
    } else if (err) {
62924
      if (!this._writableState) {
62925
        process.nextTick(emitErrorNT, this, err);
62926
      } else if (!this._writableState.errorEmitted) {
62927
        this._writableState.errorEmitted = true;
62928
        process.nextTick(emitErrorNT, this, err);
62929
      }
62930
    }
62931
62932
    return this;
62933
  } // we set destroyed to true before firing error callbacks in order
62934
  // to make it re-entrance safe in case destroy() is called within callbacks
62935
62936
62937
  if (this._readableState) {
62938
    this._readableState.destroyed = true;
62939
  } // if this is a duplex stream mark the writable part as destroyed as well
62940
62941
62942
  if (this._writableState) {
62943
    this._writableState.destroyed = true;
62944
  }
62945
62946
  this._destroy(err || null, function (err) {
62947
    if (!cb && err) {
62948
      if (!_this._writableState) {
62949
        process.nextTick(emitErrorAndCloseNT, _this, err);
62950
      } else if (!_this._writableState.errorEmitted) {
62951
        _this._writableState.errorEmitted = true;
62952
        process.nextTick(emitErrorAndCloseNT, _this, err);
62953
      } else {
62954
        process.nextTick(emitCloseNT, _this);
62955
      }
62956
    } else if (cb) {
62957
      process.nextTick(emitCloseNT, _this);
62958
      cb(err);
62959
    } else {
62960
      process.nextTick(emitCloseNT, _this);
62961
    }
62962
  });
62963
62964
  return this;
62965
}
62966
62967
function emitErrorAndCloseNT(self, err) {
62968
  emitErrorNT(self, err);
62969
  emitCloseNT(self);
62970
}
62971
62972
function emitCloseNT(self) {
62973
  if (self._writableState && !self._writableState.emitClose) return;
62974
  if (self._readableState && !self._readableState.emitClose) return;
62975
  self.emit('close');
62976
}
62977
62978
function undestroy() {
62979
  if (this._readableState) {
62980
    this._readableState.destroyed = false;
62981
    this._readableState.reading = false;
62982
    this._readableState.ended = false;
62983
    this._readableState.endEmitted = false;
62984
  }
62985
62986
  if (this._writableState) {
62987
    this._writableState.destroyed = false;
62988
    this._writableState.ended = false;
62989
    this._writableState.ending = false;
62990
    this._writableState.finalCalled = false;
62991
    this._writableState.prefinished = false;
62992
    this._writableState.finished = false;
62993
    this._writableState.errorEmitted = false;
62994
  }
62995
}
62996
62997
function emitErrorNT(self, err) {
62998
  self.emit('error', err);
62999
}
63000
63001
function errorOrDestroy(stream, err) {
63002
  // We have tests that rely on errors being emitted
63003
  // in the same tick, so changing this is semver major.
63004
  // For now when you opt-in to autoDestroy we allow
63005
  // the error to be emitted nextTick. In a future
63006
  // semver major update we should change the default to this.
63007
  var rState = stream._readableState;
63008
  var wState = stream._writableState;
63009
  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);
63010
}
63011
63012
module.exports = {
63013
  destroy: destroy,
63014
  undestroy: undestroy,
63015
  errorOrDestroy: errorOrDestroy
63016
};
63017
63018
/***/ }),
63019
63020
/***/ 1086:
63021
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
63022
63023
"use strict";
63024
// Ported from https://github.com/mafintosh/end-of-stream with
63025
// permission from the author, Mathias Buus (@mafintosh).
63026
63027
63028
var ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(8106)/* .codes.ERR_STREAM_PREMATURE_CLOSE */ .q.ERR_STREAM_PREMATURE_CLOSE);
63029
63030
function once(callback) {
63031
  var called = false;
63032
  return function () {
63033
    if (called) return;
63034
    called = true;
63035
63036
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
63037
      args[_key] = arguments[_key];
63038
    }
63039
63040
    callback.apply(this, args);
63041
  };
63042
}
63043
63044
function noop() {}
63045
63046
function isRequest(stream) {
63047
  return stream.setHeader && typeof stream.abort === 'function';
63048
}
63049
63050
function eos(stream, opts, callback) {
63051
  if (typeof opts === 'function') return eos(stream, null, opts);
63052
  if (!opts) opts = {};
63053
  callback = once(callback || noop);
63054
  var readable = opts.readable || opts.readable !== false && stream.readable;
63055
  var writable = opts.writable || opts.writable !== false && stream.writable;
63056
63057
  var onlegacyfinish = function onlegacyfinish() {
63058
    if (!stream.writable) onfinish();
63059
  };
63060
63061
  var writableEnded = stream._writableState && stream._writableState.finished;
63062
63063
  var onfinish = function onfinish() {
63064
    writable = false;
63065
    writableEnded = true;
63066
    if (!readable) callback.call(stream);
63067
  };
63068
63069
  var readableEnded = stream._readableState && stream._readableState.endEmitted;
63070
63071
  var onend = function onend() {
63072
    readable = false;
63073
    readableEnded = true;
63074
    if (!writable) callback.call(stream);
63075
  };
63076
63077
  var onerror = function onerror(err) {
63078
    callback.call(stream, err);
63079
  };
63080
63081
  var onclose = function onclose() {
63082
    var err;
63083
63084
    if (readable && !readableEnded) {
63085
      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
63086
      return callback.call(stream, err);
63087
    }
63088
63089
    if (writable && !writableEnded) {
63090
      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
63091
      return callback.call(stream, err);
63092
    }
63093
  };
63094
63095
  var onrequest = function onrequest() {
63096
    stream.req.on('finish', onfinish);
63097
  };
63098
63099
  if (isRequest(stream)) {
63100
    stream.on('complete', onfinish);
63101
    stream.on('abort', onclose);
63102
    if (stream.req) onrequest();else stream.on('request', onrequest);
63103
  } else if (writable && !stream._writableState) {
63104
    // legacy streams
63105
    stream.on('end', onlegacyfinish);
63106
    stream.on('close', onlegacyfinish);
63107
  }
63108
63109
  stream.on('end', onend);
63110
  stream.on('finish', onfinish);
63111
  if (opts.error !== false) stream.on('error', onerror);
63112
  stream.on('close', onclose);
63113
  return function () {
63114
    stream.removeListener('complete', onfinish);
63115
    stream.removeListener('abort', onclose);
63116
    stream.removeListener('request', onrequest);
63117
    if (stream.req) stream.req.removeListener('finish', onfinish);
63118
    stream.removeListener('end', onlegacyfinish);
63119
    stream.removeListener('close', onlegacyfinish);
63120
    stream.removeListener('finish', onfinish);
63121
    stream.removeListener('end', onend);
63122
    stream.removeListener('error', onerror);
63123
    stream.removeListener('close', onclose);
63124
  };
63125
}
63126
63127
module.exports = eos;
63128
63129
/***/ }),
63130
63131
/***/ 1265:
63132
/***/ (function(module) {
63133
63134
module.exports = function () {
63135
  throw new Error('Readable.from is not available in the browser')
63136
};
63137
63138
63139
/***/ }),
63140
63141
/***/ 6472:
63142
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
63143
63144
"use strict";
63145
// Ported from https://github.com/mafintosh/pump with
63146
// permission from the author, Mathias Buus (@mafintosh).
63147
63148
63149
var eos;
63150
63151
function once(callback) {
63152
  var called = false;
63153
  return function () {
63154
    if (called) return;
63155
    called = true;
63156
    callback.apply(void 0, arguments);
63157
  };
63158
}
63159
63160
var _require$codes = (__webpack_require__(8106)/* .codes */ .q),
63161
    ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,
63162
    ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
63163
63164
function noop(err) {
63165
  // Rethrow the error if it exists to avoid swallowing it
63166
  if (err) throw err;
63167
}
63168
63169
function isRequest(stream) {
63170
  return stream.setHeader && typeof stream.abort === 'function';
63171
}
63172
63173
function destroyer(stream, reading, writing, callback) {
63174
  callback = once(callback);
63175
  var closed = false;
63176
  stream.on('close', function () {
63177
    closed = true;
63178
  });
63179
  if (eos === undefined) eos = __webpack_require__(1086);
63180
  eos(stream, {
63181
    readable: reading,
63182
    writable: writing
63183
  }, function (err) {
63184
    if (err) return callback(err);
63185
    closed = true;
63186
    callback();
63187
  });
63188
  var destroyed = false;
63189
  return function (err) {
63190
    if (closed) return;
63191
    if (destroyed) return;
63192
    destroyed = true; // request.destroy just do .end - .abort is what we want
63193
63194
    if (isRequest(stream)) return stream.abort();
63195
    if (typeof stream.destroy === 'function') return stream.destroy();
63196
    callback(err || new ERR_STREAM_DESTROYED('pipe'));
63197
  };
63198
}
63199
63200
function call(fn) {
63201
  fn();
63202
}
63203
63204
function pipe(from, to) {
63205
  return from.pipe(to);
63206
}
63207
63208
function popCallback(streams) {
63209
  if (!streams.length) return noop;
63210
  if (typeof streams[streams.length - 1] !== 'function') return noop;
63211
  return streams.pop();
63212
}
63213
63214
function pipeline() {
63215
  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
63216
    streams[_key] = arguments[_key];
63217
  }
63218
63219
  var callback = popCallback(streams);
63220
  if (Array.isArray(streams[0])) streams = streams[0];
63221
63222
  if (streams.length < 2) {
63223
    throw new ERR_MISSING_ARGS('streams');
63224
  }
63225
63226
  var error;
63227
  var destroys = streams.map(function (stream, i) {
63228
    var reading = i < streams.length - 1;
63229
    var writing = i > 0;
63230
    return destroyer(stream, reading, writing, function (err) {
63231
      if (!error) error = err;
63232
      if (err) destroys.forEach(call);
63233
      if (reading) return;
63234
      destroys.forEach(call);
63235
      callback(error);
63236
    });
63237
  });
63238
  return streams.reduce(pipe);
63239
}
63240
63241
module.exports = pipeline;
63242
63243
/***/ }),
63244
63245
/***/ 94:
63246
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
63247
63248
"use strict";
63249
63250
63251
var ERR_INVALID_OPT_VALUE = (__webpack_require__(8106)/* .codes.ERR_INVALID_OPT_VALUE */ .q.ERR_INVALID_OPT_VALUE);
63252
63253
function highWaterMarkFrom(options, isDuplex, duplexKey) {
63254
  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
63255
}
63256
63257
function getHighWaterMark(state, options, duplexKey, isDuplex) {
63258
  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
63259
63260
  if (hwm != null) {
63261
    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
63262
      var name = isDuplex ? duplexKey : 'highWaterMark';
63263
      throw new ERR_INVALID_OPT_VALUE(name, hwm);
63264
    }
63265
63266
    return Math.floor(hwm);
63267
  } // Default value
63268
63269
63270
  return state.objectMode ? 16 : 16 * 1024;
63271
}
63272
63273
module.exports = {
63274
  getHighWaterMark: getHighWaterMark
63275
};
63276
63277
/***/ }),
63278
63279
/***/ 3194:
63280
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
63281
63282
module.exports = __webpack_require__(7187).EventEmitter;
63283
63284
63285
/***/ }),
63286
63287
/***/ 2984:
63288
/***/ (function(module, exports, __webpack_require__) {
63289
63290
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),
63291
		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
63292
		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
63293
		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof __webpack_require__.g&&__webpack_require__.g.global===__webpack_require__.g?__webpack_require__.g:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:(typeof HTMLAnchorElement !== "undefined" && "download" in HTMLAnchorElement.prototype)&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});
63294
63295
//# sourceMappingURL=FileSaver.min.js.map
63296
63297
/***/ }),
63298
63299
/***/ 2553:
63300
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
63301
63302
"use strict";
63303
// Copyright Joyent, Inc. and other Node contributors.
63304
//
63305
// Permission is hereby granted, free of charge, to any person obtaining a
63306
// copy of this software and associated documentation files (the
63307
// "Software"), to deal in the Software without restriction, including
63308
// without limitation the rights to use, copy, modify, merge, publish,
63309
// distribute, sublicense, and/or sell copies of the Software, and to permit
63310
// persons to whom the Software is furnished to do so, subject to the
63311
// following conditions:
63312
//
63313
// The above copyright notice and this permission notice shall be included
63314
// in all copies or substantial portions of the Software.
63315
//
63316
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
63317
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
63318
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
63319
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
63320
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
63321
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
63322
// USE OR OTHER DEALINGS IN THE SOFTWARE.
63323
63324
63325
63326
/*<replacement>*/
63327
63328
var Buffer = (__webpack_require__(4559).Buffer);
63329
/*</replacement>*/
63330
63331
var isEncoding = Buffer.isEncoding || function (encoding) {
63332
  encoding = '' + encoding;
63333
  switch (encoding && encoding.toLowerCase()) {
63334
    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
63335
      return true;
63336
    default:
63337
      return false;
63338
  }
63339
};
63340
63341
function _normalizeEncoding(enc) {
63342
  if (!enc) return 'utf8';
63343
  var retried;
63344
  while (true) {
63345
    switch (enc) {
63346
      case 'utf8':
63347
      case 'utf-8':
63348
        return 'utf8';
63349
      case 'ucs2':
63350
      case 'ucs-2':
63351
      case 'utf16le':
63352
      case 'utf-16le':
63353
        return 'utf16le';
63354
      case 'latin1':
63355
      case 'binary':
63356
        return 'latin1';
63357
      case 'base64':
63358
      case 'ascii':
63359
      case 'hex':
63360
        return enc;
63361
      default:
63362
        if (retried) return; // undefined
63363
        enc = ('' + enc).toLowerCase();
63364
        retried = true;
63365
    }
63366
  }
63367
};
63368
63369
// Do not cache `Buffer.isEncoding` when checking encoding names as some
63370
// modules monkey-patch it to support additional encodings
63371
function normalizeEncoding(enc) {
63372
  var nenc = _normalizeEncoding(enc);
63373
  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
63374
  return nenc || enc;
63375
}
63376
63377
// StringDecoder provides an interface for efficiently splitting a series of
63378
// buffers into a series of JS strings without breaking apart multi-byte
63379
// characters.
63380
exports.s = StringDecoder;
63381
function StringDecoder(encoding) {
63382
  this.encoding = normalizeEncoding(encoding);
63383
  var nb;
63384
  switch (this.encoding) {
63385
    case 'utf16le':
63386
      this.text = utf16Text;
63387
      this.end = utf16End;
63388
      nb = 4;
63389
      break;
63390
    case 'utf8':
63391
      this.fillLast = utf8FillLast;
63392
      nb = 4;
63393
      break;
63394
    case 'base64':
63395
      this.text = base64Text;
63396
      this.end = base64End;
63397
      nb = 3;
63398
      break;
63399
    default:
63400
      this.write = simpleWrite;
63401
      this.end = simpleEnd;
63402
      return;
63403
  }
63404
  this.lastNeed = 0;
63405
  this.lastTotal = 0;
63406
  this.lastChar = Buffer.allocUnsafe(nb);
63407
}
63408
63409
StringDecoder.prototype.write = function (buf) {
63410
  if (buf.length === 0) return '';
63411
  var r;
63412
  var i;
63413
  if (this.lastNeed) {
63414
    r = this.fillLast(buf);
63415
    if (r === undefined) return '';
63416
    i = this.lastNeed;
63417
    this.lastNeed = 0;
63418
  } else {
63419
    i = 0;
63420
  }
63421
  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
63422
  return r || '';
63423
};
63424
63425
StringDecoder.prototype.end = utf8End;
63426
63427
// Returns only complete characters in a Buffer
63428
StringDecoder.prototype.text = utf8Text;
63429
63430
// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
63431
StringDecoder.prototype.fillLast = function (buf) {
63432
  if (this.lastNeed <= buf.length) {
63433
    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
63434
    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
63435
  }
63436
  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
63437
  this.lastNeed -= buf.length;
63438
};
63439
63440
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
63441
// continuation byte. If an invalid byte is detected, -2 is returned.
63442
function utf8CheckByte(byte) {
63443
  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
63444
  return byte >> 6 === 0x02 ? -1 : -2;
63445
}
63446
63447
// Checks at most 3 bytes at the end of a Buffer in order to detect an
63448
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
63449
// needed to complete the UTF-8 character (if applicable) are returned.
63450
function utf8CheckIncomplete(self, buf, i) {
63451
  var j = buf.length - 1;
63452
  if (j < i) return 0;
63453
  var nb = utf8CheckByte(buf[j]);
63454
  if (nb >= 0) {
63455
    if (nb > 0) self.lastNeed = nb - 1;
63456
    return nb;
63457
  }
63458
  if (--j < i || nb === -2) return 0;
63459
  nb = utf8CheckByte(buf[j]);
63460
  if (nb >= 0) {
63461
    if (nb > 0) self.lastNeed = nb - 2;
63462
    return nb;
63463
  }
63464
  if (--j < i || nb === -2) return 0;
63465
  nb = utf8CheckByte(buf[j]);
63466
  if (nb >= 0) {
63467
    if (nb > 0) {
63468
      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
63469
    }
63470
    return nb;
63471
  }
63472
  return 0;
63473
}
63474
63475
// Validates as many continuation bytes for a multi-byte UTF-8 character as
63476
// needed or are available. If we see a non-continuation byte where we expect
63477
// one, we "replace" the validated continuation bytes we've seen so far with
63478
// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
63479
// behavior. The continuation byte check is included three times in the case
63480
// where all of the continuation bytes for a character exist in the same buffer.
63481
// It is also done this way as a slight performance increase instead of using a
63482
// loop.
63483
function utf8CheckExtraBytes(self, buf, p) {
63484
  if ((buf[0] & 0xC0) !== 0x80) {
63485
    self.lastNeed = 0;
63486
    return '\ufffd';
63487
  }
63488
  if (self.lastNeed > 1 && buf.length > 1) {
63489
    if ((buf[1] & 0xC0) !== 0x80) {
63490
      self.lastNeed = 1;
63491
      return '\ufffd';
63492
    }
63493
    if (self.lastNeed > 2 && buf.length > 2) {
63494
      if ((buf[2] & 0xC0) !== 0x80) {
63495
        self.lastNeed = 2;
63496
        return '\ufffd';
63497
      }
63498
    }
63499
  }
63500
}
63501
63502
// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
63503
function utf8FillLast(buf) {
63504
  var p = this.lastTotal - this.lastNeed;
63505
  var r = utf8CheckExtraBytes(this, buf, p);
63506
  if (r !== undefined) return r;
63507
  if (this.lastNeed <= buf.length) {
63508
    buf.copy(this.lastChar, p, 0, this.lastNeed);
63509
    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
63510
  }
63511
  buf.copy(this.lastChar, p, 0, buf.length);
63512
  this.lastNeed -= buf.length;
63513
}
63514
63515
// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
63516
// partial character, the character's bytes are buffered until the required
63517
// number of bytes are available.
63518
function utf8Text(buf, i) {
63519
  var total = utf8CheckIncomplete(this, buf, i);
63520
  if (!this.lastNeed) return buf.toString('utf8', i);
63521
  this.lastTotal = total;
63522
  var end = buf.length - (total - this.lastNeed);
63523
  buf.copy(this.lastChar, 0, end);
63524
  return buf.toString('utf8', i, end);
63525
}
63526
63527
// For UTF-8, a replacement character is added when ending on a partial
63528
// character.
63529
function utf8End(buf) {
63530
  var r = buf && buf.length ? this.write(buf) : '';
63531
  if (this.lastNeed) return r + '\ufffd';
63532
  return r;
63533
}
63534
63535
// UTF-16LE typically needs two bytes per character, but even if we have an even
63536
// number of bytes available, we need to check if we end on a leading/high
63537
// surrogate. In that case, we need to wait for the next two bytes in order to
63538
// decode the last character properly.
63539
function utf16Text(buf, i) {
63540
  if ((buf.length - i) % 2 === 0) {
63541
    var r = buf.toString('utf16le', i);
63542
    if (r) {
63543
      var c = r.charCodeAt(r.length - 1);
63544
      if (c >= 0xD800 && c <= 0xDBFF) {
63545
        this.lastNeed = 2;
63546
        this.lastTotal = 4;
63547
        this.lastChar[0] = buf[buf.length - 2];
63548
        this.lastChar[1] = buf[buf.length - 1];
63549
        return r.slice(0, -1);
63550
      }
63551
    }
63552
    return r;
63553
  }
63554
  this.lastNeed = 1;
63555
  this.lastTotal = 2;
63556
  this.lastChar[0] = buf[buf.length - 1];
63557
  return buf.toString('utf16le', i, buf.length - 1);
63558
}
63559
63560
// For UTF-16LE we do not explicitly append special replacement characters if we
63561
// end on a partial character, we simply let v8 handle that.
63562
function utf16End(buf) {
63563
  var r = buf && buf.length ? this.write(buf) : '';
63564
  if (this.lastNeed) {
63565
    var end = this.lastTotal - this.lastNeed;
63566
    return r + this.lastChar.toString('utf16le', 0, end);
63567
  }
63568
  return r;
63569
}
63570
63571
function base64Text(buf, i) {
63572
  var n = (buf.length - i) % 3;
63573
  if (n === 0) return buf.toString('base64', i);
63574
  this.lastNeed = 3 - n;
63575
  this.lastTotal = 3;
63576
  if (n === 1) {
63577
    this.lastChar[0] = buf[buf.length - 1];
63578
  } else {
63579
    this.lastChar[0] = buf[buf.length - 2];
63580
    this.lastChar[1] = buf[buf.length - 1];
63581
  }
63582
  return buf.toString('base64', i, buf.length - n);
63583
}
63584
63585
function base64End(buf) {
63586
  var r = buf && buf.length ? this.write(buf) : '';
63587
  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
63588
  return r;
63589
}
63590
63591
// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
63592
function simpleWrite(buf) {
63593
  return buf.toString(this.encoding);
63594
}
63595
63596
function simpleEnd(buf) {
63597
  return buf && buf.length ? this.write(buf) : '';
63598
}
63599
63600
/***/ }),
63601
63602
/***/ 311:
63603
/***/ (function(module) {
63604
63605
var TINF_OK = 0;
63606
var TINF_DATA_ERROR = -3;
63607
63608
function Tree() {
63609
  this.table = new Uint16Array(16);   /* table of code length counts */
63610
  this.trans = new Uint16Array(288);  /* code -> symbol translation table */
63611
}
63612
63613
function Data(source, dest) {
63614
  this.source = source;
63615
  this.sourceIndex = 0;
63616
  this.tag = 0;
63617
  this.bitcount = 0;
63618
63619
  this.dest = dest;
63620
  this.destLen = 0;
63621
63622
  this.ltree = new Tree();  /* dynamic length/symbol tree */
63623
  this.dtree = new Tree();  /* dynamic distance tree */
63624
}
63625
63626
/* --------------------------------------------------- *
63627
 * -- uninitialized global data (static structures) -- *
63628
 * --------------------------------------------------- */
63629
63630
var sltree = new Tree();
63631
var sdtree = new Tree();
63632
63633
/* extra bits and base tables for length codes */
63634
var length_bits = new Uint8Array(30);
63635
var length_base = new Uint16Array(30);
63636
63637
/* extra bits and base tables for distance codes */
63638
var dist_bits = new Uint8Array(30);
63639
var dist_base = new Uint16Array(30);
63640
63641
/* special ordering of code length codes */
63642
var clcidx = new Uint8Array([
63643
  16, 17, 18, 0, 8, 7, 9, 6,
63644
  10, 5, 11, 4, 12, 3, 13, 2,
63645
  14, 1, 15
63646
]);
63647
63648
/* used by tinf_decode_trees, avoids allocations every call */
63649
var code_tree = new Tree();
63650
var lengths = new Uint8Array(288 + 32);
63651
63652
/* ----------------------- *
63653
 * -- utility functions -- *
63654
 * ----------------------- */
63655
63656
/* build extra bits and base tables */
63657
function tinf_build_bits_base(bits, base, delta, first) {
63658
  var i, sum;
63659
63660
  /* build bits table */
63661
  for (i = 0; i < delta; ++i) bits[i] = 0;
63662
  for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;
63663
63664
  /* build base table */
63665
  for (sum = first, i = 0; i < 30; ++i) {
63666
    base[i] = sum;
63667
    sum += 1 << bits[i];
63668
  }
63669
}
63670
63671
/* build the fixed huffman trees */
63672
function tinf_build_fixed_trees(lt, dt) {
63673
  var i;
63674
63675
  /* build fixed length tree */
63676
  for (i = 0; i < 7; ++i) lt.table[i] = 0;
63677
63678
  lt.table[7] = 24;
63679
  lt.table[8] = 152;
63680
  lt.table[9] = 112;
63681
63682
  for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;
63683
  for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;
63684
  for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;
63685
  for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;
63686
63687
  /* build fixed distance tree */
63688
  for (i = 0; i < 5; ++i) dt.table[i] = 0;
63689
63690
  dt.table[5] = 32;
63691
63692
  for (i = 0; i < 32; ++i) dt.trans[i] = i;
63693
}
63694
63695
/* given an array of code lengths, build a tree */
63696
var offs = new Uint16Array(16);
63697
63698
function tinf_build_tree(t, lengths, off, num) {
63699
  var i, sum;
63700
63701
  /* clear code length count table */
63702
  for (i = 0; i < 16; ++i) t.table[i] = 0;
63703
63704
  /* scan symbol lengths, and sum code length counts */
63705
  for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;
63706
63707
  t.table[0] = 0;
63708
63709
  /* compute offset table for distribution sort */
63710
  for (sum = 0, i = 0; i < 16; ++i) {
63711
    offs[i] = sum;
63712
    sum += t.table[i];
63713
  }
63714
63715
  /* create code->symbol translation table (symbols sorted by code) */
63716
  for (i = 0; i < num; ++i) {
63717
    if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;
63718
  }
63719
}
63720
63721
/* ---------------------- *
63722
 * -- decode functions -- *
63723
 * ---------------------- */
63724
63725
/* get one bit from source stream */
63726
function tinf_getbit(d) {
63727
  /* check if tag is empty */
63728
  if (!d.bitcount--) {
63729
    /* load next tag */
63730
    d.tag = d.source[d.sourceIndex++];
63731
    d.bitcount = 7;
63732
  }
63733
63734
  /* shift bit out of tag */
63735
  var bit = d.tag & 1;
63736
  d.tag >>>= 1;
63737
63738
  return bit;
63739
}
63740
63741
/* read a num bit value from a stream and add base */
63742
function tinf_read_bits(d, num, base) {
63743
  if (!num)
63744
    return base;
63745
63746
  while (d.bitcount < 24) {
63747
    d.tag |= d.source[d.sourceIndex++] << d.bitcount;
63748
    d.bitcount += 8;
63749
  }
63750
63751
  var val = d.tag & (0xffff >>> (16 - num));
63752
  d.tag >>>= num;
63753
  d.bitcount -= num;
63754
  return val + base;
63755
}
63756
63757
/* given a data stream and a tree, decode a symbol */
63758
function tinf_decode_symbol(d, t) {
63759
  while (d.bitcount < 24) {
63760
    d.tag |= d.source[d.sourceIndex++] << d.bitcount;
63761
    d.bitcount += 8;
63762
  }
63763
63764
  var sum = 0, cur = 0, len = 0;
63765
  var tag = d.tag;
63766
63767
  /* get more bits while code value is above sum */
63768
  do {
63769
    cur = 2 * cur + (tag & 1);
63770
    tag >>>= 1;
63771
    ++len;
63772
63773
    sum += t.table[len];
63774
    cur -= t.table[len];
63775
  } while (cur >= 0);
63776
63777
  d.tag = tag;
63778
  d.bitcount -= len;
63779
63780
  return t.trans[sum + cur];
63781
}
63782
63783
/* given a data stream, decode dynamic trees from it */
63784
function tinf_decode_trees(d, lt, dt) {
63785
  var hlit, hdist, hclen;
63786
  var i, num, length;
63787
63788
  /* get 5 bits HLIT (257-286) */
63789
  hlit = tinf_read_bits(d, 5, 257);
63790
63791
  /* get 5 bits HDIST (1-32) */
63792
  hdist = tinf_read_bits(d, 5, 1);
63793
63794
  /* get 4 bits HCLEN (4-19) */
63795
  hclen = tinf_read_bits(d, 4, 4);
63796
63797
  for (i = 0; i < 19; ++i) lengths[i] = 0;
63798
63799
  /* read code lengths for code length alphabet */
63800
  for (i = 0; i < hclen; ++i) {
63801
    /* get 3 bits code length (0-7) */
63802
    var clen = tinf_read_bits(d, 3, 0);
63803
    lengths[clcidx[i]] = clen;
63804
  }
63805
63806
  /* build code length tree */
63807
  tinf_build_tree(code_tree, lengths, 0, 19);
63808
63809
  /* decode code lengths for the dynamic trees */
63810
  for (num = 0; num < hlit + hdist;) {
63811
    var sym = tinf_decode_symbol(d, code_tree);
63812
63813
    switch (sym) {
63814
      case 16:
63815
        /* copy previous code length 3-6 times (read 2 bits) */
63816
        var prev = lengths[num - 1];
63817
        for (length = tinf_read_bits(d, 2, 3); length; --length) {
63818
          lengths[num++] = prev;
63819
        }
63820
        break;
63821
      case 17:
63822
        /* repeat code length 0 for 3-10 times (read 3 bits) */
63823
        for (length = tinf_read_bits(d, 3, 3); length; --length) {
63824
          lengths[num++] = 0;
63825
        }
63826
        break;
63827
      case 18:
63828
        /* repeat code length 0 for 11-138 times (read 7 bits) */
63829
        for (length = tinf_read_bits(d, 7, 11); length; --length) {
63830
          lengths[num++] = 0;
63831
        }
63832
        break;
63833
      default:
63834
        /* values 0-15 represent the actual code lengths */
63835
        lengths[num++] = sym;
63836
        break;
63837
    }
63838
  }
63839
63840
  /* build dynamic trees */
63841
  tinf_build_tree(lt, lengths, 0, hlit);
63842
  tinf_build_tree(dt, lengths, hlit, hdist);
63843
}
63844
63845
/* ----------------------------- *
63846
 * -- block inflate functions -- *
63847
 * ----------------------------- */
63848
63849
/* given a stream and two trees, inflate a block of data */
63850
function tinf_inflate_block_data(d, lt, dt) {
63851
  while (1) {
63852
    var sym = tinf_decode_symbol(d, lt);
63853
63854
    /* check for end of block */
63855
    if (sym === 256) {
63856
      return TINF_OK;
63857
    }
63858
63859
    if (sym < 256) {
63860
      d.dest[d.destLen++] = sym;
63861
    } else {
63862
      var length, dist, offs;
63863
      var i;
63864
63865
      sym -= 257;
63866
63867
      /* possibly get more bits from length code */
63868
      length = tinf_read_bits(d, length_bits[sym], length_base[sym]);
63869
63870
      dist = tinf_decode_symbol(d, dt);
63871
63872
      /* possibly get more bits from distance code */
63873
      offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);
63874
63875
      /* copy match */
63876
      for (i = offs; i < offs + length; ++i) {
63877
        d.dest[d.destLen++] = d.dest[i];
63878
      }
63879
    }
63880
  }
63881
}
63882
63883
/* inflate an uncompressed block of data */
63884
function tinf_inflate_uncompressed_block(d) {
63885
  var length, invlength;
63886
  var i;
63887
63888
  /* unread from bitbuffer */
63889
  while (d.bitcount > 8) {
63890
    d.sourceIndex--;
63891
    d.bitcount -= 8;
63892
  }
63893
63894
  /* get length */
63895
  length = d.source[d.sourceIndex + 1];
63896
  length = 256 * length + d.source[d.sourceIndex];
63897
63898
  /* get one's complement of length */
63899
  invlength = d.source[d.sourceIndex + 3];
63900
  invlength = 256 * invlength + d.source[d.sourceIndex + 2];
63901
63902
  /* check length */
63903
  if (length !== (~invlength & 0x0000ffff))
63904
    return TINF_DATA_ERROR;
63905
63906
  d.sourceIndex += 4;
63907
63908
  /* copy block */
63909
  for (i = length; i; --i)
63910
    d.dest[d.destLen++] = d.source[d.sourceIndex++];
63911
63912
  /* make sure we start next block on a byte boundary */
63913
  d.bitcount = 0;
63914
63915
  return TINF_OK;
63916
}
63917
63918
/* inflate stream from source to dest */
63919
function tinf_uncompress(source, dest) {
63920
  var d = new Data(source, dest);
63921
  var bfinal, btype, res;
63922
63923
  do {
63924
    /* read final block flag */
63925
    bfinal = tinf_getbit(d);
63926
63927
    /* read block type (2 bits) */
63928
    btype = tinf_read_bits(d, 2, 0);
63929
63930
    /* decompress block */
63931
    switch (btype) {
63932
      case 0:
63933
        /* decompress uncompressed block */
63934
        res = tinf_inflate_uncompressed_block(d);
63935
        break;
63936
      case 1:
63937
        /* decompress block with fixed huffman trees */
63938
        res = tinf_inflate_block_data(d, sltree, sdtree);
63939
        break;
63940
      case 2:
63941
        /* decompress block with dynamic huffman trees */
63942
        tinf_decode_trees(d, d.ltree, d.dtree);
63943
        res = tinf_inflate_block_data(d, d.ltree, d.dtree);
63944
        break;
63945
      default:
63946
        res = TINF_DATA_ERROR;
63947
    }
63948
63949
    if (res !== TINF_OK)
63950
      throw new Error('Data error');
63951
63952
  } while (!bfinal);
63953
63954
  if (d.destLen < d.dest.length) {
63955
    if (typeof d.dest.slice === 'function')
63956
      return d.dest.slice(0, d.destLen);
63957
    else
63958
      return d.dest.subarray(0, d.destLen);
63959
  }
63960
63961
  return d.dest;
63962
}
63963
63964
/* -------------------- *
63965
 * -- initialization -- *
63966
 * -------------------- */
63967
63968
/* build fixed huffman trees */
63969
tinf_build_fixed_trees(sltree, sdtree);
63970
63971
/* build extra bits and base tables */
63972
tinf_build_bits_base(length_bits, length_base, 4, 3);
63973
tinf_build_bits_base(dist_bits, dist_base, 2, 1);
63974
63975
/* fix a special case */
63976
length_bits[28] = 0;
63977
length_base[28] = 258;
63978
63979
module.exports = tinf_uncompress;
63980
63981
63982
/***/ }),
63983
63984
/***/ 1917:
63985
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
63986
63987
"use strict";
63988
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
63989
63990
63991
__webpack_require__(2526);
63992
__webpack_require__(1817);
63993
__webpack_require__(2165);
63994
__webpack_require__(6649);
63995
__webpack_require__(6078);
63996
__webpack_require__(1539);
63997
__webpack_require__(4747);
63998
__webpack_require__(7941);
63999
__webpack_require__(7042);
64000
__webpack_require__(6992);
64001
__webpack_require__(1532);
64002
__webpack_require__(8783);
64003
__webpack_require__(3948);
64004
__webpack_require__(2222);
64005
__webpack_require__(9653);
64006
__webpack_require__(1249);
64007
__webpack_require__(2087);
64008
__webpack_require__(8309);
64009
__webpack_require__(9601);
64010
__webpack_require__(4953);
64011
__webpack_require__(8674);
64012
__webpack_require__(5003);
64013
__webpack_require__(189);
64014
__webpack_require__(561);
64015
__webpack_require__(2481);
64016
__webpack_require__(2707);
64017
__webpack_require__(4916);
64018
__webpack_require__(4723);
64019
__webpack_require__(1038);
64020
__webpack_require__(9600);
64021
__webpack_require__(3371);
64022
__webpack_require__(3290);
64023
__webpack_require__(3299);
64024
__webpack_require__(8255);
64025
__webpack_require__(2990);
64026
__webpack_require__(8927);
64027
__webpack_require__(3105);
64028
__webpack_require__(5035);
64029
__webpack_require__(4345);
64030
__webpack_require__(7174);
64031
__webpack_require__(2846);
64032
__webpack_require__(4731);
64033
__webpack_require__(7209);
64034
__webpack_require__(6319);
64035
__webpack_require__(8867);
64036
__webpack_require__(7789);
64037
__webpack_require__(3739);
64038
__webpack_require__(9368);
64039
__webpack_require__(4483);
64040
__webpack_require__(2056);
64041
__webpack_require__(3462);
64042
__webpack_require__(678);
64043
__webpack_require__(7462);
64044
__webpack_require__(3824);
64045
__webpack_require__(5021);
64046
__webpack_require__(2974);
64047
__webpack_require__(5016);
64048
__webpack_require__(5109);
64049
__webpack_require__(9714);
64050
__webpack_require__(3210);
64051
var _;
64052
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
64053
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
64054
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
64055
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
64056
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
64057
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
64058
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
64059
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
64060
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
64061
function _interopDefault(ex) {
64062
  return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;
64063
}
64064
var r = _interopDefault(__webpack_require__(5106));
64065
var utils = __webpack_require__(6610);
64066
var isEqual = _interopDefault(__webpack_require__(251));
64067
var unicode = _interopDefault(__webpack_require__(3631));
64068
var UnicodeTrie = _interopDefault(__webpack_require__(4781));
64069
var StateMachine = _interopDefault(__webpack_require__(9811));
64070
var cloneDeep = _interopDefault(__webpack_require__(6313));
64071
var inflate = _interopDefault(__webpack_require__(311));
64072
var brotli = _interopDefault(__webpack_require__(7709));
64073
var fs = __webpack_require__(3857);
64074
var fontkit = {};
64075
fontkit.logErrors = false;
64076
var formats = [];
64077
fontkit.registerFormat = function (format) {
64078
  formats.push(format);
64079
};
64080
fontkit.openSync = function (filename, postscriptName) {
64081
  var buffer = fs.readFileSync(filename);
64082
  return fontkit.create(buffer, postscriptName);
64083
};
64084
fontkit.open = function (filename, postscriptName, callback) {
64085
  if (typeof postscriptName === 'function') {
64086
    callback = postscriptName;
64087
    postscriptName = null;
64088
  }
64089
  fs.readFile(filename, function (err, buffer) {
64090
    if (err) {
64091
      return callback(err);
64092
    }
64093
    try {
64094
      var font = fontkit.create(buffer, postscriptName);
64095
    } catch (e) {
64096
      return callback(e);
64097
    }
64098
    return callback(null, font);
64099
  });
64100
  return;
64101
};
64102
fontkit.create = function (buffer, postscriptName) {
64103
  for (var i = 0; i < formats.length; i++) {
64104
    var format = formats[i];
64105
    if (format.probe(buffer)) {
64106
      var font = new format(new r.DecodeStream(buffer));
64107
      if (postscriptName) {
64108
        return font.getFont(postscriptName);
64109
      }
64110
      return font;
64111
    }
64112
  }
64113
  throw new Error('Unknown font format');
64114
};
64115
fontkit.defaultLanguage = 'en';
64116
fontkit.setDefaultLanguage = function (lang) {
64117
  if (lang === void 0) {
64118
    lang = 'en';
64119
  }
64120
  fontkit.defaultLanguage = lang;
64121
};
64122
function _defineProperty(obj, key, value) {
64123
  if (key in obj) {
64124
    Object.defineProperty(obj, key, {
64125
      value: value,
64126
      enumerable: true,
64127
      configurable: true,
64128
      writable: true
64129
    });
64130
  } else {
64131
    obj[key] = value;
64132
  }
64133
  return obj;
64134
}
64135
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
64136
  var desc = {};
64137
  Object.keys(descriptor).forEach(function (key) {
64138
    desc[key] = descriptor[key];
64139
  });
64140
  desc.enumerable = !!desc.enumerable;
64141
  desc.configurable = !!desc.configurable;
64142
  if ('value' in desc || desc.initializer) {
64143
    desc.writable = true;
64144
  }
64145
  desc = decorators.slice().reverse().reduce(function (desc, decorator) {
64146
    return decorator(target, property, desc) || desc;
64147
  }, desc);
64148
  if (context && desc.initializer !== void 0) {
64149
    desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
64150
    desc.initializer = undefined;
64151
  }
64152
  if (desc.initializer === void 0) {
64153
    Object.defineProperty(target, property, desc);
64154
    desc = null;
64155
  }
64156
  return desc;
64157
}
64158
64159
/**
64160
 * This decorator caches the results of a getter or method such that
64161
 * the results are lazily computed once, and then cached.
64162
 * @private
64163
 */
64164
function cache(target, key, descriptor) {
64165
  if (descriptor.get) {
64166
    var get = descriptor.get;
64167
    descriptor.get = function () {
64168
      var value = get.call(this);
64169
      Object.defineProperty(this, key, {
64170
        value: value
64171
      });
64172
      return value;
64173
    };
64174
  } else if (typeof descriptor.value === 'function') {
64175
    var fn = descriptor.value;
64176
    return {
64177
      get: function get() {
64178
        var cache = new Map();
64179
        function memoized() {
64180
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
64181
            args[_key] = arguments[_key];
64182
          }
64183
          var key = args.length > 0 ? args[0] : 'value';
64184
          if (cache.has(key)) {
64185
            return cache.get(key);
64186
          }
64187
          var result = fn.apply(this, args);
64188
          cache.set(key, result);
64189
          return result;
64190
        }
64191
        Object.defineProperty(this, key, {
64192
          value: memoized
64193
        });
64194
        return memoized;
64195
      }
64196
    };
64197
  }
64198
}
64199
var SubHeader = new r.Struct({
64200
  firstCode: r.uint16,
64201
  entryCount: r.uint16,
64202
  idDelta: r.int16,
64203
  idRangeOffset: r.uint16
64204
});
64205
var CmapGroup = new r.Struct({
64206
  startCharCode: r.uint32,
64207
  endCharCode: r.uint32,
64208
  glyphID: r.uint32
64209
});
64210
var UnicodeValueRange = new r.Struct({
64211
  startUnicodeValue: r.uint24,
64212
  additionalCount: r.uint8
64213
});
64214
var UVSMapping = new r.Struct({
64215
  unicodeValue: r.uint24,
64216
  glyphID: r.uint16
64217
});
64218
var DefaultUVS = new r.Array(UnicodeValueRange, r.uint32);
64219
var NonDefaultUVS = new r.Array(UVSMapping, r.uint32);
64220
var VarSelectorRecord = new r.Struct({
64221
  varSelector: r.uint24,
64222
  defaultUVS: new r.Pointer(r.uint32, DefaultUVS, {
64223
    type: 'parent'
64224
  }),
64225
  nonDefaultUVS: new r.Pointer(r.uint32, NonDefaultUVS, {
64226
    type: 'parent'
64227
  })
64228
});
64229
var CmapSubtable = new r.VersionedStruct(r.uint16, {
64230
  0: {
64231
    // Byte encoding
64232
    length: r.uint16,
64233
    // Total table length in bytes (set to 262 for format 0)
64234
    language: r.uint16,
64235
    // Language code for this encoding subtable, or zero if language-independent
64236
    codeMap: new r.LazyArray(r.uint8, 256)
64237
  },
64238
  2: {
64239
    // High-byte mapping (CJK)
64240
    length: r.uint16,
64241
    language: r.uint16,
64242
    subHeaderKeys: new r.Array(r.uint16, 256),
64243
    subHeaderCount: function subHeaderCount(t) {
64244
      return Math.max.apply(Math, t.subHeaderKeys);
64245
    },
64246
    subHeaders: new r.LazyArray(SubHeader, 'subHeaderCount'),
64247
    glyphIndexArray: new r.LazyArray(r.uint16, 'subHeaderCount')
64248
  },
64249
  4: {
64250
    // Segment mapping to delta values
64251
    length: r.uint16,
64252
    // Total table length in bytes
64253
    language: r.uint16,
64254
    // Language code
64255
    segCountX2: r.uint16,
64256
    segCount: function segCount(t) {
64257
      return t.segCountX2 >> 1;
64258
    },
64259
    searchRange: r.uint16,
64260
    entrySelector: r.uint16,
64261
    rangeShift: r.uint16,
64262
    endCode: new r.LazyArray(r.uint16, 'segCount'),
64263
    reservedPad: new r.Reserved(r.uint16),
64264
    // This value should be zero
64265
    startCode: new r.LazyArray(r.uint16, 'segCount'),
64266
    idDelta: new r.LazyArray(r.int16, 'segCount'),
64267
    idRangeOffset: new r.LazyArray(r.uint16, 'segCount'),
64268
    glyphIndexArray: new r.LazyArray(r.uint16, function (t) {
64269
      return (t.length - t._currentOffset) / 2;
64270
    })
64271
  },
64272
  6: {
64273
    // Trimmed table
64274
    length: r.uint16,
64275
    language: r.uint16,
64276
    firstCode: r.uint16,
64277
    entryCount: r.uint16,
64278
    glyphIndices: new r.LazyArray(r.uint16, 'entryCount')
64279
  },
64280
  8: {
64281
    // mixed 16-bit and 32-bit coverage
64282
    reserved: new r.Reserved(r.uint16),
64283
    length: r.uint32,
64284
    language: r.uint16,
64285
    is32: new r.LazyArray(r.uint8, 8192),
64286
    nGroups: r.uint32,
64287
    groups: new r.LazyArray(CmapGroup, 'nGroups')
64288
  },
64289
  10: {
64290
    // Trimmed Array
64291
    reserved: new r.Reserved(r.uint16),
64292
    length: r.uint32,
64293
    language: r.uint32,
64294
    firstCode: r.uint32,
64295
    entryCount: r.uint32,
64296
    glyphIndices: new r.LazyArray(r.uint16, 'numChars')
64297
  },
64298
  12: {
64299
    // Segmented coverage
64300
    reserved: new r.Reserved(r.uint16),
64301
    length: r.uint32,
64302
    language: r.uint32,
64303
    nGroups: r.uint32,
64304
    groups: new r.LazyArray(CmapGroup, 'nGroups')
64305
  },
64306
  13: {
64307
    // Many-to-one range mappings (same as 12 except for group.startGlyphID)
64308
    reserved: new r.Reserved(r.uint16),
64309
    length: r.uint32,
64310
    language: r.uint32,
64311
    nGroups: r.uint32,
64312
    groups: new r.LazyArray(CmapGroup, 'nGroups')
64313
  },
64314
  14: {
64315
    // Unicode Variation Sequences
64316
    length: r.uint32,
64317
    numRecords: r.uint32,
64318
    varSelectors: new r.LazyArray(VarSelectorRecord, 'numRecords')
64319
  }
64320
});
64321
var CmapEntry = new r.Struct({
64322
  platformID: r.uint16,
64323
  // Platform identifier
64324
  encodingID: r.uint16,
64325
  // Platform-specific encoding identifier
64326
  table: new r.Pointer(r.uint32, CmapSubtable, {
64327
    type: 'parent',
64328
    lazy: true
64329
  })
64330
}); // character to glyph mapping
64331
64332
var cmap = new r.Struct({
64333
  version: r.uint16,
64334
  numSubtables: r.uint16,
64335
  tables: new r.Array(CmapEntry, 'numSubtables')
64336
});
64337
var head = new r.Struct({
64338
  version: r.int32,
64339
  // 0x00010000 (version 1.0)
64340
  revision: r.int32,
64341
  // set by font manufacturer
64342
  checkSumAdjustment: r.uint32,
64343
  magicNumber: r.uint32,
64344
  // set to 0x5F0F3CF5
64345
  flags: r.uint16,
64346
  unitsPerEm: r.uint16,
64347
  // range from 64 to 16384
64348
  created: new r.Array(r.int32, 2),
64349
  modified: new r.Array(r.int32, 2),
64350
  xMin: r.int16,
64351
  // for all glyph bounding boxes
64352
  yMin: r.int16,
64353
  // for all glyph bounding boxes
64354
  xMax: r.int16,
64355
  // for all glyph bounding boxes
64356
  yMax: r.int16,
64357
  // for all glyph bounding boxes
64358
  macStyle: new r.Bitfield(r.uint16, ['bold', 'italic', 'underline', 'outline', 'shadow', 'condensed', 'extended']),
64359
  lowestRecPPEM: r.uint16,
64360
  // smallest readable size in pixels
64361
  fontDirectionHint: r.int16,
64362
  indexToLocFormat: r.int16,
64363
  // 0 for short offsets, 1 for long
64364
  glyphDataFormat: r.int16 // 0 for current format
64365
});
64366
64367
var hhea = new r.Struct({
64368
  version: r.int32,
64369
  ascent: r.int16,
64370
  // Distance from baseline of highest ascender
64371
  descent: r.int16,
64372
  // Distance from baseline of lowest descender
64373
  lineGap: r.int16,
64374
  // Typographic line gap
64375
  advanceWidthMax: r.uint16,
64376
  // Maximum advance width value in 'hmtx' table
64377
  minLeftSideBearing: r.int16,
64378
  // Maximum advance width value in 'hmtx' table
64379
  minRightSideBearing: r.int16,
64380
  // Minimum right sidebearing value
64381
  xMaxExtent: r.int16,
64382
  caretSlopeRise: r.int16,
64383
  // Used to calculate the slope of the cursor (rise/run); 1 for vertical
64384
  caretSlopeRun: r.int16,
64385
  // 0 for vertical
64386
  caretOffset: r.int16,
64387
  // Set to 0 for non-slanted fonts
64388
  reserved: new r.Reserved(r.int16, 4),
64389
  metricDataFormat: r.int16,
64390
  // 0 for current format
64391
  numberOfMetrics: r.uint16 // Number of advance widths in 'hmtx' table
64392
});
64393
64394
var HmtxEntry = new r.Struct({
64395
  advance: r.uint16,
64396
  bearing: r.int16
64397
});
64398
var hmtx = new r.Struct({
64399
  metrics: new r.LazyArray(HmtxEntry, function (t) {
64400
    return t.parent.hhea.numberOfMetrics;
64401
  }),
64402
  bearings: new r.LazyArray(r.int16, function (t) {
64403
    return t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics;
64404
  })
64405
});
64406
var maxp = new r.Struct({
64407
  version: r.int32,
64408
  numGlyphs: r.uint16,
64409
  // The number of glyphs in the font
64410
  maxPoints: r.uint16,
64411
  // Maximum points in a non-composite glyph
64412
  maxContours: r.uint16,
64413
  // Maximum contours in a non-composite glyph
64414
  maxComponentPoints: r.uint16,
64415
  // Maximum points in a composite glyph
64416
  maxComponentContours: r.uint16,
64417
  // Maximum contours in a composite glyph
64418
  maxZones: r.uint16,
64419
  // 1 if instructions do not use the twilight zone, 2 otherwise
64420
  maxTwilightPoints: r.uint16,
64421
  // Maximum points used in Z0
64422
  maxStorage: r.uint16,
64423
  // Number of Storage Area locations
64424
  maxFunctionDefs: r.uint16,
64425
  // Number of FDEFs
64426
  maxInstructionDefs: r.uint16,
64427
  // Number of IDEFs
64428
  maxStackElements: r.uint16,
64429
  // Maximum stack depth
64430
  maxSizeOfInstructions: r.uint16,
64431
  // Maximum byte count for glyph instructions
64432
  maxComponentElements: r.uint16,
64433
  // Maximum number of components referenced at “top level” for any composite glyph
64434
  maxComponentDepth: r.uint16 // Maximum levels of recursion; 1 for simple components
64435
});
64436
64437
/**
64438
 * Gets an encoding name from platform, encoding, and language ids.
64439
 * Returned encoding names can be used in iconv-lite to decode text.
64440
 */
64441
function getEncoding(platformID, encodingID, languageID) {
64442
  if (languageID === void 0) {
64443
    languageID = 0;
64444
  }
64445
  if (platformID === 1 && MAC_LANGUAGE_ENCODINGS[languageID]) {
64446
    return MAC_LANGUAGE_ENCODINGS[languageID];
64447
  }
64448
  return ENCODINGS[platformID][encodingID];
64449
} // Map of platform ids to encoding ids.
64450
64451
var ENCODINGS = [
64452
// unicode
64453
['utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be', 'utf16be'],
64454
// macintosh
64455
// Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/
64456
// 0	Roman                 17	Malayalam
64457
// 1	Japanese	            18	Sinhalese
64458
// 2	Traditional Chinese	  19	Burmese
64459
// 3	Korean	              20	Khmer
64460
// 4	Arabic	              21	Thai
64461
// 5	Hebrew	              22	Laotian
64462
// 6	Greek	                23	Georgian
64463
// 7	Russian	              24	Armenian
64464
// 8	RSymbol	              25	Simplified Chinese
64465
// 9	Devanagari	          26	Tibetan
64466
// 10	Gurmukhi	            27	Mongolian
64467
// 11	Gujarati	            28	Geez
64468
// 12	Oriya	                29	Slavic
64469
// 13	Bengali	              30	Vietnamese
64470
// 14	Tamil	                31	Sindhi
64471
// 15	Telugu	              32	(Uninterpreted)
64472
// 16	Kannada
64473
['macroman', 'shift-jis', 'big5', 'euc-kr', 'iso-8859-6', 'iso-8859-8', 'macgreek', 'maccyrillic', 'symbol', 'Devanagari', 'Gurmukhi', 'Gujarati', 'Oriya', 'Bengali', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhalese', 'Burmese', 'Khmer', 'macthai', 'Laotian', 'Georgian', 'Armenian', 'gb-2312-80', 'Tibetan', 'Mongolian', 'Geez', 'maccenteuro', 'Vietnamese', 'Sindhi'],
64474
// ISO (deprecated)
64475
['ascii'],
64476
// windows
64477
// Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx
64478
['symbol', 'utf16be', 'shift-jis', 'gb18030', 'big5', 'wansung', 'johab', null, null, null, 'utf16be']]; // Overrides for Mac scripts by language id.
64479
// See http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt
64480
64481
var MAC_LANGUAGE_ENCODINGS = {
64482
  15: 'maciceland',
64483
  17: 'macturkish',
64484
  18: 'maccroatian',
64485
  24: 'maccenteuro',
64486
  25: 'maccenteuro',
64487
  26: 'maccenteuro',
64488
  27: 'maccenteuro',
64489
  28: 'maccenteuro',
64490
  30: 'maciceland',
64491
  37: 'macromania',
64492
  38: 'maccenteuro',
64493
  39: 'maccenteuro',
64494
  40: 'maccenteuro',
64495
  143: 'macinuit',
64496
  // Unsupported by iconv-lite
64497
  146: 'macgaelic' // Unsupported by iconv-lite
64498
}; // Map of platform ids to BCP-47 language codes.
64499
64500
var LANGUAGES = [
64501
// unicode
64502
[], {
64503
  // macintosh
64504
  0: 'en',
64505
  30: 'fo',
64506
  60: 'ks',
64507
  90: 'rw',
64508
  1: 'fr',
64509
  31: 'fa',
64510
  61: 'ku',
64511
  91: 'rn',
64512
  2: 'de',
64513
  32: 'ru',
64514
  62: 'sd',
64515
  92: 'ny',
64516
  3: 'it',
64517
  33: 'zh',
64518
  63: 'bo',
64519
  93: 'mg',
64520
  4: 'nl',
64521
  34: 'nl-BE',
64522
  64: 'ne',
64523
  94: 'eo',
64524
  5: 'sv',
64525
  35: 'ga',
64526
  65: 'sa',
64527
  128: 'cy',
64528
  6: 'es',
64529
  36: 'sq',
64530
  66: 'mr',
64531
  129: 'eu',
64532
  7: 'da',
64533
  37: 'ro',
64534
  67: 'bn',
64535
  130: 'ca',
64536
  8: 'pt',
64537
  38: 'cz',
64538
  68: 'as',
64539
  131: 'la',
64540
  9: 'no',
64541
  39: 'sk',
64542
  69: 'gu',
64543
  132: 'qu',
64544
  10: 'he',
64545
  40: 'si',
64546
  70: 'pa',
64547
  133: 'gn',
64548
  11: 'ja',
64549
  41: 'yi',
64550
  71: 'or',
64551
  134: 'ay',
64552
  12: 'ar',
64553
  42: 'sr',
64554
  72: 'ml',
64555
  135: 'tt',
64556
  13: 'fi',
64557
  43: 'mk',
64558
  73: 'kn',
64559
  136: 'ug',
64560
  14: 'el',
64561
  44: 'bg',
64562
  74: 'ta',
64563
  137: 'dz',
64564
  15: 'is',
64565
  45: 'uk',
64566
  75: 'te',
64567
  138: 'jv',
64568
  16: 'mt',
64569
  46: 'be',
64570
  76: 'si',
64571
  139: 'su',
64572
  17: 'tr',
64573
  47: 'uz',
64574
  77: 'my',
64575
  140: 'gl',
64576
  18: 'hr',
64577
  48: 'kk',
64578
  78: 'km',
64579
  141: 'af',
64580
  19: 'zh-Hant',
64581
  49: 'az-Cyrl',
64582
  79: 'lo',
64583
  142: 'br',
64584
  20: 'ur',
64585
  50: 'az-Arab',
64586
  80: 'vi',
64587
  143: 'iu',
64588
  21: 'hi',
64589
  51: 'hy',
64590
  81: 'id',
64591
  144: 'gd',
64592
  22: 'th',
64593
  52: 'ka',
64594
  82: 'tl',
64595
  145: 'gv',
64596
  23: 'ko',
64597
  53: 'mo',
64598
  83: 'ms',
64599
  146: 'ga',
64600
  24: 'lt',
64601
  54: 'ky',
64602
  84: 'ms-Arab',
64603
  147: 'to',
64604
  25: 'pl',
64605
  55: 'tg',
64606
  85: 'am',
64607
  148: 'el-polyton',
64608
  26: 'hu',
64609
  56: 'tk',
64610
  86: 'ti',
64611
  149: 'kl',
64612
  27: 'es',
64613
  57: 'mn-CN',
64614
  87: 'om',
64615
  150: 'az',
64616
  28: 'lv',
64617
  58: 'mn',
64618
  88: 'so',
64619
  151: 'nn',
64620
  29: 'se',
64621
  59: 'ps',
64622
  89: 'sw'
64623
},
64624
// ISO (deprecated)
64625
[], {
64626
  // windows
64627
  0x0436: 'af',
64628
  0x4009: 'en-IN',
64629
  0x0487: 'rw',
64630
  0x0432: 'tn',
64631
  0x041C: 'sq',
64632
  0x1809: 'en-IE',
64633
  0x0441: 'sw',
64634
  0x045B: 'si',
64635
  0x0484: 'gsw',
64636
  0x2009: 'en-JM',
64637
  0x0457: 'kok',
64638
  0x041B: 'sk',
64639
  0x045E: 'am',
64640
  0x4409: 'en-MY',
64641
  0x0412: 'ko',
64642
  0x0424: 'sl',
64643
  0x1401: 'ar-DZ',
64644
  0x1409: 'en-NZ',
64645
  0x0440: 'ky',
64646
  0x2C0A: 'es-AR',
64647
  0x3C01: 'ar-BH',
64648
  0x3409: 'en-PH',
64649
  0x0454: 'lo',
64650
  0x400A: 'es-BO',
64651
  0x0C01: 'ar',
64652
  0x4809: 'en-SG',
64653
  0x0426: 'lv',
64654
  0x340A: 'es-CL',
64655
  0x0801: 'ar-IQ',
64656
  0x1C09: 'en-ZA',
64657
  0x0427: 'lt',
64658
  0x240A: 'es-CO',
64659
  0x2C01: 'ar-JO',
64660
  0x2C09: 'en-TT',
64661
  0x082E: 'dsb',
64662
  0x140A: 'es-CR',
64663
  0x3401: 'ar-KW',
64664
  0x0809: 'en-GB',
64665
  0x046E: 'lb',
64666
  0x1C0A: 'es-DO',
64667
  0x3001: 'ar-LB',
64668
  0x0409: 'en',
64669
  0x042F: 'mk',
64670
  0x300A: 'es-EC',
64671
  0x1001: 'ar-LY',
64672
  0x3009: 'en-ZW',
64673
  0x083E: 'ms-BN',
64674
  0x440A: 'es-SV',
64675
  0x1801: 'ary',
64676
  0x0425: 'et',
64677
  0x043E: 'ms',
64678
  0x100A: 'es-GT',
64679
  0x2001: 'ar-OM',
64680
  0x0438: 'fo',
64681
  0x044C: 'ml',
64682
  0x480A: 'es-HN',
64683
  0x4001: 'ar-QA',
64684
  0x0464: 'fil',
64685
  0x043A: 'mt',
64686
  0x080A: 'es-MX',
64687
  0x0401: 'ar-SA',
64688
  0x040B: 'fi',
64689
  0x0481: 'mi',
64690
  0x4C0A: 'es-NI',
64691
  0x2801: 'ar-SY',
64692
  0x080C: 'fr-BE',
64693
  0x047A: 'arn',
64694
  0x180A: 'es-PA',
64695
  0x1C01: 'aeb',
64696
  0x0C0C: 'fr-CA',
64697
  0x044E: 'mr',
64698
  0x3C0A: 'es-PY',
64699
  0x3801: 'ar-AE',
64700
  0x040C: 'fr',
64701
  0x047C: 'moh',
64702
  0x280A: 'es-PE',
64703
  0x2401: 'ar-YE',
64704
  0x140C: 'fr-LU',
64705
  0x0450: 'mn',
64706
  0x500A: 'es-PR',
64707
  0x042B: 'hy',
64708
  0x180C: 'fr-MC',
64709
  0x0850: 'mn-CN',
64710
  0x0C0A: 'es',
64711
  0x044D: 'as',
64712
  0x100C: 'fr-CH',
64713
  0x0461: 'ne',
64714
  0x040A: 'es',
64715
  0x082C: 'az-Cyrl',
64716
  0x0462: 'fy',
64717
  0x0414: 'nb',
64718
  0x540A: 'es-US',
64719
  0x042C: 'az',
64720
  0x0456: 'gl',
64721
  0x0814: 'nn',
64722
  0x380A: 'es-UY',
64723
  0x046D: 'ba',
64724
  0x0437: 'ka',
64725
  0x0482: 'oc',
64726
  0x200A: 'es-VE',
64727
  0x042D: 'eu',
64728
  0x0C07: 'de-AT',
64729
  0x0448: 'or',
64730
  0x081D: 'sv-FI',
64731
  0x0423: 'be',
64732
  0x0407: 'de',
64733
  0x0463: 'ps',
64734
  0x041D: 'sv',
64735
  0x0845: 'bn',
64736
  0x1407: 'de-LI',
64737
  0x0415: 'pl',
64738
  0x045A: 'syr',
64739
  0x0445: 'bn-IN',
64740
  0x1007: 'de-LU',
64741
  0x0416: 'pt',
64742
  0x0428: 'tg',
64743
  0x201A: 'bs-Cyrl',
64744
  0x0807: 'de-CH',
64745
  0x0816: 'pt-PT',
64746
  0x085F: 'tzm',
64747
  0x141A: 'bs',
64748
  0x0408: 'el',
64749
  0x0446: 'pa',
64750
  0x0449: 'ta',
64751
  0x047E: 'br',
64752
  0x046F: 'kl',
64753
  0x046B: 'qu-BO',
64754
  0x0444: 'tt',
64755
  0x0402: 'bg',
64756
  0x0447: 'gu',
64757
  0x086B: 'qu-EC',
64758
  0x044A: 'te',
64759
  0x0403: 'ca',
64760
  0x0468: 'ha',
64761
  0x0C6B: 'qu',
64762
  0x041E: 'th',
64763
  0x0C04: 'zh-HK',
64764
  0x040D: 'he',
64765
  0x0418: 'ro',
64766
  0x0451: 'bo',
64767
  0x1404: 'zh-MO',
64768
  0x0439: 'hi',
64769
  0x0417: 'rm',
64770
  0x041F: 'tr',
64771
  0x0804: 'zh',
64772
  0x040E: 'hu',
64773
  0x0419: 'ru',
64774
  0x0442: 'tk',
64775
  0x1004: 'zh-SG',
64776
  0x040F: 'is',
64777
  0x243B: 'smn',
64778
  0x0480: 'ug',
64779
  0x0404: 'zh-TW',
64780
  0x0470: 'ig',
64781
  0x103B: 'smj-NO',
64782
  0x0422: 'uk',
64783
  0x0483: 'co',
64784
  0x0421: 'id',
64785
  0x143B: 'smj',
64786
  0x042E: 'hsb',
64787
  0x041A: 'hr',
64788
  0x045D: 'iu',
64789
  0x0C3B: 'se-FI',
64790
  0x0420: 'ur',
64791
  0x101A: 'hr-BA',
64792
  0x085D: 'iu-Latn',
64793
  0x043B: 'se',
64794
  0x0843: 'uz-Cyrl',
64795
  0x0405: 'cs',
64796
  0x083C: 'ga',
64797
  0x083B: 'se-SE',
64798
  0x0443: 'uz',
64799
  0x0406: 'da',
64800
  0x0434: 'xh',
64801
  0x203B: 'sms',
64802
  0x042A: 'vi',
64803
  0x048C: 'prs',
64804
  0x0435: 'zu',
64805
  0x183B: 'sma-NO',
64806
  0x0452: 'cy',
64807
  0x0465: 'dv',
64808
  0x0410: 'it',
64809
  0x1C3B: 'sms',
64810
  0x0488: 'wo',
64811
  0x0813: 'nl-BE',
64812
  0x0810: 'it-CH',
64813
  0x044F: 'sa',
64814
  0x0485: 'sah',
64815
  0x0413: 'nl',
64816
  0x0411: 'ja',
64817
  0x1C1A: 'sr-Cyrl-BA',
64818
  0x0478: 'ii',
64819
  0x0C09: 'en-AU',
64820
  0x044B: 'kn',
64821
  0x0C1A: 'sr',
64822
  0x046A: 'yo',
64823
  0x2809: 'en-BZ',
64824
  0x043F: 'kk',
64825
  0x181A: 'sr-Latn-BA',
64826
  0x1009: 'en-CA',
64827
  0x0453: 'km',
64828
  0x081A: 'sr-Latn',
64829
  0x2409: 'en-029',
64830
  0x0486: 'quc',
64831
  0x046C: 'nso'
64832
}];
64833
var NameRecord = new r.Struct({
64834
  platformID: r.uint16,
64835
  encodingID: r.uint16,
64836
  languageID: r.uint16,
64837
  nameID: r.uint16,
64838
  length: r.uint16,
64839
  string: new r.Pointer(r.uint16, new r.String('length', function (t) {
64840
    return getEncoding(t.platformID, t.encodingID, t.languageID);
64841
  }), {
64842
    type: 'parent',
64843
    relativeTo: function relativeTo(ctx) {
64844
      return ctx.parent.stringOffset;
64845
    },
64846
    allowNull: false
64847
  })
64848
});
64849
var LangTagRecord = new r.Struct({
64850
  length: r.uint16,
64851
  tag: new r.Pointer(r.uint16, new r.String('length', 'utf16be'), {
64852
    type: 'parent',
64853
    relativeTo: function relativeTo(ctx) {
64854
      return ctx.stringOffset;
64855
    }
64856
  })
64857
});
64858
var NameTable = new r.VersionedStruct(r.uint16, {
64859
  0: {
64860
    count: r.uint16,
64861
    stringOffset: r.uint16,
64862
    records: new r.Array(NameRecord, 'count')
64863
  },
64864
  1: {
64865
    count: r.uint16,
64866
    stringOffset: r.uint16,
64867
    records: new r.Array(NameRecord, 'count'),
64868
    langTagCount: r.uint16,
64869
    langTags: new r.Array(LangTagRecord, 'langTagCount')
64870
  }
64871
});
64872
var NAMES = ['copyright', 'fontFamily', 'fontSubfamily', 'uniqueSubfamily', 'fullName', 'version', 'postscriptName',
64873
// Note: A font may have only one PostScript name and that name must be ASCII.
64874
'trademark', 'manufacturer', 'designer', 'description', 'vendorURL', 'designerURL', 'license', 'licenseURL', null,
64875
// reserved
64876
'preferredFamily', 'preferredSubfamily', 'compatibleFull', 'sampleText', 'postscriptCIDFontName', 'wwsFamilyName', 'wwsSubfamilyName'];
64877
NameTable.process = function (stream) {
64878
  var records = {};
64879
  for (var _iterator = _createForOfIteratorHelperLoose(this.records), _step; !(_step = _iterator()).done;) {
64880
    var record = _step.value;
64881
    // find out what language this is for
64882
    var language = LANGUAGES[record.platformID][record.languageID];
64883
    if (language == null && this.langTags != null && record.languageID >= 0x8000) {
64884
      language = this.langTags[record.languageID - 0x8000].tag;
64885
    }
64886
    if (language == null) {
64887
      language = record.platformID + '-' + record.languageID;
64888
    } // if the nameID is >= 256, it is a font feature record (AAT)
64889
64890
    var key = record.nameID >= 256 ? 'fontFeatures' : NAMES[record.nameID] || record.nameID;
64891
    if (records[key] == null) {
64892
      records[key] = {};
64893
    }
64894
    var obj = records[key];
64895
    if (record.nameID >= 256) {
64896
      obj = obj[record.nameID] || (obj[record.nameID] = {});
64897
    }
64898
    if (typeof record.string === 'string' || typeof obj[language] !== 'string') {
64899
      obj[language] = record.string;
64900
    }
64901
  }
64902
  this.records = records;
64903
};
64904
NameTable.preEncode = function () {
64905
  if (Array.isArray(this.records)) return;
64906
  this.version = 0;
64907
  var records = [];
64908
  for (var key in this.records) {
64909
    var val = this.records[key];
64910
    if (key === 'fontFeatures') continue;
64911
    records.push({
64912
      platformID: 3,
64913
      encodingID: 1,
64914
      languageID: 0x409,
64915
      nameID: NAMES.indexOf(key),
64916
      length: Buffer.byteLength(val.en, 'utf16le'),
64917
      string: val.en
64918
    });
64919
    if (key === 'postscriptName') {
64920
      records.push({
64921
        platformID: 1,
64922
        encodingID: 0,
64923
        languageID: 0,
64924
        nameID: NAMES.indexOf(key),
64925
        length: val.en.length,
64926
        string: val.en
64927
      });
64928
    }
64929
  }
64930
  this.records = records;
64931
  this.count = records.length;
64932
  this.stringOffset = NameTable.size(this, null, false);
64933
};
64934
var OS2 = new r.VersionedStruct(r.uint16, {
64935
  header: {
64936
    xAvgCharWidth: r.int16,
64937
    // average weighted advance width of lower case letters and space
64938
    usWeightClass: r.uint16,
64939
    // visual weight of stroke in glyphs
64940
    usWidthClass: r.uint16,
64941
    // relative change from the normal aspect ratio (width to height ratio)
64942
    fsType: new r.Bitfield(r.uint16, [
64943
    // Indicates font embedding licensing rights
64944
    null, 'noEmbedding', 'viewOnly', 'editable', null, null, null, null, 'noSubsetting', 'bitmapOnly']),
64945
    ySubscriptXSize: r.int16,
64946
    // recommended horizontal size in pixels for subscripts
64947
    ySubscriptYSize: r.int16,
64948
    // recommended vertical size in pixels for subscripts
64949
    ySubscriptXOffset: r.int16,
64950
    // recommended horizontal offset for subscripts
64951
    ySubscriptYOffset: r.int16,
64952
    // recommended vertical offset form the baseline for subscripts
64953
    ySuperscriptXSize: r.int16,
64954
    // recommended horizontal size in pixels for superscripts
64955
    ySuperscriptYSize: r.int16,
64956
    // recommended vertical size in pixels for superscripts
64957
    ySuperscriptXOffset: r.int16,
64958
    // recommended horizontal offset for superscripts
64959
    ySuperscriptYOffset: r.int16,
64960
    // recommended vertical offset from the baseline for superscripts
64961
    yStrikeoutSize: r.int16,
64962
    // width of the strikeout stroke
64963
    yStrikeoutPosition: r.int16,
64964
    // position of the strikeout stroke relative to the baseline
64965
    sFamilyClass: r.int16,
64966
    // classification of font-family design
64967
    panose: new r.Array(r.uint8, 10),
64968
    // describe the visual characteristics of a given typeface
64969
    ulCharRange: new r.Array(r.uint32, 4),
64970
    vendorID: new r.String(4),
64971
    // four character identifier for the font vendor
64972
    fsSelection: new r.Bitfield(r.uint16, [
64973
    // bit field containing information about the font
64974
    'italic', 'underscore', 'negative', 'outlined', 'strikeout', 'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique']),
64975
    usFirstCharIndex: r.uint16,
64976
    // The minimum Unicode index in this font
64977
    usLastCharIndex: r.uint16 // The maximum Unicode index in this font
64978
  },
64979
64980
  // The Apple version of this table ends here, but the Microsoft one continues on...
64981
  0: {},
64982
  1: {
64983
    typoAscender: r.int16,
64984
    typoDescender: r.int16,
64985
    typoLineGap: r.int16,
64986
    winAscent: r.uint16,
64987
    winDescent: r.uint16,
64988
    codePageRange: new r.Array(r.uint32, 2)
64989
  },
64990
  2: {
64991
    // these should be common with version 1 somehow
64992
    typoAscender: r.int16,
64993
    typoDescender: r.int16,
64994
    typoLineGap: r.int16,
64995
    winAscent: r.uint16,
64996
    winDescent: r.uint16,
64997
    codePageRange: new r.Array(r.uint32, 2),
64998
    xHeight: r.int16,
64999
    capHeight: r.int16,
65000
    defaultChar: r.uint16,
65001
    breakChar: r.uint16,
65002
    maxContent: r.uint16
65003
  },
65004
  5: {
65005
    typoAscender: r.int16,
65006
    typoDescender: r.int16,
65007
    typoLineGap: r.int16,
65008
    winAscent: r.uint16,
65009
    winDescent: r.uint16,
65010
    codePageRange: new r.Array(r.uint32, 2),
65011
    xHeight: r.int16,
65012
    capHeight: r.int16,
65013
    defaultChar: r.uint16,
65014
    breakChar: r.uint16,
65015
    maxContent: r.uint16,
65016
    usLowerOpticalPointSize: r.uint16,
65017
    usUpperOpticalPointSize: r.uint16
65018
  }
65019
});
65020
var versions = OS2.versions;
65021
versions[3] = versions[4] = versions[2];
65022
var post = new r.VersionedStruct(r.fixed32, {
65023
  header: {
65024
    // these fields exist at the top of all versions
65025
    italicAngle: r.fixed32,
65026
    // Italic angle in counter-clockwise degrees from the vertical.
65027
    underlinePosition: r.int16,
65028
    // Suggested distance of the top of the underline from the baseline
65029
    underlineThickness: r.int16,
65030
    // Suggested values for the underline thickness
65031
    isFixedPitch: r.uint32,
65032
    // Whether the font is monospaced
65033
    minMemType42: r.uint32,
65034
    // Minimum memory usage when a TrueType font is downloaded as a Type 42 font
65035
    maxMemType42: r.uint32,
65036
    // Maximum memory usage when a TrueType font is downloaded as a Type 42 font
65037
    minMemType1: r.uint32,
65038
    // Minimum memory usage when a TrueType font is downloaded as a Type 1 font
65039
    maxMemType1: r.uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font
65040
  },
65041
65042
  1: {},
65043
  // version 1 has no additional fields
65044
  2: {
65045
    numberOfGlyphs: r.uint16,
65046
    glyphNameIndex: new r.Array(r.uint16, 'numberOfGlyphs'),
65047
    names: new r.Array(new r.String(r.uint8))
65048
  },
65049
  2.5: {
65050
    numberOfGlyphs: r.uint16,
65051
    offsets: new r.Array(r.uint8, 'numberOfGlyphs')
65052
  },
65053
  3: {},
65054
  // version 3 has no additional fields
65055
  4: {
65056
    map: new r.Array(r.uint32, function (t) {
65057
      return t.parent.maxp.numGlyphs;
65058
    })
65059
  }
65060
});
65061
var cvt = new r.Struct({
65062
  controlValues: new r.Array(r.int16)
65063
});
65064
65065
// These instructions are known as the font program. The main use of this table
65066
// is for the definition of functions that are used in many different glyph programs.
65067
65068
var fpgm = new r.Struct({
65069
  instructions: new r.Array(r.uint8)
65070
});
65071
var loca = new r.VersionedStruct('head.indexToLocFormat', {
65072
  0: {
65073
    offsets: new r.Array(r.uint16)
65074
  },
65075
  1: {
65076
    offsets: new r.Array(r.uint32)
65077
  }
65078
});
65079
loca.process = function () {
65080
  if (this.version === 0) {
65081
    for (var i = 0; i < this.offsets.length; i++) {
65082
      this.offsets[i] <<= 1;
65083
    }
65084
  }
65085
};
65086
loca.preEncode = function () {
65087
  if (this.version === 0) {
65088
    for (var i = 0; i < this.offsets.length; i++) {
65089
      this.offsets[i] >>>= 1;
65090
    }
65091
  }
65092
};
65093
var prep = new r.Struct({
65094
  controlValueProgram: new r.Array(r.uint8)
65095
});
65096
var glyf = new r.Array(new r.Buffer());
65097
var CFFIndex = /*#__PURE__*/function () {
65098
  function CFFIndex(type) {
65099
    this.type = type;
65100
  }
65101
  var _proto = CFFIndex.prototype;
65102
  _proto.getCFFVersion = function getCFFVersion(ctx) {
65103
    while (ctx && !ctx.hdrSize) {
65104
      ctx = ctx.parent;
65105
    }
65106
    return ctx ? ctx.version : -1;
65107
  };
65108
  _proto.decode = function decode(stream, parent) {
65109
    var version = this.getCFFVersion(parent);
65110
    var count = version >= 2 ? stream.readUInt32BE() : stream.readUInt16BE();
65111
    if (count === 0) {
65112
      return [];
65113
    }
65114
    var offSize = stream.readUInt8();
65115
    var offsetType;
65116
    if (offSize === 1) {
65117
      offsetType = r.uint8;
65118
    } else if (offSize === 2) {
65119
      offsetType = r.uint16;
65120
    } else if (offSize === 3) {
65121
      offsetType = r.uint24;
65122
    } else if (offSize === 4) {
65123
      offsetType = r.uint32;
65124
    } else {
65125
      throw new Error("Bad offset size in CFFIndex: ".concat(offSize, " ").concat(stream.pos));
65126
    }
65127
    var ret = [];
65128
    var startPos = stream.pos + (count + 1) * offSize - 1;
65129
    var start = offsetType.decode(stream);
65130
    for (var i = 0; i < count; i++) {
65131
      var end = offsetType.decode(stream);
65132
      if (this.type != null) {
65133
        var pos = stream.pos;
65134
        stream.pos = startPos + start;
65135
        parent.length = end - start;
65136
        ret.push(this.type.decode(stream, parent));
65137
        stream.pos = pos;
65138
      } else {
65139
        ret.push({
65140
          offset: startPos + start,
65141
          length: end - start
65142
        });
65143
      }
65144
      start = end;
65145
    }
65146
    stream.pos = startPos + start;
65147
    return ret;
65148
  };
65149
  _proto.size = function size(arr, parent) {
65150
    var size = 2;
65151
    if (arr.length === 0) {
65152
      return size;
65153
    }
65154
    var type = this.type || new r.Buffer(); // find maximum offset to detminine offset type
65155
65156
    var offset = 1;
65157
    for (var i = 0; i < arr.length; i++) {
65158
      var item = arr[i];
65159
      offset += type.size(item, parent);
65160
    }
65161
    var offsetType;
65162
    if (offset <= 0xff) {
65163
      offsetType = r.uint8;
65164
    } else if (offset <= 0xffff) {
65165
      offsetType = r.uint16;
65166
    } else if (offset <= 0xffffff) {
65167
      offsetType = r.uint24;
65168
    } else if (offset <= 0xffffffff) {
65169
      offsetType = r.uint32;
65170
    } else {
65171
      throw new Error("Bad offset in CFFIndex");
65172
    }
65173
    size += 1 + offsetType.size() * (arr.length + 1);
65174
    size += offset - 1;
65175
    return size;
65176
  };
65177
  _proto.encode = function encode(stream, arr, parent) {
65178
    stream.writeUInt16BE(arr.length);
65179
    if (arr.length === 0) {
65180
      return;
65181
    }
65182
    var type = this.type || new r.Buffer(); // find maximum offset to detminine offset type
65183
65184
    var sizes = [];
65185
    var offset = 1;
65186
    for (var _iterator2 = _createForOfIteratorHelperLoose(arr), _step2; !(_step2 = _iterator2()).done;) {
65187
      var item = _step2.value;
65188
      var s = type.size(item, parent);
65189
      sizes.push(s);
65190
      offset += s;
65191
    }
65192
    var offsetType;
65193
    if (offset <= 0xff) {
65194
      offsetType = r.uint8;
65195
    } else if (offset <= 0xffff) {
65196
      offsetType = r.uint16;
65197
    } else if (offset <= 0xffffff) {
65198
      offsetType = r.uint24;
65199
    } else if (offset <= 0xffffffff) {
65200
      offsetType = r.uint32;
65201
    } else {
65202
      throw new Error("Bad offset in CFFIndex");
65203
    } // write offset size
65204
65205
    stream.writeUInt8(offsetType.size()); // write elements
65206
65207
    offset = 1;
65208
    offsetType.encode(stream, offset);
65209
    for (var _i22 = 0, _sizes = sizes; _i22 < _sizes.length; _i22++) {
65210
      var size = _sizes[_i22];
65211
      offset += size;
65212
      offsetType.encode(stream, offset);
65213
    }
65214
    for (var _iterator3 = _createForOfIteratorHelperLoose(arr), _step3; !(_step3 = _iterator3()).done;) {
65215
      var _item = _step3.value;
65216
      type.encode(stream, _item, parent);
65217
    }
65218
    return;
65219
  };
65220
  return CFFIndex;
65221
}();
65222
var FLOAT_EOF = 0xf;
65223
var FLOAT_LOOKUP = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];
65224
var FLOAT_ENCODE_LOOKUP = {
65225
  '.': 10,
65226
  'E': 11,
65227
  'E-': 12,
65228
  '-': 14
65229
};
65230
var CFFOperand = /*#__PURE__*/function () {
65231
  function CFFOperand() {}
65232
  CFFOperand.decode = function decode(stream, value) {
65233
    if (32 <= value && value <= 246) {
65234
      return value - 139;
65235
    }
65236
    if (247 <= value && value <= 250) {
65237
      return (value - 247) * 256 + stream.readUInt8() + 108;
65238
    }
65239
    if (251 <= value && value <= 254) {
65240
      return -(value - 251) * 256 - stream.readUInt8() - 108;
65241
    }
65242
    if (value === 28) {
65243
      return stream.readInt16BE();
65244
    }
65245
    if (value === 29) {
65246
      return stream.readInt32BE();
65247
    }
65248
    if (value === 30) {
65249
      var str = '';
65250
      while (true) {
65251
        var b = stream.readUInt8();
65252
        var n1 = b >> 4;
65253
        if (n1 === FLOAT_EOF) {
65254
          break;
65255
        }
65256
        str += FLOAT_LOOKUP[n1];
65257
        var n2 = b & 15;
65258
        if (n2 === FLOAT_EOF) {
65259
          break;
65260
        }
65261
        str += FLOAT_LOOKUP[n2];
65262
      }
65263
      return parseFloat(str);
65264
    }
65265
    return null;
65266
  };
65267
  CFFOperand.size = function size(value) {
65268
    // if the value needs to be forced to the largest size (32 bit)
65269
    // e.g. for unknown pointers, set to 32768
65270
    if (value.forceLarge) {
65271
      value = 32768;
65272
    }
65273
    if ((value | 0) !== value) {
65274
      // floating point
65275
      var str = '' + value;
65276
      return 1 + Math.ceil((str.length + 1) / 2);
65277
    } else if (-107 <= value && value <= 107) {
65278
      return 1;
65279
    } else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) {
65280
      return 2;
65281
    } else if (-32768 <= value && value <= 32767) {
65282
      return 3;
65283
    } else {
65284
      return 5;
65285
    }
65286
  };
65287
  CFFOperand.encode = function encode(stream, value) {
65288
    // if the value needs to be forced to the largest size (32 bit)
65289
    // e.g. for unknown pointers, save the old value and set to 32768
65290
    var val = Number(value);
65291
    if (value.forceLarge) {
65292
      stream.writeUInt8(29);
65293
      return stream.writeInt32BE(val);
65294
    } else if ((val | 0) !== val) {
65295
      // floating point
65296
      stream.writeUInt8(30);
65297
      var str = '' + val;
65298
      for (var i = 0; i < str.length; i += 2) {
65299
        var c1 = str[i];
65300
        var n1 = FLOAT_ENCODE_LOOKUP[c1] || +c1;
65301
        if (i === str.length - 1) {
65302
          var n2 = FLOAT_EOF;
65303
        } else {
65304
          var c2 = str[i + 1];
65305
          var n2 = FLOAT_ENCODE_LOOKUP[c2] || +c2;
65306
        }
65307
        stream.writeUInt8(n1 << 4 | n2 & 15);
65308
      }
65309
      if (n2 !== FLOAT_EOF) {
65310
        return stream.writeUInt8(FLOAT_EOF << 4);
65311
      }
65312
    } else if (-107 <= val && val <= 107) {
65313
      return stream.writeUInt8(val + 139);
65314
    } else if (108 <= val && val <= 1131) {
65315
      val -= 108;
65316
      stream.writeUInt8((val >> 8) + 247);
65317
      return stream.writeUInt8(val & 0xff);
65318
    } else if (-1131 <= val && val <= -108) {
65319
      val = -val - 108;
65320
      stream.writeUInt8((val >> 8) + 251);
65321
      return stream.writeUInt8(val & 0xff);
65322
    } else if (-32768 <= val && val <= 32767) {
65323
      stream.writeUInt8(28);
65324
      return stream.writeInt16BE(val);
65325
    } else {
65326
      stream.writeUInt8(29);
65327
      return stream.writeInt32BE(val);
65328
    }
65329
  };
65330
  return CFFOperand;
65331
}();
65332
var CFFDict = /*#__PURE__*/function () {
65333
  function CFFDict(ops) {
65334
    if (ops === void 0) {
65335
      ops = [];
65336
    }
65337
    this.ops = ops;
65338
    this.fields = {};
65339
    for (var _iterator4 = _createForOfIteratorHelperLoose(ops), _step4; !(_step4 = _iterator4()).done;) {
65340
      var field = _step4.value;
65341
      var key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];
65342
      this.fields[key] = field;
65343
    }
65344
  }
65345
  var _proto2 = CFFDict.prototype;
65346
  _proto2.decodeOperands = function decodeOperands(type, stream, ret, operands) {
65347
    var _this = this;
65348
    if (Array.isArray(type)) {
65349
      return operands.map(function (op, i) {
65350
        return _this.decodeOperands(type[i], stream, ret, [op]);
65351
      });
65352
    } else if (type.decode != null) {
65353
      return type.decode(stream, ret, operands);
65354
    } else {
65355
      switch (type) {
65356
        case 'number':
65357
        case 'offset':
65358
        case 'sid':
65359
          return operands[0];
65360
        case 'boolean':
65361
          return !!operands[0];
65362
        default:
65363
          return operands;
65364
      }
65365
    }
65366
  };
65367
  _proto2.encodeOperands = function encodeOperands(type, stream, ctx, operands) {
65368
    var _this2 = this;
65369
    if (Array.isArray(type)) {
65370
      return operands.map(function (op, i) {
65371
        return _this2.encodeOperands(type[i], stream, ctx, op)[0];
65372
      });
65373
    } else if (type.encode != null) {
65374
      return type.encode(stream, operands, ctx);
65375
    } else if (typeof operands === 'number') {
65376
      return [operands];
65377
    } else if (typeof operands === 'boolean') {
65378
      return [+operands];
65379
    } else if (Array.isArray(operands)) {
65380
      return operands;
65381
    } else {
65382
      return [operands];
65383
    }
65384
  };
65385
  _proto2.decode = function decode(stream, parent) {
65386
    var end = stream.pos + parent.length;
65387
    var ret = {};
65388
    var operands = []; // define hidden properties
65389
65390
    Object.defineProperties(ret, {
65391
      parent: {
65392
        value: parent
65393
      },
65394
      _startOffset: {
65395
        value: stream.pos
65396
      }
65397
    }); // fill in defaults
65398
65399
    for (var key in this.fields) {
65400
      var field = this.fields[key];
65401
      ret[field[1]] = field[3];
65402
    }
65403
    while (stream.pos < end) {
65404
      var b = stream.readUInt8();
65405
      if (b < 28) {
65406
        if (b === 12) {
65407
          b = b << 8 | stream.readUInt8();
65408
        }
65409
        var _field = this.fields[b];
65410
        if (!_field) {
65411
          throw new Error("Unknown operator ".concat(b));
65412
        }
65413
        var val = this.decodeOperands(_field[2], stream, ret, operands);
65414
        if (val != null) {
65415
          if (val instanceof utils.PropertyDescriptor) {
65416
            Object.defineProperty(ret, _field[1], val);
65417
          } else {
65418
            ret[_field[1]] = val;
65419
          }
65420
        }
65421
        operands = [];
65422
      } else {
65423
        operands.push(CFFOperand.decode(stream, b));
65424
      }
65425
    }
65426
    return ret;
65427
  };
65428
  _proto2.size = function size(dict, parent, includePointers) {
65429
    if (includePointers === void 0) {
65430
      includePointers = true;
65431
    }
65432
    var ctx = {
65433
      parent: parent,
65434
      val: dict,
65435
      pointerSize: 0,
65436
      startOffset: parent.startOffset || 0
65437
    };
65438
    var len = 0;
65439
    for (var k in this.fields) {
65440
      var field = this.fields[k];
65441
      var val = dict[field[1]];
65442
      if (val == null || isEqual(val, field[3])) {
65443
        continue;
65444
      }
65445
      var operands = this.encodeOperands(field[2], null, ctx, val);
65446
      for (var _iterator5 = _createForOfIteratorHelperLoose(operands), _step5; !(_step5 = _iterator5()).done;) {
65447
        var op = _step5.value;
65448
        len += CFFOperand.size(op);
65449
      }
65450
      var key = Array.isArray(field[0]) ? field[0] : [field[0]];
65451
      len += key.length;
65452
    }
65453
    if (includePointers) {
65454
      len += ctx.pointerSize;
65455
    }
65456
    return len;
65457
  };
65458
  _proto2.encode = function encode(stream, dict, parent) {
65459
    var ctx = {
65460
      pointers: [],
65461
      startOffset: stream.pos,
65462
      parent: parent,
65463
      val: dict,
65464
      pointerSize: 0
65465
    };
65466
    ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);
65467
    for (var _iterator6 = _createForOfIteratorHelperLoose(this.ops), _step6; !(_step6 = _iterator6()).done;) {
65468
      var field = _step6.value;
65469
      var val = dict[field[1]];
65470
      if (val == null || isEqual(val, field[3])) {
65471
        continue;
65472
      }
65473
      var operands = this.encodeOperands(field[2], stream, ctx, val);
65474
      for (var _iterator7 = _createForOfIteratorHelperLoose(operands), _step7; !(_step7 = _iterator7()).done;) {
65475
        var op = _step7.value;
65476
        CFFOperand.encode(stream, op);
65477
      }
65478
      var key = Array.isArray(field[0]) ? field[0] : [field[0]];
65479
      for (var _iterator8 = _createForOfIteratorHelperLoose(key), _step8; !(_step8 = _iterator8()).done;) {
65480
        var _op = _step8.value;
65481
        stream.writeUInt8(_op);
65482
      }
65483
    }
65484
    var i = 0;
65485
    while (i < ctx.pointers.length) {
65486
      var ptr = ctx.pointers[i++];
65487
      ptr.type.encode(stream, ptr.val, ptr.parent);
65488
    }
65489
    return;
65490
  };
65491
  return CFFDict;
65492
}();
65493
var CFFPointer = /*#__PURE__*/function (_r$Pointer) {
65494
  _inheritsLoose(CFFPointer, _r$Pointer);
65495
  function CFFPointer(type, options) {
65496
    if (options === void 0) {
65497
      options = {};
65498
    }
65499
    if (options.type == null) {
65500
      options.type = 'global';
65501
    }
65502
    return _r$Pointer.call(this, null, type, options) || this;
65503
  }
65504
  var _proto3 = CFFPointer.prototype;
65505
  _proto3.decode = function decode(stream, parent, operands) {
65506
    this.offsetType = {
65507
      decode: function decode() {
65508
        return operands[0];
65509
      }
65510
    };
65511
    return _r$Pointer.prototype.decode.call(this, stream, parent, operands);
65512
  };
65513
  _proto3.encode = function encode(stream, value, ctx) {
65514
    if (!stream) {
65515
      // compute the size (so ctx.pointerSize is correct)
65516
      this.offsetType = {
65517
        size: function size() {
65518
          return 0;
65519
        }
65520
      };
65521
      this.size(value, ctx);
65522
      return [new Ptr(0)];
65523
    }
65524
    var ptr = null;
65525
    this.offsetType = {
65526
      encode: function encode(stream, val) {
65527
        return ptr = val;
65528
      }
65529
    };
65530
    _r$Pointer.prototype.encode.call(this, stream, value, ctx);
65531
    return [new Ptr(ptr)];
65532
  };
65533
  return CFFPointer;
65534
}(r.Pointer);
65535
var Ptr = /*#__PURE__*/function () {
65536
  function Ptr(val) {
65537
    this.val = val;
65538
    this.forceLarge = true;
65539
  }
65540
  var _proto4 = Ptr.prototype;
65541
  _proto4.valueOf = function valueOf() {
65542
    return this.val;
65543
  };
65544
  return Ptr;
65545
}();
65546
var CFFBlendOp = /*#__PURE__*/function () {
65547
  function CFFBlendOp() {}
65548
  CFFBlendOp.decode = function decode(stream, parent, operands) {
65549
    var numBlends = operands.pop(); // TODO: actually blend. For now just consume the deltas
65550
    // since we don't use any of the values anyway.
65551
65552
    while (operands.length > numBlends) {
65553
      operands.pop();
65554
    }
65555
  };
65556
  return CFFBlendOp;
65557
}();
65558
var CFFPrivateDict = new CFFDict([
65559
// key       name                    type                                          default
65560
[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'number', 0.039625], [[12, 10], 'BlueShift', 'number', 7], [[12, 11], 'BlueFuzz', 'number', 1], [10, 'StdHW', 'number', null], [11, 'StdVW', 'number', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'boolean', false], [[12, 17], 'LanguageGroup', 'number', 0], [[12, 18], 'ExpansionFactor', 'number', 0.06], [[12, 19], 'initialRandomSeed', 'number', 0], [20, 'defaultWidthX', 'number', 0], [21, 'nominalWidthX', 'number', 0], [22, 'vsindex', 'number', 0], [23, 'blend', CFFBlendOp, null], [19, 'Subrs', new CFFPointer(new CFFIndex(), {
65561
  type: 'local'
65562
}), null]]);
65563
65564
// Automatically generated from Appendix A of the CFF specification; do
65565
// not edit. Length should be 391.
65566
var standardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"];
65567
var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'];
65568
var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
65569
var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
65570
var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
65571
var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
65572
65573
// Scripts and Languages #
65574
//########################
65575
65576
var LangSysTable = new r.Struct({
65577
  reserved: new r.Reserved(r.uint16),
65578
  reqFeatureIndex: r.uint16,
65579
  featureCount: r.uint16,
65580
  featureIndexes: new r.Array(r.uint16, 'featureCount')
65581
});
65582
var LangSysRecord = new r.Struct({
65583
  tag: new r.String(4),
65584
  langSys: new r.Pointer(r.uint16, LangSysTable, {
65585
    type: 'parent'
65586
  })
65587
});
65588
var Script = new r.Struct({
65589
  defaultLangSys: new r.Pointer(r.uint16, LangSysTable),
65590
  count: r.uint16,
65591
  langSysRecords: new r.Array(LangSysRecord, 'count')
65592
});
65593
var ScriptRecord = new r.Struct({
65594
  tag: new r.String(4),
65595
  script: new r.Pointer(r.uint16, Script, {
65596
    type: 'parent'
65597
  })
65598
});
65599
var ScriptList = new r.Array(ScriptRecord, r.uint16); //#######################
65600
// Features and Lookups #
65601
//#######################
65602
65603
var Feature = new r.Struct({
65604
  featureParams: r.uint16,
65605
  // pointer
65606
  lookupCount: r.uint16,
65607
  lookupListIndexes: new r.Array(r.uint16, 'lookupCount')
65608
});
65609
var FeatureRecord = new r.Struct({
65610
  tag: new r.String(4),
65611
  feature: new r.Pointer(r.uint16, Feature, {
65612
    type: 'parent'
65613
  })
65614
});
65615
var FeatureList = new r.Array(FeatureRecord, r.uint16);
65616
var LookupFlags = new r.Struct({
65617
  markAttachmentType: r.uint8,
65618
  flags: new r.Bitfield(r.uint8, ['rightToLeft', 'ignoreBaseGlyphs', 'ignoreLigatures', 'ignoreMarks', 'useMarkFilteringSet'])
65619
});
65620
function LookupList(SubTable) {
65621
  var Lookup = new r.Struct({
65622
    lookupType: r.uint16,
65623
    flags: LookupFlags,
65624
    subTableCount: r.uint16,
65625
    subTables: new r.Array(new r.Pointer(r.uint16, SubTable), 'subTableCount'),
65626
    markFilteringSet: new r.Optional(r.uint16, function (t) {
65627
      return t.flags.flags.useMarkFilteringSet;
65628
    })
65629
  });
65630
  return new r.LazyArray(new r.Pointer(r.uint16, Lookup), r.uint16);
65631
} //#################
65632
// Coverage Table #
65633
//#################
65634
65635
var RangeRecord = new r.Struct({
65636
  start: r.uint16,
65637
  end: r.uint16,
65638
  startCoverageIndex: r.uint16
65639
});
65640
var Coverage = new r.VersionedStruct(r.uint16, {
65641
  1: {
65642
    glyphCount: r.uint16,
65643
    glyphs: new r.Array(r.uint16, 'glyphCount')
65644
  },
65645
  2: {
65646
    rangeCount: r.uint16,
65647
    rangeRecords: new r.Array(RangeRecord, 'rangeCount')
65648
  }
65649
}); //#########################
65650
// Class Definition Table #
65651
//#########################
65652
65653
var ClassRangeRecord = new r.Struct({
65654
  start: r.uint16,
65655
  end: r.uint16,
65656
  class: r.uint16
65657
});
65658
var ClassDef = new r.VersionedStruct(r.uint16, {
65659
  1: {
65660
    // Class array
65661
    startGlyph: r.uint16,
65662
    glyphCount: r.uint16,
65663
    classValueArray: new r.Array(r.uint16, 'glyphCount')
65664
  },
65665
  2: {
65666
    // Class ranges
65667
    classRangeCount: r.uint16,
65668
    classRangeRecord: new r.Array(ClassRangeRecord, 'classRangeCount')
65669
  }
65670
}); //###############
65671
// Device Table #
65672
//###############
65673
65674
var Device = new r.Struct({
65675
  a: r.uint16,
65676
  // startSize for hinting Device, outerIndex for VariationIndex
65677
  b: r.uint16,
65678
  // endSize for Device, innerIndex for VariationIndex
65679
  deltaFormat: r.uint16
65680
}); //#############################################
65681
// Contextual Substitution/Positioning Tables #
65682
//#############################################
65683
65684
var LookupRecord = new r.Struct({
65685
  sequenceIndex: r.uint16,
65686
  lookupListIndex: r.uint16
65687
});
65688
var Rule = new r.Struct({
65689
  glyphCount: r.uint16,
65690
  lookupCount: r.uint16,
65691
  input: new r.Array(r.uint16, function (t) {
65692
    return t.glyphCount - 1;
65693
  }),
65694
  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
65695
});
65696
var RuleSet = new r.Array(new r.Pointer(r.uint16, Rule), r.uint16);
65697
var ClassRule = new r.Struct({
65698
  glyphCount: r.uint16,
65699
  lookupCount: r.uint16,
65700
  classes: new r.Array(r.uint16, function (t) {
65701
    return t.glyphCount - 1;
65702
  }),
65703
  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
65704
});
65705
var ClassSet = new r.Array(new r.Pointer(r.uint16, ClassRule), r.uint16);
65706
var Context = new r.VersionedStruct(r.uint16, {
65707
  1: {
65708
    // Simple context
65709
    coverage: new r.Pointer(r.uint16, Coverage),
65710
    ruleSetCount: r.uint16,
65711
    ruleSets: new r.Array(new r.Pointer(r.uint16, RuleSet), 'ruleSetCount')
65712
  },
65713
  2: {
65714
    // Class-based context
65715
    coverage: new r.Pointer(r.uint16, Coverage),
65716
    classDef: new r.Pointer(r.uint16, ClassDef),
65717
    classSetCnt: r.uint16,
65718
    classSet: new r.Array(new r.Pointer(r.uint16, ClassSet), 'classSetCnt')
65719
  },
65720
  3: {
65721
    glyphCount: r.uint16,
65722
    lookupCount: r.uint16,
65723
    coverages: new r.Array(new r.Pointer(r.uint16, Coverage), 'glyphCount'),
65724
    lookupRecords: new r.Array(LookupRecord, 'lookupCount')
65725
  }
65726
}); //######################################################
65727
// Chaining Contextual Substitution/Positioning Tables #
65728
//######################################################
65729
65730
var ChainRule = new r.Struct({
65731
  backtrackGlyphCount: r.uint16,
65732
  backtrack: new r.Array(r.uint16, 'backtrackGlyphCount'),
65733
  inputGlyphCount: r.uint16,
65734
  input: new r.Array(r.uint16, function (t) {
65735
    return t.inputGlyphCount - 1;
65736
  }),
65737
  lookaheadGlyphCount: r.uint16,
65738
  lookahead: new r.Array(r.uint16, 'lookaheadGlyphCount'),
65739
  lookupCount: r.uint16,
65740
  lookupRecords: new r.Array(LookupRecord, 'lookupCount')
65741
});
65742
var ChainRuleSet = new r.Array(new r.Pointer(r.uint16, ChainRule), r.uint16);
65743
var ChainingContext = new r.VersionedStruct(r.uint16, {
65744
  1: {
65745
    // Simple context glyph substitution
65746
    coverage: new r.Pointer(r.uint16, Coverage),
65747
    chainCount: r.uint16,
65748
    chainRuleSets: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')
65749
  },
65750
  2: {
65751
    // Class-based chaining context
65752
    coverage: new r.Pointer(r.uint16, Coverage),
65753
    backtrackClassDef: new r.Pointer(r.uint16, ClassDef),
65754
    inputClassDef: new r.Pointer(r.uint16, ClassDef),
65755
    lookaheadClassDef: new r.Pointer(r.uint16, ClassDef),
65756
    chainCount: r.uint16,
65757
    chainClassSet: new r.Array(new r.Pointer(r.uint16, ChainRuleSet), 'chainCount')
65758
  },
65759
  3: {
65760
    // Coverage-based chaining context
65761
    backtrackGlyphCount: r.uint16,
65762
    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
65763
    inputGlyphCount: r.uint16,
65764
    inputCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'inputGlyphCount'),
65765
    lookaheadGlyphCount: r.uint16,
65766
    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
65767
    lookupCount: r.uint16,
65768
    lookupRecords: new r.Array(LookupRecord, 'lookupCount')
65769
  }
65770
});
65771
65772
/*******************
65773
 * Variation Store *
65774
 *******************/
65775
65776
var F2DOT14 = new r.Fixed(16, 'BE', 14);
65777
var RegionAxisCoordinates = new r.Struct({
65778
  startCoord: F2DOT14,
65779
  peakCoord: F2DOT14,
65780
  endCoord: F2DOT14
65781
});
65782
var VariationRegionList = new r.Struct({
65783
  axisCount: r.uint16,
65784
  regionCount: r.uint16,
65785
  variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')
65786
});
65787
var DeltaSet = new r.Struct({
65788
  shortDeltas: new r.Array(r.int16, function (t) {
65789
    return t.parent.shortDeltaCount;
65790
  }),
65791
  regionDeltas: new r.Array(r.int8, function (t) {
65792
    return t.parent.regionIndexCount - t.parent.shortDeltaCount;
65793
  }),
65794
  deltas: function deltas(t) {
65795
    return t.shortDeltas.concat(t.regionDeltas);
65796
  }
65797
});
65798
var ItemVariationData = new r.Struct({
65799
  itemCount: r.uint16,
65800
  shortDeltaCount: r.uint16,
65801
  regionIndexCount: r.uint16,
65802
  regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),
65803
  deltaSets: new r.Array(DeltaSet, 'itemCount')
65804
});
65805
var ItemVariationStore = new r.Struct({
65806
  format: r.uint16,
65807
  variationRegionList: new r.Pointer(r.uint32, VariationRegionList),
65808
  variationDataCount: r.uint16,
65809
  itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')
65810
});
65811
/**********************
65812
 * Feature Variations *
65813
 **********************/
65814
65815
var ConditionTable = new r.VersionedStruct(r.uint16, {
65816
  1: (_ = {
65817
    axisIndex: r.uint16
65818
  }, _["axisIndex"] = r.uint16, _.filterRangeMinValue = F2DOT14, _.filterRangeMaxValue = F2DOT14, _)
65819
});
65820
var ConditionSet = new r.Struct({
65821
  conditionCount: r.uint16,
65822
  conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')
65823
});
65824
var FeatureTableSubstitutionRecord = new r.Struct({
65825
  featureIndex: r.uint16,
65826
  alternateFeatureTable: new r.Pointer(r.uint32, Feature, {
65827
    type: 'parent'
65828
  })
65829
});
65830
var FeatureTableSubstitution = new r.Struct({
65831
  version: r.fixed32,
65832
  substitutionCount: r.uint16,
65833
  substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')
65834
});
65835
var FeatureVariationRecord = new r.Struct({
65836
  conditionSet: new r.Pointer(r.uint32, ConditionSet, {
65837
    type: 'parent'
65838
  }),
65839
  featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, {
65840
    type: 'parent'
65841
  })
65842
});
65843
var FeatureVariations = new r.Struct({
65844
  majorVersion: r.uint16,
65845
  minorVersion: r.uint16,
65846
  featureVariationRecordCount: r.uint32,
65847
  featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')
65848
});
65849
65850
// otherwise delegates to the provided type.
65851
var PredefinedOp = /*#__PURE__*/function () {
65852
  function PredefinedOp(predefinedOps, type) {
65853
    this.predefinedOps = predefinedOps;
65854
    this.type = type;
65855
  }
65856
  var _proto5 = PredefinedOp.prototype;
65857
  _proto5.decode = function decode(stream, parent, operands) {
65858
    if (this.predefinedOps[operands[0]]) {
65859
      return this.predefinedOps[operands[0]];
65860
    }
65861
    return this.type.decode(stream, parent, operands);
65862
  };
65863
  _proto5.size = function size(value, ctx) {
65864
    return this.type.size(value, ctx);
65865
  };
65866
  _proto5.encode = function encode(stream, value, ctx) {
65867
    var index = this.predefinedOps.indexOf(value);
65868
    if (index !== -1) {
65869
      return index;
65870
    }
65871
    return this.type.encode(stream, value, ctx);
65872
  };
65873
  return PredefinedOp;
65874
}();
65875
var CFFEncodingVersion = /*#__PURE__*/function (_r$Number) {
65876
  _inheritsLoose(CFFEncodingVersion, _r$Number);
65877
  function CFFEncodingVersion() {
65878
    return _r$Number.call(this, 'UInt8') || this;
65879
  }
65880
  var _proto6 = CFFEncodingVersion.prototype;
65881
  _proto6.decode = function decode(stream) {
65882
    return r.uint8.decode(stream) & 0x7f;
65883
  };
65884
  return CFFEncodingVersion;
65885
}(r.Number);
65886
var Range1 = new r.Struct({
65887
  first: r.uint16,
65888
  nLeft: r.uint8
65889
});
65890
var Range2 = new r.Struct({
65891
  first: r.uint16,
65892
  nLeft: r.uint16
65893
});
65894
var CFFCustomEncoding = new r.VersionedStruct(new CFFEncodingVersion(), {
65895
  0: {
65896
    nCodes: r.uint8,
65897
    codes: new r.Array(r.uint8, 'nCodes')
65898
  },
65899
  1: {
65900
    nRanges: r.uint8,
65901
    ranges: new r.Array(Range1, 'nRanges')
65902
  } // TODO: supplement?
65903
});
65904
65905
var CFFEncoding = new PredefinedOp([StandardEncoding, ExpertEncoding], new CFFPointer(CFFCustomEncoding, {
65906
  lazy: true
65907
})); // Decodes an array of ranges until the total
65908
// length is equal to the provided length.
65909
var RangeArray = /*#__PURE__*/function (_r$Array) {
65910
  _inheritsLoose(RangeArray, _r$Array);
65911
  function RangeArray() {
65912
    return _r$Array.apply(this, arguments) || this;
65913
  }
65914
  var _proto7 = RangeArray.prototype;
65915
  _proto7.decode = function decode(stream, parent) {
65916
    var length = utils.resolveLength(this.length, stream, parent);
65917
    var count = 0;
65918
    var res = [];
65919
    while (count < length) {
65920
      var range = this.type.decode(stream, parent);
65921
      range.offset = count;
65922
      count += range.nLeft + 1;
65923
      res.push(range);
65924
    }
65925
    return res;
65926
  };
65927
  return RangeArray;
65928
}(r.Array);
65929
var CFFCustomCharset = new r.VersionedStruct(r.uint8, {
65930
  0: {
65931
    glyphs: new r.Array(r.uint16, function (t) {
65932
      return t.parent.CharStrings.length - 1;
65933
    })
65934
  },
65935
  1: {
65936
    ranges: new RangeArray(Range1, function (t) {
65937
      return t.parent.CharStrings.length - 1;
65938
    })
65939
  },
65940
  2: {
65941
    ranges: new RangeArray(Range2, function (t) {
65942
      return t.parent.CharStrings.length - 1;
65943
    })
65944
  }
65945
});
65946
var CFFCharset = new PredefinedOp([ISOAdobeCharset, ExpertCharset, ExpertSubsetCharset], new CFFPointer(CFFCustomCharset, {
65947
  lazy: true
65948
}));
65949
var FDRange3 = new r.Struct({
65950
  first: r.uint16,
65951
  fd: r.uint8
65952
});
65953
var FDRange4 = new r.Struct({
65954
  first: r.uint32,
65955
  fd: r.uint16
65956
});
65957
var FDSelect = new r.VersionedStruct(r.uint8, {
65958
  0: {
65959
    fds: new r.Array(r.uint8, function (t) {
65960
      return t.parent.CharStrings.length;
65961
    })
65962
  },
65963
  3: {
65964
    nRanges: r.uint16,
65965
    ranges: new r.Array(FDRange3, 'nRanges'),
65966
    sentinel: r.uint16
65967
  },
65968
  4: {
65969
    nRanges: r.uint32,
65970
    ranges: new r.Array(FDRange4, 'nRanges'),
65971
    sentinel: r.uint32
65972
  }
65973
});
65974
var ptr = new CFFPointer(CFFPrivateDict);
65975
var CFFPrivateOp = /*#__PURE__*/function () {
65976
  function CFFPrivateOp() {}
65977
  var _proto8 = CFFPrivateOp.prototype;
65978
  _proto8.decode = function decode(stream, parent, operands) {
65979
    parent.length = operands[0];
65980
    return ptr.decode(stream, parent, [operands[1]]);
65981
  };
65982
  _proto8.size = function size(dict, ctx) {
65983
    return [CFFPrivateDict.size(dict, ctx, false), ptr.size(dict, ctx)[0]];
65984
  };
65985
  _proto8.encode = function encode(stream, dict, ctx) {
65986
    return [CFFPrivateDict.size(dict, ctx, false), ptr.encode(stream, dict, ctx)[0]];
65987
  };
65988
  return CFFPrivateOp;
65989
}();
65990
var FontDict = new CFFDict([
65991
// key       name                   type(s)                                 default
65992
[18, 'Private', new CFFPrivateOp(), null], [[12, 38], 'FontName', 'sid', null], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [[12, 5], 'PaintType', 'number', 0]]);
65993
var CFFTopDict = new CFFDict([
65994
// key       name                   type(s)                                 default
65995
[[12, 30], 'ROS', ['sid', 'sid', 'number'], null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'boolean', false], [[12, 2], 'ItalicAngle', 'number', 0], [[12, 3], 'UnderlinePosition', 'number', -100], [[12, 4], 'UnderlineThickness', 'number', 50], [[12, 5], 'PaintType', 'number', 0], [[12, 6], 'CharstringType', 'number', 2], [[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'number', null], [5, 'FontBBox', 'array', [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'number', 0], [14, 'XUID', 'array', null], [15, 'charset', CFFCharset, ISOAdobeCharset], [16, 'Encoding', CFFEncoding, StandardEncoding], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [18, 'Private', new CFFPrivateOp(), null], [[12, 20], 'SyntheticBase', 'number', null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null],
65996
// CID font specific
65997
[[12, 31], 'CIDFontVersion', 'number', 0], [[12, 32], 'CIDFontRevision', 'number', 0], [[12, 33], 'CIDFontType', 'number', 0], [[12, 34], 'CIDCount', 'number', 8720], [[12, 35], 'UIDBase', 'number', null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [[12, 38], 'FontName', 'sid', null]]);
65998
var VariationStore = new r.Struct({
65999
  length: r.uint16,
66000
  itemVariationStore: ItemVariationStore
66001
});
66002
var CFF2TopDict = new CFFDict([[[12, 7], 'FontMatrix', 'array', [0.001, 0, 0, 0.001, 0, 0]], [17, 'CharStrings', new CFFPointer(new CFFIndex()), null], [[12, 37], 'FDSelect', new CFFPointer(FDSelect), null], [[12, 36], 'FDArray', new CFFPointer(new CFFIndex(FontDict)), null], [24, 'vstore', new CFFPointer(VariationStore), null], [25, 'maxstack', 'number', 193]]);
66003
var CFFTop = new r.VersionedStruct(r.fixed16, {
66004
  1: {
66005
    hdrSize: r.uint8,
66006
    offSize: r.uint8,
66007
    nameIndex: new CFFIndex(new r.String('length')),
66008
    topDictIndex: new CFFIndex(CFFTopDict),
66009
    stringIndex: new CFFIndex(new r.String('length')),
66010
    globalSubrIndex: new CFFIndex()
66011
  },
66012
  2: {
66013
    hdrSize: r.uint8,
66014
    length: r.uint16,
66015
    topDict: CFF2TopDict,
66016
    globalSubrIndex: new CFFIndex()
66017
  }
66018
});
66019
var CFFFont = /*#__PURE__*/function () {
66020
  function CFFFont(stream) {
66021
    this.stream = stream;
66022
    this.decode();
66023
  }
66024
  CFFFont.decode = function decode(stream) {
66025
    return new CFFFont(stream);
66026
  };
66027
  var _proto9 = CFFFont.prototype;
66028
  _proto9.decode = function decode() {
66029
    var start = this.stream.pos;
66030
    var top = CFFTop.decode(this.stream);
66031
    for (var key in top) {
66032
      var val = top[key];
66033
      this[key] = val;
66034
    }
66035
    if (this.version < 2) {
66036
      if (this.topDictIndex.length !== 1) {
66037
        throw new Error("Only a single font is allowed in CFF");
66038
      }
66039
      this.topDict = this.topDictIndex[0];
66040
    }
66041
    this.isCIDFont = this.topDict.ROS != null;
66042
    return this;
66043
  };
66044
  _proto9.string = function string(sid) {
66045
    if (this.version >= 2) {
66046
      return null;
66047
    }
66048
    if (sid < standardStrings.length) {
66049
      return standardStrings[sid];
66050
    }
66051
    return this.stringIndex[sid - standardStrings.length];
66052
  };
66053
  _proto9.getCharString = function getCharString(glyph) {
66054
    this.stream.pos = this.topDict.CharStrings[glyph].offset;
66055
    return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);
66056
  };
66057
  _proto9.getGlyphName = function getGlyphName(gid) {
66058
    // CFF2 glyph names are in the post table.
66059
    if (this.version >= 2) {
66060
      return null;
66061
    } // CID-keyed fonts don't have glyph names
66062
66063
    if (this.isCIDFont) {
66064
      return null;
66065
    }
66066
    var charset = this.topDict.charset;
66067
    if (Array.isArray(charset)) {
66068
      return charset[gid];
66069
    }
66070
    if (gid === 0) {
66071
      return '.notdef';
66072
    }
66073
    gid -= 1;
66074
    switch (charset.version) {
66075
      case 0:
66076
        return this.string(charset.glyphs[gid]);
66077
      case 1:
66078
      case 2:
66079
        for (var i = 0; i < charset.ranges.length; i++) {
66080
          var range = charset.ranges[i];
66081
          if (range.offset <= gid && gid <= range.offset + range.nLeft) {
66082
            return this.string(range.first + (gid - range.offset));
66083
          }
66084
        }
66085
        break;
66086
    }
66087
    return null;
66088
  };
66089
  _proto9.fdForGlyph = function fdForGlyph(gid) {
66090
    if (!this.topDict.FDSelect) {
66091
      return null;
66092
    }
66093
    switch (this.topDict.FDSelect.version) {
66094
      case 0:
66095
        return this.topDict.FDSelect.fds[gid];
66096
      case 3:
66097
      case 4:
66098
        var ranges = this.topDict.FDSelect.ranges;
66099
        var low = 0;
66100
        var high = ranges.length - 1;
66101
        while (low <= high) {
66102
          var mid = low + high >> 1;
66103
          if (gid < ranges[mid].first) {
66104
            high = mid - 1;
66105
          } else if (mid < high && gid >= ranges[mid + 1].first) {
66106
            low = mid + 1;
66107
          } else {
66108
            return ranges[mid].fd;
66109
          }
66110
        }
66111
      default:
66112
        throw new Error("Unknown FDSelect version: ".concat(this.topDict.FDSelect.version));
66113
    }
66114
  };
66115
  _proto9.privateDictForGlyph = function privateDictForGlyph(gid) {
66116
    if (this.topDict.FDSelect) {
66117
      var fd = this.fdForGlyph(gid);
66118
      if (this.topDict.FDArray[fd]) {
66119
        return this.topDict.FDArray[fd].Private;
66120
      }
66121
      return null;
66122
    }
66123
    if (this.version < 2) {
66124
      return this.topDict.Private;
66125
    }
66126
    return this.topDict.FDArray[0].Private;
66127
  };
66128
  _createClass(CFFFont, [{
66129
    key: "postscriptName",
66130
    get: function get() {
66131
      if (this.version < 2) {
66132
        return this.nameIndex[0];
66133
      }
66134
      return null;
66135
    }
66136
  }, {
66137
    key: "fullName",
66138
    get: function get() {
66139
      return this.string(this.topDict.FullName);
66140
    }
66141
  }, {
66142
    key: "familyName",
66143
    get: function get() {
66144
      return this.string(this.topDict.FamilyName);
66145
    }
66146
  }]);
66147
  return CFFFont;
66148
}();
66149
var VerticalOrigin = new r.Struct({
66150
  glyphIndex: r.uint16,
66151
  vertOriginY: r.int16
66152
});
66153
var VORG = new r.Struct({
66154
  majorVersion: r.uint16,
66155
  minorVersion: r.uint16,
66156
  defaultVertOriginY: r.int16,
66157
  numVertOriginYMetrics: r.uint16,
66158
  metrics: new r.Array(VerticalOrigin, 'numVertOriginYMetrics')
66159
});
66160
var BigMetrics = new r.Struct({
66161
  height: r.uint8,
66162
  width: r.uint8,
66163
  horiBearingX: r.int8,
66164
  horiBearingY: r.int8,
66165
  horiAdvance: r.uint8,
66166
  vertBearingX: r.int8,
66167
  vertBearingY: r.int8,
66168
  vertAdvance: r.uint8
66169
});
66170
var SmallMetrics = new r.Struct({
66171
  height: r.uint8,
66172
  width: r.uint8,
66173
  bearingX: r.int8,
66174
  bearingY: r.int8,
66175
  advance: r.uint8
66176
});
66177
var EBDTComponent = new r.Struct({
66178
  glyph: r.uint16,
66179
  xOffset: r.int8,
66180
  yOffset: r.int8
66181
});
66182
var ByteAligned = function ByteAligned() {};
66183
var BitAligned = function BitAligned() {};
66184
var glyph = new r.VersionedStruct('version', {
66185
  1: {
66186
    metrics: SmallMetrics,
66187
    data: ByteAligned
66188
  },
66189
  2: {
66190
    metrics: SmallMetrics,
66191
    data: BitAligned
66192
  },
66193
  // format 3 is deprecated
66194
  // format 4 is not supported by Microsoft
66195
  5: {
66196
    data: BitAligned
66197
  },
66198
  6: {
66199
    metrics: BigMetrics,
66200
    data: ByteAligned
66201
  },
66202
  7: {
66203
    metrics: BigMetrics,
66204
    data: BitAligned
66205
  },
66206
  8: {
66207
    metrics: SmallMetrics,
66208
    pad: new r.Reserved(r.uint8),
66209
    numComponents: r.uint16,
66210
    components: new r.Array(EBDTComponent, 'numComponents')
66211
  },
66212
  9: {
66213
    metrics: BigMetrics,
66214
    pad: new r.Reserved(r.uint8),
66215
    numComponents: r.uint16,
66216
    components: new r.Array(EBDTComponent, 'numComponents')
66217
  },
66218
  17: {
66219
    metrics: SmallMetrics,
66220
    dataLen: r.uint32,
66221
    data: new r.Buffer('dataLen')
66222
  },
66223
  18: {
66224
    metrics: BigMetrics,
66225
    dataLen: r.uint32,
66226
    data: new r.Buffer('dataLen')
66227
  },
66228
  19: {
66229
    dataLen: r.uint32,
66230
    data: new r.Buffer('dataLen')
66231
  }
66232
});
66233
var SBitLineMetrics = new r.Struct({
66234
  ascender: r.int8,
66235
  descender: r.int8,
66236
  widthMax: r.uint8,
66237
  caretSlopeNumerator: r.int8,
66238
  caretSlopeDenominator: r.int8,
66239
  caretOffset: r.int8,
66240
  minOriginSB: r.int8,
66241
  minAdvanceSB: r.int8,
66242
  maxBeforeBL: r.int8,
66243
  minAfterBL: r.int8,
66244
  pad: new r.Reserved(r.int8, 2)
66245
});
66246
var CodeOffsetPair = new r.Struct({
66247
  glyphCode: r.uint16,
66248
  offset: r.uint16
66249
});
66250
var IndexSubtable = new r.VersionedStruct(r.uint16, {
66251
  header: {
66252
    imageFormat: r.uint16,
66253
    imageDataOffset: r.uint32
66254
  },
66255
  1: {
66256
    offsetArray: new r.Array(r.uint32, function (t) {
66257
      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;
66258
    })
66259
  },
66260
  2: {
66261
    imageSize: r.uint32,
66262
    bigMetrics: BigMetrics
66263
  },
66264
  3: {
66265
    offsetArray: new r.Array(r.uint16, function (t) {
66266
      return t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1;
66267
    })
66268
  },
66269
  4: {
66270
    numGlyphs: r.uint32,
66271
    glyphArray: new r.Array(CodeOffsetPair, function (t) {
66272
      return t.numGlyphs + 1;
66273
    })
66274
  },
66275
  5: {
66276
    imageSize: r.uint32,
66277
    bigMetrics: BigMetrics,
66278
    numGlyphs: r.uint32,
66279
    glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')
66280
  }
66281
});
66282
var IndexSubtableArray = new r.Struct({
66283
  firstGlyphIndex: r.uint16,
66284
  lastGlyphIndex: r.uint16,
66285
  subtable: new r.Pointer(r.uint32, IndexSubtable)
66286
});
66287
var BitmapSizeTable = new r.Struct({
66288
  indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), {
66289
    type: 'parent'
66290
  }),
66291
  indexTablesSize: r.uint32,
66292
  numberOfIndexSubTables: r.uint32,
66293
  colorRef: r.uint32,
66294
  hori: SBitLineMetrics,
66295
  vert: SBitLineMetrics,
66296
  startGlyphIndex: r.uint16,
66297
  endGlyphIndex: r.uint16,
66298
  ppemX: r.uint8,
66299
  ppemY: r.uint8,
66300
  bitDepth: r.uint8,
66301
  flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])
66302
});
66303
var EBLC = new r.Struct({
66304
  version: r.uint32,
66305
  // 0x00020000
66306
  numSizes: r.uint32,
66307
  sizes: new r.Array(BitmapSizeTable, 'numSizes')
66308
});
66309
var ImageTable = new r.Struct({
66310
  ppem: r.uint16,
66311
  resolution: r.uint16,
66312
  imageOffsets: new r.Array(new r.Pointer(r.uint32, 'void'), function (t) {
66313
    return t.parent.parent.maxp.numGlyphs + 1;
66314
  })
66315
}); // This is the Apple sbix table, used by the "Apple Color Emoji" font.
66316
// It includes several image tables with images for each bitmap glyph
66317
// of several different sizes.
66318
66319
var sbix = new r.Struct({
66320
  version: r.uint16,
66321
  flags: new r.Bitfield(r.uint16, ['renderOutlines']),
66322
  numImgTables: r.uint32,
66323
  imageTables: new r.Array(new r.Pointer(r.uint32, ImageTable), 'numImgTables')
66324
});
66325
var LayerRecord = new r.Struct({
66326
  gid: r.uint16,
66327
  // Glyph ID of layer glyph (must be in z-order from bottom to top).
66328
  paletteIndex: r.uint16 // Index value to use in the appropriate palette. This value must
66329
}); // be less than numPaletteEntries in the CPAL table, except for
66330
// the special case noted below. Each palette entry is 16 bits.
66331
// A palette index of 0xFFFF is a special case indicating that
66332
// the text foreground color should be used.
66333
66334
var BaseGlyphRecord = new r.Struct({
66335
  gid: r.uint16,
66336
  // Glyph ID of reference glyph. This glyph is for reference only
66337
  // and is not rendered for color.
66338
  firstLayerIndex: r.uint16,
66339
  // Index (from beginning of the Layer Records) to the layer record.
66340
  // There will be numLayers consecutive entries for this base glyph.
66341
  numLayers: r.uint16
66342
});
66343
var COLR = new r.Struct({
66344
  version: r.uint16,
66345
  numBaseGlyphRecords: r.uint16,
66346
  baseGlyphRecord: new r.Pointer(r.uint32, new r.Array(BaseGlyphRecord, 'numBaseGlyphRecords')),
66347
  layerRecords: new r.Pointer(r.uint32, new r.Array(LayerRecord, 'numLayerRecords'), {
66348
    lazy: true
66349
  }),
66350
  numLayerRecords: r.uint16
66351
});
66352
var ColorRecord = new r.Struct({
66353
  blue: r.uint8,
66354
  green: r.uint8,
66355
  red: r.uint8,
66356
  alpha: r.uint8
66357
});
66358
var CPAL = new r.VersionedStruct(r.uint16, {
66359
  header: {
66360
    numPaletteEntries: r.uint16,
66361
    numPalettes: r.uint16,
66362
    numColorRecords: r.uint16,
66363
    colorRecords: new r.Pointer(r.uint32, new r.Array(ColorRecord, 'numColorRecords')),
66364
    colorRecordIndices: new r.Array(r.uint16, 'numPalettes')
66365
  },
66366
  0: {},
66367
  1: {
66368
    offsetPaletteTypeArray: new r.Pointer(r.uint32, new r.Array(r.uint32, 'numPalettes')),
66369
    offsetPaletteLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPalettes')),
66370
    offsetPaletteEntryLabelArray: new r.Pointer(r.uint32, new r.Array(r.uint16, 'numPaletteEntries'))
66371
  }
66372
});
66373
var BaseCoord = new r.VersionedStruct(r.uint16, {
66374
  1: {
66375
    // Design units only
66376
    coordinate: r.int16 // X or Y value, in design units
66377
  },
66378
66379
  2: {
66380
    // Design units plus contour point
66381
    coordinate: r.int16,
66382
    // X or Y value, in design units
66383
    referenceGlyph: r.uint16,
66384
    // GlyphID of control glyph
66385
    baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph
66386
  },
66387
66388
  3: {
66389
    // Design units plus Device table
66390
    coordinate: r.int16,
66391
    // X or Y value, in design units
66392
    deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value
66393
  }
66394
});
66395
66396
var BaseValues = new r.Struct({
66397
  defaultIndex: r.uint16,
66398
  // Index of default baseline for this script-same index in the BaseTagList
66399
  baseCoordCount: r.uint16,
66400
  baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')
66401
});
66402
var FeatMinMaxRecord = new r.Struct({
66403
  tag: new r.String(4),
66404
  // 4-byte feature identification tag-must match FeatureTag in FeatureList
66405
  minCoord: new r.Pointer(r.uint16, BaseCoord, {
66406
    type: 'parent'
66407
  }),
66408
  // May be NULL
66409
  maxCoord: new r.Pointer(r.uint16, BaseCoord, {
66410
    type: 'parent'
66411
  }) // May be NULL
66412
});
66413
66414
var MinMax = new r.Struct({
66415
  minCoord: new r.Pointer(r.uint16, BaseCoord),
66416
  // May be NULL
66417
  maxCoord: new r.Pointer(r.uint16, BaseCoord),
66418
  // May be NULL
66419
  featMinMaxCount: r.uint16,
66420
  // May be 0
66421
  featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order
66422
});
66423
66424
var BaseLangSysRecord = new r.Struct({
66425
  tag: new r.String(4),
66426
  // 4-byte language system identification tag
66427
  minMax: new r.Pointer(r.uint16, MinMax, {
66428
    type: 'parent'
66429
  })
66430
});
66431
var BaseScript = new r.Struct({
66432
  baseValues: new r.Pointer(r.uint16, BaseValues),
66433
  // May be NULL
66434
  defaultMinMax: new r.Pointer(r.uint16, MinMax),
66435
  // May be NULL
66436
  baseLangSysCount: r.uint16,
66437
  // May be 0
66438
  baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag
66439
});
66440
66441
var BaseScriptRecord = new r.Struct({
66442
  tag: new r.String(4),
66443
  // 4-byte script identification tag
66444
  script: new r.Pointer(r.uint16, BaseScript, {
66445
    type: 'parent'
66446
  })
66447
});
66448
var BaseScriptList = new r.Array(BaseScriptRecord, r.uint16); // Array of 4-byte baseline identification tags-must be in alphabetical order
66449
66450
var BaseTagList = new r.Array(new r.String(4), r.uint16);
66451
var Axis = new r.Struct({
66452
  baseTagList: new r.Pointer(r.uint16, BaseTagList),
66453
  // May be NULL
66454
  baseScriptList: new r.Pointer(r.uint16, BaseScriptList)
66455
});
66456
var BASE = new r.VersionedStruct(r.uint32, {
66457
  header: {
66458
    horizAxis: new r.Pointer(r.uint16, Axis),
66459
    // May be NULL
66460
    vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL
66461
  },
66462
66463
  0x00010000: {},
66464
  0x00010001: {
66465
    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
66466
  }
66467
});
66468
var AttachPoint = new r.Array(r.uint16, r.uint16);
66469
var AttachList = new r.Struct({
66470
  coverage: new r.Pointer(r.uint16, Coverage),
66471
  glyphCount: r.uint16,
66472
  attachPoints: new r.Array(new r.Pointer(r.uint16, AttachPoint), 'glyphCount')
66473
});
66474
var CaretValue = new r.VersionedStruct(r.uint16, {
66475
  1: {
66476
    // Design units only
66477
    coordinate: r.int16
66478
  },
66479
  2: {
66480
    // Contour point
66481
    caretValuePoint: r.uint16
66482
  },
66483
  3: {
66484
    // Design units plus Device table
66485
    coordinate: r.int16,
66486
    deviceTable: new r.Pointer(r.uint16, Device)
66487
  }
66488
});
66489
var LigGlyph = new r.Array(new r.Pointer(r.uint16, CaretValue), r.uint16);
66490
var LigCaretList = new r.Struct({
66491
  coverage: new r.Pointer(r.uint16, Coverage),
66492
  ligGlyphCount: r.uint16,
66493
  ligGlyphs: new r.Array(new r.Pointer(r.uint16, LigGlyph), 'ligGlyphCount')
66494
});
66495
var MarkGlyphSetsDef = new r.Struct({
66496
  markSetTableFormat: r.uint16,
66497
  markSetCount: r.uint16,
66498
  coverage: new r.Array(new r.Pointer(r.uint32, Coverage), 'markSetCount')
66499
});
66500
var GDEF = new r.VersionedStruct(r.uint32, {
66501
  header: {
66502
    glyphClassDef: new r.Pointer(r.uint16, ClassDef),
66503
    attachList: new r.Pointer(r.uint16, AttachList),
66504
    ligCaretList: new r.Pointer(r.uint16, LigCaretList),
66505
    markAttachClassDef: new r.Pointer(r.uint16, ClassDef)
66506
  },
66507
  0x00010000: {},
66508
  0x00010002: {
66509
    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef)
66510
  },
66511
  0x00010003: {
66512
    markGlyphSetsDef: new r.Pointer(r.uint16, MarkGlyphSetsDef),
66513
    itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
66514
  }
66515
});
66516
var ValueFormat = new r.Bitfield(r.uint16, ['xPlacement', 'yPlacement', 'xAdvance', 'yAdvance', 'xPlaDevice', 'yPlaDevice', 'xAdvDevice', 'yAdvDevice']);
66517
var types = {
66518
  xPlacement: r.int16,
66519
  yPlacement: r.int16,
66520
  xAdvance: r.int16,
66521
  yAdvance: r.int16,
66522
  xPlaDevice: new r.Pointer(r.uint16, Device, {
66523
    type: 'global',
66524
    relativeTo: function relativeTo(ctx) {
66525
      return ctx.rel;
66526
    }
66527
  }),
66528
  yPlaDevice: new r.Pointer(r.uint16, Device, {
66529
    type: 'global',
66530
    relativeTo: function relativeTo(ctx) {
66531
      return ctx.rel;
66532
    }
66533
  }),
66534
  xAdvDevice: new r.Pointer(r.uint16, Device, {
66535
    type: 'global',
66536
    relativeTo: function relativeTo(ctx) {
66537
      return ctx.rel;
66538
    }
66539
  }),
66540
  yAdvDevice: new r.Pointer(r.uint16, Device, {
66541
    type: 'global',
66542
    relativeTo: function relativeTo(ctx) {
66543
      return ctx.rel;
66544
    }
66545
  })
66546
};
66547
var ValueRecord = /*#__PURE__*/function () {
66548
  function ValueRecord(key) {
66549
    if (key === void 0) {
66550
      key = 'valueFormat';
66551
    }
66552
    this.key = key;
66553
  }
66554
  var _proto10 = ValueRecord.prototype;
66555
  _proto10.buildStruct = function buildStruct(parent) {
66556
    var struct = parent;
66557
    while (!struct[this.key] && struct.parent) {
66558
      struct = struct.parent;
66559
    }
66560
    if (!struct[this.key]) return;
66561
    var fields = {};
66562
    fields.rel = function () {
66563
      return struct._startOffset;
66564
    };
66565
    var format = struct[this.key];
66566
    for (var key in format) {
66567
      if (format[key]) {
66568
        fields[key] = types[key];
66569
      }
66570
    }
66571
    return new r.Struct(fields);
66572
  };
66573
  _proto10.size = function size(val, ctx) {
66574
    return this.buildStruct(ctx).size(val, ctx);
66575
  };
66576
  _proto10.decode = function decode(stream, parent) {
66577
    var res = this.buildStruct(parent).decode(stream, parent);
66578
    delete res.rel;
66579
    return res;
66580
  };
66581
  return ValueRecord;
66582
}();
66583
var PairValueRecord = new r.Struct({
66584
  secondGlyph: r.uint16,
66585
  value1: new ValueRecord('valueFormat1'),
66586
  value2: new ValueRecord('valueFormat2')
66587
});
66588
var PairSet = new r.Array(PairValueRecord, r.uint16);
66589
var Class2Record = new r.Struct({
66590
  value1: new ValueRecord('valueFormat1'),
66591
  value2: new ValueRecord('valueFormat2')
66592
});
66593
var Anchor = new r.VersionedStruct(r.uint16, {
66594
  1: {
66595
    // Design units only
66596
    xCoordinate: r.int16,
66597
    yCoordinate: r.int16
66598
  },
66599
  2: {
66600
    // Design units plus contour point
66601
    xCoordinate: r.int16,
66602
    yCoordinate: r.int16,
66603
    anchorPoint: r.uint16
66604
  },
66605
  3: {
66606
    // Design units plus Device tables
66607
    xCoordinate: r.int16,
66608
    yCoordinate: r.int16,
66609
    xDeviceTable: new r.Pointer(r.uint16, Device),
66610
    yDeviceTable: new r.Pointer(r.uint16, Device)
66611
  }
66612
});
66613
var EntryExitRecord = new r.Struct({
66614
  entryAnchor: new r.Pointer(r.uint16, Anchor, {
66615
    type: 'parent'
66616
  }),
66617
  exitAnchor: new r.Pointer(r.uint16, Anchor, {
66618
    type: 'parent'
66619
  })
66620
});
66621
var MarkRecord = new r.Struct({
66622
  class: r.uint16,
66623
  markAnchor: new r.Pointer(r.uint16, Anchor, {
66624
    type: 'parent'
66625
  })
66626
});
66627
var MarkArray = new r.Array(MarkRecord, r.uint16);
66628
var BaseRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {
66629
  return t.parent.classCount;
66630
});
66631
var BaseArray = new r.Array(BaseRecord, r.uint16);
66632
var ComponentRecord = new r.Array(new r.Pointer(r.uint16, Anchor), function (t) {
66633
  return t.parent.parent.classCount;
66634
});
66635
var LigatureAttach = new r.Array(ComponentRecord, r.uint16);
66636
var LigatureArray = new r.Array(new r.Pointer(r.uint16, LigatureAttach), r.uint16);
66637
var GPOSLookup = new r.VersionedStruct('lookupType', {
66638
  1: new r.VersionedStruct(r.uint16, {
66639
    // Single Adjustment
66640
    1: {
66641
      // Single positioning value
66642
      coverage: new r.Pointer(r.uint16, Coverage),
66643
      valueFormat: ValueFormat,
66644
      value: new ValueRecord()
66645
    },
66646
    2: {
66647
      coverage: new r.Pointer(r.uint16, Coverage),
66648
      valueFormat: ValueFormat,
66649
      valueCount: r.uint16,
66650
      values: new r.LazyArray(new ValueRecord(), 'valueCount')
66651
    }
66652
  }),
66653
  2: new r.VersionedStruct(r.uint16, {
66654
    // Pair Adjustment Positioning
66655
    1: {
66656
      // Adjustments for glyph pairs
66657
      coverage: new r.Pointer(r.uint16, Coverage),
66658
      valueFormat1: ValueFormat,
66659
      valueFormat2: ValueFormat,
66660
      pairSetCount: r.uint16,
66661
      pairSets: new r.LazyArray(new r.Pointer(r.uint16, PairSet), 'pairSetCount')
66662
    },
66663
    2: {
66664
      // Class pair adjustment
66665
      coverage: new r.Pointer(r.uint16, Coverage),
66666
      valueFormat1: ValueFormat,
66667
      valueFormat2: ValueFormat,
66668
      classDef1: new r.Pointer(r.uint16, ClassDef),
66669
      classDef2: new r.Pointer(r.uint16, ClassDef),
66670
      class1Count: r.uint16,
66671
      class2Count: r.uint16,
66672
      classRecords: new r.LazyArray(new r.LazyArray(Class2Record, 'class2Count'), 'class1Count')
66673
    }
66674
  }),
66675
  3: {
66676
    // Cursive Attachment Positioning
66677
    format: r.uint16,
66678
    coverage: new r.Pointer(r.uint16, Coverage),
66679
    entryExitCount: r.uint16,
66680
    entryExitRecords: new r.Array(EntryExitRecord, 'entryExitCount')
66681
  },
66682
  4: {
66683
    // MarkToBase Attachment Positioning
66684
    format: r.uint16,
66685
    markCoverage: new r.Pointer(r.uint16, Coverage),
66686
    baseCoverage: new r.Pointer(r.uint16, Coverage),
66687
    classCount: r.uint16,
66688
    markArray: new r.Pointer(r.uint16, MarkArray),
66689
    baseArray: new r.Pointer(r.uint16, BaseArray)
66690
  },
66691
  5: {
66692
    // MarkToLigature Attachment Positioning
66693
    format: r.uint16,
66694
    markCoverage: new r.Pointer(r.uint16, Coverage),
66695
    ligatureCoverage: new r.Pointer(r.uint16, Coverage),
66696
    classCount: r.uint16,
66697
    markArray: new r.Pointer(r.uint16, MarkArray),
66698
    ligatureArray: new r.Pointer(r.uint16, LigatureArray)
66699
  },
66700
  6: {
66701
    // MarkToMark Attachment Positioning
66702
    format: r.uint16,
66703
    mark1Coverage: new r.Pointer(r.uint16, Coverage),
66704
    mark2Coverage: new r.Pointer(r.uint16, Coverage),
66705
    classCount: r.uint16,
66706
    mark1Array: new r.Pointer(r.uint16, MarkArray),
66707
    mark2Array: new r.Pointer(r.uint16, BaseArray)
66708
  },
66709
  7: Context,
66710
  // Contextual positioning
66711
  8: ChainingContext,
66712
  // Chaining contextual positioning
66713
  9: {
66714
    // Extension Positioning
66715
    posFormat: r.uint16,
66716
    lookupType: r.uint16,
66717
    // cannot also be 9
66718
    extension: new r.Pointer(r.uint32, GPOSLookup)
66719
  }
66720
}); // Fix circular reference
66721
66722
GPOSLookup.versions[9].extension.type = GPOSLookup;
66723
var GPOS = new r.VersionedStruct(r.uint32, {
66724
  header: {
66725
    scriptList: new r.Pointer(r.uint16, ScriptList),
66726
    featureList: new r.Pointer(r.uint16, FeatureList),
66727
    lookupList: new r.Pointer(r.uint16, new LookupList(GPOSLookup))
66728
  },
66729
  0x00010000: {},
66730
  0x00010001: {
66731
    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
66732
  }
66733
}); // export GPOSLookup for JSTF table
66734
66735
var Sequence = new r.Array(r.uint16, r.uint16);
66736
var AlternateSet = Sequence;
66737
var Ligature = new r.Struct({
66738
  glyph: r.uint16,
66739
  compCount: r.uint16,
66740
  components: new r.Array(r.uint16, function (t) {
66741
    return t.compCount - 1;
66742
  })
66743
});
66744
var LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16);
66745
var GSUBLookup = new r.VersionedStruct('lookupType', {
66746
  1: new r.VersionedStruct(r.uint16, {
66747
    // Single Substitution
66748
    1: {
66749
      coverage: new r.Pointer(r.uint16, Coverage),
66750
      deltaGlyphID: r.int16
66751
    },
66752
    2: {
66753
      coverage: new r.Pointer(r.uint16, Coverage),
66754
      glyphCount: r.uint16,
66755
      substitute: new r.LazyArray(r.uint16, 'glyphCount')
66756
    }
66757
  }),
66758
  2: {
66759
    // Multiple Substitution
66760
    substFormat: r.uint16,
66761
    coverage: new r.Pointer(r.uint16, Coverage),
66762
    count: r.uint16,
66763
    sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count')
66764
  },
66765
  3: {
66766
    // Alternate Substitution
66767
    substFormat: r.uint16,
66768
    coverage: new r.Pointer(r.uint16, Coverage),
66769
    count: r.uint16,
66770
    alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count')
66771
  },
66772
  4: {
66773
    // Ligature Substitution
66774
    substFormat: r.uint16,
66775
    coverage: new r.Pointer(r.uint16, Coverage),
66776
    count: r.uint16,
66777
    ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count')
66778
  },
66779
  5: Context,
66780
  // Contextual Substitution
66781
  6: ChainingContext,
66782
  // Chaining Contextual Substitution
66783
  7: {
66784
    // Extension Substitution
66785
    substFormat: r.uint16,
66786
    lookupType: r.uint16,
66787
    // cannot also be 7
66788
    extension: new r.Pointer(r.uint32, GSUBLookup)
66789
  },
66790
  8: {
66791
    // Reverse Chaining Contextual Single Substitution
66792
    substFormat: r.uint16,
66793
    coverage: new r.Pointer(r.uint16, Coverage),
66794
    backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'),
66795
    lookaheadGlyphCount: r.uint16,
66796
    lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'),
66797
    glyphCount: r.uint16,
66798
    substitutes: new r.Array(r.uint16, 'glyphCount')
66799
  }
66800
}); // Fix circular reference
66801
66802
GSUBLookup.versions[7].extension.type = GSUBLookup;
66803
var GSUB = new r.VersionedStruct(r.uint32, {
66804
  header: {
66805
    scriptList: new r.Pointer(r.uint16, ScriptList),
66806
    featureList: new r.Pointer(r.uint16, FeatureList),
66807
    lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup))
66808
  },
66809
  0x00010000: {},
66810
  0x00010001: {
66811
    featureVariations: new r.Pointer(r.uint32, FeatureVariations)
66812
  }
66813
});
66814
var JstfGSUBModList = new r.Array(r.uint16, r.uint16);
66815
var JstfPriority = new r.Struct({
66816
  shrinkageEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
66817
  shrinkageDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
66818
  shrinkageEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
66819
  shrinkageDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
66820
  shrinkageJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup)),
66821
  extensionEnableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
66822
  extensionDisableGSUB: new r.Pointer(r.uint16, JstfGSUBModList),
66823
  extensionEnableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
66824
  extensionDisableGPOS: new r.Pointer(r.uint16, JstfGSUBModList),
66825
  extensionJstfMax: new r.Pointer(r.uint16, new LookupList(GPOSLookup))
66826
});
66827
var JstfLangSys = new r.Array(new r.Pointer(r.uint16, JstfPriority), r.uint16);
66828
var JstfLangSysRecord = new r.Struct({
66829
  tag: new r.String(4),
66830
  jstfLangSys: new r.Pointer(r.uint16, JstfLangSys)
66831
});
66832
var JstfScript = new r.Struct({
66833
  extenderGlyphs: new r.Pointer(r.uint16, new r.Array(r.uint16, r.uint16)),
66834
  // array of glyphs to extend line length
66835
  defaultLangSys: new r.Pointer(r.uint16, JstfLangSys),
66836
  langSysCount: r.uint16,
66837
  langSysRecords: new r.Array(JstfLangSysRecord, 'langSysCount')
66838
});
66839
var JstfScriptRecord = new r.Struct({
66840
  tag: new r.String(4),
66841
  script: new r.Pointer(r.uint16, JstfScript, {
66842
    type: 'parent'
66843
  })
66844
});
66845
var JSTF = new r.Struct({
66846
  version: r.uint32,
66847
  // should be 0x00010000
66848
  scriptCount: r.uint16,
66849
  scriptList: new r.Array(JstfScriptRecord, 'scriptCount')
66850
});
66851
var VariableSizeNumber = /*#__PURE__*/function () {
66852
  function VariableSizeNumber(size) {
66853
    this._size = size;
66854
  }
66855
  var _proto11 = VariableSizeNumber.prototype;
66856
  _proto11.decode = function decode(stream, parent) {
66857
    switch (this.size(0, parent)) {
66858
      case 1:
66859
        return stream.readUInt8();
66860
      case 2:
66861
        return stream.readUInt16BE();
66862
      case 3:
66863
        return stream.readUInt24BE();
66864
      case 4:
66865
        return stream.readUInt32BE();
66866
    }
66867
  };
66868
  _proto11.size = function size(val, parent) {
66869
    return utils.resolveLength(this._size, null, parent);
66870
  };
66871
  return VariableSizeNumber;
66872
}();
66873
var MapDataEntry = new r.Struct({
66874
  entry: new VariableSizeNumber(function (t) {
66875
    return ((t.parent.entryFormat & 0x0030) >> 4) + 1;
66876
  }),
66877
  outerIndex: function outerIndex(t) {
66878
    return t.entry >> (t.parent.entryFormat & 0x000F) + 1;
66879
  },
66880
  innerIndex: function innerIndex(t) {
66881
    return t.entry & (1 << (t.parent.entryFormat & 0x000F) + 1) - 1;
66882
  }
66883
});
66884
var DeltaSetIndexMap = new r.Struct({
66885
  entryFormat: r.uint16,
66886
  mapCount: r.uint16,
66887
  mapData: new r.Array(MapDataEntry, 'mapCount')
66888
});
66889
var HVAR = new r.Struct({
66890
  majorVersion: r.uint16,
66891
  minorVersion: r.uint16,
66892
  itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),
66893
  advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
66894
  LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
66895
  RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)
66896
});
66897
var Signature = new r.Struct({
66898
  format: r.uint32,
66899
  length: r.uint32,
66900
  offset: r.uint32
66901
});
66902
var SignatureBlock = new r.Struct({
66903
  reserved: new r.Reserved(r.uint16, 2),
66904
  cbSignature: r.uint32,
66905
  // Length (in bytes) of the PKCS#7 packet in pbSignature
66906
  signature: new r.Buffer('cbSignature')
66907
});
66908
var DSIG = new r.Struct({
66909
  ulVersion: r.uint32,
66910
  // Version number of the DSIG table (0x00000001)
66911
  usNumSigs: r.uint16,
66912
  // Number of signatures in the table
66913
  usFlag: r.uint16,
66914
  // Permission flags
66915
  signatures: new r.Array(Signature, 'usNumSigs'),
66916
  signatureBlocks: new r.Array(SignatureBlock, 'usNumSigs')
66917
});
66918
var GaspRange = new r.Struct({
66919
  rangeMaxPPEM: r.uint16,
66920
  // Upper limit of range, in ppem
66921
  rangeGaspBehavior: new r.Bitfield(r.uint16, [
66922
  // Flags describing desired rasterizer behavior
66923
  'grayscale', 'gridfit', 'symmetricSmoothing', 'symmetricGridfit' // only in version 1, for ClearType
66924
  ])
66925
});
66926
66927
var gasp = new r.Struct({
66928
  version: r.uint16,
66929
  // set to 0
66930
  numRanges: r.uint16,
66931
  gaspRanges: new r.Array(GaspRange, 'numRanges') // Sorted by ppem
66932
});
66933
66934
var DeviceRecord = new r.Struct({
66935
  pixelSize: r.uint8,
66936
  maximumWidth: r.uint8,
66937
  widths: new r.Array(r.uint8, function (t) {
66938
    return t.parent.parent.maxp.numGlyphs;
66939
  })
66940
}); // The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes
66941
66942
var hdmx = new r.Struct({
66943
  version: r.uint16,
66944
  numRecords: r.int16,
66945
  sizeDeviceRecord: r.int32,
66946
  records: new r.Array(DeviceRecord, 'numRecords')
66947
});
66948
var KernPair = new r.Struct({
66949
  left: r.uint16,
66950
  right: r.uint16,
66951
  value: r.int16
66952
});
66953
var ClassTable = new r.Struct({
66954
  firstGlyph: r.uint16,
66955
  nGlyphs: r.uint16,
66956
  offsets: new r.Array(r.uint16, 'nGlyphs'),
66957
  max: function max(t) {
66958
    return t.offsets.length && Math.max.apply(Math, t.offsets);
66959
  }
66960
});
66961
var Kern2Array = new r.Struct({
66962
  off: function off(t) {
66963
    return t._startOffset - t.parent.parent._startOffset;
66964
  },
66965
  len: function len(t) {
66966
    return ((t.parent.leftTable.max - t.off) / t.parent.rowWidth + 1) * (t.parent.rowWidth / 2);
66967
  },
66968
  values: new r.LazyArray(r.int16, 'len')
66969
});
66970
var KernSubtable = new r.VersionedStruct('format', {
66971
  0: {
66972
    nPairs: r.uint16,
66973
    searchRange: r.uint16,
66974
    entrySelector: r.uint16,
66975
    rangeShift: r.uint16,
66976
    pairs: new r.Array(KernPair, 'nPairs')
66977
  },
66978
  2: {
66979
    rowWidth: r.uint16,
66980
    leftTable: new r.Pointer(r.uint16, ClassTable, {
66981
      type: 'parent'
66982
    }),
66983
    rightTable: new r.Pointer(r.uint16, ClassTable, {
66984
      type: 'parent'
66985
    }),
66986
    array: new r.Pointer(r.uint16, Kern2Array, {
66987
      type: 'parent'
66988
    })
66989
  },
66990
  3: {
66991
    glyphCount: r.uint16,
66992
    kernValueCount: r.uint8,
66993
    leftClassCount: r.uint8,
66994
    rightClassCount: r.uint8,
66995
    flags: r.uint8,
66996
    kernValue: new r.Array(r.int16, 'kernValueCount'),
66997
    leftClass: new r.Array(r.uint8, 'glyphCount'),
66998
    rightClass: new r.Array(r.uint8, 'glyphCount'),
66999
    kernIndex: new r.Array(r.uint8, function (t) {
67000
      return t.leftClassCount * t.rightClassCount;
67001
    })
67002
  }
67003
});
67004
var KernTable = new r.VersionedStruct('version', {
67005
  0: {
67006
    // Microsoft uses this format
67007
    subVersion: r.uint16,
67008
    // Microsoft has an extra sub-table version number
67009
    length: r.uint16,
67010
    // Length of the subtable, in bytes
67011
    format: r.uint8,
67012
    // Format of subtable
67013
    coverage: new r.Bitfield(r.uint8, ['horizontal',
67014
    // 1 if table has horizontal data, 0 if vertical
67015
    'minimum',
67016
    // If set to 1, the table has minimum values. If set to 0, the table has kerning values.
67017
    'crossStream',
67018
    // If set to 1, kerning is perpendicular to the flow of the text
67019
    'override' // If set to 1 the value in this table replaces the accumulated value
67020
    ]),
67021
67022
    subtable: KernSubtable,
67023
    padding: new r.Reserved(r.uint8, function (t) {
67024
      return t.length - t._currentOffset;
67025
    })
67026
  },
67027
  1: {
67028
    // Apple uses this format
67029
    length: r.uint32,
67030
    coverage: new r.Bitfield(r.uint8, [null, null, null, null, null, 'variation',
67031
    // Set if table has variation kerning values
67032
    'crossStream',
67033
    // Set if table has cross-stream kerning values
67034
    'vertical' // Set if table has vertical kerning values
67035
    ]),
67036
67037
    format: r.uint8,
67038
    tupleIndex: r.uint16,
67039
    subtable: KernSubtable,
67040
    padding: new r.Reserved(r.uint8, function (t) {
67041
      return t.length - t._currentOffset;
67042
    })
67043
  }
67044
});
67045
var kern = new r.VersionedStruct(r.uint16, {
67046
  0: {
67047
    // Microsoft Version
67048
    nTables: r.uint16,
67049
    tables: new r.Array(KernTable, 'nTables')
67050
  },
67051
  1: {
67052
    // Apple Version
67053
    reserved: new r.Reserved(r.uint16),
67054
    // the other half of the version number
67055
    nTables: r.uint32,
67056
    tables: new r.Array(KernTable, 'nTables')
67057
  }
67058
});
67059
67060
// Records the ppem for each glyph at which the scaling becomes linear again,
67061
// despite instructions effecting the advance width
67062
67063
var LTSH = new r.Struct({
67064
  version: r.uint16,
67065
  numGlyphs: r.uint16,
67066
  yPels: new r.Array(r.uint8, 'numGlyphs')
67067
});
67068
67069
// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines
67070
67071
var PCLT = new r.Struct({
67072
  version: r.uint16,
67073
  fontNumber: r.uint32,
67074
  pitch: r.uint16,
67075
  xHeight: r.uint16,
67076
  style: r.uint16,
67077
  typeFamily: r.uint16,
67078
  capHeight: r.uint16,
67079
  symbolSet: r.uint16,
67080
  typeface: new r.String(16),
67081
  characterComplement: new r.String(8),
67082
  fileName: new r.String(6),
67083
  strokeWeight: new r.String(1),
67084
  widthType: new r.String(1),
67085
  serifStyle: r.uint8,
67086
  reserved: new r.Reserved(r.uint8)
67087
});
67088
67089
// sizes. This is needed in order to match font metrics on Windows.
67090
67091
var Ratio = new r.Struct({
67092
  bCharSet: r.uint8,
67093
  // Character set
67094
  xRatio: r.uint8,
67095
  // Value to use for x-Ratio
67096
  yStartRatio: r.uint8,
67097
  // Starting y-Ratio value
67098
  yEndRatio: r.uint8 // Ending y-Ratio value
67099
});
67100
67101
var vTable = new r.Struct({
67102
  yPelHeight: r.uint16,
67103
  // yPelHeight to which values apply
67104
  yMax: r.int16,
67105
  // Maximum value (in pels) for this yPelHeight
67106
  yMin: r.int16 // Minimum value (in pels) for this yPelHeight
67107
});
67108
67109
var VdmxGroup = new r.Struct({
67110
  recs: r.uint16,
67111
  // Number of height records in this group
67112
  startsz: r.uint8,
67113
  // Starting yPelHeight
67114
  endsz: r.uint8,
67115
  // Ending yPelHeight
67116
  entries: new r.Array(vTable, 'recs') // The VDMX records
67117
});
67118
67119
var VDMX = new r.Struct({
67120
  version: r.uint16,
67121
  // Version number (0 or 1)
67122
  numRecs: r.uint16,
67123
  // Number of VDMX groups present
67124
  numRatios: r.uint16,
67125
  // Number of aspect ratio groupings
67126
  ratioRanges: new r.Array(Ratio, 'numRatios'),
67127
  // Ratio ranges
67128
  offsets: new r.Array(r.uint16, 'numRatios'),
67129
  // Offset to the VDMX group for this ratio range
67130
  groups: new r.Array(VdmxGroup, 'numRecs') // The actual VDMX groupings
67131
});
67132
67133
var vhea = new r.Struct({
67134
  version: r.uint16,
67135
  // Version number of the Vertical Header Table
67136
  ascent: r.int16,
67137
  // The vertical typographic ascender for this font
67138
  descent: r.int16,
67139
  // The vertical typographic descender for this font
67140
  lineGap: r.int16,
67141
  // The vertical typographic line gap for this font
67142
  advanceHeightMax: r.int16,
67143
  // The maximum advance height measurement found in the font
67144
  minTopSideBearing: r.int16,
67145
  // The minimum top side bearing measurement found in the font
67146
  minBottomSideBearing: r.int16,
67147
  // The minimum bottom side bearing measurement found in the font
67148
  yMaxExtent: r.int16,
67149
  caretSlopeRise: r.int16,
67150
  // Caret slope (rise/run)
67151
  caretSlopeRun: r.int16,
67152
  caretOffset: r.int16,
67153
  // Set value equal to 0 for nonslanted fonts
67154
  reserved: new r.Reserved(r.int16, 4),
67155
  metricDataFormat: r.int16,
67156
  // Set to 0
67157
  numberOfMetrics: r.uint16 // Number of advance heights in the Vertical Metrics table
67158
});
67159
67160
var VmtxEntry = new r.Struct({
67161
  advance: r.uint16,
67162
  // The advance height of the glyph
67163
  bearing: r.int16 // The top sidebearing of the glyph
67164
}); // Vertical Metrics Table
67165
67166
var vmtx = new r.Struct({
67167
  metrics: new r.LazyArray(VmtxEntry, function (t) {
67168
    return t.parent.vhea.numberOfMetrics;
67169
  }),
67170
  bearings: new r.LazyArray(r.int16, function (t) {
67171
    return t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics;
67172
  })
67173
});
67174
var shortFrac = new r.Fixed(16, 'BE', 14);
67175
var Correspondence = new r.Struct({
67176
  fromCoord: shortFrac,
67177
  toCoord: shortFrac
67178
});
67179
var Segment = new r.Struct({
67180
  pairCount: r.uint16,
67181
  correspondence: new r.Array(Correspondence, 'pairCount')
67182
});
67183
var avar = new r.Struct({
67184
  version: r.fixed32,
67185
  axisCount: r.uint32,
67186
  segment: new r.Array(Segment, 'axisCount')
67187
});
67188
var UnboundedArrayAccessor = /*#__PURE__*/function () {
67189
  function UnboundedArrayAccessor(type, stream, parent) {
67190
    this.type = type;
67191
    this.stream = stream;
67192
    this.parent = parent;
67193
    this.base = this.stream.pos;
67194
    this._items = [];
67195
  }
67196
  var _proto12 = UnboundedArrayAccessor.prototype;
67197
  _proto12.getItem = function getItem(index) {
67198
    if (this._items[index] == null) {
67199
      var pos = this.stream.pos;
67200
      this.stream.pos = this.base + this.type.size(null, this.parent) * index;
67201
      this._items[index] = this.type.decode(this.stream, this.parent);
67202
      this.stream.pos = pos;
67203
    }
67204
    return this._items[index];
67205
  };
67206
  _proto12.inspect = function inspect() {
67207
    return "[UnboundedArray ".concat(this.type.constructor.name, "]");
67208
  };
67209
  return UnboundedArrayAccessor;
67210
}();
67211
var UnboundedArray = /*#__PURE__*/function (_r$Array2) {
67212
  _inheritsLoose(UnboundedArray, _r$Array2);
67213
  function UnboundedArray(type) {
67214
    return _r$Array2.call(this, type, 0) || this;
67215
  }
67216
  var _proto13 = UnboundedArray.prototype;
67217
  _proto13.decode = function decode(stream, parent) {
67218
    return new UnboundedArrayAccessor(this.type, stream, parent);
67219
  };
67220
  return UnboundedArray;
67221
}(r.Array);
67222
var LookupTable = function LookupTable(ValueType) {
67223
  if (ValueType === void 0) {
67224
    ValueType = r.uint16;
67225
  }
67226
  // Helper class that makes internal structures invisible to pointers
67227
  var Shadow = /*#__PURE__*/function () {
67228
    function Shadow(type) {
67229
      this.type = type;
67230
    }
67231
    var _proto14 = Shadow.prototype;
67232
    _proto14.decode = function decode(stream, ctx) {
67233
      ctx = ctx.parent.parent;
67234
      return this.type.decode(stream, ctx);
67235
    };
67236
    _proto14.size = function size(val, ctx) {
67237
      ctx = ctx.parent.parent;
67238
      return this.type.size(val, ctx);
67239
    };
67240
    _proto14.encode = function encode(stream, val, ctx) {
67241
      ctx = ctx.parent.parent;
67242
      return this.type.encode(stream, val, ctx);
67243
    };
67244
    return Shadow;
67245
  }();
67246
  ValueType = new Shadow(ValueType);
67247
  var BinarySearchHeader = new r.Struct({
67248
    unitSize: r.uint16,
67249
    nUnits: r.uint16,
67250
    searchRange: r.uint16,
67251
    entrySelector: r.uint16,
67252
    rangeShift: r.uint16
67253
  });
67254
  var LookupSegmentSingle = new r.Struct({
67255
    lastGlyph: r.uint16,
67256
    firstGlyph: r.uint16,
67257
    value: ValueType
67258
  });
67259
  var LookupSegmentArray = new r.Struct({
67260
    lastGlyph: r.uint16,
67261
    firstGlyph: r.uint16,
67262
    values: new r.Pointer(r.uint16, new r.Array(ValueType, function (t) {
67263
      return t.lastGlyph - t.firstGlyph + 1;
67264
    }), {
67265
      type: 'parent'
67266
    })
67267
  });
67268
  var LookupSingle = new r.Struct({
67269
    glyph: r.uint16,
67270
    value: ValueType
67271
  });
67272
  return new r.VersionedStruct(r.uint16, {
67273
    0: {
67274
      values: new UnboundedArray(ValueType) // length == number of glyphs maybe?
67275
    },
67276
67277
    2: {
67278
      binarySearchHeader: BinarySearchHeader,
67279
      segments: new r.Array(LookupSegmentSingle, function (t) {
67280
        return t.binarySearchHeader.nUnits;
67281
      })
67282
    },
67283
    4: {
67284
      binarySearchHeader: BinarySearchHeader,
67285
      segments: new r.Array(LookupSegmentArray, function (t) {
67286
        return t.binarySearchHeader.nUnits;
67287
      })
67288
    },
67289
    6: {
67290
      binarySearchHeader: BinarySearchHeader,
67291
      segments: new r.Array(LookupSingle, function (t) {
67292
        return t.binarySearchHeader.nUnits;
67293
      })
67294
    },
67295
    8: {
67296
      firstGlyph: r.uint16,
67297
      count: r.uint16,
67298
      values: new r.Array(ValueType, 'count')
67299
    }
67300
  });
67301
};
67302
function StateTable(entryData, lookupType) {
67303
  if (entryData === void 0) {
67304
    entryData = {};
67305
  }
67306
  if (lookupType === void 0) {
67307
    lookupType = r.uint16;
67308
  }
67309
  var entry = Object.assign({
67310
    newState: r.uint16,
67311
    flags: r.uint16
67312
  }, entryData);
67313
  var Entry = new r.Struct(entry);
67314
  var StateArray = new UnboundedArray(new r.Array(r.uint16, function (t) {
67315
    return t.nClasses;
67316
  }));
67317
  var StateHeader = new r.Struct({
67318
    nClasses: r.uint32,
67319
    classTable: new r.Pointer(r.uint32, new LookupTable(lookupType)),
67320
    stateArray: new r.Pointer(r.uint32, StateArray),
67321
    entryTable: new r.Pointer(r.uint32, new UnboundedArray(Entry))
67322
  });
67323
  return StateHeader;
67324
} // This is the old version of the StateTable structure
67325
67326
function StateTable1(entryData, lookupType) {
67327
  if (entryData === void 0) {
67328
    entryData = {};
67329
  }
67330
  if (lookupType === void 0) {
67331
    lookupType = r.uint16;
67332
  }
67333
  var ClassLookupTable = new r.Struct({
67334
    version: function version() {
67335
      return 8;
67336
    },
67337
    // simulate LookupTable
67338
    firstGlyph: r.uint16,
67339
    values: new r.Array(r.uint8, r.uint16)
67340
  });
67341
  var entry = Object.assign({
67342
    newStateOffset: r.uint16,
67343
    // convert offset to stateArray index
67344
    newState: function newState(t) {
67345
      return (t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses;
67346
    },
67347
    flags: r.uint16
67348
  }, entryData);
67349
  var Entry = new r.Struct(entry);
67350
  var StateArray = new UnboundedArray(new r.Array(r.uint8, function (t) {
67351
    return t.nClasses;
67352
  }));
67353
  var StateHeader1 = new r.Struct({
67354
    nClasses: r.uint16,
67355
    classTable: new r.Pointer(r.uint16, ClassLookupTable),
67356
    stateArray: new r.Pointer(r.uint16, StateArray),
67357
    entryTable: new r.Pointer(r.uint16, new UnboundedArray(Entry))
67358
  });
67359
  return StateHeader1;
67360
}
67361
var BslnSubtable = new r.VersionedStruct('format', {
67362
  0: {
67363
    // Distance-based, no mapping
67364
    deltas: new r.Array(r.int16, 32)
67365
  },
67366
  1: {
67367
    // Distance-based, with mapping
67368
    deltas: new r.Array(r.int16, 32),
67369
    mappingData: new LookupTable(r.uint16)
67370
  },
67371
  2: {
67372
    // Control point-based, no mapping
67373
    standardGlyph: r.uint16,
67374
    controlPoints: new r.Array(r.uint16, 32)
67375
  },
67376
  3: {
67377
    // Control point-based, with mapping
67378
    standardGlyph: r.uint16,
67379
    controlPoints: new r.Array(r.uint16, 32),
67380
    mappingData: new LookupTable(r.uint16)
67381
  }
67382
});
67383
var bsln = new r.Struct({
67384
  version: r.fixed32,
67385
  format: r.uint16,
67386
  defaultBaseline: r.uint16,
67387
  subtable: BslnSubtable
67388
});
67389
var Setting = new r.Struct({
67390
  setting: r.uint16,
67391
  nameIndex: r.int16,
67392
  name: function name(t) {
67393
    return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex];
67394
  }
67395
});
67396
var FeatureName = new r.Struct({
67397
  feature: r.uint16,
67398
  nSettings: r.uint16,
67399
  settingTable: new r.Pointer(r.uint32, new r.Array(Setting, 'nSettings'), {
67400
    type: 'parent'
67401
  }),
67402
  featureFlags: new r.Bitfield(r.uint8, [null, null, null, null, null, null, 'hasDefault', 'exclusive']),
67403
  defaultSetting: r.uint8,
67404
  nameIndex: r.int16,
67405
  name: function name(t) {
67406
    return t.parent.parent.name.records.fontFeatures[t.nameIndex];
67407
  }
67408
});
67409
var feat = new r.Struct({
67410
  version: r.fixed32,
67411
  featureNameCount: r.uint16,
67412
  reserved1: new r.Reserved(r.uint16),
67413
  reserved2: new r.Reserved(r.uint32),
67414
  featureNames: new r.Array(FeatureName, 'featureNameCount')
67415
});
67416
var Axis$1 = new r.Struct({
67417
  axisTag: new r.String(4),
67418
  minValue: r.fixed32,
67419
  defaultValue: r.fixed32,
67420
  maxValue: r.fixed32,
67421
  flags: r.uint16,
67422
  nameID: r.uint16,
67423
  name: function name(t) {
67424
    return t.parent.parent.name.records.fontFeatures[t.nameID];
67425
  }
67426
});
67427
var Instance = new r.Struct({
67428
  nameID: r.uint16,
67429
  name: function name(t) {
67430
    return t.parent.parent.name.records.fontFeatures[t.nameID];
67431
  },
67432
  flags: r.uint16,
67433
  coord: new r.Array(r.fixed32, function (t) {
67434
    return t.parent.axisCount;
67435
  }),
67436
  postscriptNameID: new r.Optional(r.uint16, function (t) {
67437
    return t.parent.instanceSize - t._currentOffset > 0;
67438
  })
67439
});
67440
var fvar = new r.Struct({
67441
  version: r.fixed32,
67442
  offsetToData: r.uint16,
67443
  countSizePairs: r.uint16,
67444
  axisCount: r.uint16,
67445
  axisSize: r.uint16,
67446
  instanceCount: r.uint16,
67447
  instanceSize: r.uint16,
67448
  axis: new r.Array(Axis$1, 'axisCount'),
67449
  instance: new r.Array(Instance, 'instanceCount')
67450
});
67451
var shortFrac$1 = new r.Fixed(16, 'BE', 14);
67452
var Offset = /*#__PURE__*/function () {
67453
  function Offset() {}
67454
  Offset.decode = function decode(stream, parent) {
67455
    // In short format, offsets are multiplied by 2.
67456
    // This doesn't seem to be documented by Apple, but it
67457
    // is implemented this way in Freetype.
67458
    return parent.flags ? stream.readUInt32BE() : stream.readUInt16BE() * 2;
67459
  };
67460
  return Offset;
67461
}();
67462
var gvar = new r.Struct({
67463
  version: r.uint16,
67464
  reserved: new r.Reserved(r.uint16),
67465
  axisCount: r.uint16,
67466
  globalCoordCount: r.uint16,
67467
  globalCoords: new r.Pointer(r.uint32, new r.Array(new r.Array(shortFrac$1, 'axisCount'), 'globalCoordCount')),
67468
  glyphCount: r.uint16,
67469
  flags: r.uint16,
67470
  offsetToData: r.uint32,
67471
  offsets: new r.Array(new r.Pointer(Offset, 'void', {
67472
    relativeTo: function relativeTo(ctx) {
67473
      return ctx.offsetToData;
67474
    },
67475
    allowNull: false
67476
  }), function (t) {
67477
    return t.glyphCount + 1;
67478
  })
67479
});
67480
var ClassTable$1 = new r.Struct({
67481
  length: r.uint16,
67482
  coverage: r.uint16,
67483
  subFeatureFlags: r.uint32,
67484
  stateTable: new StateTable1()
67485
});
67486
var WidthDeltaRecord = new r.Struct({
67487
  justClass: r.uint32,
67488
  beforeGrowLimit: r.fixed32,
67489
  beforeShrinkLimit: r.fixed32,
67490
  afterGrowLimit: r.fixed32,
67491
  afterShrinkLimit: r.fixed32,
67492
  growFlags: r.uint16,
67493
  shrinkFlags: r.uint16
67494
});
67495
var WidthDeltaCluster = new r.Array(WidthDeltaRecord, r.uint32);
67496
var ActionData = new r.VersionedStruct('actionType', {
67497
  0: {
67498
    // Decomposition action
67499
    lowerLimit: r.fixed32,
67500
    upperLimit: r.fixed32,
67501
    order: r.uint16,
67502
    glyphs: new r.Array(r.uint16, r.uint16)
67503
  },
67504
  1: {
67505
    // Unconditional add glyph action
67506
    addGlyph: r.uint16
67507
  },
67508
  2: {
67509
    // Conditional add glyph action
67510
    substThreshold: r.fixed32,
67511
    addGlyph: r.uint16,
67512
    substGlyph: r.uint16
67513
  },
67514
  3: {},
67515
  // Stretch glyph action (no data, not supported by CoreText)
67516
  4: {
67517
    // Ductile glyph action (not supported by CoreText)
67518
    variationAxis: r.uint32,
67519
    minimumLimit: r.fixed32,
67520
    noStretchValue: r.fixed32,
67521
    maximumLimit: r.fixed32
67522
  },
67523
  5: {
67524
    // Repeated add glyph action
67525
    flags: r.uint16,
67526
    glyph: r.uint16
67527
  }
67528
});
67529
var Action = new r.Struct({
67530
  actionClass: r.uint16,
67531
  actionType: r.uint16,
67532
  actionLength: r.uint32,
67533
  actionData: ActionData,
67534
  padding: new r.Reserved(r.uint8, function (t) {
67535
    return t.actionLength - t._currentOffset;
67536
  })
67537
});
67538
var PostcompensationAction = new r.Array(Action, r.uint32);
67539
var PostCompensationTable = new r.Struct({
67540
  lookupTable: new LookupTable(new r.Pointer(r.uint16, PostcompensationAction))
67541
});
67542
var JustificationTable = new r.Struct({
67543
  classTable: new r.Pointer(r.uint16, ClassTable$1, {
67544
    type: 'parent'
67545
  }),
67546
  wdcOffset: r.uint16,
67547
  postCompensationTable: new r.Pointer(r.uint16, PostCompensationTable, {
67548
    type: 'parent'
67549
  }),
67550
  widthDeltaClusters: new LookupTable(new r.Pointer(r.uint16, WidthDeltaCluster, {
67551
    type: 'parent',
67552
    relativeTo: function relativeTo(ctx) {
67553
      return ctx.wdcOffset;
67554
    }
67555
  }))
67556
});
67557
var just = new r.Struct({
67558
  version: r.uint32,
67559
  format: r.uint16,
67560
  horizontal: new r.Pointer(r.uint16, JustificationTable),
67561
  vertical: new r.Pointer(r.uint16, JustificationTable)
67562
});
67563
var LigatureData = {
67564
  action: r.uint16
67565
};
67566
var ContextualData = {
67567
  markIndex: r.uint16,
67568
  currentIndex: r.uint16
67569
};
67570
var InsertionData = {
67571
  currentInsertIndex: r.uint16,
67572
  markedInsertIndex: r.uint16
67573
};
67574
var SubstitutionTable = new r.Struct({
67575
  items: new UnboundedArray(new r.Pointer(r.uint32, new LookupTable()))
67576
});
67577
var SubtableData = new r.VersionedStruct('type', {
67578
  0: {
67579
    // Indic Rearrangement Subtable
67580
    stateTable: new StateTable()
67581
  },
67582
  1: {
67583
    // Contextual Glyph Substitution Subtable
67584
    stateTable: new StateTable(ContextualData),
67585
    substitutionTable: new r.Pointer(r.uint32, SubstitutionTable)
67586
  },
67587
  2: {
67588
    // Ligature subtable
67589
    stateTable: new StateTable(LigatureData),
67590
    ligatureActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint32)),
67591
    components: new r.Pointer(r.uint32, new UnboundedArray(r.uint16)),
67592
    ligatureList: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))
67593
  },
67594
  4: {
67595
    // Non-contextual Glyph Substitution Subtable
67596
    lookupTable: new LookupTable()
67597
  },
67598
  5: {
67599
    // Glyph Insertion Subtable
67600
    stateTable: new StateTable(InsertionData),
67601
    insertionActions: new r.Pointer(r.uint32, new UnboundedArray(r.uint16))
67602
  }
67603
});
67604
var Subtable = new r.Struct({
67605
  length: r.uint32,
67606
  coverage: r.uint24,
67607
  type: r.uint8,
67608
  subFeatureFlags: r.uint32,
67609
  table: SubtableData,
67610
  padding: new r.Reserved(r.uint8, function (t) {
67611
    return t.length - t._currentOffset;
67612
  })
67613
});
67614
var FeatureEntry = new r.Struct({
67615
  featureType: r.uint16,
67616
  featureSetting: r.uint16,
67617
  enableFlags: r.uint32,
67618
  disableFlags: r.uint32
67619
});
67620
var MorxChain = new r.Struct({
67621
  defaultFlags: r.uint32,
67622
  chainLength: r.uint32,
67623
  nFeatureEntries: r.uint32,
67624
  nSubtables: r.uint32,
67625
  features: new r.Array(FeatureEntry, 'nFeatureEntries'),
67626
  subtables: new r.Array(Subtable, 'nSubtables')
67627
});
67628
var morx = new r.Struct({
67629
  version: r.uint16,
67630
  unused: new r.Reserved(r.uint16),
67631
  nChains: r.uint32,
67632
  chains: new r.Array(MorxChain, 'nChains')
67633
});
67634
var OpticalBounds = new r.Struct({
67635
  left: r.int16,
67636
  top: r.int16,
67637
  right: r.int16,
67638
  bottom: r.int16
67639
});
67640
var opbd = new r.Struct({
67641
  version: r.fixed32,
67642
  format: r.uint16,
67643
  lookupTable: new LookupTable(OpticalBounds)
67644
});
67645
var tables = {};
67646
tables.cmap = cmap;
67647
tables.head = head;
67648
tables.hhea = hhea;
67649
tables.hmtx = hmtx;
67650
tables.maxp = maxp;
67651
tables.name = NameTable;
67652
tables['OS/2'] = OS2;
67653
tables.post = post; // TrueType Outlines
67654
tables.fpgm = fpgm;
67655
tables.loca = loca;
67656
tables.prep = prep;
67657
tables['cvt '] = cvt;
67658
tables.glyf = glyf; // PostScript Outlines
67659
tables['CFF '] = CFFFont;
67660
tables['CFF2'] = CFFFont;
67661
tables.VORG = VORG; // Bitmap Glyphs
67662
tables.EBLC = EBLC;
67663
tables.CBLC = tables.EBLC;
67664
tables.sbix = sbix;
67665
tables.COLR = COLR;
67666
tables.CPAL = CPAL; // Advanced OpenType Tables
67667
tables.BASE = BASE;
67668
tables.GDEF = GDEF;
67669
tables.GPOS = GPOS;
67670
tables.GSUB = GSUB;
67671
tables.JSTF = JSTF; // OpenType variations tables
67672
tables.HVAR = HVAR; // Other OpenType Tables
67673
tables.DSIG = DSIG;
67674
tables.gasp = gasp;
67675
tables.hdmx = hdmx;
67676
tables.kern = kern;
67677
tables.LTSH = LTSH;
67678
tables.PCLT = PCLT;
67679
tables.VDMX = VDMX;
67680
tables.vhea = vhea;
67681
tables.vmtx = vmtx; // Apple Advanced Typography Tables
67682
tables.avar = avar;
67683
tables.bsln = bsln;
67684
tables.feat = feat;
67685
tables.fvar = fvar;
67686
tables.gvar = gvar;
67687
tables.just = just;
67688
tables.morx = morx;
67689
tables.opbd = opbd;
67690
var TableEntry = new r.Struct({
67691
  tag: new r.String(4),
67692
  checkSum: r.uint32,
67693
  offset: new r.Pointer(r.uint32, 'void', {
67694
    type: 'global'
67695
  }),
67696
  length: r.uint32
67697
});
67698
var Directory = new r.Struct({
67699
  tag: new r.String(4),
67700
  numTables: r.uint16,
67701
  searchRange: r.uint16,
67702
  entrySelector: r.uint16,
67703
  rangeShift: r.uint16,
67704
  tables: new r.Array(TableEntry, 'numTables')
67705
});
67706
Directory.process = function () {
67707
  var tables = {};
67708
  for (var _iterator9 = _createForOfIteratorHelperLoose(this.tables), _step9; !(_step9 = _iterator9()).done;) {
67709
    var table = _step9.value;
67710
    tables[table.tag] = table;
67711
  }
67712
  this.tables = tables;
67713
};
67714
Directory.preEncode = function (stream) {
67715
  var tables$1 = [];
67716
  for (var tag in this.tables) {
67717
    var table = this.tables[tag];
67718
    if (table) {
67719
      tables$1.push({
67720
        tag: tag,
67721
        checkSum: 0,
67722
        offset: new r.VoidPointer(tables[tag], table),
67723
        length: tables[tag].size(table)
67724
      });
67725
    }
67726
  }
67727
  this.tag = 'true';
67728
  this.numTables = tables$1.length;
67729
  this.tables = tables$1;
67730
  var maxExponentFor2 = Math.floor(Math.log(this.numTables) / Math.LN2);
67731
  var maxPowerOf2 = Math.pow(2, maxExponentFor2);
67732
  this.searchRange = maxPowerOf2 * 16;
67733
  this.entrySelector = Math.log(maxPowerOf2) / Math.LN2;
67734
  this.rangeShift = this.numTables * 16 - this.searchRange;
67735
};
67736
function binarySearch(arr, cmp) {
67737
  var min = 0;
67738
  var max = arr.length - 1;
67739
  while (min <= max) {
67740
    var mid = min + max >> 1;
67741
    var res = cmp(arr[mid]);
67742
    if (res < 0) {
67743
      max = mid - 1;
67744
    } else if (res > 0) {
67745
      min = mid + 1;
67746
    } else {
67747
      return mid;
67748
    }
67749
  }
67750
  return -1;
67751
}
67752
function range(index, end) {
67753
  var range = [];
67754
  while (index < end) {
67755
    range.push(index++);
67756
  }
67757
  return range;
67758
}
67759
var _class;
67760
try {
67761
  var iconv = __webpack_require__(4914);
67762
} catch (err) {}
67763
var CmapProcessor = (_class = /*#__PURE__*/function () {
67764
  function CmapProcessor(cmapTable) {
67765
    // Attempt to find a Unicode cmap first
67766
    this.encoding = null;
67767
    this.cmap = this.findSubtable(cmapTable, [
67768
    // 32-bit subtables
67769
    [3, 10], [0, 6], [0, 4],
67770
    // 16-bit subtables
67771
    [3, 1], [0, 3], [0, 2], [0, 1], [0, 0]]); // If not unicode cmap was found, and iconv-lite is installed,
67772
    // take the first table with a supported encoding.
67773
67774
    if (!this.cmap && iconv) {
67775
      for (var _iterator10 = _createForOfIteratorHelperLoose(cmapTable.tables), _step10; !(_step10 = _iterator10()).done;) {
67776
        var cmap = _step10.value;
67777
        var encoding = getEncoding(cmap.platformID, cmap.encodingID, cmap.table.language - 1);
67778
        if (iconv.encodingExists(encoding)) {
67779
          this.cmap = cmap.table;
67780
          this.encoding = encoding;
67781
        }
67782
      }
67783
    }
67784
    if (!this.cmap) {
67785
      throw new Error("Could not find a supported cmap table");
67786
    }
67787
    this.uvs = this.findSubtable(cmapTable, [[0, 5]]);
67788
    if (this.uvs && this.uvs.version !== 14) {
67789
      this.uvs = null;
67790
    }
67791
  }
67792
  var _proto15 = CmapProcessor.prototype;
67793
  _proto15.findSubtable = function findSubtable(cmapTable, pairs) {
67794
    for (var _iterator11 = _createForOfIteratorHelperLoose(pairs), _step11; !(_step11 = _iterator11()).done;) {
67795
      var _step11$value = _step11.value,
67796
        platformID = _step11$value[0],
67797
        encodingID = _step11$value[1];
67798
      for (var _iterator12 = _createForOfIteratorHelperLoose(cmapTable.tables), _step12; !(_step12 = _iterator12()).done;) {
67799
        var cmap = _step12.value;
67800
        if (cmap.platformID === platformID && cmap.encodingID === encodingID) {
67801
          return cmap.table;
67802
        }
67803
      }
67804
    }
67805
    return null;
67806
  };
67807
  _proto15.lookup = function lookup(codepoint, variationSelector) {
67808
    // If there is no Unicode cmap in this font, we need to re-encode
67809
    // the codepoint in the encoding that the cmap supports.
67810
    if (this.encoding) {
67811
      var buf = iconv.encode(String.fromCodePoint(codepoint), this.encoding);
67812
      codepoint = 0;
67813
      for (var i = 0; i < buf.length; i++) {
67814
        codepoint = codepoint << 8 | buf[i];
67815
      } // Otherwise, try to get a Unicode variation selector for this codepoint if one is provided.
67816
    } else if (variationSelector) {
67817
      var gid = this.getVariationSelector(codepoint, variationSelector);
67818
      if (gid) {
67819
        return gid;
67820
      }
67821
    }
67822
    var cmap = this.cmap;
67823
    switch (cmap.version) {
67824
      case 0:
67825
        return cmap.codeMap.get(codepoint) || 0;
67826
      case 4:
67827
        {
67828
          var min = 0;
67829
          var max = cmap.segCount - 1;
67830
          while (min <= max) {
67831
            var mid = min + max >> 1;
67832
            if (codepoint < cmap.startCode.get(mid)) {
67833
              max = mid - 1;
67834
            } else if (codepoint > cmap.endCode.get(mid)) {
67835
              min = mid + 1;
67836
            } else {
67837
              var rangeOffset = cmap.idRangeOffset.get(mid);
67838
              var _gid = void 0;
67839
              if (rangeOffset === 0) {
67840
                _gid = codepoint + cmap.idDelta.get(mid);
67841
              } else {
67842
                var index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);
67843
                _gid = cmap.glyphIndexArray.get(index) || 0;
67844
                if (_gid !== 0) {
67845
                  _gid += cmap.idDelta.get(mid);
67846
                }
67847
              }
67848
              return _gid & 0xffff;
67849
            }
67850
          }
67851
          return 0;
67852
        }
67853
      case 8:
67854
        throw new Error('TODO: cmap format 8');
67855
      case 6:
67856
      case 10:
67857
        return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;
67858
      case 12:
67859
      case 13:
67860
        {
67861
          var _min = 0;
67862
          var _max = cmap.nGroups - 1;
67863
          while (_min <= _max) {
67864
            var _mid = _min + _max >> 1;
67865
            var group = cmap.groups.get(_mid);
67866
            if (codepoint < group.startCharCode) {
67867
              _max = _mid - 1;
67868
            } else if (codepoint > group.endCharCode) {
67869
              _min = _mid + 1;
67870
            } else {
67871
              if (cmap.version === 12) {
67872
                return group.glyphID + (codepoint - group.startCharCode);
67873
              } else {
67874
                return group.glyphID;
67875
              }
67876
            }
67877
          }
67878
          return 0;
67879
        }
67880
      case 14:
67881
        throw new Error('TODO: cmap format 14');
67882
      default:
67883
        throw new Error("Unknown cmap format ".concat(cmap.version));
67884
    }
67885
  };
67886
  _proto15.getVariationSelector = function getVariationSelector(codepoint, variationSelector) {
67887
    if (!this.uvs) {
67888
      return 0;
67889
    }
67890
    var selectors = this.uvs.varSelectors.toArray();
67891
    var i = binarySearch(selectors, function (x) {
67892
      return variationSelector - x.varSelector;
67893
    });
67894
    var sel = selectors[i];
67895
    if (i !== -1 && sel.defaultUVS) {
67896
      i = binarySearch(sel.defaultUVS, function (x) {
67897
        return codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? +1 : 0;
67898
      });
67899
    }
67900
    if (i !== -1 && sel.nonDefaultUVS) {
67901
      i = binarySearch(sel.nonDefaultUVS, function (x) {
67902
        return codepoint - x.unicodeValue;
67903
      });
67904
      if (i !== -1) {
67905
        return sel.nonDefaultUVS[i].glyphID;
67906
      }
67907
    }
67908
    return 0;
67909
  };
67910
  _proto15.getCharacterSet = function getCharacterSet() {
67911
    var cmap = this.cmap;
67912
    switch (cmap.version) {
67913
      case 0:
67914
        return range(0, cmap.codeMap.length);
67915
      case 4:
67916
        {
67917
          var res = [];
67918
          var endCodes = cmap.endCode.toArray();
67919
          for (var i = 0; i < endCodes.length; i++) {
67920
            var tail = endCodes[i] + 1;
67921
            var start = cmap.startCode.get(i);
67922
            res.push.apply(res, range(start, tail));
67923
          }
67924
          return res;
67925
        }
67926
      case 8:
67927
        throw new Error('TODO: cmap format 8');
67928
      case 6:
67929
      case 10:
67930
        return range(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);
67931
      case 12:
67932
      case 13:
67933
        {
67934
          var _res = [];
67935
          for (var _iterator13 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step13; !(_step13 = _iterator13()).done;) {
67936
            var group = _step13.value;
67937
            _res.push.apply(_res, range(group.startCharCode, group.endCharCode + 1));
67938
          }
67939
          return _res;
67940
        }
67941
      case 14:
67942
        throw new Error('TODO: cmap format 14');
67943
      default:
67944
        throw new Error("Unknown cmap format ".concat(cmap.version));
67945
    }
67946
  };
67947
  _proto15.codePointsForGlyph = function codePointsForGlyph(gid) {
67948
    var cmap = this.cmap;
67949
    switch (cmap.version) {
67950
      case 0:
67951
        {
67952
          var res = [];
67953
          for (var i = 0; i < 256; i++) {
67954
            if (cmap.codeMap.get(i) === gid) {
67955
              res.push(i);
67956
            }
67957
          }
67958
          return res;
67959
        }
67960
      case 4:
67961
        {
67962
          var _res2 = [];
67963
          for (var _i = 0; _i < cmap.segCount; _i++) {
67964
            var end = cmap.endCode.get(_i);
67965
            var start = cmap.startCode.get(_i);
67966
            var rangeOffset = cmap.idRangeOffset.get(_i);
67967
            var delta = cmap.idDelta.get(_i);
67968
            for (var c = start; c <= end; c++) {
67969
              var g = 0;
67970
              if (rangeOffset === 0) {
67971
                g = c + delta;
67972
              } else {
67973
                var index = rangeOffset / 2 + (c - start) - (cmap.segCount - _i);
67974
                g = cmap.glyphIndexArray.get(index) || 0;
67975
                if (g !== 0) {
67976
                  g += delta;
67977
                }
67978
              }
67979
              if (g === gid) {
67980
                _res2.push(c);
67981
              }
67982
            }
67983
          }
67984
          return _res2;
67985
        }
67986
      case 12:
67987
        {
67988
          var _res3 = [];
67989
          for (var _iterator14 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step14; !(_step14 = _iterator14()).done;) {
67990
            var group = _step14.value;
67991
            if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) {
67992
              _res3.push(group.startCharCode + (gid - group.glyphID));
67993
            }
67994
          }
67995
          return _res3;
67996
        }
67997
      case 13:
67998
        {
67999
          var _res4 = [];
68000
          for (var _iterator15 = _createForOfIteratorHelperLoose(cmap.groups.toArray()), _step15; !(_step15 = _iterator15()).done;) {
68001
            var _group = _step15.value;
68002
            if (gid === _group.glyphID) {
68003
              _res4.push.apply(_res4, range(_group.startCharCode, _group.endCharCode + 1));
68004
            }
68005
          }
68006
          return _res4;
68007
        }
68008
      default:
68009
        throw new Error("Unknown cmap format ".concat(cmap.version));
68010
    }
68011
  };
68012
  return CmapProcessor;
68013
}(), (_applyDecoratedDescriptor(_class.prototype, "getCharacterSet", [cache], Object.getOwnPropertyDescriptor(_class.prototype, "getCharacterSet"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "codePointsForGlyph", [cache], Object.getOwnPropertyDescriptor(_class.prototype, "codePointsForGlyph"), _class.prototype)), _class);
68014
var KernProcessor = /*#__PURE__*/function () {
68015
  function KernProcessor(font) {
68016
    this.kern = font.kern;
68017
  }
68018
  var _proto16 = KernProcessor.prototype;
68019
  _proto16.process = function process(glyphs, positions) {
68020
    for (var glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++) {
68021
      var left = glyphs[glyphIndex].id;
68022
      var right = glyphs[glyphIndex + 1].id;
68023
      positions[glyphIndex].xAdvance += this.getKerning(left, right);
68024
    }
68025
  };
68026
  _proto16.getKerning = function getKerning(left, right) {
68027
    var res = 0;
68028
    for (var _iterator16 = _createForOfIteratorHelperLoose(this.kern.tables), _step16; !(_step16 = _iterator16()).done;) {
68029
      var table = _step16.value;
68030
      if (table.coverage.crossStream) {
68031
        continue;
68032
      }
68033
      switch (table.version) {
68034
        case 0:
68035
          if (!table.coverage.horizontal) {
68036
            continue;
68037
          }
68038
          break;
68039
        case 1:
68040
          if (table.coverage.vertical || table.coverage.variation) {
68041
            continue;
68042
          }
68043
          break;
68044
        default:
68045
          throw new Error("Unsupported kerning table version ".concat(table.version));
68046
      }
68047
      var val = 0;
68048
      var s = table.subtable;
68049
      switch (table.format) {
68050
        case 0:
68051
          var pairIdx = binarySearch(s.pairs, function (pair) {
68052
            return left - pair.left || right - pair.right;
68053
          });
68054
          if (pairIdx >= 0) {
68055
            val = s.pairs[pairIdx].value;
68056
          }
68057
          break;
68058
        case 2:
68059
          var leftOffset = 0,
68060
            rightOffset = 0;
68061
          if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) {
68062
            leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];
68063
          } else {
68064
            leftOffset = s.array.off;
68065
          }
68066
          if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) {
68067
            rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];
68068
          }
68069
          var index = (leftOffset + rightOffset - s.array.off) / 2;
68070
          val = s.array.values.get(index);
68071
          break;
68072
        case 3:
68073
          if (left >= s.glyphCount || right >= s.glyphCount) {
68074
            return 0;
68075
          }
68076
          val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];
68077
          break;
68078
        default:
68079
          throw new Error("Unsupported kerning sub-table format ".concat(table.format));
68080
      } // Microsoft supports the override flag, which resets the result
68081
      // Otherwise, the sum of the results from all subtables is returned
68082
68083
      if (table.coverage.override) {
68084
        res = val;
68085
      } else {
68086
        res += val;
68087
      }
68088
    }
68089
    return res;
68090
  };
68091
  return KernProcessor;
68092
}();
68093
/**
68094
 * This class is used when GPOS does not define 'mark' or 'mkmk' features
68095
 * for positioning marks relative to base glyphs. It uses the unicode
68096
 * combining class property to position marks.
68097
 *
68098
 * Based on code from Harfbuzz, thanks!
68099
 * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-fallback.cc
68100
 */
68101
var UnicodeLayoutEngine = /*#__PURE__*/function () {
68102
  function UnicodeLayoutEngine(font) {
68103
    this.font = font;
68104
  }
68105
  var _proto17 = UnicodeLayoutEngine.prototype;
68106
  _proto17.positionGlyphs = function positionGlyphs(glyphs, positions) {
68107
    // find each base + mark cluster, and position the marks relative to the base
68108
    var clusterStart = 0;
68109
    var clusterEnd = 0;
68110
    for (var index = 0; index < glyphs.length; index++) {
68111
      var glyph = glyphs[index];
68112
      if (glyph.isMark) {
68113
        // TODO: handle ligatures
68114
        clusterEnd = index;
68115
      } else {
68116
        if (clusterStart !== clusterEnd) {
68117
          this.positionCluster(glyphs, positions, clusterStart, clusterEnd);
68118
        }
68119
        clusterStart = clusterEnd = index;
68120
      }
68121
    }
68122
    if (clusterStart !== clusterEnd) {
68123
      this.positionCluster(glyphs, positions, clusterStart, clusterEnd);
68124
    }
68125
    return positions;
68126
  };
68127
  _proto17.positionCluster = function positionCluster(glyphs, positions, clusterStart, clusterEnd) {
68128
    var base = glyphs[clusterStart];
68129
    var baseBox = base.cbox.copy(); // adjust bounding box for ligature glyphs
68130
68131
    if (base.codePoints.length > 1) {
68132
      // LTR. TODO: RTL support.
68133
      baseBox.minX += (base.codePoints.length - 1) * baseBox.width / base.codePoints.length;
68134
    }
68135
    var xOffset = -positions[clusterStart].xAdvance;
68136
    var yOffset = 0;
68137
    var yGap = this.font.unitsPerEm / 16; // position each of the mark glyphs relative to the base glyph
68138
68139
    for (var index = clusterStart + 1; index <= clusterEnd; index++) {
68140
      var mark = glyphs[index];
68141
      var markBox = mark.cbox;
68142
      var position = positions[index];
68143
      var combiningClass = this.getCombiningClass(mark.codePoints[0]);
68144
      if (combiningClass !== 'Not_Reordered') {
68145
        position.xOffset = position.yOffset = 0; // x positioning
68146
68147
        switch (combiningClass) {
68148
          case 'Double_Above':
68149
          case 'Double_Below':
68150
            // LTR. TODO: RTL support.
68151
            position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;
68152
            break;
68153
          case 'Attached_Below_Left':
68154
          case 'Below_Left':
68155
          case 'Above_Left':
68156
            // left align
68157
            position.xOffset += baseBox.minX - markBox.minX;
68158
            break;
68159
          case 'Attached_Above_Right':
68160
          case 'Below_Right':
68161
          case 'Above_Right':
68162
            // right align
68163
            position.xOffset += baseBox.maxX - markBox.width - markBox.minX;
68164
            break;
68165
          default:
68166
            // Attached_Below, Attached_Above, Below, Above, other
68167
            // center align
68168
            position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;
68169
        } // y positioning
68170
68171
        switch (combiningClass) {
68172
          case 'Double_Below':
68173
          case 'Below_Left':
68174
          case 'Below':
68175
          case 'Below_Right':
68176
          case 'Attached_Below_Left':
68177
          case 'Attached_Below':
68178
            // add a small gap between the glyphs if they are not attached
68179
            if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') {
68180
              baseBox.minY += yGap;
68181
            }
68182
            position.yOffset = -baseBox.minY - markBox.maxY;
68183
            baseBox.minY += markBox.height;
68184
            break;
68185
          case 'Double_Above':
68186
          case 'Above_Left':
68187
          case 'Above':
68188
          case 'Above_Right':
68189
          case 'Attached_Above':
68190
          case 'Attached_Above_Right':
68191
            // add a small gap between the glyphs if they are not attached
68192
            if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') {
68193
              baseBox.maxY += yGap;
68194
            }
68195
            position.yOffset = baseBox.maxY - markBox.minY;
68196
            baseBox.maxY += markBox.height;
68197
            break;
68198
        }
68199
        position.xAdvance = position.yAdvance = 0;
68200
        position.xOffset += xOffset;
68201
        position.yOffset += yOffset;
68202
      } else {
68203
        xOffset -= position.xAdvance;
68204
        yOffset -= position.yAdvance;
68205
      }
68206
    }
68207
    return;
68208
  };
68209
  _proto17.getCombiningClass = function getCombiningClass(codePoint) {
68210
    var combiningClass = unicode.getCombiningClass(codePoint); // Thai / Lao need some per-character work
68211
68212
    if ((codePoint & ~0xff) === 0x0e00) {
68213
      if (combiningClass === 'Not_Reordered') {
68214
        switch (codePoint) {
68215
          case 0x0e31:
68216
          case 0x0e34:
68217
          case 0x0e35:
68218
          case 0x0e36:
68219
          case 0x0e37:
68220
          case 0x0e47:
68221
          case 0x0e4c:
68222
          case 0x0e3d:
68223
          case 0x0e4e:
68224
            return 'Above_Right';
68225
          case 0x0eb1:
68226
          case 0x0eb4:
68227
          case 0x0eb5:
68228
          case 0x0eb6:
68229
          case 0x0eb7:
68230
          case 0x0ebb:
68231
          case 0x0ecc:
68232
          case 0x0ecd:
68233
            return 'Above';
68234
          case 0x0ebc:
68235
            return 'Below';
68236
        }
68237
      } else if (codePoint === 0x0e3a) {
68238
        // virama
68239
        return 'Below_Right';
68240
      }
68241
    }
68242
    switch (combiningClass) {
68243
      // Hebrew
68244
      case 'CCC10': // sheva
68245
68246
      case 'CCC11': // hataf segol
68247
68248
      case 'CCC12': // hataf patah
68249
68250
      case 'CCC13': // hataf qamats
68251
68252
      case 'CCC14': // hiriq
68253
68254
      case 'CCC15': // tsere
68255
68256
      case 'CCC16': // segol
68257
68258
      case 'CCC17': // patah
68259
68260
      case 'CCC18': // qamats
68261
68262
      case 'CCC20': // qubuts
68263
68264
      case 'CCC22':
68265
        // meteg
68266
        return 'Below';
68267
      case 'CCC23':
68268
        // rafe
68269
        return 'Attached_Above';
68270
      case 'CCC24':
68271
        // shin dot
68272
        return 'Above_Right';
68273
      case 'CCC25': // sin dot
68274
68275
      case 'CCC19':
68276
        // holam
68277
        return 'Above_Left';
68278
      case 'CCC26':
68279
        // point varika
68280
        return 'Above';
68281
      case 'CCC21':
68282
        // dagesh
68283
        break;
68284
      // Arabic and Syriac
68285
68286
      case 'CCC27': // fathatan
68287
68288
      case 'CCC28': // dammatan
68289
68290
      case 'CCC30': // fatha
68291
68292
      case 'CCC31': // damma
68293
68294
      case 'CCC33': // shadda
68295
68296
      case 'CCC34': // sukun
68297
68298
      case 'CCC35': // superscript alef
68299
68300
      case 'CCC36':
68301
        // superscript alaph
68302
        return 'Above';
68303
      case 'CCC29': // kasratan
68304
68305
      case 'CCC32':
68306
        // kasra
68307
        return 'Below';
68308
      // Thai
68309
68310
      case 'CCC103':
68311
        // sara u / sara uu
68312
        return 'Below_Right';
68313
      case 'CCC107':
68314
        // mai
68315
        return 'Above_Right';
68316
      // Lao
68317
68318
      case 'CCC118':
68319
        // sign u / sign uu
68320
        return 'Below';
68321
      case 'CCC122':
68322
        // mai
68323
        return 'Above';
68324
      // Tibetan
68325
68326
      case 'CCC129': // sign aa
68327
68328
      case 'CCC132':
68329
        // sign u
68330
        return 'Below';
68331
      case 'CCC130':
68332
        // sign i
68333
        return 'Above';
68334
    }
68335
    return combiningClass;
68336
  };
68337
  return UnicodeLayoutEngine;
68338
}();
68339
/**
68340
 * Represents a glyph bounding box
68341
 */
68342
var BBox = /*#__PURE__*/function () {
68343
  function BBox(minX, minY, maxX, maxY) {
68344
    if (minX === void 0) {
68345
      minX = Infinity;
68346
    }
68347
    if (minY === void 0) {
68348
      minY = Infinity;
68349
    }
68350
    if (maxX === void 0) {
68351
      maxX = -Infinity;
68352
    }
68353
    if (maxY === void 0) {
68354
      maxY = -Infinity;
68355
    }
68356
    /**
68357
     * The minimum X position in the bounding box
68358
     * @type {number}
68359
     */
68360
    this.minX = minX;
68361
    /**
68362
     * The minimum Y position in the bounding box
68363
     * @type {number}
68364
     */
68365
68366
    this.minY = minY;
68367
    /**
68368
     * The maxmimum X position in the bounding box
68369
     * @type {number}
68370
     */
68371
68372
    this.maxX = maxX;
68373
    /**
68374
     * The maxmimum Y position in the bounding box
68375
     * @type {number}
68376
     */
68377
68378
    this.maxY = maxY;
68379
  }
68380
  /**
68381
   * The width of the bounding box
68382
   * @type {number}
68383
   */
68384
  var _proto18 = BBox.prototype;
68385
  _proto18.addPoint = function addPoint(x, y) {
68386
    if (Math.abs(x) !== Infinity) {
68387
      if (x < this.minX) {
68388
        this.minX = x;
68389
      }
68390
      if (x > this.maxX) {
68391
        this.maxX = x;
68392
      }
68393
    }
68394
    if (Math.abs(y) !== Infinity) {
68395
      if (y < this.minY) {
68396
        this.minY = y;
68397
      }
68398
      if (y > this.maxY) {
68399
        this.maxY = y;
68400
      }
68401
    }
68402
  };
68403
  _proto18.copy = function copy() {
68404
    return new BBox(this.minX, this.minY, this.maxX, this.maxY);
68405
  };
68406
  _createClass(BBox, [{
68407
    key: "width",
68408
    get: function get() {
68409
      return this.maxX - this.minX;
68410
    }
68411
    /**
68412
     * The height of the bounding box
68413
     * @type {number}
68414
     */
68415
  }, {
68416
    key: "height",
68417
    get: function get() {
68418
      return this.maxY - this.minY;
68419
    }
68420
  }]);
68421
  return BBox;
68422
}(); // Data from http://www.microsoft.com/typography/otspec/scripttags.htm
68423
// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.
68424
var UNICODE_SCRIPTS = {
68425
  Caucasian_Albanian: 'aghb',
68426
  Arabic: 'arab',
68427
  Imperial_Aramaic: 'armi',
68428
  Armenian: 'armn',
68429
  Avestan: 'avst',
68430
  Balinese: 'bali',
68431
  Bamum: 'bamu',
68432
  Bassa_Vah: 'bass',
68433
  Batak: 'batk',
68434
  Bengali: ['bng2', 'beng'],
68435
  Bopomofo: 'bopo',
68436
  Brahmi: 'brah',
68437
  Braille: 'brai',
68438
  Buginese: 'bugi',
68439
  Buhid: 'buhd',
68440
  Chakma: 'cakm',
68441
  Canadian_Aboriginal: 'cans',
68442
  Carian: 'cari',
68443
  Cham: 'cham',
68444
  Cherokee: 'cher',
68445
  Coptic: 'copt',
68446
  Cypriot: 'cprt',
68447
  Cyrillic: 'cyrl',
68448
  Devanagari: ['dev2', 'deva'],
68449
  Deseret: 'dsrt',
68450
  Duployan: 'dupl',
68451
  Egyptian_Hieroglyphs: 'egyp',
68452
  Elbasan: 'elba',
68453
  Ethiopic: 'ethi',
68454
  Georgian: 'geor',
68455
  Glagolitic: 'glag',
68456
  Gothic: 'goth',
68457
  Grantha: 'gran',
68458
  Greek: 'grek',
68459
  Gujarati: ['gjr2', 'gujr'],
68460
  Gurmukhi: ['gur2', 'guru'],
68461
  Hangul: 'hang',
68462
  Han: 'hani',
68463
  Hanunoo: 'hano',
68464
  Hebrew: 'hebr',
68465
  Hiragana: 'hira',
68466
  Pahawh_Hmong: 'hmng',
68467
  Katakana_Or_Hiragana: 'hrkt',
68468
  Old_Italic: 'ital',
68469
  Javanese: 'java',
68470
  Kayah_Li: 'kali',
68471
  Katakana: 'kana',
68472
  Kharoshthi: 'khar',
68473
  Khmer: 'khmr',
68474
  Khojki: 'khoj',
68475
  Kannada: ['knd2', 'knda'],
68476
  Kaithi: 'kthi',
68477
  Tai_Tham: 'lana',
68478
  Lao: 'lao ',
68479
  Latin: 'latn',
68480
  Lepcha: 'lepc',
68481
  Limbu: 'limb',
68482
  Linear_A: 'lina',
68483
  Linear_B: 'linb',
68484
  Lisu: 'lisu',
68485
  Lycian: 'lyci',
68486
  Lydian: 'lydi',
68487
  Mahajani: 'mahj',
68488
  Mandaic: 'mand',
68489
  Manichaean: 'mani',
68490
  Mende_Kikakui: 'mend',
68491
  Meroitic_Cursive: 'merc',
68492
  Meroitic_Hieroglyphs: 'mero',
68493
  Malayalam: ['mlm2', 'mlym'],
68494
  Modi: 'modi',
68495
  Mongolian: 'mong',
68496
  Mro: 'mroo',
68497
  Meetei_Mayek: 'mtei',
68498
  Myanmar: ['mym2', 'mymr'],
68499
  Old_North_Arabian: 'narb',
68500
  Nabataean: 'nbat',
68501
  Nko: 'nko ',
68502
  Ogham: 'ogam',
68503
  Ol_Chiki: 'olck',
68504
  Old_Turkic: 'orkh',
68505
  Oriya: ['ory2', 'orya'],
68506
  Osmanya: 'osma',
68507
  Palmyrene: 'palm',
68508
  Pau_Cin_Hau: 'pauc',
68509
  Old_Permic: 'perm',
68510
  Phags_Pa: 'phag',
68511
  Inscriptional_Pahlavi: 'phli',
68512
  Psalter_Pahlavi: 'phlp',
68513
  Phoenician: 'phnx',
68514
  Miao: 'plrd',
68515
  Inscriptional_Parthian: 'prti',
68516
  Rejang: 'rjng',
68517
  Runic: 'runr',
68518
  Samaritan: 'samr',
68519
  Old_South_Arabian: 'sarb',
68520
  Saurashtra: 'saur',
68521
  Shavian: 'shaw',
68522
  Sharada: 'shrd',
68523
  Siddham: 'sidd',
68524
  Khudawadi: 'sind',
68525
  Sinhala: 'sinh',
68526
  Sora_Sompeng: 'sora',
68527
  Sundanese: 'sund',
68528
  Syloti_Nagri: 'sylo',
68529
  Syriac: 'syrc',
68530
  Tagbanwa: 'tagb',
68531
  Takri: 'takr',
68532
  Tai_Le: 'tale',
68533
  New_Tai_Lue: 'talu',
68534
  Tamil: ['tml2', 'taml'],
68535
  Tai_Viet: 'tavt',
68536
  Telugu: ['tel2', 'telu'],
68537
  Tifinagh: 'tfng',
68538
  Tagalog: 'tglg',
68539
  Thaana: 'thaa',
68540
  Thai: 'thai',
68541
  Tibetan: 'tibt',
68542
  Tirhuta: 'tirh',
68543
  Ugaritic: 'ugar',
68544
  Vai: 'vai ',
68545
  Warang_Citi: 'wara',
68546
  Old_Persian: 'xpeo',
68547
  Cuneiform: 'xsux',
68548
  Yi: 'yi  ',
68549
  Inherited: 'zinh',
68550
  Common: 'zyyy',
68551
  Unknown: 'zzzz'
68552
};
68553
var OPENTYPE_SCRIPTS = {};
68554
for (var script in UNICODE_SCRIPTS) {
68555
  var tag = UNICODE_SCRIPTS[script];
68556
  if (Array.isArray(tag)) {
68557
    for (var _iterator17 = _createForOfIteratorHelperLoose(tag), _step17; !(_step17 = _iterator17()).done;) {
68558
      var t = _step17.value;
68559
      OPENTYPE_SCRIPTS[t] = script;
68560
    }
68561
  } else {
68562
    OPENTYPE_SCRIPTS[tag] = script;
68563
  }
68564
}
68565
function fromOpenType(tag) {
68566
  return OPENTYPE_SCRIPTS[tag];
68567
}
68568
function forString(string) {
68569
  var len = string.length;
68570
  var idx = 0;
68571
  while (idx < len) {
68572
    var code = string.charCodeAt(idx++); // Check if this is a high surrogate
68573
68574
    if (0xd800 <= code && code <= 0xdbff && idx < len) {
68575
      var next = string.charCodeAt(idx); // Check if this is a low surrogate
68576
68577
      if (0xdc00 <= next && next <= 0xdfff) {
68578
        idx++;
68579
        code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;
68580
      }
68581
    }
68582
    var _script = unicode.getScript(code);
68583
    if (_script !== 'Common' && _script !== 'Inherited' && _script !== 'Unknown') {
68584
      return UNICODE_SCRIPTS[_script];
68585
    }
68586
  }
68587
  return UNICODE_SCRIPTS.Unknown;
68588
}
68589
function forCodePoints(codePoints) {
68590
  for (var i = 0; i < codePoints.length; i++) {
68591
    var codePoint = codePoints[i];
68592
    var _script2 = unicode.getScript(codePoint);
68593
    if (_script2 !== 'Common' && _script2 !== 'Inherited' && _script2 !== 'Unknown') {
68594
      return UNICODE_SCRIPTS[_script2];
68595
    }
68596
  }
68597
  return UNICODE_SCRIPTS.Unknown;
68598
} // The scripts in this map are written from right to left
68599
68600
var RTL = {
68601
  arab: true,
68602
  // Arabic
68603
  hebr: true,
68604
  // Hebrew
68605
  syrc: true,
68606
  // Syriac
68607
  thaa: true,
68608
  // Thaana
68609
  cprt: true,
68610
  // Cypriot Syllabary
68611
  khar: true,
68612
  // Kharosthi
68613
  phnx: true,
68614
  // Phoenician
68615
  'nko ': true,
68616
  // N'Ko
68617
  lydi: true,
68618
  // Lydian
68619
  avst: true,
68620
  // Avestan
68621
  armi: true,
68622
  // Imperial Aramaic
68623
  phli: true,
68624
  // Inscriptional Pahlavi
68625
  prti: true,
68626
  // Inscriptional Parthian
68627
  sarb: true,
68628
  // Old South Arabian
68629
  orkh: true,
68630
  // Old Turkic, Orkhon Runic
68631
  samr: true,
68632
  // Samaritan
68633
  mand: true,
68634
  // Mandaic, Mandaean
68635
  merc: true,
68636
  // Meroitic Cursive
68637
  mero: true,
68638
  // Meroitic Hieroglyphs
68639
  // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)
68640
  mani: true,
68641
  // Manichaean
68642
  mend: true,
68643
  // Mende Kikakui
68644
  nbat: true,
68645
  // Nabataean
68646
  narb: true,
68647
  // Old North Arabian
68648
  palm: true,
68649
  // Palmyrene
68650
  phlp: true // Psalter Pahlavi
68651
};
68652
68653
function direction(script) {
68654
  if (RTL[script]) {
68655
    return 'rtl';
68656
  }
68657
  return 'ltr';
68658
}
68659
68660
/**
68661
 * Represents a run of Glyph and GlyphPosition objects.
68662
 * Returned by the font layout method.
68663
 */
68664
var GlyphRun = /*#__PURE__*/function () {
68665
  function GlyphRun(glyphs, features, script, language, direction$1) {
68666
    /**
68667
     * An array of Glyph objects in the run
68668
     * @type {Glyph[]}
68669
     */
68670
    this.glyphs = glyphs;
68671
    /**
68672
     * An array of GlyphPosition objects for each glyph in the run
68673
     * @type {GlyphPosition[]}
68674
     */
68675
68676
    this.positions = null;
68677
    /**
68678
     * The script that was requested for shaping. This was either passed in or detected automatically.
68679
     * @type {string}
68680
     */
68681
68682
    this.script = script;
68683
    /**
68684
     * The language requested for shaping, as passed in. If `null`, the default language for the
68685
     * script was used.
68686
     * @type {string}
68687
     */
68688
68689
    this.language = language || null;
68690
    /**
68691
     * The direction requested for shaping, as passed in (either ltr or rtl).
68692
     * If `null`, the default direction of the script is used.
68693
     * @type {string}
68694
     */
68695
68696
    this.direction = direction$1 || direction(script);
68697
    /**
68698
     * The features requested during shaping. This is a combination of user
68699
     * specified features and features chosen by the shaper.
68700
     * @type {object}
68701
     */
68702
68703
    this.features = {}; // Convert features to an object
68704
68705
    if (Array.isArray(features)) {
68706
      for (var _iterator18 = _createForOfIteratorHelperLoose(features), _step18; !(_step18 = _iterator18()).done;) {
68707
        var tag = _step18.value;
68708
        this.features[tag] = true;
68709
      }
68710
    } else if (typeof features === 'object') {
68711
      this.features = features;
68712
    }
68713
  }
68714
  /**
68715
   * The total advance width of the run.
68716
   * @type {number}
68717
   */
68718
  _createClass(GlyphRun, [{
68719
    key: "advanceWidth",
68720
    get: function get() {
68721
      var width = 0;
68722
      for (var _iterator19 = _createForOfIteratorHelperLoose(this.positions), _step19; !(_step19 = _iterator19()).done;) {
68723
        var position = _step19.value;
68724
        width += position.xAdvance;
68725
      }
68726
      return width;
68727
    }
68728
    /**
68729
     * The total advance height of the run.
68730
     * @type {number}
68731
     */
68732
  }, {
68733
    key: "advanceHeight",
68734
    get: function get() {
68735
      var height = 0;
68736
      for (var _iterator20 = _createForOfIteratorHelperLoose(this.positions), _step20; !(_step20 = _iterator20()).done;) {
68737
        var position = _step20.value;
68738
        height += position.yAdvance;
68739
      }
68740
      return height;
68741
    }
68742
    /**
68743
     * The bounding box containing all glyphs in the run.
68744
     * @type {BBox}
68745
     */
68746
  }, {
68747
    key: "bbox",
68748
    get: function get() {
68749
      var bbox = new BBox();
68750
      var x = 0;
68751
      var y = 0;
68752
      for (var index = 0; index < this.glyphs.length; index++) {
68753
        var glyph = this.glyphs[index];
68754
        var p = this.positions[index];
68755
        var b = glyph.bbox;
68756
        bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);
68757
        bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);
68758
        x += p.xAdvance;
68759
        y += p.yAdvance;
68760
      }
68761
      return bbox;
68762
    }
68763
  }]);
68764
  return GlyphRun;
68765
}();
68766
/**
68767
 * Represents positioning information for a glyph in a GlyphRun.
68768
 */
68769
var GlyphPosition = function GlyphPosition(xAdvance, yAdvance, xOffset, yOffset) {
68770
  if (xAdvance === void 0) {
68771
    xAdvance = 0;
68772
  }
68773
  if (yAdvance === void 0) {
68774
    yAdvance = 0;
68775
  }
68776
  if (xOffset === void 0) {
68777
    xOffset = 0;
68778
  }
68779
  if (yOffset === void 0) {
68780
    yOffset = 0;
68781
  }
68782
  /**
68783
   * The amount to move the virtual pen in the X direction after rendering this glyph.
68784
   * @type {number}
68785
   */
68786
  this.xAdvance = xAdvance;
68787
  /**
68788
   * The amount to move the virtual pen in the Y direction after rendering this glyph.
68789
   * @type {number}
68790
   */
68791
68792
  this.yAdvance = yAdvance;
68793
  /**
68794
   * The offset from the pen position in the X direction at which to render this glyph.
68795
   * @type {number}
68796
   */
68797
68798
  this.xOffset = xOffset;
68799
  /**
68800
   * The offset from the pen position in the Y direction at which to render this glyph.
68801
   * @type {number}
68802
   */
68803
68804
  this.yOffset = yOffset;
68805
}; // see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html
68806
// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac
68807
var features = {
68808
  allTypographicFeatures: {
68809
    code: 0,
68810
    exclusive: false,
68811
    allTypeFeatures: 0
68812
  },
68813
  ligatures: {
68814
    code: 1,
68815
    exclusive: false,
68816
    requiredLigatures: 0,
68817
    commonLigatures: 2,
68818
    rareLigatures: 4,
68819
    // logos: 6
68820
    rebusPictures: 8,
68821
    diphthongLigatures: 10,
68822
    squaredLigatures: 12,
68823
    abbrevSquaredLigatures: 14,
68824
    symbolLigatures: 16,
68825
    contextualLigatures: 18,
68826
    historicalLigatures: 20
68827
  },
68828
  cursiveConnection: {
68829
    code: 2,
68830
    exclusive: true,
68831
    unconnected: 0,
68832
    partiallyConnected: 1,
68833
    cursive: 2
68834
  },
68835
  letterCase: {
68836
    code: 3,
68837
    exclusive: true
68838
  },
68839
  // upperAndLowerCase: 0          # deprecated
68840
  // allCaps: 1                    # deprecated
68841
  // allLowerCase: 2               # deprecated
68842
  // smallCaps: 3                  # deprecated
68843
  // initialCaps: 4                # deprecated
68844
  // initialCapsAndSmallCaps: 5    # deprecated
68845
  verticalSubstitution: {
68846
    code: 4,
68847
    exclusive: false,
68848
    substituteVerticalForms: 0
68849
  },
68850
  linguisticRearrangement: {
68851
    code: 5,
68852
    exclusive: false,
68853
    linguisticRearrangement: 0
68854
  },
68855
  numberSpacing: {
68856
    code: 6,
68857
    exclusive: true,
68858
    monospacedNumbers: 0,
68859
    proportionalNumbers: 1,
68860
    thirdWidthNumbers: 2,
68861
    quarterWidthNumbers: 3
68862
  },
68863
  smartSwash: {
68864
    code: 8,
68865
    exclusive: false,
68866
    wordInitialSwashes: 0,
68867
    wordFinalSwashes: 2,
68868
    // lineInitialSwashes: 4
68869
    // lineFinalSwashes: 6
68870
    nonFinalSwashes: 8
68871
  },
68872
  diacritics: {
68873
    code: 9,
68874
    exclusive: true,
68875
    showDiacritics: 0,
68876
    hideDiacritics: 1,
68877
    decomposeDiacritics: 2
68878
  },
68879
  verticalPosition: {
68880
    code: 10,
68881
    exclusive: true,
68882
    normalPosition: 0,
68883
    superiors: 1,
68884
    inferiors: 2,
68885
    ordinals: 3,
68886
    scientificInferiors: 4
68887
  },
68888
  fractions: {
68889
    code: 11,
68890
    exclusive: true,
68891
    noFractions: 0,
68892
    verticalFractions: 1,
68893
    diagonalFractions: 2
68894
  },
68895
  overlappingCharacters: {
68896
    code: 13,
68897
    exclusive: false,
68898
    preventOverlap: 0
68899
  },
68900
  typographicExtras: {
68901
    code: 14,
68902
    exclusive: false,
68903
    // hyphensToEmDash: 0
68904
    // hyphenToEnDash: 2
68905
    slashedZero: 4
68906
  },
68907
  // formInterrobang: 6
68908
  // smartQuotes: 8
68909
  // periodsToEllipsis: 10
68910
  mathematicalExtras: {
68911
    code: 15,
68912
    exclusive: false,
68913
    // hyphenToMinus: 0
68914
    // asteristoMultiply: 2
68915
    // slashToDivide: 4
68916
    // inequalityLigatures: 6
68917
    // exponents: 8
68918
    mathematicalGreek: 10
68919
  },
68920
  ornamentSets: {
68921
    code: 16,
68922
    exclusive: true,
68923
    noOrnaments: 0,
68924
    dingbats: 1,
68925
    piCharacters: 2,
68926
    fleurons: 3,
68927
    decorativeBorders: 4,
68928
    internationalSymbols: 5,
68929
    mathSymbols: 6
68930
  },
68931
  characterAlternatives: {
68932
    code: 17,
68933
    exclusive: true,
68934
    noAlternates: 0
68935
  },
68936
  // user defined options
68937
  designComplexity: {
68938
    code: 18,
68939
    exclusive: true,
68940
    designLevel1: 0,
68941
    designLevel2: 1,
68942
    designLevel3: 2,
68943
    designLevel4: 3,
68944
    designLevel5: 4
68945
  },
68946
  styleOptions: {
68947
    code: 19,
68948
    exclusive: true,
68949
    noStyleOptions: 0,
68950
    displayText: 1,
68951
    engravedText: 2,
68952
    illuminatedCaps: 3,
68953
    titlingCaps: 4,
68954
    tallCaps: 5
68955
  },
68956
  characterShape: {
68957
    code: 20,
68958
    exclusive: true,
68959
    traditionalCharacters: 0,
68960
    simplifiedCharacters: 1,
68961
    JIS1978Characters: 2,
68962
    JIS1983Characters: 3,
68963
    JIS1990Characters: 4,
68964
    traditionalAltOne: 5,
68965
    traditionalAltTwo: 6,
68966
    traditionalAltThree: 7,
68967
    traditionalAltFour: 8,
68968
    traditionalAltFive: 9,
68969
    expertCharacters: 10,
68970
    JIS2004Characters: 11,
68971
    hojoCharacters: 12,
68972
    NLCCharacters: 13,
68973
    traditionalNamesCharacters: 14
68974
  },
68975
  numberCase: {
68976
    code: 21,
68977
    exclusive: true,
68978
    lowerCaseNumbers: 0,
68979
    upperCaseNumbers: 1
68980
  },
68981
  textSpacing: {
68982
    code: 22,
68983
    exclusive: true,
68984
    proportionalText: 0,
68985
    monospacedText: 1,
68986
    halfWidthText: 2,
68987
    thirdWidthText: 3,
68988
    quarterWidthText: 4,
68989
    altProportionalText: 5,
68990
    altHalfWidthText: 6
68991
  },
68992
  transliteration: {
68993
    code: 23,
68994
    exclusive: true,
68995
    noTransliteration: 0
68996
  },
68997
  // hanjaToHangul: 1
68998
  // hiraganaToKatakana: 2
68999
  // katakanaToHiragana: 3
69000
  // kanaToRomanization: 4
69001
  // romanizationToHiragana: 5
69002
  // romanizationToKatakana: 6
69003
  // hanjaToHangulAltOne: 7
69004
  // hanjaToHangulAltTwo: 8
69005
  // hanjaToHangulAltThree: 9
69006
  annotation: {
69007
    code: 24,
69008
    exclusive: true,
69009
    noAnnotation: 0,
69010
    boxAnnotation: 1,
69011
    roundedBoxAnnotation: 2,
69012
    circleAnnotation: 3,
69013
    invertedCircleAnnotation: 4,
69014
    parenthesisAnnotation: 5,
69015
    periodAnnotation: 6,
69016
    romanNumeralAnnotation: 7,
69017
    diamondAnnotation: 8,
69018
    invertedBoxAnnotation: 9,
69019
    invertedRoundedBoxAnnotation: 10
69020
  },
69021
  kanaSpacing: {
69022
    code: 25,
69023
    exclusive: true,
69024
    fullWidthKana: 0,
69025
    proportionalKana: 1
69026
  },
69027
  ideographicSpacing: {
69028
    code: 26,
69029
    exclusive: true,
69030
    fullWidthIdeographs: 0,
69031
    proportionalIdeographs: 1,
69032
    halfWidthIdeographs: 2
69033
  },
69034
  unicodeDecomposition: {
69035
    code: 27,
69036
    exclusive: false,
69037
    canonicalComposition: 0,
69038
    compatibilityComposition: 2,
69039
    transcodingComposition: 4
69040
  },
69041
  rubyKana: {
69042
    code: 28,
69043
    exclusive: false,
69044
    // noRubyKana: 0     # deprecated - use rubyKanaOff instead
69045
    // rubyKana: 1     # deprecated - use rubyKanaOn instead
69046
    rubyKana: 2
69047
  },
69048
  CJKSymbolAlternatives: {
69049
    code: 29,
69050
    exclusive: true,
69051
    noCJKSymbolAlternatives: 0,
69052
    CJKSymbolAltOne: 1,
69053
    CJKSymbolAltTwo: 2,
69054
    CJKSymbolAltThree: 3,
69055
    CJKSymbolAltFour: 4,
69056
    CJKSymbolAltFive: 5
69057
  },
69058
  ideographicAlternatives: {
69059
    code: 30,
69060
    exclusive: true,
69061
    noIdeographicAlternatives: 0,
69062
    ideographicAltOne: 1,
69063
    ideographicAltTwo: 2,
69064
    ideographicAltThree: 3,
69065
    ideographicAltFour: 4,
69066
    ideographicAltFive: 5
69067
  },
69068
  CJKVerticalRomanPlacement: {
69069
    code: 31,
69070
    exclusive: true,
69071
    CJKVerticalRomanCentered: 0,
69072
    CJKVerticalRomanHBaseline: 1
69073
  },
69074
  italicCJKRoman: {
69075
    code: 32,
69076
    exclusive: false,
69077
    // noCJKItalicRoman: 0     # deprecated - use CJKItalicRomanOff instead
69078
    // CJKItalicRoman: 1     # deprecated - use CJKItalicRomanOn instead
69079
    CJKItalicRoman: 2
69080
  },
69081
  caseSensitiveLayout: {
69082
    code: 33,
69083
    exclusive: false,
69084
    caseSensitiveLayout: 0,
69085
    caseSensitiveSpacing: 2
69086
  },
69087
  alternateKana: {
69088
    code: 34,
69089
    exclusive: false,
69090
    alternateHorizKana: 0,
69091
    alternateVertKana: 2
69092
  },
69093
  stylisticAlternatives: {
69094
    code: 35,
69095
    exclusive: false,
69096
    noStylisticAlternates: 0,
69097
    stylisticAltOne: 2,
69098
    stylisticAltTwo: 4,
69099
    stylisticAltThree: 6,
69100
    stylisticAltFour: 8,
69101
    stylisticAltFive: 10,
69102
    stylisticAltSix: 12,
69103
    stylisticAltSeven: 14,
69104
    stylisticAltEight: 16,
69105
    stylisticAltNine: 18,
69106
    stylisticAltTen: 20,
69107
    stylisticAltEleven: 22,
69108
    stylisticAltTwelve: 24,
69109
    stylisticAltThirteen: 26,
69110
    stylisticAltFourteen: 28,
69111
    stylisticAltFifteen: 30,
69112
    stylisticAltSixteen: 32,
69113
    stylisticAltSeventeen: 34,
69114
    stylisticAltEighteen: 36,
69115
    stylisticAltNineteen: 38,
69116
    stylisticAltTwenty: 40
69117
  },
69118
  contextualAlternates: {
69119
    code: 36,
69120
    exclusive: false,
69121
    contextualAlternates: 0,
69122
    swashAlternates: 2,
69123
    contextualSwashAlternates: 4
69124
  },
69125
  lowerCase: {
69126
    code: 37,
69127
    exclusive: true,
69128
    defaultLowerCase: 0,
69129
    lowerCaseSmallCaps: 1,
69130
    lowerCasePetiteCaps: 2
69131
  },
69132
  upperCase: {
69133
    code: 38,
69134
    exclusive: true,
69135
    defaultUpperCase: 0,
69136
    upperCaseSmallCaps: 1,
69137
    upperCasePetiteCaps: 2
69138
  },
69139
  languageTag: {
69140
    // indices into ltag table
69141
    code: 39,
69142
    exclusive: true
69143
  },
69144
  CJKRomanSpacing: {
69145
    code: 103,
69146
    exclusive: true,
69147
    halfWidthCJKRoman: 0,
69148
    proportionalCJKRoman: 1,
69149
    defaultCJKRoman: 2,
69150
    fullWidthCJKRoman: 3
69151
  }
69152
};
69153
var feature = function feature(name, selector) {
69154
  return [features[name].code, features[name][selector]];
69155
};
69156
var OTMapping = {
69157
  rlig: feature('ligatures', 'requiredLigatures'),
69158
  clig: feature('ligatures', 'contextualLigatures'),
69159
  dlig: feature('ligatures', 'rareLigatures'),
69160
  hlig: feature('ligatures', 'historicalLigatures'),
69161
  liga: feature('ligatures', 'commonLigatures'),
69162
  hist: feature('ligatures', 'historicalLigatures'),
69163
  // ??
69164
  smcp: feature('lowerCase', 'lowerCaseSmallCaps'),
69165
  pcap: feature('lowerCase', 'lowerCasePetiteCaps'),
69166
  frac: feature('fractions', 'diagonalFractions'),
69167
  dnom: feature('fractions', 'diagonalFractions'),
69168
  // ??
69169
  numr: feature('fractions', 'diagonalFractions'),
69170
  // ??
69171
  afrc: feature('fractions', 'verticalFractions'),
69172
  // aalt
69173
  // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?
69174
  // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?
69175
  // unic, vatu, vhal, vjmo, vpal, vrt2
69176
  // dist -> trak table?
69177
  // kern, vkrn -> kern table
69178
  // lfbd + opbd + rtbd -> opbd table?
69179
  // mark, mkmk -> acnt table?
69180
  // locl -> languageTag + ltag table
69181
  case: feature('caseSensitiveLayout', 'caseSensitiveLayout'),
69182
  // also caseSensitiveSpacing
69183
  ccmp: feature('unicodeDecomposition', 'canonicalComposition'),
69184
  // compatibilityComposition?
69185
  cpct: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),
69186
  // guess..., probably not given below
69187
  valt: feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),
69188
  swsh: feature('contextualAlternates', 'swashAlternates'),
69189
  cswh: feature('contextualAlternates', 'contextualSwashAlternates'),
69190
  curs: feature('cursiveConnection', 'cursive'),
69191
  // ??
69192
  c2pc: feature('upperCase', 'upperCasePetiteCaps'),
69193
  c2sc: feature('upperCase', 'upperCaseSmallCaps'),
69194
  init: feature('smartSwash', 'wordInitialSwashes'),
69195
  // ??
69196
  fin2: feature('smartSwash', 'wordFinalSwashes'),
69197
  // ??
69198
  medi: feature('smartSwash', 'nonFinalSwashes'),
69199
  // ??
69200
  med2: feature('smartSwash', 'nonFinalSwashes'),
69201
  // ??
69202
  fin3: feature('smartSwash', 'wordFinalSwashes'),
69203
  // ??
69204
  fina: feature('smartSwash', 'wordFinalSwashes'),
69205
  // ??
69206
  pkna: feature('kanaSpacing', 'proportionalKana'),
69207
  half: feature('textSpacing', 'halfWidthText'),
69208
  // also HalfWidthCJKRoman, HalfWidthIdeographs?
69209
  halt: feature('textSpacing', 'altHalfWidthText'),
69210
  hkna: feature('alternateKana', 'alternateHorizKana'),
69211
  vkna: feature('alternateKana', 'alternateVertKana'),
69212
  // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated
69213
  ital: feature('italicCJKRoman', 'CJKItalicRoman'),
69214
  lnum: feature('numberCase', 'upperCaseNumbers'),
69215
  onum: feature('numberCase', 'lowerCaseNumbers'),
69216
  mgrk: feature('mathematicalExtras', 'mathematicalGreek'),
69217
  // nalt: not enough info. what type of annotation?
69218
  // ornm: ditto, which ornament style?
69219
  calt: feature('contextualAlternates', 'contextualAlternates'),
69220
  // or more?
69221
  vrt2: feature('verticalSubstitution', 'substituteVerticalForms'),
69222
  // oh... below?
69223
  vert: feature('verticalSubstitution', 'substituteVerticalForms'),
69224
  tnum: feature('numberSpacing', 'monospacedNumbers'),
69225
  pnum: feature('numberSpacing', 'proportionalNumbers'),
69226
  sups: feature('verticalPosition', 'superiors'),
69227
  subs: feature('verticalPosition', 'inferiors'),
69228
  ordn: feature('verticalPosition', 'ordinals'),
69229
  pwid: feature('textSpacing', 'proportionalText'),
69230
  hwid: feature('textSpacing', 'halfWidthText'),
69231
  qwid: feature('textSpacing', 'quarterWidthText'),
69232
  // also QuarterWidthNumbers?
69233
  twid: feature('textSpacing', 'thirdWidthText'),
69234
  // also ThirdWidthNumbers?
69235
  fwid: feature('textSpacing', 'proportionalText'),
69236
  //??
69237
  palt: feature('textSpacing', 'altProportionalText'),
69238
  trad: feature('characterShape', 'traditionalCharacters'),
69239
  smpl: feature('characterShape', 'simplifiedCharacters'),
69240
  jp78: feature('characterShape', 'JIS1978Characters'),
69241
  jp83: feature('characterShape', 'JIS1983Characters'),
69242
  jp90: feature('characterShape', 'JIS1990Characters'),
69243
  jp04: feature('characterShape', 'JIS2004Characters'),
69244
  expt: feature('characterShape', 'expertCharacters'),
69245
  hojo: feature('characterShape', 'hojoCharacters'),
69246
  nlck: feature('characterShape', 'NLCCharacters'),
69247
  tnam: feature('characterShape', 'traditionalNamesCharacters'),
69248
  ruby: feature('rubyKana', 'rubyKana'),
69249
  titl: feature('styleOptions', 'titlingCaps'),
69250
  zero: feature('typographicExtras', 'slashedZero'),
69251
  ss01: feature('stylisticAlternatives', 'stylisticAltOne'),
69252
  ss02: feature('stylisticAlternatives', 'stylisticAltTwo'),
69253
  ss03: feature('stylisticAlternatives', 'stylisticAltThree'),
69254
  ss04: feature('stylisticAlternatives', 'stylisticAltFour'),
69255
  ss05: feature('stylisticAlternatives', 'stylisticAltFive'),
69256
  ss06: feature('stylisticAlternatives', 'stylisticAltSix'),
69257
  ss07: feature('stylisticAlternatives', 'stylisticAltSeven'),
69258
  ss08: feature('stylisticAlternatives', 'stylisticAltEight'),
69259
  ss09: feature('stylisticAlternatives', 'stylisticAltNine'),
69260
  ss10: feature('stylisticAlternatives', 'stylisticAltTen'),
69261
  ss11: feature('stylisticAlternatives', 'stylisticAltEleven'),
69262
  ss12: feature('stylisticAlternatives', 'stylisticAltTwelve'),
69263
  ss13: feature('stylisticAlternatives', 'stylisticAltThirteen'),
69264
  ss14: feature('stylisticAlternatives', 'stylisticAltFourteen'),
69265
  ss15: feature('stylisticAlternatives', 'stylisticAltFifteen'),
69266
  ss16: feature('stylisticAlternatives', 'stylisticAltSixteen'),
69267
  ss17: feature('stylisticAlternatives', 'stylisticAltSeventeen'),
69268
  ss18: feature('stylisticAlternatives', 'stylisticAltEighteen'),
69269
  ss19: feature('stylisticAlternatives', 'stylisticAltNineteen'),
69270
  ss20: feature('stylisticAlternatives', 'stylisticAltTwenty')
69271
}; // salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose
69272
// Add cv01-cv99 features
69273
69274
for (var i = 1; i <= 99; i++) {
69275
  OTMapping["cv".concat("00".concat(i).slice(-2))] = [features.characterAlternatives.code, i];
69276
} // create inverse mapping
69277
69278
var AATMapping = {};
69279
for (var ot in OTMapping) {
69280
  var aat = OTMapping[ot];
69281
  if (AATMapping[aat[0]] == null) {
69282
    AATMapping[aat[0]] = {};
69283
  }
69284
  AATMapping[aat[0]][aat[1]] = ot;
69285
} // Maps an array of OpenType features to AAT features
69286
// in the form of {featureType:{featureSetting:true}}
69287
69288
function mapOTToAAT(features) {
69289
  var res = {};
69290
  for (var k in features) {
69291
    var r = void 0;
69292
    if (r = OTMapping[k]) {
69293
      if (res[r[0]] == null) {
69294
        res[r[0]] = {};
69295
      }
69296
      res[r[0]][r[1]] = features[k];
69297
    }
69298
  }
69299
  return res;
69300
} // Maps strings in a [featureType, featureSetting]
69301
// to their equivalent number codes
69302
69303
function mapFeatureStrings(f) {
69304
  var type = f[0],
69305
    setting = f[1];
69306
  if (isNaN(type)) {
69307
    var typeCode = features[type] && features[type].code;
69308
  } else {
69309
    var typeCode = type;
69310
  }
69311
  if (isNaN(setting)) {
69312
    var settingCode = features[type] && features[type][setting];
69313
  } else {
69314
    var settingCode = setting;
69315
  }
69316
  return [typeCode, settingCode];
69317
} // Maps AAT features to an array of OpenType features
69318
// Supports both arrays in the form of [[featureType, featureSetting]]
69319
// and objects in the form of {featureType:{featureSetting:true}}
69320
// featureTypes and featureSettings can be either strings or number codes
69321
69322
function mapAATToOT(features) {
69323
  var res = {};
69324
  if (Array.isArray(features)) {
69325
    for (var k = 0; k < features.length; k++) {
69326
      var r = void 0;
69327
      var f = mapFeatureStrings(features[k]);
69328
      if (r = AATMapping[f[0]] && AATMapping[f[0]][f[1]]) {
69329
        res[r] = true;
69330
      }
69331
    }
69332
  } else if (typeof features === 'object') {
69333
    for (var type in features) {
69334
      var _feature = features[type];
69335
      for (var setting in _feature) {
69336
        var _r = void 0;
69337
        var _f = mapFeatureStrings([type, setting]);
69338
        if (_feature[setting] && (_r = AATMapping[_f[0]] && AATMapping[_f[0]][_f[1]])) {
69339
          res[_r] = true;
69340
        }
69341
      }
69342
    }
69343
  }
69344
  return Object.keys(res);
69345
}
69346
var _class$1;
69347
var AATLookupTable = (_class$1 = /*#__PURE__*/function () {
69348
  function AATLookupTable(table) {
69349
    this.table = table;
69350
  }
69351
  var _proto19 = AATLookupTable.prototype;
69352
  _proto19.lookup = function lookup(glyph) {
69353
    switch (this.table.version) {
69354
      case 0:
69355
        // simple array format
69356
        return this.table.values.getItem(glyph);
69357
      case 2: // segment format
69358
69359
      case 4:
69360
        {
69361
          var min = 0;
69362
          var max = this.table.binarySearchHeader.nUnits - 1;
69363
          while (min <= max) {
69364
            var mid = min + max >> 1;
69365
            var seg = this.table.segments[mid]; // special end of search value
69366
69367
            if (seg.firstGlyph === 0xffff) {
69368
              return null;
69369
            }
69370
            if (glyph < seg.firstGlyph) {
69371
              max = mid - 1;
69372
            } else if (glyph > seg.lastGlyph) {
69373
              min = mid + 1;
69374
            } else {
69375
              if (this.table.version === 2) {
69376
                return seg.value;
69377
              } else {
69378
                return seg.values[glyph - seg.firstGlyph];
69379
              }
69380
            }
69381
          }
69382
          return null;
69383
        }
69384
      case 6:
69385
        {
69386
          // lookup single
69387
          var _min = 0;
69388
          var _max = this.table.binarySearchHeader.nUnits - 1;
69389
          while (_min <= _max) {
69390
            var mid = _min + _max >> 1;
69391
            var seg = this.table.segments[mid]; // special end of search value
69392
69393
            if (seg.glyph === 0xffff) {
69394
              return null;
69395
            }
69396
            if (glyph < seg.glyph) {
69397
              _max = mid - 1;
69398
            } else if (glyph > seg.glyph) {
69399
              _min = mid + 1;
69400
            } else {
69401
              return seg.value;
69402
            }
69403
          }
69404
          return null;
69405
        }
69406
      case 8:
69407
        // lookup trimmed
69408
        return this.table.values[glyph - this.table.firstGlyph];
69409
      default:
69410
        throw new Error("Unknown lookup table format: ".concat(this.table.version));
69411
    }
69412
  };
69413
  _proto19.glyphsForValue = function glyphsForValue(classValue) {
69414
    var res = [];
69415
    switch (this.table.version) {
69416
      case 2: // segment format
69417
69418
      case 4:
69419
        {
69420
          for (var _iterator21 = _createForOfIteratorHelperLoose(this.table.segments), _step21; !(_step21 = _iterator21()).done;) {
69421
            var segment = _step21.value;
69422
            if (this.table.version === 2 && segment.value === classValue) {
69423
              res.push.apply(res, range(segment.firstGlyph, segment.lastGlyph + 1));
69424
            } else {
69425
              for (var index = 0; index < segment.values.length; index++) {
69426
                if (segment.values[index] === classValue) {
69427
                  res.push(segment.firstGlyph + index);
69428
                }
69429
              }
69430
            }
69431
          }
69432
          break;
69433
        }
69434
      case 6:
69435
        {
69436
          // lookup single
69437
          for (var _iterator22 = _createForOfIteratorHelperLoose(this.table.segments), _step22; !(_step22 = _iterator22()).done;) {
69438
            var _segment = _step22.value;
69439
            if (_segment.value === classValue) {
69440
              res.push(_segment.glyph);
69441
            }
69442
          }
69443
          break;
69444
        }
69445
      case 8:
69446
        {
69447
          // lookup trimmed
69448
          for (var i = 0; i < this.table.values.length; i++) {
69449
            if (this.table.values[i] === classValue) {
69450
              res.push(this.table.firstGlyph + i);
69451
            }
69452
          }
69453
          break;
69454
        }
69455
      default:
69456
        throw new Error("Unknown lookup table format: ".concat(this.table.version));
69457
    }
69458
    return res;
69459
  };
69460
  return AATLookupTable;
69461
}(), _applyDecoratedDescriptor(_class$1.prototype, "glyphsForValue", [cache], Object.getOwnPropertyDescriptor(_class$1.prototype, "glyphsForValue"), _class$1.prototype), _class$1);
69462
var START_OF_TEXT_STATE = 0;
69463
var END_OF_TEXT_CLASS = 0;
69464
var OUT_OF_BOUNDS_CLASS = 1;
69465
var DELETED_GLYPH_CLASS = 2;
69466
var DONT_ADVANCE = 0x4000;
69467
var AATStateMachine = /*#__PURE__*/function () {
69468
  function AATStateMachine(stateTable) {
69469
    this.stateTable = stateTable;
69470
    this.lookupTable = new AATLookupTable(stateTable.classTable);
69471
  }
69472
  var _proto20 = AATStateMachine.prototype;
69473
  _proto20.process = function process(glyphs, reverse, processEntry) {
69474
    var currentState = START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?
69475
69476
    var index = reverse ? glyphs.length - 1 : 0;
69477
    var dir = reverse ? -1 : 1;
69478
    while (dir === 1 && index <= glyphs.length || dir === -1 && index >= -1) {
69479
      var glyph = null;
69480
      var classCode = OUT_OF_BOUNDS_CLASS;
69481
      var shouldAdvance = true;
69482
      if (index === glyphs.length || index === -1) {
69483
        classCode = END_OF_TEXT_CLASS;
69484
      } else {
69485
        glyph = glyphs[index];
69486
        if (glyph.id === 0xffff) {
69487
          // deleted glyph
69488
          classCode = DELETED_GLYPH_CLASS;
69489
        } else {
69490
          classCode = this.lookupTable.lookup(glyph.id);
69491
          if (classCode == null) {
69492
            classCode = OUT_OF_BOUNDS_CLASS;
69493
          }
69494
        }
69495
      }
69496
      var row = this.stateTable.stateArray.getItem(currentState);
69497
      var entryIndex = row[classCode];
69498
      var entry = this.stateTable.entryTable.getItem(entryIndex);
69499
      if (classCode !== END_OF_TEXT_CLASS && classCode !== DELETED_GLYPH_CLASS) {
69500
        processEntry(glyph, entry, index);
69501
        shouldAdvance = !(entry.flags & DONT_ADVANCE);
69502
      }
69503
      currentState = entry.newState;
69504
      if (shouldAdvance) {
69505
        index += dir;
69506
      }
69507
    }
69508
    return glyphs;
69509
  }
69510
  /**
69511
   * Performs a depth-first traversal of the glyph strings
69512
   * represented by the state machine.
69513
   */;
69514
  _proto20.traverse = function traverse(opts, state, visited) {
69515
    if (state === void 0) {
69516
      state = 0;
69517
    }
69518
    if (visited === void 0) {
69519
      visited = new Set();
69520
    }
69521
    if (visited.has(state)) {
69522
      return;
69523
    }
69524
    visited.add(state);
69525
    var _this$stateTable = this.stateTable,
69526
      nClasses = _this$stateTable.nClasses,
69527
      stateArray = _this$stateTable.stateArray,
69528
      entryTable = _this$stateTable.entryTable;
69529
    var row = stateArray.getItem(state); // Skip predefined classes
69530
69531
    for (var classCode = 4; classCode < nClasses; classCode++) {
69532
      var entryIndex = row[classCode];
69533
      var entry = entryTable.getItem(entryIndex); // Try all glyphs in the class
69534
69535
      for (var _iterator23 = _createForOfIteratorHelperLoose(this.lookupTable.glyphsForValue(classCode)), _step23; !(_step23 = _iterator23()).done;) {
69536
        var glyph = _step23.value;
69537
        if (opts.enter) {
69538
          opts.enter(glyph, entry);
69539
        }
69540
        if (entry.newState !== 0) {
69541
          this.traverse(opts, entry.newState, visited);
69542
        }
69543
        if (opts.exit) {
69544
          opts.exit(glyph, entry);
69545
        }
69546
      }
69547
    }
69548
  };
69549
  return AATStateMachine;
69550
}();
69551
var _class$2;
69552
var MARK_FIRST = 0x8000;
69553
var MARK_LAST = 0x2000;
69554
var VERB = 0x000F; // contextual substitution and glyph insertion flag
69555
69556
var SET_MARK = 0x8000; // ligature entry flags
69557
69558
var SET_COMPONENT = 0x8000;
69559
var PERFORM_ACTION = 0x2000; // ligature action masks
69560
69561
var LAST_MASK = 0x80000000;
69562
var STORE_MASK = 0x40000000;
69563
var OFFSET_MASK = 0x3FFFFFFF;
69564
var REVERSE_DIRECTION = 0x400000;
69565
var CURRENT_INSERT_BEFORE = 0x0800;
69566
var MARKED_INSERT_BEFORE = 0x0400;
69567
var CURRENT_INSERT_COUNT = 0x03E0;
69568
var MARKED_INSERT_COUNT = 0x001F;
69569
var AATMorxProcessor = (_class$2 = /*#__PURE__*/function () {
69570
  function AATMorxProcessor(font) {
69571
    this.processIndicRearragement = this.processIndicRearragement.bind(this);
69572
    this.processContextualSubstitution = this.processContextualSubstitution.bind(this);
69573
    this.processLigature = this.processLigature.bind(this);
69574
    this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);
69575
    this.processGlyphInsertion = this.processGlyphInsertion.bind(this);
69576
    this.font = font;
69577
    this.morx = font.morx;
69578
    this.inputCache = null;
69579
  } // Processes an array of glyphs and applies the specified features
69580
  // Features should be in the form of {featureType:{featureSetting:boolean}}
69581
  var _proto21 = AATMorxProcessor.prototype;
69582
  _proto21.process = function process(glyphs, features) {
69583
    if (features === void 0) {
69584
      features = {};
69585
    }
69586
    for (var _iterator24 = _createForOfIteratorHelperLoose(this.morx.chains), _step24; !(_step24 = _iterator24()).done;) {
69587
      var chain = _step24.value;
69588
      var flags = chain.defaultFlags; // enable/disable the requested features
69589
69590
      for (var _iterator25 = _createForOfIteratorHelperLoose(chain.features), _step25; !(_step25 = _iterator25()).done;) {
69591
        var feature = _step25.value;
69592
        var f = void 0;
69593
        if (f = features[feature.featureType]) {
69594
          if (f[feature.featureSetting]) {
69595
            flags &= feature.disableFlags;
69596
            flags |= feature.enableFlags;
69597
          } else if (f[feature.featureSetting] === false) {
69598
            flags |= ~feature.disableFlags;
69599
            flags &= ~feature.enableFlags;
69600
          }
69601
        }
69602
      }
69603
      for (var _iterator26 = _createForOfIteratorHelperLoose(chain.subtables), _step26; !(_step26 = _iterator26()).done;) {
69604
        var subtable = _step26.value;
69605
        if (subtable.subFeatureFlags & flags) {
69606
          this.processSubtable(subtable, glyphs);
69607
        }
69608
      }
69609
    } // remove deleted glyphs
69610
69611
    var index = glyphs.length - 1;
69612
    while (index >= 0) {
69613
      if (glyphs[index].id === 0xffff) {
69614
        glyphs.splice(index, 1);
69615
      }
69616
      index--;
69617
    }
69618
    return glyphs;
69619
  };
69620
  _proto21.processSubtable = function processSubtable(subtable, glyphs) {
69621
    this.subtable = subtable;
69622
    this.glyphs = glyphs;
69623
    if (this.subtable.type === 4) {
69624
      this.processNoncontextualSubstitutions(this.subtable, this.glyphs);
69625
      return;
69626
    }
69627
    this.ligatureStack = [];
69628
    this.markedGlyph = null;
69629
    this.firstGlyph = null;
69630
    this.lastGlyph = null;
69631
    this.markedIndex = null;
69632
    var stateMachine = this.getStateMachine(subtable);
69633
    var process = this.getProcessor();
69634
    var reverse = !!(this.subtable.coverage & REVERSE_DIRECTION);
69635
    return stateMachine.process(this.glyphs, reverse, process);
69636
  };
69637
  _proto21.getStateMachine = function getStateMachine(subtable) {
69638
    return new AATStateMachine(subtable.table.stateTable);
69639
  };
69640
  _proto21.getProcessor = function getProcessor() {
69641
    switch (this.subtable.type) {
69642
      case 0:
69643
        return this.processIndicRearragement;
69644
      case 1:
69645
        return this.processContextualSubstitution;
69646
      case 2:
69647
        return this.processLigature;
69648
      case 4:
69649
        return this.processNoncontextualSubstitutions;
69650
      case 5:
69651
        return this.processGlyphInsertion;
69652
      default:
69653
        throw new Error("Invalid morx subtable type: ".concat(this.subtable.type));
69654
    }
69655
  };
69656
  _proto21.processIndicRearragement = function processIndicRearragement(glyph, entry, index) {
69657
    if (entry.flags & MARK_FIRST) {
69658
      this.firstGlyph = index;
69659
    }
69660
    if (entry.flags & MARK_LAST) {
69661
      this.lastGlyph = index;
69662
    }
69663
    reorderGlyphs(this.glyphs, entry.flags & VERB, this.firstGlyph, this.lastGlyph);
69664
  };
69665
  _proto21.processContextualSubstitution = function processContextualSubstitution(glyph, entry, index) {
69666
    var subsitutions = this.subtable.table.substitutionTable.items;
69667
    if (entry.markIndex !== 0xffff) {
69668
      var lookup = subsitutions.getItem(entry.markIndex);
69669
      var lookupTable = new AATLookupTable(lookup);
69670
      glyph = this.glyphs[this.markedGlyph];
69671
      var gid = lookupTable.lookup(glyph.id);
69672
      if (gid) {
69673
        this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);
69674
      }
69675
    }
69676
    if (entry.currentIndex !== 0xffff) {
69677
      var _lookup = subsitutions.getItem(entry.currentIndex);
69678
      var _lookupTable = new AATLookupTable(_lookup);
69679
      glyph = this.glyphs[index];
69680
      var gid = _lookupTable.lookup(glyph.id);
69681
      if (gid) {
69682
        this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);
69683
      }
69684
    }
69685
    if (entry.flags & SET_MARK) {
69686
      this.markedGlyph = index;
69687
    }
69688
  };
69689
  _proto21.processLigature = function processLigature(glyph, entry, index) {
69690
    if (entry.flags & SET_COMPONENT) {
69691
      this.ligatureStack.push(index);
69692
    }
69693
    if (entry.flags & PERFORM_ACTION) {
69694
      var _this$ligatureStack;
69695
      var actions = this.subtable.table.ligatureActions;
69696
      var components = this.subtable.table.components;
69697
      var ligatureList = this.subtable.table.ligatureList;
69698
      var actionIndex = entry.action;
69699
      var last = false;
69700
      var ligatureIndex = 0;
69701
      var codePoints = [];
69702
      var ligatureGlyphs = [];
69703
      while (!last) {
69704
        var _codePoints;
69705
        var componentGlyph = this.ligatureStack.pop();
69706
        (_codePoints = codePoints).unshift.apply(_codePoints, this.glyphs[componentGlyph].codePoints);
69707
        var action = actions.getItem(actionIndex++);
69708
        last = !!(action & LAST_MASK);
69709
        var store = !!(action & STORE_MASK);
69710
        var offset = (action & OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits
69711
69712
        offset += this.glyphs[componentGlyph].id;
69713
        var component = components.getItem(offset);
69714
        ligatureIndex += component;
69715
        if (last || store) {
69716
          var ligatureEntry = ligatureList.getItem(ligatureIndex);
69717
          this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);
69718
          ligatureGlyphs.push(componentGlyph);
69719
          ligatureIndex = 0;
69720
          codePoints = [];
69721
        } else {
69722
          this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);
69723
        }
69724
      } // Put ligature glyph indexes back on the stack
69725
69726
      (_this$ligatureStack = this.ligatureStack).push.apply(_this$ligatureStack, ligatureGlyphs);
69727
    }
69728
  };
69729
  _proto21.processNoncontextualSubstitutions = function processNoncontextualSubstitutions(subtable, glyphs, index) {
69730
    var lookupTable = new AATLookupTable(subtable.table.lookupTable);
69731
    for (index = 0; index < glyphs.length; index++) {
69732
      var glyph = glyphs[index];
69733
      if (glyph.id !== 0xffff) {
69734
        var gid = lookupTable.lookup(glyph.id);
69735
        if (gid) {
69736
          // 0 means do nothing
69737
          glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);
69738
        }
69739
      }
69740
    }
69741
  };
69742
  _proto21._insertGlyphs = function _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {
69743
    var _this$glyphs;
69744
    var insertions = [];
69745
    while (count--) {
69746
      var gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);
69747
      insertions.push(this.font.getGlyph(gid));
69748
    }
69749
    if (!isBefore) {
69750
      glyphIndex++;
69751
    }
69752
    (_this$glyphs = this.glyphs).splice.apply(_this$glyphs, [glyphIndex, 0].concat(insertions));
69753
  };
69754
  _proto21.processGlyphInsertion = function processGlyphInsertion(glyph, entry, index) {
69755
    if (entry.flags & SET_MARK) {
69756
      this.markedIndex = index;
69757
    }
69758
    if (entry.markedInsertIndex !== 0xffff) {
69759
      var count = (entry.flags & MARKED_INSERT_COUNT) >>> 5;
69760
      var isBefore = !!(entry.flags & MARKED_INSERT_BEFORE);
69761
      this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);
69762
    }
69763
    if (entry.currentInsertIndex !== 0xffff) {
69764
      var _count = (entry.flags & CURRENT_INSERT_COUNT) >>> 5;
69765
      var _isBefore = !!(entry.flags & CURRENT_INSERT_BEFORE);
69766
      this._insertGlyphs(index, entry.currentInsertIndex, _count, _isBefore);
69767
    }
69768
  };
69769
  _proto21.getSupportedFeatures = function getSupportedFeatures() {
69770
    var features = [];
69771
    for (var _iterator27 = _createForOfIteratorHelperLoose(this.morx.chains), _step27; !(_step27 = _iterator27()).done;) {
69772
      var chain = _step27.value;
69773
      for (var _iterator28 = _createForOfIteratorHelperLoose(chain.features), _step28; !(_step28 = _iterator28()).done;) {
69774
        var feature = _step28.value;
69775
        features.push([feature.featureType, feature.featureSetting]);
69776
      }
69777
    }
69778
    return features;
69779
  };
69780
  _proto21.generateInputs = function generateInputs(gid) {
69781
    if (!this.inputCache) {
69782
      this.generateInputCache();
69783
    }
69784
    return this.inputCache[gid] || [];
69785
  };
69786
  _proto21.generateInputCache = function generateInputCache() {
69787
    this.inputCache = {};
69788
    for (var _iterator29 = _createForOfIteratorHelperLoose(this.morx.chains), _step29; !(_step29 = _iterator29()).done;) {
69789
      var chain = _step29.value;
69790
      var flags = chain.defaultFlags;
69791
      for (var _iterator30 = _createForOfIteratorHelperLoose(chain.subtables), _step30; !(_step30 = _iterator30()).done;) {
69792
        var subtable = _step30.value;
69793
        if (subtable.subFeatureFlags & flags) {
69794
          this.generateInputsForSubtable(subtable);
69795
        }
69796
      }
69797
    }
69798
  };
69799
  _proto21.generateInputsForSubtable = function generateInputsForSubtable(subtable) {
69800
    var _this3 = this;
69801
    // Currently, only supporting ligature subtables.
69802
    if (subtable.type !== 2) {
69803
      return;
69804
    }
69805
    var reverse = !!(subtable.coverage & REVERSE_DIRECTION);
69806
    if (reverse) {
69807
      throw new Error('Reverse subtable, not supported.');
69808
    }
69809
    this.subtable = subtable;
69810
    this.ligatureStack = [];
69811
    var stateMachine = this.getStateMachine(subtable);
69812
    var process = this.getProcessor();
69813
    var input = [];
69814
    var stack = [];
69815
    this.glyphs = [];
69816
    stateMachine.traverse({
69817
      enter: function enter(glyph, entry) {
69818
        var glyphs = _this3.glyphs;
69819
        stack.push({
69820
          glyphs: glyphs.slice(),
69821
          ligatureStack: _this3.ligatureStack.slice()
69822
        }); // Add glyph to input and glyphs to process.
69823
69824
        var g = _this3.font.getGlyph(glyph);
69825
        input.push(g);
69826
        glyphs.push(input[input.length - 1]); // Process ligature substitution
69827
69828
        process(glyphs[glyphs.length - 1], entry, glyphs.length - 1); // Add input to result if only one matching (non-deleted) glyph remains.
69829
69830
        var count = 0;
69831
        var found = 0;
69832
        for (var i = 0; i < glyphs.length && count <= 1; i++) {
69833
          if (glyphs[i].id !== 0xffff) {
69834
            count++;
69835
            found = glyphs[i].id;
69836
          }
69837
        }
69838
        if (count === 1) {
69839
          var result = input.map(function (g) {
69840
            return g.id;
69841
          });
69842
          var _cache = _this3.inputCache[found];
69843
          if (_cache) {
69844
            _cache.push(result);
69845
          } else {
69846
            _this3.inputCache[found] = [result];
69847
          }
69848
        }
69849
      },
69850
      exit: function exit() {
69851
        var _stack$pop = stack.pop();
69852
        _this3.glyphs = _stack$pop.glyphs;
69853
        _this3.ligatureStack = _stack$pop.ligatureStack;
69854
        input.pop();
69855
      }
69856
    });
69857
  };
69858
  return AATMorxProcessor;
69859
}(), _applyDecoratedDescriptor(_class$2.prototype, "getStateMachine", [cache], Object.getOwnPropertyDescriptor(_class$2.prototype, "getStateMachine"), _class$2.prototype), _class$2);
69860
// reverse the glyphs inside those ranges if specified
69861
// ranges are in [offset, length] format
69862
69863
function swap(glyphs, rangeA, rangeB, reverseA, reverseB) {
69864
  if (reverseA === void 0) {
69865
    reverseA = false;
69866
  }
69867
  if (reverseB === void 0) {
69868
    reverseB = false;
69869
  }
69870
  var end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);
69871
  if (reverseB) {
69872
    end.reverse();
69873
  }
69874
  var start = glyphs.splice.apply(glyphs, [rangeA[0], rangeA[1]].concat(end));
69875
  if (reverseA) {
69876
    start.reverse();
69877
  }
69878
  glyphs.splice.apply(glyphs, [rangeB[0] - (rangeA[1] - 1), 0].concat(start));
69879
  return glyphs;
69880
}
69881
function reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {
69882
  switch (verb) {
69883
    case 0:
69884
      // no change
69885
      return glyphs;
69886
    case 1:
69887
      // Ax => xA
69888
      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 0]);
69889
    case 2:
69890
      // xD => Dx
69891
      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 1]);
69892
    case 3:
69893
      // AxD => DxA
69894
      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 1]);
69895
    case 4:
69896
      // ABx => xAB
69897
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0]);
69898
    case 5:
69899
      // ABx => xBA
69900
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 0], true, false);
69901
    case 6:
69902
      // xCD => CDx
69903
      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2]);
69904
    case 7:
69905
      // xCD => DCx
69906
      return swap(glyphs, [firstGlyph, 0], [lastGlyph, 2], false, true);
69907
    case 8:
69908
      // AxCD => CDxA
69909
      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2]);
69910
    case 9:
69911
      // AxCD => DCxA
69912
      return swap(glyphs, [firstGlyph, 1], [lastGlyph, 2], false, true);
69913
    case 10:
69914
      // ABxD => DxAB
69915
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1]);
69916
    case 11:
69917
      // ABxD => DxBA
69918
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 1], true, false);
69919
    case 12:
69920
      // ABxCD => CDxAB
69921
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2]);
69922
    case 13:
69923
      // ABxCD => CDxBA
69924
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, false);
69925
    case 14:
69926
      // ABxCD => DCxAB
69927
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], false, true);
69928
    case 15:
69929
      // ABxCD => DCxBA
69930
      return swap(glyphs, [firstGlyph, 2], [lastGlyph, 2], true, true);
69931
    default:
69932
      throw new Error("Unknown verb: ".concat(verb));
69933
  }
69934
}
69935
var AATLayoutEngine = /*#__PURE__*/function () {
69936
  function AATLayoutEngine(font) {
69937
    this.font = font;
69938
    this.morxProcessor = new AATMorxProcessor(font);
69939
    this.fallbackPosition = false;
69940
  }
69941
  var _proto22 = AATLayoutEngine.prototype;
69942
  _proto22.substitute = function substitute(glyphRun) {
69943
    // AAT expects the glyphs to be in visual order prior to morx processing,
69944
    // so reverse the glyphs if the script is right-to-left.
69945
    if (glyphRun.direction === 'rtl') {
69946
      glyphRun.glyphs.reverse();
69947
    }
69948
    this.morxProcessor.process(glyphRun.glyphs, mapOTToAAT(glyphRun.features));
69949
  };
69950
  _proto22.getAvailableFeatures = function getAvailableFeatures(script, language) {
69951
    return mapAATToOT(this.morxProcessor.getSupportedFeatures());
69952
  };
69953
  _proto22.stringsForGlyph = function stringsForGlyph(gid) {
69954
    var glyphStrings = this.morxProcessor.generateInputs(gid);
69955
    var result = new Set();
69956
    for (var _iterator31 = _createForOfIteratorHelperLoose(glyphStrings), _step31; !(_step31 = _iterator31()).done;) {
69957
      var glyphs = _step31.value;
69958
      this._addStrings(glyphs, 0, result, '');
69959
    }
69960
    return result;
69961
  };
69962
  _proto22._addStrings = function _addStrings(glyphs, index, strings, string) {
69963
    var codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);
69964
    for (var _iterator32 = _createForOfIteratorHelperLoose(codePoints), _step32; !(_step32 = _iterator32()).done;) {
69965
      var codePoint = _step32.value;
69966
      var s = string + String.fromCodePoint(codePoint);
69967
      if (index < glyphs.length - 1) {
69968
        this._addStrings(glyphs, index + 1, strings, s);
69969
      } else {
69970
        strings.add(s);
69971
      }
69972
    }
69973
  };
69974
  return AATLayoutEngine;
69975
}();
69976
/**
69977
 * ShapingPlans are used by the OpenType shapers to store which
69978
 * features should by applied, and in what order to apply them.
69979
 * The features are applied in groups called stages. A feature
69980
 * can be applied globally to all glyphs, or locally to only
69981
 * specific glyphs.
69982
 *
69983
 * @private
69984
 */
69985
var ShapingPlan = /*#__PURE__*/function () {
69986
  function ShapingPlan(font, script, direction) {
69987
    this.font = font;
69988
    this.script = script;
69989
    this.direction = direction;
69990
    this.stages = [];
69991
    this.globalFeatures = {};
69992
    this.allFeatures = {};
69993
  }
69994
  /**
69995
   * Adds the given features to the last stage.
69996
   * Ignores features that have already been applied.
69997
   */
69998
  var _proto23 = ShapingPlan.prototype;
69999
  _proto23._addFeatures = function _addFeatures(features, global) {
70000
    var stageIndex = this.stages.length - 1;
70001
    var stage = this.stages[stageIndex];
70002
    for (var _iterator33 = _createForOfIteratorHelperLoose(features), _step33; !(_step33 = _iterator33()).done;) {
70003
      var feature = _step33.value;
70004
      if (this.allFeatures[feature] == null) {
70005
        stage.push(feature);
70006
        this.allFeatures[feature] = stageIndex;
70007
        if (global) {
70008
          this.globalFeatures[feature] = true;
70009
        }
70010
      }
70011
    }
70012
  }
70013
  /**
70014
   * Add features to the last stage
70015
   */;
70016
  _proto23.add = function add(arg, global) {
70017
    if (global === void 0) {
70018
      global = true;
70019
    }
70020
    if (this.stages.length === 0) {
70021
      this.stages.push([]);
70022
    }
70023
    if (typeof arg === 'string') {
70024
      arg = [arg];
70025
    }
70026
    if (Array.isArray(arg)) {
70027
      this._addFeatures(arg, global);
70028
    } else if (typeof arg === 'object') {
70029
      this._addFeatures(arg.global || [], true);
70030
      this._addFeatures(arg.local || [], false);
70031
    } else {
70032
      throw new Error("Unsupported argument to ShapingPlan#add");
70033
    }
70034
  }
70035
  /**
70036
   * Add a new stage
70037
   */;
70038
  _proto23.addStage = function addStage(arg, global) {
70039
    if (typeof arg === 'function') {
70040
      this.stages.push(arg, []);
70041
    } else {
70042
      this.stages.push([]);
70043
      this.add(arg, global);
70044
    }
70045
  };
70046
  _proto23.setFeatureOverrides = function setFeatureOverrides(features) {
70047
    if (Array.isArray(features)) {
70048
      this.add(features);
70049
    } else if (typeof features === 'object') {
70050
      for (var tag in features) {
70051
        if (features[tag]) {
70052
          this.add(tag);
70053
        } else if (this.allFeatures[tag] != null) {
70054
          var stage = this.stages[this.allFeatures[tag]];
70055
          stage.splice(stage.indexOf(tag), 1);
70056
          delete this.allFeatures[tag];
70057
          delete this.globalFeatures[tag];
70058
        }
70059
      }
70060
    }
70061
  }
70062
  /**
70063
   * Assigns the global features to the given glyphs
70064
   */;
70065
  _proto23.assignGlobalFeatures = function assignGlobalFeatures(glyphs) {
70066
    for (var _iterator34 = _createForOfIteratorHelperLoose(glyphs), _step34; !(_step34 = _iterator34()).done;) {
70067
      var glyph = _step34.value;
70068
      for (var feature in this.globalFeatures) {
70069
        glyph.features[feature] = true;
70070
      }
70071
    }
70072
  }
70073
  /**
70074
   * Executes the planned stages using the given OTProcessor
70075
   */;
70076
  _proto23.process = function process(processor, glyphs, positions) {
70077
    for (var _iterator35 = _createForOfIteratorHelperLoose(this.stages), _step35; !(_step35 = _iterator35()).done;) {
70078
      var stage = _step35.value;
70079
      if (typeof stage === 'function') {
70080
        if (!positions) {
70081
          stage(this.font, glyphs, this);
70082
        }
70083
      } else if (stage.length > 0) {
70084
        processor.applyFeatures(stage, glyphs, positions);
70085
      }
70086
    }
70087
  };
70088
  return ShapingPlan;
70089
}();
70090
var VARIATION_FEATURES = ['rvrn'];
70091
var COMMON_FEATURES = ['ccmp', 'locl', 'rlig', 'mark', 'mkmk'];
70092
var FRACTIONAL_FEATURES = ['frac', 'numr', 'dnom'];
70093
var HORIZONTAL_FEATURES = ['calt', 'clig', 'liga', 'rclt', 'curs', 'kern'];
70094
var DIRECTIONAL_FEATURES = {
70095
  ltr: ['ltra', 'ltrm'],
70096
  rtl: ['rtla', 'rtlm']
70097
};
70098
var DefaultShaper = /*#__PURE__*/function () {
70099
  function DefaultShaper() {}
70100
  DefaultShaper.plan = function plan(_plan, glyphs, features) {
70101
    // Plan the features we want to apply
70102
    this.planPreprocessing(_plan);
70103
    this.planFeatures(_plan);
70104
    this.planPostprocessing(_plan, features); // Assign the global features to all the glyphs
70105
70106
    _plan.assignGlobalFeatures(glyphs); // Assign local features to glyphs
70107
70108
    this.assignFeatures(_plan, glyphs);
70109
  };
70110
  DefaultShaper.planPreprocessing = function planPreprocessing(plan) {
70111
    plan.add({
70112
      global: [].concat(VARIATION_FEATURES, DIRECTIONAL_FEATURES[plan.direction]),
70113
      local: FRACTIONAL_FEATURES
70114
    });
70115
  };
70116
  DefaultShaper.planFeatures = function planFeatures(plan) {// Do nothing by default. Let subclasses override this.
70117
  };
70118
  DefaultShaper.planPostprocessing = function planPostprocessing(plan, userFeatures) {
70119
    plan.add([].concat(COMMON_FEATURES, HORIZONTAL_FEATURES));
70120
    plan.setFeatureOverrides(userFeatures);
70121
  };
70122
  DefaultShaper.assignFeatures = function assignFeatures(plan, glyphs) {
70123
    // Enable contextual fractions
70124
    for (var i = 0; i < glyphs.length; i++) {
70125
      var glyph = glyphs[i];
70126
      if (glyph.codePoints[0] === 0x2044) {
70127
        // fraction slash
70128
        var start = i;
70129
        var end = i + 1; // Apply numerator
70130
70131
        while (start > 0 && unicode.isDigit(glyphs[start - 1].codePoints[0])) {
70132
          glyphs[start - 1].features.numr = true;
70133
          glyphs[start - 1].features.frac = true;
70134
          start--;
70135
        } // Apply denominator
70136
70137
        while (end < glyphs.length && unicode.isDigit(glyphs[end].codePoints[0])) {
70138
          glyphs[end].features.dnom = true;
70139
          glyphs[end].features.frac = true;
70140
          end++;
70141
        } // Apply fraction slash
70142
70143
        glyph.features.frac = true;
70144
        i = end - 1;
70145
      }
70146
    }
70147
  };
70148
  return DefaultShaper;
70149
}();
70150
_defineProperty(DefaultShaper, "zeroMarkWidths", 'AFTER_GPOS');
70151
var trie = new UnicodeTrie(Buffer("APABAAAAAAAAOAAAAf0BAv7tmi1MxDAUx7vtvjhAgcDgkEgEAnmXEBIMCYaEcygEiqBQ4FAkCE4ikUgMiiBJSAgSiUQSDMn9L9eSl6bddddug9t7yS/trevre+3r27pcNxZiG+yCfdCVv/9LeQxOwRm4AJegD27ALbgD9+ABPJF+z+BN/h7yDj5k/VOWX6SdmU5+wLWknggxDxaS8u0qiiX4uiz9XamQ3wzDMAzDMAzDMAzDVI/h959V/v7BMAzDMAzDMLlyNTNiMSdewVxbiA44B4/guz1qW58VYlMI0WsJ0W+N6kXw0spvPtdwhtkwnGM6uLaV4Xyzg3v3PM9DPfQ/sOg4xPWjipy31P8LTqbU304c/cLCUmWJLNB2Uz2U1KTeRKNmKHVMfbJC+/0loTZRH/W5cvEvBJPMbREkWt3FD1NcqXZBSpuE2Ad0PBehPtNrPtIEdYP+hiRt/V1jIiE69X4NT/uVZI3PUHE9bm5M7ePGdZWy951v7Nn6j8v1WWKP3mt6ttnsigx6VN7Vc0VomSSGqW2mGNP1muZPl7LfjNUaKNFtDGVf2fvE9O7VlBS5j333c5p/eeoOqcs1R/hIqDWLJ7TTlksirVT1SI7l8k4Yp+g3jafGcrU1RM6l9th80XOpnlN97bDNY4i4s61B0Si/ipa0uHMl6zqEjlFfCZm/TM8KmzQDjmuTAQ==","base64"));
70152
var FEATURES = ['isol', 'fina', 'fin2', 'fin3', 'medi', 'med2', 'init'];
70153
var ShapingClasses = {
70154
  Non_Joining: 0,
70155
  Left_Joining: 1,
70156
  Right_Joining: 2,
70157
  Dual_Joining: 3,
70158
  Join_Causing: 3,
70159
  ALAPH: 4,
70160
  'DALATH RISH': 5,
70161
  Transparent: 6
70162
};
70163
var ISOL = 'isol';
70164
var FINA = 'fina';
70165
var FIN2 = 'fin2';
70166
var FIN3 = 'fin3';
70167
var MEDI = 'medi';
70168
var MED2 = 'med2';
70169
var INIT = 'init';
70170
var NONE = null; // Each entry is [prevAction, curAction, nextState]
70171
70172
var STATE_TABLE = [
70173
//   Non_Joining,        Left_Joining,       Right_Joining,     Dual_Joining,           ALAPH,            DALATH RISH
70174
// State 0: prev was U,  not willing to join.
70175
[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 6]],
70176
// State 1: prev was R or ISOL/ALAPH,  not willing to join.
70177
[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN2, 5], [NONE, ISOL, 6]],
70178
// State 2: prev was D/L in ISOL form,  willing to join.
70179
[[NONE, NONE, 0], [NONE, ISOL, 2], [INIT, FINA, 1], [INIT, FINA, 3], [INIT, FINA, 4], [INIT, FINA, 6]],
70180
// State 3: prev was D in FINA form,  willing to join.
70181
[[NONE, NONE, 0], [NONE, ISOL, 2], [MEDI, FINA, 1], [MEDI, FINA, 3], [MEDI, FINA, 4], [MEDI, FINA, 6]],
70182
// State 4: prev was FINA ALAPH,  not willing to join.
70183
[[NONE, NONE, 0], [NONE, ISOL, 2], [MED2, ISOL, 1], [MED2, ISOL, 2], [MED2, FIN2, 5], [MED2, ISOL, 6]],
70184
// State 5: prev was FIN2/FIN3 ALAPH,  not willing to join.
70185
[[NONE, NONE, 0], [NONE, ISOL, 2], [ISOL, ISOL, 1], [ISOL, ISOL, 2], [ISOL, FIN2, 5], [ISOL, ISOL, 6]],
70186
// State 6: prev was DALATH/RISH,  not willing to join.
70187
[[NONE, NONE, 0], [NONE, ISOL, 2], [NONE, ISOL, 1], [NONE, ISOL, 2], [NONE, FIN3, 5], [NONE, ISOL, 6]]];
70188
/**
70189
 * This is a shaper for Arabic, and other cursive scripts.
70190
 * It uses data from ArabicShaping.txt in the Unicode database,
70191
 * compiled to a UnicodeTrie by generate-data.coffee.
70192
 *
70193
 * The shaping state machine was ported from Harfbuzz.
70194
 * https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-arabic.cc
70195
 */
70196
var ArabicShaper = /*#__PURE__*/function (_DefaultShaper) {
70197
  _inheritsLoose(ArabicShaper, _DefaultShaper);
70198
  function ArabicShaper() {
70199
    return _DefaultShaper.apply(this, arguments) || this;
70200
  }
70201
  ArabicShaper.planFeatures = function planFeatures(plan) {
70202
    plan.add(['ccmp', 'locl']);
70203
    for (var i = 0; i < FEATURES.length; i++) {
70204
      var feature = FEATURES[i];
70205
      plan.addStage(feature, false);
70206
    }
70207
    plan.addStage('mset');
70208
  };
70209
  ArabicShaper.assignFeatures = function assignFeatures(plan, glyphs) {
70210
    _DefaultShaper.assignFeatures.call(this, plan, glyphs);
70211
    var prev = -1;
70212
    var state = 0;
70213
    var actions = []; // Apply the state machine to map glyphs to features
70214
70215
    for (var i = 0; i < glyphs.length; i++) {
70216
      var curAction = void 0,
70217
        prevAction = void 0;
70218
      var glyph = glyphs[i];
70219
      var type = getShapingClass(glyph.codePoints[0]);
70220
      if (type === ShapingClasses.Transparent) {
70221
        actions[i] = NONE;
70222
        continue;
70223
      }
70224
      var _STATE_TABLE$state$ty = STATE_TABLE[state][type];
70225
      prevAction = _STATE_TABLE$state$ty[0];
70226
      curAction = _STATE_TABLE$state$ty[1];
70227
      state = _STATE_TABLE$state$ty[2];
70228
      if (prevAction !== NONE && prev !== -1) {
70229
        actions[prev] = prevAction;
70230
      }
70231
      actions[i] = curAction;
70232
      prev = i;
70233
    } // Apply the chosen features to their respective glyphs
70234
70235
    for (var index = 0; index < glyphs.length; index++) {
70236
      var feature = void 0;
70237
      var glyph = glyphs[index];
70238
      if (feature = actions[index]) {
70239
        glyph.features[feature] = true;
70240
      }
70241
    }
70242
  };
70243
  return ArabicShaper;
70244
}(DefaultShaper);
70245
function getShapingClass(codePoint) {
70246
  var res = trie.get(codePoint);
70247
  if (res) {
70248
    return res - 1;
70249
  }
70250
  var category = unicode.getCategory(codePoint);
70251
  if (category === 'Mn' || category === 'Me' || category === 'Cf') {
70252
    return ShapingClasses.Transparent;
70253
  }
70254
  return ShapingClasses.Non_Joining;
70255
}
70256
var GlyphIterator = /*#__PURE__*/function () {
70257
  function GlyphIterator(glyphs, options) {
70258
    this.glyphs = glyphs;
70259
    this.reset(options);
70260
  }
70261
  var _proto24 = GlyphIterator.prototype;
70262
  _proto24.reset = function reset(options, index) {
70263
    if (options === void 0) {
70264
      options = {};
70265
    }
70266
    if (index === void 0) {
70267
      index = 0;
70268
    }
70269
    this.options = options;
70270
    this.flags = options.flags || {};
70271
    this.markAttachmentType = options.markAttachmentType || 0;
70272
    this.index = index;
70273
  };
70274
  _proto24.shouldIgnore = function shouldIgnore(glyph) {
70275
    return this.flags.ignoreMarks && glyph.isMark || this.flags.ignoreBaseGlyphs && glyph.isBase || this.flags.ignoreLigatures && glyph.isLigature || this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType;
70276
  };
70277
  _proto24.move = function move(dir) {
70278
    this.index += dir;
70279
    while (0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index])) {
70280
      this.index += dir;
70281
    }
70282
    if (0 > this.index || this.index >= this.glyphs.length) {
70283
      return null;
70284
    }
70285
    return this.glyphs[this.index];
70286
  };
70287
  _proto24.next = function next() {
70288
    return this.move(+1);
70289
  };
70290
  _proto24.prev = function prev() {
70291
    return this.move(-1);
70292
  };
70293
  _proto24.peek = function peek(count) {
70294
    if (count === void 0) {
70295
      count = 1;
70296
    }
70297
    var idx = this.index;
70298
    var res = this.increment(count);
70299
    this.index = idx;
70300
    return res;
70301
  };
70302
  _proto24.peekIndex = function peekIndex(count) {
70303
    if (count === void 0) {
70304
      count = 1;
70305
    }
70306
    var idx = this.index;
70307
    this.increment(count);
70308
    var res = this.index;
70309
    this.index = idx;
70310
    return res;
70311
  };
70312
  _proto24.increment = function increment(count) {
70313
    if (count === void 0) {
70314
      count = 1;
70315
    }
70316
    var dir = count < 0 ? -1 : 1;
70317
    count = Math.abs(count);
70318
    while (count--) {
70319
      this.move(dir);
70320
    }
70321
    return this.glyphs[this.index];
70322
  };
70323
  _createClass(GlyphIterator, [{
70324
    key: "cur",
70325
    get: function get() {
70326
      return this.glyphs[this.index] || null;
70327
    }
70328
  }]);
70329
  return GlyphIterator;
70330
}();
70331
var DEFAULT_SCRIPTS = ['DFLT', 'dflt', 'latn'];
70332
var OTProcessor = /*#__PURE__*/function () {
70333
  function OTProcessor(font, table) {
70334
    this.font = font;
70335
    this.table = table;
70336
    this.script = null;
70337
    this.scriptTag = null;
70338
    this.language = null;
70339
    this.languageTag = null;
70340
    this.features = {};
70341
    this.lookups = {}; // Setup variation substitutions
70342
70343
    this.variationsIndex = font._variationProcessor ? this.findVariationsIndex(font._variationProcessor.normalizedCoords) : -1; // initialize to default script + language
70344
70345
    this.selectScript(); // current context (set by applyFeatures)
70346
70347
    this.glyphs = [];
70348
    this.positions = []; // only used by GPOS
70349
70350
    this.ligatureID = 1;
70351
    this.currentFeature = null;
70352
  }
70353
  var _proto25 = OTProcessor.prototype;
70354
  _proto25.findScript = function findScript(script) {
70355
    if (this.table.scriptList == null) {
70356
      return null;
70357
    }
70358
    if (!Array.isArray(script)) {
70359
      script = [script];
70360
    }
70361
    for (var _iterator36 = _createForOfIteratorHelperLoose(script), _step36; !(_step36 = _iterator36()).done;) {
70362
      var s = _step36.value;
70363
      for (var _iterator37 = _createForOfIteratorHelperLoose(this.table.scriptList), _step37; !(_step37 = _iterator37()).done;) {
70364
        var entry = _step37.value;
70365
        if (entry.tag === s) {
70366
          return entry;
70367
        }
70368
      }
70369
    }
70370
    return null;
70371
  };
70372
  _proto25.selectScript = function selectScript(script, language, direction$1) {
70373
    var changed = false;
70374
    var entry;
70375
    if (!this.script || script !== this.scriptTag) {
70376
      entry = this.findScript(script);
70377
      if (!entry) {
70378
        entry = this.findScript(DEFAULT_SCRIPTS);
70379
      }
70380
      if (!entry) {
70381
        return this.scriptTag;
70382
      }
70383
      this.scriptTag = entry.tag;
70384
      this.script = entry.script;
70385
      this.language = null;
70386
      this.languageTag = null;
70387
      changed = true;
70388
    }
70389
    if (!direction$1 || direction$1 !== this.direction) {
70390
      this.direction = direction$1 || direction(script);
70391
    }
70392
    if (language && language.length < 4) {
70393
      language += ' '.repeat(4 - language.length);
70394
    }
70395
    if (!language || language !== this.languageTag) {
70396
      this.language = null;
70397
      for (var _iterator38 = _createForOfIteratorHelperLoose(this.script.langSysRecords), _step38; !(_step38 = _iterator38()).done;) {
70398
        var lang = _step38.value;
70399
        if (lang.tag === language) {
70400
          this.language = lang.langSys;
70401
          this.languageTag = lang.tag;
70402
          break;
70403
        }
70404
      }
70405
      if (!this.language) {
70406
        this.language = this.script.defaultLangSys;
70407
        this.languageTag = null;
70408
      }
70409
      changed = true;
70410
    } // Build a feature lookup table
70411
70412
    if (changed) {
70413
      this.features = {};
70414
      if (this.language) {
70415
        for (var _iterator39 = _createForOfIteratorHelperLoose(this.language.featureIndexes), _step39; !(_step39 = _iterator39()).done;) {
70416
          var featureIndex = _step39.value;
70417
          var record = this.table.featureList[featureIndex];
70418
          var substituteFeature = this.substituteFeatureForVariations(featureIndex);
70419
          this.features[record.tag] = substituteFeature || record.feature;
70420
        }
70421
      }
70422
    }
70423
    return this.scriptTag;
70424
  };
70425
  _proto25.lookupsForFeatures = function lookupsForFeatures(userFeatures, exclude) {
70426
    if (userFeatures === void 0) {
70427
      userFeatures = [];
70428
    }
70429
    var lookups = [];
70430
    for (var _iterator40 = _createForOfIteratorHelperLoose(userFeatures), _step40; !(_step40 = _iterator40()).done;) {
70431
      var tag = _step40.value;
70432
      var feature = this.features[tag];
70433
      if (!feature) {
70434
        continue;
70435
      }
70436
      for (var _iterator41 = _createForOfIteratorHelperLoose(feature.lookupListIndexes), _step41; !(_step41 = _iterator41()).done;) {
70437
        var lookupIndex = _step41.value;
70438
        if (exclude && exclude.indexOf(lookupIndex) !== -1) {
70439
          continue;
70440
        }
70441
        lookups.push({
70442
          feature: tag,
70443
          index: lookupIndex,
70444
          lookup: this.table.lookupList.get(lookupIndex)
70445
        });
70446
      }
70447
    }
70448
    lookups.sort(function (a, b) {
70449
      return a.index - b.index;
70450
    });
70451
    return lookups;
70452
  };
70453
  _proto25.substituteFeatureForVariations = function substituteFeatureForVariations(featureIndex) {
70454
    if (this.variationsIndex === -1) {
70455
      return null;
70456
    }
70457
    var record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];
70458
    var substitutions = record.featureTableSubstitution.substitutions;
70459
    for (var _iterator42 = _createForOfIteratorHelperLoose(substitutions), _step42; !(_step42 = _iterator42()).done;) {
70460
      var substitution = _step42.value;
70461
      if (substitution.featureIndex === featureIndex) {
70462
        return substitution.alternateFeatureTable;
70463
      }
70464
    }
70465
    return null;
70466
  };
70467
  _proto25.findVariationsIndex = function findVariationsIndex(coords) {
70468
    var variations = this.table.featureVariations;
70469
    if (!variations) {
70470
      return -1;
70471
    }
70472
    var records = variations.featureVariationRecords;
70473
    for (var i = 0; i < records.length; i++) {
70474
      var conditions = records[i].conditionSet.conditionTable;
70475
      if (this.variationConditionsMatch(conditions, coords)) {
70476
        return i;
70477
      }
70478
    }
70479
    return -1;
70480
  };
70481
  _proto25.variationConditionsMatch = function variationConditionsMatch(conditions, coords) {
70482
    return conditions.every(function (condition) {
70483
      var coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;
70484
      return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;
70485
    });
70486
  };
70487
  _proto25.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {
70488
    var lookups = this.lookupsForFeatures(userFeatures);
70489
    this.applyLookups(lookups, glyphs, advances);
70490
  };
70491
  _proto25.applyLookups = function applyLookups(lookups, glyphs, positions) {
70492
    this.glyphs = glyphs;
70493
    this.positions = positions;
70494
    this.glyphIterator = new GlyphIterator(glyphs);
70495
    for (var _iterator43 = _createForOfIteratorHelperLoose(lookups), _step43; !(_step43 = _iterator43()).done;) {
70496
      var _step43$value = _step43.value,
70497
        feature = _step43$value.feature,
70498
        lookup = _step43$value.lookup;
70499
      this.currentFeature = feature;
70500
      this.glyphIterator.reset(lookup.flags);
70501
      while (this.glyphIterator.index < glyphs.length) {
70502
        if (!(feature in this.glyphIterator.cur.features)) {
70503
          this.glyphIterator.next();
70504
          continue;
70505
        }
70506
        for (var _iterator44 = _createForOfIteratorHelperLoose(lookup.subTables), _step44; !(_step44 = _iterator44()).done;) {
70507
          var table = _step44.value;
70508
          var res = this.applyLookup(lookup.lookupType, table);
70509
          if (res) {
70510
            break;
70511
          }
70512
        }
70513
        this.glyphIterator.next();
70514
      }
70515
    }
70516
  };
70517
  _proto25.applyLookup = function applyLookup(lookup, table) {
70518
    throw new Error("applyLookup must be implemented by subclasses");
70519
  };
70520
  _proto25.applyLookupList = function applyLookupList(lookupRecords) {
70521
    var options = this.glyphIterator.options;
70522
    var glyphIndex = this.glyphIterator.index;
70523
    for (var _iterator45 = _createForOfIteratorHelperLoose(lookupRecords), _step45; !(_step45 = _iterator45()).done;) {
70524
      var lookupRecord = _step45.value;
70525
      // Reset flags and find glyph index for this lookup record
70526
      this.glyphIterator.reset(options, glyphIndex);
70527
      this.glyphIterator.increment(lookupRecord.sequenceIndex); // Get the lookup and setup flags for subtables
70528
70529
      var lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);
70530
      this.glyphIterator.reset(lookup.flags, this.glyphIterator.index); // Apply lookup subtables until one matches
70531
70532
      for (var _iterator46 = _createForOfIteratorHelperLoose(lookup.subTables), _step46; !(_step46 = _iterator46()).done;) {
70533
        var table = _step46.value;
70534
        if (this.applyLookup(lookup.lookupType, table)) {
70535
          break;
70536
        }
70537
      }
70538
    }
70539
    this.glyphIterator.reset(options, glyphIndex);
70540
    return true;
70541
  };
70542
  _proto25.coverageIndex = function coverageIndex(coverage, glyph) {
70543
    if (glyph == null) {
70544
      glyph = this.glyphIterator.cur.id;
70545
    }
70546
    switch (coverage.version) {
70547
      case 1:
70548
        return coverage.glyphs.indexOf(glyph);
70549
      case 2:
70550
        for (var _iterator47 = _createForOfIteratorHelperLoose(coverage.rangeRecords), _step47; !(_step47 = _iterator47()).done;) {
70551
          var range = _step47.value;
70552
          if (range.start <= glyph && glyph <= range.end) {
70553
            return range.startCoverageIndex + glyph - range.start;
70554
          }
70555
        }
70556
        break;
70557
    }
70558
    return -1;
70559
  };
70560
  _proto25.match = function match(sequenceIndex, sequence, fn, matched) {
70561
    var pos = this.glyphIterator.index;
70562
    var glyph = this.glyphIterator.increment(sequenceIndex);
70563
    var idx = 0;
70564
    while (idx < sequence.length && glyph && fn(sequence[idx], glyph)) {
70565
      if (matched) {
70566
        matched.push(this.glyphIterator.index);
70567
      }
70568
      idx++;
70569
      glyph = this.glyphIterator.next();
70570
    }
70571
    this.glyphIterator.index = pos;
70572
    if (idx < sequence.length) {
70573
      return false;
70574
    }
70575
    return matched || true;
70576
  };
70577
  _proto25.sequenceMatches = function sequenceMatches(sequenceIndex, sequence) {
70578
    return this.match(sequenceIndex, sequence, function (component, glyph) {
70579
      return component === glyph.id;
70580
    });
70581
  };
70582
  _proto25.sequenceMatchIndices = function sequenceMatchIndices(sequenceIndex, sequence) {
70583
    var _this4 = this;
70584
    return this.match(sequenceIndex, sequence, function (component, glyph) {
70585
      // If the current feature doesn't apply to this glyph,
70586
      if (!(_this4.currentFeature in glyph.features)) {
70587
        return false;
70588
      }
70589
      return component === glyph.id;
70590
    }, []);
70591
  };
70592
  _proto25.coverageSequenceMatches = function coverageSequenceMatches(sequenceIndex, sequence) {
70593
    var _this5 = this;
70594
    return this.match(sequenceIndex, sequence, function (coverage, glyph) {
70595
      return _this5.coverageIndex(coverage, glyph.id) >= 0;
70596
    });
70597
  };
70598
  _proto25.getClassID = function getClassID(glyph, classDef) {
70599
    switch (classDef.version) {
70600
      case 1:
70601
        // Class array
70602
        var i = glyph - classDef.startGlyph;
70603
        if (i >= 0 && i < classDef.classValueArray.length) {
70604
          return classDef.classValueArray[i];
70605
        }
70606
        break;
70607
      case 2:
70608
        for (var _iterator48 = _createForOfIteratorHelperLoose(classDef.classRangeRecord), _step48; !(_step48 = _iterator48()).done;) {
70609
          var range = _step48.value;
70610
          if (range.start <= glyph && glyph <= range.end) {
70611
            return range.class;
70612
          }
70613
        }
70614
        break;
70615
    }
70616
    return 0;
70617
  };
70618
  _proto25.classSequenceMatches = function classSequenceMatches(sequenceIndex, sequence, classDef) {
70619
    var _this6 = this;
70620
    return this.match(sequenceIndex, sequence, function (classID, glyph) {
70621
      return classID === _this6.getClassID(glyph.id, classDef);
70622
    });
70623
  };
70624
  _proto25.applyContext = function applyContext(table) {
70625
    switch (table.version) {
70626
      case 1:
70627
        var index = this.coverageIndex(table.coverage);
70628
        if (index === -1) {
70629
          return false;
70630
        }
70631
        var set = table.ruleSets[index];
70632
        for (var _iterator49 = _createForOfIteratorHelperLoose(set), _step49; !(_step49 = _iterator49()).done;) {
70633
          var rule = _step49.value;
70634
          if (this.sequenceMatches(1, rule.input)) {
70635
            return this.applyLookupList(rule.lookupRecords);
70636
          }
70637
        }
70638
        break;
70639
      case 2:
70640
        if (this.coverageIndex(table.coverage) === -1) {
70641
          return false;
70642
        }
70643
        index = this.getClassID(this.glyphIterator.cur.id, table.classDef);
70644
        if (index === -1) {
70645
          return false;
70646
        }
70647
        set = table.classSet[index];
70648
        for (var _iterator50 = _createForOfIteratorHelperLoose(set), _step50; !(_step50 = _iterator50()).done;) {
70649
          var _rule = _step50.value;
70650
          if (this.classSequenceMatches(1, _rule.classes, table.classDef)) {
70651
            return this.applyLookupList(_rule.lookupRecords);
70652
          }
70653
        }
70654
        break;
70655
      case 3:
70656
        if (this.coverageSequenceMatches(0, table.coverages)) {
70657
          return this.applyLookupList(table.lookupRecords);
70658
        }
70659
        break;
70660
    }
70661
    return false;
70662
  };
70663
  _proto25.applyChainingContext = function applyChainingContext(table) {
70664
    switch (table.version) {
70665
      case 1:
70666
        var index = this.coverageIndex(table.coverage);
70667
        if (index === -1) {
70668
          return false;
70669
        }
70670
        var set = table.chainRuleSets[index];
70671
        for (var _iterator51 = _createForOfIteratorHelperLoose(set), _step51; !(_step51 = _iterator51()).done;) {
70672
          var rule = _step51.value;
70673
          if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack) && this.sequenceMatches(1, rule.input) && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) {
70674
            return this.applyLookupList(rule.lookupRecords);
70675
          }
70676
        }
70677
        break;
70678
      case 2:
70679
        if (this.coverageIndex(table.coverage) === -1) {
70680
          return false;
70681
        }
70682
        index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);
70683
        var rules = table.chainClassSet[index];
70684
        if (!rules) {
70685
          return false;
70686
        }
70687
        for (var _iterator52 = _createForOfIteratorHelperLoose(rules), _step52; !(_step52 = _iterator52()).done;) {
70688
          var _rule2 = _step52.value;
70689
          if (this.classSequenceMatches(-_rule2.backtrack.length, _rule2.backtrack, table.backtrackClassDef) && this.classSequenceMatches(1, _rule2.input, table.inputClassDef) && this.classSequenceMatches(1 + _rule2.input.length, _rule2.lookahead, table.lookaheadClassDef)) {
70690
            return this.applyLookupList(_rule2.lookupRecords);
70691
          }
70692
        }
70693
        break;
70694
      case 3:
70695
        if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) && this.coverageSequenceMatches(0, table.inputCoverage) && this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) {
70696
          return this.applyLookupList(table.lookupRecords);
70697
        }
70698
        break;
70699
    }
70700
    return false;
70701
  };
70702
  return OTProcessor;
70703
}();
70704
var GlyphInfo = /*#__PURE__*/function () {
70705
  function GlyphInfo(font, id, codePoints, features) {
70706
    if (codePoints === void 0) {
70707
      codePoints = [];
70708
    }
70709
    this._font = font;
70710
    this.codePoints = codePoints;
70711
    this.id = id;
70712
    this.features = {};
70713
    if (Array.isArray(features)) {
70714
      for (var i = 0; i < features.length; i++) {
70715
        var feature = features[i];
70716
        this.features[feature] = true;
70717
      }
70718
    } else if (typeof features === 'object') {
70719
      Object.assign(this.features, features);
70720
    }
70721
    this.ligatureID = null;
70722
    this.ligatureComponent = null;
70723
    this.isLigated = false;
70724
    this.cursiveAttachment = null;
70725
    this.markAttachment = null;
70726
    this.shaperInfo = null;
70727
    this.substituted = false;
70728
    this.isMultiplied = false;
70729
  }
70730
  var _proto26 = GlyphInfo.prototype;
70731
  _proto26.copy = function copy() {
70732
    return new GlyphInfo(this._font, this.id, this.codePoints, this.features);
70733
  };
70734
  _createClass(GlyphInfo, [{
70735
    key: "id",
70736
    get: function get() {
70737
      return this._id;
70738
    },
70739
    set: function set(id) {
70740
      this._id = id;
70741
      this.substituted = true;
70742
      var GDEF = this._font.GDEF;
70743
      if (GDEF && GDEF.glyphClassDef) {
70744
        // TODO: clean this up
70745
        var classID = OTProcessor.prototype.getClassID(id, GDEF.glyphClassDef);
70746
        this.isBase = classID === 1;
70747
        this.isLigature = classID === 2;
70748
        this.isMark = classID === 3;
70749
        this.markAttachmentType = GDEF.markAttachClassDef ? OTProcessor.prototype.getClassID(id, GDEF.markAttachClassDef) : 0;
70750
      } else {
70751
        this.isMark = this.codePoints.length > 0 && this.codePoints.every(unicode.isMark);
70752
        this.isBase = !this.isMark;
70753
        this.isLigature = this.codePoints.length > 1;
70754
        this.markAttachmentType = 0;
70755
      }
70756
    }
70757
  }]);
70758
  return GlyphInfo;
70759
}();
70760
/**
70761
 * This is a shaper for the Hangul script, used by the Korean language.
70762
 * It does the following:
70763
 *   - decompose if unsupported by the font:
70764
 *     <LV>   -> <L,V>
70765
 *     <LVT>  -> <L,V,T>
70766
 *     <LV,T> -> <L,V,T>
70767
 *
70768
 *   - compose if supported by the font:
70769
 *     <L,V>   -> <LV>
70770
 *     <L,V,T> -> <LVT>
70771
 *     <LV,T>  -> <LVT>
70772
 *
70773
 *   - reorder tone marks (S is any valid syllable):
70774
 *     <S, M> -> <M, S>
70775
 *
70776
 *   - apply ljmo, vjmo, and tjmo OpenType features to decomposed Jamo sequences.
70777
 *
70778
 * This logic is based on the following documents:
70779
 *   - http://www.microsoft.com/typography/OpenTypeDev/hangul/intro.htm
70780
 *   - http://ktug.org/~nomos/harfbuzz-hangul/hangulshaper.pdf
70781
 */
70782
var HangulShaper = /*#__PURE__*/function (_DefaultShaper2) {
70783
  _inheritsLoose(HangulShaper, _DefaultShaper2);
70784
  function HangulShaper() {
70785
    return _DefaultShaper2.apply(this, arguments) || this;
70786
  }
70787
  HangulShaper.planFeatures = function planFeatures(plan) {
70788
    plan.add(['ljmo', 'vjmo', 'tjmo'], false);
70789
  };
70790
  HangulShaper.assignFeatures = function assignFeatures(plan, glyphs) {
70791
    var state = 0;
70792
    var i = 0;
70793
    while (i < glyphs.length) {
70794
      var action = void 0;
70795
      var glyph = glyphs[i];
70796
      var code = glyph.codePoints[0];
70797
      var type = getType(code);
70798
      var _STATE_TABLE$1$state$ = STATE_TABLE$1[state][type];
70799
      action = _STATE_TABLE$1$state$[0];
70800
      state = _STATE_TABLE$1$state$[1];
70801
      switch (action) {
70802
        case DECOMPOSE:
70803
          // Decompose the composed syllable if it is not supported by the font.
70804
          if (!plan.font.hasGlyphForCodePoint(code)) {
70805
            i = decompose(glyphs, i, plan.font);
70806
          }
70807
          break;
70808
        case COMPOSE:
70809
          // Found a decomposed syllable. Try to compose if supported by the font.
70810
          i = compose(glyphs, i, plan.font);
70811
          break;
70812
        case TONE_MARK:
70813
          // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.
70814
          reorderToneMark(glyphs, i, plan.font);
70815
          break;
70816
        case INVALID:
70817
          // Tone mark has no valid syllable to attach to, so insert a dotted circle
70818
          i = insertDottedCircle(glyphs, i, plan.font);
70819
          break;
70820
      }
70821
      i++;
70822
    }
70823
  };
70824
  return HangulShaper;
70825
}(DefaultShaper);
70826
_defineProperty(HangulShaper, "zeroMarkWidths", 'NONE');
70827
var HANGUL_BASE = 0xac00;
70828
var HANGUL_END = 0xd7a4;
70829
var HANGUL_COUNT = HANGUL_END - HANGUL_BASE + 1;
70830
var L_BASE = 0x1100; // lead
70831
70832
var V_BASE = 0x1161; // vowel
70833
70834
var T_BASE = 0x11a7; // trail
70835
70836
var L_COUNT = 19;
70837
var V_COUNT = 21;
70838
var T_COUNT = 28;
70839
var L_END = L_BASE + L_COUNT - 1;
70840
var V_END = V_BASE + V_COUNT - 1;
70841
var T_END = T_BASE + T_COUNT - 1;
70842
var DOTTED_CIRCLE = 0x25cc;
70843
var isL = function isL(code) {
70844
  return 0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;
70845
};
70846
var isV = function isV(code) {
70847
  return 0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;
70848
};
70849
var isT = function isT(code) {
70850
  return 0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;
70851
};
70852
var isTone = function isTone(code) {
70853
  return 0x302e <= code && code <= 0x302f;
70854
};
70855
var isLVT = function isLVT(code) {
70856
  return HANGUL_BASE <= code && code <= HANGUL_END;
70857
};
70858
var isLV = function isLV(code) {
70859
  return code - HANGUL_BASE < HANGUL_COUNT && (code - HANGUL_BASE) % T_COUNT === 0;
70860
};
70861
var isCombiningL = function isCombiningL(code) {
70862
  return L_BASE <= code && code <= L_END;
70863
};
70864
var isCombiningV = function isCombiningV(code) {
70865
  return V_BASE <= code && code <= V_END;
70866
};
70867
var isCombiningT = function isCombiningT(code) {
70868
  return 1 <= code && code <= T_END;
70869
}; // Character categories
70870
70871
var X = 0; // Other character
70872
70873
var L = 1; // Leading consonant
70874
70875
var V = 2; // Medial vowel
70876
70877
var T = 3; // Trailing consonant
70878
70879
var LV = 4; // Composed <LV> syllable
70880
70881
var LVT = 5; // Composed <LVT> syllable
70882
70883
var M = 6; // Tone mark
70884
// This function classifies a character using the above categories.
70885
70886
function getType(code) {
70887
  if (isL(code)) {
70888
    return L;
70889
  }
70890
  if (isV(code)) {
70891
    return V;
70892
  }
70893
  if (isT(code)) {
70894
    return T;
70895
  }
70896
  if (isLV(code)) {
70897
    return LV;
70898
  }
70899
  if (isLVT(code)) {
70900
    return LVT;
70901
  }
70902
  if (isTone(code)) {
70903
    return M;
70904
  }
70905
  return X;
70906
} // State machine actions
70907
70908
var NO_ACTION = 0;
70909
var DECOMPOSE = 1;
70910
var COMPOSE = 2;
70911
var TONE_MARK = 4;
70912
var INVALID = 5; // Build a state machine that accepts valid syllables, and applies actions along the way.
70913
// The logic this is implementing is documented at the top of the file.
70914
70915
var STATE_TABLE$1 = [
70916
//       X                 L                 V                T                  LV                LVT               M
70917
// State 0: start state
70918
[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],
70919
// State 1: <L>
70920
[[NO_ACTION, 0], [NO_ACTION, 1], [COMPOSE, 2], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [INVALID, 0]],
70921
// State 2: <L,V> or <LV>
70922
[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [COMPOSE, 3], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]],
70923
// State 3: <L,V,T> or <LVT>
70924
[[NO_ACTION, 0], [NO_ACTION, 1], [NO_ACTION, 0], [NO_ACTION, 0], [DECOMPOSE, 2], [DECOMPOSE, 3], [TONE_MARK, 0]]];
70925
function getGlyph(font, code, features) {
70926
  return new GlyphInfo(font, font.glyphForCodePoint(code).id, [code], features);
70927
}
70928
function decompose(glyphs, i, font) {
70929
  var glyph = glyphs[i];
70930
  var code = glyph.codePoints[0];
70931
  var s = code - HANGUL_BASE;
70932
  var t = T_BASE + s % T_COUNT;
70933
  s = s / T_COUNT | 0;
70934
  var l = L_BASE + s / V_COUNT | 0;
70935
  var v = V_BASE + s % V_COUNT; // Don't decompose if all of the components are not available
70936
70937
  if (!font.hasGlyphForCodePoint(l) || !font.hasGlyphForCodePoint(v) || t !== T_BASE && !font.hasGlyphForCodePoint(t)) {
70938
    return i;
70939
  } // Replace the current glyph with decomposed L, V, and T glyphs,
70940
  // and apply the proper OpenType features to each component.
70941
70942
  var ljmo = getGlyph(font, l, glyph.features);
70943
  ljmo.features.ljmo = true;
70944
  var vjmo = getGlyph(font, v, glyph.features);
70945
  vjmo.features.vjmo = true;
70946
  var insert = [ljmo, vjmo];
70947
  if (t > T_BASE) {
70948
    var tjmo = getGlyph(font, t, glyph.features);
70949
    tjmo.features.tjmo = true;
70950
    insert.push(tjmo);
70951
  }
70952
  glyphs.splice.apply(glyphs, [i, 1].concat(insert));
70953
  return i + insert.length - 1;
70954
}
70955
function compose(glyphs, i, font) {
70956
  var glyph = glyphs[i];
70957
  var code = glyphs[i].codePoints[0];
70958
  var type = getType(code);
70959
  var prev = glyphs[i - 1].codePoints[0];
70960
  var prevType = getType(prev); // Figure out what type of syllable we're dealing with
70961
70962
  var lv, ljmo, vjmo, tjmo;
70963
  if (prevType === LV && type === T) {
70964
    // <LV,T>
70965
    lv = prev;
70966
    tjmo = glyph;
70967
  } else {
70968
    if (type === V) {
70969
      // <L,V>
70970
      ljmo = glyphs[i - 1];
70971
      vjmo = glyph;
70972
    } else {
70973
      // <L,V,T>
70974
      ljmo = glyphs[i - 2];
70975
      vjmo = glyphs[i - 1];
70976
      tjmo = glyph;
70977
    }
70978
    var l = ljmo.codePoints[0];
70979
    var v = vjmo.codePoints[0]; // Make sure L and V are combining characters
70980
70981
    if (isCombiningL(l) && isCombiningV(v)) {
70982
      lv = HANGUL_BASE + ((l - L_BASE) * V_COUNT + (v - V_BASE)) * T_COUNT;
70983
    }
70984
  }
70985
  var t = tjmo && tjmo.codePoints[0] || T_BASE;
70986
  if (lv != null && (t === T_BASE || isCombiningT(t))) {
70987
    var s = lv + (t - T_BASE); // Replace with a composed glyph if supported by the font,
70988
    // otherwise apply the proper OpenType features to each component.
70989
70990
    if (font.hasGlyphForCodePoint(s)) {
70991
      var del = prevType === V ? 3 : 2;
70992
      glyphs.splice(i - del + 1, del, getGlyph(font, s, glyph.features));
70993
      return i - del + 1;
70994
    }
70995
  } // Didn't compose (either a non-combining component or unsupported by font).
70996
70997
  if (ljmo) {
70998
    ljmo.features.ljmo = true;
70999
  }
71000
  if (vjmo) {
71001
    vjmo.features.vjmo = true;
71002
  }
71003
  if (tjmo) {
71004
    tjmo.features.tjmo = true;
71005
  }
71006
  if (prevType === LV) {
71007
    // Sequence was originally <L,V>, which got combined earlier.
71008
    // Either the T was non-combining, or the LVT glyph wasn't supported.
71009
    // Decompose the glyph again and apply OT features.
71010
    decompose(glyphs, i - 1, font);
71011
    return i + 1;
71012
  }
71013
  return i;
71014
}
71015
function getLength(code) {
71016
  switch (getType(code)) {
71017
    case LV:
71018
    case LVT:
71019
      return 1;
71020
    case V:
71021
      return 2;
71022
    case T:
71023
      return 3;
71024
  }
71025
}
71026
function reorderToneMark(glyphs, i, font) {
71027
  var glyph = glyphs[i];
71028
  var code = glyphs[i].codePoints[0]; // Move tone mark to the beginning of the previous syllable, unless it is zero width
71029
71030
  if (font.glyphForCodePoint(code).advanceWidth === 0) {
71031
    return;
71032
  }
71033
  var prev = glyphs[i - 1].codePoints[0];
71034
  var len = getLength(prev);
71035
  glyphs.splice(i, 1);
71036
  return glyphs.splice(i - len, 0, glyph);
71037
}
71038
function insertDottedCircle(glyphs, i, font) {
71039
  var glyph = glyphs[i];
71040
  var code = glyphs[i].codePoints[0];
71041
  if (font.hasGlyphForCodePoint(DOTTED_CIRCLE)) {
71042
    var dottedCircle = getGlyph(font, DOTTED_CIRCLE, glyph.features); // If the tone mark is zero width, insert the dotted circle before, otherwise after
71043
71044
    var idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;
71045
    glyphs.splice(idx, 0, dottedCircle);
71046
    i++;
71047
  }
71048
  return i;
71049
}
71050
var stateTable = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 14, 15, 16, 17], [0, 0, 0, 18, 19, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 28, 29, 30, 31, 32, 33, 0, 34, 0, 0, 35, 36, 0, 0, 37, 0], [0, 0, 0, 38, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 39, 0, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 12, 43, 0, 0, 0, 0], [0, 0, 0, 0, 43, 44, 44, 8, 9, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0], [0, 0, 0, 45, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 51, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 55, 56, 57, 58, 0, 59, 0, 0, 60, 61, 0, 0, 62, 0], [0, 0, 0, 4, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 63, 64, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 63, 0, 0], [0, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 11, 12, 13, 0, 2, 16, 0], [0, 0, 0, 18, 65, 20, 21, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 0, 0], [0, 0, 0, 69, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 73, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 75, 0, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 25, 79, 0, 0, 0, 0], [0, 0, 0, 18, 19, 20, 74, 22, 23, 0, 24, 0, 0, 25, 26, 0, 0, 27, 0], [0, 0, 0, 81, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 87, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 18, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 89, 90, 0, 0, 76, 77, 0, 23, 0, 24, 0, 0, 0, 78, 0, 89, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 0, 0], [0, 0, 0, 94, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 96, 0, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 35, 100, 0, 0, 0, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 102, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 28, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 110, 111, 0, 0, 97, 98, 0, 33, 0, 34, 0, 0, 0, 99, 0, 110, 0, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 0, 0], [0, 0, 0, 0, 5, 7, 7, 8, 9, 0, 10, 0, 0, 0, 13, 0, 0, 16, 0], [0, 0, 0, 115, 116, 117, 118, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 39, 0, 122, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 124, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0], [0, 39, 0, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 46, 47, 48, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 47, 47, 49, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 128, 127, 127, 49, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 129, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 135, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 136, 0, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 60, 140, 0, 0, 0, 0], [0, 0, 0, 0, 140, 141, 141, 57, 58, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0], [0, 0, 0, 142, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 53, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 150, 151, 0, 0, 137, 138, 0, 58, 0, 59, 0, 0, 0, 139, 0, 150, 0, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 157, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 3, 4, 5, 159, 160, 8, 161, 0, 162, 0, 11, 12, 163, 0, 75, 16, 0], [0, 0, 0, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0], [0, 124, 64, 0, 0, 40, 164, 0, 9, 0, 10, 0, 0, 0, 42, 0, 124, 0, 0], [0, 0, 0, 0, 0, 70, 70, 0, 71, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 167, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 19, 74, 74, 22, 23, 0, 24, 0, 0, 0, 26, 0, 0, 27, 0], [0, 0, 0, 0, 79, 80, 80, 22, 23, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 172, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 75, 0, 176, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 178, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0], [0, 75, 0, 0, 0, 175, 179, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 180, 180, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 82, 83, 84, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 83, 83, 85, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 182, 181, 181, 85, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 183, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 191, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0], [0, 178, 90, 0, 0, 76, 193, 0, 23, 0, 24, 0, 0, 0, 78, 0, 178, 0, 0], [0, 0, 0, 0, 29, 95, 31, 32, 33, 0, 34, 0, 0, 0, 36, 0, 0, 37, 0], [0, 0, 0, 0, 100, 101, 101, 32, 33, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 198, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 96, 0, 202, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 204, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0], [0, 96, 0, 0, 0, 201, 205, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 206, 206, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 103, 104, 105, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 104, 104, 106, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 208, 207, 207, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 209, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 217, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0], [0, 204, 111, 0, 0, 97, 219, 0, 33, 0, 34, 0, 0, 0, 99, 0, 204, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 223, 0, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 119, 225, 0, 0, 0, 0], [0, 0, 0, 115, 116, 117, 222, 8, 9, 0, 10, 0, 0, 119, 120, 0, 0, 16, 0], [0, 0, 0, 115, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 226, 64, 0, 0, 40, 224, 0, 9, 0, 10, 0, 0, 0, 42, 0, 226, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 39, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 44, 44, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 229, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 39, 0, 122, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 39, 0, 0], [0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 231, 231, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 130, 131, 132, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 131, 131, 133, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 234, 233, 233, 133, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 235, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 54, 56, 56, 57, 58, 0, 59, 0, 0, 0, 61, 0, 0, 62, 0], [0, 0, 0, 240, 241, 242, 243, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 136, 0, 247, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 249, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0], [0, 136, 0, 0, 0, 246, 250, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 251, 251, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 143, 144, 145, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 144, 144, 146, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 253, 252, 252, 146, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 254, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 262, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0], [0, 249, 151, 0, 0, 137, 264, 0, 58, 0, 59, 0, 0, 0, 139, 0, 249, 0, 0], [0, 0, 0, 221, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 158, 225, 0, 0, 0, 0], [0, 0, 0, 155, 116, 156, 222, 8, 9, 0, 10, 0, 0, 158, 120, 0, 0, 16, 0], [0, 0, 0, 155, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 43, 266, 266, 8, 161, 0, 24, 0, 0, 12, 267, 0, 0, 0, 0], [0, 75, 0, 176, 43, 268, 268, 269, 161, 0, 24, 0, 0, 0, 267, 0, 75, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 271, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0], [0, 273, 274, 0, 0, 40, 41, 0, 9, 0, 10, 0, 0, 0, 42, 0, 273, 0, 0], [0, 0, 0, 40, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 121, 275, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 279, 0, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 173, 281, 0, 0, 0, 0], [0, 0, 0, 169, 170, 171, 278, 22, 23, 0, 24, 0, 0, 173, 174, 0, 0, 27, 0], [0, 0, 0, 169, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 282, 90, 0, 0, 76, 280, 0, 23, 0, 24, 0, 0, 0, 78, 0, 282, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 75, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 80, 80, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 285, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 75, 0, 176, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 75, 0, 0], [0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 287, 287, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 184, 185, 186, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 185, 185, 187, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 290, 289, 289, 187, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 291, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 277, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 192, 281, 0, 0, 0, 0], [0, 0, 0, 189, 170, 190, 278, 22, 23, 0, 24, 0, 0, 192, 174, 0, 0, 27, 0], [0, 0, 0, 189, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 76, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 175, 296, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 299, 0, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 199, 301, 0, 0, 0, 0], [0, 0, 0, 195, 196, 197, 298, 32, 33, 0, 34, 0, 0, 199, 200, 0, 0, 37, 0], [0, 0, 0, 195, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 302, 111, 0, 0, 97, 300, 0, 33, 0, 34, 0, 0, 0, 99, 0, 302, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 96, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 101, 101, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 305, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 96, 0, 202, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 96, 0, 0], [0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 307, 307, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 210, 211, 212, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 211, 211, 213, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 310, 309, 309, 213, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 311, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 297, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 218, 301, 0, 0, 0, 0], [0, 0, 0, 215, 196, 216, 298, 32, 33, 0, 34, 0, 0, 218, 200, 0, 0, 37, 0], [0, 0, 0, 215, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 97, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 201, 316, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 116, 222, 222, 8, 9, 0, 10, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 9, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 320, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 223, 0, 323, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 0, 0, 121, 324, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 325, 318, 326, 327, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 64, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 228, 121, 0, 9, 0, 10, 0, 0, 230, 0, 0, 0, 0, 0], [0, 0, 0, 227, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0], [0, 0, 0, 0, 0, 329, 329, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 236, 237, 238, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 237, 237, 239, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 332, 331, 331, 239, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 333, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 337, 0, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 244, 339, 0, 0, 0, 0], [0, 0, 0, 240, 241, 242, 336, 57, 58, 0, 59, 0, 0, 244, 245, 0, 0, 62, 0], [0, 0, 0, 240, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 340, 151, 0, 0, 137, 338, 0, 58, 0, 59, 0, 0, 0, 139, 0, 340, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 136, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 141, 141, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 343, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 136, 0, 247, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 136, 0, 0], [0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 345, 345, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 255, 256, 257, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 256, 256, 258, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 348, 347, 347, 258, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 349, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 335, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 263, 339, 0, 0, 0, 0], [0, 0, 0, 260, 241, 261, 336, 57, 58, 0, 59, 0, 0, 263, 245, 0, 0, 62, 0], [0, 0, 0, 260, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 137, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 246, 354, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 126, 126, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 355, 90, 0, 0, 121, 125, 0, 9, 0, 10, 0, 0, 0, 42, 0, 355, 0, 0], [0, 0, 0, 0, 0, 356, 356, 269, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 357, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 366, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 40, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 170, 278, 278, 22, 23, 0, 24, 0, 0, 0, 174, 0, 0, 27, 0], [0, 0, 0, 0, 281, 80, 80, 22, 23, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 372, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 279, 0, 375, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 0, 0, 175, 376, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 377, 370, 378, 379, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 90, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 284, 175, 0, 23, 0, 24, 0, 0, 286, 0, 0, 0, 0, 0], [0, 0, 0, 283, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0], [0, 0, 0, 0, 0, 381, 381, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 292, 293, 294, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 293, 293, 295, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 0, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 384, 383, 383, 295, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 385, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 76, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 196, 298, 298, 32, 33, 0, 34, 0, 0, 0, 200, 0, 0, 37, 0], [0, 0, 0, 0, 301, 101, 101, 32, 33, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 390, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 299, 0, 393, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 0, 0, 201, 394, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 395, 388, 396, 397, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 111, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 304, 201, 0, 33, 0, 34, 0, 0, 306, 0, 0, 0, 0, 0], [0, 0, 0, 303, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0], [0, 0, 0, 0, 0, 399, 399, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 312, 313, 314, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 313, 313, 315, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 0, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 402, 401, 401, 315, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 403, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 97, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 407, 0, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 321, 409, 0, 0, 0, 0], [0, 0, 0, 317, 318, 319, 406, 8, 9, 0, 10, 0, 0, 321, 322, 0, 0, 16, 0], [0, 0, 0, 317, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 410, 64, 0, 0, 40, 408, 0, 9, 0, 10, 0, 0, 0, 42, 0, 410, 0, 0], [0, 223, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 223, 0, 323, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 223, 0, 0], [0, 0, 0, 405, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 328, 409, 0, 0, 0, 0], [0, 0, 0, 325, 318, 326, 406, 8, 9, 0, 10, 0, 0, 328, 322, 0, 0, 16, 0], [0, 0, 0, 325, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0], [0, 0, 0, 0, 0, 411, 411, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 40, 121, 334, 0, 9, 0, 10, 0, 0, 0, 42, 0, 0, 0, 0], [0, 0, 0, 0, 413, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 241, 336, 336, 57, 58, 0, 59, 0, 0, 0, 245, 0, 0, 62, 0], [0, 0, 0, 0, 339, 141, 141, 57, 58, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 417, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 337, 0, 420, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 0, 0, 246, 421, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 422, 415, 423, 424, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 151, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 342, 246, 0, 58, 0, 59, 0, 0, 344, 0, 0, 0, 0, 0], [0, 0, 0, 341, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0], [0, 0, 0, 0, 0, 426, 426, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 350, 351, 352, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 351, 351, 353, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 0, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 429, 428, 428, 353, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 430, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 137, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 434, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 180, 180, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 358, 359, 360, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 359, 359, 361, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 437, 436, 436, 361, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 438, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 443, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 367, 225, 0, 0, 0, 0], [0, 0, 0, 364, 116, 365, 445, 8, 161, 0, 162, 0, 0, 367, 120, 0, 0, 16, 0], [0, 0, 0, 364, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 448, 0, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 373, 450, 0, 0, 0, 0], [0, 0, 0, 369, 370, 371, 447, 22, 23, 0, 24, 0, 0, 373, 374, 0, 0, 27, 0], [0, 0, 0, 369, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 451, 90, 0, 0, 76, 449, 0, 23, 0, 24, 0, 0, 0, 78, 0, 451, 0, 0], [0, 279, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 279, 0, 375, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 279, 0, 0], [0, 0, 0, 446, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 380, 450, 0, 0, 0, 0], [0, 0, 0, 377, 370, 378, 447, 22, 23, 0, 24, 0, 0, 380, 374, 0, 0, 27, 0], [0, 0, 0, 377, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0], [0, 0, 0, 0, 0, 452, 452, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 76, 175, 386, 0, 23, 0, 24, 0, 0, 0, 78, 0, 0, 0, 0], [0, 0, 0, 0, 454, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 457, 0, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 391, 459, 0, 0, 0, 0], [0, 0, 0, 387, 388, 389, 456, 32, 33, 0, 34, 0, 0, 391, 392, 0, 0, 37, 0], [0, 0, 0, 387, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 460, 111, 0, 0, 97, 458, 0, 33, 0, 34, 0, 0, 0, 99, 0, 460, 0, 0], [0, 299, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 299, 0, 393, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 299, 0, 0], [0, 0, 0, 455, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 398, 459, 0, 0, 0, 0], [0, 0, 0, 395, 388, 396, 456, 32, 33, 0, 34, 0, 0, 398, 392, 0, 0, 37, 0], [0, 0, 0, 395, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0], [0, 0, 0, 0, 0, 461, 461, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 97, 201, 404, 0, 33, 0, 34, 0, 0, 0, 99, 0, 0, 0, 0], [0, 0, 0, 0, 463, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 318, 406, 406, 8, 9, 0, 10, 0, 0, 0, 322, 0, 0, 16, 0], [0, 0, 0, 0, 409, 44, 44, 8, 9, 0, 0, 0, 0, 0, 409, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 467, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 407, 0, 470, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 0, 0, 121, 471, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 472, 465, 473, 474, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0], [0, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 479, 0, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 418, 481, 0, 0, 0, 0], [0, 0, 0, 414, 415, 416, 478, 57, 58, 0, 59, 0, 0, 418, 419, 0, 0, 62, 0], [0, 0, 0, 414, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 482, 151, 0, 0, 137, 480, 0, 58, 0, 59, 0, 0, 0, 139, 0, 482, 0, 0], [0, 337, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 337, 0, 420, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 337, 0, 0], [0, 0, 0, 477, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 425, 481, 0, 0, 0, 0], [0, 0, 0, 422, 415, 423, 478, 57, 58, 0, 59, 0, 0, 425, 419, 0, 0, 62, 0], [0, 0, 0, 422, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0], [0, 0, 0, 0, 0, 483, 483, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 137, 246, 431, 0, 58, 0, 59, 0, 0, 0, 139, 0, 0, 0, 0], [0, 0, 0, 0, 485, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 444, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 435, 225, 0, 0, 0, 0], [0, 0, 0, 432, 116, 433, 445, 8, 161, 0, 162, 0, 0, 435, 120, 0, 0, 16, 0], [0, 0, 0, 432, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 0, 486, 486, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 439, 440, 441, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 440, 440, 442, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 489, 488, 488, 442, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 490, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 497, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 0, 116, 445, 445, 8, 161, 0, 162, 0, 0, 0, 120, 0, 0, 16, 0], [0, 0, 0, 0, 225, 44, 44, 8, 161, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0], [0, 0, 0, 0, 370, 447, 447, 22, 23, 0, 24, 0, 0, 0, 374, 0, 0, 27, 0], [0, 0, 0, 0, 450, 80, 80, 22, 23, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 502, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 448, 0, 505, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 0, 0, 175, 506, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 507, 500, 508, 509, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0], [0, 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 388, 456, 456, 32, 33, 0, 34, 0, 0, 0, 392, 0, 0, 37, 0], [0, 0, 0, 0, 459, 101, 101, 32, 33, 0, 0, 0, 0, 0, 459, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 515, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 457, 0, 518, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 0, 0, 201, 519, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 520, 513, 521, 522, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0], [0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 527, 0, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 468, 529, 0, 0, 0, 0], [0, 0, 0, 464, 465, 466, 526, 8, 9, 0, 10, 0, 0, 468, 469, 0, 0, 16, 0], [0, 0, 0, 464, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 530, 64, 0, 0, 40, 528, 0, 9, 0, 10, 0, 0, 0, 42, 0, 530, 0, 0], [0, 407, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 407, 0, 470, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 407, 0, 0], [0, 0, 0, 525, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 475, 529, 0, 0, 0, 0], [0, 0, 0, 472, 465, 473, 526, 8, 9, 0, 10, 0, 0, 475, 469, 0, 0, 16, 0], [0, 0, 0, 472, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0], [0, 0, 0, 0, 415, 478, 478, 57, 58, 0, 59, 0, 0, 0, 419, 0, 0, 62, 0], [0, 0, 0, 0, 481, 141, 141, 57, 58, 0, 0, 0, 0, 0, 481, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 534, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 479, 0, 537, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 0, 0, 246, 538, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 539, 532, 540, 541, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0], [0, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0], [0, 0, 0, 0, 0, 544, 544, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 491, 492, 493, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 492, 492, 494, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 547, 546, 546, 494, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 548, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 274, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 496, 368, 0, 161, 0, 162, 0, 0, 498, 0, 0, 0, 0, 0], [0, 0, 0, 495, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 553, 0, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 503, 555, 0, 0, 0, 0], [0, 0, 0, 499, 500, 501, 552, 22, 23, 0, 24, 0, 0, 503, 504, 0, 0, 27, 0], [0, 0, 0, 499, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 556, 90, 0, 0, 76, 554, 0, 23, 0, 24, 0, 0, 0, 78, 0, 556, 0, 0], [0, 448, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 448, 0, 505, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 448, 0, 0], [0, 0, 0, 551, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 510, 555, 0, 0, 0, 0], [0, 0, 0, 507, 500, 508, 552, 22, 23, 0, 24, 0, 0, 510, 504, 0, 0, 27, 0], [0, 0, 0, 507, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 559, 0, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 516, 561, 0, 0, 0, 0], [0, 0, 0, 512, 513, 514, 558, 32, 33, 0, 34, 0, 0, 516, 517, 0, 0, 37, 0], [0, 0, 0, 512, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 562, 111, 0, 0, 97, 560, 0, 33, 0, 34, 0, 0, 0, 99, 0, 562, 0, 0], [0, 457, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 457, 0, 518, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 457, 0, 0], [0, 0, 0, 557, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 523, 561, 0, 0, 0, 0], [0, 0, 0, 520, 513, 521, 558, 32, 33, 0, 34, 0, 0, 523, 517, 0, 0, 37, 0], [0, 0, 0, 520, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0], [0, 0, 0, 0, 465, 526, 526, 8, 9, 0, 10, 0, 0, 0, 469, 0, 0, 16, 0], [0, 0, 0, 0, 529, 44, 44, 8, 9, 0, 0, 0, 0, 0, 529, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 565, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 527, 0, 567, 0, 123, 123, 8, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 0, 0, 121, 568, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 569, 66, 570, 571, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 575, 0, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 535, 577, 0, 0, 0, 0], [0, 0, 0, 531, 532, 533, 574, 57, 58, 0, 59, 0, 0, 535, 536, 0, 0, 62, 0], [0, 0, 0, 531, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 578, 151, 0, 0, 137, 576, 0, 58, 0, 59, 0, 0, 0, 139, 0, 578, 0, 0], [0, 479, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 479, 0, 537, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 479, 0, 0], [0, 0, 0, 573, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 542, 577, 0, 0, 0, 0], [0, 0, 0, 539, 532, 540, 574, 57, 58, 0, 59, 0, 0, 542, 536, 0, 0, 62, 0], [0, 0, 0, 539, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0], [0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0], [0, 0, 0, 0, 0, 579, 579, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 549, 368, 550, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 0, 368, 368, 0, 161, 0, 162, 0, 0, 0, 362, 0, 0, 0, 0], [0, 0, 0, 0, 581, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 500, 552, 552, 22, 23, 0, 24, 0, 0, 0, 504, 0, 0, 27, 0], [0, 0, 0, 0, 555, 80, 80, 22, 23, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 584, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 553, 0, 586, 0, 177, 177, 22, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 0, 0, 175, 587, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 588, 91, 589, 590, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 0, 513, 558, 558, 32, 33, 0, 34, 0, 0, 0, 517, 0, 0, 37, 0], [0, 0, 0, 0, 561, 101, 101, 32, 33, 0, 0, 0, 0, 0, 561, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 594, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 559, 0, 596, 0, 203, 203, 32, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 0, 0, 201, 597, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 598, 112, 599, 600, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 566, 165, 0, 0, 0, 0], [0, 0, 0, 563, 66, 564, 67, 8, 9, 0, 10, 0, 0, 566, 68, 0, 0, 16, 0], [0, 0, 0, 563, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 527, 0, 0, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 527, 0, 567, 0, 121, 121, 0, 9, 0, 10, 0, 0, 0, 42, 0, 527, 0, 0], [0, 0, 0, 602, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 165, 44, 44, 8, 9, 0, 0, 0, 0, 572, 165, 0, 0, 0, 0], [0, 0, 0, 569, 66, 570, 67, 8, 9, 0, 10, 0, 0, 572, 68, 0, 0, 16, 0], [0, 0, 0, 569, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 0, 532, 574, 574, 57, 58, 0, 59, 0, 0, 0, 536, 0, 0, 62, 0], [0, 0, 0, 0, 577, 141, 141, 57, 58, 0, 0, 0, 0, 0, 577, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 605, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 575, 0, 607, 0, 248, 248, 57, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 0, 0, 246, 608, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 609, 152, 610, 611, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, 0], [0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 585, 194, 0, 0, 0, 0], [0, 0, 0, 582, 91, 583, 92, 22, 23, 0, 24, 0, 0, 585, 93, 0, 0, 27, 0], [0, 0, 0, 582, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 553, 0, 0, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 553, 0, 586, 0, 175, 175, 0, 23, 0, 24, 0, 0, 0, 78, 0, 553, 0, 0], [0, 0, 0, 614, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 194, 80, 80, 22, 23, 0, 0, 0, 0, 591, 194, 0, 0, 0, 0], [0, 0, 0, 588, 91, 589, 92, 22, 23, 0, 24, 0, 0, 591, 93, 0, 0, 27, 0], [0, 0, 0, 588, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 595, 220, 0, 0, 0, 0], [0, 0, 0, 592, 112, 593, 113, 32, 33, 0, 34, 0, 0, 595, 114, 0, 0, 37, 0], [0, 0, 0, 592, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 559, 0, 0, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 559, 0, 596, 0, 201, 201, 0, 33, 0, 34, 0, 0, 0, 99, 0, 559, 0, 0], [0, 0, 0, 615, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 220, 101, 101, 32, 33, 0, 0, 0, 0, 601, 220, 0, 0, 0, 0], [0, 0, 0, 598, 112, 599, 113, 32, 33, 0, 34, 0, 0, 601, 114, 0, 0, 37, 0], [0, 0, 0, 598, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 66, 67, 67, 8, 9, 0, 10, 0, 0, 0, 68, 0, 0, 16, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 606, 265, 0, 0, 0, 0], [0, 0, 0, 603, 152, 604, 153, 57, 58, 0, 59, 0, 0, 606, 154, 0, 0, 62, 0], [0, 0, 0, 603, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 575, 0, 0, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 575, 0, 607, 0, 246, 246, 0, 58, 0, 59, 0, 0, 0, 139, 0, 575, 0, 0], [0, 0, 0, 616, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 265, 141, 141, 57, 58, 0, 0, 0, 0, 612, 265, 0, 0, 0, 0], [0, 0, 0, 609, 152, 610, 153, 57, 58, 0, 59, 0, 0, 612, 154, 0, 0, 62, 0], [0, 0, 0, 609, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, 0], [0, 0, 0, 0, 91, 92, 92, 22, 23, 0, 24, 0, 0, 0, 93, 0, 0, 27, 0], [0, 0, 0, 0, 112, 113, 113, 32, 33, 0, 34, 0, 0, 0, 114, 0, 0, 37, 0], [0, 0, 0, 0, 152, 153, 153, 57, 58, 0, 59, 0, 0, 0, 154, 0, 0, 62, 0]];
71051
var accepting = [false, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, false, false, true, true, true, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, true, true, true, false, true, false, true, true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, false, true, false, true, true, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, true, false, true, true, false, false, false, false, true, true, false, false, true, true, true, false, true, true, false, false, true, false, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, false, false, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, false, false, false, false, false, false, false, true, true, false, false, true, true, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, true, true, true, true, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, false, true, true, false, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, false, true, true, true, true, false, true, true, true, true, true, false, true, true, false, true, true, true];
71052
var tags = [[], ["broken_cluster"], ["consonant_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable"], ["broken_cluster"], ["symbol_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["symbol_cluster"], [], ["symbol_cluster"], ["symbol_cluster"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], [], ["broken_cluster"], ["broken_cluster"], [], [], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["broken_cluster"], ["symbol_cluster"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], [], ["consonant_syllable"], ["consonant_syllable"], [], [], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], [], ["vowel_syllable"], ["vowel_syllable"], [], [], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], [], [], [], ["broken_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], [], ["standalone_cluster"], ["standalone_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], [], [], [], ["consonant_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], [], [], [], ["vowel_syllable"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], [], [], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], ["standalone_cluster"], [], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], [], [], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], [], [], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], [], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], [], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], [], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], [], [], [], [], ["consonant_syllable", "broken_cluster"], ["consonant_syllable", "broken_cluster"], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], [], [], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], ["consonant_syllable"], [], ["consonant_syllable"], ["consonant_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], ["vowel_syllable"], [], ["vowel_syllable"], ["vowel_syllable"], ["broken_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], ["standalone_cluster"], [], ["standalone_cluster"], ["standalone_cluster"], [], ["consonant_syllable"], ["vowel_syllable"], ["standalone_cluster"]];
71053
var indicMachine = {
71054
  stateTable: stateTable,
71055
  accepting: accepting,
71056
  tags: tags
71057
};
71058
var categories = ["O", "IND", "S", "GB", "B", "FM", "CGJ", "VMAbv", "VMPst", "VAbv", "VPst", "CMBlw", "VPre", "VBlw", "H", "VMBlw", "CMAbv", "MBlw", "CS", "R", "SUB", "MPst", "MPre", "FAbv", "FPst", "FBlw", "null", "SMAbv", "SMBlw", "VMPre", "ZWNJ", "ZWJ", "WJ", "M", "VS", "N", "HN", "MAbv"];
71059
var decompositions = {
71060
  "2507": [2503, 2494],
71061
  "2508": [2503, 2519],
71062
  "2888": [2887, 2902],
71063
  "2891": [2887, 2878],
71064
  "2892": [2887, 2903],
71065
  "3018": [3014, 3006],
71066
  "3019": [3015, 3006],
71067
  "3020": [3014, 3031],
71068
  "3144": [3142, 3158],
71069
  "3264": [3263, 3285],
71070
  "3271": [3270, 3285],
71071
  "3272": [3270, 3286],
71072
  "3274": [3270, 3266],
71073
  "3275": [3270, 3266, 3285],
71074
  "3402": [3398, 3390],
71075
  "3403": [3399, 3390],
71076
  "3404": [3398, 3415],
71077
  "3546": [3545, 3530],
71078
  "3548": [3545, 3535],
71079
  "3549": [3545, 3535, 3530],
71080
  "3550": [3545, 3551],
71081
  "3635": [3661, 3634],
71082
  "3763": [3789, 3762],
71083
  "3955": [3953, 3954],
71084
  "3957": [3953, 3956],
71085
  "3958": [4018, 3968],
71086
  "3959": [4018, 3953, 3968],
71087
  "3960": [4019, 3968],
71088
  "3961": [4019, 3953, 3968],
71089
  "3969": [3953, 3968],
71090
  "6971": [6970, 6965],
71091
  "6973": [6972, 6965],
71092
  "6976": [6974, 6965],
71093
  "6977": [6975, 6965],
71094
  "6979": [6978, 6965],
71095
  "69934": [69937, 69927],
71096
  "69935": [69938, 69927],
71097
  "70475": [70471, 70462],
71098
  "70476": [70471, 70487],
71099
  "70843": [70841, 70842],
71100
  "70844": [70841, 70832],
71101
  "70846": [70841, 70845],
71102
  "71098": [71096, 71087],
71103
  "71099": [71097, 71087]
71104
};
71105
var stateTable$1 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 2, 3, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 2, 0, 0, 24, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 27, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 39, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 9, 0, 0, 12, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 0, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 4, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 49, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 0, 11, 12, 0, 14, 0, 16, 0, 0, 0, 11, 0, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 33, 0, 0, 36, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 0, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 53, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 0, 35, 36, 0, 38, 0, 40, 0, 0, 0, 35, 0, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 0, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 5, 0, 6, 7, 8, 9, 48, 11, 12, 13, 14, 48, 16, 0, 0, 18, 11, 19, 20, 21, 22, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 25], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 0, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 29, 0, 30, 31, 32, 33, 52, 35, 36, 37, 38, 52, 40, 0, 0, 41, 35, 42, 43, 44, 45, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0]];
71106
var accepting$1 = [false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
71107
var tags$1 = [[], ["broken_cluster"], ["independent_cluster"], ["symbol_cluster"], ["standard_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], [], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["broken_cluster"], ["numeral_cluster"], ["broken_cluster"], ["independent_cluster"], ["symbol_cluster"], ["symbol_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["virama_terminated_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["standard_cluster"], ["broken_cluster"], ["broken_cluster"], ["numeral_cluster"], ["number_joiner_terminated_cluster"], ["standard_cluster"], ["standard_cluster"], ["numeral_cluster"]];
71108
var useData = {
71109
  categories: categories,
71110
  decompositions: decompositions,
71111
  stateTable: stateTable$1,
71112
  accepting: accepting$1,
71113
  tags: tags$1
71114
};
71115
71116
// Cateories used in the OpenType spec:
71117
// https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx
71118
var CATEGORIES = {
71119
  X: 1 << 0,
71120
  C: 1 << 1,
71121
  V: 1 << 2,
71122
  N: 1 << 3,
71123
  H: 1 << 4,
71124
  ZWNJ: 1 << 5,
71125
  ZWJ: 1 << 6,
71126
  M: 1 << 7,
71127
  SM: 1 << 8,
71128
  VD: 1 << 9,
71129
  A: 1 << 10,
71130
  Placeholder: 1 << 11,
71131
  Dotted_Circle: 1 << 12,
71132
  RS: 1 << 13,
71133
  // Register Shifter, used in Khmer OT spec.
71134
  Coeng: 1 << 14,
71135
  // Khmer-style Virama.
71136
  Repha: 1 << 15,
71137
  // Atomically-encoded logical or visual repha.
71138
  Ra: 1 << 16,
71139
  CM: 1 << 17,
71140
  // Consonant-Medial.
71141
  Symbol: 1 << 18 // Avagraha, etc that take marks (SM,A,VD).
71142
}; // Visual positions in a syllable from left to right.
71143
71144
var POSITIONS = {
71145
  Start: 1 << 0,
71146
  Ra_To_Become_Reph: 1 << 1,
71147
  Pre_M: 1 << 2,
71148
  Pre_C: 1 << 3,
71149
  Base_C: 1 << 4,
71150
  After_Main: 1 << 5,
71151
  Above_C: 1 << 6,
71152
  Before_Sub: 1 << 7,
71153
  Below_C: 1 << 8,
71154
  After_Sub: 1 << 9,
71155
  Before_Post: 1 << 10,
71156
  Post_C: 1 << 11,
71157
  After_Post: 1 << 12,
71158
  Final_C: 1 << 13,
71159
  SMVD: 1 << 14,
71160
  End: 1 << 15
71161
};
71162
var CONSONANT_FLAGS = CATEGORIES.C | CATEGORIES.Ra | CATEGORIES.CM | CATEGORIES.V | CATEGORIES.Placeholder | CATEGORIES.Dotted_Circle;
71163
var JOINER_FLAGS = CATEGORIES.ZWJ | CATEGORIES.ZWNJ;
71164
var HALANT_OR_COENG_FLAGS = CATEGORIES.H | CATEGORIES.Coeng;
71165
var INDIC_CONFIGS = {
71166
  Default: {
71167
    hasOldSpec: false,
71168
    virama: 0,
71169
    basePos: 'Last',
71170
    rephPos: POSITIONS.Before_Post,
71171
    rephMode: 'Implicit',
71172
    blwfMode: 'Pre_And_Post'
71173
  },
71174
  Devanagari: {
71175
    hasOldSpec: true,
71176
    virama: 0x094D,
71177
    basePos: 'Last',
71178
    rephPos: POSITIONS.Before_Post,
71179
    rephMode: 'Implicit',
71180
    blwfMode: 'Pre_And_Post'
71181
  },
71182
  Bengali: {
71183
    hasOldSpec: true,
71184
    virama: 0x09CD,
71185
    basePos: 'Last',
71186
    rephPos: POSITIONS.After_Sub,
71187
    rephMode: 'Implicit',
71188
    blwfMode: 'Pre_And_Post'
71189
  },
71190
  Gurmukhi: {
71191
    hasOldSpec: true,
71192
    virama: 0x0A4D,
71193
    basePos: 'Last',
71194
    rephPos: POSITIONS.Before_Sub,
71195
    rephMode: 'Implicit',
71196
    blwfMode: 'Pre_And_Post'
71197
  },
71198
  Gujarati: {
71199
    hasOldSpec: true,
71200
    virama: 0x0ACD,
71201
    basePos: 'Last',
71202
    rephPos: POSITIONS.Before_Post,
71203
    rephMode: 'Implicit',
71204
    blwfMode: 'Pre_And_Post'
71205
  },
71206
  Oriya: {
71207
    hasOldSpec: true,
71208
    virama: 0x0B4D,
71209
    basePos: 'Last',
71210
    rephPos: POSITIONS.After_Main,
71211
    rephMode: 'Implicit',
71212
    blwfMode: 'Pre_And_Post'
71213
  },
71214
  Tamil: {
71215
    hasOldSpec: true,
71216
    virama: 0x0BCD,
71217
    basePos: 'Last',
71218
    rephPos: POSITIONS.After_Post,
71219
    rephMode: 'Implicit',
71220
    blwfMode: 'Pre_And_Post'
71221
  },
71222
  Telugu: {
71223
    hasOldSpec: true,
71224
    virama: 0x0C4D,
71225
    basePos: 'Last',
71226
    rephPos: POSITIONS.After_Post,
71227
    rephMode: 'Explicit',
71228
    blwfMode: 'Post_Only'
71229
  },
71230
  Kannada: {
71231
    hasOldSpec: true,
71232
    virama: 0x0CCD,
71233
    basePos: 'Last',
71234
    rephPos: POSITIONS.After_Post,
71235
    rephMode: 'Implicit',
71236
    blwfMode: 'Post_Only'
71237
  },
71238
  Malayalam: {
71239
    hasOldSpec: true,
71240
    virama: 0x0D4D,
71241
    basePos: 'Last',
71242
    rephPos: POSITIONS.After_Main,
71243
    rephMode: 'Log_Repha',
71244
    blwfMode: 'Pre_And_Post'
71245
  },
71246
  // Handled by UniversalShaper
71247
  // Sinhala: {
71248
  //   hasOldSpec: false,
71249
  //   virama: 0x0DCA,
71250
  //   basePos: 'Last_Sinhala',
71251
  //   rephPos: POSITIONS.After_Main,
71252
  //   rephMode: 'Explicit',
71253
  //   blwfMode: 'Pre_And_Post'
71254
  // },
71255
  Khmer: {
71256
    hasOldSpec: false,
71257
    virama: 0x17D2,
71258
    basePos: 'First',
71259
    rephPos: POSITIONS.Ra_To_Become_Reph,
71260
    rephMode: 'Vis_Repha',
71261
    blwfMode: 'Pre_And_Post'
71262
  }
71263
}; // Additional decompositions that aren't in Unicode
71264
71265
var INDIC_DECOMPOSITIONS = {
71266
  // Khmer
71267
  0x17BE: [0x17C1, 0x17BE],
71268
  0x17BF: [0x17C1, 0x17BF],
71269
  0x17C0: [0x17C1, 0x17C0],
71270
  0x17C4: [0x17C1, 0x17C4],
71271
  0x17C5: [0x17C1, 0x17C5]
71272
};
71273
var decompositions$1 = useData.decompositions;
71274
var trie$1 = new UnicodeTrie(Buffer("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","base64"));
71275
var stateMachine = new StateMachine(indicMachine);
71276
/**
71277
 * The IndicShaper supports indic scripts e.g. Devanagari, Kannada, etc.
71278
 * Based on code from Harfbuzz: https://github.com/behdad/harfbuzz/blob/master/src/hb-ot-shape-complex-indic.cc
71279
 */
71280
var IndicShaper = /*#__PURE__*/function (_DefaultShaper3) {
71281
  _inheritsLoose(IndicShaper, _DefaultShaper3);
71282
  function IndicShaper() {
71283
    return _DefaultShaper3.apply(this, arguments) || this;
71284
  }
71285
  IndicShaper.planFeatures = function planFeatures(plan) {
71286
    plan.addStage(setupSyllables);
71287
    plan.addStage(['locl', 'ccmp']);
71288
    plan.addStage(initialReordering);
71289
    plan.addStage('nukt');
71290
    plan.addStage('akhn');
71291
    plan.addStage('rphf', false);
71292
    plan.addStage('rkrf');
71293
    plan.addStage('pref', false);
71294
    plan.addStage('blwf', false);
71295
    plan.addStage('abvf', false);
71296
    plan.addStage('half', false);
71297
    plan.addStage('pstf', false);
71298
    plan.addStage('vatu');
71299
    plan.addStage('cjct');
71300
    plan.addStage('cfar', false);
71301
    plan.addStage(finalReordering);
71302
    plan.addStage({
71303
      local: ['init'],
71304
      global: ['pres', 'abvs', 'blws', 'psts', 'haln', 'dist', 'abvm', 'blwm', 'calt', 'clig']
71305
    }); // Setup the indic config for the selected script
71306
71307
    plan.unicodeScript = fromOpenType(plan.script);
71308
    plan.indicConfig = INDIC_CONFIGS[plan.unicodeScript] || INDIC_CONFIGS.Default;
71309
    plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2'; // TODO: turn off kern (Khmer) and liga features.
71310
  };
71311
  IndicShaper.assignFeatures = function assignFeatures(plan, glyphs) {
71312
    var _loop = function _loop(i) {
71313
      var codepoint = glyphs[i].codePoints[0];
71314
      var d = INDIC_DECOMPOSITIONS[codepoint] || decompositions$1[codepoint];
71315
      if (d) {
71316
        var decomposed = d.map(function (c) {
71317
          var g = plan.font.glyphForCodePoint(c);
71318
          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);
71319
        });
71320
        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));
71321
      }
71322
    };
71323
71324
    // Decompose split matras
71325
    // TODO: do this in a more general unicode normalizer
71326
    for (var i = glyphs.length - 1; i >= 0; i--) {
71327
      _loop(i);
71328
    }
71329
  };
71330
  return IndicShaper;
71331
}(DefaultShaper);
71332
_defineProperty(IndicShaper, "zeroMarkWidths", 'NONE');
71333
function indicCategory(glyph) {
71334
  return trie$1.get(glyph.codePoints[0]) >> 8;
71335
}
71336
function indicPosition(glyph) {
71337
  return 1 << (trie$1.get(glyph.codePoints[0]) & 0xff);
71338
}
71339
var IndicInfo = function IndicInfo(category, position, syllableType, syllable) {
71340
  this.category = category;
71341
  this.position = position;
71342
  this.syllableType = syllableType;
71343
  this.syllable = syllable;
71344
};
71345
function setupSyllables(font, glyphs) {
71346
  var syllable = 0;
71347
  var last = 0;
71348
  for (var _iterator53 = _createForOfIteratorHelperLoose(stateMachine.match(glyphs.map(indicCategory))), _step53; !(_step53 = _iterator53()).done;) {
71349
    var _step53$value = _step53.value,
71350
      start = _step53$value[0],
71351
      end = _step53$value[1],
71352
      tags = _step53$value[2];
71353
    if (start > last) {
71354
      ++syllable;
71355
      for (var i = last; i < start; i++) {
71356
        glyphs[i].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);
71357
      }
71358
    }
71359
    ++syllable; // Create shaper info
71360
71361
    for (var _i = start; _i <= end; _i++) {
71362
      glyphs[_i].shaperInfo = new IndicInfo(1 << indicCategory(glyphs[_i]), indicPosition(glyphs[_i]), tags[0], syllable);
71363
    }
71364
    last = end + 1;
71365
  }
71366
  if (last < glyphs.length) {
71367
    ++syllable;
71368
    for (var _i2 = last; _i2 < glyphs.length; _i2++) {
71369
      glyphs[_i2].shaperInfo = new IndicInfo(CATEGORIES.X, POSITIONS.End, 'non_indic_cluster', syllable);
71370
    }
71371
  }
71372
}
71373
function isConsonant(glyph) {
71374
  return glyph.shaperInfo.category & CONSONANT_FLAGS;
71375
}
71376
function isJoiner(glyph) {
71377
  return glyph.shaperInfo.category & JOINER_FLAGS;
71378
}
71379
function isHalantOrCoeng(glyph) {
71380
  return glyph.shaperInfo.category & HALANT_OR_COENG_FLAGS;
71381
}
71382
function wouldSubstitute(glyphs, feature) {
71383
  for (var _iterator54 = _createForOfIteratorHelperLoose(glyphs), _step54; !(_step54 = _iterator54()).done;) {
71384
    var _glyph$features;
71385
    var glyph = _step54.value;
71386
    glyph.features = (_glyph$features = {}, _glyph$features[feature] = true, _glyph$features);
71387
  }
71388
  var GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;
71389
  GSUB.applyFeatures([feature], glyphs);
71390
  return glyphs.length === 1;
71391
}
71392
function consonantPosition(font, consonant, virama) {
71393
  var glyphs = [virama, consonant, virama];
71394
  if (wouldSubstitute(glyphs.slice(0, 2), 'blwf') || wouldSubstitute(glyphs.slice(1, 3), 'blwf')) {
71395
    return POSITIONS.Below_C;
71396
  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pstf') || wouldSubstitute(glyphs.slice(1, 3), 'pstf')) {
71397
    return POSITIONS.Post_C;
71398
  } else if (wouldSubstitute(glyphs.slice(0, 2), 'pref') || wouldSubstitute(glyphs.slice(1, 3), 'pref')) {
71399
    return POSITIONS.Post_C;
71400
  }
71401
  return POSITIONS.Base_C;
71402
}
71403
function initialReordering(font, glyphs, plan) {
71404
  var indicConfig = plan.indicConfig;
71405
  var features = font._layoutEngine.engine.GSUBProcessor.features;
71406
  var dottedCircle = font.glyphForCodePoint(0x25cc).id;
71407
  var virama = font.glyphForCodePoint(indicConfig.virama).id;
71408
  if (virama) {
71409
    var info = new GlyphInfo(font, virama, [indicConfig.virama]);
71410
    for (var i = 0; i < glyphs.length; i++) {
71411
      if (glyphs[i].shaperInfo.position === POSITIONS.Base_C) {
71412
        glyphs[i].shaperInfo.position = consonantPosition(font, glyphs[i].copy(), info);
71413
      }
71414
    }
71415
  }
71416
  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {
71417
    var _glyphs$start$shaperI = glyphs[start].shaperInfo,
71418
      category = _glyphs$start$shaperI.category,
71419
      syllableType = _glyphs$start$shaperI.syllableType;
71420
    if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') {
71421
      continue;
71422
    }
71423
    if (syllableType === 'broken_cluster' && dottedCircle) {
71424
      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);
71425
      g.shaperInfo = new IndicInfo(1 << indicCategory(g), indicPosition(g), glyphs[start].shaperInfo.syllableType, glyphs[start].shaperInfo.syllable); // Insert after possible Repha.
71426
71427
      var _i3 = start;
71428
      while (_i3 < end && glyphs[_i3].shaperInfo.category === CATEGORIES.Repha) {
71429
        _i3++;
71430
      }
71431
      glyphs.splice(_i3++, 0, g);
71432
      end++;
71433
    } // 1. Find base consonant:
71434
    //
71435
    // The shaping engine finds the base consonant of the syllable, using the
71436
    // following algorithm: starting from the end of the syllable, move backwards
71437
    // until a consonant is found that does not have a below-base or post-base
71438
    // form (post-base forms have to follow below-base forms), or that is not a
71439
    // pre-base reordering Ra, or arrive at the first consonant. The consonant
71440
    // stopped at will be the base.
71441
71442
    var base = end;
71443
    var limit = start;
71444
    var hasReph = false; // If the syllable starts with Ra + Halant (in a script that has Reph)
71445
    // and has more than one consonant, Ra is excluded from candidates for
71446
    // base consonants.
71447
71448
    if (indicConfig.rephPos !== POSITIONS.Ra_To_Become_Reph && features.rphf && start + 3 <= end && (indicConfig.rephMode === 'Implicit' && !isJoiner(glyphs[start + 2]) || indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === CATEGORIES.ZWJ)) {
71449
      // See if it matches the 'rphf' feature.
71450
      var _g = [glyphs[start].copy(), glyphs[start + 1].copy(), glyphs[start + 2].copy()];
71451
      if (wouldSubstitute(_g.slice(0, 2), 'rphf') || indicConfig.rephMode === 'Explicit' && wouldSubstitute(_g, 'rphf')) {
71452
        limit += 2;
71453
        while (limit < end && isJoiner(glyphs[limit])) {
71454
          limit++;
71455
        }
71456
        base = start;
71457
        hasReph = true;
71458
      }
71459
    } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === CATEGORIES.Repha) {
71460
      limit++;
71461
      while (limit < end && isJoiner(glyphs[limit])) {
71462
        limit++;
71463
      }
71464
      base = start;
71465
      hasReph = true;
71466
    }
71467
    switch (indicConfig.basePos) {
71468
      case 'Last':
71469
        {
71470
          // starting from the end of the syllable, move backwards
71471
          var _i4 = end;
71472
          var seenBelow = false;
71473
          do {
71474
            var _info = glyphs[--_i4].shaperInfo; // until a consonant is found
71475
71476
            if (isConsonant(glyphs[_i4])) {
71477
              // that does not have a below-base or post-base form
71478
              // (post-base forms have to follow below-base forms),
71479
              if (_info.position !== POSITIONS.Below_C && (_info.position !== POSITIONS.Post_C || seenBelow)) {
71480
                base = _i4;
71481
                break;
71482
              } // or that is not a pre-base reordering Ra,
71483
              //
71484
              // IMPLEMENTATION NOTES:
71485
              //
71486
              // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped
71487
              // by the logic above already.
71488
              //
71489
              // or arrive at the first consonant. The consonant stopped at will
71490
              // be the base.
71491
71492
              if (_info.position === POSITIONS.Below_C) {
71493
                seenBelow = true;
71494
              }
71495
              base = _i4;
71496
            } else if (start < _i4 && _info.category === CATEGORIES.ZWJ && glyphs[_i4 - 1].shaperInfo.category === CATEGORIES.H) {
71497
              // A ZWJ after a Halant stops the base search, and requests an explicit
71498
              // half form.
71499
              // A ZWJ before a Halant, requests a subjoined form instead, and hence
71500
              // search continues.  This is particularly important for Bengali
71501
              // sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya.
71502
              break;
71503
            }
71504
          } while (_i4 > limit);
71505
          break;
71506
        }
71507
      case 'First':
71508
        {
71509
          // The first consonant is always the base.
71510
          base = start; // Mark all subsequent consonants as below.
71511
71512
          for (var _i5 = base + 1; _i5 < end; _i5++) {
71513
            if (isConsonant(glyphs[_i5])) {
71514
              glyphs[_i5].shaperInfo.position = POSITIONS.Below_C;
71515
            }
71516
          }
71517
        }
71518
    } // If the syllable starts with Ra + Halant (in a script that has Reph)
71519
    // and has more than one consonant, Ra is excluded from candidates for
71520
    // base consonants.
71521
    //
71522
    //  Only do this for unforced Reph. (ie. not for Ra,H,ZWJ)
71523
71524
    if (hasReph && base === start && limit - base <= 2) {
71525
      hasReph = false;
71526
    } // 2. Decompose and reorder Matras:
71527
    //
71528
    // Each matra and any syllable modifier sign in the cluster are moved to the
71529
    // appropriate position relative to the consonant(s) in the cluster. The
71530
    // shaping engine decomposes two- or three-part matras into their constituent
71531
    // parts before any repositioning. Matra characters are classified by which
71532
    // consonant in a conjunct they have affinity for and are reordered to the
71533
    // following positions:
71534
    //
71535
    //   o Before first half form in the syllable
71536
    //   o After subjoined consonants
71537
    //   o After post-form consonant
71538
    //   o After main consonant (for above marks)
71539
    //
71540
    // IMPLEMENTATION NOTES:
71541
    //
71542
    // The normalize() routine has already decomposed matras for us, so we don't
71543
    // need to worry about that.
71544
    // 3.  Reorder marks to canonical order:
71545
    //
71546
    // Adjacent nukta and halant or nukta and vedic sign are always repositioned
71547
    // if necessary, so that the nukta is first.
71548
    //
71549
    // IMPLEMENTATION NOTES:
71550
    //
71551
    // We don't need to do this: the normalize() routine already did this for us.
71552
    // Reorder characters
71553
71554
    for (var _i6 = start; _i6 < base; _i6++) {
71555
      var _info2 = glyphs[_i6].shaperInfo;
71556
      _info2.position = Math.min(POSITIONS.Pre_C, _info2.position);
71557
    }
71558
    if (base < end) {
71559
      glyphs[base].shaperInfo.position = POSITIONS.Base_C;
71560
    } // Mark final consonants.  A final consonant is one appearing after a matra,
71561
    // like in Khmer.
71562
71563
    for (var _i7 = base + 1; _i7 < end; _i7++) {
71564
      if (glyphs[_i7].shaperInfo.category === CATEGORIES.M) {
71565
        for (var j = _i7 + 1; j < end; j++) {
71566
          if (isConsonant(glyphs[j])) {
71567
            glyphs[j].shaperInfo.position = POSITIONS.Final_C;
71568
            break;
71569
          }
71570
        }
71571
        break;
71572
      }
71573
    } // Handle beginning Ra
71574
71575
    if (hasReph) {
71576
      glyphs[start].shaperInfo.position = POSITIONS.Ra_To_Become_Reph;
71577
    } // For old-style Indic script tags, move the first post-base Halant after
71578
    // last consonant.
71579
    //
71580
    // Reports suggest that in some scripts Uniscribe does this only if there
71581
    // is *not* a Halant after last consonant already (eg. Kannada), while it
71582
    // does it unconditionally in other scripts (eg. Malayalam).  We don't
71583
    // currently know about other scripts, so we single out Malayalam for now.
71584
    //
71585
    // Kannada test case:
71586
    // U+0C9A,U+0CCD,U+0C9A,U+0CCD
71587
    // With some versions of Lohit Kannada.
71588
    // https://bugs.freedesktop.org/show_bug.cgi?id=59118
71589
    //
71590
    // Malayalam test case:
71591
    // U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D
71592
    // With lohit-ttf-20121122/Lohit-Malayalam.ttf
71593
71594
    if (plan.isOldSpec) {
71595
      var disallowDoubleHalants = plan.unicodeScript !== 'Malayalam';
71596
      for (var _i8 = base + 1; _i8 < end; _i8++) {
71597
        if (glyphs[_i8].shaperInfo.category === CATEGORIES.H) {
71598
          var _j = void 0;
71599
          for (_j = end - 1; _j > _i8; _j--) {
71600
            if (isConsonant(glyphs[_j]) || disallowDoubleHalants && glyphs[_j].shaperInfo.category === CATEGORIES.H) {
71601
              break;
71602
            }
71603
          }
71604
          if (glyphs[_j].shaperInfo.category !== CATEGORIES.H && _j > _i8) {
71605
            // Move Halant to after last consonant.
71606
            var t = glyphs[_i8];
71607
            glyphs.splice.apply(glyphs, [_i8, 0].concat(glyphs.splice(_i8 + 1, _j - _i8)));
71608
            glyphs[_j] = t;
71609
          }
71610
          break;
71611
        }
71612
      }
71613
    } // Attach misc marks to previous char to move with them.
71614
71615
    var lastPos = POSITIONS.Start;
71616
    for (var _i9 = start; _i9 < end; _i9++) {
71617
      var _info3 = glyphs[_i9].shaperInfo;
71618
      if (_info3.category & (JOINER_FLAGS | CATEGORIES.N | CATEGORIES.RS | CATEGORIES.CM | HALANT_OR_COENG_FLAGS & _info3.category)) {
71619
        _info3.position = lastPos;
71620
        if (_info3.category === CATEGORIES.H && _info3.position === POSITIONS.Pre_M) {
71621
          // Uniscribe doesn't move the Halant with Left Matra.
71622
          // TEST: U+092B,U+093F,U+094DE
71623
          // We follow.  This is important for the Sinhala
71624
          // U+0DDA split matra since it decomposes to U+0DD9,U+0DCA
71625
          // where U+0DD9 is a left matra and U+0DCA is the virama.
71626
          // We don't want to move the virama with the left matra.
71627
          // TEST: U+0D9A,U+0DDA
71628
          for (var _j2 = _i9; _j2 > start; _j2--) {
71629
            if (glyphs[_j2 - 1].shaperInfo.position !== POSITIONS.Pre_M) {
71630
              _info3.position = glyphs[_j2 - 1].shaperInfo.position;
71631
              break;
71632
            }
71633
          }
71634
        }
71635
      } else if (_info3.position !== POSITIONS.SMVD) {
71636
        lastPos = _info3.position;
71637
      }
71638
    } // For post-base consonants let them own anything before them
71639
    // since the last consonant or matra.
71640
71641
    var last = base;
71642
    for (var _i10 = base + 1; _i10 < end; _i10++) {
71643
      if (isConsonant(glyphs[_i10])) {
71644
        for (var _j3 = last + 1; _j3 < _i10; _j3++) {
71645
          if (glyphs[_j3].shaperInfo.position < POSITIONS.SMVD) {
71646
            glyphs[_j3].shaperInfo.position = glyphs[_i10].shaperInfo.position;
71647
          }
71648
        }
71649
        last = _i10;
71650
      } else if (glyphs[_i10].shaperInfo.category === CATEGORIES.M) {
71651
        last = _i10;
71652
      }
71653
    }
71654
    var arr = glyphs.slice(start, end);
71655
    arr.sort(function (a, b) {
71656
      return a.shaperInfo.position - b.shaperInfo.position;
71657
    });
71658
    glyphs.splice.apply(glyphs, [start, arr.length].concat(arr)); // Find base again
71659
71660
    for (var _i11 = start; _i11 < end; _i11++) {
71661
      if (glyphs[_i11].shaperInfo.position === POSITIONS.Base_C) {
71662
        base = _i11;
71663
        break;
71664
      }
71665
    } // Setup features now
71666
    // Reph
71667
71668
    for (var _i12 = start; _i12 < end && glyphs[_i12].shaperInfo.position === POSITIONS.Ra_To_Become_Reph; _i12++) {
71669
      glyphs[_i12].features.rphf = true;
71670
    } // Pre-base
71671
71672
    var blwf = !plan.isOldSpec && indicConfig.blwfMode === 'Pre_And_Post';
71673
    for (var _i13 = start; _i13 < base; _i13++) {
71674
      glyphs[_i13].features.half = true;
71675
      if (blwf) {
71676
        glyphs[_i13].features.blwf = true;
71677
      }
71678
    } // Post-base
71679
71680
    for (var _i14 = base + 1; _i14 < end; _i14++) {
71681
      glyphs[_i14].features.abvf = true;
71682
      glyphs[_i14].features.pstf = true;
71683
      glyphs[_i14].features.blwf = true;
71684
    }
71685
    if (plan.isOldSpec && plan.unicodeScript === 'Devanagari') {
71686
      // Old-spec eye-lash Ra needs special handling.  From the
71687
      // spec:
71688
      //
71689
      // "The feature 'below-base form' is applied to consonants
71690
      // having below-base forms and following the base consonant.
71691
      // The exception is vattu, which may appear below half forms
71692
      // as well as below the base glyph. The feature 'below-base
71693
      // form' will be applied to all such occurrences of Ra as well."
71694
      //
71695
      // Test case: U+0924,U+094D,U+0930,U+094d,U+0915
71696
      // with Sanskrit 2003 font.
71697
      //
71698
      // However, note that Ra,Halant,ZWJ is the correct way to
71699
      // request eyelash form of Ra, so we wouldbn't inhibit it
71700
      // in that sequence.
71701
      //
71702
      // Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915
71703
      for (var _i15 = start; _i15 + 1 < base; _i15++) {
71704
        if (glyphs[_i15].shaperInfo.category === CATEGORIES.Ra && glyphs[_i15 + 1].shaperInfo.category === CATEGORIES.H && (_i15 + 1 === base || glyphs[_i15 + 2].shaperInfo.category === CATEGORIES.ZWJ)) {
71705
          glyphs[_i15].features.blwf = true;
71706
          glyphs[_i15 + 1].features.blwf = true;
71707
        }
71708
      }
71709
    }
71710
    var prefLen = 2;
71711
    if (features.pref && base + prefLen < end) {
71712
      // Find a Halant,Ra sequence and mark it for pre-base reordering processing.
71713
      for (var _i16 = base + 1; _i16 + prefLen - 1 < end; _i16++) {
71714
        var _g2 = [glyphs[_i16].copy(), glyphs[_i16 + 1].copy()];
71715
        if (wouldSubstitute(_g2, 'pref')) {
71716
          for (var _j4 = 0; _j4 < prefLen; _j4++) {
71717
            glyphs[_i16++].features.pref = true;
71718
          } // Mark the subsequent stuff with 'cfar'.  Used in Khmer.
71719
          // Read the feature spec.
71720
          // This allows distinguishing the following cases with MS Khmer fonts:
71721
          // U+1784,U+17D2,U+179A,U+17D2,U+1782
71722
          // U+1784,U+17D2,U+1782,U+17D2,U+179A
71723
71724
          if (features.cfar) {
71725
            for (; _i16 < end; _i16++) {
71726
              glyphs[_i16].features.cfar = true;
71727
            }
71728
          }
71729
          break;
71730
        }
71731
      }
71732
    } // Apply ZWJ/ZWNJ effects
71733
71734
    for (var _i17 = start + 1; _i17 < end; _i17++) {
71735
      if (isJoiner(glyphs[_i17])) {
71736
        var nonJoiner = glyphs[_i17].shaperInfo.category === CATEGORIES.ZWNJ;
71737
        var _j5 = _i17;
71738
        do {
71739
          _j5--; // ZWJ/ZWNJ should disable CJCT.  They do that by simply
71740
          // being there, since we don't skip them for the CJCT
71741
          // feature (ie. F_MANUAL_ZWJ)
71742
          // A ZWNJ disables HALF.
71743
71744
          if (nonJoiner) {
71745
            delete glyphs[_j5].features.half;
71746
          }
71747
        } while (_j5 > start && !isConsonant(glyphs[_j5]));
71748
      }
71749
    }
71750
  }
71751
}
71752
function finalReordering(font, glyphs, plan) {
71753
  var indicConfig = plan.indicConfig;
71754
  var features = font._layoutEngine.engine.GSUBProcessor.features;
71755
  for (var start = 0, end = nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable(glyphs, start)) {
71756
    // 4. Final reordering:
71757
    //
71758
    // After the localized forms and basic shaping forms GSUB features have been
71759
    // applied (see below), the shaping engine performs some final glyph
71760
    // reordering before applying all the remaining font features to the entire
71761
    // cluster.
71762
    var tryPref = !!features.pref; // Find base again
71763
71764
    var base = start;
71765
    for (; base < end; base++) {
71766
      if (glyphs[base].shaperInfo.position >= POSITIONS.Base_C) {
71767
        if (tryPref && base + 1 < end) {
71768
          for (var i = base + 1; i < end; i++) {
71769
            if (glyphs[i].features.pref) {
71770
              if (!(glyphs[i].substituted && glyphs[i].isLigated && !glyphs[i].isMultiplied)) {
71771
                // Ok, this was a 'pref' candidate but didn't form any.
71772
                // Base is around here...
71773
                base = i;
71774
                while (base < end && isHalantOrCoeng(glyphs[base])) {
71775
                  base++;
71776
                }
71777
                glyphs[base].shaperInfo.position = POSITIONS.BASE_C;
71778
                tryPref = false;
71779
              }
71780
              break;
71781
            }
71782
          }
71783
        } // For Malayalam, skip over unformed below- (but NOT post-) forms.
71784
71785
        if (plan.unicodeScript === 'Malayalam') {
71786
          for (var _i18 = base + 1; _i18 < end; _i18++) {
71787
            while (_i18 < end && isJoiner(glyphs[_i18])) {
71788
              _i18++;
71789
            }
71790
            if (_i18 === end || !isHalantOrCoeng(glyphs[_i18])) {
71791
              break;
71792
            }
71793
            _i18++; // Skip halant.
71794
71795
            while (_i18 < end && isJoiner(glyphs[_i18])) {
71796
              _i18++;
71797
            }
71798
            if (_i18 < end && isConsonant(glyphs[_i18]) && glyphs[_i18].shaperInfo.position === POSITIONS.Below_C) {
71799
              base = _i18;
71800
              glyphs[base].shaperInfo.position = POSITIONS.Base_C;
71801
            }
71802
          }
71803
        }
71804
        if (start < base && glyphs[base].shaperInfo.position > POSITIONS.Base_C) {
71805
          base--;
71806
        }
71807
        break;
71808
      }
71809
    }
71810
    if (base === end && start < base && glyphs[base - 1].shaperInfo.category === CATEGORIES.ZWJ) {
71811
      base--;
71812
    }
71813
    if (base < end) {
71814
      while (start < base && glyphs[base].shaperInfo.category & (CATEGORIES.N | HALANT_OR_COENG_FLAGS)) {
71815
        base--;
71816
      }
71817
    } // o Reorder matras:
71818
    //
71819
    // If a pre-base matra character had been reordered before applying basic
71820
    // features, the glyph can be moved closer to the main consonant based on
71821
    // whether half-forms had been formed. Actual position for the matra is
71822
    // defined as “after last standalone halant glyph, after initial matra
71823
    // position and before the main consonant”. If ZWJ or ZWNJ follow this
71824
    // halant, position is moved after it.
71825
    //
71826
71827
    if (start + 1 < end && start < base) {
71828
      // Otherwise there can't be any pre-base matra characters.
71829
      // If we lost track of base, alas, position before last thingy.
71830
      var newPos = base === end ? base - 2 : base - 1; // Malayalam / Tamil do not have "half" forms or explicit virama forms.
71831
      // The glyphs formed by 'half' are Chillus or ligated explicit viramas.
71832
      // We want to position matra after them.
71833
71834
      if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {
71835
        while (newPos > start && !(glyphs[newPos].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {
71836
          newPos--;
71837
        } // If we found no Halant we are done.
71838
        // Otherwise only proceed if the Halant does
71839
        // not belong to the Matra itself!
71840
71841
        if (isHalantOrCoeng(glyphs[newPos]) && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {
71842
          // If ZWJ or ZWNJ follow this halant, position is moved after it.
71843
          if (newPos + 1 < end && isJoiner(glyphs[newPos + 1])) {
71844
            newPos++;
71845
          }
71846
        } else {
71847
          newPos = start; // No move.
71848
        }
71849
      }
71850
71851
      if (start < newPos && glyphs[newPos].shaperInfo.position !== POSITIONS.Pre_M) {
71852
        // Now go see if there's actually any matras...
71853
        for (var _i19 = newPos; _i19 > start; _i19--) {
71854
          if (glyphs[_i19 - 1].shaperInfo.position === POSITIONS.Pre_M) {
71855
            var oldPos = _i19 - 1;
71856
            if (oldPos < base && base <= newPos) {
71857
              // Shouldn't actually happen.
71858
              base--;
71859
            }
71860
            var tmp = glyphs[oldPos];
71861
            glyphs.splice.apply(glyphs, [oldPos, 0].concat(glyphs.splice(oldPos + 1, newPos - oldPos)));
71862
            glyphs[newPos] = tmp;
71863
            newPos--;
71864
          }
71865
        }
71866
      }
71867
    } // o Reorder reph:
71868
    //
71869
    // Reph’s original position is always at the beginning of the syllable,
71870
    // (i.e. it is not reordered at the character reordering stage). However,
71871
    // it will be reordered according to the basic-forms shaping results.
71872
    // Possible positions for reph, depending on the script, are; after main,
71873
    // before post-base consonant forms, and after post-base consonant forms.
71874
    // Two cases:
71875
    //
71876
    // - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then
71877
    //   we should only move it if the sequence ligated to the repha form.
71878
    //
71879
    // - If repha is encoded separately and in the logical position, we should only
71880
    //   move it if it did NOT ligate.  If it ligated, it's probably the font trying
71881
    //   to make it work without the reordering.
71882
71883
    if (start + 1 < end && glyphs[start].shaperInfo.position === POSITIONS.Ra_To_Become_Reph && glyphs[start].shaperInfo.category === CATEGORIES.Repha !== (glyphs[start].isLigated && !glyphs[start].isMultiplied)) {
71884
      var newRephPos = void 0;
71885
      var rephPos = indicConfig.rephPos;
71886
      var found = false; // 1. If reph should be positioned after post-base consonant forms,
71887
      //    proceed to step 5.
71888
71889
      if (rephPos !== POSITIONS.After_Post) {
71890
        //  2. If the reph repositioning class is not after post-base: target
71891
        //     position is after the first explicit halant glyph between the
71892
        //     first post-reph consonant and last main consonant. If ZWJ or ZWNJ
71893
        //     are following this halant, position is moved after it. If such
71894
        //     position is found, this is the target position. Otherwise,
71895
        //     proceed to the next step.
71896
        //
71897
        //     Note: in old-implementation fonts, where classifications were
71898
        //     fixed in shaping engine, there was no case where reph position
71899
        //     will be found on this step.
71900
        newRephPos = start + 1;
71901
        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {
71902
          newRephPos++;
71903
        }
71904
        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {
71905
          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.
71906
          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {
71907
            newRephPos++;
71908
          }
71909
          found = true;
71910
        } // 3. If reph should be repositioned after the main consonant: find the
71911
        //    first consonant not ligated with main, or find the first
71912
        //    consonant that is not a potential pre-base reordering Ra.
71913
71914
        if (!found && rephPos === POSITIONS.After_Main) {
71915
          newRephPos = base;
71916
          while (newRephPos + 1 < end && glyphs[newRephPos + 1].shaperInfo.position <= POSITIONS.After_Main) {
71917
            newRephPos++;
71918
          }
71919
          found = newRephPos < end;
71920
        } // 4. If reph should be positioned before post-base consonant, find
71921
        //    first post-base classified consonant not ligated with main. If no
71922
        //    consonant is found, the target position should be before the
71923
        //    first matra, syllable modifier sign or vedic sign.
71924
        //
71925
        // This is our take on what step 4 is trying to say (and failing, BADLY).
71926
71927
        if (!found && rephPos === POSITIONS.After_Sub) {
71928
          newRephPos = base;
71929
          while (newRephPos + 1 < end && !(glyphs[newRephPos + 1].shaperInfo.position & (POSITIONS.Post_C | POSITIONS.After_Post | POSITIONS.SMVD))) {
71930
            newRephPos++;
71931
          }
71932
          found = newRephPos < end;
71933
        }
71934
      } //  5. If no consonant is found in steps 3 or 4, move reph to a position
71935
      //     immediately before the first post-base matra, syllable modifier
71936
      //     sign or vedic sign that has a reordering class after the intended
71937
      //     reph position. For example, if the reordering position for reph
71938
      //     is post-main, it will skip above-base matras that also have a
71939
      //     post-main position.
71940
71941
      if (!found) {
71942
        // Copied from step 2.
71943
        newRephPos = start + 1;
71944
        while (newRephPos < base && !isHalantOrCoeng(glyphs[newRephPos])) {
71945
          newRephPos++;
71946
        }
71947
        if (newRephPos < base && isHalantOrCoeng(glyphs[newRephPos])) {
71948
          // ->If ZWJ or ZWNJ are following this halant, position is moved after it.
71949
          if (newRephPos + 1 < base && isJoiner(glyphs[newRephPos + 1])) {
71950
            newRephPos++;
71951
          }
71952
          found = true;
71953
        }
71954
      } // 6. Otherwise, reorder reph to the end of the syllable.
71955
71956
      if (!found) {
71957
        newRephPos = end - 1;
71958
        while (newRephPos > start && glyphs[newRephPos].shaperInfo.position === POSITIONS.SMVD) {
71959
          newRephPos--;
71960
        } // If the Reph is to be ending up after a Matra,Halant sequence,
71961
        // position it before that Halant so it can interact with the Matra.
71962
        // However, if it's a plain Consonant,Halant we shouldn't do that.
71963
        // Uniscribe doesn't do this.
71964
        // TEST: U+0930,U+094D,U+0915,U+094B,U+094D
71965
71966
        if (isHalantOrCoeng(glyphs[newRephPos])) {
71967
          for (var _i20 = base + 1; _i20 < newRephPos; _i20++) {
71968
            if (glyphs[_i20].shaperInfo.category === CATEGORIES.M) {
71969
              newRephPos--;
71970
            }
71971
          }
71972
        }
71973
      }
71974
      var reph = glyphs[start];
71975
      glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, newRephPos - start)));
71976
      glyphs[newRephPos] = reph;
71977
      if (start < base && base <= newRephPos) {
71978
        base--;
71979
      }
71980
    } // o Reorder pre-base reordering consonants:
71981
    //
71982
    // If a pre-base reordering consonant is found, reorder it according to
71983
    // the following rules:
71984
71985
    if (tryPref && base + 1 < end) {
71986
      for (var _i21 = base + 1; _i21 < end; _i21++) {
71987
        if (glyphs[_i21].features.pref) {
71988
          // 1. Only reorder a glyph produced by substitution during application
71989
          //    of the <pref> feature. (Note that a font may shape a Ra consonant with
71990
          //    the feature generally but block it in certain contexts.)
71991
          // Note: We just check that something got substituted.  We don't check that
71992
          // the <pref> feature actually did it...
71993
          //
71994
          // Reorder pref only if it ligated.
71995
          if (glyphs[_i21].isLigated && !glyphs[_i21].isMultiplied) {
71996
            // 2. Try to find a target position the same way as for pre-base matra.
71997
            //    If it is found, reorder pre-base consonant glyph.
71998
            //
71999
            // 3. If position is not found, reorder immediately before main
72000
            //    consonant.
72001
            var _newPos = base; // Malayalam / Tamil do not have "half" forms or explicit virama forms.
72002
            // The glyphs formed by 'half' are Chillus or ligated explicit viramas.
72003
            // We want to position matra after them.
72004
72005
            if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {
72006
              while (_newPos > start && !(glyphs[_newPos - 1].shaperInfo.category & (CATEGORIES.M | HALANT_OR_COENG_FLAGS))) {
72007
                _newPos--;
72008
              } // In Khmer coeng model, a H,Ra can go *after* matras.  If it goes after a
72009
              // split matra, it should be reordered to *before* the left part of such matra.
72010
72011
              if (_newPos > start && glyphs[_newPos - 1].shaperInfo.category === CATEGORIES.M) {
72012
                var _oldPos2 = _i21;
72013
                for (var j = base + 1; j < _oldPos2; j++) {
72014
                  if (glyphs[j].shaperInfo.category === CATEGORIES.M) {
72015
                    _newPos--;
72016
                    break;
72017
                  }
72018
                }
72019
              }
72020
            }
72021
            if (_newPos > start && isHalantOrCoeng(glyphs[_newPos - 1])) {
72022
              // -> If ZWJ or ZWNJ follow this halant, position is moved after it.
72023
              if (_newPos < end && isJoiner(glyphs[_newPos])) {
72024
                _newPos++;
72025
              }
72026
            }
72027
            var _oldPos = _i21;
72028
            var _tmp = glyphs[_oldPos];
72029
            glyphs.splice.apply(glyphs, [_newPos + 1, 0].concat(glyphs.splice(_newPos, _oldPos - _newPos)));
72030
            glyphs[_newPos] = _tmp;
72031
            if (_newPos <= base && base < _oldPos) {
72032
              base++;
72033
            }
72034
          }
72035
          break;
72036
        }
72037
      }
72038
    } // Apply 'init' to the Left Matra if it's a word start.
72039
72040
    if (glyphs[start].shaperInfo.position === POSITIONS.Pre_M && (!start || !/Cf|Mn/.test(unicode.getCategory(glyphs[start - 1].codePoints[0])))) {
72041
      glyphs[start].features.init = true;
72042
    }
72043
  }
72044
}
72045
function nextSyllable(glyphs, start) {
72046
  if (start >= glyphs.length) return start;
72047
  var syllable = glyphs[start].shaperInfo.syllable;
72048
  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}
72049
  return start;
72050
}
72051
var categories$1 = useData.categories,
72052
  decompositions$2 = useData.decompositions;
72053
var trie$2 = new UnicodeTrie(Buffer("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","base64"));
72054
var stateMachine$1 = new StateMachine(useData);
72055
/**
72056
 * This shaper is an implementation of the Universal Shaping Engine, which
72057
 * uses Unicode data to shape a number of scripts without a dedicated shaping engine.
72058
 * See https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm.
72059
 */
72060
var UniversalShaper = /*#__PURE__*/function (_DefaultShaper4) {
72061
  _inheritsLoose(UniversalShaper, _DefaultShaper4);
72062
  function UniversalShaper() {
72063
    return _DefaultShaper4.apply(this, arguments) || this;
72064
  }
72065
  UniversalShaper.planFeatures = function planFeatures(plan) {
72066
    plan.addStage(setupSyllables$1); // Default glyph pre-processing group
72067
72068
    plan.addStage(['locl', 'ccmp', 'nukt', 'akhn']); // Reordering group
72069
72070
    plan.addStage(clearSubstitutionFlags);
72071
    plan.addStage(['rphf'], false);
72072
    plan.addStage(recordRphf);
72073
    plan.addStage(clearSubstitutionFlags);
72074
    plan.addStage(['pref']);
72075
    plan.addStage(recordPref); // Orthographic unit shaping group
72076
72077
    plan.addStage(['rkrf', 'abvf', 'blwf', 'half', 'pstf', 'vatu', 'cjct']);
72078
    plan.addStage(reorder); // Topographical features
72079
    // Scripts that need this are handled by the Arabic shaper, not implemented here for now.
72080
    // plan.addStage(['isol', 'init', 'medi', 'fina', 'med2', 'fin2', 'fin3'], false);
72081
    // Standard topographic presentation and positional feature application
72082
72083
    plan.addStage(['abvs', 'blws', 'pres', 'psts', 'dist', 'abvm', 'blwm']);
72084
  };
72085
  UniversalShaper.assignFeatures = function assignFeatures(plan, glyphs) {
72086
    var _loop = function _loop(i) {
72087
      var codepoint = glyphs[i].codePoints[0];
72088
      if (decompositions$2[codepoint]) {
72089
        var decomposed = decompositions$2[codepoint].map(function (c) {
72090
          var g = plan.font.glyphForCodePoint(c);
72091
          return new GlyphInfo(plan.font, g.id, [c], glyphs[i].features);
72092
        });
72093
        glyphs.splice.apply(glyphs, [i, 1].concat(decomposed));
72094
      }
72095
    };
72096
72097
    // Decompose split vowels
72098
    // TODO: do this in a more general unicode normalizer
72099
    for (var i = glyphs.length - 1; i >= 0; i--) {
72100
      _loop(i);
72101
    }
72102
  };
72103
  return UniversalShaper;
72104
}(DefaultShaper);
72105
_defineProperty(UniversalShaper, "zeroMarkWidths", 'BEFORE_GPOS');
72106
function useCategory(glyph) {
72107
  return trie$2.get(glyph.codePoints[0]);
72108
}
72109
var USEInfo = function USEInfo(category, syllableType, syllable) {
72110
  this.category = category;
72111
  this.syllableType = syllableType;
72112
  this.syllable = syllable;
72113
};
72114
function setupSyllables$1(font, glyphs) {
72115
  var syllable = 0;
72116
  for (var _iterator55 = _createForOfIteratorHelperLoose(stateMachine$1.match(glyphs.map(useCategory))), _step55; !(_step55 = _iterator55()).done;) {
72117
    var _step55$value = _step55.value,
72118
      start = _step55$value[0],
72119
      end = _step55$value[1],
72120
      tags = _step55$value[2];
72121
    ++syllable; // Create shaper info
72122
72123
    for (var i = start; i <= end; i++) {
72124
      glyphs[i].shaperInfo = new USEInfo(categories$1[useCategory(glyphs[i])], tags[0], syllable);
72125
    } // Assign rphf feature
72126
72127
    var limit = glyphs[start].shaperInfo.category === 'R' ? 1 : Math.min(3, end - start);
72128
    for (var _i = start; _i < start + limit; _i++) {
72129
      glyphs[_i].features.rphf = true;
72130
    }
72131
  }
72132
}
72133
function clearSubstitutionFlags(font, glyphs) {
72134
  for (var _iterator56 = _createForOfIteratorHelperLoose(glyphs), _step56; !(_step56 = _iterator56()).done;) {
72135
    var glyph = _step56.value;
72136
    glyph.substituted = false;
72137
  }
72138
}
72139
function recordRphf(font, glyphs) {
72140
  for (var _iterator57 = _createForOfIteratorHelperLoose(glyphs), _step57; !(_step57 = _iterator57()).done;) {
72141
    var glyph = _step57.value;
72142
    if (glyph.substituted && glyph.features.rphf) {
72143
      // Mark a substituted repha.
72144
      glyph.shaperInfo.category = 'R';
72145
    }
72146
  }
72147
}
72148
function recordPref(font, glyphs) {
72149
  for (var _iterator58 = _createForOfIteratorHelperLoose(glyphs), _step58; !(_step58 = _iterator58()).done;) {
72150
    var glyph = _step58.value;
72151
    if (glyph.substituted) {
72152
      // Mark a substituted pref as VPre, as they behave the same way.
72153
      glyph.shaperInfo.category = 'VPre';
72154
    }
72155
  }
72156
}
72157
function reorder(font, glyphs) {
72158
  var dottedCircle = font.glyphForCodePoint(0x25cc).id;
72159
  for (var start = 0, end = nextSyllable$1(glyphs, 0); start < glyphs.length; start = end, end = nextSyllable$1(glyphs, start)) {
72160
    var i = void 0,
72161
      j = void 0;
72162
    var info = glyphs[start].shaperInfo;
72163
    var type = info.syllableType; // Only a few syllable types need reordering.
72164
72165
    if (type !== 'virama_terminated_cluster' && type !== 'standard_cluster' && type !== 'broken_cluster') {
72166
      continue;
72167
    } // Insert a dotted circle glyph in broken clusters.
72168
72169
    if (type === 'broken_cluster' && dottedCircle) {
72170
      var g = new GlyphInfo(font, dottedCircle, [0x25cc]);
72171
      g.shaperInfo = info; // Insert after possible Repha.
72172
72173
      for (i = start; i < end && glyphs[i].shaperInfo.category === 'R'; i++) {}
72174
      glyphs.splice(++i, 0, g);
72175
      end++;
72176
    } // Move things forward.
72177
72178
    if (info.category === 'R' && end - start > 1) {
72179
      // Got a repha. Reorder it to after first base, before first halant.
72180
      for (i = start + 1; i < end; i++) {
72181
        info = glyphs[i].shaperInfo;
72182
        if (isBase(info) || isHalant(glyphs[i])) {
72183
          // If we hit a halant, move before it; otherwise it's a base: move to it's
72184
          // place, and shift things in between backward.
72185
          if (isHalant(glyphs[i])) {
72186
            i--;
72187
          }
72188
          glyphs.splice.apply(glyphs, [start, 0].concat(glyphs.splice(start + 1, i - start), [glyphs[i]]));
72189
          break;
72190
        }
72191
      }
72192
    } // Move things back.
72193
72194
    for (i = start, j = end; i < end; i++) {
72195
      info = glyphs[i].shaperInfo;
72196
      if (isBase(info) || isHalant(glyphs[i])) {
72197
        // If we hit a halant, move after it; otherwise it's a base: move to it's
72198
        // place, and shift things in between backward.
72199
        j = isHalant(glyphs[i]) ? i + 1 : i;
72200
      } else if ((info.category === 'VPre' || info.category === 'VMPre') && j < i) {
72201
        glyphs.splice.apply(glyphs, [j, 1, glyphs[i]].concat(glyphs.splice(j, i - j)));
72202
      }
72203
    }
72204
  }
72205
}
72206
function nextSyllable$1(glyphs, start) {
72207
  if (start >= glyphs.length) return start;
72208
  var syllable = glyphs[start].shaperInfo.syllable;
72209
  while (++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable) {}
72210
  return start;
72211
}
72212
function isHalant(glyph) {
72213
  return glyph.shaperInfo.category === 'H' && !glyph.isLigated;
72214
}
72215
function isBase(info) {
72216
  return info.category === 'B' || info.category === 'GB';
72217
}
72218
var SHAPERS = {
72219
  arab: ArabicShaper,
72220
  // Arabic
72221
  mong: ArabicShaper,
72222
  // Mongolian
72223
  syrc: ArabicShaper,
72224
  // Syriac
72225
  'nko ': ArabicShaper,
72226
  // N'Ko
72227
  phag: ArabicShaper,
72228
  // Phags Pa
72229
  mand: ArabicShaper,
72230
  // Mandaic
72231
  mani: ArabicShaper,
72232
  // Manichaean
72233
  phlp: ArabicShaper,
72234
  // Psalter Pahlavi
72235
  hang: HangulShaper,
72236
  // Hangul
72237
  bng2: IndicShaper,
72238
  // Bengali
72239
  beng: IndicShaper,
72240
  // Bengali
72241
  dev2: IndicShaper,
72242
  // Devanagari
72243
  deva: IndicShaper,
72244
  // Devanagari
72245
  gjr2: IndicShaper,
72246
  // Gujarati
72247
  gujr: IndicShaper,
72248
  // Gujarati
72249
  guru: IndicShaper,
72250
  // Gurmukhi
72251
  gur2: IndicShaper,
72252
  // Gurmukhi
72253
  knda: IndicShaper,
72254
  // Kannada
72255
  knd2: IndicShaper,
72256
  // Kannada
72257
  mlm2: IndicShaper,
72258
  // Malayalam
72259
  mlym: IndicShaper,
72260
  // Malayalam
72261
  ory2: IndicShaper,
72262
  // Oriya
72263
  orya: IndicShaper,
72264
  // Oriya
72265
  taml: IndicShaper,
72266
  // Tamil
72267
  tml2: IndicShaper,
72268
  // Tamil
72269
  telu: IndicShaper,
72270
  // Telugu
72271
  tel2: IndicShaper,
72272
  // Telugu
72273
  khmr: IndicShaper,
72274
  // Khmer
72275
  bali: UniversalShaper,
72276
  // Balinese
72277
  batk: UniversalShaper,
72278
  // Batak
72279
  brah: UniversalShaper,
72280
  // Brahmi
72281
  bugi: UniversalShaper,
72282
  // Buginese
72283
  buhd: UniversalShaper,
72284
  // Buhid
72285
  cakm: UniversalShaper,
72286
  // Chakma
72287
  cham: UniversalShaper,
72288
  // Cham
72289
  dupl: UniversalShaper,
72290
  // Duployan
72291
  egyp: UniversalShaper,
72292
  // Egyptian Hieroglyphs
72293
  gran: UniversalShaper,
72294
  // Grantha
72295
  hano: UniversalShaper,
72296
  // Hanunoo
72297
  java: UniversalShaper,
72298
  // Javanese
72299
  kthi: UniversalShaper,
72300
  // Kaithi
72301
  kali: UniversalShaper,
72302
  // Kayah Li
72303
  khar: UniversalShaper,
72304
  // Kharoshthi
72305
  khoj: UniversalShaper,
72306
  // Khojki
72307
  sind: UniversalShaper,
72308
  // Khudawadi
72309
  lepc: UniversalShaper,
72310
  // Lepcha
72311
  limb: UniversalShaper,
72312
  // Limbu
72313
  mahj: UniversalShaper,
72314
  // Mahajani
72315
  // mand: UniversalShaper, // Mandaic
72316
  // mani: UniversalShaper, // Manichaean
72317
  mtei: UniversalShaper,
72318
  // Meitei Mayek
72319
  modi: UniversalShaper,
72320
  // Modi
72321
  // mong: UniversalShaper, // Mongolian
72322
  // 'nko ': UniversalShaper, // N’Ko
72323
  hmng: UniversalShaper,
72324
  // Pahawh Hmong
72325
  // phag: UniversalShaper, // Phags-pa
72326
  // phlp: UniversalShaper, // Psalter Pahlavi
72327
  rjng: UniversalShaper,
72328
  // Rejang
72329
  saur: UniversalShaper,
72330
  // Saurashtra
72331
  shrd: UniversalShaper,
72332
  // Sharada
72333
  sidd: UniversalShaper,
72334
  // Siddham
72335
  sinh: UniversalShaper,
72336
  // Sinhala
72337
  sund: UniversalShaper,
72338
  // Sundanese
72339
  sylo: UniversalShaper,
72340
  // Syloti Nagri
72341
  tglg: UniversalShaper,
72342
  // Tagalog
72343
  tagb: UniversalShaper,
72344
  // Tagbanwa
72345
  tale: UniversalShaper,
72346
  // Tai Le
72347
  lana: UniversalShaper,
72348
  // Tai Tham
72349
  tavt: UniversalShaper,
72350
  // Tai Viet
72351
  takr: UniversalShaper,
72352
  // Takri
72353
  tibt: UniversalShaper,
72354
  // Tibetan
72355
  tfng: UniversalShaper,
72356
  // Tifinagh
72357
  tirh: UniversalShaper,
72358
  // Tirhuta
72359
  latn: DefaultShaper,
72360
  // Latin
72361
  DFLT: DefaultShaper // Default
72362
};
72363
72364
function choose(script) {
72365
  if (!Array.isArray(script)) {
72366
    script = [script];
72367
  }
72368
  for (var _iterator59 = _createForOfIteratorHelperLoose(script), _step59; !(_step59 = _iterator59()).done;) {
72369
    var s = _step59.value;
72370
    var shaper = SHAPERS[s];
72371
    if (shaper) {
72372
      return shaper;
72373
    }
72374
  }
72375
  return DefaultShaper;
72376
}
72377
var GSUBProcessor = /*#__PURE__*/function (_OTProcessor) {
72378
  _inheritsLoose(GSUBProcessor, _OTProcessor);
72379
  function GSUBProcessor() {
72380
    return _OTProcessor.apply(this, arguments) || this;
72381
  }
72382
  var _proto27 = GSUBProcessor.prototype;
72383
  _proto27.applyLookup = function applyLookup(lookupType, table) {
72384
    var _this7 = this;
72385
    switch (lookupType) {
72386
      case 1:
72387
        {
72388
          // Single Substitution
72389
          var index = this.coverageIndex(table.coverage);
72390
          if (index === -1) {
72391
            return false;
72392
          }
72393
          var glyph = this.glyphIterator.cur;
72394
          switch (table.version) {
72395
            case 1:
72396
              glyph.id = glyph.id + table.deltaGlyphID & 0xffff;
72397
              break;
72398
            case 2:
72399
              glyph.id = table.substitute.get(index);
72400
              break;
72401
          }
72402
          return true;
72403
        }
72404
      case 2:
72405
        {
72406
          // Multiple Substitution
72407
          var _index = this.coverageIndex(table.coverage);
72408
          if (_index !== -1) {
72409
            var _this$glyphs2;
72410
            var sequence = table.sequences.get(_index);
72411
            if (sequence.length === 0) {
72412
              // If the sequence length is zero, delete the glyph.
72413
              // The OpenType spec disallows this, but seems like Harfbuzz and Uniscribe allow it.
72414
              this.glyphs.splice(this.glyphIterator.index, 1);
72415
              return true;
72416
            }
72417
            this.glyphIterator.cur.id = sequence[0];
72418
            this.glyphIterator.cur.ligatureComponent = 0;
72419
            var features = this.glyphIterator.cur.features;
72420
            var curGlyph = this.glyphIterator.cur;
72421
            var replacement = sequence.slice(1).map(function (gid, i) {
72422
              var glyph = new GlyphInfo(_this7.font, gid, undefined, features);
72423
              glyph.shaperInfo = curGlyph.shaperInfo;
72424
              glyph.isLigated = curGlyph.isLigated;
72425
              glyph.ligatureComponent = i + 1;
72426
              glyph.substituted = true;
72427
              glyph.isMultiplied = true;
72428
              return glyph;
72429
            });
72430
            (_this$glyphs2 = this.glyphs).splice.apply(_this$glyphs2, [this.glyphIterator.index + 1, 0].concat(replacement));
72431
            return true;
72432
          }
72433
          return false;
72434
        }
72435
      case 3:
72436
        {
72437
          // Alternate Substitution
72438
          var _index2 = this.coverageIndex(table.coverage);
72439
          if (_index2 !== -1) {
72440
            var USER_INDEX = 0; // TODO
72441
72442
            this.glyphIterator.cur.id = table.alternateSet.get(_index2)[USER_INDEX];
72443
            return true;
72444
          }
72445
          return false;
72446
        }
72447
      case 4:
72448
        {
72449
          // Ligature Substitution
72450
          var _index3 = this.coverageIndex(table.coverage);
72451
          if (_index3 === -1) {
72452
            return false;
72453
          }
72454
          for (var _iterator60 = _createForOfIteratorHelperLoose(table.ligatureSets.get(_index3)), _step60; !(_step60 = _iterator60()).done;) {
72455
            var ligature = _step60.value;
72456
            var matched = this.sequenceMatchIndices(1, ligature.components);
72457
            if (!matched) {
72458
              continue;
72459
            }
72460
            var _curGlyph = this.glyphIterator.cur; // Concatenate all of the characters the new ligature will represent
72461
72462
            var characters = _curGlyph.codePoints.slice();
72463
            for (var _iterator61 = _createForOfIteratorHelperLoose(matched), _step61; !(_step61 = _iterator61()).done;) {
72464
              var _characters;
72465
              var _index4 = _step61.value;
72466
              (_characters = characters).push.apply(_characters, this.glyphs[_index4].codePoints);
72467
            } // Create the replacement ligature glyph
72468
72469
            var ligatureGlyph = new GlyphInfo(this.font, ligature.glyph, characters, _curGlyph.features);
72470
            ligatureGlyph.shaperInfo = _curGlyph.shaperInfo;
72471
            ligatureGlyph.isLigated = true;
72472
            ligatureGlyph.substituted = true; // From Harfbuzz:
72473
            // - If it *is* a mark ligature, we don't allocate a new ligature id, and leave
72474
            //   the ligature to keep its old ligature id.  This will allow it to attach to
72475
            //   a base ligature in GPOS.  Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH,
72476
            //   and LAM,LAM,HEH for a ligature, they will leave SHADDA and FATHA with a
72477
            //   ligature id and component value of 2.  Then if SHADDA,FATHA form a ligature
72478
            //   later, we don't want them to lose their ligature id/component, otherwise
72479
            //   GPOS will fail to correctly position the mark ligature on top of the
72480
            //   LAM,LAM,HEH ligature. See https://bugzilla.gnome.org/show_bug.cgi?id=676343
72481
            //
72482
            // - If a ligature is formed of components that some of which are also ligatures
72483
            //   themselves, and those ligature components had marks attached to *their*
72484
            //   components, we have to attach the marks to the new ligature component
72485
            //   positions!  Now *that*'s tricky!  And these marks may be following the
72486
            //   last component of the whole sequence, so we should loop forward looking
72487
            //   for them and update them.
72488
            //
72489
            //   Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a
72490
            //   'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature
72491
            //   id and component == 1.  Now, during 'liga', the LAM and the LAM-HEH ligature
72492
            //   form a LAM-LAM-HEH ligature.  We need to reassign the SHADDA and FATHA to
72493
            //   the new ligature with a component value of 2.
72494
            //
72495
            //   This in fact happened to a font...  See https://bugzilla.gnome.org/show_bug.cgi?id=437633
72496
72497
            var isMarkLigature = _curGlyph.isMark;
72498
            for (var i = 0; i < matched.length && isMarkLigature; i++) {
72499
              isMarkLigature = this.glyphs[matched[i]].isMark;
72500
            }
72501
            ligatureGlyph.ligatureID = isMarkLigature ? null : this.ligatureID++;
72502
            var lastLigID = _curGlyph.ligatureID;
72503
            var lastNumComps = _curGlyph.codePoints.length;
72504
            var curComps = lastNumComps;
72505
            var idx = this.glyphIterator.index + 1; // Set ligatureID and ligatureComponent on glyphs that were skipped in the matched sequence.
72506
            // This allows GPOS to attach marks to the correct ligature components.
72507
72508
            for (var _iterator62 = _createForOfIteratorHelperLoose(matched), _step62; !(_step62 = _iterator62()).done;) {
72509
              var matchIndex = _step62.value;
72510
              // Don't assign new ligature components for mark ligatures (see above)
72511
              if (isMarkLigature) {
72512
                idx = matchIndex;
72513
              } else {
72514
                while (idx < matchIndex) {
72515
                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[idx].ligatureComponent || 1, lastNumComps);
72516
                  this.glyphs[idx].ligatureID = ligatureGlyph.ligatureID;
72517
                  this.glyphs[idx].ligatureComponent = ligatureComponent;
72518
                  idx++;
72519
                }
72520
              }
72521
              lastLigID = this.glyphs[idx].ligatureID;
72522
              lastNumComps = this.glyphs[idx].codePoints.length;
72523
              curComps += lastNumComps;
72524
              idx++; // skip base glyph
72525
            } // Adjust ligature components for any marks following
72526
72527
            if (lastLigID && !isMarkLigature) {
72528
              for (var _i = idx; _i < this.glyphs.length; _i++) {
72529
                if (this.glyphs[_i].ligatureID === lastLigID) {
72530
                  var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[_i].ligatureComponent || 1, lastNumComps);
72531
                  this.glyphs[_i].ligatureComponent = ligatureComponent;
72532
                } else {
72533
                  break;
72534
                }
72535
              }
72536
            } // Delete the matched glyphs, and replace the current glyph with the ligature glyph
72537
72538
            for (var _i2 = matched.length - 1; _i2 >= 0; _i2--) {
72539
              this.glyphs.splice(matched[_i2], 1);
72540
            }
72541
            this.glyphs[this.glyphIterator.index] = ligatureGlyph;
72542
            return true;
72543
          }
72544
          return false;
72545
        }
72546
      case 5:
72547
        // Contextual Substitution
72548
        return this.applyContext(table);
72549
      case 6:
72550
        // Chaining Contextual Substitution
72551
        return this.applyChainingContext(table);
72552
      case 7:
72553
        // Extension Substitution
72554
        return this.applyLookup(table.lookupType, table.extension);
72555
      default:
72556
        throw new Error("GSUB lookupType ".concat(lookupType, " is not supported"));
72557
    }
72558
  };
72559
  return GSUBProcessor;
72560
}(OTProcessor);
72561
var GPOSProcessor = /*#__PURE__*/function (_OTProcessor2) {
72562
  _inheritsLoose(GPOSProcessor, _OTProcessor2);
72563
  function GPOSProcessor() {
72564
    return _OTProcessor2.apply(this, arguments) || this;
72565
  }
72566
  var _proto28 = GPOSProcessor.prototype;
72567
  _proto28.applyPositionValue = function applyPositionValue(sequenceIndex, value) {
72568
    var position = this.positions[this.glyphIterator.peekIndex(sequenceIndex)];
72569
    if (value.xAdvance != null) {
72570
      position.xAdvance += value.xAdvance;
72571
    }
72572
    if (value.yAdvance != null) {
72573
      position.yAdvance += value.yAdvance;
72574
    }
72575
    if (value.xPlacement != null) {
72576
      position.xOffset += value.xPlacement;
72577
    }
72578
    if (value.yPlacement != null) {
72579
      position.yOffset += value.yPlacement;
72580
    } // Adjustments for font variations
72581
72582
    var variationProcessor = this.font._variationProcessor;
72583
    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;
72584
    if (variationProcessor && variationStore) {
72585
      if (value.xPlaDevice) {
72586
        position.xOffset += variationProcessor.getDelta(variationStore, value.xPlaDevice.a, value.xPlaDevice.b);
72587
      }
72588
      if (value.yPlaDevice) {
72589
        position.yOffset += variationProcessor.getDelta(variationStore, value.yPlaDevice.a, value.yPlaDevice.b);
72590
      }
72591
      if (value.xAdvDevice) {
72592
        position.xAdvance += variationProcessor.getDelta(variationStore, value.xAdvDevice.a, value.xAdvDevice.b);
72593
      }
72594
      if (value.yAdvDevice) {
72595
        position.yAdvance += variationProcessor.getDelta(variationStore, value.yAdvDevice.a, value.yAdvDevice.b);
72596
      }
72597
    } // TODO: device tables
72598
  };
72599
  _proto28.applyLookup = function applyLookup(lookupType, table) {
72600
    switch (lookupType) {
72601
      case 1:
72602
        {
72603
          // Single positioning value
72604
          var index = this.coverageIndex(table.coverage);
72605
          if (index === -1) {
72606
            return false;
72607
          }
72608
          switch (table.version) {
72609
            case 1:
72610
              this.applyPositionValue(0, table.value);
72611
              break;
72612
            case 2:
72613
              this.applyPositionValue(0, table.values.get(index));
72614
              break;
72615
          }
72616
          return true;
72617
        }
72618
      case 2:
72619
        {
72620
          // Pair Adjustment Positioning
72621
          var nextGlyph = this.glyphIterator.peek();
72622
          if (!nextGlyph) {
72623
            return false;
72624
          }
72625
          var _index = this.coverageIndex(table.coverage);
72626
          if (_index === -1) {
72627
            return false;
72628
          }
72629
          switch (table.version) {
72630
            case 1:
72631
              // Adjustments for glyph pairs
72632
              var set = table.pairSets.get(_index);
72633
              for (var _iterator63 = _createForOfIteratorHelperLoose(set), _step63; !(_step63 = _iterator63()).done;) {
72634
                var _pair = _step63.value;
72635
                if (_pair.secondGlyph === nextGlyph.id) {
72636
                  this.applyPositionValue(0, _pair.value1);
72637
                  this.applyPositionValue(1, _pair.value2);
72638
                  return true;
72639
                }
72640
              }
72641
              return false;
72642
            case 2:
72643
              // Class pair adjustment
72644
              var class1 = this.getClassID(this.glyphIterator.cur.id, table.classDef1);
72645
              var class2 = this.getClassID(nextGlyph.id, table.classDef2);
72646
              if (class1 === -1 || class2 === -1) {
72647
                return false;
72648
              }
72649
              var pair = table.classRecords.get(class1).get(class2);
72650
              this.applyPositionValue(0, pair.value1);
72651
              this.applyPositionValue(1, pair.value2);
72652
              return true;
72653
          }
72654
        }
72655
      case 3:
72656
        {
72657
          // Cursive Attachment Positioning
72658
          var nextIndex = this.glyphIterator.peekIndex();
72659
          var _nextGlyph = this.glyphs[nextIndex];
72660
          if (!_nextGlyph) {
72661
            return false;
72662
          }
72663
          var curRecord = table.entryExitRecords[this.coverageIndex(table.coverage)];
72664
          if (!curRecord || !curRecord.exitAnchor) {
72665
            return false;
72666
          }
72667
          var nextRecord = table.entryExitRecords[this.coverageIndex(table.coverage, _nextGlyph.id)];
72668
          if (!nextRecord || !nextRecord.entryAnchor) {
72669
            return false;
72670
          }
72671
          var entry = this.getAnchor(nextRecord.entryAnchor);
72672
          var exit = this.getAnchor(curRecord.exitAnchor);
72673
          var cur = this.positions[this.glyphIterator.index];
72674
          var next = this.positions[nextIndex];
72675
          switch (this.direction) {
72676
            case 'ltr':
72677
              cur.xAdvance = exit.x + cur.xOffset;
72678
              var d = entry.x + next.xOffset;
72679
              next.xAdvance -= d;
72680
              next.xOffset -= d;
72681
              break;
72682
            case 'rtl':
72683
              d = exit.x + cur.xOffset;
72684
              cur.xAdvance -= d;
72685
              cur.xOffset -= d;
72686
              next.xAdvance = entry.x + next.xOffset;
72687
              break;
72688
          }
72689
          if (this.glyphIterator.flags.rightToLeft) {
72690
            this.glyphIterator.cur.cursiveAttachment = nextIndex;
72691
            cur.yOffset = entry.y - exit.y;
72692
          } else {
72693
            _nextGlyph.cursiveAttachment = this.glyphIterator.index;
72694
            cur.yOffset = exit.y - entry.y;
72695
          }
72696
          return true;
72697
        }
72698
      case 4:
72699
        {
72700
          // Mark to base positioning
72701
          var markIndex = this.coverageIndex(table.markCoverage);
72702
          if (markIndex === -1) {
72703
            return false;
72704
          } // search backward for a base glyph
72705
72706
          var baseGlyphIndex = this.glyphIterator.index;
72707
          while (--baseGlyphIndex >= 0 && (this.glyphs[baseGlyphIndex].isMark || this.glyphs[baseGlyphIndex].ligatureComponent > 0)) {}
72708
          if (baseGlyphIndex < 0) {
72709
            return false;
72710
          }
72711
          var baseIndex = this.coverageIndex(table.baseCoverage, this.glyphs[baseGlyphIndex].id);
72712
          if (baseIndex === -1) {
72713
            return false;
72714
          }
72715
          var markRecord = table.markArray[markIndex];
72716
          var baseAnchor = table.baseArray[baseIndex][markRecord.class];
72717
          this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);
72718
          return true;
72719
        }
72720
      case 5:
72721
        {
72722
          // Mark to ligature positioning
72723
          var _markIndex = this.coverageIndex(table.markCoverage);
72724
          if (_markIndex === -1) {
72725
            return false;
72726
          } // search backward for a base glyph
72727
72728
          var _baseGlyphIndex = this.glyphIterator.index;
72729
          while (--_baseGlyphIndex >= 0 && this.glyphs[_baseGlyphIndex].isMark) {}
72730
          if (_baseGlyphIndex < 0) {
72731
            return false;
72732
          }
72733
          var ligIndex = this.coverageIndex(table.ligatureCoverage, this.glyphs[_baseGlyphIndex].id);
72734
          if (ligIndex === -1) {
72735
            return false;
72736
          }
72737
          var ligAttach = table.ligatureArray[ligIndex];
72738
          var markGlyph = this.glyphIterator.cur;
72739
          var ligGlyph = this.glyphs[_baseGlyphIndex];
72740
          var compIndex = ligGlyph.ligatureID && ligGlyph.ligatureID === markGlyph.ligatureID && markGlyph.ligatureComponent > 0 ? Math.min(markGlyph.ligatureComponent, ligGlyph.codePoints.length) - 1 : ligGlyph.codePoints.length - 1;
72741
          var _markRecord = table.markArray[_markIndex];
72742
          var _baseAnchor = ligAttach[compIndex][_markRecord.class];
72743
          this.applyAnchor(_markRecord, _baseAnchor, _baseGlyphIndex);
72744
          return true;
72745
        }
72746
      case 6:
72747
        {
72748
          // Mark to mark positioning
72749
          var mark1Index = this.coverageIndex(table.mark1Coverage);
72750
          if (mark1Index === -1) {
72751
            return false;
72752
          } // get the previous mark to attach to
72753
72754
          var prevIndex = this.glyphIterator.peekIndex(-1);
72755
          var prev = this.glyphs[prevIndex];
72756
          if (!prev || !prev.isMark) {
72757
            return false;
72758
          }
72759
          var _cur = this.glyphIterator.cur; // The following logic was borrowed from Harfbuzz
72760
72761
          var good = false;
72762
          if (_cur.ligatureID === prev.ligatureID) {
72763
            if (!_cur.ligatureID) {
72764
              // Marks belonging to the same base
72765
              good = true;
72766
            } else if (_cur.ligatureComponent === prev.ligatureComponent) {
72767
              // Marks belonging to the same ligature component
72768
              good = true;
72769
            }
72770
          } else {
72771
            // If ligature ids don't match, it may be the case that one of the marks
72772
            // itself is a ligature, in which case match.
72773
            if (_cur.ligatureID && !_cur.ligatureComponent || prev.ligatureID && !prev.ligatureComponent) {
72774
              good = true;
72775
            }
72776
          }
72777
          if (!good) {
72778
            return false;
72779
          }
72780
          var mark2Index = this.coverageIndex(table.mark2Coverage, prev.id);
72781
          if (mark2Index === -1) {
72782
            return false;
72783
          }
72784
          var _markRecord2 = table.mark1Array[mark1Index];
72785
          var _baseAnchor2 = table.mark2Array[mark2Index][_markRecord2.class];
72786
          this.applyAnchor(_markRecord2, _baseAnchor2, prevIndex);
72787
          return true;
72788
        }
72789
      case 7:
72790
        // Contextual positioning
72791
        return this.applyContext(table);
72792
      case 8:
72793
        // Chaining contextual positioning
72794
        return this.applyChainingContext(table);
72795
      case 9:
72796
        // Extension positioning
72797
        return this.applyLookup(table.lookupType, table.extension);
72798
      default:
72799
        throw new Error("Unsupported GPOS table: ".concat(lookupType));
72800
    }
72801
  };
72802
  _proto28.applyAnchor = function applyAnchor(markRecord, baseAnchor, baseGlyphIndex) {
72803
    var baseCoords = this.getAnchor(baseAnchor);
72804
    var markCoords = this.getAnchor(markRecord.markAnchor);
72805
    var basePos = this.positions[baseGlyphIndex];
72806
    var markPos = this.positions[this.glyphIterator.index];
72807
    markPos.xOffset = baseCoords.x - markCoords.x;
72808
    markPos.yOffset = baseCoords.y - markCoords.y;
72809
    this.glyphIterator.cur.markAttachment = baseGlyphIndex;
72810
  };
72811
  _proto28.getAnchor = function getAnchor(anchor) {
72812
    // TODO: contour point, device tables
72813
    var x = anchor.xCoordinate;
72814
    var y = anchor.yCoordinate; // Adjustments for font variations
72815
72816
    var variationProcessor = this.font._variationProcessor;
72817
    var variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;
72818
    if (variationProcessor && variationStore) {
72819
      if (anchor.xDeviceTable) {
72820
        x += variationProcessor.getDelta(variationStore, anchor.xDeviceTable.a, anchor.xDeviceTable.b);
72821
      }
72822
      if (anchor.yDeviceTable) {
72823
        y += variationProcessor.getDelta(variationStore, anchor.yDeviceTable.a, anchor.yDeviceTable.b);
72824
      }
72825
    }
72826
    return {
72827
      x: x,
72828
      y: y
72829
    };
72830
  };
72831
  _proto28.applyFeatures = function applyFeatures(userFeatures, glyphs, advances) {
72832
    _OTProcessor2.prototype.applyFeatures.call(this, userFeatures, glyphs, advances);
72833
    for (var i = 0; i < this.glyphs.length; i++) {
72834
      this.fixCursiveAttachment(i);
72835
    }
72836
    this.fixMarkAttachment();
72837
  };
72838
  _proto28.fixCursiveAttachment = function fixCursiveAttachment(i) {
72839
    var glyph = this.glyphs[i];
72840
    if (glyph.cursiveAttachment != null) {
72841
      var j = glyph.cursiveAttachment;
72842
      glyph.cursiveAttachment = null;
72843
      this.fixCursiveAttachment(j);
72844
      this.positions[i].yOffset += this.positions[j].yOffset;
72845
    }
72846
  };
72847
  _proto28.fixMarkAttachment = function fixMarkAttachment() {
72848
    for (var i = 0; i < this.glyphs.length; i++) {
72849
      var glyph = this.glyphs[i];
72850
      if (glyph.markAttachment != null) {
72851
        var j = glyph.markAttachment;
72852
        this.positions[i].xOffset += this.positions[j].xOffset;
72853
        this.positions[i].yOffset += this.positions[j].yOffset;
72854
        if (this.direction === 'ltr') {
72855
          for (var k = j; k < i; k++) {
72856
            this.positions[i].xOffset -= this.positions[k].xAdvance;
72857
            this.positions[i].yOffset -= this.positions[k].yAdvance;
72858
          }
72859
        } else {
72860
          for (var _k = j + 1; _k < i + 1; _k++) {
72861
            this.positions[i].xOffset += this.positions[_k].xAdvance;
72862
            this.positions[i].yOffset += this.positions[_k].yAdvance;
72863
          }
72864
        }
72865
      }
72866
    }
72867
  };
72868
  return GPOSProcessor;
72869
}(OTProcessor);
72870
var OTLayoutEngine = /*#__PURE__*/function () {
72871
  function OTLayoutEngine(font) {
72872
    this.font = font;
72873
    this.glyphInfos = null;
72874
    this.plan = null;
72875
    this.GSUBProcessor = null;
72876
    this.GPOSProcessor = null;
72877
    this.fallbackPosition = true;
72878
    if (font.GSUB) {
72879
      this.GSUBProcessor = new GSUBProcessor(font, font.GSUB);
72880
    }
72881
    if (font.GPOS) {
72882
      this.GPOSProcessor = new GPOSProcessor(font, font.GPOS);
72883
    }
72884
  }
72885
  var _proto29 = OTLayoutEngine.prototype;
72886
  _proto29.setup = function setup(glyphRun) {
72887
    var _this8 = this;
72888
    // Map glyphs to GlyphInfo objects so data can be passed between
72889
    // GSUB and GPOS without mutating the real (shared) Glyph objects.
72890
    this.glyphInfos = glyphRun.glyphs.map(function (glyph) {
72891
      return new GlyphInfo(_this8.font, glyph.id, [].concat(glyph.codePoints));
72892
    }); // Select a script based on what is available in GSUB/GPOS.
72893
72894
    var script = null;
72895
    if (this.GPOSProcessor) {
72896
      script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);
72897
    }
72898
    if (this.GSUBProcessor) {
72899
      script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);
72900
    } // Choose a shaper based on the script, and setup a shaping plan.
72901
    // This determines which features to apply to which glyphs.
72902
72903
    this.shaper = choose(script);
72904
    this.plan = new ShapingPlan(this.font, script, glyphRun.direction);
72905
    this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features); // Assign chosen features to output glyph run
72906
72907
    for (var key in this.plan.allFeatures) {
72908
      glyphRun.features[key] = true;
72909
    }
72910
  };
72911
  _proto29.substitute = function substitute(glyphRun) {
72912
    var _this9 = this;
72913
    if (this.GSUBProcessor) {
72914
      this.plan.process(this.GSUBProcessor, this.glyphInfos); // Map glyph infos back to normal Glyph objects
72915
72916
      glyphRun.glyphs = this.glyphInfos.map(function (glyphInfo) {
72917
        return _this9.font.getGlyph(glyphInfo.id, glyphInfo.codePoints);
72918
      });
72919
    }
72920
  };
72921
  _proto29.position = function position(glyphRun) {
72922
    if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') {
72923
      this.zeroMarkAdvances(glyphRun.positions);
72924
    }
72925
    if (this.GPOSProcessor) {
72926
      this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);
72927
    }
72928
    if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') {
72929
      this.zeroMarkAdvances(glyphRun.positions);
72930
    } // Reverse the glyphs and positions if the script is right-to-left
72931
72932
    if (glyphRun.direction === 'rtl') {
72933
      glyphRun.glyphs.reverse();
72934
      glyphRun.positions.reverse();
72935
    }
72936
    return this.GPOSProcessor && this.GPOSProcessor.features;
72937
  };
72938
  _proto29.zeroMarkAdvances = function zeroMarkAdvances(positions) {
72939
    for (var i = 0; i < this.glyphInfos.length; i++) {
72940
      if (this.glyphInfos[i].isMark) {
72941
        positions[i].xAdvance = 0;
72942
        positions[i].yAdvance = 0;
72943
      }
72944
    }
72945
  };
72946
  _proto29.cleanup = function cleanup() {
72947
    this.glyphInfos = null;
72948
    this.plan = null;
72949
    this.shaper = null;
72950
  };
72951
  _proto29.getAvailableFeatures = function getAvailableFeatures(script, language) {
72952
    var features = [];
72953
    if (this.GSUBProcessor) {
72954
      this.GSUBProcessor.selectScript(script, language);
72955
      features.push.apply(features, Object.keys(this.GSUBProcessor.features));
72956
    }
72957
    if (this.GPOSProcessor) {
72958
      this.GPOSProcessor.selectScript(script, language);
72959
      features.push.apply(features, Object.keys(this.GPOSProcessor.features));
72960
    }
72961
    return features;
72962
  };
72963
  return OTLayoutEngine;
72964
}();
72965
var LayoutEngine = /*#__PURE__*/function () {
72966
  function LayoutEngine(font) {
72967
    this.font = font;
72968
    this.unicodeLayoutEngine = null;
72969
    this.kernProcessor = null; // Choose an advanced layout engine. We try the AAT morx table first since more
72970
    // scripts are currently supported because the shaping logic is built into the font.
72971
72972
    if (this.font.morx) {
72973
      this.engine = new AATLayoutEngine(this.font);
72974
    } else if (this.font.GSUB || this.font.GPOS) {
72975
      this.engine = new OTLayoutEngine(this.font);
72976
    }
72977
  }
72978
  var _proto30 = LayoutEngine.prototype;
72979
  _proto30.layout = function layout(string, features, script, language, direction) {
72980
    // Make the features parameter optional
72981
    if (typeof features === 'string') {
72982
      direction = language;
72983
      language = script;
72984
      script = features;
72985
      features = [];
72986
    } // Map string to glyphs if needed
72987
72988
    if (typeof string === 'string') {
72989
      // Attempt to detect the script from the string if not provided.
72990
      if (script == null) {
72991
        script = forString(string);
72992
      }
72993
      var glyphs = this.font.glyphsForString(string);
72994
    } else {
72995
      // Attempt to detect the script from the glyph code points if not provided.
72996
      if (script == null) {
72997
        var codePoints = [];
72998
        for (var _iterator64 = _createForOfIteratorHelperLoose(string), _step64; !(_step64 = _iterator64()).done;) {
72999
          var glyph = _step64.value;
73000
          codePoints.push.apply(codePoints, glyph.codePoints);
73001
        }
73002
        script = forCodePoints(codePoints);
73003
      }
73004
      var glyphs = string;
73005
    }
73006
    var glyphRun = new GlyphRun(glyphs, features, script, language, direction); // Return early if there are no glyphs
73007
73008
    if (glyphs.length === 0) {
73009
      glyphRun.positions = [];
73010
      return glyphRun;
73011
    } // Setup the advanced layout engine
73012
73013
    if (this.engine && this.engine.setup) {
73014
      this.engine.setup(glyphRun);
73015
    } // Substitute and position the glyphs
73016
73017
    this.substitute(glyphRun);
73018
    this.position(glyphRun);
73019
    this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions); // Let the layout engine clean up any state it might have
73020
73021
    if (this.engine && this.engine.cleanup) {
73022
      this.engine.cleanup();
73023
    }
73024
    return glyphRun;
73025
  };
73026
  _proto30.substitute = function substitute(glyphRun) {
73027
    // Call the advanced layout engine to make substitutions
73028
    if (this.engine && this.engine.substitute) {
73029
      this.engine.substitute(glyphRun);
73030
    }
73031
  };
73032
  _proto30.position = function position(glyphRun) {
73033
    // Get initial glyph positions
73034
    glyphRun.positions = glyphRun.glyphs.map(function (glyph) {
73035
      return new GlyphPosition(glyph.advanceWidth);
73036
    });
73037
    var positioned = null; // Call the advanced layout engine. Returns the features applied.
73038
73039
    if (this.engine && this.engine.position) {
73040
      positioned = this.engine.position(glyphRun);
73041
    } // if there is no GPOS table, use unicode properties to position marks.
73042
73043
    if (!positioned && (!this.engine || this.engine.fallbackPosition)) {
73044
      if (!this.unicodeLayoutEngine) {
73045
        this.unicodeLayoutEngine = new UnicodeLayoutEngine(this.font);
73046
      }
73047
      this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);
73048
    } // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table
73049
73050
    if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {
73051
      if (!this.kernProcessor) {
73052
        this.kernProcessor = new KernProcessor(this.font);
73053
      }
73054
      this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);
73055
      glyphRun.features.kern = true;
73056
    }
73057
  };
73058
  _proto30.hideDefaultIgnorables = function hideDefaultIgnorables(glyphs, positions) {
73059
    var space = this.font.glyphForCodePoint(0x20);
73060
    for (var i = 0; i < glyphs.length; i++) {
73061
      if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {
73062
        glyphs[i] = space;
73063
        positions[i].xAdvance = 0;
73064
        positions[i].yAdvance = 0;
73065
      }
73066
    }
73067
  };
73068
  _proto30.isDefaultIgnorable = function isDefaultIgnorable(ch) {
73069
    // From DerivedCoreProperties.txt in the Unicode database,
73070
    // minus U+115F, U+1160, U+3164 and U+FFA0, which is what
73071
    // Harfbuzz and Uniscribe do.
73072
    var plane = ch >> 16;
73073
    if (plane === 0) {
73074
      // BMP
73075
      switch (ch >> 8) {
73076
        case 0x00:
73077
          return ch === 0x00AD;
73078
        case 0x03:
73079
          return ch === 0x034F;
73080
        case 0x06:
73081
          return ch === 0x061C;
73082
        case 0x17:
73083
          return 0x17B4 <= ch && ch <= 0x17B5;
73084
        case 0x18:
73085
          return 0x180B <= ch && ch <= 0x180E;
73086
        case 0x20:
73087
          return 0x200B <= ch && ch <= 0x200F || 0x202A <= ch && ch <= 0x202E || 0x2060 <= ch && ch <= 0x206F;
73088
        case 0xFE:
73089
          return 0xFE00 <= ch && ch <= 0xFE0F || ch === 0xFEFF;
73090
        case 0xFF:
73091
          return 0xFFF0 <= ch && ch <= 0xFFF8;
73092
        default:
73093
          return false;
73094
      }
73095
    } else {
73096
      // Other planes
73097
      switch (plane) {
73098
        case 0x01:
73099
          return 0x1BCA0 <= ch && ch <= 0x1BCA3 || 0x1D173 <= ch && ch <= 0x1D17A;
73100
        case 0x0E:
73101
          return 0xE0000 <= ch && ch <= 0xE0FFF;
73102
        default:
73103
          return false;
73104
      }
73105
    }
73106
  };
73107
  _proto30.getAvailableFeatures = function getAvailableFeatures(script, language) {
73108
    var features = [];
73109
    if (this.engine) {
73110
      features.push.apply(features, this.engine.getAvailableFeatures(script, language));
73111
    }
73112
    if (this.font.kern && features.indexOf('kern') === -1) {
73113
      features.push('kern');
73114
    }
73115
    return features;
73116
  };
73117
  _proto30.stringsForGlyph = function stringsForGlyph(gid) {
73118
    var result = new Set();
73119
    var codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);
73120
    for (var _iterator65 = _createForOfIteratorHelperLoose(codePoints), _step65; !(_step65 = _iterator65()).done;) {
73121
      var codePoint = _step65.value;
73122
      result.add(String.fromCodePoint(codePoint));
73123
    }
73124
    if (this.engine && this.engine.stringsForGlyph) {
73125
      for (var _iterator66 = _createForOfIteratorHelperLoose(this.engine.stringsForGlyph(gid)), _step66; !(_step66 = _iterator66()).done;) {
73126
        var string = _step66.value;
73127
        result.add(string);
73128
      }
73129
    }
73130
    return Array.from(result);
73131
  };
73132
  return LayoutEngine;
73133
}();
73134
var SVG_COMMANDS = {
73135
  moveTo: 'M',
73136
  lineTo: 'L',
73137
  quadraticCurveTo: 'Q',
73138
  bezierCurveTo: 'C',
73139
  closePath: 'Z'
73140
};
73141
/**
73142
 * Path objects are returned by glyphs and represent the actual
73143
 * vector outlines for each glyph in the font. Paths can be converted
73144
 * to SVG path data strings, or to functions that can be applied to
73145
 * render the path to a graphics context.
73146
 */
73147
var Path = /*#__PURE__*/function () {
73148
  function Path() {
73149
    this.commands = [];
73150
    this._bbox = null;
73151
    this._cbox = null;
73152
  }
73153
  /**
73154
   * Compiles the path to a JavaScript function that can be applied with
73155
   * a graphics context in order to render the path.
73156
   * @return {string}
73157
   */
73158
  var _proto31 = Path.prototype;
73159
  _proto31.toFunction = function toFunction() {
73160
    var _this10 = this;
73161
    return function (ctx) {
73162
      _this10.commands.forEach(function (c) {
73163
        return ctx[c.command].apply(ctx, c.args);
73164
      });
73165
    };
73166
  }
73167
  /**
73168
   * Converts the path to an SVG path data string
73169
   * @return {string}
73170
   */;
73171
  _proto31.toSVG = function toSVG() {
73172
    var cmds = this.commands.map(function (c) {
73173
      var args = c.args.map(function (arg) {
73174
        return Math.round(arg * 100) / 100;
73175
      });
73176
      return "".concat(SVG_COMMANDS[c.command]).concat(args.join(' '));
73177
    });
73178
    return cmds.join('');
73179
  }
73180
  /**
73181
   * Gets the "control box" of a path.
73182
   * This is like the bounding box, but it includes all points including
73183
   * control points of bezier segments and is much faster to compute than
73184
   * the real bounding box.
73185
   * @type {BBox}
73186
   */;
73187
  /**
73188
   * Applies a mapping function to each point in the path.
73189
   * @param {function} fn
73190
   * @return {Path}
73191
   */
73192
  _proto31.mapPoints = function mapPoints(fn) {
73193
    var path = new Path();
73194
    for (var _iterator67 = _createForOfIteratorHelperLoose(this.commands), _step67; !(_step67 = _iterator67()).done;) {
73195
      var c = _step67.value;
73196
      var args = [];
73197
      for (var i = 0; i < c.args.length; i += 2) {
73198
        var _fn = fn(c.args[i], c.args[i + 1]),
73199
          x = _fn[0],
73200
          y = _fn[1];
73201
        args.push(x, y);
73202
      }
73203
      path[c.command].apply(path, args);
73204
    }
73205
    return path;
73206
  }
73207
  /**
73208
   * Transforms the path by the given matrix.
73209
   */;
73210
  _proto31.transform = function transform(m0, m1, m2, m3, m4, m5) {
73211
    return this.mapPoints(function (x, y) {
73212
      x = m0 * x + m2 * y + m4;
73213
      y = m1 * x + m3 * y + m5;
73214
      return [x, y];
73215
    });
73216
  }
73217
  /**
73218
   * Translates the path by the given offset.
73219
   */;
73220
  _proto31.translate = function translate(x, y) {
73221
    return this.transform(1, 0, 0, 1, x, y);
73222
  }
73223
  /**
73224
   * Rotates the path by the given angle (in radians).
73225
   */;
73226
  _proto31.rotate = function rotate(angle) {
73227
    var cos = Math.cos(angle);
73228
    var sin = Math.sin(angle);
73229
    return this.transform(cos, sin, -sin, cos, 0, 0);
73230
  }
73231
  /**
73232
   * Scales the path.
73233
   */;
73234
  _proto31.scale = function scale(scaleX, scaleY) {
73235
    if (scaleY === void 0) {
73236
      scaleY = scaleX;
73237
    }
73238
    return this.transform(scaleX, 0, 0, scaleY, 0, 0);
73239
  };
73240
  _createClass(Path, [{
73241
    key: "cbox",
73242
    get: function get() {
73243
      if (!this._cbox) {
73244
        var cbox = new BBox();
73245
        for (var _iterator68 = _createForOfIteratorHelperLoose(this.commands), _step68; !(_step68 = _iterator68()).done;) {
73246
          var command = _step68.value;
73247
          for (var i = 0; i < command.args.length; i += 2) {
73248
            cbox.addPoint(command.args[i], command.args[i + 1]);
73249
          }
73250
        }
73251
        this._cbox = Object.freeze(cbox);
73252
      }
73253
      return this._cbox;
73254
    }
73255
    /**
73256
     * Gets the exact bounding box of the path by evaluating curve segments.
73257
     * Slower to compute than the control box, but more accurate.
73258
     * @type {BBox}
73259
     */
73260
  }, {
73261
    key: "bbox",
73262
    get: function get() {
73263
      if (this._bbox) {
73264
        return this._bbox;
73265
      }
73266
      var bbox = new BBox();
73267
      var cx = 0,
73268
        cy = 0;
73269
      var f = function f(t) {
73270
        return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];
73271
      };
73272
      for (var _iterator69 = _createForOfIteratorHelperLoose(this.commands), _step69; !(_step69 = _iterator69()).done;) {
73273
        var c = _step69.value;
73274
        switch (c.command) {
73275
          case 'moveTo':
73276
          case 'lineTo':
73277
            var _c$args = c.args,
73278
              x = _c$args[0],
73279
              y = _c$args[1];
73280
            bbox.addPoint(x, y);
73281
            cx = x;
73282
            cy = y;
73283
            break;
73284
          case 'quadraticCurveTo':
73285
          case 'bezierCurveTo':
73286
            if (c.command === 'quadraticCurveTo') {
73287
              // http://fontforge.org/bezier.html
73288
              var _c$args2 = c.args,
73289
                qp1x = _c$args2[0],
73290
                qp1y = _c$args2[1],
73291
                p3x = _c$args2[2],
73292
                p3y = _c$args2[3];
73293
              var cp1x = cx + 2 / 3 * (qp1x - cx); // CP1 = QP0 + 2/3 * (QP1-QP0)
73294
73295
              var cp1y = cy + 2 / 3 * (qp1y - cy);
73296
              var cp2x = p3x + 2 / 3 * (qp1x - p3x); // CP2 = QP2 + 2/3 * (QP1-QP2)
73297
73298
              var cp2y = p3y + 2 / 3 * (qp1y - p3y);
73299
            } else {
73300
              var _c$args3 = c.args,
73301
                cp1x = _c$args3[0],
73302
                cp1y = _c$args3[1],
73303
                cp2x = _c$args3[2],
73304
                cp2y = _c$args3[3],
73305
                p3x = _c$args3[4],
73306
                p3y = _c$args3[5];
73307
            } // http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
73308
73309
            bbox.addPoint(p3x, p3y);
73310
            var p0 = [cx, cy];
73311
            var p1 = [cp1x, cp1y];
73312
            var p2 = [cp2x, cp2y];
73313
            var p3 = [p3x, p3y];
73314
            for (var i = 0; i <= 1; i++) {
73315
              var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
73316
              var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
73317
              c = 3 * p1[i] - 3 * p0[i];
73318
              if (a === 0) {
73319
                if (b === 0) {
73320
                  continue;
73321
                }
73322
                var t = -c / b;
73323
                if (0 < t && t < 1) {
73324
                  if (i === 0) {
73325
                    bbox.addPoint(f(t), bbox.maxY);
73326
                  } else if (i === 1) {
73327
                    bbox.addPoint(bbox.maxX, f(t));
73328
                  }
73329
                }
73330
                continue;
73331
              }
73332
              var b2ac = Math.pow(b, 2) - 4 * c * a;
73333
              if (b2ac < 0) {
73334
                continue;
73335
              }
73336
              var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);
73337
              if (0 < t1 && t1 < 1) {
73338
                if (i === 0) {
73339
                  bbox.addPoint(f(t1), bbox.maxY);
73340
                } else if (i === 1) {
73341
                  bbox.addPoint(bbox.maxX, f(t1));
73342
                }
73343
              }
73344
              var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);
73345
              if (0 < t2 && t2 < 1) {
73346
                if (i === 0) {
73347
                  bbox.addPoint(f(t2), bbox.maxY);
73348
                } else if (i === 1) {
73349
                  bbox.addPoint(bbox.maxX, f(t2));
73350
                }
73351
              }
73352
            }
73353
            cx = p3x;
73354
            cy = p3y;
73355
            break;
73356
        }
73357
      }
73358
      return this._bbox = Object.freeze(bbox);
73359
    }
73360
  }]);
73361
  return Path;
73362
}();
73363
var _loop = function _loop(command) {
73364
  Path.prototype[command] = function () {
73365
    this._bbox = this._cbox = null;
73366
    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
73367
      args[_key2] = arguments[_key2];
73368
    }
73369
    this.commands.push({
73370
      command: command,
73371
      args: args
73372
    });
73373
    return this;
73374
  };
73375
};
73376
for (var _i23 = 0, _arr = ['moveTo', 'lineTo', 'quadraticCurveTo', 'bezierCurveTo', 'closePath']; _i23 < _arr.length; _i23++) {
73377
  var command = _arr[_i23];
73378
  _loop(command);
73379
}
73380
var StandardNames = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
73381
var _class$3;
73382
/**
73383
 * Glyph objects represent a glyph in the font. They have various properties for accessing metrics and
73384
 * the actual vector path the glyph represents, and methods for rendering the glyph to a graphics context.
73385
 *
73386
 * You do not create glyph objects directly. They are created by various methods on the font object.
73387
 * There are several subclasses of the base Glyph class internally that may be returned depending
73388
 * on the font format, but they all inherit from this class.
73389
 */
73390
73391
var Glyph = (_class$3 = /*#__PURE__*/function () {
73392
  function Glyph(id, codePoints, font) {
73393
    /**
73394
     * The glyph id in the font
73395
     * @type {number}
73396
     */
73397
    this.id = id;
73398
    /**
73399
     * An array of unicode code points that are represented by this glyph.
73400
     * There can be multiple code points in the case of ligatures and other glyphs
73401
     * that represent multiple visual characters.
73402
     * @type {number[]}
73403
     */
73404
73405
    this.codePoints = codePoints;
73406
    this._font = font; // TODO: get this info from GDEF if available
73407
73408
    this.isMark = this.codePoints.length > 0 && this.codePoints.every(unicode.isMark);
73409
    this.isLigature = this.codePoints.length > 1;
73410
  }
73411
  var _proto32 = Glyph.prototype;
73412
  _proto32._getPath = function _getPath() {
73413
    return new Path();
73414
  };
73415
  _proto32._getCBox = function _getCBox() {
73416
    return this.path.cbox;
73417
  };
73418
  _proto32._getBBox = function _getBBox() {
73419
    return this.path.bbox;
73420
  };
73421
  _proto32._getTableMetrics = function _getTableMetrics(table) {
73422
    if (this.id < table.metrics.length) {
73423
      return table.metrics.get(this.id);
73424
    }
73425
    var metric = table.metrics.get(table.metrics.length - 1);
73426
    var res = {
73427
      advance: metric ? metric.advance : 0,
73428
      bearing: table.bearings.get(this.id - table.metrics.length) || 0
73429
    };
73430
    return res;
73431
  };
73432
  _proto32._getMetrics = function _getMetrics(cbox) {
73433
    if (this._metrics) {
73434
      return this._metrics;
73435
    }
73436
    var _this$_getTableMetric = this._getTableMetrics(this._font.hmtx),
73437
      advanceWidth = _this$_getTableMetric.advance,
73438
      leftBearing = _this$_getTableMetric.bearing; // For vertical metrics, use vmtx if available, or fall back to global data from OS/2 or hhea
73439
73440
    if (this._font.vmtx) {
73441
      var _this$_getTableMetric2 = this._getTableMetrics(this._font.vmtx),
73442
        advanceHeight = _this$_getTableMetric2.advance,
73443
        topBearing = _this$_getTableMetric2.bearing;
73444
    } else {
73445
      var os2;
73446
      if (typeof cbox === 'undefined' || cbox === null) {
73447
        cbox = this.cbox;
73448
      }
73449
      if ((os2 = this._font['OS/2']) && os2.version > 0) {
73450
        var advanceHeight = Math.abs(os2.typoAscender - os2.typoDescender);
73451
        var topBearing = os2.typoAscender - cbox.maxY;
73452
      } else {
73453
        var hhea = this._font.hhea;
73454
        var advanceHeight = Math.abs(hhea.ascent - hhea.descent);
73455
        var topBearing = hhea.ascent - cbox.maxY;
73456
      }
73457
    }
73458
    if (this._font._variationProcessor && this._font.HVAR) {
73459
      advanceWidth += this._font._variationProcessor.getAdvanceAdjustment(this.id, this._font.HVAR);
73460
    }
73461
    return this._metrics = {
73462
      advanceWidth: advanceWidth,
73463
      advanceHeight: advanceHeight,
73464
      leftBearing: leftBearing,
73465
      topBearing: topBearing
73466
    };
73467
  }
73468
  /**
73469
   * The glyph’s control box.
73470
   * This is often the same as the bounding box, but is faster to compute.
73471
   * Because of the way bezier curves are defined, some of the control points
73472
   * can be outside of the bounding box. Where `bbox` takes this into account,
73473
   * `cbox` does not. Thus, cbox is less accurate, but faster to compute.
73474
   * See [here](http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html#section-2)
73475
   * for a more detailed description.
73476
   *
73477
   * @type {BBox}
73478
   */;
73479
  /**
73480
   * Returns a path scaled to the given font size.
73481
   * @param {number} size
73482
   * @return {Path}
73483
   */
73484
  _proto32.getScaledPath = function getScaledPath(size) {
73485
    var scale = 1 / this._font.unitsPerEm * size;
73486
    return this.path.scale(scale);
73487
  }
73488
  /**
73489
   * The glyph's advance width.
73490
   * @type {number}
73491
   */;
73492
  _proto32._getName = function _getName() {
73493
    var post = this._font.post;
73494
    if (!post) {
73495
      return null;
73496
    }
73497
    switch (post.version) {
73498
      case 1:
73499
        return StandardNames[this.id];
73500
      case 2:
73501
        var id = post.glyphNameIndex[this.id];
73502
        if (id < StandardNames.length) {
73503
          return StandardNames[id];
73504
        }
73505
        return post.names[id - StandardNames.length];
73506
      case 2.5:
73507
        return StandardNames[this.id + post.offsets[this.id]];
73508
      case 4:
73509
        return String.fromCharCode(post.map[this.id]);
73510
    }
73511
  }
73512
  /**
73513
   * The glyph's name
73514
   * @type {string}
73515
   */;
73516
  /**
73517
   * Renders the glyph to the given graphics context, at the specified font size.
73518
   * @param {CanvasRenderingContext2d} ctx
73519
   * @param {number} size
73520
   */
73521
  _proto32.render = function render(ctx, size) {
73522
    ctx.save();
73523
    var scale = 1 / this._font.head.unitsPerEm * size;
73524
    ctx.scale(scale, scale);
73525
    var fn = this.path.toFunction();
73526
    fn(ctx);
73527
    ctx.fill();
73528
    ctx.restore();
73529
  };
73530
  _createClass(Glyph, [{
73531
    key: "cbox",
73532
    get: function get() {
73533
      return this._getCBox();
73534
    }
73535
    /**
73536
     * The glyph’s bounding box, i.e. the rectangle that encloses the
73537
     * glyph outline as tightly as possible.
73538
     * @type {BBox}
73539
     */
73540
  }, {
73541
    key: "bbox",
73542
    get: function get() {
73543
      return this._getBBox();
73544
    }
73545
    /**
73546
     * A vector Path object representing the glyph outline.
73547
     * @type {Path}
73548
     */
73549
  }, {
73550
    key: "path",
73551
    get: function get() {
73552
      // Cache the path so we only decode it once
73553
      // Decoding is actually performed by subclasses
73554
      return this._getPath();
73555
    }
73556
  }, {
73557
    key: "advanceWidth",
73558
    get: function get() {
73559
      return this._getMetrics().advanceWidth;
73560
    }
73561
    /**
73562
     * The glyph's advance height.
73563
     * @type {number}
73564
     */
73565
  }, {
73566
    key: "advanceHeight",
73567
    get: function get() {
73568
      return this._getMetrics().advanceHeight;
73569
    }
73570
  }, {
73571
    key: "ligatureCaretPositions",
73572
    get: function get() {}
73573
  }, {
73574
    key: "name",
73575
    get: function get() {
73576
      return this._getName();
73577
    }
73578
  }]);
73579
  return Glyph;
73580
}(), (_applyDecoratedDescriptor(_class$3.prototype, "cbox", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, "cbox"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, "bbox", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, "bbox"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, "path", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, "path"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, "advanceWidth", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, "advanceWidth"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, "advanceHeight", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, "advanceHeight"), _class$3.prototype), _applyDecoratedDescriptor(_class$3.prototype, "name", [cache], Object.getOwnPropertyDescriptor(_class$3.prototype, "name"), _class$3.prototype)), _class$3);
73581
var GlyfHeader = new r.Struct({
73582
  numberOfContours: r.int16,
73583
  // if negative, this is a composite glyph
73584
  xMin: r.int16,
73585
  yMin: r.int16,
73586
  xMax: r.int16,
73587
  yMax: r.int16
73588
}); // Flags for simple glyphs
73589
73590
var ON_CURVE = 1 << 0;
73591
var X_SHORT_VECTOR = 1 << 1;
73592
var Y_SHORT_VECTOR = 1 << 2;
73593
var REPEAT = 1 << 3;
73594
var SAME_X = 1 << 4;
73595
var SAME_Y = 1 << 5; // Flags for composite glyphs
73596
73597
var ARG_1_AND_2_ARE_WORDS = 1 << 0;
73598
var WE_HAVE_A_SCALE = 1 << 3;
73599
var MORE_COMPONENTS = 1 << 5;
73600
var WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
73601
var WE_HAVE_A_TWO_BY_TWO = 1 << 7;
73602
var WE_HAVE_INSTRUCTIONS = 1 << 8;
73603
var Point = /*#__PURE__*/function () {
73604
  function Point(onCurve, endContour, x, y) {
73605
    if (x === void 0) {
73606
      x = 0;
73607
    }
73608
    if (y === void 0) {
73609
      y = 0;
73610
    }
73611
    this.onCurve = onCurve;
73612
    this.endContour = endContour;
73613
    this.x = x;
73614
    this.y = y;
73615
  }
73616
  var _proto33 = Point.prototype;
73617
  _proto33.copy = function copy() {
73618
    return new Point(this.onCurve, this.endContour, this.x, this.y);
73619
  };
73620
  return Point;
73621
}(); // Represents a component in a composite glyph
73622
var Component = function Component(glyphID, dx, dy) {
73623
  this.glyphID = glyphID;
73624
  this.dx = dx;
73625
  this.dy = dy;
73626
  this.pos = 0;
73627
  this.scaleX = this.scaleY = 1;
73628
  this.scale01 = this.scale10 = 0;
73629
};
73630
/**
73631
 * Represents a TrueType glyph.
73632
 */
73633
var TTFGlyph = /*#__PURE__*/function (_Glyph) {
73634
  _inheritsLoose(TTFGlyph, _Glyph);
73635
  function TTFGlyph() {
73636
    return _Glyph.apply(this, arguments) || this;
73637
  }
73638
  var _proto34 = TTFGlyph.prototype;
73639
  // Parses just the glyph header and returns the bounding box
73640
  _proto34._getCBox = function _getCBox(internal) {
73641
    // We need to decode the glyph if variation processing is requested,
73642
    // so it's easier just to recompute the path's cbox after decoding.
73643
    if (this._font._variationProcessor && !internal) {
73644
      return this.path.cbox;
73645
    }
73646
    var stream = this._font._getTableStream('glyf');
73647
    stream.pos += this._font.loca.offsets[this.id];
73648
    var glyph = GlyfHeader.decode(stream);
73649
    var cbox = new BBox(glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax);
73650
    return Object.freeze(cbox);
73651
  } // Parses a single glyph coordinate
73652
  ;
73653
  _proto34._parseGlyphCoord = function _parseGlyphCoord(stream, prev, short, same) {
73654
    if (short) {
73655
      var val = stream.readUInt8();
73656
      if (!same) {
73657
        val = -val;
73658
      }
73659
      val += prev;
73660
    } else {
73661
      if (same) {
73662
        var val = prev;
73663
      } else {
73664
        var val = prev + stream.readInt16BE();
73665
      }
73666
    }
73667
    return val;
73668
  } // Decodes the glyph data into points for simple glyphs,
73669
  // or components for composite glyphs
73670
  ;
73671
  _proto34._decode = function _decode() {
73672
    var glyfPos = this._font.loca.offsets[this.id];
73673
    var nextPos = this._font.loca.offsets[this.id + 1]; // Nothing to do if there is no data for this glyph
73674
73675
    if (glyfPos === nextPos) {
73676
      return null;
73677
    }
73678
    var stream = this._font._getTableStream('glyf');
73679
    stream.pos += glyfPos;
73680
    var startPos = stream.pos;
73681
    var glyph = GlyfHeader.decode(stream);
73682
    if (glyph.numberOfContours > 0) {
73683
      this._decodeSimple(glyph, stream);
73684
    } else if (glyph.numberOfContours < 0) {
73685
      this._decodeComposite(glyph, stream, startPos);
73686
    }
73687
    return glyph;
73688
  };
73689
  _proto34._decodeSimple = function _decodeSimple(glyph, stream) {
73690
    // this is a simple glyph
73691
    glyph.points = [];
73692
    var endPtsOfContours = new r.Array(r.uint16, glyph.numberOfContours).decode(stream);
73693
    glyph.instructions = new r.Array(r.uint8, r.uint16).decode(stream);
73694
    var flags = [];
73695
    var numCoords = endPtsOfContours[endPtsOfContours.length - 1] + 1;
73696
    while (flags.length < numCoords) {
73697
      var flag = stream.readUInt8();
73698
      flags.push(flag); // check for repeat flag
73699
73700
      if (flag & REPEAT) {
73701
        var count = stream.readUInt8();
73702
        for (var j = 0; j < count; j++) {
73703
          flags.push(flag);
73704
        }
73705
      }
73706
    }
73707
    for (var i = 0; i < flags.length; i++) {
73708
      var flag = flags[i];
73709
      var point = new Point(!!(flag & ON_CURVE), endPtsOfContours.indexOf(i) >= 0, 0, 0);
73710
      glyph.points.push(point);
73711
    }
73712
    var px = 0;
73713
    for (var i = 0; i < flags.length; i++) {
73714
      var flag = flags[i];
73715
      glyph.points[i].x = px = this._parseGlyphCoord(stream, px, flag & X_SHORT_VECTOR, flag & SAME_X);
73716
    }
73717
    var py = 0;
73718
    for (var i = 0; i < flags.length; i++) {
73719
      var flag = flags[i];
73720
      glyph.points[i].y = py = this._parseGlyphCoord(stream, py, flag & Y_SHORT_VECTOR, flag & SAME_Y);
73721
    }
73722
    if (this._font._variationProcessor) {
73723
      var points = glyph.points.slice();
73724
      points.push.apply(points, this._getPhantomPoints(glyph));
73725
      this._font._variationProcessor.transformPoints(this.id, points);
73726
      glyph.phantomPoints = points.slice(-4);
73727
    }
73728
    return;
73729
  };
73730
  _proto34._decodeComposite = function _decodeComposite(glyph, stream, offset) {
73731
    if (offset === void 0) {
73732
      offset = 0;
73733
    }
73734
    // this is a composite glyph
73735
    glyph.components = [];
73736
    var haveInstructions = false;
73737
    var flags = MORE_COMPONENTS;
73738
    while (flags & MORE_COMPONENTS) {
73739
      flags = stream.readUInt16BE();
73740
      var gPos = stream.pos - offset;
73741
      var glyphID = stream.readUInt16BE();
73742
      if (!haveInstructions) {
73743
        haveInstructions = (flags & WE_HAVE_INSTRUCTIONS) !== 0;
73744
      }
73745
      if (flags & ARG_1_AND_2_ARE_WORDS) {
73746
        var dx = stream.readInt16BE();
73747
        var dy = stream.readInt16BE();
73748
      } else {
73749
        var dx = stream.readInt8();
73750
        var dy = stream.readInt8();
73751
      }
73752
      var component = new Component(glyphID, dx, dy);
73753
      component.pos = gPos;
73754
      if (flags & WE_HAVE_A_SCALE) {
73755
        // fixed number with 14 bits of fraction
73756
        component.scaleX = component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73757
      } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
73758
        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73759
        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73760
      } else if (flags & WE_HAVE_A_TWO_BY_TWO) {
73761
        component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73762
        component.scale01 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73763
        component.scale10 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73764
        component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;
73765
      }
73766
      glyph.components.push(component);
73767
    }
73768
    if (this._font._variationProcessor) {
73769
      var points = [];
73770
      for (var j = 0; j < glyph.components.length; j++) {
73771
        var component = glyph.components[j];
73772
        points.push(new Point(true, true, component.dx, component.dy));
73773
      }
73774
      points.push.apply(points, this._getPhantomPoints(glyph));
73775
      this._font._variationProcessor.transformPoints(this.id, points);
73776
      glyph.phantomPoints = points.splice(-4, 4);
73777
      for (var i = 0; i < points.length; i++) {
73778
        var point = points[i];
73779
        glyph.components[i].dx = point.x;
73780
        glyph.components[i].dy = point.y;
73781
      }
73782
    }
73783
    return haveInstructions;
73784
  };
73785
  _proto34._getPhantomPoints = function _getPhantomPoints(glyph) {
73786
    var cbox = this._getCBox(true);
73787
    if (this._metrics == null) {
73788
      this._metrics = Glyph.prototype._getMetrics.call(this, cbox);
73789
    }
73790
    var _this$_metrics = this._metrics,
73791
      advanceWidth = _this$_metrics.advanceWidth,
73792
      advanceHeight = _this$_metrics.advanceHeight,
73793
      leftBearing = _this$_metrics.leftBearing,
73794
      topBearing = _this$_metrics.topBearing;
73795
    return [new Point(false, true, glyph.xMin - leftBearing, 0), new Point(false, true, glyph.xMin - leftBearing + advanceWidth, 0), new Point(false, true, 0, glyph.yMax + topBearing), new Point(false, true, 0, glyph.yMax + topBearing + advanceHeight)];
73796
  } // Decodes font data, resolves composite glyphs, and returns an array of contours
73797
  ;
73798
  _proto34._getContours = function _getContours() {
73799
    var glyph = this._decode();
73800
    if (!glyph) {
73801
      return [];
73802
    }
73803
    var points = [];
73804
    if (glyph.numberOfContours < 0) {
73805
      // resolve composite glyphs
73806
      for (var _iterator70 = _createForOfIteratorHelperLoose(glyph.components), _step70; !(_step70 = _iterator70()).done;) {
73807
        var component = _step70.value;
73808
        var _contours = this._font.getGlyph(component.glyphID)._getContours();
73809
        for (var i = 0; i < _contours.length; i++) {
73810
          var contour = _contours[i];
73811
          for (var j = 0; j < contour.length; j++) {
73812
            var _point = contour[j];
73813
            var x = _point.x * component.scaleX + _point.y * component.scale01 + component.dx;
73814
            var y = _point.y * component.scaleY + _point.x * component.scale10 + component.dy;
73815
            points.push(new Point(_point.onCurve, _point.endContour, x, y));
73816
          }
73817
        }
73818
      }
73819
    } else {
73820
      points = glyph.points || [];
73821
    } // Recompute and cache metrics if we performed variation processing, and don't have an HVAR table
73822
73823
    if (glyph.phantomPoints && !this._font.directory.tables.HVAR) {
73824
      this._metrics.advanceWidth = glyph.phantomPoints[1].x - glyph.phantomPoints[0].x;
73825
      this._metrics.advanceHeight = glyph.phantomPoints[3].y - glyph.phantomPoints[2].y;
73826
      this._metrics.leftBearing = glyph.xMin - glyph.phantomPoints[0].x;
73827
      this._metrics.topBearing = glyph.phantomPoints[2].y - glyph.yMax;
73828
    }
73829
    var contours = [];
73830
    var cur = [];
73831
    for (var k = 0; k < points.length; k++) {
73832
      var point = points[k];
73833
      cur.push(point);
73834
      if (point.endContour) {
73835
        contours.push(cur);
73836
        cur = [];
73837
      }
73838
    }
73839
    return contours;
73840
  };
73841
  _proto34._getMetrics = function _getMetrics() {
73842
    if (this._metrics) {
73843
      return this._metrics;
73844
    }
73845
    var cbox = this._getCBox(true);
73846
    _Glyph.prototype._getMetrics.call(this, cbox);
73847
    if (this._font._variationProcessor && !this._font.HVAR) {
73848
      // No HVAR table, decode the glyph. This triggers recomputation of metrics.
73849
      this.path;
73850
    }
73851
    return this._metrics;
73852
  } // Converts contours to a Path object that can be rendered
73853
  ;
73854
  _proto34._getPath = function _getPath() {
73855
    var contours = this._getContours();
73856
    var path = new Path();
73857
    for (var i = 0; i < contours.length; i++) {
73858
      var contour = contours[i];
73859
      var firstPt = contour[0];
73860
      var lastPt = contour[contour.length - 1];
73861
      var start = 0;
73862
      if (firstPt.onCurve) {
73863
        // The first point will be consumed by the moveTo command, so skip in the loop
73864
        var curvePt = null;
73865
        start = 1;
73866
      } else {
73867
        if (lastPt.onCurve) {
73868
          // Start at the last point if the first point is off curve and the last point is on curve
73869
          firstPt = lastPt;
73870
        } else {
73871
          // Start at the middle if both the first and last points are off curve
73872
          firstPt = new Point(false, false, (firstPt.x + lastPt.x) / 2, (firstPt.y + lastPt.y) / 2);
73873
        }
73874
        var curvePt = firstPt;
73875
      }
73876
      path.moveTo(firstPt.x, firstPt.y);
73877
      for (var j = start; j < contour.length; j++) {
73878
        var pt = contour[j];
73879
        var prevPt = j === 0 ? firstPt : contour[j - 1];
73880
        if (prevPt.onCurve && pt.onCurve) {
73881
          path.lineTo(pt.x, pt.y);
73882
        } else if (prevPt.onCurve && !pt.onCurve) {
73883
          var curvePt = pt;
73884
        } else if (!prevPt.onCurve && !pt.onCurve) {
73885
          var midX = (prevPt.x + pt.x) / 2;
73886
          var midY = (prevPt.y + pt.y) / 2;
73887
          path.quadraticCurveTo(prevPt.x, prevPt.y, midX, midY);
73888
          var curvePt = pt;
73889
        } else if (!prevPt.onCurve && pt.onCurve) {
73890
          path.quadraticCurveTo(curvePt.x, curvePt.y, pt.x, pt.y);
73891
          var curvePt = null;
73892
        } else {
73893
          throw new Error("Unknown TTF path state");
73894
        }
73895
      } // Connect the first and last points
73896
73897
      if (curvePt) {
73898
        path.quadraticCurveTo(curvePt.x, curvePt.y, firstPt.x, firstPt.y);
73899
      }
73900
      path.closePath();
73901
    }
73902
    return path;
73903
  };
73904
  return TTFGlyph;
73905
}(Glyph);
73906
/**
73907
 * Represents an OpenType PostScript glyph, in the Compact Font Format.
73908
 */
73909
var CFFGlyph = /*#__PURE__*/function (_Glyph2) {
73910
  _inheritsLoose(CFFGlyph, _Glyph2);
73911
  function CFFGlyph() {
73912
    return _Glyph2.apply(this, arguments) || this;
73913
  }
73914
  var _proto35 = CFFGlyph.prototype;
73915
  _proto35._getName = function _getName() {
73916
    if (this._font.CFF2) {
73917
      return _Glyph2.prototype._getName.call(this);
73918
    }
73919
    return this._font['CFF '].getGlyphName(this.id);
73920
  };
73921
  _proto35.bias = function bias(s) {
73922
    if (s.length < 1240) {
73923
      return 107;
73924
    } else if (s.length < 33900) {
73925
      return 1131;
73926
    } else {
73927
      return 32768;
73928
    }
73929
  };
73930
  _proto35._getPath = function _getPath() {
73931
    var cff = this._font.CFF2 || this._font['CFF '];
73932
    var stream = cff.stream;
73933
    var str = cff.topDict.CharStrings[this.id];
73934
    var end = str.offset + str.length;
73935
    stream.pos = str.offset;
73936
    var path = new Path();
73937
    var stack = [];
73938
    var trans = [];
73939
    var width = null;
73940
    var nStems = 0;
73941
    var x = 0,
73942
      y = 0;
73943
    var usedGsubrs;
73944
    var usedSubrs;
73945
    var open = false;
73946
    this._usedGsubrs = usedGsubrs = {};
73947
    this._usedSubrs = usedSubrs = {};
73948
    var gsubrs = cff.globalSubrIndex || [];
73949
    var gsubrsBias = this.bias(gsubrs);
73950
    var privateDict = cff.privateDictForGlyph(this.id) || {};
73951
    var subrs = privateDict.Subrs || [];
73952
    var subrsBias = this.bias(subrs);
73953
    var vstore = cff.topDict.vstore && cff.topDict.vstore.itemVariationStore;
73954
    var vsindex = privateDict.vsindex;
73955
    var variationProcessor = this._font._variationProcessor;
73956
    function checkWidth() {
73957
      if (width == null) {
73958
        width = stack.shift() + privateDict.nominalWidthX;
73959
      }
73960
    }
73961
    function parseStems() {
73962
      if (stack.length % 2 !== 0) {
73963
        checkWidth();
73964
      }
73965
      nStems += stack.length >> 1;
73966
      return stack.length = 0;
73967
    }
73968
    function moveTo(x, y) {
73969
      if (open) {
73970
        path.closePath();
73971
      }
73972
      path.moveTo(x, y);
73973
      open = true;
73974
    }
73975
    var parse = function parse() {
73976
      while (stream.pos < end) {
73977
        var op = stream.readUInt8();
73978
        if (op < 32) {
73979
          switch (op) {
73980
            case 1: // hstem
73981
73982
            case 3: // vstem
73983
73984
            case 18: // hstemhm
73985
73986
            case 23:
73987
              // vstemhm
73988
              parseStems();
73989
              break;
73990
            case 4:
73991
              // vmoveto
73992
              if (stack.length > 1) {
73993
                checkWidth();
73994
              }
73995
              y += stack.shift();
73996
              moveTo(x, y);
73997
              break;
73998
            case 5:
73999
              // rlineto
74000
              while (stack.length >= 2) {
74001
                x += stack.shift();
74002
                y += stack.shift();
74003
                path.lineTo(x, y);
74004
              }
74005
              break;
74006
            case 6: // hlineto
74007
74008
            case 7:
74009
              // vlineto
74010
              var phase = op === 6;
74011
              while (stack.length >= 1) {
74012
                if (phase) {
74013
                  x += stack.shift();
74014
                } else {
74015
                  y += stack.shift();
74016
                }
74017
                path.lineTo(x, y);
74018
                phase = !phase;
74019
              }
74020
              break;
74021
            case 8:
74022
              // rrcurveto
74023
              while (stack.length > 0) {
74024
                var c1x = x + stack.shift();
74025
                var c1y = y + stack.shift();
74026
                var c2x = c1x + stack.shift();
74027
                var c2y = c1y + stack.shift();
74028
                x = c2x + stack.shift();
74029
                y = c2y + stack.shift();
74030
                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
74031
              }
74032
              break;
74033
            case 10:
74034
              // callsubr
74035
              var index = stack.pop() + subrsBias;
74036
              var subr = subrs[index];
74037
              if (subr) {
74038
                usedSubrs[index] = true;
74039
                var p = stream.pos;
74040
                var e = end;
74041
                stream.pos = subr.offset;
74042
                end = subr.offset + subr.length;
74043
                parse();
74044
                stream.pos = p;
74045
                end = e;
74046
              }
74047
              break;
74048
            case 11:
74049
              // return
74050
              if (cff.version >= 2) {
74051
                break;
74052
              }
74053
              return;
74054
            case 14:
74055
              // endchar
74056
              if (cff.version >= 2) {
74057
                break;
74058
              }
74059
              if (stack.length > 0) {
74060
                checkWidth();
74061
              }
74062
              if (open) {
74063
                path.closePath();
74064
                open = false;
74065
              }
74066
              break;
74067
            case 15:
74068
              {
74069
                // vsindex
74070
                if (cff.version < 2) {
74071
                  throw new Error('vsindex operator not supported in CFF v1');
74072
                }
74073
                vsindex = stack.pop();
74074
                break;
74075
              }
74076
            case 16:
74077
              {
74078
                // blend
74079
                if (cff.version < 2) {
74080
                  throw new Error('blend operator not supported in CFF v1');
74081
                }
74082
                if (!variationProcessor) {
74083
                  throw new Error('blend operator in non-variation font');
74084
                }
74085
                var blendVector = variationProcessor.getBlendVector(vstore, vsindex);
74086
                var numBlends = stack.pop();
74087
                var numOperands = numBlends * blendVector.length;
74088
                var delta = stack.length - numOperands;
74089
                var base = delta - numBlends;
74090
                for (var i = 0; i < numBlends; i++) {
74091
                  var sum = stack[base + i];
74092
                  for (var j = 0; j < blendVector.length; j++) {
74093
                    sum += blendVector[j] * stack[delta++];
74094
                  }
74095
                  stack[base + i] = sum;
74096
                }
74097
                while (numOperands--) {
74098
                  stack.pop();
74099
                }
74100
                break;
74101
              }
74102
            case 19: // hintmask
74103
74104
            case 20:
74105
              // cntrmask
74106
              parseStems();
74107
              stream.pos += nStems + 7 >> 3;
74108
              break;
74109
            case 21:
74110
              // rmoveto
74111
              if (stack.length > 2) {
74112
                checkWidth();
74113
              }
74114
              x += stack.shift();
74115
              y += stack.shift();
74116
              moveTo(x, y);
74117
              break;
74118
            case 22:
74119
              // hmoveto
74120
              if (stack.length > 1) {
74121
                checkWidth();
74122
              }
74123
              x += stack.shift();
74124
              moveTo(x, y);
74125
              break;
74126
            case 24:
74127
              // rcurveline
74128
              while (stack.length >= 8) {
74129
                var c1x = x + stack.shift();
74130
                var c1y = y + stack.shift();
74131
                var c2x = c1x + stack.shift();
74132
                var c2y = c1y + stack.shift();
74133
                x = c2x + stack.shift();
74134
                y = c2y + stack.shift();
74135
                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
74136
              }
74137
              x += stack.shift();
74138
              y += stack.shift();
74139
              path.lineTo(x, y);
74140
              break;
74141
            case 25:
74142
              // rlinecurve
74143
              while (stack.length >= 8) {
74144
                x += stack.shift();
74145
                y += stack.shift();
74146
                path.lineTo(x, y);
74147
              }
74148
              var c1x = x + stack.shift();
74149
              var c1y = y + stack.shift();
74150
              var c2x = c1x + stack.shift();
74151
              var c2y = c1y + stack.shift();
74152
              x = c2x + stack.shift();
74153
              y = c2y + stack.shift();
74154
              path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
74155
              break;
74156
            case 26:
74157
              // vvcurveto
74158
              if (stack.length % 2) {
74159
                x += stack.shift();
74160
              }
74161
              while (stack.length >= 4) {
74162
                c1x = x;
74163
                c1y = y + stack.shift();
74164
                c2x = c1x + stack.shift();
74165
                c2y = c1y + stack.shift();
74166
                x = c2x;
74167
                y = c2y + stack.shift();
74168
                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
74169
              }
74170
              break;
74171
            case 27:
74172
              // hhcurveto
74173
              if (stack.length % 2) {
74174
                y += stack.shift();
74175
              }
74176
              while (stack.length >= 4) {
74177
                c1x = x + stack.shift();
74178
                c1y = y;
74179
                c2x = c1x + stack.shift();
74180
                c2y = c1y + stack.shift();
74181
                x = c2x + stack.shift();
74182
                y = c2y;
74183
                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
74184
              }
74185
              break;
74186
            case 28:
74187
              // shortint
74188
              stack.push(stream.readInt16BE());
74189
              break;
74190
            case 29:
74191
              // callgsubr
74192
              index = stack.pop() + gsubrsBias;
74193
              subr = gsubrs[index];
74194
              if (subr) {
74195
                usedGsubrs[index] = true;
74196
                var p = stream.pos;
74197
                var e = end;
74198
                stream.pos = subr.offset;
74199
                end = subr.offset + subr.length;
74200
                parse();
74201
                stream.pos = p;
74202
                end = e;
74203
              }
74204
              break;
74205
            case 30: // vhcurveto
74206
74207
            case 31:
74208
              // hvcurveto
74209
              phase = op === 31;
74210
              while (stack.length >= 4) {
74211
                if (phase) {
74212
                  c1x = x + stack.shift();
74213
                  c1y = y;
74214
                  c2x = c1x + stack.shift();
74215
                  c2y = c1y + stack.shift();
74216
                  y = c2y + stack.shift();
74217
                  x = c2x + (stack.length === 1 ? stack.shift() : 0);
74218
                } else {
74219
                  c1x = x;
74220
                  c1y = y + stack.shift();
74221
                  c2x = c1x + stack.shift();
74222
                  c2y = c1y + stack.shift();
74223
                  x = c2x + stack.shift();
74224
                  y = c2y + (stack.length === 1 ? stack.shift() : 0);
74225
                }
74226
                path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);
74227
                phase = !phase;
74228
              }
74229
              break;
74230
            case 12:
74231
              op = stream.readUInt8();
74232
              switch (op) {
74233
                case 3:
74234
                  // and
74235
                  var a = stack.pop();
74236
                  var b = stack.pop();
74237
                  stack.push(a && b ? 1 : 0);
74238
                  break;
74239
                case 4:
74240
                  // or
74241
                  a = stack.pop();
74242
                  b = stack.pop();
74243
                  stack.push(a || b ? 1 : 0);
74244
                  break;
74245
                case 5:
74246
                  // not
74247
                  a = stack.pop();
74248
                  stack.push(a ? 0 : 1);
74249
                  break;
74250
                case 9:
74251
                  // abs
74252
                  a = stack.pop();
74253
                  stack.push(Math.abs(a));
74254
                  break;
74255
                case 10:
74256
                  // add
74257
                  a = stack.pop();
74258
                  b = stack.pop();
74259
                  stack.push(a + b);
74260
                  break;
74261
                case 11:
74262
                  // sub
74263
                  a = stack.pop();
74264
                  b = stack.pop();
74265
                  stack.push(a - b);
74266
                  break;
74267
                case 12:
74268
                  // div
74269
                  a = stack.pop();
74270
                  b = stack.pop();
74271
                  stack.push(a / b);
74272
                  break;
74273
                case 14:
74274
                  // neg
74275
                  a = stack.pop();
74276
                  stack.push(-a);
74277
                  break;
74278
                case 15:
74279
                  // eq
74280
                  a = stack.pop();
74281
                  b = stack.pop();
74282
                  stack.push(a === b ? 1 : 0);
74283
                  break;
74284
                case 18:
74285
                  // drop
74286
                  stack.pop();
74287
                  break;
74288
                case 20:
74289
                  // put
74290
                  var val = stack.pop();
74291
                  var idx = stack.pop();
74292
                  trans[idx] = val;
74293
                  break;
74294
                case 21:
74295
                  // get
74296
                  idx = stack.pop();
74297
                  stack.push(trans[idx] || 0);
74298
                  break;
74299
                case 22:
74300
                  // ifelse
74301
                  var s1 = stack.pop();
74302
                  var s2 = stack.pop();
74303
                  var v1 = stack.pop();
74304
                  var v2 = stack.pop();
74305
                  stack.push(v1 <= v2 ? s1 : s2);
74306
                  break;
74307
                case 23:
74308
                  // random
74309
                  stack.push(Math.random());
74310
                  break;
74311
                case 24:
74312
                  // mul
74313
                  a = stack.pop();
74314
                  b = stack.pop();
74315
                  stack.push(a * b);
74316
                  break;
74317
                case 26:
74318
                  // sqrt
74319
                  a = stack.pop();
74320
                  stack.push(Math.sqrt(a));
74321
                  break;
74322
                case 27:
74323
                  // dup
74324
                  a = stack.pop();
74325
                  stack.push(a, a);
74326
                  break;
74327
                case 28:
74328
                  // exch
74329
                  a = stack.pop();
74330
                  b = stack.pop();
74331
                  stack.push(b, a);
74332
                  break;
74333
                case 29:
74334
                  // index
74335
                  idx = stack.pop();
74336
                  if (idx < 0) {
74337
                    idx = 0;
74338
                  } else if (idx > stack.length - 1) {
74339
                    idx = stack.length - 1;
74340
                  }
74341
                  stack.push(stack[idx]);
74342
                  break;
74343
                case 30:
74344
                  // roll
74345
                  var n = stack.pop();
74346
                  var _j = stack.pop();
74347
                  if (_j >= 0) {
74348
                    while (_j > 0) {
74349
                      var t = stack[n - 1];
74350
                      for (var _i = n - 2; _i >= 0; _i--) {
74351
                        stack[_i + 1] = stack[_i];
74352
                      }
74353
                      stack[0] = t;
74354
                      _j--;
74355
                    }
74356
                  } else {
74357
                    while (_j < 0) {
74358
                      var t = stack[0];
74359
                      for (var _i2 = 0; _i2 <= n; _i2++) {
74360
                        stack[_i2] = stack[_i2 + 1];
74361
                      }
74362
                      stack[n - 1] = t;
74363
                      _j++;
74364
                    }
74365
                  }
74366
                  break;
74367
                case 34:
74368
                  // hflex
74369
                  c1x = x + stack.shift();
74370
                  c1y = y;
74371
                  c2x = c1x + stack.shift();
74372
                  c2y = c1y + stack.shift();
74373
                  var c3x = c2x + stack.shift();
74374
                  var c3y = c2y;
74375
                  var c4x = c3x + stack.shift();
74376
                  var c4y = c3y;
74377
                  var c5x = c4x + stack.shift();
74378
                  var c5y = c4y;
74379
                  var c6x = c5x + stack.shift();
74380
                  var c6y = c5y;
74381
                  x = c6x;
74382
                  y = c6y;
74383
                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);
74384
                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);
74385
                  break;
74386
                case 35:
74387
                  // flex
74388
                  var pts = [];
74389
                  for (var _i3 = 0; _i3 <= 5; _i3++) {
74390
                    x += stack.shift();
74391
                    y += stack.shift();
74392
                    pts.push(x, y);
74393
                  }
74394
                  path.bezierCurveTo.apply(path, pts.slice(0, 6));
74395
                  path.bezierCurveTo.apply(path, pts.slice(6));
74396
                  stack.shift(); // fd
74397
74398
                  break;
74399
                case 36:
74400
                  // hflex1
74401
                  c1x = x + stack.shift();
74402
                  c1y = y + stack.shift();
74403
                  c2x = c1x + stack.shift();
74404
                  c2y = c1y + stack.shift();
74405
                  c3x = c2x + stack.shift();
74406
                  c3y = c2y;
74407
                  c4x = c3x + stack.shift();
74408
                  c4y = c3y;
74409
                  c5x = c4x + stack.shift();
74410
                  c5y = c4y + stack.shift();
74411
                  c6x = c5x + stack.shift();
74412
                  c6y = c5y;
74413
                  x = c6x;
74414
                  y = c6y;
74415
                  path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);
74416
                  path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);
74417
                  break;
74418
                case 37:
74419
                  // flex1
74420
                  var startx = x;
74421
                  var starty = y;
74422
                  pts = [];
74423
                  for (var _i4 = 0; _i4 <= 4; _i4++) {
74424
                    x += stack.shift();
74425
                    y += stack.shift();
74426
                    pts.push(x, y);
74427
                  }
74428
                  if (Math.abs(x - startx) > Math.abs(y - starty)) {
74429
                    // horizontal
74430
                    x += stack.shift();
74431
                    y = starty;
74432
                  } else {
74433
                    x = startx;
74434
                    y += stack.shift();
74435
                  }
74436
                  pts.push(x, y);
74437
                  path.bezierCurveTo.apply(path, pts.slice(0, 6));
74438
                  path.bezierCurveTo.apply(path, pts.slice(6));
74439
                  break;
74440
                default:
74441
                  throw new Error("Unknown op: 12 ".concat(op));
74442
              }
74443
              break;
74444
            default:
74445
              throw new Error("Unknown op: ".concat(op));
74446
          }
74447
        } else if (op < 247) {
74448
          stack.push(op - 139);
74449
        } else if (op < 251) {
74450
          var b1 = stream.readUInt8();
74451
          stack.push((op - 247) * 256 + b1 + 108);
74452
        } else if (op < 255) {
74453
          var b1 = stream.readUInt8();
74454
          stack.push(-(op - 251) * 256 - b1 - 108);
74455
        } else {
74456
          stack.push(stream.readInt32BE() / 65536);
74457
        }
74458
      }
74459
    };
74460
    parse();
74461
    if (open) {
74462
      path.closePath();
74463
    }
74464
    return path;
74465
  };
74466
  return CFFGlyph;
74467
}(Glyph);
74468
var SBIXImage = new r.Struct({
74469
  originX: r.uint16,
74470
  originY: r.uint16,
74471
  type: new r.String(4),
74472
  data: new r.Buffer(function (t) {
74473
    return t.parent.buflen - t._currentOffset;
74474
  })
74475
});
74476
/**
74477
 * Represents a color (e.g. emoji) glyph in Apple's SBIX format.
74478
 */
74479
var SBIXGlyph = /*#__PURE__*/function (_TTFGlyph) {
74480
  _inheritsLoose(SBIXGlyph, _TTFGlyph);
74481
  function SBIXGlyph() {
74482
    return _TTFGlyph.apply(this, arguments) || this;
74483
  }
74484
  var _proto36 = SBIXGlyph.prototype;
74485
  /**
74486
   * Returns an object representing a glyph image at the given point size.
74487
   * The object has a data property with a Buffer containing the actual image data,
74488
   * along with the image type, and origin.
74489
   *
74490
   * @param {number} size
74491
   * @return {object}
74492
   */
74493
  _proto36.getImageForSize = function getImageForSize(size) {
74494
    for (var i = 0; i < this._font.sbix.imageTables.length; i++) {
74495
      var table = this._font.sbix.imageTables[i];
74496
      if (table.ppem >= size) {
74497
        break;
74498
      }
74499
    }
74500
    var offsets = table.imageOffsets;
74501
    var start = offsets[this.id];
74502
    var end = offsets[this.id + 1];
74503
    if (start === end) {
74504
      return null;
74505
    }
74506
    this._font.stream.pos = start;
74507
    return SBIXImage.decode(this._font.stream, {
74508
      buflen: end - start
74509
    });
74510
  };
74511
  _proto36.render = function render(ctx, size) {
74512
    var img = this.getImageForSize(size);
74513
    if (img != null) {
74514
      var scale = size / this._font.unitsPerEm;
74515
      ctx.image(img.data, {
74516
        height: size,
74517
        x: img.originX,
74518
        y: (this.bbox.minY - img.originY) * scale
74519
      });
74520
    }
74521
    if (this._font.sbix.flags.renderOutlines) {
74522
      _TTFGlyph.prototype.render.call(this, ctx, size);
74523
    }
74524
  };
74525
  return SBIXGlyph;
74526
}(TTFGlyph);
74527
var COLRLayer = function COLRLayer(glyph, color) {
74528
  this.glyph = glyph;
74529
  this.color = color;
74530
};
74531
/**
74532
 * Represents a color (e.g. emoji) glyph in Microsoft's COLR format.
74533
 * Each glyph in this format contain a list of colored layers, each
74534
 * of which  is another vector glyph.
74535
 */
74536
var COLRGlyph = /*#__PURE__*/function (_Glyph3) {
74537
  _inheritsLoose(COLRGlyph, _Glyph3);
74538
  function COLRGlyph() {
74539
    return _Glyph3.apply(this, arguments) || this;
74540
  }
74541
  var _proto37 = COLRGlyph.prototype;
74542
  _proto37._getBBox = function _getBBox() {
74543
    var bbox = new BBox();
74544
    for (var i = 0; i < this.layers.length; i++) {
74545
      var layer = this.layers[i];
74546
      var b = layer.glyph.bbox;
74547
      bbox.addPoint(b.minX, b.minY);
74548
      bbox.addPoint(b.maxX, b.maxY);
74549
    }
74550
    return bbox;
74551
  }
74552
  /**
74553
   * Returns an array of objects containing the glyph and color for
74554
   * each layer in the composite color glyph.
74555
   * @type {object[]}
74556
   */;
74557
  _proto37.render = function render(ctx, size) {
74558
    for (var _iterator71 = _createForOfIteratorHelperLoose(this.layers), _step71; !(_step71 = _iterator71()).done;) {
74559
      var _step71$value = _step71.value,
74560
        glyph = _step71$value.glyph,
74561
        color = _step71$value.color;
74562
      ctx.fillColor([color.red, color.green, color.blue], color.alpha / 255 * 100);
74563
      glyph.render(ctx, size);
74564
    }
74565
    return;
74566
  };
74567
  _createClass(COLRGlyph, [{
74568
    key: "layers",
74569
    get: function get() {
74570
      var cpal = this._font.CPAL;
74571
      var colr = this._font.COLR;
74572
      var low = 0;
74573
      var high = colr.baseGlyphRecord.length - 1;
74574
      while (low <= high) {
74575
        var mid = low + high >> 1;
74576
        var rec = colr.baseGlyphRecord[mid];
74577
        if (this.id < rec.gid) {
74578
          high = mid - 1;
74579
        } else if (this.id > rec.gid) {
74580
          low = mid + 1;
74581
        } else {
74582
          var baseLayer = rec;
74583
          break;
74584
        }
74585
      } // if base glyph not found in COLR table,
74586
      // default to normal glyph from glyf or CFF
74587
74588
      if (baseLayer == null) {
74589
        var g = this._font._getBaseGlyph(this.id);
74590
        var color = {
74591
          red: 0,
74592
          green: 0,
74593
          blue: 0,
74594
          alpha: 255
74595
        };
74596
        return [new COLRLayer(g, color)];
74597
      } // otherwise, return an array of all the layers
74598
74599
      var layers = [];
74600
      for (var i = baseLayer.firstLayerIndex; i < baseLayer.firstLayerIndex + baseLayer.numLayers; i++) {
74601
        var rec = colr.layerRecords[i];
74602
        var color = cpal.colorRecords[rec.paletteIndex];
74603
        var g = this._font._getBaseGlyph(rec.gid);
74604
        layers.push(new COLRLayer(g, color));
74605
      }
74606
      return layers;
74607
    }
74608
  }]);
74609
  return COLRGlyph;
74610
}(Glyph);
74611
var TUPLES_SHARE_POINT_NUMBERS = 0x8000;
74612
var TUPLE_COUNT_MASK = 0x0fff;
74613
var EMBEDDED_TUPLE_COORD = 0x8000;
74614
var INTERMEDIATE_TUPLE = 0x4000;
74615
var PRIVATE_POINT_NUMBERS = 0x2000;
74616
var TUPLE_INDEX_MASK = 0x0fff;
74617
var POINTS_ARE_WORDS = 0x80;
74618
var POINT_RUN_COUNT_MASK = 0x7f;
74619
var DELTAS_ARE_ZERO = 0x80;
74620
var DELTAS_ARE_WORDS = 0x40;
74621
var DELTA_RUN_COUNT_MASK = 0x3f;
74622
/**
74623
 * This class is transforms TrueType glyphs according to the data from
74624
 * the Apple Advanced Typography variation tables (fvar, gvar, and avar).
74625
 * These tables allow infinite adjustments to glyph weight, width, slant,
74626
 * and optical size without the designer needing to specify every exact style.
74627
 *
74628
 * Apple's documentation for these tables is not great, so thanks to the
74629
 * Freetype project for figuring much of this out.
74630
 *
74631
 * @private
74632
 */
74633
var GlyphVariationProcessor = /*#__PURE__*/function () {
74634
  function GlyphVariationProcessor(font, coords) {
74635
    this.font = font;
74636
    this.normalizedCoords = this.normalizeCoords(coords);
74637
    this.blendVectors = new Map();
74638
  }
74639
  var _proto38 = GlyphVariationProcessor.prototype;
74640
  _proto38.normalizeCoords = function normalizeCoords(coords) {
74641
    // the default mapping is linear along each axis, in two segments:
74642
    // from the minValue to defaultValue, and from defaultValue to maxValue.
74643
    var normalized = [];
74644
    for (var i = 0; i < this.font.fvar.axis.length; i++) {
74645
      var axis = this.font.fvar.axis[i];
74646
      if (coords[i] < axis.defaultValue) {
74647
        normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.defaultValue - axis.minValue + Number.EPSILON));
74648
      } else {
74649
        normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.maxValue - axis.defaultValue + Number.EPSILON));
74650
      }
74651
    } // if there is an avar table, the normalized value is calculated
74652
    // by interpolating between the two nearest mapped values.
74653
74654
    if (this.font.avar) {
74655
      for (var i = 0; i < this.font.avar.segment.length; i++) {
74656
        var segment = this.font.avar.segment[i];
74657
        for (var j = 0; j < segment.correspondence.length; j++) {
74658
          var pair = segment.correspondence[j];
74659
          if (j >= 1 && normalized[i] < pair.fromCoord) {
74660
            var prev = segment.correspondence[j - 1];
74661
            normalized[i] = ((normalized[i] - prev.fromCoord) * (pair.toCoord - prev.toCoord) + Number.EPSILON) / (pair.fromCoord - prev.fromCoord + Number.EPSILON) + prev.toCoord;
74662
            break;
74663
          }
74664
        }
74665
      }
74666
    }
74667
    return normalized;
74668
  };
74669
  _proto38.transformPoints = function transformPoints(gid, glyphPoints) {
74670
    if (!this.font.fvar || !this.font.gvar) {
74671
      return;
74672
    }
74673
    var gvar = this.font.gvar;
74674
    if (gid >= gvar.glyphCount) {
74675
      return;
74676
    }
74677
    var offset = gvar.offsets[gid];
74678
    if (offset === gvar.offsets[gid + 1]) {
74679
      return;
74680
    } // Read the gvar data for this glyph
74681
74682
    var stream = this.font.stream;
74683
    stream.pos = offset;
74684
    if (stream.pos >= stream.length) {
74685
      return;
74686
    }
74687
    var tupleCount = stream.readUInt16BE();
74688
    var offsetToData = offset + stream.readUInt16BE();
74689
    if (tupleCount & TUPLES_SHARE_POINT_NUMBERS) {
74690
      var here = stream.pos;
74691
      stream.pos = offsetToData;
74692
      var sharedPoints = this.decodePoints();
74693
      offsetToData = stream.pos;
74694
      stream.pos = here;
74695
    }
74696
    var origPoints = glyphPoints.map(function (pt) {
74697
      return pt.copy();
74698
    });
74699
    tupleCount &= TUPLE_COUNT_MASK;
74700
    for (var i = 0; i < tupleCount; i++) {
74701
      var tupleDataSize = stream.readUInt16BE();
74702
      var tupleIndex = stream.readUInt16BE();
74703
      if (tupleIndex & EMBEDDED_TUPLE_COORD) {
74704
        var tupleCoords = [];
74705
        for (var a = 0; a < gvar.axisCount; a++) {
74706
          tupleCoords.push(stream.readInt16BE() / 16384);
74707
        }
74708
      } else {
74709
        if ((tupleIndex & TUPLE_INDEX_MASK) >= gvar.globalCoordCount) {
74710
          throw new Error('Invalid gvar table');
74711
        }
74712
        var tupleCoords = gvar.globalCoords[tupleIndex & TUPLE_INDEX_MASK];
74713
      }
74714
      if (tupleIndex & INTERMEDIATE_TUPLE) {
74715
        var startCoords = [];
74716
        for (var _a = 0; _a < gvar.axisCount; _a++) {
74717
          startCoords.push(stream.readInt16BE() / 16384);
74718
        }
74719
        var endCoords = [];
74720
        for (var _a2 = 0; _a2 < gvar.axisCount; _a2++) {
74721
          endCoords.push(stream.readInt16BE() / 16384);
74722
        }
74723
      } // Get the factor at which to apply this tuple
74724
74725
      var factor = this.tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords);
74726
      if (factor === 0) {
74727
        offsetToData += tupleDataSize;
74728
        continue;
74729
      }
74730
      var here = stream.pos;
74731
      stream.pos = offsetToData;
74732
      if (tupleIndex & PRIVATE_POINT_NUMBERS) {
74733
        var points = this.decodePoints();
74734
      } else {
74735
        var points = sharedPoints;
74736
      } // points.length = 0 means there are deltas for all points
74737
74738
      var nPoints = points.length === 0 ? glyphPoints.length : points.length;
74739
      var xDeltas = this.decodeDeltas(nPoints);
74740
      var yDeltas = this.decodeDeltas(nPoints);
74741
      if (points.length === 0) {
74742
        // all points
74743
        for (var _i = 0; _i < glyphPoints.length; _i++) {
74744
          var point = glyphPoints[_i];
74745
          point.x += Math.round(xDeltas[_i] * factor);
74746
          point.y += Math.round(yDeltas[_i] * factor);
74747
        }
74748
      } else {
74749
        var outPoints = origPoints.map(function (pt) {
74750
          return pt.copy();
74751
        });
74752
        var hasDelta = glyphPoints.map(function () {
74753
          return false;
74754
        });
74755
        for (var _i2 = 0; _i2 < points.length; _i2++) {
74756
          var idx = points[_i2];
74757
          if (idx < glyphPoints.length) {
74758
            var _point = outPoints[idx];
74759
            hasDelta[idx] = true;
74760
            _point.x += Math.round(xDeltas[_i2] * factor);
74761
            _point.y += Math.round(yDeltas[_i2] * factor);
74762
          }
74763
        }
74764
        this.interpolateMissingDeltas(outPoints, origPoints, hasDelta);
74765
        for (var _i3 = 0; _i3 < glyphPoints.length; _i3++) {
74766
          var deltaX = outPoints[_i3].x - origPoints[_i3].x;
74767
          var deltaY = outPoints[_i3].y - origPoints[_i3].y;
74768
          glyphPoints[_i3].x += deltaX;
74769
          glyphPoints[_i3].y += deltaY;
74770
        }
74771
      }
74772
      offsetToData += tupleDataSize;
74773
      stream.pos = here;
74774
    }
74775
  };
74776
  _proto38.decodePoints = function decodePoints() {
74777
    var stream = this.font.stream;
74778
    var count = stream.readUInt8();
74779
    if (count & POINTS_ARE_WORDS) {
74780
      count = (count & POINT_RUN_COUNT_MASK) << 8 | stream.readUInt8();
74781
    }
74782
    var points = new Uint16Array(count);
74783
    var i = 0;
74784
    var point = 0;
74785
    while (i < count) {
74786
      var run = stream.readUInt8();
74787
      var runCount = (run & POINT_RUN_COUNT_MASK) + 1;
74788
      var fn = run & POINTS_ARE_WORDS ? stream.readUInt16 : stream.readUInt8;
74789
      for (var j = 0; j < runCount && i < count; j++) {
74790
        point += fn.call(stream);
74791
        points[i++] = point;
74792
      }
74793
    }
74794
    return points;
74795
  };
74796
  _proto38.decodeDeltas = function decodeDeltas(count) {
74797
    var stream = this.font.stream;
74798
    var i = 0;
74799
    var deltas = new Int16Array(count);
74800
    while (i < count) {
74801
      var run = stream.readUInt8();
74802
      var runCount = (run & DELTA_RUN_COUNT_MASK) + 1;
74803
      if (run & DELTAS_ARE_ZERO) {
74804
        i += runCount;
74805
      } else {
74806
        var fn = run & DELTAS_ARE_WORDS ? stream.readInt16BE : stream.readInt8;
74807
        for (var j = 0; j < runCount && i < count; j++) {
74808
          deltas[i++] = fn.call(stream);
74809
        }
74810
      }
74811
    }
74812
    return deltas;
74813
  };
74814
  _proto38.tupleFactor = function tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords) {
74815
    var normalized = this.normalizedCoords;
74816
    var gvar = this.font.gvar;
74817
    var factor = 1;
74818
    for (var i = 0; i < gvar.axisCount; i++) {
74819
      if (tupleCoords[i] === 0) {
74820
        continue;
74821
      }
74822
      if (normalized[i] === 0) {
74823
        return 0;
74824
      }
74825
      if ((tupleIndex & INTERMEDIATE_TUPLE) === 0) {
74826
        if (normalized[i] < Math.min(0, tupleCoords[i]) || normalized[i] > Math.max(0, tupleCoords[i])) {
74827
          return 0;
74828
        }
74829
        factor = (factor * normalized[i] + Number.EPSILON) / (tupleCoords[i] + Number.EPSILON);
74830
      } else {
74831
        if (normalized[i] < startCoords[i] || normalized[i] > endCoords[i]) {
74832
          return 0;
74833
        } else if (normalized[i] < tupleCoords[i]) {
74834
          factor = factor * (normalized[i] - startCoords[i] + Number.EPSILON) / (tupleCoords[i] - startCoords[i] + Number.EPSILON);
74835
        } else {
74836
          factor = factor * (endCoords[i] - normalized[i] + Number.EPSILON) / (endCoords[i] - tupleCoords[i] + Number.EPSILON);
74837
        }
74838
      }
74839
    }
74840
    return factor;
74841
  } // Interpolates points without delta values.
74842
  // Needed for the Ø and Q glyphs in Skia.
74843
  // Algorithm from Freetype.
74844
  ;
74845
  _proto38.interpolateMissingDeltas = function interpolateMissingDeltas(points, inPoints, hasDelta) {
74846
    if (points.length === 0) {
74847
      return;
74848
    }
74849
    var point = 0;
74850
    while (point < points.length) {
74851
      var firstPoint = point; // find the end point of the contour
74852
74853
      var endPoint = point;
74854
      var pt = points[endPoint];
74855
      while (!pt.endContour) {
74856
        pt = points[++endPoint];
74857
      } // find the first point that has a delta
74858
74859
      while (point <= endPoint && !hasDelta[point]) {
74860
        point++;
74861
      }
74862
      if (point > endPoint) {
74863
        continue;
74864
      }
74865
      var firstDelta = point;
74866
      var curDelta = point;
74867
      point++;
74868
      while (point <= endPoint) {
74869
        // find the next point with a delta, and interpolate intermediate points
74870
        if (hasDelta[point]) {
74871
          this.deltaInterpolate(curDelta + 1, point - 1, curDelta, point, inPoints, points);
74872
          curDelta = point;
74873
        }
74874
        point++;
74875
      } // shift contour if we only have a single delta
74876
74877
      if (curDelta === firstDelta) {
74878
        this.deltaShift(firstPoint, endPoint, curDelta, inPoints, points);
74879
      } else {
74880
        // otherwise, handle the remaining points at the end and beginning of the contour
74881
        this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, inPoints, points);
74882
        if (firstDelta > 0) {
74883
          this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, inPoints, points);
74884
        }
74885
      }
74886
      point = endPoint + 1;
74887
    }
74888
  };
74889
  _proto38.deltaInterpolate = function deltaInterpolate(p1, p2, ref1, ref2, inPoints, outPoints) {
74890
    if (p1 > p2) {
74891
      return;
74892
    }
74893
    var iterable = ['x', 'y'];
74894
    for (var i = 0; i < iterable.length; i++) {
74895
      var k = iterable[i];
74896
      if (inPoints[ref1][k] > inPoints[ref2][k]) {
74897
        var p = ref1;
74898
        ref1 = ref2;
74899
        ref2 = p;
74900
      }
74901
      var in1 = inPoints[ref1][k];
74902
      var in2 = inPoints[ref2][k];
74903
      var out1 = outPoints[ref1][k];
74904
      var out2 = outPoints[ref2][k]; // If the reference points have the same coordinate but different
74905
      // delta, inferred delta is zero.  Otherwise interpolate.
74906
74907
      if (in1 !== in2 || out1 === out2) {
74908
        var scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);
74909
        for (var _p = p1; _p <= p2; _p++) {
74910
          var out = inPoints[_p][k];
74911
          if (out <= in1) {
74912
            out += out1 - in1;
74913
          } else if (out >= in2) {
74914
            out += out2 - in2;
74915
          } else {
74916
            out = out1 + (out - in1) * scale;
74917
          }
74918
          outPoints[_p][k] = out;
74919
        }
74920
      }
74921
    }
74922
  };
74923
  _proto38.deltaShift = function deltaShift(p1, p2, ref, inPoints, outPoints) {
74924
    var deltaX = outPoints[ref].x - inPoints[ref].x;
74925
    var deltaY = outPoints[ref].y - inPoints[ref].y;
74926
    if (deltaX === 0 && deltaY === 0) {
74927
      return;
74928
    }
74929
    for (var p = p1; p <= p2; p++) {
74930
      if (p !== ref) {
74931
        outPoints[p].x += deltaX;
74932
        outPoints[p].y += deltaY;
74933
      }
74934
    }
74935
  };
74936
  _proto38.getAdvanceAdjustment = function getAdvanceAdjustment(gid, table) {
74937
    var outerIndex, innerIndex;
74938
    if (table.advanceWidthMapping) {
74939
      var idx = gid;
74940
      if (idx >= table.advanceWidthMapping.mapCount) {
74941
        idx = table.advanceWidthMapping.mapCount - 1;
74942
      }
74943
      var entryFormat = table.advanceWidthMapping.entryFormat;
74944
      var _table$advanceWidthMa = table.advanceWidthMapping.mapData[idx];
74945
      outerIndex = _table$advanceWidthMa.outerIndex;
74946
      innerIndex = _table$advanceWidthMa.innerIndex;
74947
    } else {
74948
      outerIndex = 0;
74949
      innerIndex = gid;
74950
    }
74951
    return this.getDelta(table.itemVariationStore, outerIndex, innerIndex);
74952
  } // See pseudo code from `Font Variations Overview'
74953
  // in the OpenType specification.
74954
  ;
74955
  _proto38.getDelta = function getDelta(itemStore, outerIndex, innerIndex) {
74956
    if (outerIndex >= itemStore.itemVariationData.length) {
74957
      return 0;
74958
    }
74959
    var varData = itemStore.itemVariationData[outerIndex];
74960
    if (innerIndex >= varData.deltaSets.length) {
74961
      return 0;
74962
    }
74963
    var deltaSet = varData.deltaSets[innerIndex];
74964
    var blendVector = this.getBlendVector(itemStore, outerIndex);
74965
    var netAdjustment = 0;
74966
    for (var master = 0; master < varData.regionIndexCount; master++) {
74967
      netAdjustment += deltaSet.deltas[master] * blendVector[master];
74968
    }
74969
    return netAdjustment;
74970
  };
74971
  _proto38.getBlendVector = function getBlendVector(itemStore, outerIndex) {
74972
    var varData = itemStore.itemVariationData[outerIndex];
74973
    if (this.blendVectors.has(varData)) {
74974
      return this.blendVectors.get(varData);
74975
    }
74976
    var normalizedCoords = this.normalizedCoords;
74977
    var blendVector = []; // outer loop steps through master designs to be blended
74978
74979
    for (var master = 0; master < varData.regionIndexCount; master++) {
74980
      var scalar = 1;
74981
      var regionIndex = varData.regionIndexes[master];
74982
      var axes = itemStore.variationRegionList.variationRegions[regionIndex]; // inner loop steps through axes in this region
74983
74984
      for (var j = 0; j < axes.length; j++) {
74985
        var axis = axes[j];
74986
        var axisScalar = void 0; // compute the scalar contribution of this axis
74987
        // ignore invalid ranges
74988
74989
        if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) {
74990
          axisScalar = 1;
74991
        } else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) {
74992
          axisScalar = 1; // peak of 0 means ignore this axis
74993
        } else if (axis.peakCoord === 0) {
74994
          axisScalar = 1; // ignore this region if coords are out of range
74995
        } else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) {
74996
          axisScalar = 0; // calculate a proportional factor
74997
        } else {
74998
          if (normalizedCoords[j] === axis.peakCoord) {
74999
            axisScalar = 1;
75000
          } else if (normalizedCoords[j] < axis.peakCoord) {
75001
            axisScalar = (normalizedCoords[j] - axis.startCoord + Number.EPSILON) / (axis.peakCoord - axis.startCoord + Number.EPSILON);
75002
          } else {
75003
            axisScalar = (axis.endCoord - normalizedCoords[j] + Number.EPSILON) / (axis.endCoord - axis.peakCoord + Number.EPSILON);
75004
          }
75005
        } // take product of all the axis scalars
75006
75007
        scalar *= axisScalar;
75008
      }
75009
      blendVector[master] = scalar;
75010
    }
75011
    this.blendVectors.set(varData, blendVector);
75012
    return blendVector;
75013
  };
75014
  return GlyphVariationProcessor;
75015
}();
75016
var resolved = Promise.resolve();
75017
var Subset = /*#__PURE__*/function () {
75018
  function Subset(font) {
75019
    this.font = font;
75020
    this.glyphs = [];
75021
    this.mapping = {}; // always include the missing glyph
75022
75023
    this.includeGlyph(0);
75024
  }
75025
  var _proto39 = Subset.prototype;
75026
  _proto39.includeGlyph = function includeGlyph(glyph) {
75027
    if (typeof glyph === 'object') {
75028
      glyph = glyph.id;
75029
    }
75030
    if (this.mapping[glyph] == null) {
75031
      this.glyphs.push(glyph);
75032
      this.mapping[glyph] = this.glyphs.length - 1;
75033
    }
75034
    return this.mapping[glyph];
75035
  };
75036
  _proto39.encodeStream = function encodeStream() {
75037
    var _this11 = this;
75038
    var s = new r.EncodeStream();
75039
    resolved.then(function () {
75040
      _this11.encode(s);
75041
      return s.end();
75042
    });
75043
    return s;
75044
  };
75045
  return Subset;
75046
}();
75047
var ON_CURVE$1 = 1 << 0;
75048
var X_SHORT_VECTOR$1 = 1 << 1;
75049
var Y_SHORT_VECTOR$1 = 1 << 2;
75050
var REPEAT$1 = 1 << 3;
75051
var SAME_X$1 = 1 << 4;
75052
var SAME_Y$1 = 1 << 5;
75053
var Point$1 = /*#__PURE__*/function () {
75054
  function Point$1() {}
75055
  Point$1.size = function size(val) {
75056
    return val >= 0 && val <= 255 ? 1 : 2;
75057
  };
75058
  Point$1.encode = function encode(stream, value) {
75059
    if (value >= 0 && value <= 255) {
75060
      stream.writeUInt8(value);
75061
    } else {
75062
      stream.writeInt16BE(value);
75063
    }
75064
  };
75065
  return Point$1;
75066
}();
75067
var Glyf = new r.Struct({
75068
  numberOfContours: r.int16,
75069
  // if negative, this is a composite glyph
75070
  xMin: r.int16,
75071
  yMin: r.int16,
75072
  xMax: r.int16,
75073
  yMax: r.int16,
75074
  endPtsOfContours: new r.Array(r.uint16, 'numberOfContours'),
75075
  instructions: new r.Array(r.uint8, r.uint16),
75076
  flags: new r.Array(r.uint8, 0),
75077
  xPoints: new r.Array(Point$1, 0),
75078
  yPoints: new r.Array(Point$1, 0)
75079
});
75080
/**
75081
 * Encodes TrueType glyph outlines
75082
 */
75083
var TTFGlyphEncoder = /*#__PURE__*/function () {
75084
  function TTFGlyphEncoder() {}
75085
  var _proto40 = TTFGlyphEncoder.prototype;
75086
  _proto40.encodeSimple = function encodeSimple(path, instructions) {
75087
    if (instructions === void 0) {
75088
      instructions = [];
75089
    }
75090
    var endPtsOfContours = [];
75091
    var xPoints = [];
75092
    var yPoints = [];
75093
    var flags = [];
75094
    var same = 0;
75095
    var lastX = 0,
75096
      lastY = 0,
75097
      lastFlag = 0;
75098
    var pointCount = 0;
75099
    for (var i = 0; i < path.commands.length; i++) {
75100
      var c = path.commands[i];
75101
      for (var j = 0; j < c.args.length; j += 2) {
75102
        var x = c.args[j];
75103
        var y = c.args[j + 1];
75104
        var flag = 0; // If the ending point of a quadratic curve is the midpoint
75105
        // between the control point and the control point of the next
75106
        // quadratic curve, we can omit the ending point.
75107
75108
        if (c.command === 'quadraticCurveTo' && j === 2) {
75109
          var next = path.commands[i + 1];
75110
          if (next && next.command === 'quadraticCurveTo') {
75111
            var midX = (lastX + next.args[0]) / 2;
75112
            var midY = (lastY + next.args[1]) / 2;
75113
            if (x === midX && y === midY) {
75114
              continue;
75115
            }
75116
          }
75117
        } // All points except control points are on curve.
75118
75119
        if (!(c.command === 'quadraticCurveTo' && j === 0)) {
75120
          flag |= ON_CURVE$1;
75121
        }
75122
        flag = this._encodePoint(x, lastX, xPoints, flag, X_SHORT_VECTOR$1, SAME_X$1);
75123
        flag = this._encodePoint(y, lastY, yPoints, flag, Y_SHORT_VECTOR$1, SAME_Y$1);
75124
        if (flag === lastFlag && same < 255) {
75125
          flags[flags.length - 1] |= REPEAT$1;
75126
          same++;
75127
        } else {
75128
          if (same > 0) {
75129
            flags.push(same);
75130
            same = 0;
75131
          }
75132
          flags.push(flag);
75133
          lastFlag = flag;
75134
        }
75135
        lastX = x;
75136
        lastY = y;
75137
        pointCount++;
75138
      }
75139
      if (c.command === 'closePath') {
75140
        endPtsOfContours.push(pointCount - 1);
75141
      }
75142
    } // Close the path if the last command didn't already
75143
75144
    if (path.commands.length > 1 && path.commands[path.commands.length - 1].command !== 'closePath') {
75145
      endPtsOfContours.push(pointCount - 1);
75146
    }
75147
    var bbox = path.bbox;
75148
    var glyf = {
75149
      numberOfContours: endPtsOfContours.length,
75150
      xMin: bbox.minX,
75151
      yMin: bbox.minY,
75152
      xMax: bbox.maxX,
75153
      yMax: bbox.maxY,
75154
      endPtsOfContours: endPtsOfContours,
75155
      instructions: instructions,
75156
      flags: flags,
75157
      xPoints: xPoints,
75158
      yPoints: yPoints
75159
    };
75160
    var size = Glyf.size(glyf);
75161
    var tail = 4 - size % 4;
75162
    var stream = new r.EncodeStream(size + tail);
75163
    Glyf.encode(stream, glyf); // Align to 4-byte length
75164
75165
    if (tail !== 0) {
75166
      stream.fill(0, tail);
75167
    }
75168
    return stream.buffer;
75169
  };
75170
  _proto40._encodePoint = function _encodePoint(value, last, points, flag, shortFlag, sameFlag) {
75171
    var diff = value - last;
75172
    if (value === last) {
75173
      flag |= sameFlag;
75174
    } else {
75175
      if (-255 <= diff && diff <= 255) {
75176
        flag |= shortFlag;
75177
        if (diff < 0) {
75178
          diff = -diff;
75179
        } else {
75180
          flag |= sameFlag;
75181
        }
75182
      }
75183
      points.push(diff);
75184
    }
75185
    return flag;
75186
  };
75187
  return TTFGlyphEncoder;
75188
}();
75189
var TTFSubset = /*#__PURE__*/function (_Subset) {
75190
  _inheritsLoose(TTFSubset, _Subset);
75191
  function TTFSubset(font) {
75192
    var _this12;
75193
    _this12 = _Subset.call(this, font) || this;
75194
    _this12.glyphEncoder = new TTFGlyphEncoder();
75195
    return _this12;
75196
  }
75197
  var _proto41 = TTFSubset.prototype;
75198
  _proto41._addGlyph = function _addGlyph(gid) {
75199
    var glyph = this.font.getGlyph(gid);
75200
    var glyf = glyph._decode(); // get the offset to the glyph from the loca table
75201
75202
    var curOffset = this.font.loca.offsets[gid];
75203
    var nextOffset = this.font.loca.offsets[gid + 1];
75204
    var stream = this.font._getTableStream('glyf');
75205
    stream.pos += curOffset;
75206
    var buffer = stream.readBuffer(nextOffset - curOffset); // if it is a compound glyph, include its components
75207
75208
    if (glyf && glyf.numberOfContours < 0) {
75209
      buffer = Buffer.from(buffer);
75210
      for (var _iterator72 = _createForOfIteratorHelperLoose(glyf.components), _step72; !(_step72 = _iterator72()).done;) {
75211
        var component = _step72.value;
75212
        gid = this.includeGlyph(component.glyphID);
75213
        buffer.writeUInt16BE(gid, component.pos);
75214
      }
75215
    } else if (glyf && this.font._variationProcessor) {
75216
      // If this is a TrueType variation glyph, re-encode the path
75217
      buffer = this.glyphEncoder.encodeSimple(glyph.path, glyf.instructions);
75218
    }
75219
    this.glyf.push(buffer);
75220
    this.loca.offsets.push(this.offset);
75221
    this.hmtx.metrics.push({
75222
      advance: glyph.advanceWidth,
75223
      bearing: glyph._getMetrics().leftBearing
75224
    });
75225
    this.offset += buffer.length;
75226
    return this.glyf.length - 1;
75227
  };
75228
  _proto41.encode = function encode(stream) {
75229
    // tables required by PDF spec:
75230
    //   head, hhea, loca, maxp, cvt , prep, glyf, hmtx, fpgm
75231
    //
75232
    // additional tables required for standalone fonts:
75233
    //   name, cmap, OS/2, post
75234
    this.glyf = [];
75235
    this.offset = 0;
75236
    this.loca = {
75237
      offsets: [],
75238
      version: this.font.loca.version
75239
    };
75240
    this.hmtx = {
75241
      metrics: [],
75242
      bearings: []
75243
    }; // include all the glyphs
75244
    // not using a for loop because we need to support adding more
75245
    // glyphs to the array as we go, and CoffeeScript caches the length.
75246
75247
    var i = 0;
75248
    while (i < this.glyphs.length) {
75249
      this._addGlyph(this.glyphs[i++]);
75250
    }
75251
    var maxp = cloneDeep(this.font.maxp);
75252
    maxp.numGlyphs = this.glyf.length;
75253
    this.loca.offsets.push(this.offset);
75254
    var head = cloneDeep(this.font.head);
75255
    head.indexToLocFormat = this.loca.version;
75256
    var hhea = cloneDeep(this.font.hhea);
75257
    hhea.numberOfMetrics = this.hmtx.metrics.length; // map = []
75258
    // for index in [0...256]
75259
    //     if index < @numGlyphs
75260
    //         map[index] = index
75261
    //     else
75262
    //         map[index] = 0
75263
    //
75264
    // cmapTable =
75265
    //     version: 0
75266
    //     length: 262
75267
    //     language: 0
75268
    //     codeMap: map
75269
    //
75270
    // cmap =
75271
    //     version: 0
75272
    //     numSubtables: 1
75273
    //     tables: [
75274
    //         platformID: 1
75275
    //         encodingID: 0
75276
    //         table: cmapTable
75277
    //     ]
75278
    // TODO: subset prep, cvt, fpgm?
75279
75280
    Directory.encode(stream, {
75281
      tables: {
75282
        head: head,
75283
        hhea: hhea,
75284
        loca: this.loca,
75285
        maxp: maxp,
75286
        'cvt ': this.font['cvt '],
75287
        prep: this.font.prep,
75288
        glyf: this.glyf,
75289
        hmtx: this.hmtx,
75290
        fpgm: this.font.fpgm // name: clone @font.name
75291
        // 'OS/2': clone @font['OS/2']
75292
        // post: clone @font.post
75293
        // cmap: cmap
75294
      }
75295
    });
75296
  };
75297
  return TTFSubset;
75298
}(Subset);
75299
var CFFSubset = /*#__PURE__*/function (_Subset2) {
75300
  _inheritsLoose(CFFSubset, _Subset2);
75301
  function CFFSubset(font) {
75302
    var _this13;
75303
    _this13 = _Subset2.call(this, font) || this;
75304
    _this13.cff = _this13.font['CFF '];
75305
    if (!_this13.cff) {
75306
      throw new Error('Not a CFF Font');
75307
    }
75308
    return _this13;
75309
  }
75310
  var _proto42 = CFFSubset.prototype;
75311
  _proto42.subsetCharstrings = function subsetCharstrings() {
75312
    this.charstrings = [];
75313
    var gsubrs = {};
75314
    for (var _iterator73 = _createForOfIteratorHelperLoose(this.glyphs), _step73; !(_step73 = _iterator73()).done;) {
75315
      var gid = _step73.value;
75316
      this.charstrings.push(this.cff.getCharString(gid));
75317
      var glyph = this.font.getGlyph(gid);
75318
      var path = glyph.path; // this causes the glyph to be parsed
75319
75320
      for (var subr in glyph._usedGsubrs) {
75321
        gsubrs[subr] = true;
75322
      }
75323
    }
75324
    this.gsubrs = this.subsetSubrs(this.cff.globalSubrIndex, gsubrs);
75325
  };
75326
  _proto42.subsetSubrs = function subsetSubrs(subrs, used) {
75327
    var res = [];
75328
    for (var i = 0; i < subrs.length; i++) {
75329
      var subr = subrs[i];
75330
      if (used[i]) {
75331
        this.cff.stream.pos = subr.offset;
75332
        res.push(this.cff.stream.readBuffer(subr.length));
75333
      } else {
75334
        res.push(Buffer.from([11])); // return
75335
      }
75336
    }
75337
75338
    return res;
75339
  };
75340
  _proto42.subsetFontdict = function subsetFontdict(topDict) {
75341
    topDict.FDArray = [];
75342
    topDict.FDSelect = {
75343
      version: 0,
75344
      fds: []
75345
    };
75346
    var used_fds = {};
75347
    var used_subrs = [];
75348
    var fd_select = {};
75349
    for (var _iterator74 = _createForOfIteratorHelperLoose(this.glyphs), _step74; !(_step74 = _iterator74()).done;) {
75350
      var gid = _step74.value;
75351
      var fd = this.cff.fdForGlyph(gid);
75352
      if (fd == null) {
75353
        continue;
75354
      }
75355
      if (!used_fds[fd]) {
75356
        topDict.FDArray.push(Object.assign({}, this.cff.topDict.FDArray[fd]));
75357
        used_subrs.push({});
75358
        fd_select[fd] = topDict.FDArray.length - 1;
75359
      }
75360
      used_fds[fd] = true;
75361
      topDict.FDSelect.fds.push(fd_select[fd]);
75362
      var glyph = this.font.getGlyph(gid);
75363
      var path = glyph.path; // this causes the glyph to be parsed
75364
75365
      for (var subr in glyph._usedSubrs) {
75366
        used_subrs[fd_select[fd]][subr] = true;
75367
      }
75368
    }
75369
    for (var i = 0; i < topDict.FDArray.length; i++) {
75370
      var dict = topDict.FDArray[i];
75371
      delete dict.FontName;
75372
      if (dict.Private && dict.Private.Subrs) {
75373
        dict.Private = Object.assign({}, dict.Private);
75374
        dict.Private.Subrs = this.subsetSubrs(dict.Private.Subrs, used_subrs[i]);
75375
      }
75376
    }
75377
    return;
75378
  };
75379
  _proto42.createCIDFontdict = function createCIDFontdict(topDict) {
75380
    var used_subrs = {};
75381
    for (var _iterator75 = _createForOfIteratorHelperLoose(this.glyphs), _step75; !(_step75 = _iterator75()).done;) {
75382
      var gid = _step75.value;
75383
      var glyph = this.font.getGlyph(gid);
75384
      var path = glyph.path; // this causes the glyph to be parsed
75385
75386
      for (var subr in glyph._usedSubrs) {
75387
        used_subrs[subr] = true;
75388
      }
75389
    }
75390
    var privateDict = Object.assign({}, this.cff.topDict.Private);
75391
    if (this.cff.topDict.Private && this.cff.topDict.Private.Subrs) {
75392
      privateDict.Subrs = this.subsetSubrs(this.cff.topDict.Private.Subrs, used_subrs);
75393
    }
75394
    topDict.FDArray = [{
75395
      Private: privateDict
75396
    }];
75397
    return topDict.FDSelect = {
75398
      version: 3,
75399
      nRanges: 1,
75400
      ranges: [{
75401
        first: 0,
75402
        fd: 0
75403
      }],
75404
      sentinel: this.charstrings.length
75405
    };
75406
  };
75407
  _proto42.addString = function addString(string) {
75408
    if (!string) {
75409
      return null;
75410
    }
75411
    if (!this.strings) {
75412
      this.strings = [];
75413
    }
75414
    this.strings.push(string);
75415
    return standardStrings.length + this.strings.length - 1;
75416
  };
75417
  _proto42.encode = function encode(stream) {
75418
    this.subsetCharstrings();
75419
    var charset = {
75420
      version: this.charstrings.length > 255 ? 2 : 1,
75421
      ranges: [{
75422
        first: 1,
75423
        nLeft: this.charstrings.length - 2
75424
      }]
75425
    };
75426
    var topDict = Object.assign({}, this.cff.topDict);
75427
    topDict.Private = null;
75428
    topDict.charset = charset;
75429
    topDict.Encoding = null;
75430
    topDict.CharStrings = this.charstrings;
75431
    for (var _i24 = 0, _arr2 = ['version', 'Notice', 'Copyright', 'FullName', 'FamilyName', 'Weight', 'PostScript', 'BaseFontName', 'FontName']; _i24 < _arr2.length; _i24++) {
75432
      var key = _arr2[_i24];
75433
      topDict[key] = this.addString(this.cff.string(topDict[key]));
75434
    }
75435
    topDict.ROS = [this.addString('Adobe'), this.addString('Identity'), 0];
75436
    topDict.CIDCount = this.charstrings.length;
75437
    if (this.cff.isCIDFont) {
75438
      this.subsetFontdict(topDict);
75439
    } else {
75440
      this.createCIDFontdict(topDict);
75441
    }
75442
    var top = {
75443
      version: 1,
75444
      hdrSize: this.cff.hdrSize,
75445
      offSize: 4,
75446
      header: this.cff.header,
75447
      nameIndex: [this.cff.postscriptName],
75448
      topDictIndex: [topDict],
75449
      stringIndex: this.strings,
75450
      globalSubrIndex: this.gsubrs
75451
    };
75452
    CFFTop.encode(stream, top);
75453
  };
75454
  return CFFSubset;
75455
}(Subset);
75456
var _class$4;
75457
/**
75458
 * This is the base class for all SFNT-based font formats in fontkit.
75459
 * It supports TrueType, and PostScript glyphs, and several color glyph formats.
75460
 */
75461
75462
var TTFFont = (_class$4 = /*#__PURE__*/function () {
75463
  TTFFont.probe = function probe(buffer) {
75464
    var format = buffer.toString('ascii', 0, 4);
75465
    return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);
75466
  };
75467
  function TTFFont(stream, variationCoords) {
75468
    if (variationCoords === void 0) {
75469
      variationCoords = null;
75470
    }
75471
    this.defaultLanguage = null;
75472
    this.stream = stream;
75473
    this.variationCoords = variationCoords;
75474
    this._directoryPos = this.stream.pos;
75475
    this._tables = {};
75476
    this._glyphs = {};
75477
    this._decodeDirectory(); // define properties for each table to lazily parse
75478
75479
    for (var tag in this.directory.tables) {
75480
      var table = this.directory.tables[tag];
75481
      if (tables[tag] && table.length > 0) {
75482
        Object.defineProperty(this, tag, {
75483
          get: this._getTable.bind(this, table)
75484
        });
75485
      }
75486
    }
75487
  }
75488
  var _proto43 = TTFFont.prototype;
75489
  _proto43.setDefaultLanguage = function setDefaultLanguage(lang) {
75490
    if (lang === void 0) {
75491
      lang = null;
75492
    }
75493
    this.defaultLanguage = lang;
75494
  };
75495
  _proto43._getTable = function _getTable(table) {
75496
    if (!(table.tag in this._tables)) {
75497
      try {
75498
        this._tables[table.tag] = this._decodeTable(table);
75499
      } catch (e) {
75500
        if (fontkit.logErrors) {
75501
          console.error("Error decoding table ".concat(table.tag));
75502
          console.error(e.stack);
75503
        }
75504
      }
75505
    }
75506
    return this._tables[table.tag];
75507
  };
75508
  _proto43._getTableStream = function _getTableStream(tag) {
75509
    var table = this.directory.tables[tag];
75510
    if (table) {
75511
      this.stream.pos = table.offset;
75512
      return this.stream;
75513
    }
75514
    return null;
75515
  };
75516
  _proto43._decodeDirectory = function _decodeDirectory() {
75517
    return this.directory = Directory.decode(this.stream, {
75518
      _startOffset: 0
75519
    });
75520
  };
75521
  _proto43._decodeTable = function _decodeTable(table) {
75522
    var pos = this.stream.pos;
75523
    var stream = this._getTableStream(table.tag);
75524
    var result = tables[table.tag].decode(stream, this, table.length);
75525
    this.stream.pos = pos;
75526
    return result;
75527
  }
75528
  /**
75529
   * Gets a string from the font's `name` table
75530
   * `lang` is a BCP-47 language code.
75531
   * @return {string}
75532
   */;
75533
  _proto43.getName = function getName(key, lang) {
75534
    if (lang === void 0) {
75535
      lang = this.defaultLanguage || fontkit.defaultLanguage;
75536
    }
75537
    var record = this.name && this.name.records[key];
75538
    if (record) {
75539
      // Attempt to retrieve the entry, depending on which translation is available:
75540
      return record[lang] || record[this.defaultLanguage] || record[fontkit.defaultLanguage] || record['en'] || record[Object.keys(record)[0]] // Seriously, ANY language would be fine
75541
      || null;
75542
    }
75543
    return null;
75544
  }
75545
  /**
75546
   * The unique PostScript name for this font, e.g. "Helvetica-Bold"
75547
   * @type {string}
75548
   */;
75549
  /**
75550
   * Returns whether there is glyph in the font for the given unicode code point.
75551
   *
75552
   * @param {number} codePoint
75553
   * @return {boolean}
75554
   */
75555
  _proto43.hasGlyphForCodePoint = function hasGlyphForCodePoint(codePoint) {
75556
    return !!this._cmapProcessor.lookup(codePoint);
75557
  }
75558
  /**
75559
   * Maps a single unicode code point to a Glyph object.
75560
   * Does not perform any advanced substitutions (there is no context to do so).
75561
   *
75562
   * @param {number} codePoint
75563
   * @return {Glyph}
75564
   */;
75565
  _proto43.glyphForCodePoint = function glyphForCodePoint(codePoint) {
75566
    return this.getGlyph(this._cmapProcessor.lookup(codePoint), [codePoint]);
75567
  }
75568
  /**
75569
   * Returns an array of Glyph objects for the given string.
75570
   * This is only a one-to-one mapping from characters to glyphs.
75571
   * For most uses, you should use font.layout (described below), which
75572
   * provides a much more advanced mapping supporting AAT and OpenType shaping.
75573
   *
75574
   * @param {string} string
75575
   * @return {Glyph[]}
75576
   */;
75577
  _proto43.glyphsForString = function glyphsForString(string) {
75578
    var glyphs = [];
75579
    var len = string.length;
75580
    var idx = 0;
75581
    var last = -1;
75582
    var state = -1;
75583
    while (idx <= len) {
75584
      var code = 0;
75585
      var nextState = 0;
75586
      if (idx < len) {
75587
        // Decode the next codepoint from UTF 16
75588
        code = string.charCodeAt(idx++);
75589
        if (0xd800 <= code && code <= 0xdbff && idx < len) {
75590
          var next = string.charCodeAt(idx);
75591
          if (0xdc00 <= next && next <= 0xdfff) {
75592
            idx++;
75593
            code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;
75594
          }
75595
        } // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.
75596
75597
        nextState = 0xfe00 <= code && code <= 0xfe0f || 0xe0100 <= code && code <= 0xe01ef ? 1 : 0;
75598
      } else {
75599
        idx++;
75600
      }
75601
      if (state === 0 && nextState === 1) {
75602
        // Variation selector following normal codepoint.
75603
        glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [last, code]));
75604
      } else if (state === 0 && nextState === 0) {
75605
        // Normal codepoint following normal codepoint.
75606
        glyphs.push(this.glyphForCodePoint(last));
75607
      }
75608
      last = code;
75609
      state = nextState;
75610
    }
75611
    return glyphs;
75612
  };
75613
  /**
75614
   * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.
75615
   *
75616
   * @param {string} string
75617
   * @param {string[]} [userFeatures]
75618
   * @param {string} [script]
75619
   * @param {string} [language]
75620
   * @param {string} [direction]
75621
   * @return {GlyphRun}
75622
   */
75623
  _proto43.layout = function layout(string, userFeatures, script, language, direction) {
75624
    return this._layoutEngine.layout(string, userFeatures, script, language, direction);
75625
  }
75626
  /**
75627
   * Returns an array of strings that map to the given glyph id.
75628
   * @param {number} gid - glyph id
75629
   */;
75630
  _proto43.stringsForGlyph = function stringsForGlyph(gid) {
75631
    return this._layoutEngine.stringsForGlyph(gid);
75632
  }
75633
  /**
75634
   * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)
75635
   * (or mapped AAT tags) supported by the font.
75636
   * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.
75637
   * If this is an AAT font, the OpenType feature tags are mapped to AAT features.
75638
   *
75639
   * @type {string[]}
75640
   */;
75641
  _proto43.getAvailableFeatures = function getAvailableFeatures(script, language) {
75642
    return this._layoutEngine.getAvailableFeatures(script, language);
75643
  };
75644
  _proto43._getBaseGlyph = function _getBaseGlyph(glyph, characters) {
75645
    if (characters === void 0) {
75646
      characters = [];
75647
    }
75648
    if (!this._glyphs[glyph]) {
75649
      if (this.directory.tables.glyf) {
75650
        this._glyphs[glyph] = new TTFGlyph(glyph, characters, this);
75651
      } else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) {
75652
        this._glyphs[glyph] = new CFFGlyph(glyph, characters, this);
75653
      }
75654
    }
75655
    return this._glyphs[glyph] || null;
75656
  }
75657
  /**
75658
   * Returns a glyph object for the given glyph id.
75659
   * You can pass the array of code points this glyph represents for
75660
   * your use later, and it will be stored in the glyph object.
75661
   *
75662
   * @param {number} glyph
75663
   * @param {number[]} characters
75664
   * @return {Glyph}
75665
   */;
75666
  _proto43.getGlyph = function getGlyph(glyph, characters) {
75667
    if (characters === void 0) {
75668
      characters = [];
75669
    }
75670
    if (!this._glyphs[glyph]) {
75671
      if (this.directory.tables.sbix) {
75672
        this._glyphs[glyph] = new SBIXGlyph(glyph, characters, this);
75673
      } else if (this.directory.tables.COLR && this.directory.tables.CPAL) {
75674
        this._glyphs[glyph] = new COLRGlyph(glyph, characters, this);
75675
      } else {
75676
        this._getBaseGlyph(glyph, characters);
75677
      }
75678
    }
75679
    return this._glyphs[glyph] || null;
75680
  }
75681
  /**
75682
   * Returns a Subset for this font.
75683
   * @return {Subset}
75684
   */;
75685
  _proto43.createSubset = function createSubset() {
75686
    if (this.directory.tables['CFF ']) {
75687
      return new CFFSubset(this);
75688
    }
75689
    return new TTFSubset(this);
75690
  }
75691
  /**
75692
   * Returns an object describing the available variation axes
75693
   * that this font supports. Keys are setting tags, and values
75694
   * contain the axis name, range, and default value.
75695
   *
75696
   * @type {object}
75697
   */;
75698
  /**
75699
   * Returns a new font with the given variation settings applied.
75700
   * Settings can either be an instance name, or an object containing
75701
   * variation tags as specified by the `variationAxes` property.
75702
   *
75703
   * @param {object} settings
75704
   * @return {TTFFont}
75705
   */
75706
  _proto43.getVariation = function getVariation(settings) {
75707
    if (!(this.directory.tables.fvar && (this.directory.tables.gvar && this.directory.tables.glyf || this.directory.tables.CFF2))) {
75708
      throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');
75709
    }
75710
    if (typeof settings === 'string') {
75711
      settings = this.namedVariations[settings];
75712
    }
75713
    if (typeof settings !== 'object') {
75714
      throw new Error('Variation settings must be either a variation name or settings object.');
75715
    } // normalize the coordinates
75716
75717
    var coords = this.fvar.axis.map(function (axis, i) {
75718
      var axisTag = axis.axisTag.trim();
75719
      if (axisTag in settings) {
75720
        return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));
75721
      } else {
75722
        return axis.defaultValue;
75723
      }
75724
    });
75725
    var stream = new r.DecodeStream(this.stream.buffer);
75726
    stream.pos = this._directoryPos;
75727
    var font = new TTFFont(stream, coords);
75728
    font._tables = this._tables;
75729
    return font;
75730
  };
75731
  // Standardized format plugin API
75732
  _proto43.getFont = function getFont(name) {
75733
    return this.getVariation(name);
75734
  };
75735
  _createClass(TTFFont, [{
75736
    key: "postscriptName",
75737
    get: function get() {
75738
      return this.getName('postscriptName');
75739
    }
75740
    /**
75741
     * The font's full name, e.g. "Helvetica Bold"
75742
     * @type {string}
75743
     */
75744
  }, {
75745
    key: "fullName",
75746
    get: function get() {
75747
      return this.getName('fullName');
75748
    }
75749
    /**
75750
     * The font's family name, e.g. "Helvetica"
75751
     * @type {string}
75752
     */
75753
  }, {
75754
    key: "familyName",
75755
    get: function get() {
75756
      return this.getName('fontFamily');
75757
    }
75758
    /**
75759
     * The font's sub-family, e.g. "Bold".
75760
     * @type {string}
75761
     */
75762
  }, {
75763
    key: "subfamilyName",
75764
    get: function get() {
75765
      return this.getName('fontSubfamily');
75766
    }
75767
    /**
75768
     * The font's copyright information
75769
     * @type {string}
75770
     */
75771
  }, {
75772
    key: "copyright",
75773
    get: function get() {
75774
      return this.getName('copyright');
75775
    }
75776
    /**
75777
     * The font's version number
75778
     * @type {string}
75779
     */
75780
  }, {
75781
    key: "version",
75782
    get: function get() {
75783
      return this.getName('version');
75784
    }
75785
    /**
75786
     * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))
75787
     * @type {number}
75788
     */
75789
  }, {
75790
    key: "ascent",
75791
    get: function get() {
75792
      return this.hhea.ascent;
75793
    }
75794
    /**
75795
     * The font’s [descender](https://en.wikipedia.org/wiki/Descender)
75796
     * @type {number}
75797
     */
75798
  }, {
75799
    key: "descent",
75800
    get: function get() {
75801
      return this.hhea.descent;
75802
    }
75803
    /**
75804
     * The amount of space that should be included between lines
75805
     * @type {number}
75806
     */
75807
  }, {
75808
    key: "lineGap",
75809
    get: function get() {
75810
      return this.hhea.lineGap;
75811
    }
75812
    /**
75813
     * The offset from the normal underline position that should be used
75814
     * @type {number}
75815
     */
75816
  }, {
75817
    key: "underlinePosition",
75818
    get: function get() {
75819
      return this.post.underlinePosition;
75820
    }
75821
    /**
75822
     * The weight of the underline that should be used
75823
     * @type {number}
75824
     */
75825
  }, {
75826
    key: "underlineThickness",
75827
    get: function get() {
75828
      return this.post.underlineThickness;
75829
    }
75830
    /**
75831
     * If this is an italic font, the angle the cursor should be drawn at to match the font design
75832
     * @type {number}
75833
     */
75834
  }, {
75835
    key: "italicAngle",
75836
    get: function get() {
75837
      return this.post.italicAngle;
75838
    }
75839
    /**
75840
     * The height of capital letters above the baseline.
75841
     * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.
75842
     * @type {number}
75843
     */
75844
  }, {
75845
    key: "capHeight",
75846
    get: function get() {
75847
      var os2 = this['OS/2'];
75848
      return os2 ? os2.capHeight : this.ascent;
75849
    }
75850
    /**
75851
     * The height of lower case letters in the font.
75852
     * See [here](https://en.wikipedia.org/wiki/X-height) for more details.
75853
     * @type {number}
75854
     */
75855
  }, {
75856
    key: "xHeight",
75857
    get: function get() {
75858
      var os2 = this['OS/2'];
75859
      return os2 ? os2.xHeight : 0;
75860
    }
75861
    /**
75862
     * The number of glyphs in the font.
75863
     * @type {number}
75864
     */
75865
  }, {
75866
    key: "numGlyphs",
75867
    get: function get() {
75868
      return this.maxp.numGlyphs;
75869
    }
75870
    /**
75871
     * The size of the font’s internal coordinate grid
75872
     * @type {number}
75873
     */
75874
  }, {
75875
    key: "unitsPerEm",
75876
    get: function get() {
75877
      return this.head.unitsPerEm;
75878
    }
75879
    /**
75880
     * The font’s bounding box, i.e. the box that encloses all glyphs in the font.
75881
     * @type {BBox}
75882
     */
75883
  }, {
75884
    key: "bbox",
75885
    get: function get() {
75886
      return Object.freeze(new BBox(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));
75887
    }
75888
  }, {
75889
    key: "_cmapProcessor",
75890
    get: function get() {
75891
      return new CmapProcessor(this.cmap);
75892
    }
75893
    /**
75894
     * An array of all of the unicode code points supported by the font.
75895
     * @type {number[]}
75896
     */
75897
  }, {
75898
    key: "characterSet",
75899
    get: function get() {
75900
      return this._cmapProcessor.getCharacterSet();
75901
    }
75902
  }, {
75903
    key: "_layoutEngine",
75904
    get: function get() {
75905
      return new LayoutEngine(this);
75906
    }
75907
  }, {
75908
    key: "availableFeatures",
75909
    get: function get() {
75910
      return this._layoutEngine.getAvailableFeatures();
75911
    }
75912
  }, {
75913
    key: "variationAxes",
75914
    get: function get() {
75915
      var res = {};
75916
      if (!this.fvar) {
75917
        return res;
75918
      }
75919
      for (var _iterator76 = _createForOfIteratorHelperLoose(this.fvar.axis), _step76; !(_step76 = _iterator76()).done;) {
75920
        var axis = _step76.value;
75921
        res[axis.axisTag.trim()] = {
75922
          name: axis.name.en,
75923
          min: axis.minValue,
75924
          default: axis.defaultValue,
75925
          max: axis.maxValue
75926
        };
75927
      }
75928
      return res;
75929
    }
75930
    /**
75931
     * Returns an object describing the named variation instances
75932
     * that the font designer has specified. Keys are variation names
75933
     * and values are the variation settings for this instance.
75934
     *
75935
     * @type {object}
75936
     */
75937
  }, {
75938
    key: "namedVariations",
75939
    get: function get() {
75940
      var res = {};
75941
      if (!this.fvar) {
75942
        return res;
75943
      }
75944
      for (var _iterator77 = _createForOfIteratorHelperLoose(this.fvar.instance), _step77; !(_step77 = _iterator77()).done;) {
75945
        var instance = _step77.value;
75946
        var settings = {};
75947
        for (var i = 0; i < this.fvar.axis.length; i++) {
75948
          var axis = this.fvar.axis[i];
75949
          settings[axis.axisTag.trim()] = instance.coord[i];
75950
        }
75951
        res[instance.name.en] = settings;
75952
      }
75953
      return res;
75954
    }
75955
  }, {
75956
    key: "_variationProcessor",
75957
    get: function get() {
75958
      if (!this.fvar) {
75959
        return null;
75960
      }
75961
      var variationCoords = this.variationCoords; // Ignore if no variation coords and not CFF2
75962
75963
      if (!variationCoords && !this.CFF2) {
75964
        return null;
75965
      }
75966
      if (!variationCoords) {
75967
        variationCoords = this.fvar.axis.map(function (axis) {
75968
          return axis.defaultValue;
75969
        });
75970
      }
75971
      return new GlyphVariationProcessor(this, variationCoords);
75972
    }
75973
  }]);
75974
  return TTFFont;
75975
}(), (_applyDecoratedDescriptor(_class$4.prototype, "bbox", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "bbox"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, "_cmapProcessor", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "_cmapProcessor"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, "characterSet", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "characterSet"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, "_layoutEngine", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "_layoutEngine"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, "variationAxes", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "variationAxes"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, "namedVariations", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "namedVariations"), _class$4.prototype), _applyDecoratedDescriptor(_class$4.prototype, "_variationProcessor", [cache], Object.getOwnPropertyDescriptor(_class$4.prototype, "_variationProcessor"), _class$4.prototype)), _class$4);
75976
var WOFFDirectoryEntry = new r.Struct({
75977
  tag: new r.String(4),
75978
  offset: new r.Pointer(r.uint32, 'void', {
75979
    type: 'global'
75980
  }),
75981
  compLength: r.uint32,
75982
  length: r.uint32,
75983
  origChecksum: r.uint32
75984
});
75985
var WOFFDirectory = new r.Struct({
75986
  tag: new r.String(4),
75987
  // should be 'wOFF'
75988
  flavor: r.uint32,
75989
  length: r.uint32,
75990
  numTables: r.uint16,
75991
  reserved: new r.Reserved(r.uint16),
75992
  totalSfntSize: r.uint32,
75993
  majorVersion: r.uint16,
75994
  minorVersion: r.uint16,
75995
  metaOffset: r.uint32,
75996
  metaLength: r.uint32,
75997
  metaOrigLength: r.uint32,
75998
  privOffset: r.uint32,
75999
  privLength: r.uint32,
76000
  tables: new r.Array(WOFFDirectoryEntry, 'numTables')
76001
});
76002
WOFFDirectory.process = function () {
76003
  var tables = {};
76004
  for (var _iterator78 = _createForOfIteratorHelperLoose(this.tables), _step78; !(_step78 = _iterator78()).done;) {
76005
    var table = _step78.value;
76006
    tables[table.tag] = table;
76007
  }
76008
  this.tables = tables;
76009
};
76010
var WOFFFont = /*#__PURE__*/function (_TTFFont) {
76011
  _inheritsLoose(WOFFFont, _TTFFont);
76012
  function WOFFFont() {
76013
    return _TTFFont.apply(this, arguments) || this;
76014
  }
76015
  WOFFFont.probe = function probe(buffer) {
76016
    return buffer.toString('ascii', 0, 4) === 'wOFF';
76017
  };
76018
  var _proto44 = WOFFFont.prototype;
76019
  _proto44._decodeDirectory = function _decodeDirectory() {
76020
    this.directory = WOFFDirectory.decode(this.stream, {
76021
      _startOffset: 0
76022
    });
76023
  };
76024
  _proto44._getTableStream = function _getTableStream(tag) {
76025
    var table = this.directory.tables[tag];
76026
    if (table) {
76027
      this.stream.pos = table.offset;
76028
      if (table.compLength < table.length) {
76029
        this.stream.pos += 2; // skip deflate header
76030
76031
        var outBuffer = Buffer.alloc(table.length);
76032
        var buf = inflate(this.stream.readBuffer(table.compLength - 2), outBuffer);
76033
        return new r.DecodeStream(buf);
76034
      } else {
76035
        return this.stream;
76036
      }
76037
    }
76038
    return null;
76039
  };
76040
  return WOFFFont;
76041
}(TTFFont);
76042
/**
76043
 * Represents a TrueType glyph in the WOFF2 format, which compresses glyphs differently.
76044
 */
76045
var WOFF2Glyph = /*#__PURE__*/function (_TTFGlyph2) {
76046
  _inheritsLoose(WOFF2Glyph, _TTFGlyph2);
76047
  function WOFF2Glyph() {
76048
    return _TTFGlyph2.apply(this, arguments) || this;
76049
  }
76050
  var _proto45 = WOFF2Glyph.prototype;
76051
  _proto45._decode = function _decode() {
76052
    // We have to decode in advance (in WOFF2Font), so just return the pre-decoded data.
76053
    return this._font._transformedGlyphs[this.id];
76054
  };
76055
  _proto45._getCBox = function _getCBox() {
76056
    return this.path.bbox;
76057
  };
76058
  return WOFF2Glyph;
76059
}(TTFGlyph);
76060
var Base128 = {
76061
  decode: function decode(stream) {
76062
    var result = 0;
76063
    var iterable = [0, 1, 2, 3, 4];
76064
    for (var j = 0; j < iterable.length; j++) {
76065
      var code = stream.readUInt8(); // If any of the top seven bits are set then we're about to overflow.
76066
76067
      if (result & 0xe0000000) {
76068
        throw new Error('Overflow');
76069
      }
76070
      result = result << 7 | code & 0x7f;
76071
      if ((code & 0x80) === 0) {
76072
        return result;
76073
      }
76074
    }
76075
    throw new Error('Bad base 128 number');
76076
  }
76077
};
76078
var knownTags = ['cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2', 'post', 'cvt ', 'fpgm', 'glyf', 'loca', 'prep', 'CFF ', 'VORG', 'EBDT', 'EBLC', 'gasp', 'hdmx', 'kern', 'LTSH', 'PCLT', 'VDMX', 'vhea', 'vmtx', 'BASE', 'GDEF', 'GPOS', 'GSUB', 'EBSC', 'JSTF', 'MATH', 'CBDT', 'CBLC', 'COLR', 'CPAL', 'SVG ', 'sbix', 'acnt', 'avar', 'bdat', 'bloc', 'bsln', 'cvar', 'fdsc', 'feat', 'fmtx', 'fvar', 'gvar', 'hsty', 'just', 'lcar', 'mort', 'morx', 'opbd', 'prop', 'trak', 'Zapf', 'Silf', 'Glat', 'Gloc', 'Feat', 'Sill'];
76079
var WOFF2DirectoryEntry = new r.Struct({
76080
  flags: r.uint8,
76081
  customTag: new r.Optional(new r.String(4), function (t) {
76082
    return (t.flags & 0x3f) === 0x3f;
76083
  }),
76084
  tag: function tag(t) {
76085
    return t.customTag || knownTags[t.flags & 0x3f];
76086
  },
76087
  // || (() => { throw new Error(`Bad tag: ${flags & 0x3f}`); })(); },
76088
  length: Base128,
76089
  transformVersion: function transformVersion(t) {
76090
    return t.flags >>> 6 & 0x03;
76091
  },
76092
  transformed: function transformed(t) {
76093
    return t.tag === 'glyf' || t.tag === 'loca' ? t.transformVersion === 0 : t.transformVersion !== 0;
76094
  },
76095
  transformLength: new r.Optional(Base128, function (t) {
76096
    return t.transformed;
76097
  })
76098
});
76099
var WOFF2Directory = new r.Struct({
76100
  tag: new r.String(4),
76101
  // should be 'wOF2'
76102
  flavor: r.uint32,
76103
  length: r.uint32,
76104
  numTables: r.uint16,
76105
  reserved: new r.Reserved(r.uint16),
76106
  totalSfntSize: r.uint32,
76107
  totalCompressedSize: r.uint32,
76108
  majorVersion: r.uint16,
76109
  minorVersion: r.uint16,
76110
  metaOffset: r.uint32,
76111
  metaLength: r.uint32,
76112
  metaOrigLength: r.uint32,
76113
  privOffset: r.uint32,
76114
  privLength: r.uint32,
76115
  tables: new r.Array(WOFF2DirectoryEntry, 'numTables')
76116
});
76117
WOFF2Directory.process = function () {
76118
  var tables = {};
76119
  for (var i = 0; i < this.tables.length; i++) {
76120
    var table = this.tables[i];
76121
    tables[table.tag] = table;
76122
  }
76123
  return this.tables = tables;
76124
};
76125
76126
/**
76127
 * Subclass of TTFFont that represents a TTF/OTF font compressed by WOFF2
76128
 * See spec here: http://www.w3.org/TR/WOFF2/
76129
 */
76130
var WOFF2Font = /*#__PURE__*/function (_TTFFont2) {
76131
  _inheritsLoose(WOFF2Font, _TTFFont2);
76132
  function WOFF2Font() {
76133
    return _TTFFont2.apply(this, arguments) || this;
76134
  }
76135
  WOFF2Font.probe = function probe(buffer) {
76136
    return buffer.toString('ascii', 0, 4) === 'wOF2';
76137
  };
76138
  var _proto46 = WOFF2Font.prototype;
76139
  _proto46._decodeDirectory = function _decodeDirectory() {
76140
    this.directory = WOFF2Directory.decode(this.stream);
76141
    this._dataPos = this.stream.pos;
76142
  };
76143
  _proto46._decompress = function _decompress() {
76144
    // decompress data and setup table offsets if we haven't already
76145
    if (!this._decompressed) {
76146
      this.stream.pos = this._dataPos;
76147
      var buffer = this.stream.readBuffer(this.directory.totalCompressedSize);
76148
      var decompressedSize = 0;
76149
      for (var tag in this.directory.tables) {
76150
        var entry = this.directory.tables[tag];
76151
        entry.offset = decompressedSize;
76152
        decompressedSize += entry.transformLength != null ? entry.transformLength : entry.length;
76153
      }
76154
      var decompressed = brotli(buffer, decompressedSize);
76155
      if (!decompressed) {
76156
        throw new Error('Error decoding compressed data in WOFF2');
76157
      }
76158
      this.stream = new r.DecodeStream(Buffer.from(decompressed));
76159
      this._decompressed = true;
76160
    }
76161
  };
76162
  _proto46._decodeTable = function _decodeTable(table) {
76163
    this._decompress();
76164
    return _TTFFont2.prototype._decodeTable.call(this, table);
76165
  } // Override this method to get a glyph and return our
76166
  // custom subclass if there is a glyf table.
76167
  ;
76168
  _proto46._getBaseGlyph = function _getBaseGlyph(glyph, characters) {
76169
    if (characters === void 0) {
76170
      characters = [];
76171
    }
76172
    if (!this._glyphs[glyph]) {
76173
      if (this.directory.tables.glyf && this.directory.tables.glyf.transformed) {
76174
        if (!this._transformedGlyphs) {
76175
          this._transformGlyfTable();
76176
        }
76177
        return this._glyphs[glyph] = new WOFF2Glyph(glyph, characters, this);
76178
      } else {
76179
        return _TTFFont2.prototype._getBaseGlyph.call(this, glyph, characters);
76180
      }
76181
    }
76182
  };
76183
  _proto46._transformGlyfTable = function _transformGlyfTable() {
76184
    this._decompress();
76185
    this.stream.pos = this.directory.tables.glyf.offset;
76186
    var table = GlyfTable.decode(this.stream);
76187
    var glyphs = [];
76188
    for (var index = 0; index < table.numGlyphs; index++) {
76189
      var glyph = {};
76190
      var nContours = table.nContours.readInt16BE();
76191
      glyph.numberOfContours = nContours;
76192
      if (nContours > 0) {
76193
        // simple glyph
76194
        var nPoints = [];
76195
        var totalPoints = 0;
76196
        for (var i = 0; i < nContours; i++) {
76197
          var _r = read255UInt16(table.nPoints);
76198
          totalPoints += _r;
76199
          nPoints.push(totalPoints);
76200
        }
76201
        glyph.points = decodeTriplet(table.flags, table.glyphs, totalPoints);
76202
        for (var _i = 0; _i < nContours; _i++) {
76203
          glyph.points[nPoints[_i] - 1].endContour = true;
76204
        }
76205
        var instructionSize = read255UInt16(table.glyphs);
76206
      } else if (nContours < 0) {
76207
        // composite glyph
76208
        var haveInstructions = TTFGlyph.prototype._decodeComposite.call({
76209
          _font: this
76210
        }, glyph, table.composites);
76211
        if (haveInstructions) {
76212
          var instructionSize = read255UInt16(table.glyphs);
76213
        }
76214
      }
76215
      glyphs.push(glyph);
76216
    }
76217
    this._transformedGlyphs = glyphs;
76218
  };
76219
  return WOFF2Font;
76220
}(TTFFont); // Special class that accepts a length and returns a sub-stream for that data
76221
var Substream = /*#__PURE__*/function () {
76222
  function Substream(length) {
76223
    this.length = length;
76224
    this._buf = new r.Buffer(length);
76225
  }
76226
  var _proto47 = Substream.prototype;
76227
  _proto47.decode = function decode(stream, parent) {
76228
    return new r.DecodeStream(this._buf.decode(stream, parent));
76229
  };
76230
  return Substream;
76231
}(); // This struct represents the entire glyf table
76232
var GlyfTable = new r.Struct({
76233
  version: r.uint32,
76234
  numGlyphs: r.uint16,
76235
  indexFormat: r.uint16,
76236
  nContourStreamSize: r.uint32,
76237
  nPointsStreamSize: r.uint32,
76238
  flagStreamSize: r.uint32,
76239
  glyphStreamSize: r.uint32,
76240
  compositeStreamSize: r.uint32,
76241
  bboxStreamSize: r.uint32,
76242
  instructionStreamSize: r.uint32,
76243
  nContours: new Substream('nContourStreamSize'),
76244
  nPoints: new Substream('nPointsStreamSize'),
76245
  flags: new Substream('flagStreamSize'),
76246
  glyphs: new Substream('glyphStreamSize'),
76247
  composites: new Substream('compositeStreamSize'),
76248
  bboxes: new Substream('bboxStreamSize'),
76249
  instructions: new Substream('instructionStreamSize')
76250
});
76251
var WORD_CODE = 253;
76252
var ONE_MORE_BYTE_CODE2 = 254;
76253
var ONE_MORE_BYTE_CODE1 = 255;
76254
var LOWEST_U_CODE = 253;
76255
function read255UInt16(stream) {
76256
  var code = stream.readUInt8();
76257
  if (code === WORD_CODE) {
76258
    return stream.readUInt16BE();
76259
  }
76260
  if (code === ONE_MORE_BYTE_CODE1) {
76261
    return stream.readUInt8() + LOWEST_U_CODE;
76262
  }
76263
  if (code === ONE_MORE_BYTE_CODE2) {
76264
    return stream.readUInt8() + LOWEST_U_CODE * 2;
76265
  }
76266
  return code;
76267
}
76268
function withSign(flag, baseval) {
76269
  return flag & 1 ? baseval : -baseval;
76270
}
76271
function decodeTriplet(flags, glyphs, nPoints) {
76272
  var y;
76273
  var x = y = 0;
76274
  var res = [];
76275
  for (var i = 0; i < nPoints; i++) {
76276
    var dx = 0,
76277
      dy = 0;
76278
    var flag = flags.readUInt8();
76279
    var onCurve = !(flag >> 7);
76280
    flag &= 0x7f;
76281
    if (flag < 10) {
76282
      dx = 0;
76283
      dy = withSign(flag, ((flag & 14) << 7) + glyphs.readUInt8());
76284
    } else if (flag < 20) {
76285
      dx = withSign(flag, ((flag - 10 & 14) << 7) + glyphs.readUInt8());
76286
      dy = 0;
76287
    } else if (flag < 84) {
76288
      var b0 = flag - 20;
76289
      var b1 = glyphs.readUInt8();
76290
      dx = withSign(flag, 1 + (b0 & 0x30) + (b1 >> 4));
76291
      dy = withSign(flag >> 1, 1 + ((b0 & 0x0c) << 2) + (b1 & 0x0f));
76292
    } else if (flag < 120) {
76293
      var b0 = flag - 84;
76294
      dx = withSign(flag, 1 + (b0 / 12 << 8) + glyphs.readUInt8());
76295
      dy = withSign(flag >> 1, 1 + (b0 % 12 >> 2 << 8) + glyphs.readUInt8());
76296
    } else if (flag < 124) {
76297
      var b1 = glyphs.readUInt8();
76298
      var b2 = glyphs.readUInt8();
76299
      dx = withSign(flag, (b1 << 4) + (b2 >> 4));
76300
      dy = withSign(flag >> 1, ((b2 & 0x0f) << 8) + glyphs.readUInt8());
76301
    } else {
76302
      dx = withSign(flag, glyphs.readUInt16BE());
76303
      dy = withSign(flag >> 1, glyphs.readUInt16BE());
76304
    }
76305
    x += dx;
76306
    y += dy;
76307
    res.push(new Point(onCurve, false, x, y));
76308
  }
76309
  return res;
76310
}
76311
var TTCHeader = new r.VersionedStruct(r.uint32, {
76312
  0x00010000: {
76313
    numFonts: r.uint32,
76314
    offsets: new r.Array(r.uint32, 'numFonts')
76315
  },
76316
  0x00020000: {
76317
    numFonts: r.uint32,
76318
    offsets: new r.Array(r.uint32, 'numFonts'),
76319
    dsigTag: r.uint32,
76320
    dsigLength: r.uint32,
76321
    dsigOffset: r.uint32
76322
  }
76323
});
76324
var TrueTypeCollection = /*#__PURE__*/function () {
76325
  TrueTypeCollection.probe = function probe(buffer) {
76326
    return buffer.toString('ascii', 0, 4) === 'ttcf';
76327
  };
76328
  function TrueTypeCollection(stream) {
76329
    this.stream = stream;
76330
    if (stream.readString(4) !== 'ttcf') {
76331
      throw new Error('Not a TrueType collection');
76332
    }
76333
    this.header = TTCHeader.decode(stream);
76334
  }
76335
  var _proto48 = TrueTypeCollection.prototype;
76336
  _proto48.getFont = function getFont(name) {
76337
    for (var _iterator79 = _createForOfIteratorHelperLoose(this.header.offsets), _step79; !(_step79 = _iterator79()).done;) {
76338
      var offset = _step79.value;
76339
      var stream = new r.DecodeStream(this.stream.buffer);
76340
      stream.pos = offset;
76341
      var font = new TTFFont(stream);
76342
      if (font.postscriptName === name) {
76343
        return font;
76344
      }
76345
    }
76346
    return null;
76347
  };
76348
  _createClass(TrueTypeCollection, [{
76349
    key: "fonts",
76350
    get: function get() {
76351
      var fonts = [];
76352
      for (var _iterator80 = _createForOfIteratorHelperLoose(this.header.offsets), _step80; !(_step80 = _iterator80()).done;) {
76353
        var offset = _step80.value;
76354
        var stream = new r.DecodeStream(this.stream.buffer);
76355
        stream.pos = offset;
76356
        fonts.push(new TTFFont(stream));
76357
      }
76358
      return fonts;
76359
    }
76360
  }]);
76361
  return TrueTypeCollection;
76362
}();
76363
var DFontName = new r.String(r.uint8);
76364
var DFontData = new r.Struct({
76365
  len: r.uint32,
76366
  buf: new r.Buffer('len')
76367
});
76368
var Ref = new r.Struct({
76369
  id: r.uint16,
76370
  nameOffset: r.int16,
76371
  attr: r.uint8,
76372
  dataOffset: r.uint24,
76373
  handle: r.uint32
76374
});
76375
var Type = new r.Struct({
76376
  name: new r.String(4),
76377
  maxTypeIndex: r.uint16,
76378
  refList: new r.Pointer(r.uint16, new r.Array(Ref, function (t) {
76379
    return t.maxTypeIndex + 1;
76380
  }), {
76381
    type: 'parent'
76382
  })
76383
});
76384
var TypeList = new r.Struct({
76385
  length: r.uint16,
76386
  types: new r.Array(Type, function (t) {
76387
    return t.length + 1;
76388
  })
76389
});
76390
var DFontMap = new r.Struct({
76391
  reserved: new r.Reserved(r.uint8, 24),
76392
  typeList: new r.Pointer(r.uint16, TypeList),
76393
  nameListOffset: new r.Pointer(r.uint16, 'void')
76394
});
76395
var DFontHeader = new r.Struct({
76396
  dataOffset: r.uint32,
76397
  map: new r.Pointer(r.uint32, DFontMap),
76398
  dataLength: r.uint32,
76399
  mapLength: r.uint32
76400
});
76401
var DFont = /*#__PURE__*/function () {
76402
  DFont.probe = function probe(buffer) {
76403
    var stream = new r.DecodeStream(buffer);
76404
    try {
76405
      var header = DFontHeader.decode(stream);
76406
    } catch (e) {
76407
      return false;
76408
    }
76409
    for (var _iterator81 = _createForOfIteratorHelperLoose(header.map.typeList.types), _step81; !(_step81 = _iterator81()).done;) {
76410
      var type = _step81.value;
76411
      if (type.name === 'sfnt') {
76412
        return true;
76413
      }
76414
    }
76415
    return false;
76416
  };
76417
  function DFont(stream) {
76418
    this.stream = stream;
76419
    this.header = DFontHeader.decode(this.stream);
76420
    for (var _iterator82 = _createForOfIteratorHelperLoose(this.header.map.typeList.types), _step82; !(_step82 = _iterator82()).done;) {
76421
      var type = _step82.value;
76422
      for (var _iterator83 = _createForOfIteratorHelperLoose(type.refList), _step83; !(_step83 = _iterator83()).done;) {
76423
        var ref = _step83.value;
76424
        if (ref.nameOffset >= 0) {
76425
          this.stream.pos = ref.nameOffset + this.header.map.nameListOffset;
76426
          ref.name = DFontName.decode(this.stream);
76427
        } else {
76428
          ref.name = null;
76429
        }
76430
      }
76431
      if (type.name === 'sfnt') {
76432
        this.sfnt = type;
76433
      }
76434
    }
76435
  }
76436
  var _proto49 = DFont.prototype;
76437
  _proto49.getFont = function getFont(name) {
76438
    if (!this.sfnt) {
76439
      return null;
76440
    }
76441
    for (var _iterator84 = _createForOfIteratorHelperLoose(this.sfnt.refList), _step84; !(_step84 = _iterator84()).done;) {
76442
      var ref = _step84.value;
76443
      var pos = this.header.dataOffset + ref.dataOffset + 4;
76444
      var stream = new r.DecodeStream(this.stream.buffer.slice(pos));
76445
      var font = new TTFFont(stream);
76446
      if (font.postscriptName === name) {
76447
        return font;
76448
      }
76449
    }
76450
    return null;
76451
  };
76452
  _createClass(DFont, [{
76453
    key: "fonts",
76454
    get: function get() {
76455
      var fonts = [];
76456
      for (var _iterator85 = _createForOfIteratorHelperLoose(this.sfnt.refList), _step85; !(_step85 = _iterator85()).done;) {
76457
        var ref = _step85.value;
76458
        var pos = this.header.dataOffset + ref.dataOffset + 4;
76459
        var stream = new r.DecodeStream(this.stream.buffer.slice(pos));
76460
        fonts.push(new TTFFont(stream));
76461
      }
76462
      return fonts;
76463
    }
76464
  }]);
76465
  return DFont;
76466
}();
76467
fontkit.registerFormat(TTFFont);
76468
fontkit.registerFormat(WOFFFont);
76469
fontkit.registerFormat(WOFF2Font);
76470
fontkit.registerFormat(TrueTypeCollection);
76471
fontkit.registerFormat(DFont);
76472
module.exports = fontkit;
76473
76474
/***/ }),
76475
76476
/***/ 7337:
76477
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
76478
76479
"use strict";
76480
76481
76482
var UnicodeTrie = __webpack_require__(4781);
76483
76484
var base64 = __webpack_require__(9742);
76485
var _require = __webpack_require__(2055),
76486
  BK = _require.BK,
76487
  CR = _require.CR,
76488
  LF = _require.LF,
76489
  NL = _require.NL,
76490
  SG = _require.SG,
76491
  WJ = _require.WJ,
76492
  SP = _require.SP,
76493
  ZWJ = _require.ZWJ,
76494
  BA = _require.BA,
76495
  HY = _require.HY,
76496
  NS = _require.NS,
76497
  AI = _require.AI,
76498
  AL = _require.AL,
76499
  CJ = _require.CJ,
76500
  HL = _require.HL,
76501
  RI = _require.RI,
76502
  SA = _require.SA,
76503
  XX = _require.XX;
76504
var _require2 = __webpack_require__(8383),
76505
  DI_BRK = _require2.DI_BRK,
76506
  IN_BRK = _require2.IN_BRK,
76507
  CI_BRK = _require2.CI_BRK,
76508
  CP_BRK = _require2.CP_BRK,
76509
  PR_BRK = _require2.PR_BRK,
76510
  pairTable = _require2.pairTable;
76511
var data = base64.toByteArray("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");
76512
var classTrie = new UnicodeTrie(data);
76513
var mapClass = function mapClass(c) {
76514
  switch (c) {
76515
    case AI:
76516
      return AL;
76517
    case SA:
76518
    case SG:
76519
    case XX:
76520
      return AL;
76521
    case CJ:
76522
      return NS;
76523
    default:
76524
      return c;
76525
  }
76526
};
76527
var mapFirst = function mapFirst(c) {
76528
  switch (c) {
76529
    case LF:
76530
    case NL:
76531
      return BK;
76532
    case SP:
76533
      return WJ;
76534
    default:
76535
      return c;
76536
  }
76537
};
76538
var Break = function Break(position, required) {
76539
  if (required === void 0) {
76540
    required = false;
76541
  }
76542
  this.position = position;
76543
  this.required = required;
76544
};
76545
var LineBreaker = /*#__PURE__*/function () {
76546
  function LineBreaker(string) {
76547
    this.string = string;
76548
    this.pos = 0;
76549
    this.lastPos = 0;
76550
    this.curClass = null;
76551
    this.nextClass = null;
76552
    this.LB8a = false;
76553
    this.LB21a = false;
76554
    this.LB30a = 0;
76555
  }
76556
  var _proto = LineBreaker.prototype;
76557
  _proto.nextCodePoint = function nextCodePoint() {
76558
    var code = this.string.charCodeAt(this.pos++);
76559
    var next = this.string.charCodeAt(this.pos);
76560
76561
    // If a surrogate pair
76562
    if (0xd800 <= code && code <= 0xdbff && 0xdc00 <= next && next <= 0xdfff) {
76563
      this.pos++;
76564
      return (code - 0xd800) * 0x400 + (next - 0xdc00) + 0x10000;
76565
    }
76566
    return code;
76567
  };
76568
  _proto.nextCharClass = function nextCharClass() {
76569
    return mapClass(classTrie.get(this.nextCodePoint()));
76570
  };
76571
  _proto.getSimpleBreak = function getSimpleBreak() {
76572
    // handle classes not handled by the pair table
76573
    switch (this.nextClass) {
76574
      case SP:
76575
        return false;
76576
      case BK:
76577
      case LF:
76578
      case NL:
76579
        this.curClass = BK;
76580
        return false;
76581
      case CR:
76582
        this.curClass = CR;
76583
        return false;
76584
    }
76585
    return null;
76586
  };
76587
  _proto.getPairTableBreak = function getPairTableBreak(lastClass) {
76588
    // if not handled already, use the pair table
76589
    var shouldBreak = false;
76590
    switch (pairTable[this.curClass][this.nextClass]) {
76591
      case DI_BRK:
76592
        // Direct break
76593
        shouldBreak = true;
76594
        break;
76595
      case IN_BRK:
76596
        // possible indirect break
76597
        shouldBreak = lastClass === SP;
76598
        break;
76599
      case CI_BRK:
76600
        shouldBreak = lastClass === SP;
76601
        if (!shouldBreak) {
76602
          shouldBreak = false;
76603
          return shouldBreak;
76604
        }
76605
        break;
76606
      case CP_BRK:
76607
        // prohibited for combining marks
76608
        if (lastClass !== SP) {
76609
          return shouldBreak;
76610
        }
76611
        break;
76612
      case PR_BRK:
76613
        break;
76614
    }
76615
    if (this.LB8a) {
76616
      shouldBreak = false;
76617
    }
76618
76619
    // Rule LB21a
76620
    if (this.LB21a && (this.curClass === HY || this.curClass === BA)) {
76621
      shouldBreak = false;
76622
      this.LB21a = false;
76623
    } else {
76624
      this.LB21a = this.curClass === HL;
76625
    }
76626
76627
    // Rule LB30a
76628
    if (this.curClass === RI) {
76629
      this.LB30a++;
76630
      if (this.LB30a == 2 && this.nextClass === RI) {
76631
        shouldBreak = true;
76632
        this.LB30a = 0;
76633
      }
76634
    } else {
76635
      this.LB30a = 0;
76636
    }
76637
    this.curClass = this.nextClass;
76638
    return shouldBreak;
76639
  };
76640
  _proto.nextBreak = function nextBreak() {
76641
    // get the first char if we're at the beginning of the string
76642
    if (this.curClass == null) {
76643
      var firstClass = this.nextCharClass();
76644
      this.curClass = mapFirst(firstClass);
76645
      this.nextClass = firstClass;
76646
      this.LB8a = firstClass === ZWJ;
76647
      this.LB30a = 0;
76648
    }
76649
    while (this.pos < this.string.length) {
76650
      this.lastPos = this.pos;
76651
      var lastClass = this.nextClass;
76652
      this.nextClass = this.nextCharClass();
76653
76654
      // explicit newline
76655
      if (this.curClass === BK || this.curClass === CR && this.nextClass !== LF) {
76656
        this.curClass = mapFirst(mapClass(this.nextClass));
76657
        return new Break(this.lastPos, true);
76658
      }
76659
      var shouldBreak = this.getSimpleBreak();
76660
      if (shouldBreak === null) {
76661
        shouldBreak = this.getPairTableBreak(lastClass);
76662
      }
76663
76664
      // Rule LB8a
76665
      this.LB8a = this.nextClass === ZWJ;
76666
      if (shouldBreak) {
76667
        return new Break(this.lastPos);
76668
      }
76669
    }
76670
    if (this.lastPos < this.string.length) {
76671
      this.lastPos = this.string.length;
76672
      return new Break(this.string.length);
76673
    }
76674
    return null;
76675
  };
76676
  return LineBreaker;
76677
}();
76678
module.exports = LineBreaker;
76679
76680
/***/ }),
76681
76682
/***/ 4927:
76683
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
76684
76685
76686
/**
76687
 * Module exports.
76688
 */
76689
76690
module.exports = deprecate;
76691
76692
/**
76693
 * Mark that a method should not be used.
76694
 * Returns a modified function which warns once by default.
76695
 *
76696
 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
76697
 *
76698
 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
76699
 * will throw an Error when invoked.
76700
 *
76701
 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
76702
 * will invoke `console.trace()` instead of `console.error()`.
76703
 *
76704
 * @param {Function} fn - the function to deprecate
76705
 * @param {String} msg - the string to print to the console when `fn` is invoked
76706
 * @returns {Function} a new "deprecated" version of `fn`
76707
 * @api public
76708
 */
76709
76710
function deprecate (fn, msg) {
76711
  if (config('noDeprecation')) {
76712
    return fn;
76713
  }
76714
76715
  var warned = false;
76716
  function deprecated() {
76717
    if (!warned) {
76718
      if (config('throwDeprecation')) {
76719
        throw new Error(msg);
76720
      } else if (config('traceDeprecation')) {
76721
        console.trace(msg);
76722
      } else {
76723
        console.warn(msg);
76724
      }
76725
      warned = true;
76726
    }
76727
    return fn.apply(this, arguments);
76728
  }
76729
76730
  return deprecated;
76731
}
76732
76733
/**
76734
 * Checks `localStorage` for boolean values for the given `name`.
76735
 *
76736
 * @param {String} name
76737
 * @returns {Boolean}
76738
 * @api private
76739
 */
76740
76741
function config (name) {
76742
  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
76743
  try {
76744
    if (!__webpack_require__.g.localStorage) return false;
76745
  } catch (_) {
76746
    return false;
76747
  }
76748
  var val = __webpack_require__.g.localStorage[name];
76749
  if (null == val) return false;
76750
  return String(val).toLowerCase() === 'true';
76751
}
76752
76753
76754
/***/ }),
76755
76756
/***/ 384:
76757
/***/ (function(module) {
76758
76759
module.exports = function isBuffer(arg) {
76760
  return arg && typeof arg === 'object'
76761
    && typeof arg.copy === 'function'
76762
    && typeof arg.fill === 'function'
76763
    && typeof arg.readUInt8 === 'function';
76764
}
76765
76766
/***/ }),
76767
76768
/***/ 5955:
76769
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
76770
76771
"use strict";
76772
// Currently in sync with Node.js lib/internal/util/types.js
76773
// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9
76774
76775
76776
76777
var isArgumentsObject = __webpack_require__(2584);
76778
var isGeneratorFunction = __webpack_require__(8662);
76779
var whichTypedArray = __webpack_require__(6430);
76780
var isTypedArray = __webpack_require__(5692);
76781
76782
function uncurryThis(f) {
76783
  return f.call.bind(f);
76784
}
76785
76786
var BigIntSupported = typeof BigInt !== 'undefined';
76787
var SymbolSupported = typeof Symbol !== 'undefined';
76788
76789
var ObjectToString = uncurryThis(Object.prototype.toString);
76790
76791
var numberValue = uncurryThis(Number.prototype.valueOf);
76792
var stringValue = uncurryThis(String.prototype.valueOf);
76793
var booleanValue = uncurryThis(Boolean.prototype.valueOf);
76794
76795
if (BigIntSupported) {
76796
  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);
76797
}
76798
76799
if (SymbolSupported) {
76800
  var symbolValue = uncurryThis(Symbol.prototype.valueOf);
76801
}
76802
76803
function checkBoxedPrimitive(value, prototypeValueOf) {
76804
  if (typeof value !== 'object') {
76805
    return false;
76806
  }
76807
  try {
76808
    prototypeValueOf(value);
76809
    return true;
76810
  } catch(e) {
76811
    return false;
76812
  }
76813
}
76814
76815
exports.isArgumentsObject = isArgumentsObject;
76816
exports.isGeneratorFunction = isGeneratorFunction;
76817
exports.isTypedArray = isTypedArray;
76818
76819
// Taken from here and modified for better browser support
76820
// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js
76821
function isPromise(input) {
76822
	return (
76823
		(
76824
			typeof Promise !== 'undefined' &&
76825
			input instanceof Promise
76826
		) ||
76827
		(
76828
			input !== null &&
76829
			typeof input === 'object' &&
76830
			typeof input.then === 'function' &&
76831
			typeof input.catch === 'function'
76832
		)
76833
	);
76834
}
76835
exports.isPromise = isPromise;
76836
76837
function isArrayBufferView(value) {
76838
  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
76839
    return ArrayBuffer.isView(value);
76840
  }
76841
76842
  return (
76843
    isTypedArray(value) ||
76844
    isDataView(value)
76845
  );
76846
}
76847
exports.isArrayBufferView = isArrayBufferView;
76848
76849
76850
function isUint8Array(value) {
76851
  return whichTypedArray(value) === 'Uint8Array';
76852
}
76853
exports.isUint8Array = isUint8Array;
76854
76855
function isUint8ClampedArray(value) {
76856
  return whichTypedArray(value) === 'Uint8ClampedArray';
76857
}
76858
exports.isUint8ClampedArray = isUint8ClampedArray;
76859
76860
function isUint16Array(value) {
76861
  return whichTypedArray(value) === 'Uint16Array';
76862
}
76863
exports.isUint16Array = isUint16Array;
76864
76865
function isUint32Array(value) {
76866
  return whichTypedArray(value) === 'Uint32Array';
76867
}
76868
exports.isUint32Array = isUint32Array;
76869
76870
function isInt8Array(value) {
76871
  return whichTypedArray(value) === 'Int8Array';
76872
}
76873
exports.isInt8Array = isInt8Array;
76874
76875
function isInt16Array(value) {
76876
  return whichTypedArray(value) === 'Int16Array';
76877
}
76878
exports.isInt16Array = isInt16Array;
76879
76880
function isInt32Array(value) {
76881
  return whichTypedArray(value) === 'Int32Array';
76882
}
76883
exports.isInt32Array = isInt32Array;
76884
76885
function isFloat32Array(value) {
76886
  return whichTypedArray(value) === 'Float32Array';
76887
}
76888
exports.isFloat32Array = isFloat32Array;
76889
76890
function isFloat64Array(value) {
76891
  return whichTypedArray(value) === 'Float64Array';
76892
}
76893
exports.isFloat64Array = isFloat64Array;
76894
76895
function isBigInt64Array(value) {
76896
  return whichTypedArray(value) === 'BigInt64Array';
76897
}
76898
exports.isBigInt64Array = isBigInt64Array;
76899
76900
function isBigUint64Array(value) {
76901
  return whichTypedArray(value) === 'BigUint64Array';
76902
}
76903
exports.isBigUint64Array = isBigUint64Array;
76904
76905
function isMapToString(value) {
76906
  return ObjectToString(value) === '[object Map]';
76907
}
76908
isMapToString.working = (
76909
  typeof Map !== 'undefined' &&
76910
  isMapToString(new Map())
76911
);
76912
76913
function isMap(value) {
76914
  if (typeof Map === 'undefined') {
76915
    return false;
76916
  }
76917
76918
  return isMapToString.working
76919
    ? isMapToString(value)
76920
    : value instanceof Map;
76921
}
76922
exports.isMap = isMap;
76923
76924
function isSetToString(value) {
76925
  return ObjectToString(value) === '[object Set]';
76926
}
76927
isSetToString.working = (
76928
  typeof Set !== 'undefined' &&
76929
  isSetToString(new Set())
76930
);
76931
function isSet(value) {
76932
  if (typeof Set === 'undefined') {
76933
    return false;
76934
  }
76935
76936
  return isSetToString.working
76937
    ? isSetToString(value)
76938
    : value instanceof Set;
76939
}
76940
exports.isSet = isSet;
76941
76942
function isWeakMapToString(value) {
76943
  return ObjectToString(value) === '[object WeakMap]';
76944
}
76945
isWeakMapToString.working = (
76946
  typeof WeakMap !== 'undefined' &&
76947
  isWeakMapToString(new WeakMap())
76948
);
76949
function isWeakMap(value) {
76950
  if (typeof WeakMap === 'undefined') {
76951
    return false;
76952
  }
76953
76954
  return isWeakMapToString.working
76955
    ? isWeakMapToString(value)
76956
    : value instanceof WeakMap;
76957
}
76958
exports.isWeakMap = isWeakMap;
76959
76960
function isWeakSetToString(value) {
76961
  return ObjectToString(value) === '[object WeakSet]';
76962
}
76963
isWeakSetToString.working = (
76964
  typeof WeakSet !== 'undefined' &&
76965
  isWeakSetToString(new WeakSet())
76966
);
76967
function isWeakSet(value) {
76968
  return isWeakSetToString(value);
76969
}
76970
exports.isWeakSet = isWeakSet;
76971
76972
function isArrayBufferToString(value) {
76973
  return ObjectToString(value) === '[object ArrayBuffer]';
76974
}
76975
isArrayBufferToString.working = (
76976
  typeof ArrayBuffer !== 'undefined' &&
76977
  isArrayBufferToString(new ArrayBuffer())
76978
);
76979
function isArrayBuffer(value) {
76980
  if (typeof ArrayBuffer === 'undefined') {
76981
    return false;
76982
  }
76983
76984
  return isArrayBufferToString.working
76985
    ? isArrayBufferToString(value)
76986
    : value instanceof ArrayBuffer;
76987
}
76988
exports.isArrayBuffer = isArrayBuffer;
76989
76990
function isDataViewToString(value) {
76991
  return ObjectToString(value) === '[object DataView]';
76992
}
76993
isDataViewToString.working = (
76994
  typeof ArrayBuffer !== 'undefined' &&
76995
  typeof DataView !== 'undefined' &&
76996
  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))
76997
);
76998
function isDataView(value) {
76999
  if (typeof DataView === 'undefined') {
77000
    return false;
77001
  }
77002
77003
  return isDataViewToString.working
77004
    ? isDataViewToString(value)
77005
    : value instanceof DataView;
77006
}
77007
exports.isDataView = isDataView;
77008
77009
// Store a copy of SharedArrayBuffer in case it's deleted elsewhere
77010
var SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;
77011
function isSharedArrayBufferToString(value) {
77012
  return ObjectToString(value) === '[object SharedArrayBuffer]';
77013
}
77014
function isSharedArrayBuffer(value) {
77015
  if (typeof SharedArrayBufferCopy === 'undefined') {
77016
    return false;
77017
  }
77018
77019
  if (typeof isSharedArrayBufferToString.working === 'undefined') {
77020
    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());
77021
  }
77022
77023
  return isSharedArrayBufferToString.working
77024
    ? isSharedArrayBufferToString(value)
77025
    : value instanceof SharedArrayBufferCopy;
77026
}
77027
exports.isSharedArrayBuffer = isSharedArrayBuffer;
77028
77029
function isAsyncFunction(value) {
77030
  return ObjectToString(value) === '[object AsyncFunction]';
77031
}
77032
exports.isAsyncFunction = isAsyncFunction;
77033
77034
function isMapIterator(value) {
77035
  return ObjectToString(value) === '[object Map Iterator]';
77036
}
77037
exports.isMapIterator = isMapIterator;
77038
77039
function isSetIterator(value) {
77040
  return ObjectToString(value) === '[object Set Iterator]';
77041
}
77042
exports.isSetIterator = isSetIterator;
77043
77044
function isGeneratorObject(value) {
77045
  return ObjectToString(value) === '[object Generator]';
77046
}
77047
exports.isGeneratorObject = isGeneratorObject;
77048
77049
function isWebAssemblyCompiledModule(value) {
77050
  return ObjectToString(value) === '[object WebAssembly.Module]';
77051
}
77052
exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;
77053
77054
function isNumberObject(value) {
77055
  return checkBoxedPrimitive(value, numberValue);
77056
}
77057
exports.isNumberObject = isNumberObject;
77058
77059
function isStringObject(value) {
77060
  return checkBoxedPrimitive(value, stringValue);
77061
}
77062
exports.isStringObject = isStringObject;
77063
77064
function isBooleanObject(value) {
77065
  return checkBoxedPrimitive(value, booleanValue);
77066
}
77067
exports.isBooleanObject = isBooleanObject;
77068
77069
function isBigIntObject(value) {
77070
  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);
77071
}
77072
exports.isBigIntObject = isBigIntObject;
77073
77074
function isSymbolObject(value) {
77075
  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);
77076
}
77077
exports.isSymbolObject = isSymbolObject;
77078
77079
function isBoxedPrimitive(value) {
77080
  return (
77081
    isNumberObject(value) ||
77082
    isStringObject(value) ||
77083
    isBooleanObject(value) ||
77084
    isBigIntObject(value) ||
77085
    isSymbolObject(value)
77086
  );
77087
}
77088
exports.isBoxedPrimitive = isBoxedPrimitive;
77089
77090
function isAnyArrayBuffer(value) {
77091
  return typeof Uint8Array !== 'undefined' && (
77092
    isArrayBuffer(value) ||
77093
    isSharedArrayBuffer(value)
77094
  );
77095
}
77096
exports.isAnyArrayBuffer = isAnyArrayBuffer;
77097
77098
['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {
77099
  Object.defineProperty(exports, method, {
77100
    enumerable: false,
77101
    value: function() {
77102
      throw new Error(method + ' is not supported in userland');
77103
    }
77104
  });
77105
});
77106
77107
77108
/***/ }),
77109
77110
/***/ 9539:
77111
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
77112
77113
/* provided dependency */ var process = __webpack_require__(4155);
77114
// Copyright Joyent, Inc. and other Node contributors.
77115
//
77116
// Permission is hereby granted, free of charge, to any person obtaining a
77117
// copy of this software and associated documentation files (the
77118
// "Software"), to deal in the Software without restriction, including
77119
// without limitation the rights to use, copy, modify, merge, publish,
77120
// distribute, sublicense, and/or sell copies of the Software, and to permit
77121
// persons to whom the Software is furnished to do so, subject to the
77122
// following conditions:
77123
//
77124
// The above copyright notice and this permission notice shall be included
77125
// in all copies or substantial portions of the Software.
77126
//
77127
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
77128
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
77129
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
77130
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
77131
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
77132
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
77133
// USE OR OTHER DEALINGS IN THE SOFTWARE.
77134
77135
var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||
77136
  function getOwnPropertyDescriptors(obj) {
77137
    var keys = Object.keys(obj);
77138
    var descriptors = {};
77139
    for (var i = 0; i < keys.length; i++) {
77140
      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);
77141
    }
77142
    return descriptors;
77143
  };
77144
77145
var formatRegExp = /%[sdj%]/g;
77146
exports.format = function(f) {
77147
  if (!isString(f)) {
77148
    var objects = [];
77149
    for (var i = 0; i < arguments.length; i++) {
77150
      objects.push(inspect(arguments[i]));
77151
    }
77152
    return objects.join(' ');
77153
  }
77154
77155
  var i = 1;
77156
  var args = arguments;
77157
  var len = args.length;
77158
  var str = String(f).replace(formatRegExp, function(x) {
77159
    if (x === '%%') return '%';
77160
    if (i >= len) return x;
77161
    switch (x) {
77162
      case '%s': return String(args[i++]);
77163
      case '%d': return Number(args[i++]);
77164
      case '%j':
77165
        try {
77166
          return JSON.stringify(args[i++]);
77167
        } catch (_) {
77168
          return '[Circular]';
77169
        }
77170
      default:
77171
        return x;
77172
    }
77173
  });
77174
  for (var x = args[i]; i < len; x = args[++i]) {
77175
    if (isNull(x) || !isObject(x)) {
77176
      str += ' ' + x;
77177
    } else {
77178
      str += ' ' + inspect(x);
77179
    }
77180
  }
77181
  return str;
77182
};
77183
77184
77185
// Mark that a method should not be used.
77186
// Returns a modified function which warns once by default.
77187
// If --no-deprecation is set, then it is a no-op.
77188
exports.deprecate = function(fn, msg) {
77189
  if (typeof process !== 'undefined' && process.noDeprecation === true) {
77190
    return fn;
77191
  }
77192
77193
  // Allow for deprecating things in the process of starting up.
77194
  if (typeof process === 'undefined') {
77195
    return function() {
77196
      return exports.deprecate(fn, msg).apply(this, arguments);
77197
    };
77198
  }
77199
77200
  var warned = false;
77201
  function deprecated() {
77202
    if (!warned) {
77203
      if (process.throwDeprecation) {
77204
        throw new Error(msg);
77205
      } else if (process.traceDeprecation) {
77206
        console.trace(msg);
77207
      } else {
77208
        console.error(msg);
77209
      }
77210
      warned = true;
77211
    }
77212
    return fn.apply(this, arguments);
77213
  }
77214
77215
  return deprecated;
77216
};
77217
77218
77219
var debugs = {};
77220
var debugEnvRegex = /^$/;
77221
77222
if (process.env.NODE_DEBUG) {
77223
  var debugEnv = process.env.NODE_DEBUG;
77224
  debugEnv = debugEnv.replace(/[|\\{}()[\]^$+?.]/g, '\\$&')
77225
    .replace(/\*/g, '.*')
77226
    .replace(/,/g, '$|^')
77227
    .toUpperCase();
77228
  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');
77229
}
77230
exports.debuglog = function(set) {
77231
  set = set.toUpperCase();
77232
  if (!debugs[set]) {
77233
    if (debugEnvRegex.test(set)) {
77234
      var pid = process.pid;
77235
      debugs[set] = function() {
77236
        var msg = exports.format.apply(exports, arguments);
77237
        console.error('%s %d: %s', set, pid, msg);
77238
      };
77239
    } else {
77240
      debugs[set] = function() {};
77241
    }
77242
  }
77243
  return debugs[set];
77244
};
77245
77246
77247
/**
77248
 * Echos the value of a value. Trys to print the value out
77249
 * in the best way possible given the different types.
77250
 *
77251
 * @param {Object} obj The object to print out.
77252
 * @param {Object} opts Optional options object that alters the output.
77253
 */
77254
/* legacy: obj, showHidden, depth, colors*/
77255
function inspect(obj, opts) {
77256
  // default options
77257
  var ctx = {
77258
    seen: [],
77259
    stylize: stylizeNoColor
77260
  };
77261
  // legacy...
77262
  if (arguments.length >= 3) ctx.depth = arguments[2];
77263
  if (arguments.length >= 4) ctx.colors = arguments[3];
77264
  if (isBoolean(opts)) {
77265
    // legacy...
77266
    ctx.showHidden = opts;
77267
  } else if (opts) {
77268
    // got an "options" object
77269
    exports._extend(ctx, opts);
77270
  }
77271
  // set default options
77272
  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
77273
  if (isUndefined(ctx.depth)) ctx.depth = 2;
77274
  if (isUndefined(ctx.colors)) ctx.colors = false;
77275
  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
77276
  if (ctx.colors) ctx.stylize = stylizeWithColor;
77277
  return formatValue(ctx, obj, ctx.depth);
77278
}
77279
exports.inspect = inspect;
77280
77281
77282
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
77283
inspect.colors = {
77284
  'bold' : [1, 22],
77285
  'italic' : [3, 23],
77286
  'underline' : [4, 24],
77287
  'inverse' : [7, 27],
77288
  'white' : [37, 39],
77289
  'grey' : [90, 39],
77290
  'black' : [30, 39],
77291
  'blue' : [34, 39],
77292
  'cyan' : [36, 39],
77293
  'green' : [32, 39],
77294
  'magenta' : [35, 39],
77295
  'red' : [31, 39],
77296
  'yellow' : [33, 39]
77297
};
77298
77299
// Don't use 'blue' not visible on cmd.exe
77300
inspect.styles = {
77301
  'special': 'cyan',
77302
  'number': 'yellow',
77303
  'boolean': 'yellow',
77304
  'undefined': 'grey',
77305
  'null': 'bold',
77306
  'string': 'green',
77307
  'date': 'magenta',
77308
  // "name": intentionally not styling
77309
  'regexp': 'red'
77310
};
77311
77312
77313
function stylizeWithColor(str, styleType) {
77314
  var style = inspect.styles[styleType];
77315
77316
  if (style) {
77317
    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
77318
           '\u001b[' + inspect.colors[style][1] + 'm';
77319
  } else {
77320
    return str;
77321
  }
77322
}
77323
77324
77325
function stylizeNoColor(str, styleType) {
77326
  return str;
77327
}
77328
77329
77330
function arrayToHash(array) {
77331
  var hash = {};
77332
77333
  array.forEach(function(val, idx) {
77334
    hash[val] = true;
77335
  });
77336
77337
  return hash;
77338
}
77339
77340
77341
function formatValue(ctx, value, recurseTimes) {
77342
  // Provide a hook for user-specified inspect functions.
77343
  // Check that value is an object with an inspect function on it
77344
  if (ctx.customInspect &&
77345
      value &&
77346
      isFunction(value.inspect) &&
77347
      // Filter out the util module, it's inspect function is special
77348
      value.inspect !== exports.inspect &&
77349
      // Also filter out any prototype objects using the circular check.
77350
      !(value.constructor && value.constructor.prototype === value)) {
77351
    var ret = value.inspect(recurseTimes, ctx);
77352
    if (!isString(ret)) {
77353
      ret = formatValue(ctx, ret, recurseTimes);
77354
    }
77355
    return ret;
77356
  }
77357
77358
  // Primitive types cannot have properties
77359
  var primitive = formatPrimitive(ctx, value);
77360
  if (primitive) {
77361
    return primitive;
77362
  }
77363
77364
  // Look up the keys of the object.
77365
  var keys = Object.keys(value);
77366
  var visibleKeys = arrayToHash(keys);
77367
77368
  if (ctx.showHidden) {
77369
    keys = Object.getOwnPropertyNames(value);
77370
  }
77371
77372
  // IE doesn't make error fields non-enumerable
77373
  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
77374
  if (isError(value)
77375
      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
77376
    return formatError(value);
77377
  }
77378
77379
  // Some type of object without properties can be shortcutted.
77380
  if (keys.length === 0) {
77381
    if (isFunction(value)) {
77382
      var name = value.name ? ': ' + value.name : '';
77383
      return ctx.stylize('[Function' + name + ']', 'special');
77384
    }
77385
    if (isRegExp(value)) {
77386
      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
77387
    }
77388
    if (isDate(value)) {
77389
      return ctx.stylize(Date.prototype.toString.call(value), 'date');
77390
    }
77391
    if (isError(value)) {
77392
      return formatError(value);
77393
    }
77394
  }
77395
77396
  var base = '', array = false, braces = ['{', '}'];
77397
77398
  // Make Array say that they are Array
77399
  if (isArray(value)) {
77400
    array = true;
77401
    braces = ['[', ']'];
77402
  }
77403
77404
  // Make functions say that they are functions
77405
  if (isFunction(value)) {
77406
    var n = value.name ? ': ' + value.name : '';
77407
    base = ' [Function' + n + ']';
77408
  }
77409
77410
  // Make RegExps say that they are RegExps
77411
  if (isRegExp(value)) {
77412
    base = ' ' + RegExp.prototype.toString.call(value);
77413
  }
77414
77415
  // Make dates with properties first say the date
77416
  if (isDate(value)) {
77417
    base = ' ' + Date.prototype.toUTCString.call(value);
77418
  }
77419
77420
  // Make error with message first say the error
77421
  if (isError(value)) {
77422
    base = ' ' + formatError(value);
77423
  }
77424
77425
  if (keys.length === 0 && (!array || value.length == 0)) {
77426
    return braces[0] + base + braces[1];
77427
  }
77428
77429
  if (recurseTimes < 0) {
77430
    if (isRegExp(value)) {
77431
      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
77432
    } else {
77433
      return ctx.stylize('[Object]', 'special');
77434
    }
77435
  }
77436
77437
  ctx.seen.push(value);
77438
77439
  var output;
77440
  if (array) {
77441
    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
77442
  } else {
77443
    output = keys.map(function(key) {
77444
      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
77445
    });
77446
  }
77447
77448
  ctx.seen.pop();
77449
77450
  return reduceToSingleString(output, base, braces);
77451
}
77452
77453
77454
function formatPrimitive(ctx, value) {
77455
  if (isUndefined(value))
77456
    return ctx.stylize('undefined', 'undefined');
77457
  if (isString(value)) {
77458
    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
77459
                                             .replace(/'/g, "\\'")
77460
                                             .replace(/\\"/g, '"') + '\'';
77461
    return ctx.stylize(simple, 'string');
77462
  }
77463
  if (isNumber(value))
77464
    return ctx.stylize('' + value, 'number');
77465
  if (isBoolean(value))
77466
    return ctx.stylize('' + value, 'boolean');
77467
  // For some reason typeof null is "object", so special case here.
77468
  if (isNull(value))
77469
    return ctx.stylize('null', 'null');
77470
}
77471
77472
77473
function formatError(value) {
77474
  return '[' + Error.prototype.toString.call(value) + ']';
77475
}
77476
77477
77478
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
77479
  var output = [];
77480
  for (var i = 0, l = value.length; i < l; ++i) {
77481
    if (hasOwnProperty(value, String(i))) {
77482
      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
77483
          String(i), true));
77484
    } else {
77485
      output.push('');
77486
    }
77487
  }
77488
  keys.forEach(function(key) {
77489
    if (!key.match(/^\d+$/)) {
77490
      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
77491
          key, true));
77492
    }
77493
  });
77494
  return output;
77495
}
77496
77497
77498
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
77499
  var name, str, desc;
77500
  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
77501
  if (desc.get) {
77502
    if (desc.set) {
77503
      str = ctx.stylize('[Getter/Setter]', 'special');
77504
    } else {
77505
      str = ctx.stylize('[Getter]', 'special');
77506
    }
77507
  } else {
77508
    if (desc.set) {
77509
      str = ctx.stylize('[Setter]', 'special');
77510
    }
77511
  }
77512
  if (!hasOwnProperty(visibleKeys, key)) {
77513
    name = '[' + key + ']';
77514
  }
77515
  if (!str) {
77516
    if (ctx.seen.indexOf(desc.value) < 0) {
77517
      if (isNull(recurseTimes)) {
77518
        str = formatValue(ctx, desc.value, null);
77519
      } else {
77520
        str = formatValue(ctx, desc.value, recurseTimes - 1);
77521
      }
77522
      if (str.indexOf('\n') > -1) {
77523
        if (array) {
77524
          str = str.split('\n').map(function(line) {
77525
            return '  ' + line;
77526
          }).join('\n').slice(2);
77527
        } else {
77528
          str = '\n' + str.split('\n').map(function(line) {
77529
            return '   ' + line;
77530
          }).join('\n');
77531
        }
77532
      }
77533
    } else {
77534
      str = ctx.stylize('[Circular]', 'special');
77535
    }
77536
  }
77537
  if (isUndefined(name)) {
77538
    if (array && key.match(/^\d+$/)) {
77539
      return str;
77540
    }
77541
    name = JSON.stringify('' + key);
77542
    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
77543
      name = name.slice(1, -1);
77544
      name = ctx.stylize(name, 'name');
77545
    } else {
77546
      name = name.replace(/'/g, "\\'")
77547
                 .replace(/\\"/g, '"')
77548
                 .replace(/(^"|"$)/g, "'");
77549
      name = ctx.stylize(name, 'string');
77550
    }
77551
  }
77552
77553
  return name + ': ' + str;
77554
}
77555
77556
77557
function reduceToSingleString(output, base, braces) {
77558
  var numLinesEst = 0;
77559
  var length = output.reduce(function(prev, cur) {
77560
    numLinesEst++;
77561
    if (cur.indexOf('\n') >= 0) numLinesEst++;
77562
    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
77563
  }, 0);
77564
77565
  if (length > 60) {
77566
    return braces[0] +
77567
           (base === '' ? '' : base + '\n ') +
77568
           ' ' +
77569
           output.join(',\n  ') +
77570
           ' ' +
77571
           braces[1];
77572
  }
77573
77574
  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
77575
}
77576
77577
77578
// NOTE: These type checking functions intentionally don't use `instanceof`
77579
// because it is fragile and can be easily faked with `Object.create()`.
77580
exports.types = __webpack_require__(5955);
77581
77582
function isArray(ar) {
77583
  return Array.isArray(ar);
77584
}
77585
exports.isArray = isArray;
77586
77587
function isBoolean(arg) {
77588
  return typeof arg === 'boolean';
77589
}
77590
exports.isBoolean = isBoolean;
77591
77592
function isNull(arg) {
77593
  return arg === null;
77594
}
77595
exports.isNull = isNull;
77596
77597
function isNullOrUndefined(arg) {
77598
  return arg == null;
77599
}
77600
exports.isNullOrUndefined = isNullOrUndefined;
77601
77602
function isNumber(arg) {
77603
  return typeof arg === 'number';
77604
}
77605
exports.isNumber = isNumber;
77606
77607
function isString(arg) {
77608
  return typeof arg === 'string';
77609
}
77610
exports.isString = isString;
77611
77612
function isSymbol(arg) {
77613
  return typeof arg === 'symbol';
77614
}
77615
exports.isSymbol = isSymbol;
77616
77617
function isUndefined(arg) {
77618
  return arg === void 0;
77619
}
77620
exports.isUndefined = isUndefined;
77621
77622
function isRegExp(re) {
77623
  return isObject(re) && objectToString(re) === '[object RegExp]';
77624
}
77625
exports.isRegExp = isRegExp;
77626
exports.types.isRegExp = isRegExp;
77627
77628
function isObject(arg) {
77629
  return typeof arg === 'object' && arg !== null;
77630
}
77631
exports.isObject = isObject;
77632
77633
function isDate(d) {
77634
  return isObject(d) && objectToString(d) === '[object Date]';
77635
}
77636
exports.isDate = isDate;
77637
exports.types.isDate = isDate;
77638
77639
function isError(e) {
77640
  return isObject(e) &&
77641
      (objectToString(e) === '[object Error]' || e instanceof Error);
77642
}
77643
exports.isError = isError;
77644
exports.types.isNativeError = isError;
77645
77646
function isFunction(arg) {
77647
  return typeof arg === 'function';
77648
}
77649
exports.isFunction = isFunction;
77650
77651
function isPrimitive(arg) {
77652
  return arg === null ||
77653
         typeof arg === 'boolean' ||
77654
         typeof arg === 'number' ||
77655
         typeof arg === 'string' ||
77656
         typeof arg === 'symbol' ||  // ES6 symbol
77657
         typeof arg === 'undefined';
77658
}
77659
exports.isPrimitive = isPrimitive;
77660
77661
exports.isBuffer = __webpack_require__(384);
77662
77663
function objectToString(o) {
77664
  return Object.prototype.toString.call(o);
77665
}
77666
77667
77668
function pad(n) {
77669
  return n < 10 ? '0' + n.toString(10) : n.toString(10);
77670
}
77671
77672
77673
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
77674
              'Oct', 'Nov', 'Dec'];
77675
77676
// 26 Feb 16:19:34
77677
function timestamp() {
77678
  var d = new Date();
77679
  var time = [pad(d.getHours()),
77680
              pad(d.getMinutes()),
77681
              pad(d.getSeconds())].join(':');
77682
  return [d.getDate(), months[d.getMonth()], time].join(' ');
77683
}
77684
77685
77686
// log is just a thin wrapper to console.log that prepends a timestamp
77687
exports.log = function() {
77688
  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
77689
};
77690
77691
77692
/**
77693
 * Inherit the prototype methods from one constructor into another.
77694
 *
77695
 * The Function.prototype.inherits from lang.js rewritten as a standalone
77696
 * function (not on Function.prototype). NOTE: If this file is to be loaded
77697
 * during bootstrapping this function needs to be rewritten using some native
77698
 * functions as prototype setup using normal JavaScript does not work as
77699
 * expected during bootstrapping (see mirror.js in r114903).
77700
 *
77701
 * @param {function} ctor Constructor function which needs to inherit the
77702
 *     prototype.
77703
 * @param {function} superCtor Constructor function to inherit prototype from.
77704
 */
77705
exports.inherits = __webpack_require__(5717);
77706
77707
exports._extend = function(origin, add) {
77708
  // Don't do anything if add isn't an object
77709
  if (!add || !isObject(add)) return origin;
77710
77711
  var keys = Object.keys(add);
77712
  var i = keys.length;
77713
  while (i--) {
77714
    origin[keys[i]] = add[keys[i]];
77715
  }
77716
  return origin;
77717
};
77718
77719
function hasOwnProperty(obj, prop) {
77720
  return Object.prototype.hasOwnProperty.call(obj, prop);
77721
}
77722
77723
var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;
77724
77725
exports.promisify = function promisify(original) {
77726
  if (typeof original !== 'function')
77727
    throw new TypeError('The "original" argument must be of type Function');
77728
77729
  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {
77730
    var fn = original[kCustomPromisifiedSymbol];
77731
    if (typeof fn !== 'function') {
77732
      throw new TypeError('The "util.promisify.custom" argument must be of type Function');
77733
    }
77734
    Object.defineProperty(fn, kCustomPromisifiedSymbol, {
77735
      value: fn, enumerable: false, writable: false, configurable: true
77736
    });
77737
    return fn;
77738
  }
77739
77740
  function fn() {
77741
    var promiseResolve, promiseReject;
77742
    var promise = new Promise(function (resolve, reject) {
77743
      promiseResolve = resolve;
77744
      promiseReject = reject;
77745
    });
77746
77747
    var args = [];
77748
    for (var i = 0; i < arguments.length; i++) {
77749
      args.push(arguments[i]);
77750
    }
77751
    args.push(function (err, value) {
77752
      if (err) {
77753
        promiseReject(err);
77754
      } else {
77755
        promiseResolve(value);
77756
      }
77757
    });
77758
77759
    try {
77760
      original.apply(this, args);
77761
    } catch (err) {
77762
      promiseReject(err);
77763
    }
77764
77765
    return promise;
77766
  }
77767
77768
  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));
77769
77770
  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {
77771
    value: fn, enumerable: false, writable: false, configurable: true
77772
  });
77773
  return Object.defineProperties(
77774
    fn,
77775
    getOwnPropertyDescriptors(original)
77776
  );
77777
}
77778
77779
exports.promisify.custom = kCustomPromisifiedSymbol
77780
77781
function callbackifyOnRejected(reason, cb) {
77782
  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).
77783
  // Because `null` is a special error value in callbacks which means "no error
77784
  // occurred", we error-wrap so the callback consumer can distinguish between
77785
  // "the promise rejected with null" or "the promise fulfilled with undefined".
77786
  if (!reason) {
77787
    var newReason = new Error('Promise was rejected with a falsy value');
77788
    newReason.reason = reason;
77789
    reason = newReason;
77790
  }
77791
  return cb(reason);
77792
}
77793
77794
function callbackify(original) {
77795
  if (typeof original !== 'function') {
77796
    throw new TypeError('The "original" argument must be of type Function');
77797
  }
77798
77799
  // We DO NOT return the promise as it gives the user a false sense that
77800
  // the promise is actually somehow related to the callback's execution
77801
  // and that the callback throwing will reject the promise.
77802
  function callbackified() {
77803
    var args = [];
77804
    for (var i = 0; i < arguments.length; i++) {
77805
      args.push(arguments[i]);
77806
    }
77807
77808
    var maybeCb = args.pop();
77809
    if (typeof maybeCb !== 'function') {
77810
      throw new TypeError('The last argument must be of type Function');
77811
    }
77812
    var self = this;
77813
    var cb = function() {
77814
      return maybeCb.apply(self, arguments);
77815
    };
77816
    // In true node style we process the callback on `nextTick` with all the
77817
    // implications (stack, `uncaughtException`, `async_hooks`)
77818
    original.apply(this, args)
77819
      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },
77820
            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });
77821
  }
77822
77823
  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));
77824
  Object.defineProperties(callbackified,
77825
                          getOwnPropertyDescriptors(original));
77826
  return callbackified;
77827
}
77828
exports.callbackify = callbackify;
77829
77830
77831
/***/ }),
77832
77833
/***/ 6430:
77834
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
77835
77836
"use strict";
77837
77838
77839
var forEach = __webpack_require__(4029);
77840
var availableTypedArrays = __webpack_require__(3083);
77841
var callBound = __webpack_require__(1924);
77842
var gOPD = __webpack_require__(7296);
77843
77844
var $toString = callBound('Object.prototype.toString');
77845
var hasToStringTag = __webpack_require__(6410)();
77846
77847
var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;
77848
var typedArrays = availableTypedArrays();
77849
77850
var $slice = callBound('String.prototype.slice');
77851
var toStrTags = {};
77852
var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');
77853
if (hasToStringTag && gOPD && getPrototypeOf) {
77854
	forEach(typedArrays, function (typedArray) {
77855
		if (typeof g[typedArray] === 'function') {
77856
			var arr = new g[typedArray]();
77857
			if (Symbol.toStringTag in arr) {
77858
				var proto = getPrototypeOf(arr);
77859
				var descriptor = gOPD(proto, Symbol.toStringTag);
77860
				if (!descriptor) {
77861
					var superProto = getPrototypeOf(proto);
77862
					descriptor = gOPD(superProto, Symbol.toStringTag);
77863
				}
77864
				toStrTags[typedArray] = descriptor.get;
77865
			}
77866
		}
77867
	});
77868
}
77869
77870
var tryTypedArrays = function tryAllTypedArrays(value) {
77871
	var foundName = false;
77872
	forEach(toStrTags, function (getter, typedArray) {
77873
		if (!foundName) {
77874
			try {
77875
				var name = getter.call(value);
77876
				if (name === typedArray) {
77877
					foundName = name;
77878
				}
77879
			} catch (e) {}
77880
		}
77881
	});
77882
	return foundName;
77883
};
77884
77885
var isTypedArray = __webpack_require__(5692);
77886
77887
module.exports = function whichTypedArray(value) {
77888
	if (!isTypedArray(value)) { return false; }
77889
	if (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }
77890
	return tryTypedArrays(value);
77891
};
77892
77893
77894
/***/ }),
77895
77896
/***/ 6513:
77897
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
77898
77899
// This file is just added for convenience so this repository can be
77900
// directly checked out into a project's deps folder
77901
module.exports = __webpack_require__(5011);
77902
77903
77904
/***/ }),
77905
77906
/***/ 5011:
77907
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
77908
77909
(function () {
77910
  var sax;
77911
77912
  if (
77913
     true &&
77914
    module.exports &&
77915
    !__webpack_require__.g.xmldocAssumeBrowser
77916
  ) {
77917
    // We're being used in a Node-like environment
77918
    sax = __webpack_require__(6099);
77919
  } else {
77920
    // assume it's attached to the Window object in a browser
77921
    sax = this.sax;
77922
77923
    if (!sax) {
77924
      // no sax for you!
77925
      throw new Error(
77926
        "Expected sax to be defined. Make sure you're including sax.js before this file.",
77927
      );
77928
    }
77929
  }
77930
77931
  /*
77932
   * XmlElement is our basic building block. Everything is an XmlElement; even XmlDocument
77933
   * behaves like an XmlElement by inheriting its attributes and functions.
77934
   */
77935
77936
  function XmlElement(tag) {
77937
    // Capture the parser object off of the XmlDocument delegate
77938
    var parser = delegates[delegates.length - 1].parser;
77939
77940
    this.name = tag.name;
77941
    this.attr = tag.attributes;
77942
    this.val = "";
77943
    this.children = [];
77944
    this.firstChild = null;
77945
    this.lastChild = null;
77946
77947
    // Assign parse information
77948
    this.line = parser.line;
77949
    this.column = parser.column;
77950
    this.position = parser.position;
77951
    this.startTagPosition = parser.startTagPosition;
77952
  }
77953
77954
  // Private methods
77955
77956
  XmlElement.prototype._addChild = function (child) {
77957
    // add to our children array
77958
    this.children.push(child);
77959
77960
    // update first/last pointers
77961
    if (!this.firstChild) this.firstChild = child;
77962
    this.lastChild = child;
77963
  };
77964
77965
  // SaxParser handlers
77966
77967
  XmlElement.prototype._opentag = function (tag) {
77968
    var child = new XmlElement(tag);
77969
77970
    this._addChild(child);
77971
77972
    delegates.unshift(child);
77973
  };
77974
77975
  XmlElement.prototype._closetag = function () {
77976
    delegates.shift();
77977
  };
77978
77979
  XmlElement.prototype._text = function (text) {
77980
    if (typeof this.children === "undefined") return;
77981
77982
    this.val += text;
77983
77984
    this._addChild(new XmlTextNode(text));
77985
  };
77986
77987
  XmlElement.prototype._cdata = function (cdata) {
77988
    this.val += cdata;
77989
77990
    this._addChild(new XmlCDataNode(cdata));
77991
  };
77992
77993
  XmlElement.prototype._comment = function (comment) {
77994
    if (typeof this.children === "undefined") return;
77995
77996
    this._addChild(new XmlCommentNode(comment));
77997
  };
77998
77999
  XmlElement.prototype._error = function (err) {
78000
    throw err;
78001
  };
78002
78003
  // Useful functions
78004
78005
  XmlElement.prototype.eachChild = function (iterator, context) {
78006
    for (var i = 0, l = this.children.length; i < l; i++)
78007
      if (this.children[i].type === "element")
78008
        if (
78009
          iterator.call(context, this.children[i], i, this.children) === false
78010
        )
78011
          return;
78012
  };
78013
78014
  XmlElement.prototype.childNamed = function (name) {
78015
    for (var i = 0, l = this.children.length; i < l; i++) {
78016
      var child = this.children[i];
78017
      if (child.name === name) return child;
78018
    }
78019
    return undefined;
78020
  };
78021
78022
  XmlElement.prototype.childrenNamed = function (name) {
78023
    var matches = [];
78024
78025
    for (var i = 0, l = this.children.length; i < l; i++)
78026
      if (this.children[i].name === name) matches.push(this.children[i]);
78027
78028
    return matches;
78029
  };
78030
78031
  XmlElement.prototype.childWithAttribute = function (name, value) {
78032
    for (var i = 0, l = this.children.length; i < l; i++) {
78033
      var child = this.children[i];
78034
      if (
78035
        child.type === "element" &&
78036
        ((value && child.attr[name] === value) || (!value && child.attr[name]))
78037
      )
78038
        return child;
78039
    }
78040
    return undefined;
78041
  };
78042
78043
  XmlElement.prototype.descendantsNamed = function (name) {
78044
     var matches = [];
78045
78046
     for (var i = 0, l = this.children.length; i < l; i++) {
78047
       var child = this.children[i];
78048
       if (child.type === "element") {
78049
         if (child.name === name) matches.push(child);
78050
         matches = matches.concat(child.descendantsNamed(name));
78051
       }
78052
     }
78053
78054
     return matches;
78055
   };
78056
78057
  XmlElement.prototype.descendantWithPath = function (path) {
78058
    var descendant = this;
78059
    var components = path.split(".");
78060
78061
    for (var i = 0, l = components.length; i < l; i++)
78062
      if (descendant && descendant.type === "element")
78063
        descendant = descendant.childNamed(components[i]);
78064
      else return undefined;
78065
78066
    return descendant;
78067
  };
78068
78069
  XmlElement.prototype.valueWithPath = function (path) {
78070
    var components = path.split("@");
78071
    var descendant = this.descendantWithPath(components[0]);
78072
    if (descendant)
78073
      return components.length > 1
78074
        ? descendant.attr[components[1]]
78075
        : descendant.val;
78076
    else return undefined;
78077
  };
78078
78079
  // String formatting (for debugging)
78080
78081
  XmlElement.prototype.toString = function (options) {
78082
    return this.toStringWithIndent("", options);
78083
  };
78084
78085
  XmlElement.prototype.toStringWithIndent = function (indent, options) {
78086
    var s = indent + "<" + this.name;
78087
    var linebreak = options && options.compressed ? "" : "\n";
78088
    var preserveWhitespace = options && options.preserveWhitespace;
78089
78090
    for (var name in this.attr)
78091
      if (Object.prototype.hasOwnProperty.call(this.attr, name))
78092
        s += " " + name + '="' + escapeXML(this.attr[name]) + '"';
78093
78094
    if (this.children.length === 1 && this.children[0].type !== "element") {
78095
      s += ">" + this.children[0].toString(options) + "</" + this.name + ">";
78096
    } else if (this.children.length) {
78097
      s += ">" + linebreak;
78098
78099
      var childIndent = indent + (options && options.compressed ? "" : "  ");
78100
78101
      for (var i = 0, l = this.children.length; i < l; i++) {
78102
        s +=
78103
          this.children[i].toStringWithIndent(childIndent, options) + linebreak;
78104
      }
78105
78106
      s += indent + "</" + this.name + ">";
78107
    } else if (options && options.html) {
78108
      var whiteList = [
78109
        "area",
78110
        "base",
78111
        "br",
78112
        "col",
78113
        "embed",
78114
        "frame",
78115
        "hr",
78116
        "img",
78117
        "input",
78118
        "keygen",
78119
        "link",
78120
        "menuitem",
78121
        "meta",
78122
        "param",
78123
        "source",
78124
        "track",
78125
        "wbr",
78126
      ];
78127
      if (whiteList.indexOf(this.name) !== -1) s += "/>";
78128
      else s += "></" + this.name + ">";
78129
    } else {
78130
      s += "/>";
78131
    }
78132
78133
    return s;
78134
  };
78135
78136
  // Alternative XML nodes
78137
78138
  function XmlTextNode(text) {
78139
    this.text = text;
78140
  }
78141
78142
  XmlTextNode.prototype.toString = function (options) {
78143
    return formatText(escapeXML(this.text), options);
78144
  };
78145
78146
  XmlTextNode.prototype.toStringWithIndent = function (indent, options) {
78147
    return indent + this.toString(options);
78148
  };
78149
78150
  function XmlCDataNode(cdata) {
78151
    this.cdata = cdata;
78152
  }
78153
78154
  XmlCDataNode.prototype.toString = function (options) {
78155
    return "<![CDATA[" + formatText(this.cdata, options) + "]]>";
78156
  };
78157
78158
  XmlCDataNode.prototype.toStringWithIndent = function (indent, options) {
78159
    return indent + this.toString(options);
78160
  };
78161
78162
  function XmlCommentNode(comment) {
78163
    this.comment = comment;
78164
  }
78165
78166
  XmlCommentNode.prototype.toString = function (options) {
78167
    return "<!--" + formatText(escapeXML(this.comment), options) + "-->";
78168
  };
78169
78170
  XmlCommentNode.prototype.toStringWithIndent = function (indent, options) {
78171
    return indent + this.toString(options);
78172
  };
78173
78174
  // Node type tag
78175
78176
  XmlElement.prototype.type = "element";
78177
  XmlTextNode.prototype.type = "text";
78178
  XmlCDataNode.prototype.type = "cdata";
78179
  XmlCommentNode.prototype.type = "comment";
78180
78181
  /*
78182
   * XmlDocument is the class we expose to the user; it uses the sax parser to create a hierarchy
78183
   * of XmlElements.
78184
   */
78185
78186
  function XmlDocument(xml) {
78187
    xml && (xml = xml.toString().trim());
78188
78189
    if (!xml) throw new Error("No XML to parse!");
78190
78191
    // Stores doctype (if defined)
78192
    this.doctype = "";
78193
78194
    // Expose the parser to the other delegates while the parser is running
78195
    this.parser = sax.parser(true); // strict
78196
    addParserEvents(this.parser);
78197
78198
    // We'll use the file-scoped "delegates" var to remember what elements we're currently
78199
    // parsing; they will push and pop off the stack as we get deeper into the XML hierarchy.
78200
    // It's safe to use a global because JS is single-threaded.
78201
    delegates = [this];
78202
78203
    this.parser.write(xml);
78204
78205
    // Remove the parser as it is no longer needed and should not be exposed to clients
78206
    delete this.parser;
78207
  }
78208
78209
  // make XmlDocument inherit XmlElement's methods
78210
  extend(XmlDocument.prototype, XmlElement.prototype);
78211
78212
  XmlDocument.prototype._opentag = function (tag) {
78213
    if (typeof this.children === "undefined")
78214
      // the first tag we encounter should be the root - we'll "become" the root XmlElement
78215
      XmlElement.call(this, tag);
78216
    // all other tags will be the root element's children
78217
    else XmlElement.prototype._opentag.apply(this, arguments);
78218
  };
78219
78220
  XmlDocument.prototype._doctype = function (doctype) {
78221
    this.doctype += doctype;
78222
  };
78223
78224
  // file-scoped global stack of delegates
78225
  var delegates = null;
78226
78227
  /*
78228
   * Helper functions
78229
   */
78230
78231
  function addParserEvents(parser) {
78232
    parser.onopentag = parser_opentag;
78233
    parser.onclosetag = parser_closetag;
78234
    parser.ontext = parser_text;
78235
    parser.oncdata = parser_cdata;
78236
    parser.oncomment = parser_comment;
78237
    parser.ondoctype = parser_doctype;
78238
    parser.onerror = parser_error;
78239
  }
78240
78241
  // create these closures and cache them by keeping them file-scoped
78242
  function parser_opentag() {
78243
    delegates[0] && delegates[0]._opentag.apply(delegates[0], arguments);
78244
  }
78245
  function parser_closetag() {
78246
    delegates[0] && delegates[0]._closetag.apply(delegates[0], arguments);
78247
  }
78248
  function parser_text() {
78249
    delegates[0] && delegates[0]._text.apply(delegates[0], arguments);
78250
  }
78251
  function parser_cdata() {
78252
    delegates[0] && delegates[0]._cdata.apply(delegates[0], arguments);
78253
  }
78254
  function parser_comment() {
78255
    delegates[0] && delegates[0]._comment.apply(delegates[0], arguments);
78256
  }
78257
  function parser_doctype() {
78258
    delegates[0] && delegates[0]._doctype.apply(delegates[0], arguments);
78259
  }
78260
  function parser_error() {
78261
    delegates[0] && delegates[0]._error.apply(delegates[0], arguments);
78262
  }
78263
78264
  // a relatively standard extend method
78265
  function extend(destination, source) {
78266
    for (var prop in source)
78267
      if (source.hasOwnProperty(prop)) destination[prop] = source[prop];
78268
  }
78269
78270
  // escapes XML entities like "<", "&", etc.
78271
  function escapeXML(value) {
78272
    return value
78273
      .toString()
78274
      .replace(/&/g, "&amp;")
78275
      .replace(/</g, "&lt;")
78276
      .replace(/>/g, "&gt;")
78277
      .replace(/'/g, "&apos;")
78278
      .replace(/"/g, "&quot;");
78279
  }
78280
78281
  // formats some text for debugging given a few options
78282
  function formatText(text, options) {
78283
    var finalText = text;
78284
78285
    if (options && options.trimmed && text.length > 25) {
78286
      finalText = finalText.substring(0, 25).trim() + "…";
78287
    }
78288
78289
    if (!(options && options.preserveWhitespace)) {
78290
      finalText = finalText.trim();
78291
    }
78292
78293
    return finalText;
78294
  }
78295
78296
  // Are we being used in a Node-like environment?
78297
  if (
78298
     true &&
78299
    module.exports &&
78300
    !__webpack_require__.g.xmldocAssumeBrowser
78301
  ) {
78302
    module.exports.XmlDocument = XmlDocument;
78303
    module.exports.XmlElement = XmlElement;
78304
    module.exports.XmlTextNode = XmlTextNode;
78305
    module.exports.XmlCDataNode = XmlCDataNode;
78306
    module.exports.XmlCommentNode = XmlCommentNode;
78307
  } else {
78308
    this.XmlDocument = XmlDocument;
78309
    this.XmlElement = XmlElement;
78310
    this.XmlTextNode = XmlTextNode;
78311
    this.XmlCDataNode = XmlCDataNode;
78312
    this.XmlCommentNode = XmlCommentNode;
78313
  }
78314
})();
78315
78316
78317
/***/ }),
78318
78319
/***/ 6255:
78320
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
78321
78322
"use strict";
78323
78324
78325
// Internet Explorer polyfills
78326
if (typeof window !== 'undefined' && !window.Promise) {
78327
	__webpack_require__(3867);
78328
}
78329
__webpack_require__(4667);
78330
78331
var fetchUrl = function (url, headers) {
78332
	return new Promise(function (resolve, reject) {
78333
		var xhr = new XMLHttpRequest();
78334
		xhr.open('GET', url, true);
78335
		for (var headerName in headers) {
78336
			xhr.setRequestHeader(headerName, headers[headerName]);
78337
		}
78338
		xhr.responseType = 'arraybuffer';
78339
78340
		xhr.onreadystatechange = function () {
78341
			if (xhr.readyState !== 4) {
78342
				return;
78343
			}
78344
78345
			var ok = xhr.status >= 200 && xhr.status < 300;
78346
			if (!ok) {
78347
				setTimeout(function () {
78348
					reject(new TypeError('Failed to fetch (url: "' + url + '")'));
78349
				}, 0);
78350
			}
78351
		};
78352
78353
		xhr.onload = function () {
78354
			var ok = xhr.status >= 200 && xhr.status < 300;
78355
			if (ok) {
78356
				resolve(xhr.response);
78357
			}
78358
		};
78359
78360
		xhr.onerror = function () {
78361
			setTimeout(function () {
78362
				reject(new TypeError('Network request failed (url: "' + url + '")'));
78363
			}, 0);
78364
		};
78365
78366
		xhr.ontimeout = function () {
78367
			setTimeout(function () {
78368
				reject(new TypeError('Network request failed (url: "' + url + '")'));
78369
			}, 0);
78370
		};
78371
78372
		xhr.send();
78373
	});
78374
};
78375
78376
function URLBrowserResolver(fs) {
78377
	this.fs = fs;
78378
	this.resolving = {};
78379
}
78380
78381
URLBrowserResolver.prototype.resolve = function (url, headers) {
78382
	if (!this.resolving[url]) {
78383
		var _this = this;
78384
		this.resolving[url] = new Promise(function (resolve, reject) {
78385
			if (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {
78386
				if (_this.fs.existsSync(url)) {
78387
					// url was downloaded earlier
78388
					resolve();
78389
				} else {
78390
					fetchUrl(url, headers).then(function (buffer) {
78391
						_this.fs.writeFileSync(url, buffer);
78392
						resolve();
78393
					}, function (result) {
78394
						reject(result);
78395
					});
78396
				}
78397
			} else {
78398
				// cannot be resolved
78399
				resolve();
78400
			}
78401
		});
78402
	}
78403
78404
	return this.resolving[url];
78405
}
78406
78407
URLBrowserResolver.prototype.resolved = function () {
78408
	var _this = this;
78409
	return new Promise(function (resolve, reject) {
78410
		Promise.all(Object.values(_this.resolving)).then(function () {
78411
			resolve();
78412
		}, function (result) {
78413
			reject(result);
78414
		});
78415
	});
78416
}
78417
78418
module.exports = URLBrowserResolver;
78419
78420
78421
/***/ }),
78422
78423
/***/ 4275:
78424
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
78425
78426
"use strict";
78427
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
78428
78429
78430
var isFunction = (__webpack_require__(6225).isFunction);
78431
var isUndefined = (__webpack_require__(6225).isUndefined);
78432
var isNull = (__webpack_require__(6225).isNull);
78433
var FileSaver = __webpack_require__(2984);
78434
var saveAs = FileSaver.saveAs;
78435
78436
var defaultClientFonts = {
78437
	Roboto: {
78438
		normal: 'Roboto-Regular.ttf',
78439
		bold: 'Roboto-Medium.ttf',
78440
		italics: 'Roboto-Italic.ttf',
78441
		bolditalics: 'Roboto-MediumItalic.ttf'
78442
	}
78443
};
78444
78445
function Document(docDefinition, tableLayouts, fonts, vfs) {
78446
	this.docDefinition = docDefinition;
78447
	this.tableLayouts = tableLayouts || null;
78448
	this.fonts = fonts || defaultClientFonts;
78449
	this.vfs = vfs;
78450
}
78451
78452
function canCreatePdf() {
78453
	// Ensure the browser provides the level of support needed
78454
	try {
78455
		var arr = new Uint8Array(1)
78456
		var proto = { foo: function () { return 42 } }
78457
		Object.setPrototypeOf(proto, Uint8Array.prototype)
78458
		Object.setPrototypeOf(arr, proto)
78459
		return arr.foo() === 42
78460
	} catch (e) {
78461
		return false
78462
	}
78463
}
78464
78465
Document.prototype._createDoc = function (options, cb) {
78466
	var getExtendedUrl = function (url) {
78467
		if (typeof url === 'object') {
78468
			return { url: url.url, headers: url.headers };
78469
		}
78470
78471
		return { url: url, headers: {} };
78472
	};
78473
78474
	options = options || {};
78475
	if (this.tableLayouts) {
78476
		options.tableLayouts = this.tableLayouts;
78477
	}
78478
78479
	var PdfPrinter = __webpack_require__(8617);
78480
78481
	var printer = new PdfPrinter(this.fonts);
78482
	(__webpack_require__(3857).bindFS)(this.vfs); // bind virtual file system to file system
78483
78484
	if (!isFunction(cb)) {
78485
		var doc = printer.createPdfKitDocument(this.docDefinition, options);
78486
78487
		return doc;
78488
	}
78489
78490
	var URLBrowserResolver = __webpack_require__(6255);
78491
	var urlResolver = new URLBrowserResolver(__webpack_require__(3857));
78492
78493
	for (var font in this.fonts) {
78494
		if (this.fonts.hasOwnProperty(font)) {
78495
			if (this.fonts[font].normal) {
78496
				if (Array.isArray(this.fonts[font].normal)) { // TrueType Collection
78497
					var url = getExtendedUrl(this.fonts[font].normal[0]);
78498
					urlResolver.resolve(url.url, url.headers);
78499
					this.fonts[font].normal[0] = url.url;
78500
				} else {
78501
					var url = getExtendedUrl(this.fonts[font].normal);
78502
					urlResolver.resolve(url.url, url.headers);
78503
					this.fonts[font].normal = url.url;
78504
				}
78505
			}
78506
			if (this.fonts[font].bold) {
78507
				if (Array.isArray(this.fonts[font].bold)) { // TrueType Collection
78508
					var url = getExtendedUrl(this.fonts[font].bold[0]);
78509
					urlResolver.resolve(url.url, url.headers);
78510
					this.fonts[font].bold[0] = url.url;
78511
				} else {
78512
					var url = getExtendedUrl(this.fonts[font].bold);
78513
					urlResolver.resolve(url.url, url.headers);
78514
					this.fonts[font].bold = url.url;
78515
				}
78516
			}
78517
			if (this.fonts[font].italics) {
78518
				if (Array.isArray(this.fonts[font].italics)) { // TrueType Collection
78519
					var url = getExtendedUrl(this.fonts[font].italics[0]);
78520
					urlResolver.resolve(url.url, url.headers);
78521
					this.fonts[font].italics[0] = url.url;
78522
				} else {
78523
					var url = getExtendedUrl(this.fonts[font].italics);
78524
					urlResolver.resolve(url.url, url.headers);
78525
					this.fonts[font].italics = url.url;
78526
				}
78527
			}
78528
			if (this.fonts[font].bolditalics) {
78529
				if (Array.isArray(this.fonts[font].bolditalics)) { // TrueType Collection
78530
					var url = getExtendedUrl(this.fonts[font].bolditalics[0]);
78531
					urlResolver.resolve(url.url, url.headers);
78532
					this.fonts[font].bolditalics[0] = url.url;
78533
				} else {
78534
					var url = getExtendedUrl(this.fonts[font].bolditalics);
78535
					urlResolver.resolve(url.url, url.headers);
78536
					this.fonts[font].bolditalics = url.url;
78537
				}
78538
			}
78539
		}
78540
	}
78541
78542
	if (this.docDefinition.images) {
78543
		for (var image in this.docDefinition.images) {
78544
			if (this.docDefinition.images.hasOwnProperty(image)) {
78545
				var url = getExtendedUrl(this.docDefinition.images[image]);
78546
				urlResolver.resolve(url.url, url.headers);
78547
				this.docDefinition.images[image] = url.url;
78548
			}
78549
		}
78550
	}
78551
78552
	var _this = this;
78553
78554
	urlResolver.resolved().then(function () {
78555
		var doc = printer.createPdfKitDocument(_this.docDefinition, options);
78556
78557
		cb(doc);
78558
	}, function (result) {
78559
		throw result;
78560
	});
78561
};
78562
78563
Document.prototype._flushDoc = function (doc, callback) {
78564
	var chunks = [];
78565
	var result;
78566
78567
	doc.on('readable', function () {
78568
		var chunk;
78569
		while ((chunk = doc.read(9007199254740991)) !== null) {
78570
			chunks.push(chunk);
78571
		}
78572
	});
78573
	doc.on('end', function () {
78574
		result = Buffer.concat(chunks);
78575
		callback(result, doc._pdfMakePages);
78576
	});
78577
	doc.end();
78578
};
78579
78580
Document.prototype._getPages = function (options, cb) {
78581
	if (!cb) {
78582
		throw '_getPages is an async method and needs a callback argument';
78583
	}
78584
	var _this = this;
78585
78586
	this._createDoc(options, function (doc) {
78587
		_this._flushDoc(doc, function (ignoreBuffer, pages) {
78588
			cb(pages);
78589
		});
78590
	});
78591
};
78592
78593
Document.prototype._bufferToBlob = function (buffer) {
78594
	var blob;
78595
	try {
78596
		blob = new Blob([buffer], { type: 'application/pdf' });
78597
	} catch (e) {
78598
		// Old browser which can't handle it without making it an byte array (ie10)
78599
		if (e.name === 'InvalidStateError') {
78600
			var byteArray = new Uint8Array(buffer);
78601
			blob = new Blob([byteArray.buffer], { type: 'application/pdf' });
78602
		}
78603
	}
78604
78605
	if (!blob) {
78606
		throw 'Could not generate blob';
78607
	}
78608
78609
	return blob;
78610
};
78611
78612
Document.prototype._openWindow = function () {
78613
	// we have to open the window immediately and store the reference
78614
	// otherwise popup blockers will stop us
78615
	var win = window.open('', '_blank');
78616
	if (win === null) {
78617
		throw 'Open PDF in new window blocked by browser';
78618
	}
78619
78620
	return win;
78621
};
78622
78623
Document.prototype._openPdf = function (options, win) {
78624
	if (!win) {
78625
		win = this._openWindow();
78626
	}
78627
	try {
78628
		this.getBlob(function (result) {
78629
			var urlCreator = window.URL || window.webkitURL;
78630
			var pdfUrl = urlCreator.createObjectURL(result);
78631
			win.location.href = pdfUrl;
78632
78633
			/* temporarily disabled
78634
			if (win !== window) {
78635
				setTimeout(function () {
78636
					if (isNull(win.window)) { // is closed by AdBlock
78637
						window.location.href = pdfUrl; // open in actual window
78638
					}
78639
				}, 500);
78640
			}
78641
			*/
78642
		}, options);
78643
	} catch (e) {
78644
		win.close();
78645
		throw e;
78646
	}
78647
};
78648
78649
Document.prototype.open = function (options, win) {
78650
	options = options || {};
78651
	options.autoPrint = false;
78652
	win = win || null;
78653
78654
	this._openPdf(options, win);
78655
};
78656
78657
78658
Document.prototype.print = function (options, win) {
78659
	options = options || {};
78660
	options.autoPrint = true;
78661
	win = win || null;
78662
78663
	this._openPdf(options, win);
78664
};
78665
78666
/**
78667
 * download(defaultFileName = 'file.pdf', cb = null, options = {})
78668
 * or
78669
 * download(cb, options = {})
78670
 */
78671
Document.prototype.download = function (defaultFileName, cb, options) {
78672
	if (isFunction(defaultFileName)) {
78673
		if (!isUndefined(cb)) {
78674
			options = cb;
78675
		}
78676
		cb = defaultFileName;
78677
		defaultFileName = null;
78678
	}
78679
78680
	defaultFileName = defaultFileName || 'file.pdf';
78681
	this.getBlob(function (result) {
78682
		saveAs(result, defaultFileName);
78683
78684
		if (isFunction(cb)) {
78685
			cb();
78686
		}
78687
	}, options);
78688
};
78689
78690
Document.prototype.getBase64 = function (cb, options) {
78691
	if (!cb) {
78692
		throw 'getBase64 is an async method and needs a callback argument';
78693
	}
78694
	this.getBuffer(function (buffer) {
78695
		cb(buffer.toString('base64'));
78696
	}, options);
78697
};
78698
78699
Document.prototype.getDataUrl = function (cb, options) {
78700
	if (!cb) {
78701
		throw 'getDataUrl is an async method and needs a callback argument';
78702
	}
78703
	this.getBuffer(function (buffer) {
78704
		cb('data:application/pdf;base64,' + buffer.toString('base64'));
78705
	}, options);
78706
};
78707
78708
Document.prototype.getBlob = function (cb, options) {
78709
	if (!cb) {
78710
		throw 'getBlob is an async method and needs a callback argument';
78711
	}
78712
	var that = this;
78713
	this.getBuffer(function (result) {
78714
		var blob = that._bufferToBlob(result);
78715
		cb(blob);
78716
	}, options);
78717
};
78718
78719
Document.prototype.getBuffer = function (cb, options) {
78720
	if (!cb) {
78721
		throw 'getBuffer is an async method and needs a callback argument';
78722
	}
78723
78724
	var _this = this;
78725
78726
	this._createDoc(options, function (doc) {
78727
		_this._flushDoc(doc, function (buffer) {
78728
			cb(buffer);
78729
		});
78730
	});
78731
};
78732
78733
Document.prototype.getStream = function (options, cb) {
78734
	if (!isFunction(cb)) {
78735
		var doc = this._createDoc(options);
78736
		return doc;
78737
	}
78738
78739
	this._createDoc(options, function (doc) {
78740
		cb(doc);
78741
	});
78742
};
78743
78744
module.exports = {
78745
	createPdf: function (docDefinition, tableLayouts, fonts, vfs) {
78746
		if (!canCreatePdf()) {
78747
			throw 'Your browser does not provide the level of support needed';
78748
		}
78749
		return new Document(
78750
			docDefinition,
78751
			tableLayouts || __webpack_require__.g.pdfMake.tableLayouts,
78752
			fonts || __webpack_require__.g.pdfMake.fonts,
78753
			vfs || __webpack_require__.g.pdfMake.vfs
78754
		);
78755
	}
78756
};
78757
78758
78759
/***/ }),
78760
78761
/***/ 3857:
78762
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
78763
78764
"use strict";
78765
var __dirname = "/";
78766
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
78767
78768
78769
function VirtualFileSystem() {
78770
	this.fileSystem = {};
78771
	this.dataSystem = {};
78772
}
78773
78774
VirtualFileSystem.prototype.existsSync = function (filename) {
78775
	filename = fixFilename(filename);
78776
	return typeof this.fileSystem[filename] !== 'undefined'
78777
		|| typeof this.dataSystem[filename] !== 'undefined';
78778
}
78779
78780
VirtualFileSystem.prototype.readFileSync = function (filename, options) {
78781
	filename = fixFilename(filename);
78782
78783
	var dataContent = this.dataSystem[filename];
78784
	if (typeof dataContent === 'string' && options === 'utf8') {
78785
		return dataContent;
78786
	}
78787
78788
	if (dataContent) {
78789
		return new Buffer(dataContent, typeof dataContent === 'string' ? 'base64' : undefined);
78790
	}
78791
78792
	var content = this.fileSystem[filename];
78793
	if (content) {
78794
		return content;
78795
	}
78796
78797
	throw 'File \'' + filename + '\' not found in virtual file system';
78798
};
78799
78800
VirtualFileSystem.prototype.writeFileSync = function (filename, content) {
78801
	this.fileSystem[fixFilename(filename)] = content;
78802
};
78803
78804
VirtualFileSystem.prototype.bindFS = function (data) {
78805
	this.dataSystem = data || {};
78806
};
78807
78808
78809
function fixFilename(filename) {
78810
	if (filename.indexOf(__dirname) === 0) {
78811
		filename = filename.substring(__dirname.length);
78812
	}
78813
78814
	if (filename.indexOf('/') === 0) {
78815
		filename = filename.substring(1);
78816
	}
78817
78818
	return filename;
78819
}
78820
78821
module.exports = new VirtualFileSystem();
78822
78823
78824
/***/ }),
78825
78826
/***/ 4498:
78827
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
78828
78829
"use strict";
78830
78831
78832
var isString = (__webpack_require__(6225).isString);
78833
78834
function buildColumnWidths(columns, availableWidth) {
78835
	var autoColumns = [],
78836
		autoMin = 0, autoMax = 0,
78837
		starColumns = [],
78838
		starMaxMin = 0,
78839
		starMaxMax = 0,
78840
		fixedColumns = [],
78841
		initial_availableWidth = availableWidth;
78842
78843
	columns.forEach(function (column) {
78844
		if (isAutoColumn(column)) {
78845
			autoColumns.push(column);
78846
			autoMin += column._minWidth;
78847
			autoMax += column._maxWidth;
78848
		} else if (isStarColumn(column)) {
78849
			starColumns.push(column);
78850
			starMaxMin = Math.max(starMaxMin, column._minWidth);
78851
			starMaxMax = Math.max(starMaxMax, column._maxWidth);
78852
		} else {
78853
			fixedColumns.push(column);
78854
		}
78855
	});
78856
78857
	fixedColumns.forEach(function (col) {
78858
		// width specified as %
78859
		if (isString(col.width) && /\d+%/.test(col.width)) {
78860
			col.width = parseFloat(col.width) * initial_availableWidth / 100;
78861
		}
78862
		if (col.width < (col._minWidth) && col.elasticWidth) {
78863
			col._calcWidth = col._minWidth;
78864
		} else {
78865
			col._calcWidth = col.width;
78866
		}
78867
78868
		availableWidth -= col._calcWidth;
78869
	});
78870
78871
	// http://www.freesoft.org/CIE/RFC/1942/18.htm
78872
	// http://www.w3.org/TR/CSS2/tables.html#width-layout
78873
	// http://dev.w3.org/csswg/css3-tables-algorithms/Overview.src.htm
78874
	var minW = autoMin + starMaxMin * starColumns.length;
78875
	var maxW = autoMax + starMaxMax * starColumns.length;
78876
	if (minW >= availableWidth) {
78877
		// case 1 - there's no way to fit all columns within available width
78878
		// that's actually pretty bad situation with PDF as we have no horizontal scroll
78879
		// no easy workaround (unless we decide, in the future, to split single words)
78880
		// currently we simply use minWidths for all columns
78881
		autoColumns.forEach(function (col) {
78882
			col._calcWidth = col._minWidth;
78883
		});
78884
78885
		starColumns.forEach(function (col) {
78886
			col._calcWidth = starMaxMin; // starMaxMin already contains padding
78887
		});
78888
	} else {
78889
		if (maxW < availableWidth) {
78890
			// case 2 - we can fit rest of the table within available space
78891
			autoColumns.forEach(function (col) {
78892
				col._calcWidth = col._maxWidth;
78893
				availableWidth -= col._calcWidth;
78894
			});
78895
		} else {
78896
			// maxW is too large, but minW fits within available width
78897
			var W = availableWidth - minW;
78898
			var D = maxW - minW;
78899
78900
			autoColumns.forEach(function (col) {
78901
				var d = col._maxWidth - col._minWidth;
78902
				col._calcWidth = col._minWidth + d * W / D;
78903
				availableWidth -= col._calcWidth;
78904
			});
78905
		}
78906
78907
		if (starColumns.length > 0) {
78908
			var starSize = availableWidth / starColumns.length;
78909
78910
			starColumns.forEach(function (col) {
78911
				col._calcWidth = starSize;
78912
			});
78913
		}
78914
	}
78915
}
78916
78917
function isAutoColumn(column) {
78918
	return column.width === 'auto';
78919
}
78920
78921
function isStarColumn(column) {
78922
	return column.width === null || column.width === undefined || column.width === '*' || column.width === 'star';
78923
}
78924
78925
//TODO: refactor and reuse in measureTable
78926
function measureMinMax(columns) {
78927
	var result = { min: 0, max: 0 };
78928
78929
	var maxStar = { min: 0, max: 0 };
78930
	var starCount = 0;
78931
78932
	for (var i = 0, l = columns.length; i < l; i++) {
78933
		var c = columns[i];
78934
78935
		if (isStarColumn(c)) {
78936
			maxStar.min = Math.max(maxStar.min, c._minWidth);
78937
			maxStar.max = Math.max(maxStar.max, c._maxWidth);
78938
			starCount++;
78939
		} else if (isAutoColumn(c)) {
78940
			result.min += c._minWidth;
78941
			result.max += c._maxWidth;
78942
		} else {
78943
			result.min += ((c.width !== undefined && c.width) || c._minWidth);
78944
			result.max += ((c.width !== undefined && c.width) || c._maxWidth);
78945
		}
78946
	}
78947
78948
	if (starCount) {
78949
		result.min += starCount * maxStar.min;
78950
		result.max += starCount * maxStar.max;
78951
	}
78952
78953
	return result;
78954
}
78955
78956
/**
78957
 * Calculates column widths
78958
 * @private
78959
 */
78960
module.exports = {
78961
	buildColumnWidths: buildColumnWidths,
78962
	measureMinMax: measureMinMax,
78963
	isAutoColumn: isAutoColumn,
78964
	isStarColumn: isStarColumn
78965
};
78966
78967
78968
/***/ }),
78969
78970
/***/ 1728:
78971
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
78972
78973
"use strict";
78974
/*eslint no-unused-vars: ["error", {"args": "none"}]*/
78975
78976
78977
78978
var TextTools = __webpack_require__(1350);
78979
var StyleContextStack = __webpack_require__(7597);
78980
var ColumnCalculator = __webpack_require__(4498);
78981
var isString = (__webpack_require__(6225).isString);
78982
var isNumber = (__webpack_require__(6225).isNumber);
78983
var isObject = (__webpack_require__(6225).isObject);
78984
var isArray = (__webpack_require__(6225).isArray);
78985
var fontStringify = (__webpack_require__(6225).fontStringify);
78986
var getNodeId = (__webpack_require__(6225).getNodeId);
78987
var pack = (__webpack_require__(6225).pack);
78988
var qrEncoder = __webpack_require__(145);
78989
78990
/**
78991
 * @private
78992
 */
78993
function DocMeasure(fontProvider, styleDictionary, defaultStyle, imageMeasure, svgMeasure, tableLayouts, images) {
78994
	this.textTools = new TextTools(fontProvider);
78995
	this.styleStack = new StyleContextStack(styleDictionary, defaultStyle);
78996
	this.imageMeasure = imageMeasure;
78997
	this.svgMeasure = svgMeasure;
78998
	this.tableLayouts = tableLayouts;
78999
	this.images = images;
79000
	this.autoImageIndex = 1;
79001
}
79002
79003
/**
79004
 * Measures all nodes and sets min/max-width properties required for the second
79005
 * layout-pass.
79006
 * @param  {Object} docStructure document-definition-object
79007
 * @return {Object}              document-measurement-object
79008
 */
79009
DocMeasure.prototype.measureDocument = function (docStructure) {
79010
	return this.measureNode(docStructure);
79011
};
79012
79013
DocMeasure.prototype.measureNode = function (node) {
79014
79015
	var self = this;
79016
79017
	return this.styleStack.auto(node, function () {
79018
		// TODO: refactor + rethink whether this is the proper way to handle margins
79019
		node._margin = getNodeMargin(node);
79020
79021
		if (node.columns) {
79022
			return extendMargins(self.measureColumns(node));
79023
		} else if (node.stack) {
79024
			return extendMargins(self.measureVerticalContainer(node));
79025
		} else if (node.ul) {
79026
			return extendMargins(self.measureUnorderedList(node));
79027
		} else if (node.ol) {
79028
			return extendMargins(self.measureOrderedList(node));
79029
		} else if (node.table) {
79030
			return extendMargins(self.measureTable(node));
79031
		} else if (node.text !== undefined) {
79032
			return extendMargins(self.measureLeaf(node));
79033
		} else if (node.toc) {
79034
			return extendMargins(self.measureToc(node));
79035
		} else if (node.image) {
79036
			return extendMargins(self.measureImage(node));
79037
		} else if (node.svg) {
79038
			return extendMargins(self.measureSVG(node));
79039
		} else if (node.canvas) {
79040
			return extendMargins(self.measureCanvas(node));
79041
		} else if (node.qr) {
79042
			return extendMargins(self.measureQr(node));
79043
		} else {
79044
			throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
79045
		}
79046
	});
79047
79048
	function extendMargins(node) {
79049
		var margin = node._margin;
79050
79051
		if (margin) {
79052
			node._minWidth += margin[0] + margin[2];
79053
			node._maxWidth += margin[0] + margin[2];
79054
		}
79055
79056
		return node;
79057
	}
79058
79059
	function getNodeMargin() {
79060
79061
		function processSingleMargins(node, currentMargin) {
79062
			if (node.marginLeft || node.marginTop || node.marginRight || node.marginBottom) {
79063
				return [
79064
					node.marginLeft || currentMargin[0] || 0,
79065
					node.marginTop || currentMargin[1] || 0,
79066
					node.marginRight || currentMargin[2] || 0,
79067
					node.marginBottom || currentMargin[3] || 0
79068
				];
79069
			}
79070
			return currentMargin;
79071
		}
79072
79073
		function flattenStyleArray(styleArray) {
79074
			var flattenedStyles = {};
79075
			for (var i = styleArray.length - 1; i >= 0; i--) {
79076
				var styleName = styleArray[i];
79077
				var style = self.styleStack.styleDictionary[styleName];
79078
				for (var key in style) {
79079
					if (style.hasOwnProperty(key)) {
79080
						flattenedStyles[key] = style[key];
79081
					}
79082
				}
79083
			}
79084
			return flattenedStyles;
79085
		}
79086
79087
		function convertMargin(margin) {
79088
			if (isNumber(margin)) {
79089
				margin = [margin, margin, margin, margin];
79090
			} else if (isArray(margin)) {
79091
				if (margin.length === 2) {
79092
					margin = [margin[0], margin[1], margin[0], margin[1]];
79093
				}
79094
			}
79095
			return margin;
79096
		}
79097
79098
		var margin = [undefined, undefined, undefined, undefined];
79099
79100
		if (node.style) {
79101
			var styleArray = isArray(node.style) ? node.style : [node.style];
79102
			var flattenedStyleArray = flattenStyleArray(styleArray);
79103
79104
			if (flattenedStyleArray) {
79105
				margin = processSingleMargins(flattenedStyleArray, margin);
79106
			}
79107
79108
			if (flattenedStyleArray.margin) {
79109
				margin = convertMargin(flattenedStyleArray.margin);
79110
			}
79111
		}
79112
79113
		margin = processSingleMargins(node, margin);
79114
79115
		if (node.margin) {
79116
			margin = convertMargin(node.margin);
79117
		}
79118
79119
		if (margin[0] === undefined && margin[1] === undefined && margin[2] === undefined && margin[3] === undefined) {
79120
			return null;
79121
		} else {
79122
			return margin;
79123
		}
79124
	}
79125
};
79126
79127
DocMeasure.prototype.convertIfBase64Image = function (node) {
79128
	if (/^data:image\/(jpeg|jpg|png);base64,/.test(node.image)) {
79129
		var label = '$$pdfmake$$' + this.autoImageIndex++;
79130
		this.images[label] = node.image;
79131
		node.image = label;
79132
	}
79133
};
79134
79135
DocMeasure.prototype.measureImageWithDimensions = function (node, dimensions) {
79136
	if (node.fit) {
79137
		var factor = (dimensions.width / dimensions.height > node.fit[0] / node.fit[1]) ? node.fit[0] / dimensions.width : node.fit[1] / dimensions.height;
79138
		node._width = node._minWidth = node._maxWidth = dimensions.width * factor;
79139
		node._height = dimensions.height * factor;
79140
	} else {
79141
		node._width = node._minWidth = node._maxWidth = node.width || dimensions.width;
79142
		node._height = node.height || (dimensions.height * node._width / dimensions.width);
79143
79144
		if (isNumber(node.maxWidth) && node.maxWidth < node._width) {
79145
			node._width = node._minWidth = node._maxWidth = node.maxWidth;
79146
			node._height = node._width * dimensions.height / dimensions.width;
79147
		}
79148
79149
		if (isNumber(node.maxHeight) && node.maxHeight < node._height) {
79150
			node._height = node.maxHeight;
79151
			node._width = node._minWidth = node._maxWidth = node._height * dimensions.width / dimensions.height;
79152
		}
79153
79154
		if (isNumber(node.minWidth) && node.minWidth > node._width) {
79155
			node._width = node._minWidth = node._maxWidth = node.minWidth;
79156
			node._height = node._width * dimensions.height / dimensions.width;
79157
		}
79158
79159
		if (isNumber(node.minHeight) && node.minHeight > node._height) {
79160
			node._height = node.minHeight;
79161
			node._width = node._minWidth = node._maxWidth = node._height * dimensions.width / dimensions.height;
79162
		}
79163
	}
79164
79165
	node._alignment = this.styleStack.getProperty('alignment');
79166
};
79167
79168
DocMeasure.prototype.measureImage = function (node) {
79169
	if (this.images) {
79170
		this.convertIfBase64Image(node);
79171
	}
79172
79173
	var dimensions = this.imageMeasure.measureImage(node.image);
79174
79175
	this.measureImageWithDimensions(node, dimensions);
79176
79177
	return node;
79178
};
79179
79180
DocMeasure.prototype.measureSVG = function (node) {
79181
79182
	var dimensions = this.svgMeasure.measureSVG(node.svg);
79183
79184
	this.measureImageWithDimensions(node, dimensions);
79185
79186
	node.font = this.styleStack.getProperty('font');
79187
79188
	// scale SVG based on final dimension
79189
	node.svg = this.svgMeasure.writeDimensions(node.svg, {
79190
		width: node._width,
79191
		height: node._height
79192
	});
79193
79194
	return node;
79195
};
79196
79197
DocMeasure.prototype.measureLeaf = function (node) {
79198
79199
	if (node._textRef && node._textRef._textNodeRef.text) {
79200
		node.text = node._textRef._textNodeRef.text;
79201
	}
79202
79203
	// Make sure style properties of the node itself are considered when building inlines.
79204
	// We could also just pass [node] to buildInlines, but that fails for bullet points.
79205
	var styleStack = this.styleStack.clone();
79206
	styleStack.push(node);
79207
79208
	var data = this.textTools.buildInlines(node.text, styleStack);
79209
79210
	node._inlines = data.items;
79211
	node._minWidth = data.minWidth;
79212
	node._maxWidth = data.maxWidth;
79213
79214
	return node;
79215
};
79216
79217
DocMeasure.prototype.measureToc = function (node) {
79218
	if (node.toc.title) {
79219
		node.toc.title = this.measureNode(node.toc.title);
79220
	}
79221
79222
	if (node.toc._items.length > 0) {
79223
		var body = [];
79224
		var textStyle = node.toc.textStyle || {};
79225
		var numberStyle = node.toc.numberStyle || textStyle;
79226
		var textMargin = node.toc.textMargin || [0, 0, 0, 0];
79227
		for (var i = 0, l = node.toc._items.length; i < l; i++) {
79228
			var item = node.toc._items[i];
79229
			var lineStyle = item._textNodeRef.tocStyle || textStyle;
79230
			var lineMargin = item._textNodeRef.tocMargin || textMargin;
79231
			var lineNumberStyle = item._textNodeRef.tocNumberStyle || numberStyle;
79232
			var destination = getNodeId(item._nodeRef);
79233
			body.push([
79234
				{ text: item._textNodeRef.text, linkToDestination: destination, alignment: 'left', style: lineStyle, margin: lineMargin },
79235
				{ text: '00000', linkToDestination: destination, alignment: 'right', _tocItemRef: item._nodeRef, style: lineNumberStyle, margin: [0, lineMargin[1], 0, lineMargin[3]] }
79236
			]);
79237
		}
79238
79239
79240
		node.toc._table = {
79241
			table: {
79242
				dontBreakRows: true,
79243
				widths: ['*', 'auto'],
79244
				body: body
79245
			},
79246
			layout: 'noBorders'
79247
		};
79248
79249
		node.toc._table = this.measureNode(node.toc._table);
79250
	}
79251
79252
	return node;
79253
};
79254
79255
DocMeasure.prototype.measureVerticalContainer = function (node) {
79256
	var items = node.stack;
79257
79258
	node._minWidth = 0;
79259
	node._maxWidth = 0;
79260
79261
	for (var i = 0, l = items.length; i < l; i++) {
79262
		items[i] = this.measureNode(items[i]);
79263
79264
		node._minWidth = Math.max(node._minWidth, items[i]._minWidth);
79265
		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);
79266
	}
79267
79268
	return node;
79269
};
79270
79271
DocMeasure.prototype.gapSizeForList = function () {
79272
	return this.textTools.sizeOfString('9. ', this.styleStack);
79273
};
79274
79275
DocMeasure.prototype.buildUnorderedMarker = function (styleStack, gapSize, type) {
79276
	function buildDisc(gapSize, color) {
79277
		// TODO: ascender-based calculations
79278
		var radius = gapSize.fontSize / 6;
79279
		return {
79280
			canvas: [{
79281
				x: radius,
79282
				y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,
79283
				r1: radius,
79284
				r2: radius,
79285
				type: 'ellipse',
79286
				color: color
79287
			}]
79288
		};
79289
	}
79290
79291
	function buildSquare(gapSize, color) {
79292
		// TODO: ascender-based calculations
79293
		var size = gapSize.fontSize / 3;
79294
		return {
79295
			canvas: [{
79296
				x: 0,
79297
				y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - (gapSize.fontSize / 3) - (size / 2),
79298
				h: size,
79299
				w: size,
79300
				type: 'rect',
79301
				color: color
79302
			}]
79303
		};
79304
	}
79305
79306
	function buildCircle(gapSize, color) {
79307
		// TODO: ascender-based calculations
79308
		var radius = gapSize.fontSize / 6;
79309
		return {
79310
			canvas: [{
79311
				x: radius,
79312
				y: (gapSize.height / gapSize.lineHeight) + gapSize.descender - gapSize.fontSize / 3,
79313
				r1: radius,
79314
				r2: radius,
79315
				type: 'ellipse',
79316
				lineColor: color
79317
			}]
79318
		};
79319
	}
79320
79321
	var marker;
79322
	var color = styleStack.getProperty('markerColor') || styleStack.getProperty('color') || 'black';
79323
79324
	switch (type) {
79325
		case 'circle':
79326
			marker = buildCircle(gapSize, color);
79327
			break;
79328
79329
		case 'square':
79330
			marker = buildSquare(gapSize, color);
79331
			break;
79332
79333
		case 'none':
79334
			marker = {};
79335
			break;
79336
79337
		case 'disc':
79338
		default:
79339
			marker = buildDisc(gapSize, color);
79340
			break;
79341
	}
79342
79343
	marker._minWidth = marker._maxWidth = gapSize.width;
79344
	marker._minHeight = marker._maxHeight = gapSize.height;
79345
79346
	return marker;
79347
};
79348
79349
DocMeasure.prototype.buildOrderedMarker = function (counter, styleStack, type, separator) {
79350
	function prepareAlpha(counter) {
79351
		function toAlpha(num) {
79352
			return (num >= 26 ? toAlpha((num / 26 >> 0) - 1) : '') + 'abcdefghijklmnopqrstuvwxyz'[num % 26 >> 0];
79353
		}
79354
79355
		if (counter < 1) {
79356
			return counter.toString();
79357
		}
79358
79359
		return toAlpha(counter - 1);
79360
	}
79361
79362
	function prepareRoman(counter) {
79363
		if (counter < 1 || counter > 4999) {
79364
			return counter.toString();
79365
		}
79366
		var num = counter;
79367
		var lookup = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }, roman = '', i;
79368
		for (i in lookup) {
79369
			while (num >= lookup[i]) {
79370
				roman += i;
79371
				num -= lookup[i];
79372
			}
79373
		}
79374
		return roman;
79375
	}
79376
79377
	function prepareDecimal(counter) {
79378
		return counter.toString();
79379
	}
79380
79381
	var counterText;
79382
	switch (type) {
79383
		case 'none':
79384
			counterText = null;
79385
			break;
79386
79387
		case 'upper-alpha':
79388
			counterText = prepareAlpha(counter).toUpperCase();
79389
			break;
79390
79391
		case 'lower-alpha':
79392
			counterText = prepareAlpha(counter);
79393
			break;
79394
79395
		case 'upper-roman':
79396
			counterText = prepareRoman(counter);
79397
			break;
79398
79399
		case 'lower-roman':
79400
			counterText = prepareRoman(counter).toLowerCase();
79401
			break;
79402
79403
		case 'decimal':
79404
		default:
79405
			counterText = prepareDecimal(counter);
79406
			break;
79407
	}
79408
79409
	if (counterText === null) {
79410
		return {};
79411
	}
79412
79413
	if (separator) {
79414
		if (isArray(separator)) {
79415
			if (separator[0]) {
79416
				counterText = separator[0] + counterText;
79417
			}
79418
79419
			if (separator[1]) {
79420
				counterText += separator[1];
79421
			}
79422
			counterText += ' ';
79423
		} else {
79424
			counterText += separator + ' ';
79425
		}
79426
	}
79427
79428
	var textArray = { text: counterText };
79429
	var markerColor = styleStack.getProperty('markerColor');
79430
	if (markerColor) {
79431
		textArray.color = markerColor;
79432
	}
79433
79434
	return { _inlines: this.textTools.buildInlines(textArray, styleStack).items };
79435
};
79436
79437
DocMeasure.prototype.measureUnorderedList = function (node) {
79438
	var style = this.styleStack.clone();
79439
	var items = node.ul;
79440
	node.type = node.type || 'disc';
79441
	node._gapSize = this.gapSizeForList();
79442
	node._minWidth = 0;
79443
	node._maxWidth = 0;
79444
79445
	for (var i = 0, l = items.length; i < l; i++) {
79446
		var item = items[i] = this.measureNode(items[i]);
79447
79448
		if (!item.ol && !item.ul) {
79449
			item.listMarker = this.buildUnorderedMarker(style, node._gapSize, item.listType || node.type);
79450
		}
79451
79452
		node._minWidth = Math.max(node._minWidth, items[i]._minWidth + node._gapSize.width);
79453
		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth + node._gapSize.width);
79454
	}
79455
79456
	return node;
79457
};
79458
79459
DocMeasure.prototype.measureOrderedList = function (node) {
79460
	var style = this.styleStack.clone();
79461
	var items = node.ol;
79462
	node.type = node.type || 'decimal';
79463
	node.separator = node.separator || '.';
79464
	node.reversed = node.reversed || false;
79465
	if (!isNumber(node.start)) {
79466
		node.start = node.reversed ? items.length : 1;
79467
	}
79468
	node._gapSize = this.gapSizeForList();
79469
	node._minWidth = 0;
79470
	node._maxWidth = 0;
79471
79472
	var counter = node.start;
79473
	for (var i = 0, l = items.length; i < l; i++) {
79474
		var item = items[i] = this.measureNode(items[i]);
79475
79476
		if (!item.ol && !item.ul) {
79477
			var counterValue = isNumber(item.counter) ? item.counter : counter;
79478
			item.listMarker = this.buildOrderedMarker(counterValue, style, item.listType || node.type, node.separator);
79479
			if (item.listMarker._inlines) {
79480
				node._gapSize.width = Math.max(node._gapSize.width, item.listMarker._inlines[0].width);
79481
			}
79482
		}  // TODO: else - nested lists numbering
79483
79484
		node._minWidth = Math.max(node._minWidth, items[i]._minWidth);
79485
		node._maxWidth = Math.max(node._maxWidth, items[i]._maxWidth);
79486
79487
		if (node.reversed) {
79488
			counter--;
79489
		} else {
79490
			counter++;
79491
		}
79492
	}
79493
79494
	node._minWidth += node._gapSize.width;
79495
	node._maxWidth += node._gapSize.width;
79496
79497
	for (var i = 0, l = items.length; i < l; i++) {
79498
		var item = items[i];
79499
		if (!item.ol && !item.ul) {
79500
			item.listMarker._minWidth = item.listMarker._maxWidth = node._gapSize.width;
79501
		}
79502
	}
79503
79504
	return node;
79505
};
79506
79507
DocMeasure.prototype.measureColumns = function (node) {
79508
	var columns = node.columns;
79509
	node._gap = this.styleStack.getProperty('columnGap') || 0;
79510
79511
	for (var i = 0, l = columns.length; i < l; i++) {
79512
		columns[i] = this.measureNode(columns[i]);
79513
	}
79514
79515
	var measures = ColumnCalculator.measureMinMax(columns);
79516
79517
	var numGaps = (columns.length > 0) ? (columns.length - 1) : 0;
79518
	node._minWidth = measures.min + node._gap * numGaps;
79519
	node._maxWidth = measures.max + node._gap * numGaps;
79520
79521
	return node;
79522
};
79523
79524
DocMeasure.prototype.measureTable = function (node) {
79525
	extendTableWidths(node);
79526
	node._layout = getLayout(this.tableLayouts);
79527
	node._offsets = getOffsets(node._layout);
79528
79529
	var colSpans = [];
79530
	var col, row, cols, rows;
79531
79532
	for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
79533
		var c = node.table.widths[col];
79534
		c._minWidth = 0;
79535
		c._maxWidth = 0;
79536
79537
		for (row = 0, rows = node.table.body.length; row < rows; row++) {
79538
			var rowData = node.table.body[row];
79539
			var data = rowData[col];
79540
			if (data === undefined) {
79541
				console.error('Malformed table row ', rowData, 'in node ', node);
79542
				throw 'Malformed table row, a cell is undefined.';
79543
			}
79544
			if (data === null) { // transform to object
79545
				data = '';
79546
			}
79547
79548
			if (!data._span) {
79549
				data = rowData[col] = this.styleStack.auto(data, measureCb(this, data));
79550
79551
				if (data.colSpan && data.colSpan > 1) {
79552
					markSpans(rowData, col, data.colSpan);
79553
					colSpans.push({ col: col, span: data.colSpan, minWidth: data._minWidth, maxWidth: data._maxWidth });
79554
				} else {
79555
					c._minWidth = Math.max(c._minWidth, data._minWidth);
79556
					c._maxWidth = Math.max(c._maxWidth, data._maxWidth);
79557
				}
79558
			}
79559
79560
			if (data.rowSpan && data.rowSpan > 1) {
79561
				markVSpans(node.table, row, col, data.rowSpan);
79562
			}
79563
		}
79564
	}
79565
79566
	extendWidthsForColSpans();
79567
79568
	var measures = ColumnCalculator.measureMinMax(node.table.widths);
79569
79570
	node._minWidth = measures.min + node._offsets.total;
79571
	node._maxWidth = measures.max + node._offsets.total;
79572
79573
	return node;
79574
79575
	function measureCb(_this, data) {
79576
		return function () {
79577
			if (isObject(data)) {
79578
				data.fillColor = _this.styleStack.getProperty('fillColor');
79579
				data.fillOpacity = _this.styleStack.getProperty('fillOpacity');
79580
			}
79581
			return _this.measureNode(data);
79582
		};
79583
	}
79584
79585
	function getLayout(tableLayouts) {
79586
		var layout = node.layout;
79587
79588
		if (isString(layout)) {
79589
			layout = tableLayouts[layout];
79590
		}
79591
79592
		var defaultLayout = {
79593
			hLineWidth: function (i, node) {
79594
				return 1;
79595
			},
79596
			vLineWidth: function (i, node) {
79597
				return 1;
79598
			},
79599
			hLineColor: function (i, node) {
79600
				return 'black';
79601
			},
79602
			vLineColor: function (i, node) {
79603
				return 'black';
79604
			},
79605
			hLineStyle: function (i, node) {
79606
				return null;
79607
			},
79608
			vLineStyle: function (i, node) {
79609
				return null;
79610
			},
79611
			paddingLeft: function (i, node) {
79612
				return 4;
79613
			},
79614
			paddingRight: function (i, node) {
79615
				return 4;
79616
			},
79617
			paddingTop: function (i, node) {
79618
				return 2;
79619
			},
79620
			paddingBottom: function (i, node) {
79621
				return 2;
79622
			},
79623
			fillColor: function (i, node) {
79624
				return null;
79625
			},
79626
			fillOpacity: function (i, node) {
79627
				return 1;
79628
			},
79629
			defaultBorder: true
79630
		};
79631
79632
		return pack(defaultLayout, layout);
79633
	}
79634
79635
	function getOffsets(layout) {
79636
		var offsets = [];
79637
		var totalOffset = 0;
79638
		var prevRightPadding = 0;
79639
79640
		for (var i = 0, l = node.table.widths.length; i < l; i++) {
79641
			var lOffset = prevRightPadding + layout.vLineWidth(i, node) + layout.paddingLeft(i, node);
79642
			offsets.push(lOffset);
79643
			totalOffset += lOffset;
79644
			prevRightPadding = layout.paddingRight(i, node);
79645
		}
79646
79647
		totalOffset += prevRightPadding + layout.vLineWidth(node.table.widths.length, node);
79648
79649
		return {
79650
			total: totalOffset,
79651
			offsets: offsets
79652
		};
79653
	}
79654
79655
	function extendWidthsForColSpans() {
79656
		var q, j;
79657
79658
		for (var i = 0, l = colSpans.length; i < l; i++) {
79659
			var span = colSpans[i];
79660
79661
			var currentMinMax = getMinMax(span.col, span.span, node._offsets);
79662
			var minDifference = span.minWidth - currentMinMax.minWidth;
79663
			var maxDifference = span.maxWidth - currentMinMax.maxWidth;
79664
79665
			if (minDifference > 0) {
79666
				q = minDifference / span.span;
79667
79668
				for (j = 0; j < span.span; j++) {
79669
					node.table.widths[span.col + j]._minWidth += q;
79670
				}
79671
			}
79672
79673
			if (maxDifference > 0) {
79674
				q = maxDifference / span.span;
79675
79676
				for (j = 0; j < span.span; j++) {
79677
					node.table.widths[span.col + j]._maxWidth += q;
79678
				}
79679
			}
79680
		}
79681
	}
79682
79683
	function getMinMax(col, span, offsets) {
79684
		var result = { minWidth: 0, maxWidth: 0 };
79685
79686
		for (var i = 0; i < span; i++) {
79687
			result.minWidth += node.table.widths[col + i]._minWidth + (i ? offsets.offsets[col + i] : 0);
79688
			result.maxWidth += node.table.widths[col + i]._maxWidth + (i ? offsets.offsets[col + i] : 0);
79689
		}
79690
79691
		return result;
79692
	}
79693
79694
	function markSpans(rowData, col, span) {
79695
		for (var i = 1; i < span; i++) {
79696
			rowData[col + i] = {
79697
				_span: true,
79698
				_minWidth: 0,
79699
				_maxWidth: 0,
79700
				rowSpan: rowData[col].rowSpan
79701
			};
79702
		}
79703
	}
79704
79705
	function markVSpans(table, row, col, span) {
79706
		for (var i = 1; i < span; i++) {
79707
			table.body[row + i][col] = {
79708
				_span: true,
79709
				_minWidth: 0,
79710
				_maxWidth: 0,
79711
				fillColor: table.body[row][col].fillColor,
79712
				fillOpacity: table.body[row][col].fillOpacity
79713
			};
79714
		}
79715
	}
79716
79717
	function extendTableWidths(node) {
79718
		if (!node.table.widths) {
79719
			node.table.widths = 'auto';
79720
		}
79721
79722
		if (isString(node.table.widths)) {
79723
			node.table.widths = [node.table.widths];
79724
79725
			while (node.table.widths.length < node.table.body[0].length) {
79726
				node.table.widths.push(node.table.widths[node.table.widths.length - 1]);
79727
			}
79728
		}
79729
79730
		for (var i = 0, l = node.table.widths.length; i < l; i++) {
79731
			var w = node.table.widths[i];
79732
			if (isNumber(w) || isString(w)) {
79733
				node.table.widths[i] = { width: w };
79734
			}
79735
		}
79736
	}
79737
};
79738
79739
DocMeasure.prototype.measureCanvas = function (node) {
79740
	var w = 0, h = 0;
79741
79742
	for (var i = 0, l = node.canvas.length; i < l; i++) {
79743
		var vector = node.canvas[i];
79744
79745
		switch (vector.type) {
79746
			case 'ellipse':
79747
				w = Math.max(w, vector.x + vector.r1);
79748
				h = Math.max(h, vector.y + vector.r2);
79749
				break;
79750
			case 'rect':
79751
				w = Math.max(w, vector.x + vector.w);
79752
				h = Math.max(h, vector.y + vector.h);
79753
				break;
79754
			case 'line':
79755
				w = Math.max(w, vector.x1, vector.x2);
79756
				h = Math.max(h, vector.y1, vector.y2);
79757
				break;
79758
			case 'polyline':
79759
				for (var i2 = 0, l2 = vector.points.length; i2 < l2; i2++) {
79760
					w = Math.max(w, vector.points[i2].x);
79761
					h = Math.max(h, vector.points[i2].y);
79762
				}
79763
				break;
79764
		}
79765
	}
79766
79767
	node._minWidth = node._maxWidth = w;
79768
	node._minHeight = node._maxHeight = h;
79769
	node._alignment = this.styleStack.getProperty('alignment');
79770
79771
	return node;
79772
};
79773
79774
DocMeasure.prototype.measureQr = function (node) {
79775
	node = qrEncoder.measure(node);
79776
	node._alignment = this.styleStack.getProperty('alignment');
79777
	return node;
79778
};
79779
79780
module.exports = DocMeasure;
79781
79782
79783
/***/ }),
79784
79785
/***/ 4889:
79786
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
79787
79788
"use strict";
79789
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
79790
79791
79792
var isString = (__webpack_require__(6225).isString);
79793
var isNumber = (__webpack_require__(6225).isNumber);
79794
var isBoolean = (__webpack_require__(6225).isBoolean);
79795
var isArray = (__webpack_require__(6225).isArray);
79796
var isUndefined = (__webpack_require__(6225).isUndefined);
79797
var fontStringify = (__webpack_require__(6225).fontStringify);
79798
79799
function DocPreprocessor() {
79800
79801
}
79802
79803
DocPreprocessor.prototype.preprocessDocument = function (docStructure) {
79804
	this.parentNode = null;
79805
	this.tocs = [];
79806
	this.nodeReferences = [];
79807
	return this.preprocessNode(docStructure);
79808
};
79809
79810
DocPreprocessor.prototype.preprocessNode = function (node) {
79811
	// expand shortcuts and casting values
79812
	if (isArray(node)) {
79813
		node = { stack: node };
79814
	} else if (isString(node)) {
79815
		node = { text: node };
79816
	} else if (isNumber(node) || isBoolean(node)) {
79817
		node = { text: node.toString() };
79818
	} else if (node === undefined || node === null) {
79819
		node = { text: '' };
79820
	} else if (Object.keys(node).length === 0) { // empty object
79821
		node = { text: '' };
79822
	} else if ('text' in node && (node.text === undefined || node.text === null)) {
79823
		node.text = '';
79824
	}
79825
79826
	if (node.columns) {
79827
		return this.preprocessColumns(node);
79828
	} else if (node.stack) {
79829
		return this.preprocessVerticalContainer(node);
79830
	} else if (node.ul) {
79831
		return this.preprocessList(node);
79832
	} else if (node.ol) {
79833
		return this.preprocessList(node);
79834
	} else if (node.table) {
79835
		return this.preprocessTable(node);
79836
	} else if (node.text !== undefined) {
79837
		return this.preprocessText(node);
79838
	} else if (node.toc) {
79839
		return this.preprocessToc(node);
79840
	} else if (node.image) {
79841
		return this.preprocessImage(node);
79842
	} else if (node.svg) {
79843
		return this.preprocessSVG(node);
79844
	} else if (node.canvas) {
79845
		return this.preprocessCanvas(node);
79846
	} else if (node.qr) {
79847
		return this.preprocessQr(node);
79848
	} else if (node.pageReference || node.textReference) {
79849
		return this.preprocessText(node);
79850
	} else {
79851
		throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
79852
	}
79853
};
79854
79855
DocPreprocessor.prototype.preprocessColumns = function (node) {
79856
	var columns = node.columns;
79857
79858
	for (var i = 0, l = columns.length; i < l; i++) {
79859
		columns[i] = this.preprocessNode(columns[i]);
79860
	}
79861
79862
	return node;
79863
};
79864
79865
DocPreprocessor.prototype.preprocessVerticalContainer = function (node) {
79866
	var items = node.stack;
79867
79868
	for (var i = 0, l = items.length; i < l; i++) {
79869
		items[i] = this.preprocessNode(items[i]);
79870
	}
79871
79872
	return node;
79873
};
79874
79875
DocPreprocessor.prototype.preprocessList = function (node) {
79876
	var items = node.ul || node.ol;
79877
79878
	for (var i = 0, l = items.length; i < l; i++) {
79879
		items[i] = this.preprocessNode(items[i]);
79880
	}
79881
79882
	return node;
79883
};
79884
79885
DocPreprocessor.prototype.preprocessTable = function (node) {
79886
	var col, row, cols, rows;
79887
79888
	for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
79889
		for (row = 0, rows = node.table.body.length; row < rows; row++) {
79890
			var rowData = node.table.body[row];
79891
			var data = rowData[col];
79892
			if (data !== undefined) {
79893
				if (data === null) { // transform to object
79894
					data = '';
79895
				}
79896
				if (!data._span) {
79897
					rowData[col] = this.preprocessNode(data);
79898
				}
79899
			}
79900
		}
79901
	}
79902
79903
	return node;
79904
};
79905
79906
DocPreprocessor.prototype.preprocessText = function (node) {
79907
	if (node.tocItem) {
79908
		if (!isArray(node.tocItem)) {
79909
			node.tocItem = [node.tocItem];
79910
		}
79911
79912
		for (var i = 0, l = node.tocItem.length; i < l; i++) {
79913
			if (!isString(node.tocItem[i])) {
79914
				node.tocItem[i] = '_default_';
79915
			}
79916
79917
			var tocItemId = node.tocItem[i];
79918
79919
			if (!this.tocs[tocItemId]) {
79920
				this.tocs[tocItemId] = { toc: { _items: [], _pseudo: true } };
79921
			}
79922
79923
			if (!node.id) {
79924
				node.id = 'toc-' + tocItemId + '-' + this.tocs[tocItemId].toc._items.length;
79925
			}
79926
79927
			var tocItemRef = {
79928
				_nodeRef: this._getNodeForNodeRef(node),
79929
				_textNodeRef: node
79930
			};
79931
			this.tocs[tocItemId].toc._items.push(tocItemRef);
79932
		}
79933
	}
79934
79935
	if (node.id) {
79936
		if (this.nodeReferences[node.id]) {
79937
			if (!this.nodeReferences[node.id]._pseudo) {
79938
				throw "Node id '" + node.id + "' already exists";
79939
			}
79940
79941
			this.nodeReferences[node.id]._nodeRef = this._getNodeForNodeRef(node);
79942
			this.nodeReferences[node.id]._textNodeRef = node;
79943
			this.nodeReferences[node.id]._pseudo = false;
79944
		} else {
79945
			this.nodeReferences[node.id] = {
79946
				_nodeRef: this._getNodeForNodeRef(node),
79947
				_textNodeRef: node
79948
			};
79949
		}
79950
	}
79951
79952
	if (node.pageReference) {
79953
		if (!this.nodeReferences[node.pageReference]) {
79954
			this.nodeReferences[node.pageReference] = {
79955
				_nodeRef: {},
79956
				_textNodeRef: {},
79957
				_pseudo: true
79958
			};
79959
		}
79960
		node.text = '00000';
79961
		node.linkToDestination = node.pageReference;
79962
		node._pageRef = this.nodeReferences[node.pageReference];
79963
	}
79964
79965
	if (node.textReference) {
79966
		if (!this.nodeReferences[node.textReference]) {
79967
			this.nodeReferences[node.textReference] = { _nodeRef: {}, _pseudo: true };
79968
		}
79969
79970
		node.text = '';
79971
		node.linkToDestination = node.textReference;
79972
		node._textRef = this.nodeReferences[node.textReference];
79973
	}
79974
79975
	if (node.text && node.text.text) {
79976
		node.text = [this.preprocessNode(node.text)];
79977
	} else if (isArray(node.text)) {
79978
		var isSetParentNode = false;
79979
		if (this.parentNode === null) {
79980
			this.parentNode = node;
79981
			isSetParentNode = true;
79982
		}
79983
79984
		for (var i = 0, l = node.text.length; i < l; i++) {
79985
			node.text[i] = this.preprocessNode(node.text[i]);
79986
		}
79987
79988
		if (isSetParentNode) {
79989
			this.parentNode = null;
79990
		}
79991
	}
79992
79993
	return node;
79994
};
79995
79996
DocPreprocessor.prototype.preprocessToc = function (node) {
79997
	if (!node.toc.id) {
79998
		node.toc.id = '_default_';
79999
	}
80000
80001
	node.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;
80002
	node.toc._items = [];
80003
80004
	if (this.tocs[node.toc.id]) {
80005
		if (!this.tocs[node.toc.id].toc._pseudo) {
80006
			throw "TOC '" + node.toc.id + "' already exists";
80007
		}
80008
80009
		node.toc._items = this.tocs[node.toc.id].toc._items;
80010
	}
80011
80012
	this.tocs[node.toc.id] = node;
80013
80014
	return node;
80015
};
80016
80017
DocPreprocessor.prototype.preprocessImage = function (node) {
80018
	if (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {
80019
		node.image = Buffer.from(node.image.data);
80020
	}
80021
	return node;
80022
};
80023
80024
DocPreprocessor.prototype.preprocessSVG = function (node) {
80025
	return node;
80026
};
80027
80028
DocPreprocessor.prototype.preprocessCanvas = function (node) {
80029
	return node;
80030
};
80031
80032
DocPreprocessor.prototype.preprocessQr = function (node) {
80033
	return node;
80034
};
80035
80036
DocPreprocessor.prototype._getNodeForNodeRef = function (node) {
80037
	if (this.parentNode) {
80038
		return this.parentNode;
80039
	}
80040
80041
	return node;
80042
}
80043
80044
module.exports = DocPreprocessor;
80045
80046
80047
/***/ }),
80048
80049
/***/ 3858:
80050
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
80051
80052
"use strict";
80053
80054
80055
var TraversalTracker = __webpack_require__(8537);
80056
var isString = (__webpack_require__(6225).isString);
80057
80058
/**
80059
 * Creates an instance of DocumentContext - a store for current x, y positions and available width/height.
80060
 * It facilitates column divisions and vertical sync
80061
 */
80062
function DocumentContext(pageSize, pageMargins) {
80063
	this.pages = [];
80064
80065
	this.pageMargins = pageMargins;
80066
80067
	this.x = pageMargins.left;
80068
	this.availableWidth = pageSize.width - pageMargins.left - pageMargins.right;
80069
	this.availableHeight = 0;
80070
	this.page = -1;
80071
80072
	this.snapshots = [];
80073
80074
	this.endingCell = null;
80075
80076
	this.tracker = new TraversalTracker();
80077
80078
	this.backgroundLength = [];
80079
80080
	this.addPage(pageSize);
80081
}
80082
80083
DocumentContext.prototype.beginColumnGroup = function () {
80084
	this.snapshots.push({
80085
		x: this.x,
80086
		y: this.y,
80087
		availableHeight: this.availableHeight,
80088
		availableWidth: this.availableWidth,
80089
		page: this.page,
80090
		bottomMost: {
80091
			x: this.x,
80092
			y: this.y,
80093
			availableHeight: this.availableHeight,
80094
			availableWidth: this.availableWidth,
80095
			page: this.page
80096
		},
80097
		endingCell: this.endingCell,
80098
		lastColumnWidth: this.lastColumnWidth
80099
	});
80100
80101
	this.lastColumnWidth = 0;
80102
};
80103
80104
DocumentContext.prototype.beginColumn = function (width, offset, endingCell) {
80105
	var saved = this.snapshots[this.snapshots.length - 1];
80106
80107
	this.calculateBottomMost(saved);
80108
80109
	this.endingCell = endingCell;
80110
	this.page = saved.page;
80111
	this.x = this.x + this.lastColumnWidth + (offset || 0);
80112
	this.y = saved.y;
80113
	this.availableWidth = width;	//saved.availableWidth - offset;
80114
	this.availableHeight = saved.availableHeight;
80115
80116
	this.lastColumnWidth = width;
80117
};
80118
80119
DocumentContext.prototype.calculateBottomMost = function (destContext) {
80120
	if (this.endingCell) {
80121
		this.saveContextInEndingCell(this.endingCell);
80122
		this.endingCell = null;
80123
	} else {
80124
		destContext.bottomMost = bottomMostContext(this, destContext.bottomMost);
80125
	}
80126
};
80127
80128
DocumentContext.prototype.markEnding = function (endingCell) {
80129
	this.page = endingCell._columnEndingContext.page;
80130
	this.x = endingCell._columnEndingContext.x;
80131
	this.y = endingCell._columnEndingContext.y;
80132
	this.availableWidth = endingCell._columnEndingContext.availableWidth;
80133
	this.availableHeight = endingCell._columnEndingContext.availableHeight;
80134
	this.lastColumnWidth = endingCell._columnEndingContext.lastColumnWidth;
80135
};
80136
80137
DocumentContext.prototype.saveContextInEndingCell = function (endingCell) {
80138
	endingCell._columnEndingContext = {
80139
		page: this.page,
80140
		x: this.x,
80141
		y: this.y,
80142
		availableHeight: this.availableHeight,
80143
		availableWidth: this.availableWidth,
80144
		lastColumnWidth: this.lastColumnWidth
80145
	};
80146
};
80147
80148
DocumentContext.prototype.completeColumnGroup = function (height) {
80149
	var saved = this.snapshots.pop();
80150
80151
	this.calculateBottomMost(saved);
80152
80153
	this.endingCell = null;
80154
	this.x = saved.x;
80155
80156
	var y = saved.bottomMost.y;
80157
	if (height) {
80158
		if (saved.page === saved.bottomMost.page) {
80159
			if ((saved.y + height) > y) {
80160
				y = saved.y + height;
80161
			}
80162
		} else {
80163
			y += height;
80164
		}
80165
	}
80166
80167
	this.y = y;
80168
	this.page = saved.bottomMost.page;
80169
	this.availableWidth = saved.availableWidth;
80170
	this.availableHeight = saved.bottomMost.availableHeight;
80171
	if (height) {
80172
		this.availableHeight -= (y - saved.bottomMost.y);
80173
	}
80174
	this.lastColumnWidth = saved.lastColumnWidth;
80175
};
80176
80177
DocumentContext.prototype.addMargin = function (left, right) {
80178
	this.x += left;
80179
	this.availableWidth -= left + (right || 0);
80180
};
80181
80182
DocumentContext.prototype.moveDown = function (offset) {
80183
	this.y += offset;
80184
	this.availableHeight -= offset;
80185
80186
	return this.availableHeight > 0;
80187
};
80188
80189
DocumentContext.prototype.initializePage = function () {
80190
	this.y = this.pageMargins.top;
80191
	this.availableHeight = this.getCurrentPage().pageSize.height - this.pageMargins.top - this.pageMargins.bottom;
80192
	this.pageSnapshot().availableWidth = this.getCurrentPage().pageSize.width - this.pageMargins.left - this.pageMargins.right;
80193
};
80194
80195
DocumentContext.prototype.pageSnapshot = function () {
80196
	if (this.snapshots[0]) {
80197
		return this.snapshots[0];
80198
	} else {
80199
		return this;
80200
	}
80201
};
80202
80203
DocumentContext.prototype.moveTo = function (x, y) {
80204
	if (x !== undefined && x !== null) {
80205
		this.x = x;
80206
		this.availableWidth = this.getCurrentPage().pageSize.width - this.x - this.pageMargins.right;
80207
	}
80208
	if (y !== undefined && y !== null) {
80209
		this.y = y;
80210
		this.availableHeight = this.getCurrentPage().pageSize.height - this.y - this.pageMargins.bottom;
80211
	}
80212
};
80213
80214
DocumentContext.prototype.moveToRelative = function (x, y) {
80215
	if (x !== undefined && x !== null) {
80216
		this.x = this.x + x;
80217
	}
80218
	if (y !== undefined && y !== null) {
80219
		this.y = this.y + y;
80220
	}
80221
};
80222
80223
DocumentContext.prototype.beginDetachedBlock = function () {
80224
	this.snapshots.push({
80225
		x: this.x,
80226
		y: this.y,
80227
		availableHeight: this.availableHeight,
80228
		availableWidth: this.availableWidth,
80229
		page: this.page,
80230
		endingCell: this.endingCell,
80231
		lastColumnWidth: this.lastColumnWidth
80232
	});
80233
};
80234
80235
DocumentContext.prototype.endDetachedBlock = function () {
80236
	var saved = this.snapshots.pop();
80237
80238
	this.x = saved.x;
80239
	this.y = saved.y;
80240
	this.availableWidth = saved.availableWidth;
80241
	this.availableHeight = saved.availableHeight;
80242
	this.page = saved.page;
80243
	this.endingCell = saved.endingCell;
80244
	this.lastColumnWidth = saved.lastColumnWidth;
80245
};
80246
80247
function pageOrientation(pageOrientationString, currentPageOrientation) {
80248
	if (pageOrientationString === undefined) {
80249
		return currentPageOrientation;
80250
	} else if (isString(pageOrientationString) && (pageOrientationString.toLowerCase() === 'landscape')) {
80251
		return 'landscape';
80252
	} else {
80253
		return 'portrait';
80254
	}
80255
}
80256
80257
var getPageSize = function (currentPage, newPageOrientation) {
80258
80259
	newPageOrientation = pageOrientation(newPageOrientation, currentPage.pageSize.orientation);
80260
80261
	if (newPageOrientation !== currentPage.pageSize.orientation) {
80262
		return {
80263
			orientation: newPageOrientation,
80264
			width: currentPage.pageSize.height,
80265
			height: currentPage.pageSize.width
80266
		};
80267
	} else {
80268
		return {
80269
			orientation: currentPage.pageSize.orientation,
80270
			width: currentPage.pageSize.width,
80271
			height: currentPage.pageSize.height
80272
		};
80273
	}
80274
80275
};
80276
80277
80278
DocumentContext.prototype.moveToNextPage = function (pageOrientation) {
80279
	var nextPageIndex = this.page + 1;
80280
80281
	var prevPage = this.page;
80282
	var prevY = this.y;
80283
80284
	var createNewPage = nextPageIndex >= this.pages.length;
80285
	if (createNewPage) {
80286
		var currentAvailableWidth = this.availableWidth;
80287
		var currentPageOrientation = this.getCurrentPage().pageSize.orientation;
80288
80289
		var pageSize = getPageSize(this.getCurrentPage(), pageOrientation);
80290
		this.addPage(pageSize);
80291
80292
		if (currentPageOrientation === pageSize.orientation) {
80293
			this.availableWidth = currentAvailableWidth;
80294
		}
80295
	} else {
80296
		this.page = nextPageIndex;
80297
		this.initializePage();
80298
	}
80299
80300
	return {
80301
		newPageCreated: createNewPage,
80302
		prevPage: prevPage,
80303
		prevY: prevY,
80304
		y: this.y
80305
	};
80306
};
80307
80308
80309
DocumentContext.prototype.addPage = function (pageSize) {
80310
	var page = { items: [], pageSize: pageSize };
80311
	this.pages.push(page);
80312
	this.backgroundLength.push(0);
80313
	this.page = this.pages.length - 1;
80314
	this.initializePage();
80315
80316
	this.tracker.emit('pageAdded');
80317
80318
	return page;
80319
};
80320
80321
DocumentContext.prototype.getCurrentPage = function () {
80322
	if (this.page < 0 || this.page >= this.pages.length) {
80323
		return null;
80324
	}
80325
80326
	return this.pages[this.page];
80327
};
80328
80329
DocumentContext.prototype.getCurrentPosition = function () {
80330
	var pageSize = this.getCurrentPage().pageSize;
80331
	var innerHeight = pageSize.height - this.pageMargins.top - this.pageMargins.bottom;
80332
	var innerWidth = pageSize.width - this.pageMargins.left - this.pageMargins.right;
80333
80334
	return {
80335
		pageNumber: this.page + 1,
80336
		pageOrientation: pageSize.orientation,
80337
		pageInnerHeight: innerHeight,
80338
		pageInnerWidth: innerWidth,
80339
		left: this.x,
80340
		top: this.y,
80341
		verticalRatio: ((this.y - this.pageMargins.top) / innerHeight),
80342
		horizontalRatio: ((this.x - this.pageMargins.left) / innerWidth)
80343
	};
80344
};
80345
80346
function bottomMostContext(c1, c2) {
80347
	var r;
80348
80349
	if (c1.page > c2.page) {
80350
		r = c1;
80351
	} else if (c2.page > c1.page) {
80352
		r = c2;
80353
	} else {
80354
		r = (c1.y > c2.y) ? c1 : c2;
80355
	}
80356
80357
	return {
80358
		page: r.page,
80359
		x: r.x,
80360
		y: r.y,
80361
		availableHeight: r.availableHeight,
80362
		availableWidth: r.availableWidth
80363
	};
80364
}
80365
80366
module.exports = DocumentContext;
80367
80368
80369
/***/ }),
80370
80371
/***/ 1196:
80372
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
80373
80374
"use strict";
80375
80376
80377
var Line = __webpack_require__(4775);
80378
var isNumber = (__webpack_require__(6225).isNumber);
80379
var pack = (__webpack_require__(6225).pack);
80380
var offsetVector = (__webpack_require__(6225).offsetVector);
80381
var DocumentContext = __webpack_require__(3858);
80382
80383
/**
80384
 * Creates an instance of ElementWriter - a line/vector writer, which adds
80385
 * elements to current page and sets their positions based on the context
80386
 */
80387
function ElementWriter(context, tracker) {
80388
	this.context = context;
80389
	this.contextStack = [];
80390
	this.tracker = tracker;
80391
}
80392
80393
function addPageItem(page, item, index) {
80394
	if (index === null || index === undefined || index < 0 || index > page.items.length) {
80395
		page.items.push(item);
80396
	} else {
80397
		page.items.splice(index, 0, item);
80398
	}
80399
}
80400
80401
ElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {
80402
	var height = line.getHeight();
80403
	var context = this.context;
80404
	var page = context.getCurrentPage(),
80405
		position = this.getCurrentPositionOnPage();
80406
80407
	if (context.availableHeight < height || !page) {
80408
		return false;
80409
	}
80410
80411
	line.x = context.x + (line.x || 0);
80412
	line.y = context.y + (line.y || 0);
80413
80414
	this.alignLine(line);
80415
80416
	addPageItem(page, {
80417
		type: 'line',
80418
		item: line
80419
	}, index);
80420
	this.tracker.emit('lineAdded', line);
80421
80422
	if (!dontUpdateContextPosition) {
80423
		context.moveDown(height);
80424
	}
80425
80426
	return position;
80427
};
80428
80429
ElementWriter.prototype.alignLine = function (line) {
80430
	var width = this.context.availableWidth;
80431
	var lineWidth = line.getWidth();
80432
80433
	var alignment = line.inlines && line.inlines.length > 0 && line.inlines[0].alignment;
80434
80435
	var offset = 0;
80436
	switch (alignment) {
80437
		case 'right':
80438
			offset = width - lineWidth;
80439
			break;
80440
		case 'center':
80441
			offset = (width - lineWidth) / 2;
80442
			break;
80443
	}
80444
80445
	if (offset) {
80446
		line.x = (line.x || 0) + offset;
80447
	}
80448
80449
	if (alignment === 'justify' &&
80450
		!line.newLineForced &&
80451
		!line.lastLineInParagraph &&
80452
		line.inlines.length > 1) {
80453
		var additionalSpacing = (width - lineWidth) / (line.inlines.length - 1);
80454
80455
		for (var i = 1, l = line.inlines.length; i < l; i++) {
80456
			offset = i * additionalSpacing;
80457
80458
			line.inlines[i].x += offset;
80459
			line.inlines[i].justifyShift = additionalSpacing;
80460
		}
80461
	}
80462
};
80463
80464
ElementWriter.prototype.addImage = function (image, index, type) {
80465
	var context = this.context;
80466
	var page = context.getCurrentPage(),
80467
		position = this.getCurrentPositionOnPage();
80468
80469
	if (!page || (image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0)) {
80470
		return false;
80471
	}
80472
80473
	if (image._x === undefined) {
80474
		image._x = image.x || 0;
80475
	}
80476
80477
	image.x = context.x + image._x;
80478
	image.y = context.y;
80479
80480
	this.alignImage(image);
80481
80482
	addPageItem(page, {
80483
		type: type || 'image',
80484
		item: image
80485
	}, index);
80486
80487
	context.moveDown(image._height);
80488
80489
	return position;
80490
};
80491
80492
ElementWriter.prototype.addSVG = function (image, index) {
80493
	return this.addImage(image, index, 'svg')
80494
};
80495
80496
ElementWriter.prototype.addQr = function (qr, index) {
80497
	var context = this.context;
80498
	var page = context.getCurrentPage(),
80499
		position = this.getCurrentPositionOnPage();
80500
80501
	if (!page || (qr.absolutePosition === undefined && context.availableHeight < qr._height)) {
80502
		return false;
80503
	}
80504
80505
	if (qr._x === undefined) {
80506
		qr._x = qr.x || 0;
80507
	}
80508
80509
	qr.x = context.x + qr._x;
80510
	qr.y = context.y;
80511
80512
	this.alignImage(qr);
80513
80514
	for (var i = 0, l = qr._canvas.length; i < l; i++) {
80515
		var vector = qr._canvas[i];
80516
		vector.x += qr.x;
80517
		vector.y += qr.y;
80518
		this.addVector(vector, true, true, index);
80519
	}
80520
80521
	context.moveDown(qr._height);
80522
80523
	return position;
80524
};
80525
80526
ElementWriter.prototype.alignImage = function (image) {
80527
	var width = this.context.availableWidth;
80528
	var imageWidth = image._minWidth;
80529
	var offset = 0;
80530
	switch (image._alignment) {
80531
		case 'right':
80532
			offset = width - imageWidth;
80533
			break;
80534
		case 'center':
80535
			offset = (width - imageWidth) / 2;
80536
			break;
80537
	}
80538
80539
	if (offset) {
80540
		image.x = (image.x || 0) + offset;
80541
	}
80542
};
80543
80544
ElementWriter.prototype.alignCanvas = function (node) {
80545
	var width = this.context.availableWidth;
80546
	var canvasWidth = node._minWidth;
80547
	var offset = 0;
80548
	switch (node._alignment) {
80549
		case 'right':
80550
			offset = width - canvasWidth;
80551
			break;
80552
		case 'center':
80553
			offset = (width - canvasWidth) / 2;
80554
			break;
80555
	}
80556
	if (offset) {
80557
		node.canvas.forEach(function (vector) {
80558
			offsetVector(vector, offset, 0);
80559
		});
80560
	}
80561
};
80562
80563
ElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {
80564
	var context = this.context;
80565
	var page = context.getCurrentPage(),
80566
		position = this.getCurrentPositionOnPage();
80567
80568
	if (page) {
80569
		offsetVector(vector, ignoreContextX ? 0 : context.x, ignoreContextY ? 0 : context.y);
80570
		addPageItem(page, {
80571
			type: 'vector',
80572
			item: vector
80573
		}, index);
80574
		return position;
80575
	}
80576
};
80577
80578
ElementWriter.prototype.beginClip = function (width, height) {
80579
	var ctx = this.context;
80580
	var page = ctx.getCurrentPage();
80581
	page.items.push({
80582
		type: 'beginClip',
80583
		item: { x: ctx.x, y: ctx.y, width: width, height: height }
80584
	});
80585
	return true;
80586
};
80587
80588
ElementWriter.prototype.endClip = function () {
80589
	var ctx = this.context;
80590
	var page = ctx.getCurrentPage();
80591
	page.items.push({
80592
		type: 'endClip'
80593
	});
80594
	return true;
80595
};
80596
80597
function cloneLine(line) {
80598
	var result = new Line(line.maxWidth);
80599
80600
	for (var key in line) {
80601
		if (line.hasOwnProperty(key)) {
80602
			result[key] = line[key];
80603
		}
80604
	}
80605
80606
	return result;
80607
}
80608
80609
ElementWriter.prototype.addFragment = function (block, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
80610
	var ctx = this.context;
80611
	var page = ctx.getCurrentPage();
80612
80613
	if (!useBlockXOffset && block.height > ctx.availableHeight) {
80614
		return false;
80615
	}
80616
80617
	block.items.forEach(function (item) {
80618
		switch (item.type) {
80619
			case 'line':
80620
				var l = cloneLine(item.item);
80621
80622
				if (l._node) {
80623
					l._node.positions[0].pageNumber = ctx.page + 1;
80624
				}
80625
				l.x = (l.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);
80626
				l.y = (l.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);
80627
80628
				page.items.push({
80629
					type: 'line',
80630
					item: l
80631
				});
80632
				break;
80633
80634
			case 'vector':
80635
				var v = pack(item.item);
80636
80637
				offsetVector(v, useBlockXOffset ? (block.xOffset || 0) : ctx.x, useBlockYOffset ? (block.yOffset || 0) : ctx.y);
80638
				page.items.push({
80639
					type: 'vector',
80640
					item: v
80641
				});
80642
				break;
80643
80644
			case 'image':
80645
			case 'svg':
80646
				var img = pack(item.item);
80647
80648
				img.x = (img.x || 0) + (useBlockXOffset ? (block.xOffset || 0) : ctx.x);
80649
				img.y = (img.y || 0) + (useBlockYOffset ? (block.yOffset || 0) : ctx.y);
80650
80651
				page.items.push({
80652
					type: item.type,
80653
					item: img
80654
				});
80655
				break;
80656
		}
80657
	});
80658
80659
	if (!dontUpdateContextPosition) {
80660
		ctx.moveDown(block.height);
80661
	}
80662
80663
	return true;
80664
};
80665
80666
/**
80667
 * Pushes the provided context onto the stack or creates a new one
80668
 *
80669
 * pushContext(context) - pushes the provided context and makes it current
80670
 * pushContext(width, height) - creates and pushes a new context with the specified width and height
80671
 * pushContext() - creates a new context for unbreakable blocks (with current availableWidth and full-page-height)
80672
 */
80673
ElementWriter.prototype.pushContext = function (contextOrWidth, height) {
80674
	if (contextOrWidth === undefined) {
80675
		height = this.context.getCurrentPage().height - this.context.pageMargins.top - this.context.pageMargins.bottom;
80676
		contextOrWidth = this.context.availableWidth;
80677
	}
80678
80679
	if (isNumber(contextOrWidth)) {
80680
		contextOrWidth = new DocumentContext({ width: contextOrWidth, height: height }, { left: 0, right: 0, top: 0, bottom: 0 });
80681
	}
80682
80683
	this.contextStack.push(this.context);
80684
	this.context = contextOrWidth;
80685
};
80686
80687
ElementWriter.prototype.popContext = function () {
80688
	this.context = this.contextStack.pop();
80689
};
80690
80691
ElementWriter.prototype.getCurrentPositionOnPage = function () {
80692
	return (this.contextStack[0] || this.context).getCurrentPosition();
80693
};
80694
80695
80696
module.exports = ElementWriter;
80697
80698
80699
/***/ }),
80700
80701
/***/ 2249:
80702
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
80703
80704
"use strict";
80705
80706
80707
var isArray = (__webpack_require__(6225).isArray);
80708
80709
function typeName(bold, italics) {
80710
	var type = 'normal';
80711
	if (bold && italics) {
80712
		type = 'bolditalics';
80713
	} else if (bold) {
80714
		type = 'bold';
80715
	} else if (italics) {
80716
		type = 'italics';
80717
	}
80718
	return type;
80719
}
80720
80721
function FontProvider(fontDescriptors, pdfKitDoc) {
80722
	this.fonts = {};
80723
	this.pdfKitDoc = pdfKitDoc;
80724
	this.fontCache = {};
80725
80726
	for (var font in fontDescriptors) {
80727
		if (fontDescriptors.hasOwnProperty(font)) {
80728
			var fontDef = fontDescriptors[font];
80729
80730
			this.fonts[font] = {
80731
				normal: fontDef.normal,
80732
				bold: fontDef.bold,
80733
				italics: fontDef.italics,
80734
				bolditalics: fontDef.bolditalics
80735
			};
80736
		}
80737
	}
80738
}
80739
80740
FontProvider.prototype.getFontType = function (bold, italics) {
80741
	return typeName(bold, italics);
80742
}
80743
80744
FontProvider.prototype.getFontFile = function (familyName, bold, italics) {
80745
	var type = this.getFontType(bold, italics);
80746
	if (!this.fonts[familyName] || !this.fonts[familyName][type]) {
80747
		return null;
80748
	}
80749
80750
	return this.fonts[familyName][type];
80751
}
80752
80753
FontProvider.prototype.provideFont = function (familyName, bold, italics) {
80754
	var type = this.getFontType(bold, italics);
80755
	if (this.getFontFile(familyName, bold, italics) === null) {
80756
		throw new Error('Font \'' + familyName + '\' in style \'' + type + '\' is not defined in the font section of the document definition.');
80757
	}
80758
80759
	this.fontCache[familyName] = this.fontCache[familyName] || {};
80760
80761
	if (!this.fontCache[familyName][type]) {
80762
		var def = this.fonts[familyName][type];
80763
		if (!isArray(def)) {
80764
			def = [def];
80765
		}
80766
		this.fontCache[familyName][type] = this.pdfKitDoc.font.apply(this.pdfKitDoc, def)._font;
80767
	}
80768
80769
	return this.fontCache[familyName][type];
80770
};
80771
80772
module.exports = FontProvider;
80773
80774
80775
/***/ }),
80776
80777
/***/ 6225:
80778
/***/ (function(module) {
80779
80780
"use strict";
80781
80782
80783
function isString(variable) {
80784
	return typeof variable === 'string' || variable instanceof String;
80785
}
80786
80787
function isNumber(variable) {
80788
	return typeof variable === 'number' || variable instanceof Number;
80789
}
80790
80791
function isBoolean(variable) {
80792
	return typeof variable === 'boolean';
80793
}
80794
80795
function isArray(variable) {
80796
	return Array.isArray(variable);
80797
}
80798
80799
function isFunction(variable) {
80800
	return typeof variable === 'function';
80801
}
80802
80803
function isObject(variable) {
80804
	return variable !== null && typeof variable === 'object';
80805
}
80806
80807
function isNull(variable) {
80808
	return variable === null;
80809
}
80810
80811
function isUndefined(variable) {
80812
	return variable === undefined;
80813
}
80814
80815
function pack() {
80816
	var result = {};
80817
80818
	for (var i = 0, l = arguments.length; i < l; i++) {
80819
		var obj = arguments[i];
80820
80821
		if (obj) {
80822
			for (var key in obj) {
80823
				if (obj.hasOwnProperty(key)) {
80824
					result[key] = obj[key];
80825
				}
80826
			}
80827
		}
80828
	}
80829
80830
	return result;
80831
}
80832
80833
function offsetVector(vector, x, y) {
80834
	switch (vector.type) {
80835
		case 'ellipse':
80836
		case 'rect':
80837
			vector.x += x;
80838
			vector.y += y;
80839
			break;
80840
		case 'line':
80841
			vector.x1 += x;
80842
			vector.x2 += x;
80843
			vector.y1 += y;
80844
			vector.y2 += y;
80845
			break;
80846
		case 'polyline':
80847
			for (var i = 0, l = vector.points.length; i < l; i++) {
80848
				vector.points[i].x += x;
80849
				vector.points[i].y += y;
80850
			}
80851
			break;
80852
	}
80853
}
80854
80855
function fontStringify(key, val) {
80856
	if (key === 'font') {
80857
		return 'font';
80858
	}
80859
	return val;
80860
}
80861
80862
function getNodeId(node) {
80863
	if (node.id) {
80864
		return node.id;
80865
	}
80866
80867
	if (isArray(node.text)) {
80868
		for (var i = 0, l = node.text.length; i < l; i++) {
80869
			var n = node.text[i];
80870
			var nodeId = getNodeId(n);
80871
			if (nodeId) {
80872
				return nodeId;
80873
			}
80874
		}
80875
	}
80876
80877
	return null;
80878
}
80879
80880
function isPattern(color) {
80881
	return isArray(color) && color.length === 2;
80882
}
80883
80884
// converts from a [<pattern name>, <color>] as used by pdfmake
80885
// into [<pattern object>, <color>] as used by pdfkit
80886
// (the pattern has to be registered in the doc definition of course)
80887
function getPattern(color, patterns) {
80888
	return [patterns[color[0]], color[1]];
80889
}
80890
80891
module.exports = {
80892
	isString: isString,
80893
	isNumber: isNumber,
80894
	isBoolean: isBoolean,
80895
	isArray: isArray,
80896
	isFunction: isFunction,
80897
	isObject: isObject,
80898
	isNull: isNull,
80899
	isUndefined: isUndefined,
80900
	pack: pack,
80901
	fontStringify: fontStringify,
80902
	offsetVector: offsetVector,
80903
	getNodeId: getNodeId,
80904
	isPattern: isPattern,
80905
	getPattern: getPattern
80906
};
80907
80908
80909
/***/ }),
80910
80911
/***/ 3090:
80912
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
80913
80914
"use strict";
80915
/* provided dependency */ var Buffer = __webpack_require__(8823)["Buffer"];
80916
80917
80918
var fs = __webpack_require__(3857);
80919
80920
function ImageMeasure(pdfKitDoc, imageDictionary) {
80921
	this.pdfKitDoc = pdfKitDoc;
80922
	this.imageDictionary = imageDictionary || {};
80923
}
80924
80925
ImageMeasure.prototype.measureImage = function (src) {
80926
	var image;
80927
	var that = this;
80928
80929
	if (!this.pdfKitDoc._imageRegistry[src]) {
80930
		try {
80931
			image = this.pdfKitDoc.openImage(realImageSrc(src));
80932
			if (!image) {
80933
				throw 'No image';
80934
			}
80935
		} catch (error) {
80936
			throw 'Invalid image: ' + error.toString() + '\nImages dictionary should contain dataURL entries (or local file paths in node.js)';
80937
		}
80938
		image.embed(this.pdfKitDoc);
80939
		this.pdfKitDoc._imageRegistry[src] = image;
80940
	} else {
80941
		image = this.pdfKitDoc._imageRegistry[src];
80942
	}
80943
80944
	return { width: image.width, height: image.height };
80945
80946
	function realImageSrc(src) {
80947
		var img = that.imageDictionary[src];
80948
80949
		if (!img) {
80950
			return src;
80951
		}
80952
80953
		if (fs.existsSync(img)) {
80954
			return fs.readFileSync(img);
80955
		}
80956
80957
		var index = img.indexOf('base64,');
80958
		if (index < 0) {
80959
			return that.imageDictionary[src];
80960
		}
80961
80962
		return Buffer.from(img.substring(index + 7), 'base64');
80963
	}
80964
};
80965
80966
module.exports = ImageMeasure;
80967
80968
80969
/***/ }),
80970
80971
/***/ 2678:
80972
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
80973
80974
"use strict";
80975
80976
80977
var TraversalTracker = __webpack_require__(8537);
80978
var DocPreprocessor = __webpack_require__(4889);
80979
var DocMeasure = __webpack_require__(1728);
80980
var DocumentContext = __webpack_require__(3858);
80981
var PageElementWriter = __webpack_require__(2912);
80982
var ColumnCalculator = __webpack_require__(4498);
80983
var TableProcessor = __webpack_require__(9342);
80984
var Line = __webpack_require__(4775);
80985
var isString = (__webpack_require__(6225).isString);
80986
var isArray = (__webpack_require__(6225).isArray);
80987
var isUndefined = (__webpack_require__(6225).isUndefined);
80988
var isNull = (__webpack_require__(6225).isNull);
80989
var pack = (__webpack_require__(6225).pack);
80990
var offsetVector = (__webpack_require__(6225).offsetVector);
80991
var fontStringify = (__webpack_require__(6225).fontStringify);
80992
var getNodeId = (__webpack_require__(6225).getNodeId);
80993
var isFunction = (__webpack_require__(6225).isFunction);
80994
var TextTools = __webpack_require__(1350);
80995
var StyleContextStack = __webpack_require__(7597);
80996
var isNumber = (__webpack_require__(6225).isNumber);
80997
80998
function addAll(target, otherArray) {
80999
	otherArray.forEach(function (item) {
81000
		target.push(item);
81001
	});
81002
}
81003
81004
/**
81005
 * Creates an instance of LayoutBuilder - layout engine which turns document-definition-object
81006
 * into a set of pages, lines, inlines and vectors ready to be rendered into a PDF
81007
 *
81008
 * @param {Object} pageSize - an object defining page width and height
81009
 * @param {Object} pageMargins - an object defining top, left, right and bottom margins
81010
 */
81011
function LayoutBuilder(pageSize, pageMargins, imageMeasure, svgMeasure) {
81012
	this.pageSize = pageSize;
81013
	this.pageMargins = pageMargins;
81014
	this.tracker = new TraversalTracker();
81015
	this.imageMeasure = imageMeasure;
81016
	this.svgMeasure = svgMeasure;
81017
	this.tableLayouts = {};
81018
}
81019
81020
LayoutBuilder.prototype.registerTableLayouts = function (tableLayouts) {
81021
	this.tableLayouts = pack(this.tableLayouts, tableLayouts);
81022
};
81023
81024
/**
81025
 * Executes layout engine on document-definition-object and creates an array of pages
81026
 * containing positioned Blocks, Lines and inlines
81027
 *
81028
 * @param {Object} docStructure document-definition-object
81029
 * @param {Object} fontProvider font provider
81030
 * @param {Object} styleDictionary dictionary with style definitions
81031
 * @param {Object} defaultStyle default style definition
81032
 * @return {Array} an array of pages
81033
 */
81034
LayoutBuilder.prototype.layoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {
81035
81036
	function addPageBreaksIfNecessary(linearNodeList, pages) {
81037
81038
		if (!isFunction(pageBreakBeforeFct)) {
81039
			return false;
81040
		}
81041
81042
		linearNodeList = linearNodeList.filter(function (node) {
81043
			return node.positions.length > 0;
81044
		});
81045
81046
		linearNodeList.forEach(function (node) {
81047
			var nodeInfo = {};
81048
			[
81049
				'id', 'text', 'ul', 'ol', 'table', 'image', 'qr', 'canvas', 'svg', 'columns',
81050
				'headlineLevel', 'style', 'pageBreak', 'pageOrientation',
81051
				'width', 'height'
81052
			].forEach(function (key) {
81053
				if (node[key] !== undefined) {
81054
					nodeInfo[key] = node[key];
81055
				}
81056
			});
81057
			nodeInfo.startPosition = node.positions[0];
81058
			nodeInfo.pageNumbers = Array.from(new Set(node.positions.map(function (node) { return node.pageNumber; })));
81059
			nodeInfo.pages = pages.length;
81060
			nodeInfo.stack = isArray(node.stack);
81061
81062
			node.nodeInfo = nodeInfo;
81063
		});
81064
81065
		for (var index = 0; index < linearNodeList.length; index++) {
81066
			var node = linearNodeList[index];
81067
			if (node.pageBreak !== 'before' && !node.pageBreakCalculated) {
81068
				node.pageBreakCalculated = true;
81069
				var pageNumber = node.nodeInfo.pageNumbers[0];
81070
				var followingNodesOnPage = [];
81071
				var nodesOnNextPage = [];
81072
				var previousNodesOnPage = [];
81073
				if (pageBreakBeforeFct.length > 1) {
81074
					for (var ii = index + 1, l = linearNodeList.length; ii < l; ii++) {
81075
						if (linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber) > -1) {
81076
							followingNodesOnPage.push(linearNodeList[ii].nodeInfo);
81077
						}
81078
						if (pageBreakBeforeFct.length > 2 && linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber + 1) > -1) {
81079
							nodesOnNextPage.push(linearNodeList[ii].nodeInfo);
81080
						}
81081
					}
81082
				}
81083
				if (pageBreakBeforeFct.length > 3) {
81084
					for (var ii = 0; ii < index; ii++) {
81085
						if (linearNodeList[ii].nodeInfo.pageNumbers.indexOf(pageNumber) > -1) {
81086
							previousNodesOnPage.push(linearNodeList[ii].nodeInfo);
81087
						}
81088
					}
81089
				}
81090
				if (pageBreakBeforeFct(node.nodeInfo, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage)) {
81091
					node.pageBreak = 'before';
81092
					return true;
81093
				}
81094
			}
81095
		}
81096
81097
		return false;
81098
	}
81099
81100
	this.docPreprocessor = new DocPreprocessor();
81101
	this.docMeasure = new DocMeasure(fontProvider, styleDictionary, defaultStyle, this.imageMeasure, this.svgMeasure, this.tableLayouts, images);
81102
81103
81104
	function resetXYs(result) {
81105
		result.linearNodeList.forEach(function (node) {
81106
			node.resetXY();
81107
		});
81108
	}
81109
81110
	var result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);
81111
	while (addPageBreaksIfNecessary(result.linearNodeList, result.pages)) {
81112
		resetXYs(result);
81113
		result = this.tryLayoutDocument(docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark);
81114
	}
81115
81116
	return result.pages;
81117
};
81118
81119
LayoutBuilder.prototype.tryLayoutDocument = function (docStructure, fontProvider, styleDictionary, defaultStyle, background, header, footer, images, watermark, pageBreakBeforeFct) {
81120
81121
	this.linearNodeList = [];
81122
	docStructure = this.docPreprocessor.preprocessDocument(docStructure);
81123
	docStructure = this.docMeasure.measureDocument(docStructure);
81124
81125
	this.writer = new PageElementWriter(
81126
		new DocumentContext(this.pageSize, this.pageMargins), this.tracker);
81127
81128
	var _this = this;
81129
	this.writer.context().tracker.startTracking('pageAdded', function () {
81130
		_this.addBackground(background);
81131
	});
81132
81133
	this.addBackground(background);
81134
	this.processNode(docStructure);
81135
	this.addHeadersAndFooters(header, footer);
81136
	if (watermark != null) {
81137
		this.addWatermark(watermark, fontProvider, defaultStyle);
81138
	}
81139
81140
	return { pages: this.writer.context().pages, linearNodeList: this.linearNodeList };
81141
};
81142
81143
81144
LayoutBuilder.prototype.addBackground = function (background) {
81145
	var backgroundGetter = isFunction(background) ? background : function () {
81146
		return background;
81147
	};
81148
81149
	var context = this.writer.context();
81150
	var pageSize = context.getCurrentPage().pageSize;
81151
81152
	var pageBackground = backgroundGetter(context.page + 1, pageSize);
81153
81154
	if (pageBackground) {
81155
		this.writer.beginUnbreakableBlock(pageSize.width, pageSize.height);
81156
		pageBackground = this.docPreprocessor.preprocessDocument(pageBackground);
81157
		this.processNode(this.docMeasure.measureDocument(pageBackground));
81158
		this.writer.commitUnbreakableBlock(0, 0);
81159
		context.backgroundLength[context.page] += pageBackground.positions.length;
81160
	}
81161
};
81162
81163
LayoutBuilder.prototype.addStaticRepeatable = function (headerOrFooter, sizeFunction) {
81164
	this.addDynamicRepeatable(function () {
81165
		return JSON.parse(JSON.stringify(headerOrFooter)); // copy to new object
81166
	}, sizeFunction);
81167
};
81168
81169
LayoutBuilder.prototype.addDynamicRepeatable = function (nodeGetter, sizeFunction) {
81170
	var pages = this.writer.context().pages;
81171
81172
	for (var pageIndex = 0, l = pages.length; pageIndex < l; pageIndex++) {
81173
		this.writer.context().page = pageIndex;
81174
81175
		var node = nodeGetter(pageIndex + 1, l, this.writer.context().pages[pageIndex].pageSize);
81176
81177
		if (node) {
81178
			var sizes = sizeFunction(this.writer.context().getCurrentPage().pageSize, this.pageMargins);
81179
			this.writer.beginUnbreakableBlock(sizes.width, sizes.height);
81180
			node = this.docPreprocessor.preprocessDocument(node);
81181
			this.processNode(this.docMeasure.measureDocument(node));
81182
			this.writer.commitUnbreakableBlock(sizes.x, sizes.y);
81183
		}
81184
	}
81185
};
81186
81187
LayoutBuilder.prototype.addHeadersAndFooters = function (header, footer) {
81188
	var headerSizeFct = function (pageSize, pageMargins) {
81189
		return {
81190
			x: 0,
81191
			y: 0,
81192
			width: pageSize.width,
81193
			height: pageMargins.top
81194
		};
81195
	};
81196
81197
	var footerSizeFct = function (pageSize, pageMargins) {
81198
		return {
81199
			x: 0,
81200
			y: pageSize.height - pageMargins.bottom,
81201
			width: pageSize.width,
81202
			height: pageMargins.bottom
81203
		};
81204
	};
81205
81206
	if (isFunction(header)) {
81207
		this.addDynamicRepeatable(header, headerSizeFct);
81208
	} else if (header) {
81209
		this.addStaticRepeatable(header, headerSizeFct);
81210
	}
81211
81212
	if (isFunction(footer)) {
81213
		this.addDynamicRepeatable(footer, footerSizeFct);
81214
	} else if (footer) {
81215
		this.addStaticRepeatable(footer, footerSizeFct);
81216
	}
81217
};
81218
81219
LayoutBuilder.prototype.addWatermark = function (watermark, fontProvider, defaultStyle) {
81220
	if (isString(watermark)) {
81221
		watermark = { 'text': watermark };
81222
	}
81223
81224
	if (!watermark.text) { // empty watermark text
81225
		return;
81226
	}
81227
81228
	watermark.font = watermark.font || defaultStyle.font || 'Roboto';
81229
	watermark.fontSize = watermark.fontSize || 'auto';
81230
	watermark.color = watermark.color || 'black';
81231
	watermark.opacity = isNumber(watermark.opacity) ? watermark.opacity : 0.6;
81232
	watermark.bold = watermark.bold || false;
81233
	watermark.italics = watermark.italics || false;
81234
	watermark.angle = !isUndefined(watermark.angle) && !isNull(watermark.angle) ? watermark.angle : null;
81235
81236
	if (watermark.angle === null) {
81237
		watermark.angle = Math.atan2(this.pageSize.height, this.pageSize.width) * -180 / Math.PI;
81238
	}
81239
81240
	if (watermark.fontSize === 'auto') {
81241
		watermark.fontSize = getWatermarkFontSize(this.pageSize, watermark, fontProvider);
81242
	}
81243
81244
	var watermarkObject = {
81245
		text: watermark.text,
81246
		font: fontProvider.provideFont(watermark.font, watermark.bold, watermark.italics),
81247
		fontSize: watermark.fontSize,
81248
		color: watermark.color,
81249
		opacity: watermark.opacity,
81250
		angle: watermark.angle
81251
	};
81252
81253
	watermarkObject._size = getWatermarkSize(watermark, fontProvider);
81254
81255
	var pages = this.writer.context().pages;
81256
	for (var i = 0, l = pages.length; i < l; i++) {
81257
		pages[i].watermark = watermarkObject;
81258
	}
81259
81260
	function getWatermarkSize(watermark, fontProvider) {
81261
		var textTools = new TextTools(fontProvider);
81262
		var styleContextStack = new StyleContextStack(null, { font: watermark.font, bold: watermark.bold, italics: watermark.italics });
81263
81264
		styleContextStack.push({
81265
			fontSize: watermark.fontSize
81266
		});
81267
81268
		var size = textTools.sizeOfString(watermark.text, styleContextStack);
81269
		var rotatedSize = textTools.sizeOfRotatedText(watermark.text, watermark.angle, styleContextStack);
81270
81271
		return { size: size, rotatedSize: rotatedSize };
81272
	}
81273
81274
	function getWatermarkFontSize(pageSize, watermark, fontProvider) {
81275
		var textTools = new TextTools(fontProvider);
81276
		var styleContextStack = new StyleContextStack(null, { font: watermark.font, bold: watermark.bold, italics: watermark.italics });
81277
		var rotatedSize;
81278
81279
		/**
81280
		 * Binary search the best font size.
81281
		 * Initial bounds [0, 1000]
81282
		 * Break when range < 1
81283
		 */
81284
		var a = 0;
81285
		var b = 1000;
81286
		var c = (a + b) / 2;
81287
		while (Math.abs(a - b) > 1) {
81288
			styleContextStack.push({
81289
				fontSize: c
81290
			});
81291
			rotatedSize = textTools.sizeOfRotatedText(watermark.text, watermark.angle, styleContextStack);
81292
			if (rotatedSize.width > pageSize.width) {
81293
				b = c;
81294
				c = (a + b) / 2;
81295
			} else if (rotatedSize.width < pageSize.width) {
81296
				if (rotatedSize.height > pageSize.height) {
81297
					b = c;
81298
					c = (a + b) / 2;
81299
				} else {
81300
					a = c;
81301
					c = (a + b) / 2;
81302
				}
81303
			}
81304
			styleContextStack.pop();
81305
		}
81306
		/*
81307
		 End binary search
81308
		 */
81309
		return c;
81310
	}
81311
};
81312
81313
function decorateNode(node) {
81314
	var x = node.x, y = node.y;
81315
	node.positions = [];
81316
81317
	if (isArray(node.canvas)) {
81318
		node.canvas.forEach(function (vector) {
81319
			var x = vector.x, y = vector.y, x1 = vector.x1, y1 = vector.y1, x2 = vector.x2, y2 = vector.y2;
81320
			vector.resetXY = function () {
81321
				vector.x = x;
81322
				vector.y = y;
81323
				vector.x1 = x1;
81324
				vector.y1 = y1;
81325
				vector.x2 = x2;
81326
				vector.y2 = y2;
81327
			};
81328
		});
81329
	}
81330
81331
	node.resetXY = function () {
81332
		node.x = x;
81333
		node.y = y;
81334
		if (isArray(node.canvas)) {
81335
			node.canvas.forEach(function (vector) {
81336
				vector.resetXY();
81337
			});
81338
		}
81339
	};
81340
}
81341
81342
LayoutBuilder.prototype.processNode = function (node) {
81343
	var self = this;
81344
81345
	this.linearNodeList.push(node);
81346
	decorateNode(node);
81347
81348
	applyMargins(function () {
81349
		var unbreakable = node.unbreakable;
81350
		if (unbreakable) {
81351
			self.writer.beginUnbreakableBlock();
81352
		}
81353
81354
		var absPosition = node.absolutePosition;
81355
		if (absPosition) {
81356
			self.writer.context().beginDetachedBlock();
81357
			self.writer.context().moveTo(absPosition.x || 0, absPosition.y || 0);
81358
		}
81359
81360
		var relPosition = node.relativePosition;
81361
		if (relPosition) {
81362
			self.writer.context().beginDetachedBlock();
81363
			self.writer.context().moveToRelative(relPosition.x || 0, relPosition.y || 0);
81364
		}
81365
81366
		if (node.stack) {
81367
			self.processVerticalContainer(node);
81368
		} else if (node.columns) {
81369
			self.processColumns(node);
81370
		} else if (node.ul) {
81371
			self.processList(false, node);
81372
		} else if (node.ol) {
81373
			self.processList(true, node);
81374
		} else if (node.table) {
81375
			self.processTable(node);
81376
		} else if (node.text !== undefined) {
81377
			self.processLeaf(node);
81378
		} else if (node.toc) {
81379
			self.processToc(node);
81380
		} else if (node.image) {
81381
			self.processImage(node);
81382
		} else if (node.svg) {
81383
			self.processSVG(node);
81384
		} else if (node.canvas) {
81385
			self.processCanvas(node);
81386
		} else if (node.qr) {
81387
			self.processQr(node);
81388
		} else if (!node._span) {
81389
			throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
81390
		}
81391
81392
		if (absPosition || relPosition) {
81393
			self.writer.context().endDetachedBlock();
81394
		}
81395
81396
		if (unbreakable) {
81397
			self.writer.commitUnbreakableBlock();
81398
		}
81399
	});
81400
81401
	function applyMargins(callback) {
81402
		var margin = node._margin;
81403
81404
		if (node.pageBreak === 'before') {
81405
			self.writer.moveToNextPage(node.pageOrientation);
81406
		} else if (node.pageBreak === 'beforeOdd') {
81407
			self.writer.moveToNextPage(node.pageOrientation);
81408
			if ((self.writer.context().page + 1) % 2 === 1) {
81409
				self.writer.moveToNextPage(node.pageOrientation);
81410
			}
81411
		} else if (node.pageBreak === 'beforeEven') {
81412
			self.writer.moveToNextPage(node.pageOrientation);
81413
			if ((self.writer.context().page + 1) % 2 === 0) {
81414
				self.writer.moveToNextPage(node.pageOrientation);
81415
			}
81416
		}
81417
81418
		if (margin) {
81419
			self.writer.context().moveDown(margin[1]);
81420
			self.writer.context().addMargin(margin[0], margin[2]);
81421
		}
81422
81423
		callback();
81424
81425
		if (margin) {
81426
			self.writer.context().addMargin(-margin[0], -margin[2]);
81427
			self.writer.context().moveDown(margin[3]);
81428
		}
81429
81430
		if (node.pageBreak === 'after') {
81431
			self.writer.moveToNextPage(node.pageOrientation);
81432
		} else if (node.pageBreak === 'afterOdd') {
81433
			self.writer.moveToNextPage(node.pageOrientation);
81434
			if ((self.writer.context().page + 1) % 2 === 1) {
81435
				self.writer.moveToNextPage(node.pageOrientation);
81436
			}
81437
		} else if (node.pageBreak === 'afterEven') {
81438
			self.writer.moveToNextPage(node.pageOrientation);
81439
			if ((self.writer.context().page + 1) % 2 === 0) {
81440
				self.writer.moveToNextPage(node.pageOrientation);
81441
			}
81442
		}
81443
	}
81444
};
81445
81446
// vertical container
81447
LayoutBuilder.prototype.processVerticalContainer = function (node) {
81448
	var self = this;
81449
	node.stack.forEach(function (item) {
81450
		self.processNode(item);
81451
		addAll(node.positions, item.positions);
81452
81453
		//TODO: paragraph gap
81454
	});
81455
};
81456
81457
// columns
81458
LayoutBuilder.prototype.processColumns = function (columnNode) {
81459
	var columns = columnNode.columns;
81460
	var availableWidth = this.writer.context().availableWidth;
81461
	var gaps = gapArray(columnNode._gap);
81462
81463
	if (gaps) {
81464
		availableWidth -= (gaps.length - 1) * columnNode._gap;
81465
	}
81466
81467
	ColumnCalculator.buildColumnWidths(columns, availableWidth);
81468
	var result = this.processRow(columns, columns, gaps);
81469
	addAll(columnNode.positions, result.positions);
81470
81471
81472
	function gapArray(gap) {
81473
		if (!gap) {
81474
			return null;
81475
		}
81476
81477
		var gaps = [];
81478
		gaps.push(0);
81479
81480
		for (var i = columns.length - 1; i > 0; i--) {
81481
			gaps.push(gap);
81482
		}
81483
81484
		return gaps;
81485
	}
81486
};
81487
81488
LayoutBuilder.prototype.processRow = function (columns, widths, gaps, tableBody, tableRow, height) {
81489
	var self = this;
81490
	var pageBreaks = [], positions = [];
81491
81492
	this.tracker.auto('pageChanged', storePageBreakData, function () {
81493
		widths = widths || columns;
81494
81495
		self.writer.context().beginColumnGroup();
81496
81497
		for (var i = 0, l = columns.length; i < l; i++) {
81498
			var column = columns[i];
81499
			var width = widths[i]._calcWidth;
81500
			var leftOffset = colLeftOffset(i);
81501
81502
			if (column.colSpan && column.colSpan > 1) {
81503
				for (var j = 1; j < column.colSpan; j++) {
81504
					width += widths[++i]._calcWidth + gaps[i];
81505
				}
81506
			}
81507
81508
			self.writer.context().beginColumn(width, leftOffset, getEndingCell(column, i));
81509
			if (!column._span) {
81510
				self.processNode(column);
81511
				addAll(positions, column.positions);
81512
			} else if (column._columnEndingContext) {
81513
				// row-span ending
81514
				self.writer.context().markEnding(column);
81515
			}
81516
		}
81517
81518
		self.writer.context().completeColumnGroup(height);
81519
	});
81520
81521
	return { pageBreaks: pageBreaks, positions: positions };
81522
81523
	function storePageBreakData(data) {
81524
		var pageDesc;
81525
81526
		for (var i = 0, l = pageBreaks.length; i < l; i++) {
81527
			var desc = pageBreaks[i];
81528
			if (desc.prevPage === data.prevPage) {
81529
				pageDesc = desc;
81530
				break;
81531
			}
81532
		}
81533
81534
		if (!pageDesc) {
81535
			pageDesc = data;
81536
			pageBreaks.push(pageDesc);
81537
		}
81538
		pageDesc.prevY = Math.max(pageDesc.prevY, data.prevY);
81539
		pageDesc.y = Math.min(pageDesc.y, data.y);
81540
	}
81541
81542
	function colLeftOffset(i) {
81543
		if (gaps && gaps.length > i) {
81544
			return gaps[i];
81545
		}
81546
		return 0;
81547
	}
81548
81549
	function getEndingCell(column, columnIndex) {
81550
		if (column.rowSpan && column.rowSpan > 1) {
81551
			var endingRow = tableRow + column.rowSpan - 1;
81552
			if (endingRow >= tableBody.length) {
81553
				throw 'Row span for column ' + columnIndex + ' (with indexes starting from 0) exceeded row count';
81554
			}
81555
			return tableBody[endingRow][columnIndex];
81556
		}
81557
81558
		return null;
81559
	}
81560
};
81561
81562
// lists
81563
LayoutBuilder.prototype.processList = function (orderedList, node) {
81564
	var self = this,
81565
		items = orderedList ? node.ol : node.ul,
81566
		gapSize = node._gapSize;
81567
81568
	this.writer.context().addMargin(gapSize.width);
81569
81570
	var nextMarker;
81571
	this.tracker.auto('lineAdded', addMarkerToFirstLeaf, function () {
81572
		items.forEach(function (item) {
81573
			nextMarker = item.listMarker;
81574
			self.processNode(item);
81575
			addAll(node.positions, item.positions);
81576
		});
81577
	});
81578
81579
	this.writer.context().addMargin(-gapSize.width);
81580
81581
	function addMarkerToFirstLeaf(line) {
81582
		// I'm not very happy with the way list processing is implemented
81583
		// (both code and algorithm should be rethinked)
81584
		if (nextMarker) {
81585
			var marker = nextMarker;
81586
			nextMarker = null;
81587
81588
			if (marker.canvas) {
81589
				var vector = marker.canvas[0];
81590
81591
				offsetVector(vector, -marker._minWidth, 0);
81592
				self.writer.addVector(vector);
81593
			} else if (marker._inlines) {
81594
				var markerLine = new Line(self.pageSize.width);
81595
				markerLine.addInline(marker._inlines[0]);
81596
				markerLine.x = -marker._minWidth;
81597
				markerLine.y = line.getAscenderHeight() - markerLine.getAscenderHeight();
81598
				self.writer.addLine(markerLine, true);
81599
			}
81600
		}
81601
	}
81602
};
81603
81604
// tables
81605
LayoutBuilder.prototype.processTable = function (tableNode) {
81606
	var processor = new TableProcessor(tableNode);
81607
81608
	processor.beginTable(this.writer);
81609
81610
	var rowHeights = tableNode.table.heights;
81611
	for (var i = 0, l = tableNode.table.body.length; i < l; i++) {
81612
		processor.beginRow(i, this.writer);
81613
81614
		var height;
81615
		if (isFunction(rowHeights)) {
81616
			height = rowHeights(i);
81617
		} else if (isArray(rowHeights)) {
81618
			height = rowHeights[i];
81619
		} else {
81620
			height = rowHeights;
81621
		}
81622
81623
		if (height === 'auto') {
81624
			height = undefined;
81625
		}
81626
81627
		var result = this.processRow(tableNode.table.body[i], tableNode.table.widths, tableNode._offsets.offsets, tableNode.table.body, i, height);
81628
		addAll(tableNode.positions, result.positions);
81629
81630
		processor.endRow(i, this.writer, result.pageBreaks);
81631
	}
81632
81633
	processor.endTable(this.writer);
81634
};
81635
81636
// leafs (texts)
81637
LayoutBuilder.prototype.processLeaf = function (node) {
81638
	var line = this.buildNextLine(node);
81639
	if (line && (node.tocItem || node.id)) {
81640
		line._node = node;
81641
	}
81642
	var currentHeight = (line) ? line.getHeight() : 0;
81643
	var maxHeight = node.maxHeight || -1;
81644
81645
	if (line) {
81646
		var nodeId = getNodeId(node);
81647
		if (nodeId) {
81648
			line.id = nodeId;
81649
		}
81650
	}
81651
81652
	if (node._tocItemRef) {
81653
		line._pageNodeRef = node._tocItemRef;
81654
	}
81655
81656
	if (node._pageRef) {
81657
		line._pageNodeRef = node._pageRef._nodeRef;
81658
	}
81659
81660
	if (line && line.inlines && isArray(line.inlines)) {
81661
		for (var i = 0, l = line.inlines.length; i < l; i++) {
81662
			if (line.inlines[i]._tocItemRef) {
81663
				line.inlines[i]._pageNodeRef = line.inlines[i]._tocItemRef;
81664
			}
81665
81666
			if (line.inlines[i]._pageRef) {
81667
				line.inlines[i]._pageNodeRef = line.inlines[i]._pageRef._nodeRef;
81668
			}
81669
		}
81670
	}
81671
81672
	while (line && (maxHeight === -1 || currentHeight < maxHeight)) {
81673
		var positions = this.writer.addLine(line);
81674
		node.positions.push(positions);
81675
		line = this.buildNextLine(node);
81676
		if (line) {
81677
			currentHeight += line.getHeight();
81678
		}
81679
	}
81680
};
81681
81682
LayoutBuilder.prototype.processToc = function (node) {
81683
	if (node.toc.title) {
81684
		this.processNode(node.toc.title);
81685
	}
81686
	if (node.toc._table) {
81687
		this.processNode(node.toc._table);
81688
	}
81689
};
81690
81691
LayoutBuilder.prototype.buildNextLine = function (textNode) {
81692
81693
	function cloneInline(inline) {
81694
		var newInline = inline.constructor();
81695
		for (var key in inline) {
81696
			newInline[key] = inline[key];
81697
		}
81698
		return newInline;
81699
	}
81700
81701
	if (!textNode._inlines || textNode._inlines.length === 0) {
81702
		return null;
81703
	}
81704
81705
	var line = new Line(this.writer.context().availableWidth);
81706
	var textTools = new TextTools(null);
81707
81708
	var isForceContinue = false;
81709
	while (textNode._inlines && textNode._inlines.length > 0 &&
81710
		(line.hasEnoughSpaceForInline(textNode._inlines[0], textNode._inlines.slice(1)) || isForceContinue)) {
81711
		var isHardWrap = false;
81712
		var inline = textNode._inlines.shift();
81713
		isForceContinue = false;
81714
81715
		if (!inline.noWrap && inline.text.length > 1 && inline.width > line.getAvailableWidth()) {
81716
			var widthPerChar = inline.width / inline.text.length;
81717
			var maxChars = Math.floor(line.getAvailableWidth() / widthPerChar);
81718
			if (maxChars < 1) {
81719
				maxChars = 1;
81720
			}
81721
			if (maxChars < inline.text.length) {
81722
				var newInline = cloneInline(inline);
81723
81724
				newInline.text = inline.text.substr(maxChars);
81725
				inline.text = inline.text.substr(0, maxChars);
81726
81727
				newInline.width = textTools.widthOfString(newInline.text, newInline.font, newInline.fontSize, newInline.characterSpacing, newInline.fontFeatures);
81728
				inline.width = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);
81729
81730
				textNode._inlines.unshift(newInline);
81731
				isHardWrap = true;
81732
			}
81733
		}
81734
81735
		line.addInline(inline);
81736
81737
		isForceContinue = inline.noNewLine && !isHardWrap;
81738
	}
81739
81740
	line.lastLineInParagraph = textNode._inlines.length === 0;
81741
81742
	return line;
81743
};
81744
81745
// images
81746
LayoutBuilder.prototype.processImage = function (node) {
81747
	var position = this.writer.addImage(node);
81748
	node.positions.push(position);
81749
};
81750
81751
LayoutBuilder.prototype.processSVG = function (node) {
81752
	var position = this.writer.addSVG(node);
81753
	node.positions.push(position);
81754
};
81755
81756
LayoutBuilder.prototype.processCanvas = function (node) {
81757
	var height = node._minHeight;
81758
81759
	if (node.absolutePosition === undefined && this.writer.context().availableHeight < height) {
81760
		// TODO: support for canvas larger than a page
81761
		// TODO: support for other overflow methods
81762
81763
		this.writer.moveToNextPage();
81764
	}
81765
81766
	this.writer.alignCanvas(node);
81767
81768
	node.canvas.forEach(function (vector) {
81769
		var position = this.writer.addVector(vector);
81770
		node.positions.push(position);
81771
	}, this);
81772
81773
	this.writer.context().moveDown(height);
81774
};
81775
81776
LayoutBuilder.prototype.processQr = function (node) {
81777
	var position = this.writer.addQr(node);
81778
	node.positions.push(position);
81779
};
81780
81781
module.exports = LayoutBuilder;
81782
81783
81784
/***/ }),
81785
81786
/***/ 4775:
81787
/***/ (function(module) {
81788
81789
"use strict";
81790
81791
81792
/**
81793
 * Creates an instance of Line
81794
 *
81795
 * @constructor
81796
 * @this {Line}
81797
 * @param {Number} Maximum width this line can have
81798
 */
81799
function Line(maxWidth) {
81800
	this.maxWidth = maxWidth;
81801
	this.leadingCut = 0;
81802
	this.trailingCut = 0;
81803
	this.inlineWidths = 0;
81804
	this.inlines = [];
81805
}
81806
81807
Line.prototype.getAscenderHeight = function () {
81808
	var y = 0;
81809
81810
	this.inlines.forEach(function (inline) {
81811
		y = Math.max(y, inline.font.ascender / 1000 * inline.fontSize);
81812
	});
81813
	return y;
81814
};
81815
81816
Line.prototype.hasEnoughSpaceForInline = function (inline, nextInlines) {
81817
	nextInlines = nextInlines || [];
81818
81819
	if (this.inlines.length === 0) {
81820
		return true;
81821
	}
81822
	if (this.newLineForced) {
81823
		return false;
81824
	}
81825
81826
	var inlineWidth = inline.width;
81827
	var inlineTrailingCut = inline.trailingCut || 0;
81828
	if (inline.noNewLine) {
81829
		for (var i = 0, l = nextInlines.length; i < l; i++) {
81830
			var nextInline = nextInlines[i];
81831
			inlineWidth += nextInline.width;
81832
			inlineTrailingCut += nextInline.trailingCut || 0;
81833
			if (!nextInline.noNewLine) {
81834
				break;
81835
			}
81836
		}
81837
	}
81838
81839
	return (this.inlineWidths + inlineWidth - this.leadingCut - inlineTrailingCut) <= this.maxWidth;
81840
};
81841
81842
Line.prototype.addInline = function (inline) {
81843
	if (this.inlines.length === 0) {
81844
		this.leadingCut = inline.leadingCut || 0;
81845
	}
81846
	this.trailingCut = inline.trailingCut || 0;
81847
81848
	inline.x = this.inlineWidths - this.leadingCut;
81849
81850
	this.inlines.push(inline);
81851
	this.inlineWidths += inline.width;
81852
81853
	if (inline.lineEnd) {
81854
		this.newLineForced = true;
81855
	}
81856
};
81857
81858
Line.prototype.getWidth = function () {
81859
	return this.inlineWidths - this.leadingCut - this.trailingCut;
81860
};
81861
81862
Line.prototype.getAvailableWidth = function () {
81863
	return this.maxWidth - this.getWidth();
81864
};
81865
81866
/**
81867
 * Returns line height
81868
 * @return {Number}
81869
 */
81870
Line.prototype.getHeight = function () {
81871
	var max = 0;
81872
81873
	this.inlines.forEach(function (item) {
81874
		max = Math.max(max, item.height || 0);
81875
	});
81876
81877
	return max;
81878
};
81879
81880
module.exports = Line;
81881
81882
81883
/***/ }),
81884
81885
/***/ 2912:
81886
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
81887
81888
"use strict";
81889
81890
81891
var isUndefined = (__webpack_require__(6225).isUndefined);
81892
var ElementWriter = __webpack_require__(1196);
81893
81894
/**
81895
 * Creates an instance of PageElementWriter - an extended ElementWriter
81896
 * which can handle:
81897
 * - page-breaks (it adds new pages when there's not enough space left),
81898
 * - repeatable fragments (like table-headers, which are repeated everytime
81899
 *                         a page-break occurs)
81900
 * - transactions (used for unbreakable-blocks when we want to make sure
81901
 *                 whole block will be rendered on the same page)
81902
 */
81903
function PageElementWriter(context, tracker) {
81904
	this.transactionLevel = 0;
81905
	this.repeatables = [];
81906
	this.tracker = tracker;
81907
	this.writer = new ElementWriter(context, tracker);
81908
}
81909
81910
function fitOnPage(self, addFct) {
81911
	var position = addFct(self);
81912
	if (!position) {
81913
		self.moveToNextPage();
81914
		position = addFct(self);
81915
	}
81916
	return position;
81917
}
81918
81919
PageElementWriter.prototype.addLine = function (line, dontUpdateContextPosition, index) {
81920
	return fitOnPage(this, function (self) {
81921
		return self.writer.addLine(line, dontUpdateContextPosition, index);
81922
	});
81923
};
81924
81925
PageElementWriter.prototype.addImage = function (image, index) {
81926
	return fitOnPage(this, function (self) {
81927
		return self.writer.addImage(image, index);
81928
	});
81929
};
81930
81931
PageElementWriter.prototype.addSVG = function (image, index) {
81932
	return fitOnPage(this, function (self) {
81933
		return self.writer.addSVG(image, index);
81934
	});
81935
};
81936
81937
PageElementWriter.prototype.addQr = function (qr, index) {
81938
	return fitOnPage(this, function (self) {
81939
		return self.writer.addQr(qr, index);
81940
	});
81941
};
81942
81943
PageElementWriter.prototype.addVector = function (vector, ignoreContextX, ignoreContextY, index) {
81944
	return this.writer.addVector(vector, ignoreContextX, ignoreContextY, index);
81945
};
81946
81947
PageElementWriter.prototype.beginClip = function (width, height) {
81948
	return this.writer.beginClip(width, height);
81949
};
81950
81951
PageElementWriter.prototype.endClip = function () {
81952
	return this.writer.endClip();
81953
};
81954
81955
PageElementWriter.prototype.alignCanvas = function (node) {
81956
	this.writer.alignCanvas(node);
81957
};
81958
81959
PageElementWriter.prototype.addFragment = function (fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
81960
	if (!this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition)) {
81961
		this.moveToNextPage();
81962
		this.writer.addFragment(fragment, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition);
81963
	}
81964
};
81965
81966
PageElementWriter.prototype.moveToNextPage = function (pageOrientation) {
81967
81968
	var nextPage = this.writer.context.moveToNextPage(pageOrientation);
81969
81970
	// moveToNextPage is called multiple times for table, because is called for each column
81971
	// and repeatables are inserted only in the first time. If columns are used, is needed
81972
	// call for table in first column and then for table in the second column (is other repeatables).
81973
	this.repeatables.forEach(function (rep) {
81974
		if (isUndefined(rep.insertedOnPages[this.writer.context.page])) {
81975
			rep.insertedOnPages[this.writer.context.page] = true;
81976
			this.writer.addFragment(rep, true);
81977
		} else {
81978
			this.writer.context.moveDown(rep.height);
81979
		}
81980
	}, this);
81981
81982
	this.writer.tracker.emit('pageChanged', {
81983
		prevPage: nextPage.prevPage,
81984
		prevY: nextPage.prevY,
81985
		y: this.writer.context.y
81986
	});
81987
};
81988
81989
PageElementWriter.prototype.beginUnbreakableBlock = function (width, height) {
81990
	if (this.transactionLevel++ === 0) {
81991
		this.originalX = this.writer.context.x;
81992
		this.writer.pushContext(width, height);
81993
	}
81994
};
81995
81996
PageElementWriter.prototype.commitUnbreakableBlock = function (forcedX, forcedY) {
81997
	if (--this.transactionLevel === 0) {
81998
		var unbreakableContext = this.writer.context;
81999
		this.writer.popContext();
82000
82001
		var nbPages = unbreakableContext.pages.length;
82002
		if (nbPages > 0) {
82003
			// no support for multi-page unbreakableBlocks
82004
			var fragment = unbreakableContext.pages[0];
82005
			fragment.xOffset = forcedX;
82006
			fragment.yOffset = forcedY;
82007
82008
			//TODO: vectors can influence height in some situations
82009
			if (nbPages > 1) {
82010
				// on out-of-context blocs (headers, footers, background) height should be the whole DocumentContext height
82011
				if (forcedX !== undefined || forcedY !== undefined) {
82012
					fragment.height = unbreakableContext.getCurrentPage().pageSize.height - unbreakableContext.pageMargins.top - unbreakableContext.pageMargins.bottom;
82013
				} else {
82014
					fragment.height = this.writer.context.getCurrentPage().pageSize.height - this.writer.context.pageMargins.top - this.writer.context.pageMargins.bottom;
82015
					for (var i = 0, l = this.repeatables.length; i < l; i++) {
82016
						fragment.height -= this.repeatables[i].height;
82017
					}
82018
				}
82019
			} else {
82020
				fragment.height = unbreakableContext.y;
82021
			}
82022
82023
			if (forcedX !== undefined || forcedY !== undefined) {
82024
				this.writer.addFragment(fragment, true, true, true);
82025
			} else {
82026
				this.addFragment(fragment);
82027
			}
82028
		}
82029
	}
82030
};
82031
82032
PageElementWriter.prototype.currentBlockToRepeatable = function () {
82033
	var unbreakableContext = this.writer.context;
82034
	var rep = { items: [] };
82035
82036
	unbreakableContext.pages[0].items.forEach(function (item) {
82037
		rep.items.push(item);
82038
	});
82039
82040
	rep.xOffset = this.originalX;
82041
82042
	//TODO: vectors can influence height in some situations
82043
	rep.height = unbreakableContext.y;
82044
82045
	rep.insertedOnPages = [];
82046
82047
	return rep;
82048
};
82049
82050
PageElementWriter.prototype.pushToRepeatables = function (rep) {
82051
	this.repeatables.push(rep);
82052
};
82053
82054
PageElementWriter.prototype.popFromRepeatables = function () {
82055
	this.repeatables.pop();
82056
};
82057
82058
PageElementWriter.prototype.context = function () {
82059
	return this.writer.context;
82060
};
82061
82062
module.exports = PageElementWriter;
82063
82064
82065
/***/ }),
82066
82067
/***/ 6079:
82068
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
82069
82070
"use strict";
82071
82072
82073
function _interopDefault(ex) {
82074
	return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex;
82075
}
82076
82077
var PdfKit = _interopDefault(__webpack_require__(5219));
82078
82079
function getEngineInstance() {
82080
	return PdfKit;
82081
}
82082
82083
function createPdfDocument(options) {
82084
	options = options || {};
82085
	return new PdfKit(options);
82086
}
82087
82088
module.exports = {
82089
	getEngineInstance: getEngineInstance,
82090
	createPdfDocument: createPdfDocument
82091
};
82092
82093
82094
/***/ }),
82095
82096
/***/ 8617:
82097
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
82098
82099
"use strict";
82100
/*eslint no-unused-vars: ["error", {"args": "none"}]*/
82101
82102
82103
var PdfKitEngine = __webpack_require__(6079);
82104
var FontProvider = __webpack_require__(2249);
82105
var LayoutBuilder = __webpack_require__(2678);
82106
var sizes = __webpack_require__(4762);
82107
var ImageMeasure = __webpack_require__(3090);
82108
var SVGMeasure = __webpack_require__(7601);
82109
var textDecorator = __webpack_require__(3497);
82110
var TextTools = __webpack_require__(1350);
82111
var isFunction = (__webpack_require__(6225).isFunction);
82112
var isString = (__webpack_require__(6225).isString);
82113
var isNumber = (__webpack_require__(6225).isNumber);
82114
var isBoolean = (__webpack_require__(6225).isBoolean);
82115
var isArray = (__webpack_require__(6225).isArray);
82116
var isUndefined = (__webpack_require__(6225).isUndefined);
82117
var isPattern = (__webpack_require__(6225).isPattern);
82118
var getPattern = (__webpack_require__(6225).getPattern);
82119
var SVGtoPDF = __webpack_require__(8071);
82120
82121
var findFont = function (fonts, requiredFonts, defaultFont) {
82122
	for (var i = 0; i < requiredFonts.length; i++) {
82123
		var requiredFont = requiredFonts[i].toLowerCase();
82124
82125
		for (var font in fonts) {
82126
			if (font.toLowerCase() === requiredFont) {
82127
				return font;
82128
			}
82129
		}
82130
	}
82131
82132
	return defaultFont;
82133
};
82134
82135
////////////////////////////////////////
82136
// PdfPrinter
82137
82138
/**
82139
 * @class Creates an instance of a PdfPrinter which turns document definition into a pdf
82140
 *
82141
 * @param {Object} fontDescriptors font definition dictionary
82142
 *
82143
 * @example
82144
 * var fontDescriptors = {
82145
 *	Roboto: {
82146
 *		normal: 'fonts/Roboto-Regular.ttf',
82147
 *		bold: 'fonts/Roboto-Medium.ttf',
82148
 *		italics: 'fonts/Roboto-Italic.ttf',
82149
 *		bolditalics: 'fonts/Roboto-MediumItalic.ttf'
82150
 *	}
82151
 * };
82152
 *
82153
 * var printer = new PdfPrinter(fontDescriptors);
82154
 */
82155
function PdfPrinter(fontDescriptors) {
82156
	this.fontDescriptors = fontDescriptors;
82157
}
82158
82159
/**
82160
 * Executes layout engine for the specified document and renders it into a pdfkit document
82161
 * ready to be saved.
82162
 *
82163
 * @param {Object} docDefinition document definition
82164
 * @param {Object} docDefinition.content an array describing the pdf structure (for more information take a look at the examples in the /examples folder)
82165
 * @param {Object} [docDefinition.defaultStyle] default (implicit) style definition
82166
 * @param {Object} [docDefinition.styles] dictionary defining all styles which can be used in the document
82167
 * @param {Object} [docDefinition.pageSize] page size (pdfkit units, A4 dimensions by default)
82168
 * @param {Number} docDefinition.pageSize.width width
82169
 * @param {Number} docDefinition.pageSize.height height
82170
 * @param {Object} [docDefinition.pageMargins] page margins (pdfkit units)
82171
 * @param {Number} docDefinition.maxPagesNumber maximum number of pages to render
82172
 *
82173
 * @example
82174
 *
82175
 * var docDefinition = {
82176
 * 	info: {
82177
 *		title: 'awesome Document',
82178
 *		author: 'john doe',
82179
 *		subject: 'subject of document',
82180
 *		keywords: 'keywords for document',
82181
 * 	},
82182
 *	content: [
82183
 *		'First paragraph',
82184
 *		'Second paragraph, this time a little bit longer',
82185
 *		{ text: 'Third paragraph, slightly bigger font size', fontSize: 20 },
82186
 *		{ text: 'Another paragraph using a named style', style: 'header' },
82187
 *		{ text: ['playing with ', 'inlines' ] },
82188
 *		{ text: ['and ', { text: 'restyling ', bold: true }, 'them'] },
82189
 *	],
82190
 *	styles: {
82191
 *		header: { fontSize: 30, bold: true }
82192
 *	},
82193
 *	patterns: {
82194
 *		stripe45d: {
82195
 *			boundingBox: [1, 1, 4, 4],
82196
 *			xStep: 3,
82197
 *			yStep: 3,
82198
 *			pattern: '1 w 0 1 m 4 5 l s 2 0 m 5 3 l s'
82199
 *		}
82200
 *	}
82201
 * };
82202
 *
82203
 * var pdfKitDoc = printer.createPdfKitDocument(docDefinition);
82204
 *
82205
 * pdfKitDoc.pipe(fs.createWriteStream('sample.pdf'));
82206
 * pdfKitDoc.end();
82207
 *
82208
 * @return {Object} a pdfKit document object which can be saved or encode to data-url
82209
 */
82210
PdfPrinter.prototype.createPdfKitDocument = function (docDefinition, options) {
82211
	options = options || {};
82212
82213
	docDefinition.version = docDefinition.version || '1.3';
82214
	docDefinition.compress = isBoolean(docDefinition.compress) ? docDefinition.compress : true;
82215
	docDefinition.images = docDefinition.images || {};
82216
	docDefinition.pageMargins = ((docDefinition.pageMargins !== undefined) && (docDefinition.pageMargins !== null)) ? docDefinition.pageMargins : 40;
82217
82218
	var pageSize = fixPageSize(docDefinition.pageSize, docDefinition.pageOrientation);
82219
82220
	var pdfOptions = {
82221
		size: [pageSize.width, pageSize.height],
82222
		pdfVersion: docDefinition.version,
82223
		compress: docDefinition.compress,
82224
		userPassword: docDefinition.userPassword,
82225
		ownerPassword: docDefinition.ownerPassword,
82226
		permissions: docDefinition.permissions,
82227
		fontLayoutCache: isBoolean(options.fontLayoutCache) ? options.fontLayoutCache : true,
82228
		bufferPages: options.bufferPages || false,
82229
		autoFirstPage: false,
82230
		info: createMetadata(docDefinition),
82231
		font: null
82232
	};
82233
82234
	this.pdfKitDoc = PdfKitEngine.createPdfDocument(pdfOptions);
82235
82236
	this.fontProvider = new FontProvider(this.fontDescriptors, this.pdfKitDoc);
82237
82238
	var builder = new LayoutBuilder(pageSize, fixPageMargins(docDefinition.pageMargins), new ImageMeasure(this.pdfKitDoc, docDefinition.images), new SVGMeasure());
82239
82240
	registerDefaultTableLayouts(builder);
82241
	if (options.tableLayouts) {
82242
		builder.registerTableLayouts(options.tableLayouts);
82243
	}
82244
82245
	var pages = builder.layoutDocument(docDefinition.content, this.fontProvider, docDefinition.styles || {}, docDefinition.defaultStyle || {
82246
		fontSize: 12,
82247
		font: 'Roboto'
82248
	}, docDefinition.background, docDefinition.header, docDefinition.footer, docDefinition.images, docDefinition.watermark, docDefinition.pageBreakBefore);
82249
	var maxNumberPages = docDefinition.maxPagesNumber || -1;
82250
	if (isNumber(maxNumberPages) && maxNumberPages > -1) {
82251
		pages = pages.slice(0, maxNumberPages);
82252
	}
82253
82254
	// if pageSize.height is set to Infinity, calculate the actual height of the page that
82255
	// was laid out using the height of each of the items in the page.
82256
	if (pageSize.height === Infinity) {
82257
		var pageHeight = calculatePageHeight(pages, docDefinition.pageMargins);
82258
		this.pdfKitDoc.options.size = [pageSize.width, pageHeight];
82259
	}
82260
82261
	var patterns = createPatterns(docDefinition.patterns || {}, this.pdfKitDoc);
82262
82263
	renderPages(pages, this.fontProvider, this.pdfKitDoc, patterns, options.progressCallback);
82264
82265
	if (options.autoPrint) {
82266
		var printActionRef = this.pdfKitDoc.ref({
82267
			Type: 'Action',
82268
			S: 'Named',
82269
			N: 'Print'
82270
		});
82271
		this.pdfKitDoc._root.data.OpenAction = printActionRef;
82272
		printActionRef.end();
82273
	}
82274
	return this.pdfKitDoc;
82275
};
82276
82277
function createMetadata(docDefinition) {
82278
	// PDF standard has these properties reserved: Title, Author, Subject, Keywords,
82279
	// Creator, Producer, CreationDate, ModDate, Trapped.
82280
	// To keep the pdfmake api consistent, the info field are defined lowercase.
82281
	// Custom properties don't contain a space.
82282
	function standardizePropertyKey(key) {
82283
		var standardProperties = ['Title', 'Author', 'Subject', 'Keywords',
82284
			'Creator', 'Producer', 'CreationDate', 'ModDate', 'Trapped'];
82285
		var standardizedKey = key.charAt(0).toUpperCase() + key.slice(1);
82286
		if (standardProperties.indexOf(standardizedKey) !== -1) {
82287
			return standardizedKey;
82288
		}
82289
82290
		return key.replace(/\s+/g, '');
82291
	}
82292
82293
	var info = {
82294
		Producer: 'pdfmake',
82295
		Creator: 'pdfmake'
82296
	};
82297
82298
	if (docDefinition.info) {
82299
		for (var key in docDefinition.info) {
82300
			var value = docDefinition.info[key];
82301
			if (value) {
82302
				key = standardizePropertyKey(key);
82303
				info[key] = value;
82304
			}
82305
		}
82306
	}
82307
	return info;
82308
}
82309
82310
function calculatePageHeight(pages, margins) {
82311
	function getItemHeight(item) {
82312
		if (isFunction(item.item.getHeight)) {
82313
			return item.item.getHeight();
82314
		} else if (item.item._height) {
82315
			return item.item._height;
82316
		} else if (item.type === 'vector') {
82317
			if (typeof item.item.y1 !== 'undefined') {
82318
				return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
82319
			} else {
82320
				return item.item.h;
82321
			}
82322
		} else {
82323
			// TODO: add support for next item types
82324
			return 0;
82325
		}
82326
	}
82327
82328
	function getBottomPosition(item) {
82329
		var top = item.item.y || 0;
82330
		var height = getItemHeight(item);
82331
		return top + height;
82332
	}
82333
82334
	var fixedMargins = fixPageMargins(margins || 40);
82335
	var height = fixedMargins.top;
82336
82337
	pages.forEach(function (page) {
82338
		page.items.forEach(function (item) {
82339
			var bottomPosition = getBottomPosition(item);
82340
			if (bottomPosition > height) {
82341
				height = bottomPosition;
82342
			}
82343
		});
82344
	});
82345
82346
	height += fixedMargins.bottom;
82347
82348
	return height;
82349
}
82350
82351
function fixPageSize(pageSize, pageOrientation) {
82352
	function isNeedSwapPageSizes(pageOrientation) {
82353
		if (isString(pageOrientation)) {
82354
			pageOrientation = pageOrientation.toLowerCase();
82355
			return ((pageOrientation === 'portrait') && (size.width > size.height)) ||
82356
				((pageOrientation === 'landscape') && (size.width < size.height));
82357
		}
82358
		return false;
82359
	}
82360
82361
	// if pageSize.height is set to auto, set the height to infinity so there are no page breaks.
82362
	if (pageSize && pageSize.height === 'auto') {
82363
		pageSize.height = Infinity;
82364
	}
82365
82366
	var size = pageSize2widthAndHeight(pageSize || 'A4');
82367
	if (isNeedSwapPageSizes(pageOrientation)) { // swap page sizes
82368
		size = { width: size.height, height: size.width };
82369
	}
82370
	size.orientation = size.width > size.height ? 'landscape' : 'portrait';
82371
	return size;
82372
}
82373
82374
function fixPageMargins(margin) {
82375
	if (isNumber(margin)) {
82376
		margin = { left: margin, right: margin, top: margin, bottom: margin };
82377
	} else if (isArray(margin)) {
82378
		if (margin.length === 2) {
82379
			margin = { left: margin[0], top: margin[1], right: margin[0], bottom: margin[1] };
82380
		} else if (margin.length === 4) {
82381
			margin = { left: margin[0], top: margin[1], right: margin[2], bottom: margin[3] };
82382
		} else {
82383
			throw 'Invalid pageMargins definition';
82384
		}
82385
	}
82386
82387
	return margin;
82388
}
82389
82390
function registerDefaultTableLayouts(layoutBuilder) {
82391
	layoutBuilder.registerTableLayouts({
82392
		noBorders: {
82393
			hLineWidth: function (i) {
82394
				return 0;
82395
			},
82396
			vLineWidth: function (i) {
82397
				return 0;
82398
			},
82399
			paddingLeft: function (i) {
82400
				return i && 4 || 0;
82401
			},
82402
			paddingRight: function (i, node) {
82403
				return (i < node.table.widths.length - 1) ? 4 : 0;
82404
			}
82405
		},
82406
		headerLineOnly: {
82407
			hLineWidth: function (i, node) {
82408
				if (i === 0 || i === node.table.body.length) {
82409
					return 0;
82410
				}
82411
				return (i === node.table.headerRows) ? 2 : 0;
82412
			},
82413
			vLineWidth: function (i) {
82414
				return 0;
82415
			},
82416
			paddingLeft: function (i) {
82417
				return i === 0 ? 0 : 8;
82418
			},
82419
			paddingRight: function (i, node) {
82420
				return (i === node.table.widths.length - 1) ? 0 : 8;
82421
			}
82422
		},
82423
		lightHorizontalLines: {
82424
			hLineWidth: function (i, node) {
82425
				if (i === 0 || i === node.table.body.length) {
82426
					return 0;
82427
				}
82428
				return (i === node.table.headerRows) ? 2 : 1;
82429
			},
82430
			vLineWidth: function (i) {
82431
				return 0;
82432
			},
82433
			hLineColor: function (i) {
82434
				return i === 1 ? 'black' : '#aaa';
82435
			},
82436
			paddingLeft: function (i) {
82437
				return i === 0 ? 0 : 8;
82438
			},
82439
			paddingRight: function (i, node) {
82440
				return (i === node.table.widths.length - 1) ? 0 : 8;
82441
			}
82442
		}
82443
	});
82444
}
82445
82446
function pageSize2widthAndHeight(pageSize) {
82447
	if (isString(pageSize)) {
82448
		var size = sizes[pageSize.toUpperCase()];
82449
		if (!size) {
82450
			throw 'Page size ' + pageSize + ' not recognized';
82451
		}
82452
		return { width: size[0], height: size[1] };
82453
	}
82454
82455
	return pageSize;
82456
}
82457
82458
function updatePageOrientationInOptions(currentPage, pdfKitDoc) {
82459
	var previousPageOrientation = pdfKitDoc.options.size[0] > pdfKitDoc.options.size[1] ? 'landscape' : 'portrait';
82460
82461
	if (currentPage.pageSize.orientation !== previousPageOrientation) {
82462
		var width = pdfKitDoc.options.size[0];
82463
		var height = pdfKitDoc.options.size[1];
82464
		pdfKitDoc.options.size = [height, width];
82465
	}
82466
}
82467
82468
function renderPages(pages, fontProvider, pdfKitDoc, patterns, progressCallback) {
82469
	pdfKitDoc._pdfMakePages = pages;
82470
	pdfKitDoc.addPage();
82471
82472
	var totalItems = 0;
82473
	if (progressCallback) {
82474
		pages.forEach(function (page) {
82475
			totalItems += page.items.length;
82476
		});
82477
	}
82478
82479
	var renderedItems = 0;
82480
	progressCallback = progressCallback || function () {
82481
	};
82482
82483
	for (var i = 0; i < pages.length; i++) {
82484
		if (i > 0) {
82485
			updatePageOrientationInOptions(pages[i], pdfKitDoc);
82486
			pdfKitDoc.addPage(pdfKitDoc.options);
82487
		}
82488
82489
		var page = pages[i];
82490
		for (var ii = 0, il = page.items.length; ii < il; ii++) {
82491
			var item = page.items[ii];
82492
			switch (item.type) {
82493
				case 'vector':
82494
					renderVector(item.item, patterns, pdfKitDoc);
82495
					break;
82496
				case 'line':
82497
					renderLine(item.item, item.item.x, item.item.y, patterns, pdfKitDoc);
82498
					break;
82499
				case 'image':
82500
					renderImage(item.item, item.item.x, item.item.y, pdfKitDoc);
82501
					break;
82502
				case 'svg':
82503
					renderSVG(item.item, item.item.x, item.item.y, pdfKitDoc, fontProvider);
82504
					break;
82505
				case 'beginClip':
82506
					beginClip(item.item, pdfKitDoc);
82507
					break;
82508
				case 'endClip':
82509
					endClip(pdfKitDoc);
82510
					break;
82511
			}
82512
			renderedItems++;
82513
			progressCallback(renderedItems / totalItems);
82514
		}
82515
		if (page.watermark) {
82516
			renderWatermark(page, pdfKitDoc);
82517
		}
82518
	}
82519
}
82520
82521
/**
82522
 * Shift the "y" height of the text baseline up or down (superscript or subscript,
82523
 * respectively). The exact shift can / should be changed according to standard
82524
 * conventions.
82525
 *
82526
 * @param {number} y
82527
 * @param {any} inline
82528
 */
82529
function offsetText(y, inline) {
82530
	var newY = y;
82531
	if (inline.sup) {
82532
		newY -= inline.fontSize * 0.75;
82533
	}
82534
	if (inline.sub) {
82535
		newY += inline.fontSize * 0.35;
82536
	}
82537
	return newY;
82538
}
82539
82540
function renderLine(line, x, y, patterns, pdfKitDoc) {
82541
	function preparePageNodeRefLine(_pageNodeRef, inline) {
82542
		var newWidth;
82543
		var diffWidth;
82544
		var textTools = new TextTools(null);
82545
82546
		if (isUndefined(_pageNodeRef.positions)) {
82547
			throw 'Page reference id not found';
82548
		}
82549
82550
		var pageNumber = _pageNodeRef.positions[0].pageNumber.toString();
82551
82552
		inline.text = pageNumber;
82553
		newWidth = textTools.widthOfString(inline.text, inline.font, inline.fontSize, inline.characterSpacing, inline.fontFeatures);
82554
		diffWidth = inline.width - newWidth;
82555
		inline.width = newWidth;
82556
82557
		switch (inline.alignment) {
82558
			case 'right':
82559
				inline.x += diffWidth;
82560
				break;
82561
			case 'center':
82562
				inline.x += diffWidth / 2;
82563
				break;
82564
		}
82565
	}
82566
82567
	if (line._pageNodeRef) {
82568
		preparePageNodeRefLine(line._pageNodeRef, line.inlines[0]);
82569
	}
82570
82571
	x = x || 0;
82572
	y = y || 0;
82573
82574
	var lineHeight = line.getHeight();
82575
	var ascenderHeight = line.getAscenderHeight();
82576
	var descent = lineHeight - ascenderHeight;
82577
82578
	textDecorator.drawBackground(line, x, y, patterns, pdfKitDoc);
82579
82580
	//TODO: line.optimizeInlines();
82581
	for (var i = 0, l = line.inlines.length; i < l; i++) {
82582
		var inline = line.inlines[i];
82583
		var shiftToBaseline = lineHeight - ((inline.font.ascender / 1000) * inline.fontSize) - descent;
82584
82585
		if (inline._pageNodeRef) {
82586
			preparePageNodeRefLine(inline._pageNodeRef, inline);
82587
		}
82588
82589
		var options = {
82590
			lineBreak: false,
82591
			textWidth: inline.width,
82592
			characterSpacing: inline.characterSpacing,
82593
			wordCount: 1,
82594
			link: inline.link
82595
		};
82596
82597
		if (inline.linkToDestination) {
82598
			options.goTo = inline.linkToDestination;
82599
		}
82600
82601
		if (line.id && i === 0) {
82602
			options.destination = line.id;
82603
		}
82604
82605
		if (inline.fontFeatures) {
82606
			options.features = inline.fontFeatures;
82607
		}
82608
82609
		var opacity = isNumber(inline.opacity) ? inline.opacity : 1;
82610
		pdfKitDoc.opacity(opacity);
82611
		pdfKitDoc.fill(inline.color || 'black');
82612
82613
		pdfKitDoc._font = inline.font;
82614
		pdfKitDoc.fontSize(inline.fontSize);
82615
82616
		var shiftedY = offsetText(y + shiftToBaseline, inline);
82617
		pdfKitDoc.text(inline.text, x + inline.x, shiftedY, options);
82618
82619
		if (inline.linkToPage) {
82620
			var _ref = pdfKitDoc.ref({ Type: 'Action', S: 'GoTo', D: [inline.linkToPage, 0, 0] }).end();
82621
			pdfKitDoc.annotate(x + inline.x, shiftedY, inline.width, inline.height, {
82622
				Subtype: 'Link',
82623
				Dest: [inline.linkToPage - 1, 'XYZ', null, null, null]
82624
			});
82625
		}
82626
82627
	}
82628
	// Decorations won't draw correctly for superscript
82629
	textDecorator.drawDecorations(line, x, y, pdfKitDoc);
82630
}
82631
82632
function renderWatermark(page, pdfKitDoc) {
82633
	var watermark = page.watermark;
82634
82635
	pdfKitDoc.fill(watermark.color);
82636
	pdfKitDoc.opacity(watermark.opacity);
82637
82638
	pdfKitDoc.save();
82639
82640
	pdfKitDoc.rotate(watermark.angle, { origin: [pdfKitDoc.page.width / 2, pdfKitDoc.page.height / 2] });
82641
82642
	var x = pdfKitDoc.page.width / 2 - watermark._size.size.width / 2;
82643
	var y = pdfKitDoc.page.height / 2 - watermark._size.size.height / 2;
82644
82645
	pdfKitDoc._font = watermark.font;
82646
	pdfKitDoc.fontSize(watermark.fontSize);
82647
	pdfKitDoc.text(watermark.text, x, y, { lineBreak: false });
82648
82649
	pdfKitDoc.restore();
82650
}
82651
82652
function renderVector(vector, patterns, pdfKitDoc) {
82653
	//TODO: pdf optimization (there's no need to write all properties everytime)
82654
	pdfKitDoc.lineWidth(vector.lineWidth || 1);
82655
	if (vector.dash) {
82656
		pdfKitDoc.dash(vector.dash.length, { space: vector.dash.space || vector.dash.length, phase: vector.dash.phase || 0 });
82657
	} else {
82658
		pdfKitDoc.undash();
82659
	}
82660
	pdfKitDoc.lineJoin(vector.lineJoin || 'miter');
82661
	pdfKitDoc.lineCap(vector.lineCap || 'butt');
82662
82663
	//TODO: clipping
82664
82665
	var gradient = null;
82666
82667
	switch (vector.type) {
82668
		case 'ellipse':
82669
			pdfKitDoc.ellipse(vector.x, vector.y, vector.r1, vector.r2);
82670
82671
			if (vector.linearGradient) {
82672
				gradient = pdfKitDoc.linearGradient(vector.x - vector.r1, vector.y, vector.x + vector.r1, vector.y);
82673
			}
82674
			break;
82675
		case 'rect':
82676
			if (vector.r) {
82677
				pdfKitDoc.roundedRect(vector.x, vector.y, vector.w, vector.h, vector.r);
82678
			} else {
82679
				pdfKitDoc.rect(vector.x, vector.y, vector.w, vector.h);
82680
			}
82681
82682
			if (vector.linearGradient) {
82683
				gradient = pdfKitDoc.linearGradient(vector.x, vector.y, vector.x + vector.w, vector.y);
82684
			}
82685
			break;
82686
		case 'line':
82687
			pdfKitDoc.moveTo(vector.x1, vector.y1);
82688
			pdfKitDoc.lineTo(vector.x2, vector.y2);
82689
			break;
82690
		case 'polyline':
82691
			if (vector.points.length === 0) {
82692
				break;
82693
			}
82694
82695
			pdfKitDoc.moveTo(vector.points[0].x, vector.points[0].y);
82696
			for (var i = 1, l = vector.points.length; i < l; i++) {
82697
				pdfKitDoc.lineTo(vector.points[i].x, vector.points[i].y);
82698
			}
82699
82700
			if (vector.points.length > 1) {
82701
				var p1 = vector.points[0];
82702
				var pn = vector.points[vector.points.length - 1];
82703
82704
				if (vector.closePath || p1.x === pn.x && p1.y === pn.y) {
82705
					pdfKitDoc.closePath();
82706
				}
82707
			}
82708
			break;
82709
		case 'path':
82710
			pdfKitDoc.path(vector.d);
82711
			break;
82712
	}
82713
82714
	if (vector.linearGradient && gradient) {
82715
		var step = 1 / (vector.linearGradient.length - 1);
82716
82717
		for (var i = 0; i < vector.linearGradient.length; i++) {
82718
			gradient.stop(i * step, vector.linearGradient[i]);
82719
		}
82720
82721
		vector.color = gradient;
82722
	}
82723
82724
	if (isPattern(vector.color)) {
82725
		vector.color = getPattern(vector.color, patterns);
82726
	}
82727
82728
	var fillOpacity = isNumber(vector.fillOpacity) ? vector.fillOpacity : 1;
82729
	var strokeOpacity = isNumber(vector.strokeOpacity) ? vector.strokeOpacity : 1;
82730
82731
	if (vector.color && vector.lineColor) {
82732
		pdfKitDoc.fillColor(vector.color, fillOpacity);
82733
		pdfKitDoc.strokeColor(vector.lineColor, strokeOpacity);
82734
		pdfKitDoc.fillAndStroke();
82735
	} else if (vector.color) {
82736
		pdfKitDoc.fillColor(vector.color, fillOpacity);
82737
		pdfKitDoc.fill();
82738
	} else {
82739
		pdfKitDoc.strokeColor(vector.lineColor || 'black', strokeOpacity);
82740
		pdfKitDoc.stroke();
82741
	}
82742
}
82743
82744
function renderImage(image, x, y, pdfKitDoc) {
82745
	var opacity = isNumber(image.opacity) ? image.opacity : 1;
82746
	pdfKitDoc.opacity(opacity);
82747
	if (image.cover) {
82748
		var align = image.cover.align || 'center';
82749
		var valign = image.cover.valign || 'center';
82750
		var width = image.cover.width ? image.cover.width : image.width;
82751
		var height = image.cover.height ? image.cover.height : image.height;
82752
		pdfKitDoc.save();
82753
		pdfKitDoc.rect(image.x, image.y, width, height).clip();
82754
		pdfKitDoc.image(image.image, image.x, image.y, { cover: [width, height], align: align, valign: valign });
82755
		pdfKitDoc.restore();
82756
	} else {
82757
		pdfKitDoc.image(image.image, image.x, image.y, { width: image._width, height: image._height });
82758
	}
82759
	if (image.link) {
82760
		pdfKitDoc.link(image.x, image.y, image._width, image._height, image.link);
82761
	}
82762
	if (image.linkToPage) {
82763
		pdfKitDoc.ref({ Type: 'Action', S: 'GoTo', D: [image.linkToPage, 0, 0] }).end();
82764
		pdfKitDoc.annotate(image.x, image.y, image._width, image._height, { Subtype: 'Link', Dest: [image.linkToPage - 1, 'XYZ', null, null, null] });
82765
	}
82766
	if (image.linkToDestination) {
82767
		pdfKitDoc.goTo(image.x, image.y, image._width, image._height, image.linkToDestination);
82768
	}
82769
}
82770
82771
function renderSVG(svg, x, y, pdfKitDoc, fontProvider) {
82772
	var options = Object.assign({ width: svg._width, height: svg._height, assumePt: true }, svg.options);
82773
	options.fontCallback = function (family, bold, italic) {
82774
		var fontsFamily = family.split(',').map(function (f) { return f.trim().replace(/('|")/g, ''); });
82775
		var font = findFont(fontProvider.fonts, fontsFamily, svg.font || 'Roboto');
82776
82777
		var fontFile = fontProvider.getFontFile(font, bold, italic);
82778
		if (fontFile === null) {
82779
			var type = fontProvider.getFontType(bold, italic);
82780
			throw new Error('Font \'' + font + '\' in style \'' + type + '\' is not defined in the font section of the document definition.');
82781
		}
82782
82783
		return fontFile;
82784
	};
82785
82786
	SVGtoPDF(pdfKitDoc, svg.svg, svg.x, svg.y, options);
82787
}
82788
82789
function beginClip(rect, pdfKitDoc) {
82790
	pdfKitDoc.save();
82791
	pdfKitDoc.addContent('' + rect.x + ' ' + rect.y + ' ' + rect.width + ' ' + rect.height + ' re');
82792
	pdfKitDoc.clip();
82793
}
82794
82795
function endClip(pdfKitDoc) {
82796
	pdfKitDoc.restore();
82797
}
82798
82799
function createPatterns(patternDefinitions, pdfKitDoc) {
82800
	var patterns = {};
82801
	Object.keys(patternDefinitions).forEach(function (p) {
82802
		var pattern = patternDefinitions[p];
82803
		patterns[p] = pdfKitDoc.pattern(pattern.boundingBox, pattern.xStep, pattern.yStep, pattern.pattern, pattern.colored);
82804
	});
82805
	return patterns;
82806
}
82807
82808
module.exports = PdfPrinter;
82809
82810
82811
/***/ }),
82812
82813
/***/ 145:
82814
/***/ (function(module) {
82815
82816
"use strict";
82817
/*eslint no-unused-vars: ["error", {"args": "none"}]*/
82818
/*eslint no-redeclare: "off"*/
82819
82820
82821
/* qr.js -- QR code generator in Javascript (revision 2011-01-19)
82822
 * Written by Kang Seonghoon <public+qrjs@mearie.org>.
82823
 *
82824
 * This source code is in the public domain; if your jurisdiction does not
82825
 * recognize the public domain the terms of Creative Commons CC0 license
82826
 * apply. In the other words, you can always do what you want.
82827
 */
82828
82829
82830
// per-version information (cf. JIS X 0510:2004 pp. 30--36, 71)
82831
//
82832
// [0]: the degree of generator polynomial by ECC levels
82833
// [1]: # of code blocks by ECC levels
82834
// [2]: left-top positions of alignment patterns
82835
//
82836
// the number in this table (in particular, [0]) does not exactly match with
82837
// the numbers in the specficiation. see augumenteccs below for the reason.
82838
var VERSIONS = [
82839
	null,
82840
	[[10, 7, 17, 13], [1, 1, 1, 1], []],
82841
	[[16, 10, 28, 22], [1, 1, 1, 1], [4, 16]],
82842
	[[26, 15, 22, 18], [1, 1, 2, 2], [4, 20]],
82843
	[[18, 20, 16, 26], [2, 1, 4, 2], [4, 24]],
82844
	[[24, 26, 22, 18], [2, 1, 4, 4], [4, 28]],
82845
	[[16, 18, 28, 24], [4, 2, 4, 4], [4, 32]],
82846
	[[18, 20, 26, 18], [4, 2, 5, 6], [4, 20, 36]],
82847
	[[22, 24, 26, 22], [4, 2, 6, 6], [4, 22, 40]],
82848
	[[22, 30, 24, 20], [5, 2, 8, 8], [4, 24, 44]],
82849
	[[26, 18, 28, 24], [5, 4, 8, 8], [4, 26, 48]],
82850
	[[30, 20, 24, 28], [5, 4, 11, 8], [4, 28, 52]],
82851
	[[22, 24, 28, 26], [8, 4, 11, 10], [4, 30, 56]],
82852
	[[22, 26, 22, 24], [9, 4, 16, 12], [4, 32, 60]],
82853
	[[24, 30, 24, 20], [9, 4, 16, 16], [4, 24, 44, 64]],
82854
	[[24, 22, 24, 30], [10, 6, 18, 12], [4, 24, 46, 68]],
82855
	[[28, 24, 30, 24], [10, 6, 16, 17], [4, 24, 48, 72]],
82856
	[[28, 28, 28, 28], [11, 6, 19, 16], [4, 28, 52, 76]],
82857
	[[26, 30, 28, 28], [13, 6, 21, 18], [4, 28, 54, 80]],
82858
	[[26, 28, 26, 26], [14, 7, 25, 21], [4, 28, 56, 84]],
82859
	[[26, 28, 28, 30], [16, 8, 25, 20], [4, 32, 60, 88]],
82860
	[[26, 28, 30, 28], [17, 8, 25, 23], [4, 26, 48, 70, 92]],
82861
	[[28, 28, 24, 30], [17, 9, 34, 23], [4, 24, 48, 72, 96]],
82862
	[[28, 30, 30, 30], [18, 9, 30, 25], [4, 28, 52, 76, 100]],
82863
	[[28, 30, 30, 30], [20, 10, 32, 27], [4, 26, 52, 78, 104]],
82864
	[[28, 26, 30, 30], [21, 12, 35, 29], [4, 30, 56, 82, 108]],
82865
	[[28, 28, 30, 28], [23, 12, 37, 34], [4, 28, 56, 84, 112]],
82866
	[[28, 30, 30, 30], [25, 12, 40, 34], [4, 32, 60, 88, 116]],
82867
	[[28, 30, 30, 30], [26, 13, 42, 35], [4, 24, 48, 72, 96, 120]],
82868
	[[28, 30, 30, 30], [28, 14, 45, 38], [4, 28, 52, 76, 100, 124]],
82869
	[[28, 30, 30, 30], [29, 15, 48, 40], [4, 24, 50, 76, 102, 128]],
82870
	[[28, 30, 30, 30], [31, 16, 51, 43], [4, 28, 54, 80, 106, 132]],
82871
	[[28, 30, 30, 30], [33, 17, 54, 45], [4, 32, 58, 84, 110, 136]],
82872
	[[28, 30, 30, 30], [35, 18, 57, 48], [4, 28, 56, 84, 112, 140]],
82873
	[[28, 30, 30, 30], [37, 19, 60, 51], [4, 32, 60, 88, 116, 144]],
82874
	[[28, 30, 30, 30], [38, 19, 63, 53], [4, 28, 52, 76, 100, 124, 148]],
82875
	[[28, 30, 30, 30], [40, 20, 66, 56], [4, 22, 48, 74, 100, 126, 152]],
82876
	[[28, 30, 30, 30], [43, 21, 70, 59], [4, 26, 52, 78, 104, 130, 156]],
82877
	[[28, 30, 30, 30], [45, 22, 74, 62], [4, 30, 56, 82, 108, 134, 160]],
82878
	[[28, 30, 30, 30], [47, 24, 77, 65], [4, 24, 52, 80, 108, 136, 164]],
82879
	[[28, 30, 30, 30], [49, 25, 81, 68], [4, 28, 56, 84, 112, 140, 168]]];
82880
82881
// mode constants (cf. Table 2 in JIS X 0510:2004 p. 16)
82882
var MODE_TERMINATOR = 0;
82883
var MODE_NUMERIC = 1, MODE_ALPHANUMERIC = 2, MODE_OCTET = 4, MODE_KANJI = 8;
82884
82885
// validation regexps
82886
var NUMERIC_REGEXP = /^\d*$/;
82887
var ALPHANUMERIC_REGEXP = /^[A-Za-z0-9 $%*+\-./:]*$/;
82888
var ALPHANUMERIC_OUT_REGEXP = /^[A-Z0-9 $%*+\-./:]*$/;
82889
82890
// ECC levels (cf. Table 22 in JIS X 0510:2004 p. 45)
82891
var ECCLEVEL_L = 1, ECCLEVEL_M = 0, ECCLEVEL_Q = 3, ECCLEVEL_H = 2;
82892
82893
// GF(2^8)-to-integer mapping with a reducing polynomial x^8+x^4+x^3+x^2+1
82894
// invariant: GF256_MAP[GF256_INVMAP[i]] == i for all i in [1,256)
82895
var GF256_MAP = [], GF256_INVMAP = [-1];
82896
for (var i = 0, v = 1; i < 255; ++i) {
82897
	GF256_MAP.push(v);
82898
	GF256_INVMAP[v] = i;
82899
	v = (v * 2) ^ (v >= 128 ? 0x11d : 0);
82900
}
82901
82902
// generator polynomials up to degree 30
82903
// (should match with polynomials in JIS X 0510:2004 Appendix A)
82904
//
82905
// generator polynomial of degree K is product of (x-\alpha^0), (x-\alpha^1),
82906
// ..., (x-\alpha^(K-1)). by convention, we omit the K-th coefficient (always 1)
82907
// from the result; also other coefficients are written in terms of the exponent
82908
// to \alpha to avoid the redundant calculation. (see also calculateecc below.)
82909
var GF256_GENPOLY = [[]];
82910
for (var i = 0; i < 30; ++i) {
82911
	var prevpoly = GF256_GENPOLY[i], poly = [];
82912
	for (var j = 0; j <= i; ++j) {
82913
		var a = (j < i ? GF256_MAP[prevpoly[j]] : 0);
82914
		var b = GF256_MAP[(i + (prevpoly[j - 1] || 0)) % 255];
82915
		poly.push(GF256_INVMAP[a ^ b]);
82916
	}
82917
	GF256_GENPOLY.push(poly);
82918
}
82919
82920
// alphanumeric character mapping (cf. Table 5 in JIS X 0510:2004 p. 19)
82921
var ALPHANUMERIC_MAP = {};
82922
for (var i = 0; i < 45; ++i) {
82923
	ALPHANUMERIC_MAP['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'.charAt(i)] = i;
82924
}
82925
82926
// mask functions in terms of row # and column #
82927
// (cf. Table 20 in JIS X 0510:2004 p. 42)
82928
/*jshint unused: false */
82929
var MASKFUNCS = [
82930
	function (i, j) {
82931
		return (i + j) % 2 === 0;
82932
	},
82933
	function (i, j) {
82934
		return i % 2 === 0;
82935
	},
82936
	function (i, j) {
82937
		return j % 3 === 0;
82938
	},
82939
	function (i, j) {
82940
		return (i + j) % 3 === 0;
82941
	},
82942
	function (i, j) {
82943
		return (((i / 2) | 0) + ((j / 3) | 0)) % 2 === 0;
82944
	},
82945
	function (i, j) {
82946
		return (i * j) % 2 + (i * j) % 3 === 0;
82947
	},
82948
	function (i, j) {
82949
		return ((i * j) % 2 + (i * j) % 3) % 2 === 0;
82950
	},
82951
	function (i, j) {
82952
		return ((i + j) % 2 + (i * j) % 3) % 2 === 0;
82953
	}];
82954
82955
// returns true when the version information has to be embeded.
82956
var needsverinfo = function (ver) {
82957
	return ver > 6;
82958
};
82959
82960
// returns the size of entire QR code for given version.
82961
var getsizebyver = function (ver) {
82962
	return 4 * ver + 17;
82963
};
82964
82965
// returns the number of bits available for code words in this version.
82966
var nfullbits = function (ver) {
82967
	/*
82968
	 * |<--------------- n --------------->|
82969
	 * |        |<----- n-17 ---->|        |
82970
	 * +-------+                ///+-------+ ----
82971
	 * |       |                ///|       |    ^
82972
	 * |  9x9  |       @@@@@    ///|  9x8  |    |
82973
	 * |       | # # # @5x5@ # # # |       |    |
82974
	 * +-------+       @@@@@       +-------+    |
82975
	 *       #                               ---|
82976
	 *                                        ^ |
82977
	 *       #                                |
82978
	 *     @@@@@       @@@@@       @@@@@      | n
82979
	 *     @5x5@       @5x5@       @5x5@   n-17
82980
	 *     @@@@@       @@@@@       @@@@@      | |
82981
	 *       #                                | |
82982
	 * //////                                 v |
82983
	 * //////#                               ---|
82984
	 * +-------+       @@@@@       @@@@@        |
82985
	 * |       |       @5x5@       @5x5@        |
82986
	 * |  8x9  |       @@@@@       @@@@@        |
82987
	 * |       |                                v
82988
	 * +-------+                             ----
82989
	 *
82990
	 * when the entire code has n^2 modules and there are m^2-3 alignment
82991
	 * patterns, we have:
82992
	 * - 225 (= 9x9 + 9x8 + 8x9) modules for finder patterns and
82993
	 *   format information;
82994
	 * - 2n-34 (= 2(n-17)) modules for timing patterns;
82995
	 * - 36 (= 3x6 + 6x3) modules for version information, if any;
82996
	 * - 25m^2-75 (= (m^2-3)(5x5)) modules for alignment patterns
82997
	 *   if any, but 10m-20 (= 2(m-2)x5) of them overlaps with
82998
	 *   timing patterns.
82999
	 */
83000
	var v = VERSIONS[ver];
83001
	var nbits = 16 * ver * ver + 128 * ver + 64; // finder, timing and format info.
83002
	if (needsverinfo(ver))
83003
		nbits -= 36; // version information
83004
	if (v[2].length) { // alignment patterns
83005
		nbits -= 25 * v[2].length * v[2].length - 10 * v[2].length - 55;
83006
	}
83007
	return nbits;
83008
};
83009
83010
// returns the number of bits available for data portions (i.e. excludes ECC
83011
// bits but includes mode and length bits) in this version and ECC level.
83012
var ndatabits = function (ver, ecclevel) {
83013
	var nbits = nfullbits(ver) & ~7; // no sub-octet code words
83014
	var v = VERSIONS[ver];
83015
	nbits -= 8 * v[0][ecclevel] * v[1][ecclevel]; // ecc bits
83016
	return nbits;
83017
};
83018
83019
// returns the number of bits required for the length of data.
83020
// (cf. Table 3 in JIS X 0510:2004 p. 16)
83021
var ndatalenbits = function (ver, mode) {
83022
	switch (mode) {
83023
		case MODE_NUMERIC:
83024
			return (ver < 10 ? 10 : ver < 27 ? 12 : 14);
83025
		case MODE_ALPHANUMERIC:
83026
			return (ver < 10 ? 9 : ver < 27 ? 11 : 13);
83027
		case MODE_OCTET:
83028
			return (ver < 10 ? 8 : 16);
83029
		case MODE_KANJI:
83030
			return (ver < 10 ? 8 : ver < 27 ? 10 : 12);
83031
	}
83032
};
83033
83034
// returns the maximum length of data possible in given configuration.
83035
var getmaxdatalen = function (ver, mode, ecclevel) {
83036
	var nbits = ndatabits(ver, ecclevel) - 4 - ndatalenbits(ver, mode); // 4 for mode bits
83037
	switch (mode) {
83038
		case MODE_NUMERIC:
83039
			return ((nbits / 10) | 0) * 3 + (nbits % 10 < 4 ? 0 : nbits % 10 < 7 ? 1 : 2);
83040
		case MODE_ALPHANUMERIC:
83041
			return ((nbits / 11) | 0) * 2 + (nbits % 11 < 6 ? 0 : 1);
83042
		case MODE_OCTET:
83043
			return (nbits / 8) | 0;
83044
		case MODE_KANJI:
83045
			return (nbits / 13) | 0;
83046
	}
83047
};
83048
83049
// checks if the given data can be encoded in given mode, and returns
83050
// the converted data for the further processing if possible. otherwise
83051
// returns null.
83052
//
83053
// this function does not check the length of data; it is a duty of
83054
// encode function below (as it depends on the version and ECC level too).
83055
var validatedata = function (mode, data) {
83056
	switch (mode) {
83057
		case MODE_NUMERIC:
83058
			if (!data.match(NUMERIC_REGEXP))
83059
				return null;
83060
			return data;
83061
83062
		case MODE_ALPHANUMERIC:
83063
			if (!data.match(ALPHANUMERIC_REGEXP))
83064
				return null;
83065
			return data.toUpperCase();
83066
83067
		case MODE_OCTET:
83068
			if (typeof data === 'string') { // encode as utf-8 string
83069
				var newdata = [];
83070
				for (var i = 0; i < data.length; ++i) {
83071
					var ch = data.charCodeAt(i);
83072
					if (ch < 0x80) {
83073
						newdata.push(ch);
83074
					} else if (ch < 0x800) {
83075
						newdata.push(0xc0 | (ch >> 6),
83076
							0x80 | (ch & 0x3f));
83077
					} else if (ch < 0x10000) {
83078
						newdata.push(0xe0 | (ch >> 12),
83079
							0x80 | ((ch >> 6) & 0x3f),
83080
							0x80 | (ch & 0x3f));
83081
					} else {
83082
						newdata.push(0xf0 | (ch >> 18),
83083
							0x80 | ((ch >> 12) & 0x3f),
83084
							0x80 | ((ch >> 6) & 0x3f),
83085
							0x80 | (ch & 0x3f));
83086
					}
83087
				}
83088
				return newdata;
83089
			} else {
83090
				return data;
83091
			}
83092
	}
83093
};
83094
83095
// returns the code words (sans ECC bits) for given data and configurations.
83096
// requires data to be preprocessed by validatedata. no length check is
83097
// performed, and everything has to be checked before calling this function.
83098
var encode = function (ver, mode, data, maxbuflen) {
83099
	var buf = [];
83100
	var bits = 0, remaining = 8;
83101
	var datalen = data.length;
83102
83103
	// this function is intentionally no-op when n=0.
83104
	var pack = function (x, n) {
83105
		if (n >= remaining) {
83106
			buf.push(bits | (x >> (n -= remaining)));
83107
			while (n >= 8)
83108
				buf.push((x >> (n -= 8)) & 255);
83109
			bits = 0;
83110
			remaining = 8;
83111
		}
83112
		if (n > 0)
83113
			bits |= (x & ((1 << n) - 1)) << (remaining -= n);
83114
	};
83115
83116
	var nlenbits = ndatalenbits(ver, mode);
83117
	pack(mode, 4);
83118
	pack(datalen, nlenbits);
83119
83120
	switch (mode) {
83121
		case MODE_NUMERIC:
83122
			for (var i = 2; i < datalen; i += 3) {
83123
				pack(parseInt(data.substring(i - 2, i + 1), 10), 10);
83124
			}
83125
			pack(parseInt(data.substring(i - 2), 10), [0, 4, 7][datalen % 3]);
83126
			break;
83127
83128
		case MODE_ALPHANUMERIC:
83129
			for (var i = 1; i < datalen; i += 2) {
83130
				pack(ALPHANUMERIC_MAP[data.charAt(i - 1)] * 45 +
83131
					ALPHANUMERIC_MAP[data.charAt(i)], 11);
83132
			}
83133
			if (datalen % 2 == 1) {
83134
				pack(ALPHANUMERIC_MAP[data.charAt(i - 1)], 6);
83135
			}
83136
			break;
83137
83138
		case MODE_OCTET:
83139
			for (var i = 0; i < datalen; ++i) {
83140
				pack(data[i], 8);
83141
			}
83142
			break;
83143
	}
83144
83145
	// final bits. it is possible that adding terminator causes the buffer
83146
	// to overflow, but then the buffer truncated to the maximum size will
83147
	// be valid as the truncated terminator mode bits and padding is
83148
	// identical in appearance (cf. JIS X 0510:2004 sec 8.4.8).
83149
	pack(MODE_TERMINATOR, 4);
83150
	if (remaining < 8)
83151
		buf.push(bits);
83152
83153
	// the padding to fill up the remaining space. we should not add any
83154
	// words when the overflow already occurred.
83155
	while (buf.length + 1 < maxbuflen)
83156
		buf.push(0xec, 0x11);
83157
	if (buf.length < maxbuflen)
83158
		buf.push(0xec);
83159
	return buf;
83160
};
83161
83162
// calculates ECC code words for given code words and generator polynomial.
83163
//
83164
// this is quite similar to CRC calculation as both Reed-Solomon and CRC use
83165
// the certain kind of cyclic codes, which is effectively the division of
83166
// zero-augumented polynomial by the generator polynomial. the only difference
83167
// is that Reed-Solomon uses GF(2^8), instead of CRC's GF(2), and Reed-Solomon
83168
// uses the different generator polynomial than CRC's.
83169
var calculateecc = function (poly, genpoly) {
83170
	var modulus = poly.slice(0);
83171
	var polylen = poly.length, genpolylen = genpoly.length;
83172
	for (var i = 0; i < genpolylen; ++i)
83173
		modulus.push(0);
83174
	for (var i = 0; i < polylen; ) {
83175
		var quotient = GF256_INVMAP[modulus[i++]];
83176
		if (quotient >= 0) {
83177
			for (var j = 0; j < genpolylen; ++j) {
83178
				modulus[i + j] ^= GF256_MAP[(quotient + genpoly[j]) % 255];
83179
			}
83180
		}
83181
	}
83182
	return modulus.slice(polylen);
83183
};
83184
83185
// auguments ECC code words to given code words. the resulting words are
83186
// ready to be encoded in the matrix.
83187
//
83188
// the much of actual augumenting procedure follows JIS X 0510:2004 sec 8.7.
83189
// the code is simplified using the fact that the size of each code & ECC
83190
// blocks is almost same; for example, when we have 4 blocks and 46 data words
83191
// the number of code words in those blocks are 11, 11, 12, 12 respectively.
83192
var augumenteccs = function (poly, nblocks, genpoly) {
83193
	var subsizes = [];
83194
	var subsize = (poly.length / nblocks) | 0, subsize0 = 0;
83195
	var pivot = nblocks - poly.length % nblocks;
83196
	for (var i = 0; i < pivot; ++i) {
83197
		subsizes.push(subsize0);
83198
		subsize0 += subsize;
83199
	}
83200
	for (var i = pivot; i < nblocks; ++i) {
83201
		subsizes.push(subsize0);
83202
		subsize0 += subsize + 1;
83203
	}
83204
	subsizes.push(subsize0);
83205
83206
	var eccs = [];
83207
	for (var i = 0; i < nblocks; ++i) {
83208
		eccs.push(calculateecc(poly.slice(subsizes[i], subsizes[i + 1]), genpoly));
83209
	}
83210
83211
	var result = [];
83212
	var nitemsperblock = (poly.length / nblocks) | 0;
83213
	for (var i = 0; i < nitemsperblock; ++i) {
83214
		for (var j = 0; j < nblocks; ++j) {
83215
			result.push(poly[subsizes[j] + i]);
83216
		}
83217
	}
83218
	for (var j = pivot; j < nblocks; ++j) {
83219
		result.push(poly[subsizes[j + 1] - 1]);
83220
	}
83221
	for (var i = 0; i < genpoly.length; ++i) {
83222
		for (var j = 0; j < nblocks; ++j) {
83223
			result.push(eccs[j][i]);
83224
		}
83225
	}
83226
	return result;
83227
};
83228
83229
// auguments BCH(p+q,q) code to the polynomial over GF(2), given the proper
83230
// genpoly. the both input and output are in binary numbers, and unlike
83231
// calculateecc genpoly should include the 1 bit for the highest degree.
83232
//
83233
// actual polynomials used for this procedure are as follows:
83234
// - p=10, q=5, genpoly=x^10+x^8+x^5+x^4+x^2+x+1 (JIS X 0510:2004 Appendix C)
83235
// - p=18, q=6, genpoly=x^12+x^11+x^10+x^9+x^8+x^5+x^2+1 (ibid. Appendix D)
83236
var augumentbch = function (poly, p, genpoly, q) {
83237
	var modulus = poly << q;
83238
	for (var i = p - 1; i >= 0; --i) {
83239
		if ((modulus >> (q + i)) & 1)
83240
			modulus ^= genpoly << i;
83241
	}
83242
	return (poly << q) | modulus;
83243
};
83244
83245
// creates the base matrix for given version. it returns two matrices, one of
83246
// them is the actual one and the another represents the "reserved" portion
83247
// (e.g. finder and timing patterns) of the matrix.
83248
//
83249
// some entries in the matrix may be undefined, rather than 0 or 1. this is
83250
// intentional (no initialization needed!), and putdata below will fill
83251
// the remaining ones.
83252
var makebasematrix = function (ver) {
83253
	var v = VERSIONS[ver], n = getsizebyver(ver);
83254
	var matrix = [], reserved = [];
83255
	for (var i = 0; i < n; ++i) {
83256
		matrix.push([]);
83257
		reserved.push([]);
83258
	}
83259
83260
	var blit = function (y, x, h, w, bits) {
83261
		for (var i = 0; i < h; ++i) {
83262
			for (var j = 0; j < w; ++j) {
83263
				matrix[y + i][x + j] = (bits[i] >> j) & 1;
83264
				reserved[y + i][x + j] = 1;
83265
			}
83266
		}
83267
	};
83268
83269
	// finder patterns and a part of timing patterns
83270
	// will also mark the format information area (not yet written) as reserved.
83271
	blit(0, 0, 9, 9, [0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x17f, 0x00, 0x40]);
83272
	blit(n - 8, 0, 8, 9, [0x100, 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f]);
83273
	blit(0, n - 8, 9, 8, [0xfe, 0x82, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00]);
83274
83275
	// the rest of timing patterns
83276
	for (var i = 9; i < n - 8; ++i) {
83277
		matrix[6][i] = matrix[i][6] = ~i & 1;
83278
		reserved[6][i] = reserved[i][6] = 1;
83279
	}
83280
83281
	// alignment patterns
83282
	var aligns = v[2], m = aligns.length;
83283
	for (var i = 0; i < m; ++i) {
83284
		var minj = (i === 0 || i === m - 1 ? 1 : 0), maxj = (i === 0 ? m - 1 : m);
83285
		for (var j = minj; j < maxj; ++j) {
83286
			blit(aligns[i], aligns[j], 5, 5, [0x1f, 0x11, 0x15, 0x11, 0x1f]);
83287
		}
83288
	}
83289
83290
	// version information
83291
	if (needsverinfo(ver)) {
83292
		var code = augumentbch(ver, 6, 0x1f25, 12);
83293
		var k = 0;
83294
		for (var i = 0; i < 6; ++i) {
83295
			for (var j = 0; j < 3; ++j) {
83296
				matrix[i][(n - 11) + j] = matrix[(n - 11) + j][i] = (code >> k++) & 1;
83297
				reserved[i][(n - 11) + j] = reserved[(n - 11) + j][i] = 1;
83298
			}
83299
		}
83300
	}
83301
83302
	return {matrix: matrix, reserved: reserved};
83303
};
83304
83305
// fills the data portion (i.e. unmarked in reserved) of the matrix with given
83306
// code words. the size of code words should be no more than available bits,
83307
// and remaining bits are padded to 0 (cf. JIS X 0510:2004 sec 8.7.3).
83308
var putdata = function (matrix, reserved, buf) {
83309
	var n = matrix.length;
83310
	var k = 0, dir = -1;
83311
	for (var i = n - 1; i >= 0; i -= 2) {
83312
		if (i == 6)
83313
			--i; // skip the entire timing pattern column
83314
		var jj = (dir < 0 ? n - 1 : 0);
83315
		for (var j = 0; j < n; ++j) {
83316
			for (var ii = i; ii > i - 2; --ii) {
83317
				if (!reserved[jj][ii]) {
83318
					// may overflow, but (undefined >> x)
83319
					// is 0 so it will auto-pad to zero.
83320
					matrix[jj][ii] = (buf[k >> 3] >> (~k & 7)) & 1;
83321
					++k;
83322
				}
83323
			}
83324
			jj += dir;
83325
		}
83326
		dir = -dir;
83327
	}
83328
	return matrix;
83329
};
83330
83331
// XOR-masks the data portion of the matrix. repeating the call with the same
83332
// arguments will revert the prior call (convenient in the matrix evaluation).
83333
var maskdata = function (matrix, reserved, mask) {
83334
	var maskf = MASKFUNCS[mask];
83335
	var n = matrix.length;
83336
	for (var i = 0; i < n; ++i) {
83337
		for (var j = 0; j < n; ++j) {
83338
			if (!reserved[i][j])
83339
				matrix[i][j] ^= maskf(i, j);
83340
		}
83341
	}
83342
	return matrix;
83343
};
83344
83345
// puts the format information.
83346
var putformatinfo = function (matrix, reserved, ecclevel, mask) {
83347
	var n = matrix.length;
83348
	var code = augumentbch((ecclevel << 3) | mask, 5, 0x537, 10) ^ 0x5412;
83349
	for (var i = 0; i < 15; ++i) {
83350
		var r = [0, 1, 2, 3, 4, 5, 7, 8, n - 7, n - 6, n - 5, n - 4, n - 3, n - 2, n - 1][i];
83351
		var c = [n - 1, n - 2, n - 3, n - 4, n - 5, n - 6, n - 7, n - 8, 7, 5, 4, 3, 2, 1, 0][i];
83352
		matrix[r][8] = matrix[8][c] = (code >> i) & 1;
83353
		// we don't have to mark those bits reserved; always done
83354
		// in makebasematrix above.
83355
	}
83356
	return matrix;
83357
};
83358
83359
// evaluates the resulting matrix and returns the score (lower is better).
83360
// (cf. JIS X 0510:2004 sec 8.8.2)
83361
//
83362
// the evaluation procedure tries to avoid the problematic patterns naturally
83363
// occuring from the original matrix. for example, it penaltizes the patterns
83364
// which just look like the finder pattern which will confuse the decoder.
83365
// we choose the mask which results in the lowest score among 8 possible ones.
83366
//
83367
// note: zxing seems to use the same procedure and in many cases its choice
83368
// agrees to ours, but sometimes it does not. practically it doesn't matter.
83369
var evaluatematrix = function (matrix) {
83370
	// N1+(k-5) points for each consecutive row of k same-colored modules,
83371
	// where k >= 5. no overlapping row counts.
83372
	var PENALTY_CONSECUTIVE = 3;
83373
	// N2 points for each 2x2 block of same-colored modules.
83374
	// overlapping block does count.
83375
	var PENALTY_TWOBYTWO = 3;
83376
	// N3 points for each pattern with >4W:1B:1W:3B:1W:1B or
83377
	// 1B:1W:3B:1W:1B:>4W, or their multiples (e.g. highly unlikely,
83378
	// but 13W:3B:3W:9B:3W:3B counts).
83379
	var PENALTY_FINDERLIKE = 40;
83380
	// N4*k points for every (5*k)% deviation from 50% black density.
83381
	// i.e. k=1 for 55~60% and 40~45%, k=2 for 60~65% and 35~40%, etc.
83382
	var PENALTY_DENSITY = 10;
83383
83384
	var evaluategroup = function (groups) { // assumes [W,B,W,B,W,...,B,W]
83385
		var score = 0;
83386
		for (var i = 0; i < groups.length; ++i) {
83387
			if (groups[i] >= 5)
83388
				score += PENALTY_CONSECUTIVE + (groups[i] - 5);
83389
		}
83390
		for (var i = 5; i < groups.length; i += 2) {
83391
			var p = groups[i];
83392
			if (groups[i - 1] == p && groups[i - 2] == 3 * p && groups[i - 3] == p &&
83393
				groups[i - 4] == p && (groups[i - 5] >= 4 * p || groups[i + 1] >= 4 * p)) {
83394
				// this part differs from zxing...
83395
				score += PENALTY_FINDERLIKE;
83396
			}
83397
		}
83398
		return score;
83399
	};
83400
83401
	var n = matrix.length;
83402
	var score = 0, nblacks = 0;
83403
	for (var i = 0; i < n; ++i) {
83404
		var row = matrix[i];
83405
		var groups;
83406
83407
		// evaluate the current row
83408
		groups = [0]; // the first empty group of white
83409
		for (var j = 0; j < n; ) {
83410
			var k;
83411
			for (k = 0; j < n && row[j]; ++k)
83412
				++j;
83413
			groups.push(k);
83414
			for (k = 0; j < n && !row[j]; ++k)
83415
				++j;
83416
			groups.push(k);
83417
		}
83418
		score += evaluategroup(groups);
83419
83420
		// evaluate the current column
83421
		groups = [0];
83422
		for (var j = 0; j < n; ) {
83423
			var k;
83424
			for (k = 0; j < n && matrix[j][i]; ++k)
83425
				++j;
83426
			groups.push(k);
83427
			for (k = 0; j < n && !matrix[j][i]; ++k)
83428
				++j;
83429
			groups.push(k);
83430
		}
83431
		score += evaluategroup(groups);
83432
83433
		// check the 2x2 box and calculate the density
83434
		var nextrow = matrix[i + 1] || [];
83435
		nblacks += row[0];
83436
		for (var j = 1; j < n; ++j) {
83437
			var p = row[j];
83438
			nblacks += p;
83439
			// at least comparison with next row should be strict...
83440
			if (row[j - 1] == p && nextrow[j] === p && nextrow[j - 1] === p) {
83441
				score += PENALTY_TWOBYTWO;
83442
			}
83443
		}
83444
	}
83445
83446
	score += PENALTY_DENSITY * ((Math.abs(nblacks / n / n - 0.5) / 0.05) | 0);
83447
	return score;
83448
};
83449
83450
// returns the fully encoded QR code matrix which contains given data.
83451
// it also chooses the best mask automatically when mask is -1.
83452
var generate = function (data, ver, mode, ecclevel, mask) {
83453
	var v = VERSIONS[ver];
83454
	var buf = encode(ver, mode, data, ndatabits(ver, ecclevel) >> 3);
83455
	buf = augumenteccs(buf, v[1][ecclevel], GF256_GENPOLY[v[0][ecclevel]]);
83456
83457
	var result = makebasematrix(ver);
83458
	var matrix = result.matrix, reserved = result.reserved;
83459
	putdata(matrix, reserved, buf);
83460
83461
	if (mask < 0) {
83462
		// find the best mask
83463
		maskdata(matrix, reserved, 0);
83464
		putformatinfo(matrix, reserved, ecclevel, 0);
83465
		var bestmask = 0, bestscore = evaluatematrix(matrix);
83466
		maskdata(matrix, reserved, 0);
83467
		for (mask = 1; mask < 8; ++mask) {
83468
			maskdata(matrix, reserved, mask);
83469
			putformatinfo(matrix, reserved, ecclevel, mask);
83470
			var score = evaluatematrix(matrix);
83471
			if (bestscore > score) {
83472
				bestscore = score;
83473
				bestmask = mask;
83474
			}
83475
			maskdata(matrix, reserved, mask);
83476
		}
83477
		mask = bestmask;
83478
	}
83479
83480
	maskdata(matrix, reserved, mask);
83481
	putformatinfo(matrix, reserved, ecclevel, mask);
83482
	return matrix;
83483
};
83484
83485
// the public interface is trivial; the options available are as follows:
83486
//
83487
// - version: an integer in [1,40]. when omitted (or -1) the smallest possible
83488
//   version is chosen.
83489
// - mode: one of 'numeric', 'alphanumeric', 'octet'. when omitted the smallest
83490
//   possible mode is chosen.
83491
// - eccLevel: one of 'L', 'M', 'Q', 'H'. defaults to 'L'.
83492
// - mask: an integer in [0,7]. when omitted (or -1) the best mask is chosen.
83493
//
83494
83495
function generateFrame(data, options) {
83496
	var MODES = {'numeric': MODE_NUMERIC, 'alphanumeric': MODE_ALPHANUMERIC,
83497
		'octet': MODE_OCTET};
83498
	var ECCLEVELS = {'L': ECCLEVEL_L, 'M': ECCLEVEL_M, 'Q': ECCLEVEL_Q,
83499
		'H': ECCLEVEL_H};
83500
83501
	options = options || {};
83502
	var ver = options.version || -1;
83503
	var ecclevel = ECCLEVELS[(options.eccLevel || 'L').toUpperCase()];
83504
	var mode = options.mode ? MODES[options.mode.toLowerCase()] : -1;
83505
	var mask = 'mask' in options ? options.mask : -1;
83506
83507
	if (mode < 0) {
83508
		if (typeof data === 'string') {
83509
			if (data.match(NUMERIC_REGEXP)) {
83510
				mode = MODE_NUMERIC;
83511
			} else if (data.match(ALPHANUMERIC_OUT_REGEXP)) {
83512
				// while encode supports case-insensitive encoding, we restrict the data to be uppercased when auto-selecting the mode.
83513
				mode = MODE_ALPHANUMERIC;
83514
			} else {
83515
				mode = MODE_OCTET;
83516
			}
83517
		} else {
83518
			mode = MODE_OCTET;
83519
		}
83520
	} else if (!(mode == MODE_NUMERIC || mode == MODE_ALPHANUMERIC ||
83521
		mode == MODE_OCTET)) {
83522
		throw 'invalid or unsupported mode';
83523
	}
83524
83525
	data = validatedata(mode, data);
83526
	if (data === null)
83527
		throw 'invalid data format';
83528
83529
	if (ecclevel < 0 || ecclevel > 3)
83530
		throw 'invalid ECC level';
83531
83532
	if (ver < 0) {
83533
		for (ver = 1; ver <= 40; ++ver) {
83534
			if (data.length <= getmaxdatalen(ver, mode, ecclevel))
83535
				break;
83536
		}
83537
		if (ver > 40)
83538
			throw 'too large data for the Qr format';
83539
	} else if (ver < 1 || ver > 40) {
83540
		throw 'invalid Qr version! should be between 1 and 40';
83541
	}
83542
83543
	if (mask != -1 && (mask < 0 || mask > 8))
83544
		throw 'invalid mask';
83545
	//console.log('version:', ver, 'mode:', mode, 'ECC:', ecclevel, 'mask:', mask )
83546
	return generate(data, ver, mode, ecclevel, mask);
83547
}
83548
83549
83550
// options
83551
// - modulesize: a number. this is a size of each modules in pixels, and
83552
//   defaults to 5px.
83553
// - margin: a number. this is a size of margin in *modules*, and defaults to
83554
//   4 (white modules). the specficiation mandates the margin no less than 4
83555
//   modules, so it is better not to alter this value unless you know what
83556
//   you're doing.
83557
function buildCanvas(data, options) {
83558
83559
	var canvas = [];
83560
	var background = options.background || '#fff';
83561
	var foreground = options.foreground || '#000';
83562
	//var margin = options.margin || 4;
83563
	var matrix = generateFrame(data, options);
83564
	var n = matrix.length;
83565
	var modSize = Math.floor(options.fit ? options.fit / n : 5);
83566
	var size = n * modSize;
83567
83568
	canvas.push({
83569
		type: 'rect',
83570
		x: 0, y: 0, w: size, h: size, lineWidth: 0, color: background
83571
	});
83572
83573
	for (var i = 0; i < n; ++i) {
83574
		for (var j = 0; j < n; ++j) {
83575
			if (matrix[i][j]) {
83576
				canvas.push({
83577
					type: 'rect',
83578
					x: modSize * j,
83579
					y: modSize * i,
83580
					w: modSize,
83581
					h: modSize,
83582
					lineWidth: 0,
83583
					color: foreground
83584
				});
83585
			}
83586
		}
83587
	}
83588
83589
	return {
83590
		canvas: canvas,
83591
		size: size
83592
	};
83593
83594
}
83595
83596
function measure(node) {
83597
	var cd = buildCanvas(node.qr, node);
83598
	node._canvas = cd.canvas;
83599
	node._width = node._height = node._minWidth = node._maxWidth = node._minHeight = node._maxHeight = cd.size;
83600
	return node;
83601
}
83602
83603
module.exports = {
83604
	measure: measure
83605
};
83606
83607
/***/ }),
83608
83609
/***/ 4762:
83610
/***/ (function(module) {
83611
83612
"use strict";
83613
83614
83615
module.exports = {
83616
	'4A0': [4767.87, 6740.79],
83617
	'2A0': [3370.39, 4767.87],
83618
	A0: [2383.94, 3370.39],
83619
	A1: [1683.78, 2383.94],
83620
	A2: [1190.55, 1683.78],
83621
	A3: [841.89, 1190.55],
83622
	A4: [595.28, 841.89],
83623
	A5: [419.53, 595.28],
83624
	A6: [297.64, 419.53],
83625
	A7: [209.76, 297.64],
83626
	A8: [147.40, 209.76],
83627
	A9: [104.88, 147.40],
83628
	A10: [73.70, 104.88],
83629
	B0: [2834.65, 4008.19],
83630
	B1: [2004.09, 2834.65],
83631
	B2: [1417.32, 2004.09],
83632
	B3: [1000.63, 1417.32],
83633
	B4: [708.66, 1000.63],
83634
	B5: [498.90, 708.66],
83635
	B6: [354.33, 498.90],
83636
	B7: [249.45, 354.33],
83637
	B8: [175.75, 249.45],
83638
	B9: [124.72, 175.75],
83639
	B10: [87.87, 124.72],
83640
	C0: [2599.37, 3676.54],
83641
	C1: [1836.85, 2599.37],
83642
	C2: [1298.27, 1836.85],
83643
	C3: [918.43, 1298.27],
83644
	C4: [649.13, 918.43],
83645
	C5: [459.21, 649.13],
83646
	C6: [323.15, 459.21],
83647
	C7: [229.61, 323.15],
83648
	C8: [161.57, 229.61],
83649
	C9: [113.39, 161.57],
83650
	C10: [79.37, 113.39],
83651
	RA0: [2437.80, 3458.27],
83652
	RA1: [1729.13, 2437.80],
83653
	RA2: [1218.90, 1729.13],
83654
	RA3: [864.57, 1218.90],
83655
	RA4: [609.45, 864.57],
83656
	SRA0: [2551.18, 3628.35],
83657
	SRA1: [1814.17, 2551.18],
83658
	SRA2: [1275.59, 1814.17],
83659
	SRA3: [907.09, 1275.59],
83660
	SRA4: [637.80, 907.09],
83661
	EXECUTIVE: [521.86, 756.00],
83662
	FOLIO: [612.00, 936.00],
83663
	LEGAL: [612.00, 1008.00],
83664
	LETTER: [612.00, 792.00],
83665
	TABLOID: [792.00, 1224.00]
83666
};
83667
83668
83669
/***/ }),
83670
83671
/***/ 7597:
83672
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
83673
83674
"use strict";
83675
83676
83677
var isString = (__webpack_require__(6225).isString);
83678
var isArray = (__webpack_require__(6225).isArray);
83679
var isUndefined = (__webpack_require__(6225).isUndefined);
83680
var isNull = (__webpack_require__(6225).isNull);
83681
83682
/**
83683
 * Creates an instance of StyleContextStack used for style inheritance and style overrides
83684
 *
83685
 * @constructor
83686
 * @this {StyleContextStack}
83687
 * @param {Object} named styles dictionary
83688
 * @param {Object} optional default style definition
83689
 */
83690
function StyleContextStack(styleDictionary, defaultStyle) {
83691
	this.defaultStyle = defaultStyle || {};
83692
	this.styleDictionary = styleDictionary;
83693
	this.styleOverrides = [];
83694
}
83695
83696
/**
83697
 * Creates cloned version of current stack
83698
 * @return {StyleContextStack} current stack snapshot
83699
 */
83700
StyleContextStack.prototype.clone = function () {
83701
	var stack = new StyleContextStack(this.styleDictionary, this.defaultStyle);
83702
83703
	this.styleOverrides.forEach(function (item) {
83704
		stack.styleOverrides.push(item);
83705
	});
83706
83707
	return stack;
83708
};
83709
83710
/**
83711
 * Pushes style-name or style-overrides-object onto the stack for future evaluation
83712
 *
83713
 * @param {String|Object} styleNameOrOverride style-name (referring to styleDictionary) or
83714
 *                                            a new dictionary defining overriding properties
83715
 */
83716
StyleContextStack.prototype.push = function (styleNameOrOverride) {
83717
	this.styleOverrides.push(styleNameOrOverride);
83718
};
83719
83720
/**
83721
 * Removes last style-name or style-overrides-object from the stack
83722
 *
83723
 * @param {Number} howMany - optional number of elements to be popped (if not specified,
83724
 *                           one element will be removed from the stack)
83725
 */
83726
StyleContextStack.prototype.pop = function (howMany) {
83727
	howMany = howMany || 1;
83728
83729
	while (howMany-- > 0) {
83730
		this.styleOverrides.pop();
83731
	}
83732
};
83733
83734
/**
83735
 * Creates a set of named styles or/and a style-overrides-object based on the item,
83736
 * pushes those elements onto the stack for future evaluation and returns the number
83737
 * of elements pushed, so they can be easily poped then.
83738
 *
83739
 * @param {Object} item - an object with optional style property and/or style overrides
83740
 * @return the number of items pushed onto the stack
83741
 */
83742
StyleContextStack.prototype.autopush = function (item) {
83743
	if (isString(item)) {
83744
		return 0;
83745
	}
83746
83747
	var styleNames = [];
83748
83749
	if (item.style) {
83750
		if (isArray(item.style)) {
83751
			styleNames = item.style;
83752
		} else {
83753
			styleNames = [item.style];
83754
		}
83755
	}
83756
83757
	for (var i = 0, l = styleNames.length; i < l; i++) {
83758
		this.push(styleNames[i]);
83759
	}
83760
83761
	var styleProperties = [
83762
		'font',
83763
		'fontSize',
83764
		'fontFeatures',
83765
		'bold',
83766
		'italics',
83767
		'alignment',
83768
		'color',
83769
		'columnGap',
83770
		'fillColor',
83771
		'fillOpacity',
83772
		'decoration',
83773
		'decorationStyle',
83774
		'decorationColor',
83775
		'background',
83776
		'lineHeight',
83777
		'characterSpacing',
83778
		'noWrap',
83779
		'markerColor',
83780
		'leadingIndent',
83781
		'sup',
83782
		'sub'
83783
		//'tableCellPadding'
83784
		// 'cellBorder',
83785
		// 'headerCellBorder',
83786
		// 'oddRowCellBorder',
83787
		// 'evenRowCellBorder',
83788
		// 'tableBorder'
83789
	];
83790
	var styleOverrideObject = {};
83791
	var pushStyleOverrideObject = false;
83792
83793
	styleProperties.forEach(function (key) {
83794
		if (!isUndefined(item[key]) && !isNull(item[key])) {
83795
			styleOverrideObject[key] = item[key];
83796
			pushStyleOverrideObject = true;
83797
		}
83798
	});
83799
83800
	if (pushStyleOverrideObject) {
83801
		this.push(styleOverrideObject);
83802
	}
83803
83804
	return styleNames.length + (pushStyleOverrideObject ? 1 : 0);
83805
};
83806
83807
/**
83808
 * Automatically pushes elements onto the stack, using autopush based on item,
83809
 * executes callback and then pops elements back. Returns value returned by callback
83810
 *
83811
 * @param  {Object}   item - an object with optional style property and/or style overrides
83812
 * @param  {Function} function to be called between autopush and pop
83813
 * @return {Object} value returned by callback
83814
 */
83815
StyleContextStack.prototype.auto = function (item, callback) {
83816
	var pushedItems = this.autopush(item);
83817
	var result = callback();
83818
83819
	if (pushedItems > 0) {
83820
		this.pop(pushedItems);
83821
	}
83822
83823
	return result;
83824
};
83825
83826
/**
83827
 * Evaluates stack and returns value of a named property
83828
 *
83829
 * @param {String} property - property name
83830
 * @return property value or null if not found
83831
 */
83832
StyleContextStack.prototype.getProperty = function (property) {
83833
	if (this.styleOverrides) {
83834
		for (var i = this.styleOverrides.length - 1; i >= 0; i--) {
83835
			var item = this.styleOverrides[i];
83836
83837
			if (isString(item)) {
83838
				// named-style-override
83839
				var style = this.styleDictionary[item];
83840
				if (style && !isUndefined(style[property]) && !isNull(style[property])) {
83841
					return style[property];
83842
				}
83843
			} else if (!isUndefined(item[property]) && !isNull(item[property])) {
83844
				// style-overrides-object
83845
				return item[property];
83846
			}
83847
		}
83848
	}
83849
83850
	return this.defaultStyle && this.defaultStyle[property];
83851
};
83852
83853
module.exports = StyleContextStack;
83854
83855
83856
/***/ }),
83857
83858
/***/ 7601:
83859
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
83860
83861
"use strict";
83862
83863
83864
var xmldoc = __webpack_require__(6513);
83865
83866
/** Strip unit postfix, parse number, but return undefined instead of NaN for bad input */
83867
function stripUnits(textVal) {
83868
	var n = parseFloat(textVal);
83869
	if (typeof n !== 'number' || isNaN(n)) {
83870
		return undefined;
83871
	}
83872
	return n;
83873
}
83874
83875
/** Make sure it's valid XML and the root tage is <svg/>, returns xmldoc DOM */
83876
function parseSVG(svgString) {
83877
	var doc;
83878
83879
	try {
83880
		doc = new xmldoc.XmlDocument(svgString);
83881
	} catch (err) {
83882
		throw new Error('SVGMeasure: ' + err);
83883
	}
83884
83885
	if (doc.name !== "svg") {
83886
		throw new Error('SVGMeasure: expected <svg> document');
83887
	}
83888
83889
	return doc;
83890
}
83891
83892
function SVGMeasure() {
83893
}
83894
83895
SVGMeasure.prototype.measureSVG = function (svgString) {
83896
83897
	var doc = parseSVG(svgString);
83898
83899
	var docWidth = stripUnits(doc.attr.width);
83900
	var docHeight = stripUnits(doc.attr.height);
83901
83902
	if ((docWidth == undefined || docHeight == undefined) && typeof doc.attr.viewBox == 'string') {
83903
		var viewBoxParts = doc.attr.viewBox.split(/[,\s]+/);
83904
		if (viewBoxParts.length !== 4) {
83905
			throw new Error("Unexpected svg viewbox format, should have 4 entries but found: '" + doc.attr.viewBox + "'");
83906
		}
83907
		if (docWidth == undefined) {
83908
			docWidth = stripUnits(viewBoxParts[2]);
83909
		}
83910
		if (docHeight == undefined) {
83911
			docHeight = stripUnits(viewBoxParts[3]);
83912
		}
83913
	}
83914
83915
	return {
83916
		width: docWidth,
83917
		height: docHeight
83918
	};
83919
};
83920
83921
SVGMeasure.prototype.writeDimensions = function (svgString, dimensions) {
83922
83923
	var doc = parseSVG(svgString);
83924
83925
	doc.attr.width = "" + dimensions.width;
83926
	doc.attr.height = "" + dimensions.height;
83927
83928
	return doc.toString();
83929
};
83930
83931
module.exports = SVGMeasure;
83932
83933
83934
/***/ }),
83935
83936
/***/ 9342:
83937
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
83938
83939
"use strict";
83940
83941
83942
var ColumnCalculator = __webpack_require__(4498);
83943
var isFunction = (__webpack_require__(6225).isFunction);
83944
var isNumber = (__webpack_require__(6225).isNumber);
83945
83946
function TableProcessor(tableNode) {
83947
	this.tableNode = tableNode;
83948
}
83949
83950
TableProcessor.prototype.beginTable = function (writer) {
83951
	var tableNode;
83952
	var availableWidth;
83953
	var self = this;
83954
83955
	tableNode = this.tableNode;
83956
	this.offsets = tableNode._offsets;
83957
	this.layout = tableNode._layout;
83958
83959
	availableWidth = writer.context().availableWidth - this.offsets.total;
83960
	ColumnCalculator.buildColumnWidths(tableNode.table.widths, availableWidth);
83961
83962
	this.tableWidth = tableNode._offsets.total + getTableInnerContentWidth();
83963
	this.rowSpanData = prepareRowSpanData();
83964
	this.cleanUpRepeatables = false;
83965
83966
	this.headerRows = tableNode.table.headerRows || 0;
83967
	this.rowsWithoutPageBreak = this.headerRows + (tableNode.table.keepWithHeaderRows || 0);
83968
	this.dontBreakRows = tableNode.table.dontBreakRows || false;
83969
83970
	if (this.rowsWithoutPageBreak) {
83971
		writer.beginUnbreakableBlock();
83972
	}
83973
83974
	// update the border properties of all cells before drawing any lines
83975
	prepareCellBorders(this.tableNode.table.body);
83976
83977
	this.drawHorizontalLine(0, writer);
83978
83979
	function getTableInnerContentWidth() {
83980
		var width = 0;
83981
83982
		tableNode.table.widths.forEach(function (w) {
83983
			width += w._calcWidth;
83984
		});
83985
83986
		return width;
83987
	}
83988
83989
	function prepareRowSpanData() {
83990
		var rsd = [];
83991
		var x = 0;
83992
		var lastWidth = 0;
83993
83994
		rsd.push({ left: 0, rowSpan: 0 });
83995
83996
		for (var i = 0, l = self.tableNode.table.body[0].length; i < l; i++) {
83997
			var paddings = self.layout.paddingLeft(i, self.tableNode) + self.layout.paddingRight(i, self.tableNode);
83998
			var lBorder = self.layout.vLineWidth(i, self.tableNode);
83999
			lastWidth = paddings + lBorder + self.tableNode.table.widths[i]._calcWidth;
84000
			rsd[rsd.length - 1].width = lastWidth;
84001
			x += lastWidth;
84002
			rsd.push({ left: x, rowSpan: 0, width: 0 });
84003
		}
84004
84005
		return rsd;
84006
	}
84007
84008
	// Iterate through all cells. If the current cell is the start of a
84009
	// rowSpan/colSpan, update the border property of the cells on its
84010
	// bottom/right accordingly. This is needed since each iteration of the
84011
	// line-drawing loops draws lines for a single cell, not for an entire
84012
	// rowSpan/colSpan.
84013
	function prepareCellBorders(body) {
84014
		for (var rowIndex = 0; rowIndex < body.length; rowIndex++) {
84015
			var row = body[rowIndex];
84016
84017
			for (var colIndex = 0; colIndex < row.length; colIndex++) {
84018
				var cell = row[colIndex];
84019
84020
				if (cell.border) {
84021
					var rowSpan = cell.rowSpan || 1;
84022
					var colSpan = cell.colSpan || 1;
84023
84024
					for (var rowOffset = 0; rowOffset < rowSpan; rowOffset++) {
84025
						// set left border
84026
						if (cell.border[0] !== undefined && rowOffset > 0) {
84027
							setBorder(rowIndex + rowOffset, colIndex, 0, cell.border[0]);
84028
						}
84029
84030
						// set right border
84031
						if (cell.border[2] !== undefined) {
84032
							setBorder(rowIndex + rowOffset, colIndex + colSpan - 1, 2, cell.border[2]);
84033
						}
84034
					}
84035
84036
					for (var colOffset = 0; colOffset < colSpan; colOffset++) {
84037
						// set top border
84038
						if (cell.border[1] !== undefined && colOffset > 0) {
84039
							setBorder(rowIndex, colIndex + colOffset, 1, cell.border[1]);
84040
						}
84041
84042
						// set bottom border
84043
						if (cell.border[3] !== undefined) {
84044
							setBorder(rowIndex + rowSpan - 1, colIndex + colOffset, 3, cell.border[3]);
84045
						}
84046
					}
84047
				}
84048
			}
84049
		}
84050
84051
		// helper function to set the border for a given cell
84052
		function setBorder(rowIndex, colIndex, borderIndex, borderValue) {
84053
			var cell = body[rowIndex][colIndex];
84054
			cell.border = cell.border || {};
84055
			cell.border[borderIndex] = borderValue;
84056
		}
84057
	}
84058
};
84059
84060
TableProcessor.prototype.onRowBreak = function (rowIndex, writer) {
84061
	var self = this;
84062
	return function () {
84063
		var offset = self.rowPaddingTop + (!self.headerRows ? self.topLineWidth : 0);
84064
		writer.context().availableHeight -= self.reservedAtBottom;
84065
		writer.context().moveDown(offset);
84066
	};
84067
};
84068
84069
TableProcessor.prototype.beginRow = function (rowIndex, writer) {
84070
	this.topLineWidth = this.layout.hLineWidth(rowIndex, this.tableNode);
84071
	this.rowPaddingTop = this.layout.paddingTop(rowIndex, this.tableNode);
84072
	this.bottomLineWidth = this.layout.hLineWidth(rowIndex + 1, this.tableNode);
84073
	this.rowPaddingBottom = this.layout.paddingBottom(rowIndex, this.tableNode);
84074
84075
	this.rowCallback = this.onRowBreak(rowIndex, writer);
84076
	writer.tracker.startTracking('pageChanged', this.rowCallback);
84077
	if (this.dontBreakRows) {
84078
		writer.beginUnbreakableBlock();
84079
	}
84080
	this.rowTopY = writer.context().y;
84081
	this.reservedAtBottom = this.bottomLineWidth + this.rowPaddingBottom;
84082
84083
	writer.context().availableHeight -= this.reservedAtBottom;
84084
84085
	writer.context().moveDown(this.rowPaddingTop);
84086
};
84087
84088
TableProcessor.prototype.drawHorizontalLine = function (lineIndex, writer, overrideY) {
84089
	var lineWidth = this.layout.hLineWidth(lineIndex, this.tableNode);
84090
	if (lineWidth) {
84091
		var style = this.layout.hLineStyle(lineIndex, this.tableNode);
84092
		var dash;
84093
		if (style && style.dash) {
84094
			dash = style.dash;
84095
		}
84096
84097
		var offset = lineWidth / 2;
84098
		var currentLine = null;
84099
		var body = this.tableNode.table.body;
84100
		var cellAbove;
84101
		var currentCell;
84102
		var rowCellAbove;
84103
84104
		for (var i = 0, l = this.rowSpanData.length; i < l; i++) {
84105
			var data = this.rowSpanData[i];
84106
			var shouldDrawLine = !data.rowSpan;
84107
			var borderColor = null;
84108
84109
			// draw only if the current cell requires a top border or the cell in the
84110
			// row above requires a bottom border
84111
			if (shouldDrawLine && i < l - 1) {
84112
				var topBorder = false, bottomBorder = false, rowBottomBorder = false;
84113
84114
				// the cell in the row above
84115
				if (lineIndex > 0) {
84116
					cellAbove = body[lineIndex - 1][i];
84117
					bottomBorder = cellAbove.border ? cellAbove.border[3] : this.layout.defaultBorder;
84118
					if (bottomBorder && cellAbove.borderColor) {
84119
						borderColor = cellAbove.borderColor[3];
84120
					}
84121
				}
84122
84123
				// the current cell
84124
				if (lineIndex < body.length) {
84125
					currentCell = body[lineIndex][i];
84126
					topBorder = currentCell.border ? currentCell.border[1] : this.layout.defaultBorder;
84127
					if (topBorder && borderColor == null && currentCell.borderColor) {
84128
						borderColor = currentCell.borderColor[1];
84129
					}
84130
				}
84131
84132
				shouldDrawLine = topBorder || bottomBorder;
84133
			}
84134
84135
			if (cellAbove && cellAbove._rowSpanCurrentOffset) {
84136
				rowCellAbove = body[lineIndex - 1 - cellAbove._rowSpanCurrentOffset][i];
84137
				rowBottomBorder = rowCellAbove && rowCellAbove.border ? rowCellAbove.border[3] : this.layout.defaultBorder;
84138
				if (rowBottomBorder && rowCellAbove && rowCellAbove.borderColor) {
84139
					borderColor = rowCellAbove.borderColor[3];
84140
				}
84141
			}
84142
84143
			if (borderColor == null) {
84144
				borderColor = isFunction(this.layout.hLineColor) ? this.layout.hLineColor(lineIndex, this.tableNode, i) : this.layout.hLineColor;
84145
			}
84146
84147
			if (!currentLine && shouldDrawLine) {
84148
				currentLine = { left: data.left, width: 0 };
84149
			}
84150
84151
			if (shouldDrawLine) {
84152
				var colSpanIndex = 0;
84153
				if (rowCellAbove && rowCellAbove.colSpan && rowBottomBorder) {
84154
					while (rowCellAbove.colSpan > colSpanIndex) {
84155
						currentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);
84156
					}
84157
					i += colSpanIndex - 1;
84158
				} else if (cellAbove && cellAbove.colSpan && bottomBorder) {
84159
					while (cellAbove.colSpan > colSpanIndex) {
84160
						currentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);
84161
					}
84162
					i += colSpanIndex - 1;
84163
				} else if (currentCell && currentCell.colSpan && topBorder) {
84164
					while (currentCell.colSpan > colSpanIndex) {
84165
						currentLine.width += (this.rowSpanData[i + colSpanIndex++].width || 0);
84166
					}
84167
					i += colSpanIndex - 1;
84168
				} else {
84169
					currentLine.width += (this.rowSpanData[i].width || 0);
84170
				}
84171
			}
84172
84173
			var y = (overrideY || 0) + offset;
84174
84175
84176
			if (shouldDrawLine) {
84177
				if (currentLine && currentLine.width) {
84178
					writer.addVector({
84179
						type: 'line',
84180
						x1: currentLine.left,
84181
						x2: currentLine.left + currentLine.width,
84182
						y1: y,
84183
						y2: y,
84184
						lineWidth: lineWidth,
84185
						dash: dash,
84186
						lineColor: borderColor
84187
					}, false, overrideY);
84188
					currentLine = null;
84189
					borderColor = null;
84190
					cellAbove = null;
84191
					currentCell = null;
84192
					rowCellAbove = null;
84193
				}
84194
			}
84195
		}
84196
84197
		writer.context().moveDown(lineWidth);
84198
	}
84199
};
84200
84201
TableProcessor.prototype.drawVerticalLine = function (x, y0, y1, vLineColIndex, writer, vLineRowIndex, beforeVLineColIndex) {
84202
	var width = this.layout.vLineWidth(vLineColIndex, this.tableNode);
84203
	if (width === 0) {
84204
		return;
84205
	}
84206
	var style = this.layout.vLineStyle(vLineColIndex, this.tableNode);
84207
	var dash;
84208
	if (style && style.dash) {
84209
		dash = style.dash;
84210
	}
84211
84212
	var body = this.tableNode.table.body;
84213
	var cellBefore;
84214
	var currentCell;
84215
	var borderColor;
84216
84217
	// the cell in the col before
84218
	if (vLineColIndex > 0) {
84219
		cellBefore = body[vLineRowIndex][beforeVLineColIndex];
84220
		if (cellBefore && cellBefore.borderColor) {
84221
			if (cellBefore.border ? cellBefore.border[2] : this.layout.defaultBorder) {
84222
				borderColor = cellBefore.borderColor[2];
84223
			}
84224
		}
84225
	}
84226
84227
	// the current cell
84228
	if (borderColor == null && vLineColIndex < body.length) {
84229
		currentCell = body[vLineRowIndex][vLineColIndex];
84230
		if (currentCell && currentCell.borderColor) {
84231
			if (currentCell.border ? currentCell.border[0] : this.layout.defaultBorder) {
84232
				borderColor = currentCell.borderColor[0];
84233
			}
84234
		}
84235
	}
84236
84237
	if (borderColor == null && cellBefore && cellBefore._rowSpanCurrentOffset) {
84238
		var rowCellBeforeAbove = body[vLineRowIndex - cellBefore._rowSpanCurrentOffset][beforeVLineColIndex];
84239
		if (rowCellBeforeAbove.borderColor) {
84240
			if (rowCellBeforeAbove.border ? rowCellBeforeAbove.border[2] : this.layout.defaultBorder) {
84241
				borderColor = rowCellBeforeAbove.borderColor[2];
84242
			}
84243
		}
84244
	}
84245
84246
	if (borderColor == null && currentCell && currentCell._rowSpanCurrentOffset) {
84247
		var rowCurrentCellAbove = body[vLineRowIndex - currentCell._rowSpanCurrentOffset][vLineColIndex];
84248
		if (rowCurrentCellAbove.borderColor) {
84249
			if (rowCurrentCellAbove.border ? rowCurrentCellAbove.border[2] : this.layout.defaultBorder) {
84250
				borderColor = rowCurrentCellAbove.borderColor[2];
84251
			}
84252
		}
84253
	}
84254
84255
	if (borderColor == null) {
84256
		borderColor = isFunction(this.layout.vLineColor) ? this.layout.vLineColor(vLineColIndex, this.tableNode, vLineRowIndex) : this.layout.vLineColor;
84257
	}
84258
	writer.addVector({
84259
		type: 'line',
84260
		x1: x + width / 2,
84261
		x2: x + width / 2,
84262
		y1: y0,
84263
		y2: y1,
84264
		lineWidth: width,
84265
		dash: dash,
84266
		lineColor: borderColor
84267
	}, false, true);
84268
	cellBefore = null;
84269
	currentCell = null;
84270
	borderColor = null;
84271
};
84272
84273
TableProcessor.prototype.endTable = function (writer) {
84274
	if (this.cleanUpRepeatables) {
84275
		writer.popFromRepeatables();
84276
	}
84277
};
84278
84279
TableProcessor.prototype.endRow = function (rowIndex, writer, pageBreaks) {
84280
	var l, i;
84281
	var self = this;
84282
	writer.tracker.stopTracking('pageChanged', this.rowCallback);
84283
	writer.context().moveDown(this.layout.paddingBottom(rowIndex, this.tableNode));
84284
	writer.context().availableHeight += this.reservedAtBottom;
84285
84286
	var endingPage = writer.context().page;
84287
	var endingY = writer.context().y;
84288
84289
	var xs = getLineXs();
84290
84291
	var ys = [];
84292
84293
	var hasBreaks = pageBreaks && pageBreaks.length > 0;
84294
	var body = this.tableNode.table.body;
84295
84296
	ys.push({
84297
		y0: this.rowTopY,
84298
		page: hasBreaks ? pageBreaks[0].prevPage : endingPage
84299
	});
84300
84301
	if (hasBreaks) {
84302
		for (i = 0, l = pageBreaks.length; i < l; i++) {
84303
			var pageBreak = pageBreaks[i];
84304
			ys[ys.length - 1].y1 = pageBreak.prevY;
84305
84306
			ys.push({ y0: pageBreak.y, page: pageBreak.prevPage + 1 });
84307
		}
84308
	}
84309
84310
	ys[ys.length - 1].y1 = endingY;
84311
84312
	var skipOrphanePadding = (ys[0].y1 - ys[0].y0 === this.rowPaddingTop);
84313
	for (var yi = (skipOrphanePadding ? 1 : 0), yl = ys.length; yi < yl; yi++) {
84314
		var willBreak = yi < ys.length - 1;
84315
		var rowBreakWithoutHeader = (yi > 0 && !this.headerRows);
84316
		var hzLineOffset = rowBreakWithoutHeader ? 0 : this.topLineWidth;
84317
		var y1 = ys[yi].y0;
84318
		var y2 = ys[yi].y1;
84319
84320
		if (willBreak) {
84321
			y2 = y2 + this.rowPaddingBottom;
84322
		}
84323
84324
		if (writer.context().page != ys[yi].page) {
84325
			writer.context().page = ys[yi].page;
84326
84327
			//TODO: buggy, availableHeight should be updated on every pageChanged event
84328
			// TableProcessor should be pageChanged listener, instead of processRow
84329
			this.reservedAtBottom = 0;
84330
		}
84331
84332
		for (i = 0, l = xs.length; i < l; i++) {
84333
			var leftCellBorder = false;
84334
			var rightCellBorder = false;
84335
			var colIndex = xs[i].index;
84336
84337
			// current cell
84338
			if (colIndex < body[rowIndex].length) {
84339
				var cell = body[rowIndex][colIndex];
84340
				leftCellBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;
84341
				rightCellBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;
84342
			}
84343
84344
			// before cell
84345
			if (colIndex > 0 && !leftCellBorder) {
84346
				var cell = body[rowIndex][colIndex - 1];
84347
				leftCellBorder = cell.border ? cell.border[2] : this.layout.defaultBorder;
84348
			}
84349
84350
			// after cell
84351
			if (colIndex + 1 < body[rowIndex].length && !rightCellBorder) {
84352
				var cell = body[rowIndex][colIndex + 1];
84353
				rightCellBorder = cell.border ? cell.border[0] : this.layout.defaultBorder;
84354
			}
84355
84356
			if (leftCellBorder) {
84357
				this.drawVerticalLine(xs[i].x, y1 - hzLineOffset, y2 + this.bottomLineWidth, xs[i].index, writer, rowIndex, xs[i - 1] ? xs[i - 1].index : null);
84358
			}
84359
84360
			if (i < l - 1) {
84361
				var fillColor = body[rowIndex][colIndex].fillColor;
84362
				var fillOpacity = body[rowIndex][colIndex].fillOpacity;
84363
				if (!fillColor) {
84364
					fillColor = isFunction(this.layout.fillColor) ? this.layout.fillColor(rowIndex, this.tableNode, colIndex) : this.layout.fillColor;
84365
				}
84366
				if (!isNumber(fillOpacity)) {
84367
					fillOpacity = isFunction(this.layout.fillOpacity) ? this.layout.fillOpacity(rowIndex, this.tableNode, colIndex) : this.layout.fillOpacity;
84368
				}
84369
				var overlayPattern = body[rowIndex][colIndex].overlayPattern;
84370
				var overlayOpacity = body[rowIndex][colIndex].overlayOpacity;
84371
				if (fillColor || overlayPattern) {
84372
					var widthLeftBorder = leftCellBorder ? this.layout.vLineWidth(colIndex, this.tableNode) : 0;
84373
					var widthRightBorder;
84374
					if ((colIndex === 0 || colIndex + 1 == body[rowIndex].length) && !rightCellBorder) {
84375
						widthRightBorder = this.layout.vLineWidth(colIndex + 1, this.tableNode);
84376
					} else if (rightCellBorder) {
84377
						widthRightBorder = this.layout.vLineWidth(colIndex + 1, this.tableNode) / 2;
84378
					} else {
84379
						widthRightBorder = 0;
84380
					}
84381
84382
					var x1f = this.dontBreakRows ? xs[i].x + widthLeftBorder : xs[i].x + (widthLeftBorder / 2);
84383
					var y1f = this.dontBreakRows ? y1 : y1 - (hzLineOffset / 2);
84384
					var x2f = xs[i + 1].x + widthRightBorder;
84385
					var y2f = this.dontBreakRows ? y2 + this.bottomLineWidth : y2 + (this.bottomLineWidth / 2);
84386
					var bgWidth = x2f - x1f;
84387
					var bgHeight = y2f - y1f;
84388
					if (fillColor) {
84389
						writer.addVector({
84390
							type: 'rect',
84391
							x: x1f,
84392
							y: y1f,
84393
							w: bgWidth,
84394
							h: bgHeight,
84395
							lineWidth: 0,
84396
							color: fillColor,
84397
							fillOpacity: fillOpacity
84398
						}, false, true, writer.context().backgroundLength[writer.context().page]);
84399
					}
84400
84401
					if (overlayPattern) {
84402
						writer.addVector({
84403
							type: 'rect',
84404
							x: x1f,
84405
							y: y1f,
84406
							w: bgWidth,
84407
							h: bgHeight,
84408
							lineWidth: 0,
84409
							color: overlayPattern,
84410
							fillOpacity: overlayOpacity
84411
						}, false, true);
84412
					}
84413
				}
84414
			}
84415
		}
84416
84417
		if (willBreak && this.layout.hLineWhenBroken !== false) {
84418
			this.drawHorizontalLine(rowIndex + 1, writer, y2);
84419
		}
84420
		if (rowBreakWithoutHeader && this.layout.hLineWhenBroken !== false) {
84421
			this.drawHorizontalLine(rowIndex, writer, y1);
84422
		}
84423
	}
84424
84425
	writer.context().page = endingPage;
84426
	writer.context().y = endingY;
84427
84428
	var row = this.tableNode.table.body[rowIndex];
84429
	for (i = 0, l = row.length; i < l; i++) {
84430
		if (row[i].rowSpan) {
84431
			this.rowSpanData[i].rowSpan = row[i].rowSpan;
84432
84433
			// fix colSpans
84434
			if (row[i].colSpan && row[i].colSpan > 1) {
84435
				for (var j = 1; j < row[i].rowSpan; j++) {
84436
					this.tableNode.table.body[rowIndex + j][i]._colSpan = row[i].colSpan;
84437
				}
84438
			}
84439
			// fix rowSpans
84440
			if (row[i].rowSpan && row[i].rowSpan > 1) {
84441
				for (var j = 1; j < row[i].rowSpan; j++) {
84442
					this.tableNode.table.body[rowIndex + j][i]._rowSpanCurrentOffset = j;
84443
				}
84444
			}
84445
		}
84446
84447
		if (this.rowSpanData[i].rowSpan > 0) {
84448
			this.rowSpanData[i].rowSpan--;
84449
		}
84450
	}
84451
84452
	this.drawHorizontalLine(rowIndex + 1, writer);
84453
84454
	if (this.headerRows && rowIndex === this.headerRows - 1) {
84455
		this.headerRepeatable = writer.currentBlockToRepeatable();
84456
	}
84457
84458
	if (this.dontBreakRows) {
84459
		writer.tracker.auto('pageChanged',
84460
			function () {
84461
				if (!self.headerRows && self.layout.hLineWhenBroken !== false) {
84462
					self.drawHorizontalLine(rowIndex, writer);
84463
				}
84464
			},
84465
			function () {
84466
				writer.commitUnbreakableBlock();
84467
			}
84468
		);
84469
	}
84470
84471
	if (this.headerRepeatable && (rowIndex === (this.rowsWithoutPageBreak - 1) || rowIndex === this.tableNode.table.body.length - 1)) {
84472
		writer.commitUnbreakableBlock();
84473
		writer.pushToRepeatables(this.headerRepeatable);
84474
		this.cleanUpRepeatables = true;
84475
		this.headerRepeatable = null;
84476
	}
84477
84478
	function getLineXs() {
84479
		var result = [];
84480
		var cols = 0;
84481
84482
		for (var i = 0, l = self.tableNode.table.body[rowIndex].length; i < l; i++) {
84483
			if (!cols) {
84484
				result.push({ x: self.rowSpanData[i].left, index: i });
84485
84486
				var item = self.tableNode.table.body[rowIndex][i];
84487
				cols = (item._colSpan || item.colSpan || 0);
84488
			}
84489
			if (cols > 0) {
84490
				cols--;
84491
			}
84492
		}
84493
84494
		result.push({ x: self.rowSpanData[self.rowSpanData.length - 1].left, index: self.rowSpanData.length - 1 });
84495
84496
		return result;
84497
	}
84498
};
84499
84500
module.exports = TableProcessor;
84501
84502
84503
/***/ }),
84504
84505
/***/ 3497:
84506
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
84507
84508
"use strict";
84509
84510
84511
var isArray = (__webpack_require__(6225).isArray);
84512
var isPattern = (__webpack_require__(6225).isPattern);
84513
var getPattern = (__webpack_require__(6225).getPattern);
84514
84515
function groupDecorations(line) {
84516
	var groups = [], currentGroup = null;
84517
	for (var i = 0, l = line.inlines.length; i < l; i++) {
84518
		var inline = line.inlines[i];
84519
		var decoration = inline.decoration;
84520
		if (!decoration) {
84521
			currentGroup = null;
84522
			continue;
84523
		}
84524
		if (!isArray(decoration)) {
84525
			decoration = [decoration];
84526
		}
84527
		var color = inline.decorationColor || inline.color || 'black';
84528
		var style = inline.decorationStyle || 'solid';
84529
		for (var ii = 0, ll = decoration.length; ii < ll; ii++) {
84530
			var decorationItem = decoration[ii];
84531
			if (!currentGroup || decorationItem !== currentGroup.decoration ||
84532
				style !== currentGroup.decorationStyle || color !== currentGroup.decorationColor) {
84533
84534
				currentGroup = {
84535
					line: line,
84536
					decoration: decorationItem,
84537
					decorationColor: color,
84538
					decorationStyle: style,
84539
					inlines: [inline]
84540
				};
84541
				groups.push(currentGroup);
84542
			} else {
84543
				currentGroup.inlines.push(inline);
84544
			}
84545
		}
84546
	}
84547
84548
	return groups;
84549
}
84550
84551
function drawDecoration(group, x, y, pdfKitDoc) {
84552
	function maxInline() {
84553
		var max = 0;
84554
		for (var i = 0, l = group.inlines.length; i < l; i++) {
84555
			var inline = group.inlines[i];
84556
			max = inline.fontSize > max ? i : max;
84557
		}
84558
		return group.inlines[max];
84559
	}
84560
	function width() {
84561
		var sum = 0;
84562
		for (var i = 0, l = group.inlines.length; i < l; i++) {
84563
			var justifyShift = (group.inlines[i].justifyShift || 0);
84564
			sum += group.inlines[i].width + justifyShift;
84565
		}
84566
		return sum;
84567
	}
84568
	var firstInline = group.inlines[0],
84569
		biggerInline = maxInline(),
84570
		totalWidth = width(),
84571
		lineAscent = group.line.getAscenderHeight(),
84572
		ascent = biggerInline.font.ascender / 1000 * biggerInline.fontSize,
84573
		height = biggerInline.height,
84574
		descent = height - ascent;
84575
84576
	var lw = 0.5 + Math.floor(Math.max(biggerInline.fontSize - 8, 0) / 2) * 0.12;
84577
84578
	switch (group.decoration) {
84579
		case 'underline':
84580
			y += lineAscent + descent * 0.45;
84581
			break;
84582
		case 'overline':
84583
			y += lineAscent - (ascent * 0.85);
84584
			break;
84585
		case 'lineThrough':
84586
			y += lineAscent - (ascent * 0.25);
84587
			break;
84588
		default:
84589
			throw 'Unkown decoration : ' + group.decoration;
84590
	}
84591
	pdfKitDoc.save();
84592
84593
	if (group.decorationStyle === 'double') {
84594
		var gap = Math.max(0.5, lw * 2);
84595
		pdfKitDoc.fillColor(group.decorationColor)
84596
			.rect(x + firstInline.x, y - lw / 2, totalWidth, lw / 2).fill()
84597
			.rect(x + firstInline.x, y + gap - lw / 2, totalWidth, lw / 2).fill();
84598
	} else if (group.decorationStyle === 'dashed') {
84599
		var nbDashes = Math.ceil(totalWidth / (3.96 + 2.84));
84600
		var rdx = x + firstInline.x;
84601
		pdfKitDoc.rect(rdx, y, totalWidth, lw).clip();
84602
		pdfKitDoc.fillColor(group.decorationColor);
84603
		for (var i = 0; i < nbDashes; i++) {
84604
			pdfKitDoc.rect(rdx, y - lw / 2, 3.96, lw).fill();
84605
			rdx += 3.96 + 2.84;
84606
		}
84607
	} else if (group.decorationStyle === 'dotted') {
84608
		var nbDots = Math.ceil(totalWidth / (lw * 3));
84609
		var rx = x + firstInline.x;
84610
		pdfKitDoc.rect(rx, y, totalWidth, lw).clip();
84611
		pdfKitDoc.fillColor(group.decorationColor);
84612
		for (var ii = 0; ii < nbDots; ii++) {
84613
			pdfKitDoc.rect(rx, y - lw / 2, lw, lw).fill();
84614
			rx += (lw * 3);
84615
		}
84616
	} else if (group.decorationStyle === 'wavy') {
84617
		var sh = 0.7, sv = 1;
84618
		var nbWaves = Math.ceil(totalWidth / (sh * 2)) + 1;
84619
		var rwx = x + firstInline.x - 1;
84620
		pdfKitDoc.rect(x + firstInline.x, y - sv, totalWidth, y + sv).clip();
84621
		pdfKitDoc.lineWidth(0.24);
84622
		pdfKitDoc.moveTo(rwx, y);
84623
		for (var iii = 0; iii < nbWaves; iii++) {
84624
			pdfKitDoc.bezierCurveTo(rwx + sh, y - sv, rwx + sh * 2, y - sv, rwx + sh * 3, y)
84625
				.bezierCurveTo(rwx + sh * 4, y + sv, rwx + sh * 5, y + sv, rwx + sh * 6, y);
84626
			rwx += sh * 6;
84627
		}
84628
		pdfKitDoc.stroke(group.decorationColor);
84629
	} else {
84630
		pdfKitDoc.fillColor(group.decorationColor)
84631
			.rect(x + firstInline.x, y - lw / 2, totalWidth, lw)
84632
			.fill();
84633
	}
84634
	pdfKitDoc.restore();
84635
}
84636
84637
function drawDecorations(line, x, y, pdfKitDoc) {
84638
	var groups = groupDecorations(line);
84639
	for (var i = 0, l = groups.length; i < l; i++) {
84640
		drawDecoration(groups[i], x, y, pdfKitDoc);
84641
	}
84642
}
84643
84644
function drawBackground(line, x, y, patterns, pdfKitDoc) {
84645
	var height = line.getHeight();
84646
	for (var i = 0, l = line.inlines.length; i < l; i++) {
84647
		var inline = line.inlines[i];
84648
		if (!inline.background) {
84649
			continue;
84650
		}
84651
		var color = inline.background;
84652
		if (isPattern(inline.background)) {
84653
			color = getPattern(inline.background, patterns);
84654
		}
84655
		var justifyShift = (inline.justifyShift || 0);
84656
		pdfKitDoc.fillColor(color)
84657
			.rect(x + inline.x - justifyShift, y, inline.width + justifyShift, height)
84658
			.fill();
84659
	}
84660
}
84661
84662
module.exports = {
84663
	drawBackground: drawBackground,
84664
	drawDecorations: drawDecorations
84665
};
84666
84667
84668
/***/ }),
84669
84670
/***/ 1350:
84671
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
84672
84673
"use strict";
84674
84675
84676
var isString = (__webpack_require__(6225).isString);
84677
var isNumber = (__webpack_require__(6225).isNumber);
84678
var isObject = (__webpack_require__(6225).isObject);
84679
var isArray = (__webpack_require__(6225).isArray);
84680
var isUndefined = (__webpack_require__(6225).isUndefined);
84681
var LineBreaker = __webpack_require__(7337);
84682
84683
var LEADING = /^(\s)+/g;
84684
var TRAILING = /(\s)+$/g;
84685
84686
/**
84687
 * Creates an instance of TextTools - text measurement utility
84688
 *
84689
 * @constructor
84690
 * @param {FontProvider} fontProvider
84691
 */
84692
function TextTools(fontProvider) {
84693
	this.fontProvider = fontProvider;
84694
}
84695
84696
/**
84697
 * Converts an array of strings (or inline-definition-objects) into a collection
84698
 * of inlines and calculated minWidth/maxWidth.
84699
 * and their min/max widths
84700
 * @param  {Object} textArray - an array of inline-definition-objects (or strings)
84701
 * @param  {Object} styleContextStack current style stack
84702
 * @return {Object}                   collection of inlines, minWidth, maxWidth
84703
 */
84704
TextTools.prototype.buildInlines = function (textArray, styleContextStack) {
84705
	var measured = measure(this.fontProvider, textArray, styleContextStack);
84706
84707
	var minWidth = 0,
84708
		maxWidth = 0,
84709
		currentLineWidth;
84710
84711
	measured.forEach(function (inline) {
84712
		minWidth = Math.max(minWidth, inline.width - inline.leadingCut - inline.trailingCut);
84713
84714
		if (!currentLineWidth) {
84715
			currentLineWidth = { width: 0, leadingCut: inline.leadingCut, trailingCut: 0 };
84716
		}
84717
84718
		currentLineWidth.width += inline.width;
84719
		currentLineWidth.trailingCut = inline.trailingCut;
84720
84721
		maxWidth = Math.max(maxWidth, getTrimmedWidth(currentLineWidth));
84722
84723
		if (inline.lineEnd) {
84724
			currentLineWidth = null;
84725
		}
84726
	});
84727
84728
	if (getStyleProperty({}, styleContextStack, 'noWrap', false)) {
84729
		minWidth = maxWidth;
84730
	}
84731
84732
	return {
84733
		items: measured,
84734
		minWidth: minWidth,
84735
		maxWidth: maxWidth
84736
	};
84737
84738
	function getTrimmedWidth(item) {
84739
		return Math.max(0, item.width - item.leadingCut - item.trailingCut);
84740
	}
84741
};
84742
84743
/**
84744
 * Returns size of the specified string (without breaking it) using the current style
84745
 * @param  {String} text              text to be measured
84746
 * @param  {Object} styleContextStack current style stack
84747
 * @return {Object}                   size of the specified string
84748
 */
84749
TextTools.prototype.sizeOfString = function (text, styleContextStack) {
84750
	text = text ? text.toString().replace(/\t/g, '    ') : '';
84751
84752
	//TODO: refactor - extract from measure
84753
	var fontName = getStyleProperty({}, styleContextStack, 'font', 'Roboto');
84754
	var fontSize = getStyleProperty({}, styleContextStack, 'fontSize', 12);
84755
	var fontFeatures = getStyleProperty({}, styleContextStack, 'fontFeatures', null);
84756
	var bold = getStyleProperty({}, styleContextStack, 'bold', false);
84757
	var italics = getStyleProperty({}, styleContextStack, 'italics', false);
84758
	var lineHeight = getStyleProperty({}, styleContextStack, 'lineHeight', 1);
84759
	var characterSpacing = getStyleProperty({}, styleContextStack, 'characterSpacing', 0);
84760
84761
	var font = this.fontProvider.provideFont(fontName, bold, italics);
84762
84763
	return {
84764
		width: widthOfString(text, font, fontSize, characterSpacing, fontFeatures),
84765
		height: font.lineHeight(fontSize) * lineHeight,
84766
		fontSize: fontSize,
84767
		lineHeight: lineHeight,
84768
		ascender: font.ascender / 1000 * fontSize,
84769
		descender: font.descender / 1000 * fontSize
84770
	};
84771
};
84772
84773
/**
84774
 * Returns size of the specified rotated string (without breaking it) using the current style
84775
 *
84776
 * @param  {string} text text to be measured
84777
 * @param  {number} angle
84778
 * @param  {object} styleContextStack current style stack
84779
 * @returns {object} size of the specified string
84780
 */
84781
TextTools.prototype.sizeOfRotatedText = function (text, angle, styleContextStack) {
84782
	var angleRad = angle * Math.PI / -180;
84783
	var size = this.sizeOfString(text, styleContextStack);
84784
	return {
84785
		width: Math.abs(size.height * Math.sin(angleRad)) + Math.abs(size.width * Math.cos(angleRad)),
84786
		height: Math.abs(size.width * Math.sin(angleRad)) + Math.abs(size.height * Math.cos(angleRad))
84787
	};
84788
}
84789
84790
TextTools.prototype.widthOfString = function (text, font, fontSize, characterSpacing, fontFeatures) {
84791
	return widthOfString(text, font, fontSize, characterSpacing, fontFeatures);
84792
};
84793
84794
function splitWords(text, noWrap) {
84795
	var results = [];
84796
	text = text.replace(/\t/g, '    ');
84797
84798
	if (noWrap) {
84799
		results.push({ text: text });
84800
		return results;
84801
	}
84802
84803
	var breaker = new LineBreaker(text);
84804
	var last = 0;
84805
	var bk;
84806
84807
	while (bk = breaker.nextBreak()) {
84808
		var word = text.slice(last, bk.position);
84809
84810
		if (bk.required || word.match(/\r?\n$|\r$/)) { // new line
84811
			word = word.replace(/\r?\n$|\r$/, '');
84812
			results.push({ text: word, lineEnd: true });
84813
		} else {
84814
			results.push({ text: word });
84815
		}
84816
84817
		last = bk.position;
84818
	}
84819
84820
	return results;
84821
}
84822
84823
function copyStyle(source, destination) {
84824
	destination = destination || {};
84825
	source = source || {}; //TODO: default style
84826
84827
	for (var key in source) {
84828
		if (key != 'text' && source.hasOwnProperty(key)) {
84829
			destination[key] = source[key];
84830
		}
84831
	}
84832
84833
	return destination;
84834
}
84835
84836
function normalizeTextArray(array, styleContextStack) {
84837
	function flatten(array) {
84838
		return array.reduce(function (prev, cur) {
84839
			var current = isArray(cur.text) ? flatten(cur.text) : cur;
84840
			var more = [].concat(current).some(Array.isArray);
84841
			return prev.concat(more ? flatten(current) : current);
84842
		}, []);
84843
	}
84844
84845
	function getOneWord(index, words, noWrap) {
84846
		if (isUndefined(words[index])) {
84847
			return null;
84848
		}
84849
84850
		if (words[index].lineEnd) {
84851
			return null;
84852
		}
84853
84854
		var word = words[index].text;
84855
84856
		if (noWrap) {
84857
			var tmpWords = splitWords(normalizeString(word), false);
84858
			if (isUndefined(tmpWords[tmpWords.length - 1])) {
84859
				return null;
84860
			}
84861
			word = tmpWords[tmpWords.length - 1].text;
84862
		}
84863
84864
		return word;
84865
	}
84866
84867
	var results = [];
84868
84869
	if (!isArray(array)) {
84870
		array = [array];
84871
	}
84872
84873
	array = flatten(array);
84874
84875
	var lastWord = null;
84876
	for (var i = 0, l = array.length; i < l; i++) {
84877
		var item = array[i];
84878
		var style = null;
84879
		var words;
84880
84881
		var noWrap = getStyleProperty(item || {}, styleContextStack, 'noWrap', false);
84882
		if (isObject(item)) {
84883
			if (item._textRef && item._textRef._textNodeRef.text) {
84884
				item.text = item._textRef._textNodeRef.text;
84885
			}
84886
			words = splitWords(normalizeString(item.text), noWrap);
84887
			style = copyStyle(item);
84888
		} else {
84889
			words = splitWords(normalizeString(item), noWrap);
84890
		}
84891
84892
		if (lastWord && words.length) {
84893
			var firstWord = getOneWord(0, words, noWrap);
84894
84895
			var wrapWords = splitWords(normalizeString(lastWord + firstWord), false);
84896
			if (wrapWords.length === 1) {
84897
				results[results.length - 1].noNewLine = true;
84898
			}
84899
		}
84900
84901
		for (var i2 = 0, l2 = words.length; i2 < l2; i2++) {
84902
			var result = {
84903
				text: words[i2].text
84904
			};
84905
84906
			if (words[i2].lineEnd) {
84907
				result.lineEnd = true;
84908
			}
84909
84910
			copyStyle(style, result);
84911
84912
			results.push(result);
84913
		}
84914
84915
		lastWord = null;
84916
		if (i + 1 < l) {
84917
			lastWord = getOneWord(words.length - 1, words, noWrap);
84918
		}
84919
	}
84920
84921
	return results;
84922
}
84923
84924
function normalizeString(value) {
84925
	if (value === undefined || value === null) {
84926
		return '';
84927
	} else if (isNumber(value)) {
84928
		return value.toString();
84929
	} else if (isString(value)) {
84930
		return value;
84931
	} else {
84932
		return value.toString();
84933
	}
84934
}
84935
84936
function getStyleProperty(item, styleContextStack, property, defaultValue) {
84937
	var value;
84938
84939
	if (item[property] !== undefined && item[property] !== null) {
84940
		// item defines this property
84941
		return item[property];
84942
	}
84943
84944
	if (!styleContextStack) {
84945
		return defaultValue;
84946
	}
84947
84948
	styleContextStack.auto(item, function () {
84949
		value = styleContextStack.getProperty(property);
84950
	});
84951
84952
	if (value !== null && value !== undefined) {
84953
		return value;
84954
	} else {
84955
		return defaultValue;
84956
	}
84957
}
84958
84959
function measure(fontProvider, textArray, styleContextStack) {
84960
	var normalized = normalizeTextArray(textArray, styleContextStack);
84961
84962
	if (normalized.length) {
84963
		var leadingIndent = getStyleProperty(normalized[0], styleContextStack, 'leadingIndent', 0);
84964
84965
		if (leadingIndent) {
84966
			normalized[0].leadingCut = -leadingIndent;
84967
			normalized[0].leadingIndent = leadingIndent;
84968
		}
84969
	}
84970
84971
	normalized.forEach(function (item) {
84972
		var fontName = getStyleProperty(item, styleContextStack, 'font', 'Roboto');
84973
		var fontSize = getStyleProperty(item, styleContextStack, 'fontSize', 12);
84974
		var fontFeatures = getStyleProperty(item, styleContextStack, 'fontFeatures', null);
84975
		var bold = getStyleProperty(item, styleContextStack, 'bold', false);
84976
		var italics = getStyleProperty(item, styleContextStack, 'italics', false);
84977
		var color = getStyleProperty(item, styleContextStack, 'color', 'black');
84978
		var decoration = getStyleProperty(item, styleContextStack, 'decoration', null);
84979
		var decorationColor = getStyleProperty(item, styleContextStack, 'decorationColor', null);
84980
		var decorationStyle = getStyleProperty(item, styleContextStack, 'decorationStyle', null);
84981
		var background = getStyleProperty(item, styleContextStack, 'background', null);
84982
		var lineHeight = getStyleProperty(item, styleContextStack, 'lineHeight', 1);
84983
		var characterSpacing = getStyleProperty(item, styleContextStack, 'characterSpacing', 0);
84984
		var link = getStyleProperty(item, styleContextStack, 'link', null);
84985
		var linkToPage = getStyleProperty(item, styleContextStack, 'linkToPage', null);
84986
		var linkToDestination = getStyleProperty(item, styleContextStack, 'linkToDestination', null);
84987
		var noWrap = getStyleProperty(item, styleContextStack, 'noWrap', null);
84988
		var preserveLeadingSpaces = getStyleProperty(item, styleContextStack, 'preserveLeadingSpaces', false);
84989
		var preserveTrailingSpaces = getStyleProperty(item, styleContextStack, 'preserveTrailingSpaces', false);
84990
		var opacity = getStyleProperty(item, styleContextStack, 'opacity', 1);
84991
		var sup = getStyleProperty(item, styleContextStack, 'sup', false);
84992
		var sub = getStyleProperty(item, styleContextStack, 'sub', false);
84993
84994
		if ((sup || sub) && item.fontSize === undefined) {
84995
			// font size reduction taken from here: https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing
84996
			fontSize *= 0.58
84997
		}
84998
84999
		var font = fontProvider.provideFont(fontName, bold, italics);
85000
85001
		item.width = widthOfString(item.text, font, fontSize, characterSpacing, fontFeatures);
85002
		item.height = font.lineHeight(fontSize) * lineHeight;
85003
85004
		if (!item.leadingCut) {
85005
			item.leadingCut = 0;
85006
		}
85007
85008
		var leadingSpaces;
85009
		if (!preserveLeadingSpaces && (leadingSpaces = item.text.match(LEADING))) {
85010
			item.leadingCut += widthOfString(leadingSpaces[0], font, fontSize, characterSpacing, fontFeatures);
85011
		}
85012
85013
		var trailingSpaces;
85014
		if (!preserveTrailingSpaces && (trailingSpaces = item.text.match(TRAILING))) {
85015
			item.trailingCut = widthOfString(trailingSpaces[0], font, fontSize, characterSpacing, fontFeatures);
85016
		} else {
85017
			item.trailingCut = 0;
85018
		}
85019
85020
		item.alignment = getStyleProperty(item, styleContextStack, 'alignment', 'left');
85021
		item.font = font;
85022
		item.fontSize = fontSize;
85023
		item.fontFeatures = fontFeatures;
85024
		item.characterSpacing = characterSpacing;
85025
		item.color = color;
85026
		item.decoration = decoration;
85027
		item.decorationColor = decorationColor;
85028
		item.decorationStyle = decorationStyle;
85029
		item.background = background;
85030
		item.link = link;
85031
		item.linkToPage = linkToPage;
85032
		item.linkToDestination = linkToDestination;
85033
		item.noWrap = noWrap;
85034
		item.opacity = opacity;
85035
		item.sup = sup;
85036
		item.sub = sub;
85037
	});
85038
85039
	return normalized;
85040
}
85041
85042
function widthOfString(text, font, fontSize, characterSpacing, fontFeatures) {
85043
	return font.widthOfString(text, fontSize, fontFeatures) + ((characterSpacing || 0) * (text.length - 1));
85044
}
85045
85046
module.exports = TextTools;
85047
85048
85049
/***/ }),
85050
85051
/***/ 8537:
85052
/***/ (function(module) {
85053
85054
"use strict";
85055
85056
85057
function TraversalTracker() {
85058
	this.events = {};
85059
}
85060
85061
TraversalTracker.prototype.startTracking = function (event, callback) {
85062
	var callbacks = this.events[event] || (this.events[event] = []);
85063
85064
	if (callbacks.indexOf(callback) < 0) {
85065
		callbacks.push(callback);
85066
	}
85067
};
85068
85069
TraversalTracker.prototype.stopTracking = function (event, callback) {
85070
	var callbacks = this.events[event];
85071
85072
	if (!callbacks) {
85073
		return;
85074
	}
85075
85076
	var index = callbacks.indexOf(callback);
85077
	if (index >= 0) {
85078
		callbacks.splice(index, 1);
85079
	}
85080
};
85081
85082
TraversalTracker.prototype.emit = function (event) {
85083
	var args = Array.prototype.slice.call(arguments, 1);
85084
	var callbacks = this.events[event];
85085
85086
	if (!callbacks) {
85087
		return;
85088
	}
85089
85090
	callbacks.forEach(function (callback) {
85091
		callback.apply(this, args);
85092
	});
85093
};
85094
85095
TraversalTracker.prototype.auto = function (event, callback, innerFunction) {
85096
	this.startTracking(event, callback);
85097
	innerFunction();
85098
	this.stopTracking(event, callback);
85099
};
85100
85101
module.exports = TraversalTracker;
85102
85103
85104
/***/ }),
85105
85106
/***/ 2480:
85107
/***/ (function() {
85108
85109
/* (ignored) */
85110
85111
/***/ }),
85112
85113
/***/ 5832:
85114
/***/ (function() {
85115
85116
/* (ignored) */
85117
85118
/***/ }),
85119
85120
/***/ 9862:
85121
/***/ (function() {
85122
85123
/* (ignored) */
85124
85125
/***/ }),
85126
85127
/***/ 964:
85128
/***/ (function() {
85129
85130
/* (ignored) */
85131
85132
/***/ }),
85133
85134
/***/ 3083:
85135
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
85136
85137
"use strict";
85138
85139
85140
var possibleNames = [
85141
	'BigInt64Array',
85142
	'BigUint64Array',
85143
	'Float32Array',
85144
	'Float64Array',
85145
	'Int16Array',
85146
	'Int32Array',
85147
	'Int8Array',
85148
	'Uint16Array',
85149
	'Uint32Array',
85150
	'Uint8Array',
85151
	'Uint8ClampedArray'
85152
];
85153
85154
var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;
85155
85156
module.exports = function availableTypedArrays() {
85157
	var out = [];
85158
	for (var i = 0; i < possibleNames.length; i++) {
85159
		if (typeof g[possibleNames[i]] === 'function') {
85160
			out[out.length] = possibleNames[i];
85161
		}
85162
	}
85163
	return out;
85164
};
85165
85166
85167
/***/ }),
85168
85169
/***/ 3631:
85170
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
85171
85172
var $c5L0i$base64js = __webpack_require__(9742);
85173
var $c5L0i$unicodetrie = __webpack_require__(4781);
85174
85175
function $parcel$interopDefault(a) {
85176
  return a && a.__esModule ? a.default : a;
85177
}
85178
function $parcel$defineInteropFlag(a) {
85179
  Object.defineProperty(a, '__esModule', {value: true, configurable: true});
85180
}
85181
function $parcel$export(e, n, v, s) {
85182
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
85183
}
85184
85185
$parcel$defineInteropFlag(module.exports);
85186
85187
$parcel$export(module.exports, "getCategory", () => $43d7963e56408b24$export$410364bbb673ddbc);
85188
$parcel$export(module.exports, "getCombiningClass", () => $43d7963e56408b24$export$c03b919c6651ed55);
85189
$parcel$export(module.exports, "getScript", () => $43d7963e56408b24$export$941569448d136665);
85190
$parcel$export(module.exports, "getEastAsianWidth", () => $43d7963e56408b24$export$92f6187db8ca6d26);
85191
$parcel$export(module.exports, "getNumericValue", () => $43d7963e56408b24$export$7d1258ebb7625a0d);
85192
$parcel$export(module.exports, "isAlphabetic", () => $43d7963e56408b24$export$52c8ea63abd07594);
85193
$parcel$export(module.exports, "isDigit", () => $43d7963e56408b24$export$727d9dbc4fbb948f);
85194
$parcel$export(module.exports, "isPunctuation", () => $43d7963e56408b24$export$a5b49f4dc6a07d2c);
85195
$parcel$export(module.exports, "isLowerCase", () => $43d7963e56408b24$export$7b6804e8df61fcf5);
85196
$parcel$export(module.exports, "isUpperCase", () => $43d7963e56408b24$export$aebd617640818cda);
85197
$parcel$export(module.exports, "isTitleCase", () => $43d7963e56408b24$export$de8b4ee23b2cf823);
85198
$parcel$export(module.exports, "isWhiteSpace", () => $43d7963e56408b24$export$3c52dd84024ae72c);
85199
$parcel$export(module.exports, "isBaseForm", () => $43d7963e56408b24$export$a11bdcffe109e74b);
85200
$parcel$export(module.exports, "isMark", () => $43d7963e56408b24$export$e33ad6871e762338);
85201
$parcel$export(module.exports, "default", () => $43d7963e56408b24$export$2e2bcd8739ae039);
85202
85203
85204
var $29668e65f2091c2c$exports = {};
85205
$29668e65f2091c2c$exports = JSON.parse('{"categories":["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],"combiningClasses":["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],"scripts":["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Osage","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Hanifi_Rohingya","Old_Sogdian","Sogdian","Elymaic","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Newa","Tirhuta","Siddham","Modi","Takri","Ahom","Dogra","Warang_Citi","Nandinagari","Zanabazar_Square","Soyombo","Pau_Cin_Hau","Bhaiksuki","Marchen","Masaram_Gondi","Gunjala_Gondi","Makasar","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Medefaidrin","Miao","Tangut","Nushu","Duployan","SignWriting","Nyiakeng_Puachue_Hmong","Wancho","Mende_Kikakui","Adlam"],"eaw":["N","Na","A","W","H","F"]}');
85206
85207
85208
const $43d7963e56408b24$var$trie = new (0, ($parcel$interopDefault($c5L0i$unicodetrie)))((0, ($parcel$interopDefault($c5L0i$base64js))).toByteArray("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"));
85209
const $43d7963e56408b24$var$log2 = Math.log2 || ((n)=>Math.log(n) / Math.LN2);
85210
const $43d7963e56408b24$var$bits = (n)=>$43d7963e56408b24$var$log2(n) + 1 | 0;
85211
// compute the number of bits stored for each field
85212
const $43d7963e56408b24$var$CATEGORY_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).categories.length - 1);
85213
const $43d7963e56408b24$var$COMBINING_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).combiningClasses.length - 1);
85214
const $43d7963e56408b24$var$SCRIPT_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).scripts.length - 1);
85215
const $43d7963e56408b24$var$EAW_BITS = $43d7963e56408b24$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).eaw.length - 1);
85216
const $43d7963e56408b24$var$NUMBER_BITS = 10;
85217
// compute shift and mask values for each field
85218
const $43d7963e56408b24$var$CATEGORY_SHIFT = $43d7963e56408b24$var$COMBINING_BITS + $43d7963e56408b24$var$SCRIPT_BITS + $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;
85219
const $43d7963e56408b24$var$COMBINING_SHIFT = $43d7963e56408b24$var$SCRIPT_BITS + $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;
85220
const $43d7963e56408b24$var$SCRIPT_SHIFT = $43d7963e56408b24$var$EAW_BITS + $43d7963e56408b24$var$NUMBER_BITS;
85221
const $43d7963e56408b24$var$EAW_SHIFT = $43d7963e56408b24$var$NUMBER_BITS;
85222
const $43d7963e56408b24$var$CATEGORY_MASK = (1 << $43d7963e56408b24$var$CATEGORY_BITS) - 1;
85223
const $43d7963e56408b24$var$COMBINING_MASK = (1 << $43d7963e56408b24$var$COMBINING_BITS) - 1;
85224
const $43d7963e56408b24$var$SCRIPT_MASK = (1 << $43d7963e56408b24$var$SCRIPT_BITS) - 1;
85225
const $43d7963e56408b24$var$EAW_MASK = (1 << $43d7963e56408b24$var$EAW_BITS) - 1;
85226
const $43d7963e56408b24$var$NUMBER_MASK = (1 << $43d7963e56408b24$var$NUMBER_BITS) - 1;
85227
function $43d7963e56408b24$export$410364bbb673ddbc(codePoint) {
85228
    const val = $43d7963e56408b24$var$trie.get(codePoint);
85229
    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).categories[val >> $43d7963e56408b24$var$CATEGORY_SHIFT & $43d7963e56408b24$var$CATEGORY_MASK];
85230
}
85231
function $43d7963e56408b24$export$c03b919c6651ed55(codePoint) {
85232
    const val = $43d7963e56408b24$var$trie.get(codePoint);
85233
    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).combiningClasses[val >> $43d7963e56408b24$var$COMBINING_SHIFT & $43d7963e56408b24$var$COMBINING_MASK];
85234
}
85235
function $43d7963e56408b24$export$941569448d136665(codePoint) {
85236
    const val = $43d7963e56408b24$var$trie.get(codePoint);
85237
    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).scripts[val >> $43d7963e56408b24$var$SCRIPT_SHIFT & $43d7963e56408b24$var$SCRIPT_MASK];
85238
}
85239
function $43d7963e56408b24$export$92f6187db8ca6d26(codePoint) {
85240
    const val = $43d7963e56408b24$var$trie.get(codePoint);
85241
    return (0, (/*@__PURE__*/$parcel$interopDefault($29668e65f2091c2c$exports))).eaw[val >> $43d7963e56408b24$var$EAW_SHIFT & $43d7963e56408b24$var$EAW_MASK];
85242
}
85243
function $43d7963e56408b24$export$7d1258ebb7625a0d(codePoint) {
85244
    let val = $43d7963e56408b24$var$trie.get(codePoint);
85245
    let num = val & $43d7963e56408b24$var$NUMBER_MASK;
85246
    if (num === 0) return null;
85247
    else if (num <= 50) return num - 1;
85248
    else if (num < 0x1e0) {
85249
        const numerator = (num >> 4) - 12;
85250
        const denominator = (num & 0xf) + 1;
85251
        return numerator / denominator;
85252
    } else if (num < 0x300) {
85253
        val = (num >> 5) - 14;
85254
        let exp = (num & 0x1f) + 2;
85255
        while(exp > 0){
85256
            val *= 10;
85257
            exp--;
85258
        }
85259
        return val;
85260
    } else {
85261
        val = (num >> 2) - 0xbf;
85262
        let exp = (num & 3) + 1;
85263
        while(exp > 0){
85264
            val *= 60;
85265
            exp--;
85266
        }
85267
        return val;
85268
    }
85269
}
85270
function $43d7963e56408b24$export$52c8ea63abd07594(codePoint) {
85271
    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);
85272
    return category === "Lu" || category === "Ll" || category === "Lt" || category === "Lm" || category === "Lo" || category === "Nl";
85273
}
85274
function $43d7963e56408b24$export$727d9dbc4fbb948f(codePoint) {
85275
    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === "Nd";
85276
}
85277
function $43d7963e56408b24$export$a5b49f4dc6a07d2c(codePoint) {
85278
    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);
85279
    return category === "Pc" || category === "Pd" || category === "Pe" || category === "Pf" || category === "Pi" || category === "Po" || category === "Ps";
85280
}
85281
function $43d7963e56408b24$export$7b6804e8df61fcf5(codePoint) {
85282
    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === "Ll";
85283
}
85284
function $43d7963e56408b24$export$aebd617640818cda(codePoint) {
85285
    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === "Lu";
85286
}
85287
function $43d7963e56408b24$export$de8b4ee23b2cf823(codePoint) {
85288
    return $43d7963e56408b24$export$410364bbb673ddbc(codePoint) === "Lt";
85289
}
85290
function $43d7963e56408b24$export$3c52dd84024ae72c(codePoint) {
85291
    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);
85292
    return category === "Zs" || category === "Zl" || category === "Zp";
85293
}
85294
function $43d7963e56408b24$export$a11bdcffe109e74b(codePoint) {
85295
    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);
85296
    return category === "Nd" || category === "No" || category === "Nl" || category === "Lu" || category === "Ll" || category === "Lt" || category === "Lm" || category === "Lo" || category === "Me" || category === "Mc";
85297
}
85298
function $43d7963e56408b24$export$e33ad6871e762338(codePoint) {
85299
    const category = $43d7963e56408b24$export$410364bbb673ddbc(codePoint);
85300
    return category === "Mn" || category === "Me" || category === "Mc";
85301
}
85302
var // Backwards compatibility.
85303
$43d7963e56408b24$export$2e2bcd8739ae039 = {
85304
    getCategory: $43d7963e56408b24$export$410364bbb673ddbc,
85305
    getCombiningClass: $43d7963e56408b24$export$c03b919c6651ed55,
85306
    getScript: $43d7963e56408b24$export$941569448d136665,
85307
    getEastAsianWidth: $43d7963e56408b24$export$92f6187db8ca6d26,
85308
    getNumericValue: $43d7963e56408b24$export$7d1258ebb7625a0d,
85309
    isAlphabetic: $43d7963e56408b24$export$52c8ea63abd07594,
85310
    isDigit: $43d7963e56408b24$export$727d9dbc4fbb948f,
85311
    isPunctuation: $43d7963e56408b24$export$a5b49f4dc6a07d2c,
85312
    isLowerCase: $43d7963e56408b24$export$7b6804e8df61fcf5,
85313
    isUpperCase: $43d7963e56408b24$export$aebd617640818cda,
85314
    isTitleCase: $43d7963e56408b24$export$de8b4ee23b2cf823,
85315
    isWhiteSpace: $43d7963e56408b24$export$3c52dd84024ae72c,
85316
    isBaseForm: $43d7963e56408b24$export$a11bdcffe109e74b,
85317
    isMark: $43d7963e56408b24$export$e33ad6871e762338
85318
};
85319
85320
85321
//# sourceMappingURL=main.cjs.map
85322
85323
85324
/***/ }),
85325
85326
/***/ 3480:
85327
/***/ (function(module) {
85328
85329
"use strict";
85330
module.exports = JSON.parse('[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]');
85331
85332
/***/ }),
85333
85334
/***/ 3336:
85335
/***/ (function(module) {
85336
85337
"use strict";
85338
module.exports = JSON.parse('[["0","\\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]');
85339
85340
/***/ }),
85341
85342
/***/ 7348:
85343
/***/ (function(module) {
85344
85345
"use strict";
85346
module.exports = JSON.parse('[["0","\\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]');
85347
85348
/***/ }),
85349
85350
/***/ 4284:
85351
/***/ (function(module) {
85352
85353
"use strict";
85354
module.exports = JSON.parse('[["0","\\u0000",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]');
85355
85356
/***/ }),
85357
85358
/***/ 5633:
85359
/***/ (function(module) {
85360
85361
"use strict";
85362
module.exports = JSON.parse('[["0","\\u0000",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]');
85363
85364
/***/ }),
85365
85366
/***/ 6258:
85367
/***/ (function(module) {
85368
85369
"use strict";
85370
module.exports = JSON.parse('{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}');
85371
85372
/***/ }),
85373
85374
/***/ 4346:
85375
/***/ (function(module) {
85376
85377
"use strict";
85378
module.exports = JSON.parse('[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc","ḿ"],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93],["8135f437",""]]');
85379
85380
/***/ }),
85381
85382
/***/ 7014:
85383
/***/ (function(module) {
85384
85385
"use strict";
85386
module.exports = JSON.parse('[["0","\\u0000",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]');
85387
85388
/***/ })
85389
85390
/******/ 	});
85391
/************************************************************************/
85392
/******/ 	// The module cache
85393
/******/ 	var __webpack_module_cache__ = {};
85394
/******/
85395
/******/ 	// The require function
85396
/******/ 	function __webpack_require__(moduleId) {
85397
/******/ 		// Check if module is in cache
85398
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
85399
/******/ 		if (cachedModule !== undefined) {
85400
/******/ 			return cachedModule.exports;
85401
/******/ 		}
85402
/******/ 		// Create a new module (and put it into the cache)
85403
/******/ 		var module = __webpack_module_cache__[moduleId] = {
85404
/******/ 			id: moduleId,
85405
/******/ 			loaded: false,
85406
/******/ 			exports: {}
85407
/******/ 		};
85408
/******/
85409
/******/ 		// Execute the module function
85410
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
85411
/******/
85412
/******/ 		// Flag the module as loaded
85413
/******/ 		module.loaded = true;
85414
/******/
85415
/******/ 		// Return the exports of the module
85416
/******/ 		return module.exports;
85417
/******/ 	}
85418
/******/
85419
/************************************************************************/
85420
/******/ 	/* webpack/runtime/global */
85421
/******/ 	!function() {
85422
/******/ 		__webpack_require__.g = (function() {
85423
/******/ 			if (typeof globalThis === 'object') return globalThis;
85424
/******/ 			try {
85425
/******/ 				return this || new Function('return this')();
85426
/******/ 			} catch (e) {
85427
/******/ 				if (typeof window === 'object') return window;
85428
/******/ 			}
85429
/******/ 		})();
85430
/******/ 	}();
85431
/******/
85432
/******/ 	/* webpack/runtime/node module decorator */
85433
/******/ 	!function() {
85434
/******/ 		__webpack_require__.nmd = function(module) {
85435
/******/ 			module.paths = [];
85436
/******/ 			if (!module.children) module.children = [];
85437
/******/ 			return module;
85438
/******/ 		};
85439
/******/ 	}();
85440
/******/
85441
/************************************************************************/
85442
/******/
85443
/******/ 	// startup
85444
/******/ 	// Load entry module and return exports
85445
/******/ 	// This entry module is referenced by other modules so it can't be inlined
85446
/******/ 	var __webpack_exports__ = __webpack_require__(2536);
85447
/******/
85448
/******/ 	return __webpack_exports__;
85449
/******/ })()
85450
;
85451
});
85452
//# sourceMappingURL=pdfmake.js.map
85453
85454
this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
85455
  "Roboto-Italic.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAdT4AAACWEdQT1PInCKzAAHXUAAAZfhHU1VChRYO9AACPUgAABX2T1MvMpeDsUwAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAHU7AAAAAxnbHlmJ9ZJigAAOpAAAZd6aGVhZAakHScAAAEcAAAANmhoZWEMnBKaAAABVAAAACRobXR4O9/cTQAAAfgAABR8bG9jYY3Y7xYAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOSJt4gAB0gwAAALAcG9zdP9hAGQAAdTMAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSDPLHDFfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv2v6N/3VCUMIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJA/o3/mwJQwgAAbMAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA5YAZAAAAAAAAAAAAfcAAAH3AAACAABEAnwAyQTHAFIEXABJBa8AugTUADkBWwCsAqgAbQK0/5ADWABrBGcATAGH/48CJQAaAgwANAM0/5AEXABqBFwA+gRcABgEXAA1BFwABQRcAHIEXABtBFwAnQRcAEAEXACUAesAKQGu/5sD8gBCBEIAcAQPADsDqwClBvgAQQUQ/68E1gA7BQ0AcAUYADsEaQA7BEoAOwVJAHQFiQA7AhwASQRIAAcE3gA7BC4AOwbGADsFiQA7BVcAcwTlADsFVwBrBMgAOwScACkEoQCpBQgAYwTxAKUG4gDDBN3/1ASpAKgEpv/sAg8AAAMwAMACD/97Az4ATwOA/4ECZgDQBDkAMQRcAB8EEABGBGAARwQdAEUCswB1BFwAAwRGACAB4wAvAdv/EwPvACAB4wAvBs4AHgRJACAEbQBGBFz/1wRpAEYCoQAgBAEALgKKAEMERwBbA8IAbgXVAIAD2v/FA6z/qgPa/+4CoAA3AeUAIgKg/40FRwBpAeX/8QQ/AFAEg//zBYkAEgQUAEMB3f/4BML/2gM/ANoGGQBeA3kAwwOuAFYETACBBhoAXQOPAPgC5gDoBCYAJgLiAF0C4gBvAm8A1QRm/+YDzAB4AgcApQHt/8gC4gDgA4gAvwOtABEFuQC6Bg8AtQYTAJ4Drf/RB0H/gwQkACgFVwAgBJYAOQSdAB8GjgATBI0AXARvAEQEZgA6BHn/4ASjAEYFcAA2AewALwRSAC4ELgAjAhkAJAVgADUEZgAlB2YAVQcMAEcB7QA0BV0AUgKl/0cFVQBmBHAAQwVlAGMEzQBbAfX/CQQYAD8DpwEYA3MBKAOZAPgDUQEHAeMBDgKZAQECGv+uA6kA3gLlAMMCSP/pAAD9agAA/eoAAP0LAAD99AAA/NsAAPy6Af4BIwPtAPQCEQClBFEARAV5/7IFSABnBRf/xARvAAwFiQBEBG//2wWPAFYFXgCFBSkACgRjAEgEmf/xA+QAhQRmAEUEMAApBAUAigRmACUEawB1AoQAhARN/7gDzgBABKAAYARm/90ELQBKBGUASAQMAIcEPABoBXgAQAVvAE4GZABnBH4AUgQiAGcGGABoBdIAogU8AHMIUP/NCGMARAZRALQFiABCBO4ANgXW/4wHC/+rBJwAJQWJAEQFf//LBOEAlAX+AFsFrQBBBVAAywdNAEIHhABCBeMAigbAAEQE3gA2BTwAdgb6AEkE8f/pBEsARwRwADEDQgAuBK//jQXy/6cD8QAgBHsAMAQyADAEfP/IBcEAMQR6ADAEewAwA7sAYAWhAEkEmgAwBDkAeQZHADAGbAAlBNEAVgYQADEENwAxBC0AMgZWADEEQv+/BEYAIAQtAE4Glf/DBq8AMARwACAEewAwBtMAbgX9AE8ENgAvBvUASgXLAC0Erv+6BCb/ogbWAFsF3gBPBp4AJgW1ACoIwABJB5UALwQE/80Dvf/JBUgAZwRpAEME5ACtA+UAhQVIAGcEZgBDBssAdAX1AFIG0wBuBf0ATwUKAGkEJwBMBNgAQAAA/OcAAP0KAAD+FgAA/jsAAPo3AAD6TgXlAEQE0QAwBDYALwT0ADsEZ//XBEIANQN2ACUEwABEA+cAJQdx/6sGOv+nBXkARASeADAE4wA2BFwALgZaALwFWgB2BdsAOwS+ADAHkwA7BYgAJQf8AEIGvwAlBcEAawSvAFwE+//UBBT/xQb2AKwFNABXBZoAywR9AHkFRgDKBEkAlAVGABwGAACIBJoABATjADYEOQAuBdr/ywTT/8gFhwBEBGYAJQXtADsE0AAwByEAOwYYADEFXQBSBIQAPASE//0Env/5A5n/6QUQ/9QEKf/FBNEALgZiADEGsABIBiYArQUEAGgEKQCwA+kAoAeG/+AGRP/aB74APAZvACME0QBlA/4ATQWCAJsE+gB9BTwAaAXe/8sE1//IAwkA8wP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAABAgAAANUAAAAAAAACLQAaAi0AGgUiAKYGGQCYA4r/XgGOALABjgCJAYz/lwGOANICyAC4AtAAlQKt/5QESAB3BG3/9gKeAKEDsQA4BTsAOAF0AFIHbwCWAlUAXQJVAAQDh//wAuIAjwLiAGQC4gCKAuIAkALiAKIC4gB7AuIAqgNHAH4C4v/cAuIALQLi/6sC4v+8AuL/sgLi/9gC4v/eAuL/8ALi/8kC4v/4BIP/8wYlAAoGXwA5CD8AOwW+AAkF/AAfBFwAUQWtAEMEAwBKBFIACwUf//IFJv/lBbsAzAOxAEsH+wA1BNsA6wTxAH8GAQC2BqwAkgalAJAGQwC+BG0ATQVkACQEi/+tBHAAqwSgAEEH+wBLAf3/FQRfADMEQgBwA/z/0wQZABgD6QBCAkQAdwJ8AHEB9f/kBNcAdQRNAFkEaAB1BqAAdQagAHUEyAB1BmgAKAAAAAAH9f+rCDUAXALY/+oC2ABsAtgAHAPxAGkD8QAnA/EAcAPwAEsD8QBKA/H/9wPxABcD8f/9A/EAvQPxAEYEA//dBAsAdQQz/7cF5gCUBEYAeQRbAEIEBwBuBAAAEgQpAB0EmABGBDsAHgSYAEwEvQAeBdQAHgOZAB4ENAAeA7L/9gHaACsEvgAeBIgATAOvAB4EAAASBBQABgOFABkDkwAeBEb/sASYAEwERv+wA27/0wSqAB4D0v/WBT4AUgTwAH0EzQAOBUkAbQRaAEgHCv/DBxgAHgVKAG4EqQAeBDkAIAT9/4kF3f+vBB8AEgTGACAELQAfBJz/xAQAAFoFAQAeBEgAVgYgAB4GeQAeBPYAUQXNACAELgAgBFoAIAZFAB4EZP/gA/P/+gYY/68EVwAfBOMAHwUPAGoFlwBQBEcAdQSE/7cGMQBtBEgAVQRIAB4FmAAuBKYAQAQfABIEnABGBBQAAAPGAB8H5AAeBIf/3gLY//sC2P/xAtgAFwLYAB0C2AAvAtgACALYADcDewCTAqABCwPIAB4EGv+ZBJ8ASAUjAEQE/QBEA/UAJgUVAEQD8AAmBF0AHgRaAEgEMAAeBGP/pgHvAPwDiQESAAD9KgPSANMD1gAiA/AAzgPXAM0DkwAeA4QBEgODARMC4gCPAuIAZALiAIoC4gCQAuIAogLiAHsC4gCqBVgAgAWDAIEFaABEBbMAgwW2AIMDuAC8BF8AOQQ3/4EEqv/TBEn/1QQOACsDiQEUAYb/vgZxAEwElgA+Ae3/DwRm/6wEZv/jBGb/uARmACwEZgBWBGYAJARmAGYEZgAbBGYAQARmAQ0CAP8JAf//CQH2AC8B9v94AfYALwQwAB4E2gBkBAEAYgRcAB8EEwBEBHAAQwRpACMEfABCBGv/1wR5AEIEHQBGBFwANQRO/78DaACpBLEALAOZ/+kGCv+aA9oAHgSY//QEvQAeBL0AHgH3AAACJQAaBTYALwU2AC8EZAA+BKEAqQKK//QFEP+vBRD/rwUQ/68FEP+vBRD/rwUQ/68FEP+vBQ0AcARpADsEaQA7BGkAOwRpADsCHABJAhwASQIcAEkCHABJBYkAOwVXAHMFVwBzBVcAcwVXAHMFVwBzBQgAYwUIAGMFCABjBQgAYwSpAKgEOQAxBDkAMQQ5ADEEOQAxBDkAMQQ5ADEEOQAxBBAARgQdAEUEHQBFBB0ARQQdAEUB7AAvAewALwHsAC8B7AAvBEkAIARtAEYEbQBGBG0ARgRtAEYEbQBGBEcAWwRHAFsERwBbBEcAWwOs/6oDrP+qBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBQ0AcAQQAEYFDQBwBBAARgUNAHAEEABGBQ0AcAQQAEYFGAA7BPYARwRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUFSQB0BFwAAwVJAHQEXAADBUkAdARcAAMFSQB0BFwAAwWJADsERgAgAhwASQHsABECHABJAewALgIcAEkB7AAvAhz/iwHj/20CHABJBmQASQO+AC8ESAAHAfX/CQTeADsD7wAgBC4AOwHjAC8ELgA7AeP/ogQuADsCeQAvBC4AOwK/AC8FiQA7BEkAIAWJADsESQAgBYkAOwRJACAESQAgBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBMgAOwKhACAEyAA7AqH/nwTIADsCoQAgBJwAKQQBAC4EnAApBAEALgScACkEAQAuBJwAKQQBAC4EnAApBAEALgShAKkCigBDBKEAqQKKAEMEoQCpArIAQwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwbiAMMF1QCABKkAqAOs/6oEqQCoBKb/7APa/+4Epv/sA9r/7gSm/+wD2v/uB0H/gwaOABMFVwAgBGYAOgRd/68EXf+vBAcAbgRj/6YEY/+mBGP/pgRj/6YEY/+mBGP/pgRj/6YEWgBIA8gAHgPIAB4DyAAeA8gAHgHaACsB2gArAdoAKwHaACsEvQAeBJgATASYAEwEmABMBJgATASYAEwEWwBCBFsAQgRbAEIEWwBCBAsAdQRj/6YEY/+mBGP/pgRaAEgEWgBIBFoASARaAEgEXQAeA8gAHgPIAB4DyAAeA8gAHgPIAB4EiABMBIgATASIAEwEiABMBL4AHgHaAA4B2gArAdoAKwHk/4IB2gArA7L/9gQ0AB4DmQAeA5kAHgOZAB4DmQAeBL0AHgS9AB4EvQAeBJgATASYAEwEmABMBCkAHQQpAB0EKQAdBAAAEgQAABIEAAASBAAAEgQHAG4EBwBuBAcAbgRbAEIEWwBCBFsAQgRbAEIEWwBCBFsAQgXmAJQECwB1BAsAdQQD/90EA//dBAP/3QUQ/68EzQADBe0AEQKAABcFawBrBQ3/7QU9AB4ChAAgBRD/rwTWADsEaQA7BKb/7AWJADsCHABJBN4AOwbGADsFiQA7BVcAcwTlADsEoQCpBKkAqATd/9QCHABJBKkAqARjAEgEMAApBGYAJQKEAIQEPABoBFIALgRtAEYEZv/mA8IAbgRO/78ChABlBDwAaARtAEYEPABoBmQAZwRpADsEUQBEBJwAKQIcAEkCHABJBEgABwT9AEQE3gA7BOEAlAUQ/68E1gA7BFEARARpADsFiQBEBsYAOwWJADsFVwBzBYkARATlADsFDQBwBKEAqQTd/9QEOQAxBB0ARQR7ADAEbQBGBFz/1wQQAEYDrP+qA9r/xQQdAEUDQgAuBAEALgHjAC8B7AAvAdv/EwQyADADrP+qBuIAwwXVAIAG4gDDBdUAgAbiAMMF1QCABKkAqAOs/6oBWwCsAnwAyQQAAEQB9f8JAY4AiQbGADsGzgAeBRD/rwQ5ADEEaQA7BYkARAQdAEUEewAwBV4AhQVvAE4E5ACtA+UAhQgZAEYJAwBzBJwAJQPxACAFDQBwBBAARgSpAKgD5ACFAhwASQcL/6sF8v+nAhwASQUQ/68EOQAxBRD/rwQ5ADEHQf+DBo4AEwRpADsEHQBFBV0AUgQYAD8EGAA/Bwv/qwXy/6cEnAAlA/EAIAWJAEQEewAwBYkARAR7ADAFVwBzBG0ARgVIAGcEaQBDBUgAZwRpAEMFPAB2BC0AMgThAJQDrP+qBOEAlAOs/6oE4QCUA6z/qgVQAMsEOQB5BsAARAYQADEEYABHBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQIcAEkB7AAvAhwADQHj//AFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVVAGYEcABDBVUAZgRwAEMFVQBmBHAAQwVVAGYEcABDBVUAZgRwAEMFCABjBEcAWwUIAGMERwBbBWUAYwTNAFsFZQBjBM0AWwVlAGMEzQBbBWUAYwTNAFsFZQBjBM0AWwSpAKgDrP+qBKkAqAOs/6oEqQCoA6z/qgR+AAAEoQCpA7sAYAVQAMsEOQB5BFEARANCAC4GAACIBJoABARGACAE3gAsBN4ALARRABEDQv/nBREAWAQJADoEqQCoA+QAXgTd/9QD2v/FBDAAKQRK/9cGGQCYBFwAGARcADUEXAAFBFwAcgRwAIEEhABUBHAAlASEAH4FSQB0BFwAAwWJADsESQAgBRD/rwQ5ADEEaQA7BB0ARQIc/+AB7P+NBVcAcwRtAEYEyAA7AqEAIAUIAGMERwBbBIb/sQTWADsEXAAfBRgAOwRgAEcFGAA7BGAARwWJADsERgAgBN4AOwPvACAE3gA7A+8AIAQuADsB4//wBsYAOwbOAB4FiQA7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AAD//wAr/+0FcQSNBCYB8wAAAAcB8gHaAAD///+aAAAGAAYABiYChAAAAQcAdQKXAAAAC7YGGQ8BAU1WACs0AP////T/xgSjBh4GJgKGAAABBwB1AYIAHgALtgMwEQEBW1YAKzQA//8AEv38A+sEngYmAekAAAAHAcoA4v6e//8AlAAABikGHgYmAeUAAAEHAEQBpQAeAAu2BBgKAQFrVgArNAD//wCUAAAGKQYeBiYB5QAAAQcAdQIxAB4AC7YEFgoBAWtWACs0AP//AJQAAAYpBeYGJgHlAAABBwBqAXEAHgANtwUEHwoBAYRWACs0NAD//wB1AAAEZQYeBiYB4wAAAAcARACwAB7///+v/k4EiwWwBiYAJQAAAQcApAFmAAAAC7YDDgUBATlWACs0AP//ADH+TgPHBFAGJgBFAAABBwCkALQAAAALtgI7MQAATVYAKzQA//8AO/5YBLEFsAYmACkAAAEHAKQBJwAKAAu2BBACAABDVgArNAD//wBF/k4D2gRRBiYASQAAAQcApAD+AAAAC7YBLAAAAE1WACs0AP///6b+TgPjBI0GJgJDAAAABwCkAQsAAP//AB7+VgPwBI0GJgI4AAAABwCkANcACP////D+qgGfBDoGJgCNAAABBwCtAzYACgAOtAEHAgEBuP9/sFYAKzQAAAAAAA8AugADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAAwAagADAAEECQADABoAdgADAAEECQAEABoAdgADAAEECQAFACYAkAADAAEECQAGABoAtgADAAEECQAHAEAA0AADAAEECQAIAAwBEAADAAEECQAJACYBHAADAAEECQALABQBQgADAAEECQAMABQBQgADAAEECQANAFwBVgADAAEECQAOAFQBsgADAAEECQAZAAwAXgBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAA1ADsAIAAyADAAMgAyAFIAbwBiAG8AdABvAC0ASQB0AGEAbABp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As//8wLR//MC0//zAuH/8wLj//MC5f/zAuf/8wMJ//MDC//zAw3/8wM+//MDm//zA6j/8wPO//MD0f/zA/7/8wQB//MEHP/zBB7/8wQg//MEW//zBF3/8wRf//MEYf/zBGP/8wRl//MEZ//zBGn/8wRr//MEbf/zBG//8wRx//MEsP/zBMn/8wBAAEf/7ABI/+wASf/sAEv/7ABV/+wAlP/sAJn/7AC7/+wAyP/sAMn/7AD3/+wBA//sAR7/7AEi/+wBQv/sAWD/7AFh/+wBa//sArL/7AKz/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS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/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMpAykA4gMrAysA4wMtAy0A5AMvAy8A5QMxAzEA5gMzAzsA5wNAA0kA8ANUA1gA+gNeA2AA/wNlA2UBAgN2A3oBAwN+A4ABCAOJA4kBCwOXA5wBDAOfA64BEgOxA7EBIgO1A7UBIwO3A7cBJAO7A7sBJQO+A78BJgPBA8oBKAPMA84BMgPQA9UBNQPXA90BOwPjA+QBQgPmA+YBRAPoA+gBRQPqA+0BRgPwA/UBSgP3A/cBUAP7A/wBUQQBBAwBUwQPBBABXwQSBBUBYQQcBB0BZQQhBCEBZwQjBCkBaAQvBFcBbwRZBFkBmARbBGgBmQRwBHABpwRzBHMBqAR1BHUBqQSBBIYBqgSIBIgBsASMBI0BsQSQBJABswSSBJMBtASVBJUBtgSXBJcBtwSoBKwBuASuBK4BvQSwBLEBvgSzBLMBwAS3BLkBwQS7BLsBxAS9BL8BxQTBBMEByATDBMMByQTFBMsBygTNBM0B0QTQBNAB0gTSBNcB0wTZBNwB2QTgBOAB3QTjBOMB3gTpBOkB3wTuBO4B4AT5BPkB4QT7BPsB4gUCBQIB4wUGBQYB5AACAXQABgAGAA8ACwALAA8AEAAQABoAEgASABoAJQAlAAIAJgAmACQAJwAnABAAKAAoAAEAKQApAAQALgAuAAgALwAvAA0AMAAwABcAMwAzAAEANAA0ACUAOAA4ABIAOQA5AAgAOgA6ABwAOwA7ABgAPAA8ABEAPQA9AAwAPgA+ABkARQBFAAMARgBGAA4ARwBHABMASQBJAAUATABMAAkAUQBSAAkAUwBTAAYAVABUAA4AVgBWABsAWgBaAAcAXABcABUAXQBdAAcAXgBeAB8AigCKAA4AlgCWAAEAsQCxABYAsgCyAAIAswCzAAEAtAC0AAIAvQC9AAcAwQDBAAkAxwDHAA4A1ADVACAA2gDaABEA3gDeACEA5ADkACAA5gDmACAA7ADsACIA7gDuABUA9wD3AA4A/AD8ACMA/gD+ACMA/wD/AA4BBAEFACMBCgEKACMBDQENAAIBGAEYAAYBGQEZABwBGgEaAAcBLgEuAA4BLwEvABYBMAEwACIBMwEzABEBNAE0ABUBNQE1AA0BNwE3AA0BOQE5AA0BQwFDABEBRAFEABUBWAFYAAEBXAFcACIBXQFdABEBXgFeABUBhAGFAA8BhgGGABoBhwGJAA8BigGKABoBjgGPABoB6AHoAB0B7QHtAAoB8AHwAB4B8QHxABQB+wH7AAsB/AH8AAoB/QH9AAsCDwIPABQCHgIgABQCQAJAAAoCQwJDAAsCVQJVABACVwJYAAECiwKMAAECjgKOABICkAKWAAIClwKXABACmAKbAAQCoQKlAAECpgKpAAgCqgKqAAwCqwKxAAMCsgKyABMCswK2AAUCuwK7AAkCvALAAAYCxQLGAAcCxwLHAAICyALIAAMCyQLJAAICygLKAAMCywLLAAICzALMAAMCzQLNABACzgLOABMCzwLPABAC0ALQABMC0QLRABAC0gLSABMC0wLTABAC1ALUABMC1QLVAAEC1wLXAAQC2ALYAAUC2QLZAAQC2gLaAAUC2wLbAAQC3ALcAAUC3QLdAAQC3gLeAAUC3wLfAAQC4ALgAAUC6gLqAAkC9gL2AAgC+AL4AA0C+gL6ABcC/AL8ABcC/gL+ABcDAAMAABcDAwMDAAkDBQMFAAkDBwMIAAkDCQMJAAEDCgMKAAYDCwMLAAEDDAMMAAYDDQMNAAEDDgMOAAYDEAMQABsDEgMSABsDFAMUABsDHwMfABIDIQMhABIDIwMjABIDJQMlAAgDJwMnAAgDKQMpAAgDKwMrAAgDLQMtAAgDLwMvAAgDMQMxABgDMwMzAAwDNAM0AAcDNQM1AAwDNgM2ABkDNwM3AB8DOAM4ABkDOQM5AB8DOgM6ABkDOwM7AB8DQANBAAoDQgNCAB0DQwNJAAsDVANYAAoDXgNgAAsDZQNlAAoDdgN2ABQDdwN6AB4DfgOAAAoDiQOJAB0DlwOXAAIDmAOYAAQDmwObAAEDnAOcAAwDnwOfAAIDoAOgACQDoQOhAAQDogOiABkDpQOlAA0DqAOoAAEDqQOpACUDqgOqABIDqwOr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AAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAEAAAAAAAAAAIADAAAAAAABAAAAAAAFwAAAAAAAAAAAAAAAgAAAAAADAAQAAAADAABAAAAAwAAAAgAAAAHAAAACQAAAAAACAAHAAgAAAAAAAAAAAAAAAAAIwAAAAAAHwAEAAAAAAAAAAAAAAAAAAIAAAAAAAIADQAQAAYAAQADAAcAAwABAAkAEwABAAMAEQAAAAAAAAADAAkAFgAAABYAAAAWAAAADAAJAA8ADwAAAAAADwAAAAMABAAGAAAAAAABAAMAAAAAABoACQABAAIAAAAAAAIAAQAMAAkAAAAQABMAAAAEAAYABAAGAAAAAAAAAAEAAAABAAEAEAATAAAAAAAAAAMAAAADAAIABwACAAEAAgAHAAAAAAAfAAkAHwAJAB8ACQAgACIAAAADAAEABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAIABwACAAcAAgAHAAIABwACAAcAAgAHAAIABwACAAEAAgABAAIAAQACAAcAAgABAAsACAALAAgAAAAIAAAACAAAAAgAAAAIAAAACAAMAAkADAAJAAwACQAAAA0AAAAgACIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMABAAGAAAAAQAAAAAAAgAHAAAAAAAAAAgAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwACAAAAAAAAAAAAFAARAA0AAAALABoACQAaAAkAFgAAABcAHQAAAAoAAAAAAAAABQASAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAA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BOgB/QH+Af8E7QIAAgAE7gTvAgECAgIDAgoE/AT9AgsCDAINAg4CDwIQBQAFAQUDBQYFDwISAhMCFAIVAhYCFwIYAhkCGgIbAgQCBQIGAgcCCAIJAksCHQIeAh8CIAUJAiECIwIkAiUCJwIpAocDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQOTA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5QDlQOWBREFEgTcBN0E3gTfBOkE7ATqBOsE8ATxBPIE4AThBOIE+wT+BP8FAgUEBQUCEQUHBPME9AT1BPYE9wT4BPkE+gUUBRUFFgUXBQgFCgULAigFDQIqBQ4FDAImAhwCIgUcBR0AAgcAAPoB9wKCAeEB4AHfAd4B3QHcAdsB2gHZAdgCQwJCAkECQAI4AfYB9QH0AfMB8gHxAfAB7wHuAe0B7AHrAeoB6QHoAecB5gHlAeQB4wHiAfgB+QKEAoYChQKHAoMCiAJiAfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAhACEQUPAhICEwIUAhUCFgIXAhgCGQIaAhsCSwIdAh4CHwIgBQkCIQIjAiQCJQImAicCKAIpAisCLAIuAi0DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0BRADdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YFEwOHA4gDigOJA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWBREFEgTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgCDwT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUUBRUFFgUXBQgFCgULBQ0CKgUOBQwCHAIiBRwFHQABAAEBewABAAEASwABAAEAuwABAAEANgABAAEAEwABAAIDGQMaAAIG5AbYAAIG5gbYAAEG7gABBvAAAQbyAAIAAQAUAB0AAAABAAIALwBPAAEAAwBJAEsCegACAAAAAQbeAAEABgLLAswC3QLeA2ADaQABAAYATQBOAvID3wPhBFoAAgADAZQBlAAAAdUB1wABAi8CNQAEAAIAAgCoAKwAAQEkAScAAQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAgACABQAHQAAAmUCbgAKAAIABgBNAE0ABgBOAE4ABALyAvIABQPfA98AAwPhA+EAAgRaBFoAAQACAAQAFAAdAAACdgJ2AAoCgQKBAAsEngSlAAwAAgAGABoAGgAAABwAHAABAloCXwACAmMCYwAIAmUCbgAJAnUCdQATAAEAFAAaABwCWgJbAlwCXQJeAl8CYwJ1AnYCgQSeBJ8EoAShBKIEowSkBKUAAQXeAAEF4AABBeIAAQXkAAEF5gABBegAAQXqAAEF7AABBe4AAQXwAAEF8gABBfQAAQX2AAEF+AABBfoAAgX8BgIAAgYCBggAAgYIBg4AAgYOBhQAAgYUBhoAAgYaBiAAAgYgBiYAAgYmBiwAAgYsBjIAAgYyBjgAAgY4Bj4AAwY+BkQGSgADBkgGTgZUAAMGUgZYBl4AAwZcBmIGaAADBmYGbAZyAAMGcAZ2BnwAAwZ6BoAGhgADBoQGigaQAAQGjgaUBpoGoAAEBpwGogaoBq4ABQaqBrAGtga8BsIABQa8BsIGyAbOBtQABQbOBtQG2gbgBuYABQbgBuYG7AbyBvgABQbyBvgG/gcEBwoABQcEBwoHEAcWBxwABQcWBxwHIgcoBy4ABQcoBy4HNAc6B0AABQc6B0AHRgdMB1IABgdMB1IHWAdeB2QHagAGB2IHaAduB3QHegeAAAYHeAd+B4QHigeQB5YABgeOB5QHmgegB6YHrAAGB6QHqgewB7YHvAfCAAYHugfAB8YHzAfSB9gABgfQB9YH3AfiB+gH7gAHCC4H5gfsB/IH+Af+CAQABwgmB/oIAAgGCAwIEggYAAEA6wAKAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCFAIYAhwCJAIoAiwCNAJAAkgCUALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDqAOsA7ADtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD/AQABAQECAQMBBAEFAQYBBwEwATQBNgE4AToBPAFCAUQBRgFKAU0BWgKNAo8CqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLIAsoCzALOAtAC0gLUAtYC2ALaAtwC3gLgAuIC5ALmAugC6gLsAu4C8ALyAvUC9wL5AvsC/QL/AwEDAwMFAwcDCgMMAw4DEAMSAxQDFgMYAxoDHAMeAyADIgMkAyYDKAMqAywDLgMwAzIDNAM3AzkDOwM9Az8DrwOwA7EDsgO0A7UDtgO3A7gDuQO6A7sDvAO9A9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5QPnA+kD6wQABAIEBAQSBBkEHwQlBI8EkASUBJgFGQUbAAEA+gAIAAoAFAAVABYAFwAYABkAGgAbABwAHQAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZQBnAIEAgwCEAIwAjwCRAJMAsQCyALMAtAC1ALYAtwC4ALkAugDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgA6QEvATMBNQE3ATkBOwFBAUMBRQFJAUsBTAFYAVkBpwGtAbIBtQKLAowCjgKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgLHAskCywLNAs8C0QLTAtUC1wLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvMC9AL2AvgC+gL8Av4DAAMCAwQDBgMJAwsDDQMPAxEDEwMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzUDNgM4AzoDPAM+A5cDmAOZA5oDmwOcA50DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA+QD5gPoA+oD/wQBBAMEGAQeBCQEjgSTBJcFGAUaAcwAAgBNAc0AAgBQAc4AAwBKAE0BzwADAEoAUAABAAEASgHLAAIASgHRAAIAWAHQAAIAWAABAAMASgBXAJUAAAABAAEAAQABAAAAAwS3AAIArQLNAAIAqQS9AAIArQTKAAIAqQS4AAIArQLOAAIAqQSnAAIAqQS+AAIArQRaAAIArQTLAAIAqQM8AAIAqQM+AAIAqQM9AAIAqQM/AAIAqQS2AAIAqQS7AAIBygS5AAIArQSmAAIAqQLnAAIBygPxAAIAqQTFAAIArQMfAAIBygTQAAIArQTVAAIArQTTAAIAqgM2AAIAqQTZAAIArQS8AAIBygS6AAIArQPyAAIAqQTGAAIArQMgAAIBygTRAAIArQTWAAIArQTUAAIAqgM3AAIAqQTaAAIArQS/AAIAqQL4AAIBygTBAAIArQL6AAIAqQL8AAIBygTDAAIArQMVAAIAqQMbAAIBygTOAAIArQPmAAIAqQTXAAIArQPkAAIAqATAAAIAqQL5AAIBygTCAAIArQL7AAIAqQL9AAIBygTEAAIArQMWAAIAqQMcAAIBygTPAAIArQPnAAIAqQTYAAIArQPlAAIAqAMPAAIAqQMRAAIBygTMAAIArQSyAAIArAMQAAIAqQMSAAIBygTNAAIArQSzAAIArAMCAAIAqQMEAAIBygTHAAIArQSoAAIAqAKgAAIAqgKqAAIAqQSBAAIArQPqAAIAqASDAAIAqwSFAAIAqgMDAAIAqQMFAAIBygTIAAIArQSpAAIAqAK7AAIAqgLFAAIAqQSCAAIArQPrAAIAqASEAAIAqwSGAAIAqgK4AAIAqQK3AAIAqARYAAIAqwLsAAIAqgSvAAIArARpAAIAqQRxAAIArQRrAAIAqARtAAIAqwRvAAIAqgRqAAIAqQRyAAIArQRsAAIAqARuAAIAqwRwAAIAqgR3AAIAqQR/AAIArQR5AAIAqAR7AAIAqwR9AAIAqgR4AAIAqQSAAAIArQR6AAIAqAR8AAIAqwR+AAIAqgKRAAIAqQQvAAIArQKQAAIAqAQxAAIAqwKTAAIAqgSqAAIArAKZAAIAqQRHAAIArQKYAAIAqARJAAIAqwRLAAIAqgSsAAIArAKdAAIAqQRZAAIArQKcAAIAqARXAAIAqwLrAAIAqgSuAAIArAKsAAIAqQQwAAIArQKrAAIAqAQyAAIAqwKuAAIAqgSrAAIArAK0AAIAqQRIAAIArQKzAAIAqARKAAIAqwRMAAIAqgStAAIArAK9AAIAqQRcAAIArQK8AAIAqAReAAIAqwK/AAIAqgSxAAIArALCAAIAqQR0AAIArQLBAAIAqAR2AAIAqwMmAAIAqgS1AAIArAKiAAIAqQRbAAIArQKhAAIAqARdAAIAqwKkAAIAqgSwAAIArAKnAAIAqQRzAAIArQKmAAIAqAR1AAIAqwMlAAIAqgS0AAIArATJAAMAqgCpBNIAAwCqAKkAAgARACUAKQAAACsALQAFAC8ANAAIADYAOwAOAD0APgAUAEUASQAWAEsATQAbAE8AVAAeAFYAWwAkAF0AXgAqAIEAgQAsAIMAgwAtAIYAhgAuAIkAiQAvAI0AjQAwAJgAmwAxANAA0AA1AAA=",
85456
  "Roboto-Medium.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb9IAAACWEdQT1Pk1zcKAAHBoAAAZixHU1VChRYO9AACJ8wAABX2T1MvMpfnsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG/PAAAAAxnbHlmoVpeAgAAOpAAAYGiaGVhZAatHSkAAAEcAAAANmhoZWEK9grYAAABVAAAACRobXR4JpFVzgAAAfgAABR8bG9jYSpiho0AADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lQlx1PgABvDQAAALmcG9zdP9tAGQAAb8cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSOm9QH9fDzz1ABkIAAAAAADE8BEuAAAAAN8Gv236Jv3VCWEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJbvom/j4JYQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAf0AAAH9AAACHgCMAo4AYATTAFYEjABkBeQAZAUhAFUBVwBSAsUAgQLMACcDjAAcBHEAQgHKACICuABQAjkAhgMfAAEEjABoBIwAqgSMAFIEjABOBIwANwSMAH8EjABzBIwARASMAGcEjABdAhwAfwHrADMEEgA+BIAAjwQoAH4D5AA7By0AWwVOABEFDQCUBTkAZgU5AJQEhQCUBGgAlAVzAGsFrQCUAkQApQRyAC8FDgCUBFIAlAb/AJQFrQCUBYMAZQUbAJQFgwBgBQkAlATYAEsE4AAtBTwAgAUqABEHCwAvBQ0AJgTjAAgE0wBQAiwAhQNVABICLAALA24ANgOVAAICkAA4BFAAVgR/AH0ELQBOBIIAUARJAFEC0wArBIkAUgRyAHoCCgB8AgL/qwQsAH0CCgCMBvgAfAR0AHoEigBOBH8AfQSHAFAC1AB9BB4ASQKqAAoEcwB3A/gAFgXwACMEBgAfA+sADAQGAFECqwA4Af0ArwKrABwFTQB1Ah8AhQSCAGcEtQBfBZ4AXARAAA0B+ACJBPkAXAOSAGMGSQBaA5AAjgPjAFcEawB/BkoAWQPaAJ0DDwCBBEoAXAL1AD0C9QA3ApQAbwTBAJMD6gBJAkQAkAITAGwC9QCCA6cAeQPjAF4FygBfBiIAUwZcAGYD5QBGB37//ARCAEwFgQBpBM8AlQTrAIoGwgBIBKQAaASRAEMEhgBOBJEAgQTsAFAFsAAfAhcAkASaAI0EZAAgAlIAIAWXAJAEhgB9B7AAZQc+AFkCBwCJBY0AVQLQ/94FkQBbBJ0ATQWjAIAE5gB3AiX/rgQ5AFcD3gCQA6oAbgPaAJ0DfgB1AgoAgQKqAHgCTAApA84AdwMoAEsCcwCJAAD8kwAA/WIAAPx0AAD9OgAA/AgAAP0eAmsAzQQ7AG4CRACQBHQAmQXCABoFegBcBTUAIASMAGoFrgCZBIwARwX5AEwFsQBGBVkAbASEAFYEyACXBA0AHgSGAFEEZQBiBA8AWQSGAH0EpwB2AqUAowRoABUEGgBnBPwAMASGAIAEMwBQBI4AUAQqADwEXQB/BdEARgXMAFIGlABlBLQAeASH/+EGeQArBf0AJAVTAGcIgQAtCIwAmQZRAC0FpQCPBQcAkAX9ACYHqQAVBNsASQWmAJIFqAAsBQsAMgZfAE4F+ACOBYUAkQeaAJUH+gCVBiEAFQbwAJkFAgCQBUgAYwdiAKEE6AAXBIAAWgSLAI8DWwCDBPIAJwaHACAEFwBOBJIAhARsAI8ElAAgBgIAjwSRAIQEkgCEA/oAIwXUAFMEzwCEBGUAYAaNAIQG8QB9BSEAIAZvAI8EaQCPBDkAUAaCAJIEcAAuBHL/1wQ5AFIG1gAdBuQAhASG/+gEkgCEB1gAiAZqAHIEaP/hBygAmAYCAIYFFgAaBGMACwdLAKwGPQCaBuUAfgXdAIEJKgClB+4AkAQgACgD9QAyBXoAYASIAE0FGAAQBA0AHgV6AGAEhgBOB1QAiAZWAHUHWACIBmoAcgUQAGcERwBdBPsAcAAA/HAAAPx1AAD9gQAA/aYAAPomAAD6UQYgAJIFEwCEBGj/4QUQAJQEhgB9BGsAjwOjAH0E6gCZBCQAfQgjABUG4AAgBckAmQT7AI8FLgCRBKwAjQaUADQFoAA8BiAAlAUHAIQH3QCUBa0AfQhJAJcG7wB9BjcAZwUEAGAFOQAmBEEAHwcoACkFbwAnBfIAkQTcAGAFcACBBHQAdQWFAIkGGwAKBMT/ywUgAJEEeACNBh8ALAUUACAFrQCZBIYAfQYqAJQFEQCEB3UAlAZ0AI8FjQBVBKMAWwSkAF0EwwAsA6oAJAVpACYEcQAfBPkATwbzAGgG2wBfBlEAPQUoAC8EgwBKBEgAcwe8AEIGpAA/B/UAlAaeAHQFBgBcBC8AVQWoACEFHQBEBU4AfQZGACwFOwAgAxsAZAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACtwBQArcAUAUjAJwGKgB7A5oACAG/AGUBugA3Ac4ANQGjAEsDCwBtAxMAQwMAADUEWwA/BJoAXQLMAIoD/QCNBaoAjQHPAF4HrgBQAnQAbAJpAFUDmQArAvUATAL1ADYC9QBQAvUATgL1ADcC9QBLAvUARwNcAGcC9QBMAvUAggL1AD0C9QA3AvUANgL1AFAC9QBOAvUANwL1AEsC9QBHBLUAYgZuACMGvwCZCJUAlAY7ACMGmwB9BIwAXAXqACMELQAqBJsAJAViAE8FfgArBeQAbgPjAEUIKQCQBQgAbwUUAJYGNwBcBt4AVgbQAF4GrABcBJMAYQWKAKYE3gA/BIAAnASdADsIUgBhAjL/pwSRAGUEgACPBBIAPQQoAH0EDgAlAlEAnAKOAGQB6QBHBRkAKwStABoEvQArBygAKwcoACsFDwArBrcASQAAAAAIMABZCDUAXAL1AD0C9QCCAvUATAQdAE8EHQBXBB0AOAQdAF8EHQBmBB0AMwQdAD0EHQBDBB0AmAQdAFgEKwBBBD4ABgRcABMGCQAnBHkACASIAGkEPwAlBDcAPwRkAHUEvQBNBGsAdgS9AE4E3AB2BgUAdgO3AHYEXgB2A9YAJgH+AIYE3QB2BKcAVgPIAHYENwA/BGgAOgOlAAoDvAB2BHkACAS9AE4EeQAIA50ARgTZAHYEHgBEBaYATwVYAE8E4ABeBZIAIwSAAE8HVgAkB1gAdgWZACUE2AB2BHIAdgVeACcGRQAbBEYAQwTiAHYEXQB2BMsAJARMAB8FYgB2BI0AQwaEAHYHDgB2BWEACQYWAHYEZwB2BIAAPQaPAHYEhABCBCgACwajABsEoAB2BQ0AdgV0ACEF+ABOBFYABgTEABMGlwAjBI0AQwSNAHYGAAAOBM4ATQRHAEMEvQBOBGgAOgP0AEUILQB2BPQAKAL1ADcC9QA2AvUAUAL1AE4C9QA3AvUASwL1AEcDtgCNAq4AmAPgAHYEOgAMBLYAVgVBAJkFKACZBDAAgQU1AJkEKACBBHoAdgSAAE8EYAB2BJoACAH+AJADoQB1AAD8ngP3AHoD+v9RBAsAeQP6AHkDvAB2A50AdQOdAHUC9QBMAvUANgL1AFAC9QBOAvUANwL1AEsC9QBHBXMAaQWeAGkFfwCZBdkAaQXaAGkEKACWBIIAawRYAA8EuwA0BGsAZwQuAEIDoQB2AboAYgaYAE4ErwBuAgz/pwSMADgEjABoBIwALASMAGIEjABfBIwANASMAGwEjABZBIwAZwSMAOYCJv+uAiX/rgIXAJACF//6AhcAkARgAHYE5gBgBDAAOQSIAH0EPgBPBJUATgSRAE4EnQBJBJIAfQSaAE4ESQBRBIkAUARZADQDrQBhBQwAXwPEAAUGRv/sBAcAdgS9AE4FDgA0BNwAdgH9AAACuABQBVcAFwVXABcEkP/1BOAALQKq/+sFTgARBU4AEQVOABEFTgARBU4AEQVOABEFTgARBTkAZgSFAJQEhQCUBIUAlASFAJQCRP/LAkQApQJE/8oCRP++Ba0AlAWDAGUFgwBlBYMAZQWDAGUFgwBlBTwAgAU8AIAFPACABTwAgATjAAgEUABWBFAAVgRQAFYEUABWBFAAVgRQAFYEUABWBC0ATgRJAFEESQBRBEkAUQRJAFECF/+1AhcAkAIX/7MCF/+oBHQAegSKAE4EigBOBIoATgSKAE4EigBOBHMAdwRzAHcEcwB3BHMAdwPrAAwD6wAMBU4AEQRQAFYFTgARBFAAVgVOABEEUABWBTkAZgQtAE4FOQBmBC0ATgU5AGYELQBOBTkAZgQtAE4FOQCUBRgAUASFAJQESQBRBIUAlARJAFEEhQCUBEkAUQSFAJQESQBRBIUAlARJAFEFcwBrBIkAUgVzAGsEiQBSBXMAawSJAFIFcwBrBIkAUgWtAJQEcgB6AkT/tAIX/50CRP/RAhf/uwJE/90CF//GAkQAGAIK//8CRACfBrUApQQLAHwEcgAvAiX/rgUOAJQELAB9BFIAlAIKAIwEUgCUAgoAWQRSAJQCoACMBFIAlALmAIwFrQCUBHQAegWtAJQEdAB6Ba0AlAR0AHoEdP+jBYMAZQSKAE4FgwBlBIoATgWDAGUEigBOBQkAlALUAH0FCQCUAtQAUgUJAJQC1AA3BNgASwQeAEkE2ABLBB4ASQTYAEsEHgBJBNgASwQeAEkE2ABLBB4ASQTgAC0CqgAKBOAALQKqAAoE4AAtAtIACgU8AIAEcwB3BTwAgARzAHcFPACABHMAdwU8AIAEcwB3BTwAgARzAHcFPACABHMAdwcLAC8F8AAjBOMACAPrAAwE4wAIBNMAUAQGAFEE0wBQBAYAUQTTAFAEBgBRB37//AbCAEgFgQBpBIYATgR6/6UEev+lBD8AJQSaAAgEmgAIBJoACASaAAgEmgAIBJoACASaAAgEgABPA+AAdgPgAHYD4AB2A+AAdgH+/6kB/gCGAf7/pwH+/5wE3AB2BL0ATgS9AE4EvQBOBL0ATgS9AE4EiABpBIgAaQSIAGkEiABpBD4ABgSaAAgEmgAIBJoACASAAE8EgABPBIAATwSAAE8EegBhA+AAdgPgAHYD4AB2A+AAdgPgAHYEpwBWBKcAVgSnAFYEpwBWBN0AdgH+/5EB/v+vAf7/ugH+ABcB/gB9A9YAJgReAHYDtwB2A7cAdgO3AHYDtwB2BNwAdgTcAHYE3AB2BL0ATgS9AE4EvQBOBGQAdQRkAHUEZAB1BDcAPwQ3AD8ENwA/BDcAPwQ/ACUEPwAlBD8AJQSIAGkEiABpBIgAaQSIAGkEiABpBIgAaQYJACcEPgAGBD4ABgQrAEEEKwBBBCsAQQVOABEE6f9CBhH/SgKo/04Fl/+0BUf/QQVt/8ICpf+FBU4AEQUNAJQEhQCUBNMAUAWtAJQCRAClBQ4AlAb/AJQFrQCUBYMAZQUbAJQE4AAtBOMACAUNACYCRP++BOMACASEAFYEZQBiBIYAfQKlAKMEXQB/BJoAjQSKAE4EwQCTA/gAFgRZADQCpf/DBF0AfwSKAE4EXQB/BpQAZQSFAJQEdACZBNgASwJEAKUCRP++BHIALwUoAJkFDgCUBQsAMgVOABEFDQCUBHQAmQSFAJQFpgCSBv8AlAWtAJQFgwBlBa4AmQUbAJQFOQBmBOAALQUNACYEUABWBEkAUQSSAIQEigBOBH8AfQQtAE4D6wAMBAYAHwRJAFEDWwCDBB4ASQIKAHwCF/+oAgL/qwRsAI8D6wAMBwsALwXwACMHCwAv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FgoBAWtWACs0AP//ACcAAAXlBesGJgHlAAABBwBqATsAHgANtwUEHwoBAYRWACs0NAD//wAGAAAEOAYeBiYB4wAAAAcARACKAB7//wAR/lcFPwWwBiYAJQAAAQcApAGAAAMAC7YDDgUBATlWACs0AP//AFb+XAP5BE4GJgBFAAABBwCkALQACAALtgI7MQAATVYAKzQA//8AlP5eBE0FsAYmACkAAAEHAKQBQgAKAAu2BBACAABDVgArNAD//wBR/lQECgROBiYASQAAAQcApAEFAAAAC7YBLAAAAE1WACs0AP//AAj+VASRBI0GJgJDAAAABwCkASIAAP//AHb+XAO2BI0GJgI4AAAABwCkAPEACP//AHj+oQGLBDoGJgCNAAABBwCtA1oACgAOtAEHAgEBuP9/sFYAKzQAAAAAABEA0gADAAEECQAAAF4AAAADAAEECQABABoAXgADAAEECQACAA4AeAADAAEECQADABoAXgADAAEECQAEABoAXgADAAEECQAFACYAhgADAAEECQAGABoArAADAAEECQAHAEAAxgADAAEECQAIAAwBBgADAAEECQAJACYBEgADAAEECQALABQBOAADAAEECQAMABQBOAADAAEECQANAFwBTAADAAEECQAOAFQBqAADAAEECQAQAAwB/AADAAEECQARAAwCCAADAAEECQAZAAwB/ABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AIABNAGUAZABpAHUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAzAC4AMAAwADUAOwAgADIAMAAyADIAUgBvAGIAbwB0AG8ALQBNAGUAZABpAHUAbQBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUAQwBoAHIAaQBzAHQAaQBhAG4AIABSAG8AYgBlAHIAdABzAG8AbgBHAG8AbwBnAGwAZQAuAGMAbwBtAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAUgBvAGIAbwB0AG8ATQBlAGQAaQB1AG0AAAADAAAAAAAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAcsB0QACAeIB9gABAfoB+gABAgMCAwABAgUCBQABAgwCDgABAhACEQABAhMCEwABAhcCFwABAhkCGwABAiECIQABAiYCKAABAioCKgABAjgCOAABAjsCOwABAj0CPQABAkACQwABAm8CcwABAoMCiAABAosC8wABAvYDtQABA7cDtwABA7kDwwABA8UDzgABA9AD6wABA+8D7wABA/ED+AABA/oD/AABA/8EAwABBAUEkAABBJMElAABBJYElwABBJkEnAABBKYFAgABBQQFDgABBREFHgABAAEAAwAAABAAAAAWAAAAIAABAAEArQACAAEAqACsAAAAAgACAKgArAAAASQBJwAFAAEAAAAeABAACgACAC4ANgACY3BzcAA6a2VybgBAAARERkxUADhjeXJsADhncmVrADhsYXRuADgAAQAAAAEAIgACAAgAAgAuBBAAAAABAAAAAAABAAEADgAAAAEPAgAFACQASAAA//8AAgAAAAEAAUuMAAQAAAHsE9wRBBEEF7QQ5hdaEVQRkhJkEXZH7hKkEqQVxBG2EqQSpBJkEsYgkBlQH8YRpBHMFwAY3hHiFO4SghIsEUAp5BEiJsIRXhFeEw4SLBGEGHgSRhH4EQoSRhU0EiwSZBnGHwAXWhJkF1olxCfEIwodmBDsEkYRLD54EV438iTSKMYSEhDyEPhBYhD+FHYUChpIOeQtpjRCLFgSpDDqPBYXACFeEqQSpBV6EqQSpBKkMpQa0hKkE7IeOhx0GBYj7B0GEUoiNBEKEzQ2GERgEiwUsCsaG1wS6BIsG+YTXhaqFEAS6BdaEw4RpBJGE4gSLB8AEUoXABEKFcQVxBXEEqQXABEKEqQSpBJkEUoXABEKEQQvSBEEEQQRBBEcFg4WXBEWETYREBEWERARaBEQEZISZBJkEmQSZB/GF1oXWhdaF1oXWhdaF1oRkhF2EXYRdhF2EqQSpBKkEqQSpBJkEmQSZBJkEmQY3hKCEoISghKCEoISghKCEUARQBFAEUARXhMOEw4TDhMOEw4SRhJGF1oSghdaEoIXWhKCEZIRkhGSEZISZBF2EUARdhFAEXYRQBF2EUARdhFAEqQRXhKkEqQSpBKkEqQVxBG2EbYRthG2EqQRXhKkEV4SpBFeEV4SZBMOEmQTDhJkEw4RhBGEEYQfxh/GH8YRzBjeEkYY3hHiEeIR4hEWERYRHBEQERAREBEQERAREBEQERYRFhEWERYRFhEQERAREBEWETYRNhE2ETYRFhEWERYRHBdaEXYSpBKkEmQY3hdaEVQRdhHiEqQSpBXEEqQSpBJkEsYfxhjeFwASpBjeEV4TDhJGEw4Rdh8AEqQSpBXEFcQVehdaEVQfABF2EqQSpBJkEsYRkh/GFwASghFAEw4SLBJGEQoRQBFKEkYRzBHMEcwY3hJGEQQRBBEEEqQRXhdaEoIRdhFAEaQSRhGSGN4SRhKkFwARChKkF1oSghdaEoIRdhFAEUARQBcAEQoSZBMOEw4SLBV6EkYVehJGFXoSRhdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghF2EUARdhFAEXYRQBF2EUARdhFAEXYRQBF2EUARdhFAEqQSpBJkEw4SZBMOEmQTDhJkEw4SZBMOEmQTDhJkEw4TDhje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BGX/8wRn//MEaf/zBGv/8wRt//MEb//zBHH/8wSw//MEyf/zAEAAR//sAEj/7ABJ/+wAS//sAFX/7ACU/+wAmf/sALv/7ADI/+wAyf/sAPf/7AED/+wBHv/sASL/7AFC/+wBYP/sAWH/7AFr/+wCsv/sArP/7AK0/+wCtf/sArb/7ALO/+wC0P/sAtL/7ALU/+wC1v/sAtj/7ALa/+wC3P/sAt7/7ALg/+wC4v/sAuT/7ALm/+wC6P/sA6//7APV/+wD2f/sA9z/7AP3/+wD/f/sBAL/7AQQ/+wEEv/sBBP/7AQf/+wELv/sBEj/7ARK/+wETP/sBE7/7ARQ/+wEUv/sBFT/7ARW/+wEav/sBGz/7ARu/+wEcv/sBK3/7AS6/+wEvP/sAEAAJ//mACv/5gAz/+YANf/mAIP/5gCT/+YAmP/mALP/5gC4/8IAxAAQANP/5gEI/+YBF//mARv/5gEd/+YBH//mASH/5gFB/+YBav/mAlX/5gJW/+YCWP/mAln/5gKX/+YCof/mAqL/5gKj/+YCpP/mAqX/5gLN/+YCz//mAtH/5gLT/+YC4f/mAuP/5gLl/+YC5//mAwn/5gML/+YDDf/mAz7/5gOb/+YDqP/mA87/5gPR/+YD/v/mBAH/5gQc/+YEHv/mBCD/5gRb/+YEXf/mBF//5gRh/+YEY//mBGX/5gRn/+YEaf/mBGv/5gRt/+YEb//mBHH/5gSw/+YEyf/mAEcAEAAEABIABABH/+cASP/nAEn/5wBL/+cAVf/nAJT/5wCZ/+cAu//nAMQADwDI/+cAyf/nAPf/5wED/+cBHv/nASL/5wFC/+cBYP/nAWH/5wFr/+cBhgAEAYoABAGOAAQBjwAEArL/5wKz/+cCtP/nArX/5wK2/+cCzv/nAtD/5wLS/+cC1P/nAtb/5wLY/+cC2v/nAtz/5wLe/+cC4P/nAuL/5wLk/+cC5v/nAuj/5wOv/+cD1f/nA9n/5wPc/+cD9//nA/3/5wQC/+cEEP/nBBL/5wQT/+cEH//nBC7/5wRI/+cESv/nBEz/5wRO/+cEUP/nBFL/5wRU/+cEVv/nBGr/5wRs/+cEbv/nBHL/5wSt/+cEuv/nBLz/5wBNAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCU/+gAmf/oALv/6ADI/+gAyf/oAPf/6AED/+gBHv/oASL/6AFC/+gBYP/oAWH/6AFr/+gBhAAQAYUAEAGHABABiAAQAYkAEAKy/+gCs//oArT/6AK1/+gCtv/oAs7/6ALQ/+gC0v/oAtT/6ALW/+gC2P/oAtr/6ALc/+gC3v/oAuD/6ALi/+gC5P/oAub/6ALo/+gDr//oA9X/6APZ/+gD3P/oA+wAEAPtABAD8AAQA/f/6AP9/+gEAv/oBBD/6AQS/+gEE//oBB//6AQu/+gESP/oBEr/6ARM/+gETv/oBFD/6ARS/+gEVP/oBFb/6ARq/+gEbP/oBG7/6ARy/+gErf/oBLr/6AS8/+gATwBHAAEASAABAEkAAQBLAAEAVQABAJQAAQCZAAEAuwABAMgAAQDJAAEA7QArAPIAFAD2/+MA9wABAPn/8AD8/+YA/v/1AQMAAQEEABQBHgABASIAAQE6/9MBQgABAUj/8AFK/98BUQAUAWAAAQFhAAEBawABAW3/4wFwABQCsgABArMAAQK0AAECtQABArYAAQLOAAEC0AABAtIAAQLUAAEC1gABAtgAAQLaAAEC3AABAt4AAQLgAAEC4gABAuQAAQLmAAEC6AABA68AAQPVAAED2QABA9wAAQP3AAED/QABBAIAAQQQAAEEEgABBBMAAQQfAAEEK//wBC4AAQRIAAEESgABBEwAAQROAAEEUAABBFIAAQRUAAEEVgABBGoAAQRsAAEEbgABBHIAAQSL//AErQABBLoAAQS8AAEAUwA4/74AUf/1AFL/9QBU//UAWv/vAF3/7wC9/+8Awf/1ANL/vgDW/74A5v/JAOz/9QDw//UA8f/1APP/9QD0//UA9f/1APb/3wD4//UA+v/1APv/9QD+//UBAP/1AQX/9QEJ/+0BGv/vASD/6wEr//UBNv/1ATn/vgE6/98BPP/1AT7/9QFF/74BTP/pAVP/9QFV//UBV//1AVz/9QFj//UBbf/gArv/9QLF/+8Cxv/vAwP/9QMF//UDB//1Awj/9QMf/74DIf++AyP/vgM0/+8Dsf/1A7f/7wPS/74D1v/1A9j/9QPa/+8D3f/1A+L/9QPj/+8D6//vA/L/9QP4//UD/P/vBAT/7wQZ//UEG//1BCX/7wQn/+8EKf/vBC3/9QSC/+8EhP/vBIb/7wSI/74Ejf/1BKn/9QTG//UEyP/1BND/vgTU/+8E1v/vAGgAOP8zADr/yAA8//AAPf+sAFH/7wBS/+8AVP/vAMH/7wDS/zMA1P/1ANb/MwDa//AA3f/1AN7/6wDh/+YA5v/CAOz/7wDw/+8A8f/vAPP/7wD0/+8A9f/vAPb/zgD4/+8A+v/vAPv/7wD+/+8BAP/vAQX/7wEZ/8gBK//vATP/8AE2/+8BOf8zATr/zQE8/+8BPv/vAUP/8AFF/zMBR//mAUn/5gFM/98BUP/1AVP/7wFV/+8BV//vAVz/7wFd//ABYv/QAWT/6wFm//UBbP+fAW3/0AFv//UCqv+sArv/7wMD/+8DBf/vAwf/7wMI/+8DH/8zAyH/MwMj/zMDM/+sAzX/rAOc/6wDq/+sA6z/8AOu/6wDsf/vA8b/6wPS/zMD0//wA9b/7wPY/+8D3f/vA+L/7wPq/6wD8v/vA/j/7wP7/8gEA/+sBAb/8AQU//AEGf/vBBv/7wQk/+sEJv/rBCj/6wQq/+YELf/vBIH/rASD/6wEhf+sBIj/MwSK/+YEjf/vBJf/rASp/+8Exv/vBMj/7wTQ/zME0//IBNX/yABoAEf/tABI/7QASf+0AEv/tABMABQATwAUAFAAFABT/3oAVf+0AFf/ZABbAAsAlP+0AJn/tAC7/7QAyP+0AMn/tAD3/7QBA/+0ARj/egEe/7QBIv+0AUL/tAFg/7QBYf+0AWv/tAHR/2QCsv+0ArP/tAK0/7QCtf+0Arb/tAK8/3oCvf96Ar7/egK//3oCwP96As7/tALQ/7QC0v+0AtT/tALW/7QC2P+0Atr/tALc/7QC3v+0AuD/tALi/7QC5P+0Aub/tALo/7QDCv96Awz/egMO/3oDFv9kAxj/ZAMa/2QDHP9kAx7/ZAOv/7QDtf96A7v/egPV/7QD1/96A9n/tAPc/7QD3v9kA/f/tAP9/7QEAv+0BBD/tAQS/7QEE/+0BB3/egQf/7QEIf96BC7/tARI/7QESv+0BEz/tARO/7QEUP+0BFL/tARU/7QEVv+0BFz/egRe/3oEYP96BGL/egRk/3oEZv96BGj/egRq/7QEbP+0BG7/tARw/3oEcv+0BK3/tASx/3oEuv+0BLz/tAS+ABQEwAAUBMIAFATP/2QAagA4/+YAOv/nADz/8gA9/+cAUf/xAFL/8QBU//EAXP/xAMH/8QDS/+YA1v/mANr/8gDe/+4A4f/oAOb/5gDs//EA7v/xAPD/8QDx//EA8//xAPT/8QD1//EA9v/QAPj/8QD6//EA+//xAP7/8QEA//EBBf/xARn/5wEr//EBM//yATT/8QE2//EBOf/mATr/zgE8//EBPv/xAUP/8gFE//EBRf/mAUf/6AFJ/+gBU//xAVX/8QFX//EBXP/xAV3/8gFe//EBYv/nAWT/7QFs/+YBbf/QAqr/5wK7//EDA//xAwX/8QMH//EDCP/xAx//5gMh/+YDI//mAzP/5wM1/+cDnP/nA6v/5wOs//IDrv/nA7H/8QPG/+4D0v/mA9P/8gPW//ED2P/xA9v/8QPd//ED4v/xA+r/5wPy//ED+P/xA/v/5wQD/+cEBv/yBAf/8QQU//IEFf/xBBn/8QQb//EEJP/uBCb/7gQo/+4EKv/oBC3/8QSB/+cEg//nBIX/5wSI/+YEiv/oBI3/8QSX/+cEqf/xBMb/8QTI//EE0P/mBNP/5wTV/+cAawAlAA8AOP/mADr/5gA8AA4APf/mALIADwC0AA8A0v/mANQADgDW/+YA2QATANoADgDdAA4A3gALAOH/5QDm/+YA5//0AO0AEgDyAA8A9v/nAPn/6AD+//cBBAAPAQ0ADwEZ/+YBMwAOATn/5gE6/+cBQwAOAUX/5gFH/+UBSP/oAUn/5QFK/+gBTP/kAVAADgFRAA8BXQAOAWL/5gFk/+YBZgAOAWz/5gFt/+cBbwAOAXAADwKQAA8CkQAPApIADwKTAA8ClAAPApUADwKWAA8Cqv/mAscADwLJAA8CywAPAx//5gMh/+YDI//mAzP/5gM1/+YDlwAPA5z/5gOfAA8Dq//mA6wADgOu/+YDxgALA8cADwPS/+YD0wAOA+r/5gPzAA8D+//mBAP/5gQGAA4ECQAPBAsADwQUAA4EJAALBCYACwQoAAsEKv/lBCv/6AQvAA8EMQAPBDMADwQ1AA8ENwAPBDkADwQ7AA8EPQAPBD8ADwRBAA8EQwAPBEUADwSB/+YEg//mBIX/5gSI/+YEiv/lBIv/6ASX/+YEqgAPBND/5gTT/+YE1f/mAHUABv+6AAv/ugA4/zMAOv/HADz/8QA9/6sAUf/uAFL/7gBU/+4AXP/XAMH/7gDS/zMA1v8zANr/8QDe/+sA4f/lAOb/wwDs/+4A7v/XAPD/7gDx/+4A8//uAPT/7gD1/+4A9v/MAPj/7gD6/+4A+//uAP7/7gEA/+4BBf/uARn/xwEr/+4BM//xATT/1wE2/+4BOf8zATr/yQE8/+4BPv/uAUP/8QFE/9cBRf8zAUf/5QFJ/+UBTP/fAVP/7gFV/+4BV//uAVz/7gFd//EBXv/XAWL/0AFk/+sBbP+gAW3/zQGE/7oBhf+6AYf/ugGI/7oBif+6Aqr/qwK7/+4DA//uAwX/7gMH/+4DCP/uAx//MwMh/zMDI/8zAzP/qwM1/6sDnP+rA6v/qwOs//EDrv+rA7H/7gPG/+sD0v8zA9P/8QPW/+4D2P/uA9v/1wPd/+4D4v/uA+r/qwPs/7oD7f+6A/D/ugPy/+4D+P/uA/v/xwQD/6sEBv/xBAf/1wQU//EEFf/XBBn/7gQb/+4EJP/rBCb/6wQo/+sEKv/lBC3/7gSB/6sEg/+rBIX/qwSI/zMEiv/lBI3/7gSX/6sEqf/uBMb/7gTI/+4E0P8zBNP/xwTV/8cAdgBH//AASP/wAEn/8ABL//AAU//eAFX/8ACU//AAmf/wALv/8ADI//AAyf/wAPf/8AED//ABGP/eARz/6wEe//ABIv/wAUL/8AFg//ABYf/wAWv/8AHr/+sB7f/rAfX/6QH8/+sCBf/rAiH/6wIq/+sCQf/rArL/8AKz//ACtP/wArX/8AK2//ACvP/eAr3/3gK+/94Cv//eAsD/3gLO//AC0P/wAtL/8ALU//AC1v/wAtj/8ALa//AC3P/wAt7/8ALg//AC4v/wAuT/8ALm//AC6P/wAwr/3gMM/94DDv/eA0r/6wNU/+sDVf/rA1b/6wNX/+sDWP/rA2H/6wNi/+sDY//rA2T/6wNr/+sDbP/rA23/6wNu/+sDfv/rA3//6wOA/+sDr//wA7X/3gO7/94D1f/wA9f/3gPZ//AD3P/wA/f/8AP9//AEAv/wBBD/8AQS//AEE//wBB3/3gQf//AEIf/eBC7/8ARI//AESv/wBEz/8ARO//AEUP/wBFL/8ARU//AEVv/wBFz/3gRe/94EYP/eBGL/3gRk/94EZv/eBGj/3gRq//AEbP/wBG7/8ARw/94Ecv/wBK3/8ASx/94Euv/wBLz/8ATg/+sFAv/rBQX/6wUK/+sAfAAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAlP/wAJn/8ACb/+8Au//wAL3/3ADC/+wAxAAPAMb/6gDI//AAyf/wAMr/yADL/+8AzP/nAPf/8AED//ABGv/cAR7/8AEi//ABQv/wAWD/8AFh//ABa//wAYT/2gGF/9oBh//aAYj/2gGJ/9oCsv/wArP/8AK0//ACtf/wArb/8ALB/+8Cwv/vAsP/7wLE/+8Cxf/cAsb/3ALO//AC0P/wAtL/8ALU//AC1v/wAtj/8ALa//AC3P/wAt7/8ALg//AC4v/wAuT/8ALm//AC6P/wAyb/7wMo/+8DKv/vAyz/7wMu/+8DMP/vAzT/3AOv//ADs//vA7f/3AO6/+8DvP/vA9X/8APZ//AD2v/cA9z/8APj/9wD6//cA+z/2gPt/9oD8P/aA/f/8AP8/9wD/f/wBAL/8AQE/9wEEP/wBBL/8AQT//AEH//wBCX/3AQn/9wEKf/cBC7/8ARI//AESv/wBEz/8ARO//AEUP/wBFL/8ARU//AEVv/wBGr/8ARs//AEbv/wBHL/8AR0/+8Edv/vBHj/7wR6/+8EfP/vBH7/7wSA/+8Egv/cBIT/3ASG/9wErf/wBLX/7wS6//AEvP/wBNT/3ATW/9wAjAAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBR/+IAUv/iAFT/4gBa/+YAXP/vAF3/5gC9/+YAwf/iANL/0gDW/9IA2v/0AN7/7QDh/+EA5v/UAOz/4gDu/+8A8P/iAPH/4gDz/+IA9P/iAPX/4gD2/8kA+P/iAPr/4gD7/+IA/v/RAQD/4gEF/+IBCf/lARn/1AEa/+YBIP/jASv/4gEz//QBNP/vATb/4gE5/9IBOv/EATz/4gE+/+IBQ//0AUT/7wFF/9IBR//hAUn/4QFT/+IBVf/iAVf/4gFc/+IBXf/0AV7/7wFi/9QBY//1AWT/5wFs/6oBbf/JAYT/ygGF/8oBh//KAYj/ygGJ/8oCqv/TArv/4gLF/+YCxv/mAwP/4gMF/+IDB//iAwj/4gMf/9IDIf/SAyP/0gMz/9MDNP/mAzX/0wOc/9MDq//TA6z/9AOu/9MDsf/iA7f/5gPG/+0D0v/SA9P/9APW/+ID2P/iA9r/5gPb/+8D3f/iA+L/4gPj/+YD6v/TA+v/5gPs/8oD7f/KA/D/ygPy/+ID+P/iA/v/1AP8/+YEA//TBAT/5gQG//QEB//vBBT/9AQV/+8EGf/iBBv/4gQk/+0EJf/mBCb/7QQn/+YEKP/tBCn/5gQq/+EELf/iBIH/0wSC/+YEg//TBIT/5gSF/9MEhv/mBIj/0gSK/+EEjf/iBJf/0wSp/+IExv/iBMj/4gTQ/9IE0//UBNT/5gTV/9QE1v/mAJgAJQAQACf/6AAr/+gAM//oADX/6AA4/+AAOv/gAD3/3wCD/+gAk//oAJj/6ACyABAAs//oALQAEADS/+AA0//oANQAEADW/+AA2QAUAN0AEADh/+EA5v/gAO0AEwDyABAA+f/gAQQAEAEI/+gBDQAQARf/6AEZ/+ABG//oAR3/6AEf/+gBIf/oATn/4AFB/+gBRf/gAUf/4QFI/+ABSf/hAUr/4AFN/+EBUAAQAVEAEAFY/+kBYv/fAWT/3gFmABABav/oAWz/3wFu//IBbwAQAXAAEAJV/+gCVv/oAlj/6AJZ/+gCkAAQApEAEAKSABACkwAQApQAEAKVABAClgAQApf/6AKh/+gCov/oAqP/6AKk/+gCpf/oAqr/3wLHABACyQAQAssAEALN/+gCz//oAtH/6ALT/+gC4f/oAuP/6ALl/+gC5//oAwn/6AML/+gDDf/oAx//4AMh/+ADI//gAzP/3wM1/98DPv/oA5cAEAOb/+gDnP/fA58AEAOo/+gDq//fA67/3wPHABADzv/oA9H/6APS/+AD6v/fA/MAEAP7/+AD/v/oBAH/6AQD/98ECQAQBAsAEAQc/+gEHv/oBCD/6AQq/+EEK//gBC8AEAQxABAEMwAQBDUAEAQ3ABAEOQAQBDsAEAQ9ABAEPwAQBEEAEARDABAERQAQBFv/6ARd/+gEX//oBGH/6ARj/+gEZf/oBGf/6ARp/+gEa//oBG3/6ARv/+gEcf/oBIH/3wSD/98Ehf/fBIj/4ASK/+EEi//gBJf/3wSqABAEsP/oBMn/6ATQ/+AE0//gBNX/4AC6AEf/3ABI/9wASf/cAEv/3ABR/+EAUv/hAFP/1gBU/+EAVf/cAFn/3QBa/+EAXf/hAJT/3ACZ/9wAm//dALv/3AC9/+EAvv/1AL//5gDB/+EAwv/rAMP/6QDF//AAxv/nAMj/3ADJ/9wAyv/jAMv/3QDM/84Azf/UAM7/2wDs/+EA8P/hAPH/4QDz/+EA9P/hAPX/4QD3/9wA+P/hAPr/4QD7/+EA/v/hAQD/4QED/9wBBf/hARj/1gEa/+EBHv/cASL/3AEr/+EBNv/hATz/4QE+/+EBQv/cAVP/4QFV/+EBV//hAVz/4QFg/9wBYf/cAWv/3AKy/9wCs//cArT/3AK1/9wCtv/cArv/4QK8/9YCvf/WAr7/1gK//9YCwP/WAsH/3QLC/90Cw//dAsT/3QLF/+ECxv/hAs7/3ALQ/9wC0v/cAtT/3ALW/9wC2P/cAtr/3ALc/9wC3v/cAuD/3ALi/9wC5P/cAub/3ALo/9wDA//hAwX/4QMH/+EDCP/hAwr/1gMM/9YDDv/WAyb/3QMo/90DKv/dAyz/3QMu/90DMP/dAzT/4QOv/9wDsf/hA7P/3QO1/9YDt//hA7r/3QO7/9YDvP/dA9X/3APW/+ED1//WA9j/4QPZ/9wD2v/hA9z/3APd/+ED4v/hA+P/4QPr/+ED8v/hA/f/3AP4/+ED/P/hA/3/3AQC/9wEBP/hBBD/3AQS/9wEE//cBBn/4QQb/+EEHf/WBB//3AQh/9YEJf/hBCf/4QQp/+EELf/hBC7/3ARI/9wESv/cBEz/3ARO/9wEUP/cBFL/3ARU/9wEVv/cBFz/1gRe/9YEYP/WBGL/1gRk/9YEZv/WBGj/1gRq/9wEbP/cBG7/3ARw/9YEcv/cBHT/3QR2/90EeP/dBHr/3QR8/90Efv/dBID/3QSC/+EEhP/hBIb/4QSN/+EEqf/hBK3/3ASx/9YEtf/dBLr/3AS8/9wExv/hBMj/4QTU/+EE1v/hAL8ABgAMAAsADABH/+gASP/oAEn/6ABKAAwAS//oAFP/6gBV/+gAWgALAF0ACwCU/+gAmf/oALv/6AC9AAsAvv/0AMT/1wDGAAsAyP/oAMn/6ADKAAwA9//oAQP/6AEY/+oBGgALAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQADAGFAAwBhwAMAYgADAGJAAwB4wANAeYADQHoAA4B6f/1Aev/7AHt/+0B9f/sAfv/vwH8/+0B/f+/AgQADgIF/+0CCAAOAiAADgIh/+0CIgANAiQADgIq/+0CQf/uAkP/vwKy/+gCs//oArT/6AK1/+gCtv/oArz/6gK9/+oCvv/qAr//6gLA/+oCxQALAsYACwLO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/oAuT/6ALm/+gC6P/oAwr/6gMM/+oDDv/qAzQACwND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/8ADSf/AA17/wANf/8ADYP/AA5f/TgOf/04Dr//rA7P/6gO1/+sDt//oA7r/6gO7/+sDvP/qA8P/DQPH/04D0gAUA9T/3gPV/+sD1//rA9n/6wPa/+gD3P/rA+P/6APr/+gD8/9OA/T/3gP3/+sD/P/oA/3/6wQC/+sEBP/oBAn/TgQK/94EC/9OBAz/3gQQ/+sEEv/rBBP/6wQd/+sEH//rBCH/6wQl/+gEJ//oBCn/6AQu/+sEL/9OBDD/3gQx/04EMv/eBDP/TgQ0/94ENf9OBDb/3gQ3/04EOP/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ESP/rBEr/6wRM/+sETv/rBFD/6wRS/+sEVP/rBFb/6wRc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/rBGz/6wRu/+sEcP/rBHL/6wR0/+oEdv/qBHj/6gR6/+oEfP/qBH7/6gSA/+oEgv/oBIT/6ASG/+gEiAAUBKr/TgSr/94Erf/rBLH/6wS1/+oEuv/rBLz/6wTQABQE1P/oBNb/6ATc/8AE4//ABPv/wAACAKAABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAAtAAsALwA2AA0AOAA4ABUAOgA/ABYARQBGABwASQBKAB4ATABMACAATwBPACEAUQBUACIAVgBWACYAWABYACcAWgBdACgAXwBfACwAigCKAC0AlgCWAC4AnQCdAC8AsQC1ADAAtwC5ADUAuwC7ADgAvQC+ADkAwADBADsAwwDFAD0AxwDOAEAA0gDSAEgA1ADeAEkA4ADvAFQA8QDxAGQA9gD4AGUA+wD8AGgA/gEAAGoBAwEFAG0BCgEKAHABDQENAHEBGAEaAHIBIgEiAHUBLgEwAHYBMwE1AHkBNwE3AHwBOQE5AH0BOwE7AH4BQwFEAH8BVAFUAIEBVgFWAIIBWAFYAIMBXAFeAIQBhAGFAIcBhwGJAIkB6AHoAIwB6gHrAI0B7QHtAI8B8AHwAJAB+wH9AJECQAJAAJQCQwJDAJUCVQJVAJYCVwJYAJcCiwKMAJkCjgKOAJsCkAKlAJwCqgKxALICswK2ALoCuwLAAL4CxQLNAMQCzwLPAM0C0QLRAM4C0wLTAM8C1QLVANAC1wLgANEC6QLrANsC7QLtAN4C7wLvAN8C8QLxAOAC8wLzAOEC+AL4AOIC+gL6AOMC/AL8AOQC/gL+AOUDAAMAAOYDAgMOAOcDEAMQAPQDEgMSAPUDFAMUAPYDHwMfAPcDIQMhAPgDIwMjAPkDMQMxAPoDMwM2APsDOAM4AP8DOgM6AQADQANJAQEDVANYAQsDXgNgARADZQNlARMDdwN6ARQDfgOAARgDiQOJARsDlwOcARwDnwOuASIDsQOxATIDtQO1ATMDtwO3ATQDuwO7ATUDvgO/ATYDwQPCATgDxAPKAToDzAPOAUED0APVAUQD1wPYAUoD2gPdAUwD4wPkAVAD5gPmAVID6APoAVMD6gPtAVQD8AP1AVgD9wP3AV4D+wP8AV8EAQQBAWEEAwQMAWIEDwQQAWwEEgQVAW4EHAQdAXIEIQQhAXQEIwQpAXUELwRXAXwEWQRZAaUEWwRoAaYEcARwAbQEgQSGAbUEiASIAbsEjASNAbwEkASQAb4EkgSTAb8ElQSVAcEElwSXAcIEqASsAcMErgSuAcgEsASxAckEswSzAcsEtwS5AcwEuwS7Ac8EvQS/AdAEwQTBAdMEwwTDAdQExQTLAdUEzQTNAdwE0ATQAd0E0wTXAd4E2QTZAeME2wTcAeQE4ATgAeYE4wTjAecE7gTuAegE+wT7AekFAgUCAeoFBgUGAesAAgCaAAYABgAAAAsACwABABAAEAACABIAEgADACUAKQAEACwANAAJADgAPgASAEUARwAZAEkASQAcAEwATAAdAFEAVAAeAFYAVgAiAFoAWgAjAFwAXgAkAIoAigAnAJYAlgAoALEAtAApAL0AvQAtAMEAwQAuAMcAxwAvANQA1QAwANcA1wAyANoA2gAzANwA3gA0AOAA5gA3AOwA7AA+AO4A7gA/APcA9wBAAPwA/ABBAP4A/wBCAQQBBQBEAQoBCgBGAQ0BDQBHARgBGgBIAS4BMABLATMBNQBOATcBNwBRATkBOQBSATsBOwBTAUMBRABUAVQBVABWAVYBVgBXAVgBWABYAVwBXgBZAYQBigBcAY4BjwBjAegB6ABlAe0B7QBmAfAB8QBnAfsB/QBpAg8CDwBsAh4CIABtAkACQABwAkMCQwBxAlUCVQByAlcCWABzAosCjAB1Ao4CjgB3ApACtgB4ArsCwACfAsUC1QClAtcC4AC2AukC6wDA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABkAJAAAAA4AFQAcAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAKAAUACgAAAAAAAAAAAAAAAAAVAAUAAAAAABUAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAABUABQASABkAFQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAABAAEAAQABAAEAAQABAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgALAAsACwALAAwABgAGAAYABgAGAAYABgABAAEAAQABAAEAAAAAAAAAAAADAAcABwAHAAcABwAIAAgACAAIAAkACQAEAAYABAAGAAQABgACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAcAAgAHAAIABwAAAAAAAAAAAAAAAAAUABEAFAARABQAEQAUABEAFAARAA0AAAANAAAADQAAAAsACAALAAgACwAIAAsACAALAAgACwAIABYAAAAMAAkADAAXAB0AFwAdABcAHQAAAAAAAgAAAAAAAAAAAAoACgAKAAoACgAKAAoABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUADgAOAA4ADgAS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AiQCJQInAikChwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA5MDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwUQA3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGBRMDhwOIA4oDiQOLA4wDjQOOA48DkAORA5IDlAOVA5YFEQUSBNwE3QTeBN8E6QTsBOoE6wTwBPEE8gTgBOEE4gT7BP4E/wUCBQQFBQIRBQcE8wT0BPUE9gT3BPgE+QT6BRQFFQUWBRcFCAUKBQsCKAUNAioFDgUMAiYCHAIiBRwFHQACBwAA+gH3AoIB4QHgAd8B3gHdAdwB2wHaAdkB2AJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeIB+AH5AoQChgKFAocCgwKIAmIB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CEAIRBQ8CEgITAhQCFQIWAhcCGAIZAhoCGwJLAh0CHgIfAiAFCQIhAiMCJAIlAiYCJwIoAikCKwIsAi4CLQNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YFEQUSBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AIPBPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBRQFFQUWBRcFCAUKBQsFDQIqBQ4FDAIcAiIFHAUdAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMZAxoAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwJ6AAIAAAABBt4AAQAGAssCzALdAt4DYANpAAEABgBNAE4C8gPfA+EEWgACAAMBlAGUAAAB1QHXAAECLwI1AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACZQJuAAoAAgAGAE0ATQAGAE4ATgAEAvIC8gAFA98D3wADA+ED4QACBFoEWgABAAIABAAUAB0AAAJ2AnYACgKBAoEACwSeBKUADAACAAYAGgAaAAAAHAAcAAECWgJfAAICYwJjAAgCZQJuAAkCdQJ1ABMAAQAUABoAHAJaAlsCXAJdAl4CXwJjAnUCdgKBBJ4EnwSgBKEEogSjBKQEpQABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAo0CjwKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAsgCygLMAs4C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9QL3AvkC+wL9Av8DAQMDAwUDBwMKAwwDDgMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzcDOQM7Az0DPwOvA7ADsQOyA7QDtQO2A7cDuAO5A7oDuwO8A70D1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPlA+cD6QPrBAAEAgQEBBIEGQQfBCUEjwSQBJQEmAUZBRsAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGnAa0BsgG1AosCjAKOApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAscCyQLLAs0CzwLRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL0AvYC+AL6AvwC/gMAAwIDBAMGAwkDCwMNAw8DEQMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM2AzgDOgM8Az4DlwOYA5kDmgObA5wDnQOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD5APmA+gD6gP/BAEEAwQYBB4EJASOBJMElwUYBRoBzAACAE0BzQACAFABzgADAEoATQHPAAMASgBQAAEAAQBKAcsAAgBKAdEAAgBYAdAAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBLcAAgCtAs0AAgCpBL0AAgCtBMoAAgCpBLgAAgCtAs4AAgCpBKcAAgCpBL4AAgCtBFoAAgCtBMsAAgCpAzwAAgCpAz4AAgCpAz0AAgCpAz8AAgCpBLYAAgCpBLsAAgHKBLkAAgCtBKYAAgCpAucAAgHKA/EAAgCpBMUAAgCtAx8AAgHKBNAAAgCtBNUAAgCtBNMAAgCqAzYAAgCpBNkAAgCtBLwAAgHKBLoAAgCtA/IAAgCpBMYAAgCtAyAAAgHKBNEAAgCtBNYAAgCtBNQAAgCqAzcAAgCpBNoAAgCtBL8AAgCpAvgAAgHKBMEAAgCtAvoAAgCpAvwAAgHKBMMAAgCtAxUAAgCpAxsAAgHKBM4AAgCtA+YAAgCpBNcAAgCtA+QAAgCoBMAAAgCpAvkAAgHKBMIAAgCtAvsAAgCpAv0AAgHKBMQAAgCtAxYAAgCpAxwAAgHKBM8AAgCtA+cAAgCpBNgAAgCtA+UAAgCoAw8AAgCpAxEAAgHKBMwAAgCtBLIAAgCsAxAAAgCpAxIAAgHKBM0AAgCtBLMAAgCsAwIAAgCpAwQAAgHKBMcAAgCtBKgAAgCoAqAAAgCqAqoAAgCpBIEAAgCtA+oAAgCoBIMAAgCrBIUAAgCqAwMAAgCpAwUAAgHKBMgAAgCtBKkAAgCoArsAAgCqAsUAAgCpBIIAAgCtA+sAAgCoBIQAAgCrBIYAAgCqArgAAgCpArcAAgCoBFgAAgCrAuwAAgCqBK8AAgCsBGkAAgCpBHEAAgCtBGsAAgCoBG0AAgCrBG8AAgCqBGoAAgCpBHIAAgCtBGwAAgCoBG4AAgCrBHAAAgCqBHcAAgCpBH8AAgCtBHkAAgCoBHsAAgCrBH0AAgCqBHgAAgCpBIAAAgCtBHoAAgCoBHwAAgCrBH4AAgCqApEAAgCpBC8AAgCtApAAAgCoBDEAAgCrApMAAgCqBKoAAgCsApkAAgCpBEcAAgCtApgAAgCoBEkAAgCrBEsAAgCqBKwAAgCsAp0AAgCpBFkAAgCtApwAAgCoBFcAAgCrAusAAgCqBK4AAgCsAqwAAgCpBDAAAgCtAqsAAgCoBDIAAgCrAq4AAgCqBKsAAgCsArQAAgCpBEgAAgCtArMAAgCoBEoAAgCrBEwAAgCqBK0AAgCsAr0AAgCpBFwAAgCtArwAAgCoBF4AAgCrAr8AAgCqBLEAAgCsAsIAAgCpBHQAAgCtAsEAAgCoBHYAAgCrAyYAAgCqBLUAAgCsAqIAAgCpBFsAAgCtAqEAAgCoBF0AAgCrAqQAAgCqBLAAAgCsAqcAAgCpBHMAAgCtAqYAAgCoBHUAAgCrAyUAAgCqBLQAAgCsBMkAAwCqAKkE0gADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==",
85457
  "Roboto-MediumItalic.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAdWAAAACWEdQT1Pk1zcKAAHX2AAAZixHU1VChRYO9AACPgQAABX2T1MvMpfnsUwAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAHVdAAAAAxnbHlmzgJNBAAAOpAAAZeaaGVhZAbdHSkAAAEcAAAANmhoZWEM1xKwAAABVAAAACRobXR4esmaxQAAAfgAABR8bG9jYcquK+cAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lSNF9RQAB0iwAAAMmcG9zdP9hAGQAAdVUAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSJZw01FfDzz1ABkIAAAAAADE8BEuAAAAAN8Gv236Q/3VCXIIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJJvpD/l8JcggAAbMAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA5YAZAAAAAAAAAAAAfgAAAH4AAACDgAzAnoAnQSuADIEaQBBBbYAtQT6ACkBTACRArAAaAK3/5QDcQBoBE8APAG8/48CowBAAigALgMH/34EaQBfBGkA8QRpAA0EaQAmBGkADQRpAFgEaQBdBGkAhgRpADcEaQCMAhYAKAHm/58D8wAzBF0AYAQIAC0DxgCTBvYALgUl/6ME5gAmBREAXwURACYEYwAmBEYAJgVJAGYFgQAmAjIANwRPAAQE5wAmBDEAJgbJACYFgQAmBVkAYgT0ACYFWQBeBOIAJgS0ACYEugCdBRQAWAUDAJoG1QC1BOb/wAS9AKEErv/lAhv/8AM8AKsCG/96A1QARAN5/3kCfADPBC8AHARdABAEDQA3BF8AOAQoADoCvgBeBGb/+QRQAA0B+gAgAfL/AgQMABEB+gAgBsMADwRSAA0EZwA4BF3/yARkADcCvgARA/8AGwKWAD8EUQBKA9oAZAXCAHkD6P+6A83/vAPo/+YClgAtAe0AIQKW/5gFJABcAg//5gRfAE0Ekf/3BXMABgQfAC4B6f/uBNP/4AN3ANcGGQBcA3UAvwPPAEYESQCABhoAXAO8AQQC+ADlBCkAGQLoAFcC6ABoAoEAxwSd/94DzAB+AjMAnwID/80C6ADkA4sAvgPOAAQFqADBBf0AtQY1AJYDx//UB0X/jQQhAB8FVwAWBKoAJwTFAB0GjgAOBIEARgRuAD4EYwAqBG7/zQTGADcFhQAsAgcAIwR3ACEEQwAfAkAAIAVsACMEYwARB3UAUAcHAD8B+AAcBWIASwK6/0QFZgBcBHoANAV3AFgEwABKAhX/BAQZADQDwAD+A44BCQPGAQQDZAD9AfoBAwKVAPoCOv+oA7EA3AMQAK4CYP/0AAD9VgAA/dwAAPz4AAD91QAA/LwAAPyhAlgBNgQbAO8CPQCfBFIAKwWW/6wFUABdBQ3/sgRp//4FggArBGn/3AXLAFQFhQB2BTAACgRhADsEpP/mA+0AdQRjADUEQwAoA/AAZgRjABEEggBuApAAZgRG/6cD+wBCBNYAYQRj/8sEEwA2BGsANwQKAGwEPABXBaQAMQWfAD8GYQBSBJAAUgRkAG4GRwBUBc8AlAUqAGEIQP/GCEoAKwYhAJ0FeQAiBOoAIwXP/4gHbv+kBLYAHwV6ACUFff/FBOQAmQYuAFUFygAhBVoAxAdgACgHvQAoBfIAhwbFACwE2wAkBSAASAczADMEwv+nBF0AQgRpACMDQQAWBMz/hQZV/7AD+AAXBG8AFwRKACIEcP+8BdQAIwRvABcEbwAXA9sAVAWnADkEqwAXBEMAbQZaABcGvAARBPkAUQZIACMERwAjBBkAIAZQACUETf+9BFAADQQZADkGof+4Bq8AFwRtAA0EbwAXByAAXwY5AEcERwAhBvEAKwXUABkE7/+sBEH/nQcTAD4GDgAtBrAAEgWwABUI5AA3B7EAIwQA/6kD1v+0BVAAYQRlADQE8QCoA+4AdQVQAGEEYwA1BxsAYwYlAEwHIABfBjkARwTpAFgEJgBEBNUAOwAA/PAAAP0QAAD+MQAA/j0AAPpDAAD6cwX7ACUE9gAXBEcAIQTpACYEY//IBEkAIwOHABEEzwArBAQAEQfv/6QGtf+wBacAKwTfACIFBgAkBIgAIQZhAKQFdABsBfsAJgTrABcHoAAmBYIAEQgTACoGugARBgcAXwTeAEsFG//ABCr/ugbxAJoFRQBXBc8AxATBAG0FRgC0BFIAggVbABwF7ABVBKD/8gT4ACQEVgAhBfr/xQT3/7wFgQArBGMAEQYFACYE9AAXB0YAJgZMACMFYgBLBIAALwSB//EEqAAnA5j/+QVJ/8AEWP+6BNMAKQa9AEIGpwBEBiEArAUAAGEEYACTBCcAiweB/9sGcf/ZB7gAJwZrAAcE3wBLBA8APQV9AJEE9gBzBSUAUAYf/8UFHf+8AwMA6AP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAABAgAAANUAAAAAAAACrABAAqwAQAUGAJsGBAB8A37/WAGyALIBrQCNAcH/pwGWAM0C/gC5AwUAmgLq/6QEOQBpBHb//AK2AJ8D6AA1BYgANQHCAF4HcwCiAmEAWgJX//wDff/gAugAiQLoAGYC6AB+AugAiQLoAJgC6AB4AugApwNCAGsC6P/XAugAMQLo/6YC6P+2Auj/tQLo/8wC6P/YAuj/5gLo/8YC6P/1BJH/9wY8AA8GiwAsCF0AJgYMACAGaQAQBGkASwW9AEQEDQBEBHgAFQU4/+UFU//qBbcAwAPFACsH6wAjBOEA8ATtAH0GEQC6BrMAhAamAIoGgwC6BHAARAVfAB4Euf+mBF4AmgR5ADQIEgBJAiH/DwRuADEEXQBgA/3/1gQSABQD7wA8AkkAYwJ6AGcB2//RBPwAXgSJAE4EmABeBvIAXgbyAF4E6ABeBoMAFQAAAAAH8f+oCDUAXALe/+QC3gBwAt4AFgP+AGED/gAeA/4AWQP9ADwD/gAwA/7//wP+AAgD/v/yA/4AtAP+ADkEC//WBB4AbAQ7/6IF2gCLBFcAbgRmADgEHgBjBBYADwRDAAkEmQA6BEkACQSZADsEtgAJBdcACQObAAkEPAAJA7n/8wHvABoEtwAJBIMAPwOrAAkEFgAPBEYAEQOJAAIDnwAJBFb/pASZADsEVv+kA4H/2wSzAAkD///aBXsAQQUwAG0EuwAABWcAYgReADkHHf/BBx8ACQVuAGMEswAJBFAACwU0/4MGFf+qBCUADgS8AAsEPAAKBKb/wQQrAHYFOQAJBGoAWwZRAAkG2AAJBTgASwXxAAsERgALBF4AFAZcAAkEYf/RBAj/9gZw/6oEfAAKBOYACgVKAGAFygA+BD8AbASf/6IGZQBiBGoAWwRqAAkF0gA7BKkAMgQmAA4EnAA0BEYABwPWAB4H7wAJBM7/2gLe//UC3v/zAt4ACwLeABYC3gAlAt4ABQLeADQDmQCRApoBCAPCAAkEGv+HBJIAOwUZACsFAAArBBAAFAUNACsECQAUBFcACQReADkEPwAJBHb/mgHvAOgDhQEEAAD9JwPZANwD2wAWA+wA3APcANsDnwAJA4EBBAOBAQUC6ACJAugAZgLoAH4C6ACJAugAmALoAHgC6ACnBUoAbAVzAGsFVQArBawAbgWuAG0ECQCrBF8AHAQ3/4EEl//RBEn/2AQOADEDhQEFAa3/uAZmADsEiwBFAfz/AARz/6kEc//ZBHP/yQRzABMEcwBMBHMAIgRzAFcEcwAxBHMANwRzAPgCH/8EAh//BAIRACMCEf98AhEAIwQ/AAkEwQBMBBAAVgRmABAEHgA2BHIANwRuAC0EegAyBG//yAR3ADYEKAA6BGYALgQ4/58DmwCrBOYAJAOn/+8GFf9+A+gACQSZ/9sE5wAiBLYACQH4AAACowBABS8AIAUvACAEbgArBLoAnQKW/+UFJf+jBSX/owUl/6MFJf+jBSX/owUl/6MFJf+jBREAXwRjACYEYwAmBGMAJgRjACYCMgA3AjIANwIyADcCMgA3BYEAJgVZAGIFWQBiBVkAYgVZAGIFWQBiBRQAWAUUAFgFFABYBRQAWAS9AKEELwAcBC8AHAQvABwELwAcBC8AHAQvABwELwAcBA0ANwQoADoEKAA6BCgAOgQoADoCBwAjAgcAIwIHACMCBwAjBFIADQRnADgEZwA4BGcAOARnADgEZwA4BFEASgRRAEoEUQBKBFEASgPN/7wDzf+8BSX/owQvABwFJf+jBC8AHAUl/6MELwAcBREAXwQNADcFEQBfBA0ANwURAF8EDQA3BREAXwQNADcFEQAmBPUAOARjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoFSQBmBGb/+QVJAGYEZv/5BUkAZgRm//kFSQBmBGb/+QWBACYEUAANAjIANwIHABMCMgA3AgcAIwIyADcCBwAjAjL/jgH6/3UCMgA3BoIANwPsACAETwAEAhX/BATnACYEDAARBDEAJgH6ACAEMQAmAfr/pgQxACYCkAAgBDEAJgLWACAFgQAmBFIADQWBACYEUgANBYEAJgRSAA0EUgANBVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BOIAJgK+ABEE4gAmAr7/nwTiACYCvgARBLQAJgP/ABsEtAAmA/8AGwS0ACYD/wAbBLQAJgP/ABsEtAAmA/8AGwS6AJ0ClgA/BLoAnQKWAD8EugCdAr4APwUUAFgEUQBKBRQAWARRAEoFFABYBFEASgUUAFgEUQBKBRQAWARRAEoFFABYBFEASgbVALUFwgB5BL0AoQPN/7wEvQChBK7/5QPo/+YErv/lA+j/5gSu/+UD6P/mB0X/jQaOAA4FVwAWBGMAKgRX/5YEV/+WBB4AYwR2/5oEdv+aBHb/mgR2/5oEdv+aBHb/mgR2/5oEXgA5A8IACQPCAAkDwgAJA8IACQHvABoB7wAaAe8AGgHvABoEtgAJBJkAOwSZADsEmQA7BJkAOwSZADsEZgA4BGYAOARmADgEZgA4BB4AbAR2/5oEdv+aBHb/mgReADkEXgA5BF4AOQReADkEVwAJA8IACQPCAAkDwgAJA8IACQPCAAkEgwA/BIMAPwSDAD8EgwA/BLcACQHvAA4B7wAaAe8AGgH5/5cB7wAaA7n/8wQ8AAkDmwAJA5sACQObAAkDmwAJBLYACQS2AAkEtgAJBJkAOwSZADsEmQA7BEMACQRDAAkEQwAJBBYADwQWAA8EFgAPBBYADwQeAGMEHgBjBB4AYwRmADgEZgA4BGYAOARmADgEZgA4BGYAOAXaAIsEHgBsBB4AbAQL/9YEC//WBAv/1gUl/6MEx/+6BeX/wgKW/8YFbQAmBSH/uAVEAB4CkAAJBSX/owTmACYEYwAmBK7/5QWBACYCMgA3BOcAJgbJACYFgQAmBVkAYgT0ACYEugCdBL0AoQTm/8ACMgA3BL0AoQRhADsEQwAoBGMAEQKQAGYEPABXBHcAIQRnADgEnf/eA9oAZAQ4/58CkABEBDwAVwRnADgEPABXBmEAUgRjACYEUgArBLQAJgIyADcCMgA3BE8ABAUAACsE5wAmBOQAmQUl/6ME5gAmBFIAKwRjACYFegAlBskAJgWBACYFWQBiBYIAKwT0ACYFEQBfBLoAnQTm/8AELwAcBCgAOgRvABcEZwA4BF3/yAQNADcDzf+8A+j/ugQoADoDQQAWA/8AGwH6ACACBwAjAfL/AgRKACIDzf+8BtUAtQXCAHkG1QC1BcIAeQbVALUFwgB5BL0AoQPN/7wBTACRAnoAnQQbADMCFf8EAa0AjQbJACYGwwAPBSX/owQvABwEYwAmBXoAJQQoADoEbwAXBYUAdgWfAD8E8QCoA+4AdQg0ADgJJgBiBLYAHwP4ABcFEQBfBA0ANwS9AKED7QB1AjIANwdu/6QGVf+wAjIANwUl/6MELwAcBSX/owQvABwHRf+NBo4ADgRjACYEKAA6BWIASwQZADQEGQA0B27/pAZV/7AEtgAfA/gAFwV6ACUEbwAXBXoAJQRvABcFWQBiBGcAOAVQAGEEZQA0BVAAYQRlADQFIABIBBkAIATkAJkDzf+8BOQAmQPN/7wE5ACZA83/vAVaAMQEQwBtBsUALAZIACMEXwA4BSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgIyADcCBwAjAjL//wH6/+MFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVmAFwEegA0BWYAXAR6ADQFZgBcBHoANAVmAFwEegA0BWYAXAR6ADQFFABYBFEASgUUAFgEUQBKBXcAWATAAEoFdwBYBMAASgV3AFgEwABKBXcAWATAAEoFdwBYBMAASgS9AKEDzf+8BL0AoQPN/7wEvQChA83/vAR9//QEugCdA9sAVAVaAMQEQwBtBFIAKwNBABYF7ABVBKD/8gRQAA0E2wAkBNsAJARSAAADQf/HBRQAPwQkACgEvQChA+0AUgTm/8AD6P+6BEMAKARG/8IGBAB8BGkADQRpACYEaQANBGkAWAR9AHEEkQBLBH0AjASRAHMFSQBmBGb/+QWBACYEUgANBSX/owQvABwEYwAmBCgAOgIy/88CB/+ABVkAYgRnADgE4gAmAr4ADAUUAFgEUQBKBMj/hQTmACYEXQAQBREAJgRfADgFEQAmBF8AOAWBACYEUAANBOcAJgQMABEE5wAmBAwAEQQxACYB+v/jBskAJgbDAA8FgQAm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AGQAaQB1AG0AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAA1ADsAIAAyADAAMgAyAFIAbwBiAG8AdABvAC0ATQBlAGQAaQB1AG0ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAuAEcAbwBvAGcAbABlAEMAaAByAGkAcwB0AGkAYQBuACAAUgBvAGIAZQByAHQAcwBvAG4ARwBvAG8AZwBsAGUALgBjAG8AbQBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAFIAbwBiAG8AdABvAE0AZQBkAGkAdQBtACAASQB0AGEAbABpAGMAAAADAAD/9AAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAcsB0QACAeIB9gABAfoB+gABAgMCAwABAgUCBQABAgwCDgABAhACEQABAhMCEwABAhcCFwABAhkCGwABAiECIQABAiYCKAAB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/+gEX//oBGH/6ARj/+gEZf/oBGf/6ARp/+gEa//oBG3/6ARv/+gEcf/oBIH/3wSD/98Ehf/fBIj/4ASK/+EEi//gBJf/3wSqABAEsP/oBMn/6ATQ/+AE0//gBNX/4AC6AEf/3ABI/9wASf/cAEv/3ABR/+EAUv/hAFP/1gBU/+EAVf/cAFn/3QBa/+EAXf/hAJT/3ACZ/9wAm//dALv/3AC9/+EAvv/1AL//5gDB/+EAwv/rAMP/6QDF//AAxv/nAMj/3ADJ/9wAyv/jAMv/3QDM/84Azf/UAM7/2wDs/+EA8P/hAPH/4QDz/+EA9P/hAPX/4QD3/9wA+P/hAPr/4QD7/+EA/v/hAQD/4QED/9wBBf/hARj/1gEa/+EBHv/cASL/3AEr/+EBNv/hATz/4QE+/+EBQv/cAVP/4QFV/+EBV//hAVz/4QFg/9wBYf/cAWv/3AKy/9wCs//cArT/3AK1/9wCtv/cArv/4QK8/9YCvf/WAr7/1gK//9YCwP/WAsH/3QLC/90Cw//dAsT/3QLF/+ECxv/hAs7/3ALQ/9wC0v/cAtT/3ALW/9wC2P/cAtr/3ALc/9wC3v/cAuD/3ALi/9wC5P/cAub/3ALo/9wDA//hAwX/4QMH/+EDCP/hAwr/1gMM/9YDDv/WAyb/3QMo/90DKv/dAyz/3QMu/90DMP/dAzT/4QOv/9wDsf/hA7P/3QO1/9YDt//hA7r/3QO7/9YDvP/dA9X/3APW/+ED1//WA9j/4QPZ/9wD2v/hA9z/3APd/+ED4v/hA+P/4QPr/+ED8v/hA/f/3AP4/+ED/P/hA/3/3AQC/9wEBP/hBBD/3AQS/9wEE//cBBn/4QQb/+EEHf/WBB//3AQh/9YEJf/hBCf/4QQp/+EELf/hBC7/3ARI/9wESv/cBEz/3ARO/9wEUP/cBFL/3ARU/9wEVv/cBFz/1gRe/9YEYP/WBGL/1gRk/9YEZv/WBGj/1gRq/9wEbP/cBG7/3ARw/9YEcv/cBHT/3QR2/90EeP/dBHr/3QR8/90Efv/dBID/3QSC/+EEhP/hBIb/4QSN/+EEqf/hBK3/3ASx/9YEtf/dBLr/3AS8/9wExv/hBMj/4QTU/+EE1v/hAL8ABgAMAAsADABH/+gASP/oAEn/6ABKAAwAS//oAFP/6gBV/+gAWgALAF0ACwCU/+gAmf/oALv/6AC9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/8AB/f/AAkP/wAKQ/04Ckf9OApL/TgKT/04ClP9OApX/TgKW/04Cq//eAqz/3gKt/94Crv/eAq//3gKw/94Csf/eArL/6wKz/+sCtP/rArX/6wK2/+sCvP/rAr3/6wK+/+sCv//rAsD/6wLB/+oCwv/qAsP/6gLE/+oCxf/oAsb/6ALH/04CyP/eAsn/TgLK/94Cy/9OAsz/3gLO/+sC0P/rAtL/6wLU/+sC1v/rAtj/6wLa/+sC3P/rAt7/6wLg/+sC4v/rAuT/6wLm/+sC6P/rAvb/DQMK/+sDDP/rAw7/6wMfABQDIQAUAyMAFAMm/+oDKP/qAyr/6gMs/+oDLv/qAzD/6gM0/+gDQ//AA0T/wANF/8ADRv/AA0f/wANI/8ADSf/AA17/wANf/8ADYP/AA5f/TgOf/04Dr//rA7P/6gO1/+sDt//oA7r/6gO7/+sDvP/qA8P/DQPH/04D0gAUA9T/3gPV/+sD1//rA9n/6wPa/+gD3P/rA+P/6APr/+gD8/9OA/T/3gP3/+sD/P/oA/3/6wQC/+sEBP/oBAn/TgQK/94EC/9OBAz/3gQQ/+sEEv/rBBP/6wQd/+sEH//rBCH/6wQl/+gEJ//oBCn/6AQu/+sEL/9OBDD/3gQx/04EMv/eBDP/TgQ0/94ENf9OBDb/3gQ3/04EOP/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ESP/rBEr/6wRM/+sETv/rBFD/6wRS/+sEVP/rBFb/6wRc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/rBGz/6wRu/+sEcP/rBHL/6wR0/+oEdv/qBHj/6gR6/+oEfP/qBH7/6gSA/+oEgv/oBIT/6ASG/+gEiAAUBKr/TgSr/94Erf/rBLH/6wS1/+oEuv/rBLz/6wTQABQE1P/oBNb/6ATc/8AE4//ABPv/wAACAKAABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAAtAAsALwA2AA0AOAA4ABUAOgA/ABYARQBGABwASQBKAB4ATABMACAATwBPACEAUQBUACIAVgBWACYAWABYACcAWgBdACgAXwBfACwAigCKAC0AlgCWAC4AnQCdAC8AsQC1ADAAtwC5ADUAuwC7ADgAvQC+ADkAwADBADsAwwDFAD0AxwDOAEAA0gDSAEgA1ADeAEkA4ADvAFQA8QDxAGQA9gD4AGUA+wD8AGgA/gEAAGoBAwEFAG0BCgEKAHABDQENAHEBGAEaAHIBIgEiAHUBLgEwAHYBMwE1AHkBNwE3AHwBOQE5AH0BOwE7AH4BQwFEAH8BVAFUAIEBVgFWAIIBWAFYAIMBXAFeAIQBhAGFAIcBhwGJAIkB6AHoAIwB6gHrAI0B7QHtAI8B8AHwAJAB+wH9AJECQAJAAJQCQwJDAJUCVQJVAJYCVwJYAJcCiwKMAJkCjgKOAJsCkAKlAJwCqgKxALICswK2ALoCuwLAAL4CxQLNAMQCzwLPAM0C0QLRAM4C0wLTAM8C1QLVANAC1wLgANEC6QLrANsC7QLtAN4C7wLvAN8C8QLxAOAC8wLzAOEC+AL4AOIC+gL6AOMC/AL8AOQC/gL+AOUDAAMAAOYDAgMOAOcDEAMQAPQDEgMSAPUDFAMUAPYDHwMfAPcDIQMhAPgDIwMjAPkDMQMxAPoDMwM2APsDOAM4AP8DOgM6AQADQANJAQEDVANYAQsDXgNgARADZQNlARMDdwN6ARQDfgOAARgDiQOJARsDlwOcARwDnwOuASIDsQOxATIDtQO1ATMDtwO3ATQDuwO7ATUDvgO/ATYDwQPCATgDxAPKAToDzAPOAUED0APVAUQD1wPYAUoD2gPdAUwD4wPkAVAD5gPmAVID6APoAVMD6gPtAVQD8AP1AVgD9wP3AV4D+wP8AV8EAQQBAWEEAwQMAWIEDwQQAWwEEgQVAW4EHAQdAXIEIQQhAXQEIwQpAXUELwRXAXwEWQRZAaUEWwRoAaYEcARwAbQEgQSGAbUEiASIAbsEjASNAbwEkASQAb4EkgSTAb8ElQSVAcEElwSXAcIEqASsAcMErgSuAcgEsASxAckEswSzAcsEtwS5AcwEuwS7Ac8EvQS/AdAEwQTBAdMEwwTDAdQExQTLAdUEzQTNAdwE0ATQAd0E0wTXAd4E2QTZAeME2wTcAeQE4ATgAeYE4wTjAecE7gTuAegE+wT7AekFAgUCAeoFBgUGAesAAgCaAAYABgAAAAsACwABABAAEAACABIAEgADACUAKQAEACwANAAJADgAPgASAEUARwAZAEkASQAcAEwATAAdAFEAVAAeAFYAVgAiAFoAWgAjAFwAXgAkAIoAigAnAJYAlgAoALEAtAApAL0AvQAtAMEAwQAuAMcAxwAvANQA1QAwANcA1wAyANoA2gAzANwA3gA0AOAA5gA3AOwA7AA+AO4A7gA/APcA9wBAAPwA/ABBAP4A/wBCAQQBBQBEAQoBCgBGAQ0BDQBHARgBGgBIAS4BMABLATMBNQBOATcBNwBRATkBOQBSATsBOwBTAUMBRABUAVQBVABWAVYBVgBXAVgBWABYAVwBXgBZAYQBigBcAY4BjwBjAegB6ABlAe0B7QBmAfAB8QBnAfsB/QBpAg8CDwBsAh4CIABtAkACQABwAkMCQwBxAlUCVQByAlcCWABzAosCjAB1Ao4CjgB3ApACtgB4ArsCwACfAsUC1QClAtcC4AC2AukC6wDAAu0C7QDDAu8C7wDEAvEC8QDFAvMC8wDGAvYC9gDHAvgC+ADIAvoC+gDJAvwC/ADKAv4C/gDLAwADAADMAwIDDgDNAxADEADaAxIDEgDbAxQDFADcAx8DHwDdAyEDIQDeAyMDIwDfAyUDJQDgAycDJwDhAykDKQDiAysDKwDjAy0DLQDkAy8DLwDlAzEDMQDmAzMDOwDnA0ADSQDwA1QDWAD6A14DYAD/A2UDZQECA3YDegEDA34DgAEIA4kDiQELA5cDnAEMA58DrgESA7EDsQEiA7UDtQEjA7cDtwEkA7sDuwElA74DvwEmA8EDygEoA8wDzgEyA9AD1QE1A9cD3QE7A+MD5AFCA+YD5gFEA+gD6AFFA+oD7QFGA/AD9QFKA/cD9wFQA/sD/AFRBAEEDAFTBA8EEAFfBBIEFQFhBBwEHQFlBCEEIQFnBCMEKQFoBC8EVwFvBFkEWQGYBFsEaAGZBHAEcAGnBHMEcwGoBHUEdQGpBIEEhgGqBIgEiAGwBIwEjQGxBJAEkAGzBJIEkwG0BJUElQG2BJcElwG3BKgErAG4BK4ErgG9BLAEsQG+BLMEswHABLcEuQHBBLsEuwHEBL0EvwHFBMEEwQHIBMMEwwHJBMUEywHKBM0EzQHRBNAE0AHSBNIE1wHTBNkE3AHZBOAE4AHdBOME4wHeBOkE6QHfBO4E7gHgBPkE+QHhBPsE+wHiBQIFAgHjBQYFBgHkAAIBdAAGAAYADwALAAsADwAQABAAGgASABIAGgAlACUAAgAmACYAJAAnACcAEAAoACgAAQApACkABAAuAC4ACAAv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AAAABAAAAAAAAAAAAAAAAAAAAAAAAAACAAcAGgAJAAIAAAACAAEAAgAAAAIAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAABAAEwAAAAMAAAAAAA0AAAAAAAMAAAADAAAAAAACAAEAEAATAA0AAAAgACIAAAAAAAAAAAAAAAAAAAAeACEAAAADAAAAAwAAAAMAAAAAAAAAAAADABAAEwAAAAEAAQAAAAAAAAAAAB4AAAAAAAAAAgABAAAAAAAAAB4AIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAGwAAAA8ADwAYAA8ADwAPABgAAAAAAAAAGAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABkAJAAAAA4AFQAcAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAKAAUACgAAAAAAAAAAAAAAAAAVAAUAAAAAABUAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAABUABQASABkAFQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAABAAEAAQABAAEAAQABAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgALAAsACwALAAwABgAGAAYABgAGAAYABgABAAEAAQABAAEAAAAAAAAAAAADAAcABwAHAAcABwAIAAgACAAIAAkACQAEAAYABAAGAAQABgACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAcAAgAHAAIABwAAAAAAAAAAAAAAAAAUABEAFAARABQAEQAUABEAFAARAA0AAAANAAAADQAAAAsACAALAAgACwAIAAsACAALAAgACwAIABYAAAAMAAkADAAXAB0AFwAdABcAHQAAAAAAAgAAAAAAAAAAAAoACgAKAAoACgAKAAoABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUADgAOAA4ADgASAAoACgAKAAUABQAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAcABwAHAAcAAAAFQAAAA4ADgAOAA4ADgAOACQAEgASAAAAAAAAAAQAAAAAAAAAAgAMAAAAAAAEAAAAAAAXAAAAAAAAAAAAAAACAAAAAAAMABAAAAAMAAEAAAADAAAACAAAAAcAAAAJAAAAAAAIAAcACAAAAAAAAAAAAAAAAAAjAAAAAAAfAAQAAAAAAAAAAAAAAAAAAgAAAAAAAgANABAABgABAAMABwADAAEACQATAAEAAwARAAAAAAAAAAMACQAWAAAAFgAAABYAAAAMAAkADwAPAAAAAAAPAAAAAwAEAAYAAAAAAAEAAwAAAAAAGgAJAAEAAgAAAAAAAgABAAwACQAAABAAEwAAAAQABgAEAAYAAAAAAAAAAQAAAAEAAQAQABMAAAAAAAAAAwAAAAMAAgAHAAIAAQACAAcAAAAAAB8ACQAfAAkAHwAJACAAIgAAAAMAAQAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAgAHAAIABwACAAcAAgAHAAIABwACAAcAAgAHAAIAAQACAAEAAgABAAIABwACAAEACwAIAAsACAAAAAgAAAAIAAAACAAAAAgAAAAIAAwACQAMAAkADAAJAAAADQAAACAAIgAAAAMAAAAA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BjIGOgX8BoYHVAXABnIGQgYCB2QGCAZKBpIGDgccBcQFyAYUByoFzAXQBdQGUgZaBhoGngc4BdgGfAZiBiAHRgYmBmoGqgYsBdwF4AXkBegGtgbCBs4G2gbmBewAAgcCAOsCggJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeICdAKEA0EChgKFA0AB8wKDAogCYgTjBOQB+gH7BOUE5gTnAfwE6AH9Af4B/wTtAgACAATuBO8CAQICAgMCCgT8BP0CCwIMAg0CDgIPAhAFAAUBBQMFBgUPAhICEwIUAhUCFgIXAhgCGQIaAhsCBAIFAgYCBwIIAgkCSwIdAh4CHwIgBQkCIQIjAiQCJQInAikChwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA5MDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwUQA3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGBRMDhwOIA4oDiQOLA4wDjQOOA48DkAORA5IDlAOVA5YFEQUSBNwE3QTeBN8E6QTsBOoE6wTwBPEE8gTgBOEE4gT7BP4E/wUCBQQFBQIRBQcE8wT0BPUE9gT3BPgE+QT6BRQFFQUWBRcFCAUKBQsCKAUNAioFDgUMAiYCHAIiBRwFHQACBwAA+gH3AoIB4QHgAd8B3gHdAdwB2wHaAdkB2AJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeIB+AH5AoQChgKFAocCgwKIAmIB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CEAIRBQ8CEgITAhQCFQIWAhcCGAIZAhoCGwJLAh0CHgIfAiAFCQIhAiMCJAIlAiYCJwIoAikCKwIsAi4CLQNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YFEQUSBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AIPBPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBRQFFQUWBRcFCAUKBQsFDQIqBQ4FDAIcAiIFHAUdAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMZAxoAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwJ6AAIAAAABBt4AAQAGAssCzALdAt4DYANpAAEABgBNAE4C8gPfA+EEWgACAAMBlAGUAAAB1QHXAAECLwI1AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACZQJuAAoAAgAGAE0ATQAGAE4ATgAEAvIC8gAFA98D3wADA+ED4QACBFoEWgABAAIABAAUAB0AAAJ2AnYACgKBAoEACwSeBKUADAACAAYAGgAaAAAAHAAcAAECWgJfAAICYwJjAAgCZQJuAAkCdQJ1ABMAAQAUABoAHAJaAlsCXAJdAl4CXwJjAnUCdgKBBJ4EnwSgBKEEogSjBKQEpQABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAo0CjwKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAsgCygLMAs4C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9QL3AvkC+wL9Av8DAQMDAwUDBwMKAwwDDgMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzcDOQM7Az0DPwOvA7ADsQOyA7QDtQO2A7cDuAO5A7oDuwO8A70D1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPlA+cD6QPrBAAEAgQEBBIEGQQfBCUEjwSQBJQEmAUZBRsAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGnAa0BsgG1AosCjAKOApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAscCyQLLAs0CzwLRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL0AvYC+AL6AvwC/gMAAwIDBAMGAwkDCwMNAw8DEQMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM2AzgDOgM8Az4DlwOYA5kDmgObA5wDnQOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD5APmA+gD6gP/BAEEAwQYBB4EJASOBJMElwUYBRoBzAACAE0BzQACAFABzgADAEoATQHPAAMASgBQAAEAAQBKAcsAAgBKAdEAAgBYAdAAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBLcAAgCtAs0AAgCpBL0AAgCtBMoAAgCpBLgAAgCtAs4AAgCpBKcAAgCpBL4AAgCtBFoAAgCtBMsAAgCpAzwAAgCpAz4AAgCpAz0AAgCpAz8AAgCpBLYAAgCpBLsAAgHKBLkAAgCtBKYAAgCpAucAAgHKA/EAAgCpBMUAAgCtAx8AAgHKBNAAAgCtBNUAAgCtBNMAAgCqAzYAAgCpBNkAAgCtBLwAAgHKBLoAAgCtA/IAAgCpBMYAAgCtAyAAAgHKBNEAAgCtBNYAAgCtBNQAAgCqAzcAAgCpBNoAAgCtBL8AAgCpAvgAAgHKBMEAAgCtAvoAAgCpAvwAAgHKBMMAAgCtAxUAAgCpAxsAAgHKBM4AAgCtA+YAAgCpBNcAAgCtA+QAAgCoBMAAAgCpAvkAAgHKBMIAAgCtAvsAAgCpAv0AAgHKBMQAAgCtAxYAAgCpAxwAAgHKBM8AAgCtA+cAAgCpBNgAAgCtA+UAAgCoAw8AAgCpAxEAAgHKBMwAAgCtBLIAAgCsAxAAAgCpAxIAAgHKBM0AAgCtBLMAAgCsAwIAAgCpAwQAAgHKBMcAAgCtBKgAAgCoAqAAAgCqAqoAAgCpBIEAAgCtA+oAAgCoBIMAAgCrBIUAAgCqAwMAAgCpAwUAAgHKBMgAAgCtBKkAAgCoArsAAgCqAsUAAgCpBIIAAgCtA+sAAgCoBIQAAgCrBIYAAgCqArgAAgCpArcAAgCoBFgAAgCrAuwAAgCqBK8AAgCsBGkAAgCpBHEAAgCtBGsAAgCoBG0AAgCrBG8AAgCqBGoAAgCpBHIAAgCtBGwAAgCoBG4AAgCrBHAAAgCqBHcAAgCpBH8AAgCtBHkAAgCoBHsAAgCrBH0AAgCqBHgAAgCpBIAAAgCtBHoAAgCoBHwAAgCrBH4AAgCqApEAAgCpBC8AAgCtApAAAgCoBDEAAgCrApMAAgCqBKoAAgCsApkAAgCpBEcAAgCtApgAAgCoBEkAAgCrBEsAAgCqBKwAAgCsAp0AAgCpBFkAAgCtApwAAgCoBFcAAgCrAusAAgCqBK4AAgCsAqwAAgCpBDAAAgCtAqsAAgCoBDIAAgCrAq4AAgCqBKsAAgCsArQAAgCpBEgAAgCtArMAAgCoBEoAAgCrBEwAAgCqBK0AAgCsAr0AAgCpBFwAAgCtArwAAgCoBF4AAgCrAr8AAgCqBLEAAgCsAsIAAgCpBHQAAgCtAsEAAgCoBHYAAgCrAyYAAgCqBLUAAgCsAqIAAgCpBFsAAgCtAqEAAgCoBF0AAgCrAqQAAgCqBLAAAgCsAqcAAgCpBHMAAgCtAqYAAgCoBHUAAgCrAyUAAgCqBLQAAgCsBMkAAwCqAKkE0gADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==",
85458
  "Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCp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GRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKa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/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/o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A9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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"
85459
};
85460
85461
/*! DataTables 2.3.7
85462
 * © SpryMedia Ltd - datatables.net/license
85463
 */
85464
85465
(function( factory ) {
85466
	"use strict";
85467
85468
	if ( typeof define === 'function' && define.amd ) {
85469
		// AMD
85470
		define( ['jquery'], function ( $ ) {
85471
			return factory( $, window, document );
85472
		} );
85473
	}
85474
	else if ( typeof exports === 'object' ) {
85475
		// CommonJS
85476
		// jQuery's factory checks for a global window - if it isn't present then it
85477
		// returns a factory function that expects the window object
85478
		var jq = require('jquery');
85479
85480
		if (typeof window === 'undefined') {
85481
			module.exports = function (root, $) {
85482
				if ( ! root ) {
85483
					// CommonJS environments without a window global must pass a
85484
					// root. This will give an error otherwise
85485
					root = window;
85486
				}
85487
85488
				if ( ! $ ) {
85489
					$ = jq( root );
85490
				}
85491
85492
				return factory( $, root, root.document );
85493
			};
85494
		}
85495
		else {
85496
			module.exports = factory( jq, window, window.document );
85497
		}
85498
	}
85499
	else {
85500
		// Browser
85501
		window.DataTable = factory( jQuery, window, document );
85502
	}
85503
}(function( $, window, document ) {
85504
	"use strict";
85505
85506
85507
	var DataTable = function ( selector, options )
85508
	{
85509
		// Check if called with a window or jQuery object for DOM less applications
85510
		// This is for backwards compatibility
85511
		if (DataTable.factory(selector, options)) {
85512
			return DataTable;
85513
		}
85514
85515
		// When creating with `new`, create a new DataTable, returning the API instance
85516
		if (this instanceof DataTable) {
85517
			return $(selector).DataTable(options);
85518
		}
85519
		else {
85520
			// Argument switching
85521
			options = selector;
85522
		}
85523
85524
		var _that = this;
85525
		var emptyInit = options === undefined;
85526
		var len = this.length;
85527
85528
		if ( emptyInit ) {
85529
			options = {};
85530
		}
85531
85532
		// Method to get DT API instance from jQuery object
85533
		this.api = function ()
85534
		{
85535
			return new _Api( this );
85536
		};
85537
85538
		this.each(function() {
85539
			// For each initialisation we want to give it a clean initialisation
85540
			// object that can be bashed around
85541
			var o = {};
85542
			var oInit = len > 1 ? // optimisation for single table case
85543
				_fnExtend( o, options, true ) :
85544
				options;
85545
85546
85547
			var i=0, iLen;
85548
			var sId = this.getAttribute( 'id' );
85549
			var defaults = DataTable.defaults;
85550
			var $this = $(this);
85551
85552
			// Sanity check
85553
			if ( this.nodeName.toLowerCase() != 'table' )
85554
			{
85555
				_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
85556
				return;
85557
			}
85558
85559
			// Special case for options
85560
			if (oInit.on && oInit.on.options) {
85561
				_fnListener($this, 'options', oInit.on.options);
85562
			}
85563
85564
			$this.trigger( 'options.dt', oInit );
85565
85566
			/* Backwards compatibility for the defaults */
85567
			_fnCompatOpts( defaults );
85568
			_fnCompatCols( defaults.column );
85569
85570
			/* Convert the camel-case defaults to Hungarian */
85571
			_fnCamelToHungarian( defaults, defaults, true );
85572
			_fnCamelToHungarian( defaults.column, defaults.column, true );
85573
85574
			/* Setting up the initialisation object */
85575
			_fnCamelToHungarian( defaults, $.extend( oInit, _fnEscapeObject($this.data()) ), true );
85576
85577
85578
85579
			/* Check to see if we are re-initialising a table */
85580
			var allSettings = DataTable.settings;
85581
			for ( i=0, iLen=allSettings.length ; i<iLen ; i++ )
85582
			{
85583
				var s = allSettings[i];
85584
85585
				/* Base check on table node */
85586
				if (
85587
					s.nTable == this ||
85588
					(s.nTHead && s.nTHead.parentNode == this) ||
85589
					(s.nTFoot && s.nTFoot.parentNode == this)
85590
				) {
85591
					var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;
85592
					var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;
85593
85594
					if ( emptyInit || bRetrieve )
85595
					{
85596
						return s.oInstance;
85597
					}
85598
					else if ( bDestroy )
85599
					{
85600
						new DataTable.Api(s).destroy();
85601
						break;
85602
					}
85603
					else
85604
					{
85605
						_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );
85606
						return;
85607
					}
85608
				}
85609
85610
				/* If the element we are initialising has the same ID as a table which was previously
85611
				 * initialised, but the table nodes don't match (from before) then we destroy the old
85612
				 * instance by simply deleting it. This is under the assumption that the table has been
85613
				 * destroyed by other methods. Anyone using non-id selectors will need to do this manually
85614
				 */
85615
				if ( s.sTableId == this.id )
85616
				{
85617
					allSettings.splice( i, 1 );
85618
					break;
85619
				}
85620
			}
85621
85622
			/* Ensure the table has an ID - required for accessibility */
85623
			if ( sId === null || sId === "" )
85624
			{
85625
				sId = "DataTables_Table_"+(DataTable.ext._unique++);
85626
				this.id = sId;
85627
			}
85628
85629
			// Replacing an existing colgroup with our own. Not ideal, but a merge could take a lot of code
85630
			$this.children('colgroup').remove();
85631
85632
			/* Create the settings object for this table and set some of the default parameters */
85633
			var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
85634
				"sDestroyWidth": $this[0].style.width,
85635
				"sInstance":     sId,
85636
				"sTableId":      sId,
85637
				colgroup: $('<colgroup>'),
85638
				fastData: function (row, column, type) {
85639
					return _fnGetCellData(oSettings, row, column, type);
85640
				}
85641
			} );
85642
			oSettings.nTable = this;
85643
			oSettings.oInit  = oInit;
85644
85645
			allSettings.push( oSettings );
85646
85647
			// Make a single API instance available for internal handling
85648
			oSettings.api = new _Api( oSettings );
85649
85650
			// Need to add the instance after the instance after the settings object has been added
85651
			// to the settings array, so we can self reference the table instance if more than one
85652
			oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();
85653
85654
			// Backwards compatibility, before we apply all the defaults
85655
			_fnCompatOpts( oInit );
85656
85657
			// If the length menu is given, but the init display length is not, use the length menu
85658
			if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
85659
			{
85660
				oInit.iDisplayLength = Array.isArray(oInit.aLengthMenu[0])
85661
					? oInit.aLengthMenu[0][0]
85662
					: $.isPlainObject( oInit.aLengthMenu[0] )
85663
						? oInit.aLengthMenu[0].value
85664
						: oInit.aLengthMenu[0];
85665
			}
85666
85667
			// Apply the defaults and init options to make a single init object will all
85668
			// options defined from defaults and instance options.
85669
			oInit = _fnExtend( $.extend( true, {}, defaults ), oInit );
85670
85671
85672
			// Map the initialisation options onto the settings object
85673
			_fnMap( oSettings.oFeatures, oInit, [
85674
				"bPaginate",
85675
				"bLengthChange",
85676
				"bFilter",
85677
				"bSort",
85678
				"bSortMulti",
85679
				"bInfo",
85680
				"bProcessing",
85681
				"bAutoWidth",
85682
				"bSortClasses",
85683
				"bServerSide",
85684
				"bDeferRender"
85685
			] );
85686
			_fnMap( oSettings, oInit, [
85687
				"ajax",
85688
				"fnFormatNumber",
85689
				"sServerMethod",
85690
				"aaSorting",
85691
				"aaSortingFixed",
85692
				"aLengthMenu",
85693
				"sPaginationType",
85694
				"iStateDuration",
85695
				"bSortCellsTop",
85696
				"iTabIndex",
85697
				"sDom",
85698
				"fnStateLoadCallback",
85699
				"fnStateSaveCallback",
85700
				"renderer",
85701
				"searchDelay",
85702
				"rowId",
85703
				"caption",
85704
				"layout",
85705
				"orderDescReverse",
85706
				"orderIndicators",
85707
				"orderHandler",
85708
				"titleRow",
85709
				"typeDetect",
85710
				"columnTitleTag",
85711
				[ "iCookieDuration", "iStateDuration" ], // backwards compat
85712
				[ "oSearch", "oPreviousSearch" ],
85713
				[ "aoSearchCols", "aoPreSearchCols" ],
85714
				[ "iDisplayLength", "_iDisplayLength" ]
85715
			] );
85716
			_fnMap( oSettings.oScroll, oInit, [
85717
				[ "sScrollX", "sX" ],
85718
				[ "sScrollXInner", "sXInner" ],
85719
				[ "sScrollY", "sY" ],
85720
				[ "bScrollCollapse", "bCollapse" ]
85721
			] );
85722
			_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
85723
85724
			/* Callback functions which are array driven */
85725
			_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback );
85726
			_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams );
85727
			_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams );
85728
			_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded );
85729
			_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback );
85730
			_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow );
85731
			_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback );
85732
			_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback );
85733
			_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete );
85734
			_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback );
85735
85736
			oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
85737
85738
			// Add event listeners
85739
			if (oInit.on) {
85740
				Object.keys(oInit.on).forEach(function (key) {
85741
					_fnListener($this, key, oInit.on[key]);
85742
				});
85743
			}
85744
85745
			/* Browser support detection */
85746
			_fnBrowserDetect( oSettings );
85747
85748
			var oClasses = oSettings.oClasses;
85749
85750
			$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );
85751
			$this.addClass( oClasses.table );
85752
85753
			if (! oSettings.oFeatures.bPaginate) {
85754
				oInit.iDisplayStart = 0;
85755
			}
295
85756
296
			/* Browser support detection */
297
			_fnBrowserDetect( oSettings );
298
			
299
			var oClasses = oSettings.oClasses;
300
			
301
			$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );
302
			$this.addClass( oClasses.table );
303
			
304
			if (! oSettings.oFeatures.bPaginate) {
305
				oInit.iDisplayStart = 0;
306
			}
307
			
308
			if ( oSettings.iInitDisplayStart === undefined )
85757
			if ( oSettings.iInitDisplayStart === undefined )
309
			{
85758
			{
310
				/* Display start point, taking into account the save saving */
85759
				/* Display start point, taking into account the save saving */
311
				oSettings.iInitDisplayStart = oInit.iDisplayStart;
85760
				oSettings.iInitDisplayStart = oInit.iDisplayStart;
312
				oSettings._iDisplayStart = oInit.iDisplayStart;
85761
				oSettings._iDisplayStart = oInit.iDisplayStart;
313
			}
85762
			}
314
			
85763
315
			var defer = oInit.iDeferLoading;
85764
			var defer = oInit.iDeferLoading;
316
			if ( defer !== null )
85765
			if ( defer !== null )
317
			{
85766
			{
318
				oSettings.deferLoading = true;
85767
				oSettings.deferLoading = true;
319
			
85768
320
				var tmp = Array.isArray(defer);
85769
				var tmp = Array.isArray(defer);
321
				oSettings._iRecordsDisplay = tmp ? defer[0] : defer;
85770
				oSettings._iRecordsDisplay = tmp ? defer[0] : defer;
322
				oSettings._iRecordsTotal = tmp ? defer[1] : defer;
85771
				oSettings._iRecordsTotal = tmp ? defer[1] : defer;
323
			}
85772
			}
324
			
85773
325
			/*
85774
			/*
326
			 * Columns
85775
			 * Columns
327
			 * See if we should load columns automatically or use defined ones
85776
			 * See if we should load columns automatically or use defined ones
Lines 329-335 Link Here
329
			var columnsInit = [];
85778
			var columnsInit = [];
330
			var thead = this.getElementsByTagName('thead');
85779
			var thead = this.getElementsByTagName('thead');
331
			var initHeaderLayout = _fnDetectHeader( oSettings, thead[0] );
85780
			var initHeaderLayout = _fnDetectHeader( oSettings, thead[0] );
332
			
85781
333
			// If we don't have a columns array, then generate one with nulls
85782
			// If we don't have a columns array, then generate one with nulls
334
			if ( oInit.aoColumns ) {
85783
			if ( oInit.aoColumns ) {
335
				columnsInit = oInit.aoColumns;
85784
				columnsInit = oInit.aoColumns;
Lines 339-376 Link Here
339
					columnsInit.push( null );
85788
					columnsInit.push( null );
340
				}
85789
				}
341
			}
85790
			}
342
			
85791
343
			// Add the columns
85792
			// Add the columns
344
			for ( i=0, iLen=columnsInit.length ; i<iLen ; i++ ) {
85793
			for ( i=0, iLen=columnsInit.length ; i<iLen ; i++ ) {
345
				_fnAddColumn( oSettings );
85794
				_fnAddColumn( oSettings );
346
			}
85795
			}
347
			
85796
348
			// Apply the column definitions
85797
			// Apply the column definitions
349
			_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, columnsInit, initHeaderLayout, function (iCol, oDef) {
85798
			_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, columnsInit, initHeaderLayout, function (iCol, oDef) {
350
				_fnColumnOptions( oSettings, iCol, oDef );
85799
				_fnColumnOptions( oSettings, iCol, oDef );
351
			} );
85800
			} );
352
			
85801
353
			/* HTML5 attribute detection - build an mData object automatically if the
85802
			/* HTML5 attribute detection - build an mData object automatically if the
354
			 * attributes are found
85803
			 * attributes are found
355
			 */
85804
			 */
356
			var rowOne = $this.children('tbody').find('tr:first-child').eq(0);
85805
			var rowOne = $this.children('tbody').find('tr:first-child').eq(0);
357
			
85806
358
			if ( rowOne.length ) {
85807
			if ( rowOne.length ) {
359
				var a = function ( cell, name ) {
85808
				var a = function ( cell, name ) {
360
					return cell.getAttribute( 'data-'+name ) !== null ? name : null;
85809
					return cell.getAttribute( 'data-'+name ) !== null ? name : null;
361
				};
85810
				};
362
			
85811
363
				$( rowOne[0] ).children('th, td').each( function (i, cell) {
85812
				$( rowOne[0] ).children('th, td').each( function (i, cell) {
364
					var col = oSettings.aoColumns[i];
85813
					var col = oSettings.aoColumns[i];
365
			
85814
366
					if (! col) {
85815
					if (! col) {
367
						_fnLog( oSettings, 0, 'Incorrect column count', 18 );
85816
						_fnLog( oSettings, 0, 'Incorrect column count', 18 );
368
					}
85817
					}
369
			
85818
370
					if ( col.mData === i ) {
85819
					if ( col.mData === i ) {
371
						var sort = a( cell, 'sort' ) || a( cell, 'order' );
85820
						var sort = a( cell, 'sort' ) || a( cell, 'order' );
372
						var filter = a( cell, 'filter' ) || a( cell, 'search' );
85821
						var filter = a( cell, 'filter' ) || a( cell, 'search' );
373
			
85822
374
						if ( sort !== null || filter !== null ) {
85823
						if ( sort !== null || filter !== null ) {
375
							col.mData = {
85824
							col.mData = {
376
								_:      i+'.display',
85825
								_:      i+'.display',
Lines 379-400 Link Here
379
								filter: filter !== null ? i+'.@data-'+filter : undefined
85828
								filter: filter !== null ? i+'.@data-'+filter : undefined
380
							};
85829
							};
381
							col._isArrayHost = true;
85830
							col._isArrayHost = true;
382
			
85831
383
							_fnColumnOptions( oSettings, i );
85832
							_fnColumnOptions( oSettings, i );
384
						}
85833
						}
385
					}
85834
					}
386
				} );
85835
				} );
387
			}
85836
			}
388
			
85837
389
			// Must be done after everything which can be overridden by the state saving!
85838
			// Must be done after everything which can be overridden by the state saving!
390
			_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState );
85839
			_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState );
391
			
85840
392
			var features = oSettings.oFeatures;
85841
			var features = oSettings.oFeatures;
393
			if ( oInit.bStateSave )
85842
			if ( oInit.bStateSave )
394
			{
85843
			{
395
				features.bStateSave = true;
85844
				features.bStateSave = true;
396
			}
85845
			}
397
			
85846
398
			// If aaSorting is not defined, then we use the first indicator in asSorting
85847
			// If aaSorting is not defined, then we use the first indicator in asSorting
399
			// in case that has been altered, so the default sort reflects that option
85848
			// in case that has been altered, so the default sort reflects that option
400
			if ( oInit.aaSorting === undefined ) {
85849
			if ( oInit.aaSorting === undefined ) {
Lines 403-452 Link Here
403
					sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];
85852
					sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];
404
				}
85853
				}
405
			}
85854
			}
406
			
85855
407
			// Do a first pass on the sorting classes (allows any size changes to be taken into
85856
			// Do a first pass on the sorting classes (allows any size changes to be taken into
408
			// account, and also will apply sorting disabled classes if disabled
85857
			// account, and also will apply sorting disabled classes if disabled
409
			_fnSortingClasses( oSettings );
85858
			_fnSortingClasses( oSettings );
410
			
85859
411
			_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
85860
			_fnCallbackReg( oSettings, 'aoDrawCallback', function () {
412
				if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {
85861
				if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {
413
					_fnSortingClasses( oSettings );
85862
					_fnSortingClasses( oSettings );
414
				}
85863
				}
415
			} );
85864
			} );
416
			
85865
417
			
85866
418
			/*
85867
			/*
419
			 * Table HTML init
85868
			 * Table HTML init
420
			 * Cache the header, body and footer as required, creating them if needed
85869
			 * Cache the header, body and footer as required, creating them if needed
421
			 */
85870
			 */
422
			var caption = $this.children('caption');
85871
			var caption = $this.children('caption');
423
			
85872
424
			if ( oSettings.caption ) {
85873
			if ( oSettings.caption ) {
425
				if ( caption.length === 0 ) {
85874
				if ( caption.length === 0 ) {
426
					caption = $('<caption/>').appendTo( $this );
85875
					caption = $('<caption/>').prependTo( $this );
427
				}
85876
				}
428
			
85877
429
				caption.html( oSettings.caption );
85878
				caption.html( oSettings.caption );
430
			}
85879
			}
431
			
85880
432
			// Store the caption side, so we can remove the element from the document
85881
			// Store the caption side, so we can remove the element from the document
433
			// when creating the element
85882
			// when creating the element
434
			if (caption.length) {
85883
			if (caption.length) {
435
				caption[0]._captionSide = caption.css('caption-side');
85884
				caption[0]._captionSide = caption.css('caption-side');
436
				oSettings.captionNode = caption[0];
85885
				oSettings.captionNode = caption[0];
437
			}
85886
			}
438
			
85887
85888
			// Place the colgroup element in the correct location for the HTML structure
85889
			if (caption.length) {
85890
				oSettings.colgroup.insertAfter(caption);
85891
			}
85892
			else {
85893
				oSettings.colgroup.prependTo(oSettings.nTable);
85894
			}
85895
439
			if ( thead.length === 0 ) {
85896
			if ( thead.length === 0 ) {
440
				thead = $('<thead/>').appendTo($this);
85897
				thead = $('<thead/>').appendTo($this);
441
			}
85898
			}
442
			oSettings.nTHead = thead[0];
85899
			oSettings.nTHead = thead[0];
443
			
85900
444
			var tbody = $this.children('tbody');
85901
			var tbody = $this.children('tbody');
445
			if ( tbody.length === 0 ) {
85902
			if ( tbody.length === 0 ) {
446
				tbody = $('<tbody/>').insertAfter(thead);
85903
				tbody = $('<tbody/>').insertAfter(thead);
447
			}
85904
			}
448
			oSettings.nTBody = tbody[0];
85905
			oSettings.nTBody = tbody[0];
449
			
85906
450
			var tfoot = $this.children('tfoot');
85907
			var tfoot = $this.children('tfoot');
451
			if ( tfoot.length === 0 ) {
85908
			if ( tfoot.length === 0 ) {
452
				// If we are a scrolling table, and no footer has been given, then we need to create
85909
				// If we are a scrolling table, and no footer has been given, then we need to create
Lines 454-470 Link Here
454
				tfoot = $('<tfoot/>').appendTo($this);
85911
				tfoot = $('<tfoot/>').appendTo($this);
455
			}
85912
			}
456
			oSettings.nTFoot = tfoot[0];
85913
			oSettings.nTFoot = tfoot[0];
457
			
85914
458
			// Copy the data index array
85915
			// Copy the data index array
459
			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
85916
			oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
460
			
85917
461
			// Initialisation complete - table can be drawn
85918
			// Initialisation complete - table can be drawn
462
			oSettings.bInitialised = true;
85919
			oSettings.bInitialised = true;
463
			
85920
464
			// Language definitions
85921
			// Language definitions
465
			var oLanguage = oSettings.oLanguage;
85922
			var oLanguage = oSettings.oLanguage;
466
			$.extend( true, oLanguage, oInit.oLanguage );
85923
			$.extend( true, oLanguage, oInit.oLanguage );
467
			
85924
468
			if ( oLanguage.sUrl ) {
85925
			if ( oLanguage.sUrl ) {
469
				// Get the language definitions from a file
85926
				// Get the language definitions from a file
470
				$.ajax( {
85927
				$.ajax( {
Lines 473-486 Link Here
473
					success: function ( json ) {
85930
					success: function ( json ) {
474
						_fnCamelToHungarian( defaults.oLanguage, json );
85931
						_fnCamelToHungarian( defaults.oLanguage, json );
475
						$.extend( true, oLanguage, json, oSettings.oInit.oLanguage );
85932
						$.extend( true, oLanguage, json, oSettings.oInit.oLanguage );
476
			
85933
477
						_fnCallbackFire( oSettings, null, 'i18n', [oSettings], true);
85934
						_fnCallbackFire( oSettings, null, 'i18n', [oSettings], true);
478
						_fnInitialise( oSettings );
85935
						_fnInitialise( oSettings );
479
					},
85936
					},
480
					error: function () {
85937
					error: function () {
481
						// Error occurred loading language file
85938
						// Error occurred loading language file
482
						_fnLog( oSettings, 0, 'i18n file loading error', 21 );
85939
						_fnLog( oSettings, 0, 'i18n file loading error', 21 );
483
			
85940
484
						// Continue on as best we can
85941
						// Continue on as best we can
485
						_fnInitialise( oSettings );
85942
						_fnInitialise( oSettings );
486
					}
85943
					}
Lines 494-505 Link Here
494
		_that = null;
85951
		_that = null;
495
		return this;
85952
		return this;
496
	};
85953
	};
497
	
85954
498
	
85955
499
	
85956
500
	/**
85957
	/**
501
	 * DataTables extensions
85958
	 * DataTables extensions
502
	 * 
85959
	 *
503
	 * This namespace acts as a collection area for plug-ins that can be used to
85960
	 * This namespace acts as a collection area for plug-ins that can be used to
504
	 * extend DataTables capabilities. Indeed many of the build in methods
85961
	 * extend DataTables capabilities. Indeed many of the build in methods
505
	 * use this method to provide their own capabilities (sorting methods for
85962
	 * use this method to provide their own capabilities (sorting methods for
Lines 516-522 Link Here
516
		 *
85973
		 *
517
		 *  @type string
85974
		 *  @type string
518
		 */
85975
		 */
519
		builder: "dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7",
85976
		builder: "dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1",
520
85977
521
		/**
85978
		/**
522
		 * Buttons. For use with the Buttons extension for DataTables. This is
85979
		 * Buttons. For use with the Buttons extension for DataTables. This is
Lines 527-542 Link Here
527
		 *  @default {}
85984
		 *  @default {}
528
		 */
85985
		 */
529
		buttons: {},
85986
		buttons: {},
530
	
85987
531
	
85988
532
		/**
85989
		/**
533
		 * ColumnControl buttons and content
85990
		 * ColumnControl buttons and content
534
		 *
85991
		 *
535
		 *  @type object
85992
		 *  @type object
536
		 */
85993
		 */
537
		ccContent: {},
85994
		ccContent: {},
538
	
85995
539
	
85996
540
		/**
85997
		/**
541
		 * Element class names
85998
		 * Element class names
542
		 *
85999
		 *
Lines 544-554 Link Here
544
		 *  @default {}
86001
		 *  @default {}
545
		 */
86002
		 */
546
		classes: {},
86003
		classes: {},
547
	
86004
548
	
86005
549
		/**
86006
		/**
550
		 * Error reporting.
86007
		 * Error reporting.
551
		 * 
86008
		 *
552
		 * How should DataTables report an error. Can take the value 'alert',
86009
		 * How should DataTables report an error. Can take the value 'alert',
553
		 * 'throw', 'none' or a function.
86010
		 * 'throw', 'none' or a function.
554
		 *
86011
		 *
Lines 556-585 Link Here
556
		 *  @default alert
86013
		 *  @default alert
557
		 */
86014
		 */
558
		errMode: "alert",
86015
		errMode: "alert",
559
	
86016
560
		/** HTML entity escaping */
86017
		/** HTML entity escaping */
561
		escape: {
86018
		escape: {
562
			/** When reading data-* attributes for initialisation options */
86019
			/** When reading data-* attributes for initialisation options */
563
			attributes: false
86020
			attributes: false
564
		},
86021
		},
565
	
86022
566
		/**
86023
		/**
567
		 * Legacy so v1 plug-ins don't throw js errors on load
86024
		 * Legacy so v1 plug-ins don't throw js errors on load
568
		 */
86025
		 */
569
		feature: [],
86026
		feature: [],
570
	
86027
571
		/**
86028
		/**
572
		 * Feature plug-ins.
86029
		 * Feature plug-ins.
573
		 * 
86030
		 *
574
		 * This is an object of callbacks which provide the features for DataTables
86031
		 * This is an object of callbacks which provide the features for DataTables
575
		 * to be initialised via the `layout` option.
86032
		 * to be initialised via the `layout` option.
576
		 */
86033
		 */
577
		features: {},
86034
		features: {},
578
	
86035
579
	
86036
580
		/**
86037
		/**
581
		 * Row searching.
86038
		 * Row searching.
582
		 * 
86039
		 *
583
		 * This method of searching is complimentary to the default type based
86040
		 * This method of searching is complimentary to the default type based
584
		 * searching, and a lot more comprehensive as it allows you complete control
86041
		 * searching, and a lot more comprehensive as it allows you complete control
585
		 * over the searching logic. Each element in this array is a function
86042
		 * over the searching logic. Each element in this array is a function
Lines 636-643 Link Here
636
		 *    );
86093
		 *    );
637
		 */
86094
		 */
638
		search: [],
86095
		search: [],
639
	
86096
640
	
86097
641
		/**
86098
		/**
642
		 * Selector extensions
86099
		 * Selector extensions
643
		 *
86100
		 *
Lines 667-674 Link Here
667
			column: [],
86124
			column: [],
668
			row: []
86125
			row: []
669
		},
86126
		},
670
	
86127
671
	
86128
672
		/**
86129
		/**
673
		 * Legacy configuration options. Enable and disable legacy options that
86130
		 * Legacy configuration options. Enable and disable legacy options that
674
		 * are available in DataTables.
86131
		 * are available in DataTables.
Lines 685-695 Link Here
685
			 */
86142
			 */
686
			ajax: null
86143
			ajax: null
687
		},
86144
		},
688
	
86145
689
	
86146
690
		/**
86147
		/**
691
		 * Pagination plug-in methods.
86148
		 * Pagination plug-in methods.
692
		 * 
86149
		 *
693
		 * Each entry in this object is a function and defines which buttons should
86150
		 * Each entry in this object is a function and defines which buttons should
694
		 * be shown by the pagination rendering method that is used for the table:
86151
		 * be shown by the pagination rendering method that is used for the table:
695
		 * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
86152
		 * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
Lines 733-758 Link Here
733
		 *    };
86190
		 *    };
734
		 */
86191
		 */
735
		pager: {},
86192
		pager: {},
736
	
86193
737
	
86194
738
		renderer: {
86195
		renderer: {
739
			pageButton: {},
86196
			pageButton: {},
740
			header: {}
86197
			header: {}
741
		},
86198
		},
742
	
86199
743
	
86200
744
		/**
86201
		/**
745
		 * Ordering plug-ins - custom data source
86202
		 * Ordering plug-ins - custom data source
746
		 * 
86203
		 *
747
		 * The extension options for ordering of data available here is complimentary
86204
		 * The extension options for ordering of data available here is complimentary
748
		 * to the default type based ordering that DataTables typically uses. It
86205
		 * to the default type based ordering that DataTables typically uses. It
749
		 * allows much greater control over the data that is being used to
86206
		 * allows much greater control over the data that is being used to
750
		 * order a column, but is necessarily therefore more complex.
86207
		 * order a column, but is necessarily therefore more complex.
751
		 * 
86208
		 *
752
		 * This type of ordering is useful if you want to do ordering based on data
86209
		 * This type of ordering is useful if you want to do ordering based on data
753
		 * live from the DOM (for example the contents of an 'input' element) rather
86210
		 * live from the DOM (for example the contents of an 'input' element) rather
754
		 * than just the static string that DataTables knows of.
86211
		 * than just the static string that DataTables knows of.
755
		 * 
86212
		 *
756
		 * The way these plug-ins work is that you create an array of the values you
86213
		 * The way these plug-ins work is that you create an array of the values you
757
		 * wish to be ordering for the column in question and then return that
86214
		 * wish to be ordering for the column in question and then return that
758
		 * array. The data in the array much be in the index order of the rows in
86215
		 * array. The data in the array much be in the index order of the rows in
Lines 782-789 Link Here
782
		 *    }
86239
		 *    }
783
		 */
86240
		 */
784
		order: {},
86241
		order: {},
785
	
86242
786
	
86243
787
		/**
86244
		/**
788
		 * Type based plug-ins.
86245
		 * Type based plug-ins.
789
		 *
86246
		 *
Lines 799-805 Link Here
799
			 * Automatic column class assignment
86256
			 * Automatic column class assignment
800
			 */
86257
			 */
801
			className: {},
86258
			className: {},
802
	
86259
803
			/**
86260
			/**
804
			 * Type detection functions.
86261
			 * Type detection functions.
805
			 *
86262
			 *
Lines 841-853 Link Here
841
			 *    );
86298
			 *    );
842
			 */
86299
			 */
843
			detect: [],
86300
			detect: [],
844
	
86301
845
			/**
86302
			/**
846
			 * Automatic renderer assignment
86303
			 * Automatic renderer assignment
847
			 */
86304
			 */
848
			render: {},
86305
			render: {},
849
	
86306
850
	
86307
851
			/**
86308
			/**
852
			 * Type based search formatting.
86309
			 * Type based search formatting.
853
			 *
86310
			 *
Lines 857-863 Link Here
857
			 *
86314
			 *
858
			 * Note that is a search is not defined for a column of a given type,
86315
			 * Note that is a search is not defined for a column of a given type,
859
			 * no search formatting will be performed.
86316
			 * no search formatting will be performed.
860
			 * 
86317
			 *
861
			 * Pre-processing of searching data plug-ins - When you assign the sType
86318
			 * Pre-processing of searching data plug-ins - When you assign the sType
862
			 * for a column (or have it automatically detected for you by DataTables
86319
			 * for a column (or have it automatically detected for you by DataTables
863
			 * or a type detection plug-in), you will typically be using this for
86320
			 * or a type detection plug-in), you will typically be using this for
Lines 885-892 Link Here
885
			 *    }
86342
			 *    }
886
			 */
86343
			 */
887
			search: {},
86344
			search: {},
888
	
86345
889
	
86346
890
			/**
86347
			/**
891
			 * Type based ordering.
86348
			 * Type based ordering.
892
			 *
86349
			 *
Lines 927-933 Link Here
927
			 *   than the second parameter, ===0 if the two parameters are equal and
86384
			 *   than the second parameter, ===0 if the two parameters are equal and
928
			 *   >0 if the first parameter should be sorted height than the second
86385
			 *   >0 if the first parameter should be sorted height than the second
929
			 *   parameter.
86386
			 *   parameter.
930
			 * 
86387
			 *
931
			 *  @type object
86388
			 *  @type object
932
			 *  @default {}
86389
			 *  @default {}
933
			 *
86390
			 *
Lines 953-959 Link Here
953
			 */
86410
			 */
954
			order: {}
86411
			order: {}
955
		},
86412
		},
956
	
86413
957
		/**
86414
		/**
958
		 * Unique DataTables instance counter
86415
		 * Unique DataTables instance counter
959
		 *
86416
		 *
Lines 961-991 Link Here
961
		 * @private
86418
		 * @private
962
		 */
86419
		 */
963
		_unique: 0,
86420
		_unique: 0,
964
	
86421
965
	
86422
966
		//
86423
		//
967
		// Depreciated
86424
		// Depreciated
968
		// The following properties are retained for backwards compatibility only.
86425
		// The following properties are retained for backwards compatibility only.
969
		// The should not be used in new projects and will be removed in a future
86426
		// The should not be used in new projects and will be removed in a future
970
		// version
86427
		// version
971
		//
86428
		//
972
	
86429
973
		/**
86430
		/**
974
		 * Version check function.
86431
		 * Version check function.
975
		 *  @type function
86432
		 *  @type function
976
		 *  @depreciated Since 1.10
86433
		 *  @depreciated Since 1.10
977
		 */
86434
		 */
978
		fnVersionCheck: DataTable.fnVersionCheck,
86435
		fnVersionCheck: DataTable.fnVersionCheck,
979
	
86436
980
	
86437
981
		/**
86438
		/**
982
		 * Index for what 'this' index API functions should use
86439
		 * Index for what 'this' index API functions should use
983
		 *  @type int
86440
		 *  @type int
984
		 *  @deprecated Since v1.10
86441
		 *  @deprecated Since v1.10
985
		 */
86442
		 */
986
		iApiIndex: 0,
86443
		iApiIndex: 0,
987
	
86444
988
	
86445
989
		/**
86446
		/**
990
		 * Software version
86447
		 * Software version
991
		 *  @type string
86448
		 *  @type string
Lines 993-1000 Link Here
993
		 */
86450
		 */
994
		sVersion: DataTable.version
86451
		sVersion: DataTable.version
995
	};
86452
	};
996
	
86453
997
	
86454
998
	//
86455
	//
999
	// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
86456
	// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
1000
	//
86457
	//
Lines 1008-1015 Link Here
1008
		oStdClasses:  _ext.classes,
86465
		oStdClasses:  _ext.classes,
1009
		oPagination:  _ext.pager
86466
		oPagination:  _ext.pager
1010
	} );
86467
	} );
1011
	
86468
1012
	
86469
1013
	$.extend( DataTable.ext.classes, {
86470
	$.extend( DataTable.ext.classes, {
1014
		container: 'dt-container',
86471
		container: 'dt-container',
1015
		empty: {
86472
		empty: {
Lines 1058-1064 Link Here
1058
			container: 'dt-search',
86515
			container: 'dt-search',
1059
			input: 'dt-input'
86516
			input: 'dt-input'
1060
		},
86517
		},
1061
		table: 'dataTable',	
86518
		table: 'dataTable',
1062
		tbody: {
86519
		tbody: {
1063
			cell: '',
86520
			cell: '',
1064
			row: ''
86521
			row: ''
Lines 1079-1086 Link Here
1079
			nav: ''
86536
			nav: ''
1080
		}
86537
		}
1081
	} );
86538
	} );
1082
	
86539
1083
	
86540
1084
	/*
86541
	/*
1085
	 * It is useful to have variables which are scoped locally so only the
86542
	 * It is useful to have variables which are scoped locally so only the
1086
	 * DataTables functions can access them and they don't leak into global space.
86543
	 * DataTables functions can access them and they don't leak into global space.
Lines 1089-1118 Link Here
1089
	 * by DataTables as private variables here. This also ensures that there is no
86546
	 * by DataTables as private variables here. This also ensures that there is no
1090
	 * clashing of variable names and that they can easily referenced for reuse.
86547
	 * clashing of variable names and that they can easily referenced for reuse.
1091
	 */
86548
	 */
1092
	
86549
1093
	
86550
1094
	// Defined else where
86551
	// Defined else where
1095
	//  _selector_run
86552
	//  _selector_run
1096
	//  _selector_opts
86553
	//  _selector_opts
1097
	//  _selector_row_indexes
86554
	//  _selector_row_indexes
1098
	
86555
1099
	var _ext; // DataTable.ext
86556
	var _ext; // DataTable.ext
1100
	var _Api; // DataTable.Api
86557
	var _Api; // DataTable.Api
1101
	var _api_register; // DataTable.Api.register
86558
	var _api_register; // DataTable.Api.register
1102
	var _api_registerPlural; // DataTable.Api.registerPlural
86559
	var _api_registerPlural; // DataTable.Api.registerPlural
1103
	
86560
1104
	var _re_dic = {};
86561
	var _re_dic = {};
1105
	var _re_new_lines = /[\r\n\u2028]/g;
86562
	var _re_new_lines = /[\r\n\u2028]/g;
1106
	var _re_html = /<([^>]*>)/g;
86563
	var _re_html = /<([^>]*>)/g;
1107
	var _max_str_len = Math.pow(2, 28);
86564
	var _max_str_len = Math.pow(2, 28);
1108
	
86565
1109
	// This is not strict ISO8601 - Date.parse() is quite lax, although
86566
	// This is not strict ISO8601 - Date.parse() is quite lax, although
1110
	// implementations differ between browsers.
86567
	// implementations differ between browsers.
1111
	var _re_date = /^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/;
86568
	var _re_date = /^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/;
1112
	
86569
1113
	// Escape regular expression special characters
86570
	// Escape regular expression special characters
1114
	var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
86571
	var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
1115
	
86572
1116
	// https://en.wikipedia.org/wiki/Foreign_exchange_market
86573
	// https://en.wikipedia.org/wiki/Foreign_exchange_market
1117
	// - \u20BD - Russian ruble.
86574
	// - \u20BD - Russian ruble.
1118
	// - \u20a9 - South Korean Won
86575
	// - \u20a9 - South Korean Won
Lines 1126-1143 Link Here
1126
	// - Ξ - Ethereum
86583
	// - Ξ - Ethereum
1127
	//   standards as thousands separators.
86584
	//   standards as thousands separators.
1128
	var _re_formatted_numeric = /['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi;
86585
	var _re_formatted_numeric = /['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi;
1129
	
86586
1130
	
86587
1131
	var _empty = function ( d ) {
86588
	var _empty = function ( d ) {
1132
		return !d || d === true || d === '-' ? true : false;
86589
		return !d || d === true || d === '-' ? true : false;
1133
	};
86590
	};
1134
	
86591
1135
	
86592
1136
	var _intVal = function ( s ) {
86593
	var _intVal = function ( s ) {
1137
		var integer = parseInt( s, 10 );
86594
		var integer = parseInt( s, 10 );
1138
		return !isNaN(integer) && isFinite(s) ? integer : null;
86595
		return !isNaN(integer) && isFinite(s) ? integer : null;
1139
	};
86596
	};
1140
	
86597
1141
	// Convert from a formatted number with characters other than `.` as the
86598
	// Convert from a formatted number with characters other than `.` as the
1142
	// decimal place, to a JavaScript number
86599
	// decimal place, to a JavaScript number
1143
	var _numToDecimal = function ( num, decimalPoint ) {
86600
	var _numToDecimal = function ( num, decimalPoint ) {
Lines 1149-1199 Link Here
1149
			num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
86606
			num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
1150
			num;
86607
			num;
1151
	};
86608
	};
1152
	
86609
1153
	
86610
1154
	var _isNumber = function ( d, decimalPoint, formatted, allowEmpty ) {
86611
	var _isNumber = function ( d, decimalPoint, formatted, allowEmpty ) {
1155
		var type = typeof d;
86612
		var type = typeof d;
1156
		var strType = type === 'string';
86613
		var strType = type === 'string';
1157
	
86614
1158
		if ( type === 'number' || type === 'bigint') {
86615
		if ( type === 'number' || type === 'bigint') {
1159
			return true;
86616
			return true;
1160
		}
86617
		}
1161
	
86618
1162
		// If empty return immediately so there must be a number if it is a
86619
		// If empty return immediately so there must be a number if it is a
1163
		// formatted string (this stops the string "k", or "kr", etc being detected
86620
		// formatted string (this stops the string "k", or "kr", etc being detected
1164
		// as a formatted number for currency
86621
		// as a formatted number for currency
1165
		if ( allowEmpty && _empty( d ) ) {
86622
		if ( allowEmpty && _empty( d ) ) {
1166
			return true;
86623
			return true;
1167
		}
86624
		}
1168
	
86625
1169
		if ( decimalPoint && strType ) {
86626
		if ( decimalPoint && strType ) {
1170
			d = _numToDecimal( d, decimalPoint );
86627
			d = _numToDecimal( d, decimalPoint );
1171
		}
86628
		}
1172
	
86629
1173
		if ( formatted && strType ) {
86630
		if ( formatted && strType ) {
1174
			d = d.replace( _re_formatted_numeric, '' );
86631
			d = d.replace( _re_formatted_numeric, '' );
1175
		}
86632
		}
1176
	
86633
1177
		return !isNaN( parseFloat(d) ) && isFinite( d );
86634
		return !isNaN( parseFloat(d) ) && isFinite( d );
1178
	};
86635
	};
1179
	
86636
1180
	
86637
1181
	// A string without HTML in it can be considered to be HTML still
86638
	// A string without HTML in it can be considered to be HTML still
1182
	var _isHtml = function ( d ) {
86639
	var _isHtml = function ( d ) {
1183
		return _empty( d ) || typeof d === 'string';
86640
		return _empty( d ) || typeof d === 'string';
1184
	};
86641
	};
1185
	
86642
1186
	// Is a string a number surrounded by HTML?
86643
	// Is a string a number surrounded by HTML?
1187
	var _htmlNumeric = function ( d, decimalPoint, formatted, allowEmpty ) {
86644
	var _htmlNumeric = function ( d, decimalPoint, formatted, allowEmpty ) {
1188
		if ( allowEmpty && _empty( d ) ) {
86645
		if ( allowEmpty && _empty( d ) ) {
1189
			return true;
86646
			return true;
1190
		}
86647
		}
1191
	
86648
1192
		// input and select strings mean that this isn't just a number
86649
		// input and select strings mean that this isn't just a number
1193
		if (typeof d === 'string' && d.match(/<(input|select)/i)) {
86650
		if (typeof d === 'string' && d.match(/<(input|select)/i)) {
1194
			return null;
86651
			return null;
1195
		}
86652
		}
1196
	
86653
1197
		var html = _isHtml( d );
86654
		var html = _isHtml( d );
1198
		return ! html ?
86655
		return ! html ?
1199
			null :
86656
			null :
Lines 1201-1212 Link Here
1201
				true :
86658
				true :
1202
				null;
86659
				null;
1203
	};
86660
	};
1204
	
86661
1205
	
86662
1206
	var _pluck = function ( a, prop, prop2 ) {
86663
	var _pluck = function ( a, prop, prop2 ) {
1207
		var out = [];
86664
		var out = [];
1208
		var i=0, iLen=a.length;
86665
		var i=0, iLen=a.length;
1209
	
86666
1210
		// Could have the test in the loop for slightly smaller code, but speed
86667
		// Could have the test in the loop for slightly smaller code, but speed
1211
		// is essential here
86668
		// is essential here
1212
		if ( prop2 !== undefined ) {
86669
		if ( prop2 !== undefined ) {
Lines 1223-1240 Link Here
1223
				}
86680
				}
1224
			}
86681
			}
1225
		}
86682
		}
1226
	
86683
1227
		return out;
86684
		return out;
1228
	};
86685
	};
1229
	
86686
1230
	
86687
1231
	// Basically the same as _pluck, but rather than looping over `a` we use `order`
86688
	// Basically the same as _pluck, but rather than looping over `a` we use `order`
1232
	// as the indexes to pick from `a`
86689
	// as the indexes to pick from `a`
1233
	var _pluck_order = function ( a, order, prop, prop2 )
86690
	var _pluck_order = function ( a, order, prop, prop2 )
1234
	{
86691
	{
1235
		var out = [];
86692
		var out = [];
1236
		var i=0, iLen=order.length;
86693
		var i=0, iLen=order.length;
1237
	
86694
1238
		// Could have the test in the loop for slightly smaller code, but speed
86695
		// Could have the test in the loop for slightly smaller code, but speed
1239
		// is essential here
86696
		// is essential here
1240
		if ( prop2 !== undefined ) {
86697
		if ( prop2 !== undefined ) {
Lines 1251-1266 Link Here
1251
				}
86708
				}
1252
			}
86709
			}
1253
		}
86710
		}
1254
	
86711
1255
		return out;
86712
		return out;
1256
	};
86713
	};
1257
	
86714
1258
	
86715
1259
	var _range = function ( len, start )
86716
	var _range = function ( len, start )
1260
	{
86717
	{
1261
		var out = [];
86718
		var out = [];
1262
		var end;
86719
		var end;
1263
	
86720
1264
		if ( start === undefined ) {
86721
		if ( start === undefined ) {
1265
			start = 0;
86722
			start = 0;
1266
			end = len;
86723
			end = len;
Lines 1269-1298 Link Here
1269
			end = start;
86726
			end = start;
1270
			start = len;
86727
			start = len;
1271
		}
86728
		}
1272
	
86729
1273
		for ( var i=start ; i<end ; i++ ) {
86730
		for ( var i=start ; i<end ; i++ ) {
1274
			out.push( i );
86731
			out.push( i );
1275
		}
86732
		}
1276
	
86733
1277
		return out;
86734
		return out;
1278
	};
86735
	};
1279
	
86736
1280
	
86737
1281
	var _removeEmpty = function ( a )
86738
	var _removeEmpty = function ( a )
1282
	{
86739
	{
1283
		var out = [];
86740
		var out = [];
1284
	
86741
1285
		for ( var i=0, iLen=a.length ; i<iLen ; i++ ) {
86742
		for ( var i=0, iLen=a.length ; i<iLen ; i++ ) {
1286
			if ( a[i] ) { // careful - will remove all falsy values!
86743
			if ( a[i] ) { // careful - will remove all falsy values!
1287
				out.push( a[i] );
86744
				out.push( a[i] );
1288
			}
86745
			}
1289
		}
86746
		}
1290
	
86747
1291
		return out;
86748
		return out;
1292
	};
86749
	};
1293
	
86750
	
1294
	// Replaceable function in api.util
86751
	// Replaceable function in api.util
1295
	var _stripHtml = function (input) {
86752
	var _stripHtml = function (input, replacement) {
1296
		if (! input || typeof input !== 'string') {
86753
		if (! input || typeof input !== 'string') {
1297
			return input;
86754
			return input;
1298
		}
86755
		}
Lines 1304-1310 Link Here
1304
	
86761
	
1305
		var previous;
86762
		var previous;
1306
	
86763
	
1307
		input = input.replace(_re_html, ''); // Complete tags
86764
		input = input.replace(_re_html, replacement || ''); // Complete tags
1308
	
86765
	
1309
		// Safety for incomplete script tag - use do / while to ensure that
86766
		// Safety for incomplete script tag - use do / while to ensure that
1310
		// we get all instances
86767
		// we get all instances
Lines 1312-1327 Link Here
1312
			previous = input;
86769
			previous = input;
1313
			input = input.replace(/<script/i, '');
86770
			input = input.replace(/<script/i, '');
1314
		} while (input !== previous);
86771
		} while (input !== previous);
1315
	
86772
1316
		return previous;
86773
		return previous;
1317
	};
86774
	};
1318
	
86775
1319
	// Replaceable function in api.util
86776
	// Replaceable function in api.util
1320
	var _escapeHtml = function ( d ) {
86777
	var _escapeHtml = function ( d ) {
1321
		if (Array.isArray(d)) {
86778
		if (Array.isArray(d)) {
1322
			d = d.join(',');
86779
			d = d.join(',');
1323
		}
86780
		}
1324
	
86781
1325
		return typeof d === 'string' ?
86782
		return typeof d === 'string' ?
1326
			d
86783
			d
1327
				.replace(/&/g, '&amp;')
86784
				.replace(/&/g, '&amp;')
Lines 1330-1336 Link Here
1330
				.replace(/"/g, '&quot;') :
86787
				.replace(/"/g, '&quot;') :
1331
			d;
86788
			d;
1332
	};
86789
	};
1333
	
86790
1334
	// Remove diacritics from a string by decomposing it and then removing
86791
	// Remove diacritics from a string by decomposing it and then removing
1335
	// non-ascii characters
86792
	// non-ascii characters
1336
	var _normalize = function (str, both) {
86793
	var _normalize = function (str, both) {
Lines 1452-1458 Link Here
1452
	
86909
	
1453
	/**
86910
	/**
1454
	 * DataTables utility methods
86911
	 * DataTables utility methods
1455
	 * 
86912
	 *
1456
	 * This namespace provides helper methods that DataTables uses internally to
86913
	 * This namespace provides helper methods that DataTables uses internally to
1457
	 * create a DataTable, but which are not exclusively used only for DataTables.
86914
	 * create a DataTable, but which are not exclusively used only for DataTables.
1458
	 * These methods can be used by extension authors to save the duplication of
86915
	 * These methods can be used by extension authors to save the duplication of
Lines 1489-1497 Link Here
1489
			return function () {
86946
			return function () {
1490
				var that = this;
86947
				var that = this;
1491
				var args = arguments;
86948
				var args = arguments;
1492
	
86949
1493
				clearTimeout(timer);
86950
				clearTimeout(timer);
1494
	
86951
1495
				timer = setTimeout( function () {
86952
				timer = setTimeout( function () {
1496
					fn.apply(that, args);
86953
					fn.apply(that, args);
1497
				}, timeout || 250 );
86954
				}, timeout || 250 );
Lines 1520-1526 Link Here
1520
	
86977
	
1521
				if ( last && now < last + frequency ) {
86978
				if ( last && now < last + frequency ) {
1522
					clearTimeout( timer );
86979
					clearTimeout( timer );
1523
	
86980
1524
					timer = setTimeout( function () {
86981
					timer = setTimeout( function () {
1525
						last = undefined;
86982
						last = undefined;
1526
						fn.apply( that, args );
86983
						fn.apply( that, args );
Lines 1575-1600 Link Here
1575
					var a = _fnSplitObjNotation( src ), b;
87032
					var a = _fnSplitObjNotation( src ), b;
1576
					var aLast = a[a.length-1];
87033
					var aLast = a[a.length-1];
1577
					var arrayNotation, funcNotation, o, innerSrc;
87034
					var arrayNotation, funcNotation, o, innerSrc;
1578
		
87035
1579
					for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) {
87036
					for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) {
1580
						// Protect against prototype pollution
87037
						// Protect against prototype pollution
1581
						if (a[i] === '__proto__' || a[i] === 'constructor') {
87038
						if (a[i] === '__proto__' || a[i] === 'constructor') {
1582
							throw new Error('Cannot set prototype values');
87039
							throw new Error('Cannot set prototype values');
1583
						}
87040
						}
1584
		
87041
1585
						// Check if we are dealing with an array notation request
87042
						// Check if we are dealing with an array notation request
1586
						arrayNotation = a[i].match(__reArray);
87043
						arrayNotation = a[i].match(__reArray);
1587
						funcNotation = a[i].match(__reFn);
87044
						funcNotation = a[i].match(__reFn);
1588
		
87045
1589
						if ( arrayNotation ) {
87046
						if ( arrayNotation ) {
1590
							a[i] = a[i].replace(__reArray, '');
87047
							a[i] = a[i].replace(__reArray, '');
1591
							data[ a[i] ] = [];
87048
							data[ a[i] ] = [];
1592
		
87049
1593
							// Get the remainder of the nested object to set so we can recurse
87050
							// Get the remainder of the nested object to set so we can recurse
1594
							b = a.slice();
87051
							b = a.slice();
1595
							b.splice( 0, i+1 );
87052
							b.splice( 0, i+1 );
1596
							innerSrc = b.join('.');
87053
							innerSrc = b.join('.');
1597
		
87054
1598
							// Traverse each entry in the array setting the properties requested
87055
							// Traverse each entry in the array setting the properties requested
1599
							if ( Array.isArray( val ) ) {
87056
							if ( Array.isArray( val ) ) {
1600
								for ( var j=0, jLen=val.length ; j<jLen ; j++ ) {
87057
								for ( var j=0, jLen=val.length ; j<jLen ; j++ ) {
Lines 1609-1615 Link Here
1609
								// is to just save the value.
87066
								// is to just save the value.
1610
								data[ a[i] ] = val;
87067
								data[ a[i] ] = val;
1611
							}
87068
							}
1612
		
87069
1613
							// The inner call to setData has already traversed through the remainder
87070
							// The inner call to setData has already traversed through the remainder
1614
							// of the source and has set the data, thus we can exit here
87071
							// of the source and has set the data, thus we can exit here
1615
							return;
87072
							return;
Lines 1619-1625 Link Here
1619
							a[i] = a[i].replace(__reFn, '');
87076
							a[i] = a[i].replace(__reFn, '');
1620
							data = data[ a[i] ]( val );
87077
							data = data[ a[i] ]( val );
1621
						}
87078
						}
1622
		
87079
1623
						// If the nested object doesn't currently exist - since we are
87080
						// If the nested object doesn't currently exist - since we are
1624
						// trying to set the value - create it
87081
						// trying to set the value - create it
1625
						if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) {
87082
						if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) {
Lines 1627-1633 Link Here
1627
						}
87084
						}
1628
						data = data[ a[i] ];
87085
						data = data[ a[i] ];
1629
					}
87086
					}
1630
		
87087
1631
					// Last item in the input - i.e, the actual set
87088
					// Last item in the input - i.e, the actual set
1632
					if ( aLast.match(__reFn ) ) {
87089
					if ( aLast.match(__reFn ) ) {
1633
						// Function call
87090
						// Function call
Lines 1639-1645 Link Here
1639
						data[ aLast.replace(__reArray, '') ] = val;
87096
						data[ aLast.replace(__reArray, '') ] = val;
1640
					}
87097
					}
1641
				};
87098
				};
1642
		
87099
1643
				return function (data, val) { // meta is also passed in, but not used
87100
				return function (data, val) { // meta is also passed in, but not used
1644
					return setData( data, val, source );
87101
					return setData( data, val, source );
1645
				};
87102
				};
Lines 1666-1672 Link Here
1666
						o[key] = DataTable.util.get( val );
87123
						o[key] = DataTable.util.get( val );
1667
					}
87124
					}
1668
				} );
87125
				} );
1669
		
87126
1670
				return function (data, type, row, meta) {
87127
				return function (data, type, row, meta) {
1671
					var t = o[type] || o._;
87128
					var t = o[type] || o._;
1672
					return t !== undefined ?
87129
					return t !== undefined ?
Lines 1697-1737 Link Here
1697
				 */
87154
				 */
1698
				var fetchData = function (data, type, src) {
87155
				var fetchData = function (data, type, src) {
1699
					var arrayNotation, funcNotation, out, innerSrc;
87156
					var arrayNotation, funcNotation, out, innerSrc;
1700
		
87157
1701
					if ( src !== "" ) {
87158
					if ( src !== "" ) {
1702
						var a = _fnSplitObjNotation( src );
87159
						var a = _fnSplitObjNotation( src );
1703
		
87160
1704
						for ( var i=0, iLen=a.length ; i<iLen ; i++ ) {
87161
						for ( var i=0, iLen=a.length ; i<iLen ; i++ ) {
1705
							// Check if we are dealing with special notation
87162
							// Check if we are dealing with special notation
1706
							arrayNotation = a[i].match(__reArray);
87163
							arrayNotation = a[i].match(__reArray);
1707
							funcNotation = a[i].match(__reFn);
87164
							funcNotation = a[i].match(__reFn);
1708
		
87165
1709
							if ( arrayNotation ) {
87166
							if ( arrayNotation ) {
1710
								// Array notation
87167
								// Array notation
1711
								a[i] = a[i].replace(__reArray, '');
87168
								a[i] = a[i].replace(__reArray, '');
1712
		
87169
1713
								// Condition allows simply [] to be passed in
87170
								// Condition allows simply [] to be passed in
1714
								if ( a[i] !== "" ) {
87171
								if ( a[i] !== "" ) {
1715
									data = data[ a[i] ];
87172
									data = data[ a[i] ];
1716
								}
87173
								}
1717
								out = [];
87174
								out = [];
1718
		
87175
1719
								// Get the remainder of the nested object to get
87176
								// Get the remainder of the nested object to get
1720
								a.splice( 0, i+1 );
87177
								a.splice( 0, i+1 );
1721
								innerSrc = a.join('.');
87178
								innerSrc = a.join('.');
1722
		
87179
1723
								// Traverse each entry in the array getting the properties requested
87180
								// Traverse each entry in the array getting the properties requested
1724
								if ( Array.isArray( data ) ) {
87181
								if ( Array.isArray( data ) ) {
1725
									for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
87182
									for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
1726
										out.push( fetchData( data[j], type, innerSrc ) );
87183
										out.push( fetchData( data[j], type, innerSrc ) );
1727
									}
87184
									}
1728
								}
87185
								}
1729
		
87186
1730
								// If a string is given in between the array notation indicators, that
87187
								// If a string is given in between the array notation indicators, that
1731
								// is used to join the strings together, otherwise an array is returned
87188
								// is used to join the strings together, otherwise an array is returned
1732
								var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
87189
								var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
1733
								data = (join==="") ? out : out.join(join);
87190
								data = (join==="") ? out : out.join(join);
1734
		
87191
1735
								// The inner call to fetchData has already traversed through the remainder
87192
								// The inner call to fetchData has already traversed through the remainder
1736
								// of the source requested, so we exit from the loop
87193
								// of the source requested, so we exit from the loop
1737
								break;
87194
								break;
Lines 1742-1748 Link Here
1742
								data = data[ a[i] ]();
87199
								data = data[ a[i] ]();
1743
								continue;
87200
								continue;
1744
							}
87201
							}
1745
		
87202
1746
							if (data === null || data[ a[i] ] === null) {
87203
							if (data === null || data[ a[i] ] === null) {
1747
								return null;
87204
								return null;
1748
							}
87205
							}
Lines 1753-1762 Link Here
1753
							data = data[ a[i] ];
87210
							data = data[ a[i] ];
1754
						}
87211
						}
1755
					}
87212
					}
1756
		
87213
1757
					return data;
87214
					return data;
1758
				};
87215
				};
1759
		
87216
1760
				return function (data, type) { // row and meta also passed, but not used
87217
				return function (data, type) { // row and meta also passed, but not used
1761
					return fetchData( data, type, source );
87218
					return fetchData( data, type, source );
1762
				};
87219
				};
Lines 1769-1775 Link Here
1769
			}
87226
			}
1770
		},
87227
		},
1771
	
87228
	
1772
		stripHtml: function (mixed) {
87229
		stripHtml: function (mixed, replacement) {
1773
			var type = typeof mixed;
87230
			var type = typeof mixed;
1774
	
87231
	
1775
			if (type === 'function') {
87232
			if (type === 'function') {
Lines 1777-1783 Link Here
1777
				return;
87234
				return;
1778
			}
87235
			}
1779
			else if (type === 'string') {
87236
			else if (type === 'string') {
1780
				return _stripHtml(mixed);
87237
				return _stripHtml(mixed, replacement);
1781
			}
87238
			}
1782
			return mixed;
87239
			return mixed;
1783
		},
87240
		},
Lines 1875-1881 Link Here
1875
			}
87332
			}
1876
		} );
87333
		} );
1877
	}
87334
	}
1878
	
87335
1879
	/**
87336
	/**
1880
	 * Map one parameter onto another
87337
	 * Map one parameter onto another
1881
	 *  @param {object} o Object to map
87338
	 *  @param {object} o Object to map
Lines 1930-1945 Link Here
1930
			init.orderIndicators = true;
87387
			init.orderIndicators = true;
1931
			init.orderHandler = true;
87388
			init.orderHandler = true;
1932
		}
87389
		}
1933
87390
	
1934
		// Which cells are the title cells?
87391
		// Which cells are the title cells?
1935
		if (typeof init.bSortCellsTop === 'boolean') {
87392
		if (typeof init.bSortCellsTop === 'boolean') {
1936
			init.titleRow = init.bSortCellsTop;
87393
			init.titleRow = init.bSortCellsTop;
1937
		}
87394
		}
1938
87395
	
1939
		// Column search objects are in an array, so it needs to be converted
87396
		// Column search objects are in an array, so it needs to be converted
1940
		// element by element
87397
		// element by element
1941
		var searchCols = init.aoSearchCols;
87398
		var searchCols = init.aoSearchCols;
1942
	
87399
1943
		if ( searchCols ) {
87400
		if ( searchCols ) {
1944
			for ( var i=0, iLen=searchCols.length ; i<iLen ; i++ ) {
87401
			for ( var i=0, iLen=searchCols.length ; i<iLen ; i++ ) {
1945
				if ( searchCols[i] ) {
87402
				if ( searchCols[i] ) {
Lines 1989-1995 Link Here
1989
		if ( ! DataTable.__browser ) {
87446
		if ( ! DataTable.__browser ) {
1990
			var browser = {};
87447
			var browser = {};
1991
			DataTable.__browser = browser;
87448
			DataTable.__browser = browser;
1992
	
87449
1993
			// Scrolling feature / quirks detection
87450
			// Scrolling feature / quirks detection
1994
			var n = $('<div/>')
87451
			var n = $('<div/>')
1995
				.css( {
87452
				.css( {
Lines 2073-2085 Link Here
2073
	function _fnColumnOptions( oSettings, iCol, oOptions )
87530
	function _fnColumnOptions( oSettings, iCol, oOptions )
2074
	{
87531
	{
2075
		var oCol = oSettings.aoColumns[ iCol ];
87532
		var oCol = oSettings.aoColumns[ iCol ];
2076
	
87533
2077
		/* User specified column options */
87534
		/* User specified column options */
2078
		if ( oOptions !== undefined && oOptions !== null )
87535
		if ( oOptions !== undefined && oOptions !== null )
2079
		{
87536
		{
2080
			// Backwards compatibility
87537
			// Backwards compatibility
2081
			_fnCompatCols( oOptions );
87538
			_fnCompatCols( oOptions );
2082
	
87539
2083
			// Map camel case parameters to their Hungarian counterparts
87540
			// Map camel case parameters to their Hungarian counterparts
2084
			_fnCamelToHungarian( DataTable.defaults.column, oOptions, true );
87541
			_fnCamelToHungarian( DataTable.defaults.column, oOptions, true );
2085
	
87542
	
Lines 2093-2099 Link Here
2093
			{
87550
			{
2094
				oCol._sManualType = oOptions.sType;
87551
				oCol._sManualType = oOptions.sType;
2095
			}
87552
			}
2096
		
87553
2097
			// `class` is a reserved word in JavaScript, so we need to provide
87554
			// `class` is a reserved word in JavaScript, so we need to provide
2098
			// the ability to use a valid name for the camel case input
87555
			// the ability to use a valid name for the camel case input
2099
			if ( oOptions.className && ! oOptions.sClass )
87556
			if ( oOptions.className && ! oOptions.sClass )
Lines 2180-2191 Link Here
2180
	{
87637
	{
2181
		_fnCalculateColumnWidths( settings );
87638
		_fnCalculateColumnWidths( settings );
2182
		_fnColumnSizes( settings );
87639
		_fnColumnSizes( settings );
2183
	
87640
2184
		var scroll = settings.oScroll;
87641
		var scroll = settings.oScroll;
2185
		if ( scroll.sY !== '' || scroll.sX !== '') {
87642
		if ( scroll.sY !== '' || scroll.sX !== '') {
2186
			_fnScrollDraw( settings );
87643
			_fnScrollDraw( settings );
2187
		}
87644
		}
2188
	
87645
2189
		_fnCallbackFire( settings, null, 'column-sizing', [settings] );
87646
		_fnCallbackFire( settings, null, 'column-sizing', [settings] );
2190
	}
87647
	}
2191
	
87648
	
Lines 2202-2208 Link Here
2202
			var width = _fnColumnsSumWidth(settings, [i], false, false);
87659
			var width = _fnColumnsSumWidth(settings, [i], false, false);
2203
	
87660
	
2204
			cols[i].colEl.css('width', width);
87661
			cols[i].colEl.css('width', width);
2205
87662
	
2206
			if (settings.oScroll.sX) {
87663
			if (settings.oScroll.sX) {
2207
				cols[i].colEl.css('min-width', width);
87664
				cols[i].colEl.css('min-width', width);
2208
			}
87665
			}
Lines 2256-2262 Link Here
2256
		var layout = settings.aoHeader;
87713
		var layout = settings.aoHeader;
2257
		var columns = settings.aoColumns;
87714
		var columns = settings.aoColumns;
2258
		var vis = 0;
87715
		var vis = 0;
2259
	
87716
2260
		if ( layout.length ) {
87717
		if ( layout.length ) {
2261
			for ( var i=0, iLen=layout[0].length ; i<iLen ; i++ ) {
87718
			for ( var i=0, iLen=layout[0].length ; i<iLen ; i++ ) {
2262
				if ( columns[i].bVisible && $(layout[0][i].cell).css('display') !== 'none' ) {
87719
				if ( columns[i].bVisible && $(layout[0][i].cell).css('display') !== 'none' ) {
Lines 2354-2379 Link Here
2354
							break;
87811
							break;
2355
						}
87812
						}
2356
					}
87813
					}
2357
	
87814
2358
					for ( k=0, ken=data.length ; k<ken ; k++ ) {
87815
					for ( k=0, ken=data.length ; k<ken ; k++ ) {
2359
						if (! data[k]) {
87816
						if (! data[k]) {
2360
							continue;
87817
							continue;
2361
						}
87818
						}
2362
	
87819
2363
						// Use a cache array so we only need to get the type data
87820
						// Use a cache array so we only need to get the type data
2364
						// from the formatter once (when using multiple detectors)
87821
						// from the formatter once (when using multiple detectors)
2365
						if ( cache[k] === undefined ) {
87822
						if ( cache[k] === undefined ) {
2366
							cache[k] = _fnGetCellData( settings, k, i, 'type' );
87823
							cache[k] = _fnGetCellData( settings, k, i, 'type' );
2367
						}
87824
						}
2368
	
87825
2369
						// Only one data point in the column needs to match this function
87826
						// Only one data point in the column needs to match this function
2370
						if (oneOf && ! one) {
87827
						if (oneOf && ! one) {
2371
							one = _typeResult(typeDetect, oneOf( cache[k], settings ));
87828
							one = _typeResult(typeDetect, oneOf( cache[k], settings ));
2372
						}
87829
						}
2373
	
87830
2374
						// All data points need to match this function
87831
						// All data points need to match this function
2375
						detectedType = _typeResult(typeDetect, allOf( cache[k], settings ));
87832
						detectedType = _typeResult(typeDetect, allOf( cache[k], settings ));
2376
	
87833
2377
						// If null, then this type can't apply to this column, so
87834
						// If null, then this type can't apply to this column, so
2378
						// rather than testing all cells, break out. There is an
87835
						// rather than testing all cells, break out. There is an
2379
						// exception for the last type which is `html`. We need to
87836
						// exception for the last type which is `html`. We need to
Lines 2382-2388 Link Here
2382
						if ( ! detectedType && j !== types.length-3 ) {
87839
						if ( ! detectedType && j !== types.length-3 ) {
2383
							break;
87840
							break;
2384
						}
87841
						}
2385
	
87842
2386
						// Only a single match is needed for html type since it is
87843
						// Only a single match is needed for html type since it is
2387
						// bottom of the pile and very similar to string - but it
87844
						// bottom of the pile and very similar to string - but it
2388
						// must not be empty
87845
						// must not be empty
Lines 2390-2396 Link Here
2390
							break;
87847
							break;
2391
						}
87848
						}
2392
					}
87849
					}
2393
	
87850
2394
					// Type is valid for all data points in the column - use this
87851
					// Type is valid for all data points in the column - use this
2395
					// type
87852
					// type
2396
					if ( (oneOf && one && detectedType) || (!oneOf && detectedType) ) {
87853
					if ( (oneOf && one && detectedType) || (!oneOf && detectedType) ) {
Lines 2398-2454 Link Here
2398
						break;
87855
						break;
2399
					}
87856
					}
2400
				}
87857
				}
2401
	
87858
2402
				// Fall back - if no type was detected, always use string
87859
				// Fall back - if no type was detected, always use string
2403
				if ( ! col.sType ) {
87860
				if ( ! col.sType ) {
2404
					col.sType = 'string';
87861
					col.sType = 'string';
2405
				}
87862
				}
2406
			}
87863
			}
2407
	
87864
2408
			// Set class names for header / footer for auto type classes
87865
			// Set class names for header / footer for auto type classes
2409
			var autoClass = _ext.type.className[col.sType];
87866
			var autoClass = _ext.type.className[col.sType];
2410
	
87867
2411
			if (autoClass) {
87868
			if (autoClass) {
2412
				_columnAutoClass(settings.aoHeader, i, autoClass);
87869
				_columnAutoClass(settings.aoHeader, i, autoClass);
2413
				_columnAutoClass(settings.aoFooter, i, autoClass);
87870
				_columnAutoClass(settings.aoFooter, i, autoClass);
2414
			}
87871
			}
2415
	
87872
	
2416
			var renderer = _ext.type.render[col.sType];
87873
			var renderer = _ext.type.render[col.sType];
2417
	
87874
2418
			// This can only happen once! There is no way to remove
87875
			// This can only happen once! There is no way to remove
2419
			// a renderer. After the first time the renderer has
87876
			// a renderer. After the first time the renderer has
2420
			// already been set so createTr will run the renderer itself.
87877
			// already been set so createTr will run the renderer itself.
2421
			if (renderer && ! col._render) {
87878
			if (renderer && ! col._render) {
2422
				col._render = DataTable.util.get(renderer);
87879
				col._render = DataTable.util.get(renderer);
2423
	
87880
2424
				_columnAutoRender(settings, i);
87881
				_columnAutoRender(settings, i);
2425
			}
87882
			}
2426
		}
87883
		}
2427
	}
87884
	}
2428
	
87885
2429
	/**
87886
	/**
2430
	 * Apply an auto detected renderer to data which doesn't yet have
87887
	 * Apply an auto detected renderer to data which doesn't yet have
2431
	 * a renderer
87888
	 * a renderer
2432
	 */
87889
	 */
2433
	function _columnAutoRender(settings, colIdx) {
87890
	function _columnAutoRender(settings, colIdx) {
2434
		var data = settings.aoData;
87891
		var data = settings.aoData;
2435
	
87892
2436
		for (var i=0 ; i<data.length ; i++) {
87893
		for (var i=0 ; i<data.length ; i++) {
2437
			if (data[i].nTr) {
87894
			if (data[i].nTr) {
2438
				// We have to update the display here since there is no
87895
				// We have to update the display here since there is no
2439
				// invalidation check for the data
87896
				// invalidation check for the data
2440
				var display = _fnGetCellData( settings, i, colIdx, 'display' );
87897
				var display = _fnGetCellData( settings, i, colIdx, 'display' );
2441
	
87898
2442
				data[i].displayData[colIdx] = display;
87899
				data[i].displayData[colIdx] = display;
2443
				_fnWriteCell(data[i].anCells[colIdx], display);
87900
				_fnWriteCell(data[i].anCells[colIdx], display);
2444
	
87901
2445
				// No need to update sort / filter data since it has
87902
				// No need to update sort / filter data since it has
2446
				// been invalidated and will be re-read with the
87903
				// been invalidated and will be re-read with the
2447
				// renderer now applied
87904
				// renderer now applied
2448
			}
87905
			}
2449
		}
87906
		}
2450
	}
87907
	}
2451
	
87908
2452
	/**
87909
	/**
2453
	 * Apply a class name to a column's header cells
87910
	 * Apply a class name to a column's header cells
2454
	 */
87911
	 */
Lines 2459-2465 Link Here
2459
			}
87916
			}
2460
		});
87917
		});
2461
	}
87918
	}
2462
	
87919
2463
	/**
87920
	/**
2464
	 * Take the column definitions and static columns arrays and calculate how
87921
	 * Take the column definitions and static columns arrays and calculate how
2465
	 * they relate to column indexes. The callback function will then apply the
87922
	 * they relate to column indexes. The callback function will then apply the
Lines 2476-2482 Link Here
2476
	{
87933
	{
2477
		var i, iLen, j, jLen, k, kLen, def;
87934
		var i, iLen, j, jLen, k, kLen, def;
2478
		var columns = oSettings.aoColumns;
87935
		var columns = oSettings.aoColumns;
2479
	
87936
2480
		if ( aoCols ) {
87937
		if ( aoCols ) {
2481
			for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) {
87938
			for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) {
2482
				if (aoCols[i] && aoCols[i].name) {
87939
				if (aoCols[i] && aoCols[i].name) {
Lines 2484-2490 Link Here
2484
				}
87941
				}
2485
			}
87942
			}
2486
		}
87943
		}
2487
	
87944
2488
		// Column definitions with aTargets
87945
		// Column definitions with aTargets
2489
		if ( aoColDefs )
87946
		if ( aoColDefs )
2490
		{
87947
		{
Lines 2492-2514 Link Here
2492
			for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
87949
			for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
2493
			{
87950
			{
2494
				def = aoColDefs[i];
87951
				def = aoColDefs[i];
2495
	
87952
2496
				/* Each definition can target multiple columns, as it is an array */
87953
				/* Each definition can target multiple columns, as it is an array */
2497
				var aTargets = def.target !== undefined
87954
				var aTargets = def.target !== undefined
2498
					? def.target
87955
					? def.target
2499
					: def.targets !== undefined
87956
					: def.targets !== undefined
2500
						? def.targets
87957
						? def.targets
2501
						: def.aTargets;
87958
						: def.aTargets;
2502
	
87959
2503
				if ( ! Array.isArray( aTargets ) )
87960
				if ( ! Array.isArray( aTargets ) )
2504
				{
87961
				{
2505
					aTargets = [ aTargets ];
87962
					aTargets = [ aTargets ];
2506
				}
87963
				}
2507
	
87964
2508
				for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
87965
				for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
2509
				{
87966
				{
2510
					var target = aTargets[j];
87967
					var target = aTargets[j];
2511
	
87968
2512
					if ( typeof target === 'number' && target >= 0 )
87969
					if ( typeof target === 'number' && target >= 0 )
2513
					{
87970
					{
2514
						/* Add columns that we don't yet know about */
87971
						/* Add columns that we don't yet know about */
Lines 2516-2522 Link Here
2516
						{
87973
						{
2517
							_fnAddColumn( oSettings );
87974
							_fnAddColumn( oSettings );
2518
						}
87975
						}
2519
	
87976
2520
						/* Integer, basic index */
87977
						/* Integer, basic index */
2521
						fn( target, def );
87978
						fn( target, def );
2522
					}
87979
					}
Lines 2550-2556 Link Here
2550
										if (target.match(/^[a-z][\w-]*$/i)) {
88007
										if (target.match(/^[a-z][\w-]*$/i)) {
2551
											target = '.' + target;
88008
											target = '.' + target;
2552
										}
88009
										}
2553
	
88010
2554
										if (cell.is( target )) {
88011
										if (cell.is( target )) {
2555
											fn( k, def );
88012
											fn( k, def );
2556
										}
88013
										}
Lines 2589-2595 Link Here
2589
		var sum = 0;
88046
		var sum = 0;
2590
		var unit;
88047
		var unit;
2591
		var columns = settings.aoColumns;
88048
		var columns = settings.aoColumns;
2592
		
88049
2593
		for ( var i=0, iLen=targets.length ; i<iLen ; i++ ) {
88050
		for ( var i=0, iLen=targets.length ; i<iLen ; i++ ) {
2594
			var column = columns[ targets[i] ];
88051
			var column = columns[ targets[i] ];
2595
			var definedWidth = original ?
88052
			var definedWidth = original ?
Lines 2609-2615 Link Here
2609
			}
88066
			}
2610
			else {
88067
			else {
2611
				var matched = definedWidth.match(/([\d\.]+)([^\d]*)/);
88068
				var matched = definedWidth.match(/([\d\.]+)([^\d]*)/);
2612
	
88069
2613
				if ( matched ) {
88070
				if ( matched ) {
2614
					sum += matched[1] * 1;
88071
					sum += matched[1] * 1;
2615
					unit = matched.length === 3 ?
88072
					unit = matched.length === 3 ?
Lines 2625-2631 Link Here
2625
	function _fnColumnsFromHeader( cell )
88082
	function _fnColumnsFromHeader( cell )
2626
	{
88083
	{
2627
		var attr = $(cell).closest('[data-dt-column]').attr('data-dt-column');
88084
		var attr = $(cell).closest('[data-dt-column]').attr('data-dt-column');
2628
	
88085
2629
		if ( ! attr ) {
88086
		if ( ! attr ) {
2630
			return [];
88087
			return [];
2631
		}
88088
		}
Lines 2655-2666 Link Here
2655
			src: tr ? 'dom' : 'data',
88112
			src: tr ? 'dom' : 'data',
2656
			idx: rowIdx
88113
			idx: rowIdx
2657
		} );
88114
		} );
2658
	
88115
2659
		rowModel._aData = dataIn;
88116
		rowModel._aData = dataIn;
2660
		settings.aoData.push( rowModel );
88117
		settings.aoData.push( rowModel );
2661
	
88118
2662
		var columns = settings.aoColumns;
88119
		var columns = settings.aoColumns;
2663
	
88120
2664
		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
88121
		for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
2665
		{
88122
		{
2666
			// Invalidate the column types as the new data needs to be revalidated
88123
			// Invalidate the column types as the new data needs to be revalidated
Lines 2684-2690 Link Here
2684
		return rowIdx;
88141
		return rowIdx;
2685
	}
88142
	}
2686
	
88143
	
2687
	
88144
2688
	/**
88145
	/**
2689
	 * Add one or more TR elements to the table. Generally we'd expect to
88146
	 * Add one or more TR elements to the table. Generally we'd expect to
2690
	 * use this for reading data from a DOM sourced table, but it could be
88147
	 * use this for reading data from a DOM sourced table, but it could be
Lines 2698-2709 Link Here
2698
	function _fnAddTr( settings, trs )
88155
	function _fnAddTr( settings, trs )
2699
	{
88156
	{
2700
		var row;
88157
		var row;
2701
	
88158
2702
		// Allow an individual node to be passed in
88159
		// Allow an individual node to be passed in
2703
		if ( ! (trs instanceof $) ) {
88160
		if ( ! (trs instanceof $) ) {
2704
			trs = $(trs);
88161
			trs = $(trs);
2705
		}
88162
		}
2706
	
88163
2707
		return trs.map( function (i, el) {
88164
		return trs.map( function (i, el) {
2708
			row = _fnGetRowElements( settings, el );
88165
			row = _fnGetRowElements( settings, el );
2709
			return _fnAddData( settings, row.data, el, row.cells );
88166
			return _fnAddData( settings, row.data, el, row.cells );
Lines 2730-2740 Link Here
2730
		}
88187
		}
2731
	
88188
	
2732
		var row = settings.aoData[rowIdx];
88189
		var row = settings.aoData[rowIdx];
2733
	
88190
2734
		if (! row) {
88191
		if (! row) {
2735
			return undefined;
88192
			return undefined;
2736
		}
88193
		}
2737
	
88194
2738
		var draw           = settings.iDraw;
88195
		var draw           = settings.iDraw;
2739
		var col            = settings.aoColumns[colIdx];
88196
		var col            = settings.aoColumns[colIdx];
2740
		var rowData        = row._aData;
88197
		var rowData        = row._aData;
Lines 2744-2750 Link Here
2744
			row:      rowIdx,
88201
			row:      rowIdx,
2745
			col:      colIdx
88202
			col:      colIdx
2746
		} );
88203
		} );
2747
	
88204
2748
		// Allow for a node being returned for non-display types
88205
		// Allow for a node being returned for non-display types
2749
		if (type !== 'display' && cellData && typeof cellData === 'object' && cellData.nodeName) {
88206
		if (type !== 'display' && cellData && typeof cellData === 'object' && cellData.nodeName) {
2750
			cellData = cellData.innerHTML;
88207
			cellData = cellData.innerHTML;
Lines 2782-2788 Link Here
2782
				cellData = formatters[ col.sType ]( cellData );
88239
				cellData = formatters[ col.sType ]( cellData );
2783
			}
88240
			}
2784
		}
88241
		}
2785
	
88242
2786
		return cellData;
88243
		return cellData;
2787
	}
88244
	}
2788
	
88245
	
Lines 2843-2849 Link Here
2843
		} );
88300
		} );
2844
	}
88301
	}
2845
	
88302
	
2846
	
88303
2847
	/**
88304
	/**
2848
	 * Return a function that can be used to get data from a source object, taking
88305
	 * Return a function that can be used to get data from a source object, taking
2849
	 * into account the ability to use nested objects as a source
88306
	 * into account the ability to use nested objects as a source
Lines 2853-2859 Link Here
2853
	 */
88310
	 */
2854
	var _fnGetObjectDataFn = DataTable.util.get;
88311
	var _fnGetObjectDataFn = DataTable.util.get;
2855
	
88312
	
2856
	
88313
2857
	/**
88314
	/**
2858
	 * Return a function that can be used to set data from a source object, taking
88315
	 * Return a function that can be used to set data from a source object, taking
2859
	 * into account the ability to use nested objects as a source
88316
	 * into account the ability to use nested objects as a source
Lines 2949-2960 Link Here
2949
	
88406
	
2950
			// Max length string. Its a fairly cheep recalculation, so not worth
88407
			// Max length string. Its a fairly cheep recalculation, so not worth
2951
			// something more complicated
88408
			// something more complicated
2952
			cols[ colIdx ].maxLenString = null;
88409
			cols[ colIdx ].wideStrings = null;
2953
		}
88410
		}
2954
		else {
88411
		else {
2955
			for ( i=0, iLen=cols.length ; i<iLen ; i++ ) {
88412
			for ( i=0, iLen=cols.length ; i<iLen ; i++ ) {
2956
				cols[i].sType = null;
88413
				cols[i].sType = null;
2957
				cols[i].maxLenString = null;
88414
				cols[i].wideStrings = null;
2958
			}
88415
			}
2959
	
88416
	
2960
			// Update DataTables special `DT_*` attributes for the row
88417
			// Update DataTables special `DT_*` attributes for the row
Lines 3082-3088 Link Here
3082
	
88539
	
3083
	/**
88540
	/**
3084
	 * Render and cache a row's display data for the columns, if required
88541
	 * Render and cache a row's display data for the columns, if required
3085
	 * @returns 
88542
	 * @returns
3086
	 */
88543
	 */
3087
	function _fnGetRowDisplay (settings, rowIdx) {
88544
	function _fnGetRowDisplay (settings, rowIdx) {
3088
		var rowModal = settings.aoData[rowIdx];
88545
		var rowModal = settings.aoData[rowIdx];
Lines 3091-3097 Link Here
3091
		if (! rowModal.displayData) {
88548
		if (! rowModal.displayData) {
3092
			// Need to render and cache
88549
			// Need to render and cache
3093
			rowModal.displayData = [];
88550
			rowModal.displayData = [];
3094
		
88551
3095
			for ( var colIdx=0, len=columns.length ; colIdx<len ; colIdx++ ) {
88552
			for ( var colIdx=0, len=columns.length ; colIdx<len ; colIdx++ ) {
3096
				rowModal.displayData.push(
88553
				rowModal.displayData.push(
3097
					_fnGetCellData( settings, rowIdx, colIdx, 'display' )
88554
					_fnGetCellData( settings, rowIdx, colIdx, 'display' )
Lines 3155-3163 Link Here
3155
					row: iRow,
88612
					row: iRow,
3156
					column: i
88613
					column: i
3157
				};
88614
				};
3158
				
88615
3159
				cells.push( nTd );
88616
				cells.push( nTd );
3160
				
88617
3161
				var display = _fnGetRowDisplay(oSettings, iRow);
88618
				var display = _fnGetRowDisplay(oSettings, iRow);
3162
	
88619
	
3163
				// Need to create the HTML if new, or if a rendering function is defined
88620
				// Need to create the HTML if new, or if a rendering function is defined
Lines 3256-3262 Link Here
3256
			? settings.nTHead
88713
			? settings.nTHead
3257
			: settings.nTFoot;
88714
			: settings.nTFoot;
3258
		var titleProp = side === 'header' ? 'sTitle' : side;
88715
		var titleProp = side === 'header' ? 'sTitle' : side;
3259
	
88716
3260
		// Footer might be defined
88717
		// Footer might be defined
3261
		if (! target) {
88718
		if (! target) {
3262
			return;
88719
			return;
Lines 3306-3312 Link Here
3306
				);
88763
				);
3307
			} );
88764
			} );
3308
	}
88765
	}
3309
	
88766
3310
	/**
88767
	/**
3311
	 * Build a layout structure for a header or footer
88768
	 * Build a layout structure for a header or footer
3312
	 *
88769
	 *
Lines 3342-3348 Link Here
3342
			local[row] = source[row].slice().filter(function (cell, i) {
88799
			local[row] = source[row].slice().filter(function (cell, i) {
3343
				return incColumns.includes(i);
88800
				return incColumns.includes(i);
3344
			});
88801
			});
3345
	
88802
3346
			// Prep the structure array - it needs an element for each row
88803
			// Prep the structure array - it needs an element for each row
3347
			structure.push( [] );
88804
			structure.push( [] );
3348
		}
88805
		}
Lines 3375-3386 Link Here
3375
						for ( var k=0 ; k<rowspan ; k++ ) {
88832
						for ( var k=0 ; k<rowspan ; k++ ) {
3376
							structure[row+k][column+colspan] = null;
88833
							structure[row+k][column+colspan] = null;
3377
						}
88834
						}
3378
	
88835
3379
						colspan++;
88836
						colspan++;
3380
					}
88837
					}
3381
	
88838
3382
					var titleSpan = $('span.dt-column-title', cell);
88839
					var titleSpan = $('.dt-column-title', cell);
3383
	
88840
3384
					structure[row][column] = {
88841
					structure[row][column] = {
3385
						cell: cell,
88842
						cell: cell,
3386
						colspan: colspan,
88843
						colspan: colspan,
Lines 3444-3450 Link Here
3444
	{
88901
	{
3445
		// Allow for state saving and a custom start position
88902
		// Allow for state saving and a custom start position
3446
		_fnStart( oSettings );
88903
		_fnStart( oSettings );
3447
	
88904
3448
		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
88905
		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
3449
		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
88906
		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
3450
		if ( aPreDraw.indexOf(false) !== -1 )
88907
		if ( aPreDraw.indexOf(false) !== -1 )
Lines 3461-3467 Link Here
3461
		var iDisplayEnd = oSettings.fnDisplayEnd();
88918
		var iDisplayEnd = oSettings.fnDisplayEnd();
3462
		var columns = oSettings.aoColumns;
88919
		var columns = oSettings.aoColumns;
3463
		var body = $(oSettings.nTBody);
88920
		var body = $(oSettings.nTBody);
3464
	
88921
3465
		oSettings.bDrawing = true;
88922
		oSettings.bDrawing = true;
3466
	
88923
	
3467
		/* Server-side processing draw intercept */
88924
		/* Server-side processing draw intercept */
Lines 3481-3487 Link Here
3481
			if (oSettings.iDraw === 0) {
88938
			if (oSettings.iDraw === 0) {
3482
				body.empty().append(_emptyRow(oSettings));
88939
				body.empty().append(_emptyRow(oSettings));
3483
			}
88940
			}
3484
	
88941
3485
			_fnAjaxUpdate( oSettings );
88942
			_fnAjaxUpdate( oSettings );
3486
			return;
88943
			return;
3487
		}
88944
		}
Lines 3495-3500 Link Here
3495
			{
88952
			{
3496
				var iDataIndex = aiDisplay[j];
88953
				var iDataIndex = aiDisplay[j];
3497
				var aoData = oSettings.aoData[ iDataIndex ];
88954
				var aoData = oSettings.aoData[ iDataIndex ];
88955
	
88956
				// Row has been deleted - can't be displayed
88957
				if (aoData === null)
88958
				{
88959
					continue;
88960
				}
88961
	
88962
				// Row node hasn't been created yet
3498
				if ( aoData.nTr === null )
88963
				if ( aoData.nTr === null )
3499
				{
88964
				{
3500
					_fnCreateTr( oSettings, iDataIndex );
88965
					_fnCreateTr( oSettings, iDataIndex );
Lines 3594-3608 Link Here
3594
		// Let any modules know about the draw hold position state (used by
89059
		// Let any modules know about the draw hold position state (used by
3595
		// scrolling internally)
89060
		// scrolling internally)
3596
		settings._drawHold = holdPosition;
89061
		settings._drawHold = holdPosition;
3597
	
89062
3598
		_fnDraw( settings );
89063
		_fnDraw( settings );
3599
	
89064
3600
		settings.api.one('draw', function () {
89065
		settings.api.one('draw', function () {
3601
			settings._drawHold = false;
89066
			settings._drawHold = false;
3602
		});
89067
		});
3603
	}
89068
	}
3604
	
89069
3605
	
89070
3606
	/*
89071
	/*
3607
	 * Table is empty - create a row with an empty message in it
89072
	 * Table is empty - create a row with an empty message in it
3608
	 */
89073
	 */
Lines 3620-3626 Link Here
3620
		{
89085
		{
3621
			zero = oLang.sEmptyTable;
89086
			zero = oLang.sEmptyTable;
3622
		}
89087
		}
3623
	
89088
3624
		return $( '<tr/>' )
89089
		return $( '<tr/>' )
3625
			.append( $('<td />', {
89090
			.append( $('<td />', {
3626
				'colSpan': _fnVisibleColumns( settings ),
89091
				'colSpan': _fnVisibleColumns( settings ),
Lines 3694-3700 Link Here
3694
							contents: []
89159
							contents: []
3695
						};
89160
						};
3696
					}
89161
					}
3697
	
89162
3698
					return row;
89163
					return row;
3699
				}
89164
				}
3700
			}
89165
			}
Lines 3702-3716 Link Here
3702
	
89167
	
3703
		// If we get this far, then there was no match, create a new row
89168
		// If we get this far, then there was no match, create a new row
3704
		row = {
89169
		row = {
3705
			rowNum: rowNum	
89170
			rowNum: rowNum
3706
		};
89171
		};
3707
	
89172
3708
		row[align] = {
89173
		row[align] = {
3709
			contents: []
89174
			contents: []
3710
		};
89175
		};
3711
	
89176
3712
		rows.push(row);
89177
		rows.push(row);
3713
	
89178
3714
		return row;
89179
		return row;
3715
	}
89180
	}
3716
	
89181
	
Lines 3745-3762 Link Here
3745
			if (parts[1] !== side) {
89210
			if (parts[1] !== side) {
3746
				return;
89211
				return;
3747
			}
89212
			}
3748
	
89213
3749
			// Get or create the row we should attach to
89214
			// Get or create the row we should attach to
3750
			var row = _layoutGetRow(rows, rowNum, align);
89215
			var row = _layoutGetRow(rows, rowNum, align);
3751
	
89216
3752
			_layoutItems(row, align, items);
89217
			_layoutItems(row, align, items);
3753
		});
89218
		});
3754
	
89219
3755
		// Order by item identifier
89220
		// Order by item identifier
3756
		rows.sort( function ( a, b ) {
89221
		rows.sort( function ( a, b ) {
3757
			var order1 = a.rowNum;
89222
			var order1 = a.rowNum;
3758
			var order2 = b.rowNum;
89223
			var order2 = b.rowNum;
3759
	
89224
3760
			// If both in the same row, then the row with `full` comes first
89225
			// If both in the same row, then the row with `full` comes first
3761
			if (order1 === order2) {
89226
			if (order1 === order2) {
3762
				var ret = a.full && ! b.full ? -1 : 1;
89227
				var ret = a.full && ! b.full ? -1 : 1;
Lines 3866-3872 Link Here
3866
			var top = _layoutArray( settings, settings.layout, 'top' );
89331
			var top = _layoutArray( settings, settings.layout, 'top' );
3867
			var bottom = _layoutArray( settings, settings.layout, 'bottom' );
89332
			var bottom = _layoutArray( settings, settings.layout, 'bottom' );
3868
			var renderer = _fnRenderer( settings, 'layout' );
89333
			var renderer = _fnRenderer( settings, 'layout' );
3869
		
89334
3870
			// Everything above - the renderer will actually insert the contents into the document
89335
			// Everything above - the renderer will actually insert the contents into the document
3871
			top.forEach(function (item) {
89336
			top.forEach(function (item) {
3872
				renderer( settings, insert, item );
89337
				renderer( settings, insert, item );
Lines 3911-3928 Link Here
3911
	
89376
	
3912
				// Check to see if we should append an id and/or a class name to the container
89377
				// Check to see if we should append an id and/or a class name to the container
3913
				next = parts[i+1];
89378
				next = parts[i+1];
3914
	
89379
3915
				if ( next[0] == "'" || next[0] == '"' ) {
89380
				if ( next[0] == "'" || next[0] == '"' ) {
3916
					attr = next.replace(/['"]/g, '');
89381
					attr = next.replace(/['"]/g, '');
3917
	
89382
3918
					var id = '', className;
89383
					var id = '', className;
3919
	
89384
3920
					/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
89385
					/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
3921
					 * breaks the string into parts and applies them as needed
89386
					 * breaks the string into parts and applies them as needed
3922
					 */
89387
					 */
3923
					if ( attr.indexOf('.') != -1 ) {
89388
					if ( attr.indexOf('.') != -1 ) {
3924
						var split = attr.split('.');
89389
						var split = attr.split('.');
3925
	
89390
3926
						id = split[0];
89391
						id = split[0];
3927
						className = split[1];
89392
						className = split[1];
3928
					}
89393
					}
Lines 3932-3945 Link Here
3932
					else {
89397
					else {
3933
						className = attr;
89398
						className = attr;
3934
					}
89399
					}
3935
	
89400
3936
					newNode
89401
					newNode
3937
						.attr('id', id.substring(1))
89402
						.attr('id', id.substring(1))
3938
						.addClass(className);
89403
						.addClass(className);
3939
	
89404
3940
					i++; // Move along the position array
89405
					i++; // Move along the position array
3941
				}
89406
				}
3942
	
89407
3943
				insert.append( newNode );
89408
				insert.append( newNode );
3944
				insert = newNode;
89409
				insert = newNode;
3945
			}
89410
			}
Lines 3967-3973 Link Here
3967
		}
89432
		}
3968
	}
89433
	}
3969
	
89434
	
3970
	
89435
3971
	/**
89436
	/**
3972
	 * Use the DOM source to create up an array of header cells. The idea here is to
89437
	 * Use the DOM source to create up an array of header cells. The idea here is to
3973
	 * create a layout grid (array) of rows x columns, which contains a reference
89438
	 * create a layout grid (array) of rows x columns, which contains a reference
Lines 4028-4040 Link Here
4028
					unique = colspan === 1 ?
89493
					unique = colspan === 1 ?
4029
						true :
89494
						true :
4030
						false;
89495
						false;
4031
					
89496
4032
					// Perform header setup
89497
					// Perform header setup
4033
					if ( write ) {
89498
					if ( write ) {
4034
						if (unique) {
89499
						if (unique) {
4035
							// Allow column options to be set from HTML attributes
89500
							// Allow column options to be set from HTML attributes
4036
							_fnColumnOptions( settings, shifted, _fnEscapeObject(jqCell.data()) );
89501
							_fnColumnOptions( settings, shifted, _fnEscapeObject(jqCell.data()) );
4037
							
89502
4038
							// Get the width for the column. This can be defined from the
89503
							// Get the width for the column. This can be defined from the
4039
							// width attribute, style attribute or `columns.width` option
89504
							// width attribute, style attribute or `columns.width` option
4040
							var columnDef = columns[shifted];
89505
							var columnDef = columns[shifted];
Lines 4071-4077 Link Here
4071
									cell.innerHTML = columnDef.footer;
89536
									cell.innerHTML = columnDef.footer;
4072
								}
89537
								}
4073
							}
89538
							}
4074
	
89539
4075
							// Fall back to the aria-label attribute on the table header if no ariaTitle is
89540
							// Fall back to the aria-label attribute on the table header if no ariaTitle is
4076
							// provided.
89541
							// provided.
4077
							if (! columnDef.ariaTitle) {
89542
							if (! columnDef.ariaTitle) {
Lines 4085-4092 Link Here
4085
						}
89550
						}
4086
	
89551
	
4087
						// Wrap the column title so we can write to it in future
89552
						// Wrap the column title so we can write to it in future
4088
						if ( $('span.dt-column-title', cell).length === 0) {
89553
						if ( $('.dt-column-title', cell).length === 0) {
4089
							$('<span>')
89554
							$(document.createElement(settings.columnTitleTag))
4090
								.addClass('dt-column-title')
89555
								.addClass('dt-column-title')
4091
								.append(cell.childNodes)
89556
								.append(cell.childNodes)
4092
								.appendTo(cell);
89557
								.appendTo(cell);
Lines 4097-4114 Link Here
4097
							isHeader &&
89562
							isHeader &&
4098
							jqCell.filter(':not([data-dt-order=disable])').length !== 0 &&
89563
							jqCell.filter(':not([data-dt-order=disable])').length !== 0 &&
4099
							jqCell.parent(':not([data-dt-order=disable])').length !== 0 &&
89564
							jqCell.parent(':not([data-dt-order=disable])').length !== 0 &&
4100
							$('span.dt-column-order', cell).length === 0
89565
							$('.dt-column-order', cell).length === 0
4101
						) {
89566
						) {
4102
							$('<span>')
89567
							$(document.createElement(settings.columnTitleTag))
4103
								.addClass('dt-column-order')
89568
								.addClass('dt-column-order')
4104
								.appendTo(cell);
89569
								.appendTo(cell);
4105
						}
89570
						}
4106
89571
	
4107
						// We need to wrap the elements in the header in another element to use flexbox
89572
						// We need to wrap the elements in the header in another element to use flexbox
4108
						// layout for those elements
89573
						// layout for those elements
4109
						var headerFooter = isHeader ? 'header' : 'footer';
89574
						var headerFooter = isHeader ? 'header' : 'footer';
4110
89575
	
4111
						if ( $('span.dt-column-' + headerFooter, cell).length === 0) {
89576
						if ( $('div.dt-column-' + headerFooter, cell).length === 0) {
4112
							$('<div>')
89577
							$('<div>')
4113
								.addClass('dt-column-' + headerFooter)
89578
								.addClass('dt-column-' + headerFooter)
4114
								.append(cell.childNodes)
89579
								.append(cell.childNodes)
Lines 4134-4140 Link Here
4134
					// as belonging to a column
89599
					// as belonging to a column
4135
					cell.setAttribute('data-dt-column', _unique(cols).join(','));
89600
					cell.setAttribute('data-dt-column', _unique(cols).join(','));
4136
				}
89601
				}
4137
	
89602
4138
				cell = cell.nextSibling;
89603
				cell = cell.nextSibling;
4139
			}
89604
			}
4140
		}
89605
		}
Lines 4159-4165 Link Here
4159
				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
89624
				iInitDisplayStart >= oSettings.fnRecordsDisplay() ?
4160
					0 :
89625
					0 :
4161
					iInitDisplayStart;
89626
					iInitDisplayStart;
4162
	
89627
4163
			oSettings.iInitDisplayStart = -1;
89628
			oSettings.iInitDisplayStart = -1;
4164
		}
89629
		}
4165
	}
89630
	}
Lines 4199-4222 Link Here
4199
					// noop
89664
					// noop
4200
				}
89665
				}
4201
			}
89666
			}
4202
	
89667
4203
			oSettings.json = json;
89668
			oSettings.json = json;
4204
	
89669
4205
			_fnCallbackFire(oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR], true);
89670
			_fnCallbackFire(oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR], true);
4206
			fn(json);
89671
			fn(json);
4207
		};
89672
		};
4208
	
89673
4209
		if ($.isPlainObject(ajax) && ajax.data) {
89674
		if ($.isPlainObject(ajax) && ajax.data) {
4210
			ajaxData = ajax.data;
89675
			ajaxData = ajax.data;
4211
	
89676
4212
			var newData =
89677
			var newData =
4213
				typeof ajaxData === 'function'
89678
				typeof ajaxData === 'function'
4214
					? ajaxData(data, oSettings) // fn can manipulate data or return
89679
					? ajaxData(data, oSettings) // fn can manipulate data or return
4215
					: ajaxData; // an object or array to merge
89680
					: ajaxData; // an object or array to merge
4216
	
89681
4217
			// If the function returned something, use that alone
89682
			// If the function returned something, use that alone
4218
			data = typeof ajaxData === 'function' && newData ? newData : $.extend(true, data, newData);
89683
			data = typeof ajaxData === 'function' && newData ? newData : $.extend(true, data, newData);
4219
	
89684
4220
			// Remove the data property as we've resolved it already and don't want
89685
			// Remove the data property as we've resolved it already and don't want
4221
			// jQuery to do it again (it is restored at the end of the function)
89686
			// jQuery to do it again (it is restored at the end of the function)
4222
			delete ajax.data;
89687
			delete ajax.data;
Lines 4237-4243 Link Here
4237
					[oSettings, null, oSettings.jqXHR],
89702
					[oSettings, null, oSettings.jqXHR],
4238
					true
89703
					true
4239
				);
89704
				);
4240
89705
	
4241
				if (ret.indexOf(true) === -1) {
89706
				if (ret.indexOf(true) === -1) {
4242
					if (error == 'parsererror') {
89707
					if (error == 'parsererror') {
4243
						_fnLog(oSettings, 0, 'Invalid JSON response', 1);
89708
						_fnLog(oSettings, 0, 'Invalid JSON response', 1);
Lines 4265-4272 Link Here
4265
		// Custom Ajax option to submit the parameters as a JSON string
89730
		// Custom Ajax option to submit the parameters as a JSON string
4266
		if (baseAjax.submitAs === 'json' && typeof data === 'object') {
89731
		if (baseAjax.submitAs === 'json' && typeof data === 'object') {
4267
			baseAjax.data = JSON.stringify(data);
89732
			baseAjax.data = JSON.stringify(data);
4268
		}
4269
89733
89734
			if (!baseAjax.contentType) {
89735
				baseAjax.contentType = 'application/json; charset=utf-8';
89736
			}
89737
		}
89738
	
4270
		if (typeof ajax === 'function') {
89739
		if (typeof ajax === 'function') {
4271
			// Is a function - let the caller define what needs to be done
89740
			// Is a function - let the caller define what needs to be done
4272
			oSettings.jqXHR = ajax.call(instance, data, callback, oSettings);
89741
			oSettings.jqXHR = ajax.call(instance, data, callback, oSettings);
Lines 4299-4310 Link Here
4299
	function _fnAjaxUpdate(settings) {
89768
	function _fnAjaxUpdate(settings) {
4300
		settings.iDraw++;
89769
		settings.iDraw++;
4301
		_fnProcessingDisplay(settings, true);
89770
		_fnProcessingDisplay(settings, true);
4302
	
89771
4303
		_fnBuildAjax(settings, _fnAjaxParameters(settings), function (json) {
89772
		_fnBuildAjax(settings, _fnAjaxParameters(settings), function (json) {
4304
			_fnAjaxUpdateDraw(settings, json);
89773
			_fnAjaxUpdateDraw(settings, json);
4305
		});
89774
		});
4306
	}
89775
	}
4307
	
89776
4308
	/**
89777
	/**
4309
	 * Build up the parameters in an object needed for a server-side processing
89778
	 * Build up the parameters in an object needed for a server-side processing
4310
	 * request.
89779
	 * request.
Lines 4437-4450 Link Here
4437
				dataProp = dataSrc.data;
89906
				dataProp = dataSrc.data;
4438
			}
89907
			}
4439
		}
89908
		}
4440
	
89909
4441
		if (!write) {
89910
		if (!write) {
4442
			if (dataProp === 'data') {
89911
			if (dataProp === 'data') {
4443
				// If the default, then we still want to support the old style, and safely ignore
89912
				// If the default, then we still want to support the old style, and safely ignore
4444
				// it if possible
89913
				// it if possible
4445
				return json.aaData || json[dataProp];
89914
				return json.aaData || json[dataProp];
4446
			}
89915
			}
4447
	
89916
4448
			return dataProp !== '' ? _fnGetObjectDataFn(dataProp)(json) : json;
89917
			return dataProp !== '' ? _fnGetObjectDataFn(dataProp)(json) : json;
4449
		}
89918
		}
4450
89919
Lines 4484-4490 Link Here
4484
		return json[old] !== undefined ? json[old] : json[param];
89953
		return json[old] !== undefined ? json[old] : json[param];
4485
	}
89954
	}
4486
	
89955
	
4487
	
89956
4488
	/**
89957
	/**
4489
	 * Filter the table using both the global filter and column based filtering
89958
	 * Filter the table using both the global filter and column based filtering
4490
	 *  @param {object} settings dataTables settings object
89959
	 *  @param {object} settings dataTables settings object
Lines 4542-4548 Link Here
4542
	
90011
	
4543
	/**
90012
	/**
4544
	 * Apply custom filtering functions
90013
	 * Apply custom filtering functions
4545
	 * 
90014
	 *
4546
	 * This is legacy now that we have named functions, but it is widely used
90015
	 * This is legacy now that we have named functions, but it is widely used
4547
	 * from 1.x, so it is not yet deprecated.
90016
	 * from 1.x, so it is not yet deprecated.
4548
	 *  @param {object} oSettings dataTables settings object
90017
	 *  @param {object} oSettings dataTables settings object
Lines 4561-4567 Link Here
4561
			for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {
90030
			for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {
4562
				rowIdx = displayRows[ j ];
90031
				rowIdx = displayRows[ j ];
4563
				row = settings.aoData[ rowIdx ];
90032
				row = settings.aoData[ rowIdx ];
4564
	
90033
4565
				if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {
90034
				if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {
4566
					rows.push( rowIdx );
90035
					rows.push( rowIdx );
4567
				}
90036
				}
Lines 4583-4592 Link Here
4583
		if ( input === '' ) {
90052
		if ( input === '' ) {
4584
			return;
90053
			return;
4585
		}
90054
		}
4586
	
90055
4587
		var i = 0;
90056
		var i = 0;
4588
		var matched = [];
90057
		var matched = [];
4589
	
90058
4590
		// Search term can be a function, regex or string - if a string we apply our
90059
		// Search term can be a function, regex or string - if a string we apply our
4591
		// smart filtering regex (assuming the options require that)
90060
		// smart filtering regex (assuming the options require that)
4592
		var searchFunc = typeof input === 'function' ? input : null;
90061
		var searchFunc = typeof input === 'function' ? input : null;
Lines 4595-4608 Link Here
4595
			: searchFunc
90064
			: searchFunc
4596
				? null
90065
				? null
4597
				: _fnFilterCreateSearch( input, options );
90066
				: _fnFilterCreateSearch( input, options );
4598
	
90067
4599
		// Then for each row, does the test pass. If not, lop the row from the array
90068
		// Then for each row, does the test pass. If not, lop the row from the array
4600
		for (i=0 ; i<searchRows.length ; i++) {
90069
		for (i=0 ; i<searchRows.length ; i++) {
4601
			var row = settings.aoData[ searchRows[i] ];
90070
			var row = settings.aoData[ searchRows[i] ];
4602
			var data = column === undefined
90071
			var data = column === undefined
4603
				? row._sFilterRow
90072
				? row._sFilterRow
4604
				: row._aFilterData[ column ];
90073
				: row._aFilterData[ column ];
4605
	
90074
4606
			if ( (searchFunc && searchFunc(data, row._aData, searchRows[i], column)) || (rpSearch && rpSearch.test(data)) ) {
90075
			if ( (searchFunc && searchFunc(data, row._aData, searchRows[i], column)) || (rpSearch && rpSearch.test(data)) ) {
4607
				matched.push(searchRows[i]);
90076
				matched.push(searchRows[i]);
4608
			}
90077
			}
Lines 4610-4616 Link Here
4610
	
90079
	
4611
		// Mutate the searchRows array
90080
		// Mutate the searchRows array
4612
		searchRows.length = matched.length;
90081
		searchRows.length = matched.length;
4613
	
90082
4614
		for (i=0 ; i<matched.length ; i++) {
90083
		for (i=0 ; i<matched.length ; i++) {
4615
			searchRows[i] = matched[i];
90084
			searchRows[i] = matched[i];
4616
		}
90085
		}
Lines 4640-4668 Link Here
4640
		if (typeof search !== 'string') {
90109
		if (typeof search !== 'string') {
4641
			search = search.toString();
90110
			search = search.toString();
4642
		}
90111
		}
4643
	
90112
4644
		// Remove diacritics if normalize is set up to do so
90113
		// Remove diacritics if normalize is set up to do so
4645
		search = _normalize(search);
90114
		search = _normalize(search);
4646
	
90115
4647
		if (options.exact) {
90116
		if (options.exact) {
4648
			return new RegExp(
90117
			return new RegExp(
4649
				'^'+_fnEscapeRegex(search)+'$',
90118
				'^'+_fnEscapeRegex(search)+'$',
4650
				options.caseInsensitive ? 'i' : ''
90119
				options.caseInsensitive ? 'i' : ''
4651
			);
90120
			);
4652
		}
90121
		}
4653
	
90122
4654
		search = options.regex ?
90123
		search = options.regex ?
4655
			search :
90124
			search :
4656
			_fnEscapeRegex( search );
90125
			_fnEscapeRegex( search );
4657
		
90126
4658
		if ( options.smart ) {
90127
		if ( options.smart ) {
4659
			/* For smart filtering we want to allow the search to work regardless of
90128
			/* For smart filtering we want to allow the search to work regardless of
4660
			 * word order. We also want double quoted text to be preserved, so word
90129
			 * word order. We also want double quoted text to be preserved, so word
4661
			 * order is important - a la google. And a negative look around for
90130
			 * order is important - a la google. And a negative look around for
4662
			 * finding rows which don't contain a given string.
90131
			 * finding rows which don't contain a given string.
4663
			 * 
90132
			 *
4664
			 * So this is the sort of thing we want to generate:
90133
			 * So this is the sort of thing we want to generate:
4665
			 * 
90134
			 *
4666
			 * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
90135
			 * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
4667
			 */
90136
			 */
4668
			var parts = search.match( /!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g ) || [''];
90137
			var parts = search.match( /!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g ) || [''];
Lines 4693-4720 Link Here
4693
					if (word.length > 1) {
90162
					if (word.length > 1) {
4694
						not.push('(?!'+word+')');
90163
						not.push('(?!'+word+')');
4695
					}
90164
					}
4696
	
90165
4697
					word = '';
90166
					word = '';
4698
				}
90167
				}
4699
	
90168
4700
				return word.replace(/"/g, '');
90169
				return word.replace(/"/g, '');
4701
			} );
90170
			} );
4702
	
90171
	
4703
			var match = not.length
90172
			var match = not.length
4704
				? not.join('')
90173
				? not.join('')
4705
				: '';
90174
				: '';
4706
	
90175
4707
			var boundary = options.boundary
90176
			var boundary = options.boundary
4708
				? '\\b'
90177
				? '\\b'
4709
				: '';
90178
				: '';
4710
	
90179
4711
			search = '^(?=.*?'+boundary+a.join( ')(?=.*?'+boundary )+')('+match+'.)*$';
90180
			search = '^(?=.*?'+boundary+a.join( ')(?=.*?'+boundary )+')('+match+'.)*$';
4712
		}
90181
		}
4713
	
90182
	
4714
		return new RegExp( search, options.caseInsensitive ? 'i' : '' );
90183
		return new RegExp( search, options.caseInsensitive ? 'i' : '' );
4715
	}
90184
	}
4716
	
90185
	
4717
	
90186
4718
	/**
90187
	/**
4719
	 * Escape a string such that it can be used in a regular expression
90188
	 * Escape a string such that it can be used in a regular expression
4720
	 *  @param {string} sVal string to escape
90189
	 *  @param {string} sVal string to escape
Lines 4722-4731 Link Here
4722
	 *  @memberof DataTable#oApi
90191
	 *  @memberof DataTable#oApi
4723
	 */
90192
	 */
4724
	var _fnEscapeRegex = DataTable.util.escapeRegex;
90193
	var _fnEscapeRegex = DataTable.util.escapeRegex;
4725
	
90194
4726
	var __filter_div = $('<div>')[0];
90195
	var __filter_div = $('<div>')[0];
4727
	var __filter_div_textContent = __filter_div.textContent !== undefined;
90196
	var __filter_div_textContent = __filter_div.textContent !== undefined;
4728
	
90197
4729
	// Update the filtering data for each row if needed (by invalidation or first run)
90198
	// Update the filtering data for each row if needed (by invalidation or first run)
4730
	function _fnFilterData ( settings )
90199
	function _fnFilterData ( settings )
4731
	{
90200
	{
Lines 4781-4793 Link Here
4781
	
90250
	
4782
					filterData.push( cellData );
90251
					filterData.push( cellData );
4783
				}
90252
				}
4784
	
90253
4785
				row._aFilterData = filterData;
90254
				row._aFilterData = filterData;
4786
				row._sFilterRow = filterData.join('  ');
90255
				row._sFilterRow = filterData.join('  ');
4787
				wasInvalidated = true;
90256
				wasInvalidated = true;
4788
			}
90257
			}
4789
		}
90258
		}
4790
	
90259
4791
		return wasInvalidated;
90260
		return wasInvalidated;
4792
	}
90261
	}
4793
	
90262
	
Lines 4842-17108 Link Here
4842
			_fnAddOptionsHtml( settings );
90311
			_fnAddOptionsHtml( settings );
4843
			_fnSortInit( settings );
90312
			_fnSortInit( settings );
4844
	
90313
	
4845
			_colGroup( settings );
90314
			_colGroup( settings );
90315
	
90316
			/* Okay to show that something is going on now */
90317
			_fnProcessingDisplay( settings, true );
90318
	
90319
			_fnCallbackFire( settings, null, 'preInit', [settings], true );
90320
	
90321
			// If there is default sorting required - let's do it. The sort function
90322
			// will do the drawing for us. Otherwise we draw the table regardless of the
90323
			// Ajax source - this allows the table to look initialised for Ajax sourcing
90324
			// data (show 'loading' message possibly)
90325
			_fnReDraw( settings );
90326
90327
			// Server-side processing init complete is done by _fnAjaxUpdateDraw
90328
			if ( dataSrc != 'ssp' || deferLoading ) {
90329
				// if there is an ajax source load the data
90330
				if ( dataSrc == 'ajax' ) {
90331
					_fnBuildAjax( settings, {}, function(json) {
90332
						var aData = _fnAjaxDataSrc( settings, json );
90333
90334
						// Got the data - add it to the table
90335
						for ( i=0 ; i<aData.length ; i++ ) {
90336
							_fnAddData( settings, aData[i] );
90337
						}
90338
	
90339
						// Reset the init display for cookie saving. We've already done
90340
						// a filter, and therefore cleared it before. So we need to make
90341
						// it appear 'fresh'
90342
						settings.iInitDisplayStart = iAjaxStart;
90343
	
90344
						_fnReDraw( settings );
90345
						_fnProcessingDisplay( settings, false );
90346
						_fnInitComplete( settings );
90347
					}, settings );
90348
				}
90349
				else {
90350
					_fnInitComplete( settings );
90351
					_fnProcessingDisplay( settings, false );
90352
				}
90353
			}
90354
		} );
90355
	}
90356
	
90357
90358
	/**
90359
	 * Draw the table for the first time, adding all required features
90360
	 *  @param {object} settings dataTables settings object
90361
	 *  @memberof DataTable#oApi
90362
	 */
90363
	function _fnInitComplete ( settings )
90364
	{
90365
		if (settings._bInitComplete) {
90366
			return;
90367
		}
90368
	
90369
		var args = [settings, settings.json];
90370
	
90371
		settings._bInitComplete = true;
90372
90373
		// Table is fully set up and we have data, so calculate the
90374
		// column widths
90375
		_fnAdjustColumnSizing( settings );
90376
90377
		_fnCallbackFire( settings, null, 'plugin-init', args, true );
90378
		_fnCallbackFire( settings, 'aoInitComplete', 'init', args, true );
90379
	}
90380
90381
	function _fnLengthChange ( settings, val )
90382
	{
90383
		var len = parseInt( val, 10 );
90384
		settings._iDisplayLength = len;
90385
90386
		_fnLengthOverflow( settings );
90387
90388
		// Fire length change event
90389
		_fnCallbackFire( settings, null, 'length', [settings, len] );
90390
	}
90391
	
90392
	/**
90393
	 * Alter the display settings to change the page
90394
	 *  @param {object} settings DataTables settings object
90395
	 *  @param {string|int} action Paging action to take: "first", "previous",
90396
	 *    "next" or "last" or page number to jump to (integer)
90397
	 *  @param [bool] redraw Automatically draw the update or not
90398
	 *  @returns {bool} true page has changed, false - no change
90399
	 *  @memberof DataTable#oApi
90400
	 */
90401
	function _fnPageChange ( settings, action, redraw )
90402
	{
90403
		var
90404
			start     = settings._iDisplayStart,
90405
			len       = settings._iDisplayLength,
90406
			records   = settings.fnRecordsDisplay();
90407
	
90408
		if ( records === 0 || len === -1 )
90409
		{
90410
			start = 0;
90411
		}
90412
		else if ( typeof action === "number" )
90413
		{
90414
			start = action * len;
90415
	
90416
			if ( start > records )
90417
			{
90418
				start = 0;
90419
			}
90420
		}
90421
		else if ( action == "first" )
90422
		{
90423
			start = 0;
90424
		}
90425
		else if ( action == "previous" )
90426
		{
90427
			start = len >= 0 ?
90428
				start - len :
90429
				0;
90430
	
90431
			if ( start < 0 )
90432
			{
90433
				start = 0;
90434
			}
90435
		}
90436
		else if ( action == "next" )
90437
		{
90438
			if ( start + len < records )
90439
			{
90440
				start += len;
90441
			}
90442
		}
90443
		else if ( action == "last" )
90444
		{
90445
			start = Math.floor( (records-1) / len) * len;
90446
		}
90447
		else if ( action === 'ellipsis' )
90448
		{
90449
			return;
90450
		}
90451
		else
90452
		{
90453
			_fnLog( settings, 0, "Unknown paging action: "+action, 5 );
90454
		}
90455
	
90456
		var changed = settings._iDisplayStart !== start;
90457
		settings._iDisplayStart = start;
4846
	
90458
	
4847
			/* Okay to show that something is going on now */
90459
		_fnCallbackFire( settings, null, changed ? 'page' : 'page-nc', [settings] );
4848
			_fnProcessingDisplay( settings, true );
4849
	
90460
	
4850
			_fnCallbackFire( settings, null, 'preInit', [settings], true );
90461
		if ( changed && redraw ) {
90462
			_fnDraw( settings );
90463
		}
4851
	
90464
	
4852
			// If there is default sorting required - let's do it. The sort function
90465
		return changed;
4853
			// will do the drawing for us. Otherwise we draw the table regardless of the
90466
	}
4854
			// Ajax source - this allows the table to look initialised for Ajax sourcing
4855
			// data (show 'loading' message possibly)
4856
			_fnReDraw( settings );
4857
	
90467
	
4858
			// Server-side processing init complete is done by _fnAjaxUpdateDraw
4859
			if ( dataSrc != 'ssp' || deferLoading ) {
4860
				// if there is an ajax source load the data
4861
				if ( dataSrc == 'ajax' ) {
4862
					_fnBuildAjax( settings, {}, function(json) {
4863
						var aData = _fnAjaxDataSrc( settings, json );
4864
	
90468
	
4865
						// Got the data - add it to the table
90469
	/**
4866
						for ( i=0 ; i<aData.length ; i++ ) {
90470
	 * Generate the node required for the processing node
4867
							_fnAddData( settings, aData[i] );
90471
	 *  @param {object} settings DataTables settings object
4868
						}
90472
	 */
90473
	function _processingHtml ( settings )
90474
	{
90475
		var table = settings.nTable;
90476
		var scrolling = settings.oScroll.sX !== '' || settings.oScroll.sY !== '';
4869
	
90477
	
4870
						// Reset the init display for cookie saving. We've already done
90478
		if ( settings.oFeatures.bProcessing ) {
4871
						// a filter, and therefore cleared it before. So we need to make
90479
			var n = $('<div/>', {
4872
						// it appear 'fresh'
90480
					'id': settings.sTableId + '_processing',
4873
						settings.iInitDisplayStart = iAjaxStart;
90481
					'class': settings.oClasses.processing.container,
90482
					'role': 'status'
90483
				} )
90484
				.html( settings.oLanguage.sProcessing )
90485
				.append('<div><div></div><div></div><div></div><div></div></div>');
4874
	
90486
	
4875
						_fnReDraw( settings );
90487
			// Different positioning depending on if scrolling is enabled or not
4876
						_fnProcessingDisplay( settings, false );
90488
			if (scrolling) {
4877
						_fnInitComplete( settings );
90489
				n.prependTo( $('div.dt-scroll', settings.nTableWrapper) );
4878
					}, settings );
4879
				}
4880
				else {
4881
					_fnInitComplete( settings );
4882
					_fnProcessingDisplay( settings, false );
4883
				}
4884
			}
90490
			}
4885
		} );
90491
			else {
90492
				n.insertBefore( table );
90493
			}
90494
	
90495
			$(table).on( 'processing.dt.DT', function (e, s, show) {
90496
				n.css( 'display', show ? 'block' : 'none' );
90497
			} );
90498
		}
4886
	}
90499
	}
4887
	
90500
	
4888
	
90501
	
4889
	/**
90502
	/**
4890
	 * Draw the table for the first time, adding all required features
90503
	 * Display or hide the processing indicator
90504
	 *  @param {object} settings DataTables settings object
90505
	 *  @param {bool} show Show the processing indicator (true) or not (false)
90506
	 */
90507
	function _fnProcessingDisplay ( settings, show )
90508
	{
90509
		// Ignore cases when we are still redrawing
90510
		if (settings.bDrawing && show === false) {
90511
			return;
90512
		}
90513
	
90514
		_fnCallbackFire( settings, null, 'processing', [settings, show] );
90515
	}
90516
90517
	/**
90518
	 * Show the processing element if an action takes longer than a given time
90519
	 *
90520
	 * @param {*} settings DataTables settings object
90521
	 * @param {*} enable Do (true) or not (false) async processing (local feature enablement)
90522
	 * @param {*} run Function to run
90523
	 */
90524
	function _fnProcessingRun( settings, enable, run ) {
90525
		if (! enable) {
90526
			// Immediate execution, synchronous
90527
			run();
90528
		}
90529
		else {
90530
			_fnProcessingDisplay(settings, true);
90531
90532
			// Allow the processing display to show if needed
90533
			setTimeout(function () {
90534
				run();
90535
	
90536
				_fnProcessingDisplay(settings, false);
90537
			}, 0);
90538
		}
90539
	}
90540
	/**
90541
	 * Add any control elements for the table - specifically scrolling
4891
	 *  @param {object} settings dataTables settings object
90542
	 *  @param {object} settings dataTables settings object
90543
	 *  @returns {node} Node to add to the DOM
4892
	 *  @memberof DataTable#oApi
90544
	 *  @memberof DataTable#oApi
4893
	 */
90545
	 */
4894
	function _fnInitComplete ( settings )
90546
	function _fnFeatureHtmlTable ( settings )
4895
	{
90547
	{
4896
		if (settings._bInitComplete) {
90548
		var table = $(settings.nTable);
4897
			return;
90549
90550
		// Scrolling from here on in
90551
		var scroll = settings.oScroll;
90552
90553
		if ( scroll.sX === '' && scroll.sY === '' ) {
90554
			return settings.nTable;
90555
		}
90556
90557
		var scrollX = scroll.sX;
90558
		var scrollY = scroll.sY;
90559
		var classes = settings.oClasses.scrolling;
90560
		var caption = settings.captionNode;
90561
		var captionSide = caption ? caption._captionSide : null;
90562
		var headerClone = $( table[0].cloneNode(false) );
90563
		var footerClone = $( table[0].cloneNode(false) );
90564
		var footer = table.children('tfoot');
90565
		var _div = '<div/>';
90566
		var size = function ( s ) {
90567
			return !s ? null : _fnStringToCss( s );
90568
		};
90569
90570
		if ( ! footer.length ) {
90571
			footer = null;
90572
		}
90573
90574
		/*
90575
		 * The HTML structure that we want to generate in this function is:
90576
		 *  div - scroller
90577
		 *    div - scroll head
90578
		 *      div - scroll head inner
90579
		 *        table - scroll head table
90580
		 *          thead - thead
90581
		 *    div - scroll body
90582
		 *      table - table (master table)
90583
		 *        thead - thead clone for sizing
90584
		 *        tbody - tbody
90585
		 *    div - scroll foot
90586
		 *      div - scroll foot inner
90587
		 *        table - scroll foot table
90588
		 *          tfoot - tfoot
90589
		 */
90590
		var scroller = $( _div, { 'class': classes.container } )
90591
			.append(
90592
				$(_div, { 'class': classes.header.self } )
90593
					.css( {
90594
						overflow: 'hidden',
90595
						position: 'relative',
90596
						border: 0,
90597
						width: scrollX ? size(scrollX) : '100%'
90598
					} )
90599
					.append(
90600
						$(_div, { 'class': classes.header.inner } )
90601
							.css( {
90602
								'box-sizing': 'content-box',
90603
								width: scroll.sXInner || '100%'
90604
							} )
90605
							.append(
90606
								headerClone
90607
									.removeAttr('id')
90608
									.css( 'margin-left', 0 )
90609
									.append( captionSide === 'top' ? caption : null )
90610
									.append(
90611
										table.children('thead')
90612
									)
90613
							)
90614
					)
90615
			)
90616
			.append(
90617
				$(_div, { 'class': classes.body } )
90618
					.css( {
90619
						position: 'relative',
90620
						overflow: 'auto',
90621
						width: size( scrollX )
90622
					} )
90623
					.append( table )
90624
			);
90625
90626
		if ( footer ) {
90627
			scroller.append(
90628
				$(_div, { 'class': classes.footer.self } )
90629
					.css( {
90630
						overflow: 'hidden',
90631
						border: 0,
90632
						width: scrollX ? size(scrollX) : '100%'
90633
					} )
90634
					.append(
90635
						$(_div, { 'class': classes.footer.inner } )
90636
							.append(
90637
								footerClone
90638
									.removeAttr('id')
90639
									.css( 'margin-left', 0 )
90640
									.append( captionSide === 'bottom' ? caption : null )
90641
									.append(
90642
										table.children('tfoot')
90643
									)
90644
							)
90645
					)
90646
			);
4898
		}
90647
		}
90648
90649
		var children = scroller.children();
90650
		var scrollHead = children[0];
90651
		var scrollBody = children[1];
90652
		var scrollFoot = footer ? children[2] : null;
4899
	
90653
	
4900
		var args = [settings, settings.json];
90654
		// When the body is scrolled, then we also want to scroll the headers
90655
		$(scrollBody).on( 'scroll.DT', function () {
90656
			var scrollLeft = this.scrollLeft;
4901
	
90657
	
4902
		settings._bInitComplete = true;
90658
			scrollHead.scrollLeft = scrollLeft;
4903
	
90659
	
4904
		// Table is fully set up and we have data, so calculate the
90660
			if ( footer ) {
4905
		// column widths
90661
				scrollFoot.scrollLeft = scrollLeft;
4906
		_fnAdjustColumnSizing( settings );
90662
			}
90663
		} );
4907
	
90664
	
4908
		_fnCallbackFire( settings, null, 'plugin-init', args, true );
90665
		// When focus is put on the header cells, we might need to scroll the body
4909
		_fnCallbackFire( settings, 'aoInitComplete', 'init', args, true );
90666
		$('th, td', scrollHead).on('focus', function () {
4910
	}
90667
			var scrollLeft = scrollHead.scrollLeft;
90668
	
90669
			scrollBody.scrollLeft = scrollLeft;
90670
90671
			if ( footer ) {
90672
				scrollBody.scrollLeft = scrollLeft;
90673
			}
90674
		});
90675
	
90676
		$(scrollBody).css('max-height', scrollY);
90677
		if (! scroll.bCollapse) {
90678
			$(scrollBody).css('height', scrollY);
90679
		}
4911
	
90680
	
4912
	function _fnLengthChange ( settings, val )
90681
		settings.nScrollHead = scrollHead;
4913
	{
90682
		settings.nScrollBody = scrollBody;
4914
		var len = parseInt( val, 10 );
90683
		settings.nScrollFoot = scrollFoot;
4915
		settings._iDisplayLength = len;
4916
	
90684
	
4917
		_fnLengthOverflow( settings );
90685
		// On redraw - align columns
90686
		settings.aoDrawCallback.push(_fnScrollDraw);
4918
	
90687
	
4919
		// Fire length change event
90688
		return scroller[0];
4920
		_fnCallbackFire( settings, null, 'length', [settings, len] );
4921
	}
90689
	}
4922
	
90690
	
90691
90692
4923
	/**
90693
	/**
4924
	 * Alter the display settings to change the page
90694
	 * Update the header, footer and body tables for resizing - i.e. column
4925
	 *  @param {object} settings DataTables settings object
90695
	 * alignment.
4926
	 *  @param {string|int} action Paging action to take: "first", "previous",
90696
	 *
4927
	 *    "next" or "last" or page number to jump to (integer)
90697
	 * Welcome to the most horrible function DataTables. The process that this
4928
	 *  @param [bool] redraw Automatically draw the update or not
90698
	 * function follows is basically:
4929
	 *  @returns {bool} true page has changed, false - no change
90699
	 *   1. Re-create the table inside the scrolling div
90700
	 *   2. Correct colgroup > col values if needed
90701
	 *   3. Copy colgroup > col over to header and footer
90702
	 *   4. Clean up
90703
	 *
90704
	 *  @param {object} settings dataTables settings object
4930
	 *  @memberof DataTable#oApi
90705
	 *  @memberof DataTable#oApi
4931
	 */
90706
	 */
4932
	function _fnPageChange ( settings, action, redraw )
90707
	function _fnScrollDraw ( settings )
4933
	{
90708
	{
90709
		// Given that this is such a monster function, a lot of variables are use
90710
		// to try and keep the minimised size as small as possible
4934
		var
90711
		var
4935
			start     = settings._iDisplayStart,
90712
			scroll         = settings.oScroll,
4936
			len       = settings._iDisplayLength,
90713
			barWidth       = scroll.iBarWidth,
4937
			records   = settings.fnRecordsDisplay();
90714
			divHeader      = $(settings.nScrollHead),
4938
	
90715
			divHeaderInner = divHeader.children('div'),
4939
		if ( records === 0 || len === -1 )
90716
			divHeaderTable = divHeaderInner.children('table'),
4940
		{
90717
			divBodyEl      = settings.nScrollBody,
4941
			start = 0;
90718
			divBody        = $(divBodyEl),
4942
		}
90719
			divFooter      = $(settings.nScrollFoot),
4943
		else if ( typeof action === "number" )
90720
			divFooterInner = divFooter.children('div'),
4944
		{
90721
			divFooterTable = divFooterInner.children('table'),
4945
			start = action * len;
90722
			header         = $(settings.nTHead),
90723
			table          = $(settings.nTable),
90724
			footer         = settings.nTFoot && $('th, td', settings.nTFoot).length ? $(settings.nTFoot) : null,
90725
			browser        = settings.oBrowser,
90726
			headerCopy, footerCopy;
4946
	
90727
	
4947
			if ( start > records )
90728
		// If the scrollbar visibility has changed from the last draw, we need to
4948
			{
90729
		// adjust the column sizes as the table width will have changed to account
4949
				start = 0;
90730
		// for the scrollbar
4950
			}
90731
		var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;
90732
90733
		if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {
90734
			settings.scrollBarVis = scrollBarVis;
90735
			_fnAdjustColumnSizing( settings );
90736
			return; // adjust column sizing will call this function again
4951
		}
90737
		}
4952
		else if ( action == "first" )
90738
		else {
4953
		{
90739
			settings.scrollBarVis = scrollBarVis;
4954
			start = 0;
4955
		}
90740
		}
4956
		else if ( action == "previous" )
4957
		{
4958
			start = len >= 0 ?
4959
				start - len :
4960
				0;
4961
	
90741
	
4962
			if ( start < 0 )
90742
		// 1. Re-create the table inside the scrolling div
4963
			{
90743
		// Remove the old minimised thead and tfoot elements in the inner table
4964
				start = 0;
90744
		table.children('thead, tfoot').remove();
4965
			}
90745
	
90746
		// Clone the current header and footer elements and then place it into the inner table
90747
		headerCopy = header.clone().prependTo( table );
90748
		headerCopy.find('th, td').removeAttr('tabindex');
90749
		headerCopy.find('[id]').removeAttr('id');
90750
90751
		if ( footer ) {
90752
			footerCopy = footer.clone().prependTo( table );
90753
			footerCopy.find('[id]').removeAttr('id');
4966
		}
90754
		}
4967
		else if ( action == "next" )
90755
	
4968
		{
90756
		// 2. Correct colgroup > col values if needed
4969
			if ( start + len < records )
90757
		// It is possible that the cell sizes are smaller than the content, so we need to
4970
			{
90758
		// correct colgroup>col for such cases. This can happen if the auto width detection
4971
				start += len;
90759
		// uses a cell which has a longer string, but isn't the widest! For example
90760
		// "Chief Executive Officer (CEO)" is the longest string in the demo, but
90761
		// "Systems Administrator" is actually the widest string since it doesn't collapse.
90762
		// Note the use of translating into a column index to get the `col` element. This
90763
		// is because of Responsive which might remove `col` elements, knocking the alignment
90764
		// of the indexes out.
90765
		if (settings.aiDisplay.length) {
90766
			// Get the column sizes from the first row in the table. This should really be a
90767
			// [].find, but it wasn't supported in Chrome until Sept 2015, and DT has 10 year
90768
			// browser support
90769
			var firstTr = null;
90770
			var start = _fnDataSource( settings ) !== 'ssp'
90771
				? settings._iDisplayStart
90772
				: 0;
90773
90774
			for (i=start ; i<start + settings.aiDisplay.length ; i++) {
90775
				var idx = settings.aiDisplay[i];
90776
				var tr = settings.aoData[idx].nTr;
90777
90778
				if (tr) {
90779
					firstTr = tr;
90780
					break;
90781
				}
4972
			}
90782
			}
4973
		}
90783
4974
		else if ( action == "last" )
90784
			if (firstTr) {
4975
		{
90785
				var colSizes = $(firstTr).children('th, td').map(function (vis) {
4976
			start = Math.floor( (records-1) / len) * len;
90786
					return {
4977
		}
90787
						idx: _fnVisibleToColumnIndex(settings, vis),
4978
		else if ( action === 'ellipsis' )
90788
						width: $(this).outerWidth()
4979
		{
90789
					};
4980
			return;
90790
				});
4981
		}
4982
		else
4983
		{
4984
			_fnLog( settings, 0, "Unknown paging action: "+action, 5 );
4985
		}
4986
	
90791
	
4987
		var changed = settings._iDisplayStart !== start;
90792
				// Check against what the colgroup > col is set to and correct if needed
4988
		settings._iDisplayStart = start;
90793
				for (var i=0 ; i<colSizes.length ; i++) {
90794
					var colEl = settings.aoColumns[ colSizes[i].idx ].colEl[0];
90795
					var colWidth = colEl.style.width.replace('px', '');
4989
	
90796
	
4990
		_fnCallbackFire( settings, null, changed ? 'page' : 'page-nc', [settings] );
90797
					if (colWidth !== colSizes[i].width) {
90798
						colEl.style.width = colSizes[i].width + 'px';
4991
	
90799
	
4992
		if ( changed && redraw ) {
90800
						if (scroll.sX) {
4993
			_fnDraw( settings );
90801
							colEl.style.minWidth = colSizes[i].width + 'px';
90802
						}
90803
					}
90804
				}
90805
			}
4994
		}
90806
		}
4995
	
90807
	
4996
		return changed;
90808
		// 3. Copy the colgroup over to the header and footer
4997
	}
90809
		divHeaderTable
4998
	
90810
			.find('colgroup')
4999
	
90811
			.remove();
5000
	/**
5001
	 * Generate the node required for the processing node
5002
	 *  @param {object} settings DataTables settings object
5003
	 */
5004
	function _processingHtml ( settings )
5005
	{
5006
		var table = settings.nTable;
5007
		var scrolling = settings.oScroll.sX !== '' || settings.oScroll.sY !== '';
5008
	
90812
	
5009
		if ( settings.oFeatures.bProcessing ) {
90813
		divHeaderTable.append(settings.colgroup.clone());
5010
			var n = $('<div/>', {
5011
					'id': settings.sTableId + '_processing',
5012
					'class': settings.oClasses.processing.container,
5013
					'role': 'status'
5014
				} )
5015
				.html( settings.oLanguage.sProcessing )
5016
				.append('<div><div></div><div></div><div></div><div></div></div>');
5017
	
90814
	
5018
			// Different positioning depending on if scrolling is enabled or not
90815
		if ( footer ) {
5019
			if (scrolling) {
90816
			divFooterTable
5020
				n.prependTo( $('div.dt-scroll', settings.nTableWrapper) );
90817
				.find('colgroup')
5021
			}
90818
				.remove();
5022
			else {
5023
				n.insertBefore( table );
5024
			}
5025
	
90819
	
5026
			$(table).on( 'processing.dt.DT', function (e, s, show) {
90820
			divFooterTable.append(settings.colgroup.clone());
5027
				n.css( 'display', show ? 'block' : 'none' );
5028
			} );
5029
		}
90821
		}
5030
	}
5031
	
90822
	
90823
		// "Hide" the header and footer that we used for the sizing. We need to keep
90824
		// the content of the cell so that the width applied to the header and body
90825
		// both match, but we want to hide it completely.
90826
		$('th, td', headerCopy).each(function () {
90827
			$(this.childNodes).wrapAll('<div class="dt-scroll-sizing">');
90828
		});
5032
	
90829
	
5033
	/**
90830
		if ( footer ) {
5034
	 * Display or hide the processing indicator
90831
			$('th, td', footerCopy).each(function () {
5035
	 *  @param {object} settings DataTables settings object
90832
				$(this.childNodes).wrapAll('<div class="dt-scroll-sizing">');
5036
	 *  @param {bool} show Show the processing indicator (true) or not (false)
90833
			});
5037
	 */
5038
	function _fnProcessingDisplay ( settings, show )
5039
	{
5040
		// Ignore cases when we are still redrawing
5041
		if (settings.bDrawing && show === false) {
5042
			return;
5043
		}
90834
		}
5044
	
90835
	
5045
		_fnCallbackFire( settings, null, 'processing', [settings, show] );
90836
		// 4. Clean up
5046
	}
90837
		// Figure out if there are scrollbar present - if so then we need the header and footer to
90838
		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
90839
		var isScrolling = Math.floor(table.height()) > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
90840
		var paddingSide = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
5047
	
90841
	
5048
	/**
90842
		// Set the width's of the header and footer tables
5049
	 * Show the processing element if an action takes longer than a given time
90843
		var outerWidth = table.outerWidth();
5050
	 *
90844
	
5051
	 * @param {*} settings DataTables settings object
90845
		divHeaderTable.css('width', _fnStringToCss( outerWidth ));
5052
	 * @param {*} enable Do (true) or not (false) async processing (local feature enablement)
90846
		divHeaderInner
5053
	 * @param {*} run Function to run
90847
			.css('width', _fnStringToCss( outerWidth ))
5054
	 */
90848
			.css(paddingSide, isScrolling ? barWidth+"px" : "0px");
5055
	function _fnProcessingRun( settings, enable, run ) {
90849
	
5056
		if (! enable) {
90850
		if ( footer ) {
5057
			// Immediate execution, synchronous
90851
			divFooterTable.css('width', _fnStringToCss( outerWidth ));
5058
			run();
90852
			divFooterInner
90853
				.css('width', _fnStringToCss( outerWidth ))
90854
				.css(paddingSide, isScrolling ? barWidth+"px" : "0px");
5059
		}
90855
		}
5060
		else {
5061
			_fnProcessingDisplay(settings, true);
5062
			
5063
			// Allow the processing display to show if needed
5064
			setTimeout(function () {
5065
				run();
5066
	
90856
	
5067
				_fnProcessingDisplay(settings, false);
90857
		// Correct DOM ordering for colgroup - comes before the thead
5068
			}, 0);
90858
		table.children('colgroup').prependTo(table);
90859
	
90860
		// Adjust the position of the header in case we loose the y-scrollbar
90861
		divBody.trigger('scroll');
90862
	
90863
		// If sorting or filtering has occurred, jump the scrolling back to the top
90864
		// only if we aren't holding the position
90865
		if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
90866
			divBodyEl.scrollTop = 0;
5069
		}
90867
		}
5070
	}
90868
	}
90869
	
5071
	/**
90870
	/**
5072
	 * Add any control elements for the table - specifically scrolling
90871
	 * Calculate the width of columns for the table
5073
	 *  @param {object} settings dataTables settings object
90872
	 *  @param {object} settings dataTables settings object
5074
	 *  @returns {node} Node to add to the DOM
5075
	 *  @memberof DataTable#oApi
90873
	 *  @memberof DataTable#oApi
5076
	 */
90874
	 */
5077
	function _fnFeatureHtmlTable ( settings )
90875
	function _fnCalculateColumnWidths ( settings )
5078
	{
90876
	{
5079
		var table = $(settings.nTable);
90877
		// Not interested in doing column width calculation if auto-width is disabled
90878
		if (! settings.oFeatures.bAutoWidth) {
90879
			return;
90880
		}
5080
	
90881
	
5081
		// Scrolling from here on in
90882
		var
5082
		var scroll = settings.oScroll;
90883
			table = settings.nTable,
90884
			columns = settings.aoColumns,
90885
			scroll = settings.oScroll,
90886
			scrollY = scroll.sY,
90887
			scrollX = scroll.sX,
90888
			scrollXInner = scroll.sXInner,
90889
			visibleColumns = _fnGetColumns( settings, 'bVisible' ),
90890
			tableWidthAttr = table.getAttribute('width'), // from DOM element
90891
			tableContainer = table.parentNode,
90892
			i, j, column, columnIdx;
90893
90894
		var styleWidth = table.style.width;
90895
		var containerWidth = _fnWrapperWidth(settings);
5083
	
90896
	
5084
		if ( scroll.sX === '' && scroll.sY === '' ) {
90897
		// Don't re-run for the same width as the last time
5085
			return settings.nTable;
90898
		if (containerWidth === settings.containerWidth) {
90899
			return false;
5086
		}
90900
		}
5087
	
90901
	
5088
		var scrollX = scroll.sX;
90902
		settings.containerWidth = containerWidth;
5089
		var scrollY = scroll.sY;
5090
		var classes = settings.oClasses.scrolling;
5091
		var caption = settings.captionNode;
5092
		var captionSide = caption ? caption._captionSide : null;
5093
		var headerClone = $( table[0].cloneNode(false) );
5094
		var footerClone = $( table[0].cloneNode(false) );
5095
		var footer = table.children('tfoot');
5096
		var _div = '<div/>';
5097
		var size = function ( s ) {
5098
			return !s ? null : _fnStringToCss( s );
5099
		};
5100
	
90903
	
5101
		if ( ! footer.length ) {
90904
		// If there is no width applied as a CSS style or as an attribute, we assume that
5102
			footer = null;
90905
		// the width is intended to be 100%, which is usually is in CSS, but it is very
90906
		// difficult to correctly parse the rules to get the final result.
90907
		if ( ! styleWidth && ! tableWidthAttr) {
90908
			table.style.width = '100%';
90909
			styleWidth = '100%';
5103
		}
90910
		}
5104
	
90911
	
5105
		/*
90912
		if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
5106
		 * The HTML structure that we want to generate in this function is:
90913
			tableWidthAttr = styleWidth;
5107
		 *  div - scroller
90914
		}
5108
		 *    div - scroll head
5109
		 *      div - scroll head inner
5110
		 *        table - scroll head table
5111
		 *          thead - thead
5112
		 *    div - scroll body
5113
		 *      table - table (master table)
5114
		 *        thead - thead clone for sizing
5115
		 *        tbody - tbody
5116
		 *    div - scroll foot
5117
		 *      div - scroll foot inner
5118
		 *        table - scroll foot table
5119
		 *          tfoot - tfoot
5120
		 */
5121
		var scroller = $( _div, { 'class': classes.container } )
5122
			.append(
5123
				$(_div, { 'class': classes.header.self } )
5124
					.css( {
5125
						overflow: 'hidden',
5126
						position: 'relative',
5127
						border: 0,
5128
						width: scrollX ? size(scrollX) : '100%'
5129
					} )
5130
					.append(
5131
						$(_div, { 'class': classes.header.inner } )
5132
							.css( {
5133
								'box-sizing': 'content-box',
5134
								width: scroll.sXInner || '100%'
5135
							} )
5136
							.append(
5137
								headerClone
5138
									.removeAttr('id')
5139
									.css( 'margin-left', 0 )
5140
									.append( captionSide === 'top' ? caption : null )
5141
									.append(
5142
										table.children('thead')
5143
									)
5144
							)
5145
					)
5146
			)
5147
			.append(
5148
				$(_div, { 'class': classes.body } )
5149
					.css( {
5150
						position: 'relative',
5151
						overflow: 'auto',
5152
						width: size( scrollX )
5153
					} )
5154
					.append( table )
5155
			);
5156
	
90915
	
5157
		if ( footer ) {
90916
		// Let plug-ins know that we are doing a recalc, in case they have changed any of the
5158
			scroller.append(
90917
		// visible columns their own way (e.g. Responsive uses display:none).
5159
				$(_div, { 'class': classes.footer.self } )
90918
		_fnCallbackFire(
5160
					.css( {
90919
			settings,
5161
						overflow: 'hidden',
90920
			null,
90921
			'column-calc',
90922
			{visible: visibleColumns},
90923
			false
90924
		);
90925
	
90926
		// Construct a worst case table with the widest, assign any user defined
90927
		// widths, then insert it into  the DOM and allow the browser to do all
90928
		// the hard work of calculating table widths
90929
		var tmpTable = $(table.cloneNode())
90930
			.css( 'visibility', 'hidden' )
90931
			.css( 'margin', 0 )
90932
			.removeAttr( 'id' );
90933
	
90934
		// Clean up the table body
90935
		tmpTable.append('<tbody/>')
90936
	
90937
		// Clone the table header and footer - we can't use the header / footer
90938
		// from the cloned table, since if scrolling is active, the table's
90939
		// real header and footer are contained in different table tags
90940
		tmpTable
90941
			.append( $(settings.nTHead).clone() )
90942
			.append( $(settings.nTFoot).clone() );
90943
90944
		// Remove any assigned widths from the footer (from scrolling)
90945
		tmpTable.find('tfoot th, tfoot td').css('width', '');
90946
90947
		// Apply custom sizing to the cloned header
90948
		tmpTable.find('thead th, thead td').each( function () {
90949
			// Get the `width` from the header layout
90950
			var width = _fnColumnsSumWidth( settings, this, true, false );
90951
90952
			if ( width ) {
90953
				this.style.width = width;
90954
90955
				// For scrollX we need to force the column width otherwise the
90956
				// browser will collapse it. If this width is smaller than the
90957
				// width the column requires, then it will have no effect
90958
				if ( scrollX ) {
90959
					this.style.minWidth = width;
90960
90961
					$( this ).append( $('<div/>').css( {
90962
						width: width,
90963
						margin: 0,
90964
						padding: 0,
5162
						border: 0,
90965
						border: 0,
5163
						width: scrollX ? size(scrollX) : '100%'
90966
						height: 1
5164
					} )
90967
					} ) );
5165
					.append(
90968
				}
5166
						$(_div, { 'class': classes.footer.inner } )
90969
			}
5167
							.append(
90970
			else {
5168
								footerClone
90971
				this.style.width = '';
5169
									.removeAttr('id')
90972
			}
5170
									.css( 'margin-left', 0 )
90973
		} );
5171
									.append( captionSide === 'bottom' ? caption : null )
90974
5172
									.append(
90975
		// Get the widest strings for each of the visible columns and add them to
5173
										table.children('tfoot')
90976
		// our table to create a "worst case"
5174
									)
90977
		var longestData = [];
5175
							)
90978
5176
					)
90979
		for ( i=0 ; i<visibleColumns.length ; i++ ) {
5177
			);
90980
			longestData.push(_fnGetWideStrings(settings, visibleColumns[i]));
90981
		}
90982
90983
		if (longestData.length) {
90984
			for ( i=0 ; i<longestData[0].length ; i++ ) {
90985
				var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
90986
90987
				for ( j=0 ; j<visibleColumns.length ; j++ ) {
90988
					columnIdx = visibleColumns[j];
90989
					column = columns[ columnIdx ];
90990
90991
					var longest = longestData[j][i] || '';
90992
					var autoClass = _ext.type.className[column.sType];
90993
					var padding = column.sContentPadding || (scrollX ? '-' : '');
90994
					var text = longest + padding;
90995
					var insert = longest.indexOf('<') === -1 && longest.indexOf('&') === -1
90996
						? document.createTextNode(text)
90997
						: text
90998
90999
					$('<td/>')
91000
						.addClass(autoClass)
91001
						.addClass(column.sClass)
91002
						.append(insert)
91003
						.appendTo(tr);
91004
				}
91005
			}
5178
		}
91006
		}
5179
	
91007
	
5180
		var children = scroller.children();
91008
		// Tidy the temporary table - remove name attributes so there aren't
5181
		var scrollHead = children[0];
91009
		// duplicated in the dom (radio elements for example)
5182
		var scrollBody = children[1];
91010
		$('[name]', tmpTable).removeAttr('name');
5183
		var scrollFoot = footer ? children[2] : null;
91011
	
91012
		// Table has been built, attach to the document so we can work with it.
91013
		// A holding element is used, positioned at the top of the container
91014
		// with minimal height, so it has no effect on if the container scrolls
91015
		// or not. Otherwise it might trigger scrolling when it actually isn't
91016
		// needed
91017
		var holder = $('<div/>').css( scrollX || scrollY ?
91018
				{
91019
					position: 'absolute',
91020
					top: 0,
91021
					left: 0,
91022
					height: 1,
91023
					right: 0,
91024
					overflow: 'hidden'
91025
				} :
91026
				{}
91027
			)
91028
			.append( tmpTable )
91029
			.appendTo( tableContainer );
91030
91031
		// When scrolling (X or Y) we want to set the width of the table as
91032
		// appropriate. However, when not scrolling leave the table width as it
91033
		// is. This results in slightly different, but I think correct behaviour
91034
		if ( scrollX && scrollXInner ) {
91035
			tmpTable.width( scrollXInner );
91036
		}
91037
		else if ( scrollX ) {
91038
			tmpTable.css( 'width', 'auto' );
91039
			tmpTable.removeAttr('width');
91040
	
91041
			// If there is no width attribute or style, then allow the table to
91042
			// collapse
91043
			if ( tmpTable.outerWidth() < tableContainer.clientWidth && tableWidthAttr ) {
91044
				tmpTable.outerWidth( tableContainer.clientWidth );
91045
			}
91046
		}
91047
		else if ( scrollY ) {
91048
			tmpTable.outerWidth( tableContainer.clientWidth );
91049
		}
91050
		else if ( tableWidthAttr ) {
91051
			tmpTable.outerWidth( tableWidthAttr );
91052
		}
5184
	
91053
	
5185
		// When the body is scrolled, then we also want to scroll the headers
91054
		// Get the width of each column in the constructed table
5186
		$(scrollBody).on( 'scroll.DT', function () {
91055
		var total = 0;
5187
			var scrollLeft = this.scrollLeft;
91056
		var bodyCells = tmpTable.find('tbody tr').eq(0).children();
5188
	
91057
	
5189
			scrollHead.scrollLeft = scrollLeft;
91058
		for ( i=0 ; i<visibleColumns.length ; i++ ) {
91059
			// Use getBounding for sub-pixel accuracy, which we then want to round up!
91060
			var bounding = bodyCells[i].getBoundingClientRect().width;
5190
	
91061
	
5191
			if ( footer ) {
91062
			// Total is tracked to remove any sub-pixel errors as the outerWidth
5192
				scrollFoot.scrollLeft = scrollLeft;
91063
			// of the table might not equal the total given here
5193
			}
91064
			total += bounding;
5194
		} );
5195
	
91065
	
5196
		// When focus is put on the header cells, we might need to scroll the body
91066
			// Width for each column to use
5197
		$('th, td', scrollHead).on('focus', function () {
91067
			columns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding );
5198
			var scrollLeft = scrollHead.scrollLeft;
91068
		}
5199
	
91069
	
5200
			scrollBody.scrollLeft = scrollLeft;
91070
		table.style.width = _fnStringToCss( total );
5201
	
91071
	
5202
			if ( footer ) {
91072
		// Finished with the table - ditch it
5203
				scrollBody.scrollLeft = scrollLeft;
91073
		holder.remove();
5204
			}
5205
		});
5206
	
91074
	
5207
		$(scrollBody).css('max-height', scrollY);
91075
		// If there is a width attr, we want to attach an event listener which
5208
		if (! scroll.bCollapse) {
91076
		// allows the table sizing to automatically adjust when the window is
5209
			$(scrollBody).css('height', scrollY);
91077
		// resized. Use the width attr rather than CSS, since we can't know if the
91078
		// CSS is a relative value or absolute - DOM read is always px.
91079
		if ( tableWidthAttr ) {
91080
			table.style.width = _fnStringToCss( tableWidthAttr );
5210
		}
91081
		}
5211
	
91082
	
5212
		settings.nScrollHead = scrollHead;
91083
		if ( (tableWidthAttr || scrollX) && ! settings._reszEvt ) {
5213
		settings.nScrollBody = scrollBody;
91084
			var resize = DataTable.util.throttle( function () {
5214
		settings.nScrollFoot = scrollFoot;
91085
				var newWidth = _fnWrapperWidth(settings);
5215
	
91086
	
5216
		// On redraw - align columns
91087
				// Don't do it if destroying or the container width is 0
5217
		settings.aoDrawCallback.push(_fnScrollDraw);
91088
				if (! settings.bDestroying && newWidth !== 0) {
91089
					_fnAdjustColumnSizing( settings );
91090
				}
91091
			} );
5218
	
91092
	
5219
		return scroller[0];
91093
			// For browsers that support it (~2020 onwards for wide support) we can watch for the
5220
	}
91094
			// container changing width.
91095
			if (window.ResizeObserver) {
91096
				// This is a tricky beast - if the element is visible when `.observe()` is called,
91097
				// then the callback is immediately run. Which we don't want. If the element isn't
91098
				// visible, then it isn't run, but we want it to run when it is then made visible.
91099
				// This flag allows the above to be satisfied.
91100
				var first = $(settings.nTableWrapper).is(':visible');
5221
	
91101
	
91102
				// Use an empty div to attach the observer so it isn't impacted by height changes
91103
				var resizer = $('<div>')
91104
					.css({
91105
						width: '100%',
91106
						height: 0
91107
					})
91108
					.addClass('dt-autosize')
91109
					.appendTo(settings.nTableWrapper);
91110
	
91111
				settings.resizeObserver = new ResizeObserver(function (e) {
91112
					if (first) {
91113
						first = false;
91114
					}
91115
					else {
91116
						resize();
91117
					}
91118
				});
5222
	
91119
	
91120
				settings.resizeObserver.observe(resizer[0]);
91121
			}
91122
			else {
91123
				// For old browsers, the best we can do is listen for a window resize
91124
				$(window).on('resize.DT-'+settings.sInstance, resize);
91125
			}
91126
91127
			settings._reszEvt = true;
91128
		}
91129
	}
5223
	
91130
	
5224
	/**
91131
	/**
5225
	 * Update the header, footer and body tables for resizing - i.e. column
91132
	 * Get the width of the DataTables wrapper element
5226
	 * alignment.
5227
	 *
91133
	 *
5228
	 * Welcome to the most horrible function DataTables. The process that this
91134
	 * @param {*} settings DataTables settings object
5229
	 * function follows is basically:
91135
	 * @returns Width
5230
	 *   1. Re-create the table inside the scrolling div
91136
	 */
5231
	 *   2. Correct colgroup > col values if needed
91137
	function _fnWrapperWidth(settings) {
5232
	 *   3. Copy colgroup > col over to header and footer
91138
		return $(settings.nTableWrapper).is(':visible')
5233
	 *   4. Clean up
91139
			? $(settings.nTableWrapper).width()
91140
			: 0;
91141
	}
91142
	
91143
	/**
91144
	 * Get the widest strings for each column.
91145
	 *
91146
	 * It is very difficult to determine what the widest string actually is due to variable character
91147
	 * width and kerning. Doing an exact calculation with the DOM or even Canvas would kill performance
91148
	 * and this is a critical point, so we use two techniques to determine a collection of the longest
91149
	 * strings from the column, which will likely contain the widest strings:
91150
	 *
91151
	 * 1) Get the top three longest strings from the column
91152
	 * 2) Get the top three widest words (i.e. an unbreakable phrase)
5234
	 *
91153
	 *
5235
	 *  @param {object} settings dataTables settings object
91154
	 *  @param {object} settings dataTables settings object
91155
	 *  @param {int} colIdx column of interest
91156
	 *  @returns {string[]} Array of the longest strings
5236
	 *  @memberof DataTable#oApi
91157
	 *  @memberof DataTable#oApi
5237
	 */
91158
	 */
5238
	function _fnScrollDraw ( settings )
91159
	function _fnGetWideStrings( settings, colIdx )
5239
	{
91160
	{
5240
		// Given that this is such a monster function, a lot of variables are use
91161
		var column = settings.aoColumns[colIdx];
5241
		// to try and keep the minimised size as small as possible
5242
		var
5243
			scroll         = settings.oScroll,
5244
			barWidth       = scroll.iBarWidth,
5245
			divHeader      = $(settings.nScrollHead),
5246
			divHeaderInner = divHeader.children('div'),
5247
			divHeaderTable = divHeaderInner.children('table'),
5248
			divBodyEl      = settings.nScrollBody,
5249
			divBody        = $(divBodyEl),
5250
			divFooter      = $(settings.nScrollFoot),
5251
			divFooterInner = divFooter.children('div'),
5252
			divFooterTable = divFooterInner.children('table'),
5253
			header         = $(settings.nTHead),
5254
			table          = $(settings.nTable),
5255
			footer         = settings.nTFoot && $('th, td', settings.nTFoot).length ? $(settings.nTFoot) : null,
5256
			browser        = settings.oBrowser,
5257
			headerCopy, footerCopy;
5258
	
91162
	
5259
		// If the scrollbar visibility has changed from the last draw, we need to
91163
		// Do we need to recalculate (i.e. was invalidated), or just use the cached data?
5260
		// adjust the column sizes as the table width will have changed to account
91164
		if (! column.wideStrings) {
5261
		// for the scrollbar
91165
			var allStrings = [];
5262
		var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;
91166
			var collection = [];
5263
		
91167
	
5264
		if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {
91168
			// Create an array with the string information for the column
5265
			settings.scrollBarVis = scrollBarVis;
91169
			for ( var i=0, iLen=settings.aiDisplayMaster.length ; i<iLen ; i++ ) {
5266
			_fnAdjustColumnSizing( settings );
91170
				var rowIdx = settings.aiDisplayMaster[i];
5267
			return; // adjust column sizing will call this function again
91171
				var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
91172
	
91173
				var cellString = data && typeof data === 'object' && data.nodeType
91174
					? data.innerHTML
91175
					: data+'';
91176
	
91177
				// Remove id / name attributes from elements so they
91178
				// don't interfere with existing elements
91179
				cellString = cellString
91180
					.replace(/id=".*?"/g, '')
91181
					.replace(/name=".*?"/g, '');
91182
	
91183
				// Don't want Javascript at all in these calculation cells.
91184
				cellString = cellString.replace(/<script.*?<\/script>/gi, ' ');
91185
	
91186
				var noHtml = _stripHtml(cellString, ' ')
91187
					.replace( /&nbsp;/g, ' ' );
91188
91189
				// The length is calculated on the text only, but we keep the HTML
91190
				// in the string so it can be used in the calculation table
91191
				collection.push({
91192
					str: cellString,
91193
					len: noHtml.length
91194
				});
91195
	
91196
				allStrings.push(noHtml);
91197
			}
91198
	
91199
			// Order and then cut down to the size we need
91200
			collection
91201
				.sort(function (a, b) {
91202
					return b.len - a.len;
91203
				})
91204
				.splice(3);
91205
	
91206
			column.wideStrings = collection.map(function (item) {
91207
				return item.str;
91208
			});
91209
	
91210
			// Longest unbroken string
91211
			let parts = allStrings.join(' ').split(' ');
91212
	
91213
			parts.sort(function (a, b) {
91214
				return b.length - a.length;
91215
			});
91216
91217
			if (parts.length) {
91218
				column.wideStrings.push(parts[0]);
91219
			}
91220
91221
			if (parts.length > 1) {
91222
				column.wideStrings.push(parts[1]);
91223
			}
91224
91225
			if (parts.length > 2) {
91226
				column.wideStrings.push(parts[3]);
91227
			}
5268
		}
91228
		}
5269
		else {
91229
	
5270
			settings.scrollBarVis = scrollBarVis;
91230
		return column.wideStrings;
91231
	}
91232
	
91233
	
91234
	/**
91235
	 * Append a CSS unit (only if required) to a string
91236
	 *  @param {string} value to css-ify
91237
	 *  @returns {string} value with css unit
91238
	 *  @memberof DataTable#oApi
91239
	 */
91240
	function _fnStringToCss( s )
91241
	{
91242
		if ( s === null ) {
91243
			return '0px';
5271
		}
91244
		}
5272
	
91245
	
5273
		// 1. Re-create the table inside the scrolling div
91246
		if ( typeof s == 'number' ) {
5274
		// Remove the old minimised thead and tfoot elements in the inner table
91247
			return s < 0 ?
5275
		table.children('thead, tfoot').remove();
91248
				'0px' :
91249
				s+'px';
91250
		}
5276
	
91251
	
5277
		// Clone the current header and footer elements and then place it into the inner table
91252
		// Check it has a unit character already
5278
		headerCopy = header.clone().prependTo( table );
91253
		return s.match(/\d$/) ?
5279
		headerCopy.find('th, td').removeAttr('tabindex');
91254
			s+'px' :
5280
		headerCopy.find('[id]').removeAttr('id');
91255
			s;
91256
	}
5281
	
91257
	
5282
		if ( footer ) {
91258
	/**
5283
			footerCopy = footer.clone().prependTo( table );
91259
	 * Re-insert the `col` elements for current visibility
5284
			footerCopy.find('[id]').removeAttr('id');
91260
	 *
91261
	 * @param {*} settings DT settings
91262
	 */
91263
	function _colGroup( settings ) {
91264
		var cols = settings.aoColumns;
91265
	
91266
		settings.colgroup.empty();
91267
	
91268
		for (i=0 ; i<cols.length ; i++) {
91269
			if (cols[i].bVisible) {
91270
				settings.colgroup.append(cols[i].colEl);
91271
			}
91272
		}
91273
	}
91274
	
91275
	
91276
	function _fnSortInit( settings ) {
91277
		var target = settings.nTHead;
91278
		var headerRows = target.querySelectorAll('tr');
91279
		var titleRow = settings.titleRow;
91280
		var notSelector = ':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';
91281
91282
		// Legacy support for `orderCellsTop`
91283
		if (titleRow === true) {
91284
			target = headerRows[0];
91285
		}
91286
		else if (titleRow === false) {
91287
			target = headerRows[ headerRows.length - 1 ];
91288
		}
91289
		else if (titleRow !== null) {
91290
			target = headerRows[titleRow];
91291
		}
91292
		// else - all rows
91293
	
91294
		if (settings.orderHandler) {
91295
			_fnSortAttachListener(
91296
				settings,
91297
				target,
91298
				target === settings.nTHead
91299
					? 'tr'+notSelector+' th'+notSelector+', tr'+notSelector+' td'+notSelector
91300
					: 'th'+notSelector+', td'+notSelector
91301
			);
5285
		}
91302
		}
5286
	
91303
	
5287
		// 2. Correct colgroup > col values if needed
91304
		// Need to resolve the user input array into our internal structure
5288
		// It is possible that the cell sizes are smaller than the content, so we need to
91305
		var order = [];
5289
		// correct colgroup>col for such cases. This can happen if the auto width detection
91306
		_fnSortResolve( settings, order, settings.aaSorting );
5290
		// uses a cell which has a longer string, but isn't the widest! For example 
5291
		// "Chief Executive Officer (CEO)" is the longest string in the demo, but
5292
		// "Systems Administrator" is actually the widest string since it doesn't collapse.
5293
		// Note the use of translating into a column index to get the `col` element. This
5294
		// is because of Responsive which might remove `col` elements, knocking the alignment
5295
		// of the indexes out.
5296
		if (settings.aiDisplay.length) {
5297
			// Get the column sizes from the first row in the table. This should really be a
5298
			// [].find, but it wasn't supported in Chrome until Sept 2015, and DT has 10 year
5299
			// browser support
5300
			var firstTr = null;
5301
			var start = _fnDataSource( settings ) !== 'ssp'
5302
				? settings._iDisplayStart
5303
				: 0;
5304
	
91307
	
5305
			for (i=start ; i<start + settings.aiDisplay.length ; i++) {
91308
		settings.aaSorting = order;
5306
				var idx = settings.aiDisplay[i];
91309
	}
5307
				var tr = settings.aoData[idx].nTr;
5308
	
91310
	
5309
				if (tr) {
91311
	
5310
					firstTr = tr;
91312
	function _fnSortAttachListener(settings, node, selector, column, callback) {
5311
					break;
91313
		_fnBindAction( node, selector, function (e) {
91314
			var run = false;
91315
			var columns = column === undefined
91316
				? _fnColumnsFromHeader( e.target )
91317
				: typeof column === 'function'
91318
					? column()
91319
					: Array.isArray(column)
91320
						? column
91321
						: [column];
91322
	
91323
			if ( columns.length ) {
91324
				for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) {
91325
					var ret = _fnSortAdd( settings, columns[i], i, e.shiftKey );
91326
91327
					if (ret !== false) {
91328
						run = true;
91329
					}
91330
91331
					// If the first entry is no sort, then subsequent
91332
					// sort columns are ignored
91333
					if (settings.aaSorting.length === 1 && settings.aaSorting[0][1] === '') {
91334
						break;
91335
					}
91336
				}
91337
91338
				if (run) {
91339
					_fnProcessingRun(settings, true, function () {
91340
						_fnSort( settings );
91341
						_fnSortDisplay( settings, settings.aiDisplay );
91342
91343
						_fnReDraw( settings, false, false );
91344
91345
						if (callback) {
91346
							callback();
91347
						}
91348
					});
5312
				}
91349
				}
5313
			}
91350
			}
91351
		} );
91352
	}
5314
	
91353
	
5315
			if (firstTr) {
91354
	/**
5316
				var colSizes = $(firstTr).children('th, td').map(function (vis) {
91355
	 * Sort the display array to match the master's order
5317
					return {
91356
	 * @param {*} settings
5318
						idx: _fnVisibleToColumnIndex(settings, vis),
91357
	 */
5319
						width: $(this).outerWidth()
91358
	function _fnSortDisplay(settings, display) {
5320
					};
91359
		if (display.length < 2) {
5321
				});
91360
			return;
5322
	
91361
		}
5323
				// Check against what the colgroup > col is set to and correct if needed
5324
				for (var i=0 ; i<colSizes.length ; i++) {
5325
					var colEl = settings.aoColumns[ colSizes[i].idx ].colEl[0];
5326
					var colWidth = colEl.style.width.replace('px', '');
5327
	
91362
	
5328
					if (colWidth !== colSizes[i].width) {
91363
		var master = settings.aiDisplayMaster;
5329
						colEl.style.width = colSizes[i].width + 'px';
91364
		var masterMap = {};
91365
		var map = {};
91366
		var i;
5330
91367
5331
						if (scroll.sX) {
91368
		// Rather than needing an `indexOf` on master array, we can create a map
5332
							colEl.style.minWidth = colSizes[i].width + 'px';
91369
		for (i=0 ; i<master.length ; i++) {
5333
						}
91370
			masterMap[master[i]] = i;
91371
		}
91372
91373
		// And then cache what would be the indexOf from the display
91374
		for (i=0 ; i<display.length ; i++) {
91375
			map[display[i]] = masterMap[display[i]];
91376
		}
91377
91378
		display.sort(function(a, b){
91379
			// Short version of this function is simply `master.indexOf(a) - master.indexOf(b);`
91380
			return map[a] - map[b];
91381
		});
91382
	}
91383
91384
91385
	function _fnSortResolve (settings, nestedSort, sort) {
91386
		var push = function ( a ) {
91387
			if ($.isPlainObject(a)) {
91388
				if (a.idx !== undefined) {
91389
					// Index based ordering
91390
					nestedSort.push([a.idx, a.dir]);
91391
				}
91392
				else if (a.name) {
91393
					// Name based ordering
91394
					var cols = _pluck( settings.aoColumns, 'sName');
91395
					var idx = cols.indexOf(a.name);
91396
91397
					if (idx !== -1) {
91398
						nestedSort.push([idx, a.dir]);
5334
					}
91399
					}
5335
				}
91400
				}
5336
			}
91401
			}
91402
			else {
91403
				// Plain column index and direction pair
91404
				nestedSort.push(a);
91405
			}
91406
		};
91407
91408
		if ( $.isPlainObject(sort) ) {
91409
			// Object
91410
			push(sort);
5337
		}
91411
		}
5338
	
91412
		else if ( sort.length && typeof sort[0] === 'number' ) {
5339
		// 3. Copy the colgroup over to the header and footer
91413
			// 1D array
5340
		divHeaderTable
91414
			push(sort);
5341
			.find('colgroup')
91415
		}
5342
			.remove();
91416
		else if ( sort.length ) {
5343
	
91417
			// 2D array
5344
		divHeaderTable.append(settings.colgroup.clone());
91418
			for (var z=0; z<sort.length; z++) {
5345
	
91419
				push(sort[z]); // Object or array
5346
		if ( footer ) {
91420
			}
5347
			divFooterTable
5348
				.find('colgroup')
5349
				.remove();
5350
	
5351
			divFooterTable.append(settings.colgroup.clone());
5352
		}
91421
		}
91422
	}
5353
	
91423
	
5354
		// "Hide" the header and footer that we used for the sizing. We need to keep
5355
		// the content of the cell so that the width applied to the header and body
5356
		// both match, but we want to hide it completely.
5357
		$('th, td', headerCopy).each(function () {
5358
			$(this.childNodes).wrapAll('<div class="dt-scroll-sizing">');
5359
		});
5360
	
91424
	
5361
		if ( footer ) {
91425
	function _fnSortFlatten ( settings )
5362
			$('th, td', footerCopy).each(function () {
91426
	{
5363
				$(this.childNodes).wrapAll('<div class="dt-scroll-sizing">');
91427
		var
5364
			});
91428
			i, k, kLen,
91429
			aSort = [],
91430
			extSort = DataTable.ext.type.order,
91431
			aoColumns = settings.aoColumns,
91432
			aDataSort, iCol, sType, srcCol,
91433
			fixed = settings.aaSortingFixed,
91434
			fixedObj = $.isPlainObject( fixed ),
91435
			nestedSort = [];
91436
91437
		if ( ! settings.oFeatures.bSort ) {
91438
			return aSort;
5365
		}
91439
		}
5366
	
91440
	
5367
		// 4. Clean up
91441
		// Build the sort array, with pre-fix and post-fix options if they have been
5368
		// Figure out if there are scrollbar present - if so then we need the header and footer to
91442
		// specified
5369
		// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
91443
		if ( Array.isArray( fixed ) ) {
5370
		var isScrolling = Math.floor(table.height()) > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
91444
			_fnSortResolve( settings, nestedSort, fixed );
5371
		var paddingSide = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
91445
		}
5372
	
91446
	
5373
		// Set the width's of the header and footer tables
91447
		if ( fixedObj && fixed.pre ) {
5374
		var outerWidth = table.outerWidth();
91448
			_fnSortResolve( settings, nestedSort, fixed.pre );
91449
		}
5375
	
91450
	
5376
		divHeaderTable.css('width', _fnStringToCss( outerWidth ));
91451
		_fnSortResolve( settings, nestedSort, settings.aaSorting );
5377
		divHeaderInner
5378
			.css('width', _fnStringToCss( outerWidth ))
5379
			.css(paddingSide, isScrolling ? barWidth+"px" : "0px");
5380
	
91452
	
5381
		if ( footer ) {
91453
		if (fixedObj && fixed.post ) {
5382
			divFooterTable.css('width', _fnStringToCss( outerWidth ));
91454
			_fnSortResolve( settings, nestedSort, fixed.post );
5383
			divFooterInner
5384
				.css('width', _fnStringToCss( outerWidth ))
5385
				.css(paddingSide, isScrolling ? barWidth+"px" : "0px");
5386
		}
91455
		}
5387
	
91456
	
5388
		// Correct DOM ordering for colgroup - comes before the thead
91457
		for ( i=0 ; i<nestedSort.length ; i++ )
5389
		table.children('colgroup').prependTo(table);
91458
		{
91459
			srcCol = nestedSort[i][0];
5390
	
91460
	
5391
		// Adjust the position of the header in case we loose the y-scrollbar
91461
			if ( aoColumns[ srcCol ] ) {
5392
		divBody.trigger('scroll');
91462
				aDataSort = aoColumns[ srcCol ].aDataSort;
5393
	
91463
	
5394
		// If sorting or filtering has occurred, jump the scrolling back to the top
91464
				for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
5395
		// only if we aren't holding the position
91465
				{
5396
		if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
91466
					iCol = aDataSort[k];
5397
			divBodyEl.scrollTop = 0;
91467
					sType = aoColumns[ iCol ].sType || 'string';
91468
91469
					if ( nestedSort[i]._idx === undefined ) {
91470
						nestedSort[i]._idx = aoColumns[iCol].asSorting.indexOf(nestedSort[i][1]);
91471
					}
91472
91473
					if ( nestedSort[i][1] ) {
91474
						aSort.push( {
91475
							src:       srcCol,
91476
							col:       iCol,
91477
							dir:       nestedSort[i][1],
91478
							index:     nestedSort[i]._idx,
91479
							type:      sType,
91480
							formatter: extSort[ sType+"-pre" ],
91481
							sorter:    extSort[ sType+"-"+nestedSort[i][1] ]
91482
						} );
91483
					}
91484
				}
91485
			}
5398
		}
91486
		}
91487
91488
		return aSort;
5399
	}
91489
	}
5400
	
91490
	
5401
	/**
91491
	/**
5402
	 * Calculate the width of columns for the table
91492
	 * Change the order of the table
5403
	 *  @param {object} settings dataTables settings object
91493
	 *  @param {object} oSettings dataTables settings object
5404
	 *  @memberof DataTable#oApi
91494
	 *  @memberof DataTable#oApi
5405
	 */
91495
	 */
5406
	function _fnCalculateColumnWidths ( settings )
91496
	function _fnSort ( oSettings, col, dir )
5407
	{
91497
	{
5408
		// Not interested in doing column width calculation if auto-width is disabled
5409
		if (! settings.oFeatures.bAutoWidth) {
5410
			return;
5411
		}
5412
	
5413
		var
91498
		var
5414
			table = settings.nTable,
91499
			i, iLen,
5415
			columns = settings.aoColumns,
91500
			aiOrig = [],
5416
			scroll = settings.oScroll,
91501
			extSort = DataTable.ext.type.order,
5417
			scrollY = scroll.sY,
91502
			aoData = oSettings.aoData,
5418
			scrollX = scroll.sX,
91503
			sortCol,
5419
			scrollXInner = scroll.sXInner,
91504
			displayMaster = oSettings.aiDisplayMaster,
5420
			visibleColumns = _fnGetColumns( settings, 'bVisible' ),
91505
			aSort;
5421
			tableWidthAttr = table.getAttribute('width'), // from DOM element
91506
	
5422
			tableContainer = table.parentNode,
91507
		// Make sure the columns all have types defined
5423
			i, column, columnIdx;
91508
		_fnColumnTypes(oSettings);
5424
			
91509
	
5425
		var styleWidth = table.style.width;
91510
		// Allow a specific column to be sorted, which will _not_ alter the display
5426
		var containerWidth = _fnWrapperWidth(settings);
91511
		// master
91512
		if (col !== undefined) {
91513
			var srcCol = oSettings.aoColumns[col];
5427
91514
5428
		// Don't re-run for the same width as the last time
91515
			aSort = [{
5429
		if (containerWidth === settings.containerWidth) {
91516
				src:       col,
5430
			return false;
91517
				col:       col,
91518
				dir:       dir,
91519
				index:     0,
91520
				type:      srcCol.sType,
91521
				formatter: extSort[ srcCol.sType+"-pre" ],
91522
				sorter:    extSort[ srcCol.sType+"-"+dir ]
91523
			}];
91524
			displayMaster = displayMaster.slice();
5431
		}
91525
		}
5432
91526
		else {
5433
		settings.containerWidth = containerWidth;
91527
			aSort = _fnSortFlatten( oSettings );
5434
	
5435
		// If there is no width applied as a CSS style or as an attribute, we assume that
5436
		// the width is intended to be 100%, which is usually is in CSS, but it is very
5437
		// difficult to correctly parse the rules to get the final result.
5438
		if ( ! styleWidth && ! tableWidthAttr) {
5439
			table.style.width = '100%';
5440
			styleWidth = '100%';
5441
		}
91528
		}
5442
	
91529
	
5443
		if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
91530
		for ( i=0, iLen=aSort.length ; i<iLen ; i++ ) {
5444
			tableWidthAttr = styleWidth;
91531
			sortCol = aSort[i];
91532
91533
			// Load the data needed for the sort, for each cell
91534
			_fnSortData( oSettings, sortCol.col );
5445
		}
91535
		}
91536
91537
		/* No sorting required if server-side or no sorting array */
91538
		if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )
91539
		{
91540
			// Reset the initial positions on each pass so we get a stable sort
91541
			for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {
91542
				aiOrig[ i ] = i;
91543
			}
5446
	
91544
	
5447
		// Let plug-ins know that we are doing a recalc, in case they have changed any of the
91545
			// If the first sort is desc, then reverse the array to preserve original
5448
		// visible columns their own way (e.g. Responsive uses display:none).
91546
			// order, just in reverse
5449
		_fnCallbackFire(
91547
			if (aSort.length && aSort[0].dir === 'desc' && oSettings.orderDescReverse) {
5450
			settings,
91548
				aiOrig.reverse();
5451
			null,
91549
			}
5452
			'column-calc',
5453
			{visible: visibleColumns},
5454
			false
5455
		);
5456
	
5457
		// Construct a single row, worst case, table with the widest
5458
		// node in the data, assign any user defined widths, then insert it into
5459
		// the DOM and allow the browser to do all the hard work of calculating
5460
		// table widths
5461
		var tmpTable = $(table.cloneNode())
5462
			.css( 'visibility', 'hidden' )
5463
			.removeAttr( 'id' );
5464
	
91550
	
5465
		// Clean up the table body
91551
			/* Do the sort - here we want multi-column sorting based on a given data source (column)
5466
		tmpTable.append('<tbody/>')
91552
			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
5467
		var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
91553
			 * follow on its own, but this is what we want (example two column sorting):
91554
			 *  fnLocalSorting = function(a,b){
91555
			 *    var test;
91556
			 *    test = oSort['string-asc']('data11', 'data12');
91557
			 *      if (test !== 0)
91558
			 *        return test;
91559
			 *    test = oSort['numeric-desc']('data21', 'data22');
91560
			 *    if (test !== 0)
91561
			 *      return test;
91562
			 *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
91563
			 *  }
91564
			 * Basically we have a test for each sorting column, if the data in that column is equal,
91565
			 * test the next column. If all columns match, then we use a numeric sort on the row
91566
			 * positions in the original data array to provide a stable sort.
91567
			 */
91568
			displayMaster.sort( function ( a, b ) {
91569
				var
91570
					x, y, k, test, sort,
91571
					len=aSort.length,
91572
					dataA = aoData[a]._aSortData,
91573
					dataB = aoData[b]._aSortData;
5468
	
91574
	
5469
		// Clone the table header and footer - we can't use the header / footer
91575
				for ( k=0 ; k<len ; k++ ) {
5470
		// from the cloned table, since if scrolling is active, the table's
91576
					sort = aSort[k];
5471
		// real header and footer are contained in different table tags
5472
		tmpTable
5473
			.append( $(settings.nTHead).clone() )
5474
			.append( $(settings.nTFoot).clone() );
5475
	
91577
	
5476
		// Remove any assigned widths from the footer (from scrolling)
91578
					// Data, which may have already been through a `-pre` function
5477
		tmpTable.find('tfoot th, tfoot td').css('width', '');
91579
					x = dataA[ sort.col ];
91580
					y = dataB[ sort.col ];
5478
	
91581
	
5479
		// Apply custom sizing to the cloned header
91582
					if (sort.sorter) {
5480
		tmpTable.find('thead th, thead td').each( function () {
91583
						// If there is a custom sorter (`-asc` or `-desc`) for this
5481
			// Get the `width` from the header layout
91584
						// data type, use it
5482
			var width = _fnColumnsSumWidth( settings, this, true, false );
91585
						test = sort.sorter(x, y);
5483
	
91586
	
5484
			if ( width ) {
91587
						if ( test !== 0 ) {
5485
				this.style.width = width;
91588
							return test;
91589
						}
91590
					}
91591
					else {
91592
						// Otherwise, use generic sorting
91593
						test = x<y ? -1 : x>y ? 1 : 0;
5486
	
91594
	
5487
				// For scrollX we need to force the column width otherwise the
91595
						if ( test !== 0 ) {
5488
				// browser will collapse it. If this width is smaller than the
91596
							return sort.dir === 'asc' ? test : -test;
5489
				// width the column requires, then it will have no effect
91597
						}
5490
				if ( scrollX ) {
91598
					}
5491
					this.style.minWidth = width;
5492
5493
					$( this ).append( $('<div/>').css( {
5494
						width: width,
5495
						margin: 0,
5496
						padding: 0,
5497
						border: 0,
5498
						height: 1
5499
					} ) );
5500
				}
91599
				}
5501
			}
5502
			else {
5503
				this.style.width = '';
5504
			}
5505
		} );
5506
	
5507
		// Find the widest piece of data for each column and put it into the table
5508
		for ( i=0 ; i<visibleColumns.length ; i++ ) {
5509
			columnIdx = visibleColumns[i];
5510
			column = columns[ columnIdx ];
5511
	
5512
			var longest = _fnGetMaxLenString(settings, columnIdx);
5513
			var autoClass = _ext.type.className[column.sType];
5514
			var text = longest + column.sContentPadding;
5515
			var insert = longest.indexOf('<') === -1
5516
				? document.createTextNode(text)
5517
				: text
5518
			
5519
			$('<td/>')
5520
				.addClass(autoClass)
5521
				.addClass(column.sClass)
5522
				.append(insert)
5523
				.appendTo(tr);
5524
		}
5525
	
5526
		// Tidy the temporary table - remove name attributes so there aren't
5527
		// duplicated in the dom (radio elements for example)
5528
		$('[name]', tmpTable).removeAttr('name');
5529
	
5530
		// Table has been built, attach to the document so we can work with it.
5531
		// A holding element is used, positioned at the top of the container
5532
		// with minimal height, so it has no effect on if the container scrolls
5533
		// or not. Otherwise it might trigger scrolling when it actually isn't
5534
		// needed
5535
		var holder = $('<div/>').css( scrollX || scrollY ?
5536
				{
5537
					position: 'absolute',
5538
					top: 0,
5539
					left: 0,
5540
					height: 1,
5541
					right: 0,
5542
					overflow: 'hidden'
5543
				} :
5544
				{}
5545
			)
5546
			.append( tmpTable )
5547
			.appendTo( tableContainer );
5548
	
91600
	
5549
		// When scrolling (X or Y) we want to set the width of the table as 
91601
				x = aiOrig[a];
5550
		// appropriate. However, when not scrolling leave the table width as it
91602
				y = aiOrig[b];
5551
		// is. This results in slightly different, but I think correct behaviour
5552
		if ( scrollX && scrollXInner ) {
5553
			tmpTable.width( scrollXInner );
5554
		}
5555
		else if ( scrollX ) {
5556
			tmpTable.css( 'width', 'auto' );
5557
			tmpTable.removeAttr('width');
5558
	
91603
	
5559
			// If there is no width attribute or style, then allow the table to
91604
				return x<y ? -1 : x>y ? 1 : 0;
5560
			// collapse
91605
			} );
5561
			if ( tmpTable.outerWidth() < tableContainer.clientWidth && tableWidthAttr ) {
5562
				tmpTable.outerWidth( tableContainer.clientWidth );
5563
			}
5564
		}
91606
		}
5565
		else if ( scrollY ) {
91607
		else if ( aSort.length === 0 ) {
5566
			tmpTable.outerWidth( tableContainer.clientWidth );
91608
			// Apply index order
91609
			displayMaster.sort(function (x, y) {
91610
				return x<y ? -1 : x>y ? 1 : 0;
91611
			});
5567
		}
91612
		}
5568
		else if ( tableWidthAttr ) {
91613
	
5569
			tmpTable.outerWidth( tableWidthAttr );
91614
		if (col === undefined) {
91615
			// Tell the draw function that we have sorted the data
91616
			oSettings.bSorted = true;
91617
			oSettings.sortDetails = aSort;
91618
	
91619
			_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort] );
5570
		}
91620
		}
5571
	
91621
	
5572
		// Get the width of each column in the constructed table
91622
		return displayMaster;
5573
		var total = 0;
91623
	}
5574
		var bodyCells = tmpTable.find('tbody tr').eq(0).children();
5575
	
91624
	
5576
		for ( i=0 ; i<visibleColumns.length ; i++ ) {
5577
			// Use getBounding for sub-pixel accuracy, which we then want to round up!
5578
			var bounding = bodyCells[i].getBoundingClientRect().width;
5579
	
91625
	
5580
			// Total is tracked to remove any sub-pixel errors as the outerWidth
91626
	/**
5581
			// of the table might not equal the total given here
91627
	 * Function to run on user sort request
5582
			total += bounding;
91628
	 *  @param {object} settings dataTables settings object
91629
	 *  @param {node} attachTo node to attach the handler to
91630
	 *  @param {int} colIdx column sorting index
91631
	 *  @param {int} addIndex Counter
91632
	 *  @param {boolean} [shift=false] Shift click add
91633
	 *  @param {function} [callback] callback function
91634
	 *  @memberof DataTable#oApi
91635
	 */
91636
	function _fnSortAdd ( settings, colIdx, addIndex, shift )
91637
	{
91638
		var col = settings.aoColumns[ colIdx ];
91639
		var sorting = settings.aaSorting;
91640
		var asSorting = col.asSorting;
91641
		var nextSortIdx;
91642
		var next = function ( a, overflow ) {
91643
			var idx = a._idx;
91644
			if ( idx === undefined ) {
91645
				idx = asSorting.indexOf(a[1]);
91646
			}
5583
	
91647
	
5584
			// Width for each column to use
91648
			return idx+1 < asSorting.length ?
5585
			columns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding );
91649
				idx+1 :
91650
				overflow ?
91651
					null :
91652
					0;
91653
		};
91654
	
91655
		if ( ! col.bSortable ) {
91656
			return false;
5586
		}
91657
		}
5587
	
91658
	
5588
		table.style.width = _fnStringToCss( total );
91659
		// Convert to 2D array if needed
91660
		if ( typeof sorting[0] === 'number' ) {
91661
			sorting = settings.aaSorting = [ sorting ];
91662
		}
5589
	
91663
	
5590
		// Finished with the table - ditch it
91664
		// If appending the sort then we are multi-column sorting
5591
		holder.remove();
91665
		if ( (shift || addIndex) && settings.oFeatures.bSortMulti ) {
91666
			// Are we already doing some kind of sort on this column?
91667
			var sortIdx = _pluck(sorting, '0').indexOf(colIdx);
5592
	
91668
	
5593
		// If there is a width attr, we want to attach an event listener which
91669
			if ( sortIdx !== -1 ) {
5594
		// allows the table sizing to automatically adjust when the window is
91670
				// Yes, modify the sort
5595
		// resized. Use the width attr rather than CSS, since we can't know if the
91671
				nextSortIdx = next( sorting[sortIdx], true );
5596
		// CSS is a relative value or absolute - DOM read is always px.
5597
		if ( tableWidthAttr ) {
5598
			table.style.width = _fnStringToCss( tableWidthAttr );
5599
		}
5600
	
91672
	
5601
		if ( (tableWidthAttr || scrollX) && ! settings._reszEvt ) {
91673
				if ( nextSortIdx === null && sorting.length === 1 ) {
5602
			var resize = DataTable.util.throttle( function () {
91674
					nextSortIdx = 0; // can't remove sorting completely
5603
				var newWidth = _fnWrapperWidth(settings);
5604
5605
				// Don't do it if destroying or the container width is 0
5606
				if (! settings.bDestroying && newWidth !== 0) {
5607
					_fnAdjustColumnSizing( settings );
5608
				}
91675
				}
5609
			} );
5610
5611
			// For browsers that support it (~2020 onwards for wide support) we can watch for the
5612
			// container changing width.
5613
			if (window.ResizeObserver) {
5614
				// This is a tricky beast - if the element is visible when `.observe()` is called,
5615
				// then the callback is immediately run. Which we don't want. If the element isn't
5616
				// visible, then it isn't run, but we want it to run when it is then made visible.
5617
				// This flag allows the above to be satisfied.
5618
				var first = $(settings.nTableWrapper).is(':visible');
5619
5620
				// Use an empty div to attach the observer so it isn't impacted by height changes
5621
				var resizer = $('<div>')
5622
					.css({
5623
						width: '100%',
5624
						height: 0
5625
					})
5626
					.addClass('dt-autosize')
5627
					.appendTo(settings.nTableWrapper);
5628
5629
				settings.resizeObserver = new ResizeObserver(function (e) {
5630
					if (first) {
5631
						first = false;
5632
					}
5633
					else {
5634
						resize();
5635
					}
5636
				});
5637
	
91676
	
5638
				settings.resizeObserver.observe(resizer[0]);
91677
				if ( nextSortIdx === null || asSorting[ nextSortIdx ] === '' ) {
91678
					sorting.splice( sortIdx, 1 );
91679
				}
91680
				else {
91681
					sorting[sortIdx][1] = asSorting[ nextSortIdx ];
91682
					sorting[sortIdx]._idx = nextSortIdx;
91683
				}
91684
			}
91685
			else if (shift) {
91686
				// No sort on this column yet, being added by shift click
91687
				// add it as itself
91688
				sorting.push( [ colIdx, asSorting[0], 0 ] );
91689
				sorting[sorting.length-1]._idx = 0;
5639
			}
91690
			}
5640
			else {
91691
			else {
5641
				// For old browsers, the best we can do is listen for a window resize
91692
				// No sort on this column yet, being added from a colspan
5642
				$(window).on('resize.DT-'+settings.sInstance, resize);
91693
				// so add with same direction as first column
91694
				sorting.push( [ colIdx, sorting[0][1], 0 ] );
91695
				sorting[sorting.length-1]._idx = 0;
5643
			}
91696
			}
91697
		}
91698
		else if ( sorting.length && sorting[0][0] == colIdx ) {
91699
			// Single column - already sorting on this column, modify the sort
91700
			nextSortIdx = next( sorting[0] );
5644
	
91701
	
5645
			settings._reszEvt = true;
91702
			sorting.length = 1;
91703
			sorting[0][1] = asSorting[ nextSortIdx ];
91704
			sorting[0]._idx = nextSortIdx;
91705
		}
91706
		else {
91707
			// Single column - sort only on this column
91708
			sorting.length = 0;
91709
			sorting.push( [ colIdx, asSorting[0] ] );
91710
			sorting[0]._idx = 0;
5646
		}
91711
		}
5647
	}
91712
	}
5648
	
91713
	
5649
	/**
5650
	 * Get the width of the DataTables wrapper element
5651
	 *
5652
	 * @param {*} settings DataTables settings object
5653
	 * @returns Width
5654
	 */
5655
	function _fnWrapperWidth(settings) {
5656
		return $(settings.nTableWrapper).is(':visible')
5657
			? $(settings.nTableWrapper).width()
5658
			: 0;
5659
	}
5660
	
91714
	
5661
	/**
91715
	/**
5662
	 * Get the maximum strlen for each data column
91716
	 * Set the sorting classes on table's body, Note: it is safe to call this function
5663
	 *  @param {object} settings dataTables settings object
91717
	 * when bSort and bSortClasses are false
5664
	 *  @param {int} colIdx column of interest
91718
	 *  @param {object} oSettings dataTables settings object
5665
	 *  @returns {string} string of the max length
5666
	 *  @memberof DataTable#oApi
91719
	 *  @memberof DataTable#oApi
5667
	 */
91720
	 */
5668
	function _fnGetMaxLenString( settings, colIdx )
91721
	function _fnSortingClasses( settings )
5669
	{
91722
	{
5670
		var column = settings.aoColumns[colIdx];
91723
		var oldSort = settings.aLastSort;
5671
	
91724
		var sortClass = settings.oClasses.order.position;
5672
		if (! column.maxLenString) {
91725
		var sort = _fnSortFlatten( settings );
5673
			var s, max='', maxLen = -1;
91726
		var features = settings.oFeatures;
5674
		
91727
		var i, iLen, colIdx;
5675
			for ( var i=0, iLen=settings.aiDisplayMaster.length ; i<iLen ; i++ ) {
5676
				var rowIdx = settings.aiDisplayMaster[i];
5677
				var data = _fnGetRowDisplay(settings, rowIdx)[colIdx];
5678
	
91728
	
5679
				var cellString = data && typeof data === 'object' && data.nodeType
91729
		if ( features.bSort && features.bSortClasses ) {
5680
					? data.innerHTML
91730
			// Remove old sorting classes
5681
					: data+'';
91731
			for ( i=0, iLen=oldSort.length ; i<iLen ; i++ ) {
91732
				colIdx = oldSort[i].src;
91733
91734
				// Remove column sorting
91735
				$( _pluck( settings.aoData, 'anCells', colIdx ) )
91736
					.removeClass( sortClass + (i<2 ? i+1 : 3) );
91737
			}
5682
	
91738
	
5683
				// Remove id / name attributes from elements so they
91739
			// Add new column sorting
5684
				// don't interfere with existing elements
91740
			for ( i=0, iLen=sort.length ; i<iLen ; i++ ) {
5685
				cellString = cellString
91741
				colIdx = sort[i].src;
5686
					.replace(/id=".*?"/g, '')
5687
					.replace(/name=".*?"/g, '');
5688
	
91742
	
5689
				s = _stripHtml(cellString)
91743
				$( _pluck( settings.aoData, 'anCells', colIdx ) )
5690
					.replace( /&nbsp;/g, ' ' );
91744
					.addClass( sortClass + (i<2 ? i+1 : 3) );
5691
		
5692
				if ( s.length > maxLen ) {
5693
					// We want the HTML in the string, but the length that
5694
					// is important is the stripped string
5695
					max = cellString;
5696
					maxLen = s.length;
5697
				}
5698
			}
91745
			}
91746
		}
91747
	
91748
		settings.aLastSort = sort;
91749
	}
5699
	
91750
	
5700
			column.maxLenString = max;
91751
	
91752
	// Get the data to sort a column, be it from cache, fresh (populating the
91753
	// cache), or from a sort formatter
91754
	function _fnSortData( settings, colIdx )
91755
	{
91756
		// Custom sorting function - provided by the sort data type
91757
		var column = settings.aoColumns[ colIdx ];
91758
		var customSort = DataTable.ext.order[ column.sSortDataType ];
91759
		var customData;
91760
	
91761
		if ( customSort ) {
91762
			customData = customSort.call( settings.oInstance, settings, colIdx,
91763
				_fnColumnIndexToVisible( settings, colIdx )
91764
			);
5701
		}
91765
		}
5702
	
91766
	
5703
		return column.maxLenString;
91767
		// Use / populate cache
91768
		var row, cellData;
91769
		var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
91770
		var data = settings.aoData;
91771
	
91772
		for ( var rowIdx=0 ; rowIdx<data.length ; rowIdx++ ) {
91773
			// Sparse array
91774
			if (! data[rowIdx]) {
91775
				continue;
91776
			}
91777
	
91778
			row = data[rowIdx];
91779
	
91780
			if ( ! row._aSortData ) {
91781
				row._aSortData = [];
91782
			}
91783
	
91784
			if ( ! row._aSortData[colIdx] || customSort ) {
91785
				cellData = customSort ?
91786
					customData[rowIdx] : // If there was a custom sort function, use data from there
91787
					_fnGetCellData( settings, rowIdx, colIdx, 'sort' );
91788
	
91789
				row._aSortData[ colIdx ] = formatter ?
91790
					formatter( cellData, settings ) :
91791
					cellData;
91792
			}
91793
		}
5704
	}
91794
	}
5705
	
91795
	
5706
	
91796
	
5707
	/**
91797
	/**
5708
	 * Append a CSS unit (only if required) to a string
91798
	 * State information for a table
5709
	 *  @param {string} value to css-ify
91799
	 *
5710
	 *  @returns {string} value with css unit
91800
	 * @param {*} settings
5711
	 *  @memberof DataTable#oApi
91801
	 * @returns State object
5712
	 */
91802
	 */
5713
	function _fnStringToCss( s )
91803
	function _fnSaveState ( settings )
5714
	{
91804
	{
5715
		if ( s === null ) {
91805
		if (settings._bLoadingState) {
5716
			return '0px';
91806
			return;
5717
		}
91807
		}
5718
	
91808
	
5719
		if ( typeof s == 'number' ) {
91809
		// Sort state saving uses [[idx, order]] structure.
5720
			return s < 0 ?
91810
		var sorting = [];
5721
				'0px' :
91811
		_fnSortResolve(settings, sorting, settings.aaSorting );
5722
				s+'px';
5723
		}
5724
	
91812
	
5725
		// Check it has a unit character already
91813
		/* Store the interesting variables */
5726
		return s.match(/\d$/) ?
91814
		var columns = settings.aoColumns;
5727
			s+'px' :
91815
		var state = {
5728
			s;
91816
			time:    +new Date(),
91817
			start:   settings._iDisplayStart,
91818
			length:  settings._iDisplayLength,
91819
			order:   sorting.map(function (sort) {
91820
				// If a column name is available, use it
91821
				return columns[sort[0]] && columns[sort[0]].sName
91822
					? [ columns[sort[0]].sName, sort[1] ]
91823
					: sort.slice();
91824
			} ),
91825
			search:  $.extend({}, settings.oPreviousSearch),
91826
			columns: settings.aoColumns.map( function ( col, i ) {
91827
				return {
91828
					name: col.sName,
91829
					visible: col.bVisible,
91830
					search: $.extend({}, settings.aoPreSearchCols[i])
91831
				};
91832
			} )
91833
		};
91834
	
91835
		settings.oSavedState = state;
91836
		_fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] );
91837
91838
		if ( settings.oFeatures.bStateSave && !settings.bDestroying )
91839
		{
91840
			settings.fnStateSaveCallback.call( settings.oInstance, settings, state );
91841
		}
5729
	}
91842
	}
5730
	
91843
	
91844
	
5731
	/**
91845
	/**
5732
	 * Re-insert the `col` elements for current visibility
91846
	 * Attempt to load a saved table state
5733
	 *
91847
	 *  @param {object} oSettings dataTables settings object
5734
	 * @param {*} settings DT settings
91848
	 *  @param {object} oInit DataTables init object so we can override settings
91849
	 *  @param {function} callback Callback to execute when the state has been loaded
91850
	 *  @memberof DataTable#oApi
5735
	 */
91851
	 */
5736
	function _colGroup( settings ) {
91852
	function _fnLoadState ( settings, init, callback )
5737
		var cols = settings.aoColumns;
91853
	{
91854
		if ( ! settings.oFeatures.bStateSave ) {
91855
			callback();
91856
			return;
91857
		}
5738
	
91858
	
5739
		settings.colgroup.empty();
91859
		var loaded = function(state) {
91860
			_fnImplementState(settings, state, callback);
91861
		}
5740
	
91862
	
5741
		for (i=0 ; i<cols.length ; i++) {
91863
		var state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );
5742
			if (cols[i].bVisible) {
91864
	
5743
				settings.colgroup.append(cols[i].colEl);
91865
		if ( state !== undefined ) {
5744
			}
91866
			_fnImplementState( settings, state, callback );
5745
		}
91867
		}
91868
		// otherwise, wait for the loaded callback to be executed
91869
	
91870
		return true;
5746
	}
91871
	}
5747
	
91872
	
91873
	function _fnImplementState ( settings, s, callback) {
91874
		var i, iLen;
91875
		var columns = settings.aoColumns;
91876
		var currentNames = _pluck(settings.aoColumns, 'sName');
5748
	
91877
	
5749
	function _fnSortInit( settings ) {
91878
		settings._bLoadingState = true;
5750
		var target = settings.nTHead;
91879
	
5751
		var headerRows = target.querySelectorAll('tr');
91880
		// When StateRestore was introduced the state could now be implemented at any time
5752
		var titleRow = settings.titleRow;
91881
		// Not just initialisation. To do this an api instance is required in some places
5753
		var notSelector = ':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';
91882
		var api = settings._bInitComplete ? new DataTable.Api(settings) : null;
5754
		
91883
	
5755
		// Legacy support for `orderCellsTop`
91884
		if ( ! s || ! s.time ) {
5756
		if (titleRow === true) {
91885
			settings._bLoadingState = false;
5757
			target = headerRows[0];
91886
			callback();
91887
			return;
5758
		}
91888
		}
5759
		else if (titleRow === false) {
91889
	
5760
			target = headerRows[ headerRows.length - 1 ];
91890
		// Reject old data
91891
		var duration = settings.iStateDuration;
91892
		if ( duration > 0 && s.time < +new Date() - (duration*1000) ) {
91893
			settings._bLoadingState = false;
91894
			callback();
91895
			return;
5761
		}
91896
		}
5762
		else if (titleRow !== null) {
91897
	
5763
			target = headerRows[titleRow];
91898
		// Allow custom and plug-in manipulation functions to alter the saved data set and
91899
		// cancelling of loading by returning false
91900
		var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );
91901
		if ( abStateLoad.indexOf(false) !== -1 ) {
91902
			settings._bLoadingState = false;
91903
			callback();
91904
			return;
5764
		}
91905
		}
5765
		// else - all rows
5766
	
91906
	
5767
		if (settings.orderHandler) {
91907
		// Store the saved state so it might be accessed at any time
5768
			_fnSortAttachListener(
91908
		settings.oLoadedState = $.extend( true, {}, s );
5769
				settings,
91909
5770
				target,
91910
		// This is needed for ColReorder, which has to happen first to allow all
5771
				target === settings.nTHead
91911
		// the stored indexes to be usable. It is not publicly documented.
5772
					? 'tr'+notSelector+' th'+notSelector+', tr'+notSelector+' td'+notSelector
91912
		_fnCallbackFire( settings, null, 'stateLoadInit', [settings, s], true );
5773
					: 'th'+notSelector+', td'+notSelector
91913
5774
			);
91914
		// Page Length
91915
		if ( s.length !== undefined ) {
91916
			// If already initialised just set the value directly so that the select element is also updated
91917
			if (api) {
91918
				api.page.len(s.length)
91919
			}
91920
			else {
91921
				settings._iDisplayLength   = s.length;
91922
			}
5775
		}
91923
		}
5776
	
91924
	
5777
		// Need to resolve the user input array into our internal structure
91925
		// Restore key features
5778
		var order = [];
91926
		if ( s.start !== undefined ) {
5779
		_fnSortResolve( settings, order, settings.aaSorting );
91927
			if(api === null) {
91928
				settings._iDisplayStart    = s.start;
91929
				settings.iInitDisplayStart = s.start;
91930
			}
91931
			else {
91932
				_fnPageChange(settings, s.start/settings._iDisplayLength);
91933
			}
91934
		}
5780
	
91935
	
5781
		settings.aaSorting = order;
91936
		// Order
5782
	}
91937
		if ( s.order !== undefined ) {
91938
			settings.aaSorting = [];
91939
			$.each( s.order, function ( i, col ) {
91940
				var set = [ col[0], col[1] ];
5783
	
91941
	
91942
				// A column name was stored and should be used for restore
91943
				if (typeof col[0] === 'string') {
91944
					// Find the name from the current list of column names
91945
					var idx = currentNames.indexOf(col[0]);
5784
	
91946
	
5785
	function _fnSortAttachListener(settings, node, selector, column, callback) {
91947
					if (idx < 0) {
5786
		_fnBindAction( node, selector, function (e) {
91948
						// If the column was not found ignore it and continue
5787
			var run = false;
91949
						return;
5788
			var columns = column === undefined
91950
					}
5789
				? _fnColumnsFromHeader( e.target )
5790
				: typeof column === 'function'
5791
					? column()
5792
					: Array.isArray(column)
5793
						? column
5794
						: [column];
5795
	
91951
	
5796
			if ( columns.length ) {
91952
					set[0] = idx;
5797
				for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) {
91953
				}
5798
					var ret = _fnSortAdd( settings, columns[i], i, e.shiftKey );
91954
				else if (set[0] >= columns.length) {
91955
					// If the column index is out of bounds ignore it and continue
91956
					return;
91957
				}
5799
	
91958
	
5800
					if (ret !== false) {
91959
				settings.aaSorting.push(set);
5801
						run = true;
91960
			} );
5802
					}					
91961
		}
5803
	
91962
	
5804
					// If the first entry is no sort, then subsequent
91963
		// Search
5805
					// sort columns are ignored
91964
		if ( s.search !== undefined ) {
5806
					if (settings.aaSorting.length === 1 && settings.aaSorting[0][1] === '') {
91965
			$.extend( settings.oPreviousSearch, s.search );
5807
						break;
91966
		}
5808
					}
5809
				}
5810
	
91967
	
5811
				if (run) {
91968
		// Columns
5812
					_fnProcessingRun(settings, true, function () {
91969
		if ( s.columns ) {
5813
						_fnSort( settings );
91970
			var set = s.columns;
5814
						_fnSortDisplay( settings, settings.aiDisplay );
91971
			var incoming = _pluck(s.columns, 'name');
5815
	
91972
	
5816
						_fnReDraw( settings, false, false );
91973
			// Check if it is a 2.2 style state object with a `name` property for the columns, and if
91974
			// the name was defined. If so, then create a new array that will map the state object
91975
			// given, to the current columns (don't bother if they are already matching tho).
91976
			if (incoming.join('').length && incoming.join('') !== currentNames.join('')) {
91977
				set = [];
91978
91979
				// For each column, try to find the name in the incoming array
91980
				for (i=0 ; i<currentNames.length ; i++) {
91981
					if (currentNames[i] != '') {
91982
						var idx = incoming.indexOf(currentNames[i]);
91983
91984
						if (idx >= 0) {
91985
							set.push(s.columns[idx]);
91986
						}
91987
						else {
91988
							// No matching column name in the state's columns, so this might be a new
91989
							// column and thus can't have a state already.
91990
							set.push({});
91991
						}
91992
					}
91993
					else {
91994
						// If no name, but other columns did have a name, then there is no knowing
91995
						// where this one came from originally so it can't be restored.
91996
						set.push({});
91997
					}
91998
				}
91999
			}
5817
	
92000
	
5818
						if (callback) {
92001
			// If the number of columns to restore is different from current, then all bets are off.
5819
							callback();
92002
			if (set.length === columns.length) {
92003
				for ( i=0, iLen=set.length ; i<iLen ; i++ ) {
92004
					var col = set[i];
92005
92006
					// Visibility
92007
					if ( col.visible !== undefined ) {
92008
						// If the api is defined, the table has been initialised so we need to use it rather than internal settings
92009
						if (api) {
92010
							// Don't redraw the columns on every iteration of this loop, we will do this at the end instead
92011
							api.column(i).visible(col.visible, false);
92012
						}
92013
						else {
92014
							columns[i].bVisible = col.visible;
5820
						}
92015
						}
92016
					}
92017
92018
					// Search
92019
					if ( col.search !== undefined ) {
92020
						$.extend( settings.aoPreSearchCols[i], col.search );
92021
					}
92022
				}
92023
92024
				// If the api is defined then we need to adjust the columns once the visibility has been changed
92025
				if (api) {
92026
					api.one('draw', function () {
92027
						api.columns.adjust();
5821
					});
92028
					});
5822
				}
92029
				}
5823
			}
92030
			}
5824
		} );
92031
		}
92032
	
92033
		settings._bLoadingState = false;
92034
		_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );
92035
		callback();
92036
	}
92037
	
92038
	/**
92039
	 * Log an error message
92040
	 *  @param {object} settings dataTables settings object
92041
	 *  @param {int} level log error messages, or display them to the user
92042
	 *  @param {string} msg error message
92043
	 *  @param {int} tn Technical note id to get more information about the error.
92044
	 *  @memberof DataTable#oApi
92045
	 */
92046
	function _fnLog( settings, level, msg, tn )
92047
	{
92048
		msg = 'DataTables warning: '+
92049
			(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;
92050
	
92051
		if ( tn ) {
92052
			msg += '. For more information about this error, please see '+
92053
			'https://datatables.net/tn/'+tn;
92054
		}
92055
	
92056
		if ( ! level  ) {
92057
			// Backwards compatibility pre 1.10
92058
			var ext = DataTable.ext;
92059
			var type = ext.sErrMode || ext.errMode;
92060
92061
			if ( settings ) {
92062
				_fnCallbackFire( settings, null, 'dt-error', [ settings, tn, msg ], true );
92063
			}
92064
92065
			if ( type == 'alert' ) {
92066
				alert( msg );
92067
			}
92068
			else if ( type == 'throw' ) {
92069
				throw new Error(msg);
92070
			}
92071
			else if ( typeof type == 'function' ) {
92072
				type( settings, tn, msg );
92073
			}
92074
		}
92075
		else if ( window.console && console.log ) {
92076
			console.log( msg );
92077
		}
5825
	}
92078
	}
5826
	
92079
	
92080
	
5827
	/**
92081
	/**
5828
	 * Sort the display array to match the master's order
92082
	 * See if a property is defined on one object, if so assign it to the other object
5829
	 * @param {*} settings
92083
	 *  @param {object} ret target object
92084
	 *  @param {object} src source object
92085
	 *  @param {string} name property
92086
	 *  @param {string} [mappedName] name to map too - optional, name used if not given
92087
	 *  @memberof DataTable#oApi
5830
	 */
92088
	 */
5831
	function _fnSortDisplay(settings, display) {
92089
	function _fnMap( ret, src, name, mappedName )
5832
		if (display.length < 2) {
92090
	{
92091
		if ( Array.isArray( name ) ) {
92092
			$.each( name, function (i, val) {
92093
				if ( Array.isArray( val ) ) {
92094
					_fnMap( ret, src, val[0], val[1] );
92095
				}
92096
				else {
92097
					_fnMap( ret, src, val );
92098
				}
92099
			} );
92100
	
5833
			return;
92101
			return;
5834
		}
92102
		}
5835
	
92103
	
5836
		var master = settings.aiDisplayMaster;
92104
		if ( mappedName === undefined ) {
5837
		var masterMap = {};
92105
			mappedName = name;
5838
		var map = {};
5839
		var i;
5840
	
5841
		// Rather than needing an `indexOf` on master array, we can create a map
5842
		for (i=0 ; i<master.length ; i++) {
5843
			masterMap[master[i]] = i;
5844
		}
92106
		}
5845
	
92107
	
5846
		// And then cache what would be the indexOf from the display
92108
		if ( src[name] !== undefined ) {
5847
		for (i=0 ; i<display.length ; i++) {
92109
			ret[mappedName] = src[name];
5848
			map[display[i]] = masterMap[display[i]];
5849
		}
92110
		}
5850
	
5851
		display.sort(function(a, b){
5852
			// Short version of this function is simply `master.indexOf(a) - master.indexOf(b);`
5853
			return map[a] - map[b];
5854
		});
5855
	}
92111
	}
5856
	
92112
	
5857
	
92113
	
5858
	function _fnSortResolve (settings, nestedSort, sort) {
92114
	/**
5859
		var push = function ( a ) {
92115
	 * Extend objects - very similar to jQuery.extend, but deep copy objects, and
5860
			if ($.isPlainObject(a)) {
92116
	 * shallow copy arrays. The reason we need to do this, is that we don't want to
5861
				if (a.idx !== undefined) {
92117
	 * deep copy array init values (such as aaSorting) since the dev wouldn't be
5862
					// Index based ordering
92118
	 * able to override them, but we do want to deep copy arrays.
5863
					nestedSort.push([a.idx, a.dir]);
92119
	 *  @param {object} out Object to extend
5864
				}
92120
	 *  @param {object} extender Object from which the properties will be applied to
5865
				else if (a.name) {
92121
	 *      out
5866
					// Name based ordering
92122
	 *  @param {boolean} breakRefs If true, then arrays will be sliced to take an
5867
					var cols = _pluck( settings.aoColumns, 'sName');
92123
	 *      independent copy with the exception of the `data` or `aaData` parameters
5868
					var idx = cols.indexOf(a.name);
92124
	 *      if they are present. This is so you can pass in a collection to
92125
	 *      DataTables and have that used as your data source without breaking the
92126
	 *      references
92127
	 *  @returns {object} out Reference, just for convenience - out === the return.
92128
	 *  @memberof DataTable#oApi
92129
	 *  @todo This doesn't take account of arrays inside the deep copied objects.
92130
	 */
92131
	function _fnExtend( out, extender, breakRefs )
92132
	{
92133
		var val;
5869
	
92134
	
5870
					if (idx !== -1) {
92135
		for ( var prop in extender ) {
5871
						nestedSort.push([idx, a.dir]);
92136
			if ( Object.prototype.hasOwnProperty.call(extender, prop) ) {
92137
				val = extender[prop];
92138
	
92139
				if ( $.isPlainObject( val ) ) {
92140
					if ( ! $.isPlainObject( out[prop] ) ) {
92141
						out[prop] = {};
5872
					}
92142
					}
92143
					$.extend( true, out[prop], val );
92144
				}
92145
				else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && Array.isArray(val) ) {
92146
					out[prop] = val.slice();
92147
				}
92148
				else {
92149
					out[prop] = val;
5873
				}
92150
				}
5874
			}
5875
			else {
5876
				// Plain column index and direction pair
5877
				nestedSort.push(a);
5878
			}
5879
		};
5880
	
5881
		if ( $.isPlainObject(sort) ) {
5882
			// Object
5883
			push(sort);
5884
		}
5885
		else if ( sort.length && typeof sort[0] === 'number' ) {
5886
			// 1D array
5887
			push(sort);
5888
		}
5889
		else if ( sort.length ) {
5890
			// 2D array
5891
			for (var z=0; z<sort.length; z++) {
5892
				push(sort[z]); // Object or array
5893
			}
92151
			}
5894
		}
92152
		}
92153
92154
		return out;
5895
	}
92155
	}
5896
	
92156
	
92157
92158
	/**
92159
	 * Bind an event handler to allow a click or return key to activate the callback.
92160
	 * This is good for accessibility since a return on the keyboard will have the
92161
	 * same effect as a click, if the element has focus.
92162
	 *  @param {element} n Element to bind the action to
92163
	 *  @param {object|string} selector Selector (for delegated events) or data object
92164
	 *   to pass to the triggered function
92165
	 *  @param {function} fn Callback function for when the event is triggered
92166
	 *  @memberof DataTable#oApi
92167
	 */
92168
	function _fnBindAction( n, selector, fn )
92169
	{
92170
		$(n)
92171
			.on( 'click.DT', selector, function (e) {
92172
				fn(e);
92173
			} )
92174
			.on( 'keypress.DT', selector, function (e){
92175
				if ( e.which === 13 ) {
92176
					e.preventDefault();
92177
					fn(e);
92178
				}
92179
			} )
92180
			.on( 'selectstart.DT', selector, function () {
92181
				// Don't want a double click resulting in text selection
92182
				return false;
92183
			} );
92184
	}
5897
	
92185
	
5898
	function _fnSortFlatten ( settings )
92186
92187
	/**
92188
	 * Register a callback function. Easily allows a callback function to be added to
92189
	 * an array store of callback functions that can then all be called together.
92190
	 *  @param {object} settings dataTables settings object
92191
	 *  @param {string} store Name of the array storage for the callbacks in oSettings
92192
	 *  @param {function} fn Function to be called back
92193
	 *  @memberof DataTable#oApi
92194
	 */
92195
	function _fnCallbackReg( settings, store, fn )
5899
	{
92196
	{
5900
		var
92197
		if ( fn ) {
5901
			i, k, kLen,
92198
			settings[store].push(fn);
5902
			aSort = [],
5903
			extSort = DataTable.ext.type.order,
5904
			aoColumns = settings.aoColumns,
5905
			aDataSort, iCol, sType, srcCol,
5906
			fixed = settings.aaSortingFixed,
5907
			fixedObj = $.isPlainObject( fixed ),
5908
			nestedSort = [];
5909
		
5910
		if ( ! settings.oFeatures.bSort ) {
5911
			return aSort;
5912
		}
92199
		}
92200
	}
5913
	
92201
	
5914
		// Build the sort array, with pre-fix and post-fix options if they have been
92202
	
5915
		// specified
92203
	/**
5916
		if ( Array.isArray( fixed ) ) {
92204
	 * Fire callback functions and trigger events. Note that the loop over the
5917
			_fnSortResolve( settings, nestedSort, fixed );
92205
	 * callback array store is done backwards! Further note that you do not want to
92206
	 * fire off triggers in time sensitive applications (for example cell creation)
92207
	 * as its slow.
92208
	 *  @param {object} settings dataTables settings object
92209
	 *  @param {string} callbackArr Name of the array storage for the callbacks in
92210
	 *      oSettings
92211
	 *  @param {string} eventName Name of the jQuery custom event to trigger. If
92212
	 *      null no trigger is fired
92213
	 *  @param {array} args Array of arguments to pass to the callback function /
92214
	 *      trigger
92215
	 *  @param {boolean} [bubbles] True if the event should bubble
92216
	 *  @memberof DataTable#oApi
92217
	 */
92218
	function _fnCallbackFire( settings, callbackArr, eventName, args, bubbles )
92219
	{
92220
		var ret = [];
92221
	
92222
		if ( callbackArr ) {
92223
			ret = settings[callbackArr].slice().reverse().map( function (val) {
92224
				return val.apply( settings.oInstance, args );
92225
			} );
5918
		}
92226
		}
92227
92228
		if ( eventName !== null) {
92229
			var e = $.Event( eventName+'.dt' );
92230
			var table = $(settings.nTable);
92231
92232
			// Expose the DataTables API on the event object for easy access
92233
			e.dt = settings.api;
5919
	
92234
	
5920
		if ( fixedObj && fixed.pre ) {
92235
			table[bubbles ?  'trigger' : 'triggerHandler']( e, args );
5921
			_fnSortResolve( settings, nestedSort, fixed.pre );
92236
92237
			// If not yet attached to the document, trigger the event
92238
			// on the body directly to sort of simulate the bubble
92239
			if (bubbles && table.parents('body').length === 0) {
92240
				$('body').trigger( e, args );
92241
			}
92242
	
92243
			ret.push( e.result );
5922
		}
92244
		}
5923
	
92245
	
5924
		_fnSortResolve( settings, nestedSort, settings.aaSorting );
92246
		return ret;
92247
	}
5925
	
92248
	
5926
		if (fixedObj && fixed.post ) {
92249
	
5927
			_fnSortResolve( settings, nestedSort, fixed.post );
92250
	function _fnLengthOverflow ( settings )
92251
	{
92252
		var
92253
			start = settings._iDisplayStart,
92254
			end = settings.fnDisplayEnd(),
92255
			len = settings._iDisplayLength;
92256
92257
		/* If we have space to show extra rows (backing up from the end point - then do so */
92258
		if ( start >= end )
92259
		{
92260
			start = end - len;
5928
		}
92261
		}
5929
	
92262
	
5930
		for ( i=0 ; i<nestedSort.length ; i++ )
92263
		// Keep the start record on the current page
92264
		start -= (start % len);
92265
92266
		if ( len === -1 || start < 0 )
5931
		{
92267
		{
5932
			srcCol = nestedSort[i][0];
92268
			start = 0;
92269
		}
5933
	
92270
	
5934
			if ( aoColumns[ srcCol ] ) {
92271
		settings._iDisplayStart = start;
5935
				aDataSort = aoColumns[ srcCol ].aDataSort;
92272
	}
5936
	
92273
	
5937
				for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
5938
				{
5939
					iCol = aDataSort[k];
5940
					sType = aoColumns[ iCol ].sType || 'string';
5941
	
92274
	
5942
					if ( nestedSort[i]._idx === undefined ) {
92275
	function _fnRenderer( settings, type )
5943
						nestedSort[i]._idx = aoColumns[iCol].asSorting.indexOf(nestedSort[i][1]);
92276
	{
5944
					}
92277
		var renderer = settings.renderer;
92278
		var host = DataTable.ext.renderer[type];
5945
	
92279
	
5946
					if ( nestedSort[i][1] ) {
92280
		if ( $.isPlainObject( renderer ) && renderer[type] ) {
5947
						aSort.push( {
92281
			// Specific renderer for this type. If available use it, otherwise use
5948
							src:       srcCol,
92282
			// the default.
5949
							col:       iCol,
92283
			return host[renderer[type]] || host._;
5950
							dir:       nestedSort[i][1],
5951
							index:     nestedSort[i]._idx,
5952
							type:      sType,
5953
							formatter: extSort[ sType+"-pre" ],
5954
							sorter:    extSort[ sType+"-"+nestedSort[i][1] ]
5955
						} );
5956
					}
5957
				}
5958
			}
5959
		}
92284
		}
5960
	
92285
		else if ( typeof renderer === 'string' ) {
5961
		return aSort;
92286
			// Common renderer - if there is one available for this type use it,
92287
			// otherwise use the default
92288
			return host[renderer] || host._;
92289
		}
92290
92291
		// Use the default
92292
		return host._;
5962
	}
92293
	}
5963
	
92294
	
92295
	
5964
	/**
92296
	/**
5965
	 * Change the order of the table
92297
	 * Detect the data source being used for the table. Used to simplify the code
5966
	 *  @param {object} oSettings dataTables settings object
92298
	 * a little (ajax) and to make it compress a little smaller.
92299
	 *
92300
	 *  @param {object} settings dataTables settings object
92301
	 *  @returns {string} Data source
5967
	 *  @memberof DataTable#oApi
92302
	 *  @memberof DataTable#oApi
5968
	 */
92303
	 */
5969
	function _fnSort ( oSettings, col, dir )
92304
	function _fnDataSource ( settings )
5970
	{
92305
	{
5971
		var
92306
		if ( settings.oFeatures.bServerSide ) {
5972
			i, iLen,
92307
			return 'ssp';
5973
			aiOrig = [],
5974
			extSort = DataTable.ext.type.order,
5975
			aoData = oSettings.aoData,
5976
			sortCol,
5977
			displayMaster = oSettings.aiDisplayMaster,
5978
			aSort;
5979
	
5980
		// Make sure the columns all have types defined
5981
		_fnColumnTypes(oSettings);
5982
5983
		// Allow a specific column to be sorted, which will _not_ alter the display
5984
		// master
5985
		if (col !== undefined) {
5986
			var srcCol = oSettings.aoColumns[col];
5987
5988
			aSort = [{
5989
				src:       col,
5990
				col:       col,
5991
				dir:       dir,
5992
				index:     0,
5993
				type:      srcCol.sType,
5994
				formatter: extSort[ srcCol.sType+"-pre" ],
5995
				sorter:    extSort[ srcCol.sType+"-"+dir ]
5996
			}];
5997
			displayMaster = displayMaster.slice();
5998
		}
92308
		}
5999
		else {
92309
		else if ( settings.ajax ) {
6000
			aSort = _fnSortFlatten( oSettings );
92310
			return 'ajax';
6001
		}
92311
		}
92312
		return 'dom';
92313
	}
6002
	
92314
	
6003
		for ( i=0, iLen=aSort.length ; i<iLen ; i++ ) {
92315
	/**
6004
			sortCol = aSort[i];
92316
	 * Common replacement for language strings
92317
	 *
92318
	 * @param {*} settings DT settings object
92319
	 * @param {*} str String with values to replace
92320
	 * @param {*} entries Plural number for _ENTRIES_ - can be undefined
92321
	 * @returns String
92322
	 */
92323
	function _fnMacros ( settings, str, entries )
92324
	{
92325
		// When infinite scrolling, we are always starting at 1. _iDisplayStart is
92326
		// used only internally
92327
		var
92328
			formatter  = settings.fnFormatNumber,
92329
			start      = settings._iDisplayStart+1,
92330
			len        = settings._iDisplayLength,
92331
			vis        = settings.fnRecordsDisplay(),
92332
			max        = settings.fnRecordsTotal(),
92333
			all        = len === -1;
6005
	
92334
	
6006
			// Load the data needed for the sort, for each cell
92335
		return str.
6007
			_fnSortData( oSettings, sortCol.col );
92336
			replace(/_START_/g, formatter.call( settings, start ) ).
92337
			replace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).
92338
			replace(/_MAX_/g,   formatter.call( settings, max ) ).
92339
			replace(/_TOTAL_/g, formatter.call( settings, vis ) ).
92340
			replace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).
92341
			replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ).
92342
			replace(/_ENTRIES_/g, settings.api.i18n('entries', '', entries) ).
92343
			replace(/_ENTRIES-MAX_/g, settings.api.i18n('entries', '', max) ).
92344
			replace(/_ENTRIES-TOTAL_/g, settings.api.i18n('entries', '', vis) );
92345
	}
92346
	
92347
	/**
92348
	 * Add elements to an array as quickly as possible, but stack safe.
92349
	 *
92350
	 * @param {*} arr Array to add the data to
92351
	 * @param {*} data Data array that is to be added
92352
	 * @returns
92353
	 */
92354
	function _fnArrayApply(arr, data) {
92355
		if (! data) {
92356
			return;
6008
		}
92357
		}
6009
	
92358
	
6010
		/* No sorting required if server-side or no sorting array */
92359
		// Chrome can throw a max stack error if apply is called with
6011
		if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )
92360
		// too large an array, but apply is faster.
6012
		{
92361
		if (data.length < 10000) {
6013
			// Reset the initial positions on each pass so we get a stable sort
92362
			arr.push.apply(arr, data);
6014
			for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {
92363
		}
6015
				aiOrig[ i ] = i;
92364
		else {
92365
			for (i=0 ; i<data.length ; i++) {
92366
				arr.push(data[i]);
6016
			}
92367
			}
92368
		}
92369
	}
6017
	
92370
	
6018
			// If the first sort is desc, then reverse the array to preserve original
92371
	/**
6019
			// order, just in reverse
92372
	 * Add one or more listeners to the table
6020
			if (aSort.length && aSort[0].dir === 'desc' && oSettings.orderDescReverse) {
92373
	 *
6021
				aiOrig.reverse();
92374
	 * @param {*} that JQ for the table
6022
			}
92375
	 * @param {*} name Event name
92376
	 * @param {*} src Listener(s)
92377
	 */
92378
	function _fnListener(that, name, src) {
92379
		if (!Array.isArray(src)) {
92380
			src = [src];
92381
		}
6023
	
92382
	
6024
			/* Do the sort - here we want multi-column sorting based on a given data source (column)
92383
		for (i=0 ; i<src.length ; i++) {
6025
			 * and sorting function (from oSort) in a certain direction. It's reasonably complex to
92384
			that.on(name + '.dt', src[i]);
6026
			 * follow on its own, but this is what we want (example two column sorting):
92385
		}
6027
			 *  fnLocalSorting = function(a,b){
92386
	}
6028
			 *    var test;
6029
			 *    test = oSort['string-asc']('data11', 'data12');
6030
			 *      if (test !== 0)
6031
			 *        return test;
6032
			 *    test = oSort['numeric-desc']('data21', 'data22');
6033
			 *    if (test !== 0)
6034
			 *      return test;
6035
			 *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
6036
			 *  }
6037
			 * Basically we have a test for each sorting column, if the data in that column is equal,
6038
			 * test the next column. If all columns match, then we use a numeric sort on the row
6039
			 * positions in the original data array to provide a stable sort.
6040
			 */
6041
			displayMaster.sort( function ( a, b ) {
6042
				var
6043
					x, y, k, test, sort,
6044
					len=aSort.length,
6045
					dataA = aoData[a]._aSortData,
6046
					dataB = aoData[b]._aSortData;
6047
	
92387
	
6048
				for ( k=0 ; k<len ; k++ ) {
92388
	/**
6049
					sort = aSort[k];
92389
	 * Escape HTML entities in strings, in an object
92390
	 */
92391
	function _fnEscapeObject(obj) {
92392
		if (DataTable.ext.escape.attributes) {
92393
			$.each(obj, function (key, val) {
92394
				obj[key] = _escapeHtml(val);
92395
			})
92396
		}
6050
	
92397
	
6051
					// Data, which may have already been through a `-pre` function
92398
		return obj;
6052
					x = dataA[ sort.col ];
92399
	}
6053
					y = dataB[ sort.col ];
6054
	
92400
	
6055
					if (sort.sorter) {
6056
						// If there is a custom sorter (`-asc` or `-desc`) for this
6057
						// data type, use it
6058
						test = sort.sorter(x, y);
6059
	
92401
	
6060
						if ( test !== 0 ) {
6061
							return test;
6062
						}
6063
					}
6064
					else {
6065
						// Otherwise, use generic sorting
6066
						test = x<y ? -1 : x>y ? 1 : 0;
6067
	
92402
	
6068
						if ( test !== 0 ) {
92403
	/**
6069
							return sort.dir === 'asc' ? test : -test;
92404
	 * Computed structure of the DataTables API, defined by the options passed to
6070
						}
92405
	 * `DataTable.Api.register()` when building the API.
6071
					}
92406
	 *
6072
				}
92407
	 * The structure is built in order to speed creation and extension of the Api
92408
	 * objects since the extensions are effectively pre-parsed.
92409
	 *
92410
	 * The array is an array of objects with the following structure, where this
92411
	 * base array represents the Api prototype base:
92412
	 *
92413
	 *     [
92414
	 *       {
92415
	 *         name:      'data'                -- string   - Property name
92416
	 *         val:       function () {},       -- function - Api method (or undefined if just an object
92417
	 *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
92418
	 *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
92419
	 *       },
92420
	 *       {
92421
	 *         name:     'row'
92422
	 *         val:       {},
92423
	 *         methodExt: [ ... ],
92424
	 *         propExt:   [
92425
	 *           {
92426
	 *             name:      'data'
92427
	 *             val:       function () {},
92428
	 *             methodExt: [ ... ],
92429
	 *             propExt:   [ ... ]
92430
	 *           },
92431
	 *           ...
92432
	 *         ]
92433
	 *       }
92434
	 *     ]
92435
	 *
92436
	 * @type {Array}
92437
	 * @ignore
92438
	 */
92439
	var __apiStruct = [];
6073
	
92440
	
6074
				x = aiOrig[a];
6075
				y = aiOrig[b];
6076
	
92441
	
6077
				return x<y ? -1 : x>y ? 1 : 0;
92442
	/**
6078
			} );
92443
	 * `Array.prototype` reference.
92444
	 *
92445
	 * @type object
92446
	 * @ignore
92447
	 */
92448
	var __arrayProto = Array.prototype;
92449
	
92450
92451
	/**
92452
	 * Abstraction for `context` parameter of the `Api` constructor to allow it to
92453
	 * take several different forms for ease of use.
92454
	 *
92455
	 * Each of the input parameter types will be converted to a DataTables settings
92456
	 * object where possible.
92457
	 *
92458
	 * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one
92459
	 *   of:
92460
	 *
92461
	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
92462
	 *     with be found and used.
92463
	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
92464
	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
92465
	 *   * `object` - DataTables settings object
92466
	 *   * `DataTables.Api` - API instance
92467
	 * @return {array|null} Matching DataTables settings objects. `null` or
92468
	 *   `undefined` is returned if no matching DataTable is found.
92469
	 * @ignore
92470
	 */
92471
	var _toSettings = function ( mixed )
92472
	{
92473
		var idx, jq;
92474
		var settings = DataTable.settings;
92475
		var tables = _pluck(settings, 'nTable');
92476
92477
		if ( ! mixed ) {
92478
			return [];
6079
		}
92479
		}
6080
		else if ( aSort.length === 0 ) {
92480
		else if ( mixed.nTable && mixed.oFeatures ) {
6081
			// Apply index order
92481
			// DataTables settings object
6082
			displayMaster.sort(function (x, y) {
92482
			return [ mixed ];
6083
				return x<y ? -1 : x>y ? 1 : 0;
6084
			});
6085
		}
92483
		}
6086
	
92484
		else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
6087
		if (col === undefined) {
92485
			// Table node
6088
			// Tell the draw function that we have sorted the data
92486
			idx = tables.indexOf(mixed);
6089
			oSettings.bSorted = true;
92487
			return idx !== -1 ? [ settings[idx] ] : null;
6090
			oSettings.sortDetails = aSort;
92488
		}
6091
	
92489
		else if ( mixed && typeof mixed.settings === 'function' ) {
6092
			_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort] );
92490
			return mixed.settings().toArray();
92491
		}
92492
		else if ( typeof mixed === 'string' ) {
92493
			// jQuery selector
92494
			jq = $(mixed).get();
92495
		}
92496
		else if ( mixed instanceof $ ) {
92497
			// jQuery object (also DataTables instance)
92498
			jq = mixed.get();
6093
		}
92499
		}
6094
	
92500
	
6095
		return displayMaster;
92501
		if ( jq ) {
6096
	}
92502
			return settings.filter(function (v, idx) {
6097
	
92503
				return jq.includes(tables[idx]);
92504
			});
92505
		}
92506
	};
92507
6098
	
92508
	
6099
	/**
92509
	/**
6100
	 * Function to run on user sort request
92510
	 * DataTables API class - used to control and interface with  one or more
6101
	 *  @param {object} settings dataTables settings object
92511
	 * DataTables enhanced tables.
6102
	 *  @param {node} attachTo node to attach the handler to
92512
	 *
6103
	 *  @param {int} colIdx column sorting index
92513
	 * The API class is heavily based on jQuery, presenting a chainable interface
6104
	 *  @param {int} addIndex Counter
92514
	 * that you can use to interact with tables. Each instance of the API class has
6105
	 *  @param {boolean} [shift=false] Shift click add
92515
	 * a "context" - i.e. the tables that it will operate on. This could be a single
6106
	 *  @param {function} [callback] callback function
92516
	 * table, all tables on a page or a sub-set thereof.
6107
	 *  @memberof DataTable#oApi
92517
	 *
92518
	 * Additionally the API is designed to allow you to easily work with the data in
92519
	 * the tables, retrieving and manipulating it as required. This is done by
92520
	 * presenting the API class as an array like interface. The contents of the
92521
	 * array depend upon the actions requested by each method (for example
92522
	 * `rows().nodes()` will return an array of nodes, while `rows().data()` will
92523
	 * return an array of objects or arrays depending upon your table's
92524
	 * configuration). The API object has a number of array like methods (`push`,
92525
	 * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
92526
	 * `unique` etc) to assist your working with the data held in a table.
92527
	 *
92528
	 * Most methods (those which return an Api instance) are chainable, which means
92529
	 * the return from a method call also has all of the methods available that the
92530
	 * top level object had. For example, these two calls are equivalent:
92531
	 *
92532
	 *     // Not chained
92533
	 *     api.row.add( {...} );
92534
	 *     api.draw();
92535
	 *
92536
	 *     // Chained
92537
	 *     api.row.add( {...} ).draw();
92538
	 *
92539
	 * @class DataTable.Api
92540
	 * @param {array|object|string|jQuery} context DataTable identifier. This is
92541
	 *   used to define which DataTables enhanced tables this API will operate on.
92542
	 *   Can be one of:
92543
	 *
92544
	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
92545
	 *     with be found and used.
92546
	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
92547
	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
92548
	 *   * `object` - DataTables settings object
92549
	 * @param {array} [data] Data to initialise the Api instance with.
92550
	 *
92551
	 * @example
92552
	 *   // Direct initialisation during DataTables construction
92553
	 *   var api = $('#example').DataTable();
92554
	 *
92555
	 * @example
92556
	 *   // Initialisation using a DataTables jQuery object
92557
	 *   var api = $('#example').dataTable().api();
92558
	 *
92559
	 * @example
92560
	 *   // Initialisation as a constructor
92561
	 *   var api = new DataTable.Api( 'table.dataTable' );
6108
	 */
92562
	 */
6109
	function _fnSortAdd ( settings, colIdx, addIndex, shift )
92563
	_Api = function ( context, data )
6110
	{
92564
	{
6111
		var col = settings.aoColumns[ colIdx ];
92565
		if ( ! (this instanceof _Api) ) {
6112
		var sorting = settings.aaSorting;
92566
			return new _Api( context, data );
6113
		var asSorting = col.asSorting;
92567
		}
6114
		var nextSortIdx;
92568
6115
		var next = function ( a, overflow ) {
92569
		var i;
6116
			var idx = a._idx;
92570
		var settings = [];
6117
			if ( idx === undefined ) {
92571
		var ctxSettings = function ( o ) {
6118
				idx = asSorting.indexOf(a[1]);
92572
			var a = _toSettings( o );
92573
			if ( a ) {
92574
				settings.push.apply( settings, a );
6119
			}
92575
			}
6120
	
6121
			return idx+1 < asSorting.length ?
6122
				idx+1 :
6123
				overflow ?
6124
					null :
6125
					0;
6126
		};
92576
		};
6127
	
92577
	
6128
		if ( ! col.bSortable ) {
92578
		if ( Array.isArray( context ) ) {
6129
			return false;
92579
			for ( i=0 ; i<context.length ; i++ ) {
92580
				ctxSettings( context[i] );
92581
			}
6130
		}
92582
		}
6131
	
92583
		else {
6132
		// Convert to 2D array if needed
92584
			ctxSettings( context );
6133
		if ( typeof sorting[0] === 'number' ) {
6134
			sorting = settings.aaSorting = [ sorting ];
6135
		}
92585
		}
6136
	
92586
	
6137
		// If appending the sort then we are multi-column sorting
92587
		// Remove duplicates
6138
		if ( (shift || addIndex) && settings.oFeatures.bSortMulti ) {
92588
		this.context = settings.length > 1
6139
			// Are we already doing some kind of sort on this column?
92589
			? _unique( settings )
6140
			var sortIdx = _pluck(sorting, '0').indexOf(colIdx);
92590
			: settings;
6141
	
92591
	
6142
			if ( sortIdx !== -1 ) {
92592
		// Initial data
6143
				// Yes, modify the sort
92593
		_fnArrayApply(this, data);
6144
				nextSortIdx = next( sorting[sortIdx], true );
6145
	
92594
	
6146
				if ( nextSortIdx === null && sorting.length === 1 ) {
92595
		// selector
6147
					nextSortIdx = 0; // can't remove sorting completely
92596
		this.selector = {
6148
				}
92597
			rows: null,
92598
			cols: null,
92599
			opts: null
92600
		};
6149
	
92601
	
6150
				if ( nextSortIdx === null || asSorting[ nextSortIdx ] === '' ) {
92602
		_Api.extend( this, this, __apiStruct );
6151
					sorting.splice( sortIdx, 1 );
92603
	};
6152
				}
6153
				else {
6154
					sorting[sortIdx][1] = asSorting[ nextSortIdx ];
6155
					sorting[sortIdx]._idx = nextSortIdx;
6156
				}
6157
			}
6158
			else if (shift) {
6159
				// No sort on this column yet, being added by shift click
6160
				// add it as itself
6161
				sorting.push( [ colIdx, asSorting[0], 0 ] );
6162
				sorting[sorting.length-1]._idx = 0;
6163
			}
6164
			else {
6165
				// No sort on this column yet, being added from a colspan
6166
				// so add with same direction as first column
6167
				sorting.push( [ colIdx, sorting[0][1], 0 ] );
6168
				sorting[sorting.length-1]._idx = 0;
6169
			}
6170
		}
6171
		else if ( sorting.length && sorting[0][0] == colIdx ) {
6172
			// Single column - already sorting on this column, modify the sort
6173
			nextSortIdx = next( sorting[0] );
6174
	
92604
	
6175
			sorting.length = 1;
92605
	DataTable.Api = _Api;
6176
			sorting[0][1] = asSorting[ nextSortIdx ];
92606
	
6177
			sorting[0]._idx = nextSortIdx;
92607
	// Don't destroy the existing prototype, just extend it. Required for jQuery 2's
6178
		}
92608
	// isPlainObject.
6179
		else {
92609
	$.extend( _Api.prototype, {
6180
			// Single column - sort only on this column
92610
		any: function ()
6181
			sorting.length = 0;
92611
		{
6182
			sorting.push( [ colIdx, asSorting[0] ] );
92612
			return this.count() !== 0;
6183
			sorting[0]._idx = 0;
92613
		},
6184
		}
92614
	
6185
	}
92615
		context: [], // array of table settings objects
92616
	
92617
		count: function ()
92618
		{
92619
			return this.flatten().length;
92620
		},
92621
	
92622
		each: function ( fn )
92623
		{
92624
			for ( var i=0, iLen=this.length ; i<iLen; i++ ) {
92625
				fn.call( this, this[i], i, this );
92626
			}
6186
	
92627
	
92628
			return this;
92629
		},
6187
	
92630
	
6188
	/**
92631
		eq: function ( idx )
6189
	 * Set the sorting classes on table's body, Note: it is safe to call this function
92632
		{
6190
	 * when bSort and bSortClasses are false
92633
			var ctx = this.context;
6191
	 *  @param {object} oSettings dataTables settings object
6192
	 *  @memberof DataTable#oApi
6193
	 */
6194
	function _fnSortingClasses( settings )
6195
	{
6196
		var oldSort = settings.aLastSort;
6197
		var sortClass = settings.oClasses.order.position;
6198
		var sort = _fnSortFlatten( settings );
6199
		var features = settings.oFeatures;
6200
		var i, iLen, colIdx;
6201
	
92634
	
6202
		if ( features.bSort && features.bSortClasses ) {
92635
			return ctx.length > idx ?
6203
			// Remove old sorting classes
92636
				new _Api( ctx[idx], this[idx] ) :
6204
			for ( i=0, iLen=oldSort.length ; i<iLen ; i++ ) {
92637
				null;
6205
				colIdx = oldSort[i].src;
92638
		},
6206
	
92639
	
6207
				// Remove column sorting
92640
		filter: function ( fn )
6208
				$( _pluck( settings.aoData, 'anCells', colIdx ) )
92641
		{
6209
					.removeClass( sortClass + (i<2 ? i+1 : 3) );
92642
			var a = __arrayProto.filter.call( this, fn, this );
6210
			}
6211
	
92643
	
6212
			// Add new column sorting
92644
			return new _Api( this.context, a );
6213
			for ( i=0, iLen=sort.length ; i<iLen ; i++ ) {
92645
		},
6214
				colIdx = sort[i].src;
6215
	
92646
	
6216
				$( _pluck( settings.aoData, 'anCells', colIdx ) )
92647
		flatten: function ()
6217
					.addClass( sortClass + (i<2 ? i+1 : 3) );
92648
		{
6218
			}
92649
			var a = [];
6219
		}
6220
	
92650
	
6221
		settings.aLastSort = sort;
92651
			return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
6222
	}
92652
		},
6223
	
92653
	
92654
		get: function ( idx )
92655
		{
92656
			return this[ idx ];
92657
		},
6224
	
92658
	
6225
	// Get the data to sort a column, be it from cache, fresh (populating the
92659
		join:    __arrayProto.join,
6226
	// cache), or from a sort formatter
6227
	function _fnSortData( settings, colIdx )
6228
	{
6229
		// Custom sorting function - provided by the sort data type
6230
		var column = settings.aoColumns[ colIdx ];
6231
		var customSort = DataTable.ext.order[ column.sSortDataType ];
6232
		var customData;
6233
	
92660
	
6234
		if ( customSort ) {
92661
		includes: function ( find ) {
6235
			customData = customSort.call( settings.oInstance, settings, colIdx,
92662
			return this.indexOf( find ) === -1 ? false : true;
6236
				_fnColumnIndexToVisible( settings, colIdx )
92663
		},
6237
			);
6238
		}
6239
	
92664
	
6240
		// Use / populate cache
92665
		indexOf: __arrayProto.indexOf,
6241
		var row, cellData;
6242
		var formatter = DataTable.ext.type.order[ column.sType+"-pre" ];
6243
		var data = settings.aoData;
6244
	
92666
	
6245
		for ( var rowIdx=0 ; rowIdx<data.length ; rowIdx++ ) {
92667
		iterator: function ( flatten, type, fn, alwaysNew ) {
6246
			// Sparse array
92668
			var
6247
			if (! data[rowIdx]) {
92669
				a = [], ret,
6248
				continue;
92670
				i, iLen, j, jen,
92671
				context = this.context,
92672
				rows, items, item,
92673
				selector = this.selector;
92674
	
92675
			// Argument shifting
92676
			if ( typeof flatten === 'string' ) {
92677
				alwaysNew = fn;
92678
				fn = type;
92679
				type = flatten;
92680
				flatten = false;
6249
			}
92681
			}
6250
	
92682
	
6251
			row = data[rowIdx];
92683
			for ( i=0, iLen=context.length ; i<iLen ; i++ ) {
92684
				var apiInst = new _Api( context[i] );
6252
	
92685
	
6253
			if ( ! row._aSortData ) {
92686
				if ( type === 'table' ) {
6254
				row._aSortData = [];
92687
					ret = fn.call( apiInst, context[i], i );
6255
			}
92688
92689
					if ( ret !== undefined ) {
92690
						a.push( ret );
92691
					}
92692
				}
92693
				else if ( type === 'columns' || type === 'rows' ) {
92694
					// this has same length as context - one entry for each table
92695
					ret = fn.call( apiInst, context[i], this[i], i );
6256
	
92696
	
6257
			if ( ! row._aSortData[colIdx] || customSort ) {
92697
					if ( ret !== undefined ) {
6258
				cellData = customSort ?
92698
						a.push( ret );
6259
					customData[rowIdx] : // If there was a custom sort function, use data from there
92699
					}
6260
					_fnGetCellData( settings, rowIdx, colIdx, 'sort' );
92700
				}
92701
				else if ( type === 'every' || type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {
92702
					// columns and rows share the same structure.
92703
					// 'this' is an array of column indexes for each context
92704
					items = this[i];
6261
	
92705
	
6262
				row._aSortData[ colIdx ] = formatter ?
92706
					if ( type === 'column-rows' ) {
6263
					formatter( cellData, settings ) :
92707
						rows = _selector_row_indexes( context[i], selector.opts );
6264
					cellData;
92708
					}
92709
	
92710
					for ( j=0, jen=items.length ; j<jen ; j++ ) {
92711
						item = items[j];
92712
	
92713
						if ( type === 'cell' ) {
92714
							ret = fn.call( apiInst, context[i], item.row, item.column, i, j );
92715
						}
92716
						else {
92717
							ret = fn.call( apiInst, context[i], item, i, j, rows );
92718
						}
92719
	
92720
						if ( ret !== undefined ) {
92721
							a.push( ret );
92722
						}
92723
					}
92724
				}
6265
			}
92725
			}
6266
		}
6267
	}
6268
	
92726
	
92727
			if ( a.length || alwaysNew ) {
92728
				var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );
92729
				var apiSelector = api.selector;
92730
				apiSelector.rows = selector.rows;
92731
				apiSelector.cols = selector.cols;
92732
				apiSelector.opts = selector.opts;
92733
				return api;
92734
			}
92735
			return this;
92736
		},
6269
	
92737
	
6270
	/**
92738
		lastIndexOf: __arrayProto.lastIndexOf,
6271
	 * State information for a table
6272
	 *
6273
	 * @param {*} settings
6274
	 * @returns State object
6275
	 */
6276
	function _fnSaveState ( settings )
6277
	{
6278
		if (settings._bLoadingState) {
6279
			return;
6280
		}
6281
	
92739
	
6282
		// Sort state saving uses [[idx, order]] structure.
92740
		length:  0,
6283
		var sorting = [];
6284
		_fnSortResolve(settings, sorting, settings.aaSorting );
6285
6286
		/* Store the interesting variables */
6287
		var columns = settings.aoColumns;
6288
		var state = {
6289
			time:    +new Date(),
6290
			start:   settings._iDisplayStart,
6291
			length:  settings._iDisplayLength,
6292
			order:   sorting.map(function (sort) {
6293
				// If a column name is available, use it
6294
				return columns[sort[0]] && columns[sort[0]].sName
6295
					? [ columns[sort[0]].sName, sort[1] ]
6296
					: sort.slice();
6297
			} ),
6298
			search:  $.extend({}, settings.oPreviousSearch),
6299
			columns: settings.aoColumns.map( function ( col, i ) {
6300
				return {
6301
					name: col.sName,
6302
					visible: col.bVisible,
6303
					search: $.extend({}, settings.aoPreSearchCols[i])
6304
				};
6305
			} )
6306
		};
6307
	
92741
	
6308
		settings.oSavedState = state;
92742
		map: function ( fn )
6309
		_fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] );
6310
		
6311
		if ( settings.oFeatures.bStateSave && !settings.bDestroying )
6312
		{
92743
		{
6313
			settings.fnStateSaveCallback.call( settings.oInstance, settings, state );
92744
			var a = __arrayProto.map.call( this, fn, this );
6314
		}	
6315
	}
6316
	
92745
	
92746
			return new _Api( this.context, a );
92747
		},
6317
	
92748
	
6318
	/**
92749
		pluck: function ( prop )
6319
	 * Attempt to load a saved table state
92750
		{
6320
	 *  @param {object} oSettings dataTables settings object
92751
			var fn = DataTable.util.get(prop);
6321
	 *  @param {object} oInit DataTables init object so we can override settings
6322
	 *  @param {function} callback Callback to execute when the state has been loaded
6323
	 *  @memberof DataTable#oApi
6324
	 */
6325
	function _fnLoadState ( settings, init, callback )
6326
	{
6327
		if ( ! settings.oFeatures.bStateSave ) {
6328
			callback();
6329
			return;
6330
		}
6331
	
92752
	
6332
		var loaded = function(state) {
92753
			return this.map( function ( el ) {
6333
			_fnImplementState(settings, state, callback);
92754
				return fn(el);
6334
		}
92755
			} );
92756
		},
6335
	
92757
	
6336
		var state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );
92758
		pop:     __arrayProto.pop,
6337
	
92759
	
6338
		if ( state !== undefined ) {
92760
		push:    __arrayProto.push,
6339
			_fnImplementState( settings, state, callback );
6340
		}
6341
		// otherwise, wait for the loaded callback to be executed
6342
	
92761
	
6343
		return true;
92762
		reduce: __arrayProto.reduce,
6344
	}
92763
	
92764
		reduceRight: __arrayProto.reduceRight,
92765
	
92766
		reverse: __arrayProto.reverse,
92767
	
92768
		// Object with rows, columns and opts
92769
		selector: null,
92770
	
92771
		shift:   __arrayProto.shift,
92772
	
92773
		slice: function () {
92774
			return new _Api( this.context, this );
92775
		},
92776
	
92777
		sort:    __arrayProto.sort,
6345
	
92778
	
6346
	function _fnImplementState ( settings, s, callback) {
92779
		splice:  __arrayProto.splice,
6347
		var i, iLen;
6348
		var columns = settings.aoColumns;
6349
		var currentNames = _pluck(settings.aoColumns, 'sName');
6350
6351
		settings._bLoadingState = true;
6352
	
92780
	
6353
		// When StateRestore was introduced the state could now be implemented at any time
92781
		toArray: function ()
6354
		// Not just initialisation. To do this an api instance is required in some places
92782
		{
6355
		var api = settings._bInitComplete ? new DataTable.Api(settings) : null;
92783
			return __arrayProto.slice.call( this );
92784
		},
6356
	
92785
	
6357
		if ( ! s || ! s.time ) {
92786
		to$: function ()
6358
			settings._bLoadingState = false;
92787
		{
6359
			callback();
92788
			return $( this );
6360
			return;
92789
		},
6361
		}
6362
	
92790
	
6363
		// Reject old data
92791
		toJQuery: function ()
6364
		var duration = settings.iStateDuration;
92792
		{
6365
		if ( duration > 0 && s.time < +new Date() - (duration*1000) ) {
92793
			return $( this );
6366
			settings._bLoadingState = false;
92794
		},
6367
			callback();
6368
			return;
6369
		}
6370
	
92795
	
6371
		// Allow custom and plug-in manipulation functions to alter the saved data set and
92796
		unique: function ()
6372
		// cancelling of loading by returning false
92797
		{
6373
		var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );
92798
			return new _Api( this.context, _unique(this.toArray()) );
6374
		if ( abStateLoad.indexOf(false) !== -1 ) {
92799
		},
6375
			settings._bLoadingState = false;
6376
			callback();
6377
			return;
6378
		}
6379
	
92800
	
6380
		// Store the saved state so it might be accessed at any time
92801
		unshift: __arrayProto.unshift
6381
		settings.oLoadedState = $.extend( true, {}, s );
92802
	} );
6382
	
92803
	
6383
		// This is needed for ColReorder, which has to happen first to allow all
6384
		// the stored indexes to be usable. It is not publicly documented.
6385
		_fnCallbackFire( settings, null, 'stateLoadInit', [settings, s], true );
6386
	
92804
	
6387
		// Page Length
92805
	function _api_scope( scope, fn, struct ) {
6388
		if ( s.length !== undefined ) {
92806
		return function () {
6389
			// If already initialised just set the value directly so that the select element is also updated
92807
			var ret = fn.apply( scope || this, arguments );
6390
			if (api) {
6391
				api.page.len(s.length)
6392
			}
6393
			else {
6394
				settings._iDisplayLength   = s.length;
6395
			}
6396
		}
6397
	
92808
	
6398
		// Restore key features
92809
			// Method extension
6399
		if ( s.start !== undefined ) {
92810
			_Api.extend( ret, ret, struct.methodExt );
6400
			if(api === null) {
92811
			return ret;
6401
				settings._iDisplayStart    = s.start;
92812
		};
6402
				settings.iInitDisplayStart = s.start;
92813
	}
6403
			}
92814
6404
			else {
92815
	function _api_find( src, name ) {
6405
				_fnPageChange(settings, s.start/settings._iDisplayLength);
92816
		for ( var i=0, iLen=src.length ; i<iLen ; i++ ) {
92817
			if ( src[i].name === name ) {
92818
				return src[i];
6406
			}
92819
			}
6407
		}
92820
		}
92821
		return null;
92822
	}
6408
	
92823
	
6409
		// Order
92824
	window.__apiStruct = __apiStruct;
6410
		if ( s.order !== undefined ) {
6411
			settings.aaSorting = [];
6412
			$.each( s.order, function ( i, col ) {
6413
				var set = [ col[0], col[1] ];
6414
6415
				// A column name was stored and should be used for restore
6416
				if (typeof col[0] === 'string') {
6417
					// Find the name from the current list of column names
6418
					var idx = currentNames.indexOf(col[0]);
6419
6420
					if (idx < 0) {
6421
						// If the column was not found ignore it and continue
6422
						return;
6423
					}
6424
6425
					set[0] = idx;
6426
				}
6427
				else if (set[0] >= columns.length) {
6428
					// If the column index is out of bounds ignore it and continue
6429
					return;
6430
				}
6431
92825
6432
				settings.aaSorting.push(set);
92826
	_Api.extend = function ( scope, obj, ext )
6433
			} );
92827
	{
92828
		// Only extend API instances and static properties of the API
92829
		if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {
92830
			return;
6434
		}
92831
		}
6435
	
92832
	
6436
		// Search
92833
		var
6437
		if ( s.search !== undefined ) {
92834
			i, iLen,
6438
			$.extend( settings.oPreviousSearch, s.search );
92835
			struct;
6439
		}
6440
	
92836
	
6441
		// Columns
92837
		for ( i=0, iLen=ext.length ; i<iLen ; i++ ) {
6442
		if ( s.columns ) {
92838
			struct = ext[i];
6443
			var set = s.columns;
6444
			var incoming = _pluck(s.columns, 'name');
6445
6446
			// Check if it is a 2.2 style state object with a `name` property for the columns, and if
6447
			// the name was defined. If so, then create a new array that will map the state object
6448
			// given, to the current columns (don't bother if they are already matching tho).
6449
			if (incoming.join('').length && incoming.join('') !== currentNames.join('')) {
6450
				set = [];
6451
6452
				// For each column, try to find the name in the incoming array
6453
				for (i=0 ; i<currentNames.length ; i++) {
6454
					if (currentNames[i] != '') {
6455
						var idx = incoming.indexOf(currentNames[i]);
6456
6457
						if (idx >= 0) {
6458
							set.push(s.columns[idx]);
6459
						}
6460
						else {
6461
							// No matching column name in the state's columns, so this might be a new
6462
							// column and thus can't have a state already.
6463
							set.push({});
6464
						}
6465
					}
6466
					else {
6467
						// If no name, but other columns did have a name, then there is no knowing
6468
						// where this one came from originally so it can't be restored.
6469
						set.push({});
6470
					}
6471
				}
6472
			}
6473
6474
			// If the number of columns to restore is different from current, then all bets are off.
6475
			if (set.length === columns.length) {
6476
				for ( i=0, iLen=set.length ; i<iLen ; i++ ) {
6477
					var col = set[i];
6478
	
92839
	
6479
					// Visibility
92840
			if (struct.name === '__proto__') {
6480
					if ( col.visible !== undefined ) {
92841
				continue;
6481
						// If the api is defined, the table has been initialised so we need to use it rather than internal settings
6482
						if (api) {
6483
							// Don't redraw the columns on every iteration of this loop, we will do this at the end instead
6484
							api.column(i).visible(col.visible, false);
6485
						}
6486
						else {
6487
							columns[i].bVisible = col.visible;
6488
						}
6489
					}
6490
6491
					// Search
6492
					if ( col.search !== undefined ) {
6493
						$.extend( settings.aoPreSearchCols[i], col.search );
6494
					}
6495
				}
6496
6497
				// If the api is defined then we need to adjust the columns once the visibility has been changed
6498
				if (api) {
6499
					api.one('draw', function () {
6500
						api.columns.adjust();
6501
					});
6502
				}
6503
			}
92842
			}
92843
	
92844
			// Value
92845
			obj[ struct.name ] = struct.type === 'function' ?
92846
				_api_scope( scope, struct.val, struct ) :
92847
				struct.type === 'object' ?
92848
					{} :
92849
					struct.val;
92850
	
92851
			obj[ struct.name ].__dt_wrapper = true;
92852
	
92853
			// Property extension
92854
			_Api.extend( scope, obj[ struct.name ], struct.propExt );
6504
		}
92855
		}
92856
	};
6505
	
92857
	
6506
		settings._bLoadingState = false;
92858
	//     [
6507
		_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );
92859
	//       {
6508
		callback();
92860
	//         name:      'data'                -- string   - Property name
6509
	}
92861
	//         val:       function () {},       -- function - Api method (or undefined if just an object
92862
	//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
92863
	//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
92864
	//       },
92865
	//       {
92866
	//         name:     'row'
92867
	//         val:       {},
92868
	//         methodExt: [ ... ],
92869
	//         propExt:   [
92870
	//           {
92871
	//             name:      'data'
92872
	//             val:       function () {},
92873
	//             methodExt: [ ... ],
92874
	//             propExt:   [ ... ]
92875
	//           },
92876
	//           ...
92877
	//         ]
92878
	//       }
92879
	//     ]
6510
	
92880
	
6511
	/**
92881
6512
	 * Log an error message
92882
	_Api.register = _api_register = function ( name, val )
6513
	 *  @param {object} settings dataTables settings object
6514
	 *  @param {int} level log error messages, or display them to the user
6515
	 *  @param {string} msg error message
6516
	 *  @param {int} tn Technical note id to get more information about the error.
6517
	 *  @memberof DataTable#oApi
6518
	 */
6519
	function _fnLog( settings, level, msg, tn )
6520
	{
92883
	{
6521
		msg = 'DataTables warning: '+
92884
		if ( Array.isArray( name ) ) {
6522
			(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;
92885
			for ( var j=0, jen=name.length ; j<jen ; j++ ) {
6523
	
92886
				_Api.register( name[j], val );
6524
		if ( tn ) {
92887
			}
6525
			msg += '. For more information about this error, please see '+
92888
			return;
6526
			'https://datatables.net/tn/'+tn;
6527
		}
92889
		}
6528
	
92890
	
6529
		if ( ! level  ) {
92891
		var
6530
			// Backwards compatibility pre 1.10
92892
			i, iLen,
6531
			var ext = DataTable.ext;
92893
			heir = name.split('.'),
6532
			var type = ext.sErrMode || ext.errMode;
92894
			struct = __apiStruct,
92895
			key, method;
6533
	
92896
	
6534
			if ( settings ) {
92897
		for ( i=0, iLen=heir.length ; i<iLen ; i++ ) {
6535
				_fnCallbackFire( settings, null, 'dt-error', [ settings, tn, msg ], true );
92898
			method = heir[i].indexOf('()') !== -1;
6536
			}
92899
			key = method ?
92900
				heir[i].replace('()', '') :
92901
				heir[i];
6537
	
92902
	
6538
			if ( type == 'alert' ) {
92903
			var src = _api_find( struct, key );
6539
				alert( msg );
92904
			if ( ! src ) {
92905
				src = {
92906
					name:      key,
92907
					val:       {},
92908
					methodExt: [],
92909
					propExt:   [],
92910
					type:      'object'
92911
				};
92912
				struct.push( src );
6540
			}
92913
			}
6541
			else if ( type == 'throw' ) {
92914
6542
				throw new Error(msg);
92915
			if ( i === iLen-1 ) {
92916
				src.val = val;
92917
				src.type = typeof val === 'function' ?
92918
					'function' :
92919
					$.isPlainObject( val ) ?
92920
						'object' :
92921
						'other';
6543
			}
92922
			}
6544
			else if ( typeof type == 'function' ) {
92923
			else {
6545
				type( settings, tn, msg );
92924
				struct = method ?
92925
					src.methodExt :
92926
					src.propExt;
6546
			}
92927
			}
6547
		}
92928
		}
6548
		else if ( window.console && console.log ) {
92929
	};
6549
			console.log( msg );
92930
	
6550
		}
92931
	_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {
6551
	}
92932
		_Api.register( pluralName, val );
92933
	
92934
		_Api.register( singularName, function () {
92935
			var ret = val.apply( this, arguments );
92936
92937
			if ( ret === this ) {
92938
				// Returned item is the API instance that was passed in, return it
92939
				return this;
92940
			}
92941
			else if ( ret instanceof _Api ) {
92942
				// New API instance returned, want the value from the first item
92943
				// in the returned array for the singular result.
92944
				return ret.length ?
92945
					Array.isArray( ret[0] ) ?
92946
						new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
92947
						ret[0] :
92948
					undefined;
92949
			}
92950
	
92951
			// Non-API return - just fire it back
92952
			return ret;
92953
		} );
92954
	};
6552
	
92955
	
6553
	
92956
	
6554
	/**
92957
	/**
6555
	 * See if a property is defined on one object, if so assign it to the other object
92958
	 * Selector for HTML tables. Apply the given selector to the give array of
6556
	 *  @param {object} ret target object
92959
	 * DataTables settings objects.
6557
	 *  @param {object} src source object
92960
	 *
6558
	 *  @param {string} name property
92961
	 * @param {string|integer} [selector] jQuery selector string or integer
6559
	 *  @param {string} [mappedName] name to map too - optional, name used if not given
92962
	 * @param  {array} Array of DataTables settings objects to be filtered
6560
	 *  @memberof DataTable#oApi
92963
	 * @return {array}
92964
	 * @ignore
6561
	 */
92965
	 */
6562
	function _fnMap( ret, src, name, mappedName )
92966
	var __table_selector = function ( selector, a )
6563
	{
92967
	{
6564
		if ( Array.isArray( name ) ) {
92968
		if ( Array.isArray(selector) ) {
6565
			$.each( name, function (i, val) {
92969
			var result = [];
6566
				if ( Array.isArray( val ) ) {
6567
					_fnMap( ret, src, val[0], val[1] );
6568
				}
6569
				else {
6570
					_fnMap( ret, src, val );
6571
				}
6572
			} );
6573
	
92970
	
6574
			return;
92971
			selector.forEach(function (sel) {
6575
		}
92972
				var inner = __table_selector(sel, a);
6576
	
92973
	
6577
		if ( mappedName === undefined ) {
92974
				_fnArrayApply(result, inner);
6578
			mappedName = name;
92975
			});
92976
92977
			return result.filter( function (item) {
92978
				return item;
92979
			});
6579
		}
92980
		}
6580
	
92981
	
6581
		if ( src[name] !== undefined ) {
92982
		// Integer is used to pick out a table by index
6582
			ret[mappedName] = src[name];
92983
		if ( typeof selector === 'number' ) {
92984
			return [ a[ selector ] ];
6583
		}
92985
		}
6584
	}
92986
92987
		// Perform a jQuery selector on the table nodes
92988
		var nodes = a.map( function (el) {
92989
			return el.nTable;
92990
		} );
92991
92992
		return $(nodes)
92993
			.filter( selector )
92994
			.map( function () {
92995
				// Need to translate back from the table node to the settings
92996
				var idx = nodes.indexOf(this);
92997
				return a[ idx ];
92998
			} )
92999
			.toArray();
93000
	};
93001
6585
	
93002
	
6586
	
93003
	
6587
	/**
93004
	/**
6588
	 * Extend objects - very similar to jQuery.extend, but deep copy objects, and
93005
	 * Context selector for the API's context (i.e. the tables the API instance
6589
	 * shallow copy arrays. The reason we need to do this, is that we don't want to
93006
	 * refers to.
6590
	 * deep copy array init values (such as aaSorting) since the dev wouldn't be
93007
	 *
6591
	 * able to override them, but we do want to deep copy arrays.
93008
	 * @name    DataTable.Api#tables
6592
	 *  @param {object} out Object to extend
93009
	 * @param {string|integer} [selector] Selector to pick which tables the iterator
6593
	 *  @param {object} extender Object from which the properties will be applied to
93010
	 *   should operate on. If not given, all tables in the current context are
6594
	 *      out
93011
	 *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to
6595
	 *  @param {boolean} breakRefs If true, then arrays will be sliced to take an
93012
	 *   select multiple tables or as an integer to select a single table.
6596
	 *      independent copy with the exception of the `data` or `aaData` parameters
93013
	 * @returns {DataTable.Api} Returns a new API instance if a selector is given.
6597
	 *      if they are present. This is so you can pass in a collection to
6598
	 *      DataTables and have that used as your data source without breaking the
6599
	 *      references
6600
	 *  @returns {object} out Reference, just for convenience - out === the return.
6601
	 *  @memberof DataTable#oApi
6602
	 *  @todo This doesn't take account of arrays inside the deep copied objects.
6603
	 */
93014
	 */
6604
	function _fnExtend( out, extender, breakRefs )
93015
	_api_register( 'tables()', function ( selector ) {
6605
	{
93016
		// A new instance is created if there was a selector specified
6606
		var val;
93017
		return selector !== undefined && selector !== null ?
93018
			new _Api( __table_selector( selector, this.context ) ) :
93019
			this;
93020
	} );
6607
	
93021
	
6608
		for ( var prop in extender ) {
6609
			if ( Object.prototype.hasOwnProperty.call(extender, prop) ) {
6610
				val = extender[prop];
6611
	
93022
	
6612
				if ( $.isPlainObject( val ) ) {
93023
	_api_register( 'table()', function ( selector ) {
6613
					if ( ! $.isPlainObject( out[prop] ) ) {
93024
		var tables = this.tables( selector );
6614
						out[prop] = {};
93025
		var ctx = tables.context;
6615
					}
93026
	
6616
					$.extend( true, out[prop], val );
93027
		// Truncate to the first matched table
6617
				}
93028
		return ctx.length ?
6618
				else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && Array.isArray(val) ) {
93029
			new _Api( ctx[0] ) :
6619
					out[prop] = val.slice();
93030
			tables;
6620
				}
93031
	} );
6621
				else {
93032
	
6622
					out[prop] = val;
93033
	// Common methods, combined to reduce size
6623
				}
93034
	[
93035
		['nodes', 'node', 'nTable'],
93036
		['body', 'body', 'nTBody'],
93037
		['header', 'header', 'nTHead'],
93038
		['footer', 'footer', 'nTFoot'],
93039
	].forEach(function (item) {
93040
		_api_registerPlural(
93041
			'tables().' + item[0] + '()',
93042
			'table().' + item[1] + '()' ,
93043
			function () {
93044
				return this.iterator( 'table', function ( ctx ) {
93045
					return ctx[item[2]];
93046
				}, 1 );
6624
			}
93047
			}
6625
		}
93048
		);
93049
	});
6626
	
93050
	
6627
		return out;
93051
	// Structure methods
6628
	}
93052
	[
93053
		['header', 'aoHeader'],
93054
		['footer', 'aoFooter'],
93055
	].forEach(function (item) {
93056
		_api_register( 'table().' + item[0] + '.structure()' , function (selector) {
93057
			var indexes = this.columns(selector).indexes().flatten().toArray();
93058
			var ctx = this.context[0];
93059
			var structure = _fnHeaderLayout(ctx, ctx[item[1]], indexes);
6629
	
93060
	
93061
			// The structure is in column index order - but from this method we want the return to be
93062
			// in the columns() selector API order. In order to do that we need to map from one form
93063
			// to the other
93064
			var orderedIndexes = indexes.slice().sort(function (a, b) {
93065
				return a - b;
93066
			});
6630
	
93067
	
6631
	/**
93068
			return structure.map(function (row) {
6632
	 * Bind an event handler to allow a click or return key to activate the callback.
93069
				return indexes.map(function (colIdx) {
6633
	 * This is good for accessibility since a return on the keyboard will have the
93070
					return row[orderedIndexes.indexOf(colIdx)];
6634
	 * same effect as a click, if the element has focus.
93071
				});
6635
	 *  @param {element} n Element to bind the action to
93072
			});
6636
	 *  @param {object|string} selector Selector (for delegated events) or data object
93073
		});
6637
	 *   to pass to the triggered function
93074
	});
6638
	 *  @param {function} fn Callback function for when the event is triggered
93075
	
6639
	 *  @memberof DataTable#oApi
93076
	
6640
	 */
93077
	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
6641
	function _fnBindAction( n, selector, fn )
93078
		return this.iterator( 'table', function ( ctx ) {
6642
	{
93079
			return ctx.nTableWrapper;
6643
		$(n)
93080
		}, 1 );
6644
			.on( 'click.DT', selector, function (e) {
93081
	} );
6645
				fn(e);
6646
			} )
6647
			.on( 'keypress.DT', selector, function (e){
6648
				if ( e.which === 13 ) {
6649
					e.preventDefault();
6650
					fn(e);
6651
				}
6652
			} )
6653
			.on( 'selectstart.DT', selector, function () {
6654
				// Don't want a double click resulting in text selection
6655
				return false;
6656
			} );
6657
	}
6658
	
93082
	
93083
	_api_register( 'tables().every()', function ( fn ) {
93084
		var that = this;
6659
	
93085
	
6660
	/**
93086
		return this.iterator('table', function (s, i) {
6661
	 * Register a callback function. Easily allows a callback function to be added to
93087
			fn.call(that.table(i), i);
6662
	 * an array store of callback functions that can then all be called together.
93088
		});
6663
	 *  @param {object} settings dataTables settings object
93089
	});
6664
	 *  @param {string} store Name of the array storage for the callbacks in oSettings
6665
	 *  @param {function} fn Function to be called back
6666
	 *  @memberof DataTable#oApi
6667
	 */
6668
	function _fnCallbackReg( settings, store, fn )
6669
	{
6670
		if ( fn ) {
6671
			settings[store].push(fn);
6672
		}
6673
	}
6674
	
93090
	
93091
	_api_register( 'caption()', function ( value, side ) {
93092
		var context = this.context;
6675
	
93093
	
6676
	/**
93094
		// Getter - return existing node's content
6677
	 * Fire callback functions and trigger events. Note that the loop over the
93095
		if ( value === undefined ) {
6678
	 * callback array store is done backwards! Further note that you do not want to
93096
			var caption = context[0].captionNode;
6679
	 * fire off triggers in time sensitive applications (for example cell creation)
6680
	 * as its slow.
6681
	 *  @param {object} settings dataTables settings object
6682
	 *  @param {string} callbackArr Name of the array storage for the callbacks in
6683
	 *      oSettings
6684
	 *  @param {string} eventName Name of the jQuery custom event to trigger. If
6685
	 *      null no trigger is fired
6686
	 *  @param {array} args Array of arguments to pass to the callback function /
6687
	 *      trigger
6688
	 *  @param {boolean} [bubbles] True if the event should bubble
6689
	 *  @memberof DataTable#oApi
6690
	 */
6691
	function _fnCallbackFire( settings, callbackArr, eventName, args, bubbles )
6692
	{
6693
		var ret = [];
6694
	
93097
	
6695
		if ( callbackArr ) {
93098
			return caption && context.length ?
6696
			ret = settings[callbackArr].slice().reverse().map( function (val) {
93099
				caption.innerHTML :
6697
				return val.apply( settings.oInstance, args );
93100
				null;
6698
			} );
6699
		}
93101
		}
6700
	
93102
	
6701
		if ( eventName !== null) {
93103
		return this.iterator( 'table', function ( ctx ) {
6702
			var e = $.Event( eventName+'.dt' );
93104
			var table = $(ctx.nTable);
6703
			var table = $(settings.nTable);
93105
			var caption = $(ctx.captionNode);
6704
			
93106
			var container = $(ctx.nTableWrapper);
6705
			// Expose the DataTables API on the event object for easy access
6706
			e.dt = settings.api;
6707
	
93107
	
6708
			table[bubbles ?  'trigger' : 'triggerHandler']( e, args );
93108
			// Create the node if it doesn't exist yet
93109
			if ( ! caption.length ) {
93110
				caption = $('<caption/>').html( value );
93111
				ctx.captionNode = caption[0];
6709
	
93112
	
6710
			// If not yet attached to the document, trigger the event
93113
				// If side isn't set, we need to insert into the document to let the
6711
			// on the body directly to sort of simulate the bubble
93114
				// CSS decide so we can read it back, otherwise there is no way to
6712
			if (bubbles && table.parents('body').length === 0) {
93115
				// know if the CSS would put it top or bottom for scrolling
6713
				$('body').trigger( e, args );
93116
				if (! side) {
93117
					table.prepend(caption);
93118
	
93119
					side = caption.css('caption-side');
93120
				}
6714
			}
93121
			}
6715
	
93122
	
6716
			ret.push( e.result );
93123
			caption.html( value );
6717
		}
6718
	
93124
	
6719
		return ret;
93125
			if ( side ) {
6720
	}
93126
				caption.css( 'caption-side', side );
93127
				caption[0]._captionSide = side;
93128
			}
6721
	
93129
	
93130
			if (container.find('div.dataTables_scroll').length) {
93131
				var selector = (side === 'top' ? 'Head' : 'Foot');
93132
93133
				container.find('div.dataTables_scroll'+ selector +' table').prepend(caption);
93134
			}
93135
			else {
93136
				table.prepend(caption);
93137
			}
93138
		}, 1 );
93139
	} );
6722
	
93140
	
6723
	function _fnLengthOverflow ( settings )
93141
	_api_register( 'caption.node()', function () {
6724
	{
93142
		var ctx = this.context;
6725
		var
6726
			start = settings._iDisplayStart,
6727
			end = settings.fnDisplayEnd(),
6728
			len = settings._iDisplayLength;
6729
	
93143
	
6730
		/* If we have space to show extra rows (backing up from the end point - then do so */
93144
		return ctx.length ? ctx[0].captionNode : null;
6731
		if ( start >= end )
93145
	} );
6732
		{
6733
			start = end - len;
6734
		}
6735
	
93146
	
6736
		// Keep the start record on the current page
6737
		start -= (start % len);
6738
	
93147
	
6739
		if ( len === -1 || start < 0 )
93148
	/**
6740
		{
93149
	 * Redraw the tables in the current context.
6741
			start = 0;
93150
	 */
6742
		}
93151
	_api_register( 'draw()', function ( paging ) {
93152
		return this.iterator( 'table', function ( settings ) {
93153
			if ( paging === 'page' ) {
93154
				_fnDraw( settings );
93155
			}
93156
			else {
93157
				if ( typeof paging === 'string' ) {
93158
					paging = paging === 'full-hold' ?
93159
						false :
93160
						true;
93161
				}
93162
93163
				_fnReDraw( settings, paging===false );
93164
			}
93165
		} );
93166
	} );
93167
6743
	
93168
	
6744
		settings._iDisplayStart = start;
6745
	}
6746
	
93169
	
93170
	/**
93171
	 * Get the current page index.
93172
	 *
93173
	 * @return {integer} Current page index (zero based)
93174
	 *//**
93175
	 * Set the current page.
93176
	 *
93177
	 * Note that if you attempt to show a page which does not exist, DataTables will
93178
	 * not throw an error, but rather reset the paging.
93179
	 *
93180
	 * @param {integer|string} action The paging action to take. This can be one of:
93181
	 *  * `integer` - The page index to jump to
93182
	 *  * `string` - An action to take:
93183
	 *    * `first` - Jump to first page.
93184
	 *    * `next` - Jump to the next page
93185
	 *    * `previous` - Jump to previous page
93186
	 *    * `last` - Jump to the last page.
93187
	 * @returns {DataTables.Api} this
93188
	 */
93189
	_api_register( 'page()', function ( action ) {
93190
		if ( action === undefined ) {
93191
			return this.page.info().page; // not an expensive call
93192
		}
93193
93194
		// else, have an action to take on all tables
93195
		return this.iterator( 'table', function ( settings ) {
93196
			_fnPageChange( settings, action );
93197
		} );
93198
	} );
93199
6747
	
93200
	
6748
	function _fnRenderer( settings, type )
93201
	/**
6749
	{
93202
	 * Paging information for the first table in the current context.
6750
		var renderer = settings.renderer;
93203
	 *
6751
		var host = DataTable.ext.renderer[type];
93204
	 * If you require paging information for another table, use the `table()` method
93205
	 * with a suitable selector.
93206
	 *
93207
	 * @return {object} Object with the following properties set:
93208
	 *  * `page` - Current page index (zero based - i.e. the first page is `0`)
93209
	 *  * `pages` - Total number of pages
93210
	 *  * `start` - Display index for the first record shown on the current page
93211
	 *  * `end` - Display index for the last record shown on the current page
93212
	 *  * `length` - Display length (number of records). Note that generally `start
93213
	 *    + length = end`, but this is not always true, for example if there are
93214
	 *    only 2 records to show on the final page, with a length of 10.
93215
	 *  * `recordsTotal` - Full data set length
93216
	 *  * `recordsDisplay` - Data set length once the current filtering criterion
93217
	 *    are applied.
93218
	 */
93219
	_api_register( 'page.info()', function () {
93220
		if ( this.context.length === 0 ) {
93221
			return undefined;
93222
		}
93223
93224
		var
93225
			settings   = this.context[0],
93226
			start      = settings._iDisplayStart,
93227
			len        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,
93228
			visRecords = settings.fnRecordsDisplay(),
93229
			all        = len === -1;
6752
	
93230
	
6753
		if ( $.isPlainObject( renderer ) && renderer[type] ) {
93231
		return {
6754
			// Specific renderer for this type. If available use it, otherwise use
93232
			"page":           all ? 0 : Math.floor( start / len ),
6755
			// the default.
93233
			"pages":          all ? 1 : Math.ceil( visRecords / len ),
6756
			return host[renderer[type]] || host._;
93234
			"start":          start,
93235
			"end":            settings.fnDisplayEnd(),
93236
			"length":         len,
93237
			"recordsTotal":   settings.fnRecordsTotal(),
93238
			"recordsDisplay": visRecords,
93239
			"serverSide":     _fnDataSource( settings ) === 'ssp'
93240
		};
93241
	} );
93242
93243
	
93244
	/**
93245
	 * Get the current page length.
93246
	 *
93247
	 * @return {integer} Current page length. Note `-1` indicates that all records
93248
	 *   are to be shown.
93249
	 *//**
93250
	 * Set the current page length.
93251
	 *
93252
	 * @param {integer} Page length to set. Use `-1` to show all records.
93253
	 * @returns {DataTables.Api} this
93254
	 */
93255
	_api_register( 'page.len()', function ( len ) {
93256
		// Note that we can't call this function 'length()' because `length`
93257
		// is a JavaScript property of functions which defines how many arguments
93258
		// the function expects.
93259
		if ( len === undefined ) {
93260
			return this.context.length !== 0 ?
93261
				this.context[0]._iDisplayLength :
93262
				undefined;
93263
		}
93264
93265
		// else, set the page length
93266
		return this.iterator( 'table', function ( settings ) {
93267
			_fnLengthChange( settings, len );
93268
		} );
93269
	} );
93270
93271
93272
93273
	var __reload = function ( settings, holdPosition, callback ) {
93274
		// Use the draw event to trigger a callback
93275
		if ( callback ) {
93276
			var api = new _Api( settings );
93277
93278
			api.one( 'draw', function () {
93279
				callback( api.ajax.json() );
93280
			} );
6757
		}
93281
		}
6758
		else if ( typeof renderer === 'string' ) {
93282
6759
			// Common renderer - if there is one available for this type use it,
93283
		if ( _fnDataSource( settings ) == 'ssp' ) {
6760
			// otherwise use the default
93284
			_fnReDraw( settings, holdPosition );
6761
			return host[renderer] || host._;
6762
		}
93285
		}
6763
	
93286
		else {
6764
		// Use the default
93287
			_fnProcessingDisplay( settings, true );
6765
		return host._;
93288
6766
	}
93289
			// Cancel an existing request
6767
	
93290
			var xhr = settings.jqXHR;
6768
	
93291
			if ( xhr && xhr.readyState !== 4 ) {
93292
				xhr.abort();
93293
			}
93294
93295
			// Trigger xhr
93296
			_fnBuildAjax( settings, {}, function( json ) {
93297
				_fnClearTable( settings );
93298
93299
				var data = _fnAjaxDataSrc( settings, json );
93300
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
93301
					_fnAddData( settings, data[i] );
93302
				}
93303
93304
				_fnReDraw( settings, holdPosition );
93305
				_fnInitComplete( settings );
93306
				_fnProcessingDisplay( settings, false );
93307
			} );
93308
		}
93309
	};
93310
93311
6769
	/**
93312
	/**
6770
	 * Detect the data source being used for the table. Used to simplify the code
93313
	 * Get the JSON response from the last Ajax request that DataTables made to the
6771
	 * a little (ajax) and to make it compress a little smaller.
93314
	 * server. Note that this returns the JSON from the first table in the current
93315
	 * context.
6772
	 *
93316
	 *
6773
	 *  @param {object} settings dataTables settings object
93317
	 * @return {object} JSON received from the server.
6774
	 *  @returns {string} Data source
6775
	 *  @memberof DataTable#oApi
6776
	 */
93318
	 */
6777
	function _fnDataSource ( settings )
93319
	_api_register( 'ajax.json()', function () {
6778
	{
93320
		var ctx = this.context;
6779
		if ( settings.oFeatures.bServerSide ) {
93321
6780
			return 'ssp';
93322
		if ( ctx.length > 0 ) {
93323
			return ctx[0].json;
6781
		}
93324
		}
6782
		else if ( settings.ajax ) {
93325
6783
			return 'ajax';
93326
		// else return undefined;
93327
	} );
93328
93329
93330
	/**
93331
	 * Get the data submitted in the last Ajax request
93332
	 */
93333
	_api_register( 'ajax.params()', function () {
93334
		var ctx = this.context;
93335
93336
		if ( ctx.length > 0 ) {
93337
			return ctx[0].oAjaxData;
6784
		}
93338
		}
6785
		return 'dom';
93339
6786
	}
93340
		// else return undefined;
93341
	} );
93342
	
6787
	
93343
	
6788
	/**
93344
	/**
6789
	 * Common replacement for language strings
93345
	 * Reload tables from the Ajax data source. Note that this function will
93346
	 * automatically re-draw the table when the remote data has been loaded.
6790
	 *
93347
	 *
6791
	 * @param {*} settings DT settings object
93348
	 * @param {boolean} [reset=true] Reset (default) or hold the current paging
6792
	 * @param {*} str String with values to replace
93349
	 *   position. A full re-sort and re-filter is performed when this method is
6793
	 * @param {*} entries Plural number for _ENTRIES_ - can be undefined
93350
	 *   called, which is why the pagination reset is the default action.
6794
	 * @returns String
93351
	 * @returns {DataTables.Api} this
6795
	 */
93352
	 */
6796
	function _fnMacros ( settings, str, entries )
93353
	_api_register( 'ajax.reload()', function ( callback, resetPaging ) {
6797
	{
93354
		return this.iterator( 'table', function (settings) {
6798
		// When infinite scrolling, we are always starting at 1. _iDisplayStart is
93355
			__reload( settings, resetPaging===false, callback );
6799
		// used only internally
93356
		} );
6800
		var
93357
	} );
6801
			formatter  = settings.fnFormatNumber,
6802
			start      = settings._iDisplayStart+1,
6803
			len        = settings._iDisplayLength,
6804
			vis        = settings.fnRecordsDisplay(),
6805
			max        = settings.fnRecordsTotal(),
6806
			all        = len === -1;
6807
	
93358
	
6808
		return str.
6809
			replace(/_START_/g, formatter.call( settings, start ) ).
6810
			replace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).
6811
			replace(/_MAX_/g,   formatter.call( settings, max ) ).
6812
			replace(/_TOTAL_/g, formatter.call( settings, vis ) ).
6813
			replace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).
6814
			replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ).
6815
			replace(/_ENTRIES_/g, settings.api.i18n('entries', '', entries) ).
6816
			replace(/_ENTRIES-MAX_/g, settings.api.i18n('entries', '', max) ).
6817
			replace(/_ENTRIES-TOTAL_/g, settings.api.i18n('entries', '', vis) );
6818
	}
6819
	
93359
	
6820
	/**
93360
	/**
6821
	 * Add elements to an array as quickly as possible, but stack safe.
93361
	 * Get the current Ajax URL. Note that this returns the URL from the first
93362
	 * table in the current context.
6822
	 *
93363
	 *
6823
	 * @param {*} arr Array to add the data to
93364
	 * @return {string} Current Ajax source URL
6824
	 * @param {*} data Data array that is to be added
93365
	 *//**
6825
	 * @returns
93366
	 * Set the Ajax URL. Note that this will set the URL for all tables in the
93367
	 * current context.
93368
	 *
93369
	 * @param {string} url URL to set.
93370
	 * @returns {DataTables.Api} this
6826
	 */
93371
	 */
6827
	function _fnArrayApply(arr, data) {
93372
	_api_register( 'ajax.url()', function ( url ) {
6828
		if (! data) {
93373
		var ctx = this.context;
6829
			return;
6830
		}
6831
93374
6832
		// Chrome can throw a max stack error if apply is called with
93375
		if ( url === undefined ) {
6833
		// too large an array, but apply is faster.
93376
			// get
6834
		if (data.length < 10000) {
93377
			if ( ctx.length === 0 ) {
6835
			arr.push.apply(arr, data);
93378
				return undefined;
6836
		}
6837
		else {
6838
			for (i=0 ; i<data.length ; i++) {
6839
				arr.push(data[i]);
6840
			}
93379
			}
93380
			ctx = ctx[0];
93381
93382
			return $.isPlainObject( ctx.ajax ) ?
93383
				ctx.ajax.url :
93384
				ctx.ajax;
6841
		}
93385
		}
6842
	}
6843
93386
93387
		// set
93388
		return this.iterator( 'table', function ( settings ) {
93389
			if ( $.isPlainObject( settings.ajax ) ) {
93390
				settings.ajax.url = url;
93391
			}
93392
			else {
93393
				settings.ajax = url;
93394
			}
93395
		} );
93396
	} );
93397
	
93398
	
6844
	/**
93399
	/**
6845
	 * Add one or more listeners to the table
93400
	 * Load data from the newly set Ajax URL. Note that this method is only
93401
	 * available when `ajax.url()` is used to set a URL. Additionally, this method
93402
	 * has the same effect as calling `ajax.reload()` but is provided for
93403
	 * convenience when setting a new URL. Like `ajax.reload()` it will
93404
	 * automatically redraw the table once the remote data has been loaded.
6846
	 *
93405
	 *
6847
	 * @param {*} that JQ for the table
93406
	 * @returns {DataTables.Api} this
6848
	 * @param {*} name Event name
6849
	 * @param {*} src Listener(s)
6850
	 */
93407
	 */
6851
	function _fnListener(that, name, src) {
93408
	_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
6852
		if (!Array.isArray(src)) {
93409
		// Same as a reload, but makes sense to present it for easy access after a
6853
			src = [src];
93410
		// url change
93411
		return this.iterator( 'table', function ( ctx ) {
93412
			__reload( ctx, resetPaging===false, callback );
93413
		} );
93414
	} );
93415
93416
93417
93418
93419
	var _selector_run = function ( type, selector, selectFn, settings, opts )
93420
	{
93421
		var
93422
			out = [], res,
93423
			i, iLen,
93424
			selectorType = typeof selector;
93425
93426
		// Can't just check for isArray here, as an API or jQuery instance might be
93427
		// given with their array like look
93428
		if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
93429
			selector = [ selector ];
93430
		}
93431
93432
		for ( i=0, iLen=selector.length ; i<iLen ; i++ ) {
93433
			res = selectFn( typeof selector[i] === 'string' ? selector[i].trim() : selector[i] );
93434
93435
			// Remove empty items
93436
			res = res.filter( function (item) {
93437
				return item !== null && item !== undefined;
93438
			});
93439
93440
			if ( res && res.length ) {
93441
				out = out.concat( res );
93442
			}
93443
		}
93444
93445
		// selector extensions
93446
		var ext = _ext.selector[ type ];
93447
		if ( ext.length ) {
93448
			for ( i=0, iLen=ext.length ; i<iLen ; i++ ) {
93449
				out = ext[i]( settings, opts, out );
93450
			}
93451
		}
93452
93453
		return _unique( out );
93454
	};
93455
93456
93457
	var _selector_opts = function ( opts )
93458
	{
93459
		if ( ! opts ) {
93460
			opts = {};
93461
		}
93462
93463
		// Backwards compatibility for 1.9- which used the terminology filter rather
93464
		// than search
93465
		if ( opts.filter && opts.search === undefined ) {
93466
			opts.search = opts.filter;
93467
		}
93468
93469
		return $.extend( {
93470
			columnOrder: 'implied',
93471
			search: 'none',
93472
			order: 'current',
93473
			page: 'all'
93474
		}, opts );
93475
	};
93476
93477
93478
	// Reduce the API instance to the first item found
93479
	var _selector_first = function ( old )
93480
	{
93481
		var inst = new _Api(old.context[0]);
93482
	
93483
		// Use a push rather than passing to the constructor, since it will
93484
		// merge arrays down automatically, which isn't what is wanted here
93485
		if (old.length) {
93486
			inst.push( old[0] );
6854
		}
93487
		}
6855
93488
6856
		for (i=0 ; i<src.length ; i++) {
93489
		inst.selector = old.selector;
6857
			that.on(name + '.dt', src[i]);
6858
		}
6859
	}
6860
93490
6861
	/**
93491
		// Limit to a single row / column / cell
6862
	 * Escape HTML entities in strings, in an object
93492
		if (inst.length && inst[0].length > 1) {
6863
	 */
93493
			inst[0].splice(1);
6864
	function _fnEscapeObject(obj) {
6865
		if (DataTable.ext.escape.attributes) {
6866
			$.each(obj, function (key, val) {
6867
				obj[key] = _escapeHtml(val);
6868
			})
6869
		}
93494
		}
6870
93495
6871
		return obj;
93496
		return inst;
6872
	}
93497
	};
6873
93498
6874
	
93499
6875
	
93500
	var _selector_row_indexes = function ( settings, opts )
6876
	/**
6877
	 * Computed structure of the DataTables API, defined by the options passed to
6878
	 * `DataTable.Api.register()` when building the API.
6879
	 *
6880
	 * The structure is built in order to speed creation and extension of the Api
6881
	 * objects since the extensions are effectively pre-parsed.
6882
	 *
6883
	 * The array is an array of objects with the following structure, where this
6884
	 * base array represents the Api prototype base:
6885
	 *
6886
	 *     [
6887
	 *       {
6888
	 *         name:      'data'                -- string   - Property name
6889
	 *         val:       function () {},       -- function - Api method (or undefined if just an object
6890
	 *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
6891
	 *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
6892
	 *       },
6893
	 *       {
6894
	 *         name:     'row'
6895
	 *         val:       {},
6896
	 *         methodExt: [ ... ],
6897
	 *         propExt:   [
6898
	 *           {
6899
	 *             name:      'data'
6900
	 *             val:       function () {},
6901
	 *             methodExt: [ ... ],
6902
	 *             propExt:   [ ... ]
6903
	 *           },
6904
	 *           ...
6905
	 *         ]
6906
	 *       }
6907
	 *     ]
6908
	 *
6909
	 * @type {Array}
6910
	 * @ignore
6911
	 */
6912
	var __apiStruct = [];
6913
	
6914
	
6915
	/**
6916
	 * `Array.prototype` reference.
6917
	 *
6918
	 * @type object
6919
	 * @ignore
6920
	 */
6921
	var __arrayProto = Array.prototype;
6922
	
6923
	
6924
	/**
6925
	 * Abstraction for `context` parameter of the `Api` constructor to allow it to
6926
	 * take several different forms for ease of use.
6927
	 *
6928
	 * Each of the input parameter types will be converted to a DataTables settings
6929
	 * object where possible.
6930
	 *
6931
	 * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one
6932
	 *   of:
6933
	 *
6934
	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
6935
	 *     with be found and used.
6936
	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
6937
	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
6938
	 *   * `object` - DataTables settings object
6939
	 *   * `DataTables.Api` - API instance
6940
	 * @return {array|null} Matching DataTables settings objects. `null` or
6941
	 *   `undefined` is returned if no matching DataTable is found.
6942
	 * @ignore
6943
	 */
6944
	var _toSettings = function ( mixed )
6945
	{
93501
	{
6946
		var idx, jq;
93502
		var
6947
		var settings = DataTable.settings;
93503
			i, iLen, tmp, a=[],
6948
		var tables = _pluck(settings, 'nTable');
93504
			displayFiltered = settings.aiDisplay,
6949
	
93505
			displayMaster = settings.aiDisplayMaster;
6950
		if ( ! mixed ) {
93506
6951
			return [];
93507
		var
6952
		}
93508
			search = opts.search,  // none, applied, removed
6953
		else if ( mixed.nTable && mixed.oFeatures ) {
93509
			order  = opts.order,   // applied, current, index (original - compatibility with 1.9)
6954
			// DataTables settings object
93510
			page   = opts.page;    // all, current
6955
			return [ mixed ];
93511
6956
		}
93512
		if ( _fnDataSource( settings ) == 'ssp' ) {
6957
		else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {
93513
			// In server-side processing mode, most options are irrelevant since
6958
			// Table node
93514
			// rows not shown don't exist and the index order is the applied order
6959
			idx = tables.indexOf(mixed);
93515
			// Removed is a special case - for consistency just return an empty
6960
			return idx !== -1 ? [ settings[idx] ] : null;
93516
			// array
93517
			return search === 'removed' ?
93518
				[] :
93519
				_range( 0, displayMaster.length );
6961
		}
93520
		}
6962
		else if ( mixed && typeof mixed.settings === 'function' ) {
93521
6963
			return mixed.settings().toArray();
93522
		if ( page == 'current' ) {
93523
			// Current page implies that order=current and filter=applied, since it is
93524
			// fairly senseless otherwise, regardless of what order and search actually
93525
			// are
93526
			for ( i=settings._iDisplayStart, iLen=settings.fnDisplayEnd() ; i<iLen ; i++ ) {
93527
				a.push( displayFiltered[i] );
93528
			}
6964
		}
93529
		}
6965
		else if ( typeof mixed === 'string' ) {
93530
		else if ( order == 'current' || order == 'applied' ) {
6966
			// jQuery selector
93531
			if ( search == 'none') {
6967
			jq = $(mixed).get();
93532
				a = displayMaster.slice();
93533
			}
93534
			else if ( search == 'applied' ) {
93535
				a = displayFiltered.slice();
93536
			}
93537
			else if ( search == 'removed' ) {
93538
				// O(n+m) solution by creating a hash map
93539
				var displayFilteredMap = {};
93540
93541
				for ( i=0, iLen=displayFiltered.length ; i<iLen ; i++ ) {
93542
					displayFilteredMap[displayFiltered[i]] = null;
93543
				}
93544
93545
				displayMaster.forEach(function (item) {
93546
					if (! Object.prototype.hasOwnProperty.call(displayFilteredMap, item)) {
93547
						a.push(item);
93548
					}
93549
				});
93550
			}
6968
		}
93551
		}
6969
		else if ( mixed instanceof $ ) {
93552
		else if ( order == 'index' || order == 'original' ) {
6970
			// jQuery object (also DataTables instance)
93553
			for ( i=0, iLen=settings.aoData.length ; i<iLen ; i++ ) {
6971
			jq = mixed.get();
93554
				if (! settings.aoData[i]) {
93555
					continue;
93556
				}
93557
93558
				if ( search == 'none' ) {
93559
					a.push( i );
93560
				}
93561
				else { // applied | removed
93562
					tmp = displayFiltered.indexOf(i);
93563
93564
					if ((tmp === -1 && search == 'removed') ||
93565
						(tmp >= 0   && search == 'applied') )
93566
					{
93567
						a.push( i );
93568
					}
93569
				}
93570
			}
6972
		}
93571
		}
93572
		else if ( typeof order === 'number' ) {
93573
			// Order the rows by the given column
93574
			var ordered = _fnSort(settings, order, 'asc');
6973
	
93575
	
6974
		if ( jq ) {
93576
			if (search === 'none') {
6975
			return settings.filter(function (v, idx) {
93577
				a = ordered;
6976
				return jq.includes(tables[idx]);
93578
			}
6977
			});
93579
			else { // applied | removed
93580
				for (i=0; i<ordered.length; i++) {
93581
					tmp = displayFiltered.indexOf(ordered[i]);
93582
93583
					if ((tmp === -1 && search == 'removed') ||
93584
						(tmp >= 0   && search == 'applied') )
93585
					{
93586
						a.push( ordered[i] );
93587
					}
93588
				}
93589
			}
6978
		}
93590
		}
93591
93592
		return a;
6979
	};
93593
	};
6980
	
93594
	
6981
	
93595
	
6982
	/**
93596
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
6983
	 * DataTables API class - used to control and interface with  one or more
93597
	 * Rows
6984
	 * DataTables enhanced tables.
6985
	 *
6986
	 * The API class is heavily based on jQuery, presenting a chainable interface
6987
	 * that you can use to interact with tables. Each instance of the API class has
6988
	 * a "context" - i.e. the tables that it will operate on. This could be a single
6989
	 * table, all tables on a page or a sub-set thereof.
6990
	 *
6991
	 * Additionally the API is designed to allow you to easily work with the data in
6992
	 * the tables, retrieving and manipulating it as required. This is done by
6993
	 * presenting the API class as an array like interface. The contents of the
6994
	 * array depend upon the actions requested by each method (for example
6995
	 * `rows().nodes()` will return an array of nodes, while `rows().data()` will
6996
	 * return an array of objects or arrays depending upon your table's
6997
	 * configuration). The API object has a number of array like methods (`push`,
6998
	 * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,
6999
	 * `unique` etc) to assist your working with the data held in a table.
7000
	 *
7001
	 * Most methods (those which return an Api instance) are chainable, which means
7002
	 * the return from a method call also has all of the methods available that the
7003
	 * top level object had. For example, these two calls are equivalent:
7004
	 *
7005
	 *     // Not chained
7006
	 *     api.row.add( {...} );
7007
	 *     api.draw();
7008
	 *
7009
	 *     // Chained
7010
	 *     api.row.add( {...} ).draw();
7011
	 *
7012
	 * @class DataTable.Api
7013
	 * @param {array|object|string|jQuery} context DataTable identifier. This is
7014
	 *   used to define which DataTables enhanced tables this API will operate on.
7015
	 *   Can be one of:
7016
	 *
7017
	 *   * `string` - jQuery selector. Any DataTables' matching the given selector
7018
	 *     with be found and used.
7019
	 *   * `node` - `TABLE` node which has already been formed into a DataTable.
7020
	 *   * `jQuery` - A jQuery object of `TABLE` nodes.
7021
	 *   * `object` - DataTables settings object
7022
	 * @param {array} [data] Data to initialise the Api instance with.
7023
	 *
7024
	 * @example
7025
	 *   // Direct initialisation during DataTables construction
7026
	 *   var api = $('#example').DataTable();
7027
	 *
93598
	 *
7028
	 * @example
93599
	 * {}          - no selector - use all available rows
7029
	 *   // Initialisation using a DataTables jQuery object
93600
	 * {integer}   - row aoData index
7030
	 *   var api = $('#example').dataTable().api();
93601
	 * {node}      - TR node
93602
	 * {string}    - jQuery selector to apply to the TR elements
93603
	 * {array}     - jQuery array of nodes, or simply an array of TR nodes
7031
	 *
93604
	 *
7032
	 * @example
7033
	 *   // Initialisation as a constructor
7034
	 *   var api = new DataTable.Api( 'table.dataTable' );
7035
	 */
93605
	 */
7036
	_Api = function ( context, data )
93606
	var __row_selector = function ( settings, selector, opts )
7037
	{
93607
	{
7038
		if ( ! (this instanceof _Api) ) {
93608
		var rows;
7039
			return new _Api( context, data );
93609
		var run = function ( sel ) {
7040
		}
93610
			var selInt = _intVal( sel );
93611
			var aoData = settings.aoData;
7041
	
93612
	
7042
		var i;
93613
			// Short cut - selector is a number and no options provided (default is
7043
		var settings = [];
93614
			// all records, so no need to check if the index is in there, since it
7044
		var ctxSettings = function ( o ) {
93615
			// must be - dev error if the index doesn't exist).
7045
			var a = _toSettings( o );
93616
			if ( selInt !== null && ! opts ) {
7046
			if ( a ) {
93617
				return [ selInt ];
7047
				settings.push.apply( settings, a );
7048
			}
93618
			}
7049
		};
7050
	
93619
	
7051
		if ( Array.isArray( context ) ) {
93620
			if ( ! rows ) {
7052
			for ( i=0 ; i<context.length ; i++ ) {
93621
				rows = _selector_row_indexes( settings, opts );
7053
				ctxSettings( context[i] );
93622
			}
93623
93624
			if ( selInt !== null && rows.indexOf(selInt) !== -1 ) {
93625
				// Selector - integer
93626
				return [ selInt ];
93627
			}
93628
			else if ( sel === null || sel === undefined || sel === '' ) {
93629
				// Selector - none
93630
				return rows;
93631
			}
93632
93633
			// Selector - function
93634
			if ( typeof sel === 'function' ) {
93635
				return rows.map( function (idx) {
93636
					var row = aoData[ idx ];
93637
					return sel( idx, row._aData, row.nTr ) ? idx : null;
93638
				} );
93639
			}
93640
93641
			// Selector - node
93642
			if ( sel.nodeName ) {
93643
				var rowIdx = sel._DT_RowIndex;  // Property added by DT for fast lookup
93644
				var cellIdx = sel._DT_CellIndex;
93645
93646
				if ( rowIdx !== undefined ) {
93647
					// Make sure that the row is actually still present in the table
93648
					return aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?
93649
						[ rowIdx ] :
93650
						[];
93651
				}
93652
				else if ( cellIdx ) {
93653
					return aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel.parentNode ?
93654
						[ cellIdx.row ] :
93655
						[];
93656
				}
93657
				else {
93658
					var host = $(sel).closest('*[data-dt-row]');
93659
					return host.length ?
93660
						[ host.data('dt-row') ] :
93661
						[];
93662
				}
93663
			}
93664
93665
			// ID selector. Want to always be able to select rows by id, regardless
93666
			// of if the tr element has been created or not, so can't rely upon
93667
			// jQuery here - hence a custom implementation. This does not match
93668
			// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,
93669
			// but to select it using a CSS selector engine (like Sizzle or
93670
			// querySelect) it would need to need to be escaped for some characters.
93671
			// DataTables simplifies this for row selectors since you can select
93672
			// only a row. A # indicates an id any anything that follows is the id -
93673
			// unescaped.
93674
			if ( typeof sel === 'string' && sel.charAt(0) === '#' ) {
93675
				// get row index from id
93676
				var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];
93677
				if ( rowObj !== undefined ) {
93678
					return [ rowObj.idx ];
93679
				}
93680
93681
				// need to fall through to jQuery in case there is DOM id that
93682
				// matches
7054
			}
93683
			}
93684
93685
			// Get nodes in the order from the `rows` array with null values removed
93686
			var nodes = _removeEmpty(
93687
				_pluck_order( settings.aoData, rows, 'nTr' )
93688
			);
93689
	
93690
			// Selector - jQuery selector string, array of nodes or jQuery object/
93691
			// As jQuery's .filter() allows jQuery objects to be passed in filter,
93692
			// it also allows arrays, so this will cope with all three options
93693
			return $(nodes)
93694
				.filter( sel )
93695
				.map( function () {
93696
					return this._DT_RowIndex;
93697
				} )
93698
				.toArray();
93699
		};
93700
	
93701
		var matched = _selector_run( 'row', selector, run, settings, opts );
93702
	
93703
		if (opts.order === 'current' || opts.order === 'applied') {
93704
			_fnSortDisplay(settings, matched);
7055
		}
93705
		}
7056
		else {
93706
	
7057
			ctxSettings( context );
93707
		return matched;
93708
	};
93709
	
93710
	
93711
	_api_register( 'rows()', function ( selector, opts ) {
93712
		// argument shifting
93713
		if ( selector === undefined ) {
93714
			selector = '';
93715
		}
93716
		else if ( $.isPlainObject( selector ) ) {
93717
			opts = selector;
93718
			selector = '';
7058
		}
93719
		}
7059
	
93720
	
7060
		// Remove duplicates
93721
		opts = _selector_opts( opts );
7061
		this.context = settings.length > 1
7062
			? _unique( settings )
7063
			: settings;
7064
	
93722
	
7065
		// Initial data
93723
		var inst = this.iterator( 'table', function ( settings ) {
7066
		_fnArrayApply(this, data);
93724
			return __row_selector( settings, selector, opts );
93725
		}, 1 );
7067
	
93726
	
7068
		// selector
93727
		// Want argument shifting here and in __row_selector?
7069
		this.selector = {
93728
		inst.selector.rows = selector;
7070
			rows: null,
93729
		inst.selector.opts = opts;
7071
			cols: null,
7072
			opts: null
7073
		};
7074
	
93730
	
7075
		_Api.extend( this, this, __apiStruct );
93731
		return inst;
7076
	};
93732
	} );
7077
	
93733
	
7078
	DataTable.Api = _Api;
93734
	_api_register( 'rows().nodes()', function () {
93735
		return this.iterator( 'row', function ( settings, row ) {
93736
			return settings.aoData[ row ].nTr || undefined;
93737
		}, 1 );
93738
	} );
7079
	
93739
	
7080
	// Don't destroy the existing prototype, just extend it. Required for jQuery 2's
93740
	_api_register( 'rows().data()', function () {
7081
	// isPlainObject.
93741
		return this.iterator( true, 'rows', function ( settings, rows ) {
7082
	$.extend( _Api.prototype, {
93742
			return _pluck_order( settings.aoData, rows, '_aData' );
7083
		any: function ()
93743
		}, 1 );
7084
		{
93744
	} );
7085
			return this.count() !== 0;
7086
		},
7087
	
93745
	
7088
		context: [], // array of table settings objects
93746
	_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
93747
		return this.iterator( 'row', function ( settings, row ) {
93748
			var r = settings.aoData[ row ];
93749
			return type === 'search' ? r._aFilterData : r._aSortData;
93750
		}, 1 );
93751
	} );
7089
	
93752
	
7090
		count: function ()
93753
	_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
7091
		{
93754
		return this.iterator( 'row', function ( settings, row ) {
7092
			return this.flatten().length;
93755
			_fnInvalidate( settings, row, src );
7093
		},
93756
		} );
93757
	} );
7094
	
93758
	
7095
		each: function ( fn )
93759
	_api_registerPlural( 'rows().indexes()', 'row().index()', function () {
7096
		{
93760
		return this.iterator( 'row', function ( settings, row ) {
7097
			for ( var i=0, iLen=this.length ; i<iLen; i++ ) {
93761
			return row;
7098
				fn.call( this, this[i], i, this );
93762
		}, 1 );
93763
	} );
93764
	
93765
	_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
93766
		var a = [];
93767
		var context = this.context;
93768
	
93769
		// `iterator` will drop undefined values, but in this case we want them
93770
		for ( var i=0, iLen=context.length ; i<iLen ; i++ ) {
93771
			for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
93772
				var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
93773
				a.push( (hash === true ? '#' : '' )+ id );
7099
			}
93774
			}
93775
		}
7100
	
93776
	
7101
			return this;
93777
		return new _Api( context, a );
7102
		},
93778
	} );
7103
	
93779
	
7104
		eq: function ( idx )
93780
	_api_registerPlural( 'rows().remove()', 'row().remove()', function () {
7105
		{
93781
		this.iterator( 'row', function ( settings, row ) {
7106
			var ctx = this.context;
93782
			var data = settings.aoData;
93783
			var rowData = data[ row ];
7107
	
93784
	
7108
			return ctx.length > idx ?
93785
			// Delete from the display arrays
7109
				new _Api( ctx[idx], this[idx] ) :
93786
			var idx = settings.aiDisplayMaster.indexOf(row);
7110
				null;
93787
			if (idx !== -1) {
7111
		},
93788
				settings.aiDisplayMaster.splice(idx, 1);
93789
			}
93790
	
93791
			// For server-side processing tables - subtract the deleted row from the count
93792
			if ( settings._iRecordsDisplay > 0 ) {
93793
				settings._iRecordsDisplay--;
93794
			}
93795
	
93796
			// Check for an 'overflow' they case for displaying the table
93797
			_fnLengthOverflow( settings );
93798
	
93799
			// Remove the row's ID reference if there is one
93800
			var id = settings.rowIdFn( rowData._aData );
93801
			if ( id !== undefined ) {
93802
				delete settings.aIds[ id ];
93803
			}
93804
	
93805
			data[row] = null;
93806
		} );
93807
	
93808
		return this;
93809
	} );
93810
	
93811
	
93812
	_api_register( 'rows.add()', function ( rows ) {
93813
		var newRows = this.iterator( 'table', function ( settings ) {
93814
				var row, i, iLen;
93815
				var out = [];
7112
	
93816
	
7113
		filter: function ( fn )
93817
				for ( i=0, iLen=rows.length ; i<iLen ; i++ ) {
7114
		{
93818
					row = rows[i];
7115
			var a = __arrayProto.filter.call( this, fn, this );
7116
	
93819
	
7117
			return new _Api( this.context, a );
93820
					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
7118
		},
93821
						out.push( _fnAddTr( settings, row )[0] );
93822
					}
93823
					else {
93824
						out.push( _fnAddData( settings, row ) );
93825
					}
93826
				}
7119
	
93827
	
7120
		flatten: function ()
93828
				return out;
7121
		{
93829
			}, 1 );
7122
			var a = [];
93830
93831
		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
93832
		var modRows = this.rows( -1 );
93833
		modRows.pop();
93834
		_fnArrayApply(modRows, newRows);
93835
93836
		return modRows;
93837
	} );
7123
	
93838
	
7124
			return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
7125
		},
7126
	
93839
	
7127
		get: function ( idx )
7128
		{
7129
			return this[ idx ];
7130
		},
7131
	
93840
	
7132
		join:    __arrayProto.join,
7133
	
93841
	
7134
		includes: function ( find ) {
7135
			return this.indexOf( find ) === -1 ? false : true;
7136
		},
7137
	
93842
	
7138
		indexOf: __arrayProto.indexOf,
93843
	/**
93844
	 *
93845
	 */
93846
	_api_register( 'row()', function ( selector, opts ) {
93847
		return _selector_first( this.rows( selector, opts ) );
93848
	} );
7139
	
93849
	
7140
		iterator: function ( flatten, type, fn, alwaysNew ) {
7141
			var
7142
				a = [], ret,
7143
				i, iLen, j, jen,
7144
				context = this.context,
7145
				rows, items, item,
7146
				selector = this.selector;
7147
	
93850
	
7148
			// Argument shifting
93851
	_api_register( 'row().data()', function ( data ) {
7149
			if ( typeof flatten === 'string' ) {
93852
		var ctx = this.context;
7150
				alwaysNew = fn;
7151
				fn = type;
7152
				type = flatten;
7153
				flatten = false;
7154
			}
7155
	
93853
	
7156
			for ( i=0, iLen=context.length ; i<iLen ; i++ ) {
93854
		if ( data === undefined ) {
7157
				var apiInst = new _Api( context[i] );
93855
			// Get
93856
			return ctx.length && this.length && this[0].length ?
93857
				ctx[0].aoData[ this[0] ]._aData :
93858
				undefined;
93859
		}
7158
	
93860
	
7159
				if ( type === 'table' ) {
93861
		// Set
7160
					ret = fn.call( apiInst, context[i], i );
93862
		var row = ctx[0].aoData[ this[0] ];
93863
		row._aData = data;
7161
	
93864
	
7162
					if ( ret !== undefined ) {
93865
		// If the DOM has an id, and the data source is an array
7163
						a.push( ret );
93866
		if ( Array.isArray( data ) && row.nTr && row.nTr.id ) {
7164
					}
93867
			_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );
7165
				}
93868
		}
7166
				else if ( type === 'columns' || type === 'rows' ) {
7167
					// this has same length as context - one entry for each table
7168
					ret = fn.call( apiInst, context[i], this[i], i );
7169
	
93869
	
7170
					if ( ret !== undefined ) {
93870
		// Automatically invalidate
7171
						a.push( ret );
93871
		_fnInvalidate( ctx[0], this[0], 'data' );
7172
					}
7173
				}
7174
				else if ( type === 'every' || type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {
7175
					// columns and rows share the same structure.
7176
					// 'this' is an array of column indexes for each context
7177
					items = this[i];
7178
	
93872
	
7179
					if ( type === 'column-rows' ) {
93873
		return this;
7180
						rows = _selector_row_indexes( context[i], selector.opts );
93874
	} );
7181
					}
7182
	
93875
	
7183
					for ( j=0, jen=items.length ; j<jen ; j++ ) {
7184
						item = items[j];
7185
	
93876
	
7186
						if ( type === 'cell' ) {
93877
	_api_register( 'row().node()', function () {
7187
							ret = fn.call( apiInst, context[i], item.row, item.column, i, j );
93878
		var ctx = this.context;
7188
						}
7189
						else {
7190
							ret = fn.call( apiInst, context[i], item, i, j, rows );
7191
						}
7192
	
93879
	
7193
						if ( ret !== undefined ) {
93880
		if (ctx.length && this.length && this[0].length) {
7194
							a.push( ret );
93881
			var row = ctx[0].aoData[ this[0] ];
7195
						}
7196
					}
7197
				}
7198
			}
7199
	
93882
	
7200
			if ( a.length || alwaysNew ) {
93883
			if (row && row.nTr) {
7201
				var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );
93884
				return row.nTr;
7202
				var apiSelector = api.selector;
7203
				apiSelector.rows = selector.rows;
7204
				apiSelector.cols = selector.cols;
7205
				apiSelector.opts = selector.opts;
7206
				return api;
7207
			}
93885
			}
7208
			return this;
93886
		}
7209
		},
7210
	
93887
	
7211
		lastIndexOf: __arrayProto.lastIndexOf,
93888
		return null;
93889
	} );
7212
	
93890
	
7213
		length:  0,
7214
	
93891
	
7215
		map: function ( fn )
93892
	_api_register( 'row.add()', function ( row ) {
7216
		{
93893
		// Allow a jQuery object to be passed in - only a single row is added from
7217
			var a = __arrayProto.map.call( this, fn, this );
93894
		// it though - the first element in the set
93895
		if ( row instanceof $ && row.length ) {
93896
			row = row[0];
93897
		}
7218
	
93898
	
7219
			return new _Api( this.context, a );
93899
		var rows = this.iterator( 'table', function ( settings ) {
7220
		},
93900
			if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
93901
				return _fnAddTr( settings, row )[0];
93902
			}
93903
			return _fnAddData( settings, row );
93904
		} );
7221
	
93905
	
7222
		pluck: function ( prop )
93906
		// Return an Api.rows() extended instance, with the newly added row selected
7223
		{
93907
		return this.row( rows[0] );
7224
			var fn = DataTable.util.get(prop);
93908
	} );
7225
	
93909
	
7226
			return this.map( function ( el ) {
7227
				return fn(el);
7228
			} );
7229
		},
7230
	
93910
	
7231
		pop:     __arrayProto.pop,
93911
	$(document).on('plugin-init.dt', function (e, context) {
93912
		var api = new _Api( context );
7232
	
93913
	
7233
		push:    __arrayProto.push,
93914
		api.on( 'stateSaveParams.DT', function ( e, settings, d ) {
93915
			// This could be more compact with the API, but it is a lot faster as a simple
93916
			// internal loop
93917
			var idFn = settings.rowIdFn;
93918
			var rows = settings.aiDisplayMaster;
93919
			var ids = [];
7234
	
93920
	
7235
		reduce: __arrayProto.reduce,
93921
			for (var i=0 ; i<rows.length ; i++) {
93922
				var rowIdx = rows[i];
93923
				var data = settings.aoData[rowIdx];
93924
93925
				if (data._detailsShow) {
93926
					ids.push( '#' + idFn(data._aData) );
93927
				}
93928
			}
7236
	
93929
	
7237
		reduceRight: __arrayProto.reduceRight,
93930
			d.childRows = ids;
93931
		});
7238
	
93932
	
7239
		reverse: __arrayProto.reverse,
93933
		// For future state loads (e.g. with StateRestore)
93934
		api.on( 'stateLoaded.DT', function (e, settings, state) {
93935
			__details_state_load( api, state );
93936
		});
93937
93938
		// And the initial load state
93939
		__details_state_load( api, api.state.loaded() );
93940
	});
93941
93942
	var __details_state_load = function (api, state)
93943
	{
93944
		if ( state && state.childRows ) {
93945
			api
93946
				.rows( state.childRows.map(function (id) {
93947
					// Escape any `:` characters from the row id. Accounts for
93948
					// already escaped characters.
93949
					return id.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g, "$1\\:");
93950
				}) )
93951
				.every( function () {
93952
					_fnCallbackFire( api.settings()[0], null, 'requestChild', [ this ] )
93953
				});
93954
		}
93955
	}
7240
	
93956
	
7241
		// Object with rows, columns and opts
93957
	var __details_add = function ( ctx, row, data, klass )
7242
		selector: null,
93958
	{
93959
		// Convert to array of TR elements
93960
		var rows = [];
93961
		var addRow = function ( r, k ) {
93962
			// Recursion to allow for arrays of jQuery objects
93963
			if ( Array.isArray( r ) || r instanceof $ ) {
93964
				for ( var i=0, iLen=r.length ; i<iLen ; i++ ) {
93965
					addRow( r[i], k );
93966
				}
93967
				return;
93968
			}
7243
	
93969
	
7244
		shift:   __arrayProto.shift,
93970
			// If we get a TR element, then just add it directly - up to the dev
93971
			// to add the correct number of columns etc
93972
			if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {
93973
				r.setAttribute( 'data-dt-row', row.idx );
93974
				rows.push( r );
93975
			}
93976
			else {
93977
				// Otherwise create a row with a wrapper
93978
				var created = $('<tr><td></td></tr>')
93979
					.attr( 'data-dt-row', row.idx )
93980
					.addClass( k );
93981
93982
				$('td', created)
93983
					.addClass( k )
93984
					.html( r )[0].colSpan = _fnVisibleColumns( ctx );
7245
	
93985
	
7246
		slice: function () {
93986
				rows.push( created[0] );
7247
			return new _Api( this.context, this );
93987
			}
7248
		},
93988
		};
7249
	
93989
	
7250
		sort:    __arrayProto.sort,
93990
		addRow( data, klass );
93991
	
93992
		if ( row._details ) {
93993
			row._details.detach();
93994
		}
93995
	
93996
		row._details = $(rows);
93997
93998
		// If the children were already shown, that state should be retained
93999
		if ( row._detailsShow ) {
94000
			row._details.insertAfter( row.nTr );
94001
		}
94002
	};
7251
	
94003
	
7252
		splice:  __arrayProto.splice,
7253
	
94004
	
7254
		toArray: function ()
94005
	// Make state saving of child row details async to allow them to be batch processed
7255
		{
94006
	var __details_state = DataTable.util.throttle(
7256
			return __arrayProto.slice.call( this );
94007
		function (ctx) {
94008
			_fnSaveState( ctx[0] )
7257
		},
94009
		},
94010
		500
94011
	);
7258
	
94012
	
7259
		to$: function ()
7260
		{
7261
			return $( this );
7262
		},
7263
	
94013
	
7264
		toJQuery: function ()
94014
	var __details_remove = function ( api, idx )
7265
		{
94015
	{
7266
			return $( this );
94016
		var ctx = api.context;
7267
		},
7268
	
94017
	
7269
		unique: function ()
94018
		if ( ctx.length ) {
7270
		{
94019
			var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
7271
			return new _Api( this.context, _unique(this.toArray()) );
7272
		},
7273
	
94020
	
7274
		unshift: __arrayProto.unshift
94021
			if ( row && row._details ) {
7275
	} );
94022
				row._details.detach();
7276
	
94023
	
94024
				row._detailsShow = undefined;
94025
				row._details = undefined;
94026
				$( row.nTr ).removeClass( 'dt-hasChild' );
94027
				__details_state( ctx );
94028
			}
94029
		}
94030
	};
7277
	
94031
	
7278
	function _api_scope( scope, fn, struct ) {
7279
		return function () {
7280
			var ret = fn.apply( scope || this, arguments );
7281
	
94032
	
7282
			// Method extension
94033
	var __details_display = function ( api, show ) {
7283
			_Api.extend( ret, ret, struct.methodExt );
94034
		var ctx = api.context;
7284
			return ret;
7285
		};
7286
	}
7287
	
94035
	
7288
	function _api_find( src, name ) {
94036
		if ( ctx.length && api.length ) {
7289
		for ( var i=0, iLen=src.length ; i<iLen ; i++ ) {
94037
			var row = ctx[0].aoData[ api[0] ];
7290
			if ( src[i].name === name ) {
94038
	
7291
				return src[i];
94039
			if ( row._details ) {
94040
				row._detailsShow = show;
94041
94042
				if ( show ) {
94043
					row._details.insertAfter( row.nTr );
94044
					$( row.nTr ).addClass( 'dt-hasChild' );
94045
				}
94046
				else {
94047
					row._details.detach();
94048
					$( row.nTr ).removeClass( 'dt-hasChild' );
94049
				}
94050
94051
				_fnCallbackFire( ctx[0], null, 'childRow', [ show, api.row( api[0] ) ] )
94052
94053
				__details_events( ctx[0] );
94054
				__details_state( ctx );
7292
			}
94055
			}
7293
		}
94056
		}
7294
		return null;
94057
	};
7295
	}
7296
	
94058
	
7297
	window.__apiStruct = __apiStruct;
7298
	
94059
	
7299
	_Api.extend = function ( scope, obj, ext )
94060
	var __details_events = function ( settings )
7300
	{
94061
	{
7301
		// Only extend API instances and static properties of the API
94062
		var api = new _Api( settings );
7302
		if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {
94063
		var namespace = '.dt.DT_details';
7303
			return;
94064
		var drawEvent = 'draw'+namespace;
7304
		}
94065
		var colvisEvent = 'column-sizing'+namespace;
94066
		var destroyEvent = 'destroy'+namespace;
94067
		var data = settings.aoData;
7305
	
94068
	
7306
		var
94069
		api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
7307
			i, iLen,
7308
			struct;
7309
	
94070
	
7310
		for ( i=0, iLen=ext.length ; i<iLen ; i++ ) {
94071
		if ( _pluck( data, '_details' ).length > 0 ) {
7311
			struct = ext[i];
94072
			// On each draw, insert the required elements into the document
94073
			api.on( drawEvent, function ( e, ctx ) {
94074
				if ( settings !== ctx ) {
94075
					return;
94076
				}
7312
	
94077
	
7313
			if (struct.name === '__proto__') {
94078
				api.rows( {page:'current'} ).eq(0).each( function (idx) {
7314
				continue;
94079
					// Internal data grab
7315
			}
94080
					var row = data[ idx ];
7316
	
94081
	
7317
			// Value
94082
					if ( row._detailsShow ) {
7318
			obj[ struct.name ] = struct.type === 'function' ?
94083
						row._details.insertAfter( row.nTr );
7319
				_api_scope( scope, struct.val, struct ) :
94084
					}
7320
				struct.type === 'object' ?
94085
				} );
7321
					{} :
94086
			} );
7322
					struct.val;
7323
	
94087
	
7324
			obj[ struct.name ].__dt_wrapper = true;
94088
			// Column visibility change - update the colspan
94089
			api.on( colvisEvent, function ( e, ctx ) {
94090
				if ( settings !== ctx ) {
94091
					return;
94092
				}
7325
	
94093
	
7326
			// Property extension
94094
				// Update the colspan for the details rows (note, only if it already has
7327
			_Api.extend( scope, obj[ struct.name ], struct.propExt );
94095
				// a colspan)
7328
		}
94096
				var row, visible = _fnVisibleColumns( ctx );
7329
	};
7330
	
94097
	
7331
	//     [
94098
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
7332
	//       {
94099
					row = data[i];
7333
	//         name:      'data'                -- string   - Property name
7334
	//         val:       function () {},       -- function - Api method (or undefined if just an object
7335
	//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result
7336
	//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property
7337
	//       },
7338
	//       {
7339
	//         name:     'row'
7340
	//         val:       {},
7341
	//         methodExt: [ ... ],
7342
	//         propExt:   [
7343
	//           {
7344
	//             name:      'data'
7345
	//             val:       function () {},
7346
	//             methodExt: [ ... ],
7347
	//             propExt:   [ ... ]
7348
	//           },
7349
	//           ...
7350
	//         ]
7351
	//       }
7352
	//     ]
7353
	
94100
	
94101
					if ( row && row._details ) {
94102
						row._details.each(function () {
94103
							var el = $(this).children('td');
7354
	
94104
	
7355
	_Api.register = _api_register = function ( name, val )
94105
							if (el.length == 1) {
7356
	{
94106
								el.attr('colspan', visible);
7357
		if ( Array.isArray( name ) ) {
94107
							}
7358
			for ( var j=0, jen=name.length ; j<jen ; j++ ) {
94108
						});
7359
				_Api.register( name[j], val );
94109
					}
7360
			}
94110
				}
7361
			return;
94111
			} );
7362
		}
7363
	
94112
	
7364
		var
94113
			// Table destroyed - nuke any child rows
7365
			i, iLen,
94114
			api.on( destroyEvent, function ( e, ctx ) {
7366
			heir = name.split('.'),
94115
				if ( settings !== ctx ) {
7367
			struct = __apiStruct,
94116
					return;
7368
			key, method;
94117
				}
7369
	
94118
	
7370
		for ( i=0, iLen=heir.length ; i<iLen ; i++ ) {
94119
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
7371
			method = heir[i].indexOf('()') !== -1;
94120
					if ( data[i] && data[i]._details ) {
7372
			key = method ?
94121
						__details_remove( api, i );
7373
				heir[i].replace('()', '') :
94122
					}
7374
				heir[i];
94123
				}
94124
			} );
94125
		}
94126
	};
7375
	
94127
	
7376
			var src = _api_find( struct, key );
94128
	// Strings for the method names to help minification
7377
			if ( ! src ) {
94129
	var _emp = '';
7378
				src = {
94130
	var _child_obj = _emp+'row().child';
7379
					name:      key,
94131
	var _child_mth = _child_obj+'()';
7380
					val:       {},
7381
					methodExt: [],
7382
					propExt:   [],
7383
					type:      'object'
7384
				};
7385
				struct.push( src );
7386
			}
7387
	
94132
	
7388
			if ( i === iLen-1 ) {
94133
	// data can be:
7389
				src.val = val;
94134
	//  tr
7390
				src.type = typeof val === 'function' ?
94135
	//  string
7391
					'function' :
94136
	//  jQuery or array of any of the above
7392
					$.isPlainObject( val ) ?
94137
	_api_register( _child_mth, function ( data, klass ) {
7393
						'object' :
94138
		var ctx = this.context;
7394
						'other';
94139
	
7395
			}
94140
		if ( data === undefined ) {
7396
			else {
94141
			// get
7397
				struct = method ?
94142
			return ctx.length && this.length && ctx[0].aoData[ this[0] ]
7398
					src.methodExt :
94143
				? ctx[0].aoData[ this[0] ]._details
7399
					src.propExt;
94144
				: undefined;
7400
			}
7401
		}
94145
		}
7402
	};
94146
		else if ( data === true ) {
94147
			// show
94148
			this.child.show();
94149
		}
94150
		else if ( data === false ) {
94151
			// remove
94152
			__details_remove( this );
94153
		}
94154
		else if ( ctx.length && this.length ) {
94155
			// set
94156
			__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );
94157
		}
94158
	
94159
		return this;
94160
	} );
94161
	
94162
94163
	_api_register( [
94164
		_child_obj+'.show()',
94165
		_child_mth+'.show()' // only when `child()` was called with parameters (without
94166
	], function () {         // it returns an object and this method is not executed)
94167
		__details_display( this, true );
94168
		return this;
94169
	} );
7403
	
94170
	
7404
	_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {
7405
		_Api.register( pluralName, val );
7406
	
94171
	
7407
		_Api.register( singularName, function () {
94172
	_api_register( [
7408
			var ret = val.apply( this, arguments );
94173
		_child_obj+'.hide()',
94174
		_child_mth+'.hide()' // only when `child()` was called with parameters (without
94175
	], function () {         // it returns an object and this method is not executed)
94176
		__details_display( this, false );
94177
		return this;
94178
	} );
7409
	
94179
	
7410
			if ( ret === this ) {
7411
				// Returned item is the API instance that was passed in, return it
7412
				return this;
7413
			}
7414
			else if ( ret instanceof _Api ) {
7415
				// New API instance returned, want the value from the first item
7416
				// in the returned array for the singular result.
7417
				return ret.length ?
7418
					Array.isArray( ret[0] ) ?
7419
						new _Api( ret.context, ret[0] ) : // Array results are 'enhanced'
7420
						ret[0] :
7421
					undefined;
7422
			}
7423
	
94180
	
7424
			// Non-API return - just fire it back
94181
	_api_register( [
7425
			return ret;
94182
		_child_obj+'.remove()',
7426
		} );
94183
		_child_mth+'.remove()' // only when `child()` was called with parameters (without
7427
	};
94184
	], function () {           // it returns an object and this method is not executed)
94185
		__details_remove( this );
94186
		return this;
94187
	} );
94188
	
94189
94190
	_api_register( _child_obj+'.isShown()', function () {
94191
		var ctx = this.context;
94192
94193
		if ( ctx.length && this.length && ctx[0].aoData[ this[0] ] ) {
94194
			// _detailsShown as false or undefined will fall through to return false
94195
			return ctx[0].aoData[ this[0] ]._detailsShow || false;
94196
		}
94197
		return false;
94198
	} );
7428
	
94199
	
7429
	
94200
	
7430
	/**
94201
	
7431
	 * Selector for HTML tables. Apply the given selector to the give array of
94202
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
7432
	 * DataTables settings objects.
94203
	 * Columns
94204
	 *
94205
	 * {integer}           - column index (>=0 count from left, <0 count from right)
94206
	 * "{integer}:visIdx"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)
94207
	 * "{integer}:visible" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)
94208
	 * "{string}:name"     - column name
94209
	 * "{string}"          - jQuery selector on column header nodes
7433
	 *
94210
	 *
7434
	 * @param {string|integer} [selector] jQuery selector string or integer
7435
	 * @param  {array} Array of DataTables settings objects to be filtered
7436
	 * @return {array}
7437
	 * @ignore
7438
	 */
94211
	 */
7439
	var __table_selector = function ( selector, a )
7440
	{
7441
		if ( Array.isArray(selector) ) {
7442
			var result = [];
7443
	
94212
	
7444
			selector.forEach(function (sel) {
94213
	// can be an array of these items, comma separated list, or an array of comma
7445
				var inner = __table_selector(sel, a);
94214
	// separated lists
7446
	
94215
	
7447
				_fnArrayApply(result, inner);
94216
	var __re_column_selector = /^([^:]+)?:(name|title|visIdx|visible)$/;
7448
			});
7449
	
94217
	
7450
			return result.filter( function (item) {
7451
				return item;
7452
			});
7453
		}
7454
	
94218
	
7455
		// Integer is used to pick out a table by index
94219
	// r1 and r2 are redundant - but it means that the parameters match for the
7456
		if ( typeof selector === 'number' ) {
94220
	// iterator callback in columns().data()
7457
			return [ a[ selector ] ];
94221
	var __columnData = function ( settings, column, r1, r2, rows, type ) {
94222
		var a = [];
94223
		for ( var row=0, iLen=rows.length ; row<iLen ; row++ ) {
94224
			a.push( _fnGetCellData( settings, rows[row], column, type ) );
7458
		}
94225
		}
94226
		return a;
94227
	};
7459
	
94228
	
7460
		// Perform a jQuery selector on the table nodes
94229
7461
		var nodes = a.map( function (el) {
94230
	var __column_header = function ( settings, column, row ) {
7462
			return el.nTable;
94231
		var header = settings.aoHeader;
7463
		} );
94232
		var titleRow = settings.titleRow;
94233
		var target = null;
94234
94235
		if (row !== undefined) {
94236
			target = row;
94237
		}
94238
		else if (titleRow === true) { // legacy orderCellsTop support
94239
			target = 0;
94240
		}
94241
		else if (titleRow === false) {
94242
			target = header.length - 1;
94243
		}
94244
		else if (titleRow !== null) {
94245
			target = titleRow;
94246
		}
94247
		else {
94248
			// Automatic - find the _last_ unique cell from the top that is not empty (last for
94249
			// backwards compatibility)
94250
			for (var i=0 ; i<header.length ; i++) {
94251
				if (header[i][column].unique && $('.dt-column-title', header[i][column].cell).text()) {
94252
					target = i;
94253
				}
94254
			}
94255
94256
			if (target === null) {
94257
				target = 0;
94258
			}
94259
		}
7464
	
94260
	
7465
		return $(nodes)
94261
		return header[target][column].cell;
7466
			.filter( selector )
7467
			.map( function () {
7468
				// Need to translate back from the table node to the settings
7469
				var idx = nodes.indexOf(this);
7470
				return a[ idx ];
7471
			} )
7472
			.toArray();
7473
	};
94262
	};
7474
	
94263
	
94264
	var __column_header_cells = function (header) {
94265
		var out = [];
7475
	
94266
	
94267
		for (var i=0 ; i<header.length ; i++) {
94268
			for (var j=0 ; j<header[i].length ; j++) {
94269
				var cell = header[i][j].cell;
7476
	
94270
	
7477
	/**
94271
				if (!out.includes(cell)) {
7478
	 * Context selector for the API's context (i.e. the tables the API instance
94272
					out.push(cell);
7479
	 * refers to.
94273
				}
7480
	 *
94274
			}
7481
	 * @name    DataTable.Api#tables
94275
		}
7482
	 * @param {string|integer} [selector] Selector to pick which tables the iterator
7483
	 *   should operate on. If not given, all tables in the current context are
7484
	 *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to
7485
	 *   select multiple tables or as an integer to select a single table.
7486
	 * @returns {DataTable.Api} Returns a new API instance if a selector is given.
7487
	 */
7488
	_api_register( 'tables()', function ( selector ) {
7489
		// A new instance is created if there was a selector specified
7490
		return selector !== undefined && selector !== null ?
7491
			new _Api( __table_selector( selector, this.context ) ) :
7492
			this;
7493
	} );
7494
	
94276
	
94277
		return out;
94278
	}
7495
	
94279
	
7496
	_api_register( 'table()', function ( selector ) {
94280
	var __column_selector = function ( settings, selector, opts )
7497
		var tables = this.tables( selector );
94281
	{
7498
		var ctx = tables.context;
94282
		var
94283
			columns = settings.aoColumns,
94284
			names, titles,
94285
			nodes = __column_header_cells(settings.aoHeader);
94286
94287
		var run = function ( s ) {
94288
			var selInt = _intVal( s );
7499
	
94289
	
7500
		// Truncate to the first matched table
94290
			// Selector - all
7501
		return ctx.length ?
94291
			if ( s === '' ) {
7502
			new _Api( ctx[0] ) :
94292
				return _range( columns.length );
7503
			tables;
94293
			}
7504
	} );
7505
	
94294
	
7506
	// Common methods, combined to reduce size
94295
			// Selector - index
7507
	[
94296
			if ( selInt !== null ) {
7508
		['nodes', 'node', 'nTable'],
94297
				return [ selInt >= 0 ?
7509
		['body', 'body', 'nTBody'],
94298
					selInt : // Count from left
7510
		['header', 'header', 'nTHead'],
94299
					columns.length + selInt // Count from right (+ because its a negative value)
7511
		['footer', 'footer', 'nTFoot'],
94300
				];
7512
	].forEach(function (item) {
7513
		_api_registerPlural(
7514
			'tables().' + item[0] + '()',
7515
			'table().' + item[1] + '()' ,
7516
			function () {
7517
				return this.iterator( 'table', function ( ctx ) {
7518
					return ctx[item[2]];
7519
				}, 1 );
7520
			}
94301
			}
7521
		);
7522
	});
7523
	
94302
	
7524
	// Structure methods
94303
			// Selector = function
7525
	[
94304
			if ( typeof s === 'function' ) {
7526
		['header', 'aoHeader'],
94305
				var rows = _selector_row_indexes( settings, opts );
7527
		['footer', 'aoFooter'],
94306
	
7528
	].forEach(function (item) {
94307
				return columns.map(function (col, idx) {
7529
		_api_register( 'table().' + item[0] + '.structure()' , function (selector) {
94308
					return s(
7530
			var indexes = this.columns(selector).indexes().flatten().toArray();
94309
							idx,
7531
			var ctx = this.context[0];
94310
							__columnData( settings, idx, 0, 0, rows ),
7532
			var structure = _fnHeaderLayout(ctx, ctx[item[1]], indexes);
94311
							__column_header( settings, idx )
94312
						) ? idx : null;
94313
				});
94314
			}
7533
94315
7534
			// The structure is in column index order - but from this method we want the return to be
94316
			// jQuery or string selector
7535
			// in the columns() selector API order. In order to do that we need to map from one form
94317
			var match = typeof s === 'string' ?
7536
			// to the other
94318
				s.match( __re_column_selector ) :
7537
			var orderedIndexes = indexes.slice().sort(function (a, b) {
94319
				'';
7538
				return a - b;
7539
			});
7540
94320
7541
			return structure.map(function (row) {
94321
			if ( match ) {
7542
				return indexes.map(function (colIdx) {
94322
				switch( match[2] ) {
7543
					return row[orderedIndexes.indexOf(colIdx)];
94323
					case 'visIdx':
7544
				});
94324
					case 'visible':
7545
			});
94325
						// Selector is a column index
7546
		});
94326
						if (match[1] && match[1].match(/^\d+$/)) {
7547
	});
94327
							var idx = parseInt( match[1], 10 );
7548
	
7549
	
7550
	_api_registerPlural( 'tables().containers()', 'table().container()' , function () {
7551
		return this.iterator( 'table', function ( ctx ) {
7552
			return ctx.nTableWrapper;
7553
		}, 1 );
7554
	} );
7555
	
94328
	
7556
	_api_register( 'tables().every()', function ( fn ) {
94329
							// Visible index given, convert to column index
7557
		var that = this;
94330
							if ( idx < 0 ) {
94331
								// Counting from the right
94332
								var visColumns = columns.map( function (col,i) {
94333
									return col.bVisible ? i : null;
94334
								} );
94335
								return [ visColumns[ visColumns.length + idx ] ];
94336
							}
94337
							// Counting from the left
94338
							return [ _fnVisibleToColumnIndex( settings, idx ) ];
94339
						}
94340
94341
						return columns.map( function (col, idx) {
94342
							// Not visible, can't match
94343
							if (! col.bVisible) {
94344
								return null;
94345
							}
7558
	
94346
	
7559
		return this.iterator('table', function (s, i) {
94347
							if (col.responsiveVisible === false) {
7560
			fn.call(that.table(i), i);
94348
								return null;
7561
		});
94349
							}
7562
	});
7563
	
94350
	
7564
	_api_register( 'caption()', function ( value, side ) {
94351
							// Selector
7565
		var context = this.context;
94352
							if (match[1]) {
94353
								return $(nodes[idx]).filter(match[1]).length > 0 ? idx : null;
94354
							}
7566
	
94355
	
7567
		// Getter - return existing node's content
94356
							// `:visible` on its own
7568
		if ( value === undefined ) {
94357
							return idx;
7569
			var caption = context[0].captionNode;
94358
						} );
7570
	
94359
	
7571
			return caption && context.length ?
94360
					case 'name':
7572
				caption.innerHTML : 
94361
						// Don't get names, unless needed, and only get once if it is
7573
				null;
94362
						if (!names) {
7574
		}
94363
							names = _pluck( columns, 'sName' );
94364
						}
7575
	
94365
	
7576
		return this.iterator( 'table', function ( ctx ) {
94366
						// match by name. `names` is column index complete and in order
7577
			var table = $(ctx.nTable);
94367
						return names.map( function (name, i) {
7578
			var caption = $(ctx.captionNode);
94368
							return name === match[1] ? i : null;
7579
			var container = $(ctx.nTableWrapper);
94369
						} );
7580
	
94370
	
7581
			// Create the node if it doesn't exist yet
94371
					case 'title':
7582
			if ( ! caption.length ) {
94372
						if (!titles) {
7583
				caption = $('<caption/>').html( value );
94373
							titles = _pluck( columns, 'sTitle' );
7584
				ctx.captionNode = caption[0];
94374
						}
7585
	
94375
	
7586
				// If side isn't set, we need to insert into the document to let the
94376
						// match by column title
7587
				// CSS decide so we can read it back, otherwise there is no way to
94377
						return titles.map( function (title, i) {
7588
				// know if the CSS would put it top or bottom for scrolling
94378
							return title === match[1] ? i : null;
7589
				if (! side) {
94379
						} );
7590
					table.prepend(caption);
7591
	
94380
	
7592
					side = caption.css('caption-side');
94381
					default:
94382
						return [];
7593
				}
94383
				}
7594
			}
94384
			}
7595
	
94385
	
7596
			caption.html( value );
94386
			// Cell in the table body
7597
	
94387
			if ( s.nodeName && s._DT_CellIndex ) {
7598
			if ( side ) {
94388
				return [ s._DT_CellIndex.column ];
7599
				caption.css( 'caption-side', side );
7600
				caption[0]._captionSide = side;
7601
			}
94389
			}
7602
	
94390
	
7603
			if (container.find('div.dataTables_scroll').length) {
94391
			// jQuery selector on the TH elements for the columns
7604
				var selector = (side === 'top' ? 'Head' : 'Foot');
94392
			var jqResult = $( nodes )
7605
	
94393
				.filter( s )
7606
				container.find('div.dataTables_scroll'+ selector +' table').prepend(caption);
94394
				.map( function () {
7607
			}
94395
					return _fnColumnsFromHeader( this ); // `nodes` is column index complete and in order
7608
			else {
94396
				} )
7609
				table.prepend(caption);
94397
				.toArray()
94398
				.sort(function (a, b) {
94399
					return a - b;
94400
				});
94401
94402
			if ( jqResult.length || ! s.nodeName ) {
94403
				return jqResult;
7610
			}
94404
			}
7611
		}, 1 );
7612
	} );
7613
	
7614
	_api_register( 'caption.node()', function () {
7615
		var ctx = this.context;
7616
	
7617
		return ctx.length ? ctx[0].captionNode : null;
7618
	} );
7619
	
94405
	
94406
			// Otherwise a node which might have a `dt-column` data attribute, or be
94407
			// a child or such an element
94408
			var host = $(s).closest('*[data-dt-column]');
94409
			return host.length ?
94410
				[ host.data('dt-column') ] :
94411
				[];
94412
		};
7620
	
94413
	
7621
	/**
94414
		var selected = _selector_run( 'column', selector, run, settings, opts );
7622
	 * Redraw the tables in the current context.
7623
	 */
7624
	_api_register( 'draw()', function ( paging ) {
7625
		return this.iterator( 'table', function ( settings ) {
7626
			if ( paging === 'page' ) {
7627
				_fnDraw( settings );
7628
			}
7629
			else {
7630
				if ( typeof paging === 'string' ) {
7631
					paging = paging === 'full-hold' ?
7632
						false :
7633
						true;
7634
				}
7635
	
94415
	
7636
				_fnReDraw( settings, paging===false );
94416
		return opts.columnOrder && opts.columnOrder === 'index'
7637
			}
94417
			? selected.sort(function (a, b) { return a - b; })
7638
		} );
94418
			: selected; // implied
7639
	} );
94419
	};
7640
	
94420
	
7641
	
94421
	
94422
	var __setColumnVis = function ( settings, column, vis ) {
94423
		var
94424
			cols = settings.aoColumns,
94425
			col  = cols[ column ],
94426
			data = settings.aoData,
94427
			cells, i, iLen, tr;
7642
	
94428
	
7643
	/**
94429
		// Get
7644
	 * Get the current page index.
94430
		if ( vis === undefined ) {
7645
	 *
94431
			return col.bVisible;
7646
	 * @return {integer} Current page index (zero based)
7647
	 *//**
7648
	 * Set the current page.
7649
	 *
7650
	 * Note that if you attempt to show a page which does not exist, DataTables will
7651
	 * not throw an error, but rather reset the paging.
7652
	 *
7653
	 * @param {integer|string} action The paging action to take. This can be one of:
7654
	 *  * `integer` - The page index to jump to
7655
	 *  * `string` - An action to take:
7656
	 *    * `first` - Jump to first page.
7657
	 *    * `next` - Jump to the next page
7658
	 *    * `previous` - Jump to previous page
7659
	 *    * `last` - Jump to the last page.
7660
	 * @returns {DataTables.Api} this
7661
	 */
7662
	_api_register( 'page()', function ( action ) {
7663
		if ( action === undefined ) {
7664
			return this.page.info().page; // not an expensive call
7665
		}
94432
		}
7666
	
94433
	
7667
		// else, have an action to take on all tables
94434
		// Set
7668
		return this.iterator( 'table', function ( settings ) {
94435
		// No change
7669
			_fnPageChange( settings, action );
94436
		if ( col.bVisible === vis ) {
7670
		} );
94437
			return false;
7671
	} );
7672
	
7673
	
7674
	/**
7675
	 * Paging information for the first table in the current context.
7676
	 *
7677
	 * If you require paging information for another table, use the `table()` method
7678
	 * with a suitable selector.
7679
	 *
7680
	 * @return {object} Object with the following properties set:
7681
	 *  * `page` - Current page index (zero based - i.e. the first page is `0`)
7682
	 *  * `pages` - Total number of pages
7683
	 *  * `start` - Display index for the first record shown on the current page
7684
	 *  * `end` - Display index for the last record shown on the current page
7685
	 *  * `length` - Display length (number of records). Note that generally `start
7686
	 *    + length = end`, but this is not always true, for example if there are
7687
	 *    only 2 records to show on the final page, with a length of 10.
7688
	 *  * `recordsTotal` - Full data set length
7689
	 *  * `recordsDisplay` - Data set length once the current filtering criterion
7690
	 *    are applied.
7691
	 */
7692
	_api_register( 'page.info()', function () {
7693
		if ( this.context.length === 0 ) {
7694
			return undefined;
7695
		}
94438
		}
7696
	
94439
	
7697
		var
94440
		if ( vis ) {
7698
			settings   = this.context[0],
94441
			// Insert column
7699
			start      = settings._iDisplayStart,
94442
			// Need to decide if we should use appendChild or insertBefore
7700
			len        = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,
94443
			var insertBefore = _pluck(cols, 'bVisible').indexOf(true, column+1);
7701
			visRecords = settings.fnRecordsDisplay(),
7702
			all        = len === -1;
7703
	
7704
		return {
7705
			"page":           all ? 0 : Math.floor( start / len ),
7706
			"pages":          all ? 1 : Math.ceil( visRecords / len ),
7707
			"start":          start,
7708
			"end":            settings.fnDisplayEnd(),
7709
			"length":         len,
7710
			"recordsTotal":   settings.fnRecordsTotal(),
7711
			"recordsDisplay": visRecords,
7712
			"serverSide":     _fnDataSource( settings ) === 'ssp'
7713
		};
7714
	} );
7715
	
7716
	
7717
	/**
7718
	 * Get the current page length.
7719
	 *
7720
	 * @return {integer} Current page length. Note `-1` indicates that all records
7721
	 *   are to be shown.
7722
	 *//**
7723
	 * Set the current page length.
7724
	 *
7725
	 * @param {integer} Page length to set. Use `-1` to show all records.
7726
	 * @returns {DataTables.Api} this
7727
	 */
7728
	_api_register( 'page.len()', function ( len ) {
7729
		// Note that we can't call this function 'length()' because `length`
7730
		// is a JavaScript property of functions which defines how many arguments
7731
		// the function expects.
7732
		if ( len === undefined ) {
7733
			return this.context.length !== 0 ?
7734
				this.context[0]._iDisplayLength :
7735
				undefined;
7736
		}
7737
	
94444
	
7738
		// else, set the page length
94445
			for ( i=0, iLen=data.length ; i<iLen ; i++ ) {
7739
		return this.iterator( 'table', function ( settings ) {
94446
				if (data[i]) {
7740
			_fnLengthChange( settings, len );
94447
					tr = data[i].nTr;
7741
		} );
94448
					cells = data[i].anCells;
7742
	} );
7743
	
94449
	
94450
					if ( tr ) {
94451
						// insertBefore can act like appendChild if 2nd arg is null
94452
						tr.insertBefore( cells[ column ], cells[ insertBefore ] || null );
94453
					}
94454
				}
94455
			}
94456
		}
94457
		else {
94458
			// Remove column
94459
			$( _pluck( settings.aoData, 'anCells', column ) ).detach();
94460
		}
7744
	
94461
	
94462
		// Common actions
94463
		col.bVisible = vis;
94464
94465
		_colGroup(settings);
94466
94467
		return true;
94468
	};
7745
	
94469
	
7746
	var __reload = function ( settings, holdPosition, callback ) {
7747
		// Use the draw event to trigger a callback
7748
		if ( callback ) {
7749
			var api = new _Api( settings );
7750
	
94470
	
7751
			api.one( 'draw', function () {
94471
	_api_register( 'columns()', function ( selector, opts ) {
7752
				callback( api.ajax.json() );
94472
		// argument shifting
7753
			} );
94473
		if ( selector === undefined ) {
94474
			selector = '';
7754
		}
94475
		}
7755
	
94476
		else if ( $.isPlainObject( selector ) ) {
7756
		if ( _fnDataSource( settings ) == 'ssp' ) {
94477
			opts = selector;
7757
			_fnReDraw( settings, holdPosition );
94478
			selector = '';
7758
		}
94479
		}
7759
		else {
7760
			_fnProcessingDisplay( settings, true );
7761
	
94480
	
7762
			// Cancel an existing request
94481
		opts = _selector_opts( opts );
7763
			var xhr = settings.jqXHR;
7764
			if ( xhr && xhr.readyState !== 4 ) {
7765
				xhr.abort();
7766
			}
7767
	
94482
	
7768
			// Trigger xhr
94483
		var inst = this.iterator( 'table', function ( settings ) {
7769
			_fnBuildAjax( settings, {}, function( json ) {
94484
			return __column_selector( settings, selector, opts );
7770
				_fnClearTable( settings );
94485
		}, 1 );
94486
94487
		// Want argument shifting here and in _row_selector?
94488
		inst.selector.cols = selector;
94489
		inst.selector.opts = opts;
94490
94491
		return inst;
94492
	} );
7771
	
94493
	
7772
				var data = _fnAjaxDataSrc( settings, json );
94494
	_api_registerPlural( 'columns().header()', 'column().header()', function ( row ) {
7773
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
94495
		return this.iterator( 'column', function (settings, column) {
7774
					_fnAddData( settings, data[i] );
94496
			return __column_header(settings, column, row);
7775
				}
94497
		}, 1 );
94498
	} );
7776
	
94499
	
7777
				_fnReDraw( settings, holdPosition );
94500
	_api_registerPlural( 'columns().footer()', 'column().footer()', function ( row ) {
7778
				_fnInitComplete( settings );
94501
		return this.iterator( 'column', function ( settings, column ) {
7779
				_fnProcessingDisplay( settings, false );
94502
			var footer = settings.aoFooter;
7780
			} );
7781
		}
7782
	};
7783
	
94503
	
94504
			if (! footer.length) {
94505
				return null;
94506
			}
94507
94508
			return settings.aoFooter[row !== undefined ? row : 0][column].cell;
94509
		}, 1 );
94510
	} );
7784
	
94511
	
7785
	/**
94512
	_api_registerPlural( 'columns().data()', 'column().data()', function () {
7786
	 * Get the JSON response from the last Ajax request that DataTables made to the
94513
		return this.iterator( 'column-rows', __columnData, 1 );
7787
	 * server. Note that this returns the JSON from the first table in the current
94514
	} );
7788
	 * context.
7789
	 *
7790
	 * @return {object} JSON received from the server.
7791
	 */
7792
	_api_register( 'ajax.json()', function () {
7793
		var ctx = this.context;
7794
	
94515
	
7795
		if ( ctx.length > 0 ) {
94516
	_api_registerPlural( 'columns().render()', 'column().render()', function ( type ) {
7796
			return ctx[0].json;
94517
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
7797
		}
94518
			return __columnData( settings, column, i, j, rows, type );
94519
		}, 1 );
94520
	} );
7798
	
94521
	
7799
		// else return undefined;
94522
	_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {
94523
		return this.iterator( 'column', function ( settings, column ) {
94524
			return settings.aoColumns[column].mData;
94525
		}, 1 );
7800
	} );
94526
	} );
7801
	
94527
	
94528
	_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {
94529
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
94530
			return _pluck_order( settings.aoData, rows,
94531
				type === 'search' ? '_aFilterData' : '_aSortData', column
94532
			);
94533
		}, 1 );
94534
	} );
7802
	
94535
	
7803
	/**
94536
	_api_registerPlural( 'columns().init()', 'column().init()', function () {
7804
	 * Get the data submitted in the last Ajax request
94537
		return this.iterator( 'column', function ( settings, column ) {
7805
	 */
94538
			return settings.aoColumns[column];
7806
	_api_register( 'ajax.params()', function () {
94539
		}, 1 );
7807
		var ctx = this.context;
94540
	} );
7808
	
94541
	
7809
		if ( ctx.length > 0 ) {
94542
	_api_registerPlural( 'columns().names()', 'column().name()', function () {
7810
			return ctx[0].oAjaxData;
94543
		return this.iterator( 'column', function ( settings, column ) {
7811
		}
94544
			return settings.aoColumns[column].sName;
94545
		}, 1 );
94546
	} );
7812
	
94547
	
7813
		// else return undefined;
94548
	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
94549
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
94550
			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
94551
		}, 1 );
7814
	} );
94552
	} );
7815
	
94553
	
94554
	_api_registerPlural( 'columns().titles()', 'column().title()', function (title, row) {
94555
		return this.iterator( 'column', function ( settings, column ) {
94556
			// Argument shifting
94557
			if (typeof title === 'number') {
94558
				row = title;
94559
				title = undefined;
94560
			}
94561
	
94562
			var span = $('.dt-column-title', this.column(column).header(row));
7816
	
94563
	
7817
	/**
94564
			if (title !== undefined) {
7818
	 * Reload tables from the Ajax data source. Note that this function will
94565
				span.html(title);
7819
	 * automatically re-draw the table when the remote data has been loaded.
94566
				return this;
7820
	 *
94567
			}
7821
	 * @param {boolean} [reset=true] Reset (default) or hold the current paging
94568
	
7822
	 *   position. A full re-sort and re-filter is performed when this method is
94569
			return span.html();
7823
	 *   called, which is why the pagination reset is the default action.
94570
		}, 1 );
7824
	 * @returns {DataTables.Api} this
7825
	 */
7826
	_api_register( 'ajax.reload()', function ( callback, resetPaging ) {
7827
		return this.iterator( 'table', function (settings) {
7828
			__reload( settings, resetPaging===false, callback );
7829
		} );
7830
	} );
94571
	} );
7831
	
94572
	
94573
	_api_registerPlural( 'columns().types()', 'column().type()', function () {
94574
		return this.iterator( 'column', function ( settings, column ) {
94575
			var colObj = settings.aoColumns[column]
94576
			var type = colObj.sType;
7832
	
94577
	
7833
	/**
94578
			// If the type was invalidated, then resolve it. This actually does
7834
	 * Get the current Ajax URL. Note that this returns the URL from the first
94579
			// all columns at the moment. Would only happen once if getting all
7835
	 * table in the current context.
94580
			// column's data types.
7836
	 *
94581
			if (! type) {
7837
	 * @return {string} Current Ajax source URL
94582
				_fnColumnTypes(settings);
7838
	 *//**
7839
	 * Set the Ajax URL. Note that this will set the URL for all tables in the
7840
	 * current context.
7841
	 *
7842
	 * @param {string} url URL to set.
7843
	 * @returns {DataTables.Api} this
7844
	 */
7845
	_api_register( 'ajax.url()', function ( url ) {
7846
		var ctx = this.context;
7847
	
94583
	
7848
		if ( url === undefined ) {
94584
				type = colObj.sType;
7849
			// get
7850
			if ( ctx.length === 0 ) {
7851
				return undefined;
7852
			}
94585
			}
7853
			ctx = ctx[0];
7854
	
94586
	
7855
			return $.isPlainObject( ctx.ajax ) ?
94587
			return type;
7856
				ctx.ajax.url :
94588
		}, 1 );
7857
				ctx.ajax;
94589
	} );
7858
		}
7859
	
94590
	
7860
		// set
94591
	_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {
7861
		return this.iterator( 'table', function ( settings ) {
94592
		var that = this;
7862
			if ( $.isPlainObject( settings.ajax ) ) {
94593
		var changed = [];
7863
				settings.ajax.url = url;
94594
		var ret = this.iterator( 'column', function ( settings, column ) {
7864
			}
94595
			if ( vis === undefined ) {
7865
			else {
94596
				return settings.aoColumns[ column ].bVisible;
7866
				settings.ajax = url;
94597
			} // else
94598
94599
			if (__setColumnVis( settings, column, vis )) {
94600
				changed.push(column);
7867
			}
94601
			}
7868
		} );
94602
		} );
7869
	} );
7870
	
94603
	
94604
		// Group the column visibility changes
94605
		if ( vis !== undefined ) {
94606
			this.iterator( 'table', function ( settings ) {
94607
				// Redraw the header after changes
94608
				_fnDrawHead( settings, settings.aoHeader );
94609
				_fnDrawHead( settings, settings.aoFooter );
94610
94611
				// Update colspan for no records display. Child rows and extensions will use their own
94612
				// listeners to do this - only need to update the empty table item here
94613
				if ( ! settings.aiDisplay.length ) {
94614
					$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisibleColumns(settings));
94615
				}
94616
94617
				_fnSaveState( settings );
94618
	
94619
				// Second loop once the first is done for events
94620
				that.iterator( 'column', function ( settings, column ) {
94621
					if (changed.includes(column)) {
94622
						_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );
94623
					}
94624
				} );
7871
	
94625
	
7872
	/**
94626
				if ( changed.length && (calc === undefined || calc) ) {
7873
	 * Load data from the newly set Ajax URL. Note that this method is only
94627
					that.columns.adjust();
7874
	 * available when `ajax.url()` is used to set a URL. Additionally, this method
94628
				}
7875
	 * has the same effect as calling `ajax.reload()` but is provided for
94629
			});
7876
	 * convenience when setting a new URL. Like `ajax.reload()` it will
94630
		}
7877
	 * automatically redraw the table once the remote data has been loaded.
7878
	 *
7879
	 * @returns {DataTables.Api} this
7880
	 */
7881
	_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {
7882
		// Same as a reload, but makes sense to present it for easy access after a
7883
		// url change
7884
		return this.iterator( 'table', function ( ctx ) {
7885
			__reload( ctx, resetPaging===false, callback );
7886
		} );
7887
	} );
7888
	
94631
	
94632
		return ret;
94633
	} );
7889
	
94634
	
94635
	_api_registerPlural( 'columns().widths()', 'column().width()', function () {
94636
		// Injects a fake row into the table for just a moment so the widths can
94637
		// be read, regardless of colspan in the header and rows being present in
94638
		// the body
94639
		var columns = this.columns(':visible').count();
94640
		var row = $('<tr>').html('<td>' + Array(columns).join('</td><td>') + '</td>');
7890
	
94641
	
94642
		$(this.table().body()).append(row);
7891
	
94643
	
7892
	var _selector_run = function ( type, selector, selectFn, settings, opts )
94644
		var widths = row.children().map(function () {
7893
	{
94645
			return $(this).outerWidth();
7894
		var
94646
		});
7895
			out = [], res,
7896
			i, iLen,
7897
			selectorType = typeof selector;
7898
	
94647
	
7899
		// Can't just check for isArray here, as an API or jQuery instance might be
94648
		row.remove();
7900
		// given with their array like look
94649
7901
		if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
94650
		return this.iterator( 'column', function ( settings, column ) {
7902
			selector = [ selector ];
94651
			var visIdx = _fnColumnIndexToVisible( settings, column );
7903
		}
7904
	
94652
	
7905
		for ( i=0, iLen=selector.length ; i<iLen ; i++ ) {
94653
			return visIdx !== null ? widths[visIdx] : 0;
7906
			res = selectFn( typeof selector[i] === 'string' ? selector[i].trim() : selector[i] );
94654
		}, 1);
94655
	} );
7907
	
94656
	
7908
			// Remove empty items
94657
	_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {
7909
			res = res.filter( function (item) {
94658
		return this.iterator( 'column', function ( settings, column ) {
7910
				return item !== null && item !== undefined;
94659
			return type === 'visible' ?
7911
			});
94660
				_fnColumnIndexToVisible( settings, column ) :
94661
				column;
94662
		}, 1 );
94663
	} );
94664
94665
	_api_register( 'columns.adjust()', function () {
94666
		return this.iterator( 'table', function ( settings ) {
94667
			// Force a column sizing to happen with a manual call - otherwise it can skip
94668
			// if the size hasn't changed
94669
			settings.containerWidth = -1;
94670
94671
			_fnAdjustColumnSizing( settings );
94672
		}, 1 );
94673
	} );
7912
	
94674
	
7913
			if ( res && res.length ) {
94675
	_api_register( 'column.index()', function ( type, idx ) {
7914
				out = out.concat( res );
94676
		if ( this.context.length !== 0 ) {
94677
			var ctx = this.context[0];
94678
94679
			if ( type === 'fromVisible' || type === 'toData' ) {
94680
				return _fnVisibleToColumnIndex( ctx, idx );
7915
			}
94681
			}
7916
		}
94682
			else if ( type === 'fromData' || type === 'toVisible' ) {
7917
	
94683
				return _fnColumnIndexToVisible( ctx, idx );
7918
		// selector extensions
7919
		var ext = _ext.selector[ type ];
7920
		if ( ext.length ) {
7921
			for ( i=0, iLen=ext.length ; i<iLen ; i++ ) {
7922
				out = ext[i]( settings, opts, out );
7923
			}
94684
			}
7924
		}
94685
		}
94686
	} );
7925
	
94687
	
7926
		return _unique( out );
94688
	_api_register( 'column()', function ( selector, opts ) {
7927
	};
94689
		return _selector_first( this.columns( selector, opts ) );
7928
	
94690
	} );
7929
	
94691
	
7930
	var _selector_opts = function ( opts )
94692
	var __cell_selector = function ( settings, selector, opts )
7931
	{
94693
	{
7932
		if ( ! opts ) {
94694
		var data = settings.aoData;
7933
			opts = {};
94695
		var rows = _selector_row_indexes( settings, opts );
7934
		}
94696
		var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );
7935
	
94697
		var allCells = $(_flatten( [], cells ));
7936
		// Backwards compatibility for 1.9- which used the terminology filter rather
94698
		var row;
7937
		// than search
94699
		var columns = settings.aoColumns.length;
7938
		if ( opts.filter && opts.search === undefined ) {
94700
		var a, i, iLen, j, o, host;
7939
			opts.search = opts.filter;
7940
		}
7941
	
7942
		return $.extend( {
7943
			columnOrder: 'implied',
7944
			search: 'none',
7945
			order: 'current',
7946
			page: 'all'
7947
		}, opts );
7948
	};
7949
	
94701
	
94702
		var run = function ( s ) {
94703
			var fnSelector = typeof s === 'function';
7950
	
94704
	
7951
	// Reduce the API instance to the first item found
94705
			if ( s === null || s === undefined || fnSelector ) {
7952
	var _selector_first = function ( old )
94706
				// All cells and function selectors
7953
	{
94707
				a = [];
7954
		var inst = new _Api(old.context[0]);
94708
94709
				for ( i=0, iLen=rows.length ; i<iLen ; i++ ) {
94710
					row = rows[i];
94711
94712
					for ( j=0 ; j<columns ; j++ ) {
94713
						o = {
94714
							row: row,
94715
							column: j
94716
						};
94717
94718
						if ( fnSelector ) {
94719
							// Selector - function
94720
							host = data[ row ];
94721
94722
							if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
94723
								a.push( o );
94724
							}
94725
						}
94726
						else {
94727
							// Selector - all
94728
							a.push( o );
94729
						}
94730
					}
94731
				}
7955
	
94732
	
7956
		// Use a push rather than passing to the constructor, since it will
94733
				return a;
7957
		// merge arrays down automatically, which isn't what is wanted here
94734
			}
7958
		if (old.length) {
94735
7959
			inst.push( old[0] );
94736
			// Selector - index
7960
		}
94737
			if ( $.isPlainObject( s ) ) {
94738
				// Valid cell index and its in the array of selectable rows
94739
				return s.column !== undefined && s.row !== undefined && rows.indexOf(s.row) !== -1 ?
94740
					[s] :
94741
					[];
94742
			}
7961
	
94743
	
7962
		inst.selector = old.selector;
94744
			// Selector - jQuery filtered cells
94745
			var jqResult = allCells
94746
				.filter( s )
94747
				.map( function (i, el) {
94748
					return { // use a new object, in case someone changes the values
94749
						row:    el._DT_CellIndex.row,
94750
						column: el._DT_CellIndex.column
94751
					};
94752
				} )
94753
				.toArray();
94754
94755
			if ( jqResult.length || ! s.nodeName ) {
94756
				return jqResult;
94757
			}
7963
	
94758
	
7964
		// Limit to a single row / column / cell
94759
			// Otherwise the selector is a node, and there is one last option - the
7965
		if (inst.length && inst[0].length > 1) {
94760
			// element might be a child of an element which has dt-row and dt-column
7966
			inst[0].splice(1);
94761
			// data attributes
7967
		}
94762
			host = $(s).closest('*[data-dt-row]');
94763
			return host.length ?
94764
				[ {
94765
					row: host.data('dt-row'),
94766
					column: host.data('dt-column')
94767
				} ] :
94768
				[];
94769
		};
7968
	
94770
	
7969
		return inst;
94771
		return _selector_run( 'cell', selector, run, settings, opts );
7970
	};
94772
	};
7971
	
94773
	
7972
	
94774
	
7973
	var _selector_row_indexes = function ( settings, opts )
7974
	{
7975
		var
7976
			i, iLen, tmp, a=[],
7977
			displayFiltered = settings.aiDisplay,
7978
			displayMaster = settings.aiDisplayMaster;
7979
	
94775
	
7980
		var
7981
			search = opts.search,  // none, applied, removed
7982
			order  = opts.order,   // applied, current, index (original - compatibility with 1.9)
7983
			page   = opts.page;    // all, current
7984
	
94776
	
7985
		if ( _fnDataSource( settings ) == 'ssp' ) {
94777
	_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {
7986
			// In server-side processing mode, most options are irrelevant since
94778
		// Argument shifting
7987
			// rows not shown don't exist and the index order is the applied order
94779
		if ( $.isPlainObject( rowSelector ) ) {
7988
			// Removed is a special case - for consistency just return an empty
94780
			// Indexes
7989
			// array
94781
			if ( rowSelector.row === undefined ) {
7990
			return search === 'removed' ?
94782
				// Selector options in first parameter
7991
				[] :
94783
				opts = rowSelector;
7992
				_range( 0, displayMaster.length );
94784
				rowSelector = null;
94785
			}
94786
			else {
94787
				// Cell index objects in first parameter
94788
				opts = columnSelector;
94789
				columnSelector = null;
94790
			}
94791
		}
94792
		if ( $.isPlainObject( columnSelector ) ) {
94793
			opts = columnSelector;
94794
			columnSelector = null;
7993
		}
94795
		}
7994
	
94796
	
7995
		if ( page == 'current' ) {
94797
		// Cell selector
7996
			// Current page implies that order=current and filter=applied, since it is
94798
		if ( columnSelector === null || columnSelector === undefined ) {
7997
			// fairly senseless otherwise, regardless of what order and search actually
94799
			return this.iterator( 'table', function ( settings ) {
7998
			// are
94800
				return __cell_selector( settings, rowSelector, _selector_opts( opts ) );
7999
			for ( i=settings._iDisplayStart, iLen=settings.fnDisplayEnd() ; i<iLen ; i++ ) {
94801
			} );
8000
				a.push( displayFiltered[i] );
8001
			}
8002
		}
94802
		}
8003
		else if ( order == 'current' || order == 'applied' ) {
8004
			if ( search == 'none') {
8005
				a = displayMaster.slice();
8006
			}
8007
			else if ( search == 'applied' ) {
8008
				a = displayFiltered.slice();
8009
			}
8010
			else if ( search == 'removed' ) {
8011
				// O(n+m) solution by creating a hash map
8012
				var displayFilteredMap = {};
8013
	
94803
	
8014
				for ( i=0, iLen=displayFiltered.length ; i<iLen ; i++ ) {
94804
		// The default built in options need to apply to row and columns
8015
					displayFilteredMap[displayFiltered[i]] = null;
94805
		var internalOpts = opts ? {
94806
			page: opts.page,
94807
			order: opts.order,
94808
			search: opts.search
94809
		} : {};
94810
	
94811
		// Row + column selector
94812
		var columns = this.columns( columnSelector, internalOpts );
94813
		var rows = this.rows( rowSelector, internalOpts );
94814
		var i, iLen, j, jen;
94815
	
94816
		var cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {
94817
			var a = [];
94818
94819
			for ( i=0, iLen=rows[idx].length ; i<iLen ; i++ ) {
94820
				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
94821
					a.push( {
94822
						row:    rows[idx][i],
94823
						column: columns[idx][j]
94824
					} );
8016
				}
94825
				}
8017
	
8018
				displayMaster.forEach(function (item) {
8019
					if (! Object.prototype.hasOwnProperty.call(displayFilteredMap, item)) {
8020
						a.push(item);
8021
					}
8022
				});
8023
			}
94826
			}
8024
		}
8025
		else if ( order == 'index' || order == 'original' ) {
8026
			for ( i=0, iLen=settings.aoData.length ; i<iLen ; i++ ) {
8027
				if (! settings.aoData[i]) {
8028
					continue;
8029
				}
8030
	
94827
	
8031
				if ( search == 'none' ) {
94828
			return a;
8032
					a.push( i );
94829
		}, 1 );
8033
				}
8034
				else { // applied | removed
8035
					tmp = displayFiltered.indexOf(i);
8036
	
94830
	
8037
					if ((tmp === -1 && search == 'removed') ||
94831
		// There is currently only one extension which uses a cell selector extension
8038
						(tmp >= 0   && search == 'applied') )
94832
		// It is a _major_ performance drag to run this if it isn't needed, so this is
8039
					{
94833
		// an extension specific check at the moment
8040
						a.push( i );
94834
		var cells = opts && opts.selected ?
8041
					}
94835
			this.cells( cellsNoOpts, opts ) :
8042
				}
94836
			cellsNoOpts;
8043
			}
8044
		}
8045
		else if ( typeof order === 'number' ) {
8046
			// Order the rows by the given column
8047
			var ordered = _fnSort(settings, order, 'asc');
8048
	
94837
	
8049
			if (search === 'none') {
94838
		$.extend( cells.selector, {
8050
				a = ordered;
94839
			cols: columnSelector,
8051
			}
94840
			rows: rowSelector,
8052
			else { // applied | removed
94841
			opts: opts
8053
				for (i=0; i<ordered.length; i++) {
94842
		} );
8054
					tmp = displayFiltered.indexOf(ordered[i]);
8055
	
94843
	
8056
					if ((tmp === -1 && search == 'removed') ||
94844
		return cells;
8057
						(tmp >= 0   && search == 'applied') )
94845
	} );
8058
					{
8059
						a.push( ordered[i] );
8060
					}
8061
				}
8062
			}
8063
		}
8064
	
94846
	
8065
		return a;
8066
	};
8067
	
94847
	
94848
	_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {
94849
		return this.iterator( 'cell', function ( settings, row, column ) {
94850
			var data = settings.aoData[ row ];
8068
	
94851
	
8069
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
94852
			return data && data.anCells ?
8070
	 * Rows
94853
				data.anCells[ column ] :
8071
	 *
94854
				undefined;
8072
	 * {}          - no selector - use all available rows
94855
		}, 1 );
8073
	 * {integer}   - row aoData index
94856
	} );
8074
	 * {node}      - TR node
8075
	 * {string}    - jQuery selector to apply to the TR elements
8076
	 * {array}     - jQuery array of nodes, or simply an array of TR nodes
8077
	 *
8078
	 */
8079
	var __row_selector = function ( settings, selector, opts )
8080
	{
8081
		var rows;
8082
		var run = function ( sel ) {
8083
			var selInt = _intVal( sel );
8084
			var aoData = settings.aoData;
8085
	
94857
	
8086
			// Short cut - selector is a number and no options provided (default is
8087
			// all records, so no need to check if the index is in there, since it
8088
			// must be - dev error if the index doesn't exist).
8089
			if ( selInt !== null && ! opts ) {
8090
				return [ selInt ];
8091
			}
8092
	
94858
	
8093
			if ( ! rows ) {
94859
	_api_register( 'cells().data()', function () {
8094
				rows = _selector_row_indexes( settings, opts );
94860
		return this.iterator( 'cell', function ( settings, row, column ) {
8095
			}
94861
			return _fnGetCellData( settings, row, column );
94862
		}, 1 );
94863
	} );
8096
	
94864
	
8097
			if ( selInt !== null && rows.indexOf(selInt) !== -1 ) {
94865
8098
				// Selector - integer
94866
	_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {
8099
				return [ selInt ];
94867
		type = type === 'search' ? '_aFilterData' : '_aSortData';
8100
			}
94868
8101
			else if ( sel === null || sel === undefined || sel === '' ) {
94869
		return this.iterator( 'cell', function ( settings, row, column ) {
8102
				// Selector - none
94870
			return settings.aoData[ row ][ type ][ column ];
8103
				return rows;
94871
		}, 1 );
8104
			}
94872
	} );
8105
	
94873
	
8106
			// Selector - function
94874
8107
			if ( typeof sel === 'function' ) {
94875
	_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {
8108
				return rows.map( function (idx) {
94876
		return this.iterator( 'cell', function ( settings, row, column ) {
8109
					var row = aoData[ idx ];
94877
			return _fnGetCellData( settings, row, column, type );
8110
					return sel( idx, row._aData, row.nTr ) ? idx : null;
94878
		}, 1 );
8111
				} );
94879
	} );
8112
			}
8113
	
94880
	
8114
			// Selector - node
94881
8115
			if ( sel.nodeName ) {
94882
	_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {
8116
				var rowIdx = sel._DT_RowIndex;  // Property added by DT for fast lookup
94883
		return this.iterator( 'cell', function ( settings, row, column ) {
8117
				var cellIdx = sel._DT_CellIndex;
94884
			return {
94885
				row: row,
94886
				column: column,
94887
				columnVisible: _fnColumnIndexToVisible( settings, column )
94888
			};
94889
		}, 1 );
94890
	} );
8118
	
94891
	
8119
				if ( rowIdx !== undefined ) {
94892
8120
					// Make sure that the row is actually still present in the table
94893
	_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {
8121
					return aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?
94894
		return this.iterator( 'cell', function ( settings, row, column ) {
8122
						[ rowIdx ] :
94895
			_fnInvalidate( settings, row, src, column );
8123
						[];
94896
		} );
8124
				}
94897
	} );
8125
				else if ( cellIdx ) {
8126
					return aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel.parentNode ?
8127
						[ cellIdx.row ] :
8128
						[];
8129
				}
8130
				else {
8131
					var host = $(sel).closest('*[data-dt-row]');
8132
					return host.length ?
8133
						[ host.data('dt-row') ] :
8134
						[];
8135
				}
8136
			}
8137
	
94898
	
8138
			// ID selector. Want to always be able to select rows by id, regardless
94899
8139
			// of if the tr element has been created or not, so can't rely upon
94900
8140
			// jQuery here - hence a custom implementation. This does not match
94901
	_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {
8141
			// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,
94902
		return _selector_first( this.cells( rowSelector, columnSelector, opts ) );
8142
			// but to select it using a CSS selector engine (like Sizzle or
94903
	} );
8143
			// querySelect) it would need to need to be escaped for some characters.
8144
			// DataTables simplifies this for row selectors since you can select
8145
			// only a row. A # indicates an id any anything that follows is the id -
8146
			// unescaped.
8147
			if ( typeof sel === 'string' && sel.charAt(0) === '#' ) {
8148
				// get row index from id
8149
				var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];
8150
				if ( rowObj !== undefined ) {
8151
					return [ rowObj.idx ];
8152
				}
8153
	
94904
	
8154
				// need to fall through to jQuery in case there is DOM id that
8155
				// matches
8156
			}
8157
			
8158
			// Get nodes in the order from the `rows` array with null values removed
8159
			var nodes = _removeEmpty(
8160
				_pluck_order( settings.aoData, rows, 'nTr' )
8161
			);
8162
	
94905
	
8163
			// Selector - jQuery selector string, array of nodes or jQuery object/
94906
	_api_register( 'cell().data()', function ( data ) {
8164
			// As jQuery's .filter() allows jQuery objects to be passed in filter,
94907
		var ctx = this.context;
8165
			// it also allows arrays, so this will cope with all three options
94908
		var cell = this[0];
8166
			return $(nodes)
94909
8167
				.filter( sel )
94910
		if ( data === undefined ) {
8168
				.map( function () {
94911
			// Get
8169
					return this._DT_RowIndex;
94912
			return ctx.length && cell.length ?
8170
				} )
94913
				_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :
8171
				.toArray();
94914
				undefined;
8172
		};
94915
		}
8173
	
94916
	
8174
		var matched = _selector_run( 'row', selector, run, settings, opts );
94917
		// Set
94918
		_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );
94919
		_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );
94920
94921
		return this;
94922
	} );
94923
	
94924
	
94925
	
94926
	/**
94927
	 * Get current ordering (sorting) that has been applied to the table.
94928
	 *
94929
	 * @returns {array} 2D array containing the sorting information for the first
94930
	 *   table in the current context. Each element in the parent array represents
94931
	 *   a column being sorted upon (i.e. multi-sorting with two columns would have
94932
	 *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is
94933
	 *   the column index that the sorting condition applies to, the second is the
94934
	 *   direction of the sort (`desc` or `asc`) and, optionally, the third is the
94935
	 *   index of the sorting order from the `column.sorting` initialisation array.
94936
	 *//**
94937
	 * Set the ordering for the table.
94938
	 *
94939
	 * @param {integer} order Column index to sort upon.
94940
	 * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)
94941
	 * @returns {DataTables.Api} this
94942
	 *//**
94943
	 * Set the ordering for the table.
94944
	 *
94945
	 * @param {array} order 1D array of sorting information to be applied.
94946
	 * @param {array} [...] Optional additional sorting conditions
94947
	 * @returns {DataTables.Api} this
94948
	 *//**
94949
	 * Set the ordering for the table.
94950
	 *
94951
	 * @param {array} order 2D array of sorting information to be applied.
94952
	 * @returns {DataTables.Api} this
94953
	 */
94954
	_api_register( 'order()', function ( order, dir ) {
94955
		var ctx = this.context;
94956
		var args = Array.prototype.slice.call( arguments );
8175
	
94957
	
8176
		if (opts.order === 'current' || opts.order === 'applied') {
94958
		if ( order === undefined ) {
8177
			_fnSortDisplay(settings, matched);
94959
			// get
94960
			return ctx.length !== 0 ?
94961
				ctx[0].aaSorting :
94962
				undefined;
8178
		}
94963
		}
8179
	
94964
	
8180
		return matched;
94965
		// set
8181
	};
94966
		if ( typeof order === 'number' ) {
8182
	
94967
			// Simple column / direction passed in
8183
	
94968
			order = [ [ order, dir ] ];
8184
	_api_register( 'rows()', function ( selector, opts ) {
8185
		// argument shifting
8186
		if ( selector === undefined ) {
8187
			selector = '';
8188
		}
94969
		}
8189
		else if ( $.isPlainObject( selector ) ) {
94970
		else if ( args.length > 1 ) {
8190
			opts = selector;
94971
			// Arguments passed in (list of 1D arrays)
8191
			selector = '';
94972
			order = args;
8192
		}
94973
		}
94974
		// otherwise a 2D array was passed in
8193
	
94975
	
8194
		opts = _selector_opts( opts );
94976
		return this.iterator( 'table', function ( settings ) {
94977
			var resolved = [];
94978
			_fnSortResolve(settings, resolved, order);
94979
94980
			settings.aaSorting = resolved;
94981
		} );
94982
	} );
8195
	
94983
	
8196
		var inst = this.iterator( 'table', function ( settings ) {
94984
8197
			return __row_selector( settings, selector, opts );
94985
	/**
8198
		}, 1 );
94986
	 * Attach a sort listener to an element for a given column
94987
	 *
94988
	 * @param {node|jQuery|string} node Identifier for the element(s) to attach the
94989
	 *   listener to. This can take the form of a single DOM node, a jQuery
94990
	 *   collection of nodes or a jQuery selector which will identify the node(s).
94991
	 * @param {integer} column the column that a click on this node will sort on
94992
	 * @param {function} [callback] callback function when sort is run
94993
	 * @returns {DataTables.Api} this
94994
	 */
94995
	_api_register( 'order.listener()', function ( node, column, callback ) {
94996
		return this.iterator( 'table', function ( settings ) {
94997
			_fnSortAttachListener(settings, node, {}, column, callback);
94998
		} );
94999
	} );
8199
	
95000
	
8200
		// Want argument shifting here and in __row_selector?
8201
		inst.selector.rows = selector;
8202
		inst.selector.opts = opts;
8203
	
95001
	
8204
		return inst;
95002
	_api_register( 'order.fixed()', function ( set ) {
95003
		if ( ! set ) {
95004
			var ctx = this.context;
95005
			var fixed = ctx.length ?
95006
				ctx[0].aaSortingFixed :
95007
				undefined;
95008
95009
			return Array.isArray( fixed ) ?
95010
				{ pre: fixed } :
95011
				fixed;
95012
		}
95013
95014
		return this.iterator( 'table', function ( settings ) {
95015
			settings.aaSortingFixed = $.extend( true, {}, set );
95016
		} );
8205
	} );
95017
	} );
95018
95019
95020
	// Order by the selected column(s)
95021
	_api_register( [
95022
		'columns().order()',
95023
		'column().order()'
95024
	], function ( dir ) {
95025
		var that = this;
8206
	
95026
	
8207
	_api_register( 'rows().nodes()', function () {
95027
		if ( ! dir ) {
8208
		return this.iterator( 'row', function ( settings, row ) {
95028
			return this.iterator( 'column', function ( settings, idx ) {
8209
			return settings.aoData[ row ].nTr || undefined;
95029
				var sort = _fnSortFlatten( settings );
8210
		}, 1 );
8211
	} );
8212
	
95030
	
8213
	_api_register( 'rows().data()', function () {
95031
				for ( var i=0, iLen=sort.length ; i<iLen ; i++ ) {
8214
		return this.iterator( true, 'rows', function ( settings, rows ) {
95032
					if ( sort[i].col === idx ) {
8215
			return _pluck_order( settings.aoData, rows, '_aData' );
95033
						return sort[i].dir;
8216
		}, 1 );
95034
					}
95035
				}
95036
	
95037
				return null;
95038
			}, 1 );
95039
		}
95040
		else {
95041
			return this.iterator( 'table', function ( settings, i ) {
95042
				settings.aaSorting = that[i].map( function (col) {
95043
					return [ col, dir ];
95044
				} );
95045
			} );
95046
		}
8217
	} );
95047
	} );
8218
	
95048
	
8219
	_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
95049
	_api_registerPlural('columns().orderable()', 'column().orderable()', function ( directions ) {
8220
		return this.iterator( 'row', function ( settings, row ) {
95050
		return this.iterator( 'column', function ( settings, idx ) {
8221
			var r = settings.aoData[ row ];
95051
			var col = settings.aoColumns[idx];
8222
			return type === 'search' ? r._aFilterData : r._aSortData;
95052
	
95053
			return directions ?
95054
				col.asSorting :
95055
				col.bSortable;
8223
		}, 1 );
95056
		}, 1 );
8224
	} );
95057
	} );
8225
	
95058
	
8226
	_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
95059
	
8227
		return this.iterator( 'row', function ( settings, row ) {
95060
	_api_register( 'processing()', function ( show ) {
8228
			_fnInvalidate( settings, row, src );
95061
		return this.iterator( 'table', function ( ctx ) {
95062
			_fnProcessingDisplay( ctx, show );
8229
		} );
95063
		} );
8230
	} );
95064
	} );
8231
	
95065
	
8232
	_api_registerPlural( 'rows().indexes()', 'row().index()', function () {
8233
		return this.iterator( 'row', function ( settings, row ) {
8234
			return row;
8235
		}, 1 );
8236
	} );
8237
	
95066
	
8238
	_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
95067
	_api_register( 'search()', function ( input, regex, smart, caseInsen ) {
8239
		var a = [];
95068
		var ctx = this.context;
8240
		var context = this.context;
8241
	
95069
	
8242
		// `iterator` will drop undefined values, but in this case we want them
95070
		if ( input === undefined ) {
8243
		for ( var i=0, iLen=context.length ; i<iLen ; i++ ) {
95071
			// get
8244
			for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
95072
			return ctx.length !== 0 ?
8245
				var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
95073
				ctx[0].oPreviousSearch.search :
8246
				a.push( (hash === true ? '#' : '' )+ id );
95074
				undefined;
8247
			}
8248
		}
95075
		}
8249
	
95076
	
8250
		return new _Api( context, a );
95077
		// set
8251
	} );
95078
		return this.iterator( 'table', function ( settings ) {
8252
	
95079
			if ( ! settings.oFeatures.bFilter ) {
8253
	_api_registerPlural( 'rows().remove()', 'row().remove()', function () {
95080
				return;
8254
		this.iterator( 'row', function ( settings, row ) {
8255
			var data = settings.aoData;
8256
			var rowData = data[ row ];
8257
	
8258
			// Delete from the display arrays
8259
			var idx = settings.aiDisplayMaster.indexOf(row);
8260
			if (idx !== -1) {
8261
				settings.aiDisplayMaster.splice(idx, 1);
8262
			}
95081
			}
8263
	
95082
	
8264
			// For server-side processing tables - subtract the deleted row from the count
95083
			if (typeof regex === 'object') {
8265
			if ( settings._iRecordsDisplay > 0 ) {
95084
				// New style options to pass to the search builder
8266
				settings._iRecordsDisplay--;
95085
				_fnFilterComplete( settings, $.extend( settings.oPreviousSearch, regex, {
95086
					search: input
95087
				} ) );
95088
			}
95089
			else {
95090
				// Compat for the old options
95091
				_fnFilterComplete( settings, $.extend( settings.oPreviousSearch, {
95092
					search: input,
95093
					regex:  regex === null ? false : regex,
95094
					smart:  smart === null ? true  : smart,
95095
					caseInsensitive: caseInsen === null ? true : caseInsen
95096
				} ) );
8267
			}
95097
			}
95098
		} );
95099
	} );
8268
	
95100
	
8269
			// Check for an 'overflow' they case for displaying the table
95101
	_api_register( 'search.fixed()', function ( name, search ) {
8270
			_fnLengthOverflow( settings );
95102
		var ret = this.iterator( true, 'table', function ( settings ) {
95103
			var fixed = settings.searchFixed;
8271
	
95104
	
8272
			// Remove the row's ID reference if there is one
95105
			if (! name) {
8273
			var id = settings.rowIdFn( rowData._aData );
95106
				return Object.keys(fixed);
8274
			if ( id !== undefined ) {
8275
				delete settings.aIds[ id ];
8276
			}
95107
			}
8277
	
95108
			else if (search === undefined) {
8278
			data[row] = null;
95109
				return fixed[name];
95110
			}
95111
			else if (search === null) {
95112
				delete fixed[name];
95113
			}
95114
			else {
95115
				fixed[name] = search;
95116
			}
95117
95118
			return this;
8279
		} );
95119
		} );
8280
	
95120
	
8281
		return this;
95121
		return name !== undefined && search === undefined
95122
			? ret[0]
95123
			: ret;
8282
	} );
95124
	} );
8283
	
95125
	
95126
	_api_registerPlural(
95127
		'columns().search()',
95128
		'column().search()',
95129
		function ( input, regex, smart, caseInsen ) {
95130
			return this.iterator( 'column', function ( settings, column ) {
95131
				var preSearch = settings.aoPreSearchCols;
8284
	
95132
	
8285
	_api_register( 'rows.add()', function ( rows ) {
95133
				if ( input === undefined ) {
8286
		var newRows = this.iterator( 'table', function ( settings ) {
95134
					// get
8287
				var row, i, iLen;
95135
					return preSearch[ column ].search;
8288
				var out = [];
95136
				}
8289
	
95137
	
8290
				for ( i=0, iLen=rows.length ; i<iLen ; i++ ) {
95138
				// set
8291
					row = rows[i];
95139
				if ( ! settings.oFeatures.bFilter ) {
95140
					return;
95141
				}
8292
	
95142
	
8293
					if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
95143
				if (typeof regex === 'object') {
8294
						out.push( _fnAddTr( settings, row )[0] );
95144
					// New style options to pass to the search builder
8295
					}
95145
					$.extend( preSearch[ column ], regex, {
8296
					else {
95146
						search: input
8297
						out.push( _fnAddData( settings, row ) );
95147
					} );
8298
					}
95148
				}
95149
				else {
95150
					// Old style (with not all options available)
95151
					$.extend( preSearch[ column ], {
95152
						search: input,
95153
						regex:  regex === null ? false : regex,
95154
						smart:  smart === null ? true  : smart,
95155
						caseInsensitive: caseInsen === null ? true : caseInsen
95156
					} );
8299
				}
95157
				}
8300
	
95158
	
8301
				return out;
95159
				_fnFilterComplete( settings, settings.oPreviousSearch );
8302
			}, 1 );
95160
			} );
8303
	
95161
		}
8304
		// Return an Api.rows() extended instance, so rows().nodes() etc can be used
95162
	);
8305
		var modRows = this.rows( -1 );
8306
		modRows.pop();
8307
		_fnArrayApply(modRows, newRows);
8308
	
8309
		return modRows;
8310
	} );
8311
	
8312
	
95163
	
95164
	_api_register([
95165
			'columns().search.fixed()',
95166
			'column().search.fixed()'
95167
		],
95168
		function ( name, search ) {
95169
			var ret = this.iterator( true, 'column', function ( settings, colIdx ) {
95170
				var fixed = settings.aoColumns[colIdx].searchFixed;
8313
	
95171
	
95172
				if (! name) {
95173
					return Object.keys(fixed);
95174
				}
95175
				else if (search === undefined) {
95176
					return fixed[name] || null;
95177
				}
95178
				else if (search === null) {
95179
					delete fixed[name];
95180
				}
95181
				else {
95182
					fixed[name] = search;
95183
				}
8314
	
95184
	
95185
				return this;
95186
			} );
8315
	
95187
	
8316
	/**
95188
			return name !== undefined && search === undefined
8317
	 *
95189
				? ret[0]
95190
				: ret;
95191
		}
95192
	);
95193
	/*
95194
	 * State API methods
8318
	 */
95195
	 */
8319
	_api_register( 'row()', function ( selector, opts ) {
8320
		return _selector_first( this.rows( selector, opts ) );
8321
	} );
8322
	
8323
	
8324
	_api_register( 'row().data()', function ( data ) {
8325
		var ctx = this.context;
8326
	
95196
	
8327
		if ( data === undefined ) {
95197
	_api_register( 'state()', function ( set, ignoreTime ) {
8328
			// Get
95198
		// getter
8329
			return ctx.length && this.length && this[0].length ?
95199
		if ( ! set ) {
8330
				ctx[0].aoData[ this[0] ]._aData :
95200
			return this.context.length ?
8331
				undefined;
95201
				this.context[0].oSavedState :
95202
				null;
8332
		}
95203
		}
8333
	
95204
	
8334
		// Set
95205
		var setMutate = $.extend( true, {}, set );
8335
		var row = ctx[0].aoData[ this[0] ];
8336
		row._aData = data;
8337
	
8338
		// If the DOM has an id, and the data source is an array
8339
		if ( Array.isArray( data ) && row.nTr && row.nTr.id ) {
8340
			_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );
8341
		}
8342
	
95206
	
8343
		// Automatically invalidate
95207
		// setter
8344
		_fnInvalidate( ctx[0], this[0], 'data' );
95208
		return this.iterator( 'table', function ( settings ) {
95209
			if ( ignoreTime !== false ) {
95210
				setMutate.time = +new Date() + 100;
95211
			}
8345
	
95212
	
8346
		return this;
95213
			_fnImplementState( settings, setMutate, function(){} );
95214
		} );
8347
	} );
95215
	} );
8348
	
95216
	
8349
	
95217
	
8350
	_api_register( 'row().node()', function () {
95218
	_api_register( 'state.clear()', function () {
8351
		var ctx = this.context;
95219
		return this.iterator( 'table', function ( settings ) {
8352
	
95220
			// Save an empty object
8353
		if (ctx.length && this.length && this[0].length) {
95221
			settings.fnStateSaveCallback.call( settings.oInstance, settings, {} );
8354
			var row = ctx[0].aoData[ this[0] ];
95222
		} );
95223
	} );
8355
	
95224
	
8356
			if (row && row.nTr) {
8357
				return row.nTr;
8358
			}
8359
		}
8360
	
95225
	
8361
		return null;
95226
	_api_register( 'state.loaded()', function () {
95227
		return this.context.length ?
95228
			this.context[0].oLoadedState :
95229
			null;
8362
	} );
95230
	} );
8363
	
95231
	
8364
	
95232
	
8365
	_api_register( 'row.add()', function ( row ) {
95233
	_api_register( 'state.save()', function () {
8366
		// Allow a jQuery object to be passed in - only a single row is added from
95234
		return this.iterator( 'table', function ( settings ) {
8367
		// it though - the first element in the set
95235
			_fnSaveState( settings );
8368
		if ( row instanceof $ && row.length ) {
8369
			row = row[0];
8370
		}
8371
	
8372
		var rows = this.iterator( 'table', function ( settings ) {
8373
			if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {
8374
				return _fnAddTr( settings, row )[0];
8375
			}
8376
			return _fnAddData( settings, row );
8377
		} );
95236
		} );
8378
	
8379
		// Return an Api.rows() extended instance, with the newly added row selected
8380
		return this.row( rows[0] );
8381
	} );
95237
	} );
8382
	
95238
	
95239
	// Can be assigned in DateTable.use() - note luxon and moment vars are in helpers.js
95240
	var __bootstrap;
95241
	var __foundation;
8383
	
95242
	
8384
	$(document).on('plugin-init.dt', function (e, context) {
95243
	/**
8385
		var api = new _Api( context );
95244
	 * Set the libraries that DataTables uses, or the global objects.
95245
	 * Note that the arguments can be either way around (legacy support)
95246
	 * and the second is optional. See docs.
95247
	 */
95248
	DataTable.use = function (arg1, arg2) {
95249
		// Reverse arguments for legacy support
95250
		var module = typeof arg1 === 'string'
95251
			? arg2
95252
			: arg1;
95253
		var type = typeof arg2 === 'string'
95254
			? arg2
95255
			: arg1;
8386
	
95256
	
8387
		api.on( 'stateSaveParams.DT', function ( e, settings, d ) {
95257
		// Getter
8388
			// This could be more compact with the API, but it is a lot faster as a simple
95258
		if (module === undefined && typeof type === 'string') {
8389
			// internal loop
95259
			switch (type) {
8390
			var idFn = settings.rowIdFn;
95260
				case 'lib':
8391
			var rows = settings.aiDisplayMaster;
95261
				case 'jq':
8392
			var ids = [];
95262
					return $;
8393
	
95263
	
8394
			for (var i=0 ; i<rows.length ; i++) {
95264
				case 'win':
8395
				var rowIdx = rows[i];
95265
					return window;
8396
				var data = settings.aoData[rowIdx];
8397
	
95266
	
8398
				if (data._detailsShow) {
95267
				case 'datetime':
8399
					ids.push( '#' + idFn(data._aData) );
95268
					return DataTable.DateTime;
8400
				}
8401
			}
8402
	
95269
	
8403
			d.childRows = ids;
95270
				case 'luxon':
8404
		});
95271
					return __luxon;
8405
	
95272
	
8406
		// For future state loads (e.g. with StateRestore)
95273
				case 'moment':
8407
		api.on( 'stateLoaded.DT', function (e, settings, state) {
95274
					return __moment;
8408
			__details_state_load( api, state );
8409
		});
8410
	
95275
	
8411
		// And the initial load state
95276
				case 'bootstrap':
8412
		__details_state_load( api, api.state.loaded() );
95277
					// Use local if set, otherwise try window, which could be undefined
8413
	});
95278
					return __bootstrap || window.bootstrap;
8414
	
95279
	
8415
	var __details_state_load = function (api, state)
95280
				case 'foundation':
8416
	{
95281
					// Ditto
8417
		if ( state && state.childRows ) {
95282
					return __foundation || window.Foundation;
8418
			api
8419
				.rows( state.childRows.map(function (id) {
8420
					// Escape any `:` characters from the row id. Accounts for
8421
					// already escaped characters.
8422
					return id.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g, "$1\\:");
8423
				}) )
8424
				.every( function () {
8425
					_fnCallbackFire( api.settings()[0], null, 'requestChild', [ this ] )
8426
				});
8427
		}
8428
	}
8429
	
95283
	
8430
	var __details_add = function ( ctx, row, data, klass )
95284
				default:
8431
	{
95285
					return null;
8432
		// Convert to array of TR elements
8433
		var rows = [];
8434
		var addRow = function ( r, k ) {
8435
			// Recursion to allow for arrays of jQuery objects
8436
			if ( Array.isArray( r ) || r instanceof $ ) {
8437
				for ( var i=0, iLen=r.length ; i<iLen ; i++ ) {
8438
					addRow( r[i], k );
8439
				}
8440
				return;
8441
			}
95286
			}
95287
		}
8442
	
95288
	
8443
			// If we get a TR element, then just add it directly - up to the dev
95289
		// Setter
8444
			// to add the correct number of columns etc
95290
		if (type === 'lib' || type === 'jq' || (module && module.fn && module.fn.jquery)) {
8445
			if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {
95291
			$ = module;
8446
				r.setAttribute( 'data-dt-row', row.idx );
95292
		}
8447
				rows.push( r );
95293
		else if (type === 'win' || (module && module.document)) {
8448
			}
95294
			window = module;
8449
			else {
95295
			document = module.document;
8450
				// Otherwise create a row with a wrapper
95296
		}
8451
				var created = $('<tr><td></td></tr>')
95297
		else if (type === 'datetime' || (module && module.type === 'DateTime')) {
8452
					.attr( 'data-dt-row', row.idx )
95298
			DataTable.DateTime = module;
8453
					.addClass( k );
95299
		}
8454
				
95300
		else if (type === 'luxon' || (module && module.FixedOffsetZone)) {
8455
				$('td', created)
95301
			__luxon = module;
8456
					.addClass( k )
95302
		}
8457
					.html( r )[0].colSpan = _fnVisibleColumns( ctx );
95303
		else if (type === 'moment' || (module && module.isMoment)) {
95304
			__moment = module;
95305
		}
95306
		else if (type === 'bootstrap' || (module && module.Modal && module.Modal.NAME === 'modal'))
95307
		{
95308
			// This is currently for BS5 only. BS3/4 attach to jQuery, so no need to use `.use()`
95309
			__bootstrap = module;
95310
		}
95311
		else if (type === 'foundation' || (module && module.Reveal)) {
95312
			__foundation = module;
95313
		}
95314
	}
8458
	
95315
	
8459
				rows.push( created[0] );
95316
	/**
8460
			}
95317
	 * CommonJS factory function pass through. This will check if the arguments
8461
		};
95318
	 * given are a window object or a jQuery object. If so they are set
95319
	 * accordingly.
95320
	 * @param {*} root Window
95321
	 * @param {*} jq jQUery
95322
	 * @returns {boolean} Indicator
95323
	 */
95324
	DataTable.factory = function (root, jq) {
95325
		var is = false;
8462
	
95326
	
8463
		addRow( data, klass );
95327
		// Test if the first parameter is a window object
95328
		if (root && root.document) {
95329
			window = root;
95330
			document = root.document;
95331
		}
8464
	
95332
	
8465
		if ( row._details ) {
95333
		// Test if the second parameter is a jQuery object
8466
			row._details.detach();
95334
		if (jq && jq.fn && jq.fn.jquery) {
95335
			$ = jq;
95336
			is = true;
8467
		}
95337
		}
8468
	
95338
	
8469
		row._details = $(rows);
95339
		return is;
95340
	}
8470
	
95341
	
8471
		// If the children were already shown, that state should be retained
95342
	/**
8472
		if ( row._detailsShow ) {
95343
	 * Provide a common method for plug-ins to check the version of DataTables being
8473
			row._details.insertAfter( row.nTr );
95344
	 * used, in order to ensure compatibility.
8474
		}
95345
	 *
8475
	};
95346
	 *  @param {string} version Version string to check for, in the format "X.Y.Z".
95347
	 *    Note that the formats "X" and "X.Y" are also acceptable.
95348
	 *  @param {string} [version2=current DataTables version] As above, but optional.
95349
	 *   If not given the current DataTables version will be used.
95350
	 *  @returns {boolean} true if this version of DataTables is greater or equal to
95351
	 *    the required version, or false if this version of DataTales is not
95352
	 *    suitable
95353
	 *  @static
95354
	 *  @dtopt API-Static
95355
	 *
95356
	 *  @example
95357
	 *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );
95358
	 */
95359
	DataTable.versionCheck = function( version, version2 )
95360
	{
95361
		var aThis = version2 ?
95362
			version2.split('.') :
95363
			DataTable.version.split('.');
95364
		var aThat = version.split('.');
95365
		var iThis, iThat;
8476
	
95366
	
95367
		for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {
95368
			iThis = parseInt( aThis[i], 10 ) || 0;
95369
			iThat = parseInt( aThat[i], 10 ) || 0;
95370
95371
			// Parts are the same, keep comparing
95372
			if (iThis === iThat) {
95373
				continue;
95374
			}
8477
	
95375
	
8478
	// Make state saving of child row details async to allow them to be batch processed
95376
			// Parts are different, return immediately
8479
	var __details_state = DataTable.util.throttle(
95377
			return iThis > iThat;
8480
		function (ctx) {
95378
		}
8481
			_fnSaveState( ctx[0] )
95379
8482
		},
95380
		return true;
8483
		500
95381
	};
8484
	);
8485
	
95382
	
8486
	
95383
	
8487
	var __details_remove = function ( api, idx )
95384
	/**
95385
	 * Check if a `<table>` node is a DataTable table already or not.
95386
	 *
95387
	 *  @param {node|jquery|string} table Table node, jQuery object or jQuery
95388
	 *      selector for the table to test. Note that if more than more than one
95389
	 *      table is passed on, only the first will be checked
95390
	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
95391
	 *  @static
95392
	 *  @dtopt API-Static
95393
	 *
95394
	 *  @example
95395
	 *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
95396
	 *      $('#example').dataTable();
95397
	 *    }
95398
	 */
95399
	DataTable.isDataTable = function ( table )
8488
	{
95400
	{
8489
		var ctx = api.context;
95401
		var t = $(table).get(0);
95402
		var is = false;
8490
	
95403
	
8491
		if ( ctx.length ) {
95404
		if ( table instanceof DataTable.Api ) {
8492
			var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
95405
			return true;
95406
		}
8493
	
95407
	
8494
			if ( row && row._details ) {
95408
		$.each( DataTable.settings, function (i, o) {
8495
				row._details.detach();
95409
			var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
95410
			var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
8496
	
95411
	
8497
				row._detailsShow = undefined;
95412
			if ( o.nTable === t || head === t || foot === t ) {
8498
				row._details = undefined;
95413
				is = true;
8499
				$( row.nTr ).removeClass( 'dt-hasChild' );
8500
				__details_state( ctx );
8501
			}
95414
			}
8502
		}
95415
		} );
8503
	};
8504
	
8505
	
95416
	
8506
	var __details_display = function ( api, show ) {
95417
		return is;
8507
		var ctx = api.context;
95418
	};
8508
	
95419
	
8509
		if ( ctx.length && api.length ) {
8510
			var row = ctx[0].aoData[ api[0] ];
8511
	
95420
	
8512
			if ( row._details ) {
95421
	/**
8513
				row._detailsShow = show;
95422
	 * Get all DataTable tables that have been initialised - optionally you can
95423
	 * select to get only currently visible tables.
95424
	 *
95425
	 *  @param {boolean} [visible=false] Flag to indicate if you want all (default)
95426
	 *    or visible tables only.
95427
	 *  @returns {array} Array of `table` nodes (not DataTable instances) which are
95428
	 *    DataTables
95429
	 *  @static
95430
	 *  @dtopt API-Static
95431
	 *
95432
	 *  @example
95433
	 *    $.each( $.fn.dataTable.tables(true), function () {
95434
	 *      $(table).DataTable().columns.adjust();
95435
	 *    } );
95436
	 */
95437
	DataTable.tables = function ( visible )
95438
	{
95439
		var api = false;
8514
	
95440
	
8515
				if ( show ) {
95441
		if ( $.isPlainObject( visible ) ) {
8516
					row._details.insertAfter( row.nTr );
95442
			api = visible.api;
8517
					$( row.nTr ).addClass( 'dt-hasChild' );
95443
			visible = visible.visible;
8518
				}
95444
		}
8519
				else {
8520
					row._details.detach();
8521
					$( row.nTr ).removeClass( 'dt-hasChild' );
8522
				}
8523
	
95445
	
8524
				_fnCallbackFire( ctx[0], null, 'childRow', [ show, api.row( api[0] ) ] )
95446
		var a = DataTable.settings
95447
			.filter( function (o) {
95448
				return !visible || (visible && $(o.nTable).is(':visible'))
95449
					? true
95450
					: false;
95451
			} )
95452
			.map( function (o) {
95453
				return o.nTable;
95454
			});
8525
	
95455
	
8526
				__details_events( ctx[0] );
95456
		return api ?
8527
				__details_state( ctx );
95457
			new _Api( a ) :
8528
			}
95458
			a;
8529
		}
8530
	};
95459
	};
8531
	
95460
	
8532
	
95461
	
8533
	var __details_events = function ( settings )
95462
	/**
8534
	{
95463
	 * Convert from camel case parameters to Hungarian notation. This is made public
8535
		var api = new _Api( settings );
95464
	 * for the extensions to provide the same ability as DataTables core to accept
8536
		var namespace = '.dt.DT_details';
95465
	 * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
8537
		var drawEvent = 'draw'+namespace;
95466
	 * parameters.
8538
		var colvisEvent = 'column-sizing'+namespace;
95467
	 *
8539
		var destroyEvent = 'destroy'+namespace;
95468
	 *  @param {object} src The model object which holds all parameters that can be
8540
		var data = settings.aoData;
95469
	 *    mapped.
8541
	
95470
	 *  @param {object} user The object to convert from camel case to Hungarian.
8542
		api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );
95471
	 *  @param {boolean} force When set to `true`, properties which already have a
95472
	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
95473
	 *    won't be.
95474
	 */
95475
	DataTable.camelToHungarian = _fnCamelToHungarian;
8543
	
95476
	
8544
		if ( _pluck( data, '_details' ).length > 0 ) {
8545
			// On each draw, insert the required elements into the document
8546
			api.on( drawEvent, function ( e, ctx ) {
8547
				if ( settings !== ctx ) {
8548
					return;
8549
				}
8550
	
95477
	
8551
				api.rows( {page:'current'} ).eq(0).each( function (idx) {
8552
					// Internal data grab
8553
					var row = data[ idx ];
8554
	
95478
	
8555
					if ( row._detailsShow ) {
95479
	/**
8556
						row._details.insertAfter( row.nTr );
95480
	 *
8557
					}
95481
	 */
8558
				} );
95482
	_api_register( '$()', function ( selector, opts ) {
8559
			} );
95483
		var
95484
			rows   = this.rows( opts ).nodes(), // Get all rows
95485
			jqRows = $(rows);
8560
	
95486
	
8561
			// Column visibility change - update the colspan
95487
		return $( [].concat(
8562
			api.on( colvisEvent, function ( e, ctx ) {
95488
			jqRows.filter( selector ).toArray(),
8563
				if ( settings !== ctx ) {
95489
			jqRows.find( selector ).toArray()
8564
					return;
95490
		) );
8565
				}
95491
	} );
8566
	
95492
	
8567
				// Update the colspan for the details rows (note, only if it already has
8568
				// a colspan)
8569
				var row, visible = _fnVisibleColumns( ctx );
8570
	
95493
	
8571
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
95494
	// jQuery functions to operate on the tables
8572
					row = data[i];
95495
	$.each( [ 'on', 'one', 'off' ], function (i, key) {
95496
		_api_register( key+'()', function ( /* event, handler */ ) {
95497
			var args = Array.prototype.slice.call(arguments);
8573
	
95498
	
8574
					if ( row && row._details ) {
95499
			// Add the `dt` namespace automatically if it isn't already present
8575
						row._details.each(function () {
95500
			args[0] = args[0].split( /\s/ ).map( function ( e ) {
8576
							var el = $(this).children('td');
95501
				return ! e.match(/\.dt\b/) ?
95502
					e+'.dt' :
95503
					e;
95504
				} ).join( ' ' );
8577
	
95505
	
8578
							if (el.length == 1) {
95506
			var inst = $( this.tables().nodes() );
8579
								el.attr('colspan', visible);
95507
			inst[key].apply( inst, args );
8580
							}
95508
			return this;
8581
						});
95509
		} );
8582
					}
95510
	} );
8583
				}
8584
			} );
8585
	
95511
	
8586
			// Table destroyed - nuke any child rows
8587
			api.on( destroyEvent, function ( e, ctx ) {
8588
				if ( settings !== ctx ) {
8589
					return;
8590
				}
8591
	
95512
	
8592
				for ( var i=0, iLen=data.length ; i<iLen ; i++ ) {
95513
	_api_register( 'clear()', function () {
8593
					if ( data[i] && data[i]._details ) {
95514
		return this.iterator( 'table', function ( settings ) {
8594
						__details_remove( api, i );
95515
			_fnClearTable( settings );
8595
					}
95516
		} );
8596
				}
95517
	} );
8597
			} );
8598
		}
8599
	};
8600
	
95518
	
8601
	// Strings for the method names to help minification
8602
	var _emp = '';
8603
	var _child_obj = _emp+'row().child';
8604
	var _child_mth = _child_obj+'()';
8605
	
95519
	
8606
	// data can be:
95520
	_api_register( 'error()', function (msg) {
8607
	//  tr
95521
		return this.iterator( 'table', function ( settings ) {
8608
	//  string
95522
			_fnLog( settings, 0, msg );
8609
	//  jQuery or array of any of the above
95523
		} );
8610
	_api_register( _child_mth, function ( data, klass ) {
95524
	} );
8611
		var ctx = this.context;
8612
	
95525
	
8613
		if ( data === undefined ) {
8614
			// get
8615
			return ctx.length && this.length && ctx[0].aoData[ this[0] ]
8616
				? ctx[0].aoData[ this[0] ]._details
8617
				: undefined;
8618
		}
8619
		else if ( data === true ) {
8620
			// show
8621
			this.child.show();
8622
		}
8623
		else if ( data === false ) {
8624
			// remove
8625
			__details_remove( this );
8626
		}
8627
		else if ( ctx.length && this.length ) {
8628
			// set
8629
			__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );
8630
		}
8631
	
95526
	
8632
		return this;
95527
	_api_register( 'settings()', function () {
95528
		return new _Api( this.context, this.context );
8633
	} );
95529
	} );
8634
	
95530
	
8635
	
95531
	
8636
	_api_register( [
95532
	_api_register( 'init()', function () {
8637
		_child_obj+'.show()',
95533
		var ctx = this.context;
8638
		_child_mth+'.show()' // only when `child()` was called with parameters (without
95534
		return ctx.length ? ctx[0].oInit : null;
8639
	], function () {         // it returns an object and this method is not executed)
8640
		__details_display( this, true );
8641
		return this;
8642
	} );
95535
	} );
8643
	
95536
	
8644
	
95537
	
8645
	_api_register( [
95538
	_api_register( 'data()', function () {
8646
		_child_obj+'.hide()',
95539
		return this.iterator( 'table', function ( settings ) {
8647
		_child_mth+'.hide()' // only when `child()` was called with parameters (without
95540
			return _pluck( settings.aoData, '_aData' );
8648
	], function () {         // it returns an object and this method is not executed)
95541
		} ).flatten();
8649
		__details_display( this, false );
8650
		return this;
8651
	} );
95542
	} );
8652
	
95543
	
8653
	
95544
	
8654
	_api_register( [
95545
	_api_register( 'trigger()', function ( name, args, bubbles ) {
8655
		_child_obj+'.remove()',
95546
		return this.iterator( 'table', function ( settings ) {
8656
		_child_mth+'.remove()' // only when `child()` was called with parameters (without
95547
			return _fnCallbackFire( settings, null, name, args, bubbles );
8657
	], function () {           // it returns an object and this method is not executed)
95548
		} ).flatten();
8658
		__details_remove( this );
8659
		return this;
8660
	} );
95549
	} );
8661
	
95550
	
8662
	
95551
	
8663
	_api_register( _child_obj+'.isShown()', function () {
95552
	_api_register( 'ready()', function ( fn ) {
8664
		var ctx = this.context;
95553
		var ctx = this.context;
8665
	
95554
	
8666
		if ( ctx.length && this.length && ctx[0].aoData[ this[0] ] ) {
95555
		// Get status of first table
8667
			// _detailsShown as false or undefined will fall through to return false
95556
		if (! fn) {
8668
			return ctx[0].aoData[ this[0] ]._detailsShow || false;
95557
			return ctx.length
95558
				? (ctx[0]._bInitComplete || false)
95559
				: null;
8669
		}
95560
		}
8670
		return false;
8671
	} );
8672
	
95561
	
95562
		// Function to run either once the table becomes ready or
95563
		// immediately if it is already ready.
95564
		return this.tables().every(function () {
95565
			var api = this;
8673
	
95566
	
95567
			if (this.context[0]._bInitComplete) {
95568
				fn.call(api);
95569
			}
95570
			else {
95571
				this.on('init.dt.DT', function () {
95572
					fn.call(api);
95573
				});
95574
			}
95575
		} );
95576
	} );
8674
	
95577
	
8675
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
8676
	 * Columns
8677
	 *
8678
	 * {integer}           - column index (>=0 count from left, <0 count from right)
8679
	 * "{integer}:visIdx"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)
8680
	 * "{integer}:visible" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)
8681
	 * "{string}:name"     - column name
8682
	 * "{string}"          - jQuery selector on column header nodes
8683
	 *
8684
	 */
8685
	
95578
	
8686
	// can be an array of these items, comma separated list, or an array of comma
95579
	_api_register( 'destroy()', function ( remove ) {
8687
	// separated lists
95580
		remove = remove || false;
8688
	
95581
	
8689
	var __re_column_selector = /^([^:]+)?:(name|title|visIdx|visible)$/;
95582
		return this.iterator( 'table', function ( settings ) {
95583
			var classes   = settings.oClasses;
95584
			var table     = settings.nTable;
95585
			var tbody     = settings.nTBody;
95586
			var thead     = settings.nTHead;
95587
			var tfoot     = settings.nTFoot;
95588
			var jqTable   = $(table);
95589
			var jqTbody   = $(tbody);
95590
			var jqWrapper = $(settings.nTableWrapper);
95591
			var rows      = settings.aoData.map( function (r) { return r ? r.nTr : null; } );
95592
			var orderClasses = classes.order;
8690
	
95593
	
95594
			// Flag to note that the table is currently being destroyed - no action
95595
			// should be taken
95596
			settings.bDestroying = true;
8691
	
95597
	
8692
	// r1 and r2 are redundant - but it means that the parameters match for the
95598
			// Fire off the destroy callbacks for plug-ins etc
8693
	// iterator callback in columns().data()
95599
			_fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings], true );
8694
	var __columnData = function ( settings, column, r1, r2, rows, type ) {
8695
		var a = [];
8696
		for ( var row=0, iLen=rows.length ; row<iLen ; row++ ) {
8697
			a.push( _fnGetCellData( settings, rows[row], column, type ) );
8698
		}
8699
		return a;
8700
	};
8701
	
95600
	
95601
			// If not being removed from the document, make all columns visible
95602
			if ( ! remove ) {
95603
				new _Api( settings ).columns().visible( true );
95604
			}
8702
	
95605
	
8703
	var __column_header = function ( settings, column, row ) {
95606
			// Container width change listener
8704
		var header = settings.aoHeader;
95607
			if (settings.resizeObserver) {
8705
		var titleRow = settings.titleRow;
95608
				settings.resizeObserver.disconnect();
8706
		var target = null;
8707
8708
		if (row !== undefined) {
8709
			target = row;
8710
		}
8711
		else if (titleRow === true) { // legacy orderCellsTop support
8712
			target = 0;
8713
		}
8714
		else if (titleRow === false) {
8715
			target = header.length - 1;
8716
		}
8717
		else if (titleRow !== null) {
8718
			target = titleRow;
8719
		}
8720
		else {
8721
			// Automatic - find the _last_ unique cell from the top that is not empty (last for
8722
			// backwards compatibility)
8723
			for (var i=0 ; i<header.length ; i++) {
8724
				if (header[i][column].unique && $('span.dt-column-title', header[i][column].cell).text()) {
8725
					target = i;
8726
				}
8727
			}
95609
			}
8728
95610
	
8729
			if (target === null) {
95611
			// Blitz all `DT` namespaced events (these are internal events, the
8730
				target = 0;
95612
			// lowercase, `dt` events are user subscribed and they are responsible
95613
			// for removing them
95614
			jqWrapper.off('.DT').find(':not(tbody *)').off('.DT');
95615
			$(window).off('.DT-'+settings.sInstance);
95616
	
95617
			// When scrolling we had to break the table up - restore it
95618
			if ( table != thead.parentNode ) {
95619
				jqTable.children('thead').detach();
95620
				jqTable.append( thead );
8731
			}
95621
			}
8732
		}
8733
	
95622
	
8734
		return header[target][column].cell;
95623
			if ( tfoot && table != tfoot.parentNode ) {
8735
	};
95624
				jqTable.children('tfoot').detach();
95625
				jqTable.append( tfoot );
95626
			}
8736
	
95627
	
8737
	var __column_header_cells = function (header) {
95628
			// Clean up the header / footer
8738
		var out = [];
95629
			cleanHeader(thead, 'header');
8739
95630
			cleanHeader(tfoot, 'footer');
8740
		for (var i=0 ; i<header.length ; i++) {
95631
			settings.colgroup.remove();
8741
			for (var j=0 ; j<header[i].length ; j++) {
8742
				var cell = header[i][j].cell;
8743
95632
8744
				if (!out.includes(cell)) {
95633
			settings.aaSorting = [];
8745
					out.push(cell);
95634
			settings.aaSortingFixed = [];
8746
				}
95635
			_fnSortingClasses( settings );
8747
			}
8748
		}
8749
95636
8750
		return out;
95637
			$(jqTable).find('th, td').removeClass(
8751
	}
95638
				$.map(DataTable.ext.type.className, function (v) {
95639
					return v;
95640
				}).join(' ')
95641
			);
8752
95642
8753
	var __column_selector = function ( settings, selector, opts )
95643
			$('th, td', thead)
8754
	{
95644
				.removeClass(
8755
		var
95645
					orderClasses.none + ' ' +
8756
			columns = settings.aoColumns,
95646
					orderClasses.canAsc + ' ' +
8757
			names, titles,
95647
					orderClasses.canDesc + ' ' +
8758
			nodes = __column_header_cells(settings.aoHeader);
95648
					orderClasses.isAsc + ' ' +
8759
		
95649
					orderClasses.isDesc
8760
		var run = function ( s ) {
95650
				)
8761
			var selInt = _intVal( s );
95651
				.css('width', '')
95652
				.removeAttr('aria-sort');
95653
	
95654
			// Add the TR elements back into the table in their original order
95655
			jqTbody.children().detach();
95656
			jqTbody.append( rows );
95657
	
95658
			var orig = settings.nTableWrapper.parentNode;
95659
			var insertBefore = settings.nTableWrapper.nextSibling;
95660
	
95661
			// Remove the DataTables generated nodes, events and classes
95662
			var removedMethod = remove ? 'remove' : 'detach';
95663
			jqTable[ removedMethod ]();
95664
			jqWrapper[ removedMethod ]();
95665
	
95666
			// If we need to reattach the table to the document
95667
			if ( ! remove && orig ) {
95668
				// insertBefore acts like appendChild if !arg[1]
95669
				orig.insertBefore( table, insertBefore );
8762
	
95670
	
8763
			// Selector - all
95671
				// Restore the width of the original table - was read from the style property,
8764
			if ( s === '' ) {
95672
				// so we can restore directly to that
8765
				return _range( columns.length );
95673
				jqTable
95674
					.css( 'width', settings.sDestroyWidth )
95675
					.removeClass( classes.table );
8766
			}
95676
			}
8767
	
95677
	
8768
			// Selector - index
95678
			/* Remove the settings object from the settings array */
8769
			if ( selInt !== null ) {
95679
			var idx = DataTable.settings.indexOf(settings);
8770
				return [ selInt >= 0 ?
95680
			if ( idx !== -1 ) {
8771
					selInt : // Count from left
95681
				DataTable.settings.splice( idx, 1 );
8772
					columns.length + selInt // Count from right (+ because its a negative value)
8773
				];
8774
			}
95682
			}
95683
		} );
95684
	} );
8775
	
95685
	
8776
			// Selector = function
8777
			if ( typeof s === 'function' ) {
8778
				var rows = _selector_row_indexes( settings, opts );
8779
	
95686
	
8780
				return columns.map(function (col, idx) {
95687
	// Add the `every()` method for rows, columns and cells in a compact form
8781
					return s(
95688
	$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
8782
							idx,
95689
		_api_register( type+'s().every()', function ( fn ) {
8783
							__columnData( settings, idx, 0, 0, rows ),
95690
			var opts = this.selector.opts;
8784
							__column_header( settings, idx )
95691
			var api = this;
8785
						) ? idx : null;
95692
			var inst;
8786
				});
95693
			var counter = 0;
8787
			}
8788
	
95694
	
8789
			// jQuery or string selector
95695
			return this.iterator( 'every', function ( settings, selectedIdx, tableIdx ) {
8790
			var match = typeof s === 'string' ?
95696
				inst = api[ type ](selectedIdx, opts);
8791
				s.match( __re_column_selector ) :
8792
				'';
8793
	
95697
	
8794
			if ( match ) {
95698
				if (type === 'cell') {
8795
				switch( match[2] ) {
95699
					fn.call(inst, inst[0][0].row, inst[0][0].column, tableIdx, counter);
8796
					case 'visIdx':
95700
				}
8797
					case 'visible':
95701
				else {
8798
						// Selector is a column index
95702
					fn.call(inst, selectedIdx, tableIdx, counter);
8799
						if (match[1] && match[1].match(/^\d+$/)) {
95703
				}
8800
							var idx = parseInt( match[1], 10 );
8801
	
95704
	
8802
							// Visible index given, convert to column index
95705
				counter++;
8803
							if ( idx < 0 ) {
95706
			} );
8804
								// Counting from the right
95707
		} );
8805
								var visColumns = columns.map( function (col,i) {
95708
	} );
8806
									return col.bVisible ? i : null;
8807
								} );
8808
								return [ visColumns[ visColumns.length + idx ] ];
8809
							}
8810
							// Counting from the left
8811
							return [ _fnVisibleToColumnIndex( settings, idx ) ];
8812
						}
8813
						
8814
						return columns.map( function (col, idx) {
8815
							// Not visible, can't match
8816
							if (! col.bVisible) {
8817
								return null;
8818
							}
8819
	
95709
	
8820
							// Selector
8821
							if (match[1]) {
8822
								return $(nodes[idx]).filter(match[1]).length > 0 ? idx : null;
8823
							}
8824
	
95710
	
8825
							// `:visible` on its own
95711
	// i18n method for extensions to be able to use the language object from the
8826
							return idx;
95712
	// DataTable
8827
						} );
95713
	_api_register( 'i18n()', function ( token, def, plural ) {
95714
		var ctx = this.context[0];
95715
		var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
8828
	
95716
	
8829
					case 'name':
95717
		if ( resolved === undefined ) {
8830
						// Don't get names, unless needed, and only get once if it is
95718
			resolved = def;
8831
						if (!names) {
95719
		}
8832
							names = _pluck( columns, 'sName' );
8833
						}
8834
8835
						// match by name. `names` is column index complete and in order
8836
						return names.map( function (name, i) {
8837
							return name === match[1] ? i : null;
8838
						} );
8839
	
95720
	
8840
					case 'title':
95721
		if ( $.isPlainObject( resolved ) ) {
8841
						if (!titles) {
95722
			resolved = plural !== undefined && resolved[ plural ] !== undefined
8842
							titles = _pluck( columns, 'sTitle' );
95723
				? resolved[ plural ]
8843
						}
95724
				: plural === false
8844
95725
					? resolved
8845
						// match by column title
95726
					: resolved._;
8846
						return titles.map( function (title, i) {
95727
		}
8847
							return title === match[1] ? i : null;
8848
						} );
8849
	
95728
	
8850
					default:
95729
		return typeof resolved === 'string'
8851
						return [];
95730
			? resolved.replace( '%d', plural ) // nb: plural might be undefined,
8852
				}
95731
			: resolved;
8853
			}
95732
	} );
8854
	
95733
	
8855
			// Cell in the table body
95734
	// Needed for header and footer, so pulled into its own function
8856
			if ( s.nodeName && s._DT_CellIndex ) {
95735
	function cleanHeader(node, className) {
8857
				return [ s._DT_CellIndex.column ];
95736
		$(node).find('.dt-column-order').remove();
8858
			}
95737
		$(node).find('.dt-column-title').each(function () {
95738
			var title = $(this).html();
95739
			$(this).parent().parent().append(title);
95740
			$(this).remove();
95741
		});
95742
		$(node).find('div.dt-column-' + className).remove();
8859
	
95743
	
8860
			// jQuery selector on the TH elements for the columns
95744
		$('th, td', node).removeAttr('data-dt-column');
8861
			var jqResult = $( nodes )
95745
	}
8862
				.filter( s )
8863
				.map( function () {
8864
					return _fnColumnsFromHeader( this ); // `nodes` is column index complete and in order
8865
				} )
8866
				.toArray()
8867
				.sort(function (a, b) {
8868
					return a - b;
8869
				});
8870
	
95746
	
8871
			if ( jqResult.length || ! s.nodeName ) {
95747
	/**
8872
				return jqResult;
95748
	 * Version string for plug-ins to check compatibility. Allowed format is
8873
			}
95749
	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
95750
	 * only for non-release builds. See https://semver.org/ for more information.
95751
	 *  @member
95752
	 *  @type string
95753
	 *  @default Version number
95754
	 */
95755
	DataTable.version = "2.3.7";
8874
	
95756
	
8875
			// Otherwise a node which might have a `dt-column` data attribute, or be
95757
	/**
8876
			// a child or such an element
95758
	 * Private data store, containing all of the settings objects that are
8877
			var host = $(s).closest('*[data-dt-column]');
95759
	 * created for the tables on a given page.
8878
			return host.length ?
95760
	 *
8879
				[ host.data('dt-column') ] :
95761
	 * Note that the `DataTable.settings` object is aliased to
8880
				[];
95762
	 * `jQuery.fn.dataTableExt` through which it may be accessed and
8881
		};
95763
	 * manipulated, or `jQuery.fn.dataTable.settings`.
95764
	 *  @member
95765
	 *  @type array
95766
	 *  @default []
95767
	 *  @private
95768
	 */
95769
	DataTable.settings = [];
8882
	
95770
	
8883
		var selected = _selector_run( 'column', selector, run, settings, opts );
95771
	/**
95772
	 * Object models container, for the various models that DataTables has
95773
	 * available to it. These models define the objects that are used to hold
95774
	 * the active state and configuration of the table.
95775
	 *  @namespace
95776
	 */
95777
	DataTable.models = {};
95778
	
95779
	
95780
	
95781
	/**
95782
	 * Template object for the way in which DataTables holds information about
95783
	 * search information for the global filter and individual column filters.
95784
	 *  @namespace
95785
	 */
95786
	DataTable.models.oSearch = {
95787
		/**
95788
		 * Flag to whether or not the filtering should be case-insensitive
95789
		 */
95790
		"caseInsensitive": true,
95791
	
95792
		/**
95793
		 * Applied search term
95794
		 */
95795
		"search": "",
95796
	
95797
		/**
95798
		 * Flag to indicate if the search term should be interpreted as a
95799
		 * regular expression (true) or not (false) and therefore and special
95800
		 * regex characters escaped.
95801
		 */
95802
		"regex": false,
95803
	
95804
		/**
95805
		 * Flag to indicate if DataTables is to use its smart filtering or not.
95806
		 */
95807
		"smart": true,
8884
95808
8885
		return opts.columnOrder && opts.columnOrder === 'index'
95809
		/**
8886
			? selected.sort(function (a, b) { return a - b; })
95810
		 * Flag to indicate if DataTables should only trigger a search when
8887
			: selected; // implied
95811
		 * the return key is pressed.
95812
		 */
95813
		"return": false
8888
	};
95814
	};
8889
	
95815
	
8890
	
95816
	
8891
	var __setColumnVis = function ( settings, column, vis ) {
8892
		var
8893
			cols = settings.aoColumns,
8894
			col  = cols[ column ],
8895
			data = settings.aoData,
8896
			cells, i, iLen, tr;
8897
	
8898
		// Get
8899
		if ( vis === undefined ) {
8900
			return col.bVisible;
8901
		}
8902
	
95817
	
8903
		// Set
8904
		// No change
8905
		if ( col.bVisible === vis ) {
8906
			return false;
8907
		}
8908
	
95818
	
8909
		if ( vis ) {
95819
	/**
8910
			// Insert column
95820
	 * Template object for the way in which DataTables holds information about
8911
			// Need to decide if we should use appendChild or insertBefore
95821
	 * each individual row. This is the object format used for the settings
8912
			var insertBefore = _pluck(cols, 'bVisible').indexOf(true, column+1);
95822
	 * aoData array.
95823
	 *  @namespace
95824
	 */
95825
	DataTable.models.oRow = {
95826
		/**
95827
		 * TR element for the row
95828
		 */
95829
		"nTr": null,
8913
	
95830
	
8914
			for ( i=0, iLen=data.length ; i<iLen ; i++ ) {
95831
		/**
8915
				if (data[i]) {
95832
		 * Array of TD elements for each row. This is null until the row has been
8916
					tr = data[i].nTr;
95833
		 * created.
8917
					cells = data[i].anCells;
95834
		 */
95835
		"anCells": null,
8918
	
95836
	
8919
					if ( tr ) {
95837
		/**
8920
						// insertBefore can act like appendChild if 2nd arg is null
95838
		 * Data object from the original data source for the row. This is either
8921
						tr.insertBefore( cells[ column ], cells[ insertBefore ] || null );
95839
		 * an array if using the traditional form of DataTables, or an object if
8922
					}
95840
		 * using mData options. The exact type will depend on the passed in
8923
				}
95841
		 * data from the data source, or will be an array if using DOM a data
8924
			}
95842
		 * source.
8925
		}
95843
		 */
8926
		else {
95844
		"_aData": [],
8927
			// Remove column
8928
			$( _pluck( settings.aoData, 'anCells', column ) ).detach();
8929
		}
8930
	
95845
	
8931
		// Common actions
95846
		/**
8932
		col.bVisible = vis;
95847
		 * Sorting data cache - this array is ostensibly the same length as the
95848
		 * number of columns (although each index is generated only as it is
95849
		 * needed), and holds the data that is used for sorting each column in the
95850
		 * row. We do this cache generation at the start of the sort in order that
95851
		 * the formatting of the sort data need be done only once for each cell
95852
		 * per sort. This array should not be read from or written to by anything
95853
		 * other than the master sorting methods.
95854
		 */
95855
		"_aSortData": null,
8933
	
95856
	
8934
		_colGroup(settings);
95857
		/**
8935
		
95858
		 * Per cell filtering data cache. As per the sort data cache, used to
8936
		return true;
95859
		 * increase the performance of the filtering in DataTables
8937
	};
95860
		 */
95861
		"_aFilterData": null,
8938
	
95862
	
95863
		/**
95864
		 * Filtering data cache. This is the same as the cell filtering cache, but
95865
		 * in this case a string rather than an array. This is easily computed with
95866
		 * a join on `_aFilterData`, but is provided as a cache so the join isn't
95867
		 * needed on every search (memory traded for performance)
95868
		 */
95869
		"_sFilterRow": null,
8939
	
95870
	
8940
	_api_register( 'columns()', function ( selector, opts ) {
95871
		/**
8941
		// argument shifting
95872
		 * Denote if the original data source was from the DOM, or the data source
8942
		if ( selector === undefined ) {
95873
		 * object. This is used for invalidating data, so DataTables can
8943
			selector = '';
95874
		 * automatically read data from the original source, unless uninstructed
8944
		}
95875
		 * otherwise.
8945
		else if ( $.isPlainObject( selector ) ) {
95876
		 */
8946
			opts = selector;
95877
		"src": null,
8947
			selector = '';
8948
		}
8949
	
95878
	
8950
		opts = _selector_opts( opts );
95879
		/**
95880
		 * Index in the aoData array. This saves an indexOf lookup when we have the
95881
		 * object, but want to know the index
95882
		 */
95883
		"idx": -1,
8951
	
95884
	
8952
		var inst = this.iterator( 'table', function ( settings ) {
95885
		/**
8953
			return __column_selector( settings, selector, opts );
95886
		 * Cached display value
8954
		}, 1 );
95887
		 */
95888
		displayData: null
95889
	};
8955
	
95890
	
8956
		// Want argument shifting here and in _row_selector?
8957
		inst.selector.cols = selector;
8958
		inst.selector.opts = opts;
8959
	
95891
	
8960
		return inst;
95892
	/**
8961
	} );
95893
	 * Template object for the column information object in DataTables. This object
95894
	 * is held in the settings aoColumns array and contains all the information that
95895
	 * DataTables needs about each individual column.
95896
	 *
95897
	 * Note that this object is related to {@link DataTable.defaults.column}
95898
	 * but this one is the internal data store for DataTables's cache of columns.
95899
	 * It should NOT be manipulated outside of DataTables. Any configuration should
95900
	 * be done through the initialisation options.
95901
	 *  @namespace
95902
	 */
95903
	DataTable.models.oColumn = {
95904
		/**
95905
		 * Column index.
95906
		 */
95907
		"idx": null,
8962
	
95908
	
8963
	_api_registerPlural( 'columns().header()', 'column().header()', function ( row ) {
95909
		/**
8964
		return this.iterator( 'column', function (settings, column) {
95910
		 * A list of the columns that sorting should occur on when this column
8965
			return __column_header(settings, column, row);
95911
		 * is sorted. That this property is an array allows multi-column sorting
8966
		}, 1 );
95912
		 * to be defined for a column (for example first name / last name columns
8967
	} );
95913
		 * would benefit from this). The values are integers pointing to the
95914
		 * columns to be sorted on (typically it will be a single integer pointing
95915
		 * at itself, but that doesn't need to be the case).
95916
		 */
95917
		"aDataSort": null,
8968
	
95918
	
8969
	_api_registerPlural( 'columns().footer()', 'column().footer()', function ( row ) {
95919
		/**
8970
		return this.iterator( 'column', function ( settings, column ) {
95920
		 * Define the sorting directions that are applied to the column, in sequence
8971
			var footer = settings.aoFooter;
95921
		 * as the column is repeatedly sorted upon - i.e. the first value is used
95922
		 * as the sorting direction when the column if first sorted (clicked on).
95923
		 * Sort it again (click again) and it will move on to the next index.
95924
		 * Repeat until loop.
95925
		 */
95926
		"asSorting": null,
8972
	
95927
	
8973
			if (! footer.length) {
95928
		/**
8974
				return null;
95929
		 * Flag to indicate if the column is searchable, and thus should be included
8975
			}
95930
		 * in the filtering or not.
95931
		 */
95932
		"bSearchable": null,
8976
	
95933
	
8977
			return settings.aoFooter[row !== undefined ? row : 0][column].cell;
95934
		/**
8978
		}, 1 );
95935
		 * Flag to indicate if the column is sortable or not.
8979
	} );
95936
		 */
95937
		"bSortable": null,
8980
	
95938
	
8981
	_api_registerPlural( 'columns().data()', 'column().data()', function () {
95939
		/**
8982
		return this.iterator( 'column-rows', __columnData, 1 );
95940
		 * Flag to indicate if the column is currently visible in the table or not
8983
	} );
95941
		 */
95942
		"bVisible": null,
8984
	
95943
	
8985
	_api_registerPlural( 'columns().render()', 'column().render()', function ( type ) {
95944
		/**
8986
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
95945
		 * Store for manual type assignment using the `column.type` option. This
8987
			return __columnData( settings, column, i, j, rows, type );
95946
		 * is held in store so we can manipulate the column's `sType` property.
8988
		}, 1 );
95947
		 */
8989
	} );
95948
		"_sManualType": null,
8990
	
95949
	
8991
	_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {
95950
		/**
8992
		return this.iterator( 'column', function ( settings, column ) {
95951
		 * Flag to indicate if HTML5 data attributes should be used as the data
8993
			return settings.aoColumns[column].mData;
95952
		 * source for filtering or sorting. True is either are.
8994
		}, 1 );
95953
		 */
8995
	} );
95954
		"_bAttrSrc": false,
8996
	
95955
	
8997
	_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {
95956
		/**
8998
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
95957
		 * Developer definable function that is called whenever a cell is created (Ajax source,
8999
			return _pluck_order( settings.aoData, rows,
95958
		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
9000
				type === 'search' ? '_aFilterData' : '_aSortData', column
95959
		 * allowing you to modify the DOM element (add background colour for example) when the
9001
			);
95960
		 * element is available.
9002
		}, 1 );
95961
		 */
9003
	} );
95962
		"fnCreatedCell": null,
95963
95964
		/**
95965
		 * Function to get data from a cell in a column. You should <b>never</b>
95966
		 * access data directly through _aData internally in DataTables - always use
95967
		 * the method attached to this property. It allows mData to function as
95968
		 * required. This function is automatically assigned by the column
95969
		 * initialisation method
95970
		 */
95971
		"fnGetData": null,
95972
95973
		/**
95974
		 * Function to set data for a cell in the column. You should <b>never</b>
95975
		 * set the data directly to _aData internally in DataTables - always use
95976
		 * this method. It allows mData to function as required. This function
95977
		 * is automatically assigned by the column initialisation method
95978
		 */
95979
		"fnSetData": null,
9004
	
95980
	
9005
	_api_registerPlural( 'columns().init()', 'column().init()', function () {
95981
		/**
9006
		return this.iterator( 'column', function ( settings, column ) {
95982
		 * Property to read the value for the cells in the column from the data
9007
			return settings.aoColumns[column];
95983
		 * source array / object. If null, then the default content is used, if a
9008
		}, 1 );
95984
		 * function is given then the return from the function is used.
9009
	} );
95985
		 */
95986
		"mData": null,
9010
	
95987
	
9011
	_api_registerPlural( 'columns().names()', 'column().name()', function () {
95988
		/**
9012
		return this.iterator( 'column', function ( settings, column ) {
95989
		 * Partner property to mData which is used (only when defined) to get
9013
			return settings.aoColumns[column].sName;
95990
		 * the data - i.e. it is basically the same as mData, but without the
9014
		}, 1 );
95991
		 * 'set' option, and also the data fed to it is the result from mData.
9015
	} );
95992
		 * This is the rendering method to match the data method of mData.
9016
95993
		 */
9017
	_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {
95994
		"mRender": null,
9018
		return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {
9019
			return _pluck_order( settings.aoData, rows, 'anCells', column ) ;
9020
		}, 1 );
9021
	} );
9022
	
95995
	
9023
	_api_registerPlural( 'columns().titles()', 'column().title()', function (title, row) {
95996
		/**
9024
		return this.iterator( 'column', function ( settings, column ) {
95997
		 * The class to apply to all TD elements in the table's TBODY for the column
9025
			// Argument shifting
95998
		 */
9026
			if (typeof title === 'number') {
95999
		"sClass": null,
9027
				row = title;
96000
	
9028
				title = undefined;
96001
		/**
9029
			}
96002
		 * When DataTables calculates the column widths to assign to each column,
96003
		 * it finds the longest string in each column and then constructs a
96004
		 * temporary table and reads the widths from that. The problem with this
96005
		 * is that "mmm" is much wider then "iiii", but the latter is a longer
96006
		 * string - thus the calculation can go wrong (doing it properly and putting
96007
		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
96008
		 * a "work around" we provide this option. It will append its value to the
96009
		 * text that is found to be the longest string for the column - i.e. padding.
96010
		 */
96011
		"sContentPadding": null,
9030
	
96012
	
9031
			var span = $('span.dt-column-title', this.column(column).header(row));
96013
		/**
96014
		 * Allows a default value to be given for a column's data, and will be used
96015
		 * whenever a null data source is encountered (this can be because mData
96016
		 * is set to null, or because the data source itself is null).
96017
		 */
96018
		"sDefaultContent": null,
9032
	
96019
	
9033
			if (title !== undefined) {
96020
		/**
9034
				span.html(title);
96021
		 * Name for the column, allowing reference to the column by name as well as
9035
				return this;
96022
		 * by index (needs a lookup to work by name).
9036
			}
96023
		 */
96024
		"sName": null,
9037
	
96025
	
9038
			return span.html();
96026
		/**
9039
		}, 1 );
96027
		 * Custom sorting data type - defines which of the available plug-ins in
9040
	} );
96028
		 * afnSortData the custom sorting will use - if any is defined.
96029
		 */
96030
		"sSortDataType": 'std',
9041
	
96031
	
9042
	_api_registerPlural( 'columns().types()', 'column().type()', function () {
96032
		/**
9043
		return this.iterator( 'column', function ( settings, column ) {
96033
		 * Class to be applied to the header element when sorting on this column
9044
			var type = settings.aoColumns[column].sType;
96034
		 */
96035
		"sSortingClass": null,
9045
	
96036
	
9046
			// If the type was invalidated, then resolve it. This actually does
96037
		/**
9047
			// all columns at the moment. Would only happen once if getting all
96038
		 * Title of the column - what is seen in the TH element (nTh).
9048
			// column's data types.
96039
		 */
9049
			if (! type) {
96040
		"sTitle": null,
9050
				_fnColumnTypes(settings);
9051
			}
9052
	
96041
	
9053
			return type;
96042
		/**
9054
		}, 1 );
96043
		 * Column sorting and filtering type
9055
	} );
96044
		 */
96045
		"sType": null,
9056
	
96046
	
9057
	_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {
96047
		/**
9058
		var that = this;
96048
		 * Width of the column
9059
		var changed = [];
96049
		 */
9060
		var ret = this.iterator( 'column', function ( settings, column ) {
96050
		"sWidth": null,
9061
			if ( vis === undefined ) {
9062
				return settings.aoColumns[ column ].bVisible;
9063
			} // else
9064
			
9065
			if (__setColumnVis( settings, column, vis )) {
9066
				changed.push(column);
9067
			}
9068
		} );
9069
	
96051
	
9070
		// Group the column visibility changes
96052
		/**
9071
		if ( vis !== undefined ) {
96053
		 * Width of the column when it was first "encountered"
9072
			this.iterator( 'table', function ( settings ) {
96054
		 */
9073
				// Redraw the header after changes
96055
		"sWidthOrig": null,
9074
				_fnDrawHead( settings, settings.aoHeader );
9075
				_fnDrawHead( settings, settings.aoFooter );
9076
		
9077
				// Update colspan for no records display. Child rows and extensions will use their own
9078
				// listeners to do this - only need to update the empty table item here
9079
				if ( ! settings.aiDisplay.length ) {
9080
					$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisibleColumns(settings));
9081
				}
9082
		
9083
				_fnSaveState( settings );
9084
	
96056
	
9085
				// Second loop once the first is done for events
96057
		/** Cached longest strings from a column */
9086
				that.iterator( 'column', function ( settings, column ) {
96058
		wideStrings: null,
9087
					if (changed.includes(column)) {
9088
						_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );
9089
					}
9090
				} );
9091
	
96059
	
9092
				if ( changed.length && (calc === undefined || calc) ) {
96060
		/**
9093
					that.columns.adjust();
96061
		 * Store for named searches
9094
				}
96062
		 */
9095
			});
96063
		searchFixed: null
9096
		}
96064
	};
9097
	
96065
	
9098
		return ret;
9099
	} );
9100
	
96066
	
9101
	_api_registerPlural( 'columns().widths()', 'column().width()', function () {
96067
	/*
9102
		// Injects a fake row into the table for just a moment so the widths can
96068
	 * Developer note: The properties of the object below are given in Hungarian
9103
		// be read, regardless of colspan in the header and rows being present in
96069
	 * notation, that was used as the interface for DataTables prior to v1.10, however
9104
		// the body
96070
	 * from v1.10 onwards the primary interface is camel case. In order to avoid
9105
		var columns = this.columns(':visible').count();
96071
	 * breaking backwards compatibility utterly with this change, the Hungarian
9106
		var row = $('<tr>').html('<td>' + Array(columns).join('</td><td>') + '</td>');
96072
	 * version is still, internally the primary interface, but is is not documented
96073
	 * - hence the @name tags in each doc comment. This allows a JavaScript function
96074
	 * to create a map from Hungarian notation to camel case (going the other direction
96075
	 * would require each property to be listed, which would add around 3K to the size
96076
	 * of DataTables, while this method is about a 0.5K hit).
96077
	 *
96078
	 * Ultimately this does pave the way for Hungarian notation to be dropped
96079
	 * completely, but that is a massive amount of work and will break current
96080
	 * installs (therefore is on-hold until v2).
96081
	 */
9107
	
96082
	
9108
		$(this.table().body()).append(row);
96083
	/**
96084
	 * Initialisation options that can be given to DataTables at initialisation
96085
	 * time.
96086
	 *  @namespace
96087
	 */
96088
	DataTable.defaults = {
96089
		/**
96090
		 * An array of data to use for the table, passed in at initialisation which
96091
		 * will be used in preference to any data which is already in the DOM. This is
96092
		 * particularly useful for constructing tables purely in JavaScript, for
96093
		 * example with a custom Ajax call.
96094
		 */
96095
		"aaData": null,
9109
	
96096
	
9110
		var widths = row.children().map(function () {
9111
			return $(this).outerWidth();
9112
		});
9113
	
96097
	
9114
		row.remove();
96098
		/**
9115
		
96099
		 * If ordering is enabled, then DataTables will perform a first pass sort on
9116
		return this.iterator( 'column', function ( settings, column ) {
96100
		 * initialisation. You can define which column(s) the sort is performed
9117
			var visIdx = _fnColumnIndexToVisible( settings, column );
96101
		 * upon, and the sorting direction, with this variable. The `sorting` array
96102
		 * should contain an array for each column to be sorted initially containing
96103
		 * the column's index and a direction string ('asc' or 'desc').
96104
		 */
96105
		"aaSorting": [[0,'asc']],
9118
	
96106
	
9119
			return visIdx !== null ? widths[visIdx] : 0;
9120
		}, 1);
9121
	} );
9122
	
96107
	
9123
	_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {
96108
		/**
9124
		return this.iterator( 'column', function ( settings, column ) {
96109
		 * This parameter is basically identical to the `sorting` parameter, but
9125
			return type === 'visible' ?
96110
		 * cannot be overridden by user interaction with the table. What this means
9126
				_fnColumnIndexToVisible( settings, column ) :
96111
		 * is that you could have a column (visible or hidden) which the sorting
9127
				column;
96112
		 * will always be forced on first - any sorting after that (from the user)
9128
		}, 1 );
96113
		 * will then be performed as required. This can be useful for grouping rows
9129
	} );
96114
		 * together.
96115
		 */
96116
		"aaSortingFixed": [],
9130
	
96117
	
9131
	_api_register( 'columns.adjust()', function () {
9132
		return this.iterator( 'table', function ( settings ) {
9133
			// Force a column sizing to happen with a manual call - otherwise it can skip
9134
			// if the size hasn't changed
9135
			settings.containerWidth = -1;
9136
96118
9137
			_fnAdjustColumnSizing( settings );
96119
		/**
9138
		}, 1 );
96120
		 * DataTables can be instructed to load data to display in the table from a
9139
	} );
96121
		 * Ajax source. This option defines how that Ajax call is made and where to.
9140
	
96122
		 *
9141
	_api_register( 'column.index()', function ( type, idx ) {
96123
		 * The `ajax` property has three different modes of operation, depending on
9142
		if ( this.context.length !== 0 ) {
96124
		 * how it is defined. These are:
9143
			var ctx = this.context[0];
96125
		 *
9144
	
96126
		 * * `string` - Set the URL from where the data should be loaded from.
9145
			if ( type === 'fromVisible' || type === 'toData' ) {
96127
		 * * `object` - Define properties for `jQuery.ajax`.
9146
				return _fnVisibleToColumnIndex( ctx, idx );
96128
		 * * `function` - Custom data get function
9147
			}
96129
		 *
9148
			else if ( type === 'fromData' || type === 'toVisible' ) {
96130
		 * `string`
9149
				return _fnColumnIndexToVisible( ctx, idx );
96131
		 * --------
9150
			}
96132
		 *
9151
		}
96133
		 * As a string, the `ajax` property simply defines the URL from which
9152
	} );
96134
		 * DataTables will load data.
96135
		 *
96136
		 * `object`
96137
		 * --------
96138
		 *
96139
		 * As an object, the parameters in the object are passed to
96140
		 * [jQuery.ajax](https://api.jquery.com/jQuery.ajax/) allowing fine control
96141
		 * of the Ajax request. DataTables has a number of default parameters which
96142
		 * you can override using this option. Please refer to the jQuery
96143
		 * documentation for a full description of the options available, although
96144
		 * the following parameters provide additional options in DataTables or
96145
		 * require special consideration:
96146
		 *
96147
		 * * `data` - As with jQuery, `data` can be provided as an object, but it
96148
		 *   can also be used as a function to manipulate the data DataTables sends
96149
		 *   to the server. The function takes a single parameter, an object of
96150
		 *   parameters with the values that DataTables has readied for sending. An
96151
		 *   object may be returned which will be merged into the DataTables
96152
		 *   defaults, or you can add the items to the object that was passed in and
96153
		 *   not return anything from the function. This supersedes `fnServerParams`
96154
		 *   from DataTables 1.9-.
96155
		 *
96156
		 * * `dataSrc` - By default DataTables will look for the property `data` (or
96157
		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
96158
		 *   from an Ajax source or for server-side processing - this parameter
96159
		 *   allows that property to be changed. You can use JavaScript dotted
96160
		 *   object notation to get a data source for multiple levels of nesting, or
96161
		 *   it my be used as a function. As a function it takes a single parameter,
96162
		 *   the JSON returned from the server, which can be manipulated as
96163
		 *   required, with the returned value being that used by DataTables as the
96164
		 *   data source for the table.
96165
		 *
96166
		 * * `success` - Should not be overridden it is used internally in
96167
		 *   DataTables. To manipulate / transform the data returned by the server
96168
		 *   use `ajax.dataSrc`, or use `ajax` as a function (see below).
96169
		 *
96170
		 * `function`
96171
		 * ----------
96172
		 *
96173
		 * As a function, making the Ajax call is left up to yourself allowing
96174
		 * complete control of the Ajax request. Indeed, if desired, a method other
96175
		 * than Ajax could be used to obtain the required data, such as Web storage
96176
		 * or an AIR database.
96177
		 *
96178
		 * The function is given four parameters and no return is required. The
96179
		 * parameters are:
96180
		 *
96181
		 * 1. _object_ - Data to send to the server
96182
		 * 2. _function_ - Callback function that must be executed when the required
96183
		 *    data has been obtained. That data should be passed into the callback
96184
		 *    as the only parameter
96185
		 * 3. _object_ - DataTables settings object for the table
96186
		 */
96187
		"ajax": null,
9153
	
96188
	
9154
	_api_register( 'column()', function ( selector, opts ) {
9155
		return _selector_first( this.columns( selector, opts ) );
9156
	} );
9157
	
96189
	
9158
	var __cell_selector = function ( settings, selector, opts )
96190
		/**
9159
	{
96191
		 * This parameter allows you to readily specify the entries in the length drop
9160
		var data = settings.aoData;
96192
		 * down menu that DataTables shows when pagination is enabled. It can be
9161
		var rows = _selector_row_indexes( settings, opts );
96193
		 * either a 1D array of options which will be used for both the displayed
9162
		var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );
96194
		 * option and the value, or a 2D array which will use the array in the first
9163
		var allCells = $(_flatten( [], cells ));
96195
		 * position as the value, and the array in the second position as the
9164
		var row;
96196
		 * displayed options (useful for language strings such as 'All').
9165
		var columns = settings.aoColumns.length;
96197
		 *
9166
		var a, i, iLen, j, o, host;
96198
		 * Note that the `pageLength` property will be automatically set to the
96199
		 * first value given in this array, unless `pageLength` is also provided.
96200
		 */
96201
		"aLengthMenu": [ 10, 25, 50, 100 ],
9167
	
96202
	
9168
		var run = function ( s ) {
9169
			var fnSelector = typeof s === 'function';
9170
	
96203
	
9171
			if ( s === null || s === undefined || fnSelector ) {
96204
		/**
9172
				// All cells and function selectors
96205
		 * The `columns` option in the initialisation parameter allows you to define
9173
				a = [];
96206
		 * details about the way individual columns behave. For a full list of
96207
		 * column options that can be set, please see
96208
		 * {@link DataTable.defaults.column}. Note that if you use `columns` to
96209
		 * define your columns, you must have an entry in the array for every single
96210
		 * column that you have in your table (these can be null if you don't which
96211
		 * to specify any options).
96212
		 */
96213
		"aoColumns": null,
9174
	
96214
	
9175
				for ( i=0, iLen=rows.length ; i<iLen ; i++ ) {
96215
		/**
9176
					row = rows[i];
96216
		 * Very similar to `columns`, `columnDefs` allows you to target a specific
96217
		 * column, multiple columns, or all columns, using the `targets` property of
96218
		 * each object in the array. This allows great flexibility when creating
96219
		 * tables, as the `columnDefs` arrays can be of any length, targeting the
96220
		 * columns you specifically want. `columnDefs` may use any of the column
96221
		 * options available: {@link DataTable.defaults.column}, but it _must_
96222
		 * have `targets` defined in each object in the array. Values in the `targets`
96223
		 * array may be:
96224
		 *   <ul>
96225
		 *     <li>a string - class name will be matched on the TH for the column</li>
96226
		 *     <li>0 or a positive integer - column index counting from the left</li>
96227
		 *     <li>a negative integer - column index counting from the right</li>
96228
		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
96229
		 *   </ul>
96230
		 */
96231
		"aoColumnDefs": null,
9177
	
96232
	
9178
					for ( j=0 ; j<columns ; j++ ) {
9179
						o = {
9180
							row: row,
9181
							column: j
9182
						};
9183
	
96233
	
9184
						if ( fnSelector ) {
96234
		/**
9185
							// Selector - function
96235
		 * Basically the same as `search`, this parameter defines the individual column
9186
							host = data[ row ];
96236
		 * filtering state at initialisation time. The array must be of the same size
96237
		 * as the number of columns, and each element be an object with the parameters
96238
		 * `search` and `escapeRegex` (the latter is optional). 'null' is also
96239
		 * accepted and the default will be used.
96240
		 */
96241
		"aoSearchCols": [],
9187
	
96242
	
9188
							if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
9189
								a.push( o );
9190
							}
9191
						}
9192
						else {
9193
							// Selector - all
9194
							a.push( o );
9195
						}
9196
					}
9197
				}
9198
	
96243
	
9199
				return a;
96244
		/**
9200
			}
96245
		 * Enable or disable automatic column width calculation. This can be disabled
9201
			
96246
		 * as an optimisation (it takes some time to calculate the widths) if the
9202
			// Selector - index
96247
		 * tables widths are passed in using `columns`.
9203
			if ( $.isPlainObject( s ) ) {
96248
		 */
9204
				// Valid cell index and its in the array of selectable rows
96249
		"bAutoWidth": true,
9205
				return s.column !== undefined && s.row !== undefined && rows.indexOf(s.row) !== -1 ?
9206
					[s] :
9207
					[];
9208
			}
9209
	
96250
	
9210
			// Selector - jQuery filtered cells
9211
			var jqResult = allCells
9212
				.filter( s )
9213
				.map( function (i, el) {
9214
					return { // use a new object, in case someone changes the values
9215
						row:    el._DT_CellIndex.row,
9216
						column: el._DT_CellIndex.column
9217
					};
9218
				} )
9219
				.toArray();
9220
	
96251
	
9221
			if ( jqResult.length || ! s.nodeName ) {
96252
		/**
9222
				return jqResult;
96253
		 * Deferred rendering can provide DataTables with a huge speed boost when you
9223
			}
96254
		 * are using an Ajax or JS data source for the table. This option, when set to
96255
		 * true, will cause DataTables to defer the creation of the table elements for
96256
		 * each row until they are needed for a draw - saving a significant amount of
96257
		 * time.
96258
		 */
96259
		"bDeferRender": true,
9224
	
96260
	
9225
			// Otherwise the selector is a node, and there is one last option - the
9226
			// element might be a child of an element which has dt-row and dt-column
9227
			// data attributes
9228
			host = $(s).closest('*[data-dt-row]');
9229
			return host.length ?
9230
				[ {
9231
					row: host.data('dt-row'),
9232
					column: host.data('dt-column')
9233
				} ] :
9234
				[];
9235
		};
9236
	
96261
	
9237
		return _selector_run( 'cell', selector, run, settings, opts );
96262
		/**
9238
	};
96263
		 * Replace a DataTable which matches the given selector and replace it with
96264
		 * one which has the properties of the new initialisation object passed. If no
96265
		 * table matches the selector, then the new DataTable will be constructed as
96266
		 * per normal.
96267
		 */
96268
		"bDestroy": false,
9239
	
96269
	
9240
	
96270
	
96271
		/**
96272
		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
96273
		 * that it allows the end user to input multiple words (space separated) and
96274
		 * will match a row containing those words, even if not in the order that was
96275
		 * specified (this allow matching across multiple columns). Note that if you
96276
		 * wish to use filtering in DataTables this must remain 'true' - to remove the
96277
		 * default filtering input box and retain filtering abilities, please use
96278
		 * {@link DataTable.defaults.dom}.
96279
		 */
96280
		"bFilter": true,
9241
	
96281
	
96282
		/**
96283
		 * Used only for compatibility with DT1
96284
		 * @deprecated
96285
		 */
96286
		"bInfo": true,
9242
	
96287
	
9243
	_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {
96288
		/**
9244
		// Argument shifting
96289
		 * Used only for compatibility with DT1
9245
		if ( $.isPlainObject( rowSelector ) ) {
96290
		 * @deprecated
9246
			// Indexes
96291
		 */
9247
			if ( rowSelector.row === undefined ) {
96292
		"bLengthChange": true,
9248
				// Selector options in first parameter
9249
				opts = rowSelector;
9250
				rowSelector = null;
9251
			}
9252
			else {
9253
				// Cell index objects in first parameter
9254
				opts = columnSelector;
9255
				columnSelector = null;
9256
			}
9257
		}
9258
		if ( $.isPlainObject( columnSelector ) ) {
9259
			opts = columnSelector;
9260
			columnSelector = null;
9261
		}
9262
	
96293
	
9263
		// Cell selector
96294
		/**
9264
		if ( columnSelector === null || columnSelector === undefined ) {
96295
		 * Enable or disable pagination.
9265
			return this.iterator( 'table', function ( settings ) {
96296
		 */
9266
				return __cell_selector( settings, rowSelector, _selector_opts( opts ) );
96297
		"bPaginate": true,
9267
			} );
9268
		}
9269
	
96298
	
9270
		// The default built in options need to apply to row and columns
9271
		var internalOpts = opts ? {
9272
			page: opts.page,
9273
			order: opts.order,
9274
			search: opts.search
9275
		} : {};
9276
	
96299
	
9277
		// Row + column selector
96300
		/**
9278
		var columns = this.columns( columnSelector, internalOpts );
96301
		 * Enable or disable the display of a 'processing' indicator when the table is
9279
		var rows = this.rows( rowSelector, internalOpts );
96302
		 * being processed (e.g. a sort). This is particularly useful for tables with
9280
		var i, iLen, j, jen;
96303
		 * large amounts of data where it can take a noticeable amount of time to sort
96304
		 * the entries.
96305
		 */
96306
		"bProcessing": false,
9281
	
96307
	
9282
		var cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {
9283
			var a = [];
9284
	
96308
	
9285
			for ( i=0, iLen=rows[idx].length ; i<iLen ; i++ ) {
96309
		/**
9286
				for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {
96310
		 * Retrieve the DataTables object for the given selector. Note that if the
9287
					a.push( {
96311
		 * table has already been initialised, this parameter will cause DataTables
9288
						row:    rows[idx][i],
96312
		 * to simply return the object that has already been set up - it will not take
9289
						column: columns[idx][j]
96313
		 * account of any changes you might have made to the initialisation object
9290
					} );
96314
		 * passed to DataTables (setting this parameter to true is an acknowledgement
9291
				}
96315
		 * that you understand this). `destroy` can be used to reinitialise a table if
9292
			}
96316
		 * you need.
96317
		 */
96318
		"bRetrieve": false,
9293
	
96319
	
9294
			return a;
9295
		}, 1 );
9296
	
96320
	
9297
		// There is currently only one extension which uses a cell selector extension
96321
		/**
9298
		// It is a _major_ performance drag to run this if it isn't needed, so this is
96322
		 * When vertical (y) scrolling is enabled, DataTables will force the height of
9299
		// an extension specific check at the moment
96323
		 * the table's viewport to the given height at all times (useful for layout).
9300
		var cells = opts && opts.selected ?
96324
		 * However, this can look odd when filtering data down to a small data set,
9301
			this.cells( cellsNoOpts, opts ) :
96325
		 * and the footer is left "floating" further down. This parameter (when
9302
			cellsNoOpts;
96326
		 * enabled) will cause DataTables to collapse the table's viewport down when
96327
		 * the result set will fit within the given Y height.
96328
		 */
96329
		"bScrollCollapse": false,
9303
	
96330
	
9304
		$.extend( cells.selector, {
9305
			cols: columnSelector,
9306
			rows: rowSelector,
9307
			opts: opts
9308
		} );
9309
	
96331
	
9310
		return cells;
96332
		/**
9311
	} );
96333
		 * Configure DataTables to use server-side processing. Note that the
96334
		 * `ajax` parameter must also be given in order to give DataTables a
96335
		 * source to obtain the required data for each draw.
96336
		 */
96337
		"bServerSide": false,
9312
	
96338
	
9313
	
96339
	
9314
	_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {
96340
		/**
9315
		return this.iterator( 'cell', function ( settings, row, column ) {
96341
		 * Enable or disable sorting of columns. Sorting of individual columns can be
9316
			var data = settings.aoData[ row ];
96342
		 * disabled by the `sortable` option for each column.
96343
		 */
96344
		"bSort": true,
9317
	
96345
	
9318
			return data && data.anCells ?
9319
				data.anCells[ column ] :
9320
				undefined;
9321
		}, 1 );
9322
	} );
9323
	
96346
	
96347
		/**
96348
		 * Enable or display DataTables' ability to sort multiple columns at the
96349
		 * same time (activated by shift-click by the user).
96350
		 */
96351
		"bSortMulti": true,
9324
	
96352
	
9325
	_api_register( 'cells().data()', function () {
9326
		return this.iterator( 'cell', function ( settings, row, column ) {
9327
			return _fnGetCellData( settings, row, column );
9328
		}, 1 );
9329
	} );
9330
	
96353
	
96354
		/**
96355
		 * Allows control over whether DataTables should use the top (true) unique
96356
		 * cell that is found for a single column, or the bottom (false - default).
96357
		 * This is useful when using complex headers.
96358
		 */
96359
		"bSortCellsTop": null,
9331
	
96360
	
9332
	_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {
9333
		type = type === 'search' ? '_aFilterData' : '_aSortData';
9334
	
96361
	
9335
		return this.iterator( 'cell', function ( settings, row, column ) {
96362
		/** Specify which row is the title row in the header. Replacement for bSortCellsTop */
9336
			return settings.aoData[ row ][ type ][ column ];
96363
		titleRow: null,
9337
		}, 1 );
9338
	} );
9339
	
96364
	
9340
	
96365
	
9341
	_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {
96366
		/**
9342
		return this.iterator( 'cell', function ( settings, row, column ) {
96367
		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
9343
			return _fnGetCellData( settings, row, column, type );
96368
		 * `sorting\_3` to the columns which are currently being sorted on. This is
9344
		}, 1 );
96369
		 * presented as a feature switch as it can increase processing time (while
9345
	} );
96370
		 * classes are removed and added) so for large data sets you might want to
96371
		 * turn this off.
96372
		 */
96373
		"bSortClasses": true,
9346
	
96374
	
9347
	
96375
	
9348
	_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {
96376
		/**
9349
		return this.iterator( 'cell', function ( settings, row, column ) {
96377
		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
9350
			return {
96378
		 * used to save table display information such as pagination information,
9351
				row: row,
96379
		 * display length, filtering and sorting. As such when the end user reloads
9352
				column: column,
96380
		 * the page the display will match what thy had previously set up.
9353
				columnVisible: _fnColumnIndexToVisible( settings, column )
96381
		 */
9354
			};
96382
		"bStateSave": false,
9355
		}, 1 );
9356
	} );
9357
	
96383
	
9358
	
96384
	
9359
	_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {
96385
		/**
9360
		return this.iterator( 'cell', function ( settings, row, column ) {
96386
		 * This function is called when a TR element is created (and all TD child
9361
			_fnInvalidate( settings, row, src, column );
96387
		 * elements have been inserted), or registered if using a DOM source, allowing
9362
		} );
96388
		 * manipulation of the TR element (adding classes etc).
9363
	} );
96389
		 */
96390
		"fnCreatedRow": null,
9364
	
96391
	
9365
	
96392
	
96393
		/**
96394
		 * This function is called on every 'draw' event, and allows you to
96395
		 * dynamically modify any aspect you want about the created DOM.
96396
		 */
96397
		"fnDrawCallback": null,
9366
	
96398
	
9367
	_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {
9368
		return _selector_first( this.cells( rowSelector, columnSelector, opts ) );
9369
	} );
9370
	
96399
	
96400
		/**
96401
		 * Identical to fnHeaderCallback() but for the table footer this function
96402
		 * allows you to modify the table footer on every 'draw' event.
96403
		 */
96404
		"fnFooterCallback": null,
9371
	
96405
	
9372
	_api_register( 'cell().data()', function ( data ) {
9373
		var ctx = this.context;
9374
		var cell = this[0];
9375
	
96406
	
9376
		if ( data === undefined ) {
96407
		/**
9377
			// Get
96408
		 * When rendering large numbers in the information element for the table
9378
			return ctx.length && cell.length ?
96409
		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
9379
				_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :
96410
		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
9380
				undefined;
96411
		 * rendered as "1,000,000") to help readability for the end user. This
9381
		}
96412
		 * function will override the default method DataTables uses.
96413
		 */
96414
		"fnFormatNumber": function ( toFormat ) {
96415
			return toFormat.toString().replace(
96416
				/\B(?=(\d{3})+(?!\d))/g,
96417
				this.oLanguage.sThousands
96418
			);
96419
		},
9382
	
96420
	
9383
		// Set
9384
		_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );
9385
		_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );
9386
	
96421
	
9387
		return this;
96422
		/**
9388
	} );
96423
		 * This function is called on every 'draw' event, and allows you to
96424
		 * dynamically modify the header row. This can be used to calculate and
96425
		 * display useful information about the table.
96426
		 */
96427
		"fnHeaderCallback": null,
9389
	
96428
	
9390
	
96429
	
96430
		/**
96431
		 * The information element can be used to convey information about the current
96432
		 * state of the table. Although the internationalisation options presented by
96433
		 * DataTables are quite capable of dealing with most customisations, there may
96434
		 * be times where you wish to customise the string further. This callback
96435
		 * allows you to do exactly that.
96436
		 */
96437
		"fnInfoCallback": null,
9391
	
96438
	
9392
	/**
9393
	 * Get current ordering (sorting) that has been applied to the table.
9394
	 *
9395
	 * @returns {array} 2D array containing the sorting information for the first
9396
	 *   table in the current context. Each element in the parent array represents
9397
	 *   a column being sorted upon (i.e. multi-sorting with two columns would have
9398
	 *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is
9399
	 *   the column index that the sorting condition applies to, the second is the
9400
	 *   direction of the sort (`desc` or `asc`) and, optionally, the third is the
9401
	 *   index of the sorting order from the `column.sorting` initialisation array.
9402
	 *//**
9403
	 * Set the ordering for the table.
9404
	 *
9405
	 * @param {integer} order Column index to sort upon.
9406
	 * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)
9407
	 * @returns {DataTables.Api} this
9408
	 *//**
9409
	 * Set the ordering for the table.
9410
	 *
9411
	 * @param {array} order 1D array of sorting information to be applied.
9412
	 * @param {array} [...] Optional additional sorting conditions
9413
	 * @returns {DataTables.Api} this
9414
	 *//**
9415
	 * Set the ordering for the table.
9416
	 *
9417
	 * @param {array} order 2D array of sorting information to be applied.
9418
	 * @returns {DataTables.Api} this
9419
	 */
9420
	_api_register( 'order()', function ( order, dir ) {
9421
		var ctx = this.context;
9422
		var args = Array.prototype.slice.call( arguments );
9423
	
96439
	
9424
		if ( order === undefined ) {
96440
		/**
9425
			// get
96441
		 * Called when the table has been initialised. Normally DataTables will
9426
			return ctx.length !== 0 ?
96442
		 * initialise sequentially and there will be no need for this function,
9427
				ctx[0].aaSorting :
96443
		 * however, this does not hold true when using external language information
9428
				undefined;
96444
		 * since that is obtained using an async XHR call.
9429
		}
96445
		 */
96446
		"fnInitComplete": null,
9430
	
96447
	
9431
		// set
9432
		if ( typeof order === 'number' ) {
9433
			// Simple column / direction passed in
9434
			order = [ [ order, dir ] ];
9435
		}
9436
		else if ( args.length > 1 ) {
9437
			// Arguments passed in (list of 1D arrays)
9438
			order = args;
9439
		}
9440
		// otherwise a 2D array was passed in
9441
	
96448
	
9442
		return this.iterator( 'table', function ( settings ) {
96449
		/**
9443
			var resolved = [];
96450
		 * Called at the very start of each table draw and can be used to cancel the
9444
			_fnSortResolve(settings, resolved, order);
96451
		 * draw by returning false, any other return (including undefined) results in
96452
		 * the full draw occurring).
96453
		 */
96454
		"fnPreDrawCallback": null,
9445
96455
9446
			settings.aaSorting = resolved;
96456
9447
		} );
96457
		/**
9448
	} );
96458
		 * This function allows you to 'post process' each row after it have been
9449
	
96459
		 * generated for each table draw, but before it is rendered on screen. This
96460
		 * function might be used for setting the row class name etc.
96461
		 */
96462
		"fnRowCallback": null,
9450
	
96463
	
9451
	/**
9452
	 * Attach a sort listener to an element for a given column
9453
	 *
9454
	 * @param {node|jQuery|string} node Identifier for the element(s) to attach the
9455
	 *   listener to. This can take the form of a single DOM node, a jQuery
9456
	 *   collection of nodes or a jQuery selector which will identify the node(s).
9457
	 * @param {integer} column the column that a click on this node will sort on
9458
	 * @param {function} [callback] callback function when sort is run
9459
	 * @returns {DataTables.Api} this
9460
	 */
9461
	_api_register( 'order.listener()', function ( node, column, callback ) {
9462
		return this.iterator( 'table', function ( settings ) {
9463
			_fnSortAttachListener(settings, node, {}, column, callback);
9464
		} );
9465
	} );
9466
	
96464
	
96465
		/**
96466
		 * Load the table state. With this function you can define from where, and how, the
96467
		 * state of a table is loaded. By default DataTables will load from `localStorage`
96468
		 * but you might wish to use a server-side database or cookies.
96469
		 */
96470
		"fnStateLoadCallback": function ( settings ) {
96471
			try {
96472
				return JSON.parse(
96473
					(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
96474
						'DataTables_'+settings.sInstance+'_'+location.pathname
96475
					)
96476
				);
96477
			} catch (e) {
96478
				return {};
96479
			}
96480
		},
9467
	
96481
	
9468
	_api_register( 'order.fixed()', function ( set ) {
9469
		if ( ! set ) {
9470
			var ctx = this.context;
9471
			var fixed = ctx.length ?
9472
				ctx[0].aaSortingFixed :
9473
				undefined;
9474
	
96482
	
9475
			return Array.isArray( fixed ) ?
96483
		/**
9476
				{ pre: fixed } :
96484
		 * Callback which allows modification of the saved state prior to loading that state.
9477
				fixed;
96485
		 * This callback is called when the table is loading state from the stored data, but
9478
		}
96486
		 * prior to the settings object being modified by the saved state. Note that for
96487
		 * plug-in authors, you should use the `stateLoadParams` event to load parameters for
96488
		 * a plug-in.
96489
		 */
96490
		"fnStateLoadParams": null,
9479
	
96491
	
9480
		return this.iterator( 'table', function ( settings ) {
9481
			settings.aaSortingFixed = $.extend( true, {}, set );
9482
		} );
9483
	} );
9484
	
96492
	
96493
		/**
96494
		 * Callback that is called when the state has been loaded from the state saving method
96495
		 * and the DataTables settings object has been modified as a result of the loaded state.
96496
		 */
96497
		"fnStateLoaded": null,
9485
	
96498
	
9486
	// Order by the selected column(s)
9487
	_api_register( [
9488
		'columns().order()',
9489
		'column().order()'
9490
	], function ( dir ) {
9491
		var that = this;
9492
	
96499
	
9493
		if ( ! dir ) {
96500
		/**
9494
			return this.iterator( 'column', function ( settings, idx ) {
96501
		 * Save the table state. This function allows you to define where and how the state
9495
				var sort = _fnSortFlatten( settings );
96502
		 * information for the table is stored By default DataTables will use `localStorage`
96503
		 * but you might wish to use a server-side database or cookies.
96504
		 */
96505
		"fnStateSaveCallback": function ( settings, data ) {
96506
			try {
96507
				(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
96508
					'DataTables_'+settings.sInstance+'_'+location.pathname,
96509
					JSON.stringify( data )
96510
				);
96511
			} catch (e) {
96512
				// noop
96513
			}
96514
		},
9496
	
96515
	
9497
				for ( var i=0, iLen=sort.length ; i<iLen ; i++ ) {
9498
					if ( sort[i].col === idx ) {
9499
						return sort[i].dir;
9500
					}
9501
				}
9502
	
96516
	
9503
				return null;
96517
		/**
9504
			}, 1 );
96518
		 * Callback which allows modification of the state to be saved. Called when the table
9505
		}
96519
		 * has changed state a new state save is required. This method allows modification of
9506
		else {
96520
		 * the state saving object prior to actually doing the save, including addition or
9507
			return this.iterator( 'table', function ( settings, i ) {
96521
		 * other state properties or modification. Note that for plug-in authors, you should
9508
				settings.aaSorting = that[i].map( function (col) {
96522
		 * use the `stateSaveParams` event to save parameters for a plug-in.
9509
					return [ col, dir ];
96523
		 */
9510
				} );
96524
		"fnStateSaveParams": null,
9511
			} );
9512
		}
9513
	} );
9514
	
96525
	
9515
	_api_registerPlural('columns().orderable()', 'column().orderable()', function ( directions ) {
9516
		return this.iterator( 'column', function ( settings, idx ) {
9517
			var col = settings.aoColumns[idx];
9518
	
96526
	
9519
			return directions ?
96527
		/**
9520
				col.asSorting :
96528
		 * Duration for which the saved state information is considered valid. After this period
9521
				col.bSortable;
96529
		 * has elapsed the state will be returned to the default.
9522
		}, 1 );
96530
		 * Value is given in seconds.
9523
	} );
96531
		 */
96532
		"iStateDuration": 7200,
9524
	
96533
	
9525
	
96534
	
9526
	_api_register( 'processing()', function ( show ) {
96535
		/**
9527
		return this.iterator( 'table', function ( ctx ) {
96536
		 * Number of rows to display on a single page when using pagination. If
9528
			_fnProcessingDisplay( ctx, show );
96537
		 * feature enabled (`lengthChange`) then the end user will be able to override
9529
		} );
96538
		 * this to a custom setting using a pop-up menu.
9530
	} );
96539
		 */
96540
		"iDisplayLength": 10,
9531
	
96541
	
9532
	
96542
	
9533
	_api_register( 'search()', function ( input, regex, smart, caseInsen ) {
96543
		/**
9534
		var ctx = this.context;
96544
		 * Define the starting point for data display when using DataTables with
96545
		 * pagination. Note that this parameter is the number of records, rather than
96546
		 * the page number, so if you have 10 records per page and want to start on
96547
		 * the third page, it should be "20".
96548
		 */
96549
		"iDisplayStart": 0,
9535
	
96550
	
9536
		if ( input === undefined ) {
9537
			// get
9538
			return ctx.length !== 0 ?
9539
				ctx[0].oPreviousSearch.search :
9540
				undefined;
9541
		}
9542
	
96551
	
9543
		// set
96552
		/**
9544
		return this.iterator( 'table', function ( settings ) {
96553
		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
9545
			if ( ! settings.oFeatures.bFilter ) {
96554
		 * and filtering) by adding a `tabindex` attribute to the required elements. This
9546
				return;
96555
		 * allows you to tab through the controls and press the enter key to activate them.
9547
			}
96556
		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
96557
		 * You can overrule this using this parameter if you wish. Use a value of -1 to
96558
		 * disable built-in keyboard navigation.
96559
		 */
96560
		"iTabIndex": 0,
9548
	
96561
	
9549
			if (typeof regex === 'object') {
9550
				// New style options to pass to the search builder
9551
				_fnFilterComplete( settings, $.extend( settings.oPreviousSearch, regex, {
9552
					search: input
9553
				} ) );
9554
			}
9555
			else {
9556
				// Compat for the old options
9557
				_fnFilterComplete( settings, $.extend( settings.oPreviousSearch, {
9558
					search: input,
9559
					regex:  regex === null ? false : regex,
9560
					smart:  smart === null ? true  : smart,
9561
					caseInsensitive: caseInsen === null ? true : caseInsen
9562
				} ) );
9563
			}
9564
		} );
9565
	} );
9566
	
96562
	
9567
	_api_register( 'search.fixed()', function ( name, search ) {
96563
		/**
9568
		var ret = this.iterator( true, 'table', function ( settings ) {
96564
		 * Classes that DataTables assigns to the various components and features
9569
			var fixed = settings.searchFixed;
96565
		 * that it adds to the HTML table. This allows classes to be configured
96566
		 * during initialisation in addition to through the static
96567
		 * {@link DataTable.ext.oStdClasses} object).
96568
		 */
96569
		"oClasses": {},
9570
	
96570
	
9571
			if (! name) {
9572
				return Object.keys(fixed);
9573
			}
9574
			else if (search === undefined) {
9575
				return fixed[name];
9576
			}
9577
			else if (search === null) {
9578
				delete fixed[name];
9579
			}
9580
			else {
9581
				fixed[name] = search;
9582
			}
9583
	
96571
	
9584
			return this;
96572
		/**
9585
		} );
96573
		 * All strings that DataTables uses in the user interface that it creates
96574
		 * are defined in this object, allowing you to modified them individually or
96575
		 * completely replace them all as required.
96576
		 */
96577
		"oLanguage": {
96578
			/**
96579
			 * Strings that are used for WAI-ARIA labels and controls only (these are not
96580
			 * actually visible on the page, but will be read by screenreaders, and thus
96581
			 * must be internationalised as well).
96582
			 */
96583
			"oAria": {
96584
				/**
96585
				 * ARIA label that is added to the table headers when the column may be sorted
96586
				 */
96587
				"orderable": ": Activate to sort",
9586
	
96588
	
9587
		return name !== undefined && search === undefined
96589
				/**
9588
			? ret[0]
96590
				 * ARIA label that is added to the table headers when the column is currently being sorted
9589
			: ret;
96591
				 */
9590
	} );
96592
				"orderableReverse": ": Activate to invert sorting",
9591
	
96593
	
9592
	_api_registerPlural(
96594
				/**
9593
		'columns().search()',
96595
				 * ARIA label that is added to the table headers when the column is currently being
9594
		'column().search()',
96596
				 * sorted and next step is to remove sorting
9595
		function ( input, regex, smart, caseInsen ) {
96597
				 */
9596
			return this.iterator( 'column', function ( settings, column ) {
96598
				"orderableRemove": ": Activate to remove sorting",
9597
				var preSearch = settings.aoPreSearchCols;
9598
	
96599
	
9599
				if ( input === undefined ) {
96600
				paginate: {
9600
					// get
96601
					first: 'First',
9601
					return preSearch[ column ].search;
96602
					last: 'Last',
96603
					next: 'Next',
96604
					previous: 'Previous',
96605
					number: ''
9602
				}
96606
				}
96607
			},
9603
	
96608
	
9604
				// set
96609
			/**
9605
				if ( ! settings.oFeatures.bFilter ) {
96610
			 * Pagination string used by DataTables for the built-in pagination
9606
					return;
96611
			 * control types.
9607
				}
96612
			 */
96613
			"oPaginate": {
96614
				/**
96615
				 * Label and character for first page button («)
96616
				 */
96617
				"sFirst": "\u00AB",
9608
	
96618
	
9609
				if (typeof regex === 'object') {
96619
				/**
9610
					// New style options to pass to the search builder
96620
				 * Last page button (»)
9611
					$.extend( preSearch[ column ], regex, {
96621
				 */
9612
						search: input
96622
				"sLast": "\u00BB",
9613
					} );
9614
				}
9615
				else {
9616
					// Old style (with not all options available)
9617
					$.extend( preSearch[ column ], {
9618
						search: input,
9619
						regex:  regex === null ? false : regex,
9620
						smart:  smart === null ? true  : smart,
9621
						caseInsensitive: caseInsen === null ? true : caseInsen
9622
					} );
9623
				}
9624
	
96623
	
9625
				_fnFilterComplete( settings, settings.oPreviousSearch );
96624
				/**
9626
			} );
96625
				 * Next page button (›)
9627
		}
96626
				 */
9628
	);
96627
				"sNext": "\u203A",
9629
	
96628
	
9630
	_api_register([
96629
				/**
9631
			'columns().search.fixed()',
96630
				 * Previous page button (‹)
9632
			'column().search.fixed()'
96631
				 */
9633
		],
96632
				"sPrevious": "\u2039",
9634
		function ( name, search ) {
96633
			},
9635
			var ret = this.iterator( true, 'column', function ( settings, colIdx ) {
96634
	
9636
				var fixed = settings.aoColumns[colIdx].searchFixed;
96635
			/**
96636
			 * Plural object for the data type the table is showing
96637
			 */
96638
			entries: {
96639
				_: "entries",
96640
				1: "entry"
96641
			},
9637
	
96642
	
9638
				if (! name) {
96643
			/**
9639
					return Object.keys(fixed);
96644
			 * Page length options
9640
				}
96645
			 */
9641
				else if (search === undefined) {
96646
			lengthLabels: {
9642
					return fixed[name] || null;
96647
				'-1': 'All'
9643
				}
96648
			},
9644
				else if (search === null) {
9645
					delete fixed[name];
9646
				}
9647
				else {
9648
					fixed[name] = search;
9649
				}
9650
	
96649
	
9651
				return this;
96650
			/**
9652
			} );
96651
			 * This string is shown in preference to `zeroRecords` when the table is
96652
			 * empty of data (regardless of filtering). Note that this is an optional
96653
			 * parameter - if it is not given, the value of `zeroRecords` will be used
96654
			 * instead (either the default or given value).
96655
			 */
96656
			"sEmptyTable": "No data available in table",
9653
	
96657
	
9654
			return name !== undefined && search === undefined
9655
				? ret[0]
9656
				: ret;
9657
		}
9658
	);
9659
	/*
9660
	 * State API methods
9661
	 */
9662
	
96658
	
9663
	_api_register( 'state()', function ( set, ignoreTime ) {
96659
			/**
9664
		// getter
96660
			 * This string gives information to the end user about the information
9665
		if ( ! set ) {
96661
			 * that is current on display on the page. The following tokens can be
9666
			return this.context.length ?
96662
			 * used in the string and will be dynamically replaced as the table
9667
				this.context[0].oSavedState :
96663
			 * display updates. This tokens can be placed anywhere in the string, or
9668
				null;
96664
			 * removed as needed by the language requires:
9669
		}
96665
			 *
96666
			 * * `\_START\_` - Display index of the first record on the current page
96667
			 * * `\_END\_` - Display index of the last record on the current page
96668
			 * * `\_TOTAL\_` - Number of records in the table after filtering
96669
			 * * `\_MAX\_` - Number of records in the table without filtering
96670
			 * * `\_PAGE\_` - Current page number
96671
			 * * `\_PAGES\_` - Total number of pages of data in the table
96672
			 */
96673
			"sInfo": "Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",
9670
	
96674
	
9671
		var setMutate = $.extend( true, {}, set );
9672
	
96675
	
9673
		// setter
96676
			/**
9674
		return this.iterator( 'table', function ( settings ) {
96677
			 * Display information string for when the table is empty. Typically the
9675
			if ( ignoreTime !== false ) {
96678
			 * format of this string should match `info`.
9676
				setMutate.time = +new Date() + 100;
96679
			 */
9677
			}
96680
			"sInfoEmpty": "Showing 0 to 0 of 0 _ENTRIES-TOTAL_",
9678
	
96681
	
9679
			_fnImplementState( settings, setMutate, function(){} );
9680
		} );
9681
	} );
9682
	
96682
	
96683
			/**
96684
			 * When a user filters the information in a table, this string is appended
96685
			 * to the information (`info`) to give an idea of how strong the filtering
96686
			 * is. The variable _MAX_ is dynamically updated.
96687
			 */
96688
			"sInfoFiltered": "(filtered from _MAX_ total _ENTRIES-MAX_)",
9683
	
96689
	
9684
	_api_register( 'state.clear()', function () {
9685
		return this.iterator( 'table', function ( settings ) {
9686
			// Save an empty object
9687
			settings.fnStateSaveCallback.call( settings.oInstance, settings, {} );
9688
		} );
9689
	} );
9690
	
96690
	
96691
			/**
96692
			 * If can be useful to append extra information to the info string at times,
96693
			 * and this variable does exactly that. This information will be appended to
96694
			 * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
96695
			 * being used) at all times.
96696
			 */
96697
			"sInfoPostFix": "",
9691
	
96698
	
9692
	_api_register( 'state.loaded()', function () {
9693
		return this.context.length ?
9694
			this.context[0].oLoadedState :
9695
			null;
9696
	} );
9697
	
96699
	
96700
			/**
96701
			 * This decimal place operator is a little different from the other
96702
			 * language options since DataTables doesn't output floating point
96703
			 * numbers, so it won't ever use this for display of a number. Rather,
96704
			 * what this parameter does is modify the sort methods of the table so
96705
			 * that numbers which are in a format which has a character other than
96706
			 * a period (`.`) as a decimal place will be sorted numerically.
96707
			 *
96708
			 * Note that numbers with different decimal places cannot be shown in
96709
			 * the same table and still be sortable, the table must be consistent.
96710
			 * However, multiple different tables on the page can use different
96711
			 * decimal place characters.
96712
			 */
96713
			"sDecimal": "",
9698
	
96714
	
9699
	_api_register( 'state.save()', function () {
9700
		return this.iterator( 'table', function ( settings ) {
9701
			_fnSaveState( settings );
9702
		} );
9703
	} );
9704
	
96715
	
9705
	// Can be assigned in DateTable.use() - note luxon and moment vars are in helpers.js
96716
			/**
9706
	var __bootstrap;
96717
			 * DataTables has a build in number formatter (`formatNumber`) which is
9707
	var __foundation;
96718
			 * used to format large numbers that are used in the table information.
9708
96719
			 * By default a comma is used, but this can be trivially changed to any
9709
	/**
96720
			 * character you wish with this parameter.
9710
	 * Set the libraries that DataTables uses, or the global objects.
96721
			 */
9711
	 * Note that the arguments can be either way around (legacy support)
96722
			"sThousands": ",",
9712
	 * and the second is optional. See docs.
9713
	 */
9714
	DataTable.use = function (arg1, arg2) {
9715
		// Reverse arguments for legacy support
9716
		var module = typeof arg1 === 'string'
9717
			? arg2
9718
			: arg1;
9719
		var type = typeof arg2 === 'string'
9720
			? arg2
9721
			: arg1;
9722
	
96723
	
9723
		// Getter
9724
		if (module === undefined && typeof type === 'string') {
9725
			switch (type) {
9726
				case 'lib':
9727
				case 'jq':
9728
					return $;
9729
	
96724
	
9730
				case 'win':
96725
			/**
9731
					return window;
96726
			 * Detail the action that will be taken when the drop down menu for the
96727
			 * pagination length option is changed. The '_MENU_' variable is replaced
96728
			 * with a default select list of 10, 25, 50 and 100, and can be replaced
96729
			 * with a custom select box if required.
96730
			 */
96731
			"sLengthMenu": "_MENU_ _ENTRIES_ per page",
9732
	
96732
	
9733
				case 'datetime':
9734
					return DataTable.DateTime;
9735
	
96733
	
9736
				case 'luxon':
96734
			/**
9737
					return __luxon;
96735
			 * When using Ajax sourced data and during the first draw when DataTables is
96736
			 * gathering the data, this message is shown in an empty row in the table to
96737
			 * indicate to the end user the data is being loaded. Note that this
96738
			 * parameter is not used when loading data by server-side processing, just
96739
			 * Ajax sourced data with client-side processing.
96740
			 */
96741
			"sLoadingRecords": "Loading...",
9738
	
96742
	
9739
				case 'moment':
9740
					return __moment;
9741
	
96743
	
9742
				case 'bootstrap':
96744
			/**
9743
					// Use local if set, otherwise try window, which could be undefined
96745
			 * Text which is displayed when the table is processing a user action
9744
					return __bootstrap || window.bootstrap;
96746
			 * (usually a sort command or similar).
9745
96747
			 */
9746
				case 'foundation':
96748
			"sProcessing": "",
9747
					// Ditto
9748
					return __foundation || window.Foundation;
9749
9750
				default:
9751
					return null;
9752
			}
9753
		}
9754
	
96749
	
9755
		// Setter
9756
		if (type === 'lib' || type === 'jq' || (module && module.fn && module.fn.jquery)) {
9757
			$ = module;
9758
		}
9759
		else if (type === 'win' || (module && module.document)) {
9760
			window = module;
9761
			document = module.document;
9762
		}
9763
		else if (type === 'datetime' || (module && module.type === 'DateTime')) {
9764
			DataTable.DateTime = module;
9765
		}
9766
		else if (type === 'luxon' || (module && module.FixedOffsetZone)) {
9767
			__luxon = module;
9768
		}
9769
		else if (type === 'moment' || (module && module.isMoment)) {
9770
			__moment = module;
9771
		}
9772
		else if (type === 'bootstrap' || (module && module.Modal && module.Modal.NAME === 'modal'))
9773
		{
9774
			// This is currently for BS5 only. BS3/4 attach to jQuery, so no need to use `.use()`
9775
			__bootstrap = module;
9776
		}
9777
		else if (type === 'foundation' || (module && module.Reveal)) {
9778
			__foundation = module;
9779
		}
9780
	}
9781
	
96750
	
9782
	/**
96751
			/**
9783
	 * CommonJS factory function pass through. This will check if the arguments
96752
			 * Details the actions that will be taken when the user types into the
9784
	 * given are a window object or a jQuery object. If so they are set
96753
			 * filtering input text box. The variable "_INPUT_", if used in the string,
9785
	 * accordingly.
96754
			 * is replaced with the HTML text box for the filtering input allowing
9786
	 * @param {*} root Window
96755
			 * control over where it appears in the string. If "_INPUT_" is not given
9787
	 * @param {*} jq jQUery
96756
			 * then the input box is appended to the string automatically.
9788
	 * @returns {boolean} Indicator
96757
			 */
9789
	 */
96758
			"sSearch": "Search:",
9790
	DataTable.factory = function (root, jq) {
9791
		var is = false;
9792
	
96759
	
9793
		// Test if the first parameter is a window object
9794
		if (root && root.document) {
9795
			window = root;
9796
			document = root.document;
9797
		}
9798
	
96760
	
9799
		// Test if the second parameter is a jQuery object
96761
			/**
9800
		if (jq && jq.fn && jq.fn.jquery) {
96762
			 * Assign a `placeholder` attribute to the search `input` element
9801
			$ = jq;
96763
			 *  @type string
9802
			is = true;
96764
			 *  @default
9803
		}
96765
			 *
96766
			 *  @dtopt Language
96767
			 *  @name DataTable.defaults.language.searchPlaceholder
96768
			 */
96769
			"sSearchPlaceholder": "",
9804
	
96770
	
9805
		return is;
9806
	}
9807
	
96771
	
9808
	/**
96772
			/**
9809
	 * Provide a common method for plug-ins to check the version of DataTables being
96773
			 * All of the language information can be stored in a file on the
9810
	 * used, in order to ensure compatibility.
96774
			 * server-side, which DataTables will look up if this parameter is passed.
9811
	 *
96775
			 * It must store the URL of the language file, which is in a JSON format,
9812
	 *  @param {string} version Version string to check for, in the format "X.Y.Z".
96776
			 * and the object has the same properties as the oLanguage object in the
9813
	 *    Note that the formats "X" and "X.Y" are also acceptable.
96777
			 * initialiser object (i.e. the above parameters). Please refer to one of
9814
	 *  @param {string} [version2=current DataTables version] As above, but optional.
96778
			 * the example language files to see how this works in action.
9815
	 *   If not given the current DataTables version will be used.
96779
			 */
9816
	 *  @returns {boolean} true if this version of DataTables is greater or equal to
96780
			"sUrl": "",
9817
	 *    the required version, or false if this version of DataTales is not
96781
	
9818
	 *    suitable
9819
	 *  @static
9820
	 *  @dtopt API-Static
9821
	 *
9822
	 *  @example
9823
	 *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );
9824
	 */
9825
	DataTable.versionCheck = function( version, version2 )
9826
	{
9827
		var aThis = version2 ?
9828
			version2.split('.') :
9829
			DataTable.version.split('.');
9830
		var aThat = version.split('.');
9831
		var iThis, iThat;
9832
	
96782
	
9833
		for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {
96783
			/**
9834
			iThis = parseInt( aThis[i], 10 ) || 0;
96784
			 * Text shown inside the table records when the is no information to be
9835
			iThat = parseInt( aThat[i], 10 ) || 0;
96785
			 * displayed after filtering. `emptyTable` is shown when there is simply no
96786
			 * information in the table at all (regardless of filtering).
96787
			 */
96788
			"sZeroRecords": "No matching records found"
96789
		},
9836
	
96790
	
9837
			// Parts are the same, keep comparing
9838
			if (iThis === iThat) {
9839
				continue;
9840
			}
9841
	
96791
	
9842
			// Parts are different, return immediately
96792
		/** The initial data order is reversed when `desc` ordering */
9843
			return iThis > iThat;
96793
		orderDescReverse: true,
9844
		}
9845
	
96794
	
9846
		return true;
9847
	};
9848
	
96795
	
96796
		/**
96797
		 * This parameter allows you to have define the global filtering state at
96798
		 * initialisation time. As an object the `search` parameter must be
96799
		 * defined, but all other parameters are optional. When `regex` is true,
96800
		 * the search string will be treated as a regular expression, when false
96801
		 * (default) it will be treated as a straight string. When `smart`
96802
		 * DataTables will use it's smart filtering methods (to word match at
96803
		 * any point in the data), when false this will not be done.
96804
		 */
96805
		"oSearch": $.extend( {}, DataTable.models.oSearch ),
9849
	
96806
	
9850
	/**
9851
	 * Check if a `<table>` node is a DataTable table already or not.
9852
	 *
9853
	 *  @param {node|jquery|string} table Table node, jQuery object or jQuery
9854
	 *      selector for the table to test. Note that if more than more than one
9855
	 *      table is passed on, only the first will be checked
9856
	 *  @returns {boolean} true the table given is a DataTable, or false otherwise
9857
	 *  @static
9858
	 *  @dtopt API-Static
9859
	 *
9860
	 *  @example
9861
	 *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
9862
	 *      $('#example').dataTable();
9863
	 *    }
9864
	 */
9865
	DataTable.isDataTable = function ( table )
9866
	{
9867
		var t = $(table).get(0);
9868
		var is = false;
9869
	
96807
	
9870
		if ( table instanceof DataTable.Api ) {
96808
		/**
9871
			return true;
96809
		 * Table and control layout. This replaces the legacy `dom` option.
9872
		}
96810
		 */
96811
		layout: {
96812
			topStart: 'pageLength',
96813
			topEnd: 'search',
96814
			bottomStart: 'info',
96815
			bottomEnd: 'paging'
96816
		},
9873
	
96817
	
9874
		$.each( DataTable.settings, function (i, o) {
9875
			var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
9876
			var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
9877
	
96818
	
9878
			if ( o.nTable === t || head === t || foot === t ) {
96819
		/**
9879
				is = true;
96820
		 * Legacy DOM layout option
9880
			}
96821
		 */
9881
		} );
96822
		"sDom": null,
9882
	
96823
	
9883
		return is;
9884
	};
9885
	
96824
	
96825
		/**
96826
		 * Search delay option. This will throttle full table searches that use the
96827
		 * DataTables provided search input element (it does not effect calls to
96828
		 * `dt-api search()`, providing a delay before the search is made.
96829
		 */
96830
		"searchDelay": null,
9886
	
96831
	
9887
	/**
9888
	 * Get all DataTable tables that have been initialised - optionally you can
9889
	 * select to get only currently visible tables.
9890
	 *
9891
	 *  @param {boolean} [visible=false] Flag to indicate if you want all (default)
9892
	 *    or visible tables only.
9893
	 *  @returns {array} Array of `table` nodes (not DataTable instances) which are
9894
	 *    DataTables
9895
	 *  @static
9896
	 *  @dtopt API-Static
9897
	 *
9898
	 *  @example
9899
	 *    $.each( $.fn.dataTable.tables(true), function () {
9900
	 *      $(table).DataTable().columns.adjust();
9901
	 *    } );
9902
	 */
9903
	DataTable.tables = function ( visible )
9904
	{
9905
		var api = false;
9906
	
96832
	
9907
		if ( $.isPlainObject( visible ) ) {
96833
		/**
9908
			api = visible.api;
96834
		 * DataTables features six different built-in options for the buttons to
9909
			visible = visible.visible;
96835
		 * display for pagination control:
9910
		}
96836
		 *
96837
		 * * `numbers` - Page number buttons only
96838
		 * * `simple` - 'Previous' and 'Next' buttons only
96839
		 * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
96840
		 * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
96841
		 * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers
96842
		 * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers
96843
		 */
96844
		"sPaginationType": "",
9911
	
96845
	
9912
		var a = DataTable.settings
9913
			.filter( function (o) {
9914
				return !visible || (visible && $(o.nTable).is(':visible')) 
9915
					? true
9916
					: false;
9917
			} )
9918
			.map( function (o) {
9919
				return o.nTable;
9920
			});
9921
	
96846
	
9922
		return api ?
96847
		/**
9923
			new _Api( a ) :
96848
		 * Enable horizontal scrolling. When a table is too wide to fit into a
9924
			a;
96849
		 * certain layout, or you have a large number of columns in the table, you
9925
	};
96850
		 * can enable x-scrolling to show the table in a viewport, which can be
96851
		 * scrolled. This property can be `true` which will allow the table to
96852
		 * scroll horizontally when needed, or any CSS unit, or a number (in which
96853
		 * case it will be treated as a pixel measurement). Setting as simply `true`
96854
		 * is recommended.
96855
		 */
96856
		"sScrollX": "",
9926
	
96857
	
9927
	
96858
	
9928
	/**
96859
		/**
9929
	 * Convert from camel case parameters to Hungarian notation. This is made public
96860
		 * This property can be used to force a DataTable to use more width than it
9930
	 * for the extensions to provide the same ability as DataTables core to accept
96861
		 * might otherwise do when x-scrolling is enabled. For example if you have a
9931
	 * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
96862
		 * table which requires to be well spaced, this parameter is useful for
9932
	 * parameters.
96863
		 * "over-sizing" the table, and thus forcing scrolling. This property can by
9933
	 *
96864
		 * any CSS unit, or a number (in which case it will be treated as a pixel
9934
	 *  @param {object} src The model object which holds all parameters that can be
96865
		 * measurement).
9935
	 *    mapped.
96866
		 */
9936
	 *  @param {object} user The object to convert from camel case to Hungarian.
96867
		"sScrollXInner": "",
9937
	 *  @param {boolean} force When set to `true`, properties which already have a
9938
	 *    Hungarian value in the `user` object will be overwritten. Otherwise they
9939
	 *    won't be.
9940
	 */
9941
	DataTable.camelToHungarian = _fnCamelToHungarian;
9942
	
96868
	
9943
	
96869
	
96870
		/**
96871
		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
96872
		 * to the given height, and enable scrolling for any data which overflows the
96873
		 * current viewport. This can be used as an alternative to paging to display
96874
		 * a lot of data in a small area (although paging and scrolling can both be
96875
		 * enabled at the same time). This property can be any CSS unit, or a number
96876
		 * (in which case it will be treated as a pixel measurement).
96877
		 */
96878
		"sScrollY": "",
9944
	
96879
	
9945
	/**
9946
	 *
9947
	 */
9948
	_api_register( '$()', function ( selector, opts ) {
9949
		var
9950
			rows   = this.rows( opts ).nodes(), // Get all rows
9951
			jqRows = $(rows);
9952
	
96880
	
9953
		return $( [].concat(
96881
		/**
9954
			jqRows.filter( selector ).toArray(),
96882
		 * __Deprecated__ The functionality provided by this parameter has now been
9955
			jqRows.find( selector ).toArray()
96883
		 * superseded by that provided through `ajax`, which should be used instead.
9956
		) );
96884
		 *
9957
	} );
96885
		 * Set the HTTP method that is used to make the Ajax call for server-side
96886
		 * processing or Ajax sourced data.
96887
		 */
96888
		"sServerMethod": "GET",
9958
	
96889
	
9959
	
96890
	
9960
	// jQuery functions to operate on the tables
96891
		/**
9961
	$.each( [ 'on', 'one', 'off' ], function (i, key) {
96892
		 * DataTables makes use of renderers when displaying HTML elements for
9962
		_api_register( key+'()', function ( /* event, handler */ ) {
96893
		 * a table. These renderers can be added or modified by plug-ins to
9963
			var args = Array.prototype.slice.call(arguments);
96894
		 * generate suitable mark-up for a site. For example the Bootstrap
96895
		 * integration plug-in for DataTables uses a paging button renderer to
96896
		 * display pagination buttons in the mark-up required by Bootstrap.
96897
		 *
96898
		 * For further information about the renderers available see
96899
		 * DataTable.ext.renderer
96900
		 */
96901
		"renderer": null,
9964
	
96902
	
9965
			// Add the `dt` namespace automatically if it isn't already present
9966
			args[0] = args[0].split( /\s/ ).map( function ( e ) {
9967
				return ! e.match(/\.dt\b/) ?
9968
					e+'.dt' :
9969
					e;
9970
				} ).join( ' ' );
9971
	
96903
	
9972
			var inst = $( this.tables().nodes() );
96904
		/**
9973
			inst[key].apply( inst, args );
96905
		 * Set the data property name that DataTables should use to get a row's id
9974
			return this;
96906
		 * to set as the `id` property in the node.
9975
		} );
96907
		 */
9976
	} );
96908
		"rowId": "DT_RowId",
9977
	
96909
	
9978
	
96910
	
9979
	_api_register( 'clear()', function () {
96911
		/**
9980
		return this.iterator( 'table', function ( settings ) {
96912
		 * Caption value
9981
			_fnClearTable( settings );
96913
		 */
9982
		} );
96914
		"caption": null,
9983
	} );
9984
	
96915
	
9985
	
96916
	
9986
	_api_register( 'error()', function (msg) {
96917
		/**
9987
		return this.iterator( 'table', function ( settings ) {
96918
		 * For server-side processing - use the data from the DOM for the first draw
9988
			_fnLog( settings, 0, msg );
96919
		 */
9989
		} );
96920
		iDeferLoading: null,
9990
	} );
9991
	
96921
	
96922
		/** Event listeners */
96923
		on: null,
9992
	
96924
	
9993
	_api_register( 'settings()', function () {
96925
		/** Title wrapper element type */
9994
		return new _Api( this.context, this.context );
96926
		columnTitleTag: 'span'
9995
	} );
96927
	};
9996
	
96928
	
96929
	_fnHungarianMap( DataTable.defaults );
9997
	
96930
	
9998
	_api_register( 'init()', function () {
9999
		var ctx = this.context;
10000
		return ctx.length ? ctx[0].oInit : null;
10001
	} );
10002
	
96931
	
10003
	
96932
	
10004
	_api_register( 'data()', function () {
96933
	/*
10005
		return this.iterator( 'table', function ( settings ) {
96934
	 * Developer note - See note in model.defaults.js about the use of Hungarian
10006
			return _pluck( settings.aoData, '_aData' );
96935
	 * notation and camel case.
10007
		} ).flatten();
96936
	 */
10008
	} );
10009
	
96937
	
96938
	/**
96939
	 * Column options that can be given to DataTables at initialisation time.
96940
	 *  @namespace
96941
	 */
96942
	DataTable.defaults.column = {
96943
		/**
96944
		 * Define which column(s) an order will occur on for this column. This
96945
		 * allows a column's ordering to take multiple columns into account when
96946
		 * doing a sort or use the data from a different column. For example first
96947
		 * name / last name columns make sense to do a multi-column sort over the
96948
		 * two columns.
96949
		 */
96950
		"aDataSort": null,
96951
		"iDataSort": -1,
10010
	
96952
	
10011
	_api_register( 'trigger()', function ( name, args, bubbles ) {
96953
		ariaTitle: '',
10012
		return this.iterator( 'table', function ( settings ) {
10013
			return _fnCallbackFire( settings, null, name, args, bubbles );
10014
		} ).flatten();
10015
	} );
10016
	
96954
	
10017
	
96955
	
10018
	_api_register( 'ready()', function ( fn ) {
96956
		/**
10019
		var ctx = this.context;
96957
		 * You can control the default ordering direction, and even alter the
96958
		 * behaviour of the sort handler (i.e. only allow ascending ordering etc)
96959
		 * using this parameter.
96960
		 */
96961
		"asSorting": [ 'asc', 'desc', '' ],
10020
	
96962
	
10021
		// Get status of first table
10022
		if (! fn) {
10023
			return ctx.length
10024
				? (ctx[0]._bInitComplete || false)
10025
				: null;
10026
		}
10027
	
96963
	
10028
		// Function to run either once the table becomes ready or
96964
		/**
10029
		// immediately if it is already ready.
96965
		 * Enable or disable filtering on the data in this column.
10030
		return this.tables().every(function () {
96966
		 */
10031
			var api = this;
96967
		"bSearchable": true,
10032
96968
10033
			if (this.context[0]._bInitComplete) {
10034
				fn.call(api);
10035
			}
10036
			else {
10037
				this.on('init.dt.DT', function () {
10038
					fn.call(api);
10039
				});
10040
			}
10041
		} );
10042
	} );
10043
	
96969
	
96970
		/**
96971
		 * Enable or disable ordering on this column.
96972
		 */
96973
		"bSortable": true,
96974
10044
	
96975
	
10045
	_api_register( 'destroy()', function ( remove ) {
96976
		/**
10046
		remove = remove || false;
96977
		 * Enable or disable the display of this column.
10047
	
96978
		 */
10048
		return this.iterator( 'table', function ( settings ) {
96979
		"bVisible": true,
10049
			var classes   = settings.oClasses;
10050
			var table     = settings.nTable;
10051
			var tbody     = settings.nTBody;
10052
			var thead     = settings.nTHead;
10053
			var tfoot     = settings.nTFoot;
10054
			var jqTable   = $(table);
10055
			var jqTbody   = $(tbody);
10056
			var jqWrapper = $(settings.nTableWrapper);
10057
			var rows      = settings.aoData.map( function (r) { return r ? r.nTr : null; } );
10058
			var orderClasses = classes.order;
10059
	
96980
	
10060
			// Flag to note that the table is currently being destroyed - no action
10061
			// should be taken
10062
			settings.bDestroying = true;
10063
	
96981
	
10064
			// Fire off the destroy callbacks for plug-ins etc
96982
		/**
10065
			_fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings], true );
96983
		 * Developer definable function that is called whenever a cell is created (Ajax source,
96984
		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
96985
		 * allowing you to modify the DOM element (add background colour for example) when the
96986
		 * element is available.
96987
		 */
96988
		"fnCreatedCell": null,
10066
	
96989
	
10067
			// If not being removed from the document, make all columns visible
10068
			if ( ! remove ) {
10069
				new _Api( settings ).columns().visible( true );
10070
			}
10071
	
96990
	
10072
			// Container width change listener
96991
		/**
10073
			if (settings.resizeObserver) {
96992
		 * This property can be used to read data from any data source property,
10074
				settings.resizeObserver.disconnect();
96993
		 * including deeply nested objects / properties. `data` can be given in a
10075
			}
96994
		 * number of different ways which effect its behaviour:
96995
		 *
96996
		 * * `integer` - treated as an array index for the data source. This is the
96997
		 *   default that DataTables uses (incrementally increased for each column).
96998
		 * * `string` - read an object property from the data source. There are
96999
		 *   three 'special' options that can be used in the string to alter how
97000
		 *   DataTables reads the data from the source object:
97001
		 *    * `.` - Dotted JavaScript notation. Just as you use a `.` in
97002
		 *      JavaScript to read from nested objects, so to can the options
97003
		 *      specified in `data`. For example: `browser.version` or
97004
		 *      `browser.name`. If your object parameter name contains a period, use
97005
		 *      `\\` to escape it - i.e. `first\\.name`.
97006
		 *    * `[]` - Array notation. DataTables can automatically combine data
97007
		 *      from and array source, joining the data with the characters provided
97008
		 *      between the two brackets. For example: `name[, ]` would provide a
97009
		 *      comma-space separated list from the source array. If no characters
97010
		 *      are provided between the brackets, the original array source is
97011
		 *      returned.
97012
		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
97013
		 *      execute a function of the name given. For example: `browser()` for a
97014
		 *      simple function on the data source, `browser.version()` for a
97015
		 *      function in a nested property or even `browser().version` to get an
97016
		 *      object property if the function called returns an object. Note that
97017
		 *      function notation is recommended for use in `render` rather than
97018
		 *      `data` as it is much simpler to use as a renderer.
97019
		 * * `null` - use the original data source for the row rather than plucking
97020
		 *   data directly from it. This action has effects on two other
97021
		 *   initialisation options:
97022
		 *    * `defaultContent` - When null is given as the `data` option and
97023
		 *      `defaultContent` is specified for the column, the value defined by
97024
		 *      `defaultContent` will be used for the cell.
97025
		 *    * `render` - When null is used for the `data` option and the `render`
97026
		 *      option is specified for the column, the whole data source for the
97027
		 *      row is used for the renderer.
97028
		 * * `function` - the function given will be executed whenever DataTables
97029
		 *   needs to set or get the data for a cell in the column. The function
97030
		 *   takes three parameters:
97031
		 *    * Parameters:
97032
		 *      * `{array|object}` The data source for the row
97033
		 *      * `{string}` The type call data requested - this will be 'set' when
97034
		 *        setting data or 'filter', 'display', 'type', 'sort' or undefined
97035
		 *        when gathering data. Note that when `undefined` is given for the
97036
		 *        type DataTables expects to get the raw data for the object back<
97037
		 *      * `{*}` Data to set when the second parameter is 'set'.
97038
		 *    * Return:
97039
		 *      * The return value from the function is not required when 'set' is
97040
		 *        the type of call, but otherwise the return is what will be used
97041
		 *        for the data requested.
97042
		 *
97043
		 * Note that `data` is a getter and setter option. If you just require
97044
		 * formatting of data for output, you will likely want to use `render` which
97045
		 * is simply a getter and thus simpler to use.
97046
		 *
97047
		 * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
97048
		 * name change reflects the flexibility of this property and is consistent
97049
		 * with the naming of mRender. If 'mDataProp' is given, then it will still
97050
		 * be used by DataTables, as it automatically maps the old name to the new
97051
		 * if required.
97052
		 */
97053
		"mData": null,
10076
97054
10077
			// Blitz all `DT` namespaced events (these are internal events, the
10078
			// lowercase, `dt` events are user subscribed and they are responsible
10079
			// for removing them
10080
			jqWrapper.off('.DT').find(':not(tbody *)').off('.DT');
10081
			$(window).off('.DT-'+settings.sInstance);
10082
	
10083
			// When scrolling we had to break the table up - restore it
10084
			if ( table != thead.parentNode ) {
10085
				jqTable.children('thead').detach();
10086
				jqTable.append( thead );
10087
			}
10088
	
97055
	
10089
			if ( tfoot && table != tfoot.parentNode ) {
97056
		/**
10090
				jqTable.children('tfoot').detach();
97057
		 * This property is the rendering partner to `data` and it is suggested that
10091
				jqTable.append( tfoot );
97058
		 * when you want to manipulate data for display (including filtering,
10092
			}
97059
		 * sorting etc) without altering the underlying data for the table, use this
97060
		 * property. `render` can be considered to be the read only companion to
97061
		 * `data` which is read / write (then as such more complex). Like `data`
97062
		 * this option can be given in a number of different ways to effect its
97063
		 * behaviour:
97064
		 *
97065
		 * * `integer` - treated as an array index for the data source. This is the
97066
		 *   default that DataTables uses (incrementally increased for each column).
97067
		 * * `string` - read an object property from the data source. There are
97068
		 *   three 'special' options that can be used in the string to alter how
97069
		 *   DataTables reads the data from the source object:
97070
		 *    * `.` - Dotted JavaScript notation. Just as you use a `.` in
97071
		 *      JavaScript to read from nested objects, so to can the options
97072
		 *      specified in `data`. For example: `browser.version` or
97073
		 *      `browser.name`. If your object parameter name contains a period, use
97074
		 *      `\\` to escape it - i.e. `first\\.name`.
97075
		 *    * `[]` - Array notation. DataTables can automatically combine data
97076
		 *      from and array source, joining the data with the characters provided
97077
		 *      between the two brackets. For example: `name[, ]` would provide a
97078
		 *      comma-space separated list from the source array. If no characters
97079
		 *      are provided between the brackets, the original array source is
97080
		 *      returned.
97081
		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
97082
		 *      execute a function of the name given. For example: `browser()` for a
97083
		 *      simple function on the data source, `browser.version()` for a
97084
		 *      function in a nested property or even `browser().version` to get an
97085
		 *      object property if the function called returns an object.
97086
		 * * `object` - use different data for the different data types requested by
97087
		 *   DataTables ('filter', 'display', 'type' or 'sort'). The property names
97088
		 *   of the object is the data type the property refers to and the value can
97089
		 *   defined using an integer, string or function using the same rules as
97090
		 *   `render` normally does. Note that an `_` option _must_ be specified.
97091
		 *   This is the default value to use if you haven't specified a value for
97092
		 *   the data type requested by DataTables.
97093
		 * * `function` - the function given will be executed whenever DataTables
97094
		 *   needs to set or get the data for a cell in the column. The function
97095
		 *   takes three parameters:
97096
		 *    * Parameters:
97097
		 *      * {array|object} The data source for the row (based on `data`)
97098
		 *      * {string} The type call data requested - this will be 'filter',
97099
		 *        'display', 'type' or 'sort'.
97100
		 *      * {array|object} The full data source for the row (not based on
97101
		 *        `data`)
97102
		 *    * Return:
97103
		 *      * The return value from the function is what will be used for the
97104
		 *        data requested.
97105
		 */
97106
		"mRender": null,
10093
	
97107
	
10094
			// Clean up the header / footer
10095
			cleanHeader(thead, 'header');
10096
			cleanHeader(tfoot, 'footer');
10097
			settings.colgroup.remove();
10098
	
97108
	
10099
			settings.aaSorting = [];
97109
		/**
10100
			settings.aaSortingFixed = [];
97110
		 * Change the cell type created for the column - either TD cells or TH cells. This
10101
			_fnSortingClasses( settings );
97111
		 * can be useful as TH cells have semantic meaning in the table body, allowing them
97112
		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
97113
		 */
97114
		"sCellType": "td",
10102
	
97115
	
10103
			$(jqTable).find('th, td').removeClass(
10104
				$.map(DataTable.ext.type.className, function (v) {
10105
					return v;
10106
				}).join(' ')
10107
			);
10108
10109
			$('th, td', thead)
10110
				.removeClass(
10111
					orderClasses.none + ' ' +
10112
					orderClasses.canAsc + ' ' +
10113
					orderClasses.canDesc + ' ' +
10114
					orderClasses.isAsc + ' ' +
10115
					orderClasses.isDesc
10116
				)
10117
				.css('width', '')
10118
				.removeAttr('aria-sort');
10119
	
97116
	
10120
			// Add the TR elements back into the table in their original order
97117
		/**
10121
			jqTbody.children().detach();
97118
		 * Class to give to each cell in this column.
10122
			jqTbody.append( rows );
97119
		 */
97120
		"sClass": "",
10123
	
97121
	
10124
			var orig = settings.nTableWrapper.parentNode;
97122
		/**
10125
			var insertBefore = settings.nTableWrapper.nextSibling;
97123
		 * When DataTables calculates the column widths to assign to each column,
97124
		 * it finds the longest string in each column and then constructs a
97125
		 * temporary table and reads the widths from that. The problem with this
97126
		 * is that "mmm" is much wider then "iiii", but the latter is a longer
97127
		 * string - thus the calculation can go wrong (doing it properly and putting
97128
		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
97129
		 * a "work around" we provide this option. It will append its value to the
97130
		 * text that is found to be the longest string for the column - i.e. padding.
97131
		 * Generally you shouldn't need this!
97132
		 */
97133
		"sContentPadding": "",
10126
	
97134
	
10127
			// Remove the DataTables generated nodes, events and classes
10128
			var removedMethod = remove ? 'remove' : 'detach';
10129
			jqTable[ removedMethod ]();
10130
			jqWrapper[ removedMethod ]();
10131
	
97135
	
10132
			// If we need to reattach the table to the document
97136
		/**
10133
			if ( ! remove && orig ) {
97137
		 * Allows a default value to be given for a column's data, and will be used
10134
				// insertBefore acts like appendChild if !arg[1]
97138
		 * whenever a null data source is encountered (this can be because `data`
10135
				orig.insertBefore( table, insertBefore );
97139
		 * is set to null, or because the data source itself is null).
97140
		 */
97141
		"sDefaultContent": null,
10136
	
97142
	
10137
				// Restore the width of the original table - was read from the style property,
10138
				// so we can restore directly to that
10139
				jqTable
10140
					.css( 'width', settings.sDestroyWidth )
10141
					.removeClass( classes.table );
10142
			}
10143
	
97143
	
10144
			/* Remove the settings object from the settings array */
97144
		/**
10145
			var idx = DataTable.settings.indexOf(settings);
97145
		 * This parameter is only used in DataTables' server-side processing. It can
10146
			if ( idx !== -1 ) {
97146
		 * be exceptionally useful to know what columns are being displayed on the
10147
				DataTable.settings.splice( idx, 1 );
97147
		 * client side, and to map these to database fields. When defined, the names
10148
			}
97148
		 * also allow DataTables to reorder information from the server if it comes
10149
		} );
97149
		 * back in an unexpected order (i.e. if you switch your columns around on the
10150
	} );
97150
		 * client-side, your server-side code does not also need updating).
97151
		 */
97152
		"sName": "",
10151
	
97153
	
10152
	
97154
	
10153
	// Add the `every()` method for rows, columns and cells in a compact form
97155
		/**
10154
	$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
97156
		 * Defines a data source type for the ordering which can be used to read
10155
		_api_register( type+'s().every()', function ( fn ) {
97157
		 * real-time information from the table (updating the internally cached
10156
			var opts = this.selector.opts;
97158
		 * version) prior to ordering. This allows ordering to occur on user
10157
			var api = this;
97159
		 * editable elements such as form inputs.
10158
			var inst;
97160
		 */
10159
			var counter = 0;
97161
		"sSortDataType": "std",
10160
	
97162
	
10161
			return this.iterator( 'every', function ( settings, selectedIdx, tableIdx ) {
10162
				inst = api[ type ](selectedIdx, opts);
10163
	
97163
	
10164
				if (type === 'cell') {
97164
		/**
10165
					fn.call(inst, inst[0][0].row, inst[0][0].column, tableIdx, counter);
97165
		 * The title of this column.
10166
				}
97166
		 */
10167
				else {
97167
		"sTitle": null,
10168
					fn.call(inst, selectedIdx, tableIdx, counter);
10169
				}
10170
	
97168
	
10171
				counter++;
10172
			} );
10173
		} );
10174
	} );
10175
	
97169
	
97170
		/**
97171
		 * The type allows you to specify how the data for this column will be
97172
		 * ordered. Four types (string, numeric, date and html (which will strip
97173
		 * HTML tags before ordering)) are currently available. Note that only date
97174
		 * formats understood by JavaScript's Date() object will be accepted as type
97175
		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
97176
		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
97177
		 * through plug-ins.
97178
		 */
97179
		"sType": null,
10176
	
97180
	
10177
	// i18n method for extensions to be able to use the language object from the
10178
	// DataTable
10179
	_api_register( 'i18n()', function ( token, def, plural ) {
10180
		var ctx = this.context[0];
10181
		var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
10182
	
97181
	
10183
		if ( resolved === undefined ) {
97182
		/**
10184
			resolved = def;
97183
		 * Defining the width of the column, this parameter may take any CSS value
10185
		}
97184
		 * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
97185
		 * been given a specific width through this interface ensuring that the table
97186
		 * remains readable.
97187
		 */
97188
		"sWidth": null
97189
	};
10186
	
97190
	
10187
		if ( $.isPlainObject( resolved ) ) {
97191
	_fnHungarianMap( DataTable.defaults.column );
10188
			resolved = plural !== undefined && resolved[ plural ] !== undefined
10189
				? resolved[ plural ]
10190
				: plural === false
10191
					? resolved
10192
					: resolved._;
10193
		}
10194
	
97192
	
10195
		return typeof resolved === 'string'
10196
			? resolved.replace( '%d', plural ) // nb: plural might be undefined,
10197
			: resolved;
10198
	} );
10199
	
97193
	
10200
	// Needed for header and footer, so pulled into its own function
10201
	function cleanHeader(node, className) {
10202
		$(node).find('span.dt-column-order').remove();
10203
		$(node).find('span.dt-column-title').each(function () {
10204
			var title = $(this).html();
10205
			$(this).parent().parent().append(title);
10206
			$(this).remove();
10207
		});
10208
		$(node).find('div.dt-column-' + className).remove();
10209
10210
		$('th, td', node).removeAttr('data-dt-column');
10211
	}
10212
10213
	/**
10214
	 * Version string for plug-ins to check compatibility. Allowed format is
10215
	 * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used
10216
	 * only for non-release builds. See https://semver.org/ for more information.
10217
	 *  @member
10218
	 *  @type string
10219
	 *  @default Version number
10220
	 */
10221
	DataTable.version = "2.3.4";
10222
	
97194
	
10223
	/**
97195
	/**
10224
	 * Private data store, containing all of the settings objects that are
97196
	 * DataTables settings object - this holds all the information needed for a
10225
	 * created for the tables on a given page.
97197
	 * given table, including configuration, data and current application of the
97198
	 * table options. DataTables does not have a single instance for each DataTable
97199
	 * with the settings attached to that instance, but rather instances of the
97200
	 * DataTable "class" are created on-the-fly as needed (typically by a
97201
	 * $().dataTable() call) and the settings object is then applied to that
97202
	 * instance.
10226
	 *
97203
	 *
10227
	 * Note that the `DataTable.settings` object is aliased to
97204
	 * Note that this object is related to {@link DataTable.defaults} but this
10228
	 * `jQuery.fn.dataTableExt` through which it may be accessed and
97205
	 * one is the internal data store for DataTables's cache of columns. It should
10229
	 * manipulated, or `jQuery.fn.dataTable.settings`.
97206
	 * NOT be manipulated outside of DataTables. Any configuration should be done
10230
	 *  @member
97207
	 * through the initialisation options.
10231
	 *  @type array
10232
	 *  @default []
10233
	 *  @private
10234
	 */
10235
	DataTable.settings = [];
10236
	
10237
	/**
10238
	 * Object models container, for the various models that DataTables has
10239
	 * available to it. These models define the objects that are used to hold
10240
	 * the active state and configuration of the table.
10241
	 *  @namespace
10242
	 */
97208
	 */
10243
	DataTable.models = {};
97209
	DataTable.models.oSettings = {
10244
	
97210
		/**
97211
		 * Primary features of DataTables and their enablement state.
97212
		 */
97213
		"oFeatures": {
97214
97215
			/**
97216
			 * Flag to say if DataTables should automatically try to calculate the
97217
			 * optimum table and columns widths (true) or not (false).
97218
			 * Note that this parameter will be set by the initialisation routine. To
97219
			 * set a default use {@link DataTable.defaults}.
97220
			 */
97221
			"bAutoWidth": null,
97222
97223
			/**
97224
			 * Delay the creation of TR and TD elements until they are actually
97225
			 * needed by a driven page draw. This can give a significant speed
97226
			 * increase for Ajax source and JavaScript source data, but makes no
97227
			 * difference at all for DOM and server-side processing tables.
97228
			 * Note that this parameter will be set by the initialisation routine. To
97229
			 * set a default use {@link DataTable.defaults}.
97230
			 */
97231
			"bDeferRender": null,
97232
97233
			/**
97234
			 * Enable filtering on the table or not. Note that if this is disabled
97235
			 * then there is no filtering at all on the table, including fnFilter.
97236
			 * To just remove the filtering input use sDom and remove the 'f' option.
97237
			 * Note that this parameter will be set by the initialisation routine. To
97238
			 * set a default use {@link DataTable.defaults}.
97239
			 */
97240
			"bFilter": null,
97241
97242
			/**
97243
			 * Used only for compatibility with DT1
97244
			 * @deprecated
97245
			 */
97246
			"bInfo": true,
97247
97248
			/**
97249
			 * Used only for compatibility with DT1
97250
			 * @deprecated
97251
			 */
97252
			"bLengthChange": true,
97253
97254
			/**
97255
			 * Pagination enabled or not. Note that if this is disabled then length
97256
			 * changing must also be disabled.
97257
			 * Note that this parameter will be set by the initialisation routine. To
97258
			 * set a default use {@link DataTable.defaults}.
97259
			 */
97260
			"bPaginate": null,
97261
97262
			/**
97263
			 * Processing indicator enable flag whenever DataTables is enacting a
97264
			 * user request - typically an Ajax request for server-side processing.
97265
			 * Note that this parameter will be set by the initialisation routine. To
97266
			 * set a default use {@link DataTable.defaults}.
97267
			 */
97268
			"bProcessing": null,
97269
97270
			/**
97271
			 * Server-side processing enabled flag - when enabled DataTables will
97272
			 * get all data from the server for every draw - there is no filtering,
97273
			 * sorting or paging done on the client-side.
97274
			 * Note that this parameter will be set by the initialisation routine. To
97275
			 * set a default use {@link DataTable.defaults}.
97276
			 */
97277
			"bServerSide": null,
97278
97279
			/**
97280
			 * Sorting enablement flag.
97281
			 * Note that this parameter will be set by the initialisation routine. To
97282
			 * set a default use {@link DataTable.defaults}.
97283
			 */
97284
			"bSort": null,
10245
	
97285
	
97286
			/**
97287
			 * Multi-column sorting
97288
			 * Note that this parameter will be set by the initialisation routine. To
97289
			 * set a default use {@link DataTable.defaults}.
97290
			 */
97291
			"bSortMulti": null,
10246
	
97292
	
10247
	/**
97293
			/**
10248
	 * Template object for the way in which DataTables holds information about
97294
			 * Apply a class to the columns which are being sorted to provide a
10249
	 * search information for the global filter and individual column filters.
97295
			 * visual highlight or not. This can slow things down when enabled since
10250
	 *  @namespace
97296
			 * there is a lot of DOM interaction.
10251
	 */
97297
			 * Note that this parameter will be set by the initialisation routine. To
10252
	DataTable.models.oSearch = {
97298
			 * set a default use {@link DataTable.defaults}.
10253
		/**
97299
			 */
10254
		 * Flag to whether or not the filtering should be case-insensitive
97300
			"bSortClasses": null,
10255
		 */
10256
		"caseInsensitive": true,
10257
	
97301
	
10258
		/**
97302
			/**
10259
		 * Applied search term
97303
			 * State saving enablement flag.
10260
		 */
97304
			 * Note that this parameter will be set by the initialisation routine. To
10261
		"search": "",
97305
			 * set a default use {@link DataTable.defaults}.
97306
			 */
97307
			"bStateSave": null
97308
		},
10262
	
97309
	
10263
		/**
10264
		 * Flag to indicate if the search term should be interpreted as a
10265
		 * regular expression (true) or not (false) and therefore and special
10266
		 * regex characters escaped.
10267
		 */
10268
		"regex": false,
10269
	
97310
	
10270
		/**
97311
		/**
10271
		 * Flag to indicate if DataTables is to use its smart filtering or not.
97312
		 * Scrolling settings for a table.
10272
		 */
97313
		 */
10273
		"smart": true,
97314
		"oScroll": {
97315
			/**
97316
			 * When the table is shorter in height than sScrollY, collapse the
97317
			 * table container down to the height of the table (when true).
97318
			 * Note that this parameter will be set by the initialisation routine. To
97319
			 * set a default use {@link DataTable.defaults}.
97320
			 */
97321
			"bCollapse": null,
10274
	
97322
	
10275
		/**
97323
			/**
10276
		 * Flag to indicate if DataTables should only trigger a search when
97324
			 * Width of the scrollbar for the web-browser's platform. Calculated
10277
		 * the return key is pressed.
97325
			 * during table initialisation.
10278
		 */
97326
			 */
10279
		"return": false
97327
			"iBarWidth": 0,
10280
	};
10281
	
97328
	
97329
			/**
97330
			 * Viewport width for horizontal scrolling. Horizontal scrolling is
97331
			 * disabled if an empty string.
97332
			 * Note that this parameter will be set by the initialisation routine. To
97333
			 * set a default use {@link DataTable.defaults}.
97334
			 */
97335
			"sX": null,
10282
	
97336
	
97337
			/**
97338
			 * Width to expand the table to when using x-scrolling. Typically you
97339
			 * should not need to use this.
97340
			 * Note that this parameter will be set by the initialisation routine. To
97341
			 * set a default use {@link DataTable.defaults}.
97342
			 *  @deprecated
97343
			 */
97344
			"sXInner": null,
10283
	
97345
	
97346
			/**
97347
			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
97348
			 * if an empty string.
97349
			 * Note that this parameter will be set by the initialisation routine. To
97350
			 * set a default use {@link DataTable.defaults}.
97351
			 */
97352
			"sY": null
97353
		},
10284
	
97354
	
10285
	/**
10286
	 * Template object for the way in which DataTables holds information about
10287
	 * each individual row. This is the object format used for the settings
10288
	 * aoData array.
10289
	 *  @namespace
10290
	 */
10291
	DataTable.models.oRow = {
10292
		/**
97355
		/**
10293
		 * TR element for the row
97356
		 * Language information for the table.
10294
		 */
97357
		 */
10295
		"nTr": null,
97358
		"oLanguage": {
97359
			/**
97360
			 * Information callback function. See
97361
			 * {@link DataTable.defaults.fnInfoCallback}
97362
			 */
97363
			"fnInfoCallback": null
97364
		},
10296
	
97365
	
10297
		/**
97366
		/**
10298
		 * Array of TD elements for each row. This is null until the row has been
97367
		 * Browser support parameters
10299
		 * created.
10300
		 */
97368
		 */
10301
		"anCells": null,
97369
		"oBrowser": {
97370
			/**
97371
			 * Determine if the vertical scrollbar is on the right or left of the
97372
			 * scrolling container - needed for rtl language layout, although not
97373
			 * all browsers move the scrollbar (Safari).
97374
			 */
97375
			"bScrollbarLeft": false,
97376
	
97377
			/**
97378
			 * Browser scrollbar width
97379
			 */
97380
			"barWidth": 0
97381
		},
97382
	
97383
	
97384
		"ajax": null,
10302
	
97385
	
10303
		/**
10304
		 * Data object from the original data source for the row. This is either
10305
		 * an array if using the traditional form of DataTables, or an object if
10306
		 * using mData options. The exact type will depend on the passed in
10307
		 * data from the data source, or will be an array if using DOM a data
10308
		 * source.
10309
		 */
10310
		"_aData": [],
10311
	
97386
	
10312
		/**
97387
		/**
10313
		 * Sorting data cache - this array is ostensibly the same length as the
97388
		 * Array referencing the nodes which are used for the features. The
10314
		 * number of columns (although each index is generated only as it is
97389
		 * parameters of this object match what is allowed by sDom - i.e.
10315
		 * needed), and holds the data that is used for sorting each column in the
97390
		 *   <ul>
10316
		 * row. We do this cache generation at the start of the sort in order that
97391
		 *     <li>'l' - Length changing</li>
10317
		 * the formatting of the sort data need be done only once for each cell
97392
		 *     <li>'f' - Filtering input</li>
10318
		 * per sort. This array should not be read from or written to by anything
97393
		 *     <li>'t' - The table!</li>
10319
		 * other than the master sorting methods.
97394
		 *     <li>'i' - Information</li>
97395
		 *     <li>'p' - Pagination</li>
97396
		 *     <li>'r' - pRocessing</li>
97397
		 *   </ul>
10320
		 */
97398
		 */
10321
		"_aSortData": null,
97399
		"aanFeatures": [],
10322
	
97400
	
10323
		/**
97401
		/**
10324
		 * Per cell filtering data cache. As per the sort data cache, used to
97402
		 * Store data information - see {@link DataTable.models.oRow} for detailed
10325
		 * increase the performance of the filtering in DataTables
97403
		 * information.
10326
		 */
97404
		 */
10327
		"_aFilterData": null,
97405
		"aoData": [],
10328
	
97406
	
10329
		/**
97407
		/**
10330
		 * Filtering data cache. This is the same as the cell filtering cache, but
97408
		 * Array of indexes which are in the current display (after filtering etc)
10331
		 * in this case a string rather than an array. This is easily computed with
10332
		 * a join on `_aFilterData`, but is provided as a cache so the join isn't
10333
		 * needed on every search (memory traded for performance)
10334
		 */
97409
		 */
10335
		"_sFilterRow": null,
97410
		"aiDisplay": [],
10336
	
97411
	
10337
		/**
97412
		/**
10338
		 * Denote if the original data source was from the DOM, or the data source
97413
		 * Array of indexes for display - no filtering
10339
		 * object. This is used for invalidating data, so DataTables can
10340
		 * automatically read data from the original source, unless uninstructed
10341
		 * otherwise.
10342
		 */
97414
		 */
10343
		"src": null,
97415
		"aiDisplayMaster": [],
10344
	
97416
	
10345
		/**
97417
		/**
10346
		 * Index in the aoData array. This saves an indexOf lookup when we have the
97418
		 * Map of row ids to data indexes
10347
		 * object, but want to know the index
10348
		 */
97419
		 */
10349
		"idx": -1,
97420
		"aIds": {},
10350
	
97421
	
10351
		/**
97422
		/**
10352
		 * Cached display value
97423
		 * Store information about each column that is in use
10353
		 */
97424
		 */
10354
		displayData: null
97425
		"aoColumns": [],
10355
	};
10356
	
10357
	
97426
	
10358
	/**
10359
	 * Template object for the column information object in DataTables. This object
10360
	 * is held in the settings aoColumns array and contains all the information that
10361
	 * DataTables needs about each individual column.
10362
	 *
10363
	 * Note that this object is related to {@link DataTable.defaults.column}
10364
	 * but this one is the internal data store for DataTables's cache of columns.
10365
	 * It should NOT be manipulated outside of DataTables. Any configuration should
10366
	 * be done through the initialisation options.
10367
	 *  @namespace
10368
	 */
10369
	DataTable.models.oColumn = {
10370
		/**
97427
		/**
10371
		 * Column index.
97428
		 * Store information about the table's header
10372
		 */
97429
		 */
10373
		"idx": null,
97430
		"aoHeader": [],
10374
	
97431
	
10375
		/**
97432
		/**
10376
		 * A list of the columns that sorting should occur on when this column
97433
		 * Store information about the table's footer
10377
		 * is sorted. That this property is an array allows multi-column sorting
10378
		 * to be defined for a column (for example first name / last name columns
10379
		 * would benefit from this). The values are integers pointing to the
10380
		 * columns to be sorted on (typically it will be a single integer pointing
10381
		 * at itself, but that doesn't need to be the case).
10382
		 */
97434
		 */
10383
		"aDataSort": null,
97435
		"aoFooter": [],
10384
	
97436
	
10385
		/**
97437
		/**
10386
		 * Define the sorting directions that are applied to the column, in sequence
97438
		 * Store the applied global search information in case we want to force a
10387
		 * as the column is repeatedly sorted upon - i.e. the first value is used
97439
		 * research or compare the old search to a new one.
10388
		 * as the sorting direction when the column if first sorted (clicked on).
97440
		 * Note that this parameter will be set by the initialisation routine. To
10389
		 * Sort it again (click again) and it will move on to the next index.
97441
		 * set a default use {@link DataTable.defaults}.
10390
		 * Repeat until loop.
10391
		 */
97442
		 */
10392
		"asSorting": null,
97443
		"oPreviousSearch": {},
10393
	
97444
	
10394
		/**
97445
		/**
10395
		 * Flag to indicate if the column is searchable, and thus should be included
97446
		 * Store for named searches
10396
		 * in the filtering or not.
10397
		 */
97447
		 */
10398
		"bSearchable": null,
97448
		searchFixed: {},
10399
	
97449
	
10400
		/**
97450
		/**
10401
		 * Flag to indicate if the column is sortable or not.
97451
		 * Store the applied search for each column - see
97452
		 * {@link DataTable.models.oSearch} for the format that is used for the
97453
		 * filtering information for each column.
10402
		 */
97454
		 */
10403
		"bSortable": null,
97455
		"aoPreSearchCols": [],
10404
	
97456
	
10405
		/**
97457
		/**
10406
		 * Flag to indicate if the column is currently visible in the table or not
97458
		 * Sorting that is applied to the table. Note that the inner arrays are
97459
		 * used in the following manner:
97460
		 * <ul>
97461
		 *   <li>Index 0 - column number</li>
97462
		 *   <li>Index 1 - current sorting direction</li>
97463
		 * </ul>
97464
		 * Note that this parameter will be set by the initialisation routine. To
97465
		 * set a default use {@link DataTable.defaults}.
10407
		 */
97466
		 */
10408
		"bVisible": null,
97467
		"aaSorting": null,
10409
	
97468
	
10410
		/**
97469
		/**
10411
		 * Store for manual type assignment using the `column.type` option. This
97470
		 * Sorting that is always applied to the table (i.e. prefixed in front of
10412
		 * is held in store so we can manipulate the column's `sType` property.
97471
		 * aaSorting).
97472
		 * Note that this parameter will be set by the initialisation routine. To
97473
		 * set a default use {@link DataTable.defaults}.
10413
		 */
97474
		 */
10414
		"_sManualType": null,
97475
		"aaSortingFixed": [],
10415
	
97476
	
10416
		/**
97477
		/**
10417
		 * Flag to indicate if HTML5 data attributes should be used as the data
97478
		 * If restoring a table - we should restore its width
10418
		 * source for filtering or sorting. True is either are.
10419
		 */
97479
		 */
10420
		"_bAttrSrc": false,
97480
		"sDestroyWidth": 0,
10421
	
97481
	
10422
		/**
97482
		/**
10423
		 * Developer definable function that is called whenever a cell is created (Ajax source,
97483
		 * Callback functions array for every time a row is inserted (i.e. on a draw).
10424
		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
10425
		 * allowing you to modify the DOM element (add background colour for example) when the
10426
		 * element is available.
10427
		 */
97484
		 */
10428
		"fnCreatedCell": null,
97485
		"aoRowCallback": [],
10429
	
97486
	
10430
		/**
97487
		/**
10431
		 * Function to get data from a cell in a column. You should <b>never</b>
97488
		 * Callback functions for the header on each draw.
10432
		 * access data directly through _aData internally in DataTables - always use
10433
		 * the method attached to this property. It allows mData to function as
10434
		 * required. This function is automatically assigned by the column
10435
		 * initialisation method
10436
		 */
97489
		 */
10437
		"fnGetData": null,
97490
		"aoHeaderCallback": [],
10438
	
97491
	
10439
		/**
97492
		/**
10440
		 * Function to set data for a cell in the column. You should <b>never</b>
97493
		 * Callback function for the footer on each draw.
10441
		 * set the data directly to _aData internally in DataTables - always use
10442
		 * this method. It allows mData to function as required. This function
10443
		 * is automatically assigned by the column initialisation method
10444
		 */
97494
		 */
10445
		"fnSetData": null,
97495
		"aoFooterCallback": [],
10446
	
97496
	
10447
		/**
97497
		/**
10448
		 * Property to read the value for the cells in the column from the data
97498
		 * Array of callback functions for draw callback functions
10449
		 * source array / object. If null, then the default content is used, if a
10450
		 * function is given then the return from the function is used.
10451
		 */
97499
		 */
10452
		"mData": null,
97500
		"aoDrawCallback": [],
10453
	
97501
	
10454
		/**
97502
		/**
10455
		 * Partner property to mData which is used (only when defined) to get
97503
		 * Array of callback functions for row created function
10456
		 * the data - i.e. it is basically the same as mData, but without the
10457
		 * 'set' option, and also the data fed to it is the result from mData.
10458
		 * This is the rendering method to match the data method of mData.
10459
		 */
97504
		 */
10460
		"mRender": null,
97505
		"aoRowCreatedCallback": [],
10461
	
97506
	
10462
		/**
97507
		/**
10463
		 * The class to apply to all TD elements in the table's TBODY for the column
97508
		 * Callback functions for just before the table is redrawn. A return of
97509
		 * false will be used to cancel the draw.
10464
		 */
97510
		 */
10465
		"sClass": null,
97511
		"aoPreDrawCallback": [],
10466
	
97512
10467
		/**
97513
		/**
10468
		 * When DataTables calculates the column widths to assign to each column,
97514
		 * Callback functions for when the table has been initialised.
10469
		 * it finds the longest string in each column and then constructs a
10470
		 * temporary table and reads the widths from that. The problem with this
10471
		 * is that "mmm" is much wider then "iiii", but the latter is a longer
10472
		 * string - thus the calculation can go wrong (doing it properly and putting
10473
		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
10474
		 * a "work around" we provide this option. It will append its value to the
10475
		 * text that is found to be the longest string for the column - i.e. padding.
10476
		 */
97515
		 */
10477
		"sContentPadding": null,
97516
		"aoInitComplete": [],
97517
	
10478
	
97518
	
10479
		/**
97519
		/**
10480
		 * Allows a default value to be given for a column's data, and will be used
97520
		 * Callbacks for modifying the settings to be stored for state saving, prior to
10481
		 * whenever a null data source is encountered (this can be because mData
97521
		 * saving state.
10482
		 * is set to null, or because the data source itself is null).
10483
		 */
97522
		 */
10484
		"sDefaultContent": null,
97523
		"aoStateSaveParams": [],
10485
	
97524
	
10486
		/**
97525
		/**
10487
		 * Name for the column, allowing reference to the column by name as well as
97526
		 * Callbacks for modifying the settings that have been stored for state saving
10488
		 * by index (needs a lookup to work by name).
97527
		 * prior to using the stored values to restore the state.
10489
		 */
97528
		 */
10490
		"sName": null,
97529
		"aoStateLoadParams": [],
10491
	
97530
	
10492
		/**
97531
		/**
10493
		 * Custom sorting data type - defines which of the available plug-ins in
97532
		 * Callbacks for operating on the settings object once the saved state has been
10494
		 * afnSortData the custom sorting will use - if any is defined.
97533
		 * loaded
10495
		 */
97534
		 */
10496
		"sSortDataType": 'std',
97535
		"aoStateLoaded": [],
10497
	
97536
	
10498
		/**
97537
		/**
10499
		 * Class to be applied to the header element when sorting on this column
97538
		 * Cache the table ID for quick access
10500
		 */
97539
		 */
10501
		"sSortingClass": null,
97540
		"sTableId": "",
10502
	
97541
	
10503
		/**
97542
		/**
10504
		 * Title of the column - what is seen in the TH element (nTh).
97543
		 * The TABLE node for the main table
10505
		 */
97544
		 */
10506
		"sTitle": null,
97545
		"nTable": null,
10507
	
97546
	
10508
		/**
97547
		/**
10509
		 * Column sorting and filtering type
97548
		 * Permanent ref to the thead element
10510
		 */
97549
		 */
10511
		"sType": null,
97550
		"nTHead": null,
10512
	
97551
	
10513
		/**
97552
		/**
10514
		 * Width of the column
97553
		 * Permanent ref to the tfoot element - if it exists
10515
		 */
97554
		 */
10516
		"sWidth": null,
97555
		"nTFoot": null,
10517
	
97556
10518
		/**
97557
		/**
10519
		 * Width of the column when it was first "encountered"
97558
		 * Permanent ref to the tbody element
10520
		 */
97559
		 */
10521
		"sWidthOrig": null,
97560
		"nTBody": null,
10522
	
10523
		/** Cached string which is the longest in the column */
10524
		maxLenString: null,
10525
	
97561
	
10526
		/**
97562
		/**
10527
		 * Store for named searches
97563
		 * Cache the wrapper node (contains all DataTables controlled elements)
10528
		 */
97564
		 */
10529
		searchFixed: null
97565
		"nTableWrapper": null,
10530
	};
10531
	
10532
	
10533
	/*
10534
	 * Developer note: The properties of the object below are given in Hungarian
10535
	 * notation, that was used as the interface for DataTables prior to v1.10, however
10536
	 * from v1.10 onwards the primary interface is camel case. In order to avoid
10537
	 * breaking backwards compatibility utterly with this change, the Hungarian
10538
	 * version is still, internally the primary interface, but is is not documented
10539
	 * - hence the @name tags in each doc comment. This allows a JavaScript function
10540
	 * to create a map from Hungarian notation to camel case (going the other direction
10541
	 * would require each property to be listed, which would add around 3K to the size
10542
	 * of DataTables, while this method is about a 0.5K hit).
10543
	 *
10544
	 * Ultimately this does pave the way for Hungarian notation to be dropped
10545
	 * completely, but that is a massive amount of work and will break current
10546
	 * installs (therefore is on-hold until v2).
10547
	 */
10548
	
97566
	
10549
	/**
10550
	 * Initialisation options that can be given to DataTables at initialisation
10551
	 * time.
10552
	 *  @namespace
10553
	 */
10554
	DataTable.defaults = {
10555
		/**
97567
		/**
10556
		 * An array of data to use for the table, passed in at initialisation which
97568
		 * Indicate if all required information has been read in
10557
		 * will be used in preference to any data which is already in the DOM. This is
10558
		 * particularly useful for constructing tables purely in JavaScript, for
10559
		 * example with a custom Ajax call.
10560
		 */
97569
		 */
10561
		"aaData": null,
97570
		"bInitialised": false,
10562
	
10563
	
97571
	
10564
		/**
97572
		/**
10565
		 * If ordering is enabled, then DataTables will perform a first pass sort on
97573
		 * Information about open rows. Each object in the array has the parameters
10566
		 * initialisation. You can define which column(s) the sort is performed
97574
		 * 'nTr' and 'nParent'
10567
		 * upon, and the sorting direction, with this variable. The `sorting` array
10568
		 * should contain an array for each column to be sorted initially containing
10569
		 * the column's index and a direction string ('asc' or 'desc').
10570
		 */
97575
		 */
10571
		"aaSorting": [[0,'asc']],
97576
		"aoOpenRows": [],
10572
	
10573
	
97577
	
10574
		/**
97578
		/**
10575
		 * This parameter is basically identical to the `sorting` parameter, but
97579
		 * Dictate the positioning of DataTables' control elements - see
10576
		 * cannot be overridden by user interaction with the table. What this means
97580
		 * {@link DataTable.model.oInit.sDom}.
10577
		 * is that you could have a column (visible or hidden) which the sorting
97581
		 * Note that this parameter will be set by the initialisation routine. To
10578
		 * will always be forced on first - any sorting after that (from the user)
97582
		 * set a default use {@link DataTable.defaults}.
10579
		 * will then be performed as required. This can be useful for grouping rows
10580
		 * together.
10581
		 */
97583
		 */
10582
		"aaSortingFixed": [],
97584
		"sDom": null,
10583
	
10584
	
97585
	
10585
		/**
97586
		/**
10586
		 * DataTables can be instructed to load data to display in the table from a
97587
		 * Search delay (in mS)
10587
		 * Ajax source. This option defines how that Ajax call is made and where to.
10588
		 *
10589
		 * The `ajax` property has three different modes of operation, depending on
10590
		 * how it is defined. These are:
10591
		 *
10592
		 * * `string` - Set the URL from where the data should be loaded from.
10593
		 * * `object` - Define properties for `jQuery.ajax`.
10594
		 * * `function` - Custom data get function
10595
		 *
10596
		 * `string`
10597
		 * --------
10598
		 *
10599
		 * As a string, the `ajax` property simply defines the URL from which
10600
		 * DataTables will load data.
10601
		 *
10602
		 * `object`
10603
		 * --------
10604
		 *
10605
		 * As an object, the parameters in the object are passed to
10606
		 * [jQuery.ajax](https://api.jquery.com/jQuery.ajax/) allowing fine control
10607
		 * of the Ajax request. DataTables has a number of default parameters which
10608
		 * you can override using this option. Please refer to the jQuery
10609
		 * documentation for a full description of the options available, although
10610
		 * the following parameters provide additional options in DataTables or
10611
		 * require special consideration:
10612
		 *
10613
		 * * `data` - As with jQuery, `data` can be provided as an object, but it
10614
		 *   can also be used as a function to manipulate the data DataTables sends
10615
		 *   to the server. The function takes a single parameter, an object of
10616
		 *   parameters with the values that DataTables has readied for sending. An
10617
		 *   object may be returned which will be merged into the DataTables
10618
		 *   defaults, or you can add the items to the object that was passed in and
10619
		 *   not return anything from the function. This supersedes `fnServerParams`
10620
		 *   from DataTables 1.9-.
10621
		 *
10622
		 * * `dataSrc` - By default DataTables will look for the property `data` (or
10623
		 *   `aaData` for compatibility with DataTables 1.9-) when obtaining data
10624
		 *   from an Ajax source or for server-side processing - this parameter
10625
		 *   allows that property to be changed. You can use JavaScript dotted
10626
		 *   object notation to get a data source for multiple levels of nesting, or
10627
		 *   it my be used as a function. As a function it takes a single parameter,
10628
		 *   the JSON returned from the server, which can be manipulated as
10629
		 *   required, with the returned value being that used by DataTables as the
10630
		 *   data source for the table.
10631
		 *
10632
		 * * `success` - Should not be overridden it is used internally in
10633
		 *   DataTables. To manipulate / transform the data returned by the server
10634
		 *   use `ajax.dataSrc`, or use `ajax` as a function (see below).
10635
		 *
10636
		 * `function`
10637
		 * ----------
10638
		 *
10639
		 * As a function, making the Ajax call is left up to yourself allowing
10640
		 * complete control of the Ajax request. Indeed, if desired, a method other
10641
		 * than Ajax could be used to obtain the required data, such as Web storage
10642
		 * or an AIR database.
10643
		 *
10644
		 * The function is given four parameters and no return is required. The
10645
		 * parameters are:
10646
		 *
10647
		 * 1. _object_ - Data to send to the server
10648
		 * 2. _function_ - Callback function that must be executed when the required
10649
		 *    data has been obtained. That data should be passed into the callback
10650
		 *    as the only parameter
10651
		 * 3. _object_ - DataTables settings object for the table
10652
		 */
97588
		 */
10653
		"ajax": null,
97589
		"searchDelay": null,
10654
	
10655
	
97590
	
10656
		/**
97591
		/**
10657
		 * This parameter allows you to readily specify the entries in the length drop
97592
		 * Which type of pagination should be used.
10658
		 * down menu that DataTables shows when pagination is enabled. It can be
97593
		 * Note that this parameter will be set by the initialisation routine. To
10659
		 * either a 1D array of options which will be used for both the displayed
97594
		 * set a default use {@link DataTable.defaults}.
10660
		 * option and the value, or a 2D array which will use the array in the first
10661
		 * position as the value, and the array in the second position as the
10662
		 * displayed options (useful for language strings such as 'All').
10663
		 *
10664
		 * Note that the `pageLength` property will be automatically set to the
10665
		 * first value given in this array, unless `pageLength` is also provided.
10666
		 */
97595
		 */
10667
		"aLengthMenu": [ 10, 25, 50, 100 ],
97596
		"sPaginationType": "two_button",
10668
	
97597
	
97598
		/**
97599
		 * Number of paging controls on the page. Only used for backwards compatibility
97600
		 */
97601
		pagingControls: 0,
10669
	
97602
	
10670
		/**
97603
		/**
10671
		 * The `columns` option in the initialisation parameter allows you to define
97604
		 * The state duration (for `stateSave`) in seconds.
10672
		 * details about the way individual columns behave. For a full list of
97605
		 * Note that this parameter will be set by the initialisation routine. To
10673
		 * column options that can be set, please see
97606
		 * set a default use {@link DataTable.defaults}.
10674
		 * {@link DataTable.defaults.column}. Note that if you use `columns` to
10675
		 * define your columns, you must have an entry in the array for every single
10676
		 * column that you have in your table (these can be null if you don't which
10677
		 * to specify any options).
10678
		 */
97607
		 */
10679
		"aoColumns": null,
97608
		"iStateDuration": 0,
10680
	
97609
10681
		/**
97610
		/**
10682
		 * Very similar to `columns`, `columnDefs` allows you to target a specific
97611
		 * Array of callback functions for state saving. Each array element is an
10683
		 * column, multiple columns, or all columns, using the `targets` property of
97612
		 * object with the following parameters:
10684
		 * each object in the array. This allows great flexibility when creating
10685
		 * tables, as the `columnDefs` arrays can be of any length, targeting the
10686
		 * columns you specifically want. `columnDefs` may use any of the column
10687
		 * options available: {@link DataTable.defaults.column}, but it _must_
10688
		 * have `targets` defined in each object in the array. Values in the `targets`
10689
		 * array may be:
10690
		 *   <ul>
97613
		 *   <ul>
10691
		 *     <li>a string - class name will be matched on the TH for the column</li>
97614
		 *     <li>function:fn - function to call. Takes two parameters, oSettings
10692
		 *     <li>0 or a positive integer - column index counting from the left</li>
97615
		 *       and the JSON string to save that has been thus far created. Returns
10693
		 *     <li>a negative integer - column index counting from the right</li>
97616
		 *       a JSON string to be inserted into a json object
10694
		 *     <li>the string "_all" - all columns (i.e. assign a default)</li>
97617
		 *       (i.e. '"param": [ 0, 1, 2]')</li>
97618
		 *     <li>string:sName - name of callback</li>
10695
		 *   </ul>
97619
		 *   </ul>
10696
		 */
97620
		 */
10697
		"aoColumnDefs": null,
97621
		"aoStateSave": [],
10698
	
10699
	
97622
	
10700
		/**
97623
		/**
10701
		 * Basically the same as `search`, this parameter defines the individual column
97624
		 * Array of callback functions for state loading. Each array element is an
10702
		 * filtering state at initialisation time. The array must be of the same size
97625
		 * object with the following parameters:
10703
		 * as the number of columns, and each element be an object with the parameters
97626
		 *   <ul>
10704
		 * `search` and `escapeRegex` (the latter is optional). 'null' is also
97627
		 *     <li>function:fn - function to call. Takes two parameters, oSettings
10705
		 * accepted and the default will be used.
97628
		 *       and the object stored. May return false to cancel state loading</li>
97629
		 *     <li>string:sName - name of callback</li>
97630
		 *   </ul>
10706
		 */
97631
		 */
10707
		"aoSearchCols": [],
97632
		"aoStateLoad": [],
10708
	
10709
	
97633
	
10710
		/**
97634
		/**
10711
		 * Enable or disable automatic column width calculation. This can be disabled
97635
		 * State that was saved. Useful for back reference
10712
		 * as an optimisation (it takes some time to calculate the widths) if the
10713
		 * tables widths are passed in using `columns`.
10714
		 */
97636
		 */
10715
		"bAutoWidth": true,
97637
		"oSavedState": null,
10716
	
10717
	
97638
	
10718
		/**
97639
		/**
10719
		 * Deferred rendering can provide DataTables with a huge speed boost when you
97640
		 * State that was loaded. Useful for back reference
10720
		 * are using an Ajax or JS data source for the table. This option, when set to
10721
		 * true, will cause DataTables to defer the creation of the table elements for
10722
		 * each row until they are needed for a draw - saving a significant amount of
10723
		 * time.
10724
		 */
97641
		 */
10725
		"bDeferRender": true,
97642
		"oLoadedState": null,
10726
	
10727
	
97643
	
10728
		/**
97644
		/**
10729
		 * Replace a DataTable which matches the given selector and replace it with
97645
		 * Note if draw should be blocked while getting data
10730
		 * one which has the properties of the new initialisation object passed. If no
10731
		 * table matches the selector, then the new DataTable will be constructed as
10732
		 * per normal.
10733
		 */
97646
		 */
10734
		"bDestroy": false,
97647
		"bAjaxDataGet": true,
10735
	
97648
	
97649
		/**
97650
		 * The last jQuery XHR object that was used for server-side data gathering.
97651
		 * This can be used for working with the XHR information in one of the
97652
		 * callbacks
97653
		 */
97654
		"jqXHR": null,
10736
	
97655
	
10737
		/**
97656
		/**
10738
		 * Enable or disable filtering of data. Filtering in DataTables is "smart" in
97657
		 * JSON returned from the server in the last Ajax request
10739
		 * that it allows the end user to input multiple words (space separated) and
10740
		 * will match a row containing those words, even if not in the order that was
10741
		 * specified (this allow matching across multiple columns). Note that if you
10742
		 * wish to use filtering in DataTables this must remain 'true' - to remove the
10743
		 * default filtering input box and retain filtering abilities, please use
10744
		 * {@link DataTable.defaults.dom}.
10745
		 */
97658
		 */
10746
		"bFilter": true,
97659
		"json": undefined,
10747
	
97660
	
10748
		/**
97661
		/**
10749
		 * Used only for compatibility with DT1
97662
		 * Data submitted as part of the last Ajax request
10750
		 * @deprecated
10751
		 */
97663
		 */
10752
		"bInfo": true,
97664
		"oAjaxData": undefined,
10753
	
97665
	
10754
		/**
97666
		/**
10755
		 * Used only for compatibility with DT1
97667
		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
10756
		 * @deprecated
97668
		 * required).
97669
		 * Note that this parameter will be set by the initialisation routine. To
97670
		 * set a default use {@link DataTable.defaults}.
10757
		 */
97671
		 */
10758
		"bLengthChange": true,
97672
		"sServerMethod": null,
10759
	
97673
	
10760
		/**
97674
		/**
10761
		 * Enable or disable pagination.
97675
		 * Format numbers for display.
97676
		 * Note that this parameter will be set by the initialisation routine. To
97677
		 * set a default use {@link DataTable.defaults}.
10762
		 */
97678
		 */
10763
		"bPaginate": true,
97679
		"fnFormatNumber": null,
10764
	
97680
	
97681
		/**
97682
		 * List of options that can be used for the user selectable length menu.
97683
		 * Note that this parameter will be set by the initialisation routine. To
97684
		 * set a default use {@link DataTable.defaults}.
97685
		 */
97686
		"aLengthMenu": null,
10765
	
97687
	
10766
		/**
97688
		/**
10767
		 * Enable or disable the display of a 'processing' indicator when the table is
97689
		 * Counter for the draws that the table does. Also used as a tracker for
10768
		 * being processed (e.g. a sort). This is particularly useful for tables with
97690
		 * server-side processing
10769
		 * large amounts of data where it can take a noticeable amount of time to sort
10770
		 * the entries.
10771
		 */
97691
		 */
10772
		"bProcessing": false,
97692
		"iDraw": 0,
10773
	
97693
	
97694
		/**
97695
		 * Indicate if a redraw is being done - useful for Ajax
97696
		 */
97697
		"bDrawing": false,
10774
	
97698
	
10775
		/**
97699
		/**
10776
		 * Retrieve the DataTables object for the given selector. Note that if the
97700
		 * Draw index (iDraw) of the last error when parsing the returned data
10777
		 * table has already been initialised, this parameter will cause DataTables
10778
		 * to simply return the object that has already been set up - it will not take
10779
		 * account of any changes you might have made to the initialisation object
10780
		 * passed to DataTables (setting this parameter to true is an acknowledgement
10781
		 * that you understand this). `destroy` can be used to reinitialise a table if
10782
		 * you need.
10783
		 */
97701
		 */
10784
		"bRetrieve": false,
97702
		"iDrawError": -1,
10785
	
97703
	
97704
		/**
97705
		 * Paging display length
97706
		 */
97707
		"_iDisplayLength": 10,
10786
	
97708
	
10787
		/**
97709
		/**
10788
		 * When vertical (y) scrolling is enabled, DataTables will force the height of
97710
		 * Paging start point - aiDisplay index
10789
		 * the table's viewport to the given height at all times (useful for layout).
10790
		 * However, this can look odd when filtering data down to a small data set,
10791
		 * and the footer is left "floating" further down. This parameter (when
10792
		 * enabled) will cause DataTables to collapse the table's viewport down when
10793
		 * the result set will fit within the given Y height.
10794
		 */
97711
		 */
10795
		"bScrollCollapse": false,
97712
		"_iDisplayStart": 0,
10796
	
97713
	
97714
		/**
97715
		 * Server-side processing - number of records in the result set
97716
		 * (i.e. before filtering), Use fnRecordsTotal rather than
97717
		 * this property to get the value of the number of records, regardless of
97718
		 * the server-side processing setting.
97719
		 */
97720
		"_iRecordsTotal": 0,
10797
	
97721
	
10798
		/**
97722
		/**
10799
		 * Configure DataTables to use server-side processing. Note that the
97723
		 * Server-side processing - number of records in the current display set
10800
		 * `ajax` parameter must also be given in order to give DataTables a
97724
		 * (i.e. after filtering). Use fnRecordsDisplay rather than
10801
		 * source to obtain the required data for each draw.
97725
		 * this property to get the value of the number of records, regardless of
97726
		 * the server-side processing setting.
10802
		 */
97727
		 */
10803
		"bServerSide": false,
97728
		"_iRecordsDisplay": 0,
10804
	
97729
	
97730
		/**
97731
		 * The classes to use for the table
97732
		 */
97733
		"oClasses": {},
10805
	
97734
	
10806
		/**
97735
		/**
10807
		 * Enable or disable sorting of columns. Sorting of individual columns can be
97736
		 * Flag attached to the settings object so you can check in the draw
10808
		 * disabled by the `sortable` option for each column.
97737
		 * callback if filtering has been done in the draw. Deprecated in favour of
97738
		 * events.
97739
		 *  @deprecated
10809
		 */
97740
		 */
10810
		"bSort": true,
97741
		"bFiltered": false,
10811
	
97742
	
97743
		/**
97744
		 * Flag attached to the settings object so you can check in the draw
97745
		 * callback if sorting has been done in the draw. Deprecated in favour of
97746
		 * events.
97747
		 *  @deprecated
97748
		 */
97749
		"bSorted": false,
10812
	
97750
	
10813
		/**
97751
		/**
10814
		 * Enable or display DataTables' ability to sort multiple columns at the
97752
		 * Indicate that if multiple rows are in the header and there is more than
10815
		 * same time (activated by shift-click by the user).
97753
		 * one unique cell per column. Replaced by titleRow
10816
		 */
97754
		 */
10817
		"bSortMulti": true,
97755
		"bSortCellsTop": null,
10818
	
97756
	
97757
		/**
97758
		 * Initialisation object that is used for the table
97759
		 */
97760
		"oInit": null,
10819
	
97761
	
10820
		/**
97762
		/**
10821
		 * Allows control over whether DataTables should use the top (true) unique
97763
		 * Destroy callback functions - for plug-ins to attach themselves to the
10822
		 * cell that is found for a single column, or the bottom (false - default).
97764
		 * destroy so they can clean up markup and events.
10823
		 * This is useful when using complex headers.
10824
		 */
97765
		 */
10825
		"bSortCellsTop": null,
97766
		"aoDestroyCallback": [],
10826
	
97767
	
10827
	
97768
	
10828
		/** Specify which row is the title row in the header. Replacement for bSortCellsTop */
10829
		titleRow: null,
10830
10831
10832
		/**
97769
		/**
10833
		 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
97770
		 * Get the number of records in the current record set, before filtering
10834
		 * `sorting\_3` to the columns which are currently being sorted on. This is
10835
		 * presented as a feature switch as it can increase processing time (while
10836
		 * classes are removed and added) so for large data sets you might want to
10837
		 * turn this off.
10838
		 */
97771
		 */
10839
		"bSortClasses": true,
97772
		"fnRecordsTotal": function ()
97773
		{
97774
			return _fnDataSource( this ) == 'ssp' ?
97775
				this._iRecordsTotal * 1 :
97776
				this.aiDisplayMaster.length;
97777
		},
10840
	
97778
	
97779
		/**
97780
		 * Get the number of records in the current record set, after filtering
97781
		 */
97782
		"fnRecordsDisplay": function ()
97783
		{
97784
			return _fnDataSource( this ) == 'ssp' ?
97785
				this._iRecordsDisplay * 1 :
97786
				this.aiDisplay.length;
97787
		},
10841
	
97788
	
10842
		/**
97789
		/**
10843
		 * Enable or disable state saving. When enabled HTML5 `localStorage` will be
97790
		 * Get the display end point - aiDisplay index
10844
		 * used to save table display information such as pagination information,
10845
		 * display length, filtering and sorting. As such when the end user reloads
10846
		 * the page the display will match what thy had previously set up.
10847
		 */
97791
		 */
10848
		"bStateSave": false,
97792
		"fnDisplayEnd": function ()
97793
		{
97794
			var
97795
				len      = this._iDisplayLength,
97796
				start    = this._iDisplayStart,
97797
				calc     = start + len,
97798
				records  = this.aiDisplay.length,
97799
				features = this.oFeatures,
97800
				paginate = features.bPaginate;
10849
	
97801
	
97802
			if ( features.bServerSide ) {
97803
				return paginate === false || len === -1 ?
97804
					start + records :
97805
					Math.min( start+len, this._iRecordsDisplay );
97806
			}
97807
			else {
97808
				return ! paginate || calc>records || len===-1 ?
97809
					records :
97810
					calc;
97811
			}
97812
		},
10850
	
97813
	
10851
		/**
97814
		/**
10852
		 * This function is called when a TR element is created (and all TD child
97815
		 * The DataTables object for this table
10853
		 * elements have been inserted), or registered if using a DOM source, allowing
10854
		 * manipulation of the TR element (adding classes etc).
10855
		 */
97816
		 */
10856
		"fnCreatedRow": null,
97817
		"oInstance": null,
10857
	
10858
	
97818
	
10859
		/**
97819
		/**
10860
		 * This function is called on every 'draw' event, and allows you to
97820
		 * Unique identifier for each instance of the DataTables object. If there
10861
		 * dynamically modify any aspect you want about the created DOM.
97821
		 * is an ID on the table node, then it takes that value, otherwise an
97822
		 * incrementing internal counter is used.
10862
		 */
97823
		 */
10863
		"fnDrawCallback": null,
97824
		"sInstance": null,
10864
	
10865
	
97825
	
10866
		/**
97826
		/**
10867
		 * Identical to fnHeaderCallback() but for the table footer this function
97827
		 * tabindex attribute value that is added to DataTables control elements, allowing
10868
		 * allows you to modify the table footer on every 'draw' event.
97828
		 * keyboard navigation of the table and its controls.
10869
		 */
97829
		 */
10870
		"fnFooterCallback": null,
97830
		"iTabIndex": 0,
10871
	
10872
	
97831
	
10873
		/**
97832
		/**
10874
		 * When rendering large numbers in the information element for the table
97833
		 * DIV container for the footer scrolling table if scrolling
10875
		 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
10876
		 * to have a comma separator for the 'thousands' units (e.g. 1 million is
10877
		 * rendered as "1,000,000") to help readability for the end user. This
10878
		 * function will override the default method DataTables uses.
10879
		 */
97834
		 */
10880
		"fnFormatNumber": function ( toFormat ) {
97835
		"nScrollHead": null,
10881
			return toFormat.toString().replace(
10882
				/\B(?=(\d{3})+(?!\d))/g,
10883
				this.oLanguage.sThousands
10884
			);
10885
		},
10886
	
10887
	
97836
	
10888
		/**
97837
		/**
10889
		 * This function is called on every 'draw' event, and allows you to
97838
		 * DIV container for the footer scrolling table if scrolling
10890
		 * dynamically modify the header row. This can be used to calculate and
10891
		 * display useful information about the table.
10892
		 */
97839
		 */
10893
		"fnHeaderCallback": null,
97840
		"nScrollFoot": null,
10894
	
10895
	
97841
	
10896
		/**
97842
		/**
10897
		 * The information element can be used to convey information about the current
97843
		 * Last applied sort
10898
		 * state of the table. Although the internationalisation options presented by
10899
		 * DataTables are quite capable of dealing with most customisations, there may
10900
		 * be times where you wish to customise the string further. This callback
10901
		 * allows you to do exactly that.
10902
		 */
97844
		 */
10903
		"fnInfoCallback": null,
97845
		"aLastSort": [],
10904
	
10905
	
97846
	
10906
		/**
97847
		/**
10907
		 * Called when the table has been initialised. Normally DataTables will
97848
		 * Stored plug-in instances
10908
		 * initialise sequentially and there will be no need for this function,
10909
		 * however, this does not hold true when using external language information
10910
		 * since that is obtained using an async XHR call.
10911
		 */
97849
		 */
10912
		"fnInitComplete": null,
97850
		"oPlugins": {},
10913
	
10914
	
97851
	
10915
		/**
97852
		/**
10916
		 * Called at the very start of each table draw and can be used to cancel the
97853
		 * Function used to get a row's id from the row's data
10917
		 * draw by returning false, any other return (including undefined) results in
10918
		 * the full draw occurring).
10919
		 */
97854
		 */
10920
		"fnPreDrawCallback": null,
97855
		"rowIdFn": null,
10921
	
10922
	
97856
	
10923
		/**
97857
		/**
10924
		 * This function allows you to 'post process' each row after it have been
97858
		 * Data location where to store a row's id
10925
		 * generated for each table draw, but before it is rendered on screen. This
10926
		 * function might be used for setting the row class name etc.
10927
		 */
97859
		 */
10928
		"fnRowCallback": null,
97860
		"rowId": null,
10929
	
97861
	
97862
		caption: '',
10930
	
97863
	
10931
		/**
97864
		captionNode: null,
10932
		 * Load the table state. With this function you can define from where, and how, the
10933
		 * state of a table is loaded. By default DataTables will load from `localStorage`
10934
		 * but you might wish to use a server-side database or cookies.
10935
		 */
10936
		"fnStateLoadCallback": function ( settings ) {
10937
			try {
10938
				return JSON.parse(
10939
					(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(
10940
						'DataTables_'+settings.sInstance+'_'+location.pathname
10941
					)
10942
				);
10943
			} catch (e) {
10944
				return {};
10945
			}
10946
		},
10947
	
97865
	
97866
		colgroup: null,
10948
	
97867
	
10949
		/**
97868
		/** Delay loading of data */
10950
		 * Callback which allows modification of the saved state prior to loading that state.
97869
		deferLoading: null,
10951
		 * This callback is called when the table is loading state from the stored data, but
10952
		 * prior to the settings object being modified by the saved state. Note that for
10953
		 * plug-in authors, you should use the `stateLoadParams` event to load parameters for
10954
		 * a plug-in.
10955
		 */
10956
		"fnStateLoadParams": null,
10957
	
97870
	
97871
		/** Allow auto type detection */
97872
		typeDetect: true,
10958
	
97873
	
10959
		/**
97874
		/** ResizeObserver for the container div */
10960
		 * Callback that is called when the state has been loaded from the state saving method
97875
		resizeObserver: null,
10961
		 * and the DataTables settings object has been modified as a result of the loaded state.
10962
		 */
10963
		"fnStateLoaded": null,
10964
	
97876
	
97877
		/** Keep a record of the last size of the container, so we can skip duplicates */
97878
		containerWidth: -1,
10965
	
97879
	
10966
		/**
97880
		/** Reverse the initial order of the data set on desc ordering */
10967
		 * Save the table state. This function allows you to define where and how the state
97881
		orderDescReverse: null,
10968
		 * information for the table is stored By default DataTables will use `localStorage`
10969
		 * but you might wish to use a server-side database or cookies.
10970
		 */
10971
		"fnStateSaveCallback": function ( settings, data ) {
10972
			try {
10973
				(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(
10974
					'DataTables_'+settings.sInstance+'_'+location.pathname,
10975
					JSON.stringify( data )
10976
				);
10977
			} catch (e) {
10978
				// noop
10979
			}
10980
		},
10981
	
97882
	
97883
		/** Show / hide ordering indicators in headers */
97884
		orderIndicators: true,
10982
	
97885
	
10983
		/**
97886
		/** Default ordering listener */
10984
		 * Callback which allows modification of the state to be saved. Called when the table
97887
		orderHandler: true,
10985
		 * has changed state a new state save is required. This method allows modification of
10986
		 * the state saving object prior to actually doing the save, including addition or
10987
		 * other state properties or modification. Note that for plug-in authors, you should
10988
		 * use the `stateSaveParams` event to save parameters for a plug-in.
10989
		 */
10990
		"fnStateSaveParams": null,
10991
	
97888
	
97889
		/** Title row indicator */
97890
		titleRow: null,
10992
	
97891
	
10993
		/**
97892
		/** Title wrapper element type */
10994
		 * Duration for which the saved state information is considered valid. After this period
97893
		columnTitleTag: 'span'
10995
		 * has elapsed the state will be returned to the default.
97894
	};
10996
		 * Value is given in seconds.
10997
		 */
10998
		"iStateDuration": 7200,
10999
	
97895
	
97896
	/**
97897
	 * Extension object for DataTables that is used to provide all extension
97898
	 * options.
97899
	 *
97900
	 * Note that the `DataTable.ext` object is available through
97901
	 * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is
97902
	 * also aliased to `jQuery.fn.dataTableExt` for historic reasons.
97903
	 *  @namespace
97904
	 *  @extends DataTable.models.ext
97905
	 */
11000
	
97906
	
11001
		/**
11002
		 * Number of rows to display on a single page when using pagination. If
11003
		 * feature enabled (`lengthChange`) then the end user will be able to override
11004
		 * this to a custom setting using a pop-up menu.
11005
		 */
11006
		"iDisplayLength": 10,
11007
	
97907
	
97908
	var extPagination = DataTable.ext.pager;
97909
97910
	// Paging buttons configuration
97911
	$.extend( extPagination, {
97912
		simple: function () {
97913
			return [ 'previous', 'next' ];
97914
		},
11008
	
97915
	
11009
		/**
97916
		full: function () {
11010
		 * Define the starting point for data display when using DataTables with
97917
			return [ 'first', 'previous', 'next', 'last' ];
11011
		 * pagination. Note that this parameter is the number of records, rather than
97918
		},
11012
		 * the page number, so if you have 10 records per page and want to start on
11013
		 * the third page, it should be "20".
11014
		 */
11015
		"iDisplayStart": 0,
11016
	
97919
	
97920
		numbers: function () {
97921
			return [ 'numbers' ];
97922
		},
11017
	
97923
	
11018
		/**
97924
		simple_numbers: function () {
11019
		 * By default DataTables allows keyboard navigation of the table (sorting, paging,
97925
			return [ 'previous', 'numbers', 'next' ];
11020
		 * and filtering) by adding a `tabindex` attribute to the required elements. This
97926
		},
11021
		 * allows you to tab through the controls and press the enter key to activate them.
11022
		 * The tabindex is default 0, meaning that the tab follows the flow of the document.
11023
		 * You can overrule this using this parameter if you wish. Use a value of -1 to
11024
		 * disable built-in keyboard navigation.
11025
		 */
11026
		"iTabIndex": 0,
11027
	
97927
	
97928
		full_numbers: function () {
97929
			return [ 'first', 'previous', 'numbers', 'next', 'last' ];
97930
		},
11028
	
97931
	
11029
		/**
97932
		first_last: function () {
11030
		 * Classes that DataTables assigns to the various components and features
97933
			return ['first', 'last'];
11031
		 * that it adds to the HTML table. This allows classes to be configured
97934
		},
11032
		 * during initialisation in addition to through the static
11033
		 * {@link DataTable.ext.oStdClasses} object).
11034
		 */
11035
		"oClasses": {},
11036
	
97935
	
97936
		first_last_numbers: function () {
97937
			return ['first', 'numbers', 'last'];
97938
		},
11037
	
97939
	
11038
		/**
97940
		// For testing and plug-ins to use
11039
		 * All strings that DataTables uses in the user interface that it creates
97941
		_numbers: _pagingNumbers,
11040
		 * are defined in this object, allowing you to modified them individually or
11041
		 * completely replace them all as required.
11042
		 */
11043
		"oLanguage": {
11044
			/**
11045
			 * Strings that are used for WAI-ARIA labels and controls only (these are not
11046
			 * actually visible on the page, but will be read by screenreaders, and thus
11047
			 * must be internationalised as well).
11048
			 */
11049
			"oAria": {
11050
				/**
11051
				 * ARIA label that is added to the table headers when the column may be sorted
11052
				 */
11053
				"orderable": ": Activate to sort",
11054
	
97942
	
11055
				/**
97943
		// Number of number buttons - legacy, use `numbers` option for paging feature
11056
				 * ARIA label that is added to the table headers when the column is currently being sorted
97944
		numbers_length: 7
11057
				 */
97945
	} );
11058
				"orderableReverse": ": Activate to invert sorting",
97946
	
97947
	
97948
	$.extend( true, DataTable.ext.renderer, {
97949
		pagingButton: {
97950
			_: function (settings, buttonType, content, active, disabled) {
97951
				var classes = settings.oClasses.paging;
97952
				var btnClasses = [classes.button];
97953
				var btn;
97954
	
97955
				if (active) {
97956
					btnClasses.push(classes.active);
97957
				}
97958
	
97959
				if (disabled) {
97960
					btnClasses.push(classes.disabled)
97961
				}
11059
	
97962
	
11060
				/**
97963
				if (buttonType === 'ellipsis') {
11061
				 * ARIA label that is added to the table headers when the column is currently being 
97964
					btn = $('<span class="ellipsis"></span>').html(content)[0];
11062
				 * sorted and next step is to remove sorting
97965
				}
11063
				 */
97966
				else {
11064
				"orderableRemove": ": Activate to remove sorting",
97967
					btn = $('<button>', {
97968
						class: btnClasses.join(' '),
97969
						role: 'link',
97970
						type: 'button'
97971
					}).html(content);
97972
				}
11065
	
97973
	
11066
				paginate: {
97974
				return {
11067
					first: 'First',
97975
					display: btn,
11068
					last: 'Last',
97976
					clicker: btn
11069
					next: 'Next',
11070
					previous: 'Previous',
11071
					number: ''
11072
				}
97977
				}
11073
			},
97978
			}
97979
		},
11074
	
97980
	
11075
			/**
97981
		pagingContainer: {
11076
			 * Pagination string used by DataTables for the built-in pagination
97982
			_: function (settings, buttons) {
11077
			 * control types.
97983
				// No wrapping element - just append directly to the host
11078
			 */
97984
				return buttons;
11079
			"oPaginate": {
97985
			}
11080
				/**
97986
		}
11081
				 * Label and character for first page button («)
97987
	} );
11082
				 */
11083
				"sFirst": "\u00AB",
11084
	
97988
	
11085
				/**
97989
	// Common function to remove new lines, strip HTML and diacritic control
11086
				 * Last page button (»)
97990
	var _filterString = function (stripHtml, normalize) {
11087
				 */
97991
		return function (str) {
11088
				"sLast": "\u00BB",
97992
			if (_empty(str) || typeof str !== 'string') {
97993
				return str;
97994
			}
11089
	
97995
	
11090
				/**
97996
			str = str.replace( _re_new_lines, " " );
11091
				 * Next page button (›)
11092
				 */
11093
				"sNext": "\u203A",
11094
	
97997
	
11095
				/**
97998
			if (stripHtml) {
11096
				 * Previous page button (‹)
97999
				str = _stripHtml(str);
11097
				 */
98000
			}
11098
				"sPrevious": "\u2039",
11099
			},
11100
	
98001
	
11101
			/**
98002
			if (normalize) {
11102
			 * Plural object for the data type the table is showing
98003
				str = _normalize(str, false);
11103
			 */
98004
			}
11104
			entries: {
11105
				_: "entries",
11106
				1: "entry"
11107
			},
11108
	
98005
	
11109
			/**
98006
			return str;
11110
			 * Page length options
98007
		};
11111
			 */
98008
	}
11112
			lengthLabels: {
98009
	
11113
				'-1': 'All'
98010
	/*
11114
			},
98011
	 * Public helper functions. These aren't used internally by DataTables, or
98012
	 * called by any of the options passed into DataTables, but they can be used
98013
	 * externally by developers working with DataTables. They are helper functions
98014
	 * to make working with DataTables a little bit easier.
98015
	 */
98016
	
98017
	/**
98018
	 * Common logic for moment, luxon or a date action.
98019
	 *
98020
	 * Happens after __mldObj, so don't need to call `resolveWindowsLibs` again
98021
	 */
98022
	function __mld( dtLib, momentFn, luxonFn, dateFn, arg1 ) {
98023
		if (__moment) {
98024
			return dtLib[momentFn]( arg1 );
98025
		}
98026
		else if (__luxon) {
98027
			return dtLib[luxonFn]( arg1 );
98028
		}
11115
98029
11116
			/**
98030
		return dateFn ? dtLib[dateFn]( arg1 ) : dtLib;
11117
			 * This string is shown in preference to `zeroRecords` when the table is
98031
	}
11118
			 * empty of data (regardless of filtering). Note that this is an optional
11119
			 * parameter - if it is not given, the value of `zeroRecords` will be used
11120
			 * instead (either the default or given value).
11121
			 */
11122
			"sEmptyTable": "No data available in table",
11123
	
98032
	
11124
	
98033
	
11125
			/**
98034
	var __mlWarning = false;
11126
			 * This string gives information to the end user about the information
98035
	var __luxon; // Can be assigned in DateTable.use()
11127
			 * that is current on display on the page. The following tokens can be
98036
	var __moment; // Can be assigned in DateTable.use()
11128
			 * used in the string and will be dynamically replaced as the table
11129
			 * display updates. This tokens can be placed anywhere in the string, or
11130
			 * removed as needed by the language requires:
11131
			 *
11132
			 * * `\_START\_` - Display index of the first record on the current page
11133
			 * * `\_END\_` - Display index of the last record on the current page
11134
			 * * `\_TOTAL\_` - Number of records in the table after filtering
11135
			 * * `\_MAX\_` - Number of records in the table without filtering
11136
			 * * `\_PAGE\_` - Current page number
11137
			 * * `\_PAGES\_` - Total number of pages of data in the table
11138
			 */
11139
			"sInfo": "Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",
11140
	
98037
	
98038
	/**
98039
	 *
98040
	 */
98041
	function resolveWindowLibs() {
98042
		if (window.luxon && ! __luxon) {
98043
			__luxon = window.luxon;
98044
		}
98045
98046
		if (window.moment && ! __moment) {
98047
			__moment = window.moment;
98048
		}
98049
	}
11141
	
98050
	
11142
			/**
98051
	function __mldObj (d, format, locale) {
11143
			 * Display information string for when the table is empty. Typically the
98052
		var dt;
11144
			 * format of this string should match `info`.
11145
			 */
11146
			"sInfoEmpty": "Showing 0 to 0 of 0 _ENTRIES-TOTAL_",
11147
	
98053
	
98054
		resolveWindowLibs();
11148
	
98055
	
11149
			/**
98056
		if (__moment) {
11150
			 * When a user filters the information in a table, this string is appended
98057
			dt = __moment.utc( d, format, locale, true );
11151
			 * to the information (`info`) to give an idea of how strong the filtering
11152
			 * is. The variable _MAX_ is dynamically updated.
11153
			 */
11154
			"sInfoFiltered": "(filtered from _MAX_ total _ENTRIES-MAX_)",
11155
	
98058
	
98059
			if (! dt.isValid()) {
98060
				return null;
98061
			}
98062
		}
98063
		else if (__luxon) {
98064
			dt = format && typeof d === 'string'
98065
				? __luxon.DateTime.fromFormat( d, format )
98066
				: __luxon.DateTime.fromISO( d );
98067
98068
			if (! dt.isValid) {
98069
				return null;
98070
			}
98071
98072
			dt = dt.setLocale(locale);
98073
		}
98074
		else if (! format) {
98075
			// No format given, must be ISO
98076
			dt = new Date(d);
98077
		}
98078
		else {
98079
			if (! __mlWarning) {
98080
				alert('DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17');
98081
			}
98082
98083
			__mlWarning = true;
98084
		}
11156
	
98085
	
11157
			/**
98086
		return dt;
11158
			 * If can be useful to append extra information to the info string at times,
98087
	}
11159
			 * and this variable does exactly that. This information will be appended to
11160
			 * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are
11161
			 * being used) at all times.
11162
			 */
11163
			"sInfoPostFix": "",
11164
	
98088
	
98089
	// Wrapper for date, datetime and time which all operate the same way with the exception of
98090
	// the output string for auto locale support
98091
	function __mlHelper (localeString) {
98092
		return function ( from, to, locale, def ) {
98093
			// Luxon and Moment support
98094
			// Argument shifting
98095
			if ( arguments.length === 0 ) {
98096
				locale = 'en';
98097
				to = null; // means toLocaleString
98098
				from = null; // means iso8601
98099
			}
98100
			else if ( arguments.length === 1 ) {
98101
				locale = 'en';
98102
				to = from;
98103
				from = null;
98104
			}
98105
			else if ( arguments.length === 2 ) {
98106
				locale = to;
98107
				to = from;
98108
				from = null;
98109
			}
11165
	
98110
	
11166
			/**
98111
			var typeName = 'datetime' + (to ? '-' + to : '');
11167
			 * This decimal place operator is a little different from the other
98112
	
11168
			 * language options since DataTables doesn't output floating point
98113
			// Add type detection and sorting specific to this date format - we need to be able to identify
11169
			 * numbers, so it won't ever use this for display of a number. Rather,
98114
			// date type columns as such, rather than as numbers in extensions. Hence the need for this.
11170
			 * what this parameter does is modify the sort methods of the table so
98115
			if (! DataTable.ext.type.order[typeName + '-pre']) {
11171
			 * that numbers which are in a format which has a character other than
98116
				DataTable.type(typeName, {
11172
			 * a period (`.`) as a decimal place will be sorted numerically.
98117
					detect: function (d) {
11173
			 *
98118
						// The renderer will give the value to type detect as the type!
11174
			 * Note that numbers with different decimal places cannot be shown in
98119
						return d === typeName ? typeName : false;
11175
			 * the same table and still be sortable, the table must be consistent.
98120
					},
11176
			 * However, multiple different tables on the page can use different
98121
					order: {
11177
			 * decimal place characters.
98122
						pre: function (d) {
11178
			 */
98123
							// The renderer gives us Moment, Luxon or Date objects for the sorting, all of which have a
11179
			"sDecimal": "",
98124
							// `valueOf` which gives milliseconds epoch
98125
							return d.valueOf();
98126
						}
98127
					},
98128
					className: 'dt-right'
98129
				});
98130
			}
98131
98132
			return function ( d, type ) {
98133
				// Allow for a default value
98134
				if (d === null || d === undefined) {
98135
					if (def === '--now') {
98136
						// We treat everything as UTC further down, so no changes are
98137
						// made, as such need to get the local date / time as if it were
98138
						// UTC
98139
						var local = new Date();
98140
						d = new Date( Date.UTC(
98141
							local.getFullYear(), local.getMonth(), local.getDate(),
98142
							local.getHours(), local.getMinutes(), local.getSeconds()
98143
						) );
98144
					}
98145
					else {
98146
						d = '';
98147
					}
98148
				}
11180
	
98149
	
98150
				if (type === 'type') {
98151
					// Typing uses the type name for fast matching
98152
					return typeName;
98153
				}
11181
	
98154
	
11182
			/**
98155
				if (d === '') {
11183
			 * DataTables has a build in number formatter (`formatNumber`) which is
98156
					return type !== 'sort'
11184
			 * used to format large numbers that are used in the table information.
98157
						? ''
11185
			 * By default a comma is used, but this can be trivially changed to any
98158
						: __mldObj('0000-01-01 00:00:00', null, locale);
11186
			 * character you wish with this parameter.
98159
				}
11187
			 */
11188
			"sThousands": ",",
11189
	
98160
	
98161
				// Shortcut. If `from` and `to` are the same, we are using the renderer to
98162
				// format for ordering, not display - its already in the display format.
98163
				if ( to !== null && from === to && type !== 'sort' && type !== 'type' && ! (d instanceof Date) ) {
98164
					return d;
98165
				}
11190
	
98166
	
11191
			/**
98167
				var dt = __mldObj(d, from, locale);
11192
			 * Detail the action that will be taken when the drop down menu for the
11193
			 * pagination length option is changed. The '_MENU_' variable is replaced
11194
			 * with a default select list of 10, 25, 50 and 100, and can be replaced
11195
			 * with a custom select box if required.
11196
			 */
11197
			"sLengthMenu": "_MENU_ _ENTRIES_ per page",
11198
	
98168
	
98169
				if (dt === null) {
98170
					return d;
98171
				}
11199
	
98172
	
11200
			/**
98173
				if (type === 'sort') {
11201
			 * When using Ajax sourced data and during the first draw when DataTables is
98174
					return dt;
11202
			 * gathering the data, this message is shown in an empty row in the table to
98175
				}
11203
			 * indicate to the end user the data is being loaded. Note that this
98176
11204
			 * parameter is not used when loading data by server-side processing, just
98177
				var formatted = to === null
11205
			 * Ajax sourced data with client-side processing.
98178
					? __mld(dt, 'toDate', 'toJSDate', '')[localeString](
11206
			 */
98179
						navigator.language,
11207
			"sLoadingRecords": "Loading...",
98180
						{ timeZone: "UTC" }
98181
					)
98182
					: __mld(dt, 'format', 'toFormat', 'toISOString', to);
11208
	
98183
	
98184
				// XSS protection
98185
				return type === 'display' ?
98186
					_escapeHtml( formatted ) :
98187
					formatted;
98188
			};
98189
		}
98190
	}
11209
	
98191
	
11210
			/**
98192
	// Based on locale, determine standard number formatting
11211
			 * Text which is displayed when the table is processing a user action
98193
	// Fallback for legacy browsers is US English
11212
			 * (usually a sort command or similar).
98194
	var __thousands = ',';
11213
			 */
98195
	var __decimal = '.';
11214
			"sProcessing": "",
11215
	
98196
	
98197
	if (window.Intl !== undefined) {
98198
		try {
98199
			var num = new Intl.NumberFormat().formatToParts(100000.1);
98200
98201
			for (var i=0 ; i<num.length ; i++) {
98202
				if (num[i].type === 'group') {
98203
					__thousands = num[i].value;
98204
				}
98205
				else if (num[i].type === 'decimal') {
98206
					__decimal = num[i].value;
98207
				}
98208
			}
98209
		}
98210
		catch (e) {
98211
			// noop
98212
		}
98213
	}
11216
	
98214
	
11217
			/**
98215
	// Formatted date time detection - use by declaring the formats you are going to use
11218
			 * Details the actions that will be taken when the user types into the
98216
	DataTable.datetime = function ( format, locale ) {
11219
			 * filtering input text box. The variable "_INPUT_", if used in the string,
98217
		var typeName = 'datetime-' + format;
11220
			 * is replaced with the HTML text box for the filtering input allowing
11221
			 * control over where it appears in the string. If "_INPUT_" is not given
11222
			 * then the input box is appended to the string automatically.
11223
			 */
11224
			"sSearch": "Search:",
11225
	
98218
	
98219
		if (! locale) {
98220
			locale = 'en';
98221
		}
11226
	
98222
	
11227
			/**
98223
		if (! DataTable.ext.type.order[typeName]) {
11228
			 * Assign a `placeholder` attribute to the search `input` element
98224
			DataTable.type(typeName, {
11229
			 *  @type string
98225
				detect: function (d) {
11230
			 *  @default 
98226
					var dt = __mldObj(d, format, locale);
11231
			 *
98227
					return d === '' || dt ? typeName : false;
11232
			 *  @dtopt Language
98228
				},
11233
			 *  @name DataTable.defaults.language.searchPlaceholder
98229
				order: {
11234
			 */
98230
					pre: function (d) {
11235
			"sSearchPlaceholder": "",
98231
						return __mldObj(d, format, locale) || 0;
98232
					}
98233
				},
98234
				className: 'dt-right'
98235
			});
98236
		}
98237
	}
98238
	
98239
	/**
98240
	 * Helpers for `columns.render`.
98241
	 *
98242
	 * The options defined here can be used with the `columns.render` initialisation
98243
	 * option to provide a display renderer. The following functions are defined:
98244
	 *
98245
	 * * `moment` - Uses the MomentJS library to convert from a given format into another.
98246
	 * This renderer has three overloads:
98247
	 *   * 1 parameter:
98248
	 *     * `string` - Format to convert to (assumes input is ISO8601 and locale is `en`)
98249
	 *   * 2 parameters:
98250
	 *     * `string` - Format to convert from
98251
	 *     * `string` - Format to convert to. Assumes `en` locale
98252
	 *   * 3 parameters:
98253
	 *     * `string` - Format to convert from
98254
	 *     * `string` - Format to convert to
98255
	 *     * `string` - Locale
98256
	 * * `number` - Will format numeric data (defined by `columns.data`) for
98257
	 *   display, retaining the original unformatted data for sorting and filtering.
98258
	 *   It takes 5 parameters:
98259
	 *   * `string` - Thousands grouping separator
98260
	 *   * `string` - Decimal point indicator
98261
	 *   * `integer` - Number of decimal points to show
98262
	 *   * `string` (optional) - Prefix.
98263
	 *   * `string` (optional) - Postfix (/suffix).
98264
	 * * `text` - Escape HTML to help prevent XSS attacks. It has no optional
98265
	 *   parameters.
98266
	 *
98267
	 * @example
98268
	 *   // Column definition using the number renderer
98269
	 *   {
98270
	 *     data: "salary",
98271
	 *     render: $.fn.dataTable.render.number( '\'', '.', 0, '$' )
98272
	 *   }
98273
	 *
98274
	 * @namespace
98275
	 */
98276
	DataTable.render = {
98277
		date: __mlHelper('toLocaleDateString'),
98278
		datetime: __mlHelper('toLocaleString'),
98279
		time: __mlHelper('toLocaleTimeString'),
98280
		number: function ( thousands, decimal, precision, prefix, postfix ) {
98281
			// Auto locale detection
98282
			if (thousands === null || thousands === undefined) {
98283
				thousands = __thousands;
98284
			}
11236
	
98285
	
98286
			if (decimal === null || decimal === undefined) {
98287
				decimal = __decimal;
98288
			}
11237
	
98289
	
11238
			/**
98290
			return {
11239
			 * All of the language information can be stored in a file on the
98291
				display: function ( d ) {
11240
			 * server-side, which DataTables will look up if this parameter is passed.
98292
					if ( typeof d !== 'number' && typeof d !== 'string' ) {
11241
			 * It must store the URL of the language file, which is in a JSON format,
98293
						return d;
11242
			 * and the object has the same properties as the oLanguage object in the
98294
					}
11243
			 * initialiser object (i.e. the above parameters). Please refer to one of
11244
			 * the example language files to see how this works in action.
11245
			 */
11246
			"sUrl": "",
11247
	
98295
	
98296
					if (d === '' || d === null) {
98297
						return d;
98298
					}
11248
	
98299
	
11249
			/**
98300
					var negative = d < 0 ? '-' : '';
11250
			 * Text shown inside the table records when the is no information to be
98301
					var flo = parseFloat( d );
11251
			 * displayed after filtering. `emptyTable` is shown when there is simply no
98302
					var abs = Math.abs(flo);
11252
			 * information in the table at all (regardless of filtering).
11253
			 */
11254
			"sZeroRecords": "No matching records found"
11255
		},
11256
	
98303
	
98304
					// Scientific notation for large and small numbers
98305
					if (abs >= 100000000000 || (abs < 0.0001 && abs !== 0) ) {
98306
						var exp = flo.toExponential(precision).split(/e\+?/);
98307
						return exp[0] + ' x 10<sup>' + exp[1] + '</sup>';
98308
					}
11257
	
98309
	
11258
		/** The initial data order is reversed when `desc` ordering */
98310
					// If NaN then there isn't much formatting that we can do - just
11259
		orderDescReverse: true,
98311
					// return immediately, escaping any HTML (this was supposed to
98312
					// be a number after all)
98313
					if ( isNaN( flo ) ) {
98314
						return _escapeHtml( d );
98315
					}
11260
	
98316
	
98317
					flo = flo.toFixed( precision );
98318
					d = Math.abs( flo );
11261
	
98319
	
11262
		/**
98320
					var intPart = parseInt( d, 10 );
11263
		 * This parameter allows you to have define the global filtering state at
98321
					var floatPart = precision ?
11264
		 * initialisation time. As an object the `search` parameter must be
98322
						decimal+(d - intPart).toFixed( precision ).substring( 2 ):
11265
		 * defined, but all other parameters are optional. When `regex` is true,
98323
						'';
11266
		 * the search string will be treated as a regular expression, when false
11267
		 * (default) it will be treated as a straight string. When `smart`
11268
		 * DataTables will use it's smart filtering methods (to word match at
11269
		 * any point in the data), when false this will not be done.
11270
		 */
11271
		"oSearch": $.extend( {}, DataTable.models.oSearch ),
11272
	
98324
	
98325
					// If zero, then can't have a negative prefix
98326
					if (intPart === 0 && parseFloat(floatPart) === 0) {
98327
						negative = '';
98328
					}
11273
	
98329
	
11274
		/**
98330
					return negative + (prefix||'') +
11275
		 * Table and control layout. This replaces the legacy `dom` option.
98331
						intPart.toString().replace(
11276
		 */
98332
							/\B(?=(\d{3})+(?!\d))/g, thousands
11277
		layout: {
98333
						) +
11278
			topStart: 'pageLength',
98334
						floatPart +
11279
			topEnd: 'search',
98335
						(postfix||'');
11280
			bottomStart: 'info',
98336
				}
11281
			bottomEnd: 'paging'
98337
			};
11282
		},
98338
		},
11283
	
98339
	
98340
		text: function () {
98341
			return {
98342
				display: _escapeHtml,
98343
				filter: _escapeHtml
98344
			};
98345
		}
98346
	};
11284
	
98347
	
11285
		/**
11286
		 * Legacy DOM layout option
11287
		 */
11288
		"sDom": null,
11289
	
11290
	
11291
		/**
11292
		 * Search delay option. This will throttle full table searches that use the
11293
		 * DataTables provided search input element (it does not effect calls to
11294
		 * `dt-api search()`, providing a delay before the search is made.
11295
		 */
11296
		"searchDelay": null,
11297
	
98348
	
98349
	var _extTypes = DataTable.ext.type;
98350
98351
	// Get / set type
98352
	DataTable.type = function (name, prop, val) {
98353
		if (! prop) {
98354
			return {
98355
				className: _extTypes.className[name],
98356
				detect: _extTypes.detect.find(function (fn) {
98357
					return fn._name === name;
98358
				}),
98359
				order: {
98360
					pre: _extTypes.order[name + '-pre'],
98361
					asc: _extTypes.order[name + '-asc'],
98362
					desc: _extTypes.order[name + '-desc']
98363
				},
98364
				render: _extTypes.render[name],
98365
				search: _extTypes.search[name]
98366
			};
98367
		}
11298
	
98368
	
11299
		/**
98369
		var setProp = function(prop, propVal) {
11300
		 * DataTables features six different built-in options for the buttons to
98370
			_extTypes[prop][name] = propVal;
11301
		 * display for pagination control:
98371
		};
11302
		 *
98372
		var setDetect = function (detect) {
11303
		 * * `numbers` - Page number buttons only
98373
			// `detect` can be a function or an object - we set a name
11304
		 * * `simple` - 'Previous' and 'Next' buttons only
98374
			// property for either - that is used for the detection
11305
		 * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers
98375
			Object.defineProperty(detect, "_name", {value: name});
11306
		 * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
11307
		 * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers
11308
		 * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers
11309
		 */
11310
		"sPaginationType": "",
11311
	
98376
	
98377
			var idx = _extTypes.detect.findIndex(function (item) {
98378
				return item._name === name;
98379
			});
98380
98381
			if (idx === -1) {
98382
				_extTypes.detect.unshift(detect);
98383
			}
98384
			else {
98385
				_extTypes.detect.splice(idx, 1, detect);
98386
			}
98387
		};
98388
		var setOrder = function (obj) {
98389
			_extTypes.order[name + '-pre'] = obj.pre; // can be undefined
98390
			_extTypes.order[name + '-asc'] = obj.asc; // can be undefined
98391
			_extTypes.order[name + '-desc'] = obj.desc; // can be undefined
98392
		};
11312
	
98393
	
11313
		/**
98394
		// prop is optional
11314
		 * Enable horizontal scrolling. When a table is too wide to fit into a
98395
		if (val === undefined) {
11315
		 * certain layout, or you have a large number of columns in the table, you
98396
			val = prop;
11316
		 * can enable x-scrolling to show the table in a viewport, which can be
98397
			prop = null;
11317
		 * scrolled. This property can be `true` which will allow the table to
98398
		}
11318
		 * scroll horizontally when needed, or any CSS unit, or a number (in which
11319
		 * case it will be treated as a pixel measurement). Setting as simply `true`
11320
		 * is recommended.
11321
		 */
11322
		"sScrollX": "",
11323
	
98399
	
98400
		if (prop === 'className') {
98401
			setProp('className', val);
98402
		}
98403
		else if (prop === 'detect') {
98404
			setDetect(val);
98405
		}
98406
		else if (prop === 'order') {
98407
			setOrder(val);
98408
		}
98409
		else if (prop === 'render') {
98410
			setProp('render', val);
98411
		}
98412
		else if (prop === 'search') {
98413
			setProp('search', val);
98414
		}
98415
		else if (! prop) {
98416
			if (val.className) {
98417
				setProp('className', val.className);
98418
			}
11324
	
98419
	
11325
		/**
98420
			if (val.detect !== undefined) {
11326
		 * This property can be used to force a DataTable to use more width than it
98421
				setDetect(val.detect);
11327
		 * might otherwise do when x-scrolling is enabled. For example if you have a
98422
			}
11328
		 * table which requires to be well spaced, this parameter is useful for
11329
		 * "over-sizing" the table, and thus forcing scrolling. This property can by
11330
		 * any CSS unit, or a number (in which case it will be treated as a pixel
11331
		 * measurement).
11332
		 */
11333
		"sScrollXInner": "",
11334
	
98423
	
98424
			if (val.order) {
98425
				setOrder(val.order);
98426
			}
11335
	
98427
	
11336
		/**
98428
			if (val.render !== undefined) {
11337
		 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
98429
				setProp('render', val.render);
11338
		 * to the given height, and enable scrolling for any data which overflows the
98430
			}
11339
		 * current viewport. This can be used as an alternative to paging to display
11340
		 * a lot of data in a small area (although paging and scrolling can both be
11341
		 * enabled at the same time). This property can be any CSS unit, or a number
11342
		 * (in which case it will be treated as a pixel measurement).
11343
		 */
11344
		"sScrollY": "",
11345
	
98431
	
98432
			if (val.search !== undefined) {
98433
				setProp('search', val.search);
98434
			}
98435
		}
98436
	}
11346
	
98437
	
11347
		/**
98438
	// Get a list of types
11348
		 * __Deprecated__ The functionality provided by this parameter has now been
98439
	DataTable.types = function () {
11349
		 * superseded by that provided through `ajax`, which should be used instead.
98440
		return _extTypes.detect.map(function (fn) {
11350
		 *
98441
			return fn._name;
11351
		 * Set the HTTP method that is used to make the Ajax call for server-side
98442
		});
11352
		 * processing or Ajax sourced data.
98443
	};
11353
		 */
11354
		"sServerMethod": "GET",
11355
	
98444
	
98445
	var __diacriticSort = function (a, b) {
98446
		a = a !== null && a !== undefined ? a.toString().toLowerCase() : '';
98447
		b = b !== null && b !== undefined ? b.toString().toLowerCase() : '';
11356
	
98448
	
11357
		/**
98449
		// Checked for `navigator.languages` support in `oneOf` so this code can't execute in old
11358
		 * DataTables makes use of renderers when displaying HTML elements for
98450
		// Safari and thus can disable this check
11359
		 * a table. These renderers can be added or modified by plug-ins to
98451
		// eslint-disable-next-line compat/compat
11360
		 * generate suitable mark-up for a site. For example the Bootstrap
98452
		return a.localeCompare(b, navigator.languages[0] || navigator.language, {
11361
		 * integration plug-in for DataTables uses a paging button renderer to
98453
			numeric: true,
11362
		 * display pagination buttons in the mark-up required by Bootstrap.
98454
			ignorePunctuation: true,
11363
		 *
98455
		});
11364
		 * For further information about the renderers available see
98456
	}
11365
		 * DataTable.ext.renderer
11366
		 */
11367
		"renderer": null,
11368
	
98457
	
98458
	var __diacriticHtmlSort = function (a, b) {
98459
		a = _stripHtml(a);
98460
		b = _stripHtml(b);
11369
	
98461
	
11370
		/**
98462
		return __diacriticSort(a, b);
11371
		 * Set the data property name that DataTables should use to get a row's id
98463
	}
11372
		 * to set as the `id` property in the node.
11373
		 */
11374
		"rowId": "DT_RowId",
11375
	
98464
	
98465
	//
98466
	// Built in data types
98467
	//
11376
	
98468
	
11377
		/**
98469
	DataTable.type('string', {
11378
		 * Caption value
98470
		detect: function () {
11379
		 */
98471
			return 'string';
11380
		"caption": null,
98472
		},
98473
		order: {
98474
			pre: function ( a ) {
98475
				// This is a little complex, but faster than always calling toString,
98476
				// http://jsperf.com/tostring-v-check
98477
				return _empty(a) && typeof a !== 'boolean' ?
98478
					'' :
98479
					typeof a === 'string' ?
98480
						a.toLowerCase() :
98481
						! a.toString ?
98482
							'' :
98483
							a.toString();
98484
			}
98485
		},
98486
		search: _filterString(false, true)
98487
	});
11381
	
98488
	
98489
	DataTable.type('string-utf8', {
98490
		detect: {
98491
			allOf: function ( d ) {
98492
				return true;
98493
			},
98494
			oneOf: function ( d ) {
98495
				// At least one data point must contain a non-ASCII character
98496
				// This line will also check if navigator.languages is supported or not. If not (Safari 10.0-)
98497
				// this data type won't be supported.
98498
				// eslint-disable-next-line compat/compat
98499
				return ! _empty( d ) && navigator.languages && typeof d === 'string' && d.match(/[^\x00-\x7F]/);
98500
			}
98501
		},
98502
		order: {
98503
			asc: __diacriticSort,
98504
			desc: function (a, b) {
98505
				return __diacriticSort(a, b) * -1;
98506
			}
98507
		},
98508
		search: _filterString(false, true)
98509
	});
11382
	
98510
	
11383
		/**
11384
		 * For server-side processing - use the data from the DOM for the first draw
11385
		 */
11386
		iDeferLoading: null,
11387
11388
		/** Event listeners */
11389
		on: null
11390
	};
11391
	
98511
	
11392
	_fnHungarianMap( DataTable.defaults );
98512
	DataTable.type('html', {
98513
		detect: {
98514
			allOf: function ( d ) {
98515
				return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1);
98516
			},
98517
			oneOf: function ( d ) {
98518
				// At least one data point must contain a `<`
98519
				return ! _empty( d ) && typeof d === 'string' && d.indexOf('<') !== -1;
98520
			}
98521
		},
98522
		order: {
98523
			pre: function ( a ) {
98524
				return _empty(a) ?
98525
					'' :
98526
					a.replace ?
98527
						_stripHtml(a).trim().toLowerCase() :
98528
						a+'';
98529
			}
98530
		},
98531
		search: _filterString(true, true)
98532
	});
11393
	
98533
	
11394
	
98534
	
98535
	DataTable.type('html-utf8', {
98536
		detect: {
98537
			allOf: function ( d ) {
98538
				return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1);
98539
			},
98540
			oneOf: function ( d ) {
98541
				// At least one data point must contain a `<` and a non-ASCII character
98542
				// eslint-disable-next-line compat/compat
98543
				return navigator.languages &&
98544
					! _empty( d ) &&
98545
					typeof d === 'string' &&
98546
					d.indexOf('<') !== -1 &&
98547
					typeof d === 'string' && d.match(/[^\x00-\x7F]/);
98548
			}
98549
		},
98550
		order: {
98551
			asc: __diacriticHtmlSort,
98552
			desc: function (a, b) {
98553
				return __diacriticHtmlSort(a, b) * -1;
98554
			}
98555
		},
98556
		search: _filterString(true, true)
98557
	});
11395
	
98558
	
11396
	/*
11397
	 * Developer note - See note in model.defaults.js about the use of Hungarian
11398
	 * notation and camel case.
11399
	 */
11400
	
98559
	
11401
	/**
98560
	DataTable.type('date', {
11402
	 * Column options that can be given to DataTables at initialisation time.
98561
		className: 'dt-type-date',
11403
	 *  @namespace
98562
		detect: {
11404
	 */
98563
			allOf: function ( d ) {
11405
	DataTable.defaults.column = {
98564
				// V8 tries _very_ hard to make a string passed into `Date.parse()`
11406
		/**
98565
				// valid, so we need to use a regex to restrict date formats. Use a
11407
		 * Define which column(s) an order will occur on for this column. This
98566
				// plug-in for anything other than ISO8601 style strings
11408
		 * allows a column's ordering to take multiple columns into account when
98567
				if ( d && !(d instanceof Date) && ! _re_date.test(d) ) {
11409
		 * doing a sort or use the data from a different column. For example first
98568
					return null;
11410
		 * name / last name columns make sense to do a multi-column sort over the
98569
				}
11411
		 * two columns.
98570
				var parsed = Date.parse(d);
11412
		 */
98571
				return (parsed !== null && !isNaN(parsed)) || _empty(d);
11413
		"aDataSort": null,
98572
			},
11414
		"iDataSort": -1,
98573
			oneOf: function ( d ) {
98574
				// At least one entry must be a date or a string with a date
98575
				return (d instanceof Date) || (typeof d === 'string' && _re_date.test(d));
98576
			}
98577
		},
98578
		order: {
98579
			pre: function ( d ) {
98580
				var ts = Date.parse( d );
98581
				return isNaN(ts) ? -Infinity : ts;
98582
			}
98583
		}
98584
	});
11415
	
98585
	
11416
		ariaTitle: '',
11417
	
98586
	
98587
	DataTable.type('html-num-fmt', {
98588
		className: 'dt-type-numeric',
98589
		detect: {
98590
			allOf: function ( d, settings ) {
98591
				var decimal = settings.oLanguage.sDecimal;
98592
				return _htmlNumeric( d, decimal, true, false );
98593
			},
98594
			oneOf: function (d, settings) {
98595
				// At least one data point must contain a numeric value
98596
				var decimal = settings.oLanguage.sDecimal;
98597
				return _htmlNumeric( d, decimal, true, false );
98598
			}
98599
		},
98600
		order: {
98601
			pre: function ( d, s ) {
98602
				var dp = s.oLanguage.sDecimal;
98603
				return __numericReplace( d, dp, _re_html, _re_formatted_numeric );
98604
			}
98605
		},
98606
		search: _filterString(true, true)
98607
	});
11418
	
98608
	
11419
		/**
11420
		 * You can control the default ordering direction, and even alter the
11421
		 * behaviour of the sort handler (i.e. only allow ascending ordering etc)
11422
		 * using this parameter.
11423
		 */
11424
		"asSorting": [ 'asc', 'desc', '' ],
11425
	
98609
	
98610
	DataTable.type('html-num', {
98611
		className: 'dt-type-numeric',
98612
		detect: {
98613
			allOf: function ( d, settings ) {
98614
				var decimal = settings.oLanguage.sDecimal;
98615
				return _htmlNumeric( d, decimal, false, true );
98616
			},
98617
			oneOf: function (d, settings) {
98618
				// At least one data point must contain a numeric value
98619
				var decimal = settings.oLanguage.sDecimal;
98620
				return _htmlNumeric( d, decimal, false, false );
98621
			}
98622
		},
98623
		order: {
98624
			pre: function ( d, s ) {
98625
				var dp = s.oLanguage.sDecimal;
98626
				return __numericReplace( d, dp, _re_html );
98627
			}
98628
		},
98629
		search: _filterString(true, true)
98630
	});
11426
	
98631
	
11427
		/**
11428
		 * Enable or disable filtering on the data in this column.
11429
		 */
11430
		"bSearchable": true,
11431
	
98632
	
98633
	DataTable.type('num-fmt', {
98634
		className: 'dt-type-numeric',
98635
		detect: {
98636
			allOf: function ( d, settings ) {
98637
				var decimal = settings.oLanguage.sDecimal;
98638
				return _isNumber( d, decimal, true, true );
98639
			},
98640
			oneOf: function (d, settings) {
98641
				// At least one data point must contain a numeric value
98642
				var decimal = settings.oLanguage.sDecimal;
98643
				return _isNumber( d, decimal, true, false );
98644
			}
98645
		},
98646
		order: {
98647
			pre: function ( d, s ) {
98648
				var dp = s.oLanguage.sDecimal;
98649
				return __numericReplace( d, dp, _re_formatted_numeric );
98650
			}
98651
		}
98652
	});
11432
	
98653
	
11433
		/**
98654
11434
		 * Enable or disable ordering on this column.
98655
	DataTable.type('num', {
11435
		 */
98656
		className: 'dt-type-numeric',
11436
		"bSortable": true,
98657
		detect: {
98658
			allOf: function ( d, settings ) {
98659
				var decimal = settings.oLanguage.sDecimal;
98660
				return _isNumber( d, decimal, false, true );
98661
			},
98662
			oneOf: function (d, settings) {
98663
				// At least one data point must contain a numeric value
98664
				var decimal = settings.oLanguage.sDecimal;
98665
				return _isNumber( d, decimal, false, false );
98666
			}
98667
		},
98668
		order: {
98669
			pre: function (d, s) {
98670
				var dp = s.oLanguage.sDecimal;
98671
				return __numericReplace( d, dp );
98672
			}
98673
		}
98674
	});
11437
	
98675
	
11438
	
98676
	
11439
		/**
11440
		 * Enable or disable the display of this column.
11441
		 */
11442
		"bVisible": true,
11443
	
98677
	
11444
	
98678
	
11445
		/**
98679
	var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
11446
		 * Developer definable function that is called whenever a cell is created (Ajax source,
98680
		if ( d !== 0 && (!d || d === '-') ) {
11447
		 * etc) or processed for input (DOM source). This can be used as a compliment to mRender
98681
			return -Infinity;
11448
		 * allowing you to modify the DOM element (add background colour for example) when the
98682
		}
11449
		 * element is available.
98683
11450
		 */
98684
		var type = typeof d;
11451
		"fnCreatedCell": null,
11452
	
98685
	
98686
		if (type === 'number' || type === 'bigint') {
98687
			return d;
98688
		}
11453
	
98689
	
11454
		/**
98690
		// If a decimal place other than `.` is used, it needs to be given to the
11455
		 * This property can be used to read data from any data source property,
98691
		// function so we can detect it and replace with a `.` which is the only
11456
		 * including deeply nested objects / properties. `data` can be given in a
98692
		// decimal place JavaScript recognises - it is not locale aware.
11457
		 * number of different ways which effect its behaviour:
98693
		if ( decimalPlace ) {
11458
		 *
98694
			d = _numToDecimal( d, decimalPlace );
11459
		 * * `integer` - treated as an array index for the data source. This is the
98695
		}
11460
		 *   default that DataTables uses (incrementally increased for each column).
11461
		 * * `string` - read an object property from the data source. There are
11462
		 *   three 'special' options that can be used in the string to alter how
11463
		 *   DataTables reads the data from the source object:
11464
		 *    * `.` - Dotted JavaScript notation. Just as you use a `.` in
11465
		 *      JavaScript to read from nested objects, so to can the options
11466
		 *      specified in `data`. For example: `browser.version` or
11467
		 *      `browser.name`. If your object parameter name contains a period, use
11468
		 *      `\\` to escape it - i.e. `first\\.name`.
11469
		 *    * `[]` - Array notation. DataTables can automatically combine data
11470
		 *      from and array source, joining the data with the characters provided
11471
		 *      between the two brackets. For example: `name[, ]` would provide a
11472
		 *      comma-space separated list from the source array. If no characters
11473
		 *      are provided between the brackets, the original array source is
11474
		 *      returned.
11475
		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
11476
		 *      execute a function of the name given. For example: `browser()` for a
11477
		 *      simple function on the data source, `browser.version()` for a
11478
		 *      function in a nested property or even `browser().version` to get an
11479
		 *      object property if the function called returns an object. Note that
11480
		 *      function notation is recommended for use in `render` rather than
11481
		 *      `data` as it is much simpler to use as a renderer.
11482
		 * * `null` - use the original data source for the row rather than plucking
11483
		 *   data directly from it. This action has effects on two other
11484
		 *   initialisation options:
11485
		 *    * `defaultContent` - When null is given as the `data` option and
11486
		 *      `defaultContent` is specified for the column, the value defined by
11487
		 *      `defaultContent` will be used for the cell.
11488
		 *    * `render` - When null is used for the `data` option and the `render`
11489
		 *      option is specified for the column, the whole data source for the
11490
		 *      row is used for the renderer.
11491
		 * * `function` - the function given will be executed whenever DataTables
11492
		 *   needs to set or get the data for a cell in the column. The function
11493
		 *   takes three parameters:
11494
		 *    * Parameters:
11495
		 *      * `{array|object}` The data source for the row
11496
		 *      * `{string}` The type call data requested - this will be 'set' when
11497
		 *        setting data or 'filter', 'display', 'type', 'sort' or undefined
11498
		 *        when gathering data. Note that when `undefined` is given for the
11499
		 *        type DataTables expects to get the raw data for the object back<
11500
		 *      * `{*}` Data to set when the second parameter is 'set'.
11501
		 *    * Return:
11502
		 *      * The return value from the function is not required when 'set' is
11503
		 *        the type of call, but otherwise the return is what will be used
11504
		 *        for the data requested.
11505
		 *
11506
		 * Note that `data` is a getter and setter option. If you just require
11507
		 * formatting of data for output, you will likely want to use `render` which
11508
		 * is simply a getter and thus simpler to use.
11509
		 *
11510
		 * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The
11511
		 * name change reflects the flexibility of this property and is consistent
11512
		 * with the naming of mRender. If 'mDataProp' is given, then it will still
11513
		 * be used by DataTables, as it automatically maps the old name to the new
11514
		 * if required.
11515
		 */
11516
		"mData": null,
11517
	
98696
	
98697
		if ( d.replace ) {
98698
			if ( re1 ) {
98699
				d = d.replace( re1, '' );
98700
			}
11518
	
98701
	
11519
		/**
98702
			if ( re2 ) {
11520
		 * This property is the rendering partner to `data` and it is suggested that
98703
				d = d.replace( re2, '' );
11521
		 * when you want to manipulate data for display (including filtering,
98704
			}
11522
		 * sorting etc) without altering the underlying data for the table, use this
98705
		}
11523
		 * property. `render` can be considered to be the read only companion to
11524
		 * `data` which is read / write (then as such more complex). Like `data`
11525
		 * this option can be given in a number of different ways to effect its
11526
		 * behaviour:
11527
		 *
11528
		 * * `integer` - treated as an array index for the data source. This is the
11529
		 *   default that DataTables uses (incrementally increased for each column).
11530
		 * * `string` - read an object property from the data source. There are
11531
		 *   three 'special' options that can be used in the string to alter how
11532
		 *   DataTables reads the data from the source object:
11533
		 *    * `.` - Dotted JavaScript notation. Just as you use a `.` in
11534
		 *      JavaScript to read from nested objects, so to can the options
11535
		 *      specified in `data`. For example: `browser.version` or
11536
		 *      `browser.name`. If your object parameter name contains a period, use
11537
		 *      `\\` to escape it - i.e. `first\\.name`.
11538
		 *    * `[]` - Array notation. DataTables can automatically combine data
11539
		 *      from and array source, joining the data with the characters provided
11540
		 *      between the two brackets. For example: `name[, ]` would provide a
11541
		 *      comma-space separated list from the source array. If no characters
11542
		 *      are provided between the brackets, the original array source is
11543
		 *      returned.
11544
		 *    * `()` - Function notation. Adding `()` to the end of a parameter will
11545
		 *      execute a function of the name given. For example: `browser()` for a
11546
		 *      simple function on the data source, `browser.version()` for a
11547
		 *      function in a nested property or even `browser().version` to get an
11548
		 *      object property if the function called returns an object.
11549
		 * * `object` - use different data for the different data types requested by
11550
		 *   DataTables ('filter', 'display', 'type' or 'sort'). The property names
11551
		 *   of the object is the data type the property refers to and the value can
11552
		 *   defined using an integer, string or function using the same rules as
11553
		 *   `render` normally does. Note that an `_` option _must_ be specified.
11554
		 *   This is the default value to use if you haven't specified a value for
11555
		 *   the data type requested by DataTables.
11556
		 * * `function` - the function given will be executed whenever DataTables
11557
		 *   needs to set or get the data for a cell in the column. The function
11558
		 *   takes three parameters:
11559
		 *    * Parameters:
11560
		 *      * {array|object} The data source for the row (based on `data`)
11561
		 *      * {string} The type call data requested - this will be 'filter',
11562
		 *        'display', 'type' or 'sort'.
11563
		 *      * {array|object} The full data source for the row (not based on
11564
		 *        `data`)
11565
		 *    * Return:
11566
		 *      * The return value from the function is what will be used for the
11567
		 *        data requested.
11568
		 */
11569
		"mRender": null,
11570
	
98706
	
98707
		return d * 1;
98708
	};
11571
	
98709
	
11572
		/**
11573
		 * Change the cell type created for the column - either TD cells or TH cells. This
11574
		 * can be useful as TH cells have semantic meaning in the table body, allowing them
11575
		 * to act as a header for a row (you may wish to add scope='row' to the TH elements).
11576
		 */
11577
		"sCellType": "td",
11578
	
98710
	
98711
	$.extend( true, DataTable.ext.renderer, {
98712
		footer: {
98713
			_: function ( settings, cell, classes ) {
98714
				cell.addClass(classes.tfoot.cell);
98715
			}
98716
		},
11579
	
98717
	
11580
		/**
98718
		header: {
11581
		 * Class to give to each cell in this column.
98719
			_: function ( settings, cell, classes ) {
11582
		 */
98720
				cell.addClass(classes.thead.cell);
11583
		"sClass": "",
11584
	
98721
	
11585
		/**
98722
				if (! settings.oFeatures.bSort) {
11586
		 * When DataTables calculates the column widths to assign to each column,
98723
					cell.addClass(classes.order.none);
11587
		 * it finds the longest string in each column and then constructs a
98724
				}
11588
		 * temporary table and reads the widths from that. The problem with this
11589
		 * is that "mmm" is much wider then "iiii", but the latter is a longer
11590
		 * string - thus the calculation can go wrong (doing it properly and putting
11591
		 * it into an DOM object and measuring that is horribly(!) slow). Thus as
11592
		 * a "work around" we provide this option. It will append its value to the
11593
		 * text that is found to be the longest string for the column - i.e. padding.
11594
		 * Generally you shouldn't need this!
11595
		 */
11596
		"sContentPadding": "",
11597
	
98725
	
98726
				var titleRow = settings.titleRow;
98727
				var headerRows = cell.closest('thead').find('tr');
98728
				var rowIdx = cell.parent().index();
11598
	
98729
	
11599
		/**
98730
				// Conditions to not apply the ordering icons
11600
		 * Allows a default value to be given for a column's data, and will be used
98731
				if (
11601
		 * whenever a null data source is encountered (this can be because `data`
98732
					// Cells and rows which have the attribute to disable the icons
11602
		 * is set to null, or because the data source itself is null).
98733
					cell.attr('data-dt-order') === 'disable' ||
11603
		 */
98734
					cell.parent().attr('data-dt-order') === 'disable' ||
11604
		"sDefaultContent": null,
11605
	
98735
	
98736
					// titleRow support, for defining a specific row in the header
98737
					(titleRow === true && rowIdx !== 0) ||
98738
					(titleRow === false && rowIdx !== headerRows.length - 1) ||
98739
					(typeof titleRow === 'number' && rowIdx !== titleRow)
98740
				) {
98741
					return;
98742
				}
11606
	
98743
	
11607
		/**
98744
				// No additional mark-up required
11608
		 * This parameter is only used in DataTables' server-side processing. It can
98745
				// Attach a sort listener to update on sort - note that using the
11609
		 * be exceptionally useful to know what columns are being displayed on the
98746
				// `DT` namespace will allow the event to be removed automatically
11610
		 * client side, and to map these to database fields. When defined, the names
98747
				// on destroy, while the `dt` namespaced event is the one we are
11611
		 * also allow DataTables to reorder information from the server if it comes
98748
				// listening for
11612
		 * back in an unexpected order (i.e. if you switch your columns around on the
98749
				$(settings.nTable).on( 'order.dt.DT column-visibility.dt.DT', function ( e, ctx, column ) {
11613
		 * client-side, your server-side code does not also need updating).
98750
					if ( settings !== ctx ) { // need to check if this is the host
11614
		 */
98751
						return;               // table, not a nested one
11615
		"sName": "",
98752
					}
11616
	
98753
	
98754
					var sorting = ctx.sortDetails;
11617
	
98755
	
11618
		/**
98756
					if (! sorting) {
11619
		 * Defines a data source type for the ordering which can be used to read
98757
						return;
11620
		 * real-time information from the table (updating the internally cached
98758
					}
11621
		 * version) prior to ordering. This allows ordering to occur on user
11622
		 * editable elements such as form inputs.
11623
		 */
11624
		"sSortDataType": "std",
11625
	
98759
	
98760
					var orderedColumns = _pluck(sorting, 'col');
11626
	
98761
	
11627
		/**
98762
					// This handler is only needed on column visibility if the column is part of the
11628
		 * The title of this column.
98763
					// ordering. If it isn't, then we can bail out to save performance. It could be a
11629
		 */
98764
					// separate event handler, but this is a balance between code reuse / size and performance
11630
		"sTitle": null,
98765
					// console.log(e, e.name, column, orderedColumns, orderedColumns.includes(column))
98766
					if (e.type === 'column-visibility' && ! orderedColumns.includes(column)) {
98767
						return;
98768
					}
11631
	
98769
	
98770
					var i;
98771
					var orderClasses = classes.order;
98772
					var columns = ctx.api.columns( cell );
98773
					var col = settings.aoColumns[columns.flatten()[0]];
98774
					var orderable = columns.orderable().includes(true);
98775
					var ariaType = '';
98776
					var indexes = columns.indexes();
98777
					var sortDirs = columns.orderable(true).flatten();
98778
					var tabIndex = settings.iTabIndex;
98779
					var canOrder = ctx.orderHandler && orderable;
11632
	
98780
	
11633
		/**
98781
					cell
11634
		 * The type allows you to specify how the data for this column will be
98782
						.removeClass(
11635
		 * ordered. Four types (string, numeric, date and html (which will strip
98783
							orderClasses.isAsc +' '+
11636
		 * HTML tags before ordering)) are currently available. Note that only date
98784
							orderClasses.isDesc
11637
		 * formats understood by JavaScript's Date() object will be accepted as type
98785
						)
11638
		 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string',
98786
						.toggleClass( orderClasses.none, ! orderable )
11639
		 * 'numeric', 'date' or 'html' (by default). Further types can be adding
98787
						.toggleClass( orderClasses.canAsc, canOrder && sortDirs.includes('asc') )
11640
		 * through plug-ins.
98788
						.toggleClass( orderClasses.canDesc, canOrder && sortDirs.includes('desc') );
11641
		 */
98789
	
11642
		"sType": null,
98790
					// Determine if all of the columns that this cell covers are included in the
98791
					// current ordering
98792
					var isOrdering = true;
98793
98794
					for (i=0; i<indexes.length; i++) {
98795
						if (! orderedColumns.includes(indexes[i])) {
98796
							isOrdering = false;
98797
						}
98798
					}
11643
	
98799
	
98800
					if ( isOrdering ) {
98801
						// Get the ordering direction for the columns under this cell
98802
						// Note that it is possible for a cell to be asc and desc sorting
98803
						// (column spanning cells)
98804
						var orderDirs = columns.order();
11644
	
98805
	
11645
		/**
98806
						cell.addClass(
11646
		 * Defining the width of the column, this parameter may take any CSS value
98807
							orderDirs.includes('asc') ? orderClasses.isAsc : '' +
11647
		 * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
98808
							orderDirs.includes('desc') ? orderClasses.isDesc : ''
11648
		 * been given a specific width through this interface ensuring that the table
98809
						);
11649
		 * remains readable.
98810
					}
11650
		 */
11651
		"sWidth": null
11652
	};
11653
	
98811
	
11654
	_fnHungarianMap( DataTable.defaults.column );
98812
					// Find the first visible column that has ordering applied to it - it get's
98813
					// the aria information, as the ARIA spec says that only one column should
98814
					// be marked with aria-sort
98815
					var firstVis = -1; // column index
98816
	
98817
					for (i=0; i<orderedColumns.length; i++) {
98818
						if (settings.aoColumns[orderedColumns[i]].bVisible) {
98819
							firstVis = orderedColumns[i];
98820
							break;
98821
						}
98822
					}
11655
	
98823
	
98824
					if (indexes[0] == firstVis) {
98825
						var firstSort = sorting[0];
98826
						var sortOrder = col.asSorting;
11656
	
98827
	
98828
						cell.attr('aria-sort', firstSort.dir === 'asc' ? 'ascending' : 'descending');
11657
	
98829
	
11658
	/**
98830
						// Determine if the next click will remove sorting or change the sort
11659
	 * DataTables settings object - this holds all the information needed for a
98831
						ariaType = ! sortOrder[firstSort.index + 1] ? 'Remove' : 'Reverse';
11660
	 * given table, including configuration, data and current application of the
98832
					}
11661
	 * table options. DataTables does not have a single instance for each DataTable
98833
					else {
11662
	 * with the settings attached to that instance, but rather instances of the
98834
						cell.removeAttr('aria-sort');
11663
	 * DataTable "class" are created on-the-fly as needed (typically by a
98835
					}
11664
	 * $().dataTable() call) and the settings object is then applied to that
11665
	 * instance.
11666
	 *
11667
	 * Note that this object is related to {@link DataTable.defaults} but this
11668
	 * one is the internal data store for DataTables's cache of columns. It should
11669
	 * NOT be manipulated outside of DataTables. Any configuration should be done
11670
	 * through the initialisation options.
11671
	 */
11672
	DataTable.models.oSettings = {
11673
		/**
11674
		 * Primary features of DataTables and their enablement state.
11675
		 */
11676
		"oFeatures": {
11677
	
98836
	
11678
			/**
98837
					// Make the headers tab-able for keyboard navigation
11679
			 * Flag to say if DataTables should automatically try to calculate the
98838
					if (orderable) {
11680
			 * optimum table and columns widths (true) or not (false).
98839
						var orderSpan = cell.find('.dt-column-order');
11681
			 * Note that this parameter will be set by the initialisation routine. To
98840
11682
			 * set a default use {@link DataTable.defaults}.
98841
						orderSpan
11683
			 */
98842
							.attr('role', 'button')
11684
			"bAutoWidth": null,
98843
							.attr('aria-label', orderable
98844
								? col.ariaTitle + ctx.api.i18n('oAria.orderable' + ariaType)
98845
								: col.ariaTitle
98846
							);
11685
	
98847
	
11686
			/**
98848
						if (tabIndex !== -1) {
11687
			 * Delay the creation of TR and TD elements until they are actually
98849
							orderSpan.attr('tabindex', tabIndex);
11688
			 * needed by a driven page draw. This can give a significant speed
98850
						}
11689
			 * increase for Ajax source and JavaScript source data, but makes no
98851
					}
11690
			 * difference at all for DOM and server-side processing tables.
98852
				} );
11691
			 * Note that this parameter will be set by the initialisation routine. To
98853
			}
11692
			 * set a default use {@link DataTable.defaults}.
98854
		},
11693
			 */
11694
			"bDeferRender": null,
11695
	
98855
	
11696
			/**
98856
		layout: {
11697
			 * Enable filtering on the table or not. Note that if this is disabled
98857
			_: function ( settings, container, items ) {
11698
			 * then there is no filtering at all on the table, including fnFilter.
98858
				var classes = settings.oClasses.layout;
11699
			 * To just remove the filtering input use sDom and remove the 'f' option.
98859
				var row = $('<div/>')
11700
			 * Note that this parameter will be set by the initialisation routine. To
98860
					.attr('id', items.id || null)
11701
			 * set a default use {@link DataTable.defaults}.
98861
					.addClass(items.className || classes.row)
11702
			 */
98862
					.appendTo( container );
11703
			"bFilter": null,
11704
	
98863
	
11705
			/**
98864
				DataTable.ext.renderer.layout._forLayoutRow(items, function (key, val) {
11706
			 * Used only for compatibility with DT1
98865
					if (key === 'id' || key === 'className') {
11707
			 * @deprecated
98866
						return;
11708
			 */
98867
					}
11709
			"bInfo": true,
11710
	
98868
	
11711
			/**
98869
					var klass = '';
11712
			 * Used only for compatibility with DT1
11713
			 * @deprecated
11714
			 */
11715
			"bLengthChange": true,
11716
	
98870
	
11717
			/**
98871
					if (val.table) {
11718
			 * Pagination enabled or not. Note that if this is disabled then length
98872
						row.addClass(classes.tableRow);
11719
			 * changing must also be disabled.
98873
						klass += classes.tableCell + ' ';
11720
			 * Note that this parameter will be set by the initialisation routine. To
98874
					}
11721
			 * set a default use {@link DataTable.defaults}.
11722
			 */
11723
			"bPaginate": null,
11724
	
98875
	
11725
			/**
98876
					if (key === 'start') {
11726
			 * Processing indicator enable flag whenever DataTables is enacting a
98877
						klass += classes.start;
11727
			 * user request - typically an Ajax request for server-side processing.
98878
					}
11728
			 * Note that this parameter will be set by the initialisation routine. To
98879
					else if (key === 'end') {
11729
			 * set a default use {@link DataTable.defaults}.
98880
						klass += classes.end;
11730
			 */
98881
					}
11731
			"bProcessing": null,
98882
					else {
98883
						klass += classes.full;
98884
					}
11732
	
98885
	
11733
			/**
98886
					$('<div/>')
11734
			 * Server-side processing enabled flag - when enabled DataTables will
98887
						.attr({
11735
			 * get all data from the server for every draw - there is no filtering,
98888
							id: val.id || null,
11736
			 * sorting or paging done on the client-side.
98889
							"class": val.className
11737
			 * Note that this parameter will be set by the initialisation routine. To
98890
								? val.className
11738
			 * set a default use {@link DataTable.defaults}.
98891
								: classes.cell + ' ' + klass
11739
			 */
98892
						})
11740
			"bServerSide": null,
98893
						.append( val.contents )
98894
						.appendTo( row );
98895
				});
98896
			},
11741
	
98897
	
11742
			/**
98898
			// Shared for use by the styling frameworks
11743
			 * Sorting enablement flag.
98899
			_forLayoutRow: function (items, fn) {
11744
			 * Note that this parameter will be set by the initialisation routine. To
98900
				// As we are inserting dom elements, we need start / end in a
11745
			 * set a default use {@link DataTable.defaults}.
98901
				// specific order, this function is used for sorting the layout
11746
			 */
98902
				// keys.
11747
			"bSort": null,
98903
				var layoutEnum = function (x) {
98904
					switch (x) {
98905
						case '': return 0;
98906
						case 'start': return 1;
98907
						case 'end': return 2;
98908
						default: return 3;
98909
					}
98910
				};
11748
	
98911
	
11749
			/**
98912
				Object
11750
			 * Multi-column sorting
98913
					.keys(items)
11751
			 * Note that this parameter will be set by the initialisation routine. To
98914
					.sort(function (a, b) {
11752
			 * set a default use {@link DataTable.defaults}.
98915
						return layoutEnum(a) - layoutEnum(b);
11753
			 */
98916
					})
11754
			"bSortMulti": null,
98917
					.forEach(function (key) {
98918
						fn(key, items[key]);
98919
					});
98920
			}
98921
		}
98922
	} );
11755
	
98923
	
11756
			/**
11757
			 * Apply a class to the columns which are being sorted to provide a
11758
			 * visual highlight or not. This can slow things down when enabled since
11759
			 * there is a lot of DOM interaction.
11760
			 * Note that this parameter will be set by the initialisation routine. To
11761
			 * set a default use {@link DataTable.defaults}.
11762
			 */
11763
			"bSortClasses": null,
11764
	
98924
	
11765
			/**
98925
	DataTable.feature = {};
11766
			 * State saving enablement flag.
11767
			 * Note that this parameter will be set by the initialisation routine. To
11768
			 * set a default use {@link DataTable.defaults}.
11769
			 */
11770
			"bStateSave": null
11771
		},
11772
	
98926
	
98927
	// Third parameter is internal only!
98928
	DataTable.feature.register = function ( name, cb, legacy ) {
98929
		DataTable.ext.features[ name ] = cb;
11773
	
98930
	
11774
		/**
98931
		if (legacy) {
11775
		 * Scrolling settings for a table.
98932
			_ext.feature.push({
11776
		 */
98933
				cFeature: legacy,
11777
		"oScroll": {
98934
				fnInit: cb
11778
			/**
98935
			});
11779
			 * When the table is shorter in height than sScrollY, collapse the
98936
		}
11780
			 * table container down to the height of the table (when true).
98937
	};
11781
			 * Note that this parameter will be set by the initialisation routine. To
11782
			 * set a default use {@link DataTable.defaults}.
11783
			 */
11784
			"bCollapse": null,
11785
	
98938
	
11786
			/**
98939
	function _divProp(el, prop, val) {
11787
			 * Width of the scrollbar for the web-browser's platform. Calculated
98940
		if (val) {
11788
			 * during table initialisation.
98941
			el[prop] = val;
11789
			 */
98942
		}
11790
			"iBarWidth": 0,
98943
	}
11791
	
98944
	
11792
			/**
98945
	DataTable.feature.register( 'div', function ( settings, opts ) {
11793
			 * Viewport width for horizontal scrolling. Horizontal scrolling is
98946
		var n = $('<div>')[0];
11794
			 * disabled if an empty string.
11795
			 * Note that this parameter will be set by the initialisation routine. To
11796
			 * set a default use {@link DataTable.defaults}.
11797
			 */
11798
			"sX": null,
11799
	
98947
	
11800
			/**
98948
		if (opts) {
11801
			 * Width to expand the table to when using x-scrolling. Typically you
98949
			_divProp(n, 'className', opts.className);
11802
			 * should not need to use this.
98950
			_divProp(n, 'id', opts.id);
11803
			 * Note that this parameter will be set by the initialisation routine. To
98951
			_divProp(n, 'innerHTML', opts.html);
11804
			 * set a default use {@link DataTable.defaults}.
98952
			_divProp(n, 'textContent', opts.text);
11805
			 *  @deprecated
98953
		}
11806
			 */
11807
			"sXInner": null,
11808
	
98954
	
11809
			/**
98955
		return n;
11810
			 * Viewport height for vertical scrolling. Vertical scrolling is disabled
98956
	} );
11811
			 * if an empty string.
11812
			 * Note that this parameter will be set by the initialisation routine. To
11813
			 * set a default use {@link DataTable.defaults}.
11814
			 */
11815
			"sY": null
11816
		},
11817
	
98957
	
11818
		/**
98958
	DataTable.feature.register( 'info', function ( settings, opts ) {
11819
		 * Language information for the table.
98959
		// For compatibility with the legacy `info` top level option
11820
		 */
98960
		if (! settings.oFeatures.bInfo) {
11821
		"oLanguage": {
98961
			return null;
11822
			/**
98962
		}
11823
			 * Information callback function. See
98963
	
11824
			 * {@link DataTable.defaults.fnInfoCallback}
98964
		var
11825
			 */
98965
			lang  = settings.oLanguage,
11826
			"fnInfoCallback": null
98966
			tid = settings.sTableId,
11827
		},
98967
			n = $('<div/>', {
98968
				'class': settings.oClasses.info.container,
98969
			} );
98970
	
98971
		opts = $.extend({
98972
			callback: lang.fnInfoCallback,
98973
			empty: lang.sInfoEmpty,
98974
			postfix: lang.sInfoPostFix,
98975
			search: lang.sInfoFiltered,
98976
			text: lang.sInfo,
98977
		}, opts);
11828
	
98978
	
11829
		/**
11830
		 * Browser support parameters
11831
		 */
11832
		"oBrowser": {
11833
			/**
11834
			 * Determine if the vertical scrollbar is on the right or left of the
11835
			 * scrolling container - needed for rtl language layout, although not
11836
			 * all browsers move the scrollbar (Safari).
11837
			 */
11838
			"bScrollbarLeft": false,
11839
	
98979
	
11840
			/**
98980
		// Update display on each draw
11841
			 * Browser scrollbar width
98981
		settings.aoDrawCallback.push(function (s) {
11842
			 */
98982
			_fnUpdateInfo(s, opts, n);
11843
			"barWidth": 0
98983
		});
11844
		},
11845
	
98984
	
98985
		// For the first info display in the table, we add a callback and aria information.
98986
		if (! settings._infoEl) {
98987
			n.attr({
98988
				'aria-live': 'polite',
98989
				id: tid+'_info',
98990
				role: 'status'
98991
			});
11846
	
98992
	
11847
		"ajax": null,
98993
			// Table is described by our info div
98994
			$(settings.nTable).attr( 'aria-describedby', tid+'_info' );
11848
	
98995
	
98996
			settings._infoEl = n;
98997
		}
11849
	
98998
	
11850
		/**
98999
		return n;
11851
		 * Array referencing the nodes which are used for the features. The
99000
	}, 'i' );
11852
		 * parameters of this object match what is allowed by sDom - i.e.
11853
		 *   <ul>
11854
		 *     <li>'l' - Length changing</li>
11855
		 *     <li>'f' - Filtering input</li>
11856
		 *     <li>'t' - The table!</li>
11857
		 *     <li>'i' - Information</li>
11858
		 *     <li>'p' - Pagination</li>
11859
		 *     <li>'r' - pRocessing</li>
11860
		 *   </ul>
11861
		 */
11862
		"aanFeatures": [],
11863
	
99001
	
11864
		/**
99002
	/**
11865
		 * Store data information - see {@link DataTable.models.oRow} for detailed
99003
	 * Update the information elements in the display
11866
		 * information.
99004
	 *  @param {object} settings dataTables settings object
11867
		 */
99005
	 *  @memberof DataTable#oApi
11868
		"aoData": [],
99006
	 */
99007
	function _fnUpdateInfo ( settings, opts, node )
99008
	{
99009
		var
99010
			start = settings._iDisplayStart+1,
99011
			end   = settings.fnDisplayEnd(),
99012
			max   = settings.fnRecordsTotal(),
99013
			total = settings.fnRecordsDisplay(),
99014
			out   = total
99015
				? opts.text
99016
				: opts.empty;
11869
	
99017
	
11870
		/**
99018
		if ( total !== max ) {
11871
		 * Array of indexes which are in the current display (after filtering etc)
99019
			// Record set after filtering
11872
		 */
99020
			out += ' ' + opts.search;
11873
		"aiDisplay": [],
99021
		}
11874
	
99022
	
11875
		/**
99023
		// Convert the macros
11876
		 * Array of indexes for display - no filtering
99024
		out += opts.postfix;
11877
		 */
99025
		out = _fnMacros( settings, out );
11878
		"aiDisplayMaster": [],
11879
	
99026
	
11880
		/**
99027
		if ( opts.callback ) {
11881
		 * Map of row ids to data indexes
99028
			out = opts.callback.call( settings.oInstance,
11882
		 */
99029
				settings, start, end, max, total, out
11883
		"aIds": {},
99030
			);
99031
		}
11884
	
99032
	
11885
		/**
99033
		node.html( out );
11886
		 * Store information about each column that is in use
11887
		 */
11888
		"aoColumns": [],
11889
	
99034
	
11890
		/**
99035
		_fnCallbackFire(settings, null, 'info', [settings, node[0], out]);
11891
		 * Store information about the table's header
99036
	}
11892
		 */
11893
		"aoHeader": [],
11894
	
99037
	
11895
		/**
99038
	var __searchCounter = 0;
11896
		 * Store information about the table's footer
11897
		 */
11898
		"aoFooter": [],
11899
	
99039
	
11900
		/**
99040
	// opts
11901
		 * Store the applied global search information in case we want to force a
99041
	// - text
11902
		 * research or compare the old search to a new one.
99042
	// - placeholder
11903
		 * Note that this parameter will be set by the initialisation routine. To
99043
	DataTable.feature.register( 'search', function ( settings, opts ) {
11904
		 * set a default use {@link DataTable.defaults}.
99044
		// Don't show the input if filtering isn't available on the table
11905
		 */
99045
		if (! settings.oFeatures.bFilter) {
11906
		"oPreviousSearch": {},
99046
			return null;
99047
		}
11907
	
99048
	
11908
		/**
99049
		var classes = settings.oClasses.search;
11909
		 * Store for named searches
99050
		var tableId = settings.sTableId;
11910
		 */
99051
		var language = settings.oLanguage;
11911
		searchFixed: {},
99052
		var previousSearch = settings.oPreviousSearch;
99053
		var input = '<input type="search" class="'+classes.input+'"/>';
11912
	
99054
	
11913
		/**
99055
		opts = $.extend({
11914
		 * Store the applied search for each column - see
99056
			placeholder: language.sSearchPlaceholder,
11915
		 * {@link DataTable.models.oSearch} for the format that is used for the
99057
			processing: false,
11916
		 * filtering information for each column.
99058
			text: language.sSearch
11917
		 */
99059
		}, opts);
11918
		"aoPreSearchCols": [],
11919
	
99060
	
11920
		/**
99061
		// The _INPUT_ is optional - is appended if not present
11921
		 * Sorting that is applied to the table. Note that the inner arrays are
99062
		if (opts.text.indexOf('_INPUT_') === -1) {
11922
		 * used in the following manner:
99063
			opts.text += '_INPUT_';
11923
		 * <ul>
99064
		}
11924
		 *   <li>Index 0 - column number</li>
11925
		 *   <li>Index 1 - current sorting direction</li>
11926
		 * </ul>
11927
		 * Note that this parameter will be set by the initialisation routine. To
11928
		 * set a default use {@link DataTable.defaults}.
11929
		 */
11930
		"aaSorting": null,
11931
	
99065
	
11932
		/**
99066
		opts.text = _fnMacros(settings, opts.text);
11933
		 * Sorting that is always applied to the table (i.e. prefixed in front of
11934
		 * aaSorting).
11935
		 * Note that this parameter will be set by the initialisation routine. To
11936
		 * set a default use {@link DataTable.defaults}.
11937
		 */
11938
		"aaSortingFixed": [],
11939
	
99067
	
11940
		/**
99068
		// We can put the <input> outside of the label if it is at the start or end
11941
		 * If restoring a table - we should restore its width
99069
		// which helps improve accessability (not all screen readers like implicit
11942
		 */
99070
		// for elements).
11943
		"sDestroyWidth": 0,
99071
		var end = opts.text.match(/_INPUT_$/);
99072
		var start = opts.text.match(/^_INPUT_/);
99073
		var removed = opts.text.replace(/_INPUT_/, '');
99074
		var str = '<label>' + opts.text + '</label>';
11944
	
99075
	
11945
		/**
99076
		if (start) {
11946
		 * Callback functions array for every time a row is inserted (i.e. on a draw).
99077
			str = '_INPUT_<label>' + removed + '</label>';
11947
		 */
99078
		}
11948
		"aoRowCallback": [],
99079
		else if (end) {
99080
			str = '<label>' + removed + '</label>_INPUT_';
99081
		}
11949
	
99082
	
11950
		/**
99083
		var filter = $('<div>')
11951
		 * Callback functions for the header on each draw.
99084
			.addClass(classes.container)
11952
		 */
99085
			.append(str.replace(/_INPUT_/, input));
11953
		"aoHeaderCallback": [],
11954
	
99086
	
11955
		/**
99087
		// add for and id to label and input
11956
		 * Callback function for the footer on each draw.
99088
		filter.find('label').attr('for', 'dt-search-' + __searchCounter);
11957
		 */
99089
		filter.find('input').attr('id', 'dt-search-' + __searchCounter);
11958
		"aoFooterCallback": [],
99090
		__searchCounter++;
11959
	
99091
	
11960
		/**
99092
		var searchFn = function(event) {
11961
		 * Array of callback functions for draw callback functions
99093
			var val = this.value;
11962
		 */
11963
		"aoDrawCallback": [],
11964
	
99094
	
11965
		/**
99095
			if(previousSearch.return && event.key !== "Enter") {
11966
		 * Array of callback functions for row created function
99096
				return;
11967
		 */
99097
			}
11968
		"aoRowCreatedCallback": [],
11969
	
99098
	
11970
		/**
99099
			/* Now do the filter */
11971
		 * Callback functions for just before the table is redrawn. A return of
99100
			if ( val != previousSearch.search ) {
11972
		 * false will be used to cancel the draw.
99101
				_fnProcessingRun(settings, opts.processing, function () {
11973
		 */
99102
					previousSearch.search = val;
11974
		"aoPreDrawCallback": [],
99103
99104
					_fnFilterComplete( settings, previousSearch );
99105
99106
					// Need to redraw, without resorting
99107
					settings._iDisplayStart = 0;
99108
					_fnDraw( settings );
99109
				});
99110
			}
99111
		};
99112
	
99113
		var searchDelay = settings.searchDelay !== null ?
99114
			settings.searchDelay :
99115
			0;
99116
	
99117
		var jqFilter = $('input', filter)
99118
			.val( previousSearch.search )
99119
			.attr( 'placeholder', opts.placeholder )
99120
			.on(
99121
				'keyup.DT search.DT input.DT paste.DT cut.DT',
99122
				searchDelay ?
99123
					DataTable.util.debounce( searchFn, searchDelay ) :
99124
					searchFn
99125
			)
99126
			.on( 'mouseup.DT', function(e) {
99127
				// Edge fix! Edge 17 does not trigger anything other than mouse events when clicking
99128
				// on the clear icon (Edge bug 17584515). This is safe in other browsers as `searchFn`
99129
				// checks the value to see if it has changed. In other browsers it won't have.
99130
				setTimeout( function () {
99131
					searchFn.call(jqFilter[0], e);
99132
				}, 10);
99133
			} )
99134
			.on( 'keypress.DT', function(e) {
99135
				/* Prevent form submission */
99136
				if ( e.keyCode == 13 ) {
99137
					return false;
99138
				}
99139
			} )
99140
			.attr('aria-controls', tableId);
11975
	
99141
	
11976
		/**
99142
		// Update the input elements whenever the table is filtered
11977
		 * Callback functions for when the table has been initialised.
99143
		$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
11978
		 */
99144
			if ( settings === s && jqFilter[0] !== document.activeElement ) {
11979
		"aoInitComplete": [],
99145
				jqFilter.val( typeof previousSearch.search !== 'function'
99146
					? previousSearch.search
99147
					: ''
99148
				);
99149
			}
99150
		} );
11980
	
99151
	
99152
		return filter;
99153
	}, 'f' );
11981
	
99154
	
11982
		/**
99155
	// opts
11983
		 * Callbacks for modifying the settings to be stored for state saving, prior to
99156
	// - type - button configuration
11984
		 * saving state.
99157
	// - buttons - number of buttons to show - must be odd
11985
		 */
99158
	DataTable.feature.register( 'paging', function ( settings, opts ) {
11986
		"aoStateSaveParams": [],
99159
		// Don't show the paging input if the table doesn't have paging enabled
99160
		if (! settings.oFeatures.bPaginate) {
99161
			return null;
99162
		}
11987
	
99163
	
11988
		/**
99164
		opts = $.extend({
11989
		 * Callbacks for modifying the settings that have been stored for state saving
99165
			buttons: DataTable.ext.pager.numbers_length,
11990
		 * prior to using the stored values to restore the state.
99166
			type: settings.sPaginationType,
11991
		 */
99167
			boundaryNumbers: true,
11992
		"aoStateLoadParams": [],
99168
			firstLast: true,
99169
			previousNext: true,
99170
			numbers: true
99171
		}, opts);
11993
	
99172
	
11994
		/**
99173
		var host = $('<div/>')
11995
		 * Callbacks for operating on the settings object once the saved state has been
99174
			.addClass(settings.oClasses.paging.container + (opts.type ? ' paging_' + opts.type : ''))
11996
		 * loaded
99175
			.append(
11997
		 */
99176
				$('<nav>')
11998
		"aoStateLoaded": [],
99177
					.attr('aria-label', 'pagination')
99178
					.addClass(settings.oClasses.paging.nav)
99179
			);
99180
		var draw = function () {
99181
			_pagingDraw(settings, host.children(), opts);
99182
		};
11999
	
99183
	
12000
		/**
99184
		settings.aoDrawCallback.push(draw);
12001
		 * Cache the table ID for quick access
12002
		 */
12003
		"sTableId": "",
12004
	
99185
	
12005
		/**
99186
		// Responsive redraw of paging control
12006
		 * The TABLE node for the main table
99187
		$(settings.nTable).on('column-sizing.dt.DT', draw);
12007
		 */
99188
12008
		"nTable": null,
99189
		return host;
99190
	}, 'p' );
12009
	
99191
	
12010
		/**
99192
	/**
12011
		 * Permanent ref to the thead element
99193
	 * Dynamically create the button type array based on the configuration options.
12012
		 */
99194
	 * This will only happen if the paging type is not defined.
12013
		"nTHead": null,
99195
	 */
99196
	function _pagingDynamic(opts) {
99197
		var out = [];
12014
	
99198
	
12015
		/**
99199
		if (opts.numbers) {
12016
		 * Permanent ref to the tfoot element - if it exists
99200
			out.push('numbers');
12017
		 */
99201
		}
12018
		"nTFoot": null,
12019
	
99202
	
12020
		/**
99203
		if (opts.previousNext) {
12021
		 * Permanent ref to the tbody element
99204
			out.unshift('previous');
12022
		 */
99205
			out.push('next');
12023
		"nTBody": null,
99206
		}
12024
	
99207
	
12025
		/**
99208
		if (opts.firstLast) {
12026
		 * Cache the wrapper node (contains all DataTables controlled elements)
99209
			out.unshift('first');
12027
		 */
99210
			out.push('last');
12028
		"nTableWrapper": null,
99211
		}
12029
	
99212
	
12030
		/**
99213
		return out;
12031
		 * Indicate if all required information has been read in
99214
	}
12032
		 */
12033
		"bInitialised": false,
12034
	
99215
	
12035
		/**
99216
	function _pagingDraw(settings, host, opts) {
12036
		 * Information about open rows. Each object in the array has the parameters
99217
		if (! settings._bInitComplete) {
12037
		 * 'nTr' and 'nParent'
99218
			return;
12038
		 */
99219
		}
12039
		"aoOpenRows": [],
12040
	
99220
	
12041
		/**
99221
		var
12042
		 * Dictate the positioning of DataTables' control elements - see
99222
			plugin = opts.type
12043
		 * {@link DataTable.model.oInit.sDom}.
99223
				? DataTable.ext.pager[ opts.type ]
12044
		 * Note that this parameter will be set by the initialisation routine. To
99224
				: _pagingDynamic,
12045
		 * set a default use {@link DataTable.defaults}.
99225
			aria = settings.oLanguage.oAria.paginate || {},
12046
		 */
99226
			start      = settings._iDisplayStart,
12047
		"sDom": null,
99227
			len        = settings._iDisplayLength,
99228
			visRecords = settings.fnRecordsDisplay(),
99229
			all        = len === -1,
99230
			page = all ? 0 : Math.ceil( start / len ),
99231
			pages = all ? 1 : Math.ceil( visRecords / len ),
99232
			buttons = [],
99233
			buttonEls = [],
99234
			buttonsNested = plugin(opts)
99235
				.map(function (val) {
99236
					return val === 'numbers'
99237
						? _pagingNumbers(page, pages, opts.buttons, opts.boundaryNumbers)
99238
						: val;
99239
				});
12048
	
99240
	
12049
		/**
99241
		// .flat() would be better, but not supported in old Safari
12050
		 * Search delay (in mS)
99242
		buttons = buttons.concat.apply(buttons, buttonsNested);
12051
		 */
12052
		"searchDelay": null,
12053
	
99243
	
12054
		/**
99244
		for (var i=0 ; i<buttons.length ; i++) {
12055
		 * Which type of pagination should be used.
99245
			var button = buttons[i];
12056
		 * Note that this parameter will be set by the initialisation routine. To
12057
		 * set a default use {@link DataTable.defaults}.
12058
		 */
12059
		"sPaginationType": "two_button",
12060
	
99246
	
12061
		/**
99247
			var btnInfo = _pagingButtonInfo(settings, button, page, pages);
12062
		 * Number of paging controls on the page. Only used for backwards compatibility
99248
			var btn = _fnRenderer( settings, 'pagingButton' )(
12063
		 */
99249
				settings,
12064
		pagingControls: 0,
99250
				button,
99251
				btnInfo.display,
99252
				btnInfo.active,
99253
				btnInfo.disabled
99254
			);
12065
	
99255
	
12066
		/**
99256
			var ariaLabel = typeof button === 'string'
12067
		 * The state duration (for `stateSave`) in seconds.
99257
				? aria[ button ]
12068
		 * Note that this parameter will be set by the initialisation routine. To
99258
				: aria.number
12069
		 * set a default use {@link DataTable.defaults}.
99259
					? aria.number + (button+1)
12070
		 */
99260
					: null;
12071
		"iStateDuration": 0,
12072
	
99261
	
12073
		/**
99262
			// Common attributes
12074
		 * Array of callback functions for state saving. Each array element is an
99263
			$(btn.clicker).attr({
12075
		 * object with the following parameters:
99264
				'aria-controls': settings.sTableId,
12076
		 *   <ul>
99265
				'aria-disabled': btnInfo.disabled ? 'true' : null,
12077
		 *     <li>function:fn - function to call. Takes two parameters, oSettings
99266
				'aria-current': btnInfo.active ? 'page' : null,
12078
		 *       and the JSON string to save that has been thus far created. Returns
99267
				'aria-label': ariaLabel,
12079
		 *       a JSON string to be inserted into a json object
99268
				'data-dt-idx': button,
12080
		 *       (i.e. '"param": [ 0, 1, 2]')</li>
99269
				'tabIndex': btnInfo.disabled
12081
		 *     <li>string:sName - name of callback</li>
99270
					? -1
12082
		 *   </ul>
99271
					: settings.iTabIndex && btn.clicker[0].nodeName.toLowerCase() !== 'span'
12083
		 */
99272
						? settings.iTabIndex
12084
		"aoStateSave": [],
99273
						: null, // `0` doesn't need a tabIndex since it is the default
99274
			});
12085
	
99275
	
12086
		/**
99276
			if (typeof button !== 'number') {
12087
		 * Array of callback functions for state loading. Each array element is an
99277
				$(btn.clicker).addClass(button);
12088
		 * object with the following parameters:
99278
			}
12089
		 *   <ul>
12090
		 *     <li>function:fn - function to call. Takes two parameters, oSettings
12091
		 *       and the object stored. May return false to cancel state loading</li>
12092
		 *     <li>string:sName - name of callback</li>
12093
		 *   </ul>
12094
		 */
12095
		"aoStateLoad": [],
12096
	
99279
	
12097
		/**
99280
			_fnBindAction(
12098
		 * State that was saved. Useful for back reference
99281
				btn.clicker, {action: button}, function(e) {
12099
		 */
99282
					e.preventDefault();
12100
		"oSavedState": null,
12101
	
99283
	
12102
		/**
99284
					_fnPageChange( settings, e.data.action, true );
12103
		 * State that was loaded. Useful for back reference
99285
				}
12104
		 */
99286
			);
12105
		"oLoadedState": null,
12106
	
99287
	
12107
		/**
99288
			buttonEls.push(btn.display);
12108
		 * Note if draw should be blocked while getting data
99289
		}
12109
		 */
12110
		"bAjaxDataGet": true,
12111
	
99290
	
12112
		/**
99291
		var wrapped = _fnRenderer(settings, 'pagingContainer')(
12113
		 * The last jQuery XHR object that was used for server-side data gathering.
99292
			settings, buttonEls
12114
		 * This can be used for working with the XHR information in one of the
99293
		);
12115
		 * callbacks
12116
		 */
12117
		"jqXHR": null,
12118
	
99294
	
12119
		/**
99295
		var activeEl = host.find(document.activeElement).data('dt-idx');
12120
		 * JSON returned from the server in the last Ajax request
12121
		 */
12122
		"json": undefined,
12123
	
99296
	
12124
		/**
99297
		host.empty().append(wrapped);
12125
		 * Data submitted as part of the last Ajax request
12126
		 */
12127
		"oAjaxData": undefined,
12128
	
99298
	
12129
		/**
99299
		if ( activeEl !== undefined ) {
12130
		 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
99300
			host.find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
12131
		 * required).
99301
		}
12132
		 * Note that this parameter will be set by the initialisation routine. To
12133
		 * set a default use {@link DataTable.defaults}.
12134
		 */
12135
		"sServerMethod": null,
12136
	
99302
	
12137
		/**
99303
		// Responsive - check if the buttons are over two lines based on the
12138
		 * Format numbers for display.
99304
		// height of the buttons and the container.
12139
		 * Note that this parameter will be set by the initialisation routine. To
99305
		if (buttonEls.length) {
12140
		 * set a default use {@link DataTable.defaults}.
99306
			var outerHeight = $(buttonEls[0]).outerHeight();
12141
		 */
99307
12142
		"fnFormatNumber": null,
99308
			if (
99309
				opts.buttons > 1 && // prevent infinite
99310
				outerHeight > 0 && // will be 0 if hidden
99311
				$(host).height() >= (outerHeight * 2) - 10
99312
			) {
99313
				_pagingDraw(settings, host, $.extend({}, opts, { buttons: opts.buttons - 2 }));
99314
			}
99315
		}
99316
	}
12143
	
99317
	
12144
		/**
99318
	/**
12145
		 * List of options that can be used for the user selectable length menu.
99319
	 * Get properties for a button based on the current paging state of the table
12146
		 * Note that this parameter will be set by the initialisation routine. To
99320
	 *
12147
		 * set a default use {@link DataTable.defaults}.
99321
	 * @param {*} settings DT settings object
12148
		 */
99322
	 * @param {*} button The button type in question
12149
		"aLengthMenu": null,
99323
	 * @param {*} page Table's current page
99324
	 * @param {*} pages Number of pages
99325
	 * @returns Info object
99326
	 */
99327
	function _pagingButtonInfo(settings, button, page, pages) {
99328
		var lang = settings.oLanguage.oPaginate;
99329
		var o = {
99330
			display: '',
99331
			active: false,
99332
			disabled: false
99333
		};
12150
	
99334
	
12151
		/**
99335
		switch ( button ) {
12152
		 * Counter for the draws that the table does. Also used as a tracker for
99336
			case 'ellipsis':
12153
		 * server-side processing
99337
				o.display = '&#x2026;';
12154
		 */
99338
				break;
12155
		"iDraw": 0,
12156
	
99339
	
12157
		/**
99340
			case 'first':
12158
		 * Indicate if a redraw is being done - useful for Ajax
99341
				o.display = lang.sFirst;
12159
		 */
12160
		"bDrawing": false,
12161
	
99342
	
12162
		/**
99343
				if (page === 0) {
12163
		 * Draw index (iDraw) of the last error when parsing the returned data
99344
					o.disabled = true;
12164
		 */
99345
				}
12165
		"iDrawError": -1,
99346
				break;
99347
99348
			case 'previous':
99349
				o.display = lang.sPrevious;
99350
99351
				if ( page === 0 ) {
99352
					o.disabled = true;
99353
				}
99354
				break;
99355
99356
			case 'next':
99357
				o.display = lang.sNext;
99358
99359
				if ( pages === 0 || page === pages-1 ) {
99360
					o.disabled = true;
99361
				}
99362
				break;
99363
99364
			case 'last':
99365
				o.display = lang.sLast;
99366
99367
				if ( pages === 0 || page === pages-1 ) {
99368
					o.disabled = true;
99369
				}
99370
				break;
99371
99372
			default:
99373
				if ( typeof button === 'number' ) {
99374
					o.display = settings.fnFormatNumber( button + 1 );
99375
99376
					if (page === button) {
99377
						o.active = true;
99378
					}
99379
				}
99380
				break;
99381
		}
12166
	
99382
	
12167
		/**
99383
		return o;
12168
		 * Paging display length
99384
	}
12169
		 */
12170
		"_iDisplayLength": 10,
12171
	
99385
	
12172
		/**
99386
	/**
12173
		 * Paging start point - aiDisplay index
99387
	 * Compute what number buttons to show in the paging control
12174
		 */
99388
	 *
12175
		"_iDisplayStart": 0,
99389
	 * @param {*} page Current page
99390
	 * @param {*} pages Total number of pages
99391
	 * @param {*} buttons Target number of number buttons
99392
	 * @param {boolean} addFirstLast Indicate if page 1 and end should be included
99393
	 * @returns Buttons to show
99394
	 */
99395
	function _pagingNumbers ( page, pages, buttons, addFirstLast ) {
99396
		var
99397
			numbers = [],
99398
			half = Math.floor(buttons / 2),
99399
			before = addFirstLast ? 2 : 1,
99400
			after = addFirstLast ? 1 : 0;
12176
	
99401
	
12177
		/**
99402
		if ( pages <= buttons ) {
12178
		 * Server-side processing - number of records in the result set
99403
			numbers = _range(0, pages);
12179
		 * (i.e. before filtering), Use fnRecordsTotal rather than
99404
		}
12180
		 * this property to get the value of the number of records, regardless of
99405
		else if (buttons === 1) {
12181
		 * the server-side processing setting.
99406
			// Single button - current page only
12182
		 */
99407
			numbers = [page];
12183
		"_iRecordsTotal": 0,
99408
		}
99409
		else if (buttons === 3) {
99410
			// Special logic for just three buttons
99411
			if (page <= 1) {
99412
				numbers = [0, 1, 'ellipsis'];
99413
			}
99414
			else if (page >= pages - 2) {
99415
				numbers = _range(pages-2, pages);
99416
				numbers.unshift('ellipsis');
99417
			}
99418
			else {
99419
				numbers = ['ellipsis', page, 'ellipsis'];
99420
			}
99421
		}
99422
		else if ( page <= half ) {
99423
			numbers = _range(0, buttons-before);
99424
			numbers.push('ellipsis');
12184
	
99425
	
12185
		/**
99426
			if (addFirstLast) {
12186
		 * Server-side processing - number of records in the current display set
99427
				numbers.push(pages-1);
12187
		 * (i.e. after filtering). Use fnRecordsDisplay rather than
99428
			}
12188
		 * this property to get the value of the number of records, regardless of
99429
		}
12189
		 * the server-side processing setting.
99430
		else if ( page >= pages - 1 - half ) {
12190
		 */
99431
			numbers = _range(pages-(buttons-before), pages);
12191
		"_iRecordsDisplay": 0,
99432
			numbers.unshift('ellipsis');
99433
99434
			if (addFirstLast) {
99435
				numbers.unshift(0);
99436
			}
99437
		}
99438
		else {
99439
			numbers = _range(page-half+before, page+half-after);
99440
			numbers.push('ellipsis');
99441
			numbers.unshift('ellipsis');
12192
	
99442
	
12193
		/**
99443
			if (addFirstLast) {
12194
		 * The classes to use for the table
99444
				numbers.push(pages-1);
12195
		 */
99445
				numbers.unshift(0);
12196
		"oClasses": {},
99446
			}
99447
		}
12197
	
99448
	
12198
		/**
99449
		return numbers;
12199
		 * Flag attached to the settings object so you can check in the draw
99450
	}
12200
		 * callback if filtering has been done in the draw. Deprecated in favour of
12201
		 * events.
12202
		 *  @deprecated
12203
		 */
12204
		"bFiltered": false,
12205
	
99451
	
12206
		/**
99452
	var __lengthCounter = 0;
12207
		 * Flag attached to the settings object so you can check in the draw
12208
		 * callback if sorting has been done in the draw. Deprecated in favour of
12209
		 * events.
12210
		 *  @deprecated
12211
		 */
12212
		"bSorted": false,
12213
	
99453
	
12214
		/**
99454
	// opts
12215
		 * Indicate that if multiple rows are in the header and there is more than
99455
	// - menu
12216
		 * one unique cell per column. Replaced by titleRow
99456
	// - text
12217
		 */
99457
	DataTable.feature.register( 'pageLength', function ( settings, opts ) {
12218
		"bSortCellsTop": null,
99458
		var features = settings.oFeatures;
12219
	
99459
	
12220
		/**
99460
		// For compatibility with the legacy `pageLength` top level option
12221
		 * Initialisation object that is used for the table
99461
		if (! features.bPaginate || ! features.bLengthChange) {
12222
		 */
99462
			return null;
12223
		"oInit": null,
99463
		}
12224
	
99464
	
12225
		/**
99465
		opts = $.extend({
12226
		 * Destroy callback functions - for plug-ins to attach themselves to the
99466
			menu: settings.aLengthMenu,
12227
		 * destroy so they can clean up markup and events.
99467
			text: settings.oLanguage.sLengthMenu
12228
		 */
99468
		}, opts);
12229
		"aoDestroyCallback": [],
99469
	
99470
		var
99471
			classes  = settings.oClasses.length,
99472
			tableId  = settings.sTableId,
99473
			menu     = opts.menu,
99474
			lengths  = [],
99475
			language = [],
99476
			i;
12230
	
99477
	
99478
		// Options can be given in a number of ways
99479
		if (Array.isArray( menu[0] )) {
99480
			// Old 1.x style - 2D array
99481
			lengths = menu[0];
99482
			language = menu[1];
99483
		}
99484
		else {
99485
			for ( i=0 ; i<menu.length ; i++ ) {
99486
				// An object with different label and value
99487
				if ($.isPlainObject(menu[i])) {
99488
					lengths.push(menu[i].value);
99489
					language.push(menu[i].label);
99490
				}
99491
				else {
99492
					// Or just a number to display and use
99493
					lengths.push(menu[i]);
99494
					language.push(menu[i]);
99495
				}
99496
			}
99497
		}
12231
	
99498
	
12232
		/**
99499
		// We can put the <select> outside of the label if it is at the start or
12233
		 * Get the number of records in the current record set, before filtering
99500
		// end which helps improve accessability (not all screen readers like
12234
		 */
99501
		// implicit for elements).
12235
		"fnRecordsTotal": function ()
99502
		var end = opts.text.match(/_MENU_$/);
12236
		{
99503
		var start = opts.text.match(/^_MENU_/);
12237
			return _fnDataSource( this ) == 'ssp' ?
99504
		var removed = opts.text.replace(/_MENU_/, '');
12238
				this._iRecordsTotal * 1 :
99505
		var str = '<label>' + opts.text + '</label>';
12239
				this.aiDisplayMaster.length;
12240
		},
12241
	
99506
	
12242
		/**
99507
		if (start) {
12243
		 * Get the number of records in the current record set, after filtering
99508
			str = '_MENU_<label>' + removed + '</label>';
12244
		 */
99509
		}
12245
		"fnRecordsDisplay": function ()
99510
		else if (end) {
12246
		{
99511
			str = '<label>' + removed + '</label>_MENU_';
12247
			return _fnDataSource( this ) == 'ssp' ?
99512
		}
12248
				this._iRecordsDisplay * 1 :
12249
				this.aiDisplay.length;
12250
		},
12251
	
99513
	
12252
		/**
99514
		// Wrapper element - use a span as a holder for where the select will go
12253
		 * Get the display end point - aiDisplay index
99515
		var tmpId = 'tmp-' + (+new Date())
12254
		 */
99516
		var div = $('<div/>')
12255
		"fnDisplayEnd": function ()
99517
			.addClass( classes.container )
12256
		{
99518
			.append(
12257
			var
99519
				str.replace( '_MENU_', '<span id="'+tmpId+'"></span>' )
12258
				len      = this._iDisplayLength,
99520
			);
12259
				start    = this._iDisplayStart,
12260
				calc     = start + len,
12261
				records  = this.aiDisplay.length,
12262
				features = this.oFeatures,
12263
				paginate = features.bPaginate;
12264
	
99521
	
12265
			if ( features.bServerSide ) {
99522
		// Save text node content for macro updating
12266
				return paginate === false || len === -1 ?
99523
		var textNodes = [];
12267
					start + records :
99524
		Array.prototype.slice.call(div.find('label')[0].childNodes).forEach(function (el) {
12268
					Math.min( start+len, this._iRecordsDisplay );
99525
			if (el.nodeType === Node.TEXT_NODE) {
12269
			}
99526
				textNodes.push({
12270
			else {
99527
					el: el,
12271
				return ! paginate || calc>records || len===-1 ?
99528
					text: el.textContent
12272
					records :
99529
				});
12273
					calc;
12274
			}
99530
			}
12275
		},
99531
		});
99532
99533
		// Update the label text in case it has an entries value
99534
		var updateEntries = function (len) {
99535
			textNodes.forEach(function (node) {
99536
				node.el.textContent = _fnMacros(settings, node.text, len);
99537
			});
99538
		}
12276
	
99539
	
12277
		/**
99540
		// Next, the select itself, along with the options
12278
		 * The DataTables object for this table
99541
		var select = $('<select/>', {
12279
		 */
99542
			'aria-controls': tableId,
12280
		"oInstance": null,
99543
			'class':         classes.select
99544
		} );
12281
	
99545
	
12282
		/**
99546
		for ( i=0 ; i<lengths.length ; i++ ) {
12283
		 * Unique identifier for each instance of the DataTables object. If there
99547
			// Attempt to look up the length from the i18n options
12284
		 * is an ID on the table node, then it takes that value, otherwise an
99548
			var label = settings.api.i18n('lengthLabels.' + lengths[i], null);
12285
		 * incrementing internal counter is used.
12286
		 */
12287
		"sInstance": null,
12288
	
99549
	
12289
		/**
99550
			if (label === null) {
12290
		 * tabindex attribute value that is added to DataTables control elements, allowing
99551
				// If not present, fallback to old style
12291
		 * keyboard navigation of the table and its controls.
99552
				label = typeof language[i] === 'number' ?
12292
		 */
99553
					settings.fnFormatNumber( language[i] ) :
12293
		"iTabIndex": 0,
99554
					language[i];
99555
			}
99556
99557
			select[0][ i ] = new Option(label, lengths[i]);
99558
		}
12294
	
99559
	
12295
		/**
99560
		// add for and id to label and input
12296
		 * DIV container for the footer scrolling table if scrolling
99561
		div.find('label').attr('for', 'dt-length-' + __lengthCounter);
12297
		 */
99562
		select.attr('id', 'dt-length-' + __lengthCounter);
12298
		"nScrollHead": null,
99563
		__lengthCounter++;
12299
	
99564
	
12300
		/**
99565
		// Swap in the select list
12301
		 * DIV container for the footer scrolling table if scrolling
99566
		div.find('#' + tmpId).replaceWith(select);
12302
		 */
12303
		"nScrollFoot": null,
12304
	
99567
	
12305
		/**
99568
		// Can't use `select` variable as user might provide their own and the
12306
		 * Last applied sort
99569
		// reference is broken by the use of outerHTML
12307
		 */
99570
		$('select', div)
12308
		"aLastSort": [],
99571
			.val( settings._iDisplayLength )
99572
			.on( 'change.DT', function() {
99573
				_fnLengthChange( settings, $(this).val() );
99574
				_fnDraw( settings );
99575
			} );
12309
	
99576
	
12310
		/**
99577
		// Update node value whenever anything changes the table's length
12311
		 * Stored plug-in instances
99578
		$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {
12312
		 */
99579
			if ( settings === s ) {
12313
		"oPlugins": {},
99580
				$('select', div).val( len );
12314
	
99581
	
12315
		/**
99582
				// Resolve plurals in the text for the new length
12316
		 * Function used to get a row's id from the row's data
99583
				updateEntries(len);
12317
		 */
99584
			}
12318
		"rowIdFn": null,
99585
		} );
12319
	
99586
	
12320
		/**
99587
		updateEntries(settings._iDisplayLength);
12321
		 * Data location where to store a row's id
12322
		 */
12323
		"rowId": null,
12324
	
99588
	
12325
		caption: '',
99589
		return div;
99590
	}, 'l' );
12326
	
99591
	
12327
		captionNode: null,
99592
	// jQuery access
99593
	$.fn.dataTable = DataTable;
12328
	
99594
	
12329
		colgroup: null,
99595
	// Provide access to the host jQuery object (circular reference)
99596
	DataTable.$ = $;
12330
	
99597
	
12331
		/** Delay loading of data */
99598
	// Legacy aliases
12332
		deferLoading: null,
99599
	$.fn.dataTableSettings = DataTable.settings;
99600
	$.fn.dataTableExt = DataTable.ext;
12333
	
99601
	
12334
		/** Allow auto type detection */
99602
	// With a capital `D` we return a DataTables API instance rather than a
12335
		typeDetect: true,
99603
	// jQuery object
99604
	$.fn.DataTable = function ( opts ) {
99605
		return $(this).dataTable( opts ).api();
99606
	};
99607
99608
	// All properties that are available to $.fn.dataTable should also be
99609
	// available on $.fn.DataTable
99610
	$.each( DataTable, function ( prop, val ) {
99611
		$.fn.DataTable[ prop ] = val;
99612
	} );
99613
99614
	return DataTable;
99615
}));
99616
99617
99618
/*! DataTables styling integration
99619
 * © SpryMedia Ltd - datatables.net/license
99620
 */
99621
99622
(function( factory ){
99623
	if ( typeof define === 'function' && define.amd ) {
99624
		// AMD
99625
		define( ['jquery', 'datatables.net'], function ( $ ) {
99626
			return factory( $, window, document );
99627
		} );
99628
	}
99629
	else if ( typeof exports === 'object' ) {
99630
		// CommonJS
99631
		var jq = require('jquery');
99632
		var cjsRequires = function (root, $) {
99633
			if ( ! $.fn.dataTable ) {
99634
				require('datatables.net')(root, $);
99635
			}
99636
		};
99637
99638
		if (typeof window === 'undefined') {
99639
			module.exports = function (root, $) {
99640
				if ( ! root ) {
99641
					// CommonJS environments without a window global must pass a
99642
					// root. This will give an error otherwise
99643
					root = window;
99644
				}
99645
99646
				if ( ! $ ) {
99647
					$ = jq( root );
99648
				}
99649
99650
				cjsRequires( root, $ );
99651
				return factory( $, root, root.document );
99652
			};
99653
		}
99654
		else {
99655
			cjsRequires( window, jq );
99656
			module.exports = factory( jq, window, window.document );
99657
		}
99658
	}
99659
	else {
99660
		// Browser
99661
		factory( jQuery, window, document );
99662
	}
99663
}(function( $, window, document ) {
99664
'use strict';
99665
var DataTable = $.fn.dataTable;
99666
99667
12336
99668
12337
		/** ResizeObserver for the container div */
12338
		resizeObserver: null,
12339
99669
12340
		/** Keep a record of the last size of the container, so we can skip duplicates */
12341
		containerWidth: -1,
12342
99670
12343
		/** Reverse the initial order of the data set on desc ordering */
99671
return DataTable;
12344
		orderDescReverse: null,
99672
}));
12345
99673
12346
		/** Show / hide ordering indicators in headers */
12347
		orderIndicators: true,
12348
99674
12349
		/** Default ordering listener */
99675
/*! Buttons for DataTables 3.2.6
12350
		orderHandler: true,
99676
 * © SpryMedia Ltd - datatables.net/license
99677
 */
12351
99678
12352
		/** Title row indicator */
99679
(function( factory ){
12353
		titleRow: null
99680
	if ( typeof define === 'function' && define.amd ) {
12354
	};
99681
		// AMD
12355
	
99682
		define( ['jquery', 'datatables.net'], function ( $ ) {
12356
	/**
99683
			return factory( $, window, document );
12357
	 * Extension object for DataTables that is used to provide all extension
99684
		} );
12358
	 * options.
99685
	}
12359
	 *
99686
	else if ( typeof exports === 'object' ) {
12360
	 * Note that the `DataTable.ext` object is available through
99687
		// CommonJS
12361
	 * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is
99688
		var jq = require('jquery');
12362
	 * also aliased to `jQuery.fn.dataTableExt` for historic reasons.
99689
		var cjsRequires = function (root, $) {
12363
	 *  @namespace
99690
			if ( ! $.fn.dataTable ) {
12364
	 *  @extends DataTable.models.ext
99691
				require('datatables.net')(root, $);
12365
	 */
99692
			}
12366
	
99693
		};
12367
	
99694
12368
	var extPagination = DataTable.ext.pager;
99695
		if (typeof window === 'undefined') {
12369
	
99696
			module.exports = function (root, $) {
12370
	// Paging buttons configuration
99697
				if ( ! root ) {
12371
	$.extend( extPagination, {
99698
					// CommonJS environments without a window global must pass a
12372
		simple: function () {
99699
					// root. This will give an error otherwise
12373
			return [ 'previous', 'next' ];
99700
					root = window;
12374
		},
12375
	
12376
		full: function () {
12377
			return [ 'first', 'previous', 'next', 'last' ];
12378
		},
12379
	
12380
		numbers: function () {
12381
			return [ 'numbers' ];
12382
		},
12383
	
12384
		simple_numbers: function () {
12385
			return [ 'previous', 'numbers', 'next' ];
12386
		},
12387
	
12388
		full_numbers: function () {
12389
			return [ 'first', 'previous', 'numbers', 'next', 'last' ];
12390
		},
12391
	
12392
		first_last: function () {
12393
			return ['first', 'last'];
12394
		},
12395
	
12396
		first_last_numbers: function () {
12397
			return ['first', 'numbers', 'last'];
12398
		},
12399
	
12400
		// For testing and plug-ins to use
12401
		_numbers: _pagingNumbers,
12402
	
12403
		// Number of number buttons - legacy, use `numbers` option for paging feature
12404
		numbers_length: 7
12405
	} );
12406
	
12407
	
12408
	$.extend( true, DataTable.ext.renderer, {
12409
		pagingButton: {
12410
			_: function (settings, buttonType, content, active, disabled) {
12411
				var classes = settings.oClasses.paging;
12412
				var btnClasses = [classes.button];
12413
				var btn;
12414
	
12415
				if (active) {
12416
					btnClasses.push(classes.active);
12417
				}
12418
	
12419
				if (disabled) {
12420
					btnClasses.push(classes.disabled)
12421
				}
12422
	
12423
				if (buttonType === 'ellipsis') {
12424
					btn = $('<span class="ellipsis"></span>').html(content)[0];
12425
				}
12426
				else {
12427
					btn = $('<button>', {
12428
						class: btnClasses.join(' '),
12429
						role: 'link',
12430
						type: 'button'
12431
					}).html(content);
12432
				}
99701
				}
12433
	
99702
12434
				return {
99703
				if ( ! $ ) {
12435
					display: btn,
99704
					$ = jq( root );
12436
					clicker: btn
12437
				}
99705
				}
12438
			}
99706
12439
		},
99707
				cjsRequires( root, $ );
12440
	
99708
				return factory( $, root, root.document );
12441
		pagingContainer: {
99709
			};
12442
			_: function (settings, buttons) {
12443
				// No wrapping element - just append directly to the host
12444
				return buttons;
12445
			}
12446
		}
99710
		}
12447
	} );
99711
		else {
12448
	
99712
			cjsRequires( window, jq );
12449
	// Common function to remove new lines, strip HTML and diacritic control
99713
			module.exports = factory( jq, window, window.document );
12450
	var _filterString = function (stripHtml, normalize) {
99714
		}
12451
		return function (str) {
99715
	}
12452
			if (_empty(str) || typeof str !== 'string') {
99716
	else {
12453
				return str;
99717
		// Browser
12454
			}
99718
		factory( jQuery, window, document );
12455
	
99719
	}
12456
			str = str.replace( _re_new_lines, " " );
99720
}(function( $, window, document ) {
12457
	
99721
'use strict';
12458
			if (stripHtml) {
99722
var DataTable = $.fn.dataTable;
12459
				str = _stripHtml(str);
99723
12460
			}
99724
12461
	
99725
12462
			if (normalize) {
99726
// Used for namespacing events added to the document by each instance, so they
12463
				str = _normalize(str, false);
99727
// can be removed on destroy
12464
			}
99728
var _instCounter = 0;
12465
	
99729
12466
			return str;
99730
// Button namespacing counter for namespacing events on individual buttons
99731
var _buttonCounter = 0;
99732
99733
var _dtButtons = DataTable.ext.buttons;
99734
99735
// Custom entity decoder for data export
99736
var _entityDecoder = null;
99737
99738
// Allow for jQuery slim
99739
function _fadeIn(el, duration, fn) {
99740
	if ($.fn.animate) {
99741
		el.stop().fadeIn(duration, fn);
99742
	}
99743
	else {
99744
		el.css('display', 'block');
99745
99746
		if (fn) {
99747
			fn.call(el);
99748
		}
99749
	}
99750
}
99751
99752
function _fadeOut(el, duration, fn) {
99753
	if ($.fn.animate) {
99754
		el.stop().fadeOut(duration, fn);
99755
	}
99756
	else {
99757
		el.css('display', 'none');
99758
99759
		if (fn) {
99760
			fn.call(el);
99761
		}
99762
	}
99763
}
99764
99765
/**
99766
 * [Buttons description]
99767
 * @param {[type]}
99768
 * @param {[type]}
99769
 */
99770
var Buttons = function (dt, config) {
99771
	if (!DataTable.versionCheck('2')) {
99772
		throw 'Warning: Buttons requires DataTables 2 or newer';
99773
	}
99774
99775
	// If not created with a `new` keyword then we return a wrapper function that
99776
	// will take the settings object for a DT. This allows easy use of new instances
99777
	// with the `layout` option - e.g. `topLeft: $.fn.dataTable.Buttons( ... )`.
99778
	if (!(this instanceof Buttons)) {
99779
		return function (settings) {
99780
			return new Buttons(settings, dt).container();
12467
		};
99781
		};
12468
	}
99782
	}
12469
	
99783
12470
	/*
99784
	// If there is no config set it to an empty object
12471
	 * Public helper functions. These aren't used internally by DataTables, or
99785
	if (typeof config === 'undefined') {
12472
	 * called by any of the options passed into DataTables, but they can be used
99786
		config = {};
12473
	 * externally by developers working with DataTables. They are helper functions
99787
	}
12474
	 * to make working with DataTables a little bit easier.
99788
99789
	// Allow a boolean true for defaults
99790
	if (config === true) {
99791
		config = {};
99792
	}
99793
99794
	// For easy configuration of buttons an array can be given
99795
	if (Array.isArray(config)) {
99796
		config = { buttons: config };
99797
	}
99798
99799
	this.c = $.extend(true, {}, Buttons.defaults, config);
99800
99801
	// Don't want a deep copy for the buttons
99802
	if (config.buttons) {
99803
		this.c.buttons = config.buttons;
99804
	}
99805
99806
	this.s = {
99807
		dt: new DataTable.Api(dt),
99808
		buttons: [],
99809
		listenKeys: '',
99810
		namespace: 'dtb' + _instCounter++
99811
	};
99812
99813
	this.dom = {
99814
		container: $('<' + this.c.dom.container.tag + '/>').addClass(
99815
			this.c.dom.container.className
99816
		)
99817
	};
99818
99819
	this._constructor();
99820
};
99821
99822
$.extend(Buttons.prototype, {
99823
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
99824
	 * Public methods
12475
	 */
99825
	 */
12476
	
99826
12477
	/**
99827
	/**
12478
	 * Common logic for moment, luxon or a date action.
99828
	 * Get the action of a button
12479
	 *
99829
	 * @param  {int|string} Button index
12480
	 * Happens after __mldObj, so don't need to call `resolveWindowsLibs` again
99830
	 * @return {function}
99831
	 */ /**
99832
	 * Set the action of a button
99833
	 * @param  {node} node Button element
99834
	 * @param  {function} action Function to set
99835
	 * @return {Buttons} Self for chaining
12481
	 */
99836
	 */
12482
	function __mld( dtLib, momentFn, luxonFn, dateFn, arg1 ) {
99837
	action: function (node, action) {
12483
		if (__moment) {
99838
		var button = this._nodeToButton(node);
12484
			return dtLib[momentFn]( arg1 );
99839
12485
		}
99840
		if (action === undefined) {
12486
		else if (__luxon) {
99841
			return button.conf.action;
12487
			return dtLib[luxonFn]( arg1 );
12488
		}
99842
		}
12489
		
99843
12490
		return dateFn ? dtLib[dateFn]( arg1 ) : dtLib;
99844
		button.conf.action = action;
12491
	}
99845
12492
	
99846
		return this;
12493
	
99847
	},
12494
	var __mlWarning = false;
99848
12495
	var __luxon; // Can be assigned in DateTable.use()
12496
	var __moment; // Can be assigned in DateTable.use()
12497
	
12498
	/**
99849
	/**
12499
	 * 
99850
	 * Add an active class to the button to make to look active or get current
99851
	 * active state.
99852
	 * @param  {node} node Button element
99853
	 * @param  {boolean} [flag] Enable / disable flag
99854
	 * @return {Buttons} Self for chaining or boolean for getter
12500
	 */
99855
	 */
12501
	function resolveWindowLibs() {
99856
	active: function (node, flag) {
12502
		if (window.luxon && ! __luxon) {
99857
		var button = this._nodeToButton(node);
12503
			__luxon = window.luxon;
99858
		var klass = this.c.dom.button.active;
12504
		}
99859
		var jqNode = $(button.node);
12505
		
99860
12506
		if (window.moment && ! __moment) {
99861
		if (
12507
			__moment = window.moment;
99862
			button.inCollection &&
12508
		}
99863
			this.c.dom.collection.button &&
12509
	}
99864
			this.c.dom.collection.button.active !== undefined
12510
	
99865
		) {
12511
	function __mldObj (d, format, locale) {
99866
			klass = this.c.dom.collection.button.active;
12512
		var dt;
12513
	
12514
		resolveWindowLibs();
12515
	
12516
		if (__moment) {
12517
			dt = __moment.utc( d, format, locale, true );
12518
	
12519
			if (! dt.isValid()) {
12520
				return null;
12521
			}
12522
		}
12523
		else if (__luxon) {
12524
			dt = format && typeof d === 'string'
12525
				? __luxon.DateTime.fromFormat( d, format )
12526
				: __luxon.DateTime.fromISO( d );
12527
	
12528
			if (! dt.isValid) {
12529
				return null;
12530
			}
12531
	
12532
			dt = dt.setLocale(locale);
12533
		}
12534
		else if (! format) {
12535
			// No format given, must be ISO
12536
			dt = new Date(d);
12537
		}
12538
		else {
12539
			if (! __mlWarning) {
12540
				alert('DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17');
12541
			}
12542
	
12543
			__mlWarning = true;
12544
		}
99867
		}
12545
	
99868
12546
		return dt;
99869
		if (flag === undefined) {
12547
	}
99870
			return jqNode.hasClass(klass);
12548
	
12549
	// Wrapper for date, datetime and time which all operate the same way with the exception of
12550
	// the output string for auto locale support
12551
	function __mlHelper (localeString) {
12552
		return function ( from, to, locale, def ) {
12553
			// Luxon and Moment support
12554
			// Argument shifting
12555
			if ( arguments.length === 0 ) {
12556
				locale = 'en';
12557
				to = null; // means toLocaleString
12558
				from = null; // means iso8601
12559
			}
12560
			else if ( arguments.length === 1 ) {
12561
				locale = 'en';
12562
				to = from;
12563
				from = null;
12564
			}
12565
			else if ( arguments.length === 2 ) {
12566
				locale = to;
12567
				to = from;
12568
				from = null;
12569
			}
12570
	
12571
			var typeName = 'datetime' + (to ? '-' + to : '');
12572
	
12573
			// Add type detection and sorting specific to this date format - we need to be able to identify
12574
			// date type columns as such, rather than as numbers in extensions. Hence the need for this.
12575
			if (! DataTable.ext.type.order[typeName + '-pre']) {
12576
				DataTable.type(typeName, {
12577
					detect: function (d) {
12578
						// The renderer will give the value to type detect as the type!
12579
						return d === typeName ? typeName : false;
12580
					},
12581
					order: {
12582
						pre: function (d) {
12583
							// The renderer gives us Moment, Luxon or Date objects for the sorting, all of which have a
12584
							// `valueOf` which gives milliseconds epoch
12585
							return d.valueOf();
12586
						}
12587
					},
12588
					className: 'dt-right'
12589
				});
12590
			}
12591
		
12592
			return function ( d, type ) {
12593
				// Allow for a default value
12594
				if (d === null || d === undefined) {
12595
					if (def === '--now') {
12596
						// We treat everything as UTC further down, so no changes are
12597
						// made, as such need to get the local date / time as if it were
12598
						// UTC
12599
						var local = new Date();
12600
						d = new Date( Date.UTC(
12601
							local.getFullYear(), local.getMonth(), local.getDate(),
12602
							local.getHours(), local.getMinutes(), local.getSeconds()
12603
						) );
12604
					}
12605
					else {
12606
						d = '';
12607
					}
12608
				}
12609
	
12610
				if (type === 'type') {
12611
					// Typing uses the type name for fast matching
12612
					return typeName;
12613
				}
12614
	
12615
				if (d === '') {
12616
					return type !== 'sort'
12617
						? ''
12618
						: __mldObj('0000-01-01 00:00:00', null, locale);
12619
				}
12620
	
12621
				// Shortcut. If `from` and `to` are the same, we are using the renderer to
12622
				// format for ordering, not display - its already in the display format.
12623
				if ( to !== null && from === to && type !== 'sort' && type !== 'type' && ! (d instanceof Date) ) {
12624
					return d;
12625
				}
12626
	
12627
				var dt = __mldObj(d, from, locale);
12628
	
12629
				if (dt === null) {
12630
					return d;
12631
				}
12632
	
12633
				if (type === 'sort') {
12634
					return dt;
12635
				}
12636
				
12637
				var formatted = to === null
12638
					? __mld(dt, 'toDate', 'toJSDate', '')[localeString](
12639
						navigator.language,
12640
						{ timeZone: "UTC" }
12641
					)
12642
					: __mld(dt, 'format', 'toFormat', 'toISOString', to);
12643
	
12644
				// XSS protection
12645
				return type === 'display' ?
12646
					_escapeHtml( formatted ) :
12647
					formatted;
12648
			};
12649
		}
99871
		}
12650
	}
99872
12651
	
99873
		jqNode.toggleClass(klass, flag === undefined ? true : flag);
12652
	// Based on locale, determine standard number formatting
99874
12653
	// Fallback for legacy browsers is US English
99875
		return this;
12654
	var __thousands = ',';
99876
	},
12655
	var __decimal = '.';
99877
12656
	
99878
	/**
12657
	if (window.Intl !== undefined) {
99879
	 * Add a new button
12658
		try {
99880
	 * @param {object} config Button configuration object, base string name or function
12659
			var num = new Intl.NumberFormat().formatToParts(100000.1);
99881
	 * @param {int|string} [idx] Button index for where to insert the button
12660
		
99882
	 * @param {boolean} [draw=true] Trigger a draw. Set a false when adding
12661
			for (var i=0 ; i<num.length ; i++) {
99883
	 *   lots of buttons, until the last button.
12662
				if (num[i].type === 'group') {
99884
	 * @return {Buttons} Self for chaining
12663
					__thousands = num[i].value;
99885
	 */
12664
				}
99886
	add: function (config, idx, draw) {
12665
				else if (num[i].type === 'decimal') {
99887
		var buttons = this.s.buttons;
12666
					__decimal = num[i].value;
99888
12667
				}
99889
		if (typeof idx === 'string') {
99890
			var split = idx.split('-');
99891
			var base = this.s;
99892
99893
			for (var i = 0, ien = split.length - 1; i < ien; i++) {
99894
				base = base.buttons[split[i] * 1];
12668
			}
99895
			}
99896
99897
			buttons = base.buttons;
99898
			idx = split[split.length - 1] * 1;
12669
		}
99899
		}
12670
		catch (e) {
99900
12671
			// noop
99901
		let node = this._expandButton(
12672
		}
99902
			buttons,
12673
	}
99903
			config,
12674
	
99904
			config !== undefined ? config.split : undefined,
12675
	// Formatted date time detection - use by declaring the formats you are going to use
99905
			(config === undefined ||
12676
	DataTable.datetime = function ( format, locale ) {
99906
				config.split === undefined ||
12677
		var typeName = 'datetime-' + format;
99907
				config.split.length === 0) &&
12678
	
99908
				base !== undefined,
12679
		if (! locale) {
99909
			false,
12680
			locale = 'en';
99910
			idx
12681
		}
99911
		);
12682
	
99912
12683
		if (! DataTable.ext.type.order[typeName]) {
99913
		if (draw === undefined || draw === true) {
12684
			DataTable.type(typeName, {
99914
			this._draw();
12685
				detect: function (d) {
12686
					var dt = __mldObj(d, format, locale);
12687
					return d === '' || dt ? typeName : false;
12688
				},
12689
				order: {
12690
					pre: function (d) {
12691
						return __mldObj(d, format, locale) || 0;
12692
					}
12693
				},
12694
				className: 'dt-right'
12695
			});
12696
		}
99915
		}
12697
	}
99916
12698
	
99917
		return node;
99918
	},
99919
12699
	/**
99920
	/**
12700
	 * Helpers for `columns.render`.
99921
	 * Clear buttons from a collection and then insert new buttons
12701
	 *
12702
	 * The options defined here can be used with the `columns.render` initialisation
12703
	 * option to provide a display renderer. The following functions are defined:
12704
	 *
12705
	 * * `moment` - Uses the MomentJS library to convert from a given format into another.
12706
	 * This renderer has three overloads:
12707
	 *   * 1 parameter:
12708
	 *     * `string` - Format to convert to (assumes input is ISO8601 and locale is `en`)
12709
	 *   * 2 parameters:
12710
	 *     * `string` - Format to convert from
12711
	 *     * `string` - Format to convert to. Assumes `en` locale
12712
	 *   * 3 parameters:
12713
	 *     * `string` - Format to convert from
12714
	 *     * `string` - Format to convert to
12715
	 *     * `string` - Locale
12716
	 * * `number` - Will format numeric data (defined by `columns.data`) for
12717
	 *   display, retaining the original unformatted data for sorting and filtering.
12718
	 *   It takes 5 parameters:
12719
	 *   * `string` - Thousands grouping separator
12720
	 *   * `string` - Decimal point indicator
12721
	 *   * `integer` - Number of decimal points to show
12722
	 *   * `string` (optional) - Prefix.
12723
	 *   * `string` (optional) - Postfix (/suffix).
12724
	 * * `text` - Escape HTML to help prevent XSS attacks. It has no optional
12725
	 *   parameters.
12726
	 *
12727
	 * @example
12728
	 *   // Column definition using the number renderer
12729
	 *   {
12730
	 *     data: "salary",
12731
	 *     render: $.fn.dataTable.render.number( '\'', '.', 0, '$' )
12732
	 *   }
12733
	 *
12734
	 * @namespace
12735
	 */
99922
	 */
12736
	DataTable.render = {
99923
	collectionRebuild: function (node, newButtons) {
12737
		date: __mlHelper('toLocaleDateString'),
99924
		var button = this._nodeToButton(node);
12738
		datetime: __mlHelper('toLocaleString'),
99925
12739
		time: __mlHelper('toLocaleTimeString'),
99926
		if (newButtons !== undefined) {
12740
		number: function ( thousands, decimal, precision, prefix, postfix ) {
99927
			var i;
12741
			// Auto locale detection
99928
			// Need to reverse the array
12742
			if (thousands === null || thousands === undefined) {
99929
			for (i = button.buttons.length - 1; i >= 0; i--) {
12743
				thousands = __thousands;
99930
				this.remove(button.buttons[i].node);
12744
			}
99931
			}
12745
	
99932
12746
			if (decimal === null || decimal === undefined) {
99933
			// If the collection has prefix and / or postfix buttons we need to add them in
12747
				decimal = __decimal;
99934
			if (button.conf.prefixButtons) {
99935
				newButtons.unshift.apply(newButtons, button.conf.prefixButtons);
99936
			}
99937
99938
			if (button.conf.postfixButtons) {
99939
				newButtons.push.apply(newButtons, button.conf.postfixButtons);
99940
			}
99941
99942
			for (i = 0; i < newButtons.length; i++) {
99943
				var newBtn = newButtons[i];
99944
99945
				this._expandButton(
99946
					button.buttons,
99947
					newBtn,
99948
					newBtn !== undefined &&
99949
						newBtn.config !== undefined &&
99950
						newBtn.config.split !== undefined,
99951
					true,
99952
					newBtn.parentConf !== undefined &&
99953
						newBtn.parentConf.split !== undefined,
99954
					null,
99955
					newBtn.parentConf
99956
				);
99957
			}
99958
		}
99959
99960
		this._draw(button.collection, button.buttons);
99961
	},
99962
99963
	/**
99964
	 * Get the container node for the buttons
99965
	 * @return {jQuery} Buttons node
99966
	 */
99967
	container: function () {
99968
		return this.dom.container;
99969
	},
99970
99971
	/**
99972
	 * Disable a button
99973
	 * @param  {node} node Button node
99974
	 * @return {Buttons} Self for chaining
99975
	 */
99976
	disable: function (node) {
99977
		var button = this._nodeToButton(node);
99978
99979
		if (button.isSplit) {
99980
			$(button.node.childNodes[0])
99981
				.addClass(this.c.dom.button.disabled)
99982
				.prop('disabled', true);
99983
		}
99984
		else {
99985
			$(button.node)
99986
				.addClass(this.c.dom.button.disabled)
99987
				.prop('disabled', true);
99988
		}
99989
99990
		button.disabled = true;
99991
99992
		this._checkSplitEnable();
99993
99994
		return this;
99995
	},
99996
99997
	/**
99998
	 * Destroy the instance, cleaning up event handlers and removing DOM
99999
	 * elements
100000
	 * @return {Buttons} Self for chaining
100001
	 */
100002
	destroy: function () {
100003
		// Key event listener
100004
		$('body').off('keyup.' + this.s.namespace);
100005
100006
		// Individual button destroy (so they can remove their own events if
100007
		// needed). Take a copy as the array is modified by `remove`
100008
		var buttons = this.s.buttons.slice();
100009
		var i, ien;
100010
100011
		for (i = 0, ien = buttons.length; i < ien; i++) {
100012
			this.remove(buttons[i].node);
100013
		}
100014
100015
		// Container
100016
		this.dom.container.remove();
100017
100018
		// Remove from the settings object collection
100019
		var buttonInsts = this.s.dt.settings()[0];
100020
100021
		for (i = 0, ien = buttonInsts.length; i < ien; i++) {
100022
			if (buttonInsts.inst === this) {
100023
				buttonInsts.splice(i, 1);
100024
				break;
12748
			}
100025
			}
12749
	
12750
			return {
12751
				display: function ( d ) {
12752
					if ( typeof d !== 'number' && typeof d !== 'string' ) {
12753
						return d;
12754
					}
12755
	
12756
					if (d === '' || d === null) {
12757
						return d;
12758
					}
12759
	
12760
					var negative = d < 0 ? '-' : '';
12761
					var flo = parseFloat( d );
12762
					var abs = Math.abs(flo);
12763
	
12764
					// Scientific notation for large and small numbers
12765
					if (abs >= 100000000000 || (abs < 0.0001 && abs !== 0) ) {
12766
						var exp = flo.toExponential(precision).split(/e\+?/);
12767
						return exp[0] + ' x 10<sup>' + exp[1] + '</sup>';
12768
					}
12769
	
12770
					// If NaN then there isn't much formatting that we can do - just
12771
					// return immediately, escaping any HTML (this was supposed to
12772
					// be a number after all)
12773
					if ( isNaN( flo ) ) {
12774
						return _escapeHtml( d );
12775
					}
12776
	
12777
					flo = flo.toFixed( precision );
12778
					d = Math.abs( flo );
12779
	
12780
					var intPart = parseInt( d, 10 );
12781
					var floatPart = precision ?
12782
						decimal+(d - intPart).toFixed( precision ).substring( 2 ):
12783
						'';
12784
	
12785
					// If zero, then can't have a negative prefix
12786
					if (intPart === 0 && parseFloat(floatPart) === 0) {
12787
						negative = '';
12788
					}
12789
	
12790
					return negative + (prefix||'') +
12791
						intPart.toString().replace(
12792
							/\B(?=(\d{3})+(?!\d))/g, thousands
12793
						) +
12794
						floatPart +
12795
						(postfix||'');
12796
				}
12797
			};
12798
		},
12799
	
12800
		text: function () {
12801
			return {
12802
				display: _escapeHtml,
12803
				filter: _escapeHtml
12804
			};
12805
		}
100026
		}
12806
	};
100027
12807
	
100028
		return this;
12808
	
100029
	},
12809
	var _extTypes = DataTable.ext.type;
100030
12810
	
100031
	/**
12811
	// Get / set type
100032
	 * Enable / disable a button
12812
	DataTable.type = function (name, prop, val) {
100033
	 * @param  {node} node Button node
12813
		if (! prop) {
100034
	 * @param  {boolean} [flag=true] Enable / disable flag
12814
			return {
100035
	 * @return {Buttons} Self for chaining
12815
				className: _extTypes.className[name],
100036
	 */
12816
				detect: _extTypes.detect.find(function (fn) {
100037
	enable: function (node, flag) {
12817
					return fn._name === name;
100038
		if (flag === false) {
12818
				}),
100039
			return this.disable(node);
12819
				order: {
12820
					pre: _extTypes.order[name + '-pre'],
12821
					asc: _extTypes.order[name + '-asc'],
12822
					desc: _extTypes.order[name + '-desc']
12823
				},
12824
				render: _extTypes.render[name],
12825
				search: _extTypes.search[name]
12826
			};
12827
		}
100040
		}
12828
	
100041
12829
		var setProp = function(prop, propVal) {
100042
		var button = this._nodeToButton(node);
12830
			_extTypes[prop][name] = propVal;
100043
12831
		};
100044
		if (button.isSplit) {
12832
		var setDetect = function (detect) {
100045
			$(button.node.childNodes[0])
12833
			// `detect` can be a function or an object - we set a name
100046
				.removeClass(this.c.dom.button.disabled)
12834
			// property for either - that is used for the detection
100047
				.prop('disabled', false);
12835
			Object.defineProperty(detect, "_name", {value: name});
100048
		}
12836
	
100049
		else {
12837
			var idx = _extTypes.detect.findIndex(function (item) {
100050
			$(button.node)
12838
				return item._name === name;
100051
				.removeClass(this.c.dom.button.disabled)
12839
			});
100052
				.prop('disabled', false);
12840
	
100053
		}
12841
			if (idx === -1) {
100054
12842
				_extTypes.detect.unshift(detect);
100055
		button.disabled = false;
100056
100057
		this._checkSplitEnable();
100058
100059
		return this;
100060
	},
100061
100062
	/**
100063
	 * Get a button's index
100064
	 *
100065
	 * This is internally recursive
100066
	 * @param {element} node Button to get the index of
100067
	 * @return {string} Button index
100068
	 */
100069
	index: function (node, nested, buttons) {
100070
		if (!nested) {
100071
			nested = '';
100072
			buttons = this.s.buttons;
100073
		}
100074
100075
		for (var i = 0, ien = buttons.length; i < ien; i++) {
100076
			var inner = buttons[i].buttons;
100077
100078
			if (buttons[i].node === node) {
100079
				return nested + i;
12843
			}
100080
			}
12844
			else {
100081
12845
				_extTypes.detect.splice(idx, 1, detect);
100082
			if (inner && inner.length) {
100083
				var match = this.index(node, i + '-', inner);
100084
100085
				if (match !== null) {
100086
					return match;
100087
				}
12846
			}
100088
			}
12847
		};
12848
		var setOrder = function (obj) {
12849
			_extTypes.order[name + '-pre'] = obj.pre; // can be undefined
12850
			_extTypes.order[name + '-asc'] = obj.asc; // can be undefined
12851
			_extTypes.order[name + '-desc'] = obj.desc; // can be undefined
12852
		};
12853
	
12854
		// prop is optional
12855
		if (val === undefined) {
12856
			val = prop;
12857
			prop = null;
12858
		}
100089
		}
12859
	
100090
12860
		if (prop === 'className') {
100091
		return null;
12861
			setProp('className', val);
100092
	},
100093
100094
	/**
100095
	 * Get the instance name for the button set selector
100096
	 * @return {string} Instance name
100097
	 */
100098
	name: function () {
100099
		return this.c.name;
100100
	},
100101
100102
	/**
100103
	 * Get a button's node of the buttons container if no button is given
100104
	 * @param  {node} [node] Button node
100105
	 * @return {jQuery} Button element, or container
100106
	 */
100107
	node: function (node) {
100108
		if (!node) {
100109
			return this.dom.container;
12862
		}
100110
		}
12863
		else if (prop === 'detect') {
100111
12864
			setDetect(val);
100112
		var button = this._nodeToButton(node);
100113
		return $(button.node);
100114
	},
100115
100116
	/**
100117
	 * Set / get a processing class on the selected button
100118
	 * @param {element} node Triggering button node
100119
	 * @param  {boolean} flag true to add, false to remove, undefined to get
100120
	 * @return {boolean|Buttons} Getter value or this if a setter.
100121
	 */
100122
	processing: function (node, flag) {
100123
		var dt = this.s.dt;
100124
		var button = this._nodeToButton(node);
100125
100126
		if (flag === undefined) {
100127
			return $(button.node).hasClass('processing');
12865
		}
100128
		}
12866
		else if (prop === 'order') {
100129
12867
			setOrder(val);
100130
		$(button.node).toggleClass('processing', flag);
100131
100132
		$(dt.table().node()).triggerHandler('buttons-processing.dt', [
100133
			flag,
100134
			dt.button(node),
100135
			dt,
100136
			$(node),
100137
			button.conf
100138
		]);
100139
100140
		return this;
100141
	},
100142
100143
	/**
100144
	 * Remove a button.
100145
	 * @param  {node} node Button node
100146
	 * @return {Buttons} Self for chaining
100147
	 */
100148
	remove: function (node) {
100149
		var button = this._nodeToButton(node);
100150
		var host = this._nodeToHost(node);
100151
		var dt = this.s.dt;
100152
100153
		// Remove any child buttons first
100154
		if (button.buttons.length) {
100155
			for (var i = button.buttons.length - 1; i >= 0; i--) {
100156
				this.remove(button.buttons[i].node);
100157
			}
12868
		}
100158
		}
12869
		else if (prop === 'render') {
100159
12870
			setProp('render', val);
100160
		button.conf.destroying = true;
100161
100162
		// Allow the button to remove event handlers, etc
100163
		if (button.conf.destroy) {
100164
			button.conf.destroy.call(dt.button(node), dt, $(node), button.conf);
12871
		}
100165
		}
12872
		else if (prop === 'search') {
100166
12873
			setProp('search', val);
100167
		this._removeKey(button.conf);
100168
100169
		$(button.node).remove();
100170
100171
		if (button.inserter) {
100172
			$(button.inserter).remove();
100173
		}
100174
100175
		var idx = $.inArray(button, host);
100176
		host.splice(idx, 1);
100177
100178
		return this;
100179
	},
100180
100181
	/**
100182
	 * Get the text for a button
100183
	 * @param  {int|string} node Button index
100184
	 * @return {string} Button text
100185
	 */ /**
100186
	 * Set the text for a button
100187
	 * @param  {int|string|function} node Button index
100188
	 * @param  {string} label Text
100189
	 * @return {Buttons} Self for chaining
100190
	 */
100191
	text: function (node, label) {
100192
		var button = this._nodeToButton(node);
100193
		var textNode = button.textNode;
100194
		var dt = this.s.dt;
100195
		var jqNode = $(button.node);
100196
		var text = function (opt) {
100197
			return typeof opt === 'function'
100198
				? opt(dt, jqNode, button.conf)
100199
				: opt;
100200
		};
100201
100202
		if (label === undefined) {
100203
			return text(button.conf.text);
100204
		}
100205
100206
		button.conf.text = label;
100207
		textNode.html(text(label));
100208
100209
		return this;
100210
	},
100211
100212
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
100213
	 * Constructor
100214
	 */
100215
100216
	/**
100217
	 * Buttons constructor
100218
	 * @private
100219
	 */
100220
	_constructor: function () {
100221
		var that = this;
100222
		var dt = this.s.dt;
100223
		var dtSettings = dt.settings()[0];
100224
		var buttons = this.c.buttons;
100225
100226
		if (!dtSettings._buttons) {
100227
			dtSettings._buttons = [];
12874
		}
100228
		}
12875
		else if (! prop) {
100229
12876
			if (val.className) {
100230
		dtSettings._buttons.push({
12877
				setProp('className', val.className);
100231
			inst: this,
12878
			}
100232
			name: this.c.name
12879
	
100233
		});
12880
			if (val.detect !== undefined) {
100234
12881
				setDetect(val.detect);
100235
		for (var i = 0, ien = buttons.length; i < ien; i++) {
12882
			}
100236
			this.add(buttons[i]);
12883
	
100237
		}
12884
			if (val.order) {
100238
12885
				setOrder(val.order);
100239
		dt.on('destroy', function (e, settings) {
100240
			if (settings === dtSettings) {
100241
				that.destroy();
12886
			}
100242
			}
12887
	
100243
		});
12888
			if (val.render !== undefined) {
100244
12889
				setProp('render', val.render);
100245
		// Global key event binding to listen for button keys
100246
		$('body').on('keyup.' + this.s.namespace, function (e) {
100247
			if (
100248
				!document.activeElement ||
100249
				document.activeElement === document.body
100250
			) {
100251
				// SUse a string of characters for fast lookup of if we need to
100252
				// handle this
100253
				var character = String.fromCharCode(e.keyCode).toLowerCase();
100254
100255
				if (that.s.listenKeys.toLowerCase().indexOf(character) !== -1) {
100256
					that._keypress(character, e);
100257
				}
12890
			}
100258
			}
12891
	
100259
		});
12892
			if (val.search !== undefined) {
100260
	},
12893
				setProp('search', val.search);
100261
100262
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
100263
	 * Private methods
100264
	 */
100265
100266
	/**
100267
	 * Add a new button to the key press listener
100268
	 * @param {object} conf Resolved button configuration object
100269
	 * @private
100270
	 */
100271
	_addKey: function (conf) {
100272
		if (conf.key) {
100273
			this.s.listenKeys += $.isPlainObject(conf.key)
100274
				? conf.key.key
100275
				: conf.key;
100276
		}
100277
	},
100278
100279
	/**
100280
	 * Insert the buttons into the container. Call without parameters!
100281
	 * @param  {node} [container] Recursive only - Insert point
100282
	 * @param  {array} [buttons] Recursive only - Buttons array
100283
	 * @private
100284
	 */
100285
	_draw: function (container, buttons) {
100286
		if (!container) {
100287
			container = this.dom.container;
100288
			buttons = this.s.buttons;
100289
		}
100290
100291
		container.children().detach();
100292
100293
		for (var i = 0, ien = buttons.length; i < ien; i++) {
100294
			container.append(buttons[i].inserter);
100295
			container.append(' ');
100296
100297
			if (buttons[i].buttons && buttons[i].buttons.length) {
100298
				this._draw(buttons[i].collection, buttons[i].buttons);
12894
			}
100299
			}
12895
		}
100300
		}
12896
	}
100301
	},
12897
	
12898
	// Get a list of types
12899
	DataTable.types = function () {
12900
		return _extTypes.detect.map(function (fn) {
12901
			return fn._name;
12902
		});
12903
	};
12904
	
12905
	var __diacriticSort = function (a, b) {
12906
		a = a !== null && a !== undefined ? a.toString().toLowerCase() : '';
12907
		b = b !== null && b !== undefined ? b.toString().toLowerCase() : '';
12908
	
12909
		// Checked for `navigator.languages` support in `oneOf` so this code can't execute in old
12910
		// Safari and thus can disable this check
12911
		// eslint-disable-next-line compat/compat
12912
		return a.localeCompare(b, navigator.languages[0] || navigator.language, {
12913
			numeric: true,
12914
			ignorePunctuation: true,
12915
		});
12916
	}
12917
	
12918
	var __diacriticHtmlSort = function (a, b) {
12919
		a = _stripHtml(a);
12920
		b = _stripHtml(b);
12921
100302
12922
		return __diacriticSort(a, b);
100303
	/**
12923
	}
100304
	 * Create buttons from an array of buttons
100305
	 * @param  {array} attachTo Buttons array to attach to
100306
	 * @param  {object} button Button definition
100307
	 * @param  {boolean} inCollection true if the button is in a collection
100308
	 * @private
100309
	 */
100310
	_expandButton: function (
100311
		attachTo,
100312
		button,
100313
		split,
100314
		inCollection,
100315
		inSplit,
100316
		attachPoint,
100317
		parentConf
100318
	) {
100319
		var dt = this.s.dt;
100320
		var isSplit = false;
100321
		var domCollection = this.c.dom.collection;
100322
		var buttons = !Array.isArray(button) ? [button] : button;
100323
		var lastButton;
12924
100324
12925
	//
100325
		if (button === undefined) {
12926
	// Built in data types
100326
			buttons = !Array.isArray(split) ? [split] : split;
12927
	//
100327
		}
12928
	
100328
12929
	DataTable.type('string', {
100329
		for (var i = 0, ien = buttons.length; i < ien; i++) {
12930
		detect: function () {
100330
			var conf = this._resolveExtends(buttons[i]);
12931
			return 'string';
100331
12932
		},
100332
			if (!conf) {
12933
		order: {
100333
				continue;
12934
			pre: function ( a ) {
12935
				// This is a little complex, but faster than always calling toString,
12936
				// http://jsperf.com/tostring-v-check
12937
				return _empty(a) && typeof a !== 'boolean' ?
12938
					'' :
12939
					typeof a === 'string' ?
12940
						a.toLowerCase() :
12941
						! a.toString ?
12942
							'' :
12943
							a.toString();
12944
			}
100334
			}
12945
		},
100335
12946
		search: _filterString(false, true)
100336
			isSplit = conf.config && conf.config.split ? true : false;
12947
	});
100337
12948
	
100338
			// If the configuration is an array, then expand the buttons at this
12949
	DataTable.type('string-utf8', {
100339
			// point
12950
		detect: {
100340
			if (Array.isArray(conf)) {
12951
			allOf: function ( d ) {
100341
				this._expandButton(
12952
				return true;
100342
					attachTo,
12953
			},
100343
					conf,
12954
			oneOf: function ( d ) {
100344
					built !== undefined && built.conf !== undefined
12955
				// At least one data point must contain a non-ASCII character
100345
						? built.conf.split
12956
				// This line will also check if navigator.languages is supported or not. If not (Safari 10.0-)
100346
						: undefined,
12957
				// this data type won't be supported.
100347
					inCollection,
12958
				// eslint-disable-next-line compat/compat
100348
					parentConf !== undefined && parentConf.split !== undefined,
12959
				return ! _empty( d ) && navigator.languages && typeof d === 'string' && d.match(/[^\x00-\x7F]/);
100349
					attachPoint,
100350
					parentConf
100351
				);
100352
				continue;
12960
			}
100353
			}
12961
		},
100354
12962
		order: {
100355
			var built = this._buildButton(
12963
			asc: __diacriticSort,
100356
				conf,
12964
			desc: function (a, b) {
100357
				inCollection,
12965
				return __diacriticSort(a, b) * -1;
100358
				conf.split !== undefined ||
100359
					(conf.config !== undefined &&
100360
						conf.config.split !== undefined),
100361
				inSplit
100362
			);
100363
			if (!built) {
100364
				continue;
12966
			}
100365
			}
12967
		},
100366
12968
		search: _filterString(false, true)
100367
			if (attachPoint !== undefined && attachPoint !== null) {
12969
	});
100368
				attachTo.splice(attachPoint, 0, built);
12970
	
100369
				attachPoint++;
12971
	
12972
	DataTable.type('html', {
12973
		detect: {
12974
			allOf: function ( d ) {
12975
				return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1);
12976
			},
12977
			oneOf: function ( d ) {
12978
				// At least one data point must contain a `<`
12979
				return ! _empty( d ) && typeof d === 'string' && d.indexOf('<') !== -1;
12980
			}
100370
			}
12981
		},
100371
			else {
12982
		order: {
100372
				attachTo.push(built);
12983
			pre: function ( a ) {
12984
				return _empty(a) ?
12985
					'' :
12986
					a.replace ?
12987
						_stripHtml(a).trim().toLowerCase() :
12988
						a+'';
12989
			}
100373
			}
12990
		},
100374
12991
		search: _filterString(true, true)
100375
			// Any button type can have a drop icon set
12992
	});
100376
			if (built.conf.dropIcon && ! built.conf.split) {
12993
	
100377
				$(built.node)
12994
	
100378
					.addClass(this.c.dom.button.dropClass)
12995
	DataTable.type('html-utf8', {
100379
					.append(this.c.dom.button.dropHtml);
12996
		detect: {
12997
			allOf: function ( d ) {
12998
				return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1);
12999
			},
13000
			oneOf: function ( d ) {
13001
				// At least one data point must contain a `<` and a non-ASCII character
13002
				// eslint-disable-next-line compat/compat
13003
				return navigator.languages &&
13004
					! _empty( d ) &&
13005
					typeof d === 'string' &&
13006
					d.indexOf('<') !== -1 &&
13007
					typeof d === 'string' && d.match(/[^\x00-\x7F]/);
13008
			}
100380
			}
13009
		},
100381
13010
		order: {
100382
			// Create the dropdown for a collection
13011
			asc: __diacriticHtmlSort,
100383
			if (built.conf.buttons) {
13012
			desc: function (a, b) {
100384
				built.collection = $(
13013
				return __diacriticHtmlSort(a, b) * -1;
100385
					'<' + domCollection.container.content.tag + '/>'
100386
				);
100387
				built.conf._collection = built.collection;
100388
100389
				this._expandButton(
100390
					built.buttons,
100391
					built.conf.buttons,
100392
					built.conf.split,
100393
					!isSplit,
100394
					isSplit,
100395
					attachPoint,
100396
					built.conf
100397
				);
13014
			}
100398
			}
13015
		},
13016
		search: _filterString(true, true)
13017
	});
13018
100399
100400
			// And the split collection
100401
			if (built.conf.split) {
100402
				built.collection = $('<' + domCollection.container.tag + '/>');
100403
				built.conf._collection = built.collection;
100404
100405
				for (var j = 0; j < built.conf.split.length; j++) {
100406
					var item = built.conf.split[j];
13019
100407
13020
	DataTable.type('date', {
100408
					if (typeof item === 'object') {
13021
		className: 'dt-type-date',
100409
						item.parent = parentConf;
13022
		detect: {
100410
13023
			allOf: function ( d ) {
100411
						if (item.collectionLayout === undefined) {
13024
				// V8 tries _very_ hard to make a string passed into `Date.parse()`
100412
							item.collectionLayout = built.conf.collectionLayout;
13025
				// valid, so we need to use a regex to restrict date formats. Use a
100413
						}
13026
				// plug-in for anything other than ISO8601 style strings
100414
13027
				if ( d && !(d instanceof Date) && ! _re_date.test(d) ) {
100415
						if (item.dropup === undefined) {
13028
					return null;
100416
							item.dropup = built.conf.dropup;
100417
						}
100418
100419
						if (item.fade === undefined) {
100420
							item.fade = built.conf.fade;
100421
						}
100422
					}
13029
				}
100423
				}
13030
				var parsed = Date.parse(d);
100424
13031
				return (parsed !== null && !isNaN(parsed)) || _empty(d);
100425
				this._expandButton(
13032
			},
100426
					built.buttons,
13033
			oneOf: function ( d ) {
100427
					built.conf.buttons,
13034
				// At least one entry must be a date or a string with a date
100428
					built.conf.split,
13035
				return (d instanceof Date) || (typeof d === 'string' && _re_date.test(d));
100429
					!isSplit,
100430
					isSplit,
100431
					attachPoint,
100432
					built.conf
100433
				);
13036
			}
100434
			}
13037
		},
100435
13038
		order: {
100436
			built.conf.parent = parentConf;
13039
			pre: function ( d ) {
100437
13040
				var ts = Date.parse( d );
100438
			// init call is made here, rather than buildButton as it needs to
13041
				return isNaN(ts) ? -Infinity : ts;
100439
			// be selectable, and for that it needs to be in the buttons array
100440
			if (conf.init) {
100441
				conf.init.call(dt.button(built.node), dt, $(built.node), conf);
13042
			}
100442
			}
100443
100444
			lastButton = built.node;
13043
		}
100445
		}
13044
	});
100446
13045
	
100447
		return lastButton;
13046
	
100448
	},
13047
	DataTable.type('html-num-fmt', {
100449
13048
		className: 'dt-type-numeric',
100450
	/**
13049
		detect: {
100451
	 * Create an individual button
13050
			allOf: function ( d, settings ) {
100452
	 * @param  {object} config            Resolved button configuration
13051
				var decimal = settings.oLanguage.sDecimal;
100453
	 * @param  {boolean} inCollection `true` if a collection button
13052
				return _htmlNumeric( d, decimal, true, false );
100454
	 * @return {object} Completed button description object
13053
			},
100455
	 * @private
13054
			oneOf: function (d, settings) {
100456
	 */
13055
				// At least one data point must contain a numeric value
100457
	_buildButton: function (config, inCollection, isSplit, inSplit) {
13056
				var decimal = settings.oLanguage.sDecimal;
100458
		var that = this;
13057
				return _htmlNumeric( d, decimal, true, false );
100459
		var configDom = this.c.dom;
100460
		var textNode;
100461
		var dt = this.s.dt;
100462
		var setLinerTab = false;
100463
		var text = function (opt) {
100464
			return typeof opt === 'function' ? opt(dt, button, config) : opt;
100465
		};
100466
100467
		// Create an object that describes the button which can be in `dom.button`, or
100468
		// `dom.collection.button` or `dom.split.button` or `dom.collection.split.button`!
100469
		// Each should extend from `dom.button`.
100470
		var dom = $.extend(true, {}, configDom.button);
100471
100472
		if (inCollection && isSplit && configDom.collection.split) {
100473
			$.extend(true, dom, configDom.collection.split.action);
100474
		}
100475
		else if (inSplit || inCollection) {
100476
			$.extend(true, dom, configDom.collection.button);
100477
		}
100478
		else if (isSplit) {
100479
			$.extend(true, dom, configDom.split.button);
100480
		}
100481
100482
		// Spacers don't do much other than insert an element into the DOM
100483
		if (config.spacer) {
100484
			var spacer = $('<' + dom.spacer.tag + '/>')
100485
				.addClass(
100486
					'dt-button-spacer ' +
100487
						config.style +
100488
						' ' +
100489
						dom.spacer.className
100490
				)
100491
				.html(text(config.text));
100492
100493
			return {
100494
				conf: config,
100495
				node: spacer,
100496
				nodeChild: null,
100497
				inserter: spacer,
100498
				buttons: [],
100499
				inCollection: inCollection,
100500
				isSplit: isSplit,
100501
				collection: null,
100502
				textNode: spacer
100503
			};
100504
		}
100505
100506
		// Make sure that the button is available based on whatever requirements
100507
		// it has. For example, PDF button require pdfmake
100508
		if (
100509
			config.available &&
100510
			!config.available(dt, config) &&
100511
			!config.html
100512
		) {
100513
			return false;
100514
		}
100515
100516
		var button;
100517
100518
		if (!config.html) {
100519
			var run = function (e, dt, button, config, done) {
100520
				config.action.call(dt.button(button), e, dt, button, config, done);
100521
100522
				$(dt.table().node()).triggerHandler('buttons-action.dt', [
100523
					dt.button(button),
100524
					dt,
100525
					button,
100526
					config
100527
				]);
100528
			};
100529
100530
			var action = function(e, dt, button, config) {
100531
				if (config.async) {
100532
					that.processing(button[0], true);
100533
100534
					setTimeout(function () {
100535
						run(e, dt, button, config, function () {
100536
							that.processing(button[0], false);
100537
						});
100538
					}, config.async);
100539
				}
100540
				else {
100541
					run(e, dt, button, config, function () {});
100542
				}
100543
			};
100544
100545
			var tag = config.tag || dom.tag;
100546
			var clickBlurs =
100547
				config.clickBlurs === undefined ? true : config.clickBlurs;
100548
100549
			button = $('<' + tag + '/>')
100550
				.addClass(dom.className)
100551
				.attr('aria-controls', this.s.dt.table().node().id)
100552
				.on('click.dtb', function (e) {
100553
					e.preventDefault();
100554
100555
					if (!button.hasClass(dom.disabled) && config.action) {
100556
						action(e, dt, button, config);
100557
					}
100558
100559
					if (clickBlurs) {
100560
						button.trigger('blur');
100561
					}
100562
				})
100563
				.on('keypress.dtb', function (e) {
100564
					if (e.keyCode === 13) {
100565
						e.preventDefault();
100566
100567
						if (!button.hasClass(dom.disabled) && config.action) {
100568
							action(e, dt, button, config);
100569
						}
100570
					}
100571
				});
100572
100573
			// Make `a` tags act like a link
100574
			if (tag.toLowerCase() === 'a') {
100575
				button.attr('href', '#');
100576
			}
100577
100578
			// Button tags should have `type=button` so they don't have any default behaviour
100579
			if (tag.toLowerCase() === 'button') {
100580
				button.attr('type', 'button');
100581
			}
100582
100583
			if (dom.liner.tag) {
100584
				var lc = dom.liner.tag.toLowerCase();
100585
				var liner = $('<' + lc + '/>')
100586
					.html(text(config.text))
100587
					.addClass(dom.liner.className);
100588
100589
				if (lc === 'a') {
100590
					liner.attr('href', '#');
100591
				}
100592
100593
				if (lc === 'a' || lc === 'button') {
100594
					liner.attr('tabindex', this.s.dt.settings()[0].iTabIndex);
100595
					setLinerTab = true;
100596
				}
100597
100598
				button.append(liner);
100599
				textNode = liner;
13058
			}
100600
			}
13059
		},
100601
			else {
13060
		order: {
100602
				button.html(text(config.text));
13061
			pre: function ( d, s ) {
100603
				textNode = button;
13062
				var dp = s.oLanguage.sDecimal;
13063
				return __numericReplace( d, dp, _re_html, _re_formatted_numeric );
13064
			}
100604
			}
13065
		},
100605
13066
		search: _filterString(true, true)
100606
			if (! setLinerTab) {
13067
	});
100607
				button.attr('tabindex', this.s.dt.settings()[0].iTabIndex)
13068
	
13069
	
13070
	DataTable.type('html-num', {
13071
		className: 'dt-type-numeric',
13072
		detect: {
13073
			allOf: function ( d, settings ) {
13074
				var decimal = settings.oLanguage.sDecimal;
13075
				return _htmlNumeric( d, decimal, false, true );
13076
			},
13077
			oneOf: function (d, settings) {
13078
				// At least one data point must contain a numeric value
13079
				var decimal = settings.oLanguage.sDecimal;
13080
				return _htmlNumeric( d, decimal, false, false );
13081
			}
100608
			}
13082
		},
100609
13083
		order: {
100610
			if (config.enabled === false) {
13084
			pre: function ( d, s ) {
100611
				button.addClass(dom.disabled);
13085
				var dp = s.oLanguage.sDecimal;
13086
				return __numericReplace( d, dp, _re_html );
13087
			}
100612
			}
13088
		},
100613
13089
		search: _filterString(true, true)
100614
			if (config.className) {
13090
	});
100615
				button.addClass(config.className);
13091
	
13092
	
13093
	DataTable.type('num-fmt', {
13094
		className: 'dt-type-numeric',
13095
		detect: {
13096
			allOf: function ( d, settings ) {
13097
				var decimal = settings.oLanguage.sDecimal;
13098
				return _isNumber( d, decimal, true, true );
13099
			},
13100
			oneOf: function (d, settings) {
13101
				// At least one data point must contain a numeric value
13102
				var decimal = settings.oLanguage.sDecimal;
13103
				return _isNumber( d, decimal, true, false );
13104
			}
100616
			}
13105
		},
100617
13106
		order: {
100618
			if (config.titleAttr) {
13107
			pre: function ( d, s ) {
100619
				button.attr('title', text(config.titleAttr));
13108
				var dp = s.oLanguage.sDecimal;
13109
				return __numericReplace( d, dp, _re_formatted_numeric );
13110
			}
100620
			}
13111
		}
100621
13112
	});
100622
			if (config.attr) {
13113
	
100623
				button.attr(config.attr);
13114
	
13115
	DataTable.type('num', {
13116
		className: 'dt-type-numeric',
13117
		detect: {
13118
			allOf: function ( d, settings ) {
13119
				var decimal = settings.oLanguage.sDecimal;
13120
				return _isNumber( d, decimal, false, true );
13121
			},
13122
			oneOf: function (d, settings) {
13123
				// At least one data point must contain a numeric value
13124
				var decimal = settings.oLanguage.sDecimal;
13125
				return _isNumber( d, decimal, false, false );
13126
			}
100624
			}
13127
		},
100625
13128
		order: {
100626
			if (!config.namespace) {
13129
			pre: function (d, s) {
100627
				config.namespace = '.dt-button-' + _buttonCounter++;
13130
				var dp = s.oLanguage.sDecimal;
100628
			}
13131
				return __numericReplace( d, dp );
100629
100630
			if (config.config !== undefined && config.config.split) {
100631
				config.split = config.config.split;
13132
			}
100632
			}
13133
		}
100633
		}
13134
	});
100634
		else {
13135
	
100635
			button = $(config.html);
13136
	
13137
	
13138
	
13139
	var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
13140
		if ( d !== 0 && (!d || d === '-') ) {
13141
			return -Infinity;
13142
		}
100636
		}
13143
		
100637
13144
		var type = typeof d;
100638
		var buttonContainer = this.c.dom.buttonContainer;
13145
	
100639
		var inserter;
13146
		if (type === 'number' || type === 'bigint') {
100640
		if (buttonContainer && buttonContainer.tag) {
13147
			return d;
100641
			inserter = $('<' + buttonContainer.tag + '/>')
100642
				.addClass(buttonContainer.className)
100643
				.append(button);
13148
		}
100644
		}
13149
	
100645
		else {
13150
		// If a decimal place other than `.` is used, it needs to be given to the
100646
			inserter = button;
13151
		// function so we can detect it and replace with a `.` which is the only
13152
		// decimal place JavaScript recognises - it is not locale aware.
13153
		if ( decimalPlace ) {
13154
			d = _numToDecimal( d, decimalPlace );
13155
		}
100647
		}
13156
	
100648
13157
		if ( d.replace ) {
100649
		this._addKey(config);
13158
			if ( re1 ) {
100650
13159
				d = d.replace( re1, '' );
100651
		// Style integration callback for DOM manipulation
13160
			}
100652
		// Note that this is _not_ documented. It is currently
13161
	
100653
		// for style integration only
13162
			if ( re2 ) {
100654
		if (this.c.buttonCreated) {
13163
				d = d.replace( re2, '' );
100655
			inserter = this.c.buttonCreated(config, inserter);
13164
			}
13165
		}
100656
		}
13166
	
13167
		return d * 1;
13168
	};
13169
	
13170
	
13171
	$.extend( true, DataTable.ext.renderer, {
13172
		footer: {
13173
			_: function ( settings, cell, classes ) {
13174
				cell.addClass(classes.tfoot.cell);
13175
			}
13176
		},
13177
	
13178
		header: {
13179
			_: function ( settings, cell, classes ) {
13180
				cell.addClass(classes.thead.cell);
13181
	
13182
				if (! settings.oFeatures.bSort) {
13183
					cell.addClass(classes.order.none);
13184
				}
13185
	
13186
				var titleRow = settings.titleRow;
13187
				var headerRows = cell.closest('thead').find('tr');
13188
				var rowIdx = cell.parent().index();
13189
	
13190
				// Conditions to not apply the ordering icons
13191
				if (
13192
					// Cells and rows which have the attribute to disable the icons
13193
					cell.attr('data-dt-order') === 'disable' ||
13194
					cell.parent().attr('data-dt-order') === 'disable' ||
13195
	
13196
					// titleRow support, for defining a specific row in the header
13197
					(titleRow === true && rowIdx !== 0) ||
13198
					(titleRow === false && rowIdx !== headerRows.length - 1) ||
13199
					(typeof titleRow === 'number' && rowIdx !== titleRow)
13200
				) {
13201
					return;
13202
				}
13203
	
13204
				// No additional mark-up required
13205
				// Attach a sort listener to update on sort - note that using the
13206
				// `DT` namespace will allow the event to be removed automatically
13207
				// on destroy, while the `dt` namespaced event is the one we are
13208
				// listening for
13209
				$(settings.nTable).on( 'order.dt.DT column-visibility.dt.DT', function ( e, ctx, column ) {
13210
					if ( settings !== ctx ) { // need to check if this is the host
13211
						return;               // table, not a nested one
13212
					}
13213
	
13214
					var sorting = ctx.sortDetails;
13215
	
13216
					if (! sorting) {
13217
						return;
13218
					}
13219
	
13220
					var orderedColumns = _pluck(sorting, 'col');
13221
100657
13222
					// This handler is only needed on column visibility if the column is part of the
100658
		var splitDiv;
13223
					// ordering. If it isn't, then we can bail out to save performance. It could be a
100659
13224
					// separate event handler, but this is a balance between code reuse / size and performance
100660
		if (isSplit) {
13225
					// console.log(e, e.name, column, orderedColumns, orderedColumns.includes(column))
100661
			var dropdownConf = inCollection
13226
					if (e.type === 'column-visibility' && ! orderedColumns.includes(column)) {
100662
				? $.extend(true, this.c.dom.split, this.c.dom.collection.split)
13227
						return;
100663
				: this.c.dom.split;
13228
					}
100664
			var wrapperConf = dropdownConf.wrapper;
100665
100666
			splitDiv = $('<' + wrapperConf.tag + '/>')
100667
				.addClass(wrapperConf.className)
100668
				.append(button);
100669
100670
			var dropButtonConfig = $.extend(config, {
100671
				autoClose: true,
100672
				align: dropdownConf.dropdown.align,
100673
				attr: {
100674
					'aria-haspopup': 'dialog',
100675
					'aria-expanded': false
100676
				},
100677
				className: dropdownConf.dropdown.className,
100678
				closeButton: false,
100679
				splitAlignClass: dropdownConf.dropdown.splitAlignClass,
100680
				text: dropdownConf.dropdown.text
100681
			});
100682
100683
			this._addKey(dropButtonConfig);
100684
100685
			var splitAction = function (e, dt, button, config) {
100686
				_dtButtons.split.action.call(
100687
					dt.button(splitDiv),
100688
					e,
100689
					dt,
100690
					button,
100691
					config
100692
				);
100693
100694
				$(dt.table().node()).triggerHandler('buttons-action.dt', [
100695
					dt.button(button),
100696
					dt,
100697
					button,
100698
					config
100699
				]);
100700
				button.attr('aria-expanded', true);
100701
			};
100702
100703
			var dropButton = $(
100704
				'<button class="' +
100705
					dropdownConf.dropdown.className +
100706
					' dt-button"></button>'
100707
			)
100708
				.html(this.c.dom.button.dropHtml)
100709
				.addClass(this.c.dom.button.dropClass)
100710
				.on('click.dtb', function (e) {
100711
					e.preventDefault();
100712
					e.stopPropagation();
13229
100713
13230
					var i;
100714
					if (!dropButton.hasClass(dom.disabled)) {
13231
					var orderClasses = classes.order;
100715
						splitAction(e, dt, dropButton, dropButtonConfig);
13232
					var columns = ctx.api.columns( cell );
13233
					var col = settings.aoColumns[columns.flatten()[0]];
13234
					var orderable = columns.orderable().includes(true);
13235
					var ariaType = '';
13236
					var indexes = columns.indexes();
13237
					var sortDirs = columns.orderable(true).flatten();
13238
					var tabIndex = settings.iTabIndex;
13239
					var canOrder = ctx.orderHandler && orderable;
13240
	
13241
					cell
13242
						.removeClass(
13243
							orderClasses.isAsc +' '+
13244
							orderClasses.isDesc
13245
						)
13246
						.toggleClass( orderClasses.none, ! orderable )
13247
						.toggleClass( orderClasses.canAsc, canOrder && sortDirs.includes('asc') )
13248
						.toggleClass( orderClasses.canDesc, canOrder && sortDirs.includes('desc') );
13249
	
13250
					// Determine if all of the columns that this cell covers are included in the
13251
					// current ordering
13252
					var isOrdering = true;
13253
					
13254
					for (i=0; i<indexes.length; i++) {
13255
						if (! orderedColumns.includes(indexes[i])) {
13256
							isOrdering = false;
13257
						}
13258
					}
13259
	
13260
					if ( isOrdering ) {
13261
						// Get the ordering direction for the columns under this cell
13262
						// Note that it is possible for a cell to be asc and desc sorting
13263
						// (column spanning cells)
13264
						var orderDirs = columns.order();
13265
	
13266
						cell.addClass(
13267
							orderDirs.includes('asc') ? orderClasses.isAsc : '' +
13268
							orderDirs.includes('desc') ? orderClasses.isDesc : ''
13269
						);
13270
					}
13271
	
13272
					// Find the first visible column that has ordering applied to it - it get's
13273
					// the aria information, as the ARIA spec says that only one column should
13274
					// be marked with aria-sort
13275
					var firstVis = -1; // column index
13276
	
13277
					for (i=0; i<orderedColumns.length; i++) {
13278
						if (settings.aoColumns[orderedColumns[i]].bVisible) {
13279
							firstVis = orderedColumns[i];
13280
							break;
13281
						}
13282
					}
13283
	
13284
					if (indexes[0] == firstVis) {
13285
						var firstSort = sorting[0];
13286
						var sortOrder = col.asSorting;
13287
	
13288
						cell.attr('aria-sort', firstSort.dir === 'asc' ? 'ascending' : 'descending');
13289
	
13290
						// Determine if the next click will remove sorting or change the sort
13291
						ariaType = ! sortOrder[firstSort.index + 1] ? 'Remove' : 'Reverse';
13292
					}
100716
					}
13293
					else {
100717
					if (clickBlurs) {
13294
						cell.removeAttr('aria-sort');
100718
						dropButton.trigger('blur');
13295
					}
100719
					}
13296
	
100720
				})
13297
					// Make the headers tab-able for keyboard navigation
100721
				.on('keypress.dtb', function (e) {
13298
					if (orderable) {
100722
					if (e.keyCode === 13) {
13299
						var orderSpan = cell.find('.dt-column-order');
100723
						e.preventDefault();
13300
13301
						orderSpan
13302
							.attr('role', 'button')
13303
							.attr('aria-label', orderable
13304
								? col.ariaTitle + ctx.api.i18n('oAria.orderable' + ariaType)
13305
								: col.ariaTitle
13306
							);
13307
100724
13308
						if (tabIndex !== -1) {
100725
						if (!dropButton.hasClass(dom.disabled)) {
13309
							orderSpan.attr('tabindex', tabIndex);
100726
							splitAction(e, dt, dropButton, dropButtonConfig);
13310
						}
100727
						}
13311
					}
100728
					}
13312
				} );
13313
			}
13314
		},
13315
	
13316
		layout: {
13317
			_: function ( settings, container, items ) {
13318
				var classes = settings.oClasses.layout;
13319
				var row = $('<div/>')
13320
					.attr('id', items.id || null)
13321
					.addClass(items.className || classes.row)
13322
					.appendTo( container );
13323
	
13324
				DataTable.ext.renderer.layout._forLayoutRow(items, function (key, val) {
13325
					if (key === 'id' || key === 'className') {
13326
						return;
13327
					}
13328
	
13329
					var klass = '';
13330
	
13331
					if (val.table) {
13332
						row.addClass(classes.tableRow);
13333
						klass += classes.tableCell + ' ';
13334
					}
13335
	
13336
					if (key === 'start') {
13337
						klass += classes.start;
13338
					}
13339
					else if (key === 'end') {
13340
						klass += classes.end;
13341
					}
13342
					else {
13343
						klass += classes.full;
13344
					}
13345
	
13346
					$('<div/>')
13347
						.attr({
13348
							id: val.id || null,
13349
							"class": val.className
13350
								? val.className
13351
								: classes.cell + ' ' + klass
13352
						})
13353
						.append( val.contents )
13354
						.appendTo( row );
13355
				});
100729
				});
13356
			},
13357
13358
			// Shared for use by the styling frameworks
13359
			_forLayoutRow: function (items, fn) {
13360
				// As we are inserting dom elements, we need start / end in a
13361
				// specific order, this function is used for sorting the layout
13362
				// keys.
13363
				var layoutEnum = function (x) {
13364
					switch (x) {
13365
						case '': return 0;
13366
						case 'start': return 1;
13367
						case 'end': return 2;
13368
						default: return 3;
13369
					}
13370
				};
13371
100730
13372
				Object
100731
			if (config.split.length === 0) {
13373
					.keys(items)
100732
				dropButton.addClass('dtb-hide-drop');
13374
					.sort(function (a, b) {
13375
						return layoutEnum(a) - layoutEnum(b);
13376
					})
13377
					.forEach(function (key) {
13378
						fn(key, items[key]);
13379
					});
13380
			}
100733
			}
100734
100735
			splitDiv.append(dropButton).attr(dropButtonConfig.attr);
13381
		}
100736
		}
13382
	} );
100737
13383
	
100738
		var node = isSplit ? splitDiv.get(0) : button.get(0);
13384
	
100739
13385
	DataTable.feature = {};
100740
		return {
13386
	
100741
			conf: config,
13387
	// Third parameter is internal only!
100742
			node: node,
13388
	DataTable.feature.register = function ( name, cb, legacy ) {
100743
			nodeChild: node && node.children && node.children.length ? node.children[0] : null,
13389
		DataTable.ext.features[ name ] = cb;
100744
			inserter: isSplit ? splitDiv : inserter,
13390
	
100745
			buttons: [],
13391
		if (legacy) {
100746
			inCollection: inCollection,
13392
			_ext.feature.push({
100747
			isSplit: isSplit,
13393
				cFeature: legacy,
100748
			inSplit: inSplit,
13394
				fnInit: cb
100749
			collection: null,
13395
			});
100750
			textNode: textNode
13396
		}
100751
		};
13397
	};
100752
	},
13398
	
100753
13399
	function _divProp(el, prop, val) {
100754
	/**
13400
		if (val) {
100755
	 * Spin over buttons checking if splits should be enabled or not.
13401
			el[prop] = val;
100756
	 * @param {*} buttons Array of buttons to check
13402
		}
100757
	 */
13403
	}
100758
	_checkSplitEnable: function (buttons) {
13404
	
100759
		if (! buttons) {
13405
	DataTable.feature.register( 'div', function ( settings, opts ) {
100760
			buttons = this.s.buttons;
13406
		var n = $('<div>')[0];
13407
	
13408
		if (opts) {
13409
			_divProp(n, 'className', opts.className);
13410
			_divProp(n, 'id', opts.id);
13411
			_divProp(n, 'innerHTML', opts.html);
13412
			_divProp(n, 'textContent', opts.text);
13413
		}
13414
	
13415
		return n;
13416
	} );
13417
	
13418
	DataTable.feature.register( 'info', function ( settings, opts ) {
13419
		// For compatibility with the legacy `info` top level option
13420
		if (! settings.oFeatures.bInfo) {
13421
			return null;
13422
		}
13423
	
13424
		var
13425
			lang  = settings.oLanguage,
13426
			tid = settings.sTableId,
13427
			n = $('<div/>', {
13428
				'class': settings.oClasses.info.container,
13429
			} );
13430
	
13431
		opts = $.extend({
13432
			callback: lang.fnInfoCallback,
13433
			empty: lang.sInfoEmpty,
13434
			postfix: lang.sInfoPostFix,
13435
			search: lang.sInfoFiltered,
13436
			text: lang.sInfo,
13437
		}, opts);
13438
	
13439
	
13440
		// Update display on each draw
13441
		settings.aoDrawCallback.push(function (s) {
13442
			_fnUpdateInfo(s, opts, n);
13443
		});
13444
	
13445
		// For the first info display in the table, we add a callback and aria information.
13446
		if (! settings._infoEl) {
13447
			n.attr({
13448
				'aria-live': 'polite',
13449
				id: tid+'_info',
13450
				role: 'status'
13451
			});
13452
	
13453
			// Table is described by our info div
13454
			$(settings.nTable).attr( 'aria-describedby', tid+'_info' );
13455
	
13456
			settings._infoEl = n;
13457
		}
100761
		}
13458
	
100762
13459
		return n;
100763
		for (var i=0 ; i<buttons.length ; i++) {
13460
	}, 'i' );
100764
			var button = buttons[i];
13461
	
100765
100766
			// Check if the button is a split one and if so, determine
100767
			// its state
100768
			if (button.isSplit) {
100769
				var splitBtn = button.node.childNodes[1];
100770
100771
				if (this._checkAnyEnabled(button.buttons)) {
100772
					// Enable the split
100773
					$(splitBtn)
100774
						.removeClass(this.c.dom.button.disabled)
100775
						.prop('disabled', false);
100776
				}
100777
				else {
100778
					$(splitBtn)
100779
						.addClass(this.c.dom.button.disabled)
100780
						.prop('disabled', false);
100781
				}
100782
			}
100783
			else if (button.isCollection) {
100784
				// Nest down into collections
100785
				this._checkSplitEnable(button.buttons);
100786
			}
100787
		}
100788
	},
100789
13462
	/**
100790
	/**
13463
	 * Update the information elements in the display
100791
	 * Check an array of buttons and see if any are enabled in it
13464
	 *  @param {object} settings dataTables settings object
100792
	 * @param {*} buttons Button array
13465
	 *  @memberof DataTable#oApi
100793
	 * @returns true if a button is enabled, false otherwise
13466
	 */
100794
	 */
13467
	function _fnUpdateInfo ( settings, opts, node )
100795
	_checkAnyEnabled: function (buttons) {
13468
	{
100796
		for (var i=0 ; i<buttons.length ; i++) {
13469
		var
100797
			if (! buttons[i].disabled) {
13470
			start = settings._iDisplayStart+1,
100798
				return true;
13471
			end   = settings.fnDisplayEnd(),
100799
			}
13472
			max   = settings.fnRecordsTotal(),
13473
			total = settings.fnRecordsDisplay(),
13474
			out   = total
13475
				? opts.text
13476
				: opts.empty;
13477
	
13478
		if ( total !== max ) {
13479
			// Record set after filtering
13480
			out += ' ' + opts.search;
13481
		}
100800
		}
13482
	
100801
13483
		// Convert the macros
100802
		return false;
13484
		out += opts.postfix;
100803
	},
13485
		out = _fnMacros( settings, out );
100804
13486
	
100805
	/**
13487
		if ( opts.callback ) {
100806
	 * Get the button object from a node (recursive)
13488
			out = opts.callback.call( settings.oInstance,
100807
	 * @param  {node} node Button node
13489
				settings, start, end, max, total, out
100808
	 * @param  {array} [buttons] Button array, uses base if not defined
13490
			);
100809
	 * @return {object} Button object
100810
	 * @private
100811
	 */
100812
	_nodeToButton: function (node, buttons) {
100813
		if (!buttons) {
100814
			buttons = this.s.buttons;
13491
		}
100815
		}
13492
	
100816
13493
		node.html( out );
100817
		for (var i = 0, ien = buttons.length; i < ien; i++) {
13494
	
100818
			if (buttons[i].node === node || buttons[i].nodeChild === node) {
13495
		_fnCallbackFire(settings, null, 'info', [settings, node[0], out]);
100819
				return buttons[i];
13496
	}
100820
			}
13497
	
100821
13498
	var __searchCounter = 0;
100822
			if (buttons[i].buttons.length) {
13499
	
100823
				var ret = this._nodeToButton(node, buttons[i].buttons);
13500
	// opts
100824
13501
	// - text
100825
				if (ret) {
13502
	// - placeholder
100826
					return ret;
13503
	DataTable.feature.register( 'search', function ( settings, opts ) {
100827
				}
13504
		// Don't show the input if filtering isn't available on the table
100828
			}
13505
		if (! settings.oFeatures.bFilter) {
13506
			return null;
13507
		}
100829
		}
13508
	
100830
	},
13509
		var classes = settings.oClasses.search;
100831
13510
		var tableId = settings.sTableId;
100832
	/**
13511
		var language = settings.oLanguage;
100833
	 * Get container array for a button from a button node (recursive)
13512
		var previousSearch = settings.oPreviousSearch;
100834
	 * @param  {node} node Button node
13513
		var input = '<input type="search" class="'+classes.input+'"/>';
100835
	 * @param  {array} [buttons] Button array, uses base if not defined
13514
	
100836
	 * @return {array} Button's host array
13515
		opts = $.extend({
100837
	 * @private
13516
			placeholder: language.sSearchPlaceholder,
100838
	 */
13517
			processing: false,
100839
	_nodeToHost: function (node, buttons) {
13518
			text: language.sSearch
100840
		if (!buttons) {
13519
		}, opts);
100841
			buttons = this.s.buttons;
13520
	
13521
		// The _INPUT_ is optional - is appended if not present
13522
		if (opts.text.indexOf('_INPUT_') === -1) {
13523
			opts.text += '_INPUT_';
13524
		}
100842
		}
13525
	
100843
13526
		opts.text = _fnMacros(settings, opts.text);
100844
		for (var i = 0, ien = buttons.length; i < ien; i++) {
13527
	
100845
			if (buttons[i].node === node) {
13528
		// We can put the <input> outside of the label if it is at the start or end
100846
				return buttons;
13529
		// which helps improve accessability (not all screen readers like implicit
100847
			}
13530
		// for elements).
100848
13531
		var end = opts.text.match(/_INPUT_$/);
100849
			if (buttons[i].buttons.length) {
13532
		var start = opts.text.match(/^_INPUT_/);
100850
				var ret = this._nodeToHost(node, buttons[i].buttons);
13533
		var removed = opts.text.replace(/_INPUT_/, '');
100851
13534
		var str = '<label>' + opts.text + '</label>';
100852
				if (ret) {
13535
	
100853
					return ret;
13536
		if (start) {
100854
				}
13537
			str = '_INPUT_<label>' + removed + '</label>';
100855
			}
13538
		}
100856
		}
13539
		else if (end) {
100857
	},
13540
			str = '<label>' + removed + '</label>_INPUT_';
100858
100859
	/**
100860
	 * Handle a key press - determine if any button's key configured matches
100861
	 * what was typed and trigger the action if so.
100862
	 * @param  {string} character The character pressed
100863
	 * @param  {object} e Key event that triggered this call
100864
	 * @private
100865
	 */
100866
	_keypress: function (character, e) {
100867
		// Check if this button press already activated on another instance of Buttons
100868
		if (e._buttonsHandled) {
100869
			return;
13541
		}
100870
		}
13542
	
100871
13543
		var filter = $('<div>')
100872
		var run = function (conf, node) {
13544
			.addClass(classes.container)
100873
			if (!conf.key) {
13545
			.append(str.replace(/_INPUT_/, input));
13546
	
13547
		// add for and id to label and input
13548
		filter.find('label').attr('for', 'dt-search-' + __searchCounter);
13549
		filter.find('input').attr('id', 'dt-search-' + __searchCounter);
13550
		__searchCounter++;
13551
	
13552
		var searchFn = function(event) {
13553
			var val = this.value;
13554
	
13555
			if(previousSearch.return && event.key !== "Enter") {
13556
				return;
100874
				return;
13557
			}
100875
			}
13558
	
100876
13559
			/* Now do the filter */
100877
			if (conf.key === character) {
13560
			if ( val != previousSearch.search ) {
100878
				e._buttonsHandled = true;
13561
				_fnProcessingRun(settings, opts.processing, function () {
100879
				$(node).click();
13562
					previousSearch.search = val;
13563
			
13564
					_fnFilterComplete( settings, previousSearch );
13565
			
13566
					// Need to redraw, without resorting
13567
					settings._iDisplayStart = 0;
13568
					_fnDraw( settings );
13569
				});
13570
			}
100880
			}
13571
		};
100881
			else if ($.isPlainObject(conf.key)) {
13572
	
100882
				if (conf.key.key !== character) {
13573
		var searchDelay = settings.searchDelay !== null ?
100883
					return;
13574
			settings.searchDelay :
100884
				}
13575
			0;
100885
13576
	
100886
				if (conf.key.shiftKey && !e.shiftKey) {
13577
		var jqFilter = $('input', filter)
100887
					return;
13578
			.val( previousSearch.search )
100888
				}
13579
			.attr( 'placeholder', opts.placeholder )
100889
13580
			.on(
100890
				if (conf.key.altKey && !e.altKey) {
13581
				'keyup.DT search.DT input.DT paste.DT cut.DT',
100891
					return;
13582
				searchDelay ?
100892
				}
13583
					DataTable.util.debounce( searchFn, searchDelay ) :
100893
13584
					searchFn
100894
				if (conf.key.ctrlKey && !e.ctrlKey) {
13585
			)
100895
					return;
13586
			.on( 'mouseup.DT', function(e) {
100896
				}
13587
				// Edge fix! Edge 17 does not trigger anything other than mouse events when clicking
100897
13588
				// on the clear icon (Edge bug 17584515). This is safe in other browsers as `searchFn`
100898
				if (conf.key.metaKey && !e.metaKey) {
13589
				// checks the value to see if it has changed. In other browsers it won't have.
100899
					return;
13590
				setTimeout( function () {
13591
					searchFn.call(jqFilter[0], e);
13592
				}, 10);
13593
			} )
13594
			.on( 'keypress.DT', function(e) {
13595
				/* Prevent form submission */
13596
				if ( e.keyCode == 13 ) {
13597
					return false;
13598
				}
100900
				}
13599
			} )
100901
13600
			.attr('aria-controls', tableId);
100902
				// Made it this far - it is good
13601
	
100903
				e._buttonsHandled = true;
13602
		// Update the input elements whenever the table is filtered
100904
				$(node).click();
13603
		$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
13604
			if ( settings === s && jqFilter[0] !== document.activeElement ) {
13605
				jqFilter.val( typeof previousSearch.search !== 'function'
13606
					? previousSearch.search
13607
					: ''
13608
				);
13609
			}
100905
			}
13610
		} );
13611
	
13612
		return filter;
13613
	}, 'f' );
13614
	
13615
	// opts
13616
	// - type - button configuration
13617
	// - buttons - number of buttons to show - must be odd
13618
	DataTable.feature.register( 'paging', function ( settings, opts ) {
13619
		// Don't show the paging input if the table doesn't have paging enabled
13620
		if (! settings.oFeatures.bPaginate) {
13621
			return null;
13622
		}
13623
	
13624
		opts = $.extend({
13625
			buttons: DataTable.ext.pager.numbers_length,
13626
			type: settings.sPaginationType,
13627
			boundaryNumbers: true,
13628
			firstLast: true,
13629
			previousNext: true,
13630
			numbers: true
13631
		}, opts);
13632
	
13633
		var host = $('<div/>')
13634
			.addClass(settings.oClasses.paging.container + (opts.type ? ' paging_' + opts.type : ''))
13635
			.append(
13636
				$('<nav>')
13637
					.attr('aria-label', 'pagination')
13638
					.addClass(settings.oClasses.paging.nav)
13639
			);
13640
		var draw = function () {
13641
			_pagingDraw(settings, host.children(), opts);
13642
		};
100906
		};
13643
	
100907
13644
		settings.aoDrawCallback.push(draw);
100908
		var recurse = function (a) {
13645
	
100909
			for (var i = 0, ien = a.length; i < ien; i++) {
13646
		// Responsive redraw of paging control
100910
				run(a[i].conf, a[i].node);
13647
		$(settings.nTable).on('column-sizing.dt.DT', draw);
100911
13648
	
100912
				if (a[i].buttons.length) {
13649
		return host;
100913
					recurse(a[i].buttons);
13650
	}, 'p' );
100914
				}
13651
	
100915
			}
100916
		};
100917
100918
		recurse(this.s.buttons);
100919
	},
100920
13652
	/**
100921
	/**
13653
	 * Dynamically create the button type array based on the configuration options.
100922
	 * Remove a key from the key listener for this instance (to be used when a
13654
	 * This will only happen if the paging type is not defined.
100923
	 * button is removed)
100924
	 * @param  {object} conf Button configuration
100925
	 * @private
13655
	 */
100926
	 */
13656
	function _pagingDynamic(opts) {
100927
	_removeKey: function (conf) {
13657
		var out = [];
100928
		if (conf.key) {
13658
	
100929
			var character = $.isPlainObject(conf.key) ? conf.key.key : conf.key;
13659
		if (opts.numbers) {
100930
13660
			out.push('numbers');
100931
			// Remove only one character, as multiple buttons could have the
13661
		}
100932
			// same listening key
13662
	
100933
			var a = this.s.listenKeys.split('');
13663
		if (opts.previousNext) {
100934
			var idx = $.inArray(character, a);
13664
			out.unshift('previous');
100935
			a.splice(idx, 1);
13665
			out.push('next');
100936
			this.s.listenKeys = a.join('');
13666
		}
13667
	
13668
		if (opts.firstLast) {
13669
			out.unshift('first');
13670
			out.push('last');
13671
		}
13672
	
13673
		return out;
13674
	}
13675
	
13676
	function _pagingDraw(settings, host, opts) {
13677
		if (! settings._bInitComplete) {
13678
			return;
13679
		}
100937
		}
13680
	
100938
	},
13681
		var
100939
13682
			plugin = opts.type
100940
	/**
13683
				? DataTable.ext.pager[ opts.type ]
100941
	 * Resolve a button configuration
13684
				: _pagingDynamic,
100942
	 * @param  {string|function|object} conf Button config to resolve
13685
			aria = settings.oLanguage.oAria.paginate || {},
100943
	 * @return {object} Button configuration
13686
			start      = settings._iDisplayStart,
100944
	 * @private
13687
			len        = settings._iDisplayLength,
100945
	 */
13688
			visRecords = settings.fnRecordsDisplay(),
100946
	_resolveExtends: function (conf) {
13689
			all        = len === -1,
100947
		var that = this;
13690
			page = all ? 0 : Math.ceil( start / len ),
100948
		var dt = this.s.dt;
13691
			pages = all ? 1 : Math.ceil( visRecords / len ),
100949
		var i, ien;
13692
			buttons = [],
100950
		var toConfObject = function (base) {
13693
			buttonEls = [],
100951
			var loop = 0;
13694
			buttonsNested = plugin(opts)
100952
13695
				.map(function (val) {
100953
			// Loop until we have resolved to a button configuration, or an
13696
					return val === 'numbers'
100954
			// array of button configurations (which will be iterated
13697
						? _pagingNumbers(page, pages, opts.buttons, opts.boundaryNumbers)
100955
			// separately)
13698
						: val;
100956
			while (!$.isPlainObject(base) && !Array.isArray(base)) {
13699
				});
100957
				if (base === undefined) {
13700
	
100958
					return;
13701
		// .flat() would be better, but not supported in old Safari
13702
		buttons = buttons.concat.apply(buttons, buttonsNested);
13703
	
13704
		for (var i=0 ; i<buttons.length ; i++) {
13705
			var button = buttons[i];
13706
	
13707
			var btnInfo = _pagingButtonInfo(settings, button, page, pages);
13708
			var btn = _fnRenderer( settings, 'pagingButton' )(
13709
				settings,
13710
				button,
13711
				btnInfo.display,
13712
				btnInfo.active,
13713
				btnInfo.disabled
13714
			);
13715
	
13716
			var ariaLabel = typeof button === 'string'
13717
				? aria[ button ]
13718
				: aria.number
13719
					? aria.number + (button+1)
13720
					: null;
13721
	
13722
			// Common attributes
13723
			$(btn.clicker).attr({
13724
				'aria-controls': settings.sTableId,
13725
				'aria-disabled': btnInfo.disabled ? 'true' : null,
13726
				'aria-current': btnInfo.active ? 'page' : null,
13727
				'aria-label': ariaLabel,
13728
				'data-dt-idx': button,
13729
				'tabIndex': btnInfo.disabled
13730
					? -1
13731
					: settings.iTabIndex && btn.clicker[0].nodeName.toLowerCase() !== 'span'
13732
						? settings.iTabIndex
13733
						: null, // `0` doesn't need a tabIndex since it is the default
13734
			});
13735
	
13736
			if (typeof button !== 'number') {
13737
				$(btn.clicker).addClass(button);
13738
			}
13739
	
13740
			_fnBindAction(
13741
				btn.clicker, {action: button}, function(e) {
13742
					e.preventDefault();
13743
	
13744
					_fnPageChange( settings, e.data.action, true );
13745
				}
100959
				}
13746
			);
100960
13747
	
100961
				if (typeof base === 'function') {
13748
			buttonEls.push(btn.display);
100962
					base = base.call(that, dt, conf);
100963
100964
					if (!base) {
100965
						return false;
100966
					}
100967
				}
100968
				else if (typeof base === 'string') {
100969
					if (!_dtButtons[base]) {
100970
						return { html: base };
100971
					}
100972
100973
					base = _dtButtons[base];
100974
				}
100975
100976
				loop++;
100977
				if (loop > 30) {
100978
					// Protect against misconfiguration killing the browser
100979
					throw 'Buttons: Too many iterations';
100980
				}
100981
			}
100982
100983
			return Array.isArray(base) ? base : $.extend({}, base);
100984
		};
100985
100986
		conf = toConfObject(conf);
100987
100988
		while (conf && conf.extend) {
100989
			// Use `toConfObject` in case the button definition being extended
100990
			// is itself a string or a function
100991
			if (!_dtButtons[conf.extend]) {
100992
				throw 'Cannot extend unknown button type: ' + conf.extend;
100993
			}
100994
100995
			var objArray = toConfObject(_dtButtons[conf.extend]);
100996
			if (Array.isArray(objArray)) {
100997
				return objArray;
100998
			}
100999
			else if (!objArray) {
101000
				// This is a little brutal as it might be possible to have a
101001
				// valid button without the extend, but if there is no extend
101002
				// then the host button would be acting in an undefined state
101003
				return false;
101004
			}
101005
101006
			// Stash the current class name
101007
			var originalClassName = objArray.className;
101008
101009
			if (conf.config !== undefined && objArray.config !== undefined) {
101010
				conf.config = $.extend({}, objArray.config, conf.config);
101011
			}
101012
101013
			conf = $.extend({}, objArray, conf);
101014
101015
			// The extend will have overwritten the original class name if the
101016
			// `conf` object also assigned a class, but we want to concatenate
101017
			// them so they are list that is combined from all extended buttons
101018
			if (originalClassName && conf.className !== originalClassName) {
101019
				conf.className = originalClassName + ' ' + conf.className;
101020
			}
101021
101022
			// Although we want the `conf` object to overwrite almost all of
101023
			// the properties of the object being extended, the `extend`
101024
			// property should come from the object being extended
101025
			conf.extend = objArray.extend;
13749
		}
101026
		}
13750
	
101027
13751
		var wrapped = _fnRenderer(settings, 'pagingContainer')(
101028
		// Buttons to be added to a collection  -gives the ability to define
13752
			settings, buttonEls
101029
		// if buttons should be added to the start or end of a collection
13753
		);
101030
		var postfixButtons = conf.postfixButtons;
13754
	
101031
		if (postfixButtons) {
13755
		var activeEl = host.find(document.activeElement).data('dt-idx');
101032
			if (!conf.buttons) {
13756
	
101033
				conf.buttons = [];
13757
		host.empty().append(wrapped);
101034
			}
13758
	
101035
13759
		if ( activeEl !== undefined ) {
101036
			for (i = 0, ien = postfixButtons.length; i < ien; i++) {
13760
			host.find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
101037
				conf.buttons.push(postfixButtons[i]);
101038
			}
13761
		}
101039
		}
13762
	
13763
		// Responsive - check if the buttons are over two lines based on the
13764
		// height of the buttons and the container.
13765
		if (buttonEls.length) {
13766
			var outerHeight = $(buttonEls[0]).outerHeight();
13767
101040
13768
			if (
101041
		var prefixButtons = conf.prefixButtons;
13769
				opts.buttons > 1 && // prevent infinite
101042
		if (prefixButtons) {
13770
				outerHeight > 0 && // will be 0 if hidden
101043
			if (!conf.buttons) {
13771
				$(host).height() >= (outerHeight * 2) - 10
101044
				conf.buttons = [];
13772
			) {
101045
			}
13773
				_pagingDraw(settings, host, $.extend({}, opts, { buttons: opts.buttons - 2 }));
101046
101047
			for (i = 0, ien = prefixButtons.length; i < ien; i++) {
101048
				conf.buttons.splice(i, 0, prefixButtons[i]);
13774
			}
101049
			}
13775
		}
101050
		}
13776
	}
101051
13777
	
101052
		return conf;
101053
	},
101054
13778
	/**
101055
	/**
13779
	 * Get properties for a button based on the current paging state of the table
101056
	 * Display (and replace if there is an existing one) a popover attached to a button
13780
	 *
101057
	 * @param {string|node} content Content to show
13781
	 * @param {*} settings DT settings object
101058
	 * @param {DataTable.Api} hostButton DT API instance of the button
13782
	 * @param {*} button The button type in question
101059
	 * @param {object} inOpts Options (see object below for all options)
13783
	 * @param {*} page Table's current page
13784
	 * @param {*} pages Number of pages
13785
	 * @returns Info object
13786
	 */
101060
	 */
13787
	function _pagingButtonInfo(settings, button, page, pages) {
101061
	_popover: function (content, hostButton, inOpts) {
13788
		var lang = settings.oLanguage.oPaginate;
101062
		var dt = hostButton;
13789
		var o = {
101063
		var c = this.c;
13790
			display: '',
101064
		var closed = false;
13791
			active: false,
101065
		var options = $.extend(
13792
			disabled: false
101066
			{
101067
				align: 'button-left', // button-right, dt-container, split-left, split-right
101068
				autoClose: false,
101069
				background: true,
101070
				backgroundClassName: 'dt-button-background',
101071
				closeButton: true,
101072
				containerClassName: c.dom.collection.container.className,
101073
				contentClassName: c.dom.collection.container.content.className,
101074
				collectionLayout: '',
101075
				collectionTitle: '',
101076
				dropup: false,
101077
				fade: 400,
101078
				popoverTitle: '',
101079
				rightAlignClassName: 'dt-button-right',
101080
				tag: c.dom.collection.container.tag
101081
			},
101082
			inOpts
101083
		);
101084
101085
		var containerSelector =
101086
			options.tag + '.' + options.containerClassName.replace(/ /g, '.');
101087
		var hostButtonNode = hostButton.node();
101088
		var hostNode = options.collectionLayout.includes('fixed') ? $('body') : hostButton.node();
101089
101090
		var close = function () {
101091
			closed = true;
101092
101093
			_fadeOut($(containerSelector), options.fade, function () {
101094
				$(this).detach();
101095
			});
101096
101097
			$(
101098
				dt
101099
					.buttons('[aria-haspopup="dialog"][aria-expanded="true"]')
101100
					.nodes()
101101
			).attr('aria-expanded', 'false');
101102
101103
			$('div.dt-button-background').off('click.dtb-collection');
101104
			Buttons.background(
101105
				false,
101106
				options.backgroundClassName,
101107
				options.fade,
101108
				hostNode
101109
			);
101110
101111
			$(window).off('resize.resize.dtb-collection');
101112
			$('body').off('.dtb-collection');
101113
			dt.off('buttons-action.b-internal');
101114
			dt.off('destroy.dtb-popover');
101115
101116
			$('body').trigger('buttons-popover-hide.dt');
13793
		};
101117
		};
13794
	
101118
13795
		switch ( button ) {
101119
		if (content === false) {
13796
			case 'ellipsis':
101120
			close();
13797
				o.display = '&#x2026;';
101121
			return;
13798
				break;
13799
	
13800
			case 'first':
13801
				o.display = lang.sFirst;
13802
	
13803
				if (page === 0) {
13804
					o.disabled = true;
13805
				}
13806
				break;
13807
	
13808
			case 'previous':
13809
				o.display = lang.sPrevious;
13810
	
13811
				if ( page === 0 ) {
13812
					o.disabled = true;
13813
				}
13814
				break;
13815
	
13816
			case 'next':
13817
				o.display = lang.sNext;
13818
	
13819
				if ( pages === 0 || page === pages-1 ) {
13820
					o.disabled = true;
13821
				}
13822
				break;
13823
	
13824
			case 'last':
13825
				o.display = lang.sLast;
13826
	
13827
				if ( pages === 0 || page === pages-1 ) {
13828
					o.disabled = true;
13829
				}
13830
				break;
13831
	
13832
			default:
13833
				if ( typeof button === 'number' ) {
13834
					o.display = settings.fnFormatNumber( button + 1 );
13835
					
13836
					if (page === button) {
13837
						o.active = true;
13838
					}
13839
				}
13840
				break;
13841
		}
13842
	
13843
		return o;
13844
	}
13845
	
13846
	/**
13847
	 * Compute what number buttons to show in the paging control
13848
	 *
13849
	 * @param {*} page Current page
13850
	 * @param {*} pages Total number of pages
13851
	 * @param {*} buttons Target number of number buttons
13852
	 * @param {boolean} addFirstLast Indicate if page 1 and end should be included
13853
	 * @returns Buttons to show
13854
	 */
13855
	function _pagingNumbers ( page, pages, buttons, addFirstLast ) {
13856
		var
13857
			numbers = [],
13858
			half = Math.floor(buttons / 2),
13859
			before = addFirstLast ? 2 : 1,
13860
			after = addFirstLast ? 1 : 0;
13861
	
13862
		if ( pages <= buttons ) {
13863
			numbers = _range(0, pages);
13864
		}
13865
		else if (buttons === 1) {
13866
			// Single button - current page only
13867
			numbers = [page];
13868
		}
101122
		}
13869
		else if (buttons === 3) {
101123
13870
			// Special logic for just three buttons
101124
		var existingExpanded = $(
13871
			if (page <= 1) {
101125
			dt.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()
13872
				numbers = [0, 1, 'ellipsis'];
101126
		);
13873
			}
101127
		if (existingExpanded.length) {
13874
			else if (page >= pages - 2) {
101128
			// Reuse the current position if the button that was triggered is inside an existing collection
13875
				numbers = _range(pages-2, pages);
101129
			if (hostNode.closest(containerSelector).length) {
13876
				numbers.unshift('ellipsis');
101130
				hostNode = existingExpanded.eq(0);
13877
			}
13878
			else {
13879
				numbers = ['ellipsis', page, 'ellipsis'];
13880
			}
101131
			}
101132
101133
			close();
13881
		}
101134
		}
13882
		else if ( page <= half ) {
101135
13883
			numbers = _range(0, buttons-before);
101136
		// Sort buttons if defined
13884
			numbers.push('ellipsis');
101137
		if (options.sort) {
13885
	
101138
			var elements = $('button', content)
13886
			if (addFirstLast) {
101139
				.map(function (idx, el) {
13887
				numbers.push(pages-1);
101140
					return {
13888
			}
101141
						text: $(el).text(),
101142
						el: el
101143
					};
101144
				})
101145
				.toArray();
101146
101147
			elements.sort(function (a, b) {
101148
				return a.text.localeCompare(b.text);
101149
			});
101150
101151
			$(content).append(elements.map(function (v) {
101152
				return v.el;
101153
			}));
101154
		}
101155
101156
		// Try to be smart about the layout
101157
		var cnt = $('.dt-button', content).length;
101158
		var mod = '';
101159
101160
		if (cnt === 3) {
101161
			mod = 'dtb-b3';
13889
		}
101162
		}
13890
		else if ( page >= pages - 1 - half ) {
101163
		else if (cnt === 2) {
13891
			numbers = _range(pages-(buttons-before), pages);
101164
			mod = 'dtb-b2';
13892
			numbers.unshift('ellipsis');
13893
	
13894
			if (addFirstLast) {
13895
				numbers.unshift(0);
13896
			}
13897
		}
101165
		}
13898
		else {
101166
		else if (cnt === 1) {
13899
			numbers = _range(page-half+before, page+half-after);
101167
			mod = 'dtb-b1';
13900
			numbers.push('ellipsis');
13901
			numbers.unshift('ellipsis');
13902
	
13903
			if (addFirstLast) {
13904
				numbers.push(pages-1);
13905
				numbers.unshift(0);
13906
			}
13907
		}
101168
		}
13908
	
101169
13909
		return numbers;
101170
		var display = $('<' + options.tag + '/>')
13910
	}
101171
			.addClass(options.containerClassName)
13911
	
101172
			.addClass(options.collectionLayout)
13912
	var __lengthCounter = 0;
101173
			.addClass(options.splitAlignClass)
13913
	
101174
			.addClass(mod)
13914
	// opts
101175
			.css('display', 'none')
13915
	// - menu
101176
			.attr({
13916
	// - text
101177
				'aria-modal': true,
13917
	DataTable.feature.register( 'pageLength', function ( settings, opts ) {
101178
				role: 'dialog'
13918
		var features = settings.oFeatures;
101179
			});
13919
	
101180
13920
		// For compatibility with the legacy `pageLength` top level option
101181
		content = $(content)
13921
		if (! features.bPaginate || ! features.bLengthChange) {
101182
			.addClass(options.contentClassName)
13922
			return null;
101183
			.attr('role', 'menu')
101184
			.appendTo(display);
101185
101186
		hostButtonNode.attr('aria-expanded', 'true');
101187
101188
		if (hostNode.parents('body')[0] !== document.body) {
101189
			hostNode = $(document.body).children('div, section, p').last();
13923
		}
101190
		}
13924
	
101191
13925
		opts = $.extend({
101192
		if (options.popoverTitle) {
13926
			menu: settings.aLengthMenu,
101193
			display.prepend(
13927
			text: settings.oLanguage.sLengthMenu
101194
				'<div class="dt-button-collection-title">' +
13928
		}, opts);
101195
					options.popoverTitle +
13929
	
101196
					'</div>'
13930
		var
101197
			);
13931
			classes  = settings.oClasses.length,
13932
			tableId  = settings.sTableId,
13933
			menu     = opts.menu,
13934
			lengths  = [],
13935
			language = [],
13936
			i;
13937
	
13938
		// Options can be given in a number of ways
13939
		if (Array.isArray( menu[0] )) {
13940
			// Old 1.x style - 2D array
13941
			lengths = menu[0];
13942
			language = menu[1];
13943
		}
101198
		}
13944
		else {
101199
		else if (options.collectionTitle) {
13945
			for ( i=0 ; i<menu.length ; i++ ) {
101200
			display.prepend(
13946
				// An object with different label and value
101201
				'<div class="dt-button-collection-title">' +
13947
				if ($.isPlainObject(menu[i])) {
101202
					options.collectionTitle +
13948
					lengths.push(menu[i].value);
101203
					'</div>'
13949
					language.push(menu[i].label);
101204
			);
13950
				}
13951
				else {
13952
					// Or just a number to display and use
13953
					lengths.push(menu[i]);
13954
					language.push(menu[i]);
13955
				}
13956
			}
13957
		}
101205
		}
13958
	
101206
13959
		// We can put the <select> outside of the label if it is at the start or
101207
		if (options.closeButton) {
13960
		// end which helps improve accessability (not all screen readers like
101208
			display
13961
		// implicit for elements).
101209
				.prepend('<div class="dtb-popover-close">&times;</div>')
13962
		var end = opts.text.match(/_MENU_$/);
101210
				.addClass('dtb-collection-closeable');
13963
		var start = opts.text.match(/^_MENU_/);
13964
		var removed = opts.text.replace(/_MENU_/, '');
13965
		var str = '<label>' + opts.text + '</label>';
13966
	
13967
		if (start) {
13968
			str = '_MENU_<label>' + removed + '</label>';
13969
		}
101211
		}
13970
		else if (end) {
101212
13971
			str = '<label>' + removed + '</label>_MENU_';
101213
		_fadeIn(display.insertAfter(hostNode), options.fade);
101214
101215
		var tableContainer = $(hostButton.table().container());
101216
		var position = display.css('position');
101217
101218
		if (options.span === 'container' || options.align === 'dt-container') {
101219
			hostNode = hostNode.parent();
101220
			display.css('width', tableContainer.width());
13972
		}
101221
		}
13973
	
101222
13974
		// Wrapper element - use a span as a holder for where the select will go
101223
		// Align the popover relative to the DataTables container
13975
		var tmpId = 'tmp-' + (+new Date())
101224
		// Useful for wide popovers such as SearchPanes
13976
		var div = $('<div/>')
101225
		if (position === 'absolute') {
13977
			.addClass( classes.container )
101226
			// Align relative to the host button
13978
			.append(
101227
			var offsetParent = $(hostNode[0].offsetParent);
13979
				str.replace( '_MENU_', '<span id="'+tmpId+'"></span>' )
101228
			var buttonPosition = hostNode.position();
13980
			);
101229
			var buttonOffset = hostNode.offset();
13981
	
101230
			var tableSizes = offsetParent.offset();
13982
		// Save text node content for macro updating
101231
			var containerPosition = offsetParent.position();
13983
		var textNodes = [];
101232
			var computed = window.getComputedStyle(offsetParent[0]);
13984
		Array.prototype.slice.call(div.find('label')[0].childNodes).forEach(function (el) {
101233
13985
			if (el.nodeType === Node.TEXT_NODE) {
101234
			tableSizes.height = offsetParent.outerHeight();
13986
				textNodes.push({
101235
			tableSizes.width =
13987
					el: el,
101236
				offsetParent.width() + parseFloat(computed.paddingLeft);
13988
					text: el.textContent
101237
			tableSizes.right = tableSizes.left + tableSizes.width;
13989
				});
101238
			tableSizes.bottom = tableSizes.top + tableSizes.height;
13990
			}
101239
13991
		});
101240
			// Set the initial position so we can read height / width
13992
	
101241
			var top = buttonPosition.top + hostNode.outerHeight();
13993
		// Update the label text in case it has an entries value
101242
			var left = buttonPosition.left;
13994
		var updateEntries = function (len) {
101243
13995
			textNodes.forEach(function (node) {
101244
			display.css({
13996
				node.el.textContent = _fnMacros(settings, node.text, len);
101245
				top: top,
101246
				left: left
13997
			});
101247
			});
13998
		}
13999
	
14000
		// Next, the select itself, along with the options
14001
		var select = $('<select/>', {
14002
			'aria-controls': tableId,
14003
			'class':         classes.select
14004
		} );
14005
	
14006
		for ( i=0 ; i<lengths.length ; i++ ) {
14007
			// Attempt to look up the length from the i18n options
14008
			var label = settings.api.i18n('lengthLabels.' + lengths[i], null);
14009
101248
14010
			if (label === null) {
101249
			// Get the popover position
14011
				// If not present, fallback to old style
101250
			computed = window.getComputedStyle(display[0]);
14012
				label = typeof language[i] === 'number' ?
101251
			var popoverSizes = display.offset();
14013
					settings.fnFormatNumber( language[i] ) :
101252
14014
					language[i];
101253
			popoverSizes.height = display.outerHeight();
101254
			popoverSizes.width = display.outerWidth();
101255
			popoverSizes.right = popoverSizes.left + popoverSizes.width;
101256
			popoverSizes.bottom = popoverSizes.top + popoverSizes.height;
101257
			popoverSizes.marginTop = parseFloat(computed.marginTop);
101258
			popoverSizes.marginBottom = parseFloat(computed.marginBottom);
101259
101260
			// First position per the class requirements - pop up and right align
101261
			if (options.dropup) {
101262
				top =
101263
					buttonPosition.top -
101264
					popoverSizes.height -
101265
					popoverSizes.marginTop -
101266
					popoverSizes.marginBottom;
14015
			}
101267
			}
14016
101268
14017
			select[0][ i ] = new Option(label, lengths[i]);
101269
			if (
14018
		}
101270
				options.align === 'button-right' ||
14019
	
101271
				display.hasClass(options.rightAlignClassName)
14020
		// add for and id to label and input
101272
			) {
14021
		div.find('label').attr('for', 'dt-length-' + __lengthCounter);
101273
				left =
14022
		select.attr('id', 'dt-length-' + __lengthCounter);
101274
					buttonPosition.left -
14023
		__lengthCounter++;
101275
					popoverSizes.width +
14024
	
101276
					hostNode.outerWidth();
14025
		// Swap in the select list
101277
			}
14026
		div.find('#' + tmpId).replaceWith(select);
101278
14027
	
101279
			// Container alignment - make sure it doesn't overflow the table container
14028
		// Can't use `select` variable as user might provide their own and the
101280
			if (
14029
		// reference is broken by the use of outerHTML
101281
				options.align === 'dt-container' ||
14030
		$('select', div)
101282
				options.align === 'container'
14031
			.val( settings._iDisplayLength )
101283
			) {
14032
			.on( 'change.DT', function() {
101284
				if (left < buttonPosition.left) {
14033
				_fnLengthChange( settings, $(this).val() );
101285
					left = -buttonPosition.left;
14034
				_fnDraw( settings );
101286
				}
14035
			} );
14036
	
14037
		// Update node value whenever anything changes the table's length
14038
		$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {
14039
			if ( settings === s ) {
14040
				$('select', div).val( len );
14041
	
14042
				// Resolve plurals in the text for the new length
14043
				updateEntries(len);
14044
			}
101287
			}
14045
		} );
14046
	
14047
		updateEntries(settings._iDisplayLength);
14048
	
14049
		return div;
14050
	}, 'l' );
14051
	
14052
	// jQuery access
14053
	$.fn.dataTable = DataTable;
14054
	
14055
	// Provide access to the host jQuery object (circular reference)
14056
	DataTable.$ = $;
14057
	
14058
	// Legacy aliases
14059
	$.fn.dataTableSettings = DataTable.settings;
14060
	$.fn.dataTableExt = DataTable.ext;
14061
	
14062
	// With a capital `D` we return a DataTables API instance rather than a
14063
	// jQuery object
14064
	$.fn.DataTable = function ( opts ) {
14065
		return $(this).dataTable( opts ).api();
14066
	};
14067
	
14068
	// All properties that are available to $.fn.dataTable should also be
14069
	// available on $.fn.DataTable
14070
	$.each( DataTable, function ( prop, val ) {
14071
		$.fn.DataTable[ prop ] = val;
14072
	} );
14073
101288
14074
	return DataTable;
101289
			// Window adjustment
14075
}));
101290
			if (
101291
				containerPosition.left + left + popoverSizes.width >
101292
				$(window).width()
101293
			) {
101294
				// Overflowing the document to the right
101295
				left =
101296
					$(window).width() -
101297
					popoverSizes.width -
101298
					containerPosition.left;
101299
			}
14076
101300
101301
			if (buttonOffset.left + left < 0) {
101302
				// Off to the left of the document
101303
				left = -buttonOffset.left;
101304
			}
14077
101305
14078
/*! DataTables styling integration
101306
			if (
14079
 * © SpryMedia Ltd - datatables.net/license
101307
				containerPosition.top + top + popoverSizes.height >
14080
 */
101308
				$(window).height() + $(window).scrollTop()
101309
			) {
101310
				// Pop up if otherwise we'd need the user to scroll down
101311
				top =
101312
					buttonPosition.top -
101313
					popoverSizes.height -
101314
					popoverSizes.marginTop -
101315
					popoverSizes.marginBottom;
101316
			}
14081
101317
14082
(function( factory ){
101318
			if (offsetParent.offset().top + top < $(window).scrollTop()) {
14083
	if ( typeof define === 'function' && define.amd ) {
101319
				// Correction for when the top is beyond the top of the page
14084
		// AMD
101320
				top = buttonPosition.top + hostNode.outerHeight();
14085
		define( ['jquery', 'datatables.net'], function ( $ ) {
14086
			return factory( $, window, document );
14087
		} );
14088
	}
14089
	else if ( typeof exports === 'object' ) {
14090
		// CommonJS
14091
		var jq = require('jquery');
14092
		var cjsRequires = function (root, $) {
14093
			if ( ! $.fn.dataTable ) {
14094
				require('datatables.net')(root, $);
14095
			}
101321
			}
14096
		};
14097
101322
14098
		if (typeof window === 'undefined') {
101323
			// Calculations all done - now set it
14099
			module.exports = function (root, $) {
101324
			display.css({
14100
				if ( ! root ) {
101325
				top: top,
14101
					// CommonJS environments without a window global must pass a
101326
				left: left
14102
					// root. This will give an error otherwise
101327
			});
14103
					root = window;
101328
		}
14104
				}
101329
		else {
101330
			// Fix position - centre on screen
101331
			var place = function () {
101332
				var half = $(window).height() / 2;
14105
101333
14106
				if ( ! $ ) {
101334
				var top = display.height() / 2;
14107
					$ = jq( root );
101335
				if (top > half) {
101336
					top = half;
14108
				}
101337
				}
14109
101338
14110
				cjsRequires( root, $ );
101339
				display.css('marginTop', top * -1);
14111
				return factory( $, root, root.document );
14112
			};
101340
			};
101341
101342
			place();
101343
101344
			$(window).on('resize.dtb-collection', function () {
101345
				place();
101346
			});
14113
		}
101347
		}
14114
		else {
101348
14115
			cjsRequires( window, jq );
101349
		if (options.background) {
14116
			module.exports = factory( jq, window, window.document );
101350
			Buttons.background(
101351
				true,
101352
				options.backgroundClassName,
101353
				options.fade,
101354
				options.backgroundHost || hostNode
101355
			);
101356
		}
101357
101358
		// This is bonkers, but if we don't have a click listener on the
101359
		// background element, iOS Safari will ignore the body click
101360
		// listener below. An empty function here is all that is
101361
		// required to make it work...
101362
		$('div.dt-button-background').on(
101363
			'click.dtb-collection',
101364
			function () {}
101365
		);
101366
101367
		if (options.autoClose) {
101368
			setTimeout(function () {
101369
				dt.on('buttons-action.b-internal', function (e, btn, dt, node) {
101370
					if (node[0] === hostNode[0]) {
101371
						return;
101372
					}
101373
					close();
101374
				});
101375
			}, 0);
14117
		}
101376
		}
101377
101378
		$(display).trigger('buttons-popover.dt');
101379
101380
		dt.on('destroy.dtb-popover', close);
101381
101382
		setTimeout(function () {
101383
			closed = false;
101384
			$('body')
101385
				.on('click.dtb-collection', function (e) {
101386
					if (closed) {
101387
						return;
101388
					}
101389
101390
					// andSelf is deprecated in jQ1.8, but we want 1.7 compat
101391
					var back = $.fn.addBack ? 'addBack' : 'andSelf';
101392
					var parent = $(e.target).parent()[0];
101393
101394
					if (
101395
						(!$(e.target).parents()[back]().filter(content)
101396
							.length &&
101397
							!$(parent).hasClass('dt-buttons')) ||
101398
						$(e.target).hasClass('dt-button-background')
101399
					) {
101400
						close();
101401
					}
101402
				})
101403
				.on('keyup.dtb-collection', function (e) {
101404
					if (e.keyCode === 27) {
101405
						close();
101406
					}
101407
				})
101408
				.on('keydown.dtb-collection', function (e) {
101409
					// Focus trap for tab key
101410
					var elements = $('a, button', content);
101411
					var active = document.activeElement;
101412
101413
					if (e.keyCode !== 9) {
101414
						// tab
101415
						return;
101416
					}
101417
101418
					if (elements.index(active) === -1) {
101419
						// If current focus is not inside the popover
101420
						elements.first().focus();
101421
						e.preventDefault();
101422
					}
101423
					else if (e.shiftKey) {
101424
						// Reverse tabbing order when shift key is pressed
101425
						if (active === elements[0]) {
101426
							elements.last().focus();
101427
							e.preventDefault();
101428
						}
101429
					}
101430
					else {
101431
						if (active === elements.last()[0]) {
101432
							elements.first().focus();
101433
							e.preventDefault();
101434
						}
101435
					}
101436
				});
101437
		}, 0);
101438
	}
101439
});
101440
101441
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
101442
 * Statics
101443
 */
101444
101445
/**
101446
 * Show / hide a background layer behind a collection
101447
 * @param  {boolean} Flag to indicate if the background should be shown or
101448
 *   hidden
101449
 * @param  {string} Class to assign to the background
101450
 * @static
101451
 */
101452
Buttons.background = function (show, className, fade, insertPoint) {
101453
	if (fade === undefined) {
101454
		fade = 400;
101455
	}
101456
	if (!insertPoint) {
101457
		insertPoint = document.body;
101458
	}
101459
101460
	if (show) {
101461
		_fadeIn(
101462
			$('<div/>')
101463
				.addClass(className)
101464
				.css('display', 'none')
101465
				.insertAfter(insertPoint),
101466
			fade
101467
		);
14118
	}
101468
	}
14119
	else {
101469
	else {
14120
		// Browser
101470
		_fadeOut($('div.' + className), fade, function () {
14121
		factory( jQuery, window, document );
101471
			$(this).removeClass(className).remove();
101472
		});
101473
	}
101474
};
101475
101476
/**
101477
 * Instance selector - select Buttons instances based on an instance selector
101478
 * value from the buttons assigned to a DataTable. This is only useful if
101479
 * multiple instances are attached to a DataTable.
101480
 * @param  {string|int|array} Instance selector - see `instance-selector`
101481
 *   documentation on the DataTables site
101482
 * @param  {array} Button instance array that was attached to the DataTables
101483
 *   settings object
101484
 * @return {array} Buttons instances
101485
 * @static
101486
 */
101487
Buttons.instanceSelector = function (group, buttons) {
101488
	if (group === undefined || group === null) {
101489
		return $.map(buttons, function (v) {
101490
			return v.inst;
101491
		});
14122
	}
101492
	}
14123
}(function( $, window, document ) {
14124
'use strict';
14125
var DataTable = $.fn.dataTable;
14126
101493
101494
	var ret = [];
101495
	var names = $.map(buttons, function (v) {
101496
		return v.name;
101497
	});
14127
101498
101499
	// Flatten the group selector into an array of single options
101500
	var process = function (input) {
101501
		if (Array.isArray(input)) {
101502
			for (var i = 0, ien = input.length; i < ien; i++) {
101503
				process(input[i]);
101504
			}
101505
			return;
101506
		}
14128
101507
101508
		if (typeof input === 'string') {
101509
			if (input.indexOf(',') !== -1) {
101510
				// String selector, list of names
101511
				process(input.split(','));
101512
			}
101513
			else {
101514
				// String selector individual name
101515
				var idx = $.inArray(input.trim(), names);
14129
101516
101517
				if (idx !== -1) {
101518
					ret.push(buttons[idx].inst);
101519
				}
101520
			}
101521
		}
101522
		else if (typeof input === 'number') {
101523
			// Index selector
101524
			ret.push(buttons[input].inst);
101525
		}
101526
		else if (typeof input === 'object' && input.nodeName) {
101527
			// Element selector
101528
			for (var j = 0; j < buttons.length; j++) {
101529
				if (buttons[j].inst.dom.container[0] === input) {
101530
					ret.push(buttons[j].inst);
101531
				}
101532
			}
101533
		}
101534
		else if (typeof input === 'object') {
101535
			// Actual instance selector
101536
			ret.push(input);
101537
		}
101538
	};
14130
101539
14131
return DataTable;
101540
	process(group);
14132
}));
14133
101541
101542
	return ret;
101543
};
14134
101544
14135
/*! Buttons for DataTables 3.2.5
101545
/**
14136
 * © SpryMedia Ltd - datatables.net/license
101546
 * Button selector - select one or more buttons from a selector input so some
101547
 * operation can be performed on them.
101548
 * @param  {array} Button instances array that the selector should operate on
101549
 * @param  {string|int|node|jQuery|array} Button selector - see
101550
 *   `button-selector` documentation on the DataTables site
101551
 * @return {array} Array of objects containing `inst` and `idx` properties of
101552
 *   the selected buttons so you know which instance each button belongs to.
101553
 * @static
14137
 */
101554
 */
101555
Buttons.buttonSelector = function (insts, selector) {
101556
	var ret = [];
101557
	var nodeBuilder = function (a, buttons, baseIdx) {
101558
		var button;
101559
		var idx;
14138
101560
14139
(function( factory ){
101561
		for (var i = 0, ien = buttons.length; i < ien; i++) {
14140
	if ( typeof define === 'function' && define.amd ) {
101562
			button = buttons[i];
14141
		// AMD
14142
		define( ['jquery', 'datatables.net'], function ( $ ) {
14143
			return factory( $, window, document );
14144
		} );
14145
	}
14146
	else if ( typeof exports === 'object' ) {
14147
		// CommonJS
14148
		var jq = require('jquery');
14149
		var cjsRequires = function (root, $) {
14150
			if ( ! $.fn.dataTable ) {
14151
				require('datatables.net')(root, $);
14152
			}
14153
		};
14154
101563
14155
		if (typeof window === 'undefined') {
101564
			if (button) {
14156
			module.exports = function (root, $) {
101565
				idx = baseIdx !== undefined ? baseIdx + i : i + '';
14157
				if ( ! root ) {
14158
					// CommonJS environments without a window global must pass a
14159
					// root. This will give an error otherwise
14160
					root = window;
14161
				}
14162
101566
14163
				if ( ! $ ) {
101567
				a.push({
14164
					$ = jq( root );
101568
					node: button.node,
14165
				}
101569
					name: button.conf.name,
101570
					idx: idx
101571
				});
14166
101572
14167
				cjsRequires( root, $ );
101573
				if (button.buttons) {
14168
				return factory( $, root, root.document );
101574
					nodeBuilder(a, button.buttons, idx + '-');
14169
			};
101575
				}
14170
		}
101576
			}
14171
		else {
14172
			cjsRequires( window, jq );
14173
			module.exports = factory( jq, window, window.document );
14174
		}
101577
		}
14175
	}
101578
	};
14176
	else {
14177
		// Browser
14178
		factory( jQuery, window, document );
14179
	}
14180
}(function( $, window, document ) {
14181
'use strict';
14182
var DataTable = $.fn.dataTable;
14183
14184
101579
101580
	var run = function (selector, inst) {
101581
		var i, ien;
101582
		var buttons = [];
101583
		nodeBuilder(buttons, inst.s.buttons);
14185
101584
14186
// Used for namespacing events added to the document by each instance, so they
101585
		var nodes = $.map(buttons, function (v) {
14187
// can be removed on destroy
101586
			return v.node;
14188
var _instCounter = 0;
101587
		});
14189
101588
14190
// Button namespacing counter for namespacing events on individual buttons
101589
		if (Array.isArray(selector) || selector instanceof $) {
14191
var _buttonCounter = 0;
101590
			for (i = 0, ien = selector.length; i < ien; i++) {
101591
				run(selector[i], inst);
101592
			}
101593
			return;
101594
		}
14192
101595
14193
var _dtButtons = DataTable.ext.buttons;
101596
		if (selector === null || selector === undefined || selector === '*') {
101597
			// Select all
101598
			for (i = 0, ien = buttons.length; i < ien; i++) {
101599
				ret.push({
101600
					inst: inst,
101601
					node: buttons[i].node
101602
				});
101603
			}
101604
		}
101605
		else if (typeof selector === 'number') {
101606
			// Main button index selector
101607
			if (inst.s.buttons[selector]) {
101608
				ret.push({
101609
					inst: inst,
101610
					node: inst.s.buttons[selector].node
101611
				});
101612
			}
101613
		}
101614
		else if (typeof selector === 'string') {
101615
			if (selector.indexOf(',') !== -1) {
101616
				// Split
101617
				var a = selector.split(',');
14194
101618
14195
// Custom entity decoder for data export
101619
				for (i = 0, ien = a.length; i < ien; i++) {
14196
var _entityDecoder = null;
101620
					run(a[i].trim(), inst);
101621
				}
101622
			}
101623
			else if (selector.match(/^\d+(\-\d+)*$/)) {
101624
				// Sub-button index selector
101625
				var indexes = $.map(buttons, function (v) {
101626
					return v.idx;
101627
				});
14197
101628
14198
// Allow for jQuery slim
101629
				ret.push({
14199
function _fadeIn(el, duration, fn) {
101630
					inst: inst,
14200
	if ($.fn.animate) {
101631
					node: buttons[$.inArray(selector, indexes)].node
14201
		el.stop().fadeIn(duration, fn);
101632
				});
14202
	}
101633
			}
14203
	else {
101634
			else if (selector.indexOf(':name') !== -1) {
14204
		el.css('display', 'block');
101635
				// Button name selector
101636
				var name = selector.replace(':name', '');
14205
101637
14206
		if (fn) {
101638
				for (i = 0, ien = buttons.length; i < ien; i++) {
14207
			fn.call(el);
101639
					if (buttons[i].name === name) {
101640
						ret.push({
101641
							inst: inst,
101642
							node: buttons[i].node
101643
						});
101644
					}
101645
				}
101646
			}
101647
			else {
101648
				// jQuery selector on the nodes
101649
				$(nodes)
101650
					.filter(selector)
101651
					.each(function () {
101652
						ret.push({
101653
							inst: inst,
101654
							node: this
101655
						});
101656
					});
101657
			}
14208
		}
101658
		}
14209
	}
101659
		else if (typeof selector === 'object' && selector.nodeName) {
14210
}
101660
			// Node selector
14211
101661
			var idx = $.inArray(selector, nodes);
14212
function _fadeOut(el, duration, fn) {
14213
	if ($.fn.animate) {
14214
		el.stop().fadeOut(duration, fn);
14215
	}
14216
	else {
14217
		el.css('display', 'none');
14218
101662
14219
		if (fn) {
101663
			if (idx !== -1) {
14220
			fn.call(el);
101664
				ret.push({
101665
					inst: inst,
101666
					node: nodes[idx]
101667
				});
101668
			}
14221
		}
101669
		}
14222
	}
101670
	};
14223
}
14224
14225
/**
14226
 * [Buttons description]
14227
 * @param {[type]}
14228
 * @param {[type]}
14229
 */
14230
var Buttons = function (dt, config) {
14231
	if (!DataTable.versionCheck('2')) {
14232
		throw 'Warning: Buttons requires DataTables 2 or newer';
14233
	}
14234
101671
14235
	// If not created with a `new` keyword then we return a wrapper function that
101672
	for (var i = 0, ien = insts.length; i < ien; i++) {
14236
	// will take the settings object for a DT. This allows easy use of new instances
101673
		var inst = insts[i];
14237
	// with the `layout` option - e.g. `topLeft: $.fn.dataTable.Buttons( ... )`.
14238
	if (!(this instanceof Buttons)) {
14239
		return function (settings) {
14240
			return new Buttons(settings, dt).container();
14241
		};
14242
	}
14243
101674
14244
	// If there is no config set it to an empty object
101675
		run(selector, inst);
14245
	if (typeof config === 'undefined') {
14246
		config = {};
14247
	}
101676
	}
14248
101677
14249
	// Allow a boolean true for defaults
101678
	return ret;
14250
	if (config === true) {
101679
};
14251
		config = {};
14252
	}
14253
101680
14254
	// For easy configuration of buttons an array can be given
101681
/**
14255
	if (Array.isArray(config)) {
101682
 * Default function used for formatting output data.
14256
		config = { buttons: config };
101683
 * @param {*} str Data to strip
101684
 */
101685
Buttons.stripData = function (str, config) {
101686
	// If the input is an HTML element, we can use the HTML from it (HTML might be stripped below).
101687
	if (str !== null && typeof str === 'object' && str.nodeName && str.nodeType) {
101688
		str = str.innerHTML;
14257
	}
101689
	}
14258
101690
14259
	this.c = $.extend(true, {}, Buttons.defaults, config);
101691
	if (typeof str !== 'string') {
14260
101692
		return str;
14261
	// Don't want a deep copy for the buttons
14262
	if (config.buttons) {
14263
		this.c.buttons = config.buttons;
14264
	}
101693
	}
14265
101694
14266
	this.s = {
101695
	// Always remove script tags
14267
		dt: new DataTable.Api(dt),
101696
	str = Buttons.stripHtmlScript(str);
14268
		buttons: [],
14269
		listenKeys: '',
14270
		namespace: 'dtb' + _instCounter++
14271
	};
14272
101697
14273
	this.dom = {
101698
	// Always remove comments
14274
		container: $('<' + this.c.dom.container.tag + '/>').addClass(
101699
	str = Buttons.stripHtmlComments(str);
14275
			this.c.dom.container.className
14276
		)
14277
	};
14278
101700
14279
	this._constructor();
101701
	if (!config || config.stripHtml) {
14280
};
101702
		str = DataTable.util.stripHtml(str);
101703
	}
14281
101704
14282
$.extend(Buttons.prototype, {
101705
	if (!config || config.trim) {
14283
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
101706
		str = str.trim();
14284
	 * Public methods
101707
	}
14285
	 */
14286
101708
14287
	/**
101709
	if (!config || config.stripNewlines) {
14288
	 * Get the action of a button
101710
		str = str.replace(/\n/g, ' ');
14289
	 * @param  {int|string} Button index
101711
	}
14290
	 * @return {function}
14291
	 */ /**
14292
	 * Set the action of a button
14293
	 * @param  {node} node Button element
14294
	 * @param  {function} action Function to set
14295
	 * @return {Buttons} Self for chaining
14296
	 */
14297
	action: function (node, action) {
14298
		var button = this._nodeToButton(node);
14299
101712
14300
		if (action === undefined) {
101713
	if (!config || config.decodeEntities) {
14301
			return button.conf.action;
101714
		if (_entityDecoder) {
101715
			str = _entityDecoder(str);
14302
		}
101716
		}
14303
101717
		else {
14304
		button.conf.action = action;
101718
			_exportTextarea.innerHTML = str;
14305
101719
			str = _exportTextarea.value;
14306
		return this;
14307
	},
14308
14309
	/**
14310
	 * Add an active class to the button to make to look active or get current
14311
	 * active state.
14312
	 * @param  {node} node Button element
14313
	 * @param  {boolean} [flag] Enable / disable flag
14314
	 * @return {Buttons} Self for chaining or boolean for getter
14315
	 */
14316
	active: function (node, flag) {
14317
		var button = this._nodeToButton(node);
14318
		var klass = this.c.dom.button.active;
14319
		var jqNode = $(button.node);
14320
14321
		if (
14322
			button.inCollection &&
14323
			this.c.dom.collection.button &&
14324
			this.c.dom.collection.button.active !== undefined
14325
		) {
14326
			klass = this.c.dom.collection.button.active;
14327
		}
101720
		}
101721
	}
14328
101722
14329
		if (flag === undefined) {
101723
	// Prevent Excel from running a formula
14330
			return jqNode.hasClass(klass);
101724
	if (!config || config.escapeExcelFormula) {
101725
		if (str.match(/^[=@\t\r]/)) {
101726
			str = "'" + str;
14331
		}
101727
		}
101728
	}
14332
101729
14333
		jqNode.toggleClass(klass, flag === undefined ? true : flag);
101730
	return str;
14334
101731
};
14335
		return this;
14336
	},
14337
14338
	/**
14339
	 * Add a new button
14340
	 * @param {object} config Button configuration object, base string name or function
14341
	 * @param {int|string} [idx] Button index for where to insert the button
14342
	 * @param {boolean} [draw=true] Trigger a draw. Set a false when adding
14343
	 *   lots of buttons, until the last button.
14344
	 * @return {Buttons} Self for chaining
14345
	 */
14346
	add: function (config, idx, draw) {
14347
		var buttons = this.s.buttons;
14348
101732
14349
		if (typeof idx === 'string') {
101733
/**
14350
			var split = idx.split('-');
101734
 * Provide a custom entity decoding function - e.g. a regex one, which can be
14351
			var base = this.s;
101735
 * much faster than the built in DOM option, but also larger code size.
101736
 * @param {function} fn
101737
 */
101738
Buttons.entityDecoder = function (fn) {
101739
	_entityDecoder = fn;
101740
};
14352
101741
14353
			for (var i = 0, ien = split.length - 1; i < ien; i++) {
101742
/**
14354
				base = base.buttons[split[i] * 1];
101743
 * Common function for stripping HTML comments
14355
			}
101744
 *
101745
 * @param {*} input
101746
 * @returns
101747
 */
101748
Buttons.stripHtmlComments = function (input) {
101749
	var previous;
14356
101750
14357
			buttons = base.buttons;
101751
	do {
14358
			idx = split[split.length - 1] * 1;
101752
		previous = input;
14359
		}
101753
		input = input.replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g, '');
101754
	} while (input !== previous);
14360
101755
14361
		let node = this._expandButton(
101756
	return input;
14362
			buttons,
101757
};
14363
			config,
14364
			config !== undefined ? config.split : undefined,
14365
			(config === undefined ||
14366
				config.split === undefined ||
14367
				config.split.length === 0) &&
14368
				base !== undefined,
14369
			false,
14370
			idx
14371
		);
14372
101758
14373
		if (draw === undefined || draw === true) {
101759
/**
14374
			this._draw();
101760
 * Common function for stripping HTML script tags
14375
		}
101761
 *
101762
 * @param {*} input
101763
 * @returns
101764
 */
101765
Buttons.stripHtmlScript = function (input) {
101766
	var previous;
14376
101767
14377
		return node;
101768
	do {
14378
	},
101769
		previous = input;
101770
		input = input.replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi, '');
101771
	} while (input !== previous);
14379
101772
14380
	/**
101773
	return input;
14381
	 * Clear buttons from a collection and then insert new buttons
101774
};
14382
	 */
14383
	collectionRebuild: function (node, newButtons) {
14384
		var button = this._nodeToButton(node);
14385
101775
14386
		if (newButtons !== undefined) {
101776
/**
14387
			var i;
101777
 * Buttons defaults. For full documentation, please refer to the docs/option
14388
			// Need to reverse the array
101778
 * directory or the DataTables site.
14389
			for (i = button.buttons.length - 1; i >= 0; i--) {
101779
 * @type {Object}
14390
				this.remove(button.buttons[i].node);
101780
 * @static
101781
 */
101782
Buttons.defaults = {
101783
	buttons: ['copy', 'excel', 'csv', 'pdf', 'print'],
101784
	name: 'main',
101785
	tabIndex: 0,
101786
	dom: {
101787
		container: {
101788
			tag: 'div',
101789
			className: 'dt-buttons'
101790
		},
101791
		collection: {
101792
			container: {
101793
				// The element used for the dropdown
101794
				className: 'dt-button-collection',
101795
				content: {
101796
					className: '',
101797
					tag: 'div'
101798
				},
101799
				tag: 'div'
14391
			}
101800
			}
14392
101801
			// optionally
14393
			// If the collection has prefix and / or postfix buttons we need to add them in
101802
			// , button: IButton - buttons inside the collection container
14394
			if (button.conf.prefixButtons) {
101803
			// , split: ISplit - splits inside the collection container
14395
				newButtons.unshift.apply(newButtons, button.conf.prefixButtons);
101804
		},
101805
		button: {
101806
			tag: 'button',
101807
			className: 'dt-button',
101808
			active: 'dt-button-active', // class name
101809
			disabled: 'disabled', // class name
101810
			spacer: {
101811
				className: 'dt-button-spacer',
101812
				tag: 'span'
101813
			},
101814
			liner: {
101815
				tag: 'span',
101816
				className: ''
101817
			},
101818
			dropClass: '',
101819
			dropHtml: '<span class="dt-button-down-arrow">&#x25BC;</span>'
101820
		},
101821
		split: {
101822
			action: {
101823
				// action button
101824
				className: 'dt-button-split-drop-button dt-button',
101825
				tag: 'button'
101826
			},
101827
			dropdown: {
101828
				// button to trigger the dropdown
101829
				align: 'split-right',
101830
				className: 'dt-button-split-drop',
101831
				splitAlignClass: 'dt-button-split-left',
101832
				tag: 'button'
101833
			},
101834
			wrapper: {
101835
				// wrap around both
101836
				className: 'dt-button-split',
101837
				tag: 'div'
14396
			}
101838
			}
101839
		}
101840
	}
101841
};
101842
101843
/**
101844
 * Version information
101845
 * @type {string}
101846
 * @static
101847
 */
101848
Buttons.version = '3.2.6';
14397
101849
14398
			if (button.conf.postfixButtons) {
101850
$.extend(_dtButtons, {
14399
				newButtons.push.apply(newButtons, button.conf.postfixButtons);
101851
	collection: {
101852
		text: function (dt) {
101853
			return dt.i18n('buttons.collection', 'Collection');
101854
		},
101855
		className: 'buttons-collection',
101856
		closeButton: false,
101857
		dropIcon: true,
101858
		init: function (dt, button) {
101859
			button.attr('aria-expanded', false);
101860
		},
101861
		action: function (e, dt, button, config) {
101862
			if (config._collection.parents('body').length) {
101863
				this.popover(false, config);
101864
			}
101865
			else {
101866
				this.popover(config._collection, config);
14400
			}
101867
			}
14401
101868
14402
			for (i = 0; i < newButtons.length; i++) {
101869
			// When activated using a key - auto focus on the
14403
				var newBtn = newButtons[i];
101870
			// first item in the popover
14404
101871
			if (e.type === 'keypress') {
14405
				this._expandButton(
101872
				$('a, button', config._collection).eq(0).focus();
14406
					button.buttons,
14407
					newBtn,
14408
					newBtn !== undefined &&
14409
						newBtn.config !== undefined &&
14410
						newBtn.config.split !== undefined,
14411
					true,
14412
					newBtn.parentConf !== undefined &&
14413
						newBtn.parentConf.split !== undefined,
14414
					null,
14415
					newBtn.parentConf
14416
				);
14417
			}
101873
			}
101874
		},
101875
		attr: {
101876
			'aria-haspopup': 'dialog'
14418
		}
101877
		}
14419
101878
		// Also the popover options, defined in Buttons.popover
14420
		this._draw(button.collection, button.buttons);
14421
	},
101879
	},
14422
101880
	split: {
14423
	/**
101881
		text: function (dt) {
14424
	 * Get the container node for the buttons
101882
			return dt.i18n('buttons.split', 'Split');
14425
	 * @return {jQuery} Buttons node
101883
		},
14426
	 */
101884
		className: 'buttons-split',
14427
	container: function () {
101885
		closeButton: false,
14428
		return this.dom.container;
101886
		init: function (dt, button) {
101887
			return button.attr('aria-expanded', false);
101888
		},
101889
		action: function (e, dt, button, config) {
101890
			this.popover(config._collection, config);
101891
		},
101892
		attr: {
101893
			'aria-haspopup': 'dialog'
101894
		}
101895
		// Also the popover options, defined in Buttons.popover
14429
	},
101896
	},
14430
101897
	copy: function () {
14431
	/**
101898
		if (_dtButtons.copyHtml5) {
14432
	 * Disable a button
101899
			return 'copyHtml5';
14433
	 * @param  {node} node Button node
14434
	 * @return {Buttons} Self for chaining
14435
	 */
14436
	disable: function (node) {
14437
		var button = this._nodeToButton(node);
14438
14439
		if (button.isSplit) {
14440
			$(button.node.childNodes[0])
14441
				.addClass(this.c.dom.button.disabled)
14442
				.prop('disabled', true);
14443
		}
101900
		}
14444
		else {
101901
	},
14445
			$(button.node)
101902
	csv: function (dt, conf) {
14446
				.addClass(this.c.dom.button.disabled)
101903
		if (_dtButtons.csvHtml5 && _dtButtons.csvHtml5.available(dt, conf)) {
14447
				.prop('disabled', true);
101904
			return 'csvHtml5';
14448
		}
101905
		}
14449
14450
		button.disabled = true;
14451
14452
		this._checkSplitEnable();
14453
14454
		return this;
14455
	},
101906
	},
101907
	excel: function (dt, conf) {
101908
		if (
101909
			_dtButtons.excelHtml5 &&
101910
			_dtButtons.excelHtml5.available(dt, conf)
101911
		) {
101912
			return 'excelHtml5';
101913
		}
101914
	},
101915
	pdf: function (dt, conf) {
101916
		if (_dtButtons.pdfHtml5 && _dtButtons.pdfHtml5.available(dt, conf)) {
101917
			return 'pdfHtml5';
101918
		}
101919
	},
101920
	pageLength: function (dt) {
101921
		var lengthMenu = dt.settings()[0].aLengthMenu;
101922
		var vals = [];
101923
		var lang = [];
101924
		var text = function (dt) {
101925
			return dt.i18n(
101926
				'buttons.pageLength',
101927
				{
101928
					'-1': 'Show all rows',
101929
					_: 'Show %d rows'
101930
				},
101931
				dt.page.len()
101932
			);
101933
		};
14456
101934
14457
	/**
101935
		// Support for DataTables 1.x 2D array
14458
	 * Destroy the instance, cleaning up event handlers and removing DOM
101936
		if (Array.isArray(lengthMenu[0])) {
14459
	 * elements
101937
			vals = lengthMenu[0];
14460
	 * @return {Buttons} Self for chaining
101938
			lang = lengthMenu[1];
14461
	 */
14462
	destroy: function () {
14463
		// Key event listener
14464
		$('body').off('keyup.' + this.s.namespace);
14465
14466
		// Individual button destroy (so they can remove their own events if
14467
		// needed). Take a copy as the array is modified by `remove`
14468
		var buttons = this.s.buttons.slice();
14469
		var i, ien;
14470
14471
		for (i = 0, ien = buttons.length; i < ien; i++) {
14472
			this.remove(buttons[i].node);
14473
		}
101939
		}
101940
		else {
101941
			for (var i = 0; i < lengthMenu.length; i++) {
101942
				var option = lengthMenu[i];
14474
101943
14475
		// Container
101944
				// Support for DataTables 2 object in the array
14476
		this.dom.container.remove();
101945
				if ($.isPlainObject(option)) {
101946
					vals.push(option.value);
101947
					lang.push(option.label);
101948
				}
101949
				else {
101950
					vals.push(option);
101951
					lang.push(option);
101952
				}
101953
			}
101954
		}
14477
101955
14478
		// Remove from the settings object collection
101956
		return {
14479
		var buttonInsts = this.s.dt.settings()[0];
101957
			extend: 'collection',
101958
			text: text,
101959
			className: 'buttons-page-length',
101960
			autoClose: true,
101961
			buttons: $.map(vals, function (val, i) {
101962
				return {
101963
					text: lang[i],
101964
					className: 'button-page-length',
101965
					action: function (e, dt) {
101966
						dt.page.len(val).draw();
101967
					},
101968
					init: function (dt, node, conf) {
101969
						var that = this;
101970
						var fn = function () {
101971
							that.active(dt.page.len() === val);
101972
						};
14480
101973
14481
		for (i = 0, ien = buttonInsts.length; i < ien; i++) {
101974
						dt.on('length.dt' + conf.namespace, fn);
14482
			if (buttonInsts.inst === this) {
101975
						fn();
14483
				buttonInsts.splice(i, 1);
101976
					},
14484
				break;
101977
					destroy: function (dt, node, conf) {
101978
						dt.off('length.dt' + conf.namespace);
101979
					}
101980
				};
101981
			}),
101982
			init: function (dt, node, conf) {
101983
				var that = this;
101984
				dt.on('length.dt' + conf.namespace, function () {
101985
					that.text(conf.text);
101986
				});
101987
			},
101988
			destroy: function (dt, node, conf) {
101989
				dt.off('length.dt' + conf.namespace);
14485
			}
101990
			}
101991
		};
101992
	},
101993
	spacer: {
101994
		style: 'empty',
101995
		spacer: true,
101996
		text: function (dt) {
101997
			return dt.i18n('buttons.spacer', '');
14486
		}
101998
		}
101999
	}
102000
});
14487
102001
14488
		return this;
102002
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
14489
	},
102003
 * DataTables API
102004
 *
102005
 * For complete documentation, please refer to the docs/api directory or the
102006
 * DataTables site
102007
 */
14490
102008
14491
	/**
102009
// Buttons group and individual button selector
14492
	 * Enable / disable a button
102010
DataTable.Api.register('buttons()', function (group, selector) {
14493
	 * @param  {node} node Button node
102011
	// Argument shifting
14494
	 * @param  {boolean} [flag=true] Enable / disable flag
102012
	if (selector === undefined) {
14495
	 * @return {Buttons} Self for chaining
102013
		selector = group;
14496
	 */
102014
		group = undefined;
14497
	enable: function (node, flag) {
102015
	}
14498
		if (flag === false) {
14499
			return this.disable(node);
14500
		}
14501
102016
14502
		var button = this._nodeToButton(node);
102017
	this.selector.buttonGroup = group;
14503
102018
14504
		if (button.isSplit) {
102019
	var res = this.iterator(
14505
			$(button.node.childNodes[0])
102020
		true,
14506
				.removeClass(this.c.dom.button.disabled)
102021
		'table',
14507
				.prop('disabled', false);
102022
		function (ctx) {
14508
		}
102023
			if (ctx._buttons) {
14509
		else {
102024
				return Buttons.buttonSelector(
14510
			$(button.node)
102025
					Buttons.instanceSelector(group, ctx._buttons),
14511
				.removeClass(this.c.dom.button.disabled)
102026
					selector
14512
				.prop('disabled', false);
102027
				);
14513
		}
102028
			}
102029
		},
102030
		true
102031
	);
14514
102032
14515
		button.disabled = false;
102033
	res._groupSelector = group;
102034
	return res;
102035
});
14516
102036
14517
		this._checkSplitEnable();
102037
// Individual button selector
102038
DataTable.Api.register('button()', function (group, selector) {
102039
	// just run buttons() and truncate
102040
	var buttons = this.buttons(group, selector);
14518
102041
14519
		return this;
102042
	if (buttons.length > 1) {
14520
	},
102043
		buttons.splice(1, buttons.length);
102044
	}
14521
102045
14522
	/**
102046
	return buttons;
14523
	 * Get a button's index
102047
});
14524
	 *
102048
14525
	 * This is internally recursive
102049
// Active buttons
14526
	 * @param {element} node Button to get the index of
102050
DataTable.Api.registerPlural(
14527
	 * @return {string} Button index
102051
	'buttons().active()',
14528
	 */
102052
	'button().active()',
14529
	index: function (node, nested, buttons) {
102053
	function (flag) {
14530
		if (!nested) {
102054
		if (flag === undefined) {
14531
			nested = '';
102055
			return this.map(function (set) {
14532
			buttons = this.s.buttons;
102056
				return set.inst.active(set.node);
102057
			});
14533
		}
102058
		}
14534
102059
14535
		for (var i = 0, ien = buttons.length; i < ien; i++) {
102060
		return this.each(function (set) {
14536
			var inner = buttons[i].buttons;
102061
			set.inst.active(set.node, flag);
102062
		});
102063
	}
102064
);
14537
102065
14538
			if (buttons[i].node === node) {
102066
// Get / set button action
14539
				return nested + i;
102067
DataTable.Api.registerPlural(
14540
			}
102068
	'buttons().action()',
102069
	'button().action()',
102070
	function (action) {
102071
		if (action === undefined) {
102072
			return this.map(function (set) {
102073
				return set.inst.action(set.node);
102074
			});
102075
		}
14541
102076
14542
			if (inner && inner.length) {
102077
		return this.each(function (set) {
14543
				var match = this.index(node, i + '-', inner);
102078
			set.inst.action(set.node, action);
102079
		});
102080
	}
102081
);
14544
102082
14545
				if (match !== null) {
102083
// Collection control
14546
					return match;
102084
DataTable.Api.registerPlural(
102085
	'buttons().collectionRebuild()',
102086
	'button().collectionRebuild()',
102087
	function (buttons) {
102088
		return this.each(function (set) {
102089
			for (var i = 0; i < buttons.length; i++) {
102090
				if (typeof buttons[i] === 'object') {
102091
					buttons[i].parentConf = set;
14547
				}
102092
				}
14548
			}
102093
			}
14549
		}
102094
			set.inst.collectionRebuild(set.node, buttons);
14550
102095
		});
14551
		return null;
102096
	}
14552
	},
102097
);
14553
102098
14554
	/**
102099
// Enable / disable buttons
14555
	 * Get the instance name for the button set selector
102100
DataTable.Api.register(
14556
	 * @return {string} Instance name
102101
	['buttons().enable()', 'button().enable()'],
14557
	 */
102102
	function (flag) {
14558
	name: function () {
102103
		return this.each(function (set) {
14559
		return this.c.name;
102104
			set.inst.enable(set.node, flag);
14560
	},
102105
		});
102106
	}
102107
);
14561
102108
14562
	/**
102109
// Disable buttons
14563
	 * Get a button's node of the buttons container if no button is given
102110
DataTable.Api.register(
14564
	 * @param  {node} [node] Button node
102111
	['buttons().disable()', 'button().disable()'],
14565
	 * @return {jQuery} Button element, or container
102112
	function () {
14566
	 */
102113
		return this.each(function (set) {
14567
	node: function (node) {
102114
			set.inst.disable(set.node);
14568
		if (!node) {
102115
		});
14569
			return this.dom.container;
102116
	}
14570
		}
102117
);
14571
102118
14572
		var button = this._nodeToButton(node);
102119
// Button index
14573
		return $(button.node);
102120
DataTable.Api.register('button().index()', function () {
14574
	},
102121
	var idx = null;
14575
102122
14576
	/**
102123
	this.each(function (set) {
14577
	 * Set / get a processing class on the selected button
102124
		var res = set.inst.index(set.node);
14578
	 * @param {element} node Triggering button node
14579
	 * @param  {boolean} flag true to add, false to remove, undefined to get
14580
	 * @return {boolean|Buttons} Getter value or this if a setter.
14581
	 */
14582
	processing: function (node, flag) {
14583
		var dt = this.s.dt;
14584
		var button = this._nodeToButton(node);
14585
102125
14586
		if (flag === undefined) {
102126
		if (res !== null) {
14587
			return $(button.node).hasClass('processing');
102127
			idx = res;
14588
		}
102128
		}
102129
	});
14589
102130
14590
		$(button.node).toggleClass('processing', flag);
102131
	return idx;
14591
102132
});
14592
		$(dt.table().node()).triggerHandler('buttons-processing.dt', [
14593
			flag,
14594
			dt.button(node),
14595
			dt,
14596
			$(node),
14597
			button.conf
14598
		]);
14599
14600
		return this;
14601
	},
14602
102133
14603
	/**
102134
// Get button nodes
14604
	 * Remove a button.
102135
DataTable.Api.registerPlural(
14605
	 * @param  {node} node Button node
102136
	'buttons().nodes()',
14606
	 * @return {Buttons} Self for chaining
102137
	'button().node()',
14607
	 */
102138
	function () {
14608
	remove: function (node) {
102139
		var jq = $();
14609
		var button = this._nodeToButton(node);
14610
		var host = this._nodeToHost(node);
14611
		var dt = this.s.dt;
14612
102140
14613
		// Remove any child buttons first
102141
		// jQuery will automatically reduce duplicates to a single entry
14614
		if (button.buttons.length) {
102142
		$(
14615
			for (var i = button.buttons.length - 1; i >= 0; i--) {
102143
			this.each(function (set) {
14616
				this.remove(button.buttons[i].node);
102144
				jq = jq.add(set.inst.node(set.node));
14617
			}
102145
			})
14618
		}
102146
		);
14619
102147
14620
		button.conf.destroying = true;
102148
		return jq;
102149
	}
102150
);
14621
102151
14622
		// Allow the button to remove event handlers, etc
102152
// Get / set button processing state
14623
		if (button.conf.destroy) {
102153
DataTable.Api.registerPlural(
14624
			button.conf.destroy.call(dt.button(node), dt, $(node), button.conf);
102154
	'buttons().processing()',
102155
	'button().processing()',
102156
	function (flag) {
102157
		if (flag === undefined) {
102158
			return this.map(function (set) {
102159
				return set.inst.processing(set.node);
102160
			});
14625
		}
102161
		}
14626
102162
14627
		this._removeKey(button.conf);
102163
		return this.each(function (set) {
14628
102164
			set.inst.processing(set.node, flag);
14629
		$(button.node).remove();
102165
		});
102166
	}
102167
);
14630
102168
14631
		if (button.inserter) {
102169
// Get / set button text (i.e. the button labels)
14632
			$(button.inserter).remove();
102170
DataTable.Api.registerPlural(
102171
	'buttons().text()',
102172
	'button().text()',
102173
	function (label) {
102174
		if (label === undefined) {
102175
			return this.map(function (set) {
102176
				return set.inst.text(set.node);
102177
			});
14633
		}
102178
		}
14634
102179
14635
		var idx = $.inArray(button, host);
102180
		return this.each(function (set) {
14636
		host.splice(idx, 1);
102181
			set.inst.text(set.node, label);
102182
		});
102183
	}
102184
);
14637
102185
14638
		return this;
102186
// Trigger a button's action
14639
	},
102187
DataTable.Api.registerPlural(
102188
	'buttons().trigger()',
102189
	'button().trigger()',
102190
	function () {
102191
		return this.each(function (set) {
102192
			set.inst.node(set.node).trigger('click');
102193
		});
102194
	}
102195
);
14640
102196
14641
	/**
102197
// Button resolver to the popover
14642
	 * Get the text for a button
102198
DataTable.Api.register('button().popover()', function (content, options) {
14643
	 * @param  {int|string} node Button index
102199
	return this.map(function (set) {
14644
	 * @return {string} Button text
102200
		return set.inst._popover(content, this.button(this[0].node), options);
14645
	 */ /**
102201
	});
14646
	 * Set the text for a button
102202
});
14647
	 * @param  {int|string|function} node Button index
14648
	 * @param  {string} label Text
14649
	 * @return {Buttons} Self for chaining
14650
	 */
14651
	text: function (node, label) {
14652
		var button = this._nodeToButton(node);
14653
		var textNode = button.textNode;
14654
		var dt = this.s.dt;
14655
		var jqNode = $(button.node);
14656
		var text = function (opt) {
14657
			return typeof opt === 'function'
14658
				? opt(dt, jqNode, button.conf)
14659
				: opt;
14660
		};
14661
102203
14662
		if (label === undefined) {
102204
// Get the container elements
14663
			return text(button.conf.text);
102205
DataTable.Api.register('buttons().containers()', function () {
14664
		}
102206
	var jq = $();
102207
	var groupSelector = this._groupSelector;
14665
102208
14666
		button.conf.text = label;
102209
	// We need to use the group selector directly, since if there are no buttons
14667
		textNode.html(text(label));
102210
	// the result set will be empty
102211
	this.iterator(true, 'table', function (ctx) {
102212
		if (ctx._buttons) {
102213
			var insts = Buttons.instanceSelector(groupSelector, ctx._buttons);
14668
102214
14669
		return this;
102215
			for (var i = 0, ien = insts.length; i < ien; i++) {
14670
	},
102216
				jq = jq.add(insts[i].container());
102217
			}
102218
		}
102219
	});
14671
102220
14672
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
102221
	return jq;
14673
	 * Constructor
102222
});
14674
	 */
14675
102223
14676
	/**
102224
DataTable.Api.register('buttons().container()', function () {
14677
	 * Buttons constructor
102225
	// API level of nesting is `buttons()` so we can zip into the containers method
14678
	 * @private
102226
	return this.containers().eq(0);
14679
	 */
102227
});
14680
	_constructor: function () {
14681
		var that = this;
14682
		var dt = this.s.dt;
14683
		var dtSettings = dt.settings()[0];
14684
		var buttons = this.c.buttons;
14685
102228
14686
		if (!dtSettings._buttons) {
102229
// Add a new button
14687
			dtSettings._buttons = [];
102230
DataTable.Api.register('button().add()', function (idx, conf, draw) {
14688
		}
102231
	var ctx = this.context;
102232
	var node;
14689
102233
14690
		dtSettings._buttons.push({
102234
	// Don't use `this` as it could be empty - select the instances directly
14691
			inst: this,
102235
	if (ctx.length) {
14692
			name: this.c.name
102236
		var inst = Buttons.instanceSelector(
14693
		});
102237
			this._groupSelector,
102238
			ctx[0]._buttons
102239
		);
14694
102240
14695
		for (var i = 0, ien = buttons.length; i < ien; i++) {
102241
		if (inst.length) {
14696
			this.add(buttons[i]);
102242
			node = inst[0].add(conf, idx, draw);
14697
		}
102243
		}
102244
	}
14698
102245
14699
		dt.on('destroy', function (e, settings) {
102246
	return node
14700
			if (settings === dtSettings) {
102247
		? this.button(this._groupSelector, node)
14701
				that.destroy();
102248
		: this;
14702
			}
102249
});
102250
102251
// Destroy the button sets selected
102252
DataTable.Api.register('buttons().destroy()', function () {
102253
	this.pluck('inst')
102254
		.unique()
102255
		.each(function (inst) {
102256
			inst.destroy();
14703
		});
102257
		});
14704
102258
14705
		// Global key event binding to listen for button keys
102259
	return this;
14706
		$('body').on('keyup.' + this.s.namespace, function (e) {
102260
});
14707
			if (
14708
				!document.activeElement ||
14709
				document.activeElement === document.body
14710
			) {
14711
				// SUse a string of characters for fast lookup of if we need to
14712
				// handle this
14713
				var character = String.fromCharCode(e.keyCode).toLowerCase();
14714
102261
14715
				if (that.s.listenKeys.toLowerCase().indexOf(character) !== -1) {
102262
// Remove a button
14716
					that._keypress(character, e);
102263
DataTable.Api.registerPlural(
14717
				}
102264
	'buttons().remove()',
14718
			}
102265
	'buttons().remove()',
102266
	function () {
102267
		this.each(function (set) {
102268
			set.inst.remove(set.node);
14719
		});
102269
		});
14720
	},
14721
14722
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
14723
	 * Private methods
14724
	 */
14725
102270
14726
	/**
102271
		return this;
14727
	 * Add a new button to the key press listener
102272
	}
14728
	 * @param {object} conf Resolved button configuration object
102273
);
14729
	 * @private
14730
	 */
14731
	_addKey: function (conf) {
14732
		if (conf.key) {
14733
			this.s.listenKeys += $.isPlainObject(conf.key)
14734
				? conf.key.key
14735
				: conf.key;
14736
		}
14737
	},
14738
102274
14739
	/**
102275
// Information box that can be used by buttons
14740
	 * Insert the buttons into the container. Call without parameters!
102276
var _infoTimer;
14741
	 * @param  {node} [container] Recursive only - Insert point
102277
DataTable.Api.register('buttons.info()', function (title, message, time) {
14742
	 * @param  {array} [buttons] Recursive only - Buttons array
102278
	var that = this;
14743
	 * @private
14744
	 */
14745
	_draw: function (container, buttons) {
14746
		if (!container) {
14747
			container = this.dom.container;
14748
			buttons = this.s.buttons;
14749
		}
14750
102279
14751
		container.children().detach();
102280
	if (title === false) {
102281
		this.off('destroy.btn-info');
102282
		_fadeOut($('#datatables_buttons_info'), 400, function () {
102283
			$(this).remove();
102284
		});
102285
		clearTimeout(_infoTimer);
102286
		_infoTimer = null;
14752
102287
14753
		for (var i = 0, ien = buttons.length; i < ien; i++) {
102288
		return this;
14754
			container.append(buttons[i].inserter);
102289
	}
14755
			container.append(' ');
14756
102290
14757
			if (buttons[i].buttons && buttons[i].buttons.length) {
102291
	if (_infoTimer) {
14758
				this._draw(buttons[i].collection, buttons[i].buttons);
102292
		clearTimeout(_infoTimer);
14759
			}
102293
	}
14760
		}
14761
	},
14762
102294
14763
	/**
102295
	if ($('#datatables_buttons_info').length) {
14764
	 * Create buttons from an array of buttons
102296
		$('#datatables_buttons_info').remove();
14765
	 * @param  {array} attachTo Buttons array to attach to
102297
	}
14766
	 * @param  {object} button Button definition
14767
	 * @param  {boolean} inCollection true if the button is in a collection
14768
	 * @private
14769
	 */
14770
	_expandButton: function (
14771
		attachTo,
14772
		button,
14773
		split,
14774
		inCollection,
14775
		inSplit,
14776
		attachPoint,
14777
		parentConf
14778
	) {
14779
		var dt = this.s.dt;
14780
		var isSplit = false;
14781
		var domCollection = this.c.dom.collection;
14782
		var buttons = !Array.isArray(button) ? [button] : button;
14783
		var lastButton;
14784
102298
14785
		if (button === undefined) {
102299
	title = title ? '<h2>' + title + '</h2>' : '';
14786
			buttons = !Array.isArray(split) ? [split] : split;
14787
		}
14788
102300
14789
		for (var i = 0, ien = buttons.length; i < ien; i++) {
102301
	_fadeIn(
14790
			var conf = this._resolveExtends(buttons[i]);
102302
		$('<div id="datatables_buttons_info" class="dt-button-info"/>')
102303
			.html(title)
102304
			.append(
102305
				$('<div/>')[typeof message === 'string' ? 'html' : 'append'](
102306
					message
102307
				)
102308
			)
102309
			.css('display', 'none')
102310
			.appendTo('body')
102311
	);
14791
102312
14792
			if (!conf) {
102313
	if (time !== undefined && time !== 0) {
14793
				continue;
102314
		_infoTimer = setTimeout(function () {
14794
			}
102315
			that.buttons.info(false);
102316
		}, time);
102317
	}
14795
102318
14796
			isSplit = conf.config && conf.config.split ? true : false;
102319
	this.on('destroy.btn-info', function () {
102320
		that.buttons.info(false);
102321
	});
14797
102322
14798
			// If the configuration is an array, then expand the buttons at this
102323
	return this;
14799
			// point
102324
});
14800
			if (Array.isArray(conf)) {
14801
				this._expandButton(
14802
					attachTo,
14803
					conf,
14804
					built !== undefined && built.conf !== undefined
14805
						? built.conf.split
14806
						: undefined,
14807
					inCollection,
14808
					parentConf !== undefined && parentConf.split !== undefined,
14809
					attachPoint,
14810
					parentConf
14811
				);
14812
				continue;
14813
			}
14814
102325
14815
			var built = this._buildButton(
102326
// Get data from the table for export - this is common to a number of plug-in
14816
				conf,
102327
// buttons so it is included in the Buttons core library
14817
				inCollection,
102328
DataTable.Api.register('buttons.exportData()', function (options) {
14818
				conf.split !== undefined ||
102329
	if (this.context.length) {
14819
					(conf.config !== undefined &&
102330
		return _exportData(new DataTable.Api(this.context[0]), options);
14820
						conf.config.split !== undefined),
102331
	}
14821
				inSplit
102332
});
14822
			);
14823
			if (!built) {
14824
				continue;
14825
			}
14826
102333
14827
			if (attachPoint !== undefined && attachPoint !== null) {
102334
// Get information about the export that is common to many of the export data
14828
				attachTo.splice(attachPoint, 0, built);
102335
// types (DRY)
14829
				attachPoint++;
102336
DataTable.Api.register('buttons.exportInfo()', function (conf) {
14830
			}
102337
	if (!conf) {
14831
			else {
102338
		conf = {};
14832
				attachTo.push(built);
102339
	}
14833
			}
14834
102340
14835
			// Any button type can have a drop icon set
102341
	return {
14836
			if (built.conf.dropIcon && ! built.conf.split) {
102342
		filename: _filename(conf, this),
14837
				$(built.node)
102343
		title: _title(conf, this),
14838
					.addClass(this.c.dom.button.dropClass)
102344
		messageTop: _message(this, conf, conf.message || conf.messageTop, 'top'),
14839
					.append(this.c.dom.button.dropHtml);
102345
		messageBottom: _message(this, conf, conf.messageBottom, 'bottom')
14840
			}
102346
	};
102347
});
14841
102348
14842
			// Create the dropdown for a collection
102349
/**
14843
			if (built.conf.buttons) {
102350
 * Get the file name for an exported file.
14844
				built.collection = $(
102351
 *
14845
					'<' + domCollection.container.content.tag + '/>'
102352
 * @param {object} config Button configuration
14846
				);
102353
 * @param {object} dt DataTable instance
14847
				built.conf._collection = built.collection;
102354
 */
102355
var _filename = function (config, dt) {
102356
	// Backwards compatibility
102357
	var filename =
102358
		config.filename === '*' &&
102359
		config.title !== '*' &&
102360
		config.title !== undefined &&
102361
		config.title !== null &&
102362
		config.title !== ''
102363
			? config.title
102364
			: config.filename;
14848
102365
14849
				this._expandButton(
102366
	if (typeof filename === 'function') {
14850
					built.buttons,
102367
		filename = filename(config, dt);
14851
					built.conf.buttons,
102368
	}
14852
					built.conf.split,
14853
					!isSplit,
14854
					isSplit,
14855
					attachPoint,
14856
					built.conf
14857
				);
14858
			}
14859
102369
14860
			// And the split collection
102370
	if (filename === undefined || filename === null) {
14861
			if (built.conf.split) {
102371
		return null;
14862
				built.collection = $('<' + domCollection.container.tag + '/>');
102372
	}
14863
				built.conf._collection = built.collection;
14864
102373
14865
				for (var j = 0; j < built.conf.split.length; j++) {
102374
	if (filename.indexOf('*') !== -1) {
14866
					var item = built.conf.split[j];
102375
		filename = filename.replace(/\*/g, $('head > title').text()).trim();
102376
	}
14867
102377
14868
					if (typeof item === 'object') {
102378
	// Strip characters which the OS will object to
14869
						item.parent = parentConf;
102379
	filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, '');
14870
102380
14871
						if (item.collectionLayout === undefined) {
102381
	var extension = _stringOrFunction(config.extension, config, dt);
14872
							item.collectionLayout = built.conf.collectionLayout;
102382
	if (!extension) {
14873
						}
102383
		extension = '';
102384
	}
14874
102385
14875
						if (item.dropup === undefined) {
102386
	return filename + extension;
14876
							item.dropup = built.conf.dropup;
102387
};
14877
						}
14878
102388
14879
						if (item.fade === undefined) {
102389
/**
14880
							item.fade = built.conf.fade;
102390
 * Simply utility method to allow parameters to be given as a function
14881
						}
102391
 *
14882
					}
102392
 * @param {undefined|string|function} option Option
14883
				}
102393
 * @return {null|string} Resolved value
102394
 */
102395
var _stringOrFunction = function (option, config, dt) {
102396
	if (option === null || option === undefined) {
102397
		return null;
102398
	}
102399
	else if (typeof option === 'function') {
102400
		return option(config, dt);
102401
	}
102402
	return option;
102403
};
14884
102404
14885
				this._expandButton(
102405
/**
14886
					built.buttons,
102406
 * Get the title for an exported file.
14887
					built.conf.buttons,
102407
 *
14888
					built.conf.split,
102408
 * @param {object} config	Button configuration
14889
					!isSplit,
102409
 */
14890
					isSplit,
102410
var _title = function (config, dt) {
14891
					attachPoint,
102411
	var title = _stringOrFunction(config.title, config, dt);
14892
					built.conf
14893
				);
14894
			}
14895
102412
14896
			built.conf.parent = parentConf;
102413
	return title === null
102414
		? null
102415
		: title.indexOf('*') !== -1
102416
		? title.replace(/\*/g, $('head > title').text() || 'Exported data')
102417
		: title;
102418
};
14897
102419
14898
			// init call is made here, rather than buildButton as it needs to
102420
var _message = function (dt, config, option, position) {
14899
			// be selectable, and for that it needs to be in the buttons array
102421
	var message = _stringOrFunction(option, config, dt);
14900
			if (conf.init) {
102422
	if (message === null) {
14901
				conf.init.call(dt.button(built.node), dt, $(built.node), conf);
102423
		return null;
14902
			}
102424
	}
14903
102425
14904
			lastButton = built.node;
102426
	var caption = $('caption', dt.table().container()).eq(0);
102427
	if (message === '*') {
102428
		var side = caption.css('caption-side');
102429
		if (side !== position) {
102430
			return null;
14905
		}
102431
		}
14906
102432
14907
		return lastButton;
102433
		return caption.length ? caption.text() : '';
14908
	},
102434
	}
14909
102435
14910
	/**
102436
	return message;
14911
	 * Create an individual button
102437
};
14912
	 * @param  {object} config            Resolved button configuration
14913
	 * @param  {boolean} inCollection `true` if a collection button
14914
	 * @return {object} Completed button description object
14915
	 * @private
14916
	 */
14917
	_buildButton: function (config, inCollection, isSplit, inSplit) {
14918
		var that = this;
14919
		var configDom = this.c.dom;
14920
		var textNode;
14921
		var dt = this.s.dt;
14922
		var setLinerTab = false;
14923
		var text = function (opt) {
14924
			return typeof opt === 'function' ? opt(dt, button, config) : opt;
14925
		};
14926
102438
14927
		// Create an object that describes the button which can be in `dom.button`, or
102439
var _exportTextarea = $('<textarea/>')[0];
14928
		// `dom.collection.button` or `dom.split.button` or `dom.collection.split.button`!
102440
var _exportData = function (dt, inOpts) {
14929
		// Each should extend from `dom.button`.
102441
	var config = $.extend(
14930
		var dom = $.extend(true, {}, configDom.button);
102442
		true,
102443
		{},
102444
		{
102445
			rows: null,
102446
			columns: '',
102447
			modifier: {
102448
				search: 'applied',
102449
				order: 'applied'
102450
			},
102451
			orthogonal: 'display',
102452
			stripHtml: true,
102453
			stripNewlines: true,
102454
			decodeEntities: true,
102455
			escapeExcelFormula: false,
102456
			trim: true,
102457
			format: {
102458
				header: function (d) {
102459
					return Buttons.stripData(d, config);
102460
				},
102461
				footer: function (d) {
102462
					return Buttons.stripData(d, config);
102463
				},
102464
				body: function (d) {
102465
					return Buttons.stripData(d, config);
102466
				}
102467
			},
102468
			customizeData: null,
102469
			customizeZip: null
102470
		},
102471
		inOpts
102472
	);
14931
102473
14932
		if (inCollection && isSplit && configDom.collection.split) {
102474
	var header = dt
14933
			$.extend(true, dom, configDom.collection.split.action);
102475
		.columns(config.columns)
14934
		}
102476
		.indexes()
14935
		else if (inSplit || inCollection) {
102477
		.map(function (idx) {
14936
			$.extend(true, dom, configDom.collection.button);
102478
			var col = dt.column(idx);
14937
		}
102479
			return config.format.header(col.title(), idx, col.header());
14938
		else if (isSplit) {
102480
		})
14939
			$.extend(true, dom, configDom.split.button);
102481
		.toArray();
14940
		}
14941
102482
14942
		// Spacers don't do much other than insert an element into the DOM
102483
	var footer = dt.table().footer()
14943
		if (config.spacer) {
102484
		? dt
14944
			var spacer = $('<' + dom.spacer.tag + '/>')
102485
				.columns(config.columns)
14945
				.addClass(
102486
				.indexes()
14946
					'dt-button-spacer ' +
102487
				.map(function (idx) {
14947
						config.style +
102488
					var el = dt.column(idx).footer();
14948
						' ' +
102489
					var val = '';
14949
						dom.spacer.className
14950
				)
14951
				.html(text(config.text));
14952
102490
14953
			return {
102491
					if (el) {
14954
				conf: config,
102492
						var inner = $('.dt-column-title', el);
14955
				node: spacer,
102493
14956
				nodeChild: null,
102494
						val = inner.length
14957
				inserter: spacer,
102495
							? inner.html()
14958
				buttons: [],
102496
							: $(el).html();
14959
				inCollection: inCollection,
102497
					}
14960
				isSplit: isSplit,
102498
14961
				collection: null,
102499
					return config.format.footer(val, idx, el);
14962
				textNode: spacer
102500
				})
14963
			};
102501
				.toArray()
14964
		}
102502
		: null;
14965
102503
14966
		// Make sure that the button is available based on whatever requirements
102504
	// If Select is available on this table, and any rows are selected, limit the export
14967
		// it has. For example, PDF button require pdfmake
102505
	// to the selected rows. If no rows are selected, all rows will be exported. Specify
102506
	// a `selected` modifier to control directly.
102507
	var modifier = $.extend({}, config.modifier);
102508
	if (
102509
		dt.select &&
102510
		typeof dt.select.info === 'function' &&
102511
		modifier.selected === undefined
102512
	) {
14968
		if (
102513
		if (
14969
			config.available &&
102514
			dt.rows(config.rows, $.extend({ selected: true }, modifier)).any()
14970
			!config.available(dt, config) &&
14971
			!config.html
14972
		) {
102515
		) {
14973
			return false;
102516
			$.extend(modifier, { selected: true });
14974
		}
102517
		}
102518
	}
14975
102519
14976
		var button;
102520
	var rowIndexes = dt.rows(config.rows, modifier).indexes().toArray();
14977
102521
	var selectedCells = dt.cells(rowIndexes, config.columns, {
14978
		if (!config.html) {
102522
		order: modifier.order
14979
			var run = function (e, dt, button, config, done) {
102523
	});
14980
				config.action.call(dt.button(button), e, dt, button, config, done);
102524
	var cells = selectedCells.render(config.orthogonal).toArray();
102525
	var cellNodes = selectedCells.nodes().toArray();
102526
	var cellIndexes = selectedCells.indexes().toArray();
14981
102527
14982
				$(dt.table().node()).triggerHandler('buttons-action.dt', [
102528
	var columns = dt.columns(config.columns).count();
14983
					dt.button(button),
102529
	var rows = columns > 0 ? cells.length / columns : 0;
14984
					dt,
102530
	var body = [];
14985
					button,
102531
	var cellCounter = 0;
14986
					config
14987
				]);
14988
			};
14989
102532
14990
			var action = function(e, dt, button, config) {
102533
	for (var i = 0, ien = rows; i < ien; i++) {
14991
				if (config.async) {
102534
		var row = [columns];
14992
					that.processing(button[0], true);
14993
102535
14994
					setTimeout(function () {
102536
		for (var j = 0; j < columns; j++) {
14995
						run(e, dt, button, config, function () {
102537
			row[j] = config.format.body(
14996
							that.processing(button[0], false);
102538
				cells[cellCounter],
14997
						});
102539
				cellIndexes[cellCounter].row,
14998
					}, config.async);
102540
				cellIndexes[cellCounter].column,
14999
				}
102541
				cellNodes[cellCounter]
15000
				else {
102542
			);
15001
					run(e, dt, button, config, function () {});
102543
			cellCounter++;
15002
				}
102544
		}
15003
			};
15004
102545
15005
			var tag = config.tag || dom.tag;
102546
		body[i] = row;
15006
			var clickBlurs =
102547
	}
15007
				config.clickBlurs === undefined ? true : config.clickBlurs;
15008
102548
15009
			button = $('<' + tag + '/>')
102549
	var data = {
15010
				.addClass(dom.className)
102550
		header: header,
15011
				.attr('aria-controls', this.s.dt.table().node().id)
102551
		headerStructure: _headerFormatter(
15012
				.on('click.dtb', function (e) {
102552
			config.format.header,
15013
					e.preventDefault();
102553
			dt.table().header.structure(config.columns)
102554
		),
102555
		footer: footer,
102556
		footerStructure: _headerFormatter(
102557
			config.format.footer,
102558
			dt.table().footer.structure(config.columns)
102559
		),
102560
		body: body
102561
	};
15014
102562
15015
					if (!button.hasClass(dom.disabled) && config.action) {
102563
	if (config.customizeData) {
15016
						action(e, dt, button, config);
102564
		config.customizeData(data);
15017
					}
102565
	}
15018
102566
15019
					if (clickBlurs) {
102567
	return data;
15020
						button.trigger('blur');
102568
};
15021
					}
15022
				})
15023
				.on('keypress.dtb', function (e) {
15024
					if (e.keyCode === 13) {
15025
						e.preventDefault();
15026
102569
15027
						if (!button.hasClass(dom.disabled) && config.action) {
102570
function _headerFormatter(formatter, struct) {
15028
							action(e, dt, button, config);
102571
	for (var i=0 ; i<struct.length ; i++) {
15029
						}
102572
		for (var j=0 ; j<struct[i].length ; j++) {
15030
					}
102573
			var item = struct[i][j];
15031
				});
15032
102574
15033
			// Make `a` tags act like a link
102575
			if (item) {
15034
			if (tag.toLowerCase() === 'a') {
102576
				item.title = formatter(
15035
				button.attr('href', '#');
102577
					item.title,
102578
					j,
102579
					item.cell
102580
				);
15036
			}
102581
			}
102582
		}
102583
	}
15037
102584
15038
			// Button tags should have `type=button` so they don't have any default behaviour
102585
	return struct;
15039
			if (tag.toLowerCase() === 'button') {
102586
}
15040
				button.attr('type', 'button');
15041
			}
15042
102587
15043
			if (dom.liner.tag) {
102588
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
15044
				var lc = dom.liner.tag.toLowerCase();
102589
 * DataTables interface
15045
				var liner = $('<' + lc + '/>')
102590
 */
15046
					.html(text(config.text))
15047
					.addClass(dom.liner.className);
15048
102591
15049
				if (lc === 'a') {
102592
// Attach to DataTables objects for global access
15050
					liner.attr('href', '#');
102593
$.fn.dataTable.Buttons = Buttons;
15051
				}
102594
$.fn.DataTable.Buttons = Buttons;
15052
102595
15053
				if (lc === 'a' || lc === 'button') {
102596
// DataTables creation - check if the buttons have been defined for this table,
15054
					liner.attr('tabindex', this.s.dt.settings()[0].iTabIndex);
102597
// they will have been if the `B` option was used in `dom`, otherwise we should
15055
					setLinerTab = true;
102598
// create the buttons instance here so they can be inserted into the document
15056
				}
102599
// using the API. Listen for `init` for compatibility with pre 1.10.10, but to
102600
// be removed in future.
102601
$(document).on('init.dt plugin-init.dt', function (e, settings) {
102602
	if (e.namespace !== 'dt') {
102603
		return;
102604
	}
15057
102605
15058
				button.append(liner);
102606
	var opts = settings.oInit.buttons || DataTable.defaults.buttons;
15059
				textNode = liner;
15060
			}
15061
			else {
15062
				button.html(text(config.text));
15063
				textNode = button;
15064
			}
15065
102607
15066
			if (! setLinerTab) {
102608
	if (opts && !settings._buttons) {
15067
				button.attr('tabindex', this.s.dt.settings()[0].iTabIndex)
102609
		new Buttons(settings, opts).container();
15068
			}
102610
	}
102611
});
15069
102612
15070
			if (config.enabled === false) {
102613
function _init(settings, options) {
15071
				button.addClass(dom.disabled);
102614
	var api = new DataTable.Api(settings);
15072
			}
102615
	var opts = options
102616
		? options
102617
		: api.init().buttons || DataTable.defaults.buttons;
15073
102618
15074
			if (config.className) {
102619
	return new Buttons(api, opts).container();
15075
				button.addClass(config.className);
102620
}
15076
			}
15077
102621
15078
			if (config.titleAttr) {
102622
// DataTables 1 `dom` feature option
15079
				button.attr('title', text(config.titleAttr));
102623
DataTable.ext.feature.push({
15080
			}
102624
	fnInit: _init,
102625
	cFeature: 'B'
102626
});
15081
102627
15082
			if (config.attr) {
102628
// DataTables 2 layout feature
15083
				button.attr(config.attr);
102629
if (DataTable.feature) {
15084
			}
102630
	DataTable.feature.register('buttons', _init);
102631
}
15085
102632
15086
			if (!config.namespace) {
102633
15087
				config.namespace = '.dt-button-' + _buttonCounter++;
102634
return DataTable;
102635
}));
102636
102637
102638
/*! DataTables styling wrapper for Buttons
102639
 * © SpryMedia Ltd - datatables.net/license
102640
 */
102641
102642
(function( factory ){
102643
	if ( typeof define === 'function' && define.amd ) {
102644
		// AMD
102645
		define( ['jquery', 'datatables.net-dt', 'datatables.net-buttons'], function ( $ ) {
102646
			return factory( $, window, document );
102647
		} );
102648
	}
102649
	else if ( typeof exports === 'object' ) {
102650
		// CommonJS
102651
		var jq = require('jquery');
102652
		var cjsRequires = function (root, $) {
102653
			if ( ! $.fn.dataTable ) {
102654
				require('datatables.net-dt')(root, $);
15088
			}
102655
			}
15089
102656
15090
			if (config.config !== undefined && config.config.split) {
102657
			if ( ! $.fn.dataTable.Buttons ) {
15091
				config.split = config.config.split;
102658
				require('datatables.net-buttons')(root, $);
15092
			}
102659
			}
15093
		}
102660
		};
15094
		else {
15095
			button = $(config.html);
15096
		}
15097
102661
15098
		var buttonContainer = this.c.dom.buttonContainer;
102662
		if (typeof window === 'undefined') {
15099
		var inserter;
102663
			module.exports = function (root, $) {
15100
		if (buttonContainer && buttonContainer.tag) {
102664
				if ( ! root ) {
15101
			inserter = $('<' + buttonContainer.tag + '/>')
102665
					// CommonJS environments without a window global must pass a
15102
				.addClass(buttonContainer.className)
102666
					// root. This will give an error otherwise
15103
				.append(button);
102667
					root = window;
102668
				}
102669
102670
				if ( ! $ ) {
102671
					$ = jq( root );
102672
				}
102673
102674
				cjsRequires( root, $ );
102675
				return factory( $, root, root.document );
102676
			};
15104
		}
102677
		}
15105
		else {
102678
		else {
15106
			inserter = button;
102679
			cjsRequires( window, jq );
102680
			module.exports = factory( jq, window, window.document );
15107
		}
102681
		}
102682
	}
102683
	else {
102684
		// Browser
102685
		factory( jQuery, window, document );
102686
	}
102687
}(function( $, window, document ) {
102688
'use strict';
102689
var DataTable = $.fn.dataTable;
15108
102690
15109
		this._addKey(config);
15110
102691
15111
		// Style integration callback for DOM manipulation
15112
		// Note that this is _not_ documented. It is currently
15113
		// for style integration only
15114
		if (this.c.buttonCreated) {
15115
			inserter = this.c.buttonCreated(config, inserter);
15116
		}
15117
102692
15118
		var splitDiv;
15119
102693
15120
		if (isSplit) {
102694
return DataTable;
15121
			var dropdownConf = inCollection
102695
}));
15122
				? $.extend(true, this.c.dom.split, this.c.dom.collection.split)
15123
				: this.c.dom.split;
15124
			var wrapperConf = dropdownConf.wrapper;
15125
102696
15126
			splitDiv = $('<' + wrapperConf.tag + '/>')
15127
				.addClass(wrapperConf.className)
15128
				.append(button);
15129
102697
15130
			var dropButtonConfig = $.extend(config, {
102698
/*!
15131
				autoClose: true,
102699
 * Column visibility buttons for Buttons and DataTables.
15132
				align: dropdownConf.dropdown.align,
102700
 * © SpryMedia Ltd - datatables.net/license
15133
				attr: {
102701
 */
15134
					'aria-haspopup': 'dialog',
15135
					'aria-expanded': false
15136
				},
15137
				className: dropdownConf.dropdown.className,
15138
				closeButton: false,
15139
				splitAlignClass: dropdownConf.dropdown.splitAlignClass,
15140
				text: dropdownConf.dropdown.text
15141
			});
15142
102702
15143
			this._addKey(dropButtonConfig);
102703
(function( factory ){
102704
	if ( typeof define === 'function' && define.amd ) {
102705
		// AMD
102706
		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
102707
			return factory( $, window, document );
102708
		} );
102709
	}
102710
	else if ( typeof exports === 'object' ) {
102711
		// CommonJS
102712
		var jq = require('jquery');
102713
		var cjsRequires = function (root, $) {
102714
			if ( ! $.fn.dataTable ) {
102715
				require('datatables.net')(root, $);
102716
			}
15144
102717
15145
			var splitAction = function (e, dt, button, config) {
102718
			if ( ! $.fn.dataTable.Buttons ) {
15146
				_dtButtons.split.action.call(
102719
				require('datatables.net-buttons')(root, $);
15147
					dt.button(splitDiv),
102720
			}
15148
					e,
102721
		};
15149
					dt,
15150
					button,
15151
					config
15152
				);
15153
102722
15154
				$(dt.table().node()).triggerHandler('buttons-action.dt', [
102723
		if (typeof window === 'undefined') {
15155
					dt.button(button),
102724
			module.exports = function (root, $) {
15156
					dt,
102725
				if ( ! root ) {
15157
					button,
102726
					// CommonJS environments without a window global must pass a
15158
					config
102727
					// root. This will give an error otherwise
15159
				]);
102728
					root = window;
15160
				button.attr('aria-expanded', true);
102729
				}
102730
102731
				if ( ! $ ) {
102732
					$ = jq( root );
102733
				}
102734
102735
				cjsRequires( root, $ );
102736
				return factory( $, root, root.document );
15161
			};
102737
			};
102738
		}
102739
		else {
102740
			cjsRequires( window, jq );
102741
			module.exports = factory( jq, window, window.document );
102742
		}
102743
	}
102744
	else {
102745
		// Browser
102746
		factory( jQuery, window, document );
102747
	}
102748
}(function( $, window, document ) {
102749
'use strict';
102750
var DataTable = $.fn.dataTable;
15162
102751
15163
			var dropButton = $(
15164
				'<button class="' +
15165
					dropdownConf.dropdown.className +
15166
					' dt-button"></button>'
15167
			)
15168
				.html(this.c.dom.button.dropHtml)
15169
				.addClass(this.c.dom.button.dropClass)
15170
				.on('click.dtb', function (e) {
15171
					e.preventDefault();
15172
					e.stopPropagation();
15173
102752
15174
					if (!dropButton.hasClass(dom.disabled)) {
15175
						splitAction(e, dt, dropButton, dropButtonConfig);
15176
					}
15177
					if (clickBlurs) {
15178
						dropButton.trigger('blur');
15179
					}
15180
				})
15181
				.on('keypress.dtb', function (e) {
15182
					if (e.keyCode === 13) {
15183
						e.preventDefault();
15184
102753
15185
						if (!dropButton.hasClass(dom.disabled)) {
102754
$.extend(DataTable.ext.buttons, {
15186
							splitAction(e, dt, dropButton, dropButtonConfig);
102755
	// A collection of column visibility buttons
15187
						}
102756
	colvis: function (dt, conf) {
15188
					}
102757
		var node = null;
15189
				});
102758
		var buttonConf = {
102759
			extend: 'collection',
102760
			init: function (dt, n) {
102761
				node = n;
102762
			},
102763
			text: function (dt) {
102764
				return dt.i18n('buttons.colvis', 'Column visibility');
102765
			},
102766
			className: 'buttons-colvis',
102767
			closeButton: false,
102768
			buttons: [
102769
				{
102770
					extend: 'columnsToggle',
102771
					columns: conf.columns,
102772
					columnText: conf.columnText
102773
				}
102774
			]
102775
		};
15190
102776
15191
			if (config.split.length === 0) {
102777
		// Rebuild the collection with the new column structure if columns are reordered
15192
				dropButton.addClass('dtb-hide-drop');
102778
		dt.on('column-reorder.dt' + conf.namespace, function () {
15193
			}
102779
			dt.button(null, dt.button(null, node).node()).collectionRebuild([
102780
				{
102781
					extend: 'columnsToggle',
102782
					columns: conf.columns,
102783
					columnText: conf.columnText
102784
				}
102785
			]);
102786
		});
15194
102787
15195
			splitDiv.append(dropButton).attr(dropButtonConfig.attr);
102788
		return buttonConf;
15196
		}
102789
	},
15197
102790
15198
		var node = isSplit ? splitDiv.get(0) : button.get(0);
102791
	// Selected columns with individual buttons - toggle column visibility
102792
	columnsToggle: function (dt, conf) {
102793
		var columns = dt
102794
			.columns(conf.columns)
102795
			.indexes()
102796
			.map(function (idx) {
102797
				return {
102798
					extend: 'columnToggle',
102799
					columns: idx,
102800
					columnText: conf.columnText
102801
				};
102802
			})
102803
			.toArray();
102804
102805
		return columns;
102806
	},
15199
102807
102808
	// Single button to toggle column visibility
102809
	columnToggle: function (dt, conf) {
15200
		return {
102810
		return {
15201
			conf: config,
102811
			extend: 'columnVisibility',
15202
			node: node,
102812
			columns: conf.columns,
15203
			nodeChild: node && node.children && node.children.length ? node.children[0] : null,
102813
			columnText: conf.columnText
15204
			inserter: isSplit ? splitDiv : inserter,
15205
			buttons: [],
15206
			inCollection: inCollection,
15207
			isSplit: isSplit,
15208
			inSplit: inSplit,
15209
			collection: null,
15210
			textNode: textNode
15211
		};
102814
		};
15212
	},
102815
	},
15213
102816
15214
	/**
102817
	// Selected columns with individual buttons - set column visibility
15215
	 * Spin over buttons checking if splits should be enabled or not.
102818
	columnsVisibility: function (dt, conf) {
15216
	 * @param {*} buttons Array of buttons to check
102819
		var columns = dt
15217
	 */
102820
			.columns(conf.columns)
15218
	_checkSplitEnable: function (buttons) {
102821
			.indexes()
15219
		if (! buttons) {
102822
			.map(function (idx) {
15220
			buttons = this.s.buttons;
102823
				return {
15221
		}
102824
					extend: 'columnVisibility',
102825
					columns: idx,
102826
					visibility: conf.visibility,
102827
					columnText: conf.columnText
102828
				};
102829
			})
102830
			.toArray();
15222
102831
15223
		for (var i=0 ; i<buttons.length ; i++) {
102832
		return columns;
15224
			var button = buttons[i];
102833
	},
15225
102834
15226
			// Check if the button is a split one and if so, determine
102835
	// Single button to set column visibility
15227
			// its state
102836
	columnVisibility: {
15228
			if (button.isSplit) {
102837
		columns: undefined, // column selector
15229
				var splitBtn = button.node.childNodes[1];
102838
		text: function (dt, button, conf) {
102839
			return conf._columnText(dt, conf);
102840
		},
102841
		className: 'buttons-columnVisibility',
102842
		action: function (e, dt, button, conf) {
102843
			var col = dt.columns(conf.columns);
102844
			var curr = col.visible();
15230
102845
15231
				if (this._checkAnyEnabled(button.buttons)) {
102846
			col.visible(
15232
					// Enable the split
102847
				conf.visibility !== undefined ? conf.visibility : !(curr.length ? curr[0] : false)
15233
					$(splitBtn)
102848
			);
15234
						.removeClass(this.c.dom.button.disabled)
102849
		},
15235
						.prop('disabled', false);
102850
		init: function (dt, button, conf) {
102851
			var that = this;
102852
			var column = dt.column(conf.columns);
102853
102854
			button.attr('data-cv-idx', conf.columns);
102855
102856
			dt.on('column-visibility.dt' + conf.namespace, function (e, settings, index, state) {
102857
				if (
102858
					column.index() === index &&
102859
					!settings.bDestroying &&
102860
					settings.nTable == dt.settings()[0].nTable
102861
				) {
102862
					that.active(state);
15236
				}
102863
				}
15237
				else {
102864
			}).on('column-reorder.dt' + conf.namespace, function () {
15238
					$(splitBtn)
102865
				// Button has been removed from the DOM
15239
						.addClass(this.c.dom.button.disabled)
102866
				if (conf.destroying) {
15240
						.prop('disabled', false);
102867
					return;
15241
				}
102868
				}
15242
			}
15243
			else if (button.isCollection) {
15244
				// Nest down into collections
15245
				this._checkSplitEnable(button.buttons);
15246
			}
15247
		}
15248
	},
15249
102869
15250
	/**
102870
				if (dt.columns(conf.columns).count() !== 1) {
15251
	 * Check an array of buttons and see if any are enabled in it
102871
					return;
15252
	 * @param {*} buttons Button array
102872
				}
15253
	 * @returns true if a button is enabled, false otherwise
15254
	 */
15255
	_checkAnyEnabled: function (buttons) {
15256
		for (var i=0 ; i<buttons.length ; i++) {
15257
			if (! buttons[i].disabled) {
15258
				return true;
15259
			}
15260
		}
15261
102873
15262
		return false;
102874
				// Reassign the column for the updated indexes
15263
	},
102875
				column = dt.column(conf.columns);
15264
102876
15265
	/**
102877
				// This button controls the same column index but the text for the column has
15266
	 * Get the button object from a node (recursive)
102878
				// changed
15267
	 * @param  {node} node Button node
102879
				that.text(conf._columnText(dt, conf));
15268
	 * @param  {array} [buttons] Button array, uses base if not defined
15269
	 * @return {object} Button object
15270
	 * @private
15271
	 */
15272
	_nodeToButton: function (node, buttons) {
15273
		if (!buttons) {
15274
			buttons = this.s.buttons;
15275
		}
15276
102880
15277
		for (var i = 0, ien = buttons.length; i < ien; i++) {
102881
				// Since its a different column, we need to check its visibility
15278
			if (buttons[i].node === node || buttons[i].nodeChild === node) {
102882
				that.active(column.visible());
15279
				return buttons[i];
102883
			});
15280
			}
15281
102884
15282
			if (buttons[i].buttons.length) {
102885
			this.active(column.visible());
15283
				var ret = this._nodeToButton(node, buttons[i].buttons);
102886
		},
102887
		destroy: function (dt, button, conf) {
102888
			dt.off('column-visibility.dt' + conf.namespace).off(
102889
				'column-reorder.dt' + conf.namespace
102890
			);
102891
		},
15284
102892
15285
				if (ret) {
102893
		_columnText: function (dt, conf) {
15286
					return ret;
102894
			if (typeof conf.text === 'string') {
15287
				}
102895
				return conf.text;
15288
			}
102896
			}
15289
		}
15290
	},
15291
102897
15292
	/**
102898
			var title = dt.column(conf.columns).title();
15293
	 * Get container array for a button from a button node (recursive)
102899
			var idx = dt.column(conf.columns).index();
15294
	 * @param  {node} node Button node
15295
	 * @param  {array} [buttons] Button array, uses base if not defined
15296
	 * @return {array} Button's host array
15297
	 * @private
15298
	 */
15299
	_nodeToHost: function (node, buttons) {
15300
		if (!buttons) {
15301
			buttons = this.s.buttons;
15302
		}
15303
102900
15304
		for (var i = 0, ien = buttons.length; i < ien; i++) {
102901
			title = title
15305
			if (buttons[i].node === node) {
102902
				.replace(/\n/g, ' ') // remove new lines
15306
				return buttons;
102903
				.replace(/<br\s*\/?>/gi, ' ') // replace line breaks with spaces
15307
			}
102904
				.replace(/<select(.*?)<\/select\s*>/gi, ''); // remove select tags, including options text
15308
102905
15309
			if (buttons[i].buttons.length) {
102906
			// Strip HTML comments
15310
				var ret = this._nodeToHost(node, buttons[i].buttons);
102907
			title = DataTable.Buttons.stripHtmlComments(title);
15311
102908
15312
				if (ret) {
102909
			// Use whatever HTML stripper DataTables is configured for
15313
					return ret;
102910
			title = DataTable.util.stripHtml(title).trim();
15314
				}
102911
15315
			}
102912
			return conf.columnText ? conf.columnText(dt, idx, title) : title;
15316
		}
102913
		}
15317
	},
102914
	},
15318
102915
15319
	/**
102916
	colvisRestore: {
15320
	 * Handle a key press - determine if any button's key configured matches
102917
		className: 'buttons-colvisRestore',
15321
	 * what was typed and trigger the action if so.
15322
	 * @param  {string} character The character pressed
15323
	 * @param  {object} e Key event that triggered this call
15324
	 * @private
15325
	 */
15326
	_keypress: function (character, e) {
15327
		// Check if this button press already activated on another instance of Buttons
15328
		if (e._buttonsHandled) {
15329
			return;
15330
		}
15331
102918
15332
		var run = function (conf, node) {
102919
		text: function (dt) {
15333
			if (!conf.key) {
102920
			return dt.i18n('buttons.colvisRestore', 'Restore visibility');
15334
				return;
102921
		},
15335
			}
15336
102922
15337
			if (conf.key === character) {
102923
		init: function (dt, button, conf) {
15338
				e._buttonsHandled = true;
102924
			// Use a private parameter on the column. This gets moved around with the
15339
				$(node).click();
102925
			// column if ColReorder changes the order
15340
			}
102926
			dt.columns().every(function () {
15341
			else if ($.isPlainObject(conf.key)) {
102927
				var init = this.init();
15342
				if (conf.key.key !== character) {
15343
					return;
15344
				}
15345
102928
15346
				if (conf.key.shiftKey && !e.shiftKey) {
102929
				if (init.__visOriginal === undefined) {
15347
					return;
102930
					init.__visOriginal = this.visible();
15348
				}
102931
				}
102932
			});
102933
		},
15349
102934
15350
				if (conf.key.altKey && !e.altKey) {
102935
		action: function (e, dt, button, conf) {
15351
					return;
102936
			dt.columns().every(function (i) {
15352
				}
102937
				var init = this.init();
15353
102938
15354
				if (conf.key.ctrlKey && !e.ctrlKey) {
102939
				this.visible(init.__visOriginal);
15355
					return;
102940
			});
15356
				}
102941
		}
102942
	},
15357
102943
15358
				if (conf.key.metaKey && !e.metaKey) {
102944
	colvisGroup: {
15359
					return;
102945
		className: 'buttons-colvisGroup',
15360
				}
15361
102946
15362
				// Made it this far - it is good
102947
		action: function (e, dt, button, conf) {
15363
				e._buttonsHandled = true;
102948
			dt.columns(conf.show).visible(true, false);
15364
				$(node).click();
102949
			dt.columns(conf.hide).visible(false, false);
15365
			}
15366
		};
15367
102950
15368
		var recurse = function (a) {
102951
			dt.columns.adjust();
15369
			for (var i = 0, ien = a.length; i < ien; i++) {
102952
		},
15370
				run(a[i].conf, a[i].node);
15371
102953
15372
				if (a[i].buttons.length) {
102954
		show: [],
15373
					recurse(a[i].buttons);
15374
				}
15375
			}
15376
		};
15377
102955
15378
		recurse(this.s.buttons);
102956
		hide: []
15379
	},
102957
	}
102958
});
15380
102959
15381
	/**
15382
	 * Remove a key from the key listener for this instance (to be used when a
15383
	 * button is removed)
15384
	 * @param  {object} conf Button configuration
15385
	 * @private
15386
	 */
15387
	_removeKey: function (conf) {
15388
		if (conf.key) {
15389
			var character = $.isPlainObject(conf.key) ? conf.key.key : conf.key;
15390
102960
15391
			// Remove only one character, as multiple buttons could have the
102961
return DataTable;
15392
			// same listening key
102962
}));
15393
			var a = this.s.listenKeys.split('');
15394
			var idx = $.inArray(character, a);
15395
			a.splice(idx, 1);
15396
			this.s.listenKeys = a.join('');
15397
		}
15398
	},
15399
102963
15400
	/**
15401
	 * Resolve a button configuration
15402
	 * @param  {string|function|object} conf Button config to resolve
15403
	 * @return {object} Button configuration
15404
	 * @private
15405
	 */
15406
	_resolveExtends: function (conf) {
15407
		var that = this;
15408
		var dt = this.s.dt;
15409
		var i, ien;
15410
		var toConfObject = function (base) {
15411
			var loop = 0;
15412
102964
15413
			// Loop until we have resolved to a button configuration, or an
102965
/*!
15414
			// array of button configurations (which will be iterated
102966
 * HTML5 export buttons for Buttons and DataTables.
15415
			// separately)
102967
 * © SpryMedia Ltd - datatables.net/license
15416
			while (!$.isPlainObject(base) && !Array.isArray(base)) {
102968
 *
15417
				if (base === undefined) {
102969
 * FileSaver.js (1.3.3) - MIT license
15418
					return;
102970
 * Copyright © 2016 Eli Grey - http://eligrey.com
15419
				}
102971
 */
15420
102972
15421
				if (typeof base === 'function') {
102973
(function( factory ){
15422
					base = base.call(that, dt, conf);
102974
	if ( typeof define === 'function' && define.amd ) {
102975
		// AMD
102976
		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
102977
			return factory( $, window, document );
102978
		} );
102979
	}
102980
	else if ( typeof exports === 'object' ) {
102981
		// CommonJS
102982
		var jq = require('jquery');
102983
		var cjsRequires = function (root, $) {
102984
			if ( ! $.fn.dataTable ) {
102985
				require('datatables.net')(root, $);
102986
			}
15423
102987
15424
					if (!base) {
102988
			if ( ! $.fn.dataTable.Buttons ) {
15425
						return false;
102989
				require('datatables.net-buttons')(root, $);
15426
					}
102990
			}
15427
				}
102991
		};
15428
				else if (typeof base === 'string') {
15429
					if (!_dtButtons[base]) {
15430
						return { html: base };
15431
					}
15432
102992
15433
					base = _dtButtons[base];
102993
		if (typeof window === 'undefined') {
102994
			module.exports = function (root, $) {
102995
				if ( ! root ) {
102996
					// CommonJS environments without a window global must pass a
102997
					// root. This will give an error otherwise
102998
					root = window;
15434
				}
102999
				}
15435
103000
15436
				loop++;
103001
				if ( ! $ ) {
15437
				if (loop > 30) {
103002
					$ = jq( root );
15438
					// Protect against misconfiguration killing the browser
15439
					throw 'Buttons: Too many iterations';
15440
				}
103003
				}
15441
			}
15442
103004
15443
			return Array.isArray(base) ? base : $.extend({}, base);
103005
				cjsRequires( root, $ );
15444
		};
103006
				return factory( $, root, root.document );
103007
			};
103008
		}
103009
		else {
103010
			cjsRequires( window, jq );
103011
			module.exports = factory( jq, window, window.document );
103012
		}
103013
	}
103014
	else {
103015
		// Browser
103016
		factory( jQuery, window, document );
103017
	}
103018
}(function( $, window, document ) {
103019
'use strict';
103020
var DataTable = $.fn.dataTable;
15445
103021
15446
		conf = toConfObject(conf);
15447
103022
15448
		while (conf && conf.extend) {
15449
			// Use `toConfObject` in case the button definition being extended
15450
			// is itself a string or a function
15451
			if (!_dtButtons[conf.extend]) {
15452
				throw 'Cannot extend unknown button type: ' + conf.extend;
15453
			}
15454
103023
15455
			var objArray = toConfObject(_dtButtons[conf.extend]);
103024
// Allow the constructor to pass in JSZip and PDFMake from external requires.
15456
			if (Array.isArray(objArray)) {
103025
// Otherwise, use globally defined variables, if they are available.
15457
				return objArray;
103026
var useJszip;
15458
			}
103027
var usePdfmake;
15459
			else if (!objArray) {
15460
				// This is a little brutal as it might be possible to have a
15461
				// valid button without the extend, but if there is no extend
15462
				// then the host button would be acting in an undefined state
15463
				return false;
15464
			}
15465
103028
15466
			// Stash the current class name
103029
function _jsZip() {
15467
			var originalClassName = objArray.className;
103030
	return useJszip || window.JSZip;
103031
}
103032
function _pdfMake() {
103033
	return usePdfmake || window.pdfMake;
103034
}
15468
103035
15469
			if (conf.config !== undefined && objArray.config !== undefined) {
103036
DataTable.Buttons.pdfMake = function (_) {
15470
				conf.config = $.extend({}, objArray.config, conf.config);
103037
	if (!_) {
15471
			}
103038
		return _pdfMake();
103039
	}
103040
	usePdfmake = _;
103041
};
15472
103042
15473
			conf = $.extend({}, objArray, conf);
103043
DataTable.Buttons.jszip = function (_) {
103044
	if (!_) {
103045
		return _jsZip();
103046
	}
103047
	useJszip = _;
103048
};
15474
103049
15475
			// The extend will have overwritten the original class name if the
103050
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
15476
			// `conf` object also assigned a class, but we want to concatenate
103051
 * FileSaver.js dependency
15477
			// them so they are list that is combined from all extended buttons
103052
 */
15478
			if (originalClassName && conf.className !== originalClassName) {
15479
				conf.className = originalClassName + ' ' + conf.className;
15480
			}
15481
103053
15482
			// Although we want the `conf` object to overwrite almost all of
103054
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
15483
			// the properties of the object being extended, the `extend`
15484
			// property should come from the object being extended
15485
			conf.extend = objArray.extend;
15486
		}
15487
103055
15488
		// Buttons to be added to a collection  -gives the ability to define
103056
var _saveAs = (function (view) {
15489
		// if buttons should be added to the start or end of a collection
103057
	'use strict';
15490
		var postfixButtons = conf.postfixButtons;
103058
	// IE <10 is explicitly unsupported
15491
		if (postfixButtons) {
103059
	if (
15492
			if (!conf.buttons) {
103060
		typeof view === 'undefined' ||
15493
				conf.buttons = [];
103061
		(typeof navigator !== 'undefined' &&
103062
			/MSIE [1-9]\./.test(navigator.userAgent))
103063
	) {
103064
		return;
103065
	}
103066
	var doc = view.document,
103067
		// only get URL when necessary in case Blob.js hasn't overridden it yet
103068
		get_URL = function () {
103069
			return view.URL || view.webkitURL || view;
103070
		},
103071
		save_link = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'),
103072
		can_use_save_link = 'download' in save_link,
103073
		click = function (node) {
103074
			var event = new MouseEvent('click');
103075
			node.dispatchEvent(event);
103076
		},
103077
		is_safari = /constructor/i.test(view.HTMLElement) || view.safari,
103078
		is_chrome_ios = /CriOS\/[\d]+/.test(navigator.userAgent),
103079
		throw_outside = function (ex) {
103080
			(view.setImmediate || view.setTimeout)(function () {
103081
				throw ex;
103082
			}, 0);
103083
		},
103084
		force_saveable_type = 'application/octet-stream',
103085
		// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
103086
		arbitrary_revoke_timeout = 1000 * 40, // in ms
103087
		revoke = function (file) {
103088
			var revoker = function () {
103089
				if (typeof file === 'string') {
103090
					// file is an object URL
103091
					get_URL().revokeObjectURL(file);
103092
				}
103093
				else {
103094
					// file is a File
103095
					file.remove();
103096
				}
103097
			};
103098
			setTimeout(revoker, arbitrary_revoke_timeout);
103099
		},
103100
		dispatch = function (filesaver, event_types, event) {
103101
			event_types = [].concat(event_types);
103102
			var i = event_types.length;
103103
			while (i--) {
103104
				var listener = filesaver['on' + event_types[i]];
103105
				if (typeof listener === 'function') {
103106
					try {
103107
						listener.call(filesaver, event || filesaver);
103108
					} catch (ex) {
103109
						throw_outside(ex);
103110
					}
103111
				}
15494
			}
103112
			}
15495
103113
		},
15496
			for (i = 0, ien = postfixButtons.length; i < ien; i++) {
103114
		auto_bom = function (blob) {
15497
				conf.buttons.push(postfixButtons[i]);
103115
			// prepend BOM for UTF-8 XML and text/* types (including HTML)
103116
			// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
103117
			if (
103118
				/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
103119
					blob.type
103120
				)
103121
			) {
103122
				return new Blob([String.fromCharCode(0xfeff), blob], {
103123
					type: blob.type
103124
				});
15498
			}
103125
			}
15499
		}
103126
			return blob;
103127
		},
103128
		FileSaver = function (blob, name, no_auto_bom) {
103129
			if (!no_auto_bom) {
103130
				blob = auto_bom(blob);
103131
			}
103132
			// First try a.download, then web filesystem, then object URLs
103133
			var filesaver = this,
103134
				type = blob.type,
103135
				force = type === force_saveable_type,
103136
				object_url,
103137
				dispatch_all = function () {
103138
					dispatch(
103139
						filesaver,
103140
						'writestart progress write writeend'.split(' ')
103141
					);
103142
				},
103143
				// on any filesys errors revert to saving with object URLs
103144
				fs_error = function () {
103145
					if (
103146
						(is_chrome_ios || (force && is_safari)) &&
103147
						view.FileReader
103148
					) {
103149
						// Safari doesn't allow downloading of blob urls
103150
						var reader = new FileReader();
103151
						reader.onloadend = function () {
103152
							var url = is_chrome_ios
103153
								? reader.result
103154
								: reader.result.replace(
103155
										/^data:[^;]*;/,
103156
										'data:attachment/file;'
103157
								);
103158
							var popup = view.open(url, '_blank');
103159
							if (!popup) view.location.href = url;
103160
							url = undefined; // release reference before dispatching
103161
							filesaver.readyState = filesaver.DONE;
103162
							dispatch_all();
103163
						};
103164
						reader.readAsDataURL(blob);
103165
						filesaver.readyState = filesaver.INIT;
103166
						return;
103167
					}
103168
					// don't create more object URLs than needed
103169
					if (!object_url) {
103170
						object_url = get_URL().createObjectURL(blob);
103171
					}
103172
					if (force) {
103173
						view.location.href = object_url;
103174
					}
103175
					else {
103176
						var opened = view.open(object_url, '_blank');
103177
						if (!opened) {
103178
							// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
103179
							view.location.href = object_url;
103180
						}
103181
					}
103182
					filesaver.readyState = filesaver.DONE;
103183
					dispatch_all();
103184
					revoke(object_url);
103185
				};
103186
			filesaver.readyState = filesaver.INIT;
15500
103187
15501
		var prefixButtons = conf.prefixButtons;
103188
			if (can_use_save_link) {
15502
		if (prefixButtons) {
103189
				object_url = get_URL().createObjectURL(blob);
15503
			if (!conf.buttons) {
103190
				setTimeout(function () {
15504
				conf.buttons = [];
103191
					save_link.href = object_url;
103192
					save_link.download = name;
103193
					click(save_link);
103194
					dispatch_all();
103195
					revoke(object_url);
103196
					filesaver.readyState = filesaver.DONE;
103197
				});
103198
				return;
15505
			}
103199
			}
15506
103200
15507
			for (i = 0, ien = prefixButtons.length; i < ien; i++) {
103201
			fs_error();
15508
				conf.buttons.splice(i, 0, prefixButtons[i]);
103202
		},
103203
		FS_proto = FileSaver.prototype,
103204
		saveAs = function (blob, name, no_auto_bom) {
103205
			return new FileSaver(
103206
				blob,
103207
				name || blob.name || 'download',
103208
				no_auto_bom
103209
			);
103210
		};
103211
	// IE 10+ (native saveAs)
103212
	if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) {
103213
		return function (blob, name, no_auto_bom) {
103214
			name = name || blob.name || 'download';
103215
103216
			if (!no_auto_bom) {
103217
				blob = auto_bom(blob);
15509
			}
103218
			}
15510
		}
103219
			return navigator.msSaveOrOpenBlob(blob, name);
103220
		};
103221
	}
15511
103222
15512
		return conf;
103223
	FS_proto.abort = function () {};
15513
	},
103224
	FS_proto.readyState = FS_proto.INIT = 0;
103225
	FS_proto.WRITING = 1;
103226
	FS_proto.DONE = 2;
15514
103227
15515
	/**
103228
	FS_proto.error =
15516
	 * Display (and replace if there is an existing one) a popover attached to a button
103229
		FS_proto.onwritestart =
15517
	 * @param {string|node} content Content to show
103230
		FS_proto.onprogress =
15518
	 * @param {DataTable.Api} hostButton DT API instance of the button
103231
		FS_proto.onwrite =
15519
	 * @param {object} inOpts Options (see object below for all options)
103232
		FS_proto.onabort =
15520
	 */
103233
		FS_proto.onerror =
15521
	_popover: function (content, hostButton, inOpts) {
103234
		FS_proto.onwriteend =
15522
		var dt = hostButton;
103235
			null;
15523
		var c = this.c;
15524
		var closed = false;
15525
		var options = $.extend(
15526
			{
15527
				align: 'button-left', // button-right, dt-container, split-left, split-right
15528
				autoClose: false,
15529
				background: true,
15530
				backgroundClassName: 'dt-button-background',
15531
				closeButton: true,
15532
				containerClassName: c.dom.collection.container.className,
15533
				contentClassName: c.dom.collection.container.content.className,
15534
				collectionLayout: '',
15535
				collectionTitle: '',
15536
				dropup: false,
15537
				fade: 400,
15538
				popoverTitle: '',
15539
				rightAlignClassName: 'dt-button-right',
15540
				tag: c.dom.collection.container.tag
15541
			},
15542
			inOpts
15543
		);
15544
103236
15545
		var containerSelector =
103237
	return saveAs;
15546
			options.tag + '.' + options.containerClassName.replace(/ /g, '.');
103238
})(
15547
		var hostButtonNode = hostButton.node();
103239
	(typeof self !== 'undefined' && self) ||
15548
		var hostNode = options.collectionLayout.includes('fixed') ? $('body') : hostButton.node();
103240
		(typeof window !== 'undefined' && window) ||
103241
		this.content
103242
);
15549
103243
15550
		var close = function () {
103244
// Expose file saver on the DataTables API. Can't attach to `DataTables.Buttons`
15551
			closed = true;
103245
// since this file can be loaded before Button's core!
103246
DataTable.fileSave = _saveAs;
15552
103247
15553
			_fadeOut($(containerSelector), options.fade, function () {
103248
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
15554
				$(this).detach();
103249
 * Local (private) functions
15555
			});
103250
 */
15556
103251
15557
			$(
103252
/**
15558
				dt
103253
 * Get the sheet name for Excel exports.
15559
					.buttons('[aria-haspopup="dialog"][aria-expanded="true"]')
103254
 *
15560
					.nodes()
103255
 * @param {object}	config Button configuration
15561
			).attr('aria-expanded', 'false');
103256
 */
103257
var _sheetname = function (config) {
103258
	var sheetName = 'Sheet1';
15562
103259
15563
			$('div.dt-button-background').off('click.dtb-collection');
103260
	if (config.sheetName) {
15564
			Buttons.background(
103261
		sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
15565
				false,
103262
	}
15566
				options.backgroundClassName,
15567
				options.fade,
15568
				hostNode
15569
			);
15570
103263
15571
			$(window).off('resize.resize.dtb-collection');
103264
	return sheetName;
15572
			$('body').off('.dtb-collection');
103265
};
15573
			dt.off('buttons-action.b-internal');
15574
			dt.off('destroy');
15575
103266
15576
			$('body').trigger('buttons-popover-hide.dt');
103267
/**
15577
		};
103268
 * Get the newline character(s)
103269
 *
103270
 * @param {object}	config Button configuration
103271
 * @return {string}				Newline character
103272
 */
103273
var _newLine = function (config) {
103274
	return config.newline
103275
		? config.newline
103276
		: navigator.userAgent.match(/Windows/)
103277
		? '\r\n'
103278
		: '\n';
103279
};
15578
103280
15579
		if (content === false) {
103281
/**
15580
			close();
103282
 * Combine the data from the `buttons.exportData` method into a string that
15581
			return;
103283
 * will be used in the export file.
15582
		}
103284
 *
103285
 * @param	{DataTable.Api} dt		 DataTables API instance
103286
 * @param	{object}				config Button configuration
103287
 * @return {object}							 The data to export
103288
 */
103289
var _exportData = function (dt, config) {
103290
	var newLine = _newLine(config);
103291
	var data = dt.buttons.exportData(config.exportOptions);
103292
	var boundary = config.fieldBoundary;
103293
	var separator = config.fieldSeparator;
103294
	var reBoundary = new RegExp(boundary, 'g');
103295
	var escapeChar = config.escapeChar !== undefined ? config.escapeChar : '\\';
103296
	var join = function (a) {
103297
		var s = '';
15583
103298
15584
		var existingExpanded = $(
103299
		// If there is a field boundary, then we might need to escape it in
15585
			dt.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()
103300
		// the source data
15586
		);
103301
		for (var i = 0, ien = a.length; i < ien; i++) {
15587
		if (existingExpanded.length) {
103302
			if (i > 0) {
15588
			// Reuse the current position if the button that was triggered is inside an existing collection
103303
				s += separator;
15589
			if (hostNode.closest(containerSelector).length) {
15590
				hostNode = existingExpanded.eq(0);
15591
			}
103304
			}
15592
103305
15593
			close();
103306
			s += boundary
15594
		}
103307
				? boundary +
15595
103308
				('' + a[i]).replace(reBoundary, escapeChar + boundary) +
15596
		// Sort buttons if defined
103309
				boundary
15597
		if (options.sort) {
103310
				: a[i];
15598
			var elements = $('button', content)
15599
				.map(function (idx, el) {
15600
					return {
15601
						text: $(el).text(),
15602
						el: el
15603
					};
15604
				})
15605
				.toArray();
15606
15607
			elements.sort(function (a, b) {
15608
				return a.text.localeCompare(b.text);
15609
			});
15610
15611
			$(content).append(elements.map(function (v) {
15612
				return v.el;
15613
			}));
15614
		}
103311
		}
15615
103312
15616
		// Try to be smart about the layout
103313
		return s;
15617
		var cnt = $('.dt-button', content).length;
103314
	};
15618
		var mod = '';
15619
103315
15620
		if (cnt === 3) {
103316
	var header = '';
15621
			mod = 'dtb-b3';
103317
	var footer = '';
15622
		}
103318
	var body = [];
15623
		else if (cnt === 2) {
15624
			mod = 'dtb-b2';
15625
		}
15626
		else if (cnt === 1) {
15627
			mod = 'dtb-b1';
15628
		}
15629
103319
15630
		var display = $('<' + options.tag + '/>')
103320
	if (config.header) {
15631
			.addClass(options.containerClassName)
103321
		header =
15632
			.addClass(options.collectionLayout)
103322
			data.headerStructure
15633
			.addClass(options.splitAlignClass)
103323
				.map(function (row) {
15634
			.addClass(mod)
103324
					return join(
15635
			.css('display', 'none')
103325
						row.map(function (cell) {
15636
			.attr({
103326
							return cell ? cell.title : '';
15637
				'aria-modal': true,
103327
						})
15638
				role: 'dialog'
103328
					);
15639
			});
103329
				})
103330
				.join(newLine) + newLine;
103331
	}
15640
103332
15641
		content = $(content)
103333
	if (config.footer && data.footer) {
15642
			.addClass(options.contentClassName)
103334
		footer =
15643
			.attr('role', 'menu')
103335
			data.footerStructure
15644
			.appendTo(display);
103336
				.map(function (row) {
103337
					return join(
103338
						row.map(function (cell) {
103339
							return cell ? cell.title : '';
103340
						})
103341
					);
103342
				})
103343
				.join(newLine) + newLine;
103344
	}
15645
103345
15646
		hostButtonNode.attr('aria-expanded', 'true');
103346
	for (var i = 0, ien = data.body.length; i < ien; i++) {
103347
		body.push(join(data.body[i]));
103348
	}
15647
103349
15648
		if (hostNode.parents('body')[0] !== document.body) {
103350
	return {
15649
			hostNode = $(document.body).children('div, section, p').last();
103351
		str: header + body.join(newLine) + newLine + footer,
15650
		}
103352
		rows: body.length
103353
	};
103354
};
15651
103355
15652
		if (options.popoverTitle) {
103356
/**
15653
			display.prepend(
103357
 * Older versions of Safari (prior to tech preview 18) don't support the
15654
				'<div class="dt-button-collection-title">' +
103358
 * download option required.
15655
					options.popoverTitle +
103359
 *
15656
					'</div>'
103360
 * @return {Boolean} `true` if old Safari
15657
			);
103361
 */
15658
		}
103362
var _isDuffSafari = function () {
15659
		else if (options.collectionTitle) {
103363
	var safari =
15660
			display.prepend(
103364
		navigator.userAgent.indexOf('Safari') !== -1 &&
15661
				'<div class="dt-button-collection-title">' +
103365
		navigator.userAgent.indexOf('Chrome') === -1 &&
15662
					options.collectionTitle +
103366
		navigator.userAgent.indexOf('Opera') === -1;
15663
					'</div>'
15664
			);
15665
		}
15666
103367
15667
		if (options.closeButton) {
103368
	if (!safari) {
15668
			display
103369
		return false;
15669
				.prepend('<div class="dtb-popover-close">&times;</div>')
103370
	}
15670
				.addClass('dtb-collection-closeable');
15671
		}
15672
103371
15673
		_fadeIn(display.insertAfter(hostNode), options.fade);
103372
	var version = navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/);
103373
	if (version && version.length > 1 && version[1] * 1 < 603.1) {
103374
		return true;
103375
	}
15674
103376
15675
		var tableContainer = $(hostButton.table().container());
103377
	return false;
15676
		var position = display.css('position');
103378
};
15677
103379
15678
		if (options.span === 'container' || options.align === 'dt-container') {
103380
/**
15679
			hostNode = hostNode.parent();
103381
 * Convert from numeric position to letter for column names in Excel
15680
			display.css('width', tableContainer.width());
103382
 * @param  {int} n Column number
15681
		}
103383
 * @return {string} Column letter(s) name
103384
 */
103385
function createCellPos(n) {
103386
	var ordA = 'A'.charCodeAt(0);
103387
	var ordZ = 'Z'.charCodeAt(0);
103388
	var len = ordZ - ordA + 1;
103389
	var s = '';
15682
103390
15683
		// Align the popover relative to the DataTables container
103391
	while (n >= 0) {
15684
		// Useful for wide popovers such as SearchPanes
103392
		s = String.fromCharCode((n % len) + ordA) + s;
15685
		if (position === 'absolute') {
103393
		n = Math.floor(n / len) - 1;
15686
			// Align relative to the host button
103394
	}
15687
			var offsetParent = $(hostNode[0].offsetParent);
15688
			var buttonPosition = hostNode.position();
15689
			var buttonOffset = hostNode.offset();
15690
			var tableSizes = offsetParent.offset();
15691
			var containerPosition = offsetParent.position();
15692
			var computed = window.getComputedStyle(offsetParent[0]);
15693
103395
15694
			tableSizes.height = offsetParent.outerHeight();
103396
	return s;
15695
			tableSizes.width =
103397
}
15696
				offsetParent.width() + parseFloat(computed.paddingLeft);
15697
			tableSizes.right = tableSizes.left + tableSizes.width;
15698
			tableSizes.bottom = tableSizes.top + tableSizes.height;
15699
103398
15700
			// Set the initial position so we can read height / width
103399
try {
15701
			var top = buttonPosition.top + hostNode.outerHeight();
103400
	var _serialiser = new XMLSerializer();
15702
			var left = buttonPosition.left;
103401
	var _ieExcel;
103402
} catch (t) {
103403
	// noop
103404
}
15703
103405
15704
			display.css({
103406
/**
15705
				top: top,
103407
 * Recursively add XML files from an object's structure to a ZIP file. This
15706
				left: left
103408
 * allows the XSLX file to be easily defined with an object's structure matching
15707
			});
103409
 * the files structure.
103410
 *
103411
 * @param {JSZip} zip ZIP package
103412
 * @param {object} obj Object to add (recursive)
103413
 */
103414
function _addToZip(zip, obj) {
103415
	if (_ieExcel === undefined) {
103416
		// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
103417
		// drop attributes
103418
		_ieExcel =
103419
			_serialiser
103420
				.serializeToString(
103421
					new window.DOMParser().parseFromString(
103422
						excelStrings['xl/worksheets/sheet1.xml'],
103423
						'text/xml'
103424
					)
103425
				)
103426
				.indexOf('xmlns:r') === -1;
103427
	}
15708
103428
15709
			// Get the popover position
103429
	$.each(obj, function (name, val) {
15710
			computed = window.getComputedStyle(display[0]);
103430
		if ($.isPlainObject(val)) {
15711
			var popoverSizes = display.offset();
103431
			var newDir = zip.folder(name);
103432
			_addToZip(newDir, val);
103433
		}
103434
		else {
103435
			if (_ieExcel) {
103436
				// IE's XML serialiser will drop some name space attributes from
103437
				// from the root node, so we need to save them. Do this by
103438
				// replacing the namespace nodes with a regular attribute that
103439
				// we convert back when serialised. Edge does not have this
103440
				// issue
103441
				var worksheet = val.childNodes[0];
103442
				var i, ien;
103443
				var attrs = [];
15712
103444
15713
			popoverSizes.height = display.outerHeight();
103445
				for (i = worksheet.attributes.length - 1; i >= 0; i--) {
15714
			popoverSizes.width = display.outerWidth();
103446
					var attrName = worksheet.attributes[i].nodeName;
15715
			popoverSizes.right = popoverSizes.left + popoverSizes.width;
103447
					var attrValue = worksheet.attributes[i].nodeValue;
15716
			popoverSizes.bottom = popoverSizes.top + popoverSizes.height;
15717
			popoverSizes.marginTop = parseFloat(computed.marginTop);
15718
			popoverSizes.marginBottom = parseFloat(computed.marginBottom);
15719
103448
15720
			// First position per the class requirements - pop up and right align
103449
					if (attrName.indexOf(':') !== -1) {
15721
			if (options.dropup) {
103450
						attrs.push({ name: attrName, value: attrValue });
15722
				top =
15723
					buttonPosition.top -
15724
					popoverSizes.height -
15725
					popoverSizes.marginTop -
15726
					popoverSizes.marginBottom;
15727
			}
15728
103451
15729
			if (
103452
						worksheet.removeAttribute(attrName);
15730
				options.align === 'button-right' ||
103453
					}
15731
				display.hasClass(options.rightAlignClassName)
103454
				}
15732
			) {
15733
				left =
15734
					buttonPosition.left -
15735
					popoverSizes.width +
15736
					hostNode.outerWidth();
15737
			}
15738
103455
15739
			// Container alignment - make sure it doesn't overflow the table container
103456
				for (i = 0, ien = attrs.length; i < ien; i++) {
15740
			if (
103457
					var attr = val.createAttribute(
15741
				options.align === 'dt-container' ||
103458
						attrs[i].name.replace(':', '_dt_b_namespace_token_')
15742
				options.align === 'container'
103459
					);
15743
			) {
103460
					attr.value = attrs[i].value;
15744
				if (left < buttonPosition.left) {
103461
					worksheet.setAttributeNode(attr);
15745
					left = -buttonPosition.left;
15746
				}
103462
				}
15747
			}
103463
			}
15748
103464
15749
			// Window adjustment
103465
			var str = _serialiser.serializeToString(val);
15750
			if (
15751
				containerPosition.left + left + popoverSizes.width >
15752
				$(window).width()
15753
			) {
15754
				// Overflowing the document to the right
15755
				left =
15756
					$(window).width() -
15757
					popoverSizes.width -
15758
					containerPosition.left;
15759
			}
15760
103466
15761
			if (buttonOffset.left + left < 0) {
103467
			// Fix IE's XML
15762
				// Off to the left of the document
103468
			if (_ieExcel) {
15763
				left = -buttonOffset.left;
103469
				// IE doesn't include the XML declaration
15764
			}
103470
				if (str.indexOf('<?xml') === -1) {
103471
					str =
103472
						'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
103473
						str;
103474
				}
15765
103475
15766
			if (
103476
				// Return namespace attributes to being as such
15767
				containerPosition.top + top + popoverSizes.height >
103477
				str = str.replace(/_dt_b_namespace_token_/g, ':');
15768
				$(window).height() + $(window).scrollTop()
15769
			) {
15770
				// Pop up if otherwise we'd need the user to scroll down
15771
				top =
15772
					buttonPosition.top -
15773
					popoverSizes.height -
15774
					popoverSizes.marginTop -
15775
					popoverSizes.marginBottom;
15776
			}
15777
103478
15778
			if (offsetParent.offset().top + top < $(window).scrollTop()) {
103479
				// Remove testing name space that IE puts into the space preserve attr
15779
				// Correction for when the top is beyond the top of the page
103480
				str = str.replace(/xmlns:NS[\d]+="" NS[\d]+:/g, '');
15780
				top = buttonPosition.top + hostNode.outerHeight();
15781
			}
103481
			}
15782
103482
15783
			// Calculations all done - now set it
103483
			// Safari, IE and Edge will put empty name space attributes onto
15784
			display.css({
103484
			// various elements making them useless. This strips them out
15785
				top: top,
103485
			str = str.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>');
15786
				left: left
15787
			});
15788
		}
15789
		else {
15790
			// Fix position - centre on screen
15791
			var place = function () {
15792
				var half = $(window).height() / 2;
15793
103486
15794
				var top = display.height() / 2;
103487
			zip.file(name, str);
15795
				if (top > half) {
103488
		}
15796
					top = half;
103489
	});
15797
				}
103490
}
15798
103491
15799
				display.css('marginTop', top * -1);
103492
/**
15800
			};
103493
 * Create an XML node and add any children, attributes, etc without needing to
103494
 * be verbose in the DOM.
103495
 *
103496
 * @param  {object} doc      XML document
103497
 * @param  {string} nodeName Node name
103498
 * @param  {object} opts     Options - can be `attr` (attributes), `children`
103499
 *   (child nodes) and `text` (text content)
103500
 * @return {node}            Created node
103501
 */
103502
function _createNode(doc, nodeName, opts) {
103503
	var tempNode = doc.createElement(nodeName);
15801
103504
15802
			place();
103505
	if (opts) {
103506
		if (opts.attr) {
103507
			$(tempNode).attr(opts.attr);
103508
		}
15803
103509
15804
			$(window).on('resize.dtb-collection', function () {
103510
		if (opts.children) {
15805
				place();
103511
			$.each(opts.children, function (key, value) {
103512
				tempNode.appendChild(value);
15806
			});
103513
			});
15807
		}
103514
		}
15808
103515
15809
		if (options.background) {
103516
		if (opts.text !== null && opts.text !== undefined) {
15810
			Buttons.background(
103517
			tempNode.appendChild(doc.createTextNode(opts.text));
15811
				true,
15812
				options.backgroundClassName,
15813
				options.fade,
15814
				options.backgroundHost || hostNode
15815
			);
15816
		}
103518
		}
103519
	}
15817
103520
15818
		// This is bonkers, but if we don't have a click listener on the
103521
	return tempNode;
15819
		// background element, iOS Safari will ignore the body click
103522
}
15820
		// listener below. An empty function here is all that is
15821
		// required to make it work...
15822
		$('div.dt-button-background').on(
15823
			'click.dtb-collection',
15824
			function () {}
15825
		);
15826
103523
15827
		if (options.autoClose) {
103524
/**
15828
			setTimeout(function () {
103525
 * Get the width for an Excel column based on the contents of that column
15829
				dt.on('buttons-action.b-internal', function (e, btn, dt, node) {
103526
 * @param  {object} data Data for export
15830
					if (node[0] === hostNode[0]) {
103527
 * @param  {int}    col  Column index
15831
						return;
103528
 * @return {int}         Column width
15832
					}
103529
 */
15833
					close();
103530
function _excelColWidth(data, col) {
15834
				});
103531
	var max = data.header[col].length;
15835
			}, 0);
103532
	var len, lineSplit, str;
103533
103534
	if (data.footer && data.footer[col] && data.footer[col].length > max) {
103535
		max = data.footer[col].length;
103536
	}
103537
103538
	for (var i = 0, ien = data.body.length; i < ien; i++) {
103539
		var point = data.body[i][col];
103540
		str = point !== null && point !== undefined ? point.toString() : '';
103541
103542
		// If there is a newline character, workout the width of the column
103543
		// based on the longest line in the string
103544
		if (str.indexOf('\n') !== -1) {
103545
			lineSplit = str.split('\n');
103546
			lineSplit.sort(function (a, b) {
103547
				return b.length - a.length;
103548
			});
103549
103550
			len = lineSplit[0].length;
103551
		}
103552
		else {
103553
			len = str.length;
15836
		}
103554
		}
15837
103555
15838
		$(display).trigger('buttons-popover.dt');
103556
		if (len > max) {
103557
			max = len;
103558
		}
15839
103559
15840
		dt.on('destroy', close);
103560
		// Max width rather than having potentially massive column widths
103561
		if (max > 40) {
103562
			return 54; // 40 * 1.35
103563
		}
103564
	}
15841
103565
15842
		setTimeout(function () {
103566
	max *= 1.35;
15843
			closed = false;
15844
			$('body')
15845
				.on('click.dtb-collection', function (e) {
15846
					if (closed) {
15847
						return;
15848
					}
15849
103567
15850
					// andSelf is deprecated in jQ1.8, but we want 1.7 compat
103568
	// And a min width
15851
					var back = $.fn.addBack ? 'addBack' : 'andSelf';
103569
	return max > 6 ? max : 6;
15852
					var parent = $(e.target).parent()[0];
103570
}
15853
103571
15854
					if (
103572
// Excel - Pre-defined strings to build a basic XLSX file
15855
						(!$(e.target).parents()[back]().filter(content)
103573
var excelStrings = {
15856
							.length &&
103574
	'_rels/.rels':
15857
							!$(parent).hasClass('dt-buttons')) ||
103575
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
15858
						$(e.target).hasClass('dt-button-background')
103576
		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' +
15859
					) {
103577
		'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>' +
15860
						close();
103578
		'</Relationships>',
15861
					}
15862
				})
15863
				.on('keyup.dtb-collection', function (e) {
15864
					if (e.keyCode === 27) {
15865
						close();
15866
					}
15867
				})
15868
				.on('keydown.dtb-collection', function (e) {
15869
					// Focus trap for tab key
15870
					var elements = $('a, button', content);
15871
					var active = document.activeElement;
15872
103579
15873
					if (e.keyCode !== 9) {
103580
	'xl/_rels/workbook.xml.rels':
15874
						// tab
103581
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
15875
						return;
103582
		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' +
15876
					}
103583
		'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>' +
103584
		'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>' +
103585
		'</Relationships>',
15877
103586
15878
					if (elements.index(active) === -1) {
103587
	'[Content_Types].xml':
15879
						// If current focus is not inside the popover
103588
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
15880
						elements.first().focus();
103589
		'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' +
15881
						e.preventDefault();
103590
		'<Default Extension="xml" ContentType="application/xml" />' +
15882
					}
103591
		'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />' +
15883
					else if (e.shiftKey) {
103592
		'<Default Extension="jpeg" ContentType="image/jpeg" />' +
15884
						// Reverse tabbing order when shift key is pressed
103593
		'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />' +
15885
						if (active === elements[0]) {
103594
		'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />' +
15886
							elements.last().focus();
103595
		'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />' +
15887
							e.preventDefault();
103596
		'</Types>',
15888
						}
15889
					}
15890
					else {
15891
						if (active === elements.last()[0]) {
15892
							elements.first().focus();
15893
							e.preventDefault();
15894
						}
15895
					}
15896
				});
15897
		}, 0);
15898
	}
15899
});
15900
103597
15901
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
103598
	'xl/workbook.xml':
15902
 * Statics
103599
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
15903
 */
103600
		'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">' +
103601
		'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>' +
103602
		'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>' +
103603
		'<bookViews>' +
103604
		'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>' +
103605
		'</bookViews>' +
103606
		'<sheets>' +
103607
		'<sheet name="Sheet1" sheetId="1" r:id="rId1"/>' +
103608
		'</sheets>' +
103609
		'<definedNames/>' +
103610
		'</workbook>',
15904
103611
15905
/**
103612
	'xl/worksheets/sheet1.xml':
15906
 * Show / hide a background layer behind a collection
103613
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
15907
 * @param  {boolean} Flag to indicate if the background should be shown or
103614
		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">' +
15908
 *   hidden
103615
		'<sheetData/>' +
15909
 * @param  {string} Class to assign to the background
103616
		'<mergeCells count="0"/>' +
15910
 * @static
103617
		'</worksheet>',
15911
 */
15912
Buttons.background = function (show, className, fade, insertPoint) {
15913
	if (fade === undefined) {
15914
		fade = 400;
15915
	}
15916
	if (!insertPoint) {
15917
		insertPoint = document.body;
15918
	}
15919
103618
15920
	if (show) {
103619
	'xl/styles.xml':
15921
		_fadeIn(
103620
		'<?xml version="1.0" encoding="UTF-8"?>' +
15922
			$('<div/>')
103621
		'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">' +
15923
				.addClass(className)
103622
		'<numFmts count="6">' +
15924
				.css('display', 'none')
103623
		'<numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/>' +
15925
				.insertAfter(insertPoint),
103624
		'<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>' +
15926
			fade
103625
		'<numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/>' +
15927
		);
103626
		'<numFmt numFmtId="167" formatCode="0.0%"/>' +
15928
	}
103627
		'<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>' +
15929
	else {
103628
		'<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>' +
15930
		_fadeOut($('div.' + className), fade, function () {
103629
		'</numFmts>' +
15931
			$(this).removeClass(className).remove();
103630
		'<fonts count="5" x14ac:knownFonts="1">' +
15932
		});
103631
		'<font>' +
15933
	}
103632
		'<sz val="11" />' +
103633
		'<name val="Calibri" />' +
103634
		'</font>' +
103635
		'<font>' +
103636
		'<sz val="11" />' +
103637
		'<name val="Calibri" />' +
103638
		'<color rgb="FFFFFFFF" />' +
103639
		'</font>' +
103640
		'<font>' +
103641
		'<sz val="11" />' +
103642
		'<name val="Calibri" />' +
103643
		'<b />' +
103644
		'</font>' +
103645
		'<font>' +
103646
		'<sz val="11" />' +
103647
		'<name val="Calibri" />' +
103648
		'<i />' +
103649
		'</font>' +
103650
		'<font>' +
103651
		'<sz val="11" />' +
103652
		'<name val="Calibri" />' +
103653
		'<u />' +
103654
		'</font>' +
103655
		'</fonts>' +
103656
		'<fills count="6">' +
103657
		'<fill>' +
103658
		'<patternFill patternType="none" />' +
103659
		'</fill>' +
103660
		'<fill>' + // Excel appears to use this as a dotted background regardless of values but
103661
		'<patternFill patternType="none" />' + // to be valid to the schema, use a patternFill
103662
		'</fill>' +
103663
		'<fill>' +
103664
		'<patternFill patternType="solid">' +
103665
		'<fgColor rgb="FFD9D9D9" />' +
103666
		'<bgColor indexed="64" />' +
103667
		'</patternFill>' +
103668
		'</fill>' +
103669
		'<fill>' +
103670
		'<patternFill patternType="solid">' +
103671
		'<fgColor rgb="FFD99795" />' +
103672
		'<bgColor indexed="64" />' +
103673
		'</patternFill>' +
103674
		'</fill>' +
103675
		'<fill>' +
103676
		'<patternFill patternType="solid">' +
103677
		'<fgColor rgb="ffc6efce" />' +
103678
		'<bgColor indexed="64" />' +
103679
		'</patternFill>' +
103680
		'</fill>' +
103681
		'<fill>' +
103682
		'<patternFill patternType="solid">' +
103683
		'<fgColor rgb="ffc6cfef" />' +
103684
		'<bgColor indexed="64" />' +
103685
		'</patternFill>' +
103686
		'</fill>' +
103687
		'</fills>' +
103688
		'<borders count="2">' +
103689
		'<border>' +
103690
		'<left />' +
103691
		'<right />' +
103692
		'<top />' +
103693
		'<bottom />' +
103694
		'<diagonal />' +
103695
		'</border>' +
103696
		'<border diagonalUp="false" diagonalDown="false">' +
103697
		'<left style="thin">' +
103698
		'<color auto="1" />' +
103699
		'</left>' +
103700
		'<right style="thin">' +
103701
		'<color auto="1" />' +
103702
		'</right>' +
103703
		'<top style="thin">' +
103704
		'<color auto="1" />' +
103705
		'</top>' +
103706
		'<bottom style="thin">' +
103707
		'<color auto="1" />' +
103708
		'</bottom>' +
103709
		'<diagonal />' +
103710
		'</border>' +
103711
		'</borders>' +
103712
		'<cellStyleXfs count="1">' +
103713
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />' +
103714
		'</cellStyleXfs>' +
103715
		'<cellXfs count="68">' +
103716
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103717
		'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103718
		'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103719
		'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103720
		'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103721
		'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103722
		'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103723
		'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103724
		'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103725
		'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103726
		'<xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103727
		'<xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103728
		'<xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103729
		'<xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103730
		'<xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103731
		'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103732
		'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103733
		'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103734
		'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103735
		'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103736
		'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103737
		'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103738
		'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103739
		'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103740
		'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
103741
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103742
		'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103743
		'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103744
		'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103745
		'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103746
		'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103747
		'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103748
		'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103749
		'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103750
		'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103751
		'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103752
		'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103753
		'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103754
		'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103755
		'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103756
		'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103757
		'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103758
		'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103759
		'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103760
		'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103761
		'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103762
		'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103763
		'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103764
		'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103765
		'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
103766
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
103767
		'<alignment horizontal="left"/>' +
103768
		'</xf>' +
103769
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
103770
		'<alignment horizontal="center"/>' +
103771
		'</xf>' +
103772
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
103773
		'<alignment horizontal="right"/>' +
103774
		'</xf>' +
103775
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
103776
		'<alignment horizontal="fill"/>' +
103777
		'</xf>' +
103778
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
103779
		'<alignment textRotation="90"/>' +
103780
		'</xf>' +
103781
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
103782
		'<alignment wrapText="1"/>' +
103783
		'</xf>' +
103784
		'<xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103785
		'<xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103786
		'<xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103787
		'<xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103788
		'<xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103789
		'<xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103790
		'<xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103791
		'<xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103792
		'<xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103793
		'<xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103794
		'<xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103795
		'<xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
103796
		'</cellXfs>' +
103797
		'<cellStyles count="1">' +
103798
		'<cellStyle name="Normal" xfId="0" builtinId="0" />' +
103799
		'</cellStyles>' +
103800
		'<dxfs count="0" />' +
103801
		'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />' +
103802
		'</styleSheet>'
15934
};
103803
};
103804
// Note we could use 3 `for` loops for the styles, but when gzipped there is
103805
// virtually no difference in size, since the above can be easily compressed
15935
103806
15936
/**
103807
// Pattern matching for special number formats. Perhaps this should be exposed
15937
 * Instance selector - select Buttons instances based on an instance selector
103808
// via an API in future?
15938
 * value from the buttons assigned to a DataTable. This is only useful if
103809
// Ref: section 3.8.30 - built in formatters in open spreadsheet
15939
 * multiple instances are attached to a DataTable.
103810
//   https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf
15940
 * @param  {string|int|array} Instance selector - see `instance-selector`
103811
var _excelSpecials = [
15941
 *   documentation on the DataTables site
103812
	{
15942
 * @param  {array} Button instance array that was attached to the DataTables
103813
		match: /^\-?\d+\.\d%$/,
15943
 *   settings object
103814
		style: 60,
15944
 * @return {array} Buttons instances
103815
		fmt: function (d) {
15945
 * @static
103816
			return d / 100;
15946
 */
15947
Buttons.instanceSelector = function (group, buttons) {
15948
	if (group === undefined || group === null) {
15949
		return $.map(buttons, function (v) {
15950
			return v.inst;
15951
		});
15952
	}
15953
15954
	var ret = [];
15955
	var names = $.map(buttons, function (v) {
15956
		return v.name;
15957
	});
15958
15959
	// Flatten the group selector into an array of single options
15960
	var process = function (input) {
15961
		if (Array.isArray(input)) {
15962
			for (var i = 0, ien = input.length; i < ien; i++) {
15963
				process(input[i]);
15964
			}
15965
			return;
15966
		}
103817
		}
15967
103818
	}, // Percent with d.p.
15968
		if (typeof input === 'string') {
103819
	{
15969
			if (input.indexOf(',') !== -1) {
103820
		match: /^\-?\d+\.?\d*%$/,
15970
				// String selector, list of names
103821
		style: 56,
15971
				process(input.split(','));
103822
		fmt: function (d) {
15972
			}
103823
			return d / 100;
15973
			else {
15974
				// String selector individual name
15975
				var idx = $.inArray(input.trim(), names);
15976
15977
				if (idx !== -1) {
15978
					ret.push(buttons[idx].inst);
15979
				}
15980
			}
15981
		}
103824
		}
15982
		else if (typeof input === 'number') {
103825
	}, // Percent
15983
			// Index selector
103826
	{ match: /^\-?\$[\d,]+.?\d*$/, style: 57 }, // Dollars
15984
			ret.push(buttons[input].inst);
103827
	{ match: /^\-?£[\d,]+.?\d*$/, style: 58 }, // Pounds
103828
	{ match: /^\-?€[\d,]+.?\d*$/, style: 59 }, // Euros
103829
	{ match: /^\-?\d+$/, style: 65 }, // Numbers without thousand separators
103830
	{ match: /^\-?\d+\.\d{2}$/, style: 66 }, // Numbers 2 d.p. without thousands separators
103831
	{
103832
		match: /^\([\d,]+\)$/,
103833
		style: 61,
103834
		fmt: function (d) {
103835
			return -1 * d.replace(/[\(\)]/g, '');
15985
		}
103836
		}
15986
		else if (typeof input === 'object' && input.nodeName) {
103837
	}, // Negative numbers indicated by brackets
15987
			// Element selector
103838
	{
15988
			for (var j = 0; j < buttons.length; j++) {
103839
		match: /^\([\d,]+\.\d{2}\)$/,
15989
				if (buttons[j].inst.dom.container[0] === input) {
103840
		style: 62,
15990
					ret.push(buttons[j].inst);
103841
		fmt: function (d) {
15991
				}
103842
			return -1 * d.replace(/[\(\)]/g, '');
15992
			}
15993
		}
103843
		}
15994
		else if (typeof input === 'object') {
103844
	}, // Negative numbers indicated by brackets - 2d.p.
15995
			// Actual instance selector
103845
	{ match: /^\-?[\d,]+$/, style: 63 }, // Numbers with thousand separators
15996
			ret.push(input);
103846
	{ match: /^\-?[\d,]+\.\d{2}$/, style: 64 },
103847
	{
103848
		match: /^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,
103849
		style: 67,
103850
		fmt: function (d) {
103851
			return Math.round(25569 + Date.parse(d) / (86400 * 1000));
15997
		}
103852
		}
15998
	};
103853
	} //Date yyyy-mm-dd
15999
103854
];
16000
	process(group);
16001
16002
	return ret;
16003
};
16004
103855
16005
/**
103856
var _excelMergeCells = function (rels, row, column, rowspan, colspan) {
16006
 * Button selector - select one or more buttons from a selector input so some
103857
	var mergeCells = $('mergeCells', rels);
16007
 * operation can be performed on them.
16008
 * @param  {array} Button instances array that the selector should operate on
16009
 * @param  {string|int|node|jQuery|array} Button selector - see
16010
 *   `button-selector` documentation on the DataTables site
16011
 * @return {array} Array of objects containing `inst` and `idx` properties of
16012
 *   the selected buttons so you know which instance each button belongs to.
16013
 * @static
16014
 */
16015
Buttons.buttonSelector = function (insts, selector) {
16016
	var ret = [];
16017
	var nodeBuilder = function (a, buttons, baseIdx) {
16018
		var button;
16019
		var idx;
16020
103858
16021
		for (var i = 0, ien = buttons.length; i < ien; i++) {
103859
	mergeCells[0].appendChild(
16022
			button = buttons[i];
103860
		_createNode(rels, 'mergeCell', {
103861
			attr: {
103862
				ref:
103863
					createCellPos(column) +
103864
					row +
103865
					':' +
103866
					createCellPos(column + colspan - 1) +
103867
					(row + rowspan - 1)
103868
			}
103869
		})
103870
	);
16023
103871
16024
			if (button) {
103872
	mergeCells.attr('count', parseFloat(mergeCells.attr('count')) + 1);
16025
				idx = baseIdx !== undefined ? baseIdx + i : i + '';
103873
};
16026
103874
16027
				a.push({
103875
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
16028
					node: button.node,
103876
 * Buttons
16029
					name: button.conf.name,
103877
 */
16030
					idx: idx
16031
				});
16032
103878
16033
				if (button.buttons) {
103879
//
16034
					nodeBuilder(a, button.buttons, idx + '-');
103880
// Copy to clipboard
16035
				}
103881
//
16036
			}
103882
DataTable.ext.buttons.copyHtml5 = {
16037
		}
103883
	className: 'buttons-copy buttons-html5',
16038
	};
16039
103884
16040
	var run = function (selector, inst) {
103885
	text: function (dt) {
16041
		var i, ien;
103886
		return dt.i18n('buttons.copy', 'Copy');
16042
		var buttons = [];
103887
	},
16043
		nodeBuilder(buttons, inst.s.buttons);
16044
103888
16045
		var nodes = $.map(buttons, function (v) {
103889
	action: function (e, dt, button, config, cb) {
16046
			return v.node;
103890
		var exportData = _exportData(dt, config);
103891
		var info = dt.buttons.exportInfo(config);
103892
		var newline = _newLine(config);
103893
		var output = exportData.str;
103894
		var hiddenDiv = $('<div/>').css({
103895
			height: 1,
103896
			width: 1,
103897
			overflow: 'hidden',
103898
			position: 'fixed',
103899
			top: 0,
103900
			left: 0
16047
		});
103901
		});
16048
103902
16049
		if (Array.isArray(selector) || selector instanceof $) {
103903
		if (info.title) {
16050
			for (i = 0, ien = selector.length; i < ien; i++) {
103904
			output = info.title + newline + newline + output;
16051
				run(selector[i], inst);
16052
			}
16053
			return;
16054
		}
103905
		}
16055
103906
16056
		if (selector === null || selector === undefined || selector === '*') {
103907
		if (info.messageTop) {
16057
			// Select all
103908
			output = info.messageTop + newline + newline + output;
16058
			for (i = 0, ien = buttons.length; i < ien; i++) {
16059
				ret.push({
16060
					inst: inst,
16061
					node: buttons[i].node
16062
				});
16063
			}
16064
		}
16065
		else if (typeof selector === 'number') {
16066
			// Main button index selector
16067
			if (inst.s.buttons[selector]) {
16068
				ret.push({
16069
					inst: inst,
16070
					node: inst.s.buttons[selector].node
16071
				});
16072
			}
16073
		}
103909
		}
16074
		else if (typeof selector === 'string') {
16075
			if (selector.indexOf(',') !== -1) {
16076
				// Split
16077
				var a = selector.split(',');
16078
16079
				for (i = 0, ien = a.length; i < ien; i++) {
16080
					run(a[i].trim(), inst);
16081
				}
16082
			}
16083
			else if (selector.match(/^\d+(\-\d+)*$/)) {
16084
				// Sub-button index selector
16085
				var indexes = $.map(buttons, function (v) {
16086
					return v.idx;
16087
				});
16088
16089
				ret.push({
16090
					inst: inst,
16091
					node: buttons[$.inArray(selector, indexes)].node
16092
				});
16093
			}
16094
			else if (selector.indexOf(':name') !== -1) {
16095
				// Button name selector
16096
				var name = selector.replace(':name', '');
16097
103910
16098
				for (i = 0, ien = buttons.length; i < ien; i++) {
103911
		if (info.messageBottom) {
16099
					if (buttons[i].name === name) {
103912
			output = output + newline + newline + info.messageBottom;
16100
						ret.push({
16101
							inst: inst,
16102
							node: buttons[i].node
16103
						});
16104
					}
16105
				}
16106
			}
16107
			else {
16108
				// jQuery selector on the nodes
16109
				$(nodes)
16110
					.filter(selector)
16111
					.each(function () {
16112
						ret.push({
16113
							inst: inst,
16114
							node: this
16115
						});
16116
					});
16117
			}
16118
		}
103913
		}
16119
		else if (typeof selector === 'object' && selector.nodeName) {
16120
			// Node selector
16121
			var idx = $.inArray(selector, nodes);
16122
103914
16123
			if (idx !== -1) {
103915
		if (config.customize) {
16124
				ret.push({
103916
			output = config.customize(output, config, dt);
16125
					inst: inst,
16126
					node: nodes[idx]
16127
				});
16128
			}
16129
		}
103917
		}
16130
	};
16131
16132
	for (var i = 0, ien = insts.length; i < ien; i++) {
16133
		var inst = insts[i];
16134
103918
16135
		run(selector, inst);
103919
		var textarea = $('<textarea readonly/>')
16136
	}
103920
			.val(output)
103921
			.appendTo(hiddenDiv);
16137
103922
16138
	return ret;
103923
		// For browsers that support the copy execCommand, try to use it
16139
};
103924
		if (document.queryCommandSupported('copy')) {
103925
			hiddenDiv.appendTo(dt.table().container());
103926
			textarea[0].focus();
103927
			textarea[0].select();
16140
103928
16141
/**
103929
			try {
16142
 * Default function used for formatting output data.
103930
				var successful = document.execCommand('copy');
16143
 * @param {*} str Data to strip
103931
				hiddenDiv.remove();
16144
 */
16145
Buttons.stripData = function (str, config) {
16146
	// If the input is an HTML element, we can use the HTML from it (HTML might be stripped below).
16147
	if (str !== null && typeof str === 'object' && str.nodeName && str.nodeType) {
16148
		str = str.innerHTML;
16149
	}
16150
103932
16151
	if (typeof str !== 'string') {
103933
				if (successful) {
16152
		return str;
103934
					if (config.copySuccess) {
16153
	}
103935
						dt.buttons.info(
103936
							dt.i18n('buttons.copyTitle', 'Copy to clipboard'),
103937
							dt.i18n(
103938
								'buttons.copySuccess',
103939
								{
103940
									1: 'Copied one row to clipboard',
103941
									_: 'Copied %d rows to clipboard'
103942
								},
103943
								exportData.rows
103944
							),
103945
							2000
103946
						);
103947
					}
16154
103948
16155
	// Always remove script tags
103949
					cb();
16156
	str = Buttons.stripHtmlScript(str);
103950
					return;
103951
				}
103952
			} catch (t) {
103953
				// noop
103954
			}
103955
		}
16157
103956
16158
	// Always remove comments
103957
		// Otherwise we show the text box and instruct the user to use it
16159
	str = Buttons.stripHtmlComments(str);
103958
		var message = $(
103959
			'<span>' +
103960
				dt.i18n(
103961
					'buttons.copyKeys',
103962
					'Press <i>ctrl</i> or <i>\u2318</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>' +
103963
						'To cancel, click this message or press escape.'
103964
				) +
103965
				'</span>'
103966
		).append(hiddenDiv);
16160
103967
16161
	if (!config || config.stripHtml) {
103968
		dt.buttons.info(
16162
		str = DataTable.util.stripHtml(str);
103969
			dt.i18n('buttons.copyTitle', 'Copy to clipboard'),
16163
	}
103970
			message,
103971
			0
103972
		);
16164
103973
16165
	if (!config || config.trim) {
103974
		// Select the text so when the user activates their system clipboard
16166
		str = str.trim();
103975
		// it will copy that text
16167
	}
103976
		textarea[0].focus();
103977
		textarea[0].select();
16168
103978
16169
	if (!config || config.stripNewlines) {
103979
		// Event to hide the message when the user is done
16170
		str = str.replace(/\n/g, ' ');
103980
		var container = $(message).closest('.dt-button-info');
16171
	}
103981
		var close = function () {
103982
			container.off('click.buttons-copy');
103983
			$(document).off('.buttons-copy');
103984
			dt.buttons.info(false);
103985
		};
16172
103986
16173
	if (!config || config.decodeEntities) {
103987
		container.on('click.buttons-copy', function () {
16174
		if (_entityDecoder) {
103988
			close();
16175
			str = _entityDecoder(str);
103989
			cb();
16176
		}
103990
		});
16177
		else {
103991
		$(document)
16178
			_exportTextarea.innerHTML = str;
103992
			.on('keydown.buttons-copy', function (e) {
16179
			str = _exportTextarea.value;
103993
				if (e.keyCode === 27) {
16180
		}
103994
					// esc
16181
	}
103995
					close();
103996
					cb();
103997
				}
103998
			})
103999
			.on('copy.buttons-copy cut.buttons-copy', function () {
104000
				close();
104001
				cb();
104002
			});
104003
	},
16182
104004
16183
	// Prevent Excel from running a formula
104005
	async: 100,
16184
	if (!config || config.escapeExcelFormula) {
16185
		if (str.match(/^[=@\t\r]/)) {
16186
			str = "'" + str;
16187
		}
16188
	}
16189
104006
16190
	return str;
104007
	copySuccess: true,
16191
};
16192
104008
16193
/**
104009
	exportOptions: {},
16194
 * Provide a custom entity decoding function - e.g. a regex one, which can be
16195
 * much faster than the built in DOM option, but also larger code size.
16196
 * @param {function} fn
16197
 */
16198
Buttons.entityDecoder = function (fn) {
16199
	_entityDecoder = fn;
16200
};
16201
104010
16202
/**
104011
	fieldSeparator: '\t',
16203
 * Common function for stripping HTML comments
16204
 *
16205
 * @param {*} input 
16206
 * @returns 
16207
 */
16208
Buttons.stripHtmlComments = function (input) {
16209
	var previous;  
16210
	
16211
	do {  
16212
		previous = input;
16213
		input = input.replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g, '');
16214
	} while (input !== previous);  
16215
104012
16216
	return input;  
104013
	fieldBoundary: '',
16217
};
16218
104014
16219
/**
104015
	header: true,
16220
 * Common function for stripping HTML script tags
16221
 *
16222
 * @param {*} input 
16223
 * @returns 
16224
 */
16225
Buttons.stripHtmlScript = function (input) {
16226
	var previous;  
16227
	
16228
	do {  
16229
		previous = input;
16230
		input = input.replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi, '');
16231
	} while (input !== previous);  
16232
104016
16233
	return input;  
104017
	footer: true,
16234
};
16235
104018
16236
/**
104019
	title: '*',
16237
 * Buttons defaults. For full documentation, please refer to the docs/option
104020
16238
 * directory or the DataTables site.
104021
	messageTop: '*',
16239
 * @type {Object}
104022
16240
 * @static
104023
	messageBottom: '*'
16241
 */
16242
Buttons.defaults = {
16243
	buttons: ['copy', 'excel', 'csv', 'pdf', 'print'],
16244
	name: 'main',
16245
	tabIndex: 0,
16246
	dom: {
16247
		container: {
16248
			tag: 'div',
16249
			className: 'dt-buttons'
16250
		},
16251
		collection: {
16252
			container: {
16253
				// The element used for the dropdown
16254
				className: 'dt-button-collection',
16255
				content: {
16256
					className: '',
16257
					tag: 'div'
16258
				},
16259
				tag: 'div'
16260
			}
16261
			// optionally
16262
			// , button: IButton - buttons inside the collection container
16263
			// , split: ISplit - splits inside the collection container
16264
		},
16265
		button: {
16266
			tag: 'button',
16267
			className: 'dt-button',
16268
			active: 'dt-button-active', // class name
16269
			disabled: 'disabled', // class name
16270
			spacer: {
16271
				className: 'dt-button-spacer',
16272
				tag: 'span'
16273
			},
16274
			liner: {
16275
				tag: 'span',
16276
				className: ''
16277
			},
16278
			dropClass: '',
16279
			dropHtml: '<span class="dt-button-down-arrow">&#x25BC;</span>'
16280
		},
16281
		split: {
16282
			action: {
16283
				// action button
16284
				className: 'dt-button-split-drop-button dt-button',
16285
				tag: 'button'
16286
			},
16287
			dropdown: {
16288
				// button to trigger the dropdown
16289
				align: 'split-right',
16290
				className: 'dt-button-split-drop',
16291
				splitAlignClass: 'dt-button-split-left',
16292
				tag: 'button'
16293
			},
16294
			wrapper: {
16295
				// wrap around both
16296
				className: 'dt-button-split',
16297
				tag: 'div'
16298
			}
16299
		}
16300
	}
16301
};
104024
};
16302
104025
16303
/**
104026
//
16304
 * Version information
104027
// CSV export
16305
 * @type {string}
104028
//
16306
 * @static
104029
DataTable.ext.buttons.csvHtml5 = {
16307
 */
104030
	bom: false,
16308
Buttons.version = '3.2.5';
16309
104031
16310
$.extend(_dtButtons, {
104032
	className: 'buttons-csv buttons-html5',
16311
	collection: {
16312
		text: function (dt) {
16313
			return dt.i18n('buttons.collection', 'Collection');
16314
		},
16315
		className: 'buttons-collection',
16316
		closeButton: false,
16317
		dropIcon: true,
16318
		init: function (dt, button) {
16319
			button.attr('aria-expanded', false);
16320
		},
16321
		action: function (e, dt, button, config) {
16322
			if (config._collection.parents('body').length) {
16323
				this.popover(false, config);
16324
			}
16325
			else {
16326
				this.popover(config._collection, config);
16327
			}
16328
104033
16329
			// When activated using a key - auto focus on the
104034
	available: function () {
16330
			// first item in the popover
104035
		return window.FileReader !== undefined && window.Blob;
16331
			if (e.type === 'keypress') {
16332
				$('a, button', config._collection).eq(0).focus();
16333
			}
16334
		},
16335
		attr: {
16336
			'aria-haspopup': 'dialog'
16337
		}
16338
		// Also the popover options, defined in Buttons.popover
16339
	},
16340
	split: {
16341
		text: function (dt) {
16342
			return dt.i18n('buttons.split', 'Split');
16343
		},
16344
		className: 'buttons-split',
16345
		closeButton: false,
16346
		init: function (dt, button) {
16347
			return button.attr('aria-expanded', false);
16348
		},
16349
		action: function (e, dt, button, config) {
16350
			this.popover(config._collection, config);
16351
		},
16352
		attr: {
16353
			'aria-haspopup': 'dialog'
16354
		}
16355
		// Also the popover options, defined in Buttons.popover
16356
	},
16357
	copy: function () {
16358
		if (_dtButtons.copyHtml5) {
16359
			return 'copyHtml5';
16360
		}
16361
	},
16362
	csv: function (dt, conf) {
16363
		if (_dtButtons.csvHtml5 && _dtButtons.csvHtml5.available(dt, conf)) {
16364
			return 'csvHtml5';
16365
		}
16366
	},
16367
	excel: function (dt, conf) {
16368
		if (
16369
			_dtButtons.excelHtml5 &&
16370
			_dtButtons.excelHtml5.available(dt, conf)
16371
		) {
16372
			return 'excelHtml5';
16373
		}
16374
	},
16375
	pdf: function (dt, conf) {
16376
		if (_dtButtons.pdfHtml5 && _dtButtons.pdfHtml5.available(dt, conf)) {
16377
			return 'pdfHtml5';
16378
		}
16379
	},
104036
	},
16380
	pageLength: function (dt) {
16381
		var lengthMenu = dt.settings()[0].aLengthMenu;
16382
		var vals = [];
16383
		var lang = [];
16384
		var text = function (dt) {
16385
			return dt.i18n(
16386
				'buttons.pageLength',
16387
				{
16388
					'-1': 'Show all rows',
16389
					_: 'Show %d rows'
16390
				},
16391
				dt.page.len()
16392
			);
16393
		};
16394
104037
16395
		// Support for DataTables 1.x 2D array
104038
	text: function (dt) {
16396
		if (Array.isArray(lengthMenu[0])) {
104039
		return dt.i18n('buttons.csv', 'CSV');
16397
			vals = lengthMenu[0];
104040
	},
16398
			lang = lengthMenu[1];
16399
		}
16400
		else {
16401
			for (var i = 0; i < lengthMenu.length; i++) {
16402
				var option = lengthMenu[i];
16403
104041
16404
				// Support for DataTables 2 object in the array
104042
	action: function (e, dt, button, config, cb) {
16405
				if ($.isPlainObject(option)) {
104043
		// Set the text
16406
					vals.push(option.value);
104044
		var output = _exportData(dt, config).str;
16407
					lang.push(option.label);
104045
		var info = dt.buttons.exportInfo(config);
16408
				}
104046
		var charset = config.charset;
16409
				else {
16410
					vals.push(option);
16411
					lang.push(option);
16412
				}
16413
			}
16414
		}
16415
104047
16416
		return {
104048
		if (config.customize) {
16417
			extend: 'collection',
104049
			output = config.customize(output, config, dt);
16418
			text: text,
104050
		}
16419
			className: 'buttons-page-length',
16420
			autoClose: true,
16421
			buttons: $.map(vals, function (val, i) {
16422
				return {
16423
					text: lang[i],
16424
					className: 'button-page-length',
16425
					action: function (e, dt) {
16426
						dt.page.len(val).draw();
16427
					},
16428
					init: function (dt, node, conf) {
16429
						var that = this;
16430
						var fn = function () {
16431
							that.active(dt.page.len() === val);
16432
						};
16433
104051
16434
						dt.on('length.dt' + conf.namespace, fn);
104052
		if (charset !== false) {
16435
						fn();
104053
			if (!charset) {
16436
					},
104054
				charset = document.characterSet || document.charset;
16437
					destroy: function (dt, node, conf) {
104055
			}
16438
						dt.off('length.dt' + conf.namespace);
104056
16439
					}
104057
			if (charset) {
16440
				};
104058
				charset = ';charset=' + charset;
16441
			}),
16442
			init: function (dt, node, conf) {
16443
				var that = this;
16444
				dt.on('length.dt' + conf.namespace, function () {
16445
					that.text(conf.text);
16446
				});
16447
			},
16448
			destroy: function (dt, node, conf) {
16449
				dt.off('length.dt' + conf.namespace);
16450
			}
104059
			}
16451
		};
16452
	},
16453
	spacer: {
16454
		style: 'empty',
16455
		spacer: true,
16456
		text: function (dt) {
16457
			return dt.i18n('buttons.spacer', '');
16458
		}
104060
		}
16459
	}
104061
		else {
16460
});
104062
			charset = '';
104063
		}
16461
104064
16462
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
104065
		if (config.bom) {
16463
 * DataTables API
104066
			output = String.fromCharCode(0xfeff) + output;
16464
 *
104067
		}
16465
 * For complete documentation, please refer to the docs/api directory or the
16466
 * DataTables site
16467
 */
16468
104068
16469
// Buttons group and individual button selector
104069
		_saveAs(
16470
DataTable.Api.register('buttons()', function (group, selector) {
104070
			new Blob([output], { type: 'text/csv' + charset }),
16471
	// Argument shifting
104071
			info.filename,
16472
	if (selector === undefined) {
104072
			true
16473
		selector = group;
104073
		);
16474
		group = undefined;
16475
	}
16476
104074
16477
	this.selector.buttonGroup = group;
104075
		cb();
104076
	},
16478
104077
16479
	var res = this.iterator(
104078
	async: 100,
16480
		true,
16481
		'table',
16482
		function (ctx) {
16483
			if (ctx._buttons) {
16484
				return Buttons.buttonSelector(
16485
					Buttons.instanceSelector(group, ctx._buttons),
16486
					selector
16487
				);
16488
			}
16489
		},
16490
		true
16491
	);
16492
104079
16493
	res._groupSelector = group;
104080
	filename: '*',
16494
	return res;
16495
});
16496
104081
16497
// Individual button selector
104082
	extension: '.csv',
16498
DataTable.Api.register('button()', function (group, selector) {
16499
	// just run buttons() and truncate
16500
	var buttons = this.buttons(group, selector);
16501
104083
16502
	if (buttons.length > 1) {
104084
	exportOptions: {
16503
		buttons.splice(1, buttons.length);
104085
		escapeExcelFormula: true
16504
	}
104086
	},
16505
104087
16506
	return buttons;
104088
	fieldSeparator: ',',
16507
});
16508
104089
16509
// Active buttons
104090
	fieldBoundary: '"',
16510
DataTable.Api.registerPlural(
16511
	'buttons().active()',
16512
	'button().active()',
16513
	function (flag) {
16514
		if (flag === undefined) {
16515
			return this.map(function (set) {
16516
				return set.inst.active(set.node);
16517
			});
16518
		}
16519
104091
16520
		return this.each(function (set) {
104092
	escapeChar: '"',
16521
			set.inst.active(set.node, flag);
16522
		});
16523
	}
16524
);
16525
104093
16526
// Get / set button action
104094
	charset: null,
16527
DataTable.Api.registerPlural(
16528
	'buttons().action()',
16529
	'button().action()',
16530
	function (action) {
16531
		if (action === undefined) {
16532
			return this.map(function (set) {
16533
				return set.inst.action(set.node);
16534
			});
16535
		}
16536
104095
16537
		return this.each(function (set) {
104096
	header: true,
16538
			set.inst.action(set.node, action);
16539
		});
16540
	}
16541
);
16542
104097
16543
// Collection control
104098
	footer: true
16544
DataTable.Api.registerPlural(
104099
};
16545
	'buttons().collectionRebuild()',
16546
	'button().collectionRebuild()',
16547
	function (buttons) {
16548
		return this.each(function (set) {
16549
			for (var i = 0; i < buttons.length; i++) {
16550
				if (typeof buttons[i] === 'object') {
16551
					buttons[i].parentConf = set;
16552
				}
16553
			}
16554
			set.inst.collectionRebuild(set.node, buttons);
16555
		});
16556
	}
16557
);
16558
104100
16559
// Enable / disable buttons
104101
//
16560
DataTable.Api.register(
104102
// Excel (xlsx) export
16561
	['buttons().enable()', 'button().enable()'],
104103
//
16562
	function (flag) {
104104
DataTable.ext.buttons.excelHtml5 = {
16563
		return this.each(function (set) {
104105
	className: 'buttons-excel buttons-html5',
16564
			set.inst.enable(set.node, flag);
16565
		});
16566
	}
16567
);
16568
104106
16569
// Disable buttons
104107
	available: function () {
16570
DataTable.Api.register(
104108
		return (
16571
	['buttons().disable()', 'button().disable()'],
104109
			window.FileReader !== undefined &&
16572
	function () {
104110
			_jsZip() !== undefined &&
16573
		return this.each(function (set) {
104111
			!_isDuffSafari() &&
16574
			set.inst.disable(set.node);
104112
			_serialiser
16575
		});
104113
		);
16576
	}
104114
	},
16577
);
16578
104115
16579
// Button index
104116
	text: function (dt) {
16580
DataTable.Api.register('button().index()', function () {
104117
		return dt.i18n('buttons.excel', 'Excel');
16581
	var idx = null;
104118
	},
16582
104119
16583
	this.each(function (set) {
104120
	action: function (e, dt, button, config, cb) {
16584
		var res = set.inst.index(set.node);
104121
		var rowPos = 0;
104122
		var dataStartRow, dataEndRow;
104123
		var getXml = function (type) {
104124
			var str = excelStrings[type];
16585
104125
16586
		if (res !== null) {
104126
			//str = str.replace( /xmlns:/g, 'xmlns_' ).replace( /mc:/g, 'mc_' );
16587
			idx = res;
16588
		}
16589
	});
16590
104127
16591
	return idx;
104128
			return $.parseXML(str);
16592
});
104129
		};
104130
		var rels = getXml('xl/worksheets/sheet1.xml');
104131
		var relsGet = rels.getElementsByTagName('sheetData')[0];
16593
104132
16594
// Get button nodes
104133
		var xlsx = {
16595
DataTable.Api.registerPlural(
104134
			_rels: {
16596
	'buttons().nodes()',
104135
				'.rels': getXml('_rels/.rels')
16597
	'button().node()',
104136
			},
16598
	function () {
104137
			xl: {
16599
		var jq = $();
104138
				_rels: {
104139
					'workbook.xml.rels': getXml('xl/_rels/workbook.xml.rels')
104140
				},
104141
				'workbook.xml': getXml('xl/workbook.xml'),
104142
				'styles.xml': getXml('xl/styles.xml'),
104143
				worksheets: {
104144
					'sheet1.xml': rels
104145
				}
104146
			},
104147
			'[Content_Types].xml': getXml('[Content_Types].xml')
104148
		};
16600
104149
16601
		// jQuery will automatically reduce duplicates to a single entry
104150
		var data = dt.buttons.exportData(config.exportOptions);
16602
		$(
104151
		var currentRow, rowNode;
16603
			this.each(function (set) {
104152
		var addRow = function (row) {
16604
				jq = jq.add(set.inst.node(set.node));
104153
			currentRow = rowPos + 1;
16605
			})
104154
			rowNode = _createNode(rels, 'row', { attr: { r: currentRow } });
16606
		);
16607
104155
16608
		return jq;
104156
			for (var i = 0, ien = row.length; i < ien; i++) {
16609
	}
104157
				// Concat both the Cell Columns as a letter and the Row of the cell.
16610
);
104158
				var cellId = createCellPos(i) + '' + currentRow;
104159
				var cell = null;
16611
104160
16612
// Get / set button processing state
104161
				// For null, undefined of blank cell, continue so it doesn't create the _createNode
16613
DataTable.Api.registerPlural(
104162
				if (row[i] === null || row[i] === undefined || row[i] === '') {
16614
	'buttons().processing()',
104163
					if (config.createEmptyCells === true) {
16615
	'button().processing()',
104164
						row[i] = '';
16616
	function (flag) {
104165
					}
16617
		if (flag === undefined) {
104166
					else {
16618
			return this.map(function (set) {
104167
						continue;
16619
				return set.inst.processing(set.node);
104168
					}
16620
			});
104169
				}
16621
		}
16622
104170
16623
		return this.each(function (set) {
104171
				var originalContent = row[i];
16624
			set.inst.processing(set.node, flag);
104172
				row[i] =
16625
		});
104173
					typeof row[i].trim === 'function' ? row[i].trim() : row[i];
16626
	}
16627
);
16628
104174
16629
// Get / set button text (i.e. the button labels)
104175
				// Special number formatting options
16630
DataTable.Api.registerPlural(
104176
				for (var j = 0, jen = _excelSpecials.length; j < jen; j++) {
16631
	'buttons().text()',
104177
					var special = _excelSpecials[j];
16632
	'button().text()',
16633
	function (label) {
16634
		if (label === undefined) {
16635
			return this.map(function (set) {
16636
				return set.inst.text(set.node);
16637
			});
16638
		}
16639
104178
16640
		return this.each(function (set) {
104179
					// TODO Need to provide the ability for the specials to say
16641
			set.inst.text(set.node, label);
104180
					// if they are returning a string, since at the moment it is
16642
		});
104181
					// assumed to be a number
16643
	}
104182
					if (
16644
);
104183
						row[i].match &&
104184
						!row[i].match(/^0\d+/) &&
104185
						row[i].match(special.match)
104186
					) {
104187
						var val = row[i].replace(/[^\d\.\-]/g, '');
16645
104188
16646
// Trigger a button's action
104189
						if (special.fmt) {
16647
DataTable.Api.registerPlural(
104190
							val = special.fmt(val);
16648
	'buttons().trigger()',
104191
						}
16649
	'button().trigger()',
16650
	function () {
16651
		return this.each(function (set) {
16652
			set.inst.node(set.node).trigger('click');
16653
		});
16654
	}
16655
);
16656
104192
16657
// Button resolver to the popover
104193
						cell = _createNode(rels, 'c', {
16658
DataTable.Api.register('button().popover()', function (content, options) {
104194
							attr: {
16659
	return this.map(function (set) {
104195
								r: cellId,
16660
		return set.inst._popover(content, this.button(this[0].node), options);
104196
								s: special.style
16661
	});
104197
							},
16662
});
104198
							children: [_createNode(rels, 'v', { text: val })]
104199
						});
16663
104200
16664
// Get the container elements
104201
						break;
16665
DataTable.Api.register('buttons().containers()', function () {
104202
					}
16666
	var jq = $();
104203
				}
16667
	var groupSelector = this._groupSelector;
16668
104204
16669
	// We need to use the group selector directly, since if there are no buttons
104205
				if (!cell) {
16670
	// the result set will be empty
104206
					if (
16671
	this.iterator(true, 'table', function (ctx) {
104207
						typeof row[i] === 'number' ||
16672
		if (ctx._buttons) {
104208
						(row[i].match &&
16673
			var insts = Buttons.instanceSelector(groupSelector, ctx._buttons);
104209
							row[i].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/) && // Includes exponential format
104210
							!row[i].match(/^0\d+/))
104211
					) {
104212
						// Detect numbers - don't match numbers with leading zeros
104213
						// or a negative anywhere but the start
104214
						cell = _createNode(rels, 'c', {
104215
							attr: {
104216
								t: 'n',
104217
								r: cellId
104218
							},
104219
							children: [_createNode(rels, 'v', { text: row[i] })]
104220
						});
104221
					}
104222
					else {
104223
						// String output - replace non standard characters for text output
104224
						/*eslint no-control-regex: "off"*/
104225
						var text = !originalContent.replace
104226
							? originalContent
104227
							: originalContent.replace(
104228
									/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,
104229
									''
104230
							);
16674
104231
16675
			for (var i = 0, ien = insts.length; i < ien; i++) {
104232
						cell = _createNode(rels, 'c', {
16676
				jq = jq.add(insts[i].container());
104233
							attr: {
104234
								t: 'inlineStr',
104235
								r: cellId
104236
							},
104237
							children: {
104238
								row: _createNode(rels, 'is', {
104239
									children: {
104240
										row: _createNode(rels, 't', {
104241
											text: text,
104242
											attr: {
104243
												'xml:space': 'preserve'
104244
											}
104245
										})
104246
									}
104247
								})
104248
							}
104249
						});
104250
					}
104251
				}
104252
104253
				rowNode.appendChild(cell);
16677
			}
104254
			}
16678
		}
16679
	});
16680
104255
16681
	return jq;
104256
			relsGet.appendChild(rowNode);
16682
});
104257
			rowPos++;
104258
		};
16683
104259
16684
DataTable.Api.register('buttons().container()', function () {
104260
		var addHeader = function (structure) {
16685
	// API level of nesting is `buttons()` so we can zip into the containers method
104261
			structure.forEach(function (row) {
16686
	return this.containers().eq(0);
104262
				addRow(
16687
});
104263
					row.map(function (cell) {
104264
						return cell ? cell.title : '';
104265
					}),
104266
					rowPos
104267
				);
104268
				$('row:last c', rels).attr('s', '2'); // bold
16688
104269
16689
// Add a new button
104270
				// Add any merge cells
16690
DataTable.Api.register('button().add()', function (idx, conf, draw) {
104271
				row.forEach(function (cell, columnCounter) {
16691
	var ctx = this.context;
104272
					if (cell && (cell.colSpan > 1 || cell.rowSpan > 1)) {
16692
	var node;
104273
						_excelMergeCells(
104274
							rels,
104275
							rowPos,
104276
							columnCounter,
104277
							cell.rowSpan,
104278
							cell.colSpan
104279
						);
104280
					}
104281
				});
104282
			});
104283
		};
16693
104284
16694
	// Don't use `this` as it could be empty - select the instances directly
104285
		// Title and top messages
16695
	if (ctx.length) {
104286
		var exportInfo = dt.buttons.exportInfo(config);
16696
		var inst = Buttons.instanceSelector(
104287
		if (exportInfo.title) {
16697
			this._groupSelector,
104288
			addRow([exportInfo.title], rowPos);
16698
			ctx[0]._buttons
104289
			_excelMergeCells(rels, rowPos, 0, 1, data.header.length);
16699
		);
104290
			$('row:last c', rels).attr('s', '51'); // centre
104291
		}
16700
104292
16701
		if (inst.length) {
104293
		if (exportInfo.messageTop) {
16702
			node = inst[0].add(conf, idx, draw);
104294
			addRow([exportInfo.messageTop], rowPos);
104295
			_excelMergeCells(rels, rowPos, 0, 1, data.header.length);
16703
		}
104296
		}
16704
	}
16705
104297
16706
	return node
104298
		// Table header
16707
		? this.button(this._groupSelector, node)
104299
		if (config.header) {
16708
		: this;
104300
			addHeader(data.headerStructure);
16709
});
104301
		}
16710
104302
16711
// Destroy the button sets selected
104303
		dataStartRow = rowPos;
16712
DataTable.Api.register('buttons().destroy()', function () {
16713
	this.pluck('inst')
16714
		.unique()
16715
		.each(function (inst) {
16716
			inst.destroy();
16717
		});
16718
104304
16719
	return this;
104305
		// Table body
16720
});
104306
		for (var n = 0, ie = data.body.length; n < ie; n++) {
104307
			addRow(data.body[n], rowPos);
104308
		}
16721
104309
16722
// Remove a button
104310
		dataEndRow = rowPos;
16723
DataTable.Api.registerPlural(
16724
	'buttons().remove()',
16725
	'buttons().remove()',
16726
	function () {
16727
		this.each(function (set) {
16728
			set.inst.remove(set.node);
16729
		});
16730
104311
16731
		return this;
104312
		// Table footer
16732
	}
104313
		if (config.footer && data.footer) {
16733
);
104314
			addHeader(data.footerStructure);
104315
		}
16734
104316
16735
// Information box that can be used by buttons
104317
		// Below the table
16736
var _infoTimer;
104318
		if (exportInfo.messageBottom) {
16737
DataTable.Api.register('buttons.info()', function (title, message, time) {
104319
			addRow([exportInfo.messageBottom], rowPos);
16738
	var that = this;
104320
			_excelMergeCells(rels, rowPos, 0, 1, data.header.length);
104321
		}
16739
104322
16740
	if (title === false) {
104323
		// Set column widths
16741
		this.off('destroy.btn-info');
104324
		var cols = _createNode(rels, 'cols');
16742
		_fadeOut($('#datatables_buttons_info'), 400, function () {
104325
		$('worksheet', rels).prepend(cols);
16743
			$(this).remove();
16744
		});
16745
		clearTimeout(_infoTimer);
16746
		_infoTimer = null;
16747
104326
16748
		return this;
104327
		for (var i = 0, ien = data.header.length; i < ien; i++) {
16749
	}
104328
			cols.appendChild(
104329
				_createNode(rels, 'col', {
104330
					attr: {
104331
						min: i + 1,
104332
						max: i + 1,
104333
						width: _excelColWidth(data, i),
104334
						customWidth: 1
104335
					}
104336
				})
104337
			);
104338
		}
16750
104339
16751
	if (_infoTimer) {
104340
		// Workbook modifications
16752
		clearTimeout(_infoTimer);
104341
		var workbook = xlsx.xl['workbook.xml'];
16753
	}
16754
104342
16755
	if ($('#datatables_buttons_info').length) {
104343
		$('sheets sheet', workbook).attr('name', _sheetname(config));
16756
		$('#datatables_buttons_info').remove();
16757
	}
16758
104344
16759
	title = title ? '<h2>' + title + '</h2>' : '';
104345
		// Auto filter for columns
104346
		if (config.autoFilter) {
104347
			$('mergeCells', rels).before(
104348
				_createNode(rels, 'autoFilter', {
104349
					attr: {
104350
						ref:
104351
							'A' +
104352
							dataStartRow +
104353
							':' +
104354
							createCellPos(data.header.length - 1) +
104355
							dataEndRow
104356
					}
104357
				})
104358
			);
16760
104359
16761
	_fadeIn(
104360
			$('definedNames', workbook).append(
16762
		$('<div id="datatables_buttons_info" class="dt-button-info"/>')
104361
				_createNode(workbook, 'definedName', {
16763
			.html(title)
104362
					attr: {
16764
			.append(
104363
						name: '_xlnm._FilterDatabase',
16765
				$('<div/>')[typeof message === 'string' ? 'html' : 'append'](
104364
						localSheetId: '0',
16766
					message
104365
						hidden: 1
16767
				)
104366
					},
16768
			)
104367
					text:
16769
			.css('display', 'none')
104368
						'\'' +
16770
			.appendTo('body')
104369
						_sheetname(config).replace(/'/g, '\'\'') +
16771
	);
104370
						'\'!$A$' +
104371
						dataStartRow +
104372
						':$' +
104373
						createCellPos(data.header.length - 1) +
104374
						'$' +
104375
						dataEndRow
104376
				})
104377
			);
104378
		}
16772
104379
16773
	if (time !== undefined && time !== 0) {
104380
		// Let the developer customise the document if they want to
16774
		_infoTimer = setTimeout(function () {
104381
		if (config.customize) {
16775
			that.buttons.info(false);
104382
			config.customize(xlsx, config, dt);
16776
		}, time);
104383
		}
16777
	}
16778
104384
16779
	this.on('destroy.btn-info', function () {
104385
		// Excel doesn't like an empty mergeCells tag
16780
		that.buttons.info(false);
104386
		if ($('mergeCells', rels).children().length === 0) {
16781
	});
104387
			$('mergeCells', rels).remove();
104388
		}
16782
104389
16783
	return this;
104390
		var jszip = _jsZip();
16784
});
104391
		var zip = new jszip();
104392
		var zipConfig = {
104393
			compression: 'DEFLATE',
104394
			type: 'blob',
104395
			mimeType:
104396
				'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
104397
		};
16785
104398
16786
// Get data from the table for export - this is common to a number of plug-in
104399
		_addToZip(zip, xlsx);
16787
// buttons so it is included in the Buttons core library
16788
DataTable.Api.register('buttons.exportData()', function (options) {
16789
	if (this.context.length) {
16790
		return _exportData(new DataTable.Api(this.context[0]), options);
16791
	}
16792
});
16793
104400
16794
// Get information about the export that is common to many of the export data
104401
		// Modern Excel has a 218 character limit on the file name + path of the file (why!?)
16795
// types (DRY)
104402
		// https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
16796
DataTable.Api.register('buttons.exportInfo()', function (conf) {
104403
		// So we truncate to allow for this.
16797
	if (!conf) {
104404
		var filename = exportInfo.filename;
16798
		conf = {};
16799
	}
16800
104405
16801
	return {
104406
		if (filename > 175) {
16802
		filename: _filename(conf, this),
104407
			filename = filename.substr(0, 175);
16803
		title: _title(conf, this),
104408
		}
16804
		messageTop: _message(this, conf, conf.message || conf.messageTop, 'top'),
16805
		messageBottom: _message(this, conf, conf.messageBottom, 'bottom')
16806
	};
16807
});
16808
104409
16809
/**
104410
		// Let the developer customize the final zip file if they want to before it is generated and sent to the browser
16810
 * Get the file name for an exported file.
104411
		if (config.customizeZip) {
16811
 *
104412
			config.customizeZip(zip, data, filename);
16812
 * @param {object} config Button configuration
104413
		}
16813
 * @param {object} dt DataTable instance
16814
 */
16815
var _filename = function (config, dt) {
16816
	// Backwards compatibility
16817
	var filename =
16818
		config.filename === '*' &&
16819
		config.title !== '*' &&
16820
		config.title !== undefined &&
16821
		config.title !== null &&
16822
		config.title !== ''
16823
			? config.title
16824
			: config.filename;
16825
104414
16826
	if (typeof filename === 'function') {
16827
		filename = filename(config, dt);
16828
	}
16829
104415
16830
	if (filename === undefined || filename === null) {
104416
		if (zip.generateAsync) {
16831
		return null;
104417
			// JSZip 3+
16832
	}
104418
			zip.generateAsync(zipConfig).then(function (blob) {
104419
				_saveAs(blob, filename);
104420
				cb();
104421
			});
104422
		}
104423
		else {
104424
			// JSZip 2.5
104425
			_saveAs(zip.generate(zipConfig), filename);
104426
			cb();
104427
		}
104428
	},
16833
104429
16834
	if (filename.indexOf('*') !== -1) {
104430
	async: 100,
16835
		filename = filename.replace(/\*/g, $('head > title').text()).trim();
16836
	}
16837
104431
16838
	// Strip characters which the OS will object to
104432
	filename: '*',
16839
	filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, '');
16840
104433
16841
	var extension = _stringOrFunction(config.extension, config, dt);
104434
	extension: '.xlsx',
16842
	if (!extension) {
16843
		extension = '';
16844
	}
16845
104435
16846
	return filename + extension;
104436
	exportOptions: {},
16847
};
16848
104437
16849
/**
104438
	header: true,
16850
 * Simply utility method to allow parameters to be given as a function
16851
 *
16852
 * @param {undefined|string|function} option Option
16853
 * @return {null|string} Resolved value
16854
 */
16855
var _stringOrFunction = function (option, config, dt) {
16856
	if (option === null || option === undefined) {
16857
		return null;
16858
	}
16859
	else if (typeof option === 'function') {
16860
		return option(config, dt);
16861
	}
16862
	return option;
16863
};
16864
104439
16865
/**
104440
	footer: true,
16866
 * Get the title for an exported file.
16867
 *
16868
 * @param {object} config	Button configuration
16869
 */
16870
var _title = function (config, dt) {
16871
	var title = _stringOrFunction(config.title, config, dt);
16872
104441
16873
	return title === null
104442
	title: '*',
16874
		? null
16875
		: title.indexOf('*') !== -1
16876
		? title.replace(/\*/g, $('head > title').text() || 'Exported data')
16877
		: title;
16878
};
16879
104443
16880
var _message = function (dt, config, option, position) {
104444
	messageTop: '*',
16881
	var message = _stringOrFunction(option, config, dt);
16882
	if (message === null) {
16883
		return null;
16884
	}
16885
104445
16886
	var caption = $('caption', dt.table().container()).eq(0);
104446
	messageBottom: '*',
16887
	if (message === '*') {
16888
		var side = caption.css('caption-side');
16889
		if (side !== position) {
16890
			return null;
16891
		}
16892
104447
16893
		return caption.length ? caption.text() : '';
104448
	createEmptyCells: false,
16894
	}
16895
104449
16896
	return message;
104450
	autoFilter: false,
104451
104452
	sheetName: ''
16897
};
104453
};
16898
104454
16899
var _exportTextarea = $('<textarea/>')[0];
104455
//
16900
var _exportData = function (dt, inOpts) {
104456
// PDF export - using pdfMake - http://pdfmake.org
16901
	var config = $.extend(
104457
//
16902
		true,
104458
DataTable.ext.buttons.pdfHtml5 = {
16903
		{},
104459
	className: 'buttons-pdf buttons-html5',
16904
		{
16905
			rows: null,
16906
			columns: '',
16907
			modifier: {
16908
				search: 'applied',
16909
				order: 'applied'
16910
			},
16911
			orthogonal: 'display',
16912
			stripHtml: true,
16913
			stripNewlines: true,
16914
			decodeEntities: true,
16915
			escapeExcelFormula: false,
16916
			trim: true,
16917
			format: {
16918
				header: function (d) {
16919
					return Buttons.stripData(d, config);
16920
				},
16921
				footer: function (d) {
16922
					return Buttons.stripData(d, config);
16923
				},
16924
				body: function (d) {
16925
					return Buttons.stripData(d, config);
16926
				}
16927
			},
16928
			customizeData: null,
16929
			customizeZip: null
16930
		},
16931
		inOpts
16932
	);
16933
104460
16934
	var header = dt
104461
	available: function () {
16935
		.columns(config.columns)
104462
		return window.FileReader !== undefined && _pdfMake();
16936
		.indexes()
104463
	},
16937
		.map(function (idx) {
16938
			var col = dt.column(idx);
16939
			return config.format.header(col.title(), idx, col.header());
16940
		})
16941
		.toArray();
16942
104464
16943
	var footer = dt.table().footer()
104465
	text: function (dt) {
16944
		? dt
104466
		return dt.i18n('buttons.pdf', 'PDF');
16945
				.columns(config.columns)
104467
	},
16946
				.indexes()
16947
				.map(function (idx) {
16948
					var el = dt.column(idx).footer();
16949
					var val = '';
16950
104468
16951
					if (el) {
104469
	action: function (e, dt, button, config, cb) {
16952
						var inner = $('.dt-column-title', el);
104470
		var data = dt.buttons.exportData(config.exportOptions);
104471
		var info = dt.buttons.exportInfo(config);
104472
		var rows = [];
16953
104473
16954
						val = inner.length
104474
		if (config.header) {
16955
							? inner.html()
104475
			data.headerStructure.forEach(function (row) {
16956
							: $(el).html();
104476
				rows.push(
16957
					}
104477
					row.map(function (cell) {
104478
						return cell
104479
							? {
104480
									text: cell.title,
104481
									colSpan: cell.colspan,
104482
									rowSpan: cell.rowspan,
104483
									style: 'tableHeader'
104484
							}
104485
							: {};
104486
					})
104487
				);
104488
			});
104489
		}
16958
104490
16959
					return config.format.footer(val, idx, el);
104491
		for (var i = 0, ien = data.body.length; i < ien; i++) {
104492
			rows.push(
104493
				data.body[i].map(function (d) {
104494
					return {
104495
						text:
104496
							d === null || d === undefined
104497
								? ''
104498
								: typeof d === 'string'
104499
								? d
104500
								: d.toString()
104501
					};
16960
				})
104502
				})
16961
				.toArray()
104503
			);
16962
		: null;
104504
		}
16963
104505
16964
	// If Select is available on this table, and any rows are selected, limit the export
104506
		if (config.footer) {
16965
	// to the selected rows. If no rows are selected, all rows will be exported. Specify
104507
			data.footerStructure.forEach(function (row) {
16966
	// a `selected` modifier to control directly.
104508
				rows.push(
16967
	var modifier = $.extend({}, config.modifier);
104509
					row.map(function (cell) {
16968
	if (
104510
						return cell
16969
		dt.select &&
104511
							? {
16970
		typeof dt.select.info === 'function' &&
104512
									text: cell.title,
16971
		modifier.selected === undefined
104513
									colSpan: cell.colspan,
16972
	) {
104514
									rowSpan: cell.rowspan,
16973
		if (
104515
									style: 'tableFooter'
16974
			dt.rows(config.rows, $.extend({ selected: true }, modifier)).any()
104516
							}
16975
		) {
104517
							: {};
16976
			$.extend(modifier, { selected: true });
104518
					})
104519
				);
104520
			});
16977
		}
104521
		}
16978
	}
16979
104522
16980
	var rowIndexes = dt.rows(config.rows, modifier).indexes().toArray();
104523
		var doc = {
16981
	var selectedCells = dt.cells(rowIndexes, config.columns, {
104524
			pageSize: config.pageSize,
16982
		order: modifier.order
104525
			pageOrientation: config.orientation,
16983
	});
104526
			content: [
16984
	var cells = selectedCells.render(config.orthogonal).toArray();
104527
				{
16985
	var cellNodes = selectedCells.nodes().toArray();
104528
					style: 'table',
16986
	var cellIndexes = selectedCells.indexes().toArray();
104529
					table: {
104530
						headerRows: config.header
104531
							? data.headerStructure.length
104532
							: 0,
104533
						footerRows: config.footer // Used for styling, doesn't do anything in pdfmake
104534
							? data.footerStructure.length
104535
							: 0,
104536
						body: rows
104537
					},
104538
					layout: {
104539
						hLineWidth: function (i, node) {
104540
							if (i === 0 || i === node.table.body.length) {
104541
								return 0;
104542
							}
104543
							return 0.5;
104544
						},
104545
						vLineWidth: function () {
104546
							return 0;
104547
						},
104548
						hLineColor: function (i, node) {
104549
							return i === node.table.headerRows ||
104550
								i ===
104551
									node.table.body.length -
104552
										node.table.footerRows
104553
								? '#333'
104554
								: '#ddd';
104555
						},
104556
						fillColor: function (rowIndex) {
104557
							if (rowIndex < data.headerStructure.length) {
104558
								return '#fff';
104559
							}
104560
							return rowIndex % 2 === 0 ? '#f3f3f3' : null;
104561
						},
104562
						paddingTop: function () {
104563
							return 5;
104564
						},
104565
						paddingBottom: function () {
104566
							return 5;
104567
						}
104568
					}
104569
				}
104570
			],
104571
			styles: {
104572
				tableHeader: {
104573
					bold: true,
104574
					fontSize: 11,
104575
					alignment: 'center'
104576
				},
104577
				tableFooter: {
104578
					bold: true,
104579
					fontSize: 11,
104580
					alignment: 'center'
104581
				},
104582
				table: {
104583
					margin: [0, 5, 0, 5]
104584
				},
104585
				title: {
104586
					alignment: 'center',
104587
					fontSize: 13
104588
				},
104589
				message: {}
104590
			},
104591
			defaultStyle: {
104592
				fontSize: 10
104593
			}
104594
		};
16987
104595
16988
	var columns = dt.columns(config.columns).count();
104596
		if (info.messageTop) {
16989
	var rows = columns > 0 ? cells.length / columns : 0;
104597
			doc.content.unshift({
16990
	var body = [];
104598
				text: info.messageTop,
16991
	var cellCounter = 0;
104599
				style: 'message',
104600
				margin: [0, 0, 0, 12]
104601
			});
104602
		}
16992
104603
16993
	for (var i = 0, ien = rows; i < ien; i++) {
104604
		if (info.messageBottom) {
16994
		var row = [columns];
104605
			doc.content.push({
104606
				text: info.messageBottom,
104607
				style: 'message',
104608
				margin: [0, 0, 0, 12]
104609
			});
104610
		}
16995
104611
16996
		for (var j = 0; j < columns; j++) {
104612
		if (info.title) {
16997
			row[j] = config.format.body(
104613
			doc.content.unshift({
16998
				cells[cellCounter],
104614
				text: info.title,
16999
				cellIndexes[cellCounter].row,
104615
				style: 'title',
17000
				cellIndexes[cellCounter].column,
104616
				margin: [0, 0, 0, 12]
17001
				cellNodes[cellCounter]
104617
			});
17002
			);
17003
			cellCounter++;
17004
		}
104618
		}
17005
104619
17006
		body[i] = row;
104620
		if (config.customize) {
17007
	}
104621
			config.customize(doc, config, dt);
104622
		}
17008
104623
17009
	var data = {
104624
		var pdf = _pdfMake().createPdf(doc);
17010
		header: header,
17011
		headerStructure: _headerFormatter(
17012
			config.format.header,
17013
			dt.table().header.structure(config.columns)
17014
		),
17015
		footer: footer,
17016
		footerStructure: _headerFormatter(
17017
			config.format.footer,
17018
			dt.table().footer.structure(config.columns)
17019
		),
17020
		body: body
17021
	};
17022
104625
17023
	if (config.customizeData) {
104626
		if (config.download === 'open' && !_isDuffSafari()) {
17024
		config.customizeData(data);
104627
			pdf.open();
17025
	}
104628
		}
104629
		else {
104630
			pdf.download(info.filename);
104631
		}
17026
104632
17027
	return data;
104633
		cb();
17028
};
104634
	},
17029
104635
17030
function _headerFormatter(formatter, struct) {
104636
	async: 100,
17031
	for (var i=0 ; i<struct.length ; i++) {
17032
		for (var j=0 ; j<struct[i].length ; j++) {
17033
			var item = struct[i][j];
17034
104637
17035
			if (item) {
104638
	title: '*',
17036
				item.title = formatter(
17037
					item.title,
17038
					j,
17039
					item.cell
17040
				);
17041
			}
17042
		}
17043
	}
17044
104639
17045
	return struct;
104640
	filename: '*',
17046
}
17047
104641
17048
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
104642
	extension: '.pdf',
17049
 * DataTables interface
17050
 */
17051
104643
17052
// Attach to DataTables objects for global access
104644
	exportOptions: {},
17053
$.fn.dataTable.Buttons = Buttons;
104645
17054
$.fn.DataTable.Buttons = Buttons;
104646
	orientation: 'portrait',
17055
104647
17056
// DataTables creation - check if the buttons have been defined for this table,
104648
	// This isn't perfect, but it is close
17057
// they will have been if the `B` option was used in `dom`, otherwise we should
104649
	pageSize:
17058
// create the buttons instance here so they can be inserted into the document
104650
		navigator.language === 'en-US' || navigator.language === 'en-CA'
17059
// using the API. Listen for `init` for compatibility with pre 1.10.10, but to
104651
			? 'LETTER'
17060
// be removed in future.
104652
			: 'A4',
17061
$(document).on('init.dt plugin-init.dt', function (e, settings) {
17062
	if (e.namespace !== 'dt') {
17063
		return;
17064
	}
17065
104653
17066
	var opts = settings.oInit.buttons || DataTable.defaults.buttons;
104654
	header: true,
17067
104655
17068
	if (opts && !settings._buttons) {
104656
	footer: true,
17069
		new Buttons(settings, opts).container();
17070
	}
17071
});
17072
104657
17073
function _init(settings, options) {
104658
	messageTop: '*',
17074
	var api = new DataTable.Api(settings);
17075
	var opts = options
17076
		? options
17077
		: api.init().buttons || DataTable.defaults.buttons;
17078
104659
17079
	return new Buttons(api, opts).container();
104660
	messageBottom: '*',
17080
}
17081
104661
17082
// DataTables 1 `dom` feature option
104662
	customize: null,
17083
DataTable.ext.feature.push({
17084
	fnInit: _init,
17085
	cFeature: 'B'
17086
});
17087
104663
17088
// DataTables 2 layout feature
104664
	download: 'download'
17089
if (DataTable.feature) {
104665
};
17090
	DataTable.feature.register('buttons', _init);
17091
}
17092
104666
17093
104667
17094
return DataTable;
104668
return DataTable;
17095
}));
104669
}));
17096
104670
17097
104671
17098
/*! DataTables styling wrapper for Buttons
104672
/*!
104673
 * Print button for Buttons and DataTables.
17099
 * © SpryMedia Ltd - datatables.net/license
104674
 * © SpryMedia Ltd - datatables.net/license
17100
 */
104675
 */
17101
104676
17102
(function( factory ){
104677
(function( factory ){
17103
	if ( typeof define === 'function' && define.amd ) {
104678
	if ( typeof define === 'function' && define.amd ) {
17104
		// AMD
104679
		// AMD
17105
		define( ['jquery', 'datatables.net-dt', 'datatables.net-buttons'], function ( $ ) {
104680
		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
17106
			return factory( $, window, document );
104681
			return factory( $, window, document );
17107
		} );
104682
		} );
17108
	}
104683
	}
Lines 17111-17117 return DataTable; Link Here
17111
		var jq = require('jquery');
104686
		var jq = require('jquery');
17112
		var cjsRequires = function (root, $) {
104687
		var cjsRequires = function (root, $) {
17113
			if ( ! $.fn.dataTable ) {
104688
			if ( ! $.fn.dataTable ) {
17114
				require('datatables.net-dt')(root, $);
104689
				require('datatables.net')(root, $);
17115
			}
104690
			}
17116
104691
17117
			if ( ! $.fn.dataTable.Buttons ) {
104692
			if ( ! $.fn.dataTable.Buttons ) {
Lines 17150-17169 var DataTable = $.fn.dataTable; Link Here
17150
104725
17151
104726
17152
104727
104728
var _link = document.createElement('a');
104729
104730
/**
104731
 * Convert a URL from a relative to an absolute address so it will work
104732
 * correctly in the popup window which has no base URL.
104733
 *
104734
 * @param  {string} href URL
104735
 */
104736
var _relToAbs = function (href) {
104737
	// Assign to a link on the original page so the browser will do all the
104738
	// hard work of figuring out where the file actually is
104739
	_link.href = href;
104740
	var linkHost = _link.host;
104741
104742
	// IE doesn't have a trailing slash on the host
104743
	// Chrome has it on the pathname
104744
	if (linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
104745
		linkHost += '/';
104746
	}
104747
104748
	return _link.protocol + '//' + linkHost + _link.pathname + _link.search;
104749
};
104750
104751
DataTable.ext.buttons.print = {
104752
	className: 'buttons-print',
104753
104754
	text: function (dt) {
104755
		return dt.i18n('buttons.print', 'Print');
104756
	},
104757
104758
	action: function (e, dt, button, config, cb) {
104759
		var data = dt.buttons.exportData(
104760
			$.extend({ decodeEntities: false }, config.exportOptions) // XSS protection
104761
		);
104762
		var exportInfo = dt.buttons.exportInfo(config);
104763
104764
		// Get the classes for the columns from the header cells
104765
		var columnClasses = dt
104766
			.columns(config.exportOptions.columns)
104767
			.nodes()
104768
			.map(function (n) {
104769
				return n.className;
104770
			})
104771
			.toArray();
104772
104773
		var addRow = function (d, tag) {
104774
			var str = '<tr>';
104775
104776
			for (var i = 0, ien = d.length; i < ien; i++) {
104777
				// null and undefined aren't useful in the print output
104778
				var dataOut = d[i] === null || d[i] === undefined ? '' : d[i];
104779
				var classAttr = columnClasses[i] ? 'class="' + columnClasses[i] + '"' : '';
104780
104781
				str += '<' + tag + ' ' + classAttr + '>' + dataOut + '</' + tag + '>';
104782
			}
104783
104784
			return str + '</tr>';
104785
		};
104786
104787
		// Construct a table for printing
104788
		var html = '<table class="' + dt.table().node().className + '">';
104789
104790
		if (config.header) {
104791
			var headerRows = data.headerStructure.map(function (row) {
104792
				return (
104793
					'<tr>' +
104794
					row
104795
						.map(function (cell) {
104796
							return cell
104797
								? '<th colspan="' +
104798
										cell.colspan +
104799
										'" rowspan="' +
104800
										cell.rowspan +
104801
										'">' +
104802
										cell.title +
104803
										'</th>'
104804
								: '';
104805
						})
104806
						.join('') +
104807
					'</tr>'
104808
				);
104809
			});
104810
104811
			html += '<thead>' + headerRows.join('') + '</thead>';
104812
		}
104813
104814
		html += '<tbody>';
104815
		for (var i = 0, ien = data.body.length; i < ien; i++) {
104816
			html += addRow(data.body[i], 'td');
104817
		}
104818
		html += '</tbody>';
104819
104820
		if (config.footer && data.footer) {
104821
			var footerRows = data.footerStructure.map(function (row) {
104822
				return (
104823
					'<tr>' +
104824
					row
104825
						.map(function (cell) {
104826
							return cell
104827
								? '<th colspan="' +
104828
										cell.colspan +
104829
										'" rowspan="' +
104830
										cell.rowspan +
104831
										'">' +
104832
										cell.title +
104833
										'</th>'
104834
								: '';
104835
						})
104836
						.join('') +
104837
					'</tr>'
104838
				);
104839
			});
104840
104841
			html += '<tfoot>' + footerRows.join('') + '</tfoot>';
104842
		}
104843
		html += '</table>';
104844
104845
		// Open a new window for the printable table
104846
		var win = window.open('', '');
104847
104848
		if (!win) {
104849
			dt.buttons.info(
104850
				dt.i18n('buttons.printErrorTitle', 'Unable to open print view'),
104851
				dt.i18n(
104852
					'buttons.printErrorMsg',
104853
					'Please allow popups in your browser for this site to be able to view the print view.'
104854
				),
104855
				5000
104856
			);
104857
104858
			return;
104859
		}
104860
104861
		win.document.close();
104862
104863
		// Inject the title and also a copy of the style and link tags from this
104864
		// document so the table can retain its base styling. This avoids
104865
		// issues with Content Security Policy (CSP) and is compatible with modern browsers.
104866
		win.document.title = exportInfo.title;
104867
104868
		$('style, link[rel="stylesheet"]').each(function () {
104869
			let node = this.cloneNode(true);
104870
104871
			if (node.tagName.toLowerCase() === 'link') {
104872
				node.href = _relToAbs(node.href);
104873
			}
104874
104875
			win.document.head.appendChild(node);
104876
		});
104877
104878
		// Add any custom scripts (for example for paged.js)
104879
		if (config.customScripts) {
104880
			config.customScripts.forEach(function (script) {
104881
				var tag = win.document.createElement('script');
104882
				tag.src = script;
104883
				win.document.getElementsByTagName('head')[0].appendChild(tag);
104884
			});
104885
		}
104886
104887
		// Inject the table and other surrounding information
104888
		win.document.body.innerHTML =
104889
			'<h1>' +
104890
			exportInfo.title +
104891
			'</h1>' +
104892
			'<div>' +
104893
			(exportInfo.messageTop || '') +
104894
			'</div>' +
104895
			html +
104896
			'<div>' +
104897
			(exportInfo.messageBottom || '') +
104898
			'</div>';
104899
104900
		$(win.document.body).addClass('dt-print-view');
104901
104902
		$('img', win.document.body).each(function (i, img) {
104903
			img.setAttribute('src', _relToAbs(img.getAttribute('src')));
104904
		});
104905
104906
		if (config.customize) {
104907
			config.customize(win, config, dt);
104908
		}
104909
104910
		// Allow stylesheets time to load
104911
		var autoPrint = function () {
104912
			if (config.autoPrint) {
104913
				win.print(); // blocking - so close will not
104914
				win.close(); // execute until this is done
104915
			}
104916
		};
104917
104918
		win.setTimeout(autoPrint, 1000);
104919
104920
		cb();
104921
	},
104922
104923
	async: 100,
104924
104925
	title: '*',
104926
104927
	messageTop: '*',
104928
104929
	messageBottom: '*',
104930
104931
	exportOptions: {},
104932
104933
	header: true,
104934
104935
	footer: true,
104936
104937
	autoPrint: true,
104938
104939
	customize: null
104940
};
104941
17153
104942
17154
return DataTable;
104943
return DataTable;
17155
}));
104944
}));
17156
104945
17157
104946
17158
/*!
104947
/*! FixedHeader 4.0.6
17159
 * Column visibility buttons for Buttons and DataTables.
17160
 * © SpryMedia Ltd - datatables.net/license
104948
 * © SpryMedia Ltd - datatables.net/license
17161
 */
104949
 */
17162
104950
17163
(function( factory ){
104951
(function( factory ){
17164
	if ( typeof define === 'function' && define.amd ) {
104952
	if ( typeof define === 'function' && define.amd ) {
17165
		// AMD
104953
		// AMD
17166
		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
104954
		define( ['jquery', 'datatables.net'], function ( $ ) {
17167
			return factory( $, window, document );
104955
			return factory( $, window, document );
17168
		} );
104956
		} );
17169
	}
104957
	}
Lines 17174-17183 return DataTable; Link Here
17174
			if ( ! $.fn.dataTable ) {
104962
			if ( ! $.fn.dataTable ) {
17175
				require('datatables.net')(root, $);
104963
				require('datatables.net')(root, $);
17176
			}
104964
			}
17177
17178
			if ( ! $.fn.dataTable.Buttons ) {
17179
				require('datatables.net-buttons')(root, $);
17180
			}
17181
		};
104965
		};
17182
104966
17183
		if (typeof window === 'undefined') {
104967
		if (typeof window === 'undefined') {
Lines 17211-21192 var DataTable = $.fn.dataTable; Link Here
17211
104995
17212
104996
17213
104997
17214
$.extend(DataTable.ext.buttons, {
104998
/**
17215
	// A collection of column visibility buttons
104999
 * @summary     FixedHeader
17216
	colvis: function (dt, conf) {
105000
 * @description Fix a table's header or footer, so it is always visible while
17217
		var node = null;
105001
 *              scrolling
17218
		var buttonConf = {
105002
 * @version     4.0.6
17219
			extend: 'collection',
105003
 * @author      SpryMedia Ltd
17220
			init: function (dt, n) {
105004
 * @contact     datatables.net
17221
				node = n;
105005
 *
17222
			},
105006
 * This source file is free software, available under the following license:
17223
			text: function (dt) {
105007
 *   MIT license - http://datatables.net/license/mit
17224
				return dt.i18n('buttons.colvis', 'Column visibility');
105008
 *
17225
			},
105009
 * This source file is distributed in the hope that it will be useful, but
17226
			className: 'buttons-colvis',
105010
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17227
			closeButton: false,
105011
 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
17228
			buttons: [
105012
 *
17229
				{
105013
 * For details please refer to: http://www.datatables.net
17230
					extend: 'columnsToggle',
105014
 */
17231
					columns: conf.columns,
17232
					columnText: conf.columnText
17233
				}
17234
			]
17235
		};
17236
17237
		// Rebuild the collection with the new column structure if columns are reordered
17238
		dt.on('column-reorder.dt' + conf.namespace, function () {
17239
			dt.button(null, dt.button(null, node).node()).collectionRebuild([
17240
				{
17241
					extend: 'columnsToggle',
17242
					columns: conf.columns,
17243
					columnText: conf.columnText
17244
				}
17245
			]);
17246
		});
17247
105015
17248
		return buttonConf;
105016
var _instCounter = 0;
17249
	},
17250
105017
17251
	// Selected columns with individual buttons - toggle column visibility
105018
var FixedHeader = function (dt, config) {
17252
	columnsToggle: function (dt, conf) {
105019
	if (!DataTable.versionCheck('2')) {
17253
		var columns = dt
105020
		throw 'Warning: FixedHeader requires DataTables 2 or newer';
17254
			.columns(conf.columns)
105021
	}
17255
			.indexes()
17256
			.map(function (idx) {
17257
				return {
17258
					extend: 'columnToggle',
17259
					columns: idx,
17260
					columnText: conf.columnText
17261
				};
17262
			})
17263
			.toArray();
17264
105022
17265
		return columns;
105023
	// Sanity check - you just know it will happen
17266
	},
105024
	if (!(this instanceof FixedHeader)) {
105025
		throw "FixedHeader must be initialised with the 'new' keyword.";
105026
	}
17267
105027
17268
	// Single button to toggle column visibility
105028
	// Allow a boolean true for defaults
17269
	columnToggle: function (dt, conf) {
105029
	if (config === true) {
17270
		return {
105030
		config = {};
17271
			extend: 'columnVisibility',
105031
	}
17272
			columns: conf.columns,
17273
			columnText: conf.columnText
17274
		};
17275
	},
17276
105032
17277
	// Selected columns with individual buttons - set column visibility
105033
	dt = new DataTable.Api(dt);
17278
	columnsVisibility: function (dt, conf) {
17279
		var columns = dt
17280
			.columns(conf.columns)
17281
			.indexes()
17282
			.map(function (idx) {
17283
				return {
17284
					extend: 'columnVisibility',
17285
					columns: idx,
17286
					visibility: conf.visibility,
17287
					columnText: conf.columnText
17288
				};
17289
			})
17290
			.toArray();
17291
105034
17292
		return columns;
105035
	this.c = $.extend(true, {}, FixedHeader.defaults, config);
17293
	},
17294
105036
17295
	// Single button to set column visibility
105037
	this.s = {
17296
	columnVisibility: {
105038
		dt: dt,
17297
		columns: undefined, // column selector
105039
		position: {
17298
		text: function (dt, button, conf) {
105040
			theadTop: 0,
17299
			return conf._columnText(dt, conf);
105041
			tbodyTop: 0,
105042
			tfootTop: 0,
105043
			tfootBottom: 0,
105044
			width: 0,
105045
			left: 0,
105046
			tfootHeight: 0,
105047
			theadHeight: 0,
105048
			windowHeight: $(window).height(),
105049
			visible: true
17300
		},
105050
		},
17301
		className: 'buttons-columnVisibility',
105051
		headerMode: null,
17302
		action: function (e, dt, button, conf) {
105052
		footerMode: null,
17303
			var col = dt.columns(conf.columns);
105053
		autoWidth: dt.settings()[0].oFeatures.bAutoWidth,
17304
			var curr = col.visible();
105054
		namespace: '.dtfc' + _instCounter++,
17305
105055
		scrollLeft: {
17306
			col.visible(
105056
			header: -1,
17307
				conf.visibility !== undefined ? conf.visibility : !(curr.length ? curr[0] : false)
105057
			footer: -1
17308
			);
17309
		},
105058
		},
17310
		init: function (dt, button, conf) {
105059
		enable: true,
17311
			var that = this;
105060
		autoDisable: false
17312
			var column = dt.column(conf.columns);
105061
	};
17313
105062
17314
			button.attr('data-cv-idx', conf.columns);
105063
	this.dom = {
105064
		floatingHeader: null,
105065
		thead: $(dt.table().header()),
105066
		tbody: $(dt.table().body()),
105067
		tfoot: $(dt.table().footer()),
105068
		header: {
105069
			host: null,
105070
			scrollAdjust: null,
105071
			floating: null,
105072
			floatingParent: $(
105073
				'<div class="dtfh-floatingparent">' + // location
105074
					'<div class="dtfh-floating-limiter">' + // hidden overflow / scrolling
105075
						'<div></div>' + // adjustment for scrollbar (padding)
105076
					'</div>' +
105077
				'</div>'),
105078
			limiter: null,
105079
			placeholder: null
105080
		},
105081
		footer: {
105082
			host: null,
105083
			scrollAdjust: null,
105084
			floating: null,
105085
			floatingParent: $(
105086
				'<div class="dtfh-floatingparent">' +
105087
					'<div class="dtfh-floating-limiter">' +
105088
						'<div></div>' +
105089
					'</div>' +
105090
				'</div>'),
105091
			limiter: null,
105092
			placeholder: null
105093
		}
105094
	};
17315
105095
17316
			dt.on('column-visibility.dt' + conf.namespace, function (e, settings, index, state) {
105096
	var dom = this.dom;
17317
				if (
17318
					column.index() === index &&
17319
					!settings.bDestroying &&
17320
					settings.nTable == dt.settings()[0].nTable
17321
				) {
17322
					that.active(state);
17323
				}
17324
			}).on('column-reorder.dt' + conf.namespace, function () {
17325
				// Button has been removed from the DOM
17326
				if (conf.destroying) {
17327
					return;
17328
				}
17329
105097
17330
				if (dt.columns(conf.columns).count() !== 1) {
105098
	dom.header.host = dom.thead.parent();
17331
					return;
105099
	dom.header.limiter = dom.header.floatingParent.children();
17332
				}
105100
	dom.header.scrollAdjust = dom.header.limiter.children();
17333
105101
17334
				// Reassign the column for the updated indexes
105102
	dom.footer.host = dom.tfoot.parent();
17335
				column = dt.column(conf.columns);
105103
	dom.footer.limiter = dom.footer.floatingParent.children();
105104
	dom.footer.scrollAdjust = dom.footer.limiter.children();
17336
105105
17337
				// This button controls the same column index but the text for the column has
105106
	var dtSettings = dt.settings()[0];
17338
				// changed
105107
	if (dtSettings._fixedHeader) {
17339
				that.text(conf._columnText(dt, conf));
105108
		throw (
105109
			'FixedHeader already initialised on table ' + dtSettings.nTable.id
105110
		);
105111
	}
17340
105112
17341
				// Since its a different column, we need to check its visibility
105113
	dtSettings._fixedHeader = this;
17342
				that.active(column.visible());
17343
			});
17344
105114
17345
			this.active(column.visible());
105115
	this._constructor();
17346
		},
105116
};
17347
		destroy: function (dt, button, conf) {
17348
			dt.off('column-visibility.dt' + conf.namespace).off(
17349
				'column-reorder.dt' + conf.namespace
17350
			);
17351
		},
17352
105117
17353
		_columnText: function (dt, conf) {
105118
/*
17354
			if (typeof conf.text === 'string') {
105119
 * Variable: FixedHeader
17355
				return conf.text;
105120
 * Purpose:  Prototype for FixedHeader
17356
			}
105121
 * Scope:    global
105122
 */
105123
$.extend(FixedHeader.prototype, {
105124
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
105125
	 * API methods
105126
	 */
17357
105127
17358
			var title = dt.column(conf.columns).title();
105128
	/**
17359
			var idx = dt.column(conf.columns).index();
105129
	 * Kill off FH and any events
105130
	 */
105131
	destroy: function () {
105132
		var dom = this.dom;
17360
105133
17361
			title = title
105134
		this.s.dt.off('.dtfc');
17362
				.replace(/\n/g, ' ') // remove new lines
105135
		$('body').off('.dtfc');
17363
				.replace(/<br\s*\/?>/gi, ' ') // replace line breaks with spaces
105136
		$(window).off(this.s.namespace);
17364
				.replace(/<select(.*?)<\/select\s*>/gi, ''); // remove select tags, including options text
17365
105137
17366
			// Strip HTML comments
105138
		// Remove clones of FC blockers
17367
			title = DataTable.Buttons.stripHtmlComments(title);
105139
		if (dom.header.rightBlocker) {
105140
			dom.header.rightBlocker.remove();
105141
		}
105142
		if (dom.header.leftBlocker) {
105143
			dom.header.leftBlocker.remove();
105144
		}
105145
		if (dom.footer.rightBlocker) {
105146
			dom.footer.rightBlocker.remove();
105147
		}
105148
		if (dom.footer.leftBlocker) {
105149
			dom.footer.leftBlocker.remove();
105150
		}
17368
105151
17369
			// Use whatever HTML stripper DataTables is configured for
105152
		if (this.c.header) {
17370
			title = DataTable.util.stripHtml(title).trim();
105153
			this._modeChange('in-place', 'header', true);
105154
		}
17371
105155
17372
			return conf.columnText ? conf.columnText(dt, idx, title) : title;
105156
		if (this.c.footer && dom.tfoot.length) {
105157
			this._modeChange('in-place', 'footer', true);
17373
		}
105158
		}
17374
	},
105159
	},
17375
105160
17376
	colvisRestore: {
105161
	/**
17377
		className: 'buttons-colvisRestore',
105162
	 * Enable / disable the fixed elements
17378
105163
	 *
17379
		text: function (dt) {
105164
	 * @param  {boolean} enable `true` to enable, `false` to disable
17380
			return dt.i18n('buttons.colvisRestore', 'Restore visibility');
105165
	 */
17381
		},
105166
	enable: function (enable, update, type) {
17382
105167
		this.s.enable = enable;
17383
		init: function (dt, button, conf) {
17384
			// Use a private parameter on the column. This gets moved around with the
17385
			// column if ColReorder changes the order
17386
			dt.columns().every(function () {
17387
				var init = this.init();
17388
17389
				if (init.__visOriginal === undefined) {
17390
					init.__visOriginal = this.visible();
17391
				}
17392
			});
17393
		},
17394
105168
17395
		action: function (e, dt, button, conf) {
105169
		this.s.enableType = type;
17396
			dt.columns().every(function (i) {
17397
				var init = this.init();
17398
105170
17399
				this.visible(init.__visOriginal);
105171
		if (update || update === undefined) {
17400
			});
105172
			this._positions();
105173
			this._scroll(true);
17401
		}
105174
		}
17402
	},
105175
	},
17403
105176
17404
	colvisGroup: {
105177
	/**
17405
		className: 'buttons-colvisGroup',
105178
	 * Get enabled status
17406
105179
	 */
17407
		action: function (e, dt, button, conf) {
105180
	enabled: function () {
17408
			dt.columns(conf.show).visible(true, false);
105181
		return this.s.enable;
17409
			dt.columns(conf.hide).visible(false, false);
105182
	},
17410
17411
			dt.columns.adjust();
17412
		},
17413
17414
		show: [],
17415
17416
		hide: []
17417
	}
17418
});
17419
17420
17421
return DataTable;
17422
}));
17423
17424
105183
17425
/*!
105184
	/**
17426
 * HTML5 export buttons for Buttons and DataTables.
105185
	 * Set header offset
17427
 * © SpryMedia Ltd - datatables.net/license
105186
	 *
17428
 *
105187
	 * @param  {int} new value for headerOffset
17429
 * FileSaver.js (1.3.3) - MIT license
105188
	 */
17430
 * Copyright © 2016 Eli Grey - http://eligrey.com
105189
	headerOffset: function (offset) {
17431
 */
105190
		if (offset !== undefined) {
105191
			this.c.headerOffset = offset;
105192
			this.update();
105193
		}
17432
105194
17433
(function( factory ){
105195
		return this.c.headerOffset;
17434
	if ( typeof define === 'function' && define.amd ) {
105196
	},
17435
		// AMD
17436
		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
17437
			return factory( $, window, document );
17438
		} );
17439
	}
17440
	else if ( typeof exports === 'object' ) {
17441
		// CommonJS
17442
		var jq = require('jquery');
17443
		var cjsRequires = function (root, $) {
17444
			if ( ! $.fn.dataTable ) {
17445
				require('datatables.net')(root, $);
17446
			}
17447
105197
17448
			if ( ! $.fn.dataTable.Buttons ) {
105198
	/**
17449
				require('datatables.net-buttons')(root, $);
105199
	 * Set footer offset
17450
			}
105200
	 *
17451
		};
105201
	 * @param  {int} new value for footerOffset
105202
	 */
105203
	footerOffset: function (offset) {
105204
		if (offset !== undefined) {
105205
			this.c.footerOffset = offset;
105206
			this.update();
105207
		}
17452
105208
17453
		if (typeof window === 'undefined') {
105209
		return this.c.footerOffset;
17454
			module.exports = function (root, $) {
105210
	},
17455
				if ( ! root ) {
17456
					// CommonJS environments without a window global must pass a
17457
					// root. This will give an error otherwise
17458
					root = window;
17459
				}
17460
105211
17461
				if ( ! $ ) {
105212
	/**
17462
					$ = jq( root );
105213
	 * Recalculate the position of the fixed elements and force them into place
17463
				}
105214
	 */
105215
	update: function (force) {
105216
		var table = this.s.dt.table().node();
17464
105217
17465
				cjsRequires( root, $ );
105218
		// Update should only do something if enabled by the dev.
17466
				return factory( $, root, root.document );
105219
		if (!this.s.enable && !this.s.autoDisable) {
17467
			};
105220
			return;
105221
		}
105222
105223
		if ($(table).is(':visible')) {
105224
			this.s.autoDisable = false;
105225
			this.enable(true, false);
17468
		}
105226
		}
17469
		else {
105227
		else {
17470
			cjsRequires( window, jq );
105228
			this.s.autoDisable = true;
17471
			module.exports = factory( jq, window, window.document );
105229
			this.enable(false, false);
17472
		}
105230
		}
17473
	}
17474
	else {
17475
		// Browser
17476
		factory( jQuery, window, document );
17477
	}
17478
}(function( $, window, document ) {
17479
'use strict';
17480
var DataTable = $.fn.dataTable;
17481
17482
105231
105232
		// Don't update if header is not in the document atm (due to
105233
		// async events)
105234
		if ($(table).children('thead').length === 0) {
105235
			return;
105236
		}
17483
105237
17484
// Allow the constructor to pass in JSZip and PDFMake from external requires.
105238
		this._positions();
17485
// Otherwise, use globally defined variables, if they are available.
105239
		this._scroll(force !== undefined ? force : true);
17486
var useJszip;
105240
		this._widths(this.dom.header);
17487
var usePdfmake;
105241
		this._widths(this.dom.footer);
105242
	},
17488
105243
17489
function _jsZip() {
105244
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
17490
	return useJszip || window.JSZip;
105245
	 * Constructor
17491
}
105246
	 */
17492
function _pdfMake() {
17493
	return usePdfmake || window.pdfMake;
17494
}
17495
105247
17496
DataTable.Buttons.pdfMake = function (_) {
105248
	/**
17497
	if (!_) {
105249
	 * FixedHeader constructor - adding the required event listeners and
17498
		return _pdfMake();
105250
	 * simple initialisation
17499
	}
105251
	 *
17500
	usePdfmake = _;
105252
	 * @private
17501
};
105253
	 */
105254
	_constructor: function () {
105255
		var that = this;
105256
		var dt = this.s.dt;
17502
105257
17503
DataTable.Buttons.jszip = function (_) {
105258
		$(window)
17504
	if (!_) {
105259
			.on('scroll' + this.s.namespace, function () {
17505
		return _jsZip();
105260
				that._scroll();
17506
	}
105261
			})
17507
	useJszip = _;
105262
			.on(
17508
};
105263
				'resize' + this.s.namespace,
105264
				DataTable.util.throttle(function () {
105265
					that.s.position.windowHeight = $(window).height();
105266
					that.update();
105267
				}, 50)
105268
			);
17509
105269
17510
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
105270
		var autoHeader = $('.fh-fixedHeader');
17511
 * FileSaver.js dependency
105271
		if (!this.c.headerOffset && autoHeader.length) {
17512
 */
105272
			this.c.headerOffset = autoHeader.outerHeight();
105273
		}
17513
105274
17514
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
105275
		var autoFooter = $('.fh-fixedFooter');
105276
		if (!this.c.footerOffset && autoFooter.length) {
105277
			this.c.footerOffset = autoFooter.outerHeight();
105278
		}
17515
105279
17516
var _saveAs = (function (view) {
105280
		dt.on(
17517
	'use strict';
105281
			'column-reorder.dt.dtfc column-visibility.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc',
17518
	// IE <10 is explicitly unsupported
105282
			function (e, ctx) {
17519
	if (
105283
				that.update();
17520
		typeof view === 'undefined' ||
17521
		(typeof navigator !== 'undefined' &&
17522
			/MSIE [1-9]\./.test(navigator.userAgent))
17523
	) {
17524
		return;
17525
	}
17526
	var doc = view.document,
17527
		// only get URL when necessary in case Blob.js hasn't overridden it yet
17528
		get_URL = function () {
17529
			return view.URL || view.webkitURL || view;
17530
		},
17531
		save_link = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'),
17532
		can_use_save_link = 'download' in save_link,
17533
		click = function (node) {
17534
			var event = new MouseEvent('click');
17535
			node.dispatchEvent(event);
17536
		},
17537
		is_safari = /constructor/i.test(view.HTMLElement) || view.safari,
17538
		is_chrome_ios = /CriOS\/[\d]+/.test(navigator.userAgent),
17539
		throw_outside = function (ex) {
17540
			(view.setImmediate || view.setTimeout)(function () {
17541
				throw ex;
17542
			}, 0);
17543
		},
17544
		force_saveable_type = 'application/octet-stream',
17545
		// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
17546
		arbitrary_revoke_timeout = 1000 * 40, // in ms
17547
		revoke = function (file) {
17548
			var revoker = function () {
17549
				if (typeof file === 'string') {
17550
					// file is an object URL
17551
					get_URL().revokeObjectURL(file);
17552
				}
17553
				else {
17554
					// file is a File
17555
					file.remove();
17556
				}
17557
			};
17558
			setTimeout(revoker, arbitrary_revoke_timeout);
17559
		},
17560
		dispatch = function (filesaver, event_types, event) {
17561
			event_types = [].concat(event_types);
17562
			var i = event_types.length;
17563
			while (i--) {
17564
				var listener = filesaver['on' + event_types[i]];
17565
				if (typeof listener === 'function') {
17566
					try {
17567
						listener.call(filesaver, event || filesaver);
17568
					} catch (ex) {
17569
						throw_outside(ex);
17570
					}
17571
				}
17572
			}
17573
		},
17574
		auto_bom = function (blob) {
17575
			// prepend BOM for UTF-8 XML and text/* types (including HTML)
17576
			// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
17577
			if (
17578
				/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
17579
					blob.type
17580
				)
17581
			) {
17582
				return new Blob([String.fromCharCode(0xfeff), blob], {
17583
					type: blob.type
17584
				});
17585
			}
17586
			return blob;
17587
		},
17588
		FileSaver = function (blob, name, no_auto_bom) {
17589
			if (!no_auto_bom) {
17590
				blob = auto_bom(blob);
17591
			}
105284
			}
17592
			// First try a.download, then web filesystem, then object URLs
105285
		);
17593
			var filesaver = this,
17594
				type = blob.type,
17595
				force = type === force_saveable_type,
17596
				object_url,
17597
				dispatch_all = function () {
17598
					dispatch(
17599
						filesaver,
17600
						'writestart progress write writeend'.split(' ')
17601
					);
17602
				},
17603
				// on any filesys errors revert to saving with object URLs
17604
				fs_error = function () {
17605
					if (
17606
						(is_chrome_ios || (force && is_safari)) &&
17607
						view.FileReader
17608
					) {
17609
						// Safari doesn't allow downloading of blob urls
17610
						var reader = new FileReader();
17611
						reader.onloadend = function () {
17612
							var url = is_chrome_ios
17613
								? reader.result
17614
								: reader.result.replace(
17615
										/^data:[^;]*;/,
17616
										'data:attachment/file;'
17617
								);
17618
							var popup = view.open(url, '_blank');
17619
							if (!popup) view.location.href = url;
17620
							url = undefined; // release reference before dispatching
17621
							filesaver.readyState = filesaver.DONE;
17622
							dispatch_all();
17623
						};
17624
						reader.readAsDataURL(blob);
17625
						filesaver.readyState = filesaver.INIT;
17626
						return;
17627
					}
17628
					// don't create more object URLs than needed
17629
					if (!object_url) {
17630
						object_url = get_URL().createObjectURL(blob);
17631
					}
17632
					if (force) {
17633
						view.location.href = object_url;
17634
					}
17635
					else {
17636
						var opened = view.open(object_url, '_blank');
17637
						if (!opened) {
17638
							// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
17639
							view.location.href = object_url;
17640
						}
17641
					}
17642
					filesaver.readyState = filesaver.DONE;
17643
					dispatch_all();
17644
					revoke(object_url);
17645
				};
17646
			filesaver.readyState = filesaver.INIT;
17647
105286
17648
			if (can_use_save_link) {
105287
		$('body').on('draw.dt.dtfc', function (e, ctx) {
17649
				object_url = get_URL().createObjectURL(blob);
105288
			// For updates from our own table, don't reclone, but for all others, do
17650
				setTimeout(function () {
105289
			that.update(ctx === dt.settings()[0] ? false : true);
17651
					save_link.href = object_url;
105290
		});
17652
					save_link.download = name;
105291
17653
					click(save_link);
105292
		dt.on('destroy.dtfc', function () {
17654
					dispatch_all();
105293
			that.destroy();
17655
					revoke(object_url);
105294
		});
17656
					filesaver.readyState = filesaver.DONE;
105295
17657
				});
105296
		this._positions();
17658
				return;
105297
		this._scroll();
17659
			}
105298
	},
105299
105300
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
105301
	 * Private methods
105302
	 */
105303
105304
	/**
105305
	 * Clone a fixed item to act as a place holder for the original element
105306
	 * which is moved into a clone of the table element, and moved around the
105307
	 * document to give the fixed effect.
105308
	 *
105309
	 * @param  {string}  item  'header' or 'footer'
105310
	 * @param  {boolean} force Force the clone to happen, or allow automatic
105311
	 *   decision (reuse existing if available)
105312
	 * @private
105313
	 */
105314
	_clone: function (item, force) {
105315
		var that = this;
105316
		var dt = this.s.dt;
105317
		var itemDom = this.dom[item];
105318
		var itemElement = item === 'header' ? this.dom.thead : this.dom.tfoot;
105319
105320
		// If footer and scrolling is enabled then we don't clone
105321
		// Instead the table's height is decreased accordingly - see `_scroll()`
105322
		if (item === 'footer' && this._scrollEnabled()) {
105323
			return;
105324
		}
17660
105325
17661
			fs_error();
105326
		if (!force && itemDom.floating) {
17662
		},
105327
			// existing floating element - reuse it
17663
		FS_proto = FileSaver.prototype,
105328
			itemDom.floating.removeClass(
17664
		saveAs = function (blob, name, no_auto_bom) {
105329
				'fixedHeader-floating fixedHeader-locked'
17665
			return new FileSaver(
17666
				blob,
17667
				name || blob.name || 'download',
17668
				no_auto_bom
17669
			);
105330
			);
17670
		};
105331
		}
17671
	// IE 10+ (native saveAs)
105332
		else {
17672
	if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) {
105333
			if (itemDom.floating) {
17673
		return function (blob, name, no_auto_bom) {
105334
				if (itemDom.placeholder !== null) {
17674
			name = name || blob.name || 'download';
105335
					itemDom.placeholder.detach();
105336
				}
17675
105337
17676
			if (!no_auto_bom) {
105338
				itemDom.floating.detach();
17677
				blob = auto_bom(blob);
17678
			}
105339
			}
17679
			return navigator.msSaveOrOpenBlob(blob, name);
17680
		};
17681
	}
17682
105340
17683
	FS_proto.abort = function () {};
105341
			var tableNode = $(dt.table().node());
17684
	FS_proto.readyState = FS_proto.INIT = 0;
105342
			var scrollBody = $(tableNode.parent());
17685
	FS_proto.WRITING = 1;
105343
			var scrollEnabled = this._scrollEnabled();
17686
	FS_proto.DONE = 2;
17687
105344
17688
	FS_proto.error =
105345
			itemDom.floating = $(dt.table().node().cloneNode(false))
17689
		FS_proto.onwritestart =
105346
				.attr('aria-hidden', 'true')
17690
		FS_proto.onprogress =
105347
				.css({
17691
		FS_proto.onwrite =
105348
					top: 0,
17692
		FS_proto.onabort =
105349
					left: 0
17693
		FS_proto.onerror =
105350
				})
17694
		FS_proto.onwriteend =
105351
				.removeAttr('id');
17695
			null;
17696
105352
17697
	return saveAs;
105353
			itemDom.floatingParent
17698
})(
105354
				.css({
17699
	(typeof self !== 'undefined' && self) ||
105355
					width: scrollBody[0].offsetWidth,
17700
		(typeof window !== 'undefined' && window) ||
105356
					position: 'fixed',
17701
		this.content
105357
					left: scrollEnabled
17702
);
105358
						? tableNode.offset().left + scrollBody.scrollLeft()
105359
						: 0
105360
				})
105361
				.css(
105362
					item === 'header'
105363
						? {
105364
								top: this.c.headerOffset,
105365
								bottom: ''
105366
						}
105367
						: {
105368
								top: '',
105369
								bottom: this.c.footerOffset
105370
						}
105371
				)
105372
				.addClass(
105373
					item === 'footer'
105374
						? 'dtfh-floatingparent-foot'
105375
						: 'dtfh-floatingparent-head'
105376
				)
105377
				.appendTo('body')
105378
				.children()
105379
				.eq(0);
105380
105381
			itemDom.limiter
105382
				.css({
105383
					width: '100%',
105384
					overflow: 'hidden',
105385
					height: 'fit-content'
105386
			});
17703
105387
17704
// Expose file saver on the DataTables API. Can't attach to `DataTables.Buttons`
105388
			itemDom.scrollAdjust
17705
// since this file can be loaded before Button's core!
105389
				.append(itemDom.floating);
17706
DataTable.fileSave = _saveAs;
17707
105390
17708
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
105391
			this._stickyPosition(itemDom.floating, '-');
17709
 * Local (private) functions
17710
 */
17711
105392
17712
/**
105393
			var scrollLeftUpdate = function () {
17713
 * Get the sheet name for Excel exports.
105394
				var scrollLeft = scrollBody.scrollLeft();
17714
 *
105395
				that.s.scrollLeft = { footer: scrollLeft, header: scrollLeft };
17715
 * @param {object}	config Button configuration
105396
				itemDom.limiter.scrollLeft(that.s.scrollLeft.header);
17716
 */
105397
			};
17717
var _sheetname = function (config) {
17718
	var sheetName = 'Sheet1';
17719
105398
17720
	if (config.sheetName) {
105399
			scrollLeftUpdate();
17721
		sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
105400
			scrollBody.off('scroll.dtfh').on('scroll.dtfh', scrollLeftUpdate);
17722
	}
17723
105401
17724
	return sheetName;
105402
			// Need padding on the header's container to allow for a scrollbar,
17725
};
105403
			// just like how DataTables handles it
105404
			itemDom.scrollAdjust.css({
105405
				width: 'fit-content',
105406
				paddingRight: that.s.dt.settings()[0].oBrowser.barWidth
105407
			});
17726
105408
17727
/**
105409
			// Blocker to hide the table behind the scrollbar - this needs to use
17728
 * Get the newline character(s)
105410
			// fixed positioning in the container since we don't have an outer wrapper
17729
 *
105411
			let blocker = $(
17730
 * @param {object}	config Button configuration
105412
				item === 'footer'
17731
 * @return {string}				Newline character
105413
					? 'div.dtfc-bottom-blocker'
17732
 */
105414
					: 'div.dtfc-top-blocker',
17733
var _newLine = function (config) {
105415
				dt.table().container()
17734
	return config.newline
105416
			);
17735
		? config.newline
17736
		: navigator.userAgent.match(/Windows/)
17737
		? '\r\n'
17738
		: '\n';
17739
};
17740
105417
17741
/**
105418
			if (blocker.length) {
17742
 * Combine the data from the `buttons.exportData` method into a string that
105419
				blocker
17743
 * will be used in the export file.
105420
					.clone()
17744
 *
105421
					.appendTo(itemDom.floatingParent)
17745
 * @param	{DataTable.Api} dt		 DataTables API instance
105422
					.css({
17746
 * @param	{object}				config Button configuration
105423
						position: 'fixed',
17747
 * @return {object}							 The data to export
105424
						right: blocker.width()
17748
 */
105425
					});
17749
var _exportData = function (dt, config) {
105426
			}
17750
	var newLine = _newLine(config);
17751
	var data = dt.buttons.exportData(config.exportOptions);
17752
	var boundary = config.fieldBoundary;
17753
	var separator = config.fieldSeparator;
17754
	var reBoundary = new RegExp(boundary, 'g');
17755
	var escapeChar = config.escapeChar !== undefined ? config.escapeChar : '\\';
17756
	var join = function (a) {
17757
		var s = '';
17758
105427
17759
		// If there is a field boundary, then we might need to escape it in
105428
			// Insert a fake thead/tfoot into the DataTable to stop it jumping around
17760
		// the source data
105429
			itemDom.placeholder = itemElement.clone(false);
17761
		for (var i = 0, ien = a.length; i < ien; i++) {
105430
			itemDom.placeholder.find('*[id]').removeAttr('id');
17762
			if (i > 0) {
105431
17763
				s += separator;
105432
			// Move the thead / tfoot elements around - original into the
105433
			// floating element and clone into the original table. Note that the
105434
			// order is important in Chrome. It must be colgroup, thead, tbody,
105435
			// tfoot. Otherwise a "jitter" when scrolling will occur.
105436
			$(itemDom.placeholder).insertAfter(
105437
				item === 'header'
105438
					? $('colgroup', itemDom.host)
105439
					: $('tbody', itemDom.host)
105440
			);
105441
105442
			// itemDom.host.prepend(itemDom.placeholder);
105443
			itemDom.floating.append(itemElement);
105444
105445
			this._widths(itemDom);
105446
105447
			return scrollLeftUpdate;
105448
		}
105449
	},
105450
105451
	/**
105452
	 * This method sets the sticky position of the header elements to match fixed columns
105453
	 * @param {JQuery<HTMLElement>} el
105454
	 * @param {string} sign
105455
	 */
105456
	_stickyPosition: function (el, sign) {
105457
		if (this._scrollEnabled()) {
105458
			var that = this;
105459
			var rtl = $(that.s.dt.table().node()).css('direction') === 'rtl';
105460
105461
			el.find('th').each(function () {
105462
				// Find out if fixed header has previously set this column
105463
				if ($(this).css('position') === 'sticky') {
105464
					var right = $(this).css('right');
105465
					var left = $(this).css('left');
105466
					var potential;
105467
105468
					if (right !== 'auto' && !rtl) {
105469
						potential = +right.replace(/px/g, '')
105470
105471
						$(this).css('right', potential > 0 ? potential : 0);
105472
					}
105473
					else if (left !== 'auto' && rtl) {
105474
						potential = +left.replace(/px/g, '');
105475
105476
						$(this).css('left', potential > 0 ? potential : 0);
105477
					}
105478
				}
105479
			});
105480
		}
105481
	},
105482
105483
	/**
105484
	 * Reposition the floating elements to take account of horizontal page
105485
	 * scroll
105486
	 *
105487
	 * @param  {string} item       The `header` or `footer`
105488
	 * @param  {int}    scrollLeft Document scrollLeft
105489
	 * @private
105490
	 */
105491
	_horizontal: function (item, scrollLeft) {
105492
		var itemDom = this.dom[item];
105493
		var lastScrollLeft = this.s.scrollLeft;
105494
105495
		if (itemDom.floating && lastScrollLeft[item] !== scrollLeft) {
105496
			// If scrolling is enabled we need to match the floating header to the body
105497
			if (this._scrollEnabled()) {
105498
				var newScrollLeft = $(
105499
					$(this.s.dt.table().node()).parent()
105500
				).scrollLeft();
105501
				itemDom.floating.scrollLeft(newScrollLeft);
105502
				itemDom.floatingParent.scrollLeft(newScrollLeft);
17764
			}
105503
			}
17765
105504
17766
			s += boundary
105505
			lastScrollLeft[item] = scrollLeft;
17767
				? boundary +
17768
				('' + a[i]).replace(reBoundary, escapeChar + boundary) +
17769
				boundary
17770
				: a[i];
17771
		}
105506
		}
105507
	},
17772
105508
17773
		return s;
105509
	/**
17774
	};
105510
	 * Change from one display mode to another. Each fixed item can be in one
105511
	 * of:
105512
	 *
105513
	 * * `in-place` - In the main DataTable
105514
	 * * `in` - Floating over the DataTable
105515
	 * * `below` - (Header only) Fixed to the bottom of the table body
105516
	 * * `above` - (Footer only) Fixed to the top of the table body
105517
	 *
105518
	 * @param  {string}  mode        Mode that the item should be shown in
105519
	 * @param  {string}  item        'header' or 'footer'
105520
	 * @param  {boolean} forceChange Force a redraw of the mode, even if already
105521
	 *     in that mode.
105522
	 * @private
105523
	 */
105524
	_modeChange: function (mode, item, forceChange) {
105525
		var dt = this.s.dt;
105526
		var itemDom = this.dom[item];
105527
		var position = this.s.position;
17775
105528
17776
	var header = '';
105529
		// Just determine if scroll is enabled once
17777
	var footer = '';
105530
		var scrollEnabled = this._scrollEnabled();
17778
	var body = [];
17779
105531
17780
	if (config.header) {
105532
		// If footer and scrolling is enabled then we don't clone
17781
		header =
105533
		// Instead the table's height is decreased accordingly - see `_scroll()`
17782
			data.headerStructure
105534
		if (item === 'footer' && scrollEnabled) {
17783
				.map(function (row) {
105535
			return;
17784
					return join(
105536
		}
17785
						row.map(function (cell) {
17786
							return cell ? cell.title : '';
17787
						})
17788
					);
17789
				})
17790
				.join(newLine) + newLine;
17791
	}
17792
105537
17793
	if (config.footer && data.footer) {
105538
		// It isn't trivial to add a !important css attribute...
17794
		footer =
105539
		var importantWidth = function (w) {
17795
			data.footerStructure
105540
			itemDom.floating[0].style.setProperty('width', w + 'px', 'important');
17796
				.map(function (row) {
17797
					return join(
17798
						row.map(function (cell) {
17799
							return cell ? cell.title : '';
17800
						})
17801
					);
17802
				})
17803
				.join(newLine) + newLine;
17804
	}
17805
105541
17806
	for (var i = 0, ien = data.body.length; i < ien; i++) {
105542
			// If not scrolling also have to update the floatingParent
17807
		body.push(join(data.body[i]));
105543
			if (!scrollEnabled) {
17808
	}
105544
				itemDom.floatingParent[0].style.setProperty('width', w + 'px', 'important');
105545
			}
105546
		};
17809
105547
17810
	return {
105548
		// Record focus. Browser's will cause input elements to loose focus if
17811
		str: header + body.join(newLine) + newLine + footer,
105549
		// they are inserted else where in the doc
17812
		rows: body.length
105550
		var tablePart = this.dom[item === 'footer' ? 'tfoot' : 'thead'];
17813
	};
105551
		var focus = $.contains(tablePart[0], document.activeElement)
17814
};
105552
			? document.activeElement
105553
			: null;
105554
		var scrollBody = $($(this.s.dt.table().node()).parent());
105555
105556
		if (mode === 'in-place') {
105557
			// Insert the header back into the table's real header
105558
			if (itemDom.placeholder) {
105559
				itemDom.placeholder.remove();
105560
				itemDom.placeholder = null;
105561
			}
17815
105562
17816
/**
105563
			if (!$.contains(itemDom.host[0], tablePart[0])) {
17817
 * Older versions of Safari (prior to tech preview 18) don't support the
105564
				if (item === 'header') {
17818
 * download option required.
105565
					tablePart.insertAfter($('colgroup', itemDom.host));
17819
 *
105566
				}
17820
 * @return {Boolean} `true` if old Safari
105567
				else {
17821
 */
105568
					itemDom.host.append(tablePart);
17822
var _isDuffSafari = function () {
105569
				}
17823
	var safari =
105570
			}
17824
		navigator.userAgent.indexOf('Safari') !== -1 &&
17825
		navigator.userAgent.indexOf('Chrome') === -1 &&
17826
		navigator.userAgent.indexOf('Opera') === -1;
17827
105571
17828
	if (!safari) {
105572
			if (itemDom.floating) {
17829
		return false;
105573
				itemDom.floating.remove();
17830
	}
105574
				itemDom.floating = null;
105575
				this._stickyPosition(itemDom.host, '+');
105576
			}
17831
105577
17832
	var version = navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/);
105578
			if (itemDom.floatingParent) {
17833
	if (version && version.length > 1 && version[1] * 1 < 603.1) {
105579
				itemDom.floatingParent.find('div.dtfc-top-blocker').remove();
17834
		return true;
105580
				itemDom.floatingParent.remove();
17835
	}
105581
			}
17836
105582
17837
	return false;
105583
			$($(itemDom.host.parent()).parent()).scrollLeft(
17838
};
105584
				scrollBody.scrollLeft()
105585
			);
105586
		}
105587
		else if (mode === 'in') {
105588
			// Remove the header from the real table and insert into a fixed
105589
			// positioned floating table clone
105590
			let scrollLeftUpdate = this._clone(item, forceChange);
105591
105592
			// Get useful position values
105593
			var scrollOffset = scrollBody.offset();
105594
			var windowTop = $(document).scrollTop();
105595
			var windowHeight = $(window).height();
105596
			var windowBottom = windowTop + windowHeight;
105597
			var bodyTop = scrollEnabled ? scrollOffset.top : position.tbodyTop;
105598
			var bodyBottom = scrollEnabled
105599
				? scrollOffset.top + scrollBody.outerHeight()
105600
				: position.tfootTop;
105601
105602
			// Calculate the amount that the footer or header needs to be shuffled
105603
			var shuffle;
105604
105605
			if (item === 'footer') {
105606
				shuffle =
105607
					bodyTop > windowBottom
105608
						? position.tfootHeight // Yes - push the footer below
105609
						: bodyTop + position.tfootHeight - windowBottom; // No
105610
			}
105611
			else {
105612
				// Otherwise must be a header so get the difference from the bottom of the
105613
				//  desired floating header and the bottom of the table body
105614
				shuffle =
105615
					windowTop +
105616
					this.c.headerOffset +
105617
					position.theadHeight -
105618
					bodyBottom;
105619
			}
17839
105620
17840
/**
105621
			// Set the top or bottom based off of the offset and the shuffle value
17841
 * Convert from numeric position to letter for column names in Excel
105622
			var prop = item === 'header' ? 'top' : 'bottom';
17842
 * @param  {int} n Column number
105623
			var val = this.c[item + 'Offset'] - (shuffle > 0 ? shuffle : 0);
17843
 * @return {string} Column letter(s) name
17844
 */
17845
function createCellPos(n) {
17846
	var ordA = 'A'.charCodeAt(0);
17847
	var ordZ = 'Z'.charCodeAt(0);
17848
	var len = ordZ - ordA + 1;
17849
	var s = '';
17850
105624
17851
	while (n >= 0) {
105625
			itemDom.floating.addClass('fixedHeader-floating');
17852
		s = String.fromCharCode((n % len) + ordA) + s;
105626
			itemDom.floatingParent
17853
		n = Math.floor(n / len) - 1;
105627
				.css(prop, val)
17854
	}
105628
				.css({
105629
					left: position.left,
105630
					'z-index': 3
105631
				});
17855
105632
17856
	return s;
105633
			importantWidth(position.width);
17857
}
17858
105634
17859
try {
105635
			if (scrollLeftUpdate) {
17860
	var _serialiser = new XMLSerializer();
105636
				scrollLeftUpdate();
17861
	var _ieExcel;
105637
			}
17862
} catch (t) {
105638
17863
	// noop
105639
			if (item === 'footer') {
17864
}
105640
				itemDom.floating.css('top', '');
105641
			}
105642
		}
105643
		else if (mode === 'below') {
105644
			// only used for the header
105645
			// Fix the position of the floating header at base of the table body
105646
			this._clone(item, forceChange);
105647
105648
			itemDom.floating.addClass('fixedHeader-locked');
105649
			itemDom.floatingParent.css({
105650
				position: 'absolute',
105651
				top: position.tfootTop - position.theadHeight,
105652
				left: position.left + 'px'
105653
			});
105654
105655
			importantWidth(position.width);
105656
		}
105657
		else if (mode === 'above') {
105658
			// only used for the footer
105659
			// Fix the position of the floating footer at top of the table body
105660
			this._clone(item, forceChange);
105661
105662
			itemDom.floating.addClass('fixedHeader-locked');
105663
			itemDom.floatingParent.css({
105664
				position: 'absolute',
105665
				top: position.tbodyTop,
105666
				left: position.left + 'px'
105667
			});
105668
105669
			importantWidth(position.width);
105670
		}
105671
105672
		// Restore focus if it was lost
105673
		if (focus && focus !== document.activeElement) {
105674
			setTimeout(function () {
105675
				focus.focus();
105676
			}, 10);
105677
		}
17865
105678
17866
/**
105679
		this.s.scrollLeft.header = -1;
17867
 * Recursively add XML files from an object's structure to a ZIP file. This
105680
		this.s.scrollLeft.footer = -1;
17868
 * allows the XSLX file to be easily defined with an object's structure matching
105681
		this.s[item + 'Mode'] = mode;
17869
 * the files structure.
17870
 *
17871
 * @param {JSZip} zip ZIP package
17872
 * @param {object} obj Object to add (recursive)
17873
 */
17874
function _addToZip(zip, obj) {
17875
	if (_ieExcel === undefined) {
17876
		// Detect if we are dealing with IE's _awful_ serialiser by seeing if it
17877
		// drop attributes
17878
		_ieExcel =
17879
			_serialiser
17880
				.serializeToString(
17881
					new window.DOMParser().parseFromString(
17882
						excelStrings['xl/worksheets/sheet1.xml'],
17883
						'text/xml'
17884
					)
17885
				)
17886
				.indexOf('xmlns:r') === -1;
17887
	}
17888
105682
17889
	$.each(obj, function (name, val) {
105683
		dt.trigger('fixedheader-mode', [mode, item]);
17890
		if ($.isPlainObject(val)) {
105684
	},
17891
			var newDir = zip.folder(name);
105685
17892
			_addToZip(newDir, val);
105686
	/**
105687
	 * Cache the positional information that is required for the mode
105688
	 * calculations that FixedHeader performs.
105689
	 *
105690
	 * @private
105691
	 */
105692
	_positions: function () {
105693
		var dt = this.s.dt;
105694
		var table = dt.table();
105695
		var position = this.s.position;
105696
		var dom = this.dom;
105697
		var tableNode = $(table.node());
105698
		var scrollEnabled = this._scrollEnabled();
105699
105700
		// Need to use the header and footer that are in the main table,
105701
		// regardless of if they are clones, since they hold the positions we
105702
		// want to measure from
105703
		var thead = $(dt.table().header());
105704
		var tfoot = $(dt.table().footer());
105705
		var tbody = dom.tbody;
105706
		var scrollBody = tableNode.parent();
105707
105708
		position.visible = tableNode.is(':visible');
105709
		position.width = tableNode.outerWidth();
105710
		position.left = tableNode.offset().left;
105711
		position.theadTop = thead.offset().top;
105712
		position.tbodyTop = scrollEnabled
105713
			? scrollBody.offset().top
105714
			: tbody.offset().top;
105715
		position.tbodyHeight = scrollEnabled
105716
			? scrollBody.outerHeight()
105717
			: tbody.outerHeight();
105718
		position.theadHeight = thead.outerHeight();
105719
		position.theadBottom = position.theadTop + position.theadHeight;
105720
		position.tfootTop = position.tbodyTop + position.tbodyHeight; //tfoot.offset().top;
105721
105722
		if (tfoot.length) {
105723
			position.tfootBottom = position.tfootTop + tfoot.outerHeight();
105724
			position.tfootHeight = tfoot.outerHeight();
17893
		}
105725
		}
17894
		else {
105726
		else {
17895
			if (_ieExcel) {
105727
			position.tfootBottom = position.tfootTop;
17896
				// IE's XML serialiser will drop some name space attributes from
105728
			position.tfootHeight = 0;
17897
				// from the root node, so we need to save them. Do this by
105729
		}
17898
				// replacing the namespace nodes with a regular attribute that
105730
	},
17899
				// we convert back when serialised. Edge does not have this
17900
				// issue
17901
				var worksheet = val.childNodes[0];
17902
				var i, ien;
17903
				var attrs = [];
17904
105731
17905
				for (i = worksheet.attributes.length - 1; i >= 0; i--) {
105732
	/**
17906
					var attrName = worksheet.attributes[i].nodeName;
105733
	 * Mode calculation - determine what mode the fixed items should be placed
17907
					var attrValue = worksheet.attributes[i].nodeValue;
105734
	 * into.
105735
	 *
105736
	 * @param  {boolean} forceChange Force a redraw of the mode, even if already
105737
	 *     in that mode.
105738
	 * @private
105739
	 */
105740
	_scroll: function (forceChange) {
105741
		if (this.s.dt.settings()[0].bDestroying) {
105742
			return;
105743
		}
17908
105744
17909
					if (attrName.indexOf(':') !== -1) {
105745
		// ScrollBody details
17910
						attrs.push({ name: attrName, value: attrValue });
105746
		var scrollEnabled = this._scrollEnabled();
105747
		var scrollBody = $(this.s.dt.table().node()).parent();
105748
		var scrollOffset = scrollBody.offset();
105749
		var scrollHeight = scrollBody.outerHeight();
105750
105751
		// Window details
105752
		var windowLeft = $(document).scrollLeft();
105753
		var windowTop = $(document).scrollTop();
105754
		var windowHeight = $(window).height();
105755
		var windowBottom = windowHeight + windowTop;
105756
105757
		var position = this.s.position;
105758
		var headerMode, footerMode;
105759
105760
		// Body Details
105761
		var bodyTop = scrollEnabled ? scrollOffset.top : position.tbodyTop;
105762
		var bodyLeft = scrollEnabled ? scrollOffset.left : position.left;
105763
		var bodyBottom = scrollEnabled
105764
			? scrollOffset.top + scrollHeight
105765
			: position.tfootTop;
105766
		var bodyWidth = scrollEnabled
105767
			? scrollBody.outerWidth()
105768
			: position.tbodyWidth;
105769
105770
		if (this.c.header) {
105771
			if (!this.s.enable) {
105772
				headerMode = 'in-place';
105773
			}
105774
			// The header is in it's normal place if the body top is lower than
105775
			//  the scroll of the window plus the headerOffset and the height of the header
105776
			else if (
105777
				!position.visible ||
105778
				windowTop + this.c.headerOffset + position.theadHeight <=
105779
					bodyTop
105780
			) {
105781
				headerMode = 'in-place';
105782
			}
105783
			// The header should be floated if
105784
			else if (
105785
				// The scrolling plus the header offset plus the height of the header is lower than the top of the body
105786
				windowTop + this.c.headerOffset + position.theadHeight >
105787
					bodyTop &&
105788
				// And the scrolling at the top plus the header offset is above the bottom of the body
105789
				windowTop + this.c.headerOffset + position.theadHeight <
105790
					bodyBottom
105791
			) {
105792
				headerMode = 'in';
17911
105793
17912
						worksheet.removeAttribute(attrName);
105794
				// Further to the above, If the scrolling plus the header offset plus the header height is lower
17913
					}
105795
				// than the bottom of the table a shuffle is required so have to force the calculation
105796
				if (
105797
					windowTop + this.c.headerOffset + position.theadHeight >
105798
						bodyBottom ||
105799
					this.dom.header.floatingParent === undefined
105800
				) {
105801
					forceChange = true;
17914
				}
105802
				}
105803
				else {
105804
					var child = this.dom.header.floatingParent
105805
						.css({
105806
							top: this.c.headerOffset,
105807
							position: 'fixed'
105808
						})
105809
						.children()
105810
						.eq(0);
17915
105811
17916
				for (i = 0, ien = attrs.length; i < ien; i++) {
105812
					if (child.find(this.dom.header.floating).length === 0) {
17917
					var attr = val.createAttribute(
105813
						child.append(this.dom.header.floating);
17918
						attrs[i].name.replace(':', '_dt_b_namespace_token_')
105814
					}
17919
					);
17920
					attr.value = attrs[i].value;
17921
					worksheet.setAttributeNode(attr);
17922
				}
105815
				}
17923
			}
105816
			}
105817
			// Anything else and the view is below the table
105818
			else {
105819
				headerMode = 'below';
105820
			}
17924
105821
17925
			var str = _serialiser.serializeToString(val);
105822
			if (forceChange || headerMode !== this.s.headerMode) {
105823
				this._modeChange(headerMode, 'header', forceChange);
105824
			}
17926
105825
17927
			// Fix IE's XML
105826
			this._horizontal('header', windowLeft);
17928
			if (_ieExcel) {
105827
		}
17929
				// IE doesn't include the XML declaration
17930
				if (str.indexOf('<?xml') === -1) {
17931
					str =
17932
						'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
17933
						str;
17934
				}
17935
105828
17936
				// Return namespace attributes to being as such
105829
		var header = {
17937
				str = str.replace(/_dt_b_namespace_token_/g, ':');
105830
			offset: { top: 0, left: 0 },
105831
			height: 0
105832
		};
105833
		var footer = {
105834
			offset: { top: 0, left: 0 },
105835
			height: 0
105836
		};
17938
105837
17939
				// Remove testing name space that IE puts into the space preserve attr
105838
		if (
17940
				str = str.replace(/xmlns:NS[\d]+="" NS[\d]+:/g, '');
105839
			this.c.footer &&
105840
			this.dom.tfoot.length &&
105841
			this.dom.tfoot.find('th, td').length
105842
		) {
105843
			if (!this.s.enable) {
105844
				footerMode = 'in-place';
105845
			}
105846
			else if (
105847
				!position.visible ||
105848
				position.tfootBottom + this.c.footerOffset <= windowBottom
105849
			) {
105850
				footerMode = 'in-place';
105851
			}
105852
			else if (
105853
				bodyBottom + position.tfootHeight + this.c.footerOffset >
105854
					windowBottom &&
105855
				bodyTop + this.c.footerOffset < windowBottom
105856
			) {
105857
				footerMode = 'in';
105858
				forceChange = true;
105859
			}
105860
			else {
105861
				footerMode = 'above';
17941
			}
105862
			}
17942
105863
17943
			// Safari, IE and Edge will put empty name space attributes onto
105864
			if (forceChange || footerMode !== this.s.footerMode) {
17944
			// various elements making them useless. This strips them out
105865
				this._modeChange(footerMode, 'footer', forceChange);
17945
			str = str.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g, '<$1 $2>');
105866
			}
17946
105867
17947
			zip.file(name, str);
105868
			this._horizontal('footer', windowLeft);
17948
		}
17949
	});
17950
}
17951
105869
17952
/**
105870
			var getOffsetHeight = function (el) {
17953
 * Create an XML node and add any children, attributes, etc without needing to
105871
				return {
17954
 * be verbose in the DOM.
105872
					offset: el.offset(),
17955
 *
105873
					height: el.outerHeight()
17956
 * @param  {object} doc      XML document
105874
				};
17957
 * @param  {string} nodeName Node name
105875
			};
17958
 * @param  {object} opts     Options - can be `attr` (attributes), `children`
17959
 *   (child nodes) and `text` (text content)
17960
 * @return {node}            Created node
17961
 */
17962
function _createNode(doc, nodeName, opts) {
17963
	var tempNode = doc.createElement(nodeName);
17964
105876
17965
	if (opts) {
105877
			header = this.dom.header.floating
17966
		if (opts.attr) {
105878
				? getOffsetHeight(this.dom.header.floating)
17967
			$(tempNode).attr(opts.attr);
105879
				: getOffsetHeight(this.dom.thead);
17968
		}
105880
			footer = this.dom.footer.floating
105881
				? getOffsetHeight(this.dom.footer.floating)
105882
				: getOffsetHeight(this.dom.tfoot);
105883
105884
			// If scrolling is enabled and the footer is off the screen
105885
			if (scrollEnabled && footer.offset.top > windowTop) {
105886
				// && footer.offset.top >= windowBottom) {
105887
				// Calculate the gap between the top of the scrollBody and the top of the window
105888
				var overlap = windowTop - scrollOffset.top;
105889
				// The new height is the bottom of the window
105890
				var newHeight =
105891
					windowBottom +
105892
					// If the gap between the top of the scrollbody and the window is more than
105893
					//  the height of the header then the top of the table is still visible so add that gap
105894
					// Doing this has effectively calculated the height from the top of the table to the bottom of the current page
105895
					(overlap > -header.height ? overlap : 0) -
105896
					// Take from that
105897
					// The top of the header plus
105898
					(header.offset.top +
105899
						// The header height if the standard header is present
105900
						(overlap < -header.height ? header.height : 0) +
105901
						// And the height of the footer
105902
						footer.height);
105903
105904
				// Don't want a negative height
105905
				if (newHeight < 0) {
105906
					newHeight = 0;
105907
				}
17969
105908
17970
		if (opts.children) {
105909
				// At the end of the above calculation the space between the header (top of the page if floating)
17971
			$.each(opts.children, function (key, value) {
105910
				// and the point just above the footer should be the new value for the height of the table.
17972
				tempNode.appendChild(value);
105911
				scrollBody.outerHeight(newHeight);
17973
			});
17974
		}
17975
105912
17976
		if (opts.text !== null && opts.text !== undefined) {
105913
				// Need some rounding here as sometimes very small decimal places are encountered
17977
			tempNode.appendChild(doc.createTextNode(opts.text));
105914
				// If the actual height is bigger or equal to the height we just applied then the footer is "Floating"
105915
				if (
105916
					Math.round(scrollBody.outerHeight()) >=
105917
					Math.round(newHeight)
105918
				) {
105919
					$(this.dom.tfoot.parent()).addClass('fixedHeader-floating');
105920
				}
105921
				// Otherwise max-width has kicked in so it is not floating
105922
				else {
105923
					$(this.dom.tfoot.parent()).removeClass(
105924
						'fixedHeader-floating'
105925
					);
105926
				}
105927
			}
17978
		}
105928
		}
17979
	}
17980
105929
17981
	return tempNode;
105930
		if (this.dom.header.floating) {
17982
}
105931
			this.dom.header.floatingParent.css('left', bodyLeft - windowLeft);
105932
		}
105933
		if (this.dom.footer.floating) {
105934
			this.dom.footer.floatingParent.css('left', bodyLeft - windowLeft);
105935
		}
17983
105936
17984
/**
105937
		// If fixed columns is being used on this table then the blockers need to be copied across
17985
 * Get the width for an Excel column based on the contents of that column
105938
		// Cloning these is cleaner than creating as our own as it will keep consistency with fixedColumns automatically
17986
 * @param  {object} data Data for export
105939
		// ASSUMING that the class remains the same
17987
 * @param  {int}    col  Column index
105940
		if (this.s.dt.settings()[0]._fixedColumns !== undefined) {
17988
 * @return {int}         Column width
105941
			var adjustBlocker = function (side, end, el) {
17989
 */
105942
				if (el === undefined) {
17990
function _excelColWidth(data, col) {
105943
					var blocker = $(
17991
	var max = data.header[col].length;
105944
						'div.dtfc-' + side + '-' + end + '-blocker'
17992
	var len, lineSplit, str;
105945
					);
17993
105946
17994
	if (data.footer && data.footer[col] && data.footer[col].length > max) {
105947
					el =
17995
		max = data.footer[col].length;
105948
						blocker.length === 0
17996
	}
105949
							? null
105950
							: blocker.clone().css('z-index', 1);
105951
				}
17997
105952
17998
	for (var i = 0, ien = data.body.length; i < ien; i++) {
105953
				if (el !== null) {
17999
		var point = data.body[i][col];
105954
					if (headerMode === 'in' || headerMode === 'below') {
18000
		str = point !== null && point !== undefined ? point.toString() : '';
105955
						el.appendTo('body').css({
105956
							top:
105957
								end === 'top'
105958
									? header.offset.top
105959
									: footer.offset.top,
105960
							left:
105961
								side === 'right'
105962
									? bodyLeft + bodyWidth - el.width()
105963
									: bodyLeft
105964
						});
105965
					}
105966
					else {
105967
						el.detach();
105968
					}
105969
				}
18001
105970
18002
		// If there is a newline character, workout the width of the column
105971
				return el;
18003
		// based on the longest line in the string
105972
			};
18004
		if (str.indexOf('\n') !== -1) {
18005
			lineSplit = str.split('\n');
18006
			lineSplit.sort(function (a, b) {
18007
				return b.length - a.length;
18008
			});
18009
105973
18010
			len = lineSplit[0].length;
105974
			// Adjust all blockers
18011
		}
105975
			this.dom.header.rightBlocker = adjustBlocker(
18012
		else {
105976
				'right',
18013
			len = str.length;
105977
				'top',
105978
				this.dom.header.rightBlocker
105979
			);
105980
			this.dom.header.leftBlocker = adjustBlocker(
105981
				'left',
105982
				'top',
105983
				this.dom.header.leftBlocker
105984
			);
105985
			this.dom.footer.rightBlocker = adjustBlocker(
105986
				'right',
105987
				'bottom',
105988
				this.dom.footer.rightBlocker
105989
			);
105990
			this.dom.footer.leftBlocker = adjustBlocker(
105991
				'left',
105992
				'bottom',
105993
				this.dom.footer.leftBlocker
105994
			);
18014
		}
105995
		}
105996
	},
18015
105997
18016
		if (len > max) {
105998
	/**
18017
			max = len;
105999
	 * Function to check if scrolling is enabled on the table or not
106000
	 * @returns Boolean value indicating if scrolling on the table is enabled or not
106001
	 */
106002
	_scrollEnabled: function () {
106003
		var oScroll = this.s.dt.settings()[0].oScroll;
106004
		if (oScroll.sY !== '' || oScroll.sX !== '') {
106005
			return true;
18018
		}
106006
		}
106007
		return false;
106008
	},
18019
106009
18020
		// Max width rather than having potentially massive column widths
106010
	/**
18021
		if (max > 40) {
106011
	 * Realign columns by using the colgroup tag and
18022
			return 54; // 40 * 1.35
106012
	 * checking column widths
106013
	 */
106014
	_widths: function (itemDom) {
106015
		if (! itemDom || ! itemDom.placeholder) {
106016
			return;
18023
		}
106017
		}
18024
	}
18025
106018
18026
	max *= 1.35;
106019
		// Match the table overall width
106020
		var tableNode = $(this.s.dt.table().node());
106021
		var scrollBody = $(tableNode.parent());
18027
106022
18028
	// And a min width
106023
		itemDom.floatingParent.css('width', scrollBody[0].offsetWidth);
18029
	return max > 6 ? max : 6;
106024
		itemDom.floating.css('width', tableNode[0].offsetWidth);
18030
}
18031
106025
18032
// Excel - Pre-defined strings to build a basic XLSX file
106026
		// Strip out the old colgroup
18033
var excelStrings = {
106027
		$('colgroup', itemDom.floating).remove();
18034
	'_rels/.rels':
18035
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
18036
		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' +
18037
		'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>' +
18038
		'</Relationships>',
18039
106028
18040
	'xl/_rels/workbook.xml.rels':
106029
		// Copy the `colgroup` element to define the number of columns - needed
18041
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
106030
		// for complex header cases where a column might not have a unique
18042
		'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' +
106031
		// header
18043
		'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>' +
106032
		var cols = itemDom.placeholder
18044
		'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>' +
106033
			.parent()
18045
		'</Relationships>',
106034
			.find('colgroup')
106035
			.clone()
106036
			.appendTo(itemDom.floating)
106037
			.find('col');
18046
106038
18047
	'[Content_Types].xml':
106039
		// However, the widths defined in the colgroup from the DataTable might
18048
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
106040
		// not exactly reflect the actual widths of the columns (content can
18049
		'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' +
106041
		// force it to stretch). So we need to copy the actual widths into the
18050
		'<Default Extension="xml" ContentType="application/xml" />' +
106042
		// colgroup / col's used for the floating header.
18051
		'<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />' +
106043
		var widths = this.s.dt.columns(':visible').widths();
18052
		'<Default Extension="jpeg" ContentType="image/jpeg" />' +
18053
		'<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />' +
18054
		'<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />' +
18055
		'<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" />' +
18056
		'</Types>',
18057
106044
18058
	'xl/workbook.xml':
106045
		for (var i=0 ; i<widths.length ; i++) {
18059
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
106046
			cols.eq(i).css('width', widths[i]);
18060
		'<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">' +
106047
		}
18061
		'<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>' +
106048
	}
18062
		'<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>' +
106049
});
18063
		'<bookViews>' +
18064
		'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>' +
18065
		'</bookViews>' +
18066
		'<sheets>' +
18067
		'<sheet name="Sheet1" sheetId="1" r:id="rId1"/>' +
18068
		'</sheets>' +
18069
		'<definedNames/>' +
18070
		'</workbook>',
18071
106050
18072
	'xl/worksheets/sheet1.xml':
106051
/**
18073
		'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
106052
 * Version
18074
		'<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">' +
106053
 * @type {String}
18075
		'<sheetData/>' +
106054
 * @static
18076
		'<mergeCells count="0"/>' +
106055
 */
18077
		'</worksheet>',
106056
FixedHeader.version = '4.0.6';
18078
106057
18079
	'xl/styles.xml':
106058
/**
18080
		'<?xml version="1.0" encoding="UTF-8"?>' +
106059
 * Defaults
18081
		'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">' +
106060
 * @type {Object}
18082
		'<numFmts count="6">' +
106061
 * @static
18083
		'<numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/>' +
106062
 */
18084
		'<numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/>' +
106063
FixedHeader.defaults = {
18085
		'<numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/>' +
106064
	header: true,
18086
		'<numFmt numFmtId="167" formatCode="0.0%"/>' +
106065
	footer: false,
18087
		'<numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/>' +
106066
	headerOffset: 0,
18088
		'<numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/>' +
106067
	footerOffset: 0
18089
		'</numFmts>' +
18090
		'<fonts count="5" x14ac:knownFonts="1">' +
18091
		'<font>' +
18092
		'<sz val="11" />' +
18093
		'<name val="Calibri" />' +
18094
		'</font>' +
18095
		'<font>' +
18096
		'<sz val="11" />' +
18097
		'<name val="Calibri" />' +
18098
		'<color rgb="FFFFFFFF" />' +
18099
		'</font>' +
18100
		'<font>' +
18101
		'<sz val="11" />' +
18102
		'<name val="Calibri" />' +
18103
		'<b />' +
18104
		'</font>' +
18105
		'<font>' +
18106
		'<sz val="11" />' +
18107
		'<name val="Calibri" />' +
18108
		'<i />' +
18109
		'</font>' +
18110
		'<font>' +
18111
		'<sz val="11" />' +
18112
		'<name val="Calibri" />' +
18113
		'<u />' +
18114
		'</font>' +
18115
		'</fonts>' +
18116
		'<fills count="6">' +
18117
		'<fill>' +
18118
		'<patternFill patternType="none" />' +
18119
		'</fill>' +
18120
		'<fill>' + // Excel appears to use this as a dotted background regardless of values but
18121
		'<patternFill patternType="none" />' + // to be valid to the schema, use a patternFill
18122
		'</fill>' +
18123
		'<fill>' +
18124
		'<patternFill patternType="solid">' +
18125
		'<fgColor rgb="FFD9D9D9" />' +
18126
		'<bgColor indexed="64" />' +
18127
		'</patternFill>' +
18128
		'</fill>' +
18129
		'<fill>' +
18130
		'<patternFill patternType="solid">' +
18131
		'<fgColor rgb="FFD99795" />' +
18132
		'<bgColor indexed="64" />' +
18133
		'</patternFill>' +
18134
		'</fill>' +
18135
		'<fill>' +
18136
		'<patternFill patternType="solid">' +
18137
		'<fgColor rgb="ffc6efce" />' +
18138
		'<bgColor indexed="64" />' +
18139
		'</patternFill>' +
18140
		'</fill>' +
18141
		'<fill>' +
18142
		'<patternFill patternType="solid">' +
18143
		'<fgColor rgb="ffc6cfef" />' +
18144
		'<bgColor indexed="64" />' +
18145
		'</patternFill>' +
18146
		'</fill>' +
18147
		'</fills>' +
18148
		'<borders count="2">' +
18149
		'<border>' +
18150
		'<left />' +
18151
		'<right />' +
18152
		'<top />' +
18153
		'<bottom />' +
18154
		'<diagonal />' +
18155
		'</border>' +
18156
		'<border diagonalUp="false" diagonalDown="false">' +
18157
		'<left style="thin">' +
18158
		'<color auto="1" />' +
18159
		'</left>' +
18160
		'<right style="thin">' +
18161
		'<color auto="1" />' +
18162
		'</right>' +
18163
		'<top style="thin">' +
18164
		'<color auto="1" />' +
18165
		'</top>' +
18166
		'<bottom style="thin">' +
18167
		'<color auto="1" />' +
18168
		'</bottom>' +
18169
		'<diagonal />' +
18170
		'</border>' +
18171
		'</borders>' +
18172
		'<cellStyleXfs count="1">' +
18173
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" />' +
18174
		'</cellStyleXfs>' +
18175
		'<cellXfs count="68">' +
18176
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18177
		'<xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18178
		'<xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18179
		'<xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18180
		'<xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18181
		'<xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18182
		'<xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18183
		'<xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18184
		'<xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18185
		'<xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18186
		'<xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18187
		'<xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18188
		'<xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18189
		'<xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18190
		'<xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18191
		'<xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18192
		'<xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18193
		'<xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18194
		'<xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18195
		'<xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18196
		'<xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18197
		'<xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18198
		'<xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18199
		'<xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18200
		'<xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>' +
18201
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18202
		'<xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18203
		'<xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18204
		'<xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18205
		'<xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18206
		'<xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18207
		'<xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18208
		'<xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18209
		'<xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18210
		'<xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18211
		'<xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18212
		'<xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18213
		'<xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18214
		'<xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18215
		'<xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18216
		'<xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18217
		'<xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18218
		'<xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18219
		'<xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18220
		'<xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18221
		'<xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18222
		'<xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18223
		'<xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18224
		'<xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18225
		'<xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>' +
18226
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
18227
		'<alignment horizontal="left"/>' +
18228
		'</xf>' +
18229
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
18230
		'<alignment horizontal="center"/>' +
18231
		'</xf>' +
18232
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
18233
		'<alignment horizontal="right"/>' +
18234
		'</xf>' +
18235
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
18236
		'<alignment horizontal="fill"/>' +
18237
		'</xf>' +
18238
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
18239
		'<alignment textRotation="90"/>' +
18240
		'</xf>' +
18241
		'<xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1">' +
18242
		'<alignment wrapText="1"/>' +
18243
		'</xf>' +
18244
		'<xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18245
		'<xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18246
		'<xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18247
		'<xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18248
		'<xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18249
		'<xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18250
		'<xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18251
		'<xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18252
		'<xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18253
		'<xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18254
		'<xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18255
		'<xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/>' +
18256
		'</cellXfs>' +
18257
		'<cellStyles count="1">' +
18258
		'<cellStyle name="Normal" xfId="0" builtinId="0" />' +
18259
		'</cellStyles>' +
18260
		'<dxfs count="0" />' +
18261
		'<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />' +
18262
		'</styleSheet>'
18263
};
106068
};
18264
// Note we could use 3 `for` loops for the styles, but when gzipped there is
18265
// virtually no difference in size, since the above can be easily compressed
18266
106069
18267
// Pattern matching for special number formats. Perhaps this should be exposed
106070
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
18268
// via an API in future?
106071
 * DataTables interfaces
18269
// Ref: section 3.8.30 - built in formatters in open spreadsheet
106072
 */
18270
//   https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf
106073
18271
var _excelSpecials = [
106074
// Attach for constructor access
18272
	{
106075
$.fn.dataTable.FixedHeader = FixedHeader;
18273
		match: /^\-?\d+\.\d%$/,
106076
$.fn.DataTable.FixedHeader = FixedHeader;
18274
		style: 60,
106077
18275
		fmt: function (d) {
106078
// DataTables creation - check if the FixedHeader option has been defined on the
18276
			return d / 100;
106079
// table and if so, initialise
106080
$(document).on('init.dt.dtfh', function (e, settings, json) {
106081
	if (e.namespace !== 'dt') {
106082
		return;
106083
	}
106084
106085
	var init = settings.oInit.fixedHeader;
106086
	var defaults = DataTable.defaults.fixedHeader;
106087
106088
	if ((init || defaults) && !settings._fixedHeader) {
106089
		var opts = $.extend({}, defaults, init);
106090
106091
		if (init !== false) {
106092
			new FixedHeader(settings, opts);
18277
		}
106093
		}
18278
	}, // Percent with d.p.
106094
	}
18279
	{
106095
});
18280
		match: /^\-?\d+\.?\d*%$/,
106096
18281
		style: 56,
106097
// DataTables API methods
18282
		fmt: function (d) {
106098
DataTable.Api.register('fixedHeader()', function () { });
18283
			return d / 100;
106099
106100
DataTable.Api.register('fixedHeader.adjust()', function () {
106101
	return this.iterator('table', function (ctx) {
106102
		var fh = ctx._fixedHeader;
106103
106104
		if (fh) {
106105
			fh.update();
18284
		}
106106
		}
18285
	}, // Percent
106107
	});
18286
	{ match: /^\-?\$[\d,]+.?\d*$/, style: 57 }, // Dollars
106108
});
18287
	{ match: /^\-?£[\d,]+.?\d*$/, style: 58 }, // Pounds
106109
18288
	{ match: /^\-?€[\d,]+.?\d*$/, style: 59 }, // Euros
106110
DataTable.Api.register('fixedHeader.enable()', function (flag) {
18289
	{ match: /^\-?\d+$/, style: 65 }, // Numbers without thousand separators
106111
	return this.iterator('table', function (ctx) {
18290
	{ match: /^\-?\d+\.\d{2}$/, style: 66 }, // Numbers 2 d.p. without thousands separators
106112
		var fh = ctx._fixedHeader;
18291
	{
106113
18292
		match: /^\([\d,]+\)$/,
106114
		flag = flag !== undefined ? flag : true;
18293
		style: 61,
106115
		if (fh && flag !== fh.enabled()) {
18294
		fmt: function (d) {
106116
			fh.enable(flag);
18295
			return -1 * d.replace(/[\(\)]/g, '');
18296
		}
106117
		}
18297
	}, // Negative numbers indicated by brackets
106118
	});
18298
	{
106119
});
18299
		match: /^\([\d,]+\.\d{2}\)$/,
106120
18300
		style: 62,
106121
DataTable.Api.register('fixedHeader.enabled()', function () {
18301
		fmt: function (d) {
106122
	if (this.context.length) {
18302
			return -1 * d.replace(/[\(\)]/g, '');
106123
		var fh = this.context[0]._fixedHeader;
106124
106125
		if (fh) {
106126
			return fh.enabled();
106127
		}
106128
	}
106129
106130
	return false;
106131
});
106132
106133
DataTable.Api.register('fixedHeader.disable()', function () {
106134
	return this.iterator('table', function (ctx) {
106135
		var fh = ctx._fixedHeader;
106136
106137
		if (fh && fh.enabled()) {
106138
			fh.enable(false);
18303
		}
106139
		}
18304
	}, // Negative numbers indicated by brackets - 2d.p.
106140
	});
18305
	{ match: /^\-?[\d,]+$/, style: 63 }, // Numbers with thousand separators
106141
});
18306
	{ match: /^\-?[\d,]+\.\d{2}$/, style: 64 },
106142
18307
	{
106143
$.each(['header', 'footer'], function (i, el) {
18308
		match: /^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,
106144
	DataTable.Api.register('fixedHeader.' + el + 'Offset()', function (offset) {
18309
		style: 67,
106145
		var ctx = this.context;
18310
		fmt: function (d) {
106146
18311
			return Math.round(25569 + Date.parse(d) / (86400 * 1000));
106147
		if (offset === undefined) {
106148
			return ctx.length && ctx[0]._fixedHeader
106149
				? ctx[0]._fixedHeader[el + 'Offset']()
106150
				: undefined;
18312
		}
106151
		}
18313
	} //Date yyyy-mm-dd
18314
];
18315
106152
18316
var _excelMergeCells = function (rels, row, column, rowspan, colspan) {
106153
		return this.iterator('table', function (ctx) {
18317
	var mergeCells = $('mergeCells', rels);
106154
			var fh = ctx._fixedHeader;
18318
106155
18319
	mergeCells[0].appendChild(
106156
			if (fh) {
18320
		_createNode(rels, 'mergeCell', {
106157
				fh[el + 'Offset'](offset);
18321
			attr: {
18322
				ref:
18323
					createCellPos(column) +
18324
					row +
18325
					':' +
18326
					createCellPos(column + colspan - 1) +
18327
					(row + rowspan - 1)
18328
			}
106158
			}
18329
		})
106159
		});
18330
	);
106160
	});
106161
});
18331
106162
18332
	mergeCells.attr('count', parseFloat(mergeCells.attr('count')) + 1);
18333
};
18334
106163
18335
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
106164
return DataTable;
18336
 * Buttons
106165
}));
106166
106167
106168
/*! Responsive 3.0.8
106169
 * © SpryMedia Ltd - datatables.net/license
18337
 */
106170
 */
18338
106171
18339
//
106172
(function( factory ){
18340
// Copy to clipboard
106173
	if ( typeof define === 'function' && define.amd ) {
18341
//
106174
		// AMD
18342
DataTable.ext.buttons.copyHtml5 = {
106175
		define( ['jquery', 'datatables.net'], function ( $ ) {
18343
	className: 'buttons-copy buttons-html5',
106176
			return factory( $, window, document );
106177
		} );
106178
	}
106179
	else if ( typeof exports === 'object' ) {
106180
		// CommonJS
106181
		var jq = require('jquery');
106182
		var cjsRequires = function (root, $) {
106183
			if ( ! $.fn.dataTable ) {
106184
				require('datatables.net')(root, $);
106185
			}
106186
		};
18344
106187
18345
	text: function (dt) {
106188
		if (typeof window === 'undefined') {
18346
		return dt.i18n('buttons.copy', 'Copy');
106189
			module.exports = function (root, $) {
18347
	},
106190
				if ( ! root ) {
106191
					// CommonJS environments without a window global must pass a
106192
					// root. This will give an error otherwise
106193
					root = window;
106194
				}
18348
106195
18349
	action: function (e, dt, button, config, cb) {
106196
				if ( ! $ ) {
18350
		var exportData = _exportData(dt, config);
106197
					$ = jq( root );
18351
		var info = dt.buttons.exportInfo(config);
106198
				}
18352
		var newline = _newLine(config);
106199
18353
		var output = exportData.str;
106200
				cjsRequires( root, $ );
18354
		var hiddenDiv = $('<div/>').css({
106201
				return factory( $, root, root.document );
18355
			height: 1,
106202
			};
18356
			width: 1,
106203
		}
18357
			overflow: 'hidden',
106204
		else {
18358
			position: 'fixed',
106205
			cjsRequires( window, jq );
18359
			top: 0,
106206
			module.exports = factory( jq, window, window.document );
18360
			left: 0
106207
		}
106208
	}
106209
	else {
106210
		// Browser
106211
		factory( jQuery, window, document );
106212
	}
106213
}(function( $, window, document ) {
106214
'use strict';
106215
var DataTable = $.fn.dataTable;
106216
106217
106218
106219
/**
106220
 * @summary     Responsive
106221
 * @description Responsive tables plug-in for DataTables
106222
 * @version     3.0.8
106223
 * @author      SpryMedia Ltd
106224
 * @copyright   SpryMedia Ltd.
106225
 *
106226
 * This source file is free software, available under the following license:
106227
 *   MIT license - http://datatables.net/license/mit
106228
 *
106229
 * This source file is distributed in the hope that it will be useful, but
106230
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
106231
 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
106232
 *
106233
 * For details please refer to: http://www.datatables.net
106234
 */
106235
106236
/**
106237
 * Responsive is a plug-in for the DataTables library that makes use of
106238
 * DataTables' ability to change the visibility of columns, changing the
106239
 * visibility of columns so the displayed columns fit into the table container.
106240
 * The end result is that complex tables will be dynamically adjusted to fit
106241
 * into the viewport, be it on a desktop, tablet or mobile browser.
106242
 *
106243
 * Responsive for DataTables has two modes of operation, which can used
106244
 * individually or combined:
106245
 *
106246
 * * Class name based control - columns assigned class names that match the
106247
 *   breakpoint logic can be shown / hidden as required for each breakpoint.
106248
 * * Automatic control - columns are automatically hidden when there is no
106249
 *   room left to display them. Columns removed from the right.
106250
 *
106251
 * In additional to column visibility control, Responsive also has built into
106252
 * options to use DataTables' child row display to show / hide the information
106253
 * from the table that has been hidden. There are also two modes of operation
106254
 * for this child row display:
106255
 *
106256
 * * Inline - when the control element that the user can use to show / hide
106257
 *   child rows is displayed inside the first column of the table.
106258
 * * Column - where a whole column is dedicated to be the show / hide control.
106259
 *
106260
 * Initialisation of Responsive is performed by:
106261
 *
106262
 * * Adding the class `responsive` or `dt-responsive` to the table. In this case
106263
 *   Responsive will automatically be initialised with the default configuration
106264
 *   options when the DataTable is created.
106265
 * * Using the `responsive` option in the DataTables configuration options. This
106266
 *   can also be used to specify the configuration options, or simply set to
106267
 *   `true` to use the defaults.
106268
 *
106269
 *  @class
106270
 *  @param {object} settings DataTables settings object for the host table
106271
 *  @param {object} [opts] Configuration options
106272
 *  @requires jQuery 1.7+
106273
 *  @requires DataTables 2.0.0+
106274
 *
106275
 *  @example
106276
 *      $('#example').DataTable( {
106277
 *        responsive: true
106278
 *      } );
106279
 *    } );
106280
 */
106281
var Responsive = function (settings, opts) {
106282
	// Sanity check that we are using DataTables 2.0.0 or newer
106283
	if (!DataTable.versionCheck || !DataTable.versionCheck('2')) {
106284
		throw 'DataTables Responsive requires DataTables 2 or newer';
106285
	}
106286
106287
	this.s = {
106288
		childNodeStore: {},
106289
		columns: [],
106290
		current: [],
106291
		dt: new DataTable.Api(settings)
106292
	};
106293
106294
	// Check if responsive has already been initialised on this table
106295
	if (this.s.dt.settings()[0].responsive) {
106296
		return;
106297
	}
106298
106299
	// details is an object, but for simplicity the user can give it as a string
106300
	// or a boolean
106301
	if (opts && typeof opts.details === 'string') {
106302
		opts.details = { type: opts.details };
106303
	}
106304
	else if (opts && opts.details === false) {
106305
		opts.details = { type: false };
106306
	}
106307
	else if (opts && opts.details === true) {
106308
		opts.details = { type: 'inline' };
106309
	}
106310
106311
	this.c = $.extend(
106312
		true,
106313
		{},
106314
		Responsive.defaults,
106315
		DataTable.defaults.responsive,
106316
		opts
106317
	);
106318
	settings.responsive = this;
106319
	this._constructor();
106320
};
106321
106322
$.extend(Responsive.prototype, {
106323
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
106324
	 * Constructor
106325
	 */
106326
106327
	/**
106328
	 * Initialise the Responsive instance
106329
	 *
106330
	 * @private
106331
	 */
106332
	_constructor: function () {
106333
		var that = this;
106334
		var dt = this.s.dt;
106335
		var oldWindowWidth = $(window).innerWidth();
106336
106337
		dt.settings()[0]._responsive = this;
106338
106339
		// Use DataTables' throttle function to avoid processor thrashing
106340
		$(window).on(
106341
			'orientationchange.dtr',
106342
			DataTable.util.throttle(function () {
106343
				// iOS has a bug whereby resize can fire when only scrolling
106344
				// See: http://stackoverflow.com/questions/8898412
106345
				var width = $(window).innerWidth();
106346
106347
				if (width !== oldWindowWidth) {
106348
					that._resize();
106349
					oldWindowWidth = width;
106350
				}
106351
			})
106352
		);
106353
106354
		// Handle new rows being dynamically added - needed as responsive
106355
		// updates all rows (shown or not) a responsive change, rather than
106356
		// per draw.
106357
		dt.on('row-created.dtr', function (e, tr, data, idx) {
106358
			if ($.inArray(false, that.s.current) !== -1) {
106359
				$('>td, >th', tr).each(function (i) {
106360
					var idx = dt.column.index('toData', i);
106361
106362
					if (that.s.current[idx] === false) {
106363
						$(this)
106364
							.css('display', 'none')
106365
							.addClass('dtr-hidden');
106366
					}
106367
				});
106368
			}
18361
		});
106369
		});
18362
106370
18363
		if (info.title) {
106371
		// Destroy event handler
18364
			output = info.title + newline + newline + output;
106372
		dt.on('destroy.dtr', function () {
18365
		}
106373
			dt.off('.dtr');
106374
			$(dt.table().body()).off('.dtr');
106375
			$(window).off('resize.dtr orientationchange.dtr');
106376
			dt.cells('.dtr-control').nodes().to$().removeClass('dtr-control');
106377
			$(dt.table().node()).removeClass('dtr-inline collapsed');
18366
106378
18367
		if (info.messageTop) {
106379
			// Restore the columns that we've hidden
18368
			output = info.messageTop + newline + newline + output;
106380
			$.each(that.s.current, function (i, val) {
18369
		}
106381
				if (val === false) {
106382
					that._setColumnVis(i, true);
106383
				}
106384
			});
106385
		});
18370
106386
18371
		if (info.messageBottom) {
106387
		// Reorder the breakpoints array here in case they have been added out
18372
			output = output + newline + newline + info.messageBottom;
106388
		// of order
18373
		}
106389
		this.c.breakpoints.sort(function (a, b) {
106390
			return a.width < b.width ? 1 : a.width > b.width ? -1 : 0;
106391
		});
18374
106392
18375
		if (config.customize) {
106393
		this._classLogic();
18376
			output = config.customize(output, config, dt);
18377
		}
18378
106394
18379
		var textarea = $('<textarea readonly/>')
106395
		// Details handler
18380
			.val(output)
106396
		var details = this.c.details;
18381
			.appendTo(hiddenDiv);
18382
106397
18383
		// For browsers that support the copy execCommand, try to use it
106398
		if (details.type !== false) {
18384
		if (document.queryCommandSupported('copy')) {
106399
			that._detailsInit();
18385
			hiddenDiv.appendTo(dt.table().container());
18386
			textarea[0].focus();
18387
			textarea[0].select();
18388
106400
18389
			try {
106401
			// DataTables will trigger this event on every column it shows and
18390
				var successful = document.execCommand('copy');
106402
			// hides individually
18391
				hiddenDiv.remove();
106403
			dt.on('column-visibility.dtr', function () {
106404
				// Use a small debounce to allow multiple columns to be set together
106405
				if (that._timer) {
106406
					clearTimeout(that._timer);
106407
				}
18392
106408
18393
				if (successful) {
106409
				that._timer = setTimeout(function () {
18394
					if (config.copySuccess) {
106410
					that._timer = null;
18395
						dt.buttons.info(
18396
							dt.i18n('buttons.copyTitle', 'Copy to clipboard'),
18397
							dt.i18n(
18398
								'buttons.copySuccess',
18399
								{
18400
									1: 'Copied one row to clipboard',
18401
									_: 'Copied %d rows to clipboard'
18402
								},
18403
								exportData.rows
18404
							),
18405
							2000
18406
						);
18407
					}
18408
106411
18409
					cb();
106412
					that._classLogic();
18410
					return;
106413
					that._resizeAuto();
18411
				}
106414
					that._resize(true);
18412
			} catch (t) {
18413
				// noop
18414
			}
18415
		}
18416
106415
18417
		// Otherwise we show the text box and instruct the user to use it
106416
					that._redrawChildren();
18418
		var message = $(
106417
				}, 100);
18419
			'<span>' +
106418
			});
18420
				dt.i18n(
18421
					'buttons.copyKeys',
18422
					'Press <i>ctrl</i> or <i>\u2318</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>' +
18423
						'To cancel, click this message or press escape.'
18424
				) +
18425
				'</span>'
18426
		).append(hiddenDiv);
18427
106419
18428
		dt.buttons.info(
106420
			// Redraw the details box on each draw which will happen if the data
18429
			dt.i18n('buttons.copyTitle', 'Copy to clipboard'),
106421
			// has changed. This is used until DataTables implements a native
18430
			message,
106422
			// `updated` event for rows
18431
			0
106423
			dt.on('draw.dtr', function () {
18432
		);
106424
				that._redrawChildren();
106425
			});
18433
106426
18434
		// Select the text so when the user activates their system clipboard
106427
			$(dt.table().node()).addClass('dtr-' + details.type);
18435
		// it will copy that text
106428
		}
18436
		textarea[0].focus();
18437
		textarea[0].select();
18438
106429
18439
		// Event to hide the message when the user is done
106430
		// DT2 let's us tell it if we are hiding columns
18440
		var container = $(message).closest('.dt-button-info');
106431
		dt.on('column-calc.dt', function (e, d) {
18441
		var close = function () {
106432
			var curr = that.s.current;
18442
			container.off('click.buttons-copy');
18443
			$(document).off('.buttons-copy');
18444
			dt.buttons.info(false);
18445
		};
18446
106433
18447
		container.on('click.buttons-copy', function () {
106434
			for (var i = 0; i < curr.length; i++) {
18448
			close();
106435
				var idx = d.visible.indexOf(i);
18449
			cb();
106436
106437
				if (curr[i] === false && idx >= 0) {
106438
					d.visible.splice(idx, 1);
106439
				}
106440
			}
18450
		});
106441
		});
18451
		$(document)
106442
18452
			.on('keydown.buttons-copy', function (e) {
106443
		// On Ajax reload we want to reopen any child rows which are displayed
18453
				if (e.keyCode === 27) {
106444
		// by responsive
18454
					// esc
106445
		dt.on('preXhr.dtr', function () {
18455
					close();
106446
			var rowIds = [];
18456
					cb();
106447
			dt.rows().every(function () {
106448
				if (this.child.isShown()) {
106449
					rowIds.push(this.id(true));
18457
				}
106450
				}
18458
			})
18459
			.on('copy.buttons-copy cut.buttons-copy', function () {
18460
				close();
18461
				cb();
18462
			});
106451
			});
18463
	},
18464
106452
18465
	async: 100,
106453
			dt.one('draw.dtr', function () {
106454
				that._resizeAuto();
106455
				that._resize();
18466
106456
18467
	copySuccess: true,
106457
				dt.rows(rowIds).every(function () {
106458
					that._detailsDisplay(this, false);
106459
				});
106460
			});
106461
		});
18468
106462
18469
	exportOptions: {},
106463
		// First pass when the table is ready
106464
		dt
106465
			.on('draw.dtr', function () {
106466
				// For server-side tables, each draw needs the child node
106467
				// cache to be cleared since it is no longer relevant. We can
106468
				// create a new object for speed in this case - no mutation.
106469
				if (dt.page.info().serverSide) {
106470
					that.s.childNodeStore = {};
106471
				}
18470
106472
18471
	fieldSeparator: '\t',
106473
				that._controlClass();
106474
			})
106475
			.ready(function () {
106476
				that._resizeAuto();
106477
				that._resize();
18472
106478
18473
	fieldBoundary: '',
106479
				// Change in column sizes means we need to calc
106480
				dt.on('column-sizing.dtr', function () {
106481
					that._resizeAuto();
106482
					that._resize();
106483
				});
106484
			});
18474
106485
18475
	header: true,
106486
		// Attach listeners after first pass
106487
		dt.on('column-reorder.dtr', function (e, settings, details) {
106488
			that._classLogic();
106489
			that._resizeAuto();
106490
			that._resize(true);
106491
		});
106492
	},
18476
106493
18477
	footer: true,
106494
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
106495
	 * Private methods
106496
	 */
18478
106497
18479
	title: '*',
106498
	/**
106499
	 * Insert a `col` tag into the correct location in a `colgroup`.
106500
	 *
106501
	 * @param {jQuery} colGroup The `colgroup` tag
106502
	 * @param {jQuery} colEl The `col` tag
106503
	 */
106504
	_colGroupAttach: function (colGroup, colEls, idx) {
106505
		var found = null;
18480
106506
18481
	messageTop: '*',
106507
		// No need to do anything if already attached
106508
		if (colEls[idx].get(0).parentNode === colGroup[0]) {
106509
			return;
106510
		}
18482
106511
18483
	messageBottom: '*'
106512
		// Find the first `col` after our own which is already attached
18484
};
106513
		for (var i = idx+1; i < colEls.length; i++) {
106514
			if (colGroup[0] === colEls[i].get(0).parentNode) {
106515
				found = i;
106516
				break;
106517
			}
106518
		}
18485
106519
18486
//
106520
		if (found !== null) {
18487
// CSV export
106521
			// Insert before
18488
//
106522
			colEls[idx].insertBefore(colEls[found][0]);
18489
DataTable.ext.buttons.csvHtml5 = {
106523
		}
18490
	bom: false,
106524
		else {
106525
			// If wasn't found, insert at the end
106526
			colGroup.append(colEls[idx]);
106527
		}
106528
	},
18491
106529
18492
	className: 'buttons-csv buttons-html5',
106530
	/**
106531
	 * Get and store nodes from a cell - use for node moving renderers
106532
	 *
106533
	 * @param {*} dt DT instance
106534
	 * @param {*} row Row index
106535
	 * @param {*} col Column index
106536
	 */
106537
	_childNodes: function (dt, row, col) {
106538
		var name = row + '-' + col;
18493
106539
18494
	available: function () {
106540
		if (this.s.childNodeStore[name]) {
18495
		return window.FileReader !== undefined && window.Blob;
106541
			return this.s.childNodeStore[name];
18496
	},
106542
		}
106543
106544
		// https://jsperf.com/childnodes-array-slice-vs-loop
106545
		var nodes = [];
106546
		var children = dt.cell(row, col).node().childNodes;
106547
		for (var i = 0, iLen = children.length; i < iLen; i++) {
106548
			nodes.push(children[i]);
106549
		}
18497
106550
18498
	text: function (dt) {
106551
		this.s.childNodeStore[name] = nodes;
18499
		return dt.i18n('buttons.csv', 'CSV');
106552
106553
		return nodes;
18500
	},
106554
	},
18501
106555
18502
	action: function (e, dt, button, config, cb) {
106556
	/**
18503
		// Set the text
106557
	 * Restore nodes from the cache to a table cell
18504
		var output = _exportData(dt, config).str;
106558
	 *
18505
		var info = dt.buttons.exportInfo(config);
106559
	 * @param {*} dt DT instance
18506
		var charset = config.charset;
106560
	 * @param {*} row Row index
106561
	 * @param {*} col Column index
106562
	 */
106563
	_childNodesRestore: function (dt, row, col) {
106564
		var name = row + '-' + col;
18507
106565
18508
		if (config.customize) {
106566
		if (!this.s.childNodeStore[name]) {
18509
			output = config.customize(output, config, dt);
106567
			return;
18510
		}
106568
		}
18511
106569
18512
		if (charset !== false) {
106570
		var node = dt.cell(row, col).node();
18513
			if (!charset) {
106571
		var store = this.s.childNodeStore[name];
18514
				charset = document.characterSet || document.charset;
106572
		if (store.length > 0) {
18515
			}
106573
			var parent = store[0].parentNode;
106574
			var parentChildren = parent.childNodes;
106575
			var a = [];
18516
106576
18517
			if (charset) {
106577
			for (var i = 0, iLen = parentChildren.length; i < iLen; i++) {
18518
				charset = ';charset=' + charset;
106578
				a.push(parentChildren[i]);
18519
			}
106579
			}
18520
		}
18521
		else {
18522
			charset = '';
18523
		}
18524
106580
18525
		if (config.bom) {
106581
			for (var j = 0, jen = a.length; j < jen; j++) {
18526
			output = String.fromCharCode(0xfeff) + output;
106582
				node.appendChild(a[j]);
106583
			}
18527
		}
106584
		}
18528
106585
18529
		_saveAs(
106586
		this.s.childNodeStore[name] = undefined;
18530
			new Blob([output], { type: 'text/csv' + charset }),
18531
			info.filename,
18532
			true
18533
		);
18534
18535
		cb();
18536
	},
106587
	},
18537
106588
18538
	async: 100,
106589
	/**
18539
106590
	 * Calculate the visibility for the columns in a table for a given
18540
	filename: '*',
106591
	 * breakpoint. The result is pre-determined based on the class logic if
18541
106592
	 * class names are used to control all columns, but the width of the table
18542
	extension: '.csv',
106593
	 * is also used if there are columns which are to be automatically shown
18543
106594
	 * and hidden.
18544
	exportOptions: {
106595
	 *
18545
		escapeExcelFormula: true
106596
	 * @param  {string} breakpoint Breakpoint name to use for the calculation
18546
	},
106597
	 * @return {array} Array of boolean values initiating the visibility of each
106598
	 *   column.
106599
	 *  @private
106600
	 */
106601
	_columnsVisibility: function (breakpoint) {
106602
		var dt = this.s.dt;
106603
		var columns = this.s.columns;
106604
		var i, iLen;
18547
106605
18548
	fieldSeparator: ',',
106606
		// Create an array that defines the column ordering based first on the
106607
		// column's priority, and secondly the column index. This allows the
106608
		// columns to be removed from the right if the priority matches
106609
		var order = columns
106610
			.map(function (col, idx) {
106611
				return {
106612
					columnIdx: idx,
106613
					priority: col.priority
106614
				};
106615
			})
106616
			.sort(function (a, b) {
106617
				if (a.priority !== b.priority) {
106618
					return a.priority - b.priority;
106619
				}
106620
				return a.columnIdx - b.columnIdx;
106621
			});
18549
106622
18550
	fieldBoundary: '"',
106623
		// Class logic - determine which columns are in this breakpoint based
106624
		// on the classes. If no class control (i.e. `auto`) then `-` is used
106625
		// to indicate this to the rest of the function
106626
		var display = $.map(columns, function (col, i) {
106627
			if (dt.column(i).visible() === false) {
106628
				return 'not-visible';
106629
			}
106630
			return col.auto && col.minWidth === null
106631
				? false
106632
				: col.auto === true
106633
				? '-'
106634
				: $.inArray(breakpoint, col.includeIn) !== -1;
106635
		});
18551
106636
18552
	escapeChar: '"',
106637
		// Auto column control - first pass: how much width is taken by the
106638
		// ones that must be included from the non-auto columns
106639
		var requiredWidth = 0;
106640
		for (i = 0, iLen = display.length; i < iLen; i++) {
106641
			if (display[i] === true) {
106642
				requiredWidth += columns[i].minWidth;
106643
			}
106644
		}
18553
106645
18554
	charset: null,
106646
		// Second pass, use up any remaining width for other columns. For
106647
		// scrolling tables we need to subtract the width of the scrollbar. It
106648
		// may not be requires which makes this sub-optimal, but it would
106649
		// require another full redraw to make complete use of those extra few
106650
		// pixels
106651
		var scrolling = dt.settings()[0].oScroll;
106652
		var bar = scrolling.sY || scrolling.sX ? scrolling.iBarWidth : 0;
106653
		var widthAvailable = dt.table().container().offsetWidth - bar;
106654
		var usedWidth = widthAvailable - requiredWidth;
18555
106655
18556
	header: true,
106656
		// Control column needs to always be included. This makes it sub-
106657
		// optimal in terms of using the available with, but to stop layout
106658
		// thrashing or overflow. Also we need to account for the control column
106659
		// width first so we know how much width is available for the other
106660
		// columns, since the control column might not be the first one shown
106661
		for (i = 0, iLen = display.length; i < iLen; i++) {
106662
			if (columns[i].control) {
106663
				usedWidth -= columns[i].minWidth;
106664
			}
106665
		}
18557
106666
18558
	footer: true
106667
		// Allow columns to be shown (counting by priority and then right to
18559
};
106668
		// left) until we run out of room
106669
		var empty = false;
106670
		for (i = 0, iLen = order.length; i < iLen; i++) {
106671
			var colIdx = order[i].columnIdx;
18560
106672
18561
//
106673
			if (
18562
// Excel (xlsx) export
106674
				display[colIdx] === '-' &&
18563
//
106675
				!columns[colIdx].control &&
18564
DataTable.ext.buttons.excelHtml5 = {
106676
				columns[colIdx].minWidth
18565
	className: 'buttons-excel buttons-html5',
106677
			) {
106678
				// Once we've found a column that won't fit we don't let any
106679
				// others display either, or columns might disappear in the
106680
				// middle of the table
106681
				if (empty || usedWidth - columns[colIdx].minWidth < 0) {
106682
					empty = true;
106683
					display[colIdx] = false;
106684
				}
106685
				else {
106686
					display[colIdx] = true;
106687
				}
18566
106688
18567
	available: function () {
106689
				usedWidth -= columns[colIdx].minWidth;
18568
		return (
106690
			}
18569
			window.FileReader !== undefined &&
106691
		}
18570
			_jsZip() !== undefined &&
18571
			!_isDuffSafari() &&
18572
			_serialiser
18573
		);
18574
	},
18575
106692
18576
	text: function (dt) {
106693
		// Determine if the 'control' column should be shown (if there is one).
18577
		return dt.i18n('buttons.excel', 'Excel');
106694
		// This is the case when there is a hidden column (that is not the
18578
	},
106695
		// control column). The two loops look inefficient here, but they are
106696
		// trivial and will fly through. We need to know the outcome from the
106697
		// first , before the action in the second can be taken
106698
		var showControl = false;
18579
106699
18580
	action: function (e, dt, button, config, cb) {
106700
		for (i = 0, iLen = columns.length; i < iLen; i++) {
18581
		var rowPos = 0;
106701
			if (
18582
		var dataStartRow, dataEndRow;
106702
				!columns[i].control &&
18583
		var getXml = function (type) {
106703
				!columns[i].never &&
18584
			var str = excelStrings[type];
106704
				display[i] === false
106705
			) {
106706
				showControl = true;
106707
				break;
106708
			}
106709
		}
18585
106710
18586
			//str = str.replace( /xmlns:/g, 'xmlns_' ).replace( /mc:/g, 'mc_' );
106711
		for (i = 0, iLen = columns.length; i < iLen; i++) {
106712
			if (columns[i].control) {
106713
				display[i] = showControl;
106714
			}
18587
106715
18588
			return $.parseXML(str);
106716
			// Replace not visible string with false from the control column detection above
18589
		};
106717
			if (display[i] === 'not-visible') {
18590
		var rels = getXml('xl/worksheets/sheet1.xml');
106718
				display[i] = false;
18591
		var relsGet = rels.getElementsByTagName('sheetData')[0];
106719
			}
106720
		}
18592
106721
18593
		var xlsx = {
106722
		// Finally we need to make sure that there is at least one column that
18594
			_rels: {
106723
		// is visible
18595
				'.rels': getXml('_rels/.rels')
106724
		if ($.inArray(true, display) === -1) {
18596
			},
106725
			display[0] = true;
18597
			xl: {
106726
		}
18598
				_rels: {
18599
					'workbook.xml.rels': getXml('xl/_rels/workbook.xml.rels')
18600
				},
18601
				'workbook.xml': getXml('xl/workbook.xml'),
18602
				'styles.xml': getXml('xl/styles.xml'),
18603
				worksheets: {
18604
					'sheet1.xml': rels
18605
				}
18606
			},
18607
			'[Content_Types].xml': getXml('[Content_Types].xml')
18608
		};
18609
106727
18610
		var data = dt.buttons.exportData(config.exportOptions);
106728
		return display;
18611
		var currentRow, rowNode;
106729
	},
18612
		var addRow = function (row) {
18613
			currentRow = rowPos + 1;
18614
			rowNode = _createNode(rels, 'row', { attr: { r: currentRow } });
18615
106730
18616
			for (var i = 0, ien = row.length; i < ien; i++) {
106731
	/**
18617
				// Concat both the Cell Columns as a letter and the Row of the cell.
106732
	 * Create the internal `columns` array with information about the columns
18618
				var cellId = createCellPos(i) + '' + currentRow;
106733
	 * for the table. This includes determining which breakpoints the column
18619
				var cell = null;
106734
	 * will appear in, based upon class names in the column, which makes up the
106735
	 * vast majority of this method.
106736
	 *
106737
	 * @private
106738
	 */
106739
	_classLogic: function () {
106740
		var that = this;
106741
		var breakpoints = this.c.breakpoints;
106742
		var dt = this.s.dt;
106743
		var columns = dt
106744
			.columns()
106745
			.eq(0)
106746
			.map(function (i) {
106747
				var column = this.column(i);
106748
				var className = column.header().className;
106749
				var priority = column.init().responsivePriority;
106750
				var dataPriority = column
106751
					.header()
106752
					.getAttribute('data-priority');
18620
106753
18621
				// For null, undefined of blank cell, continue so it doesn't create the _createNode
106754
				if (priority === undefined) {
18622
				if (row[i] === null || row[i] === undefined || row[i] === '') {
106755
					priority =
18623
					if (config.createEmptyCells === true) {
106756
						dataPriority === undefined || dataPriority === null
18624
						row[i] = '';
106757
							? 10000
18625
					}
106758
							: dataPriority * 1;
18626
					else {
18627
						continue;
18628
					}
18629
				}
106759
				}
18630
106760
18631
				var originalContent = row[i];
106761
				return {
18632
				row[i] =
106762
					className: className,
18633
					typeof row[i].trim === 'function' ? row[i].trim() : row[i];
106763
					includeIn: [],
106764
					auto: false,
106765
					control: false,
106766
					never: className.match(/\b(dtr\-)?never\b/) ? true : false,
106767
					priority: priority
106768
				};
106769
			});
18634
106770
18635
				// Special number formatting options
106771
		// Simply add a breakpoint to `includeIn` array, ensuring that there are
18636
				for (var j = 0, jen = _excelSpecials.length; j < jen; j++) {
106772
		// no duplicates
18637
					var special = _excelSpecials[j];
106773
		var add = function (colIdx, name) {
106774
			var includeIn = columns[colIdx].includeIn;
18638
106775
18639
					// TODO Need to provide the ability for the specials to say
106776
			if ($.inArray(name, includeIn) === -1) {
18640
					// if they are returning a string, since at the moment it is
106777
				includeIn.push(name);
18641
					// assumed to be a number
106778
			}
18642
					if (
106779
		};
18643
						row[i].match &&
18644
						!row[i].match(/^0\d+/) &&
18645
						row[i].match(special.match)
18646
					) {
18647
						var val = row[i].replace(/[^\d\.\-]/g, '');
18648
106780
18649
						if (special.fmt) {
106781
		var column = function (colIdx, name, operator, matched) {
18650
							val = special.fmt(val);
106782
			var size, i, iLen;
18651
						}
18652
106783
18653
						cell = _createNode(rels, 'c', {
106784
			if (!operator) {
18654
							attr: {
106785
				columns[colIdx].includeIn.push(name);
18655
								r: cellId,
106786
			}
18656
								s: special.style
106787
			else if (operator === 'max-') {
18657
							},
106788
				// Add this breakpoint and all smaller
18658
							children: [_createNode(rels, 'v', { text: val })]
106789
				size = that._find(name).width;
18659
						});
18660
106790
18661
						break;
106791
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
106792
					if (breakpoints[i].width <= size) {
106793
						add(colIdx, breakpoints[i].name);
18662
					}
106794
					}
18663
				}
106795
				}
106796
			}
106797
			else if (operator === 'min-') {
106798
				// Add this breakpoint and all larger
106799
				size = that._find(name).width;
18664
106800
18665
				if (!cell) {
106801
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
18666
					if (
106802
					if (breakpoints[i].width >= size) {
18667
						typeof row[i] === 'number' ||
106803
						add(colIdx, breakpoints[i].name);
18668
						(row[i].match &&
18669
							row[i].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/) && // Includes exponential format
18670
							!row[i].match(/^0\d+/))
18671
					) {
18672
						// Detect numbers - don't match numbers with leading zeros
18673
						// or a negative anywhere but the start
18674
						cell = _createNode(rels, 'c', {
18675
							attr: {
18676
								t: 'n',
18677
								r: cellId
18678
							},
18679
							children: [_createNode(rels, 'v', { text: row[i] })]
18680
						});
18681
					}
106804
					}
18682
					else {
106805
				}
18683
						// String output - replace non standard characters for text output
106806
			}
18684
						/*eslint no-control-regex: "off"*/
106807
			else if (operator === 'not-') {
18685
						var text = !originalContent.replace
106808
				// Add all but this breakpoint
18686
							? originalContent
106809
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
18687
							: originalContent.replace(
106810
					if (breakpoints[i].name.indexOf(matched) === -1) {
18688
									/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,
106811
						add(colIdx, breakpoints[i].name);
18689
									''
18690
							);
18691
18692
						cell = _createNode(rels, 'c', {
18693
							attr: {
18694
								t: 'inlineStr',
18695
								r: cellId
18696
							},
18697
							children: {
18698
								row: _createNode(rels, 'is', {
18699
									children: {
18700
										row: _createNode(rels, 't', {
18701
											text: text,
18702
											attr: {
18703
												'xml:space': 'preserve'
18704
											}
18705
										})
18706
									}
18707
								})
18708
							}
18709
						});
18710
					}
106812
					}
18711
				}
106813
				}
18712
18713
				rowNode.appendChild(cell);
18714
			}
106814
			}
18715
18716
			relsGet.appendChild(rowNode);
18717
			rowPos++;
18718
		};
106815
		};
18719
106816
18720
		var addHeader = function (structure) {
106817
		// Loop over each column and determine if it has a responsive control
18721
			structure.forEach(function (row) {
106818
		// class
18722
				addRow(
106819
		columns.each(function (col, i) {
18723
					row.map(function (cell) {
106820
			var classNames = col.className.split(' ');
18724
						return cell ? cell.title : '';
106821
			var hasClass = false;
18725
					}),
18726
					rowPos
18727
				);
18728
				$('row:last c', rels).attr('s', '2'); // bold
18729
18730
				// Add any merge cells
18731
				row.forEach(function (cell, columnCounter) {
18732
					if (cell && (cell.colSpan > 1 || cell.rowSpan > 1)) {
18733
						_excelMergeCells(
18734
							rels,
18735
							rowPos,
18736
							columnCounter,
18737
							cell.rowSpan,
18738
							cell.colSpan
18739
						);
18740
					}
18741
				});
18742
			});
18743
		};
18744
106822
18745
		// Title and top messages
106823
			// Split the class name up so multiple rules can be applied if needed
18746
		var exportInfo = dt.buttons.exportInfo(config);
106824
			for (var k = 0, ken = classNames.length; k < ken; k++) {
18747
		if (exportInfo.title) {
106825
				var className = classNames[k].trim();
18748
			addRow([exportInfo.title], rowPos);
18749
			_excelMergeCells(rels, rowPos, 0, 1, data.header.length);
18750
			$('row:last c', rels).attr('s', '51'); // centre
18751
		}
18752
106826
18753
		if (exportInfo.messageTop) {
106827
				if (className === 'all' || className === 'dtr-all') {
18754
			addRow([exportInfo.messageTop], rowPos);
106828
					// Include in all
18755
			_excelMergeCells(rels, rowPos, 0, 1, data.header.length);
106829
					hasClass = true;
18756
		}
106830
					col.includeIn = $.map(breakpoints, function (a) {
106831
						return a.name;
106832
					});
106833
					return;
106834
				}
106835
				else if (
106836
					className === 'none' ||
106837
					className === 'dtr-none' ||
106838
					col.never
106839
				) {
106840
					// Include in none (default) and no auto
106841
					hasClass = true;
106842
					return;
106843
				}
106844
				else if (
106845
					className === 'control' ||
106846
					className === 'dtr-control'
106847
				) {
106848
					// Special column that is only visible, when one of the other
106849
					// columns is hidden. This is used for the details control
106850
					hasClass = true;
106851
					col.control = true;
106852
					return;
106853
				}
18757
106854
18758
		// Table header
106855
				$.each(breakpoints, function (j, breakpoint) {
18759
		if (config.header) {
106856
					// Does this column have a class that matches this breakpoint?
18760
			addHeader(data.headerStructure);
106857
					var brokenPoint = breakpoint.name.split('-');
18761
		}
106858
					var re = new RegExp(
106859
						'(min\\-|max\\-|not\\-)?(' +
106860
							brokenPoint[0] +
106861
							')(\\-[_a-zA-Z0-9])?'
106862
					);
106863
					var match = className.match(re);
18762
106864
18763
		dataStartRow = rowPos;
106865
					if (match) {
106866
						hasClass = true;
18764
106867
18765
		// Table body
106868
						if (
18766
		for (var n = 0, ie = data.body.length; n < ie; n++) {
106869
							match[2] === brokenPoint[0] &&
18767
			addRow(data.body[n], rowPos);
106870
							match[3] === '-' + brokenPoint[1]
18768
		}
106871
						) {
106872
							// Class name matches breakpoint name fully
106873
							column(
106874
								i,
106875
								breakpoint.name,
106876
								match[1],
106877
								match[2] + match[3]
106878
							);
106879
						}
106880
						else if (match[2] === brokenPoint[0] && !match[3]) {
106881
							// Class name matched primary breakpoint name with no qualifier
106882
							column(i, breakpoint.name, match[1], match[2]);
106883
						}
106884
					}
106885
				});
106886
			}
18769
106887
18770
		dataEndRow = rowPos;
106888
			// If there was no control class, then automatic sizing is used
106889
			if (!hasClass) {
106890
				col.auto = true;
106891
			}
106892
		});
18771
106893
18772
		// Table footer
106894
		this.s.columns = columns;
18773
		if (config.footer && data.footer) {
106895
	},
18774
			addHeader(data.footerStructure);
18775
		}
18776
106896
18777
		// Below the table
106897
	/**
18778
		if (exportInfo.messageBottom) {
106898
	 * Update the cells to show the correct control class / button
18779
			addRow([exportInfo.messageBottom], rowPos);
106899
	 * @private
18780
			_excelMergeCells(rels, rowPos, 0, 1, data.header.length);
106900
	 */
18781
		}
106901
	_controlClass: function () {
106902
		if (this.c.details.type === 'inline') {
106903
			var dt = this.s.dt;
106904
			var columnsVis = this.s.current;
106905
			var firstVisible = $.inArray(true, columnsVis);
18782
106906
18783
		// Set column widths
106907
			// Remove from any cells which shouldn't have it
18784
		var cols = _createNode(rels, 'cols');
106908
			dt.cells(
18785
		$('worksheet', rels).prepend(cols);
106909
				null,
106910
				function (idx) {
106911
					return idx !== firstVisible;
106912
				},
106913
				{ page: 'current' }
106914
			)
106915
				.nodes()
106916
				.to$()
106917
				.filter('.dtr-control')
106918
				.removeClass('dtr-control');
18786
106919
18787
		for (var i = 0, ien = data.header.length; i < ien; i++) {
106920
			if (firstVisible >= 0) {
18788
			cols.appendChild(
106921
				dt.cells(null, firstVisible, { page: 'current' })
18789
				_createNode(rels, 'col', {
106922
					.nodes()
18790
					attr: {
106923
					.to$()
18791
						min: i + 1,
106924
					.addClass('dtr-control');
18792
						max: i + 1,
106925
			}
18793
						width: _excelColWidth(data, i),
18794
						customWidth: 1
18795
					}
18796
				})
18797
			);
18798
		}
106926
		}
18799
106927
18800
		// Workbook modifications
106928
		this._tabIndexes();
18801
		var workbook = xlsx.xl['workbook.xml'];
106929
	},
18802
106930
18803
		$('sheets sheet', workbook).attr('name', _sheetname(config));
106931
	/**
106932
	 * Show the details for the child row
106933
	 *
106934
	 * @param  {DataTables.Api} row    API instance for the row
106935
	 * @param  {boolean}        update Update flag
106936
	 * @private
106937
	 */
106938
	_detailsDisplay: function (row, update) {
106939
		var that = this;
106940
		var dt = this.s.dt;
106941
		var details = this.c.details;
106942
		var event = function (res) {
106943
			$(row.node()).toggleClass('dtr-expanded', res !== false);
106944
			$(dt.table().node()).triggerHandler('responsive-display.dt', [
106945
				dt,
106946
				row,
106947
				res,
106948
				update
106949
			]);
106950
		};
18804
106951
18805
		// Auto filter for columns
106952
		if (details && details.type !== false) {
18806
		if (config.autoFilter) {
106953
			var renderer =
18807
			$('mergeCells', rels).before(
106954
				typeof details.renderer === 'string'
18808
				_createNode(rels, 'autoFilter', {
106955
					? Responsive.renderer[details.renderer]()
18809
					attr: {
106956
					: details.renderer;
18810
						ref:
18811
							'A' +
18812
							dataStartRow +
18813
							':' +
18814
							createCellPos(data.header.length - 1) +
18815
							dataEndRow
18816
					}
18817
				})
18818
			);
18819
106957
18820
			$('definedNames', workbook).append(
106958
			var res = details.display(
18821
				_createNode(workbook, 'definedName', {
106959
				row,
18822
					attr: {
106960
				update,
18823
						name: '_xlnm._FilterDatabase',
106961
				function () {
18824
						localSheetId: '0',
106962
					return renderer.call(
18825
						hidden: 1
106963
						that,
18826
					},
106964
						dt,
18827
					text:
106965
						row[0][0],
18828
						'\'' +
106966
						that._detailsObj(row[0])
18829
						_sheetname(config).replace(/'/g, '\'\'') +
106967
					);
18830
						'\'!$A$' +
106968
				},
18831
						dataStartRow +
106969
				function () {
18832
						':$' +
106970
					event(false);
18833
						createCellPos(data.header.length - 1) +
106971
				}
18834
						'$' +
18835
						dataEndRow
18836
				})
18837
			);
106972
			);
18838
		}
18839
106973
18840
		// Let the developer customise the document if they want to
106974
			if (typeof res === 'boolean') {
18841
		if (config.customize) {
106975
				event(res);
18842
			config.customize(xlsx, config, dt);
106976
			}
18843
		}
106977
		}
106978
	},
18844
106979
18845
		// Excel doesn't like an empty mergeCells tag
106980
	/**
18846
		if ($('mergeCells', rels).children().length === 0) {
106981
	 * Initialisation for the details handler
18847
			$('mergeCells', rels).remove();
106982
	 *
18848
		}
106983
	 * @private
106984
	 */
106985
	_detailsInit: function () {
106986
		var that = this;
106987
		var dt = this.s.dt;
106988
		var details = this.c.details;
18849
106989
18850
		var jszip = _jsZip();
106990
		// The inline type always uses the first child as the target
18851
		var zip = new jszip();
106991
		if (details.type === 'inline') {
18852
		var zipConfig = {
106992
			details.target = 'td.dtr-control, th.dtr-control';
18853
			compression: 'DEFLATE',
106993
		}
18854
			type: 'blob',
18855
			mimeType:
18856
				'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
18857
		};
18858
106994
18859
		_addToZip(zip, xlsx);
106995
		$(dt.table().body()).on('keyup.dtr', 'td, th', function (e) {
106996
			let activeNodeName = document.activeElement.nodeName.toLowerCase();
18860
106997
18861
		// Modern Excel has a 218 character limit on the file name + path of the file (why!?)
106998
			if (
18862
		// https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
106999
				e.keyCode === 13 &&
18863
		// So we truncate to allow for this.
107000
				$(this).data('dtr-keyboard') &&
18864
		var filename = exportInfo.filename;
107001
				(activeNodeName === 'td' || activeNodeName === 'th')
107002
			) {
107003
				$(this).click();
107004
			}
107005
		});
18865
107006
18866
		if (filename > 175) {
107007
		// type.target can be a string jQuery selector or a column index
18867
			filename = filename.substr(0, 175);
107008
		var target = details.target;
18868
		}
107009
		var selector = typeof target === 'string' ? target : 'td, th';
18869
107010
18870
		// Let the developer customize the final zip file if they want to before it is generated and sent to the browser
107011
		if (target !== undefined || target !== null) {
18871
		if (config.customizeZip) {
107012
			// Click handler to show / hide the details rows when they are available
18872
			config.customizeZip(zip, data, filename);
107013
			$(dt.table().body()).on(
18873
		}
107014
				'click.dtr mousedown.dtr mouseup.dtr',
107015
				selector,
107016
				function (e) {
107017
					// If the table is not collapsed (i.e. there is no hidden columns)
107018
					// then take no action
107019
					if (!$(dt.table().node()).hasClass('collapsed')) {
107020
						return;
107021
					}
18874
107022
107023
					// Check that the row is actually a DataTable's controlled node
107024
					if (
107025
						$.inArray(
107026
							$(this).closest('tr').get(0),
107027
							dt.rows().nodes().toArray()
107028
						) === -1
107029
					) {
107030
						return;
107031
					}
18875
107032
18876
		if (zip.generateAsync) {
107033
					// For column index, we determine if we should act or not in the
18877
			// JSZip 3+
107034
					// handler - otherwise it is already okay
18878
			zip.generateAsync(zipConfig).then(function (blob) {
107035
					if (typeof target === 'number') {
18879
				_saveAs(blob, filename);
107036
						var targetIdx =
18880
				cb();
107037
							target < 0
18881
			});
107038
								? dt.columns().eq(0).length + target
18882
		}
107039
								: target;
18883
		else {
18884
			// JSZip 2.5
18885
			_saveAs(zip.generate(zipConfig), filename);
18886
			cb();
18887
		}
18888
	},
18889
107040
18890
	async: 100,
107041
						if (dt.cell(this).index().column !== targetIdx) {
107042
							return;
107043
						}
107044
					}
18891
107045
18892
	filename: '*',
107046
					// $().closest() includes itself in its check
107047
					var row = dt.row($(this).closest('tr'));
18893
107048
18894
	extension: '.xlsx',
107049
					// Check event type to do an action
107050
					if (e.type === 'click') {
107051
						// The renderer is given as a function so the caller can execute it
107052
						// only when they need (i.e. if hiding there is no point is running
107053
						// the renderer)
107054
						that._detailsDisplay(row, false);
107055
					}
107056
					else if (e.type === 'mousedown') {
107057
						// For mouse users, prevent the focus ring from showing
107058
						$(this).css('outline', 'none');
107059
					}
107060
					else if (e.type === 'mouseup') {
107061
						// And then re-allow at the end of the click
107062
						$(this).trigger('blur').css('outline', '');
107063
					}
107064
				}
107065
			);
107066
		}
107067
	},
18895
107068
18896
	exportOptions: {},
107069
	/**
107070
	 * Get the details to pass to a renderer for a row
107071
	 * @param  {int} rowIdx Row index
107072
	 * @private
107073
	 */
107074
	_detailsObj: function (rowIdx) {
107075
		var that = this;
107076
		var dt = this.s.dt;
107077
		var columnApis = [];
107078
		let settings = dt.settings()[0];
18897
107079
18898
	header: true,
107080
		return $.map(this.s.columns, function (col, i) {
107081
			// Never and control columns should not be passed to the renderer
107082
			if (col.never || col.control) {
107083
				return;
107084
			}
18899
107085
18900
	footer: true,
107086
			var dtCol = settings.aoColumns[i];
18901
107087
18902
	title: '*',
107088
			if (!columnApis[i]) {
107089
				columnApis[i] = dt.column(i);
107090
			}
18903
107091
18904
	messageTop: '*',
107092
			return {
107093
				className: dtCol.sClass,
107094
				columnIndex: i,
107095
				data: settings.fastData(rowIdx, i, that.c.orthogonal),
107096
				hidden: columnApis[i].visible() && !that.s.current[i],
107097
				rowIndex: rowIdx,
107098
				title: columnApis[i].title()
107099
			};
107100
		});
107101
	},
18905
107102
18906
	messageBottom: '*',
107103
	/**
107104
	 * Find a breakpoint object from a name
107105
	 *
107106
	 * @param  {string} name Breakpoint name to find
107107
	 * @return {object}      Breakpoint description object
107108
	 * @private
107109
	 */
107110
	_find: function (name) {
107111
		var breakpoints = this.c.breakpoints;
18907
107112
18908
	createEmptyCells: false,
107113
		for (var i = 0, iLen = breakpoints.length; i < iLen; i++) {
107114
			if (breakpoints[i].name === name) {
107115
				return breakpoints[i];
107116
			}
107117
		}
107118
	},
18909
107119
18910
	autoFilter: false,
107120
	/**
107121
	 * Re-create the contents of the child rows as the display has changed in
107122
	 * some way.
107123
	 *
107124
	 * @private
107125
	 */
107126
	_redrawChildren: function () {
107127
		var that = this;
107128
		var dt = this.s.dt;
18911
107129
18912
	sheetName: ''
107130
		dt.rows({ page: 'current' }).iterator('row', function (settings, idx) {
18913
};
107131
			that._detailsDisplay(dt.row(idx), true);
107132
		});
107133
	},
18914
107134
18915
//
107135
	/**
18916
// PDF export - using pdfMake - http://pdfmake.org
107136
	 * Alter the table display for a resized viewport. This involves first
18917
//
107137
	 * determining what breakpoint the window currently is in, getting the
18918
DataTable.ext.buttons.pdfHtml5 = {
107138
	 * column visibilities to apply and then setting them.
18919
	className: 'buttons-pdf buttons-html5',
107139
	 *
107140
	 * @param  {boolean} forceRedraw Force a redraw
107141
	 * @private
107142
	 */
107143
	_resize: function (forceRedraw) {
107144
		var that = this;
107145
		var dt = this.s.dt;
107146
		var width = $(window).innerWidth();
107147
		var breakpoints = this.c.breakpoints;
107148
		var breakpoint = breakpoints[0].name;
107149
		var columns = this.s.columns;
107150
		var i, iLen;
107151
		var oldVis = this.s.current.slice();
18920
107152
18921
	available: function () {
107153
		// Determine what breakpoint we are currently at
18922
		return window.FileReader !== undefined && _pdfMake();
107154
		for (i = breakpoints.length - 1; i >= 0; i--) {
18923
	},
107155
			if (width <= breakpoints[i].width) {
107156
				breakpoint = breakpoints[i].name;
107157
				break;
107158
			}
107159
		}
18924
107160
18925
	text: function (dt) {
107161
		// Show the columns for that break point
18926
		return dt.i18n('buttons.pdf', 'PDF');
107162
		var columnsVis = this._columnsVisibility(breakpoint);
18927
	},
107163
		this.s.current = columnsVis;
18928
107164
18929
	action: function (e, dt, button, config, cb) {
107165
		// Set the class before the column visibility is changed so event
18930
		var data = dt.buttons.exportData(config.exportOptions);
107166
		// listeners know what the state is. Need to determine if there are
18931
		var info = dt.buttons.exportInfo(config);
107167
		// any columns that are not visible but can be shown
18932
		var rows = [];
107168
		var collapsedClass = false;
18933
107169
18934
		if (config.header) {
107170
		for (i = 0, iLen = columns.length; i < iLen; i++) {
18935
			data.headerStructure.forEach(function (row) {
107171
			if (
18936
				rows.push(
107172
				columnsVis[i] === false &&
18937
					row.map(function (cell) {
107173
				!columns[i].never &&
18938
						return cell
107174
				!columns[i].control &&
18939
							? {
107175
				!dt.column(i).visible() === false
18940
									text: cell.title,
107176
			) {
18941
									colSpan: cell.colspan,
107177
				collapsedClass = true;
18942
									rowSpan: cell.rowspan,
107178
				break;
18943
									style: 'tableHeader'
107179
			}
18944
							}
18945
							: {};
18946
					})
18947
				);
18948
			});
18949
		}
107180
		}
18950
107181
18951
		for (var i = 0, ien = data.body.length; i < ien; i++) {
107182
		$(dt.table().node()).toggleClass('collapsed', collapsedClass);
18952
			rows.push(
18953
				data.body[i].map(function (d) {
18954
					return {
18955
						text:
18956
							d === null || d === undefined
18957
								? ''
18958
								: typeof d === 'string'
18959
								? d
18960
								: d.toString()
18961
					};
18962
				})
18963
			);
18964
		}
18965
107183
18966
		if (config.footer) {
107184
		var changed = false;
18967
			data.footerStructure.forEach(function (row) {
107185
		var visible = 0;
18968
				rows.push(
107186
		var dtSettings = dt.settings()[0];
18969
					row.map(function (cell) {
107187
		var colGroup = $(dt.table().node()).children('colgroup');
18970
						return cell
107188
		var colEls = dtSettings.aoColumns.map(function (col) {
18971
							? {
107189
			return col.colEl;
18972
									text: cell.title,
107190
		});
18973
									colSpan: cell.colspan,
18974
									rowSpan: cell.rowspan,
18975
									style: 'tableFooter'
18976
							}
18977
							: {};
18978
					})
18979
				);
18980
			});
18981
		}
18982
107191
18983
		var doc = {
107192
		dt.columns()
18984
			pageSize: config.pageSize,
107193
			.eq(0)
18985
			pageOrientation: config.orientation,
107194
			.each(function (colIdx, i) {
18986
			content: [
107195
				// Do nothing on DataTables' hidden column - DT removes it from the table
18987
				{
107196
				// so we need to slide back
18988
					style: 'table',
107197
				if (! dt.column(colIdx).visible()) {
18989
					table: {
107198
					return;
18990
						headerRows: config.header
107199
				}
18991
							? data.headerStructure.length
107200
18992
							: 0,
107201
				if (columnsVis[i] === true) {
18993
						footerRows: config.footer // Used for styling, doesn't do anything in pdfmake
107202
					visible++;
18994
							? data.footerStructure.length
18995
							: 0,
18996
						body: rows
18997
					},
18998
					layout: {
18999
						hLineWidth: function (i, node) {
19000
							if (i === 0 || i === node.table.body.length) {
19001
								return 0;
19002
							}
19003
							return 0.5;
19004
						},
19005
						vLineWidth: function () {
19006
							return 0;
19007
						},
19008
						hLineColor: function (i, node) {
19009
							return i === node.table.headerRows ||
19010
								i ===
19011
									node.table.body.length -
19012
										node.table.footerRows
19013
								? '#333'
19014
								: '#ddd';
19015
						},
19016
						fillColor: function (rowIndex) {
19017
							if (rowIndex < data.headerStructure.length) {
19018
								return '#fff';
19019
							}
19020
							return rowIndex % 2 === 0 ? '#f3f3f3' : null;
19021
						},
19022
						paddingTop: function () {
19023
							return 5;
19024
						},
19025
						paddingBottom: function () {
19026
							return 5;
19027
						}
19028
					}
19029
				}
107203
				}
19030
			],
19031
			styles: {
19032
				tableHeader: {
19033
					bold: true,
19034
					fontSize: 11,
19035
					alignment: 'center'
19036
				},
19037
				tableFooter: {
19038
					bold: true,
19039
					fontSize: 11,
19040
					alignment: 'center'
19041
				},
19042
				table: {
19043
					margin: [0, 5, 0, 5]
19044
				},
19045
				title: {
19046
					alignment: 'center',
19047
					fontSize: 13
19048
				},
19049
				message: {}
19050
			},
19051
			defaultStyle: {
19052
				fontSize: 10
19053
			}
19054
		};
19055
107204
19056
		if (info.messageTop) {
107205
				if (forceRedraw || columnsVis[i] !== oldVis[i]) {
19057
			doc.content.unshift({
107206
					changed = true;
19058
				text: info.messageTop,
107207
					that._setColumnVis(colIdx, columnsVis[i]);
19059
				style: 'message',
107208
				}
19060
				margin: [0, 0, 0, 12]
107209
107210
				// DataTables 2 uses `col` to define the width for a column
107211
				// and this needs to run each time, as DataTables will change
107212
				// the column width. We may need to reattach if we've removed
107213
				// an element previously.
107214
				if (! columnsVis[i]) {
107215
					colEls[i].detach();
107216
				}
107217
				else {
107218
					that._colGroupAttach(colGroup, colEls, i);
107219
				}
19061
			});
107220
			});
107221
107222
		if (changed) {
107223
			dt.columns.adjust();
107224
107225
			this._redrawChildren();
107226
107227
			// Inform listeners of the change
107228
			$(dt.table().node()).trigger('responsive-resize.dt', [
107229
				dt,
107230
				this._responsiveOnlyHidden()
107231
			]);
107232
107233
			// If no records, update the "No records" display element
107234
			if (dt.page.info().recordsDisplay === 0) {
107235
				$('td', dt.table().body()).eq(0).attr('colspan', visible);
107236
			}
19062
		}
107237
		}
19063
107238
19064
		if (info.messageBottom) {
107239
		that._controlClass();
19065
			doc.content.push({
107240
	},
19066
				text: info.messageBottom,
107241
19067
				style: 'message',
107242
	/**
19068
				margin: [0, 0, 0, 12]
107243
	 * Determine the width of each column in the table so the auto column hiding
107244
	 * has that information to work with. This method is never going to be 100%
107245
	 * perfect since column widths can change slightly per page, but without
107246
	 * seriously compromising performance this is quite effective.
107247
	 *
107248
	 * @private
107249
	 */
107250
	_resizeAuto: function () {
107251
		var dt = this.s.dt;
107252
		var columns = this.s.columns;
107253
		var that = this;
107254
		var visibleColumns = dt
107255
			.columns()
107256
			.indexes()
107257
			.filter(function (idx) {
107258
				return dt.column(idx).visible();
19069
			});
107259
			});
107260
107261
		// Are we allowed to do auto sizing?
107262
		if (!this.c.auto) {
107263
			return;
19070
		}
107264
		}
19071
107265
19072
		if (info.title) {
107266
		// Are there any columns that actually need auto-sizing, or do they all
19073
			doc.content.unshift({
107267
		// have classes defined
19074
				text: info.title,
107268
		if (
19075
				style: 'title',
107269
			$.inArray(
19076
				margin: [0, 0, 0, 12]
107270
				true,
19077
			});
107271
				$.map(columns, function (c) {
107272
					return c.auto;
107273
				})
107274
			) === -1
107275
		) {
107276
			return;
19078
		}
107277
		}
19079
107278
19080
		if (config.customize) {
107279
		// Clone the table with the current data in it
19081
			config.customize(doc, config, dt);
107280
		var clonedTable = dt.table().node().cloneNode(false);
107281
		var clonedHeader = $(dt.table().header().cloneNode(false)).appendTo(
107282
			clonedTable
107283
		);
107284
		var clonedFooter = $(dt.table().footer().cloneNode(false)).appendTo(
107285
			clonedTable
107286
		);
107287
		var clonedBody = $(dt.table().body())
107288
			.clone(false, false)
107289
			.empty()
107290
			.appendTo(clonedTable); // use jQuery because of IE8
107291
107292
		clonedTable.style.width = 'auto';
107293
107294
		// Header
107295
		dt.table()
107296
			.header.structure(visibleColumns)
107297
			.forEach((row) => {
107298
				var cells = row
107299
					.filter(function (el) {
107300
						return el ? true : false;
107301
					})
107302
					.map(function (el) {
107303
						return $(el.cell)
107304
							.clone(false)
107305
							.css('display', 'table-cell')
107306
							.css('width', 'auto')
107307
							.css('min-width', 0);
107308
					});
107309
107310
				$('<tr/>').append(cells).appendTo(clonedHeader);
107311
			});
107312
107313
		// Always need an empty row that we can read widths from
107314
		var emptyRow = $('<tr/>').appendTo(clonedBody);
107315
107316
		for (var i = 0; i < visibleColumns.count(); i++) {
107317
			emptyRow.append('<td/>');
19082
		}
107318
		}
19083
107319
19084
		var pdf = _pdfMake().createPdf(doc);
107320
		// Body rows
107321
		if (this.c.details.renderer._responsiveMovesNodes) {
107322
			// Slow but it allows for moving elements around the document
107323
			dt.rows({ page: 'current' }).every(function (rowIdx) {
107324
				var node = this.node();
19085
107325
19086
		if (config.download === 'open' && !_isDuffSafari()) {
107326
				if (! node) {
19087
			pdf.open();
107327
					return;
107328
				}
107329
107330
				// We clone the table's rows and cells to create the sizing table
107331
				var tr = node.cloneNode(false);
107332
107333
				dt.cells(rowIdx, visibleColumns).every(function (rowIdx2, colIdx) {
107334
					// If nodes have been moved out (listHiddenNodes), we need to
107335
					// clone from the store
107336
					var store = that.s.childNodeStore[rowIdx + '-' + colIdx];
107337
107338
					if (store) {
107339
						$(this.node().cloneNode(false))
107340
							.append($(store).clone())
107341
							.appendTo(tr);
107342
					}
107343
					else {
107344
						$(this.node()).clone(false).appendTo(tr);
107345
					}
107346
				});
107347
107348
				clonedBody.append(tr);
107349
			});
19088
		}
107350
		}
19089
		else {
107351
		else {
19090
			pdf.download(info.filename);
107352
			// This is much faster, but it doesn't account for moving nodes around
107353
			$(clonedBody)
107354
				.append( $(dt.rows( { page: 'current' } ).nodes()).clone( false ) )
107355
				.find( 'th, td' ).css( 'display', '' );
19091
		}
107356
		}
19092
107357
19093
		cb();
107358
		// Any cells which were hidden by Responsive in the host table, need to
19094
	},
107359
		// be visible here for the calculations
107360
		clonedBody.find('th, td').css('display', '');
19095
107361
19096
	async: 100,
107362
		// Footer
107363
		dt.table()
107364
			.footer.structure(visibleColumns)
107365
			.forEach((row) => {
107366
				var cells = row
107367
					.filter(function (el) {
107368
						return el ? true : false;
107369
					})
107370
					.map(function (el) {
107371
						return $(el.cell)
107372
							.clone(false)
107373
							.css('display', 'table-cell')
107374
							.css('width', 'auto')
107375
							.css('min-width', 0);
107376
					});
19097
107377
19098
	title: '*',
107378
				$('<tr/>').append(cells).appendTo(clonedFooter);
107379
			});
19099
107380
19100
	filename: '*',
107381
		// In the inline case extra padding is applied to the first column to
107382
		// give space for the show / hide icon. We need to use this in the
107383
		// calculation
107384
		if (this.c.details.type === 'inline') {
107385
			$(clonedTable).addClass('dtr-inline collapsed');
107386
		}
19101
107387
19102
	extension: '.pdf',
107388
		// It is unsafe to insert elements with the same name into the DOM
107389
		// multiple times. For example, cloning and inserting a checked radio
107390
		// clears the checked state of the original radio.
107391
		$(clonedTable).find('[name]').removeAttr('name');
19103
107392
19104
	exportOptions: {},
107393
		// A position absolute table would take the table out of the flow of
107394
		// our container element, bypassing the height and width (Scroller)
107395
		$(clonedTable).css('position', 'relative');
19105
107396
19106
	orientation: 'portrait',
107397
		var inserted = $('<div/>')
107398
			.css({
107399
				width: 1,
107400
				height: 1,
107401
				overflow: 'hidden',
107402
				clear: 'both'
107403
			})
107404
			.append(clonedTable);
19107
107405
19108
	// This isn't perfect, but it is close
107406
		inserted.insertBefore(dt.table().node());
19109
	pageSize:
19110
		navigator.language === 'en-US' || navigator.language === 'en-CA'
19111
			? 'LETTER'
19112
			: 'A4',
19113
107407
19114
	header: true,
107408
		// The cloned table now contains the smallest that each column can be
107409
		emptyRow.children().each(function (i) {
107410
			var idx = dt.column.index('fromVisible', i);
107411
			columns[idx].minWidth = this.offsetWidth || 0;
107412
		});
19115
107413
19116
	footer: true,
107414
		inserted.remove();
107415
	},
19117
107416
19118
	messageTop: '*',
107417
	/**
107418
	 * Get the state of the current hidden columns - controlled by Responsive only
107419
	 */
107420
	_responsiveOnlyHidden: function () {
107421
		var dt = this.s.dt;
19119
107422
19120
	messageBottom: '*',
107423
		return $.map(this.s.current, function (v, i) {
107424
			// If the column is hidden by DataTables then it can't be hidden by
107425
			// Responsive!
107426
			if (dt.column(i).visible() === false) {
107427
				return true;
107428
			}
107429
			return v;
107430
		});
107431
	},
107432
107433
	/**
107434
	 * Set a column's visibility.
107435
	 *
107436
	 * We don't use DataTables' column visibility controls in order to ensure
107437
	 * that column visibility can Responsive can no-exist. Since only IE8+ is
107438
	 * supported (and all evergreen browsers of course) the control of the
107439
	 * display attribute works well.
107440
	 *
107441
	 * @param {integer} col      Column index
107442
	 * @param {boolean} showHide Show or hide (true or false)
107443
	 * @private
107444
	 */
107445
	_setColumnVis: function (col, showHide) {
107446
		var that = this;
107447
		var dt = this.s.dt;
107448
		var display = showHide ? '' : 'none'; // empty string will remove the attr
19121
107449
19122
	customize: null,
107450
		this._setHeaderVis(col, showHide, dt.table().header.structure());
107451
		this._setHeaderVis(col, showHide, dt.table().footer.structure());
19123
107452
19124
	download: 'download'
107453
		dt.column(col)
19125
};
107454
			.nodes()
107455
			.to$()
107456
			.css('display', display)
107457
			.toggleClass('dtr-hidden', !showHide);
19126
107458
107459
		// We need to set a variable that DT can use when selecting visible
107460
		// columns without needing to query the DOM
107461
		dt.settings()[0].aoColumns[col].responsiveVisible = showHide;
19127
107462
19128
return DataTable;
107463
		// If the are child nodes stored, we might need to reinsert them
19129
}));
107464
		if (!$.isEmptyObject(this.s.childNodeStore)) {
107465
			dt.cells(null, col)
107466
				.indexes()
107467
				.each(function (idx) {
107468
					that._childNodesRestore(dt, idx.row, idx.column);
107469
				});
107470
		}
107471
	},
19130
107472
107473
	/**
107474
	 * Set a column's visibility, taking into account multiple rows
107475
	 * in a header / footer and colspan attributes
107476
	 * @param {*} col
107477
	 * @param {*} showHide
107478
	 * @param {*} structure
107479
	 */
107480
	_setHeaderVis: function (col, showHide, structure) {
107481
		var that = this;
107482
		var display = showHide ? '' : 'none';
19131
107483
19132
/*!
107484
		// We use the `null`s in the structure array to indicate that a cell
19133
 * Print button for Buttons and DataTables.
107485
		// should expand over that one if there is a colspan, but it might
19134
 * © SpryMedia Ltd - datatables.net/license
107486
		// also have been filled by a rowspan, so we need to expand the
19135
 */
107487
		// rowspan cells down through the structure
107488
		structure.forEach(function (row, rowIdx) {
107489
			for (var col = 0; col < row.length; col++) {
107490
				if (row[col] && row[col].rowspan > 1) {
107491
					var span = row[col].rowspan;
19136
107492
19137
(function( factory ){
107493
					for (var i=1 ; i<span ; i++) {
19138
	if ( typeof define === 'function' && define.amd ) {
107494
						structure[rowIdx + i][col] = {};
19139
		// AMD
107495
					}
19140
		define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
107496
				}
19141
			return factory( $, window, document );
19142
		} );
19143
	}
19144
	else if ( typeof exports === 'object' ) {
19145
		// CommonJS
19146
		var jq = require('jquery');
19147
		var cjsRequires = function (root, $) {
19148
			if ( ! $.fn.dataTable ) {
19149
				require('datatables.net')(root, $);
19150
			}
107497
			}
107498
		});
19151
107499
19152
			if ( ! $.fn.dataTable.Buttons ) {
107500
		structure.forEach(function (row) {
19153
				require('datatables.net-buttons')(root, $);
107501
			if (row[col] && row[col].cell) {
107502
				$(row[col].cell)
107503
					.css('display', display)
107504
					.toggleClass('dtr-hidden', !showHide);
19154
			}
107505
			}
19155
		};
107506
			else {
107507
				// In a colspan - need to rewind calc the new span since
107508
				// display:none elements do not count as being spanned over
107509
				var search = col;
19156
107510
19157
		if (typeof window === 'undefined') {
107511
				while (search >= 0) {
19158
			module.exports = function (root, $) {
107512
					if (row[search] && row[search].cell) {
19159
				if ( ! root ) {
107513
						row[search].cell.colSpan = that._colspan(row, search);
19160
					// CommonJS environments without a window global must pass a
107514
						break;
19161
					// root. This will give an error otherwise
107515
					}
19162
					root = window;
19163
				}
19164
107516
19165
				if ( ! $ ) {
107517
					search--;
19166
					$ = jq( root );
19167
				}
107518
				}
107519
			}
107520
		});
107521
	},
19168
107522
19169
				cjsRequires( root, $ );
107523
	/**
19170
				return factory( $, root, root.document );
107524
	 * How many columns should this cell span
19171
			};
107525
	 *
19172
		}
107526
	 * @param {*} row Header structure row
19173
		else {
107527
	 * @param {*} idx The column index of the cell to span
19174
			cjsRequires( window, jq );
107528
	 */
19175
			module.exports = factory( jq, window, window.document );
107529
	_colspan: function (row, idx) {
19176
		}
107530
		var colspan = 1;
19177
	}
19178
	else {
19179
		// Browser
19180
		factory( jQuery, window, document );
19181
	}
19182
}(function( $, window, document ) {
19183
'use strict';
19184
var DataTable = $.fn.dataTable;
19185
19186
19187
19188
var _link = document.createElement('a');
19189
19190
/**
19191
 * Convert a URL from a relative to an absolute address so it will work
19192
 * correctly in the popup window which has no base URL.
19193
 *
19194
 * @param  {string} href URL
19195
 */
19196
var _relToAbs = function (href) {
19197
	// Assign to a link on the original page so the browser will do all the
19198
	// hard work of figuring out where the file actually is
19199
	_link.href = href;
19200
	var linkHost = _link.host;
19201
19202
	// IE doesn't have a trailing slash on the host
19203
	// Chrome has it on the pathname
19204
	if (linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
19205
		linkHost += '/';
19206
	}
19207
19208
	return _link.protocol + '//' + linkHost + _link.pathname + _link.search;
19209
};
19210
107531
19211
DataTable.ext.buttons.print = {
107532
		for (var col = idx + 1; col < row.length; col++) {
19212
	className: 'buttons-print',
107533
			if (row[col] === null && this.s.current[col]) {
107534
				// colspan and not hidden by Responsive
107535
				colspan++;
107536
			}
107537
			else if (row[col]) {
107538
				// Got the next cell, jump out
107539
				break;
107540
			}
107541
		}
19213
107542
19214
	text: function (dt) {
107543
		return colspan;
19215
		return dt.i18n('buttons.print', 'Print');
19216
	},
107544
	},
19217
107545
19218
	action: function (e, dt, button, config, cb) {
107546
	/**
19219
		var data = dt.buttons.exportData(
107547
	 * Update the cell tab indexes for keyboard accessibility. This is called on
19220
			$.extend({ decodeEntities: false }, config.exportOptions) // XSS protection
107548
	 * every table draw - that is potentially inefficient, but also the least
19221
		);
107549
	 * complex option given that column visibility can change on the fly. Its a
19222
		var exportInfo = dt.buttons.exportInfo(config);
107550
	 * shame user-focus was removed from CSS 3 UI, as it would have solved this
19223
107551
	 * issue with a single CSS statement.
19224
		// Get the classes for the columns from the header cells
107552
	 *
19225
		var columnClasses = dt
107553
	 * @private
19226
			.columns(config.exportOptions.columns)
107554
	 */
19227
			.nodes()
107555
	_tabIndexes: function () {
19228
			.map(function (n) {
107556
		var dt = this.s.dt;
19229
				return n.className;
107557
		var cells = dt.cells({ page: 'current' }).nodes().to$();
19230
			})
107558
		var ctx = dt.settings()[0];
19231
			.toArray();
107559
		var target = this.c.details.target;
19232
19233
		var addRow = function (d, tag) {
19234
			var str = '<tr>';
19235
107560
19236
			for (var i = 0, ien = d.length; i < ien; i++) {
107561
		cells.filter('[data-dtr-keyboard]').removeData('[data-dtr-keyboard]');
19237
				// null and undefined aren't useful in the print output
19238
				var dataOut = d[i] === null || d[i] === undefined ? '' : d[i];
19239
				var classAttr = columnClasses[i] ? 'class="' + columnClasses[i] + '"' : '';
19240
107562
19241
				str += '<' + tag + ' ' + classAttr + '>' + dataOut + '</' + tag + '>';
107563
		if (typeof target === 'number') {
107564
			dt.cells(null, target, { page: 'current' })
107565
				.nodes()
107566
				.to$()
107567
				.attr('tabIndex', ctx.iTabIndex)
107568
				.data('dtr-keyboard', 1);
107569
		}
107570
		else {
107571
			// This is a bit of a hack - we need to limit the selected nodes to just
107572
			// those of this table
107573
			if (target === 'td:first-child, th:first-child') {
107574
				target = '>td:first-child, >th:first-child';
19242
			}
107575
			}
19243
107576
19244
			return str + '</tr>';
107577
			var rows = dt.rows({ page: 'current' }).nodes();
19245
		};
107578
			var nodes = target === 'tr'
107579
				? $(rows)
107580
				: $(target, rows);
19246
107581
19247
		// Construct a table for printing
107582
			nodes
19248
		var html = '<table class="' + dt.table().node().className + '">';
107583
				.attr('tabIndex', ctx.iTabIndex)
107584
				.data('dtr-keyboard', 1);
107585
		}
107586
	}
107587
});
19249
107588
19250
		if (config.header) {
107589
/**
19251
			var headerRows = data.headerStructure.map(function (row) {
107590
 * List of default breakpoints. Each item in the array is an object with two
19252
				return (
107591
 * properties:
19253
					'<tr>' +
107592
 *
19254
					row
107593
 * * `name` - the breakpoint name.
19255
						.map(function (cell) {
107594
 * * `width` - the breakpoint width
19256
							return cell
107595
 *
19257
								? '<th colspan="' +
107596
 * @name Responsive.breakpoints
19258
										cell.colspan +
107597
 * @static
19259
										'" rowspan="' +
107598
 */
19260
										cell.rowspan +
107599
Responsive.breakpoints = [
19261
										'">' +
107600
	{ name: 'desktop', width: Infinity },
19262
										cell.title +
107601
	{ name: 'tablet-l', width: 1024 },
19263
										'</th>'
107602
	{ name: 'tablet-p', width: 768 },
19264
								: '';
107603
	{ name: 'mobile-l', width: 480 },
19265
						})
107604
	{ name: 'mobile-p', width: 320 }
19266
						.join('') +
107605
];
19267
					'</tr>'
19268
				);
19269
			});
19270
107606
19271
			html += '<thead>' + headerRows.join('') + '</thead>';
107607
/**
19272
		}
107608
 * Display methods - functions which define how the hidden data should be shown
107609
 * in the table.
107610
 *
107611
 * @namespace
107612
 * @name Responsive.defaults
107613
 * @static
107614
 */
107615
Responsive.display = {
107616
	childRow: function (row, update, render) {
107617
		var rowNode = $(row.node());
19273
107618
19274
		html += '<tbody>';
107619
		if (update) {
19275
		for (var i = 0, ien = data.body.length; i < ien; i++) {
107620
			if (rowNode.hasClass('dtr-expanded')) {
19276
			html += addRow(data.body[i], 'td');
107621
				row.child(render(), 'child').show();
107622
107623
				return true;
107624
			}
19277
		}
107625
		}
19278
		html += '</tbody>';
107626
		else {
107627
			if (!rowNode.hasClass('dtr-expanded')) {
107628
				var rendered = render();
19279
107629
19280
		if (config.footer && data.footer) {
107630
				if (rendered === false) {
19281
			var footerRows = data.footerStructure.map(function (row) {
107631
					return false;
19282
				return (
107632
				}
19283
					'<tr>' +
19284
					row
19285
						.map(function (cell) {
19286
							return cell
19287
								? '<th colspan="' +
19288
										cell.colspan +
19289
										'" rowspan="' +
19290
										cell.rowspan +
19291
										'">' +
19292
										cell.title +
19293
										'</th>'
19294
								: '';
19295
						})
19296
						.join('') +
19297
					'</tr>'
19298
				);
19299
			});
19300
107633
19301
			html += '<tfoot>' + footerRows.join('') + '</tfoot>';
107634
				row.child(rendered, 'child').show();
107635
				return true;
107636
			}
107637
			else {
107638
				row.child(false);
107639
107640
				return false;
107641
			}
19302
		}
107642
		}
19303
		html += '</table>';
107643
	},
19304
107644
19305
		// Open a new window for the printable table
107645
	childRowImmediate: function (row, update, render) {
19306
		var win = window.open('', '');
107646
		var rowNode = $(row.node());
19307
107647
19308
		if (!win) {
107648
		if (
19309
			dt.buttons.info(
107649
			(!update && rowNode.hasClass('dtr-expanded')) ||
19310
				dt.i18n('buttons.printErrorTitle', 'Unable to open print view'),
107650
			!row.responsive.hasHidden()
19311
				dt.i18n(
107651
		) {
19312
					'buttons.printErrorMsg',
107652
			// User interaction and the row is show, or nothing to show
19313
					'Please allow popups in your browser for this site to be able to view the print view.'
107653
			row.child(false);
19314
				),
19315
				5000
19316
			);
19317
107654
19318
			return;
107655
			return false;
19319
		}
107656
		}
107657
		else {
107658
			// Display
107659
			var rendered = render();
19320
107660
19321
		win.document.close();
107661
			if (rendered === false) {
107662
				return false;
107663
			}
19322
107664
19323
		// Inject the title and also a copy of the style and link tags from this
107665
			row.child(rendered, 'child').show();
19324
		// document so the table can retain its base styling. This avoids
19325
		// issues with Content Security Policy (CSP) and is compatible with modern browsers.
19326
		win.document.title = exportInfo.title;
19327
107666
19328
		$('style, link[rel="stylesheet"]').each(function () {
107667
			return true;
19329
			let node = this.cloneNode(true);
107668
		}
107669
	},
19330
107670
19331
			if (node.tagName.toLowerCase() === 'link') {
107671
	// This is a wrapper so the modal options for Bootstrap and jQuery UI can
19332
				node.href = _relToAbs(node.href);
107672
	// have options passed into them. This specific one doesn't need to be a
107673
	// function but it is for consistency in the `modal` name
107674
	modal: function (options) {
107675
		return function (row, update, render, closeCallback) {
107676
			var modal;
107677
			var rendered = render();
107678
107679
			if (rendered === false) {
107680
				return false;
19333
			}
107681
			}
19334
107682
19335
			win.document.head.appendChild(node);
107683
			if (!update) {
19336
		});
107684
				// Show a modal
107685
				var close = function () {
107686
					modal.remove(); // will tidy events for us
107687
					$(document).off('keypress.dtr');
107688
					$(row.node()).removeClass('dtr-expanded');
19337
107689
19338
		// Add any custom scripts (for example for paged.js)
107690
					closeCallback();
19339
		if (config.customScripts) {
107691
				};
19340
			config.customScripts.forEach(function (script) {
19341
				var tag = win.document.createElement('script');
19342
				tag.src = script;
19343
				win.document.getElementsByTagName('head')[0].appendChild(tag);
19344
			});
19345
		}
19346
107692
19347
		// Inject the table and other surrounding information
107693
				modal = $('<div class="dtr-modal"/>')
19348
		win.document.body.innerHTML =
107694
					.append(
19349
			'<h1>' +
107695
						$('<div class="dtr-modal-display"/>')
19350
			exportInfo.title +
107696
							.append(
19351
			'</h1>' +
107697
								$('<div class="dtr-modal-content"/>')
19352
			'<div>' +
107698
									.data('dtr-row-idx', row.index())
19353
			(exportInfo.messageTop || '') +
107699
									.append(rendered)
19354
			'</div>' +
107700
							)
19355
			html +
107701
							.append(
19356
			'<div>' +
107702
								$(
19357
			(exportInfo.messageBottom || '') +
107703
									'<div class="dtr-modal-close">&times;</div>'
19358
			'</div>';
107704
								).click(function () {
107705
									close();
107706
								})
107707
							)
107708
					)
107709
					.append(
107710
						$('<div class="dtr-modal-background"/>').click(
107711
							function () {
107712
								close();
107713
							}
107714
						)
107715
					)
107716
					.appendTo('body');
19359
107717
19360
		$(win.document.body).addClass('dt-print-view');
107718
				$(row.node()).addClass('dtr-expanded');
19361
107719
19362
		$('img', win.document.body).each(function (i, img) {
107720
				$(document).on('keyup.dtr', function (e) {
19363
			img.setAttribute('src', _relToAbs(img.getAttribute('src')));
107721
					if (e.keyCode === 27) {
19364
		});
107722
						e.stopPropagation();
19365
107723
19366
		if (config.customize) {
107724
						close();
19367
			config.customize(win, config, dt);
107725
					}
19368
		}
107726
				});
107727
			}
107728
			else {
107729
				modal = $('div.dtr-modal-content');
19369
107730
19370
		// Allow stylesheets time to load
107731
				if (modal.length && row.index() === modal.data('dtr-row-idx')) {
19371
		var autoPrint = function () {
107732
					modal.empty().append(rendered);
19372
			if (config.autoPrint) {
107733
				}
19373
				win.print(); // blocking - so close will not
107734
				else {
19374
				win.close(); // execute until this is done
107735
					// Modal not shown, nothing to update
107736
					return null;
107737
				}
19375
			}
107738
			}
19376
		};
19377
107739
19378
		win.setTimeout(autoPrint, 1000);
107740
			if (options && options.header) {
107741
				$('div.dtr-modal-content').prepend(
107742
					'<h2>' + options.header(row) + '</h2>'
107743
				);
107744
			}
19379
107745
19380
		cb();
107746
			return true;
19381
	},
107747
		};
107748
	}
107749
};
19382
107750
19383
	async: 100,
107751
/**
107752
 * Display methods - functions which define how the hidden data should be shown
107753
 * in the table.
107754
 *
107755
 * @namespace
107756
 * @name Responsive.defaults
107757
 * @static
107758
 */
107759
Responsive.renderer = {
107760
	listHiddenNodes: function () {
107761
		var fn = function (api, rowIdx, columns) {
107762
			var that = this;
107763
			var ul = $(
107764
				'<ul data-dtr-index="' + rowIdx + '" class="dtr-details"/>'
107765
			);
107766
			var found = false;
19384
107767
19385
	title: '*',
107768
			$.each(columns, function (i, col) {
107769
				if (col.hidden) {
107770
					var klass = col.className
107771
						? 'class="' + col.className + '"'
107772
						: '';
19386
107773
19387
	messageTop: '*',
107774
					$(
107775
						'<li ' +
107776
							klass +
107777
							' data-dtr-index="' +
107778
							col.columnIndex +
107779
							'" data-dt-row="' +
107780
							col.rowIndex +
107781
							'" data-dt-column="' +
107782
							col.columnIndex +
107783
							'">' +
107784
							'<span class="dtr-title">' +
107785
							col.title +
107786
							'</span> ' +
107787
							'</li>'
107788
					)
107789
						.append(
107790
							$('<span class="dtr-data"/>').append(
107791
								that._childNodes(
107792
									api,
107793
									col.rowIndex,
107794
									col.columnIndex
107795
								)
107796
							)
107797
						) // api.cell( col.rowIndex, col.columnIndex ).node().childNodes ) )
107798
						.appendTo(ul);
19388
107799
19389
	messageBottom: '*',
107800
					found = true;
107801
				}
107802
			});
19390
107803
19391
	exportOptions: {},
107804
			return found ? ul : false;
107805
		};
19392
107806
19393
	header: true,
107807
		fn._responsiveMovesNodes = true;
19394
107808
19395
	footer: true,
107809
		return fn;
107810
	},
19396
107811
19397
	autoPrint: true,
107812
	listHidden: function () {
107813
		return function (api, rowIdx, columns) {
107814
			var data = $.map(columns, function (col) {
107815
				var klass = col.className
107816
					? 'class="' + col.className + '"'
107817
					: '';
19398
107818
19399
	customize: null
107819
				return col.hidden
19400
};
107820
					? '<li ' +
107821
							klass +
107822
							' data-dtr-index="' +
107823
							col.columnIndex +
107824
							'" data-dt-row="' +
107825
							col.rowIndex +
107826
							'" data-dt-column="' +
107827
							col.columnIndex +
107828
							'">' +
107829
							'<span class="dtr-title">' +
107830
							col.title +
107831
							'</span> ' +
107832
							'<span class="dtr-data">' +
107833
							col.data +
107834
							'</span>' +
107835
							'</li>'
107836
					: '';
107837
			}).join('');
19401
107838
107839
			return data
107840
				? $(
107841
						'<ul data-dtr-index="' +
107842
							rowIdx +
107843
							'" class="dtr-details"/>'
107844
				).append(data)
107845
				: false;
107846
		};
107847
	},
19402
107848
19403
return DataTable;
107849
	tableAll: function (options) {
19404
}));
107850
		options = $.extend(
107851
			{
107852
				tableClass: ''
107853
			},
107854
			options
107855
		);
19405
107856
107857
		return function (api, rowIdx, columns) {
107858
			var data = $.map(columns, function (col) {
107859
				var klass = col.className
107860
					? 'class="' + col.className + '"'
107861
					: '';
19406
107862
19407
/*! Responsive 3.0.7
107863
				return (
19408
 * © SpryMedia Ltd - datatables.net/license
107864
					'<tr ' +
19409
 */
107865
					klass +
107866
					' data-dt-row="' +
107867
					col.rowIndex +
107868
					'" data-dt-column="' +
107869
					col.columnIndex +
107870
					'">' +
107871
					'<td>' +
107872
					( '' !== col.title
107873
						? col.title + ':'
107874
						: ''
107875
					) +
107876
					'</td> ' +
107877
					'<td>' +
107878
					col.data +
107879
					'</td>' +
107880
					'</tr>'
107881
				);
107882
			}).join('');
19410
107883
19411
(function( factory ){
107884
			return $(
19412
	if ( typeof define === 'function' && define.amd ) {
107885
				'<table class="' +
19413
		// AMD
107886
					options.tableClass +
19414
		define( ['jquery', 'datatables.net'], function ( $ ) {
107887
					' dtr-details" width="100%"/>'
19415
			return factory( $, window, document );
107888
			).append(data);
19416
		} );
19417
	}
19418
	else if ( typeof exports === 'object' ) {
19419
		// CommonJS
19420
		var jq = require('jquery');
19421
		var cjsRequires = function (root, $) {
19422
			if ( ! $.fn.dataTable ) {
19423
				require('datatables.net')(root, $);
19424
			}
19425
		};
107889
		};
19426
19427
		if (typeof window === 'undefined') {
19428
			module.exports = function (root, $) {
19429
				if ( ! root ) {
19430
					// CommonJS environments without a window global must pass a
19431
					// root. This will give an error otherwise
19432
					root = window;
19433
				}
19434
19435
				if ( ! $ ) {
19436
					$ = jq( root );
19437
				}
19438
19439
				cjsRequires( root, $ );
19440
				return factory( $, root, root.document );
19441
			};
19442
		}
19443
		else {
19444
			cjsRequires( window, jq );
19445
			module.exports = factory( jq, window, window.document );
19446
		}
19447
	}
19448
	else {
19449
		// Browser
19450
		factory( jQuery, window, document );
19451
	}
107890
	}
19452
}(function( $, window, document ) {
107891
};
19453
'use strict';
19454
var DataTable = $.fn.dataTable;
19455
19456
19457
19458
/**
19459
 * @summary     Responsive
19460
 * @description Responsive tables plug-in for DataTables
19461
 * @version     3.0.7
19462
 * @author      SpryMedia Ltd
19463
 * @copyright   SpryMedia Ltd.
19464
 *
19465
 * This source file is free software, available under the following license:
19466
 *   MIT license - http://datatables.net/license/mit
19467
 *
19468
 * This source file is distributed in the hope that it will be useful, but
19469
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19470
 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
19471
 *
19472
 * For details please refer to: http://www.datatables.net
19473
 */
19474
107892
19475
/**
107893
/**
19476
 * Responsive is a plug-in for the DataTables library that makes use of
107894
 * Responsive default settings for initialisation
19477
 * DataTables' ability to change the visibility of columns, changing the
19478
 * visibility of columns so the displayed columns fit into the table container.
19479
 * The end result is that complex tables will be dynamically adjusted to fit
19480
 * into the viewport, be it on a desktop, tablet or mobile browser.
19481
 *
19482
 * Responsive for DataTables has two modes of operation, which can used
19483
 * individually or combined:
19484
 *
19485
 * * Class name based control - columns assigned class names that match the
19486
 *   breakpoint logic can be shown / hidden as required for each breakpoint.
19487
 * * Automatic control - columns are automatically hidden when there is no
19488
 *   room left to display them. Columns removed from the right.
19489
 *
19490
 * In additional to column visibility control, Responsive also has built into
19491
 * options to use DataTables' child row display to show / hide the information
19492
 * from the table that has been hidden. There are also two modes of operation
19493
 * for this child row display:
19494
 *
19495
 * * Inline - when the control element that the user can use to show / hide
19496
 *   child rows is displayed inside the first column of the table.
19497
 * * Column - where a whole column is dedicated to be the show / hide control.
19498
 *
19499
 * Initialisation of Responsive is performed by:
19500
 *
19501
 * * Adding the class `responsive` or `dt-responsive` to the table. In this case
19502
 *   Responsive will automatically be initialised with the default configuration
19503
 *   options when the DataTable is created.
19504
 * * Using the `responsive` option in the DataTables configuration options. This
19505
 *   can also be used to specify the configuration options, or simply set to
19506
 *   `true` to use the defaults.
19507
 *
19508
 *  @class
19509
 *  @param {object} settings DataTables settings object for the host table
19510
 *  @param {object} [opts] Configuration options
19511
 *  @requires jQuery 1.7+
19512
 *  @requires DataTables 2.0.0+
19513
 *
107895
 *
19514
 *  @example
107896
 * @namespace
19515
 *      $('#example').DataTable( {
107897
 * @name Responsive.defaults
19516
 *        responsive: true
107898
 * @static
19517
 *      } );
19518
 *    } );
19519
 */
107899
 */
19520
var Responsive = function (settings, opts) {
107900
Responsive.defaults = {
19521
	// Sanity check that we are using DataTables 2.0.0 or newer
107901
	/**
19522
	if (!DataTable.versionCheck || !DataTable.versionCheck('2')) {
107902
	 * List of breakpoints for the instance. Note that this means that each
19523
		throw 'DataTables Responsive requires DataTables 2 or newer';
107903
	 * instance can have its own breakpoints. Additionally, the breakpoints
19524
	}
107904
	 * cannot be changed once an instance has been creased.
19525
107905
	 *
19526
	this.s = {
107906
	 * @type {Array}
19527
		childNodeStore: {},
107907
	 * @default Takes the value of `Responsive.breakpoints`
19528
		columns: [],
107908
	 */
19529
		current: [],
107909
	breakpoints: Responsive.breakpoints,
19530
		dt: new DataTable.Api(settings)
19531
	};
19532
19533
	// Check if responsive has already been initialised on this table
19534
	if (this.s.dt.settings()[0].responsive) {
19535
		return;
19536
	}
19537
19538
	// details is an object, but for simplicity the user can give it as a string
19539
	// or a boolean
19540
	if (opts && typeof opts.details === 'string') {
19541
		opts.details = { type: opts.details };
19542
	}
19543
	else if (opts && opts.details === false) {
19544
		opts.details = { type: false };
19545
	}
19546
	else if (opts && opts.details === true) {
19547
		opts.details = { type: 'inline' };
19548
	}
19549
19550
	this.c = $.extend(
19551
		true,
19552
		{},
19553
		Responsive.defaults,
19554
		DataTable.defaults.responsive,
19555
		opts
19556
	);
19557
	settings.responsive = this;
19558
	this._constructor();
19559
};
19560
107910
19561
$.extend(Responsive.prototype, {
107911
	/**
19562
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
107912
	 * Enable / disable auto hiding calculations. It can help to increase
19563
	 * Constructor
107913
	 * performance slightly if you disable this option, but all columns would
107914
	 * need to have breakpoint classes assigned to them
107915
	 *
107916
	 * @type {Boolean}
107917
	 * @default  `true`
19564
	 */
107918
	 */
107919
	auto: true,
19565
107920
19566
	/**
107921
	/**
19567
	 * Initialise the Responsive instance
107922
	 * Details control. If given as a string value, the `type` property of the
107923
	 * default object is set to that value, and the defaults used for the rest
107924
	 * of the object - this is for ease of implementation.
19568
	 *
107925
	 *
19569
	 * @private
107926
	 * The object consists of the following properties:
107927
	 *
107928
	 * * `display` - A function that is used to show and hide the hidden details
107929
	 * * `renderer` - function that is called for display of the child row data.
107930
	 *   The default function will show the data from the hidden columns
107931
	 * * `target` - Used as the selector for what objects to attach the child
107932
	 *   open / close to
107933
	 * * `type` - `false` to disable the details display, `inline` or `column`
107934
	 *   for the two control types
107935
	 *
107936
	 * @type {Object|string}
19570
	 */
107937
	 */
19571
	_constructor: function () {
107938
	details: {
19572
		var that = this;
107939
		display: Responsive.display.childRow,
19573
		var dt = this.s.dt;
19574
		var oldWindowWidth = $(window).innerWidth();
19575
19576
		dt.settings()[0]._responsive = this;
19577
19578
		// Use DataTables' throttle function to avoid processor thrashing
19579
		$(window).on(
19580
			'orientationchange.dtr',
19581
			DataTable.util.throttle(function () {
19582
				// iOS has a bug whereby resize can fire when only scrolling
19583
				// See: http://stackoverflow.com/questions/8898412
19584
				var width = $(window).innerWidth();
19585
19586
				if (width !== oldWindowWidth) {
19587
					that._resize();
19588
					oldWindowWidth = width;
19589
				}
19590
			})
19591
		);
19592
19593
		// Handle new rows being dynamically added - needed as responsive
19594
		// updates all rows (shown or not) a responsive change, rather than
19595
		// per draw.
19596
		dt.on('row-created.dtr', function (e, tr, data, idx) {
19597
			if ($.inArray(false, that.s.current) !== -1) {
19598
				$('>td, >th', tr).each(function (i) {
19599
					var idx = dt.column.index('toData', i);
19600
19601
					if (that.s.current[idx] === false) {
19602
						$(this)
19603
							.css('display', 'none')
19604
							.addClass('dtr-hidden');
19605
					}
19606
				});
19607
			}
19608
		});
19609
19610
		// Destroy event handler
19611
		dt.on('destroy.dtr', function () {
19612
			dt.off('.dtr');
19613
			$(dt.table().body()).off('.dtr');
19614
			$(window).off('resize.dtr orientationchange.dtr');
19615
			dt.cells('.dtr-control').nodes().to$().removeClass('dtr-control');
19616
			$(dt.table().node()).removeClass('dtr-inline collapsed');
19617
19618
			// Restore the columns that we've hidden
19619
			$.each(that.s.current, function (i, val) {
19620
				if (val === false) {
19621
					that._setColumnVis(i, true);
19622
				}
19623
			});
19624
		});
19625
19626
		// Reorder the breakpoints array here in case they have been added out
19627
		// of order
19628
		this.c.breakpoints.sort(function (a, b) {
19629
			return a.width < b.width ? 1 : a.width > b.width ? -1 : 0;
19630
		});
19631
107940
19632
		this._classLogic();
107941
		renderer: Responsive.renderer.listHidden(),
19633
107942
19634
		// Details handler
107943
		target: 0,
19635
		var details = this.c.details;
19636
107944
19637
		if (details.type !== false) {
107945
		type: 'inline'
19638
			that._detailsInit();
107946
	},
19639
107947
19640
			// DataTables will trigger this event on every column it shows and
107948
	/**
19641
			// hides individually
107949
	 * Orthogonal data request option. This is used to define the data type
19642
			dt.on('column-visibility.dtr', function () {
107950
	 * requested when Responsive gets the data to show in the child row.
19643
				// Use a small debounce to allow multiple columns to be set together
107951
	 *
19644
				if (that._timer) {
107952
	 * @type {String}
19645
					clearTimeout(that._timer);
107953
	 */
19646
				}
107954
	orthogonal: 'display'
107955
};
19647
107956
19648
				that._timer = setTimeout(function () {
107957
/*
19649
					that._timer = null;
107958
 * API
107959
 */
107960
var Api = $.fn.dataTable.Api;
19650
107961
19651
					that._classLogic();
107962
// Doesn't do anything - workaround for a bug in DT... Not documented
19652
					that._resizeAuto();
107963
Api.register('responsive()', function () {
19653
					that._resize(true);
107964
	return this;
107965
});
19654
107966
19655
					that._redrawChildren();
107967
Api.register('responsive.index()', function (li) {
19656
				}, 100);
107968
	li = $(li);
19657
			});
19658
107969
19659
			// Redraw the details box on each draw which will happen if the data
107970
	return {
19660
			// has changed. This is used until DataTables implements a native
107971
		column: li.data('dtr-index'),
19661
			// `updated` event for rows
107972
		row: li.parent().data('dtr-index')
19662
			dt.on('draw.dtr', function () {
107973
	};
19663
				that._redrawChildren();
107974
});
19664
			});
19665
107975
19666
			$(dt.table().node()).addClass('dtr-' + details.type);
107976
Api.register('responsive.rebuild()', function () {
107977
	return this.iterator('table', function (ctx) {
107978
		if (ctx._responsive) {
107979
			ctx._responsive._classLogic();
19667
		}
107980
		}
107981
	});
107982
});
19668
107983
19669
		// DT2 let's us tell it if we are hiding columns
107984
Api.register('responsive.recalc()', function () {
19670
		dt.on('column-calc.dt', function (e, d) {
107985
	return this.iterator('table', function (ctx) {
19671
			var curr = that.s.current;
107986
		if (ctx._responsive) {
19672
107987
			ctx._responsive._resizeAuto();
19673
			for (var i = 0; i < curr.length; i++) {
107988
			ctx._responsive._resize();
19674
				var idx = d.visible.indexOf(i);
107989
		}
19675
107990
	});
19676
				if (curr[i] === false && idx >= 0) {
107991
});
19677
					d.visible.splice(idx, 1);
19678
				}
19679
			}
19680
		});
19681
19682
		// On Ajax reload we want to reopen any child rows which are displayed
19683
		// by responsive
19684
		dt.on('preXhr.dtr', function () {
19685
			var rowIds = [];
19686
			dt.rows().every(function () {
19687
				if (this.child.isShown()) {
19688
					rowIds.push(this.id(true));
19689
				}
19690
			});
19691
19692
			dt.one('draw.dtr', function () {
19693
				that._resizeAuto();
19694
				that._resize();
19695
107992
19696
				dt.rows(rowIds).every(function () {
107993
Api.register('responsive.hasHidden()', function () {
19697
					that._detailsDisplay(this, false);
107994
	var ctx = this.context[0];
19698
				});
19699
			});
19700
		});
19701
107995
19702
		// First pass when the table is ready
107996
	return ctx._responsive
19703
		dt
107997
		? $.inArray(false, ctx._responsive._responsiveOnlyHidden()) !== -1
19704
			.on('draw.dtr', function () {
107998
		: false;
19705
				// For server-side tables, each draw needs the child node
107999
});
19706
				// cache to be cleared since it is no longer relevant. We can
19707
				// create a new object for speed in this case - no mutation.
19708
				if (dt.page.info().serverSide) {
19709
					that.s.childNodeStore = {};
19710
				}
19711
108000
19712
				that._controlClass();
108001
Api.registerPlural(
19713
			})
108002
	'columns().responsiveHidden()',
19714
			.ready(function () {
108003
	'column().responsiveHidden()',
19715
				that._resizeAuto();
108004
	function () {
19716
				that._resize();
108005
		return this.iterator(
108006
			'column',
108007
			function (settings, column) {
108008
				return settings._responsive
108009
					? settings._responsive._responsiveOnlyHidden()[column]
108010
					: false;
108011
			},
108012
			1
108013
		);
108014
	}
108015
);
19717
108016
19718
				// Change in column sizes means we need to calc
108017
/**
19719
				dt.on('column-sizing.dtr', function () {
108018
 * Version information
19720
					that._resizeAuto();
108019
 *
19721
					that._resize();
108020
 * @name Responsive.version
19722
				});
108021
 * @static
19723
			});
108022
 */
108023
Responsive.version = '3.0.8';
19724
108024
19725
		// Attach listeners after first pass
108025
$.fn.dataTable.Responsive = Responsive;
19726
		dt.on('column-reorder.dtr', function (e, settings, details) {
108026
$.fn.DataTable.Responsive = Responsive;
19727
			that._classLogic();
19728
			that._resizeAuto();
19729
			that._resize(true);
19730
		});
19731
	},
19732
108027
19733
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
108028
// Attach a listener to the document which listens for DataTables initialisation
19734
	 * Private methods
108029
// events so we can automatically initialise
19735
	 */
108030
$(document).on('preInit.dt.dtr', function (e, settings, json) {
108031
	if (e.namespace !== 'dt') {
108032
		return;
108033
	}
19736
108034
19737
	/**
108035
	if (
19738
	 * Insert a `col` tag into the correct location in a `colgroup`.
108036
		$(settings.nTable).hasClass('responsive') ||
19739
	 *
108037
		$(settings.nTable).hasClass('dt-responsive') ||
19740
	 * @param {jQuery} colGroup The `colgroup` tag
108038
		settings.oInit.responsive ||
19741
	 * @param {jQuery} colEl The `col` tag
108039
		DataTable.defaults.responsive
19742
	 */
108040
	) {
19743
	_colGroupAttach: function (colGroup, colEls, idx) {
108041
		var init = settings.oInit.responsive;
19744
		var found = null;
19745
108042
19746
		// No need to do anything if already attached
108043
		if (init !== false) {
19747
		if (colEls[idx].get(0).parentNode === colGroup[0]) {
108044
			new Responsive(settings, $.isPlainObject(init) ? init : {});
19748
			return;
19749
		}
108045
		}
108046
	}
108047
});
19750
108048
19751
		// Find the first `col` after our own which is already attached
19752
		for (var i = idx+1; i < colEls.length; i++) {
19753
			if (colGroup[0] === colEls[i].get(0).parentNode) {
19754
				found = i;
19755
				break;
19756
			}
19757
		}
19758
108049
19759
		if (found !== null) {
108050
return DataTable;
19760
			// Insert before
108051
}));
19761
			colEls[idx].insertBefore(colEls[found][0]);
19762
		}
19763
		else {
19764
			// If wasn't found, insert at the end
19765
			colGroup.append(colEls[idx]);
19766
		}
19767
	},
19768
108052
19769
	/**
19770
	 * Get and store nodes from a cell - use for node moving renderers
19771
	 *
19772
	 * @param {*} dt DT instance
19773
	 * @param {*} row Row index
19774
	 * @param {*} col Column index
19775
	 */
19776
	_childNodes: function (dt, row, col) {
19777
		var name = row + '-' + col;
19778
108053
19779
		if (this.s.childNodeStore[name]) {
108054
/*! DataTables styling wrapper for Responsive
19780
			return this.s.childNodeStore[name];
108055
 * © SpryMedia Ltd - datatables.net/license
19781
		}
108056
 */
19782
108057
19783
		// https://jsperf.com/childnodes-array-slice-vs-loop
108058
(function( factory ){
19784
		var nodes = [];
108059
	if ( typeof define === 'function' && define.amd ) {
19785
		var children = dt.cell(row, col).node().childNodes;
108060
		// AMD
19786
		for (var i = 0, iLen = children.length; i < iLen; i++) {
108061
		define( ['jquery', 'datatables.net-dt', 'datatables.net-responsive'], function ( $ ) {
19787
			nodes.push(children[i]);
108062
			return factory( $, window, document );
19788
		}
108063
		} );
108064
	}
108065
	else if ( typeof exports === 'object' ) {
108066
		// CommonJS
108067
		var jq = require('jquery');
108068
		var cjsRequires = function (root, $) {
108069
			if ( ! $.fn.dataTable ) {
108070
				require('datatables.net-dt')(root, $);
108071
			}
19789
108072
19790
		this.s.childNodeStore[name] = nodes;
108073
			if ( ! $.fn.dataTable.Responsive ) {
108074
				require('datatables.net-responsive')(root, $);
108075
			}
108076
		};
19791
108077
19792
		return nodes;
108078
		if (typeof window === 'undefined') {
19793
	},
108079
			module.exports = function (root, $) {
108080
				if ( ! root ) {
108081
					// CommonJS environments without a window global must pass a
108082
					// root. This will give an error otherwise
108083
					root = window;
108084
				}
19794
108085
19795
	/**
108086
				if ( ! $ ) {
19796
	 * Restore nodes from the cache to a table cell
108087
					$ = jq( root );
19797
	 *
108088
				}
19798
	 * @param {*} dt DT instance
19799
	 * @param {*} row Row index
19800
	 * @param {*} col Column index
19801
	 */
19802
	_childNodesRestore: function (dt, row, col) {
19803
		var name = row + '-' + col;
19804
108089
19805
		if (!this.s.childNodeStore[name]) {
108090
				cjsRequires( root, $ );
19806
			return;
108091
				return factory( $, root, root.document );
108092
			};
19807
		}
108093
		}
108094
		else {
108095
			cjsRequires( window, jq );
108096
			module.exports = factory( jq, window, window.document );
108097
		}
108098
	}
108099
	else {
108100
		// Browser
108101
		factory( jQuery, window, document );
108102
	}
108103
}(function( $, window, document ) {
108104
'use strict';
108105
var DataTable = $.fn.dataTable;
19808
108106
19809
		var node = dt.cell(row, col).node();
19810
		var store = this.s.childNodeStore[name];
19811
		if (store.length > 0) {
19812
			var parent = store[0].parentNode;
19813
			var parentChildren = parent.childNodes;
19814
			var a = [];
19815
108107
19816
			for (var i = 0, iLen = parentChildren.length; i < iLen; i++) {
19817
				a.push(parentChildren[i]);
19818
			}
19819
108108
19820
			for (var j = 0, jen = a.length; j < jen; j++) {
19821
				node.appendChild(a[j]);
19822
			}
19823
		}
19824
108109
19825
		this.s.childNodeStore[name] = undefined;
108110
return DataTable;
19826
	},
108111
}));
19827
108112
19828
	/**
19829
	 * Calculate the visibility for the columns in a table for a given
19830
	 * breakpoint. The result is pre-determined based on the class logic if
19831
	 * class names are used to control all columns, but the width of the table
19832
	 * is also used if there are columns which are to be automatically shown
19833
	 * and hidden.
19834
	 *
19835
	 * @param  {string} breakpoint Breakpoint name to use for the calculation
19836
	 * @return {array} Array of boolean values initiating the visibility of each
19837
	 *   column.
19838
	 *  @private
19839
	 */
19840
	_columnsVisibility: function (breakpoint) {
19841
		var dt = this.s.dt;
19842
		var columns = this.s.columns;
19843
		var i, iLen;
19844
108113
19845
		// Create an array that defines the column ordering based first on the
108114
/*! RowGroup 1.6.0
19846
		// column's priority, and secondly the column index. This allows the
108115
 * © SpryMedia Ltd - datatables.net/license
19847
		// columns to be removed from the right if the priority matches
108116
 */
19848
		var order = columns
19849
			.map(function (col, idx) {
19850
				return {
19851
					columnIdx: idx,
19852
					priority: col.priority
19853
				};
19854
			})
19855
			.sort(function (a, b) {
19856
				if (a.priority !== b.priority) {
19857
					return a.priority - b.priority;
19858
				}
19859
				return a.columnIdx - b.columnIdx;
19860
			});
19861
108117
19862
		// Class logic - determine which columns are in this breakpoint based
108118
(function( factory ){
19863
		// on the classes. If no class control (i.e. `auto`) then `-` is used
108119
	if ( typeof define === 'function' && define.amd ) {
19864
		// to indicate this to the rest of the function
108120
		// AMD
19865
		var display = $.map(columns, function (col, i) {
108121
		define( ['jquery', 'datatables.net'], function ( $ ) {
19866
			if (dt.column(i).visible() === false) {
108122
			return factory( $, window, document );
19867
				return 'not-visible';
108123
		} );
108124
	}
108125
	else if ( typeof exports === 'object' ) {
108126
		// CommonJS
108127
		var jq = require('jquery');
108128
		var cjsRequires = function (root, $) {
108129
			if ( ! $.fn.dataTable ) {
108130
				require('datatables.net')(root, $);
19868
			}
108131
			}
19869
			return col.auto && col.minWidth === null
108132
		};
19870
				? false
19871
				: col.auto === true
19872
				? '-'
19873
				: $.inArray(breakpoint, col.includeIn) !== -1;
19874
		});
19875
108133
19876
		// Auto column control - first pass: how much width is taken by the
108134
		if (typeof window === 'undefined') {
19877
		// ones that must be included from the non-auto columns
108135
			module.exports = function (root, $) {
19878
		var requiredWidth = 0;
108136
				if ( ! root ) {
19879
		for (i = 0, iLen = display.length; i < iLen; i++) {
108137
					// CommonJS environments without a window global must pass a
19880
			if (display[i] === true) {
108138
					// root. This will give an error otherwise
19881
				requiredWidth += columns[i].minWidth;
108139
					root = window;
19882
			}
108140
				}
19883
		}
19884
108141
19885
		// Second pass, use up any remaining width for other columns. For
108142
				if ( ! $ ) {
19886
		// scrolling tables we need to subtract the width of the scrollbar. It
108143
					$ = jq( root );
19887
		// may not be requires which makes this sub-optimal, but it would
108144
				}
19888
		// require another full redraw to make complete use of those extra few
19889
		// pixels
19890
		var scrolling = dt.settings()[0].oScroll;
19891
		var bar = scrolling.sY || scrolling.sX ? scrolling.iBarWidth : 0;
19892
		var widthAvailable = dt.table().container().offsetWidth - bar;
19893
		var usedWidth = widthAvailable - requiredWidth;
19894
108145
19895
		// Control column needs to always be included. This makes it sub-
108146
				cjsRequires( root, $ );
19896
		// optimal in terms of using the available with, but to stop layout
108147
				return factory( $, root, root.document );
19897
		// thrashing or overflow. Also we need to account for the control column
108148
			};
19898
		// width first so we know how much width is available for the other
19899
		// columns, since the control column might not be the first one shown
19900
		for (i = 0, iLen = display.length; i < iLen; i++) {
19901
			if (columns[i].control) {
19902
				usedWidth -= columns[i].minWidth;
19903
			}
19904
		}
108149
		}
108150
		else {
108151
			cjsRequires( window, jq );
108152
			module.exports = factory( jq, window, window.document );
108153
		}
108154
	}
108155
	else {
108156
		// Browser
108157
		factory( jQuery, window, document );
108158
	}
108159
}(function( $, window, document ) {
108160
'use strict';
108161
var DataTable = $.fn.dataTable;
19905
108162
19906
		// Allow columns to be shown (counting by priority and then right to
19907
		// left) until we run out of room
19908
		var empty = false;
19909
		for (i = 0, iLen = order.length; i < iLen; i++) {
19910
			var colIdx = order[i].columnIdx;
19911
108163
19912
			if (
19913
				display[colIdx] === '-' &&
19914
				!columns[colIdx].control &&
19915
				columns[colIdx].minWidth
19916
			) {
19917
				// Once we've found a column that won't fit we don't let any
19918
				// others display either, or columns might disappear in the
19919
				// middle of the table
19920
				if (empty || usedWidth - columns[colIdx].minWidth < 0) {
19921
					empty = true;
19922
					display[colIdx] = false;
19923
				}
19924
				else {
19925
					display[colIdx] = true;
19926
				}
19927
108164
19928
				usedWidth -= columns[colIdx].minWidth;
108165
/**
19929
			}
108166
 * @summary     RowGroup
19930
		}
108167
 * @description RowGrouping for DataTables
108168
 * @version     1.6.0
108169
 * @author      SpryMedia Ltd (www.sprymedia.co.uk)
108170
 * @contact     datatables.net
108171
 * @copyright   SpryMedia Ltd.
108172
 *
108173
 * This source file is free software, available under the following license:
108174
 *   MIT license - http://datatables.net/license/mit
108175
 *
108176
 * This source file is distributed in the hope that it will be useful, but
108177
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
108178
 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
108179
 *
108180
 * For details please refer to: http://www.datatables.net
108181
 */
19931
108182
19932
		// Determine if the 'control' column should be shown (if there is one).
108183
var RowGroup = function (dt, opts) {
19933
		// This is the case when there is a hidden column (that is not the
108184
	// Sanity check
19934
		// control column). The two loops look inefficient here, but they are
108185
	if (!DataTable.versionCheck || !DataTable.versionCheck('2')) {
19935
		// trivial and will fly through. We need to know the outcome from the
108186
		throw new Error('RowGroup requires DataTables 2 or newer');
19936
		// first , before the action in the second can be taken
108187
	}
19937
		var showControl = false;
19938
108188
19939
		for (i = 0, iLen = columns.length; i < iLen; i++) {
108189
	// User and defaults configuration object
19940
			if (
108190
	this.c = $.extend(true, {}, DataTable.defaults.rowGroup, RowGroup.defaults, opts);
19941
				!columns[i].control &&
19942
				!columns[i].never &&
19943
				display[i] === false
19944
			) {
19945
				showControl = true;
19946
				break;
19947
			}
19948
		}
19949
108191
19950
		for (i = 0, iLen = columns.length; i < iLen; i++) {
108192
	// Internal settings
19951
			if (columns[i].control) {
108193
	this.s = {
19952
				display[i] = showControl;
108194
		dt: new DataTable.Api(dt)
19953
			}
108195
	};
19954
108196
19955
			// Replace not visible string with false from the control column detection above
108197
	// DOM items
19956
			if (display[i] === 'not-visible') {
108198
	this.dom = {};
19957
				display[i] = false;
19958
			}
19959
		}
19960
108199
19961
		// Finally we need to make sure that there is at least one column that
108200
	// Check if row grouping has already been initialised on this table
19962
		// is visible
108201
	var settings = this.s.dt.settings()[0];
19963
		if ($.inArray(true, display) === -1) {
108202
	var existing = settings.rowGroup;
19964
			display[0] = true;
108203
	if (existing) {
19965
		}
108204
		return existing;
108205
	}
19966
108206
19967
		return display;
108207
	settings.rowGroup = this;
19968
	},
108208
	this._constructor();
108209
};
108210
108211
$.extend(RowGroup.prototype, {
108212
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
108213
	 * API methods for DataTables API interface
108214
	 */
19969
108215
19970
	/**
108216
	/**
19971
	 * Create the internal `columns` array with information about the columns
108217
	 * Get/set the grouping data source - need to call draw after this is
19972
	 * for the table. This includes determining which breakpoints the column
108218
	 * executed as a setter
19973
	 * will appear in, based upon class names in the column, which makes up the
108219
	 * @returns string~RowGroup
19974
	 * vast majority of this method.
19975
	 *
19976
	 * @private
19977
	 */
108220
	 */
19978
	_classLogic: function () {
108221
	dataSrc: function (val) {
19979
		var that = this;
108222
		if (val === undefined) {
19980
		var breakpoints = this.c.breakpoints;
108223
			return this.c.dataSrc;
19981
		var dt = this.s.dt;
108224
		}
19982
		var columns = dt
19983
			.columns()
19984
			.eq(0)
19985
			.map(function (i) {
19986
				var column = this.column(i);
19987
				var className = column.header().className;
19988
				var priority = column.init().responsivePriority;
19989
				var dataPriority = column
19990
					.header()
19991
					.getAttribute('data-priority');
19992
108225
19993
				if (priority === undefined) {
108226
		var dt = this.s.dt;
19994
					priority =
19995
						dataPriority === undefined || dataPriority === null
19996
							? 10000
19997
							: dataPriority * 1;
19998
				}
19999
108227
20000
				return {
108228
		this.c.dataSrc = val;
20001
					className: className,
20002
					includeIn: [],
20003
					auto: false,
20004
					control: false,
20005
					never: className.match(/\b(dtr\-)?never\b/) ? true : false,
20006
					priority: priority
20007
				};
20008
			});
20009
108229
20010
		// Simply add a breakpoint to `includeIn` array, ensuring that there are
108230
		$(dt.table().node()).triggerHandler('rowgroup-datasrc.dt', [dt, val]);
20011
		// no duplicates
20012
		var add = function (colIdx, name) {
20013
			var includeIn = columns[colIdx].includeIn;
20014
108231
20015
			if ($.inArray(name, includeIn) === -1) {
108232
		return this;
20016
				includeIn.push(name);
108233
	},
20017
			}
20018
		};
20019
108234
20020
		var column = function (colIdx, name, operator, matched) {
108235
	/**
20021
			var size, i, iLen;
108236
	 * Disable - need to call draw after this is executed
108237
	 * @returns RowGroup
108238
	 */
108239
	disable: function () {
108240
		this.c.enable = false;
108241
		return this;
108242
	},
20022
108243
20023
			if (!operator) {
108244
	/**
20024
				columns[colIdx].includeIn.push(name);
108245
	 * Enable - need to call draw after this is executed
20025
			}
108246
	 * @returns RowGroup
20026
			else if (operator === 'max-') {
108247
	 */
20027
				// Add this breakpoint and all smaller
108248
	enable: function (flag) {
20028
				size = that._find(name).width;
108249
		if (flag === false) {
108250
			return this.disable();
108251
		}
20029
108252
20030
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
108253
		this.c.enable = true;
20031
					if (breakpoints[i].width <= size) {
108254
		return this;
20032
						add(colIdx, breakpoints[i].name);
108255
	},
20033
					}
20034
				}
20035
			}
20036
			else if (operator === 'min-') {
20037
				// Add this breakpoint and all larger
20038
				size = that._find(name).width;
20039
108256
20040
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
108257
	/**
20041
					if (breakpoints[i].width >= size) {
108258
	 * Get enabled flag
20042
						add(colIdx, breakpoints[i].name);
108259
	 * @returns boolean
20043
					}
108260
	 */
20044
				}
108261
	enabled: function () {
20045
			}
108262
		return this.c.enable;
20046
			else if (operator === 'not-') {
108263
	},
20047
				// Add all but this breakpoint
20048
				for (i = 0, iLen = breakpoints.length; i < iLen; i++) {
20049
					if (breakpoints[i].name.indexOf(matched) === -1) {
20050
						add(colIdx, breakpoints[i].name);
20051
					}
20052
				}
20053
			}
20054
		};
20055
108264
20056
		// Loop over each column and determine if it has a responsive control
108265
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
20057
		// class
108266
	 * Constructor
20058
		columns.each(function (col, i) {
108267
	 */
20059
			var classNames = col.className.split(' ');
108268
	_constructor: function () {
20060
			var hasClass = false;
108269
		var that = this;
108270
		var dt = this.s.dt;
108271
		var hostSettings = dt.settings()[0];
108272
		var scroller = $('div.dt-scroll-body', dt.table().container());
20061
108273
20062
			// Split the class name up so multiple rules can be applied if needed
108274
		dt.on('draw.dtrg', function (e, s) {
20063
			for (var k = 0, ken = classNames.length; k < ken; k++) {
108275
			if (that.c.enable && hostSettings === s) {
20064
				var className = classNames[k].trim();
108276
				that._draw();
20065
108277
20066
				if (className === 'all' || className === 'dtr-all') {
108278
				// Restore scrolling position if set and paging wasn't reset
20067
					// Include in all
108279
				if (scrollTop && scroller.scrollTop()) {
20068
					hasClass = true;
108280
					scroller.scrollTop(scrollTop);
20069
					col.includeIn = $.map(breakpoints, function (a) {
108281
					scrollTop = null;
20070
						return a.name;
20071
					});
20072
					return;
20073
				}
20074
				else if (
20075
					className === 'none' ||
20076
					className === 'dtr-none' ||
20077
					col.never
20078
				) {
20079
					// Include in none (default) and no auto
20080
					hasClass = true;
20081
					return;
20082
				}
20083
				else if (
20084
					className === 'control' ||
20085
					className === 'dtr-control'
20086
				) {
20087
					// Special column that is only visible, when one of the other
20088
					// columns is hidden. This is used for the details control
20089
					hasClass = true;
20090
					col.control = true;
20091
					return;
20092
				}
108282
				}
20093
20094
				$.each(breakpoints, function (j, breakpoint) {
20095
					// Does this column have a class that matches this breakpoint?
20096
					var brokenPoint = breakpoint.name.split('-');
20097
					var re = new RegExp(
20098
						'(min\\-|max\\-|not\\-)?(' +
20099
							brokenPoint[0] +
20100
							')(\\-[_a-zA-Z0-9])?'
20101
					);
20102
					var match = className.match(re);
20103
20104
					if (match) {
20105
						hasClass = true;
20106
20107
						if (
20108
							match[2] === brokenPoint[0] &&
20109
							match[3] === '-' + brokenPoint[1]
20110
						) {
20111
							// Class name matches breakpoint name fully
20112
							column(
20113
								i,
20114
								breakpoint.name,
20115
								match[1],
20116
								match[2] + match[3]
20117
							);
20118
						}
20119
						else if (match[2] === brokenPoint[0] && !match[3]) {
20120
							// Class name matched primary breakpoint name with no qualifier
20121
							column(i, breakpoint.name, match[1], match[2]);
20122
						}
20123
					}
20124
				});
20125
			}
108283
			}
108284
		});
20126
108285
20127
			// If there was no control class, then automatic sizing is used
108286
		dt.on('column-visibility.dt.dtrg responsive-resize.dt.dtrg', function () {
20128
			if (!hasClass) {
108287
			that._adjustColspan();
20129
				col.auto = true;
20130
			}
20131
		});
108288
		});
20132
108289
20133
		this.s.columns = columns;
108290
		dt.on('destroy', function () {
108291
			dt.off('.dtrg');
108292
		});
108293
108294
		// When scrolling is enabled, when adding grouping rows above the scrolling view
108295
		// port, the browser (both FF and Chrome) will put the element in and adjust the
108296
		// scrollTop so that it doesn't move the current viewport. This isn't what we
108297
		// want since prior to the draw the grouping elements were in place, but they then
108298
		// are removed and reinserted. So we need to shift the scrollTop back to what it
108299
		// was!
108300
		var scrollTop = null;
108301
108302
		if (scroller.length) {
108303
			dt.on('preDraw', function () {
108304
				scrollTop = scroller.scrollTop();
108305
			});
108306
		}
20134
	},
108307
	},
20135
108308
20136
	/**
108309
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
20137
	 * Update the cells to show the correct control class / button
108310
	 * Private methods
20138
	 * @private
20139
	 */
108311
	 */
20140
	_controlClass: function () {
20141
		if (this.c.details.type === 'inline') {
20142
			var dt = this.s.dt;
20143
			var columnsVis = this.s.current;
20144
			var firstVisible = $.inArray(true, columnsVis);
20145
108312
20146
			// Remove from any cells which shouldn't have it
108313
	/**
20147
			dt.cells(
108314
	 * Adjust column span when column visibility changes
20148
				null,
108315
	 * @private
20149
				function (idx) {
108316
	 */
20150
					return idx !== firstVisible;
108317
	_adjustColspan: function () {
20151
				},
108318
		let cells = $('tr.' + this.c.className, this.s.dt.table().body())
20152
				{ page: 'current' }
108319
			.find('th:visible, td:visible');
20153
			)
20154
				.nodes()
20155
				.to$()
20156
				.filter('.dtr-control')
20157
				.removeClass('dtr-control');
20158
108320
20159
			if (firstVisible >= 0) {
108321
		// Only perform the adjust if there is a single cell. If there is more the renderer must
20160
				dt.cells(null, firstVisible, { page: 'current' })
108322
		// have returned multiple cells and it is the responsibility of the rendering function to
20161
					.nodes()
108323
		// get the number of cells right.
20162
					.to$()
108324
		if (cells.length === 1) {
20163
					.addClass('dtr-control');
108325
			cells.attr('colspan', this._colspan());
20164
			}
20165
		}
108326
		}
108327
	},
20166
108328
20167
		this._tabIndexes();
108329
	/**
108330
	 * Get the number of columns that a grouping row should span
108331
	 * @private
108332
	 */
108333
	_colspan: function () {
108334
		return this.s.dt
108335
			.columns()
108336
			.visible()
108337
			.reduce(function (a, b) {
108338
				return a + b;
108339
			}, 0);
20168
	},
108340
	},
20169
108341
20170
	/**
108342
	/**
20171
	 * Show the details for the child row
108343
	 * Update function that is called whenever we need to draw the grouping rows.
20172
	 *
108344
	 * This is basically a bootstrap for the self iterative _group and _groupDisplay
20173
	 * @param  {DataTables.Api} row    API instance for the row
108345
	 * methods
20174
	 * @param  {boolean}        update Update flag
20175
	 * @private
108346
	 * @private
20176
	 */
108347
	 */
20177
	_detailsDisplay: function (row, update) {
108348
	_draw: function () {
20178
		var that = this;
20179
		var dt = this.s.dt;
108349
		var dt = this.s.dt;
20180
		var details = this.c.details;
20181
		var event = function (res) {
20182
			$(row.node()).toggleClass('dtr-expanded', res !== false);
20183
			$(dt.table().node()).triggerHandler('responsive-display.dt', [
20184
				dt,
20185
				row,
20186
				res,
20187
				update
20188
			]);
20189
		};
20190
108350
20191
		if (details && details.type !== false) {
108351
		// Don't do anything if there is no data source
20192
			var renderer =
108352
		if (
20193
				typeof details.renderer === 'string'
108353
			this.c.dataSrc === null ||
20194
					? Responsive.renderer[details.renderer]()
108354
			(Array.isArray(this.c.dataSrc) && this.c.dataSrc.length === 0)
20195
					: details.renderer;
108355
		) {
108356
			return;
108357
		}
20196
108358
20197
			var res = details.display(
108359
		var groupedRows = this._group(0, dt.rows({ page: 'current' }).indexes());
20198
				row,
20199
				update,
20200
				function () {
20201
					return renderer.call(
20202
						that,
20203
						dt,
20204
						row[0][0],
20205
						that._detailsObj(row[0])
20206
					);
20207
				},
20208
				function () {
20209
					event(false);
20210
				}
20211
			);
20212
108360
20213
			if (typeof res === 'boolean') {
108361
		this._groupDisplay(0, groupedRows);
20214
				event(res);
20215
			}
20216
		}
20217
	},
108362
	},
20218
108363
20219
	/**
108364
	/**
20220
	 * Initialisation for the details handler
108365
	 * Get the grouping information from a data set (index) of rows
20221
	 *
108366
	 * @param {number} level Nesting level
108367
	 * @param {DataTables.Api} rows API of the rows to consider for this group
108368
	 * @returns {object[]} Nested grouping information - it is structured like this:
108369
	 *	{
108370
	 *		dataPoint: 'Edinburgh',
108371
	 *		rows: [ 1,2,3,4,5,6,7 ],
108372
	 *		children: [ {
108373
	 *			dataPoint: 'developer'
108374
	 *			rows: [ 1, 2, 3 ]
108375
	 *		},
108376
	 *		{
108377
	 *			dataPoint: 'support',
108378
	 *			rows: [ 4, 5, 6, 7 ]
108379
	 *		} ]
108380
	 *	}
20222
	 * @private
108381
	 * @private
20223
	 */
108382
	 */
20224
	_detailsInit: function () {
108383
	_group: function (level, rows) {
20225
		var that = this;
108384
		var fns = Array.isArray(this.c.dataSrc) ? this.c.dataSrc : [this.c.dataSrc];
108385
		var fn = DataTable.util.get(fns[level]);
20226
		var dt = this.s.dt;
108386
		var dt = this.s.dt;
20227
		var details = this.c.details;
108387
		var group, last;
108388
		var i, ien;
108389
		var data = [];
108390
		var that = this;
20228
108391
20229
		// The inline type always uses the first child as the target
108392
		for (i = 0, ien = rows.length; i < ien; i++) {
20230
		if (details.type === 'inline') {
108393
			var rowIndex = rows[i];
20231
			details.target = 'td.dtr-control, th.dtr-control';
108394
			var rowData = dt.row(rowIndex).data();
20232
		}
20233
108395
20234
		$(dt.table().body()).on('keyup.dtr', 'td, th', function (e) {
108396
			group = fn(rowData, level);
20235
			let activeNodeName = document.activeElement.nodeName.toLowerCase();
20236
108397
20237
			if (
108398
			if (group === null || group === undefined) {
20238
				e.keyCode === 13 &&
108399
				group = that.c.emptyDataGroup;
20239
				$(this).data('dtr-keyboard') &&
20240
				(activeNodeName === 'td' || activeNodeName === 'th')
20241
			) {
20242
				$(this).click();
20243
			}
108400
			}
20244
		});
20245
20246
		// type.target can be a string jQuery selector or a column index
20247
		var target = details.target;
20248
		var selector = typeof target === 'string' ? target : 'td, th';
20249
20250
		if (target !== undefined || target !== null) {
20251
			// Click handler to show / hide the details rows when they are available
20252
			$(dt.table().body()).on(
20253
				'click.dtr mousedown.dtr mouseup.dtr',
20254
				selector,
20255
				function (e) {
20256
					// If the table is not collapsed (i.e. there is no hidden columns)
20257
					// then take no action
20258
					if (!$(dt.table().node()).hasClass('collapsed')) {
20259
						return;
20260
					}
20261
20262
					// Check that the row is actually a DataTable's controlled node
20263
					if (
20264
						$.inArray(
20265
							$(this).closest('tr').get(0),
20266
							dt.rows().nodes().toArray()
20267
						) === -1
20268
					) {
20269
						return;
20270
					}
20271
108401
20272
					// For column index, we determine if we should act or not in the
108402
			if (last === undefined || group !== last) {
20273
					// handler - otherwise it is already okay
108403
				data.push({
20274
					if (typeof target === 'number') {
108404
					dataPoint: group,
20275
						var targetIdx =
108405
					rows: []
20276
							target < 0
108406
				});
20277
								? dt.columns().eq(0).length + target
20278
								: target;
20279
108407
20280
						if (dt.cell(this).index().column !== targetIdx) {
108408
				last = group;
20281
							return;
108409
			}
20282
						}
20283
					}
20284
108410
20285
					// $().closest() includes itself in its check
108411
			data[data.length - 1].rows.push(rowIndex);
20286
					var row = dt.row($(this).closest('tr'));
108412
		}
20287
108413
20288
					// Check event type to do an action
108414
		if (fns[level + 1] !== undefined) {
20289
					if (e.type === 'click') {
108415
			for (i = 0, ien = data.length; i < ien; i++) {
20290
						// The renderer is given as a function so the caller can execute it
108416
				data[i].children = this._group(level + 1, data[i].rows);
20291
						// only when they need (i.e. if hiding there is no point is running
108417
			}
20292
						// the renderer)
20293
						that._detailsDisplay(row, false);
20294
					}
20295
					else if (e.type === 'mousedown') {
20296
						// For mouse users, prevent the focus ring from showing
20297
						$(this).css('outline', 'none');
20298
					}
20299
					else if (e.type === 'mouseup') {
20300
						// And then re-allow at the end of the click
20301
						$(this).trigger('blur').css('outline', '');
20302
					}
20303
				}
20304
			);
20305
		}
108418
		}
108419
108420
		return data;
20306
	},
108421
	},
20307
108422
20308
	/**
108423
	/**
20309
	 * Get the details to pass to a renderer for a row
108424
	 * Row group display - insert the rows into the document
20310
	 * @param  {int} rowIdx Row index
108425
	 * @param {number} level Nesting level
108426
	 * @param {object[]} groups Takes the nested array from `_group`
20311
	 * @private
108427
	 * @private
20312
	 */
108428
	 */
20313
	_detailsObj: function (rowIdx) {
108429
	_groupDisplay: function (level, groups) {
20314
		var that = this;
20315
		var dt = this.s.dt;
108430
		var dt = this.s.dt;
20316
		var columnApis = [];
108431
		var display;
20317
		let settings = dt.settings()[0];
20318
108432
20319
		return $.map(this.s.columns, function (col, i) {
108433
		for (var i = 0, ien = groups.length; i < ien; i++) {
20320
			// Never and control columns should not be passed to the renderer
108434
			var group = groups[i];
20321
			if (col.never || col.control) {
108435
			var groupName = group.dataPoint;
20322
				return;
108436
			var row;
108437
			var rows = group.rows;
108438
108439
			if (this.c.startRender) {
108440
				display = this.c.startRender.call(this, dt.rows(rows), groupName, level);
108441
				row = this._rowWrap(display, this.c.startClassName, level);
108442
108443
				if (row) {
108444
					row.insertBefore(dt.row(rows[0]).node());
108445
				}
20323
			}
108446
			}
20324
108447
20325
			var dtCol = settings.aoColumns[i];
108448
			if (this.c.endRender) {
108449
				display = this.c.endRender.call(this, dt.rows(rows), groupName, level);
108450
				row = this._rowWrap(display, this.c.endClassName, level);
20326
108451
20327
			if (!columnApis[i]) {
108452
				if (row) {
20328
				columnApis[i] = dt.column(i);
108453
					row.insertAfter(dt.row(rows[rows.length - 1]).node());
108454
				}
20329
			}
108455
			}
20330
108456
20331
			return {
108457
			if (group.children) {
20332
				className: dtCol.sClass,
108458
				this._groupDisplay(level + 1, group.children);
20333
				columnIndex: i,
108459
			}
20334
				data: settings.fastData(rowIdx, i, that.c.orthogonal),
108460
		}
20335
				hidden: columnApis[i].visible() && !that.s.current[i],
20336
				rowIndex: rowIdx,
20337
				title: columnApis[i].title()
20338
			};
20339
		});
20340
	},
108461
	},
20341
108462
20342
	/**
108463
	/**
20343
	 * Find a breakpoint object from a name
108464
	 * Take a rendered value from an end user and make it suitable for display
20344
	 *
108465
	 * as a row, by wrapping it in a row, or detecting that it is a row.
20345
	 * @param  {string} name Breakpoint name to find
108466
	 * @param {node|jQuery|string} display Display value
20346
	 * @return {object}      Breakpoint description object
108467
	 * @param {string} className Class to add to the row
108468
	 * @param {array} group
108469
	 * @param {number} group level
20347
	 * @private
108470
	 * @private
20348
	 */
108471
	 */
20349
	_find: function (name) {
108472
	_rowWrap: function (display, className, level) {
20350
		var breakpoints = this.c.breakpoints;
108473
		var row;
20351
108474
20352
		for (var i = 0, iLen = breakpoints.length; i < iLen; i++) {
108475
		if (display === null || display === '') {
20353
			if (breakpoints[i].name === name) {
108476
			display = this.c.emptyDataGroup;
20354
				return breakpoints[i];
20355
			}
20356
		}
108477
		}
20357
	},
20358
108478
108479
		if (display === undefined || display === null) {
108480
			return null;
108481
		}
108482
108483
		if (
108484
			typeof display === 'object' &&
108485
			display.nodeName &&
108486
			display.nodeName.toLowerCase() === 'tr'
108487
		) {
108488
			row = $(display);
108489
		}
108490
		else if (
108491
			display instanceof $ &&
108492
			display.length &&
108493
			display[0].nodeName.toLowerCase() === 'tr'
108494
		) {
108495
			row = display;
108496
		}
108497
		else {
108498
			row = $('<tr/>').append(
108499
				$('<th/>').attr('colspan', this._colspan()).attr('scope', 'row').append(display)
108500
			);
108501
		}
108502
108503
		return row
108504
			.addClass(this.c.className)
108505
			.addClass(className)
108506
			.addClass('dtrg-level-' + level);
108507
	}
108508
});
108509
108510
/**
108511
 * RowGroup default settings for initialisation
108512
 *
108513
 * @namespace
108514
 * @name RowGroup.defaults
108515
 * @static
108516
 */
108517
RowGroup.defaults = {
20359
	/**
108518
	/**
20360
	 * Re-create the contents of the child rows as the display has changed in
108519
	 * Class to apply to grouping rows - applied to both the start and
20361
	 * some way.
108520
	 * end grouping rows.
20362
	 *
108521
	 * @type string
20363
	 * @private
20364
	 */
108522
	 */
20365
	_redrawChildren: function () {
108523
	className: 'dtrg-group',
20366
		var that = this;
20367
		var dt = this.s.dt;
20368
108524
20369
		dt.rows({ page: 'current' }).iterator('row', function (settings, idx) {
108525
	/**
20370
			that._detailsDisplay(dt.row(idx), true);
108526
	 * Data property from which to read the grouping information
20371
		});
108527
	 * @type string|integer|array
20372
	},
108528
	 */
108529
	dataSrc: 0,
20373
108530
20374
	/**
108531
	/**
20375
	 * Alter the table display for a resized viewport. This involves first
108532
	 * Text to show if no data is found for a group
20376
	 * determining what breakpoint the window currently is in, getting the
108533
	 * @type string
20377
	 * column visibilities to apply and then setting them.
20378
	 *
20379
	 * @param  {boolean} forceRedraw Force a redraw
20380
	 * @private
20381
	 */
108534
	 */
20382
	_resize: function (forceRedraw) {
108535
	emptyDataGroup: 'No group',
20383
		var that = this;
20384
		var dt = this.s.dt;
20385
		var width = $(window).innerWidth();
20386
		var breakpoints = this.c.breakpoints;
20387
		var breakpoint = breakpoints[0].name;
20388
		var columns = this.s.columns;
20389
		var i, iLen;
20390
		var oldVis = this.s.current.slice();
20391
108536
20392
		// Determine what breakpoint we are currently at
108537
	/**
20393
		for (i = breakpoints.length - 1; i >= 0; i--) {
108538
	 * Initial enablement state
20394
			if (width <= breakpoints[i].width) {
108539
	 * @boolean
20395
				breakpoint = breakpoints[i].name;
108540
	 */
20396
				break;
108541
	enable: true,
20397
			}
108542
108543
	/**
108544
	 * Class name to give to the end grouping row
108545
	 * @type string
108546
	 */
108547
	endClassName: 'dtrg-end',
108548
108549
	/**
108550
	 * End grouping label function
108551
	 * @function
108552
	 */
108553
	endRender: null,
108554
108555
	/**
108556
	 * Class name to give to the start grouping row
108557
	 * @type string
108558
	 */
108559
	startClassName: 'dtrg-start',
108560
108561
	/**
108562
	 * Start grouping label function
108563
	 * @function
108564
	 */
108565
	startRender: function (rows, group) {
108566
		return group;
108567
	}
108568
};
108569
108570
RowGroup.version = '1.6.0';
108571
108572
$.fn.dataTable.RowGroup = RowGroup;
108573
$.fn.DataTable.RowGroup = RowGroup;
108574
108575
DataTable.Api.register('rowGroup()', function () {
108576
	return this;
108577
});
108578
108579
DataTable.Api.register('rowGroup().disable()', function () {
108580
	return this.iterator('table', function (ctx) {
108581
		if (ctx.rowGroup) {
108582
			ctx.rowGroup.enable(false);
20398
		}
108583
		}
108584
	});
108585
});
20399
108586
20400
		// Show the columns for that break point
108587
DataTable.Api.register('rowGroup().enable()', function (opts) {
20401
		var columnsVis = this._columnsVisibility(breakpoint);
108588
	return this.iterator('table', function (ctx) {
20402
		this.s.current = columnsVis;
108589
		if (ctx.rowGroup) {
108590
			ctx.rowGroup.enable(opts === undefined ? true : opts);
108591
		}
108592
	});
108593
});
20403
108594
20404
		// Set the class before the column visibility is changed so event
108595
DataTable.Api.register('rowGroup().enabled()', function () {
20405
		// listeners know what the state is. Need to determine if there are
108596
	var ctx = this.context;
20406
		// any columns that are not visible but can be shown
20407
		var collapsedClass = false;
20408
108597
20409
		for (i = 0, iLen = columns.length; i < iLen; i++) {
108598
	return ctx.length && ctx[0].rowGroup ? ctx[0].rowGroup.enabled() : false;
20410
			if (
108599
});
20411
				columnsVis[i] === false &&
108600
20412
				!columns[i].never &&
108601
DataTable.Api.register('rowGroup().dataSrc()', function (val) {
20413
				!columns[i].control &&
108602
	if (val === undefined) {
20414
				!dt.column(i).visible() === false
108603
		let s = this.context[0].rowGroup;
20415
			) {
108604
		return s ? s.dataSrc() : [];
20416
				collapsedClass = true;
108605
	}
20417
				break;
108606
20418
			}
108607
	return this.iterator('table', function (ctx) {
108608
		if (! ctx.rowGroup) {
108609
			new RowGroup(this.context[0]);
20419
		}
108610
		}
20420
108611
20421
		$(dt.table().node()).toggleClass('collapsed', collapsedClass);
108612
		ctx.rowGroup.dataSrc(val);
108613
	});
108614
});
20422
108615
20423
		var changed = false;
108616
// Attach a listener to the document which listens for DataTables initialisation
20424
		var visible = 0;
108617
// events so we can automatically initialise
20425
		var dtSettings = dt.settings()[0];
108618
$(document).on('preInit.dt.dtrg', function (e, settings, json) {
20426
		var colGroup = $(dt.table().node()).children('colgroup');
108619
	if (e.namespace !== 'dt') {
20427
		var colEls = dtSettings.aoColumns.map(function (col) {
108620
		return;
20428
			return col.colEl;
108621
	}
20429
		});
20430
108622
20431
		dt.columns()
108623
	var init = settings.oInit.rowGroup;
20432
			.eq(0)
108624
	var defaults = DataTable.defaults.rowGroup;
20433
			.each(function (colIdx, i) {
20434
				// Do nothing on DataTables' hidden column - DT removes it from the table
20435
				// so we need to slide back
20436
				if (! dt.column(colIdx).visible()) {
20437
					return;
20438
				}
20439
108625
20440
				if (columnsVis[i] === true) {
108626
	if (init || defaults) {
20441
					visible++;
108627
		var opts = $.extend({}, defaults, init);
20442
				}
20443
108628
20444
				if (forceRedraw || columnsVis[i] !== oldVis[i]) {
108629
		if (init !== false) {
20445
					changed = true;
108630
			new RowGroup(settings, opts);
20446
					that._setColumnVis(colIdx, columnsVis[i]);
108631
		}
20447
				}
108632
	}
108633
});
20448
108634
20449
				// DataTables 2 uses `col` to define the width for a column
20450
				// and this needs to run each time, as DataTables will change
20451
				// the column width. We may need to reattach if we've removed
20452
				// an element previously.
20453
				if (! columnsVis[i]) {
20454
					colEls[i].detach();
20455
				}
20456
				else {
20457
					that._colGroupAttach(colGroup, colEls, i);
20458
				}
20459
			});
20460
108635
20461
		if (changed) {
108636
return DataTable;
20462
			dt.columns.adjust();
108637
}));
20463
108638
20464
			this._redrawChildren();
20465
108639
20466
			// Inform listeners of the change
108640
/*! RowReorder 1.5.1
20467
			$(dt.table().node()).trigger('responsive-resize.dt', [
108641
 * © SpryMedia Ltd - datatables.net/license
20468
				dt,
108642
 */
20469
				this._responsiveOnlyHidden()
20470
			]);
20471
108643
20472
			// If no records, update the "No records" display element
108644
(function( factory ){
20473
			if (dt.page.info().recordsDisplay === 0) {
108645
	if ( typeof define === 'function' && define.amd ) {
20474
				$('td', dt.table().body()).eq(0).attr('colspan', visible);
108646
		// AMD
108647
		define( ['jquery', 'datatables.net'], function () {
108648
			return factory( window, document );
108649
		} );
108650
	}
108651
	else if ( typeof exports === 'object' ) {
108652
		// CommonJS
108653
		var cjsRequires = function (root) {
108654
			if ( ! root.DataTable ) {
108655
				require('datatables.net')(root);
20475
			}
108656
			}
108657
		};
108658
108659
		if (typeof window === 'undefined') {
108660
			module.exports = function (root, $) {
108661
				if ( ! root ) {
108662
					// CommonJS environments without a window global must pass a
108663
					// root. This will give an error otherwise
108664
					root = window;
108665
				}
108666
108667
				cjsRequires( root );
108668
				return factory( root, root.document );
108669
			};
108670
		}
108671
		else {
108672
			cjsRequires( window );
108673
			module.exports = factory( window, window.document );
20476
		}
108674
		}
108675
	}
108676
	else {
108677
		// Browser
108678
		factory( window, document );
108679
	}
108680
}(function( window, document ) {
108681
'use strict';
108682
var DataTable = window.DataTable;
20477
108683
20478
		that._controlClass();
20479
	},
20480
108684
20481
	/**
20482
	 * Determine the width of each column in the table so the auto column hiding
20483
	 * has that information to work with. This method is never going to be 100%
20484
	 * perfect since column widths can change slightly per page, but without
20485
	 * seriously compromising performance this is quite effective.
20486
	 *
20487
	 * @private
20488
	 */
20489
	_resizeAuto: function () {
20490
		var dt = this.s.dt;
20491
		var columns = this.s.columns;
20492
		var that = this;
20493
		var visibleColumns = dt
20494
			.columns()
20495
			.indexes()
20496
			.filter(function (idx) {
20497
				return dt.column(idx).visible();
20498
			});
20499
108685
20500
		// Are we allowed to do auto sizing?
108686
/**
20501
		if (!this.c.auto) {
108687
 * @summary     RowReorder
20502
			return;
108688
 * @description Row reordering extension for DataTables
20503
		}
108689
 * @version     1.5.1
108690
 * @author      SpryMedia Ltd
108691
 * @contact     datatables.net
108692
 *
108693
 * This source file is free software, available under the following license:
108694
 *   MIT license - http://datatables.net/license/mit
108695
 *
108696
 * This source file is distributed in the hope that it will be useful, but
108697
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
108698
 * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
108699
 *
108700
 * For details please refer to: http://www.datatables.net
108701
 */
20504
108702
20505
		// Are there any columns that actually need auto-sizing, or do they all
108703
/**
20506
		// have classes defined
108704
 * RowReorder provides the ability in DataTables to click and drag rows to
20507
		if (
108705
 * reorder them. When a row is dropped the data for the rows effected will be
20508
			$.inArray(
108706
 * updated to reflect the change. Normally this data point should also be the
20509
				true,
108707
 * column being sorted upon in the DataTable but this does not need to be the
20510
				$.map(columns, function (c) {
108708
 * case. RowReorder implements a "data swap" method - so the rows being
20511
					return c.auto;
108709
 * reordered take the value of the data point from the row that used to occupy
20512
				})
108710
 * the row's new position.
20513
			) === -1
108711
 *
20514
		) {
108712
 * Initialisation is done by either:
20515
			return;
108713
 *
20516
		}
108714
 * * `rowReorder` parameter in the DataTable initialisation object
108715
 * * `new DataTable.RowReorder( table, opts )` after DataTables
108716
 *   initialisation.
108717
 *
108718
 *  @class
108719
 *  @param {object} settings DataTables settings object for the host table
108720
 *  @param {object} [opts] Configuration options
108721
 *  @requires jQuery 1.7+
108722
 *  @requires DataTables 1.11
108723
 */
108724
var RowReorder = function (dt, opts) {
108725
	// Sanity check that we are using DataTables 1.10 or newer
108726
	if (!DataTable.versionCheck || !DataTable.versionCheck('1.11')) {
108727
		throw 'DataTables RowReorder requires DataTables 1.11 or newer';
108728
	}
20517
108729
20518
		// Clone the table with the current data in it
108730
	// User and defaults configuration object
20519
		var clonedTable = dt.table().node().cloneNode(false);
108731
	this.c = $.extend(true, {}, DataTable.defaults.rowReorder, RowReorder.defaults, opts);
20520
		var clonedHeader = $(dt.table().header().cloneNode(false)).appendTo(
20521
			clonedTable
20522
		);
20523
		var clonedFooter = $(dt.table().footer().cloneNode(false)).appendTo(
20524
			clonedTable
20525
		);
20526
		var clonedBody = $(dt.table().body())
20527
			.clone(false, false)
20528
			.empty()
20529
			.appendTo(clonedTable); // use jQuery because of IE8
20530
108732
20531
		clonedTable.style.width = 'auto';
108733
	// Internal settings
108734
	this.s = {
108735
		/** @type {integer} Scroll body top cache */
108736
		bodyTop: null,
20532
108737
20533
		// Header
108738
		/** @type {DataTable.Api} DataTables' API instance */
20534
		dt.table()
108739
		dt: new DataTable.Api(dt),
20535
			.header.structure(visibleColumns)
20536
			.forEach((row) => {
20537
				var cells = row
20538
					.filter(function (el) {
20539
						return el ? true : false;
20540
					})
20541
					.map(function (el) {
20542
						return $(el.cell)
20543
							.clone(false)
20544
							.css('display', 'table-cell')
20545
							.css('width', 'auto')
20546
							.css('min-width', 0);
20547
					});
20548
108740
20549
				$('<tr/>').append(cells).appendTo(clonedHeader);
108741
		/** @type {function} Data fetch function */
20550
			});
108742
		getDataFn: DataTable.util.get(this.c.dataSrc),
20551
108743
20552
		// Always need an empty row that we can read widths from
108744
		/** @type {array} Pixel positions for row insertion calculation */
20553
		var emptyRow = $('<tr/>').appendTo(clonedBody);
108745
		middles: null,
20554
108746
20555
		for (var i = 0; i < visibleColumns.count(); i++) {
108747
		/** @type {Object} Cached dimension information for use in the mouse move event handler */
20556
			emptyRow.append('<td/>');
108748
		scroll: {},
20557
		}
20558
108749
20559
		// Body rows
108750
		/** @type {integer} Interval object used for smooth scrolling */
20560
		if (this.c.details.renderer._responsiveMovesNodes) {
108751
		scrollInterval: null,
20561
			// Slow but it allows for moving elements around the document
20562
			dt.rows({ page: 'current' }).every(function (rowIdx) {
20563
				var node = this.node();
20564
108752
20565
				if (! node) {
108753
		/** @type {function} Data set function */
20566
					return;
108754
		setDataFn: DataTable.util.set(this.c.dataSrc),
20567
				}
20568
108755
20569
				// We clone the table's rows and cells to create the sizing table
108756
		/** @type {Object} Mouse down information */
20570
				var tr = node.cloneNode(false);
108757
		start: {
108758
			top: 0,
108759
			left: 0,
108760
			offsetTop: 0,
108761
			offsetLeft: 0,
108762
			nodes: [],
108763
			rowIndex: 0
108764
		},
20571
108765
20572
				dt.cells(rowIdx, visibleColumns).every(function (rowIdx2, colIdx) {
108766
		/** @type {integer} Window height cached value */
20573
					// If nodes have been moved out (listHiddenNodes), we need to
108767
		windowHeight: 0,
20574
					// clone from the store
20575
					var store = that.s.childNodeStore[rowIdx + '-' + colIdx];
20576
108768
20577
					if (store) {
108769
		/** @type {integer} Document outer height cached value */
20578
						$(this.node().cloneNode(false))
108770
		documentOuterHeight: 0,
20579
							.append($(store).clone())
20580
							.appendTo(tr);
20581
					}
20582
					else {
20583
						$(this.node()).clone(false).appendTo(tr);
20584
					}
20585
				});
20586
108771
20587
				clonedBody.append(tr);
108772
		/** @type {integer} DOM clone outer height cached value */
20588
			});
108773
		domCloneOuterHeight: 0,
20589
		}
20590
		else {
20591
			// This is much faster, but it doesn't account for moving nodes around
20592
			$(clonedBody)
20593
				.append( $(dt.rows( { page: 'current' } ).nodes()).clone( false ) )
20594
				.find( 'th, td' ).css( 'display', '' );
20595
		}
20596
108774
20597
		// Any cells which were hidden by Responsive in the host table, need to
108775
		/** @type {integer} Flag used for signing if the drop is enabled or not */
20598
		// be visible here for the calculations
108776
		dropAllowed: true
20599
		clonedBody.find('th, td').css('display', '');
108777
	};
108778
108779
	// DOM items
108780
	this.dom = {
108781
		/** @type {jQuery} Cloned row being moved around */
108782
		clone: null,
108783
		cloneParent: null,
108784
108785
		/** @type {jQuery} DataTables scrolling container */
108786
		dtScroll: $('div.dataTables_scrollBody, div.dt-scroll-body', this.s.dt.table().container())
108787
	};
108788
108789
	// Check if row reorder has already been initialised on this table
108790
	var settings = this.s.dt.settings()[0];
108791
	var existing = settings.rowreorder;
108792
108793
	if (existing) {
108794
		return existing;
108795
	}
108796
108797
	if (!this.dom.dtScroll.length) {
108798
		this.dom.dtScroll = $(this.s.dt.table().container(), 'tbody');
108799
	}
20600
108800
20601
		// Footer
108801
	settings.rowreorder = this;
20602
		dt.table()
108802
	this._constructor();
20603
			.footer.structure(visibleColumns)
108803
};
20604
			.forEach((row) => {
20605
				var cells = row
20606
					.filter(function (el) {
20607
						return el ? true : false;
20608
					})
20609
					.map(function (el) {
20610
						return $(el.cell)
20611
							.clone(false)
20612
							.css('display', 'table-cell')
20613
							.css('width', 'auto')
20614
							.css('min-width', 0);
20615
					});
20616
108804
20617
				$('<tr/>').append(cells).appendTo(clonedFooter);
108805
$.extend(RowReorder.prototype, {
20618
			});
108806
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
108807
	 * Constructor
108808
	 */
20619
108809
20620
		// In the inline case extra padding is applied to the first column to
108810
	/**
20621
		// give space for the show / hide icon. We need to use this in the
108811
	 * Initialise the RowReorder instance
20622
		// calculation
108812
	 *
20623
		if (this.c.details.type === 'inline') {
108813
	 * @private
20624
			$(clonedTable).addClass('dtr-inline collapsed');
108814
	 */
20625
		}
108815
	_constructor: function () {
108816
		var that = this;
108817
		var dt = this.s.dt;
108818
		var table = $(dt.table().node());
108819
108820
		// Need to be able to calculate the row positions relative to the table
108821
		if (table.css('position') === 'static') {
108822
			table.css('position', 'relative');
108823
		}
108824
108825
		// listen for mouse down on the target column - we have to implement
108826
		// this rather than using HTML5 drag and drop as drag and drop doesn't
108827
		// appear to work on table rows at this time. Also mobile browsers are
108828
		// not supported.
108829
		// Use `table().container()` rather than just the table node for IE8 -
108830
		// otherwise it only works once...
108831
		$(dt.table().container()).on(
108832
			'mousedown.rowReorder touchstart.rowReorder',
108833
			this.c.selector,
108834
			function (e) {
108835
				if (!that.c.enable) {
108836
					return;
108837
				}
20626
108838
20627
		// It is unsafe to insert elements with the same name into the DOM
108839
				// Ignore excluded children of the selector
20628
		// multiple times. For example, cloning and inserting a checked radio
108840
				if ($(e.target).is(that.c.excludedChildren)) {
20629
		// clears the checked state of the original radio.
108841
					return true;
20630
		$(clonedTable).find('[name]').removeAttr('name');
108842
				}
20631
108843
20632
		// A position absolute table would take the table out of the flow of
108844
				var tr = $(this).closest('tr');
20633
		// our container element, bypassing the height and width (Scroller)
108845
				var row = dt.row(tr);
20634
		$(clonedTable).css('position', 'relative');
20635
108846
20636
		var inserted = $('<div/>')
108847
				// Double check that it is a DataTable row
20637
			.css({
108848
				if (row.any()) {
20638
				width: 1,
108849
					that._emitEvent('pre-row-reorder', {
20639
				height: 1,
108850
						node: row.node(),
20640
				overflow: 'hidden',
108851
						index: row.index()
20641
				clear: 'both'
108852
					});
20642
			})
20643
			.append(clonedTable);
20644
108853
20645
		inserted.insertBefore(dt.table().node());
108854
					that._mouseDown(e, tr);
108855
					return false;
108856
				}
108857
			}
108858
		);
20646
108859
20647
		// The cloned table now contains the smallest that each column can be
108860
		dt.on('destroy.rowReorder', function () {
20648
		emptyRow.children().each(function (i) {
108861
			$(dt.table().container()).off('.rowReorder');
20649
			var idx = dt.column.index('fromVisible', i);
108862
			dt.off('.rowReorder');
20650
			columns[idx].minWidth = this.offsetWidth || 0;
20651
		});
108863
		});
20652
108864
20653
		inserted.remove();
108865
		this._keyup = this._keyup.bind(this);
20654
	},
108866
	},
20655
108867
108868
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
108869
	 * Private methods
108870
	 */
108871
20656
	/**
108872
	/**
20657
	 * Get the state of the current hidden columns - controlled by Responsive only
108873
	 * Cache the measurements that RowReorder needs in the mouse move handler
108874
	 * to attempt to speed things up, rather than reading from the DOM.
108875
	 *
108876
	 * @private
20658
	 */
108877
	 */
20659
	_responsiveOnlyHidden: function () {
108878
	_cachePositions: function () {
20660
		var dt = this.s.dt;
108879
		var dt = this.s.dt;
20661
108880
20662
		return $.map(this.s.current, function (v, i) {
108881
		// Frustratingly, if we add `position:relative` to the tbody, the
20663
			// If the column is hidden by DataTables then it can't be hidden by
108882
		// position is still relatively to the parent. So we need to adjust
20664
			// Responsive!
108883
		// for that
20665
			if (dt.column(i).visible() === false) {
108884
		var headerHeight = $(dt.table().node()).find('thead').outerHeight();
20666
				return true;
108885
20667
			}
108886
		// Need to pass the nodes through jQuery to get them in document order,
20668
			return v;
108887
		// not what DataTables thinks it is, since we have been altering the
108888
		// order
108889
		var nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
108890
		var middles = $.map(nodes, function (node, i) {
108891
			var top = $(node).position().top - headerHeight;
108892
108893
			return (top + top + $(node).outerHeight()) / 2;
20669
		});
108894
		});
108895
108896
		this.s.middles = middles;
108897
		this.s.bodyTop = $(dt.table().body()).offset().top;
108898
		this.s.windowHeight = $(window).height();
108899
		this.s.documentOuterHeight = $(document).outerHeight();
108900
		this.s.bodyArea = this._calcBodyArea();
20670
	},
108901
	},
20671
108902
20672
	/**
108903
	/**
20673
	 * Set a column's visibility.
108904
	 * Clone a row so it can be floated around the screen
20674
	 *
20675
	 * We don't use DataTables' column visibility controls in order to ensure
20676
	 * that column visibility can Responsive can no-exist. Since only IE8+ is
20677
	 * supported (and all evergreen browsers of course) the control of the
20678
	 * display attribute works well.
20679
	 *
108905
	 *
20680
	 * @param {integer} col      Column index
108906
	 * @param  {jQuery} target Node to be cloned
20681
	 * @param {boolean} showHide Show or hide (true or false)
20682
	 * @private
108907
	 * @private
20683
	 */
108908
	 */
20684
	_setColumnVis: function (col, showHide) {
108909
	_clone: function (target) {
20685
		var that = this;
20686
		var dt = this.s.dt;
108910
		var dt = this.s.dt;
20687
		var display = showHide ? '' : 'none'; // empty string will remove the attr
108911
		var clone = $(dt.table().node().cloneNode(false))
108912
			.addClass('dt-rowReorder-float')
108913
			.append('<tbody/>')
108914
			.append(target.clone(false));
108915
108916
		// Match the table and column widths - read all sizes before setting
108917
		// to reduce reflows
108918
		var tableWidth = target.outerWidth();
108919
		var tableHeight = target.outerHeight();
108920
		var scrollBody = $($(this.s.dt.table().node()).parent());
108921
		var scrollWidth = scrollBody.width();
108922
		var scrollLeft = scrollBody.scrollLeft();
108923
		var sizes = target.children().map(function () {
108924
			return $(this).width();
108925
		});
20688
108926
20689
		this._setHeaderVis(col, showHide, dt.table().header.structure());
108927
		clone
20690
		this._setHeaderVis(col, showHide, dt.table().footer.structure());
108928
			.width(tableWidth)
108929
			.height(tableHeight)
108930
			.find('tr')
108931
			.children()
108932
			.each(function (i) {
108933
				this.style.width = sizes[i] + 'px';
108934
			});
20691
108935
20692
		dt.column(col)
108936
		var cloneParent = $('<div>')
20693
			.nodes()
108937
			.addClass('dt-rowReorder-float-parent')
20694
			.to$()
108938
			.width(scrollWidth)
20695
			.css('display', display)
108939
			.append(clone)
20696
			.toggleClass('dtr-hidden', !showHide);
108940
			.appendTo('body')
108941
			.scrollLeft(scrollLeft);
20697
108942
20698
		// If the are child nodes stored, we might need to reinsert them
108943
		// Insert into the document to have it floating around
20699
		if (!$.isEmptyObject(this.s.childNodeStore)) {
108944
20700
			dt.cells(null, col)
108945
		this.dom.clone = clone;
20701
				.indexes()
108946
		this.dom.cloneParent = cloneParent;
20702
				.each(function (idx) {
108947
		this.s.domCloneOuterHeight = clone.outerHeight();
20703
					that._childNodesRestore(dt, idx.row, idx.column);
20704
				});
20705
		}
20706
	},
108948
	},
20707
108949
20708
	/**
108950
	/**
20709
	 * Set a column's visibility, taking into account multiple rows
108951
	 * Update the cloned item's position in the document
20710
	 * in a header / footer and colspan attributes
108952
	 *
20711
	 * @param {*} col
108953
	 * @param  {object} e Event giving the mouse's position
20712
	 * @param {*} showHide
108954
	 * @private
20713
	 * @param {*} structure
20714
	 */
108955
	 */
20715
	_setHeaderVis: function (col, showHide, structure) {
108956
	_clonePosition: function (e) {
20716
		var that = this;
108957
		var start = this.s.start;
20717
		var display = showHide ? '' : 'none';
108958
		var topDiff = this._eventToPage(e, 'Y') - start.top;
108959
		var leftDiff = this._eventToPage(e, 'X') - start.left;
108960
		var snap = this.c.snapX;
108961
		var left;
108962
		var top = topDiff + start.offsetTop;
20718
108963
20719
		// We use the `null`s in the structure array to indicate that a cell
108964
		if (snap === true) {
20720
		// should expand over that one if there is a colspan, but it might
108965
			left = start.offsetLeft;
20721
		// also have been filled by a rowspan, so we need to expand the
108966
		}
20722
		// rowspan cells down through the structure
108967
		else if (typeof snap === 'number') {
20723
		structure.forEach(function (row, rowIdx) {
108968
			left = start.offsetLeft + snap;
20724
			for (var col = 0; col < row.length; col++) {
108969
		}
20725
				if (row[col] && row[col].rowspan > 1) {
108970
		else {
20726
					var span = row[col].rowspan;
108971
			left = leftDiff + start.offsetLeft + this.dom.cloneParent.scrollLeft();
108972
		}
20727
108973
20728
					for (var i=1 ; i<span ; i++) {
108974
		if (top < 0) {
20729
						structure[rowIdx + i][col] = {};
108975
			top = 0;
20730
					}
108976
		}
20731
				}
108977
		else if (top + this.s.domCloneOuterHeight > this.s.documentOuterHeight) {
20732
			}
108978
			top = this.s.documentOuterHeight - this.s.domCloneOuterHeight;
108979
		}
108980
108981
		this.dom.cloneParent.css({
108982
			top: top,
108983
			left: left
20733
		});
108984
		});
108985
	},
20734
108986
20735
		structure.forEach(function (row) {
108987
	/**
20736
			if (row[col] && row[col].cell) {
108988
	 * Emit an event on the DataTable for listeners
20737
				$(row[col].cell)
108989
	 *
20738
					.css('display', display)
108990
	 * @param  {string} name Event name
20739
					.toggleClass('dtr-hidden', !showHide);
108991
	 * @param  {array} args Event arguments
20740
			}
108992
	 * @private
20741
			else {
108993
	 */
20742
				// In a colspan - need to rewind calc the new span since
108994
	_emitEvent: function ( name, args )
20743
				// display:none elements do not count as being spanned over
108995
	{
20744
				var search = col;
108996
		var ret;
20745
108997
20746
				while (search >= 0) {
108998
		this.s.dt.iterator( 'table', function ( ctx, i ) {
20747
					if (row[search] && row[search].cell) {
108999
			var innerRet = $(ctx.nTable).triggerHandler( name+'.dt', args );
20748
						row[search].cell.colSpan = that._colspan(row, search);
20749
						break;
20750
					}
20751
109000
20752
					search--;
109001
			if (innerRet !== undefined) {
20753
				}
109002
				ret = innerRet;
20754
			}
109003
			}
20755
		});
109004
		} );
109005
109006
		return ret;
20756
	},
109007
	},
20757
109008
20758
	/**
109009
	/**
20759
	 * How many columns should this cell span
109010
	 * Get pageX/Y position from an event, regardless of if it is a mouse or
109011
	 * touch event.
20760
	 *
109012
	 *
20761
	 * @param {*} row Header structure row
109013
	 * @param  {object} e Event
20762
	 * @param {*} idx The column index of the cell to span
109014
	 * @param  {string} pos X or Y (must be a capital)
109015
	 * @private
20763
	 */
109016
	 */
20764
	_colspan: function (row, idx) {
109017
	_eventToPage: function (e, pos) {
20765
		var colspan = 1;
109018
		if (e.type.indexOf('touch') !== -1) {
20766
109019
			return e.originalEvent.touches[0]['page' + pos];
20767
		for (var col = idx + 1; col < row.length; col++) {
20768
			if (row[col] === null && this.s.current[col]) {
20769
				// colspan and not hidden by Responsive
20770
				colspan++;
20771
			}
20772
			else if (row[col]) {
20773
				// Got the next cell, jump out
20774
				break;
20775
			}
20776
		}
109020
		}
20777
109021
20778
		return colspan;
109022
		return e['page' + pos];
20779
	},
109023
	},
20780
109024
20781
	/**
109025
	/**
20782
	 * Update the cell tab indexes for keyboard accessibility. This is called on
109026
	 * Mouse down event handler. Read initial positions and add event handlers
20783
	 * every table draw - that is potentially inefficient, but also the least
109027
	 * for the move.
20784
	 * complex option given that column visibility can change on the fly. Its a
20785
	 * shame user-focus was removed from CSS 3 UI, as it would have solved this
20786
	 * issue with a single CSS statement.
20787
	 *
109028
	 *
109029
	 * @param  {object} e      Mouse event
109030
	 * @param  {jQuery} target TR element that is to be moved
20788
	 * @private
109031
	 * @private
20789
	 */
109032
	 */
20790
	_tabIndexes: function () {
109033
	_mouseDown: function (e, target) {
109034
		var that = this;
20791
		var dt = this.s.dt;
109035
		var dt = this.s.dt;
20792
		var cells = dt.cells({ page: 'current' }).nodes().to$();
109036
		var start = this.s.start;
20793
		var ctx = dt.settings()[0];
109037
		var cancelable = this.c.cancelable;
20794
		var target = this.c.details.target;
20795
109038
20796
		cells.filter('[data-dtr-keyboard]').removeData('[data-dtr-keyboard]');
109039
		var offset = target.offset();
109040
		start.top = this._eventToPage(e, 'Y');
109041
		start.left = this._eventToPage(e, 'X');
109042
		start.offsetTop = offset.top;
109043
		start.offsetLeft = offset.left;
109044
		start.nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
20797
109045
20798
		if (typeof target === 'number') {
109046
		this._cachePositions();
20799
			dt.cells(null, target, { page: 'current' })
109047
		this._clone(target);
20800
				.nodes()
109048
		this._clonePosition(e);
20801
				.to$()
20802
				.attr('tabIndex', ctx.iTabIndex)
20803
				.data('dtr-keyboard', 1);
20804
		}
20805
		else {
20806
			// This is a bit of a hack - we need to limit the selected nodes to just
20807
			// those of this table
20808
			if (target === 'td:first-child, th:first-child') {
20809
				target = '>td:first-child, >th:first-child';
20810
			}
20811
109049
20812
			var rows = dt.rows({ page: 'current' }).nodes();
109050
		var bodyY = this._eventToPage(e, 'Y') - this.s.bodyTop;
20813
			var nodes = target === 'tr'
109051
		start.rowIndex = this._calcRowIndexByPos(bodyY);
20814
				? $(rows)
20815
				: $(target, rows);
20816
109052
20817
			nodes
109053
		this.dom.target = target;
20818
				.attr('tabIndex', ctx.iTabIndex)
109054
		target.addClass('dt-rowReorder-moving');
20819
				.data('dtr-keyboard', 1);
20820
		}
20821
	}
20822
});
20823
109055
20824
/**
109056
		$(document)
20825
 * List of default breakpoints. Each item in the array is an object with two
109057
			.on('mouseup.rowReorder touchend.rowReorder', function (e) {
20826
 * properties:
109058
				that._mouseUp(e);
20827
 *
109059
			})
20828
 * * `name` - the breakpoint name.
109060
			.on('mousemove.rowReorder touchmove.rowReorder', function (e) {
20829
 * * `width` - the breakpoint width
109061
				that._mouseMove(e);
20830
 *
109062
			});
20831
 * @name Responsive.breakpoints
20832
 * @static
20833
 */
20834
Responsive.breakpoints = [
20835
	{ name: 'desktop', width: Infinity },
20836
	{ name: 'tablet-l', width: 1024 },
20837
	{ name: 'tablet-p', width: 768 },
20838
	{ name: 'mobile-l', width: 480 },
20839
	{ name: 'mobile-p', width: 320 }
20840
];
20841
109063
20842
/**
109064
		// Check if window is x-scrolling - if not, disable it for the duration
20843
 * Display methods - functions which define how the hidden data should be shown
109065
		// of the drag
20844
 * in the table.
109066
		if ($(window).width() === $(document).width()) {
20845
 *
109067
			$(document.body).addClass('dt-rowReorder-noOverflow');
20846
 * @namespace
109068
		}
20847
 * @name Responsive.defaults
109069
20848
 * @static
109070
		// Cache scrolling information so mouse move doesn't need to read.
20849
 */
109071
		// This assumes that the window and DT scroller will not change size
20850
Responsive.display = {
109072
		// during an row drag, which I think is a fair assumption
20851
	childRow: function (row, update, render) {
109073
		var scrollWrapper = this.dom.dtScroll;
20852
		var rowNode = $(row.node());
109074
		this.s.scroll = {
109075
			windowHeight: $(window).height(),
109076
			windowWidth: $(window).width(),
109077
			dtTop: scrollWrapper.length ? scrollWrapper.offset().top : null,
109078
			dtLeft: scrollWrapper.length ? scrollWrapper.offset().left : null,
109079
			dtHeight: scrollWrapper.length ? scrollWrapper.outerHeight() : null,
109080
			dtWidth: scrollWrapper.length ? scrollWrapper.outerWidth() : null
109081
		};
109082
109083
		// Add keyup handler if dragging is cancelable
109084
		if (cancelable) {
109085
			$(document).on('keyup', this._keyup);
109086
		}
109087
	},
109088
109089
	/**
109090
	 * Mouse move event handler - move the cloned row and shuffle the table's
109091
	 * rows if required.
109092
	 *
109093
	 * @param  {object} e Mouse event
109094
	 * @private
109095
	 */
109096
	_mouseMove: function (e) {
109097
		this._clonePosition(e);
20853
109098
20854
		if (update) {
109099
		var start = this.s.start;
20855
			if (rowNode.hasClass('dtr-expanded')) {
109100
		var cancelable = this.c.cancelable;
20856
				row.child(render(), 'child').show();
20857
109101
20858
				return true;
109102
		if (cancelable) {
20859
			}
109103
			var bodyArea = this.s.bodyArea;
109104
			var cloneArea = this._calcCloneParentArea();
109105
109106
			this.s.dropAllowed = this._rectanglesIntersect(bodyArea, cloneArea);
109107
			$(this.dom.cloneParent).toggleClass('drop-not-allowed', !this.s.dropAllowed);
20860
		}
109108
		}
20861
		else {
20862
			if (!rowNode.hasClass('dtr-expanded')) {
20863
				var rendered = render();
20864
109109
20865
				if (rendered === false) {
109110
		// Transform the mouse position into a position in the table's body
20866
					return false;
109111
		var bodyY = this._eventToPage(e, 'Y') - this.s.bodyTop;
20867
				}
109112
		var middles = this.s.middles;
109113
		var insertPoint = null;
20868
109114
20869
				row.child(rendered, 'child').show();
109115
		// Determine where the row should be inserted based on the mouse
20870
				return true;
109116
		// position
109117
		for (var i = 0, ien = middles.length; i < ien; i++) {
109118
			if (bodyY < middles[i]) {
109119
				insertPoint = i;
109120
				break;
20871
			}
109121
			}
20872
			else {
109122
		}
20873
				row.child(false);
20874
109123
20875
				return false;
109124
		if (insertPoint === null) {
109125
			insertPoint = middles.length;
109126
		}
109127
109128
		if (cancelable) {
109129
			if (!this.s.dropAllowed) {
109130
				// Move the row back to its original position becasuse the drop is not allowed
109131
				insertPoint =
109132
					start.rowIndex > this.s.lastInsert ? start.rowIndex + 1 : start.rowIndex;
20876
			}
109133
			}
109134
109135
			this.dom.target.toggleClass('dt-rowReorder-moving', this.s.dropAllowed);
20877
		}
109136
		}
109137
109138
		this._moveTargetIntoPosition(insertPoint);
109139
109140
		this._shiftScroll(e);
20878
	},
109141
	},
20879
109142
20880
	childRowImmediate: function (row, update, render) {
109143
	/**
20881
		var rowNode = $(row.node());
109144
	 * Mouse up event handler - release the event handlers and perform the
109145
	 * table updates
109146
	 *
109147
	 * @param  {object} e Mouse event
109148
	 * @private
109149
	 */
109150
	_mouseUp: function (e) {
109151
		var that = this;
109152
		var dt = this.s.dt;
109153
		var i, ien;
109154
		var dataSrc = this.c.dataSrc;
109155
		var dropAllowed = this.s.dropAllowed;
20882
109156
20883
		if (
109157
		if (!dropAllowed) {
20884
			(!update && rowNode.hasClass('dtr-expanded')) ||
109158
			that._cancel();
20885
			!row.responsive.hasHidden()
109159
			return;
20886
		) {
109160
		}
20887
			// User interaction and the row is show, or nothing to show
20888
			row.child(false);
20889
109161
20890
			return false;
109162
		// Calculate the difference
109163
		var startNodes = this.s.start.nodes;
109164
		var endNodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
109165
		var idDiff = {};
109166
		var fullDiff = [];
109167
		var diffNodes = [];
109168
		var getDataFn = this.s.getDataFn;
109169
		var setDataFn = this.s.setDataFn;
109170
109171
		for (i = 0, ien = startNodes.length; i < ien; i++) {
109172
			if (startNodes[i] !== endNodes[i]) {
109173
				var id = dt.row(endNodes[i]).id();
109174
				var endRowData = dt.row(endNodes[i]).data();
109175
				var startRowData = dt.row(startNodes[i]).data();
109176
109177
				if (id) {
109178
					idDiff[id] = getDataFn(startRowData);
109179
				}
109180
109181
				fullDiff.push({
109182
					node: endNodes[i],
109183
					oldData: getDataFn(endRowData),
109184
					newData: getDataFn(startRowData),
109185
					newPosition: i,
109186
					oldPosition: $.inArray(endNodes[i], startNodes)
109187
				});
109188
109189
				diffNodes.push(endNodes[i]);
109190
			}
20891
		}
109191
		}
20892
		else {
20893
			// Display
20894
			var rendered = render();
20895
109192
20896
			if (rendered === false) {
109193
		// Create event args
20897
				return false;
109194
		var eventArgs = [
109195
			fullDiff,
109196
			{
109197
				dataSrc: dataSrc,
109198
				nodes: diffNodes,
109199
				values: idDiff,
109200
				triggerRow: dt.row(this.dom.target),
109201
				originalEvent: e
20898
			}
109202
			}
109203
		];
20899
109204
20900
			row.child(rendered, 'child').show();
109205
		// Emit event
109206
		var eventResult = this._emitEvent( 'row-reorder', eventArgs );
20901
109207
20902
			return true;
109208
		if (eventResult === false) {
109209
			that._cancel();
109210
			return;
20903
		}
109211
		}
20904
	},
20905
109212
20906
	// This is a wrapper so the modal options for Bootstrap and jQuery UI can
109213
		// Remove cloned elements, handlers, etc
20907
	// have options passed into them. This specific one doesn't need to be a
109214
		this._cleanupDragging();
20908
	// function but it is for consistency in the `modal` name
20909
	modal: function (options) {
20910
		return function (row, update, render, closeCallback) {
20911
			var modal;
20912
			var rendered = render();
20913
109215
20914
			if (rendered === false) {
109216
		var update = function () {
20915
				return false;
109217
			if (that.c.update) {
20916
			}
109218
				for (i = 0, ien = fullDiff.length; i < ien; i++) {
109219
					var row = dt.row(fullDiff[i].node);
109220
					var rowData = row.data();
20917
109221
20918
			if (!update) {
109222
					setDataFn(rowData, fullDiff[i].newData);
20919
				// Show a modal
20920
				var close = function () {
20921
					modal.remove(); // will tidy events for us
20922
					$(document).off('keypress.dtr');
20923
					$(row.node()).removeClass('dtr-expanded');
20924
109223
20925
					closeCallback();
109224
					// Invalidate the cell that has the same data source as the dataSrc
20926
				};
109225
					dt.columns().every(function () {
109226
						if (this.dataSrc() === dataSrc) {
109227
							dt.cell(fullDiff[i].node, this.index()).invalidate('data');
109228
						}
109229
					});
109230
				}
20927
109231
20928
				modal = $('<div class="dtr-modal"/>')
109232
				// Trigger row reordered event
20929
					.append(
109233
				that._emitEvent('row-reordered', eventArgs);
20930
						$('<div class="dtr-modal-display"/>')
20931
							.append(
20932
								$('<div class="dtr-modal-content"/>')
20933
									.data('dtr-row-idx', row.index())
20934
									.append(rendered)
20935
							)
20936
							.append(
20937
								$(
20938
									'<div class="dtr-modal-close">&times;</div>'
20939
								).click(function () {
20940
									close();
20941
								})
20942
							)
20943
					)
20944
					.append(
20945
						$('<div class="dtr-modal-background"/>').click(
20946
							function () {
20947
								close();
20948
							}
20949
						)
20950
					)
20951
					.appendTo('body');
20952
109234
20953
				$(row.node()).addClass('dtr-expanded');
109235
				dt.draw(false);
109236
			}
109237
		};
20954
109238
20955
				$(document).on('keyup.dtr', function (e) {
109239
		// Editor interface
20956
					if (e.keyCode === 27) {
109240
		if (this.c.editor) {
20957
						e.stopPropagation();
109241
			// Disable user interaction while Editor is submitting
109242
			this.c.enable = false;
109243
109244
			this.c.editor
109245
				.edit(diffNodes, false, $.extend({ submit: 'changed' }, this.c.formOptions))
109246
				.multiSet(dataSrc, idDiff)
109247
				.one('preSubmitCancelled.rowReorder', function () {
109248
					that.c.enable = true;
109249
					that.c.editor.off('.rowReorder');
109250
					dt.draw(false);
109251
				})
109252
				.one('submitUnsuccessful.rowReorder', function () {
109253
					dt.draw(false);
109254
				})
109255
				.one('submitSuccess.rowReorder', function () {
109256
					update();
109257
				})
109258
				.one('submitComplete', function () {
109259
					that.c.enable = true;
109260
					that.c.editor.off('.rowReorder');
109261
				})
109262
				.submit();
109263
		}
109264
		else {
109265
			update();
109266
		}
109267
	},
20958
109268
20959
						close();
109269
	/**
20960
					}
109270
	 * Moves the current target into the given position within the table
20961
				});
109271
	 * and caches the new positions
109272
	 *
109273
	 * @param  {integer} insertPoint Position
109274
	 * @private
109275
	 */
109276
	_moveTargetIntoPosition: function (insertPoint) {
109277
		var dt = this.s.dt;
109278
109279
		// Perform the DOM shuffle if it has changed from last time
109280
		if (this.s.lastInsert === null || this.s.lastInsert !== insertPoint) {
109281
			var nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
109282
			var insertPlacement = '';
109283
109284
			if (insertPoint > this.s.lastInsert) {
109285
				this.dom.target.insertAfter(nodes[insertPoint - 1]);
109286
				insertPlacement = 'after';
20962
			}
109287
			}
20963
			else {
109288
			else {
20964
				modal = $('div.dtr-modal-content');
109289
				this.dom.target.insertBefore(nodes[insertPoint]);
109290
				insertPlacement = 'before';
109291
			}
20965
109292
20966
				if (modal.length && row.index() === modal.data('dtr-row-idx')) {
109293
			this._cachePositions();
20967
					modal.empty().append(rendered);
109294
109295
			this.s.lastInsert = insertPoint;
109296
109297
			this._emitEvent('row-reorder-changed', {
109298
				insertPlacement,
109299
				insertPoint,
109300
				row: dt.row(this.dom.target)
109301
			});
109302
		}
109303
	},
109304
109305
	/**
109306
	 * Removes the cloned elements, event handlers, scrolling intervals, etc
109307
	 *
109308
	 * @private
109309
	 */
109310
	_cleanupDragging: function () {
109311
		var cancelable = this.c.cancelable;
109312
109313
		this.dom.clone.remove();
109314
		this.dom.cloneParent.remove();
109315
		this.dom.clone = null;
109316
		this.dom.cloneParent = null;
109317
109318
		this.dom.target.removeClass('dt-rowReorder-moving');
109319
		//this.dom.target = null;
109320
109321
		$(document).off('.rowReorder');
109322
		$(document.body).removeClass('dt-rowReorder-noOverflow');
109323
109324
		clearInterval(this.s.scrollInterval);
109325
		this.s.scrollInterval = null;
109326
109327
		if (cancelable) {
109328
			$(document).off('keyup', this._keyup);
109329
		}
109330
	},
109331
109332
	/**
109333
	 * Move the window and DataTables scrolling during a drag to scroll new
109334
	 * content into view.
109335
	 *
109336
	 * This matches the `_shiftScroll` method used in AutoFill, but only
109337
	 * horizontal scrolling is considered here.
109338
	 *
109339
	 * @param  {object} e Mouse move event object
109340
	 * @private
109341
	 */
109342
	_shiftScroll: function (e) {
109343
		var that = this;
109344
		var scroll = this.s.scroll;
109345
		var runInterval = false;
109346
		var scrollSpeed = 5;
109347
		var buffer = 65;
109348
		var windowY = e.pageY - document.body.scrollTop,
109349
			windowVert,
109350
			dtVert;
109351
109352
		// Window calculations - based on the mouse position in the window,
109353
		// regardless of scrolling
109354
		if (windowY < $(window).scrollTop() + buffer) {
109355
			windowVert = scrollSpeed * -1;
109356
		}
109357
		else if (windowY > scroll.windowHeight + $(window).scrollTop() - buffer) {
109358
			windowVert = scrollSpeed;
109359
		}
109360
109361
		// DataTables scrolling calculations - based on the table's position in
109362
		// the document and the mouse position on the page
109363
		if (scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer) {
109364
			dtVert = scrollSpeed * -1;
109365
		}
109366
		else if (scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer) {
109367
			dtVert = scrollSpeed;
109368
		}
109369
109370
		// This is where it gets interesting. We want to continue scrolling
109371
		// without requiring a mouse move, so we need an interval to be
109372
		// triggered. The interval should continue until it is no longer needed,
109373
		// but it must also use the latest scroll commands (for example consider
109374
		// that the mouse might move from scrolling up to scrolling left, all
109375
		// with the same interval running. We use the `scroll` object to "pass"
109376
		// this information to the interval. Can't use local variables as they
109377
		// wouldn't be the ones that are used by an already existing interval!
109378
		if (windowVert || dtVert) {
109379
			scroll.windowVert = windowVert;
109380
			scroll.dtVert = dtVert;
109381
			runInterval = true;
109382
		}
109383
		else if (this.s.scrollInterval) {
109384
			// Don't need to scroll - remove any existing timer
109385
			clearInterval(this.s.scrollInterval);
109386
			this.s.scrollInterval = null;
109387
		}
109388
109389
		// If we need to run the interval to scroll and there is no existing
109390
		// interval (if there is an existing one, it will continue to run)
109391
		if (!this.s.scrollInterval && runInterval) {
109392
			this.s.scrollInterval = setInterval(function () {
109393
				// Don't need to worry about setting scroll <0 or beyond the
109394
				// scroll bound as the browser will just reject that.
109395
				if (scroll.windowVert) {
109396
					var top = $(document).scrollTop();
109397
					$(document).scrollTop(top + scroll.windowVert);
109398
109399
					if (top !== $(document).scrollTop()) {
109400
						var move = parseFloat(that.dom.cloneParent.css('top'));
109401
						that.dom.cloneParent.css('top', move + scroll.windowVert);
109402
					}
20968
				}
109403
				}
20969
				else {
109404
20970
					// Modal not shown, nothing to update
109405
				// DataTables scrolling
20971
					return null;
109406
				if (scroll.dtVert) {
109407
					var scroller = that.dom.dtScroll[0];
109408
109409
					if (scroll.dtVert) {
109410
						scroller.scrollTop += scroll.dtVert;
109411
					}
20972
				}
109412
				}
20973
			}
109413
			}, 20);
109414
		}
109415
	},
20974
109416
20975
			if (options && options.header) {
109417
	/**
20976
				$('div.dtr-modal-content').prepend(
109418
	 * Calculates the current area of the table body and returns it as a rectangle
20977
					'<h2>' + options.header(row) + '</h2>'
109419
	 *
20978
				);
109420
	 * @private
20979
			}
109421
	 */
109422
	_calcBodyArea: function (e) {
109423
		var dt = this.s.dt;
109424
		var offset = $(dt.table().body()).offset();
109425
		var area = {
109426
			left: offset.left,
109427
			top: offset.top,
109428
			right: offset.left + $(dt.table().body()).width(),
109429
			bottom: offset.top + $(dt.table().body()).height()
109430
		};
20980
109431
20981
			return true;
109432
		return area;
109433
	},
109434
109435
	/**
109436
	 * Calculates the current area of the cloned parent element and returns it as a rectangle
109437
	 *
109438
	 * @private
109439
	 */
109440
	_calcCloneParentArea: function (e) {
109441
		var offset = $(this.dom.cloneParent).offset();
109442
		var area = {
109443
			left: offset.left,
109444
			top: offset.top,
109445
			right: offset.left + $(this.dom.cloneParent).width(),
109446
			bottom: offset.top + $(this.dom.cloneParent).height()
20982
		};
109447
		};
20983
	}
20984
};
20985
109448
20986
/**
109449
		return area;
20987
 * Display methods - functions which define how the hidden data should be shown
109450
	},
20988
 * in the table.
20989
 *
20990
 * @namespace
20991
 * @name Responsive.defaults
20992
 * @static
20993
 */
20994
Responsive.renderer = {
20995
	listHiddenNodes: function () {
20996
		var fn = function (api, rowIdx, columns) {
20997
			var that = this;
20998
			var ul = $(
20999
				'<ul data-dtr-index="' + rowIdx + '" class="dtr-details"/>'
21000
			);
21001
			var found = false;
21002
109451
21003
			$.each(columns, function (i, col) {
109452
	/**
21004
				if (col.hidden) {
109453
	 * Returns whether the given reactangles intersect or not
21005
					var klass = col.className
109454
	 *
21006
						? 'class="' + col.className + '"'
109455
	 * @private
21007
						: '';
109456
	 */
109457
	_rectanglesIntersect: function (a, b) {
109458
		var noOverlap =
109459
			a.left >= b.right || b.left >= a.right || a.top >= b.bottom || b.top >= a.bottom;
21008
109460
21009
					$(
109461
		return !noOverlap;
21010
						'<li ' +
109462
	},
21011
							klass +
21012
							' data-dtr-index="' +
21013
							col.columnIndex +
21014
							'" data-dt-row="' +
21015
							col.rowIndex +
21016
							'" data-dt-column="' +
21017
							col.columnIndex +
21018
							'">' +
21019
							'<span class="dtr-title">' +
21020
							col.title +
21021
							'</span> ' +
21022
							'</li>'
21023
					)
21024
						.append(
21025
							$('<span class="dtr-data"/>').append(
21026
								that._childNodes(
21027
									api,
21028
									col.rowIndex,
21029
									col.columnIndex
21030
								)
21031
							)
21032
						) // api.cell( col.rowIndex, col.columnIndex ).node().childNodes ) )
21033
						.appendTo(ul);
21034
109463
21035
					found = true;
109464
	/**
21036
				}
109465
	 * Calculates the index of the row which lays under the given Y position or
21037
			});
109466
	 * returns -1 if no such row
109467
	 *
109468
	 * @param  {integer} insertPoint Position
109469
	 * @private
109470
	 */
109471
	_calcRowIndexByPos: function (bodyY) {
109472
		// Determine where the row is located based on the mouse
109473
		// position
21038
109474
21039
			return found ? ul : false;
109475
		var dt = this.s.dt;
21040
		};
109476
		var nodes = $.uniqueSort(dt.rows({ page: 'current' }).nodes().toArray());
109477
		var rowIndex = -1;
109478
		var headerHeight = $(dt.table().node()).find('thead').outerHeight();
21041
109479
21042
		fn._responsiveMovesNodes = true;
109480
		$.each(nodes, function (i, node) {
109481
			var top = $(node).position().top - headerHeight;
109482
			var bottom = top + $(node).outerHeight();
109483
109484
			if (bodyY >= top && bodyY <= bottom) {
109485
				rowIndex = i;
109486
			}
109487
		});
21043
109488
21044
		return fn;
109489
		return rowIndex;
21045
	},
109490
	},
21046
109491
21047
	listHidden: function () {
109492
	/**
21048
		return function (api, rowIdx, columns) {
109493
	 * Handles key up events and cancels the dragging if ESC key is pressed
21049
			var data = $.map(columns, function (col) {
109494
	 *
21050
				var klass = col.className
109495
	 * @param  {object} e Mouse move event object
21051
					? 'class="' + col.className + '"'
109496
	 * @private
21052
					: '';
109497
	 */
21053
109498
	_keyup: function (e) {
21054
				return col.hidden
109499
		var cancelable = this.c.cancelable;
21055
					? '<li ' +
21056
							klass +
21057
							' data-dtr-index="' +
21058
							col.columnIndex +
21059
							'" data-dt-row="' +
21060
							col.rowIndex +
21061
							'" data-dt-column="' +
21062
							col.columnIndex +
21063
							'">' +
21064
							'<span class="dtr-title">' +
21065
							col.title +
21066
							'</span> ' +
21067
							'<span class="dtr-data">' +
21068
							col.data +
21069
							'</span>' +
21070
							'</li>'
21071
					: '';
21072
			}).join('');
21073
109500
21074
			return data
109501
		if (cancelable && e.which === 27) {
21075
				? $(
109502
			// ESC key is up
21076
						'<ul data-dtr-index="' +
109503
			e.preventDefault();
21077
							rowIdx +
109504
			this._cancel();
21078
							'" class="dtr-details"/>'
109505
		}
21079
				).append(data)
21080
				: false;
21081
		};
21082
	},
109506
	},
21083
109507
21084
	tableAll: function (options) {
109508
	/**
21085
		options = $.extend(
109509
	 * Cancels the dragging, moves target back into its original position
21086
			{
109510
	 * and cleans up the dragging
21087
				tableClass: ''
109511
	 *
21088
			},
109512
	 * @param  {object} e Mouse move event object
21089
			options
109513
	 * @private
21090
		);
109514
	 */
109515
	_cancel: function () {
109516
		var start = this.s.start;
109517
		var insertPoint = start.rowIndex > this.s.lastInsert ? start.rowIndex + 1 : start.rowIndex;
21091
109518
21092
		return function (api, rowIdx, columns) {
109519
		this._moveTargetIntoPosition(insertPoint);
21093
			var data = $.map(columns, function (col) {
21094
				var klass = col.className
21095
					? 'class="' + col.className + '"'
21096
					: '';
21097
109520
21098
				return (
109521
		this._cleanupDragging();
21099
					'<tr ' +
21100
					klass +
21101
					' data-dt-row="' +
21102
					col.rowIndex +
21103
					'" data-dt-column="' +
21104
					col.columnIndex +
21105
					'">' +
21106
					'<td>' +
21107
					( '' !== col.title
21108
						? col.title + ':'
21109
						: ''
21110
					) +
21111
					'</td> ' +
21112
					'<td>' +
21113
					col.data +
21114
					'</td>' +
21115
					'</tr>'
21116
				);
21117
			}).join('');
21118
109522
21119
			return $(
109523
		// Emit event
21120
				'<table class="' +
109524
		this._emitEvent('row-reorder-canceled', [this.s.start.rowIndex]);
21121
					options.tableClass +
21122
					' dtr-details" width="100%"/>'
21123
			).append(data);
21124
		};
21125
	}
109525
	}
21126
};
109526
});
21127
109527
21128
/**
109528
/**
21129
 * Responsive default settings for initialisation
109529
 * RowReorder default settings for initialisation
21130
 *
109530
 *
21131
 * @namespace
109531
 * @namespace
21132
 * @name Responsive.defaults
109532
 * @name RowReorder.defaults
21133
 * @static
109533
 * @static
21134
 */
109534
 */
21135
Responsive.defaults = {
109535
RowReorder.defaults = {
21136
	/**
109536
	/**
21137
	 * List of breakpoints for the instance. Note that this means that each
109537
	 * Data point in the host row's data source object for where to get and set
21138
	 * instance can have its own breakpoints. Additionally, the breakpoints
109538
	 * the data to reorder. This will normally also be the sorting column.
21139
	 * cannot be changed once an instance has been creased.
21140
	 *
109539
	 *
21141
	 * @type {Array}
109540
	 * @type {Number}
21142
	 * @default Takes the value of `Responsive.breakpoints`
21143
	 */
109541
	 */
21144
	breakpoints: Responsive.breakpoints,
109542
	dataSrc: 0,
21145
109543
21146
	/**
109544
	/**
21147
	 * Enable / disable auto hiding calculations. It can help to increase
109545
	 * Editor instance that will be used to perform the update
21148
	 * performance slightly if you disable this option, but all columns would
21149
	 * need to have breakpoint classes assigned to them
21150
	 *
109546
	 *
109547
	 * @type {DataTable.Editor}
109548
	 */
109549
	editor: null,
109550
109551
	/**
109552
	 * Enable / disable RowReorder's user interaction
21151
	 * @type {Boolean}
109553
	 * @type {Boolean}
21152
	 * @default  `true`
21153
	 */
109554
	 */
21154
	auto: true,
109555
	enable: true,
21155
109556
21156
	/**
109557
	/**
21157
	 * Details control. If given as a string value, the `type` property of the
109558
	 * Form options to pass to Editor when submitting a change in the row order.
21158
	 * default object is set to that value, and the defaults used for the rest
109559
	 * See the Editor `from-options` object for details of the options
21159
	 * of the object - this is for ease of implementation.
109560
	 * available.
21160
	 *
109561
	 * @type {Object}
21161
	 * The object consists of the following properties:
21162
	 *
21163
	 * * `display` - A function that is used to show and hide the hidden details
21164
	 * * `renderer` - function that is called for display of the child row data.
21165
	 *   The default function will show the data from the hidden columns
21166
	 * * `target` - Used as the selector for what objects to attach the child
21167
	 *   open / close to
21168
	 * * `type` - `false` to disable the details display, `inline` or `column`
21169
	 *   for the two control types
21170
	 *
21171
	 * @type {Object|string}
21172
	 */
109562
	 */
21173
	details: {
109563
	formOptions: {},
21174
		display: Responsive.display.childRow,
21175
109564
21176
		renderer: Responsive.renderer.listHidden(),
109565
	/**
109566
	 * Drag handle selector. This defines the element that when dragged will
109567
	 * reorder a row.
109568
	 *
109569
	 * @type {String}
109570
	 */
109571
	selector: 'td:first-child',
21177
109572
21178
		target: 0,
109573
	/**
109574
	 * Optionally lock the dragged row's x-position. This can be `true` to
109575
	 * fix the position match the host table's, `false` to allow free movement
109576
	 * of the row, or a number to define an offset from the host table.
109577
	 *
109578
	 * @type {Boolean|number}
109579
	 */
109580
	snapX: false,
21179
109581
21180
		type: 'inline'
109582
	/**
21181
	},
109583
	 * Update the table's data on drop
109584
	 *
109585
	 * @type {Boolean}
109586
	 */
109587
	update: true,
21182
109588
21183
	/**
109589
	/**
21184
	 * Orthogonal data request option. This is used to define the data type
109590
	 * Selector for children of the drag handle selector that mouseDown events
21185
	 * requested when Responsive gets the data to show in the child row.
109591
	 * will be passed through to and drag will not activate
21186
	 *
109592
	 *
21187
	 * @type {String}
109593
	 * @type {String}
21188
	 */
109594
	 */
21189
	orthogonal: 'display'
109595
	excludedChildren: 'a',
109596
109597
	/**
109598
	 * Enable / disable the canceling of the drag & drop interaction
109599
	 *
109600
	 * @type {Boolean}
109601
	 */
109602
	cancelable: false
21190
};
109603
};
21191
109604
21192
/*
109605
/*
Lines 21194-21282 Responsive.defaults = { Link Here
21194
 */
109607
 */
21195
var Api = $.fn.dataTable.Api;
109608
var Api = $.fn.dataTable.Api;
21196
109609
21197
// Doesn't do anything - workaround for a bug in DT... Not documented
109610
// Doesn't do anything - work around for a bug in DT... Not documented
21198
Api.register('responsive()', function () {
109611
Api.register('rowReorder()', function () {
21199
	return this;
109612
	return this;
21200
});
109613
});
21201
109614
21202
Api.register('responsive.index()', function (li) {
109615
Api.register('rowReorder.enable()', function (toggle) {
21203
	li = $(li);
109616
	if (toggle === undefined) {
21204
109617
		toggle = true;
21205
	return {
109618
	}
21206
		column: li.data('dtr-index'),
21207
		row: li.parent().data('dtr-index')
21208
	};
21209
});
21210
109619
21211
Api.register('responsive.rebuild()', function () {
21212
	return this.iterator('table', function (ctx) {
109620
	return this.iterator('table', function (ctx) {
21213
		if (ctx._responsive) {
109621
		if (ctx.rowreorder) {
21214
			ctx._responsive._classLogic();
109622
			ctx.rowreorder.c.enable = toggle;
21215
		}
109623
		}
21216
	});
109624
	});
21217
});
109625
});
21218
109626
21219
Api.register('responsive.recalc()', function () {
109627
Api.register('rowReorder.disable()', function () {
21220
	return this.iterator('table', function (ctx) {
109628
	return this.iterator('table', function (ctx) {
21221
		if (ctx._responsive) {
109629
		if (ctx.rowreorder) {
21222
			ctx._responsive._resizeAuto();
109630
			ctx.rowreorder.c.enable = false;
21223
			ctx._responsive._resize();
21224
		}
109631
		}
21225
	});
109632
	});
21226
});
109633
});
21227
109634
21228
Api.register('responsive.hasHidden()', function () {
21229
	var ctx = this.context[0];
21230
21231
	return ctx._responsive
21232
		? $.inArray(false, ctx._responsive._responsiveOnlyHidden()) !== -1
21233
		: false;
21234
});
21235
21236
Api.registerPlural(
21237
	'columns().responsiveHidden()',
21238
	'column().responsiveHidden()',
21239
	function () {
21240
		return this.iterator(
21241
			'column',
21242
			function (settings, column) {
21243
				return settings._responsive
21244
					? settings._responsive._responsiveOnlyHidden()[column]
21245
					: false;
21246
			},
21247
			1
21248
		);
21249
	}
21250
);
21251
21252
/**
109635
/**
21253
 * Version information
109636
 * Version information
21254
 *
109637
 *
21255
 * @name Responsive.version
109638
 * @name RowReorder.version
21256
 * @static
109639
 * @static
21257
 */
109640
 */
21258
Responsive.version = '3.0.7';
109641
RowReorder.version = '1.5.1';
21259
109642
21260
$.fn.dataTable.Responsive = Responsive;
109643
$.fn.dataTable.RowReorder = RowReorder;
21261
$.fn.DataTable.Responsive = Responsive;
109644
$.fn.DataTable.RowReorder = RowReorder;
21262
109645
21263
// Attach a listener to the document which listens for DataTables initialisation
109646
// Attach a listener to the document which listens for DataTables initialisation
21264
// events so we can automatically initialise
109647
// events so we can automatically initialise
21265
$(document).on('preInit.dt.dtr', function (e, settings, json) {
109648
$(document).on('init.dt.dtr', function (e, settings, json) {
21266
	if (e.namespace !== 'dt') {
109649
	if (e.namespace !== 'dt') {
21267
		return;
109650
		return;
21268
	}
109651
	}
21269
109652
21270
	if (
109653
	var init = settings.oInit.rowReorder;
21271
		$(settings.nTable).hasClass('responsive') ||
109654
	var defaults = DataTable.defaults.rowReorder;
21272
		$(settings.nTable).hasClass('dt-responsive') ||
109655
21273
		settings.oInit.responsive ||
109656
	if (init || defaults) {
21274
		DataTable.defaults.responsive
109657
		var opts = $.extend({}, init, defaults);
21275
	) {
21276
		var init = settings.oInit.responsive;
21277
109658
21278
		if (init !== false) {
109659
		if (init !== false) {
21279
			new Responsive(settings, $.isPlainObject(init) ? init : {});
109660
			new RowReorder(settings, opts);
21280
		}
109661
		}
21281
	}
109662
	}
21282
});
109663
});
Lines 21286-21348 return DataTable; Link Here
21286
}));
109667
}));
21287
109668
21288
109669
21289
/*! DataTables styling wrapper for Responsive
21290
 * © SpryMedia Ltd - datatables.net/license
21291
 */
21292
21293
(function( factory ){
21294
	if ( typeof define === 'function' && define.amd ) {
21295
		// AMD
21296
		define( ['jquery', 'datatables.net-dt', 'datatables.net-responsive'], function ( $ ) {
21297
			return factory( $, window, document );
21298
		} );
21299
	}
21300
	else if ( typeof exports === 'object' ) {
21301
		// CommonJS
21302
		var jq = require('jquery');
21303
		var cjsRequires = function (root, $) {
21304
			if ( ! $.fn.dataTable ) {
21305
				require('datatables.net-dt')(root, $);
21306
			}
21307
21308
			if ( ! $.fn.dataTable.Responsive ) {
21309
				require('datatables.net-responsive')(root, $);
21310
			}
21311
		};
21312
21313
		if (typeof window === 'undefined') {
21314
			module.exports = function (root, $) {
21315
				if ( ! root ) {
21316
					// CommonJS environments without a window global must pass a
21317
					// root. This will give an error otherwise
21318
					root = window;
21319
				}
21320
21321
				if ( ! $ ) {
21322
					$ = jq( root );
21323
				}
21324
21325
				cjsRequires( root, $ );
21326
				return factory( $, root, root.document );
21327
			};
21328
		}
21329
		else {
21330
			cjsRequires( window, jq );
21331
			module.exports = factory( jq, window, window.document );
21332
		}
21333
	}
21334
	else {
21335
		// Browser
21336
		factory( jQuery, window, document );
21337
	}
21338
}(function( $, window, document ) {
21339
'use strict';
21340
var DataTable = $.fn.dataTable;
21341
21342
21343
21344
21345
return DataTable;
21346
}));
21347
21348
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.min.css (-5 / +14 lines)
Lines 4-21 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 228, 228, 228;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-header-align-items: center;--dt-header-vertical-align: middle;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable tbody td.dt-control{text-align:center;cursor:pointer}table.dataTable tbody td.dt-control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tbody tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable tfoot:empty{display:none}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before,:root[data-theme=dark] table.dataTable td.dt-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent}div.dt-scroll{width:100%}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0;padding-top:0px;padding-bottom:0px;border-top-width:0px;border-bottom-width:0px}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0;overflow:hidden}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before{position:absolute;display:block;bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{position:absolute;display:block;top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order{position:relative;width:12px;height:20px}table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0, 0, 0, 0.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc span.dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc span.dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc span.dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) span.dt-column-order:empty,table.dataTable thead>tr>th.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled span.dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) span.dt-column-order:empty,table.dataTable thead>tr>td.sorting_desc_disabled span.dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled span.dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th div.dt-column-header,table.dataTable thead>tr>th div.dt-column-footer,table.dataTable thead>tr>td div.dt-column-header,table.dataTable thead>tr>td div.dt-column-footer,table.dataTable tfoot>tr>th div.dt-column-header,table.dataTable tfoot>tr>th div.dt-column-footer,table.dataTable tfoot>tr>td div.dt-column-header,table.dataTable tfoot>tr>td div.dt-column-footer{display:flex;justify-content:space-between;align-items:var(--dt-header-align-items);gap:4px}table.dataTable thead>tr>th div.dt-column-header span.dt-column-title,table.dataTable thead>tr>th div.dt-column-footer span.dt-column-title,table.dataTable thead>tr>td div.dt-column-header span.dt-column-title,table.dataTable thead>tr>td div.dt-column-footer span.dt-column-title,table.dataTable tfoot>tr>th div.dt-column-header span.dt-column-title,table.dataTable tfoot>tr>th div.dt-column-footer span.dt-column-title,table.dataTable tfoot>tr>td div.dt-column-header span.dt-column-title,table.dataTable tfoot>tr>td div.dt-column-footer span.dt-column-title{flex-grow:1}table.dataTable thead>tr>th div.dt-column-header span.dt-column-title:empty,table.dataTable thead>tr>th div.dt-column-footer span.dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-header span.dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-footer span.dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-header span.dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-footer span.dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-header span.dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-footer span.dt-column-title:empty{display:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255, 255, 255, 0.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable th.dt-type-numeric div.dt-column-header,table.dataTable th.dt-type-numeric div.dt-column-footer,table.dataTable th.dt-type-date div.dt-column-header,table.dataTable th.dt-type-date div.dt-column-footer,table.dataTable td.dt-type-numeric div.dt-column-header,table.dataTable td.dt-type-numeric div.dt-column-footer,table.dataTable td.dt-type-date div.dt-column-header,table.dataTable td.dt-type-date div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-left div.dt-column-header,table.dataTable th.dt-left div.dt-column-footer,table.dataTable td.dt-left div.dt-column-header,table.dataTable td.dt-left div.dt-column-footer{flex-direction:row}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-right div.dt-column-header,table.dataTable th.dt-right div.dt-column-footer,table.dataTable td.dt-right div.dt-column-header,table.dataTable td.dt-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-justify div.dt-column-header,table.dataTable th.dt-justify div.dt-column-footer,table.dataTable td.dt-justify div.dt-column-header,table.dataTable td.dt-justify div.dt-column-footer{flex-direction:row}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left;vertical-align:var(--dt-header-vertical-align)}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-left div.dt-column-header,table.dataTable thead th.dt-head-left div.dt-column-footer,table.dataTable thead td.dt-head-left div.dt-column-header,table.dataTable thead td.dt-head-left div.dt-column-footer,table.dataTable tfoot th.dt-head-left div.dt-column-header,table.dataTable tfoot th.dt-head-left div.dt-column-footer,table.dataTable tfoot td.dt-head-left div.dt-column-header,table.dataTable tfoot td.dt-head-left div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-right div.dt-column-header,table.dataTable thead th.dt-head-right div.dt-column-footer,table.dataTable thead td.dt-head-right div.dt-column-header,table.dataTable thead td.dt-head-right div.dt-column-footer,table.dataTable tfoot th.dt-head-right div.dt-column-header,table.dataTable tfoot th.dt-head-right div.dt-column-footer,table.dataTable tfoot td.dt-head-right div.dt-column-header,table.dataTable tfoot td.dt-head-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-justify div.dt-column-header,table.dataTable thead th.dt-head-justify div.dt-column-footer,table.dataTable thead td.dt-head-justify div.dt-column-header,table.dataTable thead td.dt-head-justify div.dt-column-footer,table.dataTable tfoot th.dt-head-justify div.dt-column-header,table.dataTable tfoot th.dt-head-justify div.dt-column-footer,table.dataTable tfoot td.dt-head-justify div.dt-column-header,table.dataTable tfoot td.dt-head-justify div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}:root{--dt-row-hover-alpha: 0.035;--dt-row-stripe-alpha: 0.023;--dt-column-ordering-alpha: 0.019;--dt-row-selected-stripe-alpha: 0.923;--dt-row-selected-column-ordering-alpha: 0.919}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0, 0, 0, 0.3);padding:10px 10px 6px 10px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(228, 228, 228);color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha))}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha))}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha))}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1)}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha))}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)))}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container div.dt-layout-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin:.75em 0}div.dt-container div.dt-layout-row div.dt-layout-cell{display:flex;justify-content:space-between;align-items:center}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start{justify-content:flex-start;margin-right:auto}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end{justify-content:flex-end;margin-left:auto}div.dt-container div.dt-layout-row div.dt-layout-cell:empty{display:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row:not(.dt-layout-table){display:block}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell{display:block;text-align:center}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell>*{margin:.5em 0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start{margin-right:0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end{margin-left:0}}div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:1em}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:1em}div.dt-container div.dt-layout-full{width:100%}div.dt-container div.dt-layout-full>*:only-child{margin-left:auto;margin-right:auto}div.dt-container div.dt-layout-table>div{display:block}@media screen and (max-width: 767px){div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:0}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:0}}div.dt-container{position:relative;clear:both}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none;cursor:pointer;color:inherit;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:rgba(0, 0, 0, 0.5);border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:white;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:#0c0c0c;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0;padding:0}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89, 91, 94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dt-container .dt-paging .dt-paging-button:active{background:#3a3a3a}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}
13
:root{--dt-row-selected: 13, 110, 253;--dt-row-selected-text: 255, 255, 255;--dt-row-selected-link: 228, 228, 228;--dt-row-stripe: 0, 0, 0;--dt-row-hover: 0, 0, 0;--dt-column-ordering: 0, 0, 0;--dt-header-align-items: center;--dt-header-vertical-align: middle;--dt-html-background: white}:root.dark{--dt-html-background: rgb(33, 37, 41)}table.dataTable tbody td.dt-control{text-align:center;cursor:pointer}table.dataTable tbody td.dt-control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable tbody tr.dt-hasChild td.dt-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable tfoot:empty{display:none}html.dark table.dataTable td.dt-control:before,:root[data-bs-theme=dark] table.dataTable td.dt-control:before,:root[data-theme=dark] table.dataTable td.dt-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent}div.dt-scroll{width:100%}div.dt-scroll-body thead tr,div.dt-scroll-body tfoot tr{height:0}div.dt-scroll-body thead tr th,div.dt-scroll-body thead tr td,div.dt-scroll-body tfoot tr th,div.dt-scroll-body tfoot tr td{height:0 !important;padding-top:0px !important;padding-bottom:0px !important;border-top-width:0px !important;border-bottom-width:0px !important}div.dt-scroll-body thead tr th div.dt-scroll-sizing,div.dt-scroll-body thead tr td div.dt-scroll-sizing,div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,div.dt-scroll-body tfoot tr td div.dt-scroll-sizing{height:0 !important;overflow:hidden !important}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:before{position:absolute;display:block;bottom:50%;content:"▲";content:"▲"/""}table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:after{position:absolute;display:block;top:50%;content:"▼";content:"▼"/""}table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order,table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order{position:relative;width:12px;height:20px}table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-asc .dt-column-order:after,table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order:before,table.dataTable thead>tr>th.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:after,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-asc .dt-column-order:after,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:after{left:0;opacity:.125;line-height:9px;font-size:.8em}table.dataTable thead>tr>th.dt-orderable-asc,table.dataTable thead>tr>th.dt-orderable-desc,table.dataTable thead>tr>td.dt-orderable-asc,table.dataTable thead>tr>td.dt-orderable-desc{cursor:pointer}table.dataTable thead>tr>th.dt-orderable-asc:hover,table.dataTable thead>tr>th.dt-orderable-desc:hover,table.dataTable thead>tr>td.dt-orderable-asc:hover,table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(0, 0, 0, 0.05);outline-offset:-2px}table.dataTable thead>tr>th.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>th.dt-ordering-desc .dt-column-order:after,table.dataTable thead>tr>td.dt-ordering-asc .dt-column-order:before,table.dataTable thead>tr>td.dt-ordering-desc .dt-column-order:after{opacity:.6}table.dataTable thead>tr>th.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) .dt-column-order:empty,table.dataTable thead>tr>th.sorting_desc_disabled .dt-column-order:after,table.dataTable thead>tr>th.sorting_asc_disabled .dt-column-order:before,table.dataTable thead>tr>td.dt-orderable-none:not(.dt-ordering-asc,.dt-ordering-desc) .dt-column-order:empty,table.dataTable thead>tr>td.sorting_desc_disabled .dt-column-order:after,table.dataTable thead>tr>td.sorting_asc_disabled .dt-column-order:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead>tr>th div.dt-column-header,table.dataTable thead>tr>th div.dt-column-footer,table.dataTable thead>tr>td div.dt-column-header,table.dataTable thead>tr>td div.dt-column-footer,table.dataTable tfoot>tr>th div.dt-column-header,table.dataTable tfoot>tr>th div.dt-column-footer,table.dataTable tfoot>tr>td div.dt-column-header,table.dataTable tfoot>tr>td div.dt-column-footer{display:flex;justify-content:space-between;align-items:var(--dt-header-align-items);gap:4px}table.dataTable thead>tr>th div.dt-column-header .dt-column-title,table.dataTable thead>tr>th div.dt-column-footer .dt-column-title,table.dataTable thead>tr>td div.dt-column-header .dt-column-title,table.dataTable thead>tr>td div.dt-column-footer .dt-column-title,table.dataTable tfoot>tr>th div.dt-column-header .dt-column-title,table.dataTable tfoot>tr>th div.dt-column-footer .dt-column-title,table.dataTable tfoot>tr>td div.dt-column-header .dt-column-title,table.dataTable tfoot>tr>td div.dt-column-footer .dt-column-title{flex-grow:1}table.dataTable thead>tr>th div.dt-column-header .dt-column-title:empty,table.dataTable thead>tr>th div.dt-column-footer .dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-header .dt-column-title:empty,table.dataTable thead>tr>td div.dt-column-footer .dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-header .dt-column-title:empty,table.dataTable tfoot>tr>th div.dt-column-footer .dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-header .dt-column-title:empty,table.dataTable tfoot>tr>td div.dt-column-footer .dt-column-title:empty{display:none}div.dt-scroll-body>table.dataTable>thead>tr>th,div.dt-scroll-body>table.dataTable>thead>tr>td{overflow:hidden}:root.dark table.dataTable thead>tr>th.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>th.dt-orderable-desc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-asc:hover,:root.dark table.dataTable thead>tr>td.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>th.dt-orderable-desc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-asc:hover,:root[data-bs-theme=dark] table.dataTable thead>tr>td.dt-orderable-desc:hover{outline:2px solid rgba(255, 255, 255, 0.05)}div.dt-processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-22px;text-align:center;padding:2px;z-index:10}div.dt-processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dt-processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgb(13, 110, 253);background:rgb(var(--dt-row-selected));animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dt-processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dt-processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dt-processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th,table.dataTable td{box-sizing:border-box}table.dataTable th.dt-type-numeric,table.dataTable th.dt-type-date,table.dataTable td.dt-type-numeric,table.dataTable td.dt-type-date{text-align:right}table.dataTable th.dt-type-numeric div.dt-column-header,table.dataTable th.dt-type-numeric div.dt-column-footer,table.dataTable th.dt-type-date div.dt-column-header,table.dataTable th.dt-type-date div.dt-column-footer,table.dataTable td.dt-type-numeric div.dt-column-header,table.dataTable td.dt-type-numeric div.dt-column-footer,table.dataTable td.dt-type-date div.dt-column-header,table.dataTable td.dt-type-date div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-left div.dt-column-header,table.dataTable th.dt-left div.dt-column-footer,table.dataTable td.dt-left div.dt-column-header,table.dataTable td.dt-left div.dt-column-footer{flex-direction:row}table.dataTable th.dt-center,table.dataTable td.dt-center{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-right div.dt-column-header,table.dataTable th.dt-right div.dt-column-footer,table.dataTable td.dt-right div.dt-column-header,table.dataTable td.dt-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-justify div.dt-column-header,table.dataTable th.dt-justify div.dt-column-footer,table.dataTable td.dt-justify div.dt-column-header,table.dataTable td.dt-justify div.dt-column-footer{flex-direction:row}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable th.dt-empty,table.dataTable td.dt-empty{text-align:center;vertical-align:top}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left;vertical-align:var(--dt-header-vertical-align)}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-left div.dt-column-header,table.dataTable thead th.dt-head-left div.dt-column-footer,table.dataTable thead td.dt-head-left div.dt-column-header,table.dataTable thead td.dt-head-left div.dt-column-footer,table.dataTable tfoot th.dt-head-left div.dt-column-header,table.dataTable tfoot th.dt-head-left div.dt-column-footer,table.dataTable tfoot td.dt-head-left div.dt-column-header,table.dataTable tfoot td.dt-head-left div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-right div.dt-column-header,table.dataTable thead th.dt-head-right div.dt-column-footer,table.dataTable thead td.dt-head-right div.dt-column-header,table.dataTable thead td.dt-head-right div.dt-column-footer,table.dataTable tfoot th.dt-head-right div.dt-column-header,table.dataTable tfoot th.dt-head-right div.dt-column-footer,table.dataTable tfoot td.dt-head-right div.dt-column-header,table.dataTable tfoot td.dt-head-right div.dt-column-footer{flex-direction:row-reverse}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-justify div.dt-column-header,table.dataTable thead th.dt-head-justify div.dt-column-footer,table.dataTable thead td.dt-head-justify div.dt-column-header,table.dataTable thead td.dt-head-justify div.dt-column-footer,table.dataTable tfoot th.dt-head-justify div.dt-column-header,table.dataTable tfoot th.dt-head-justify div.dt-column-footer,table.dataTable tfoot td.dt-head-justify div.dt-column-header,table.dataTable tfoot td.dt-head-justify div.dt-column-footer{flex-direction:row}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}:root{--dt-row-hover-alpha: 0.035;--dt-row-stripe-alpha: 0.023;--dt-column-ordering-alpha: 0.019;--dt-row-selected-stripe-alpha: 0.923;--dt-row-selected-column-ordering-alpha: 0.919}table.dataTable{width:100%;margin:0 auto;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable>thead>tr>th,table.dataTable>thead>tr>td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>tfoot>tr>th,table.dataTable>tfoot>tr>td{border-top:1px solid rgba(0, 0, 0, 0.3);padding:10px 10px 6px 10px}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr:first-child>*{border-top:none}table.dataTable>tbody>tr:last-child>*{border-bottom:none}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);color:rgb(255, 255, 255);color:rgb(var(--dt-row-selected-text))}table.dataTable>tbody>tr.selected a{color:rgb(228, 228, 228);color:rgb(var(--dt-row-selected-link))}table.dataTable>tbody>tr>th,table.dataTable>tbody>tr>td{padding:8px 10px}table.dataTable.row-border>tbody>tr>*,table.dataTable.display>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border>tbody>tr:first-child>*,table.dataTable.display>tbody>tr:first-child>*{border-top:none}table.dataTable.row-border>tbody>tr.selected+tr.selected>td,table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}table.dataTable.cell-border>tbody>tr>*{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr>*:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border>tbody>tr:first-child>*{border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.stripe>tbody>tr:nth-child(odd)>*,table.dataTable.display>tbody>tr:nth-child(odd)>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-stripe), var(--dt-row-stripe-alpha))}table.dataTable.stripe>tbody>tr:nth-child(odd).selected>*,table.dataTable.display>tbody>tr:nth-child(odd).selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-stripe-alpha))}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), var(--dt-row-hover-alpha))}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px #0d6efd !important;box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), var(--dt-column-ordering-alpha))}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), var(--dt-row-selected-column-ordering-alpha))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd)>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd)>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039);box-shadow:inset 0 0 0 9999px rgba(var(--dt-column-ordering), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.007))}table.dataTable.display>tbody>tr:nth-child(odd).selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr:nth-child(odd).selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) - 0.015))}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha)))}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-hover), calc(var(--dt-row-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha)))}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.007))}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962);box-shadow:inset 0 0 0 9999px rgba(var(--dt-row-selected), calc(var(--dt-row-selected-stripe-alpha) + var(--dt-column-ordering-alpha) + var(--dt-row-hover-alpha) - 0.015))}table.dataTable.compact thead th,table.dataTable.compact thead td,table.dataTable.compact tfoot th,table.dataTable.compact tfoot td,table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}div.dt-container div.dt-layout-row{display:flex;justify-content:space-between;align-items:center;width:100%;margin:.75em 0}div.dt-container div.dt-layout-row div.dt-layout-cell{display:flex;justify-content:space-between;align-items:center}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start{justify-content:flex-start;margin-right:auto}div.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end{justify-content:flex-end;margin-left:auto}div.dt-container div.dt-layout-row div.dt-layout-cell:empty{display:none}@media screen and (max-width: 767px){div.dt-container div.dt-layout-row:not(.dt-layout-table){display:block}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell{display:block;text-align:center}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell>*{margin:.5em 0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start{margin-right:0}div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end{margin-left:0}}div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:1em}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:1em}div.dt-container div.dt-layout-full{width:100%}div.dt-container div.dt-layout-full>*:only-child{margin-left:auto;margin-right:auto}div.dt-container div.dt-layout-table>div{display:block !important}@media screen and (max-width: 767px){div.dt-container div.dt-layout-start>*:not(:last-child){margin-right:0}div.dt-container div.dt-layout-end>*:not(:first-child){margin-left:0}}div.dt-container{position:relative;clear:both}div.dt-container .dt-search input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit;margin-left:3px}div.dt-container .dt-input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;color:inherit}div.dt-container select.dt-input{padding:4px}div.dt-container .dt-paging .dt-paging-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;color:inherit !important;border:1px solid transparent;border-radius:2px;background:transparent}div.dt-container .dt-paging .dt-paging-button.current,div.dt-container .dt-paging .dt-paging-button.current:hover{color:inherit !important;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(0, 0, 0, 0.05);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(229.5, 229.5, 229.5, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05)));background:-webkit-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-moz-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-ms-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:-o-linear-gradient(top, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%);background:linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%)}div.dt-container .dt-paging .dt-paging-button.disabled,div.dt-container .dt-paging .dt-paging-button.disabled:hover,div.dt-container .dt-paging .dt-paging-button.disabled:active{cursor:default;color:rgba(0, 0, 0, 0.5) !important;border:1px solid transparent;background:transparent;box-shadow:none}div.dt-container .dt-paging .dt-paging-button:hover{color:white !important;border:1px solid #111;background-color:#111;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(88.4, 88.4, 88.4)), color-stop(100%, #111));background:-webkit-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:-moz-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:-ms-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:-o-linear-gradient(top, rgb(88.4, 88.4, 88.4) 0%, #111 100%);background:linear-gradient(to bottom, rgb(88.4, 88.4, 88.4) 0%, #111 100%)}div.dt-container .dt-paging .dt-paging-button:active{outline:none;background-color:rgb(11.9, 11.9, 11.9);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgb(42.5, 42.5, 42.5)), color-stop(100%, rgb(11.9, 11.9, 11.9)));background:-webkit-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:-moz-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:-ms-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:-o-linear-gradient(top, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);background:linear-gradient(to bottom, rgb(42.5, 42.5, 42.5) 0%, rgb(11.9, 11.9, 11.9) 100%);box-shadow:inset 0 0 3px #111}div.dt-container .dt-paging .ellipsis{padding:0 1em}div.dt-container .dt-length,div.dt-container .dt-search,div.dt-container .dt-info,div.dt-container .dt-processing,div.dt-container .dt-paging{color:inherit}div.dt-container .dataTables_scroll{clear:both}div.dt-container .dataTables_scroll div.dt-scroll-body{-webkit-overflow-scrolling:touch}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td{vertical-align:middle}div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>thead>tr>td>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>th>div.dataTables_sizing,div.dt-container .dataTables_scroll div.dt-scroll-body>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}div.dt-container.dt-empty-footer tbody>tr:last-child>*{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body{border-bottom:1px solid rgba(0, 0, 0, 0.3)}div.dt-container.dt-empty-footer .dt-scroll-body tbody>tr:last-child>*{border-bottom:none}html.dark{--dt-row-hover: 255, 255, 255;--dt-row-stripe: 255, 255, 255;--dt-column-ordering: 255, 255, 255}html.dark table.dataTable>thead>tr>th,html.dark table.dataTable>thead>tr>td{border-bottom:1px solid rgb(89, 91, 94)}html.dark table.dataTable>thead>tr>th:active,html.dark table.dataTable>thead>tr>td:active{outline:none}html.dark table.dataTable>tfoot>tr>th,html.dark table.dataTable>tfoot>tr>td{border-top:1px solid rgb(89, 91, 94)}html.dark table.dataTable.row-border>tbody>tr>*,html.dark table.dataTable.display>tbody>tr>*{border-top:1px solid rgb(64, 67, 70)}html.dark table.dataTable.row-border>tbody>tr:first-child>*,html.dark table.dataTable.display>tbody>tr:first-child>*{border-top:none}html.dark table.dataTable.row-border>tbody>tr.selected+tr.selected>td,html.dark table.dataTable.display>tbody>tr.selected+tr.selected>td{border-top-color:rgba(13, 110, 253, 0.65);border-top-color:rgba(var(--dt-row-selected), 0.65)}html.dark table.dataTable.cell-border>tbody>tr>th,html.dark table.dataTable.cell-border>tbody>tr>td{border-top:1px solid rgb(64, 67, 70);border-right:1px solid rgb(64, 67, 70)}html.dark table.dataTable.cell-border>tbody>tr>th:first-child,html.dark table.dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid rgb(64, 67, 70)}html.dark .dt-container.dt-empty-footer table.dataTable{border-bottom:1px solid rgb(89, 91, 94)}html.dark .dt-container .dt-search input,html.dark .dt-container .dt-length select{border:1px solid rgba(255, 255, 255, 0.2);background-color:var(--dt-html-background)}html.dark .dt-container .dt-paging .dt-paging-button.current,html.dark .dt-container .dt-paging .dt-paging-button.current:hover{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark .dt-container .dt-paging .dt-paging-button.disabled,html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover,html.dark .dt-container .dt-paging .dt-paging-button.disabled:active{color:#666 !important}html.dark .dt-container .dt-paging .dt-paging-button:hover{border:1px solid rgb(53, 53, 53);background:rgb(53, 53, 53)}html.dark .dt-container .dt-paging .dt-paging-button:active{background:rgb(58.1, 58.1, 58.1)}*[dir=rtl] table.dataTable thead th,*[dir=rtl] table.dataTable thead td,*[dir=rtl] table.dataTable tfoot th,*[dir=rtl] table.dataTable tfoot td{text-align:right}*[dir=rtl] table.dataTable th.dt-type-numeric,*[dir=rtl] table.dataTable th.dt-type-date,*[dir=rtl] table.dataTable td.dt-type-numeric,*[dir=rtl] table.dataTable td.dt-type-date{text-align:left}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start{text-align:right}*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end{text-align:left}*[dir=rtl] div.dt-container div.dt-search input{margin:0 3px 0 0}
14
14
15
15
16
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none}}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(230, 230, 230, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(179, 179, 179, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(179, 179, 179, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)");box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(128, 128, 128, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(128, 128, 128, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr="rgba(153, 153, 153, 0.1)", EndColorStr="rgba(0, 0, 0, 0.1)")}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:flex;float:none;justify-content:space-between;align-items:center;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection .dt-button:focus{outline-offset:-2px}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(179, 179, 179, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(128, 128, 128, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(179, 179, 179, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}
16
@keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dataTables_wrapper{position:relative}div.dt-buttons{position:initial}div.dt-buttons .dt-button{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border-radius:.75em;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8);text-align:center;z-index:2003;overflow:hidden}div.dt-button-info h2{padding:2rem 2rem 1rem 2rem;margin:0;font-weight:normal}div.dt-button-info>div{padding:1em 2em 2em 2em}div.dtb-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:2003}button.dtb-hide-drop{display:none !important}div.dt-button-collection-title{text-align:center;padding:.3em .5em .5em;margin-left:.5em;margin-right:.5em;font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.dt-button-collection-title:empty{display:none}span.dt-button-spacer{display:inline-block;margin:.5em;white-space:nowrap}span.dt-button-spacer.bar{border-left:1px solid rgba(0, 0, 0, 0.3);vertical-align:middle;padding-left:.5em}span.dt-button-spacer.bar:empty{height:1em;width:1px;padding-left:0}div.dt-button-collection .dt-button-active{padding-right:3em}div.dt-button-collection .dt-button-active:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active.dt-button-split{padding-right:0}div.dt-button-collection .dt-button-active.dt-button-split:after{display:none}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child{padding-right:3em}div.dt-button-collection .dt-button-active.dt-button-split>*:first-child:after{position:absolute;top:50%;margin-top:-10px;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection .dt-button-active-a a{padding-right:3em}div.dt-button-collection .dt-button-active-a a:after{position:absolute;right:1em;display:inline-block;content:"✓";color:inherit}div.dt-button-collection span.dt-button-spacer{width:100%;font-size:.9em;text-align:center;margin:.5em 0}div.dt-button-collection span.dt-button-spacer:empty{height:0;width:100%}div.dt-button-collection span.dt-button-spacer.bar{border-left:none;border-bottom:1px solid rgba(0, 0, 0, 0.1);padding-left:0}@media print{table.dataTable tr>*{box-shadow:none !important}}div.dt-buttons>.dt-button,div.dt-buttons>div.dt-button-split .dt-button{position:relative;display:inline-block;box-sizing:border-box;margin-left:.167em;margin-right:.167em;margin-bottom:.333em;padding:.5em 1em;border:1px solid rgba(0, 0, 0, 0.3);border-radius:2px;cursor:pointer;font-size:.88em;line-height:1.6em;color:inherit;white-space:nowrap;overflow:hidden;background-color:rgba(0, 0, 0, 0.1);background:linear-gradient(to bottom, rgba(229.5, 229.5, 229.5, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(229.5, 229.5, 229.5, 0.1)', EndColorStr='rgba(0, 0, 0, 0.1)');-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;outline:none;text-overflow:ellipsis}div.dt-buttons>.dt-button:first-child,div.dt-buttons>div.dt-button-split .dt-button:first-child{margin-left:0}div.dt-buttons>.dt-button.disabled,div.dt-buttons>div.dt-button-split .dt-button.disabled{cursor:default;opacity:.4}div.dt-buttons>.dt-button.dt-button-active:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background-color:hsla(0, 0%, -20%, 0.1);background:linear-gradient(to bottom, rgba(178.5, 178.5, 178.5, 0.1) 0%, hsla(0, 0%, -20%, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(178.5, 178.5, 178.5, 0.1)', EndColorStr='hsla(0, 0%, -20%, 0.1)');box-shadow:inset 1px 1px 3px #999}div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){box-shadow:inset 1px 1px 3px #999;background-color:hsla(0, 0%, -50%, 0.1);background:linear-gradient(to bottom, rgba(127.5, 127.5, 127.5, 0.1) 0%, hsla(0, 0%, -50%, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(127.5, 127.5, 127.5, 0.1)', EndColorStr='hsla(0, 0%, -50%, 0.1)')}div.dt-buttons>.dt-button:hover,div.dt-buttons>div.dt-button-split .dt-button:hover{text-decoration:none}div.dt-buttons>.dt-button:hover:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){border:1px solid #666;background-color:hsla(0, 0%, -30%, 0.1);background:linear-gradient(to bottom, rgba(153, 153, 153, 0.1) 0%, hsla(0, 0%, -30%, 0.1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='rgba(153, 153, 153, 0.1)', EndColorStr='hsla(0, 0%, -30%, 0.1)')}div.dt-buttons>.dt-button:focus:not(.disabled),div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(53, 132, 228)}div.dt-buttons>.dt-button embed,div.dt-buttons>div.dt-button-split .dt-button embed{outline:none}div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(0, 0, 0, 0.15);border-top-right-radius:0;border-bottom-right-radius:0}div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid #666}div.dt-buttons>div.dt-button-split .dt-button:last-child{border-left:1px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0}div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid #666}div.dt-buttons span.dt-button-down-arrow{position:relative;top:-2px;font-size:10px;padding-left:10px;line-height:1em;opacity:.6}div.dt-buttons div.dt-button-split{display:inline-block}div.dt-buttons div.dt-button-split .dt-button:first-child{margin-right:0}div.dt-buttons div.dt-button-split .dt-button:last-child{margin-left:-1px;padding-left:.75em;padding-right:.75em;z-index:2}div.dt-buttons div.dt-button-split .dt-button:last-child span{padding-left:0}div.dt-button-collection{position:absolute;top:0;left:0;width:200px;margin-top:3px;margin-bottom:3px;padding:.75em 0;border:1px solid rgba(0, 0, 0, 0.4);background-color:white;overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.3);box-sizing:border-box}div.dt-button-collection .dt-button{position:relative;left:0;right:0;width:100%;display:flex;float:none;justify-content:space-between;align-items:center;background:none;margin:0;padding:.5em 1em;border:none;text-align:left;cursor:pointer;color:inherit}div.dt-button-collection .dt-button.dt-button-active{background:none;box-shadow:none}div.dt-button-collection .dt-button.disabled{cursor:default;opacity:.4}div.dt-button-collection .dt-button:hover:not(.disabled){border:none;background:rgba(153, 153, 153, 0.1);box-shadow:none}div.dt-button-collection .dt-button:focus{outline-offset:-2px}div.dt-button-collection div.dt-button-split{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:stretch}div.dt-button-collection div.dt-button-split button.dt-button{margin:0;display:inline-block;width:0;flex-grow:1;flex-shrink:0;flex-basis:50px}div.dt-button-collection div.dt-button-split button.dt-button-split-drop{min-width:33px;flex:0}div.dt-button-collection.fixed .dt-button{border-radius:.25em;background:rgba(255, 255, 255, 0.1)}div.dt-button-collection.fixed{position:fixed;display:block;top:50%;left:50%;margin-left:-75px;border-radius:5px;background-color:white;padding:.5em}div.dt-button-collection.fixed.two-column{margin-left:-200px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection.fixed.columns{margin-left:-409px}@media screen and (max-width: 1024px){div.dt-button-collection.fixed.columns{margin-left:-308px}}@media screen and (max-width: 640px){div.dt-button-collection.fixed.columns{margin-left:-203px}}@media screen and (max-width: 460px){div.dt-button-collection.fixed.columns{margin-left:-100px}}div.dt-button-collection.fixed>:last-child{max-height:100vh;overflow:auto}div.dt-button-collection.two-column>:last-child,div.dt-button-collection.three-column>:last-child,div.dt-button-collection.four-column>:last-child{display:block !important;column-gap:8px}div.dt-button-collection.two-column>:last-child>*,div.dt-button-collection.three-column>:last-child>*,div.dt-button-collection.four-column>:last-child>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:400px}div.dt-button-collection.two-column>:last-child{padding-bottom:1px;column-count:2}div.dt-button-collection.three-column{width:450px}div.dt-button-collection.three-column>:last-child{padding-bottom:1px;column-count:3}div.dt-button-collection.four-column{width:600px}div.dt-button-collection.four-column>:last-child{padding-bottom:1px;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.columns{width:auto}div.dt-button-collection.columns>:last-child{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:818px;padding-bottom:1px}div.dt-button-collection.columns>:last-child .dt-button{min-width:200px;flex:0 1;margin:0}div.dt-button-collection.columns.dtb-b3>:last-child,div.dt-button-collection.columns.dtb-b2>:last-child,div.dt-button-collection.columns.dtb-b1>:last-child{justify-content:space-between}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:1 1 32%}div.dt-button-collection.columns.dtb-b2 .dt-button{flex:1 1 48%}div.dt-button-collection.columns.dtb-b1 .dt-button{flex:1 1 100%}@media screen and (max-width: 1024px){div.dt-button-collection.columns>:last-child{width:612px}}@media screen and (max-width: 640px){div.dt-button-collection.columns>:last-child{width:406px}div.dt-button-collection.columns.dtb-b3 .dt-button{flex:0 1 32%}}@media screen and (max-width: 460px){div.dt-button-collection.columns>:last-child{width:200px}}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:2001}.dt-button.processing{color:rgba(0, 0, 0, 0.2)}.dt-button.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border:2px solid rgb(40, 40, 40);border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}html.dark div.dt-buttons>.dt-button,html.dark div.dt-buttons>div.dt-button-split .dt-button{border:1px solid rgb(89, 91, 94);background:rgba(255, 255, 255, 0.15)}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled){background:rgba(178.5, 178.5, 178.5, 0.15);box-shadow:inset 1px 1px 2px black}html.dark div.dt-buttons>.dt-button.dt-button-active:not(.disabled):hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button.dt-button-active:not(.disabled):hover:not(.disabled){background:rgba(127.5, 127.5, 127.5, 0.15);box-shadow:inset 1px 1px 3px black}html.dark div.dt-buttons>.dt-button:hover:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:hover:not(.disabled){background:rgba(178.5, 178.5, 178.5, 0.15)}html.dark div.dt-buttons>.dt-button:focus:not(.disabled),html.dark div.dt-buttons>div.dt-button-split .dt-button:focus:not(.disabled){outline:2px solid rgb(110, 168, 254)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child{border-right:1px solid rgba(255, 255, 255, 0.1)}html.dark div.dt-buttons>div.dt-button-split .dt-button:first-child:hover{border-right:1px solid rgb(89, 91, 94)}html.dark div.dt-buttons>div.dt-button-split .dt-button:last-child:hover{border-left:1px solid rgb(89, 91, 94)}html.dark div.dt-button-collection{border:1px solid rgba(255, 255, 255, 0.15);background-color:rgb(33, 37, 41);box-shadow:3px 4px 10px 1px rgba(0, 0, 0, 0.8)}html.dark div.dt-button-info{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}
17
17
18
18
19
table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>th.dtr-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-column>tbody>tr.dtr-expanded td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded td.control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control:before{border-left-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable>tbody>tr>td.dtr-control.arrow-right::before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control.arrow-right::before{border-right-color:rgba(255, 255, 255, 0.5)}html.dark table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html.dark table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before{border-top-color:rgba(255, 255, 255, 0.5);border-left-color:transparent;border-right-color:transparent}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li,html[data-bs-theme=dark] table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:rgb(64, 67, 70)}html.dark div.dtr-modal div.dtr-modal-display,html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display{background-color:rgb(33, 37, 41);border:1px solid rgba(255, 255, 255, 0.15)}
19
table.fixedHeader-floating,table.fixedHeader-locked{position:relative !important;background-color:var(--dt-html-background);background-color:var(--dt-html-background)}@media print{table.fixedHeader-floating,table.fixedHeader-locked{display:none}}
20
21
22
table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control{cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control:before{margin-right:.5em;display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-inline.collapsed>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.dtr-control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>td.dtr-control:before,table.dataTable.dtr-inline.collapsed>tbody>tr.dtr-expanded>th.dtr-control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td.dtr-control,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th.dtr-control{padding-left:.333em}table.dataTable.dtr-column>tbody>tr>td.dtr-control,table.dataTable.dtr-column>tbody>tr>th.dtr-control,table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.dtr-control:before,table.dataTable.dtr-column>tbody>tr>th.dtr-control:before,table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{display:inline-block;box-sizing:border-box;content:"";border-top:5px solid transparent;border-left:10px solid rgba(0, 0, 0, 0.5);border-bottom:5px solid transparent;border-right:0px solid transparent}table.dataTable.dtr-column>tbody>tr>td.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.dtr-control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>td.control.arrow-right::before,table.dataTable.dtr-column>tbody>tr>th.control.arrow-right::before{border-top:5px solid transparent;border-left:0px solid transparent;border-bottom:5px solid transparent;border-right:10px solid rgba(0, 0, 0, 0.5)}table.dataTable.dtr-column>tbody>tr.dtr-expanded td.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.dtr-control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded td.control:before,table.dataTable.dtr-column>tbody>tr.dtr-expanded th.control:before{border-top:10px solid rgba(0, 0, 0, 0.5);border-left:5px solid transparent;border-bottom:0px solid transparent;border-right:5px solid transparent}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{padding-bottom:0;border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:fit-content;max-height:75%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:.5em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:2.5em}div.dtr-modal div.dtr-modal-content h2{margin-top:0}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0, 0, 0, 0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}html.dark table.dataTable>tbody>tr>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control:before{border-left-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr>td.dtr-control.arrow-right::before,html[data-bs-theme=dark] table.dataTable>tbody>tr>td.dtr-control.arrow-right::before{border-right-color:rgba(255, 255, 255, 0.5) !important}html.dark table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html.dark table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>td.dtr-control:before,html[data-bs-theme=dark] table.dataTable>tbody>tr.dtr-expanded>th.dtr-control:before{border-top-color:rgba(255, 255, 255, 0.5) !important;border-left-color:transparent !important;border-right-color:transparent !important}html.dark table.dataTable>tbody>tr.child ul.dtr-details>li,html[data-bs-theme=dark] table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom-color:rgb(64, 67, 70)}html.dark div.dtr-modal div.dtr-modal-display,html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display{background-color:rgb(33, 37, 41);border:1px solid rgba(255, 255, 255, 0.15)}
23
24
25
table.dataTable tr.dtrg-group th{background-color:rgba(0, 0, 0, 0.1);text-align:left}table.dataTable tr.dtrg-group.dtrg-level-0 th{font-weight:bold}table.dataTable tr.dtrg-group.dtrg-level-1 th,table.dataTable tr.dtrg-group.dtrg-level-2 th,table.dataTable tr.dtrg-group.dtrg-level-3 th,table.dataTable tr.dtrg-group.dtrg-level-4 th,table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(0, 0, 0, 0.05);padding-top:.25em;padding-bottom:.25em;padding-left:2em;font-size:.9em}table.dataTable tr.dtrg-group.dtrg-level-2 th{background-color:rgba(0, 0, 0, 0.01);padding-left:2.5em}table.dataTable tr.dtrg-group.dtrg-level-3 th{background-color:rgba(0, 0, 0, 0.01);padding-left:3em}table.dataTable tr.dtrg-group.dtrg-level-4 th{background-color:rgba(0, 0, 0, 0.01);padding-left:3.5em}table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(0, 0, 0, 0.01);padding-left:4em}html.dark table.dataTable tr.dtrg-group th{background-color:rgba(255, 255, 255, 0.1)}html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th{background-color:rgba(255, 255, 255, 0.05)}html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th,html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th{background-color:rgba(255, 255, 255, 0.01)}
26
27
28
div.dt-rowReorder-float-parent{table-layout:fixed;outline:2px solid rgb(10, 89, 203);z-index:2001;position:absolute !important;overflow:hidden;border-radius:3px}div.dt-rowReorder-float-parent table.dt-rowReorder-float{opacity:.9;background-color:white;margin:0 !important}div.dt-rowReorder-float-parent.drop-not-allowed{cursor:not-allowed}tr.dt-rowReorder-moving{outline:2px solid #888;outline-offset:-2px}body.dt-rowReorder-noOverflow{overflow-x:hidden}table.dataTable td.reorder{text-align:center;cursor:move}html.dark div.dt-rowReorder-float-parent{outline-color:rgb(110, 168, 254)}html.dark div.dt-rowReorder-float-parent table.dt-rowReorder-float{background-color:var(--dt-html-background)}html.dark tr.dt-rowReorder-moving{outline-color:#aaa}
20
29
21
30
(-)a/koha-tmpl/opac-tmpl/lib/datatables/datatables.min.js (-14 / +52 lines)
Lines 4-40 Link Here
4
 *
4
 *
5
 * To rebuild or modify this file with the latest versions of the included
5
 * To rebuild or modify this file with the latest versions of the included
6
 * software please visit:
6
 * software please visit:
7
 *   https://datatables.net/download/#dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7
7
 *   https://datatables.net/download/#dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1
8
 *
8
 *
9
 * Included libraries:
9
 * Included libraries:
10
 *   DataTables 2.3.4, Buttons 3.2.5, Column visibility 3.2.5, HTML5 export 3.2.5, Print view 3.2.5, Responsive 3.0.7
10
 *   JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.3.7, Buttons 3.2.6, Column visibility 3.2.6, HTML5 export 3.2.6, Print view 3.2.6, FixedHeader 4.0.6, Responsive 3.0.8, RowGroup 1.6.0, RowReorder 1.5.1
11
 */
11
 */
12
12
13
/*! DataTables 2.3.4
13
/*!
14
15
JSZip v3.10.1 - A JavaScript class for generating and reading zip files
16
<http://stuartk.com/jszip>
17
18
(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
19
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
20
21
JSZip uses the library pako released under the MIT license :
22
https://github.com/nodeca/pako/blob/main/LICENSE
23
*/
24
25
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l="function"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){"use strict";var d=e("./utils"),c=e("./support"),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c="string"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join("")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u="data:";if(e.substr(0,u.length)===u)throw new Error("Invalid base64 input, it looks like a data url.");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error("Invalid base64 input, bad content length.");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n=null;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function h(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h("Deflate",e)},r.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function A(e,t){var r,n="";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),c=I.transformTo("string",O.utf8encode(h.name)),d=h.comment,p=I.transformTo("string",s(d)),m=I.transformTo("string",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(n,4)+f+b+p}}var I=e("../utils"),i=e("../stream/GenericWorker"),O=e("../utf8"),B=e("../crc32"),R=e("../signature");function s(e,t,r,n){i.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo("string",i(n));return R.CENTRAL_DIRECTORY_END+"\0\0\0\0"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on("error",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(e,t,r){"use strict";var u=e("../compressions"),n=e("./ZipFileWorker");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+" is not a valid compression method !");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo("file",{name:e,dir:i,date:s,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){"use strict";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var e=new n;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e("./object")).loadAsync=e("./load"),n.support=e("./support"),n.defaults=e("./defaults"),n.version="3.10.1",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e("./external"),t.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){"use strict";var u=e("./utils"),i=e("./external"),n=e("./utf8"),s=e("./zipEntries"),a=e("./stream/Crc32Probe"),l=e("./nodejsUtils");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on("error",function(e){t(e)}).on("end",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):u.prepareContent("the loaded zip file",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../stream/GenericWorker");function s(e,t){i.call(this,"Nodejs stream input adapter for "+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on("data",function(e){t.push({data:e,meta:{percent:0}})}).on("error",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on("end",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{"../stream/GenericWorker":28,"../utils":32}],13:[function(e,t,r){"use strict";var i=e("readable-stream").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on("data",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on("error",function(e){n.emit("error",e)}).on("end",function(){n.push(null)})}e("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{"../utils":32,"readable-stream":16}],14:[function(e,t,r){"use strict";t.exports={isNode:"undefined"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if("number"==typeof e)throw new Error('The "data" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&"function"==typeof e.on&&"function"==typeof e.pause&&"function"==typeof e.resume}}},{}],15:[function(e,t,r){"use strict";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),"string"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a="string"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t="",s.compression="STORE",i="string");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e("./utf8"),u=e("./utils"),l=e("./stream/GenericWorker"),a=e("./stream/StreamHelper"),f=e("./defaults"),c=e("./compressedObject"),d=e("./zipObject"),o=e("./generate"),p=e("./nodejsUtils"),m=e("./nodejs/NodejsStreamInputAdapter"),_=function(e){"/"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf("/");return 0<t?e.substring(0,t):""},g=function(e){return"/"!==e.slice(-1)&&(e+="/"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||("/"!==r.slice(-1)&&(r+="/"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),"binarystring"===r.type&&(r.type="string"),!r.type)throw new Error("No output type specified.");u.checkSupport(r.type),"darwin"!==r.platform&&"freebsd"!==r.platform&&"linux"!==r.platform&&"sunos"!==r.platform||(r.platform="UNIX"),"win32"===r.platform&&(r.platform="DOS");var n=r.comment||this.comment||"";t=o.generateWorker(this,r,n)}catch(e){(t=new l("error")).error(e)}return new a(t,r.type||"string",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type="nodebuffer"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(e,t,r){"use strict";t.exports=e("stream")},{stream:void 0}],17:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],18:[function(e,t,r){"use strict";var n=e("../utils");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),h=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new h(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.end()}),e.on("error",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e="Worker "+this.name;return this.previous?this.previous+" -> "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),u=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on("data",function(e,t){n.push(e),o&&o(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case"string":return t.join("");case"array":return Array.prototype.concat.apply([],t);case"uint8array":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case"nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '"+e+"'")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case"blob":case"arraybuffer":n="uint8array";break;case"base64":n="string"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s("error"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return"data"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new o(this,{objectMode:"nodebuffer"!==this._outputType},e)}},t.exports=f},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(e,t,r){"use strict";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,r.nodebuffer="undefined"!=typeof Buffer,r.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:"application/zip"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob("application/zip").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e("readable-stream").Readable}catch(e){r.nodestream=!1}},{"readable-stream":16}],31:[function(e,t,s){"use strict";for(var o=e("./utils"),h=e("./support"),r=e("./nodejsUtils"),n=e("./stream/GenericWorker"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,"utf-8 decode"),this.leftOver=null}function l(){n.call(this,"utf-8 encode")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,"utf-8"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var o=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),u=e("./external");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e("setimmediate"),a.newBlob=function(t,r){a.checkSupport("blob");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error("Bug : can't construct the Blob.")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)"array"===t||"nodebuffer"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if("uint8array"===r?n=i.applyCanBeUsed.uint8array:"nodebuffer"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||"",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split("/"),r=[],n=0;n<t.length;n++){var i=t[n];"."===i||""===i&&0!==n&&n!==t.length-1||(".."===i?r.pop():r.push(i))}return r.join("/")},a.getTypeOf=function(e){return"string"==typeof e?"string":"[object Array]"===Object.prototype.toString.call(e)?"array":o.nodebuffer&&r.isBuffer(e)?"nodebuffer":o.uint8array&&e instanceof Uint8Array?"uint8array":o.arraybuffer&&e instanceof ArrayBuffer?"arraybuffer":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+" is not supported by this platform")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n="";for(r=0;r<(e||"").length;r++)n+="\\x"+((t=e.charCodeAt(r))<16?"0":"")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(n)))&&"undefined"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?("arraybuffer"===t?e=a.transformTo("uint8array",e):"string"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error("Can't read the data of '"+r+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(e,t,r){"use strict";var n=e("./reader/readerFor"),i=e("./utils"),s=e("./signature"),a=e("./zipEntry"),o=e("./support");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+i.pretty(t)+", expected "+i.pretty(e)+")")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?"uint8array":"array",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"):new Error("Corrupted zip: can't find end of central directory");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error("Corrupted zip: missing "+Math.abs(n)+" bytes.")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(e,t,r){"use strict";var n=e("./reader/readerFor"),s=e("./utils"),i=e("./compressedObject"),a=e("./crc32"),o=e("./utf8"),h=e("./compressions"),u=e("./support");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error("Corrupted zip : compression "+s.pretty(this.compressionMethod)+" unknown (inner file : "+s.transformTo("string",this.fileName)+")");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(e,t,r){"use strict";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e("./stream/StreamHelper"),i=e("./stream/DataWorker"),a=e("./utf8"),o=e("./compressedObject"),h=e("./stream/GenericWorker");n.prototype={internalStream:function(e){var t=null,r="string";try{if(!e)throw new Error("No output type specified.");var n="string"===(r=e.toLowerCase())||"text"===r;"binarystring"!==r&&"text"!==r||(r="string"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h("error")).error(e)}return new s(t,r,"")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||"nodebuffer").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],l=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(e,l,t){(function(t){"use strict";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode("");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var e=t.document.createElement("script");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],37:[function(e,t,r){"use strict";var i=e("immediate");function u(){}var l={},s=["REJECTED"],a=["FULFILLED"],n=["PENDING"];function o(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError("Cannot resolve promise with itself")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});"error"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status="success"}catch(e){r.status="error",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if("function"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if("function"!=typeof e&&this.state===a||"function"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if("error"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){"use strict";var n={};(0,e("./lib/utils/common").assign)(n,e("./lib/deflate"),e("./lib/inflate"),e("./lib/zlib/constants")),t.exports=n},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(e,t,r){"use strict";var a=e("./zlib/deflate"),o=e("./utils/common"),h=e("./utils/strings"),i=e("./zlib/messages"),s=e("./zlib/zstream"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:""},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n="string"==typeof t.dictionary?h.string2buf(t.dictionary):"[object ArrayBuffer]"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,"string"==typeof e?i.input=h.string2buf(e):"[object ArrayBuffer]"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||("string"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(e,t,r){"use strict";var c=e("./zlib/inflate"),d=e("./utils/common"),p=e("./utils/strings"),m=e("./zlib/constants"),n=e("./zlib/messages"),i=e("./zlib/zstream"),s=e("./zlib/gzheader"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,"string"==typeof e?h.input=p.binstring2buf(e):"[object ArrayBuffer]"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o="string"==typeof l?p.string2buf(l):"[object ArrayBuffer]"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||("string"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){"use strict";var h=e("./common"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r="",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){"use strict";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var h,c=e("../utils/common"),u=e("./trees"),d=e("./adler32"),p=e("./crc32"),n=e("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(e,t,r){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){"use strict";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg="invalid literal/length code",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg="invalid distance code",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg="invalid distance too far back",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){"use strict";var I=e("../utils/common"),O=e("./adler32"),B=e("./crc32"),R=e("./inffast"),T=e("./inftrees"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){e.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg="unknown compression method",r.mode=30;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg="header crc mismatch",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg="incorrect data check",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,r){"use strict";var D=e("../utils/common"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{"../utils/common":41}],51:[function(e,t,r){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(e,t,r){"use strict";var i=e("../utils/common"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){"use strict";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e}}()?(a="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",d,!1):r.attachEvent("onmessage",d),function(e){r.postMessage(a+e,"*")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&"onreadystatechange"in l.createElement("script")?(s=l.documentElement,function(e){var t=l.createElement("script");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&"string"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[10])(10)});
26
27
/*! pdfmake v0.2.7, @license MIT, @link http://pdfmake.org */
28
!function webpackUniversalModuleDefinition(r,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var o=i();for(var u in o)("object"==typeof exports?exports:r)[u]=o[u]}}("undefined"!=typeof self?self:this,(function(){return function(){var r={9282:function(r,i,o){"use strict";var u=o(4155);function _typeof(r){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(r){return typeof r}:function _typeof(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof(r)}var p,g,y=o(2136).codes,w=y.ERR_AMBIGUOUS_ARGUMENT,_=y.ERR_INVALID_ARG_TYPE,x=y.ERR_INVALID_ARG_VALUE,k=y.ERR_INVALID_RETURN_VALUE,P=y.ERR_MISSING_ARGS,O=o(5961),I=o(9539).inspect,B=o(9539).types,R=B.isPromise,D=B.isRegExp,N=Object.assign?Object.assign:o(8091).assign,W=Object.is?Object.is:o(609);new Map;function lazyLoadComparison(){var r=o(9158);p=r.isDeepEqual,g=r.isDeepStrictEqual}var U=!1,j=r.exports=ok,G={};function innerFail(r){if(r.message instanceof Error)throw r.message;throw new O(r)}function innerOk(r,i,o,u){if(!o){var p=!1;if(0===i)p=!0,u="No value argument passed to `assert.ok()`";else if(u instanceof Error)throw u;var g=new O({actual:o,expected:!0,message:u,operator:"==",stackStartFn:r});throw g.generatedMessage=p,g}}function ok(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];innerOk.apply(void 0,[ok,i.length].concat(i))}j.fail=function fail(r,i,o,p,g){var y,w=arguments.length;if(0===w)y="Failed";else if(1===w)o=r,r=void 0;else{if(!1===U){U=!0;var _=u.emitWarning?u.emitWarning:void 0;_("assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.","DeprecationWarning","DEP0094")}2===w&&(p="!=")}if(o instanceof Error)throw o;var x={actual:r,expected:i,operator:void 0===p?"fail":p,stackStartFn:g||fail};void 0!==o&&(x.message=o);var k=new O(x);throw y&&(k.message=y,k.generatedMessage=!0),k},j.AssertionError=O,j.ok=ok,j.equal=function equal(r,i,o){if(arguments.length<2)throw new P("actual","expected");r!=i&&innerFail({actual:r,expected:i,message:o,operator:"==",stackStartFn:equal})},j.notEqual=function notEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");r==i&&innerFail({actual:r,expected:i,message:o,operator:"!=",stackStartFn:notEqual})},j.deepEqual=function deepEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");void 0===p&&lazyLoadComparison(),p(r,i)||innerFail({actual:r,expected:i,message:o,operator:"deepEqual",stackStartFn:deepEqual})},j.notDeepEqual=function notDeepEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");void 0===p&&lazyLoadComparison(),p(r,i)&&innerFail({actual:r,expected:i,message:o,operator:"notDeepEqual",stackStartFn:notDeepEqual})},j.deepStrictEqual=function deepStrictEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");void 0===p&&lazyLoadComparison(),g(r,i)||innerFail({actual:r,expected:i,message:o,operator:"deepStrictEqual",stackStartFn:deepStrictEqual})},j.notDeepStrictEqual=function notDeepStrictEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");void 0===p&&lazyLoadComparison();g(r,i)&&innerFail({actual:r,expected:i,message:o,operator:"notDeepStrictEqual",stackStartFn:notDeepStrictEqual})},j.strictEqual=function strictEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");W(r,i)||innerFail({actual:r,expected:i,message:o,operator:"strictEqual",stackStartFn:strictEqual})},j.notStrictEqual=function notStrictEqual(r,i,o){if(arguments.length<2)throw new P("actual","expected");W(r,i)&&innerFail({actual:r,expected:i,message:o,operator:"notStrictEqual",stackStartFn:notStrictEqual})};var X=function Comparison(r,i,o){var u=this;!function _classCallCheck(r,i){if(!(r instanceof i))throw new TypeError("Cannot call a class as a function")}(this,Comparison),i.forEach((function(i){i in r&&(void 0!==o&&"string"==typeof o[i]&&D(r[i])&&r[i].test(o[i])?u[i]=o[i]:u[i]=r[i])}))};function compareExceptionKey(r,i,o,u,p,y){if(!(o in r)||!g(r[o],i[o])){if(!u){var w=new X(r,p),_=new X(i,p,r),x=new O({actual:w,expected:_,operator:"deepStrictEqual",stackStartFn:y});throw x.actual=r,x.expected=i,x.operator=y.name,x}innerFail({actual:r,expected:i,message:u,operator:y.name,stackStartFn:y})}}function expectedException(r,i,o,u){if("function"!=typeof i){if(D(i))return i.test(r);if(2===arguments.length)throw new _("expected",["Function","RegExp"],i);if("object"!==_typeof(r)||null===r){var g=new O({actual:r,expected:i,message:o,operator:"deepStrictEqual",stackStartFn:u});throw g.operator=u.name,g}var y=Object.keys(i);if(i instanceof Error)y.push("name","message");else if(0===y.length)throw new x("error",i,"may not be an empty object");return void 0===p&&lazyLoadComparison(),y.forEach((function(p){"string"==typeof r[p]&&D(i[p])&&i[p].test(r[p])||compareExceptionKey(r,i,p,o,y,u)})),!0}return void 0!==i.prototype&&r instanceof i||!Error.isPrototypeOf(i)&&!0===i.call({},r)}function getActual(r){if("function"!=typeof r)throw new _("fn","Function",r);try{r()}catch(r){return r}return G}function checkIsPromise(r){return R(r)||null!==r&&"object"===_typeof(r)&&"function"==typeof r.then&&"function"==typeof r.catch}function waitForActual(r){return Promise.resolve().then((function(){var i;if("function"==typeof r){if(!checkIsPromise(i=r()))throw new k("instance of Promise","promiseFn",i)}else{if(!checkIsPromise(r))throw new _("promiseFn",["Function","Promise"],r);i=r}return Promise.resolve().then((function(){return i})).then((function(){return G})).catch((function(r){return r}))}))}function expectsError(r,i,o,u){if("string"==typeof o){if(4===arguments.length)throw new _("error",["Object","Error","Function","RegExp"],o);if("object"===_typeof(i)&&null!==i){if(i.message===o)throw new w("error/message",'The error message "'.concat(i.message,'" is identical to the message.'))}else if(i===o)throw new w("error/message",'The error "'.concat(i,'" is identical to the message.'));u=o,o=void 0}else if(null!=o&&"object"!==_typeof(o)&&"function"!=typeof o)throw new _("error",["Object","Error","Function","RegExp"],o);if(i===G){var p="";o&&o.name&&(p+=" (".concat(o.name,")")),p+=u?": ".concat(u):".";var g="rejects"===r.name?"rejection":"exception";innerFail({actual:void 0,expected:o,operator:r.name,message:"Missing expected ".concat(g).concat(p),stackStartFn:r})}if(o&&!expectedException(i,o,u,r))throw i}function expectsNoError(r,i,o,u){if(i!==G){if("string"==typeof o&&(u=o,o=void 0),!o||expectedException(i,o)){var p=u?": ".concat(u):".",g="doesNotReject"===r.name?"rejection":"exception";innerFail({actual:i,expected:o,operator:r.name,message:"Got unwanted ".concat(g).concat(p,"\n")+'Actual message: "'.concat(i&&i.message,'"'),stackStartFn:r})}throw i}}function strict(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];innerOk.apply(void 0,[strict,i.length].concat(i))}j.throws=function throws(r){for(var i=arguments.length,o=new Array(i>1?i-1:0),u=1;u<i;u++)o[u-1]=arguments[u];expectsError.apply(void 0,[throws,getActual(r)].concat(o))},j.rejects=function rejects(r){for(var i=arguments.length,o=new Array(i>1?i-1:0),u=1;u<i;u++)o[u-1]=arguments[u];return waitForActual(r).then((function(r){return expectsError.apply(void 0,[rejects,r].concat(o))}))},j.doesNotThrow=function doesNotThrow(r){for(var i=arguments.length,o=new Array(i>1?i-1:0),u=1;u<i;u++)o[u-1]=arguments[u];expectsNoError.apply(void 0,[doesNotThrow,getActual(r)].concat(o))},j.doesNotReject=function doesNotReject(r){for(var i=arguments.length,o=new Array(i>1?i-1:0),u=1;u<i;u++)o[u-1]=arguments[u];return waitForActual(r).then((function(r){return expectsNoError.apply(void 0,[doesNotReject,r].concat(o))}))},j.ifError=function ifError(r){if(null!=r){var i="ifError got unwanted exception: ";"object"===_typeof(r)&&"string"==typeof r.message?0===r.message.length&&r.constructor?i+=r.constructor.name:i+=r.message:i+=I(r);var o=new O({actual:r,expected:null,operator:"ifError",message:i,stackStartFn:ifError}),u=r.stack;if("string"==typeof u){var p=u.split("\n");p.shift();for(var g=o.stack.split("\n"),y=0;y<p.length;y++){var w=g.indexOf(p[y]);if(-1!==w){g=g.slice(0,w);break}}o.stack="".concat(g.join("\n"),"\n").concat(p.join("\n"))}throw o}},j.strict=N(strict,j,{equal:j.strictEqual,deepEqual:j.deepStrictEqual,notEqual:j.notStrictEqual,notDeepEqual:j.notDeepStrictEqual}),j.strict.strict=j.strict},5961:function(r,i,o){"use strict";var u=o(4155);function _defineProperty(r,i,o){return i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r}function _defineProperties(r,i){for(var o=0;o<i.length;o++){var u=i[o];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(r,u.key,u)}}function _possibleConstructorReturn(r,i){return!i||"object"!==_typeof(i)&&"function"!=typeof i?_assertThisInitialized(r):i}function _assertThisInitialized(r){if(void 0===r)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function _wrapNativeSuper(r){var i="function"==typeof Map?new Map:void 0;return _wrapNativeSuper=function _wrapNativeSuper(r){if(null===r||!function _isNativeFunction(r){return-1!==Function.toString.call(r).indexOf("[native code]")}(r))return r;if("function"!=typeof r)throw new TypeError("Super expression must either be null or a function");if(void 0!==i){if(i.has(r))return i.get(r);i.set(r,Wrapper)}function Wrapper(){return _construct(r,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(r.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,r)},_wrapNativeSuper(r)}function isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(r){return!1}}function _construct(r,i,o){return _construct=isNativeReflectConstruct()?Reflect.construct:function _construct(r,i,o){var u=[null];u.push.apply(u,i);var p=new(Function.bind.apply(r,u));return o&&_setPrototypeOf(p,o.prototype),p},_construct.apply(null,arguments)}function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}function _getPrototypeOf(r){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(r){return r.__proto__||Object.getPrototypeOf(r)},_getPrototypeOf(r)}function _typeof(r){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(r){return typeof r}:function _typeof(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof(r)}var p=o(9539).inspect,g=o(2136).codes.ERR_INVALID_ARG_TYPE;function endsWith(r,i,o){return(void 0===o||o>r.length)&&(o=r.length),r.substring(o-i.length,o)===i}var y="",w="",_="",x="",k={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function copyError(r){var i=Object.keys(r),o=Object.create(Object.getPrototypeOf(r));return i.forEach((function(i){o[i]=r[i]})),Object.defineProperty(o,"message",{value:r.message}),o}function inspectValue(r){return p(r,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function createErrDiff(r,i,o){var p="",g="",P=0,O="",I=!1,B=inspectValue(r),R=B.split("\n"),D=inspectValue(i).split("\n"),N=0,W="";if("strictEqual"===o&&"object"===_typeof(r)&&"object"===_typeof(i)&&null!==r&&null!==i&&(o="strictEqualObject"),1===R.length&&1===D.length&&R[0]!==D[0]){var U=R[0].length+D[0].length;if(U<=10){if(!("object"===_typeof(r)&&null!==r||"object"===_typeof(i)&&null!==i||0===r&&0===i))return"".concat(k[o],"\n\n")+"".concat(R[0]," !== ").concat(D[0],"\n")}else if("strictEqualObject"!==o){if(U<(u.stderr&&u.stderr.isTTY?u.stderr.columns:80)){for(;R[0][N]===D[0][N];)N++;N>2&&(W="\n  ".concat(function repeat(r,i){if(i=Math.floor(i),0==r.length||0==i)return"";var o=r.length*i;for(i=Math.floor(Math.log(i)/Math.log(2));i;)r+=r,i--;return r+r.substring(0,o-r.length)}(" ",N),"^"),N=0)}}}for(var j=R[R.length-1],G=D[D.length-1];j===G&&(N++<2?O="\n  ".concat(j).concat(O):p=j,R.pop(),D.pop(),0!==R.length&&0!==D.length);)j=R[R.length-1],G=D[D.length-1];var X=Math.max(R.length,D.length);if(0===X){var K=B.split("\n");if(K.length>30)for(K[26]="".concat(y,"...").concat(x);K.length>27;)K.pop();return"".concat(k.notIdentical,"\n\n").concat(K.join("\n"),"\n")}N>3&&(O="\n".concat(y,"...").concat(x).concat(O),I=!0),""!==p&&(O="\n  ".concat(p).concat(O),p="");var Y=0,J=k[o]+"\n".concat(w,"+ actual").concat(x," ").concat(_,"- expected").concat(x),$=" ".concat(y,"...").concat(x," Lines skipped");for(N=0;N<X;N++){var ee=N-P;if(R.length<N+1)ee>1&&N>2&&(ee>4?(g+="\n".concat(y,"...").concat(x),I=!0):ee>3&&(g+="\n  ".concat(D[N-2]),Y++),g+="\n  ".concat(D[N-1]),Y++),P=N,p+="\n".concat(_,"-").concat(x," ").concat(D[N]),Y++;else if(D.length<N+1)ee>1&&N>2&&(ee>4?(g+="\n".concat(y,"...").concat(x),I=!0):ee>3&&(g+="\n  ".concat(R[N-2]),Y++),g+="\n  ".concat(R[N-1]),Y++),P=N,g+="\n".concat(w,"+").concat(x," ").concat(R[N]),Y++;else{var te=D[N],re=R[N],ne=re!==te&&(!endsWith(re,",")||re.slice(0,-1)!==te);ne&&endsWith(te,",")&&te.slice(0,-1)===re&&(ne=!1,re+=","),ne?(ee>1&&N>2&&(ee>4?(g+="\n".concat(y,"...").concat(x),I=!0):ee>3&&(g+="\n  ".concat(R[N-2]),Y++),g+="\n  ".concat(R[N-1]),Y++),P=N,g+="\n".concat(w,"+").concat(x," ").concat(re),p+="\n".concat(_,"-").concat(x," ").concat(te),Y+=2):(g+=p,p="",1!==ee&&0!==N||(g+="\n  ".concat(re),Y++))}if(Y>20&&N<X-2)return"".concat(J).concat($,"\n").concat(g,"\n").concat(y,"...").concat(x).concat(p,"\n")+"".concat(y,"...").concat(x)}return"".concat(J).concat(I?$:"","\n").concat(g).concat(p).concat(O).concat(W)}var P=function(r){function AssertionError(r){var i;if(function _classCallCheck(r,i){if(!(r instanceof i))throw new TypeError("Cannot call a class as a function")}(this,AssertionError),"object"!==_typeof(r)||null===r)throw new g("options","Object",r);var o=r.message,p=r.operator,P=r.stackStartFn,O=r.actual,I=r.expected,B=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=o)i=_possibleConstructorReturn(this,_getPrototypeOf(AssertionError).call(this,String(o)));else if(u.stderr&&u.stderr.isTTY&&(u.stderr&&u.stderr.getColorDepth&&1!==u.stderr.getColorDepth()?(y="[34m",w="[32m",x="[39m",_="[31m"):(y="",w="",x="",_="")),"object"===_typeof(O)&&null!==O&&"object"===_typeof(I)&&null!==I&&"stack"in O&&O instanceof Error&&"stack"in I&&I instanceof Error&&(O=copyError(O),I=copyError(I)),"deepStrictEqual"===p||"strictEqual"===p)i=_possibleConstructorReturn(this,_getPrototypeOf(AssertionError).call(this,createErrDiff(O,I,p)));else if("notDeepStrictEqual"===p||"notStrictEqual"===p){var R=k[p],D=inspectValue(O).split("\n");if("notStrictEqual"===p&&"object"===_typeof(O)&&null!==O&&(R=k.notStrictEqualObject),D.length>30)for(D[26]="".concat(y,"...").concat(x);D.length>27;)D.pop();i=1===D.length?_possibleConstructorReturn(this,_getPrototypeOf(AssertionError).call(this,"".concat(R," ").concat(D[0]))):_possibleConstructorReturn(this,_getPrototypeOf(AssertionError).call(this,"".concat(R,"\n\n").concat(D.join("\n"),"\n")))}else{var N=inspectValue(O),W="",U=k[p];"notDeepEqual"===p||"notEqual"===p?(N="".concat(k[p],"\n\n").concat(N)).length>1024&&(N="".concat(N.slice(0,1021),"...")):(W="".concat(inspectValue(I)),N.length>512&&(N="".concat(N.slice(0,509),"...")),W.length>512&&(W="".concat(W.slice(0,509),"...")),"deepEqual"===p||"equal"===p?N="".concat(U,"\n\n").concat(N,"\n\nshould equal\n\n"):W=" ".concat(p," ").concat(W)),i=_possibleConstructorReturn(this,_getPrototypeOf(AssertionError).call(this,"".concat(N).concat(W)))}return Error.stackTraceLimit=B,i.generatedMessage=!o,Object.defineProperty(_assertThisInitialized(i),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),i.code="ERR_ASSERTION",i.actual=O,i.expected=I,i.operator=p,Error.captureStackTrace&&Error.captureStackTrace(_assertThisInitialized(i),P),i.stack,i.name="AssertionError",_possibleConstructorReturn(i)}return function _inherits(r,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(i&&i.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),i&&_setPrototypeOf(r,i)}(AssertionError,r),function _createClass(r,i,o){return i&&_defineProperties(r.prototype,i),o&&_defineProperties(r,o),r}(AssertionError,[{key:"toString",value:function toString(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:p.custom,value:function value(r,i){return p(this,function _objectSpread(r){for(var i=1;i<arguments.length;i++){var o=null!=arguments[i]?arguments[i]:{},u=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(u=u.concat(Object.getOwnPropertySymbols(o).filter((function(r){return Object.getOwnPropertyDescriptor(o,r).enumerable})))),u.forEach((function(i){_defineProperty(r,i,o[i])}))}return r}({},i,{customInspect:!1,depth:0}))}}]),AssertionError}(_wrapNativeSuper(Error));r.exports=P},2136:function(r,i,o){"use strict";function _typeof(r){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(r){return typeof r}:function _typeof(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof(r)}function _possibleConstructorReturn(r,i){return!i||"object"!==_typeof(i)&&"function"!=typeof i?function _assertThisInitialized(r){if(void 0===r)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}(r):i}function _getPrototypeOf(r){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(r){return r.__proto__||Object.getPrototypeOf(r)},_getPrototypeOf(r)}function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}var u,p,g={};function createErrorType(r,i,o){o||(o=Error);var u=function(o){function NodeError(o,u,p){var g;return function _classCallCheck(r,i){if(!(r instanceof i))throw new TypeError("Cannot call a class as a function")}(this,NodeError),g=_possibleConstructorReturn(this,_getPrototypeOf(NodeError).call(this,function getMessage(r,o,u){return"string"==typeof i?i:i(r,o,u)}(o,u,p))),g.code=r,g}return function _inherits(r,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(i&&i.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),i&&_setPrototypeOf(r,i)}(NodeError,o),NodeError}(o);g[r]=u}function oneOf(r,i){if(Array.isArray(r)){var o=r.length;return r=r.map((function(r){return String(r)})),o>2?"one of ".concat(i," ").concat(r.slice(0,o-1).join(", "),", or ")+r[o-1]:2===o?"one of ".concat(i," ").concat(r[0]," or ").concat(r[1]):"of ".concat(i," ").concat(r[0])}return"of ".concat(i," ").concat(String(r))}createErrorType("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),createErrorType("ERR_INVALID_ARG_TYPE",(function(r,i,p){var g,y;if(void 0===u&&(u=o(9282)),u("string"==typeof r,"'name' must be a string"),"string"==typeof i&&function startsWith(r,i,o){return r.substr(!o||o<0?0:+o,i.length)===i}(i,"not ")?(g="must not be",i=i.replace(/^not /,"")):g="must be",function endsWith(r,i,o){return(void 0===o||o>r.length)&&(o=r.length),r.substring(o-i.length,o)===i}(r," argument"))y="The ".concat(r," ").concat(g," ").concat(oneOf(i,"type"));else{var w=function includes(r,i,o){return"number"!=typeof o&&(o=0),!(o+i.length>r.length)&&-1!==r.indexOf(i,o)}(r,".")?"property":"argument";y='The "'.concat(r,'" ').concat(w," ").concat(g," ").concat(oneOf(i,"type"))}return y+=". Received type ".concat(_typeof(p))}),TypeError),createErrorType("ERR_INVALID_ARG_VALUE",(function(r,i){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===p&&(p=o(9539));var g=p.inspect(i);return g.length>128&&(g="".concat(g.slice(0,128),"...")),"The argument '".concat(r,"' ").concat(u,". Received ").concat(g)}),TypeError,RangeError),createErrorType("ERR_INVALID_RETURN_VALUE",(function(r,i,o){var u;return u=o&&o.constructor&&o.constructor.name?"instance of ".concat(o.constructor.name):"type ".concat(_typeof(o)),"Expected ".concat(r,' to be returned from the "').concat(i,'"')+" function but got ".concat(u,".")}),TypeError),createErrorType("ERR_MISSING_ARGS",(function(){for(var r=arguments.length,i=new Array(r),p=0;p<r;p++)i[p]=arguments[p];void 0===u&&(u=o(9282)),u(i.length>0,"At least one arg needs to be specified");var g="The ",y=i.length;switch(i=i.map((function(r){return'"'.concat(r,'"')})),y){case 1:g+="".concat(i[0]," argument");break;case 2:g+="".concat(i[0]," and ").concat(i[1]," arguments");break;default:g+=i.slice(0,y-1).join(", "),g+=", and ".concat(i[y-1]," arguments")}return"".concat(g," must be specified")}),TypeError),r.exports.codes=g},9158:function(r,i,o){"use strict";function _slicedToArray(r,i){return function _arrayWithHoles(r){if(Array.isArray(r))return r}(r)||function _iterableToArrayLimit(r,i){var o=[],u=!0,p=!1,g=void 0;try{for(var y,w=r[Symbol.iterator]();!(u=(y=w.next()).done)&&(o.push(y.value),!i||o.length!==i);u=!0);}catch(r){p=!0,g=r}finally{try{u||null==w.return||w.return()}finally{if(p)throw g}}return o}(r,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function _typeof(r){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(r){return typeof r}:function _typeof(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_typeof(r)}var u=void 0!==/a/g.flags,p=function arrayFromSet(r){var i=[];return r.forEach((function(r){return i.push(r)})),i},g=function arrayFromMap(r){var i=[];return r.forEach((function(r,o){return i.push([o,r])})),i},y=Object.is?Object.is:o(609),w=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},_=Number.isNaN?Number.isNaN:o(360);function uncurryThis(r){return r.call.bind(r)}var x=uncurryThis(Object.prototype.hasOwnProperty),k=uncurryThis(Object.prototype.propertyIsEnumerable),P=uncurryThis(Object.prototype.toString),O=o(9539).types,I=O.isAnyArrayBuffer,B=O.isArrayBufferView,R=O.isDate,D=O.isMap,N=O.isRegExp,W=O.isSet,U=O.isNativeError,j=O.isBoxedPrimitive,G=O.isNumberObject,X=O.isStringObject,K=O.isBooleanObject,Y=O.isBigIntObject,J=O.isSymbolObject,$=O.isFloat32Array,ee=O.isFloat64Array;function isNonIndex(r){if(0===r.length||r.length>10)return!0;for(var i=0;i<r.length;i++){var o=r.charCodeAt(i);if(o<48||o>57)return!0}return 10===r.length&&r>=Math.pow(2,32)}function getOwnNonIndexProperties(r){return Object.keys(r).filter(isNonIndex).concat(w(r).filter(Object.prototype.propertyIsEnumerable.bind(r)))}function compare(r,i){if(r===i)return 0;for(var o=r.length,u=i.length,p=0,g=Math.min(o,u);p<g;++p)if(r[p]!==i[p]){o=r[p],u=i[p];break}return o<u?-1:u<o?1:0}function innerDeepEqual(r,i,o,p){if(r===i)return 0!==r||(!o||y(r,i));if(o){if("object"!==_typeof(r))return"number"==typeof r&&_(r)&&_(i);if("object"!==_typeof(i)||null===r||null===i)return!1;if(Object.getPrototypeOf(r)!==Object.getPrototypeOf(i))return!1}else{if(null===r||"object"!==_typeof(r))return(null===i||"object"!==_typeof(i))&&r==i;if(null===i||"object"!==_typeof(i))return!1}var g=P(r);if(g!==P(i))return!1;if(Array.isArray(r)){if(r.length!==i.length)return!1;var w=getOwnNonIndexProperties(r),x=getOwnNonIndexProperties(i);return w.length===x.length&&keyCheck(r,i,o,p,1,w)}if("[object Object]"===g&&(!D(r)&&D(i)||!W(r)&&W(i)))return!1;if(R(r)){if(!R(i)||Date.prototype.getTime.call(r)!==Date.prototype.getTime.call(i))return!1}else if(N(r)){if(!N(i)||!function areSimilarRegExps(r,i){return u?r.source===i.source&&r.flags===i.flags:RegExp.prototype.toString.call(r)===RegExp.prototype.toString.call(i)}(r,i))return!1}else if(U(r)||r instanceof Error){if(r.message!==i.message||r.name!==i.name)return!1}else{if(B(r)){if(o||!$(r)&&!ee(r)){if(!function areSimilarTypedArrays(r,i){return r.byteLength===i.byteLength&&0===compare(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),new Uint8Array(i.buffer,i.byteOffset,i.byteLength))}(r,i))return!1}else if(!function areSimilarFloatArrays(r,i){if(r.byteLength!==i.byteLength)return!1;for(var o=0;o<r.byteLength;o++)if(r[o]!==i[o])return!1;return!0}(r,i))return!1;var k=getOwnNonIndexProperties(r),O=getOwnNonIndexProperties(i);return k.length===O.length&&keyCheck(r,i,o,p,0,k)}if(W(r))return!(!W(i)||r.size!==i.size)&&keyCheck(r,i,o,p,2);if(D(r))return!(!D(i)||r.size!==i.size)&&keyCheck(r,i,o,p,3);if(I(r)){if(!function areEqualArrayBuffers(r,i){return r.byteLength===i.byteLength&&0===compare(new Uint8Array(r),new Uint8Array(i))}(r,i))return!1}else if(j(r)&&!function isEqualBoxedPrimitive(r,i){return G(r)?G(i)&&y(Number.prototype.valueOf.call(r),Number.prototype.valueOf.call(i)):X(r)?X(i)&&String.prototype.valueOf.call(r)===String.prototype.valueOf.call(i):K(r)?K(i)&&Boolean.prototype.valueOf.call(r)===Boolean.prototype.valueOf.call(i):Y(r)?Y(i)&&BigInt.prototype.valueOf.call(r)===BigInt.prototype.valueOf.call(i):J(i)&&Symbol.prototype.valueOf.call(r)===Symbol.prototype.valueOf.call(i)}(r,i))return!1}return keyCheck(r,i,o,p,0)}function getEnumerables(r,i){return i.filter((function(i){return k(r,i)}))}function keyCheck(r,i,o,u,p,g){if(5===arguments.length){g=Object.keys(r);var y=Object.keys(i);if(g.length!==y.length)return!1}for(var _=0;_<g.length;_++)if(!x(i,g[_]))return!1;if(o&&5===arguments.length){var P=w(r);if(0!==P.length){var O=0;for(_=0;_<P.length;_++){var I=P[_];if(k(r,I)){if(!k(i,I))return!1;g.push(I),O++}else if(k(i,I))return!1}var B=w(i);if(P.length!==B.length&&getEnumerables(i,B).length!==O)return!1}else{var R=w(i);if(0!==R.length&&0!==getEnumerables(i,R).length)return!1}}if(0===g.length&&(0===p||1===p&&0===r.length||0===r.size))return!0;if(void 0===u)u={val1:new Map,val2:new Map,position:0};else{var D=u.val1.get(r);if(void 0!==D){var N=u.val2.get(i);if(void 0!==N)return D===N}u.position++}u.val1.set(r,u.position),u.val2.set(i,u.position);var W=objEquiv(r,i,o,g,u,p);return u.val1.delete(r),u.val2.delete(i),W}function setHasEqualElement(r,i,o,u){for(var g=p(r),y=0;y<g.length;y++){var w=g[y];if(innerDeepEqual(i,w,o,u))return r.delete(w),!0}return!1}function findLooseMatchingPrimitives(r){switch(_typeof(r)){case"undefined":return null;case"object":return;case"symbol":return!1;case"string":r=+r;case"number":if(_(r))return!1}return!0}function setMightHaveLoosePrim(r,i,o){var u=findLooseMatchingPrimitives(o);return null!=u?u:i.has(u)&&!r.has(u)}function mapMightHaveLoosePrim(r,i,o,u,p){var g=findLooseMatchingPrimitives(o);if(null!=g)return g;var y=i.get(g);return!(void 0===y&&!i.has(g)||!innerDeepEqual(u,y,!1,p))&&(!r.has(g)&&innerDeepEqual(u,y,!1,p))}function mapHasEqualEntry(r,i,o,u,g,y){for(var w=p(r),_=0;_<w.length;_++){var x=w[_];if(innerDeepEqual(o,x,g,y)&&innerDeepEqual(u,i.get(x),g,y))return r.delete(x),!0}return!1}function objEquiv(r,i,o,u,y,w){var _=0;if(2===w){if(!function setEquiv(r,i,o,u){for(var g=null,y=p(r),w=0;w<y.length;w++){var _=y[w];if("object"===_typeof(_)&&null!==_)null===g&&(g=new Set),g.add(_);else if(!i.has(_)){if(o)return!1;if(!setMightHaveLoosePrim(r,i,_))return!1;null===g&&(g=new Set),g.add(_)}}if(null!==g){for(var x=p(i),k=0;k<x.length;k++){var P=x[k];if("object"===_typeof(P)&&null!==P){if(!setHasEqualElement(g,P,o,u))return!1}else if(!o&&!r.has(P)&&!setHasEqualElement(g,P,o,u))return!1}return 0===g.size}return!0}(r,i,o,y))return!1}else if(3===w){if(!function mapEquiv(r,i,o,u){for(var p=null,y=g(r),w=0;w<y.length;w++){var _=_slicedToArray(y[w],2),x=_[0],k=_[1];if("object"===_typeof(x)&&null!==x)null===p&&(p=new Set),p.add(x);else{var P=i.get(x);if(void 0===P&&!i.has(x)||!innerDeepEqual(k,P,o,u)){if(o)return!1;if(!mapMightHaveLoosePrim(r,i,x,k,u))return!1;null===p&&(p=new Set),p.add(x)}}}if(null!==p){for(var O=g(i),I=0;I<O.length;I++){var B=_slicedToArray(O[I],2),R=(x=B[0],B[1]);if("object"===_typeof(x)&&null!==x){if(!mapHasEqualEntry(p,r,x,R,o,u))return!1}else if(!(o||r.has(x)&&innerDeepEqual(r.get(x),R,!1,u)||mapHasEqualEntry(p,r,x,R,!1,u)))return!1}return 0===p.size}return!0}(r,i,o,y))return!1}else if(1===w)for(;_<r.length;_++){if(!x(r,_)){if(x(i,_))return!1;for(var k=Object.keys(r);_<k.length;_++){var P=k[_];if(!x(i,P)||!innerDeepEqual(r[P],i[P],o,y))return!1}return k.length===Object.keys(i).length}if(!x(i,_)||!innerDeepEqual(r[_],i[_],o,y))return!1}for(_=0;_<u.length;_++){var O=u[_];if(!innerDeepEqual(r[O],i[O],o,y))return!1}return!0}r.exports={isDeepEqual:function isDeepEqual(r,i){return innerDeepEqual(r,i,false)},isDeepStrictEqual:function isDeepStrictEqual(r,i){return innerDeepEqual(r,i,true)}}},2055:function(r,i){"use strict";i.OP=0,i.CL=1,i.CP=2,i.QU=3,i.GL=4,i.NS=5,i.EX=6,i.SY=7,i.IS=8,i.PR=9,i.PO=10,i.NU=11,i.AL=12,i.HL=13,i.ID=14,i.IN=15,i.HY=16,i.BA=17,i.BB=18,i.B2=19,i.ZW=20,i.CM=21,i.WJ=22,i.H2=23,i.H3=24,i.JL=25,i.JV=26,i.JT=27,i.RI=28,i.EB=29,i.EM=30,i.ZWJ=31,i.CB=32,i.AI=33,i.BK=34,i.CJ=35,i.CR=36,i.LF=37,i.NL=38,i.SA=39,i.SG=40,i.SP=41,i.XX=42},8383:function(r,i){"use strict";i.DI_BRK=0,i.IN_BRK=1,i.CI_BRK=2,i.CP_BRK=3,i.PR_BRK=4,i.pairTable=[[4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4],[0,4,4,1,1,4,4,4,4,1,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,4,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[4,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,0,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,1,1,1,1,0,0,4,2,4,1,1,1,1,1,0,1,1,1,0],[1,4,4,1,1,1,4,4,4,0,0,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,1,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,0,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,4,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,2,4,1,1,1,1,1,1,1,1,1,1],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,1,1,1,1,0,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,1,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,1,0,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,0,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,1,0,0,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,1,1,0],[0,4,4,1,1,1,4,4,4,0,1,0,0,0,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[1,4,4,1,1,1,4,4,4,1,1,1,1,1,0,1,1,1,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0],[0,4,4,1,1,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,0,0,0,0,0,0,1,0]]},5106:function(r,i,o){"use strict";o(9601),i.EncodeStream=o(9126),i.DecodeStream=o(3030),i.Array=o(1988),i.LazyArray=o(6768),i.Bitfield=o(3425),i.Boolean=o(9024),i.Buffer=o(5250),i.Enum=o(3100),i.Optional=o(9541),i.Reserved=o(7468),i.String=o(1466),i.Struct=o(1219),i.VersionedStruct=o(3585);var u=o(6610),p=o(6462),g=o(8011);Object.assign(i,u,p,g)},1988:function(r,i,o){"use strict";function _createForOfIteratorHelperLoose(r,i){var o="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(o)return(o=o.call(r)).next.bind(o);if(Array.isArray(r)||(o=function _unsupportedIterableToArray(r,i){if(!r)return;if("string"==typeof r)return _arrayLikeToArray(r,i);var o=Object.prototype.toString.call(r).slice(8,-1);"Object"===o&&r.constructor&&(o=r.constructor.name);if("Map"===o||"Set"===o)return Array.from(r);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return _arrayLikeToArray(r,i)}(r))||i&&r&&"number"==typeof r.length){o&&(r=o);var u=0;return function(){return u>=r.length?{done:!0}:{done:!1,value:r[u++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(r,i){(null==i||i>r.length)&&(i=r.length);for(var o=0,u=new Array(i);o<i;o++)u[o]=r[o];return u}o(7042),o(1539),o(8309),o(1038),o(8783),o(4916),o(2526),o(1817),o(2165),o(6992),o(3948);var u=o(6462).Number,p=o(6610),g=function(){function ArrayT(r,i,o){void 0===o&&(o="count"),this.type=r,this.length=i,this.lengthType=o}var r=ArrayT.prototype;return r.decode=function decode(r,i){var o,g=r.pos,y=[],w=i;if(null!=this.length&&(o=p.resolveLength(this.length,r,i)),this.length instanceof u&&(Object.defineProperties(y,{parent:{value:i},_startOffset:{value:g},_currentOffset:{value:0,writable:!0},_length:{value:o}}),w=y),null==o||"bytes"===this.lengthType)for(var _=null!=o?r.pos+o:(null!=i?i._length:void 0)?i._startOffset+i._length:r.length;r.pos<_;)y.push(this.type.decode(r,w));else for(var x=0,k=o;x<k;x++)y.push(this.type.decode(r,w));return y},r.size=function size(r,i){if(!r)return this.type.size(null,i)*p.resolveLength(this.length,null,i);var size=0;this.length instanceof u&&(size+=this.length.size(),i={parent:i});for(var o,g=_createForOfIteratorHelperLoose(r);!(o=g()).done;){var y=o.value;size+=this.type.size(y,i)}return size},r.encode=function encode(r,i,o){var p=o;this.length instanceof u&&((p={pointers:[],startOffset:r.pos,parent:o}).pointerOffset=r.pos+this.size(i,p),this.length.encode(r,i.length));for(var g,y=_createForOfIteratorHelperLoose(i);!(g=y()).done;){var w=g.value;this.type.encode(r,w,p)}if(this.length instanceof u)for(var _=0;_<p.pointers.length;){var x=p.pointers[_++];x.type.encode(r,x.val)}},ArrayT}();r.exports=g},3425:function(r,i,o){"use strict";o(2087);var u=function(){function Bitfield(r,i){void 0===i&&(i=[]),this.type=r,this.flags=i}var r=Bitfield.prototype;return r.decode=function decode(r){for(var i=this.type.decode(r),o={},u=0;u<this.flags.length;u++){var p=this.flags[u];null!=p&&(o[p]=!!(i&1<<u))}return o},r.size=function size(){return this.type.size()},r.encode=function encode(r,i){for(var o=0,u=0;u<this.flags.length;u++){var p=this.flags[u];null!=p&&i[p]&&(o|=1<<u)}return this.type.encode(r,o)},Bitfield}();r.exports=u},9024:function(r){"use strict";var i=function(){function BooleanT(r){this.type=r}var r=BooleanT.prototype;return r.decode=function decode(r,i){return!!this.type.decode(r,i)},r.size=function size(r,i){return this.type.size(r,i)},r.encode=function encode(r,i,o){return this.type.encode(r,+i,o)},BooleanT}();r.exports=i},5250:function(r,i,o){"use strict";var u=o(6610),p=o(6462).Number,g=function(){function BufferT(r){this.length=r}var r=BufferT.prototype;return r.decode=function decode(r,i){var o=u.resolveLength(this.length,r,i);return r.readBuffer(o)},r.size=function size(r,i){return r?r.length:u.resolveLength(this.length,null,i)},r.encode=function encode(r,i,o){return this.length instanceof p&&this.length.encode(r,i.length),r.writeBuffer(i)},BufferT}();r.exports=g},3030:function(r,i,o){"use strict";var u,p=o(8823).Buffer;o(1539),o(9714),o(7042),o(4916),o(5306);try{u=o(4914)}catch(r){}var g=function(){function DecodeStream(r){this.buffer=r,this.pos=0,this.length=this.buffer.length}var r=DecodeStream.prototype;return r.readString=function readString(r,i){switch(void 0===i&&(i="ascii"),i){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.buffer.toString(i,this.pos,this.pos+=r);case"utf16be":for(var o=p.from(this.readBuffer(r)),g=0,y=o.length-1;g<y;g+=2){var w=o[g];o[g]=o[g+1],o[g+1]=w}return o.toString("utf16le");default:if(o=this.readBuffer(r),u)try{return u.decode(o,i)}catch(r){}return o}},r.readBuffer=function readBuffer(r){return this.buffer.slice(this.pos,this.pos+=r)},r.readUInt24BE=function readUInt24BE(){return(this.readUInt16BE()<<8)+this.readUInt8()},r.readUInt24LE=function readUInt24LE(){return this.readUInt16LE()+(this.readUInt8()<<16)},r.readInt24BE=function readInt24BE(){return(this.readInt16BE()<<8)+this.readUInt8()},r.readInt24LE=function readInt24LE(){return this.readUInt16LE()+(this.readInt8()<<16)},DecodeStream}();g.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8};var y=function _loop(r){if("read"===r.slice(0,4)){var i=g.TYPES[r.replace(/read|[BL]E/g,"")];g.prototype[r]=function(){var o=this.buffer[r](this.pos);return this.pos+=i,o}}};for(var w in p.prototype)y(w);r.exports=g},9126:function(r,i,o){"use strict";var u,p=o(8823).Buffer;function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}o(7042),o(3290),o(4916),o(5306);var g=o(2830),y=o(3030);try{u=o(4914)}catch(r){}var w=function(r){function EncodeStream(i){var o;return void 0===i&&(i=65536),(o=r.apply(this,arguments)||this).buffer=p.alloc(i),o.bufferOffset=0,o.pos=0,o}!function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,_setPrototypeOf(r,i)}(EncodeStream,r);var i=EncodeStream.prototype;return i._read=function _read(){},i.ensure=function ensure(r){if(this.bufferOffset+r>this.buffer.length)return this.flush()},i.flush=function flush(){if(this.bufferOffset>0)return this.push(p.from(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},i.writeBuffer=function writeBuffer(r){return this.flush(),this.push(r),this.pos+=r.length},i.writeString=function writeString(r,i){switch(void 0===i&&(i="ascii"),i){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(p.from(r,i));case"utf16be":for(var o=p.from(r,"utf16le"),g=0,y=o.length-1;g<y;g+=2){var w=o[g];o[g]=o[g+1],o[g+1]=w}return this.writeBuffer(o);default:if(u)return this.writeBuffer(u.encode(r,i));throw new Error("Install iconv-lite to enable additional string encodings.")}},i.writeUInt24BE=function writeUInt24BE(r){return this.ensure(3),this.buffer[this.bufferOffset++]=r>>>16&255,this.buffer[this.bufferOffset++]=r>>>8&255,this.buffer[this.bufferOffset++]=255&r,this.pos+=3},i.writeUInt24LE=function writeUInt24LE(r){return this.ensure(3),this.buffer[this.bufferOffset++]=255&r,this.buffer[this.bufferOffset++]=r>>>8&255,this.buffer[this.bufferOffset++]=r>>>16&255,this.pos+=3},i.writeInt24BE=function writeInt24BE(r){return r>=0?this.writeUInt24BE(r):this.writeUInt24BE(r+16777215+1)},i.writeInt24LE=function writeInt24LE(r){return r>=0?this.writeUInt24LE(r):this.writeUInt24LE(r+16777215+1)},i.fill=function fill(r,i){if(i<this.buffer.length)return this.ensure(i),this.buffer.fill(r,this.bufferOffset,this.bufferOffset+i),this.bufferOffset+=i,this.pos+=i;var o=p.alloc(i);return o.fill(r),this.writeBuffer(o)},i.end=function end(){return this.flush(),this.push(null)},EncodeStream}(g.Readable),_=function _loop(r){if("write"===r.slice(0,5)){var i=+y.TYPES[r.replace(/write|[BL]E/g,"")];w.prototype[r]=function(o){return this.ensure(i),this.buffer[r](o,this.bufferOffset),this.bufferOffset+=i,this.pos+=i}}};for(var x in p.prototype)_(x);r.exports=w},3100:function(r){"use strict";var i=function(){function Enum(r,i){void 0===i&&(i=[]),this.type=r,this.options=i}var r=Enum.prototype;return r.decode=function decode(r){var i=this.type.decode(r);return this.options[i]||i},r.size=function size(){return this.type.size()},r.encode=function encode(r,i){var o=this.options.indexOf(i);if(-1===o)throw new Error("Unknown option in enum: "+i);return this.type.encode(r,o)},Enum}();r.exports=i},6768:function(r,i,o){"use strict";function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}o(1539),o(8674);var u=o(1988),p=o(6462).Number,g=o(6610),y=o(9539).inspect,w=function(r){function LazyArrayT(){return r.apply(this,arguments)||this}!function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,_setPrototypeOf(r,i)}(LazyArrayT,r);var i=LazyArrayT.prototype;return i.decode=function decode(r,i){var o=r.pos,u=g.resolveLength(this.length,r,i);this.length instanceof p&&(i={parent:i,_startOffset:o,_currentOffset:0,_length:u});var y=new _(this.type,u,r,i);return r.pos+=u*this.type.size(null,i),y},i.size=function size(i,o){return i instanceof _&&(i=i.toArray()),r.prototype.size.call(this,i,o)},i.encode=function encode(i,o,u){return o instanceof _&&(o=o.toArray()),r.prototype.encode.call(this,i,o,u)},LazyArrayT}(u),_=function(){function LazyArray(r,i,o,u){this.type=r,this.length=i,this.stream=o,this.ctx=u,this.base=this.stream.pos,this.items=[]}var r=LazyArray.prototype;return r.get=function get(r){if(!(r<0||r>=this.length)){if(null==this.items[r]){var i=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.ctx)*r,this.items[r]=this.type.decode(this.stream,this.ctx),this.stream.pos=i}return this.items[r]}},r.toArray=function toArray(){for(var r=[],i=0,o=this.length;i<o;i++)r.push(this.get(i));return r},r.inspect=function inspect(){return y(this.toArray())},LazyArray}();r.exports=w},6462:function(r,i,o){"use strict";function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}var u=o(3030),p=function(){function NumberT(r,i){void 0===i&&(i="BE"),this.type=r,this.endian=i,this.fn=this.type,"8"!==this.type[this.type.length-1]&&(this.fn+=this.endian)}var r=NumberT.prototype;return r.size=function size(){return u.TYPES[this.type]},r.decode=function decode(r){return r["read"+this.fn]()},r.encode=function encode(r,i){return r["write"+this.fn](i)},NumberT}();i.Number=p,i.uint8=new p("UInt8"),i.uint16be=i.uint16=new p("UInt16","BE"),i.uint16le=new p("UInt16","LE"),i.uint24be=i.uint24=new p("UInt24","BE"),i.uint24le=new p("UInt24","LE"),i.uint32be=i.uint32=new p("UInt32","BE"),i.uint32le=new p("UInt32","LE"),i.int8=new p("Int8"),i.int16be=i.int16=new p("Int16","BE"),i.int16le=new p("Int16","LE"),i.int24be=i.int24=new p("Int24","BE"),i.int24le=new p("Int24","LE"),i.int32be=i.int32=new p("Int32","BE"),i.int32le=new p("Int32","LE"),i.floatbe=i.float=new p("Float","BE"),i.floatle=new p("Float","LE"),i.doublebe=i.double=new p("Double","BE"),i.doublele=new p("Double","LE");var g=function(r){function Fixed(i,o,u){var p;return void 0===u&&(u=i>>1),(p=r.call(this,"Int"+i,o)||this)._point=1<<u,p}!function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,_setPrototypeOf(r,i)}(Fixed,r);var i=Fixed.prototype;return i.decode=function decode(i){return r.prototype.decode.call(this,i)/this._point},i.encode=function encode(i,o){return r.prototype.encode.call(this,i,o*this._point|0)},Fixed}(p);i.Fixed=g,i.fixed16be=i.fixed16=new g(16,"BE"),i.fixed16le=new g(16,"LE"),i.fixed32be=i.fixed32=new g(32,"BE"),i.fixed32le=new g(32,"LE")},9541:function(r){"use strict";var i=function(){function Optional(r,i){void 0===i&&(i=!0),this.type=r,this.condition=i}var r=Optional.prototype;return r.decode=function decode(r,i){var o=this.condition;if("function"==typeof o&&(o=o.call(i,i)),o)return this.type.decode(r,i)},r.size=function size(r,i){var o=this.condition;return"function"==typeof o&&(o=o.call(i,i)),o?this.type.size(r,i):0},r.encode=function encode(r,i,o){var u=this.condition;if("function"==typeof u&&(u=u.call(o,o)),u)return this.type.encode(r,i,o)},Optional}();r.exports=i},8011:function(r,i,o){"use strict";var u=o(6610),p=function(){function Pointer(r,i,o){if(void 0===o&&(o={}),this.offsetType=r,this.type=i,this.options=o,"void"===this.type&&(this.type=null),null==this.options.type&&(this.options.type="local"),null==this.options.allowNull&&(this.options.allowNull=!0),null==this.options.nullValue&&(this.options.nullValue=0),null==this.options.lazy&&(this.options.lazy=!1),this.options.relativeTo){if("function"!=typeof this.options.relativeTo)throw new Error("relativeTo option must be a function");this.relativeToGetter=o.relativeTo}}var r=Pointer.prototype;return r.decode=function decode(r,i){var o,p=this,g=this.offsetType.decode(r,i);if(g===this.options.nullValue&&this.options.allowNull)return null;switch(this.options.type){case"local":o=i._startOffset;break;case"immediate":o=r.pos-this.offsetType.size();break;case"parent":o=i.parent._startOffset;break;default:for(var y=i;y.parent;)y=y.parent;o=y._startOffset||0}this.options.relativeTo&&(o+=this.relativeToGetter(i));var w=g+o;if(null!=this.type){var _=null,x=function decodeValue(){if(null!=_)return _;var o=r.pos;return r.pos=w,_=p.type.decode(r,i),r.pos=o,_};return this.options.lazy?new u.PropertyDescriptor({get:x}):x()}return w},r.size=function size(r,i){var o=i;switch(this.options.type){case"local":case"immediate":break;case"parent":i=i.parent;break;default:for(;i.parent;)i=i.parent}var u=this.type;if(null==u){if(!(r instanceof g))throw new Error("Must be a VoidPointer");u=r.type,r=r.value}return r&&i&&(i.pointerSize+=u.size(r,o)),this.offsetType.size()},r.encode=function encode(r,i,o){var u,p=o;if(null!=i){switch(this.options.type){case"local":u=o.startOffset;break;case"immediate":u=r.pos+this.offsetType.size(i,p);break;case"parent":u=(o=o.parent).startOffset;break;default:for(u=0;o.parent;)o=o.parent}this.options.relativeTo&&(u+=this.relativeToGetter(p.val)),this.offsetType.encode(r,o.pointerOffset-u);var y=this.type;if(null==y){if(!(i instanceof g))throw new Error("Must be a VoidPointer");y=i.type,i=i.value}return o.pointers.push({type:y,val:i,parent:p}),o.pointerOffset+=y.size(i,p)}this.offsetType.encode(r,this.options.nullValue)},Pointer}(),g=function VoidPointer(r,i){this.type=r,this.value=i};i.Pointer=p,i.VoidPointer=g},7468:function(r,i,o){"use strict";o(3290);var u=o(6610),p=function(){function Reserved(r,i){void 0===i&&(i=1),this.type=r,this.count=i}var r=Reserved.prototype;return r.decode=function decode(r,i){r.pos+=this.size(null,i)},r.size=function size(r,i){var o=u.resolveLength(this.count,null,i);return this.type.size()*o},r.encode=function encode(r,i,o){return r.fill(0,this.size(i,o))},Reserved}();r.exports=p},1466:function(r,i,o){"use strict";var u=o(8823).Buffer,p=o(6462).Number,g=o(6610),y=function(){function StringT(r,i){void 0===i&&(i="ascii"),this.length=r,this.encoding=i}var r=StringT.prototype;return r.decode=function decode(r,i){var o,u;if(null!=this.length)o=g.resolveLength(this.length,r,i);else{var p;for(p=r.buffer,o=r.length,u=r.pos;u<o&&0!==p[u];)++u;o=u-r.pos}var y=this.encoding;"function"==typeof y&&(y=y.call(i,i)||"ascii");var w=r.readString(o,y);return null==this.length&&r.pos<r.length&&r.pos++,w},r.size=function size(r,i){if(!r)return g.resolveLength(this.length,null,i);var o=this.encoding;"function"==typeof o&&(o=o.call(null!=i?i.val:void 0,null!=i?i.val:void 0)||"ascii"),"utf16be"===o&&(o="utf16le");var size=u.byteLength(r,o);return this.length instanceof p&&(size+=this.length.size()),null==this.length&&size++,size},r.encode=function encode(r,i,o){var g=this.encoding;if("function"==typeof g&&(g=g.call(null!=o?o.val:void 0,null!=o?o.val:void 0)||"ascii"),this.length instanceof p&&this.length.encode(r,u.byteLength(i,g)),r.writeString(i,g),null==this.length)return r.writeUInt8(0)},StringT}();r.exports=y},1219:function(r,i,o){"use strict";var u=o(6610),p=function(){function Struct(r){void 0===r&&(r={}),this.fields=r}var r=Struct.prototype;return r.decode=function decode(r,i,o){void 0===o&&(o=0);var u=this._setup(r,i,o);return this._parseFields(r,u,this.fields),null!=this.process&&this.process.call(u,r),u},r._setup=function _setup(r,i,o){var u={};return Object.defineProperties(u,{parent:{value:i},_startOffset:{value:r.pos},_currentOffset:{value:0,writable:!0},_length:{value:o}}),u},r._parseFields=function _parseFields(r,i,o){for(var p in o){var g,y=o[p];void 0!==(g="function"==typeof y?y.call(i,i):y.decode(r,i))&&(g instanceof u.PropertyDescriptor?Object.defineProperty(i,p,g):i[p]=g),i._currentOffset=r.pos-i._startOffset}},r.size=function size(r,i,o){null==r&&(r={}),null==o&&(o=!0);var u={parent:i,val:r,pointerSize:0},size=0;for(var p in this.fields){var g=this.fields[p];null!=g.size&&(size+=g.size(r[p],u))}return o&&(size+=u.pointerSize),size},r.encode=function encode(r,i,o){var u;null!=this.preEncode&&this.preEncode.call(i,r);var p={pointers:[],startOffset:r.pos,parent:o,val:i,pointerSize:0};for(var g in p.pointerOffset=r.pos+this.size(i,p,!1),this.fields)null!=(u=this.fields[g]).encode&&u.encode(r,i[g],p);for(var y=0;y<p.pointers.length;){var w=p.pointers[y++];w.type.encode(r,w.val,w.parent)}},Struct}();r.exports=p},3585:function(r,i,o){"use strict";function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}o(1539);var u=o(1219),p=function(r){function VersionedStruct(i,o){var u;return void 0===o&&(o={}),(u=r.call(this)||this).type=i,u.versions=o,"string"==typeof i&&(u.versionPath=i.split(".")),u}!function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,_setPrototypeOf(r,i)}(VersionedStruct,r);var i=VersionedStruct.prototype;return i.decode=function decode(r,i,o){void 0===o&&(o=0);var u=this._setup(r,i,o);"string"==typeof this.type?u.version=function getPath(r,i){return i.reduce((function(r,i){return r&&r[i]}),r)}(i,this.versionPath):u.version=this.type.decode(r),this.versions.header&&this._parseFields(r,u,this.versions.header);var p=this.versions[u.version];if(null==p)throw new Error("Unknown version "+u.version);return p instanceof VersionedStruct?p.decode(r,i):(this._parseFields(r,u,p),null!=this.process&&this.process.call(u,r),u)},i.size=function size(r,i,o){var u,p;if(void 0===o&&(o=!0),!r)throw new Error("Not a fixed size");var g={parent:i,val:r,pointerSize:0},size=0;if("string"!=typeof this.type&&(size+=this.type.size(r.version,g)),this.versions.header)for(u in this.versions.header)null!=(p=this.versions.header[u]).size&&(size+=p.size(r[u],g));var y=this.versions[r.version];if(null==y)throw new Error("Unknown version "+r.version);for(u in y)null!=(p=y[u]).size&&(size+=p.size(r[u],g));return o&&(size+=g.pointerSize),size},i.encode=function encode(r,i,o){var u,p;null!=this.preEncode&&this.preEncode.call(i,r);var g={pointers:[],startOffset:r.pos,parent:o,val:i,pointerSize:0};if(g.pointerOffset=r.pos+this.size(i,g,!1),"string"!=typeof this.type&&this.type.encode(r,i.version),this.versions.header)for(u in this.versions.header)null!=(p=this.versions.header[u]).encode&&p.encode(r,i[u],g);var y=this.versions[i.version];for(u in y)null!=(p=y[u]).encode&&p.encode(r,i[u],g);for(var w=0;w<g.pointers.length;){var _=g.pointers[w++];_.type.encode(r,_.val,_.parent)}},VersionedStruct}(u);r.exports=p},6610:function(r,i,o){"use strict";var u=o(6462).Number;i.resolveLength=function(r,i,o){var p;if("number"==typeof r?p=r:"function"==typeof r?p=r.call(o,o):o&&"string"==typeof r?p=o[r]:i&&r instanceof u&&(p=r.decode(i)),isNaN(p))throw new Error("Not a fixed size");return p};i.PropertyDescriptor=function PropertyDescriptor(r){for(var i in void 0===r&&(r={}),this.enumerable=!0,this.configurable=!0,r){var o=r[i];this[i]=o}}},8823:function(r,i,o){"use strict";function _defineProperties(r,i){for(var o=0;o<i.length;o++){var u=i[o];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(r,(p=u.key,g=void 0,"symbol"==typeof(g=function _toPrimitive(r,i){if("object"!=typeof r||null===r)return r;var o=r[Symbol.toPrimitive];if(void 0!==o){var u=o.call(r,i||"default");if("object"!=typeof u)return u;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(r)}(p,"string"))?g:String(g)),u)}var p,g}function _assertThisInitialized(r){if(void 0===r)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}o(2526),o(1817),o(1539),o(6992),o(2472),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(7803),o(6649),o(6078),o(3290),o(7042),o(2222),o(9714),o(3210),o(4916),o(5306),o(6699),o(2023),o(9653),o(3753),o(545),o(8309),o(3161);var u=o(9742),p=o(645),g="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;i.Buffer=Buffer,i.SlowBuffer=function SlowBuffer(r){+r!=r&&(r=0);return Buffer.alloc(+r)},i.INSPECT_MAX_BYTES=50;var y=2147483647;function createBuffer(r){if(r>y)throw new RangeError('The value "'+r+'" is invalid for option "size"');var i=new Uint8Array(r);return Object.setPrototypeOf(i,Buffer.prototype),i}function Buffer(r,i,o){if("number"==typeof r){if("string"==typeof i)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(r)}return from(r,i,o)}function from(r,i,o){if("string"==typeof r)return function fromString(r,i){"string"==typeof i&&""!==i||(i="utf8");if(!Buffer.isEncoding(i))throw new TypeError("Unknown encoding: "+i);var o=0|byteLength(r,i),u=createBuffer(o),p=u.write(r,i);p!==o&&(u=u.slice(0,p));return u}(r,i);if(ArrayBuffer.isView(r))return function fromArrayView(r){if(isInstance(r,Uint8Array)){var i=new Uint8Array(r);return fromArrayBuffer(i.buffer,i.byteOffset,i.byteLength)}return fromArrayLike(r)}(r);if(null==r)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(isInstance(r,ArrayBuffer)||r&&isInstance(r.buffer,ArrayBuffer))return fromArrayBuffer(r,i,o);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(r,SharedArrayBuffer)||r&&isInstance(r.buffer,SharedArrayBuffer)))return fromArrayBuffer(r,i,o);if("number"==typeof r)throw new TypeError('The "value" argument must not be of type number. Received type number');var u=r.valueOf&&r.valueOf();if(null!=u&&u!==r)return Buffer.from(u,i,o);var p=function fromObject(r){if(Buffer.isBuffer(r)){var i=0|checked(r.length),o=createBuffer(i);return 0===o.length||r.copy(o,0,0,i),o}if(void 0!==r.length)return"number"!=typeof r.length||numberIsNaN(r.length)?createBuffer(0):fromArrayLike(r);if("Buffer"===r.type&&Array.isArray(r.data))return fromArrayLike(r.data)}(r);if(p)return p;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof r[Symbol.toPrimitive])return Buffer.from(r[Symbol.toPrimitive]("string"),i,o);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}function assertSize(r){if("number"!=typeof r)throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function allocUnsafe(r){return assertSize(r),createBuffer(r<0?0:0|checked(r))}function fromArrayLike(r){for(var i=r.length<0?0:0|checked(r.length),o=createBuffer(i),u=0;u<i;u+=1)o[u]=255&r[u];return o}function fromArrayBuffer(r,i,o){if(i<0||r.byteLength<i)throw new RangeError('"offset" is outside of buffer bounds');if(r.byteLength<i+(o||0))throw new RangeError('"length" is outside of buffer bounds');var u;return u=void 0===i&&void 0===o?new Uint8Array(r):void 0===o?new Uint8Array(r,i):new Uint8Array(r,i,o),Object.setPrototypeOf(u,Buffer.prototype),u}function checked(r){if(r>=y)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+y.toString(16)+" bytes");return 0|r}function byteLength(r,i){if(Buffer.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||isInstance(r,ArrayBuffer))return r.byteLength;if("string"!=typeof r)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);var o=r.length,u=arguments.length>2&&!0===arguments[2];if(!u&&0===o)return 0;for(var p=!1;;)switch(i){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":return utf8ToBytes(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return base64ToBytes(r).length;default:if(p)return u?-1:utf8ToBytes(r).length;i=(""+i).toLowerCase(),p=!0}}function slowToString(r,i,o){var u=!1;if((void 0===i||i<0)&&(i=0),i>this.length)return"";if((void 0===o||o>this.length)&&(o=this.length),o<=0)return"";if((o>>>=0)<=(i>>>=0))return"";for(r||(r="utf8");;)switch(r){case"hex":return hexSlice(this,i,o);case"utf8":case"utf-8":return utf8Slice(this,i,o);case"ascii":return asciiSlice(this,i,o);case"latin1":case"binary":return latin1Slice(this,i,o);case"base64":return base64Slice(this,i,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,i,o);default:if(u)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),u=!0}}function swap(r,i,o){var u=r[i];r[i]=r[o],r[o]=u}function bidirectionalIndexOf(r,i,o,u,p){if(0===r.length)return-1;if("string"==typeof o?(u=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),numberIsNaN(o=+o)&&(o=p?0:r.length-1),o<0&&(o=r.length+o),o>=r.length){if(p)return-1;o=r.length-1}else if(o<0){if(!p)return-1;o=0}if("string"==typeof i&&(i=Buffer.from(i,u)),Buffer.isBuffer(i))return 0===i.length?-1:arrayIndexOf(r,i,o,u,p);if("number"==typeof i)return i&=255,"function"==typeof Uint8Array.prototype.indexOf?p?Uint8Array.prototype.indexOf.call(r,i,o):Uint8Array.prototype.lastIndexOf.call(r,i,o):arrayIndexOf(r,[i],o,u,p);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(r,i,o,u,p){var g,y=1,w=r.length,_=i.length;if(void 0!==u&&("ucs2"===(u=String(u).toLowerCase())||"ucs-2"===u||"utf16le"===u||"utf-16le"===u)){if(r.length<2||i.length<2)return-1;y=2,w/=2,_/=2,o/=2}function read(r,i){return 1===y?r[i]:r.readUInt16BE(i*y)}if(p){var x=-1;for(g=o;g<w;g++)if(read(r,g)===read(i,-1===x?0:g-x)){if(-1===x&&(x=g),g-x+1===_)return x*y}else-1!==x&&(g-=g-x),x=-1}else for(o+_>w&&(o=w-_),g=o;g>=0;g--){for(var k=!0,P=0;P<_;P++)if(read(r,g+P)!==read(i,P)){k=!1;break}if(k)return g}return-1}function hexWrite(r,i,o,u){o=Number(o)||0;var p=r.length-o;u?(u=Number(u))>p&&(u=p):u=p;var g,y=i.length;for(u>y/2&&(u=y/2),g=0;g<u;++g){var w=parseInt(i.substr(2*g,2),16);if(numberIsNaN(w))return g;r[o+g]=w}return g}function utf8Write(r,i,o,u){return blitBuffer(utf8ToBytes(i,r.length-o),r,o,u)}function asciiWrite(r,i,o,u){return blitBuffer(function asciiToBytes(r){for(var i=[],o=0;o<r.length;++o)i.push(255&r.charCodeAt(o));return i}(i),r,o,u)}function base64Write(r,i,o,u){return blitBuffer(base64ToBytes(i),r,o,u)}function ucs2Write(r,i,o,u){return blitBuffer(function utf16leToBytes(r,i){for(var o,u,p,g=[],y=0;y<r.length&&!((i-=2)<0);++y)u=(o=r.charCodeAt(y))>>8,p=o%256,g.push(p),g.push(u);return g}(i,r.length-o),r,o,u)}function base64Slice(r,i,o){return 0===i&&o===r.length?u.fromByteArray(r):u.fromByteArray(r.slice(i,o))}function utf8Slice(r,i,o){o=Math.min(r.length,o);for(var u=[],p=i;p<o;){var g=r[p],y=null,_=g>239?4:g>223?3:g>191?2:1;if(p+_<=o){var x=void 0,k=void 0,P=void 0,O=void 0;switch(_){case 1:g<128&&(y=g);break;case 2:128==(192&(x=r[p+1]))&&(O=(31&g)<<6|63&x)>127&&(y=O);break;case 3:x=r[p+1],k=r[p+2],128==(192&x)&&128==(192&k)&&(O=(15&g)<<12|(63&x)<<6|63&k)>2047&&(O<55296||O>57343)&&(y=O);break;case 4:x=r[p+1],k=r[p+2],P=r[p+3],128==(192&x)&&128==(192&k)&&128==(192&P)&&(O=(15&g)<<18|(63&x)<<12|(63&k)<<6|63&P)>65535&&O<1114112&&(y=O)}}null===y?(y=65533,_=1):y>65535&&(y-=65536,u.push(y>>>10&1023|55296),y=56320|1023&y),u.push(y),p+=_}return function decodeCodePointsArray(r){var i=r.length;if(i<=w)return String.fromCharCode.apply(String,r);var o="",u=0;for(;u<i;)o+=String.fromCharCode.apply(String,r.slice(u,u+=w));return o}(u)}i.kMaxLength=y,Buffer.TYPED_ARRAY_SUPPORT=function typedArraySupport(){try{var r=new Uint8Array(1),i={foo:function foo(){return 42}};return Object.setPrototypeOf(i,Uint8Array.prototype),Object.setPrototypeOf(r,i),42===r.foo()}catch(r){return!1}}(),!Buffer.TYPED_ARRAY_SUPPORT&&"undefined"!=typeof console&&console.error,Object.defineProperty(Buffer.prototype,"parent",{enumerable:!0,get:function get(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,"offset",{enumerable:!0,get:function get(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(r,i,o){return from(r,i,o)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(r,i,o){return function alloc(r,i,o){return assertSize(r),r<=0?createBuffer(r):void 0!==i?"string"==typeof o?createBuffer(r).fill(i,o):createBuffer(r).fill(i):createBuffer(r)}(r,i,o)},Buffer.allocUnsafe=function(r){return allocUnsafe(r)},Buffer.allocUnsafeSlow=function(r){return allocUnsafe(r)},Buffer.isBuffer=function isBuffer(r){return null!=r&&!0===r._isBuffer&&r!==Buffer.prototype},Buffer.compare=function compare(r,i){if(isInstance(r,Uint8Array)&&(r=Buffer.from(r,r.offset,r.byteLength)),isInstance(i,Uint8Array)&&(i=Buffer.from(i,i.offset,i.byteLength)),!Buffer.isBuffer(r)||!Buffer.isBuffer(i))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(r===i)return 0;for(var o=r.length,u=i.length,p=0,g=Math.min(o,u);p<g;++p)if(r[p]!==i[p]){o=r[p],u=i[p];break}return o<u?-1:u<o?1:0},Buffer.isEncoding=function isEncoding(r){switch(String(r).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function concat(r,i){if(!Array.isArray(r))throw new TypeError('"list" argument must be an Array of Buffers');if(0===r.length)return Buffer.alloc(0);var o;if(void 0===i)for(i=0,o=0;o<r.length;++o)i+=r[o].length;var u=Buffer.allocUnsafe(i),p=0;for(o=0;o<r.length;++o){var g=r[o];if(isInstance(g,Uint8Array))p+g.length>u.length?(Buffer.isBuffer(g)||(g=Buffer.from(g)),g.copy(u,p)):Uint8Array.prototype.set.call(u,g,p);else{if(!Buffer.isBuffer(g))throw new TypeError('"list" argument must be an Array of Buffers');g.copy(u,p)}p+=g.length}return u},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){var r=this.length;if(r%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var i=0;i<r;i+=2)swap(this,i,i+1);return this},Buffer.prototype.swap32=function swap32(){var r=this.length;if(r%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var i=0;i<r;i+=4)swap(this,i,i+3),swap(this,i+1,i+2);return this},Buffer.prototype.swap64=function swap64(){var r=this.length;if(r%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var i=0;i<r;i+=8)swap(this,i,i+7),swap(this,i+1,i+6),swap(this,i+2,i+5),swap(this,i+3,i+4);return this},Buffer.prototype.toString=function toString(){var r=this.length;return 0===r?"":0===arguments.length?utf8Slice(this,0,r):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function equals(r){if(!Buffer.isBuffer(r))throw new TypeError("Argument must be a Buffer");return this===r||0===Buffer.compare(this,r)},Buffer.prototype.inspect=function inspect(){var r="",o=i.INSPECT_MAX_BYTES;return r=this.toString("hex",0,o).replace(/(.{2})/g,"$1 ").trim(),this.length>o&&(r+=" ... "),"<Buffer "+r+">"},g&&(Buffer.prototype[g]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(r,i,o,u,p){if(isInstance(r,Uint8Array)&&(r=Buffer.from(r,r.offset,r.byteLength)),!Buffer.isBuffer(r))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof r);if(void 0===i&&(i=0),void 0===o&&(o=r?r.length:0),void 0===u&&(u=0),void 0===p&&(p=this.length),i<0||o>r.length||u<0||p>this.length)throw new RangeError("out of range index");if(u>=p&&i>=o)return 0;if(u>=p)return-1;if(i>=o)return 1;if(this===r)return 0;for(var g=(p>>>=0)-(u>>>=0),y=(o>>>=0)-(i>>>=0),w=Math.min(g,y),_=this.slice(u,p),x=r.slice(i,o),k=0;k<w;++k)if(_[k]!==x[k]){g=_[k],y=x[k];break}return g<y?-1:y<g?1:0},Buffer.prototype.includes=function includes(r,i,o){return-1!==this.indexOf(r,i,o)},Buffer.prototype.indexOf=function indexOf(r,i,o){return bidirectionalIndexOf(this,r,i,o,!0)},Buffer.prototype.lastIndexOf=function lastIndexOf(r,i,o){return bidirectionalIndexOf(this,r,i,o,!1)},Buffer.prototype.write=function write(r,i,o,u){if(void 0===i)u="utf8",o=this.length,i=0;else if(void 0===o&&"string"==typeof i)u=i,o=this.length,i=0;else{if(!isFinite(i))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");i>>>=0,isFinite(o)?(o>>>=0,void 0===u&&(u="utf8")):(u=o,o=void 0)}var p=this.length-i;if((void 0===o||o>p)&&(o=p),r.length>0&&(o<0||i<0)||i>this.length)throw new RangeError("Attempt to write outside buffer bounds");u||(u="utf8");for(var g=!1;;)switch(u){case"hex":return hexWrite(this,r,i,o);case"utf8":case"utf-8":return utf8Write(this,r,i,o);case"ascii":case"latin1":case"binary":return asciiWrite(this,r,i,o);case"base64":return base64Write(this,r,i,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,r,i,o);default:if(g)throw new TypeError("Unknown encoding: "+u);u=(""+u).toLowerCase(),g=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function asciiSlice(r,i,o){var u="";o=Math.min(r.length,o);for(var p=i;p<o;++p)u+=String.fromCharCode(127&r[p]);return u}function latin1Slice(r,i,o){var u="";o=Math.min(r.length,o);for(var p=i;p<o;++p)u+=String.fromCharCode(r[p]);return u}function hexSlice(r,i,o){var u=r.length;(!i||i<0)&&(i=0),(!o||o<0||o>u)&&(o=u);for(var p="",g=i;g<o;++g)p+=k[r[g]];return p}function utf16leSlice(r,i,o){for(var u=r.slice(i,o),p="",g=0;g<u.length-1;g+=2)p+=String.fromCharCode(u[g]+256*u[g+1]);return p}function checkOffset(r,i,o){if(r%1!=0||r<0)throw new RangeError("offset is not uint");if(r+i>o)throw new RangeError("Trying to access beyond buffer length")}function checkInt(r,i,o,u,p,g){if(!Buffer.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(i>p||i<g)throw new RangeError('"value" argument is out of bounds');if(o+u>r.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(r,i,o,u,p){checkIntBI(i,u,p,r,o,7);var g=Number(i&BigInt(4294967295));r[o++]=g,g>>=8,r[o++]=g,g>>=8,r[o++]=g,g>>=8,r[o++]=g;var y=Number(i>>BigInt(32)&BigInt(4294967295));return r[o++]=y,y>>=8,r[o++]=y,y>>=8,r[o++]=y,y>>=8,r[o++]=y,o}function wrtBigUInt64BE(r,i,o,u,p){checkIntBI(i,u,p,r,o,7);var g=Number(i&BigInt(4294967295));r[o+7]=g,g>>=8,r[o+6]=g,g>>=8,r[o+5]=g,g>>=8,r[o+4]=g;var y=Number(i>>BigInt(32)&BigInt(4294967295));return r[o+3]=y,y>>=8,r[o+2]=y,y>>=8,r[o+1]=y,y>>=8,r[o]=y,o+8}function checkIEEE754(r,i,o,u,p,g){if(o+u>r.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function writeFloat(r,i,o,u,g){return i=+i,o>>>=0,g||checkIEEE754(r,0,o,4),p.write(r,i,o,u,23,4),o+4}function writeDouble(r,i,o,u,g){return i=+i,o>>>=0,g||checkIEEE754(r,0,o,8),p.write(r,i,o,u,52,8),o+8}Buffer.prototype.slice=function slice(r,i){var o=this.length;(r=~~r)<0?(r+=o)<0&&(r=0):r>o&&(r=o),(i=void 0===i?o:~~i)<0?(i+=o)<0&&(i=0):i>o&&(i=o),i<r&&(i=r);var u=this.subarray(r,i);return Object.setPrototypeOf(u,Buffer.prototype),u},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(r,i,o){r>>>=0,i>>>=0,o||checkOffset(r,i,this.length);for(var u=this[r],p=1,g=0;++g<i&&(p*=256);)u+=this[r+g]*p;return u},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(r,i,o){r>>>=0,i>>>=0,o||checkOffset(r,i,this.length);for(var u=this[r+--i],p=1;i>0&&(p*=256);)u+=this[r+--i]*p;return u},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(r,i){return r>>>=0,i||checkOffset(r,1,this.length),this[r]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(r,i){return r>>>=0,i||checkOffset(r,2,this.length),this[r]|this[r+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(r,i){return r>>>=0,i||checkOffset(r,2,this.length),this[r]<<8|this[r+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(r,i){return r>>>=0,i||checkOffset(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+16777216*this[r+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(r,i){return r>>>=0,i||checkOffset(r,4,this.length),16777216*this[r]+(this[r+1]<<16|this[r+2]<<8|this[r+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(r){validateNumber(r>>>=0,"offset");var i=this[r],o=this[r+7];void 0!==i&&void 0!==o||boundsError(r,this.length-8);var u=i+this[++r]*Math.pow(2,8)+this[++r]*Math.pow(2,16)+this[++r]*Math.pow(2,24),p=this[++r]+this[++r]*Math.pow(2,8)+this[++r]*Math.pow(2,16)+o*Math.pow(2,24);return BigInt(u)+(BigInt(p)<<BigInt(32))})),Buffer.prototype.readBigUInt64BE=defineBigIntMethod((function readBigUInt64BE(r){validateNumber(r>>>=0,"offset");var i=this[r],o=this[r+7];void 0!==i&&void 0!==o||boundsError(r,this.length-8);var u=i*Math.pow(2,24)+this[++r]*Math.pow(2,16)+this[++r]*Math.pow(2,8)+this[++r],p=this[++r]*Math.pow(2,24)+this[++r]*Math.pow(2,16)+this[++r]*Math.pow(2,8)+o;return(BigInt(u)<<BigInt(32))+BigInt(p)})),Buffer.prototype.readIntLE=function readIntLE(r,i,o){r>>>=0,i>>>=0,o||checkOffset(r,i,this.length);for(var u=this[r],p=1,g=0;++g<i&&(p*=256);)u+=this[r+g]*p;return u>=(p*=128)&&(u-=Math.pow(2,8*i)),u},Buffer.prototype.readIntBE=function readIntBE(r,i,o){r>>>=0,i>>>=0,o||checkOffset(r,i,this.length);for(var u=i,p=1,g=this[r+--u];u>0&&(p*=256);)g+=this[r+--u]*p;return g>=(p*=128)&&(g-=Math.pow(2,8*i)),g},Buffer.prototype.readInt8=function readInt8(r,i){return r>>>=0,i||checkOffset(r,1,this.length),128&this[r]?-1*(255-this[r]+1):this[r]},Buffer.prototype.readInt16LE=function readInt16LE(r,i){r>>>=0,i||checkOffset(r,2,this.length);var o=this[r]|this[r+1]<<8;return 32768&o?4294901760|o:o},Buffer.prototype.readInt16BE=function readInt16BE(r,i){r>>>=0,i||checkOffset(r,2,this.length);var o=this[r+1]|this[r]<<8;return 32768&o?4294901760|o:o},Buffer.prototype.readInt32LE=function readInt32LE(r,i){return r>>>=0,i||checkOffset(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(r,i){return r>>>=0,i||checkOffset(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(r){validateNumber(r>>>=0,"offset");var i=this[r],o=this[r+7];void 0!==i&&void 0!==o||boundsError(r,this.length-8);var u=this[r+4]+this[r+5]*Math.pow(2,8)+this[r+6]*Math.pow(2,16)+(o<<24);return(BigInt(u)<<BigInt(32))+BigInt(i+this[++r]*Math.pow(2,8)+this[++r]*Math.pow(2,16)+this[++r]*Math.pow(2,24))})),Buffer.prototype.readBigInt64BE=defineBigIntMethod((function readBigInt64BE(r){validateNumber(r>>>=0,"offset");var i=this[r],o=this[r+7];void 0!==i&&void 0!==o||boundsError(r,this.length-8);var u=(i<<24)+this[++r]*Math.pow(2,16)+this[++r]*Math.pow(2,8)+this[++r];return(BigInt(u)<<BigInt(32))+BigInt(this[++r]*Math.pow(2,24)+this[++r]*Math.pow(2,16)+this[++r]*Math.pow(2,8)+o)})),Buffer.prototype.readFloatLE=function readFloatLE(r,i){return r>>>=0,i||checkOffset(r,4,this.length),p.read(this,r,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(r,i){return r>>>=0,i||checkOffset(r,4,this.length),p.read(this,r,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(r,i){return r>>>=0,i||checkOffset(r,8,this.length),p.read(this,r,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(r,i){return r>>>=0,i||checkOffset(r,8,this.length),p.read(this,r,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(r,i,o,u){(r=+r,i>>>=0,o>>>=0,u)||checkInt(this,r,i,o,Math.pow(2,8*o)-1,0);var p=1,g=0;for(this[i]=255&r;++g<o&&(p*=256);)this[i+g]=r/p&255;return i+o},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(r,i,o,u){(r=+r,i>>>=0,o>>>=0,u)||checkInt(this,r,i,o,Math.pow(2,8*o)-1,0);var p=o-1,g=1;for(this[i+p]=255&r;--p>=0&&(g*=256);)this[i+p]=r/g&255;return i+o},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,1,255,0),this[i]=255&r,i+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,2,65535,0),this[i]=255&r,this[i+1]=r>>>8,i+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,2,65535,0),this[i]=r>>>8,this[i+1]=255&r,i+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,4,4294967295,0),this[i+3]=r>>>24,this[i+2]=r>>>16,this[i+1]=r>>>8,this[i]=255&r,i+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,4,4294967295,0),this[i]=r>>>24,this[i+1]=r>>>16,this[i+2]=r>>>8,this[i+3]=255&r,i+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(r,i){return void 0===i&&(i=0),wrtBigUInt64LE(this,r,i,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(r,i){return void 0===i&&(i=0),wrtBigUInt64BE(this,r,i,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(r,i,o,u){if(r=+r,i>>>=0,!u){var p=Math.pow(2,8*o-1);checkInt(this,r,i,o,p-1,-p)}var g=0,y=1,w=0;for(this[i]=255&r;++g<o&&(y*=256);)r<0&&0===w&&0!==this[i+g-1]&&(w=1),this[i+g]=(r/y>>0)-w&255;return i+o},Buffer.prototype.writeIntBE=function writeIntBE(r,i,o,u){if(r=+r,i>>>=0,!u){var p=Math.pow(2,8*o-1);checkInt(this,r,i,o,p-1,-p)}var g=o-1,y=1,w=0;for(this[i+g]=255&r;--g>=0&&(y*=256);)r<0&&0===w&&0!==this[i+g+1]&&(w=1),this[i+g]=(r/y>>0)-w&255;return i+o},Buffer.prototype.writeInt8=function writeInt8(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,1,127,-128),r<0&&(r=255+r+1),this[i]=255&r,i+1},Buffer.prototype.writeInt16LE=function writeInt16LE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,2,32767,-32768),this[i]=255&r,this[i+1]=r>>>8,i+2},Buffer.prototype.writeInt16BE=function writeInt16BE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,2,32767,-32768),this[i]=r>>>8,this[i+1]=255&r,i+2},Buffer.prototype.writeInt32LE=function writeInt32LE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,4,2147483647,-2147483648),this[i]=255&r,this[i+1]=r>>>8,this[i+2]=r>>>16,this[i+3]=r>>>24,i+4},Buffer.prototype.writeInt32BE=function writeInt32BE(r,i,o){return r=+r,i>>>=0,o||checkInt(this,r,i,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),this[i]=r>>>24,this[i+1]=r>>>16,this[i+2]=r>>>8,this[i+3]=255&r,i+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(r,i){return void 0===i&&(i=0),wrtBigUInt64LE(this,r,i,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(r,i){return void 0===i&&(i=0),wrtBigUInt64BE(this,r,i,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(r,i,o){return writeFloat(this,r,i,!0,o)},Buffer.prototype.writeFloatBE=function writeFloatBE(r,i,o){return writeFloat(this,r,i,!1,o)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(r,i,o){return writeDouble(this,r,i,!0,o)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(r,i,o){return writeDouble(this,r,i,!1,o)},Buffer.prototype.copy=function copy(r,i,o,u){if(!Buffer.isBuffer(r))throw new TypeError("argument should be a Buffer");if(o||(o=0),u||0===u||(u=this.length),i>=r.length&&(i=r.length),i||(i=0),u>0&&u<o&&(u=o),u===o)return 0;if(0===r.length||0===this.length)return 0;if(i<0)throw new RangeError("targetStart out of bounds");if(o<0||o>=this.length)throw new RangeError("Index out of range");if(u<0)throw new RangeError("sourceEnd out of bounds");u>this.length&&(u=this.length),r.length-i<u-o&&(u=r.length-i+o);var p=u-o;return this===r&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(i,o,u):Uint8Array.prototype.set.call(r,this.subarray(o,u),i),p},Buffer.prototype.fill=function fill(r,i,o,u){if("string"==typeof r){if("string"==typeof i?(u=i,i=0,o=this.length):"string"==typeof o&&(u=o,o=this.length),void 0!==u&&"string"!=typeof u)throw new TypeError("encoding must be a string");if("string"==typeof u&&!Buffer.isEncoding(u))throw new TypeError("Unknown encoding: "+u);if(1===r.length){var p=r.charCodeAt(0);("utf8"===u&&p<128||"latin1"===u)&&(r=p)}}else"number"==typeof r?r&=255:"boolean"==typeof r&&(r=Number(r));if(i<0||this.length<i||this.length<o)throw new RangeError("Out of range index");if(o<=i)return this;var g;if(i>>>=0,o=void 0===o?this.length:o>>>0,r||(r=0),"number"==typeof r)for(g=i;g<o;++g)this[g]=r;else{var y=Buffer.isBuffer(r)?r:Buffer.from(r,u),w=y.length;if(0===w)throw new TypeError('The value "'+r+'" is invalid for argument "value"');for(g=0;g<o-i;++g)this[g+i]=y[g%w]}return this};var _={};function E(r,i,o){_[r]=function(o){function NodeError(){var u;return u=o.call(this)||this,Object.defineProperty(_assertThisInitialized(u),"message",{value:i.apply(_assertThisInitialized(u),arguments),writable:!0,configurable:!0}),u.name=u.name+" ["+r+"]",u.stack,delete u.name,u}return function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,_setPrototypeOf(r,i)}(NodeError,o),NodeError.prototype.toString=function toString(){return this.name+" ["+r+"]: "+this.message},function _createClass(r,i,o){return i&&_defineProperties(r.prototype,i),o&&_defineProperties(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r}(NodeError,[{key:"code",get:function get(){return r},set:function set(r){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:r,writable:!0})}}]),NodeError}(o)}function addNumericalSeparator(r){for(var i="",o=r.length,u="-"===r[0]?1:0;o>=u+4;o-=3)i="_"+r.slice(o-3,o)+i;return""+r.slice(0,o)+i}function checkIntBI(r,i,o,u,p,g){if(r>o||r<i){var y,w="bigint"==typeof i?"n":"";throw y=g>3?0===i||i===BigInt(0)?">= 0"+w+" and < 2"+w+" ** "+8*(g+1)+w:">= -(2"+w+" ** "+(8*(g+1)-1)+w+") and < 2 ** "+(8*(g+1)-1)+w:">= "+i+w+" and <= "+o+w,new _.ERR_OUT_OF_RANGE("value",y,r)}!function checkBounds(r,i,o){validateNumber(i,"offset"),void 0!==r[i]&&void 0!==r[i+o]||boundsError(i,r.length-(o+1))}(u,p,g)}function validateNumber(r,i){if("number"!=typeof r)throw new _.ERR_INVALID_ARG_TYPE(i,"number",r)}function boundsError(r,i,o){if(Math.floor(r)!==r)throw validateNumber(r,o),new _.ERR_OUT_OF_RANGE(o||"offset","an integer",r);if(i<0)throw new _.ERR_BUFFER_OUT_OF_BOUNDS;throw new _.ERR_OUT_OF_RANGE(o||"offset",">= "+(o?1:0)+" and <= "+i,r)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(r){return r?r+" is outside of buffer bounds":"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(r,i){return'The "'+r+'" argument must be of type number. Received type '+typeof i}),TypeError),E("ERR_OUT_OF_RANGE",(function(r,i,o){var u='The value of "'+r+'" is out of range.',p=o;return Number.isInteger(o)&&Math.abs(o)>Math.pow(2,32)?p=addNumericalSeparator(String(o)):"bigint"==typeof o&&(p=String(o),(o>Math.pow(BigInt(2),BigInt(32))||o<-Math.pow(BigInt(2),BigInt(32)))&&(p=addNumericalSeparator(p)),p+="n"),u+=" It must be "+i+". Received "+p}),RangeError);var x=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(r,i){var o;i=i||1/0;for(var u=r.length,p=null,g=[],y=0;y<u;++y){if((o=r.charCodeAt(y))>55295&&o<57344){if(!p){if(o>56319){(i-=3)>-1&&g.push(239,191,189);continue}if(y+1===u){(i-=3)>-1&&g.push(239,191,189);continue}p=o;continue}if(o<56320){(i-=3)>-1&&g.push(239,191,189),p=o;continue}o=65536+(p-55296<<10|o-56320)}else p&&(i-=3)>-1&&g.push(239,191,189);if(p=null,o<128){if((i-=1)<0)break;g.push(o)}else if(o<2048){if((i-=2)<0)break;g.push(o>>6|192,63&o|128)}else if(o<65536){if((i-=3)<0)break;g.push(o>>12|224,o>>6&63|128,63&o|128)}else{if(!(o<1114112))throw new Error("Invalid code point");if((i-=4)<0)break;g.push(o>>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}}return g}function base64ToBytes(r){return u.toByteArray(function base64clean(r){if((r=(r=r.split("=")[0]).trim().replace(x,"")).length<2)return"";for(;r.length%4!=0;)r+="=";return r}(r))}function blitBuffer(r,i,o,u){var p;for(p=0;p<u&&!(p+o>=i.length||p>=r.length);++p)i[p+o]=r[p];return p}function isInstance(r,i){return r instanceof i||null!=r&&null!=r.constructor&&null!=r.constructor.name&&r.constructor.name===i.name}function numberIsNaN(r){return r!=r}var k=function(){for(var r="0123456789abcdef",i=new Array(256),o=0;o<16;++o)for(var u=16*o,p=0;p<16;++p)i[u+p]=r[o]+r[p];return i}();function defineBigIntMethod(r){return"undefined"==typeof BigInt?BufferBigIntNotDefined:r}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},477:function(r,i,o){"use strict";o(7803),o(1539),r.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},2094:function(r,i,o){"use strict";var u,p,g,y=o(477),w=o(9781),_=o(7854),x=o(614),k=o(111),P=o(2597),O=o(648),I=o(6330),B=o(8880),R=o(1320),D=o(3070).f,N=o(7976),W=o(9518),U=o(7674),j=o(5112),G=o(9711),X=_.Int8Array,K=X&&X.prototype,Y=_.Uint8ClampedArray,J=Y&&Y.prototype,$=X&&W(X),ee=K&&W(K),te=Object.prototype,re=_.TypeError,ne=j("toStringTag"),ie=G("TYPED_ARRAY_TAG"),oe=G("TYPED_ARRAY_CONSTRUCTOR"),ae=y&&!!U&&"Opera"!==O(_.opera),se=!1,ce={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},le={BigInt64Array:8,BigUint64Array:8},ue=function isTypedArray(r){if(!k(r))return!1;var i=O(r);return P(ce,i)||P(le,i)};for(u in ce)(g=(p=_[u])&&p.prototype)?B(g,oe,p):ae=!1;for(u in le)(g=(p=_[u])&&p.prototype)&&B(g,oe,p);if((!ae||!x($)||$===Function.prototype)&&($=function TypedArray(){throw re("Incorrect invocation")},ae))for(u in ce)_[u]&&U(_[u],$);if((!ae||!ee||ee===te)&&(ee=$.prototype,ae))for(u in ce)_[u]&&U(_[u].prototype,ee);if(ae&&W(J)!==ee&&U(J,ee),w&&!P(ee,ne))for(u in se=!0,D(ee,ne,{get:function get(){return k(this)?this[ie]:void 0}}),ce)_[u]&&B(_[u],ie,u);r.exports={NATIVE_ARRAY_BUFFER_VIEWS:ae,TYPED_ARRAY_CONSTRUCTOR:oe,TYPED_ARRAY_TAG:se&&ie,aTypedArray:function aTypedArray(r){if(ue(r))return r;throw re("Target is not a typed array")},aTypedArrayConstructor:function aTypedArrayConstructor(r){if(x(r)&&(!U||N($,r)))return r;throw re(I(r)+" is not a typed array constructor")},exportTypedArrayMethod:function exportTypedArrayMethod(r,i,o){if(w){if(o)for(var u in ce){var p=_[u];if(p&&P(p.prototype,r))try{delete p.prototype[r]}catch(r){}}ee[r]&&!o||R(ee,r,o?i:ae&&K[r]||i)}},exportTypedArrayStaticMethod:function exportTypedArrayStaticMethod(r,i,o){var u,p;if(w){if(U){if(o)for(u in ce)if((p=_[u])&&P(p,r))try{delete p[r]}catch(r){}if($[r]&&!o)return;try{return R($,r,o?i:ae&&$[r]||i)}catch(r){}}for(u in ce)!(p=_[u])||p[r]&&!o||R(p,r,i)}},isView:function isView(r){if(!k(r))return!1;var i=O(r);return"DataView"===i||P(ce,i)||P(le,i)},isTypedArray:ue,TypedArray:$,TypedArrayPrototype:ee}},2091:function(r,i,o){"use strict";o(8309);var u=o(7854),p=o(1702),g=o(9781),y=o(477),w=o(6530),_=o(8880),x=o(2248),k=o(7293),P=o(5787),O=o(9303),I=o(7466),B=o(7067),R=o(1179),D=o(9518),N=o(7674),W=o(8006).f,U=o(3070).f,j=o(1285),G=o(206),X=o(8003),K=o(9909),Y=w.PROPER,J=w.CONFIGURABLE,$=K.get,ee=K.set,te="ArrayBuffer",re="DataView",ne="prototype",ie="Wrong index",oe=u[te],ae=oe,se=ae&&ae[ne],ce=u[re],le=ce&&ce[ne],ue=Object.prototype,fe=u.Array,he=u.RangeError,de=p(j),pe=p([].reverse),ge=R.pack,ye=R.unpack,ve=function packInt8(r){return[255&r]},me=function packInt16(r){return[255&r,r>>8&255]},be=function packInt32(r){return[255&r,r>>8&255,r>>16&255,r>>24&255]},we=function unpackInt32(r){return r[3]<<24|r[2]<<16|r[1]<<8|r[0]},_e=function packFloat32(r){return ge(r,23,4)},Se=function packFloat64(r){return ge(r,52,8)},xe=function addGetter(r,i){U(r[ne],i,{get:function get(){return $(this)[i]}})},Ce=function get(r,i,o,u){var p=B(o),g=$(r);if(p+i>g.byteLength)throw he(ie);var y=$(g.buffer).bytes,w=p+g.byteOffset,_=G(y,w,w+i);return u?_:pe(_)},ke=function set(r,i,o,u,p,g){var y=B(o),w=$(r);if(y+i>w.byteLength)throw he(ie);for(var _=$(w.buffer).bytes,x=y+w.byteOffset,k=u(+p),P=0;P<i;P++)_[x+P]=k[g?P:i-P-1]};if(y){var Pe=Y&&oe.name!==te;if(k((function(){oe(1)}))&&k((function(){new oe(-1)}))&&!k((function(){return new oe,new oe(1.5),new oe(NaN),Pe&&!J})))Pe&&J&&_(oe,"name",te);else{(ae=function ArrayBuffer(r){return P(this,se),new oe(B(r))})[ne]=se;for(var Ae,Ee=W(oe),Te=0;Ee.length>Te;)(Ae=Ee[Te++])in ae||_(ae,Ae,oe[Ae]);se.constructor=ae}N&&D(le)!==ue&&N(le,ue);var Oe=new ce(new ae(2)),Ie=p(le.setInt8);Oe.setInt8(0,2147483648),Oe.setInt8(1,2147483649),!Oe.getInt8(0)&&Oe.getInt8(1)||x(le,{setInt8:function setInt8(r,i){Ie(this,r,i<<24>>24)},setUint8:function setUint8(r,i){Ie(this,r,i<<24>>24)}},{unsafe:!0})}else se=(ae=function ArrayBuffer(r){P(this,se);var i=B(r);ee(this,{bytes:de(fe(i),0),byteLength:i}),g||(this.byteLength=i)})[ne],le=(ce=function DataView(r,i,o){P(this,le),P(r,se);var u=$(r).byteLength,p=O(i);if(p<0||p>u)throw he("Wrong offset");if(p+(o=void 0===o?u-p:I(o))>u)throw he("Wrong length");ee(this,{buffer:r,byteLength:o,byteOffset:p}),g||(this.buffer=r,this.byteLength=o,this.byteOffset=p)})[ne],g&&(xe(ae,"byteLength"),xe(ce,"buffer"),xe(ce,"byteLength"),xe(ce,"byteOffset")),x(le,{getInt8:function getInt8(r){return Ce(this,1,r)[0]<<24>>24},getUint8:function getUint8(r){return Ce(this,1,r)[0]},getInt16:function getInt16(r){var i=Ce(this,2,r,arguments.length>1?arguments[1]:void 0);return(i[1]<<8|i[0])<<16>>16},getUint16:function getUint16(r){var i=Ce(this,2,r,arguments.length>1?arguments[1]:void 0);return i[1]<<8|i[0]},getInt32:function getInt32(r){return we(Ce(this,4,r,arguments.length>1?arguments[1]:void 0))},getUint32:function getUint32(r){return we(Ce(this,4,r,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function getFloat32(r){return ye(Ce(this,4,r,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function getFloat64(r){return ye(Ce(this,8,r,arguments.length>1?arguments[1]:void 0),52)},setInt8:function setInt8(r,i){ke(this,1,r,ve,i)},setUint8:function setUint8(r,i){ke(this,1,r,ve,i)},setInt16:function setInt16(r,i){ke(this,2,r,me,i,arguments.length>2?arguments[2]:void 0)},setUint16:function setUint16(r,i){ke(this,2,r,me,i,arguments.length>2?arguments[2]:void 0)},setInt32:function setInt32(r,i){ke(this,4,r,be,i,arguments.length>2?arguments[2]:void 0)},setUint32:function setUint32(r,i){ke(this,4,r,be,i,arguments.length>2?arguments[2]:void 0)},setFloat32:function setFloat32(r,i){ke(this,4,r,_e,i,arguments.length>2?arguments[2]:void 0)},setFloat64:function setFloat64(r,i){ke(this,8,r,Se,i,arguments.length>2?arguments[2]:void 0)}});X(ae,te),X(ce,re),r.exports={ArrayBuffer:ae,DataView:ce}},7803:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(2091),y=o(6340),w="ArrayBuffer",_=g[w];u({global:!0,forced:p[w]!==_},{ArrayBuffer:_}),y(w)},194:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(7508),o(3440),o(3839),o(1582),function(){var r=u,i=r.lib.BlockCipher,o=r.algo,p=[],g=[],y=[],w=[],_=[],x=[],k=[],P=[],O=[],I=[];!function(){for(var r=[],i=0;i<256;i++)r[i]=i<128?i<<1:i<<1^283;var o=0,u=0;for(i=0;i<256;i++){var B=u^u<<1^u<<2^u<<3^u<<4;B=B>>>8^255&B^99,p[o]=B,g[B]=o;var R=r[o],D=r[R],N=r[D],W=257*r[B]^16843008*B;y[o]=W<<24|W>>>8,w[o]=W<<16|W>>>16,_[o]=W<<8|W>>>24,x[o]=W,W=16843009*N^65537*D^257*R^16843008*o,k[B]=W<<24|W>>>8,P[B]=W<<16|W>>>16,O[B]=W<<8|W>>>24,I[B]=W,o?(o=R^r[r[r[N^R]]],u^=r[r[u]]):o=u=1}}();var B=[0,1,2,4,8,16,32,64,128,27,54],R=o.AES=i.extend({_doReset:function _doReset(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var r=this._keyPriorReset=this._key,i=r.words,o=r.sigBytes/4,u=4*((this._nRounds=o+6)+1),g=this._keySchedule=[],y=0;y<u;y++)y<o?g[y]=i[y]:(x=g[y-1],y%o?o>6&&y%o==4&&(x=p[x>>>24]<<24|p[x>>>16&255]<<16|p[x>>>8&255]<<8|p[255&x]):(x=p[(x=x<<8|x>>>24)>>>24]<<24|p[x>>>16&255]<<16|p[x>>>8&255]<<8|p[255&x],x^=B[y/o|0]<<24),g[y]=g[y-o]^x);for(var w=this._invKeySchedule=[],_=0;_<u;_++){if(y=u-_,_%4)var x=g[y];else x=g[y-4];w[_]=_<4||y<=4?x:k[p[x>>>24]]^P[p[x>>>16&255]]^O[p[x>>>8&255]]^I[p[255&x]]}}},encryptBlock:function encryptBlock(r,i){this._doCryptBlock(r,i,this._keySchedule,y,w,_,x,p)},decryptBlock:function decryptBlock(r,i){var o=r[i+1];r[i+1]=r[i+3],r[i+3]=o,this._doCryptBlock(r,i,this._invKeySchedule,k,P,O,I,g),o=r[i+1],r[i+1]=r[i+3],r[i+3]=o},_doCryptBlock:function _doCryptBlock(r,i,o,u,p,g,y,w){for(var _=this._nRounds,x=r[i]^o[0],k=r[i+1]^o[1],P=r[i+2]^o[2],O=r[i+3]^o[3],I=4,B=1;B<_;B++){var R=u[x>>>24]^p[k>>>16&255]^g[P>>>8&255]^y[255&O]^o[I++],D=u[k>>>24]^p[P>>>16&255]^g[O>>>8&255]^y[255&x]^o[I++],N=u[P>>>24]^p[O>>>16&255]^g[x>>>8&255]^y[255&k]^o[I++],W=u[O>>>24]^p[x>>>16&255]^g[k>>>8&255]^y[255&P]^o[I++];x=R,k=D,P=N,O=W}R=(w[x>>>24]<<24|w[k>>>16&255]<<16|w[P>>>8&255]<<8|w[255&O])^o[I++],D=(w[k>>>24]<<24|w[P>>>16&255]<<16|w[O>>>8&255]<<8|w[255&x])^o[I++],N=(w[P>>>24]<<24|w[O>>>16&255]<<16|w[x>>>8&255]<<8|w[255&k])^o[I++],W=(w[O>>>24]<<24|w[x>>>16&255]<<16|w[k>>>8&255]<<8|w[255&P])^o[I++],r[i]=R,r[i+1]=D,r[i+2]=N,r[i+3]=W},keySize:8});r.AES=i._createHelper(R)}(),u.AES)},1582:function(r,i,o){"use strict";var u;o(7042),o(2222),o(1539),o(9714),o(561),r.exports=(u=o(757),o(3839),void(u.lib.Cipher||function(r){var i=u,o=i.lib,p=o.Base,g=o.WordArray,y=o.BufferedBlockAlgorithm,w=i.enc,_=(w.Utf8,w.Base64),x=i.algo.EvpKDF,k=o.Cipher=y.extend({cfg:p.extend(),createEncryptor:function createEncryptor(r,i){return this.create(this._ENC_XFORM_MODE,r,i)},createDecryptor:function createDecryptor(r,i){return this.create(this._DEC_XFORM_MODE,r,i)},init:function init(r,i,o){this.cfg=this.cfg.extend(o),this._xformMode=r,this._key=i,this.reset()},reset:function reset(){y.reset.call(this),this._doReset()},process:function process(r){return this._append(r),this._process()},finalize:function finalize(r){return r&&this._append(r),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function selectCipherStrategy(r){return"string"==typeof r?U:N}return function(r){return{encrypt:function encrypt(i,o,u){return selectCipherStrategy(o).encrypt(r,i,o,u)},decrypt:function decrypt(i,o,u){return selectCipherStrategy(o).decrypt(r,i,o,u)}}}}()}),P=(o.StreamCipher=k.extend({_doFinalize:function _doFinalize(){return this._process(!0)},blockSize:1}),i.mode={}),O=o.BlockCipherMode=p.extend({createEncryptor:function createEncryptor(r,i){return this.Encryptor.create(r,i)},createDecryptor:function createDecryptor(r,i){return this.Decryptor.create(r,i)},init:function init(r,i){this._cipher=r,this._iv=i}}),I=P.CBC=function(){var i=O.extend();function xorBlock(i,o,u){var p,g=this._iv;g?(p=g,this._iv=r):p=this._prevBlock;for(var y=0;y<u;y++)i[o+y]^=p[y]}return i.Encryptor=i.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize;xorBlock.call(this,r,i,u),o.encryptBlock(r,i),this._prevBlock=r.slice(i,i+u)}}),i.Decryptor=i.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize,p=r.slice(i,i+u);o.decryptBlock(r,i),xorBlock.call(this,r,i,u),this._prevBlock=p}}),i}(),B=(i.pad={}).Pkcs7={pad:function pad(r,i){for(var o=4*i,u=o-r.sigBytes%o,p=u<<24|u<<16|u<<8|u,y=[],w=0;w<u;w+=4)y.push(p);var _=g.create(y,u);r.concat(_)},unpad:function unpad(r){var i=255&r.words[r.sigBytes-1>>>2];r.sigBytes-=i}},R=(o.BlockCipher=k.extend({cfg:k.cfg.extend({mode:I,padding:B}),reset:function reset(){var r;k.reset.call(this);var i=this.cfg,o=i.iv,u=i.mode;this._xformMode==this._ENC_XFORM_MODE?r=u.createEncryptor:(r=u.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==r?this._mode.init(this,o&&o.words):(this._mode=r.call(u,this,o&&o.words),this._mode.__creator=r)},_doProcessBlock:function _doProcessBlock(r,i){this._mode.processBlock(r,i)},_doFinalize:function _doFinalize(){var r,i=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(i.pad(this._data,this.blockSize),r=this._process(!0)):(r=this._process(!0),i.unpad(r)),r},blockSize:4}),o.CipherParams=p.extend({init:function init(r){this.mixIn(r)},toString:function toString(r){return(r||this.formatter).stringify(this)}})),D=(i.format={}).OpenSSL={stringify:function stringify(r){var i=r.ciphertext,o=r.salt;return(o?g.create([1398893684,1701076831]).concat(o).concat(i):i).toString(_)},parse:function parse(r){var i,o=_.parse(r),u=o.words;return 1398893684==u[0]&&1701076831==u[1]&&(i=g.create(u.slice(2,4)),u.splice(0,4),o.sigBytes-=16),R.create({ciphertext:o,salt:i})}},N=o.SerializableCipher=p.extend({cfg:p.extend({format:D}),encrypt:function encrypt(r,i,o,u){u=this.cfg.extend(u);var p=r.createEncryptor(o,u),g=p.finalize(i),y=p.cfg;return R.create({ciphertext:g,key:o,iv:y.iv,algorithm:r,mode:y.mode,padding:y.padding,blockSize:r.blockSize,formatter:u.format})},decrypt:function decrypt(r,i,o,u){return u=this.cfg.extend(u),i=this._parse(i,u.format),r.createDecryptor(o,u).finalize(i.ciphertext)},_parse:function _parse(r,i){return"string"==typeof r?i.parse(r,this):r}}),W=(i.kdf={}).OpenSSL={execute:function execute(r,i,o,u){u||(u=g.random(8));var p=x.create({keySize:i+o}).compute(r,u),y=g.create(p.words.slice(i),4*o);return p.sigBytes=4*i,R.create({key:p,iv:y,salt:u})}},U=o.PasswordBasedCipher=N.extend({cfg:N.cfg.extend({kdf:W}),encrypt:function encrypt(r,i,o,u){var p=(u=this.cfg.extend(u)).kdf.execute(o,r.keySize,r.ivSize);u.iv=p.iv;var g=N.encrypt.call(this,r,i,p.key,u);return g.mixIn(p),g},decrypt:function decrypt(r,i,o,u){u=this.cfg.extend(u),i=this._parse(i,u.format);var p=u.kdf.execute(o,r.keySize,r.ivSize,i.salt);return u.iv=p.iv,N.decrypt.call(this,r,i,p.key,u)}})}()))},757:function(r,i,o){"use strict";var u;o(5743),o(6992),o(1539),o(9135),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(9714),o(7042),o(9600),o(2222),o(561),r.exports=(u=u||function(r,i){var u;if("undefined"!=typeof window&&window.crypto&&(u=window.crypto),"undefined"!=typeof self&&self.crypto&&(u=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(u=globalThis.crypto),!u&&"undefined"!=typeof window&&window.msCrypto&&(u=window.msCrypto),!u&&void 0!==o.g&&o.g.crypto&&(u=o.g.crypto),!u)try{u=o(2480)}catch(r){}var p=function cryptoSecureRandomInt(){if(u){if("function"==typeof u.getRandomValues)try{return u.getRandomValues(new Uint32Array(1))[0]}catch(r){}if("function"==typeof u.randomBytes)try{return u.randomBytes(4).readInt32LE()}catch(r){}}throw new Error("Native crypto module could not be used to get secure random number.")},g=Object.create||function(){function F(){}return function(r){var i;return F.prototype=r,i=new F,F.prototype=null,i}}(),y={},w=y.lib={},_=w.Base={extend:function extend(r){var i=g(this);return r&&i.mixIn(r),i.hasOwnProperty("init")&&this.init!==i.init||(i.init=function(){i.$super.init.apply(this,arguments)}),i.init.prototype=i,i.$super=this,i},create:function create(){var r=this.extend();return r.init.apply(r,arguments),r},init:function init(){},mixIn:function mixIn(r){for(var i in r)r.hasOwnProperty(i)&&(this[i]=r[i]);r.hasOwnProperty("toString")&&(this.toString=r.toString)},clone:function clone(){return this.init.prototype.extend(this)}},x=w.WordArray=_.extend({init:function init(r,o){r=this.words=r||[],this.sigBytes=o!=i?o:4*r.length},toString:function toString(r){return(r||P).stringify(this)},concat:function concat(r){var i=this.words,o=r.words,u=this.sigBytes,p=r.sigBytes;if(this.clamp(),u%4)for(var g=0;g<p;g++){var y=o[g>>>2]>>>24-g%4*8&255;i[u+g>>>2]|=y<<24-(u+g)%4*8}else for(var w=0;w<p;w+=4)i[u+w>>>2]=o[w>>>2];return this.sigBytes+=p,this},clamp:function clamp(){var i=this.words,o=this.sigBytes;i[o>>>2]&=4294967295<<32-o%4*8,i.length=r.ceil(o/4)},clone:function clone(){var clone=_.clone.call(this);return clone.words=this.words.slice(0),clone},random:function random(r){for(var i=[],o=0;o<r;o+=4)i.push(p());return new x.init(i,r)}}),k=y.enc={},P=k.Hex={stringify:function stringify(r){for(var i=r.words,o=r.sigBytes,u=[],p=0;p<o;p++){var g=i[p>>>2]>>>24-p%4*8&255;u.push((g>>>4).toString(16)),u.push((15&g).toString(16))}return u.join("")},parse:function parse(r){for(var i=r.length,o=[],u=0;u<i;u+=2)o[u>>>3]|=parseInt(r.substr(u,2),16)<<24-u%8*4;return new x.init(o,i/2)}},O=k.Latin1={stringify:function stringify(r){for(var i=r.words,o=r.sigBytes,u=[],p=0;p<o;p++){var g=i[p>>>2]>>>24-p%4*8&255;u.push(String.fromCharCode(g))}return u.join("")},parse:function parse(r){for(var i=r.length,o=[],u=0;u<i;u++)o[u>>>2]|=(255&r.charCodeAt(u))<<24-u%4*8;return new x.init(o,i)}},I=k.Utf8={stringify:function stringify(r){try{return decodeURIComponent(escape(O.stringify(r)))}catch(r){throw new Error("Malformed UTF-8 data")}},parse:function parse(r){return O.parse(unescape(encodeURIComponent(r)))}},B=w.BufferedBlockAlgorithm=_.extend({reset:function reset(){this._data=new x.init,this._nDataBytes=0},_append:function _append(r){"string"==typeof r&&(r=I.parse(r)),this._data.concat(r),this._nDataBytes+=r.sigBytes},_process:function _process(i){var o,u=this._data,p=u.words,g=u.sigBytes,y=this.blockSize,w=g/(4*y),_=(w=i?r.ceil(w):r.max((0|w)-this._minBufferSize,0))*y,k=r.min(4*_,g);if(_){for(var P=0;P<_;P+=y)this._doProcessBlock(p,P);o=p.splice(0,_),u.sigBytes-=k}return new x.init(o,k)},clone:function clone(){var clone=_.clone.call(this);return clone._data=this._data.clone(),clone},_minBufferSize:0}),R=(w.Hasher=B.extend({cfg:_.extend(),init:function init(r){this.cfg=this.cfg.extend(r),this.reset()},reset:function reset(){B.reset.call(this),this._doReset()},update:function update(r){return this._append(r),this._process(),this},finalize:function finalize(r){return r&&this._append(r),this._doFinalize()},blockSize:16,_createHelper:function _createHelper(r){return function(i,o){return new r.init(o).finalize(i)}},_createHmacHelper:function _createHmacHelper(r){return function(i,o){return new R.HMAC.init(r,o).finalize(i)}}}),y.algo={});return y}(Math),u)},7508:function(r,i,o){"use strict";var u;o(9600),r.exports=(u=o(757),function(){var r=u,i=r.lib.WordArray;function parseLoop(r,o,u){for(var p=[],g=0,y=0;y<o;y++)if(y%4){var w=u[r.charCodeAt(y-1)]<<y%4*2|u[r.charCodeAt(y)]>>>6-y%4*2;p[g>>>2]|=w<<24-g%4*8,g++}return i.create(p,g)}r.enc.Base64={stringify:function stringify(r){var i=r.words,o=r.sigBytes,u=this._map;r.clamp();for(var p=[],g=0;g<o;g+=3)for(var y=(i[g>>>2]>>>24-g%4*8&255)<<16|(i[g+1>>>2]>>>24-(g+1)%4*8&255)<<8|i[g+2>>>2]>>>24-(g+2)%4*8&255,w=0;w<4&&g+.75*w<o;w++)p.push(u.charAt(y>>>6*(3-w)&63));var _=u.charAt(64);if(_)for(;p.length%4;)p.push(_);return p.join("")},parse:function parse(r){var i=r.length,o=this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var p=0;p<o.length;p++)u[o.charCodeAt(p)]=p}var g=o.charAt(64);if(g){var y=r.indexOf(g);-1!==y&&(i=y)}return parseLoop(r,i,u)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),u.enc.Base64)},7590:function(r,i,o){"use strict";var u;o(9600),r.exports=(u=o(757),function(){var r=u,i=r.lib.WordArray;function parseLoop(r,o,u){for(var p=[],g=0,y=0;y<o;y++)if(y%4){var w=u[r.charCodeAt(y-1)]<<y%4*2|u[r.charCodeAt(y)]>>>6-y%4*2;p[g>>>2]|=w<<24-g%4*8,g++}return i.create(p,g)}r.enc.Base64url={stringify:function stringify(r,i){void 0===i&&(i=!0);var o=r.words,u=r.sigBytes,p=i?this._safe_map:this._map;r.clamp();for(var g=[],y=0;y<u;y+=3)for(var w=(o[y>>>2]>>>24-y%4*8&255)<<16|(o[y+1>>>2]>>>24-(y+1)%4*8&255)<<8|o[y+2>>>2]>>>24-(y+2)%4*8&255,_=0;_<4&&y+.75*_<u;_++)g.push(p.charAt(w>>>6*(3-_)&63));var x=p.charAt(64);if(x)for(;g.length%4;)g.push(x);return g.join("")},parse:function parse(r,i){void 0===i&&(i=!0);var o=r.length,u=i?this._safe_map:this._map,p=this._reverseMap;if(!p){p=this._reverseMap=[];for(var g=0;g<u.length;g++)p[u.charCodeAt(g)]=g}var y=u.charAt(64);if(y){var w=r.indexOf(y);-1!==w&&(o=w)}return parseLoop(r,o,p)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"}}(),u.enc.Base64url)},4978:function(r,i,o){"use strict";var u;o(9600),r.exports=(u=o(757),function(){var r=u,i=r.lib.WordArray,o=r.enc;function swapEndian(r){return r<<8&4278255360|r>>>8&16711935}o.Utf16=o.Utf16BE={stringify:function stringify(r){for(var i=r.words,o=r.sigBytes,u=[],p=0;p<o;p+=2){var g=i[p>>>2]>>>16-p%4*8&65535;u.push(String.fromCharCode(g))}return u.join("")},parse:function parse(r){for(var o=r.length,u=[],p=0;p<o;p++)u[p>>>1]|=r.charCodeAt(p)<<16-p%2*16;return i.create(u,2*o)}},o.Utf16LE={stringify:function stringify(r){for(var i=r.words,o=r.sigBytes,u=[],p=0;p<o;p+=2){var g=swapEndian(i[p>>>2]>>>16-p%4*8&65535);u.push(String.fromCharCode(g))}return u.join("")},parse:function parse(r){for(var o=r.length,u=[],p=0;p<o;p++)u[p>>>1]|=swapEndian(r.charCodeAt(p)<<16-p%2*16);return i.create(u,2*o)}}}(),u.enc.Utf16)},3839:function(r,i,o){"use strict";var u,p,g,y,w,_,x,k;o(2222),r.exports=(k=o(757),o(9865),o(6727),p=(u=k).lib,g=p.Base,y=p.WordArray,w=u.algo,_=w.MD5,x=w.EvpKDF=g.extend({cfg:g.extend({keySize:4,hasher:_,iterations:1}),init:function init(r){this.cfg=this.cfg.extend(r)},compute:function compute(r,i){for(var o,u=this.cfg,p=u.hasher.create(),g=y.create(),w=g.words,_=u.keySize,x=u.iterations;w.length<_;){o&&p.update(o),o=p.update(r).finalize(i),p.reset();for(var k=1;k<x;k++)o=p.finalize(o),p.reset();g.concat(o)}return g.sigBytes=4*_,g}}),u.EvpKDF=function(r,i,o){return x.create(o).compute(r,i)},k.EvpKDF)},8942:function(r,i,o){"use strict";var u,p,g,y;o(1539),o(9714),r.exports=(y=o(757),o(1582),p=(u=y).lib.CipherParams,g=u.enc.Hex,u.format.Hex={stringify:function stringify(r){return r.ciphertext.toString(g)},parse:function parse(r){var i=g.parse(r);return p.create({ciphertext:i})}},y.format.Hex)},6727:function(r,i,o){"use strict";var u,p,g,y;o(2222),r.exports=(u=o(757),g=(p=u).lib.Base,y=p.enc.Utf8,void(p.algo.HMAC=g.extend({init:function init(r,i){r=this._hasher=new r.init,"string"==typeof i&&(i=y.parse(i));var o=r.blockSize,u=4*o;i.sigBytes>u&&(i=r.finalize(i)),i.clamp();for(var p=this._oKey=i.clone(),g=this._iKey=i.clone(),w=p.words,_=g.words,x=0;x<o;x++)w[x]^=1549556828,_[x]^=909522486;p.sigBytes=g.sigBytes=u,this.reset()},reset:function reset(){var r=this._hasher;r.reset(),r.update(this._iKey)},update:function update(r){return this._hasher.update(r),this},finalize:function finalize(r){var i=this._hasher,o=i.finalize(r);return i.reset(),i.finalize(this._oKey.clone().concat(o))}})))},5153:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(2601),o(1947),o(4978),o(7508),o(7590),o(3440),o(9865),o(8921),o(6876),o(7991),o(8122),o(8342),o(8714),o(6727),o(3486),o(3839),o(1582),o(702),o(2362),o(4412),o(5720),o(3518),o(6362),o(4431),o(8800),o(3992),o(649),o(8942),o(194),o(8437),o(4640),o(5323),o(4363),u)},1947:function(r,i,o){"use strict";var u;o(7803),o(1539),o(6992),o(2472),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(7145),o(9743),o(5109),o(8255),o(5125),o(9135),o(4197),o(6495),r.exports=(u=o(757),function(){if("function"==typeof ArrayBuffer){var r=u.lib.WordArray,i=r.init,o=r.init=function(r){if(r instanceof ArrayBuffer&&(r=new Uint8Array(r)),(r instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&r instanceof Uint8ClampedArray||r instanceof Int16Array||r instanceof Uint16Array||r instanceof Int32Array||r instanceof Uint32Array||r instanceof Float32Array||r instanceof Float64Array)&&(r=new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),r instanceof Uint8Array){for(var o=r.byteLength,u=[],p=0;p<o;p++)u[p>>>2]|=r[p]<<24-p%4*8;i.call(this,u,o)}else i.apply(this,arguments)};o.prototype=r}}(),u.lib.WordArray)},3440:function(r,i,o){"use strict";var u;r.exports=(u=o(757),function(r){var i=u,o=i.lib,p=o.WordArray,g=o.Hasher,y=i.algo,w=[];!function(){for(var i=0;i<64;i++)w[i]=4294967296*r.abs(r.sin(i+1))|0}();var _=y.MD5=g.extend({_doReset:function _doReset(){this._hash=new p.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function _doProcessBlock(r,i){for(var o=0;o<16;o++){var u=i+o,p=r[u];r[u]=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8)}var g=this._hash.words,y=r[i+0],_=r[i+1],x=r[i+2],k=r[i+3],P=r[i+4],O=r[i+5],I=r[i+6],B=r[i+7],R=r[i+8],D=r[i+9],N=r[i+10],W=r[i+11],U=r[i+12],j=r[i+13],G=r[i+14],X=r[i+15],K=g[0],Y=g[1],J=g[2],$=g[3];K=FF(K,Y,J,$,y,7,w[0]),$=FF($,K,Y,J,_,12,w[1]),J=FF(J,$,K,Y,x,17,w[2]),Y=FF(Y,J,$,K,k,22,w[3]),K=FF(K,Y,J,$,P,7,w[4]),$=FF($,K,Y,J,O,12,w[5]),J=FF(J,$,K,Y,I,17,w[6]),Y=FF(Y,J,$,K,B,22,w[7]),K=FF(K,Y,J,$,R,7,w[8]),$=FF($,K,Y,J,D,12,w[9]),J=FF(J,$,K,Y,N,17,w[10]),Y=FF(Y,J,$,K,W,22,w[11]),K=FF(K,Y,J,$,U,7,w[12]),$=FF($,K,Y,J,j,12,w[13]),J=FF(J,$,K,Y,G,17,w[14]),K=GG(K,Y=FF(Y,J,$,K,X,22,w[15]),J,$,_,5,w[16]),$=GG($,K,Y,J,I,9,w[17]),J=GG(J,$,K,Y,W,14,w[18]),Y=GG(Y,J,$,K,y,20,w[19]),K=GG(K,Y,J,$,O,5,w[20]),$=GG($,K,Y,J,N,9,w[21]),J=GG(J,$,K,Y,X,14,w[22]),Y=GG(Y,J,$,K,P,20,w[23]),K=GG(K,Y,J,$,D,5,w[24]),$=GG($,K,Y,J,G,9,w[25]),J=GG(J,$,K,Y,k,14,w[26]),Y=GG(Y,J,$,K,R,20,w[27]),K=GG(K,Y,J,$,j,5,w[28]),$=GG($,K,Y,J,x,9,w[29]),J=GG(J,$,K,Y,B,14,w[30]),K=HH(K,Y=GG(Y,J,$,K,U,20,w[31]),J,$,O,4,w[32]),$=HH($,K,Y,J,R,11,w[33]),J=HH(J,$,K,Y,W,16,w[34]),Y=HH(Y,J,$,K,G,23,w[35]),K=HH(K,Y,J,$,_,4,w[36]),$=HH($,K,Y,J,P,11,w[37]),J=HH(J,$,K,Y,B,16,w[38]),Y=HH(Y,J,$,K,N,23,w[39]),K=HH(K,Y,J,$,j,4,w[40]),$=HH($,K,Y,J,y,11,w[41]),J=HH(J,$,K,Y,k,16,w[42]),Y=HH(Y,J,$,K,I,23,w[43]),K=HH(K,Y,J,$,D,4,w[44]),$=HH($,K,Y,J,U,11,w[45]),J=HH(J,$,K,Y,X,16,w[46]),K=II(K,Y=HH(Y,J,$,K,x,23,w[47]),J,$,y,6,w[48]),$=II($,K,Y,J,B,10,w[49]),J=II(J,$,K,Y,G,15,w[50]),Y=II(Y,J,$,K,O,21,w[51]),K=II(K,Y,J,$,U,6,w[52]),$=II($,K,Y,J,k,10,w[53]),J=II(J,$,K,Y,N,15,w[54]),Y=II(Y,J,$,K,_,21,w[55]),K=II(K,Y,J,$,R,6,w[56]),$=II($,K,Y,J,X,10,w[57]),J=II(J,$,K,Y,I,15,w[58]),Y=II(Y,J,$,K,j,21,w[59]),K=II(K,Y,J,$,P,6,w[60]),$=II($,K,Y,J,W,10,w[61]),J=II(J,$,K,Y,x,15,w[62]),Y=II(Y,J,$,K,D,21,w[63]),g[0]=g[0]+K|0,g[1]=g[1]+Y|0,g[2]=g[2]+J|0,g[3]=g[3]+$|0},_doFinalize:function _doFinalize(){var i=this._data,o=i.words,u=8*this._nDataBytes,p=8*i.sigBytes;o[p>>>5]|=128<<24-p%32;var g=r.floor(u/4294967296),y=u;o[15+(p+64>>>9<<4)]=16711935&(g<<8|g>>>24)|4278255360&(g<<24|g>>>8),o[14+(p+64>>>9<<4)]=16711935&(y<<8|y>>>24)|4278255360&(y<<24|y>>>8),i.sigBytes=4*(o.length+1),this._process();for(var w=this._hash,_=w.words,x=0;x<4;x++){var k=_[x];_[x]=16711935&(k<<8|k>>>24)|4278255360&(k<<24|k>>>8)}return w},clone:function clone(){var clone=g.clone.call(this);return clone._hash=this._hash.clone(),clone}});function FF(r,i,o,u,p,g,y){var w=r+(i&o|~i&u)+p+y;return(w<<g|w>>>32-g)+i}function GG(r,i,o,u,p,g,y){var w=r+(i&u|o&~u)+p+y;return(w<<g|w>>>32-g)+i}function HH(r,i,o,u,p,g,y){var w=r+(i^o^u)+p+y;return(w<<g|w>>>32-g)+i}function II(r,i,o,u,p,g,y){var w=r+(o^(i|~u))+p+y;return(w<<g|w>>>32-g)+i}i.MD5=g._createHelper(_),i.HmacMD5=g._createHmacHelper(_)}(Math),u.MD5)},702:function(r,i,o){"use strict";var u;o(7042),r.exports=(u=o(757),o(1582),u.mode.CFB=function(){var r=u.lib.BlockCipherMode.extend();function generateKeystreamAndEncrypt(r,i,o,u){var p,g=this._iv;g?(p=g.slice(0),this._iv=void 0):p=this._prevBlock,u.encryptBlock(p,0);for(var y=0;y<o;y++)r[i+y]^=p[y]}return r.Encryptor=r.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize;generateKeystreamAndEncrypt.call(this,r,i,u,o),this._prevBlock=r.slice(i,i+u)}}),r.Decryptor=r.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize,p=r.slice(i,i+u);generateKeystreamAndEncrypt.call(this,r,i,u,o),this._prevBlock=p}}),r}(),u.mode.CFB)},4412:function(r,i,o){"use strict";var u;o(7042),r.exports=(u=o(757),o(1582),u.mode.CTRGladman=function(){var r=u.lib.BlockCipherMode.extend();function incWord(r){if(255==(r>>24&255)){var i=r>>16&255,o=r>>8&255,u=255&r;255===i?(i=0,255===o?(o=0,255===u?u=0:++u):++o):++i,r=0,r+=i<<16,r+=o<<8,r+=u}else r+=1<<24;return r}function incCounter(r){return 0===(r[0]=incWord(r[0]))&&(r[1]=incWord(r[1])),r}var i=r.Encryptor=r.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize,p=this._iv,g=this._counter;p&&(g=this._counter=p.slice(0),this._iv=void 0),incCounter(g);var y=g.slice(0);o.encryptBlock(y,0);for(var w=0;w<u;w++)r[i+w]^=y[w]}});return r.Decryptor=i,r}(),u.mode.CTRGladman)},2362:function(r,i,o){"use strict";var u,p,g;o(7042),r.exports=(g=o(757),o(1582),g.mode.CTR=(u=g.lib.BlockCipherMode.extend(),p=u.Encryptor=u.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize,p=this._iv,g=this._counter;p&&(g=this._counter=p.slice(0),this._iv=void 0);var y=g.slice(0);o.encryptBlock(y,0),g[u-1]=g[u-1]+1|0;for(var w=0;w<u;w++)r[i+w]^=y[w]}}),u.Decryptor=p,u),g.mode.CTR)},3518:function(r,i,o){"use strict";var u,p;r.exports=(p=o(757),o(1582),p.mode.ECB=((u=p.lib.BlockCipherMode.extend()).Encryptor=u.extend({processBlock:function processBlock(r,i){this._cipher.encryptBlock(r,i)}}),u.Decryptor=u.extend({processBlock:function processBlock(r,i){this._cipher.decryptBlock(r,i)}}),u),p.mode.ECB)},5720:function(r,i,o){"use strict";var u,p,g;o(7042),r.exports=(g=o(757),o(1582),g.mode.OFB=(u=g.lib.BlockCipherMode.extend(),p=u.Encryptor=u.extend({processBlock:function processBlock(r,i){var o=this._cipher,u=o.blockSize,p=this._iv,g=this._keystream;p&&(g=this._keystream=p.slice(0),this._iv=void 0),o.encryptBlock(g,0);for(var y=0;y<u;y++)r[i+y]^=g[y]}}),u.Decryptor=p,u),g.mode.OFB)},6362:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(1582),u.pad.AnsiX923={pad:function pad(r,i){var o=r.sigBytes,u=4*i,p=u-o%u,g=o+p-1;r.clamp(),r.words[g>>>2]|=p<<24-g%4*8,r.sigBytes+=p},unpad:function unpad(r){var i=255&r.words[r.sigBytes-1>>>2];r.sigBytes-=i}},u.pad.Ansix923)},4431:function(r,i,o){"use strict";var u;o(2222),r.exports=(u=o(757),o(1582),u.pad.Iso10126={pad:function pad(r,i){var o=4*i,p=o-r.sigBytes%o;r.concat(u.lib.WordArray.random(p-1)).concat(u.lib.WordArray.create([p<<24],1))},unpad:function unpad(r){var i=255&r.words[r.sigBytes-1>>>2];r.sigBytes-=i}},u.pad.Iso10126)},8800:function(r,i,o){"use strict";var u;o(2222),r.exports=(u=o(757),o(1582),u.pad.Iso97971={pad:function pad(r,i){r.concat(u.lib.WordArray.create([2147483648],1)),u.pad.ZeroPadding.pad(r,i)},unpad:function unpad(r){u.pad.ZeroPadding.unpad(r),r.sigBytes--}},u.pad.Iso97971)},649:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(1582),u.pad.NoPadding={pad:function pad(){},unpad:function unpad(){}},u.pad.NoPadding)},3992:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(1582),u.pad.ZeroPadding={pad:function pad(r,i){var o=4*i;r.clamp(),r.sigBytes+=o-(r.sigBytes%o||o)},unpad:function unpad(r){var i=r.words,o=r.sigBytes-1;for(o=r.sigBytes-1;o>=0;o--)if(i[o>>>2]>>>24-o%4*8&255){r.sigBytes=o+1;break}}},u.pad.ZeroPadding)},3486:function(r,i,o){"use strict";var u,p,g,y,w,_,x,k,P;o(2222),r.exports=(P=o(757),o(9865),o(6727),p=(u=P).lib,g=p.Base,y=p.WordArray,w=u.algo,_=w.SHA1,x=w.HMAC,k=w.PBKDF2=g.extend({cfg:g.extend({keySize:4,hasher:_,iterations:1}),init:function init(r){this.cfg=this.cfg.extend(r)},compute:function compute(r,i){for(var o=this.cfg,u=x.create(o.hasher,r),p=y.create(),g=y.create([1]),w=p.words,_=g.words,k=o.keySize,P=o.iterations;w.length<k;){var O=u.update(i).finalize(g);u.reset();for(var I=O.words,B=I.length,R=O,D=1;D<P;D++){R=u.finalize(R),u.reset();for(var N=R.words,W=0;W<B;W++)I[W]^=N[W]}p.concat(O),_[0]++}return p.sigBytes=4*k,p}}),u.PBKDF2=function(r,i,o){return k.create(o).compute(r,i)},P.PBKDF2)},4363:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(7508),o(3440),o(3839),o(1582),function(){var r=u,i=r.lib.StreamCipher,o=r.algo,p=[],g=[],y=[],w=o.RabbitLegacy=i.extend({_doReset:function _doReset(){var r=this._key.words,i=this.cfg.iv,o=this._X=[r[0],r[3]<<16|r[2]>>>16,r[1],r[0]<<16|r[3]>>>16,r[2],r[1]<<16|r[0]>>>16,r[3],r[2]<<16|r[1]>>>16],u=this._C=[r[2]<<16|r[2]>>>16,4294901760&r[0]|65535&r[1],r[3]<<16|r[3]>>>16,4294901760&r[1]|65535&r[2],r[0]<<16|r[0]>>>16,4294901760&r[2]|65535&r[3],r[1]<<16|r[1]>>>16,4294901760&r[3]|65535&r[0]];this._b=0;for(var p=0;p<4;p++)nextState.call(this);for(p=0;p<8;p++)u[p]^=o[p+4&7];if(i){var g=i.words,y=g[0],w=g[1],_=16711935&(y<<8|y>>>24)|4278255360&(y<<24|y>>>8),x=16711935&(w<<8|w>>>24)|4278255360&(w<<24|w>>>8),k=_>>>16|4294901760&x,P=x<<16|65535&_;for(u[0]^=_,u[1]^=k,u[2]^=x,u[3]^=P,u[4]^=_,u[5]^=k,u[6]^=x,u[7]^=P,p=0;p<4;p++)nextState.call(this)}},_doProcessBlock:function _doProcessBlock(r,i){var o=this._X;nextState.call(this),p[0]=o[0]^o[5]>>>16^o[3]<<16,p[1]=o[2]^o[7]>>>16^o[5]<<16,p[2]=o[4]^o[1]>>>16^o[7]<<16,p[3]=o[6]^o[3]>>>16^o[1]<<16;for(var u=0;u<4;u++)p[u]=16711935&(p[u]<<8|p[u]>>>24)|4278255360&(p[u]<<24|p[u]>>>8),r[i+u]^=p[u]},blockSize:4,ivSize:2});function nextState(){for(var r=this._X,i=this._C,o=0;o<8;o++)g[o]=i[o];for(i[0]=i[0]+1295307597+this._b|0,i[1]=i[1]+3545052371+(i[0]>>>0<g[0]>>>0?1:0)|0,i[2]=i[2]+886263092+(i[1]>>>0<g[1]>>>0?1:0)|0,i[3]=i[3]+1295307597+(i[2]>>>0<g[2]>>>0?1:0)|0,i[4]=i[4]+3545052371+(i[3]>>>0<g[3]>>>0?1:0)|0,i[5]=i[5]+886263092+(i[4]>>>0<g[4]>>>0?1:0)|0,i[6]=i[6]+1295307597+(i[5]>>>0<g[5]>>>0?1:0)|0,i[7]=i[7]+3545052371+(i[6]>>>0<g[6]>>>0?1:0)|0,this._b=i[7]>>>0<g[7]>>>0?1:0,o=0;o<8;o++){var u=r[o]+i[o],p=65535&u,w=u>>>16,_=((p*p>>>17)+p*w>>>15)+w*w,x=((4294901760&u)*u|0)+((65535&u)*u|0);y[o]=_^x}r[0]=y[0]+(y[7]<<16|y[7]>>>16)+(y[6]<<16|y[6]>>>16)|0,r[1]=y[1]+(y[0]<<8|y[0]>>>24)+y[7]|0,r[2]=y[2]+(y[1]<<16|y[1]>>>16)+(y[0]<<16|y[0]>>>16)|0,r[3]=y[3]+(y[2]<<8|y[2]>>>24)+y[1]|0,r[4]=y[4]+(y[3]<<16|y[3]>>>16)+(y[2]<<16|y[2]>>>16)|0,r[5]=y[5]+(y[4]<<8|y[4]>>>24)+y[3]|0,r[6]=y[6]+(y[5]<<16|y[5]>>>16)+(y[4]<<16|y[4]>>>16)|0,r[7]=y[7]+(y[6]<<8|y[6]>>>24)+y[5]|0}r.RabbitLegacy=i._createHelper(w)}(),u.RabbitLegacy)},5323:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(7508),o(3440),o(3839),o(1582),function(){var r=u,i=r.lib.StreamCipher,o=r.algo,p=[],g=[],y=[],w=o.Rabbit=i.extend({_doReset:function _doReset(){for(var r=this._key.words,i=this.cfg.iv,o=0;o<4;o++)r[o]=16711935&(r[o]<<8|r[o]>>>24)|4278255360&(r[o]<<24|r[o]>>>8);var u=this._X=[r[0],r[3]<<16|r[2]>>>16,r[1],r[0]<<16|r[3]>>>16,r[2],r[1]<<16|r[0]>>>16,r[3],r[2]<<16|r[1]>>>16],p=this._C=[r[2]<<16|r[2]>>>16,4294901760&r[0]|65535&r[1],r[3]<<16|r[3]>>>16,4294901760&r[1]|65535&r[2],r[0]<<16|r[0]>>>16,4294901760&r[2]|65535&r[3],r[1]<<16|r[1]>>>16,4294901760&r[3]|65535&r[0]];for(this._b=0,o=0;o<4;o++)nextState.call(this);for(o=0;o<8;o++)p[o]^=u[o+4&7];if(i){var g=i.words,y=g[0],w=g[1],_=16711935&(y<<8|y>>>24)|4278255360&(y<<24|y>>>8),x=16711935&(w<<8|w>>>24)|4278255360&(w<<24|w>>>8),k=_>>>16|4294901760&x,P=x<<16|65535&_;for(p[0]^=_,p[1]^=k,p[2]^=x,p[3]^=P,p[4]^=_,p[5]^=k,p[6]^=x,p[7]^=P,o=0;o<4;o++)nextState.call(this)}},_doProcessBlock:function _doProcessBlock(r,i){var o=this._X;nextState.call(this),p[0]=o[0]^o[5]>>>16^o[3]<<16,p[1]=o[2]^o[7]>>>16^o[5]<<16,p[2]=o[4]^o[1]>>>16^o[7]<<16,p[3]=o[6]^o[3]>>>16^o[1]<<16;for(var u=0;u<4;u++)p[u]=16711935&(p[u]<<8|p[u]>>>24)|4278255360&(p[u]<<24|p[u]>>>8),r[i+u]^=p[u]},blockSize:4,ivSize:2});function nextState(){for(var r=this._X,i=this._C,o=0;o<8;o++)g[o]=i[o];for(i[0]=i[0]+1295307597+this._b|0,i[1]=i[1]+3545052371+(i[0]>>>0<g[0]>>>0?1:0)|0,i[2]=i[2]+886263092+(i[1]>>>0<g[1]>>>0?1:0)|0,i[3]=i[3]+1295307597+(i[2]>>>0<g[2]>>>0?1:0)|0,i[4]=i[4]+3545052371+(i[3]>>>0<g[3]>>>0?1:0)|0,i[5]=i[5]+886263092+(i[4]>>>0<g[4]>>>0?1:0)|0,i[6]=i[6]+1295307597+(i[5]>>>0<g[5]>>>0?1:0)|0,i[7]=i[7]+3545052371+(i[6]>>>0<g[6]>>>0?1:0)|0,this._b=i[7]>>>0<g[7]>>>0?1:0,o=0;o<8;o++){var u=r[o]+i[o],p=65535&u,w=u>>>16,_=((p*p>>>17)+p*w>>>15)+w*w,x=((4294901760&u)*u|0)+((65535&u)*u|0);y[o]=_^x}r[0]=y[0]+(y[7]<<16|y[7]>>>16)+(y[6]<<16|y[6]>>>16)|0,r[1]=y[1]+(y[0]<<8|y[0]>>>24)+y[7]|0,r[2]=y[2]+(y[1]<<16|y[1]>>>16)+(y[0]<<16|y[0]>>>16)|0,r[3]=y[3]+(y[2]<<8|y[2]>>>24)+y[1]|0,r[4]=y[4]+(y[3]<<16|y[3]>>>16)+(y[2]<<16|y[2]>>>16)|0,r[5]=y[5]+(y[4]<<8|y[4]>>>24)+y[3]|0,r[6]=y[6]+(y[5]<<16|y[5]>>>16)+(y[4]<<16|y[4]>>>16)|0,r[7]=y[7]+(y[6]<<8|y[6]>>>24)+y[5]|0}r.Rabbit=i._createHelper(w)}(),u.Rabbit)},4640:function(r,i,o){"use strict";var u;o(1539),o(8674),r.exports=(u=o(757),o(7508),o(3440),o(3839),o(1582),function(){var r=u,i=r.lib.StreamCipher,o=r.algo,p=o.RC4=i.extend({_doReset:function _doReset(){for(var r=this._key,i=r.words,o=r.sigBytes,u=this._S=[],p=0;p<256;p++)u[p]=p;p=0;for(var g=0;p<256;p++){var y=p%o,w=i[y>>>2]>>>24-y%4*8&255;g=(g+u[p]+w)%256;var _=u[p];u[p]=u[g],u[g]=_}this._i=this._j=0},_doProcessBlock:function _doProcessBlock(r,i){r[i]^=generateKeystreamWord.call(this)},keySize:8,ivSize:0});function generateKeystreamWord(){for(var r=this._S,i=this._i,o=this._j,u=0,p=0;p<4;p++){o=(o+r[i=(i+1)%256])%256;var g=r[i];r[i]=r[o],r[o]=g,u|=r[(r[i]+r[o])%256]<<24-8*p}return this._i=i,this._j=o,u}r.RC4=i._createHelper(p);var g=o.RC4Drop=p.extend({cfg:p.cfg.extend({drop:192}),_doReset:function _doReset(){p._doReset.call(this);for(var r=this.cfg.drop;r>0;r--)generateKeystreamWord.call(this)}});r.RC4Drop=i._createHelper(g)}(),u.RC4)},8714:function(r,i,o){"use strict";var u;r.exports=(u=o(757),function(r){var i=u,o=i.lib,p=o.WordArray,g=o.Hasher,y=i.algo,w=p.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),_=p.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),x=p.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),k=p.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),P=p.create([0,1518500249,1859775393,2400959708,2840853838]),O=p.create([1352829926,1548603684,1836072691,2053994217,0]),I=y.RIPEMD160=g.extend({_doReset:function _doReset(){this._hash=p.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function _doProcessBlock(r,i){for(var o=0;o<16;o++){var u=i+o,p=r[u];r[u]=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8)}var g,y,I,B,R,D,N,W,U,j,G,X=this._hash.words,K=P.words,Y=O.words,J=w.words,$=_.words,ee=x.words,te=k.words;for(D=g=X[0],N=y=X[1],W=I=X[2],U=B=X[3],j=R=X[4],o=0;o<80;o+=1)G=g+r[i+J[o]]|0,G+=o<16?f1(y,I,B)+K[0]:o<32?f2(y,I,B)+K[1]:o<48?f3(y,I,B)+K[2]:o<64?f4(y,I,B)+K[3]:f5(y,I,B)+K[4],G=(G=rotl(G|=0,ee[o]))+R|0,g=R,R=B,B=rotl(I,10),I=y,y=G,G=D+r[i+$[o]]|0,G+=o<16?f5(N,W,U)+Y[0]:o<32?f4(N,W,U)+Y[1]:o<48?f3(N,W,U)+Y[2]:o<64?f2(N,W,U)+Y[3]:f1(N,W,U)+Y[4],G=(G=rotl(G|=0,te[o]))+j|0,D=j,j=U,U=rotl(W,10),W=N,N=G;G=X[1]+I+U|0,X[1]=X[2]+B+j|0,X[2]=X[3]+R+D|0,X[3]=X[4]+g+N|0,X[4]=X[0]+y+W|0,X[0]=G},_doFinalize:function _doFinalize(){var r=this._data,i=r.words,o=8*this._nDataBytes,u=8*r.sigBytes;i[u>>>5]|=128<<24-u%32,i[14+(u+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r.sigBytes=4*(i.length+1),this._process();for(var p=this._hash,g=p.words,y=0;y<5;y++){var w=g[y];g[y]=16711935&(w<<8|w>>>24)|4278255360&(w<<24|w>>>8)}return p},clone:function clone(){var clone=g.clone.call(this);return clone._hash=this._hash.clone(),clone}});function f1(r,i,o){return r^i^o}function f2(r,i,o){return r&i|~r&o}function f3(r,i,o){return(r|~i)^o}function f4(r,i,o){return r&o|i&~o}function f5(r,i,o){return r^(i|~o)}function rotl(r,i){return r<<i|r>>>32-i}i.RIPEMD160=g._createHelper(I),i.HmacRIPEMD160=g._createHmacHelper(I)}(Math),u.RIPEMD160)},9865:function(r,i,o){"use strict";var u,p,g,y,w,_,x,k;r.exports=(k=o(757),p=(u=k).lib,g=p.WordArray,y=p.Hasher,w=u.algo,_=[],x=w.SHA1=y.extend({_doReset:function _doReset(){this._hash=new g.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function _doProcessBlock(r,i){for(var o=this._hash.words,u=o[0],p=o[1],g=o[2],y=o[3],w=o[4],x=0;x<80;x++){if(x<16)_[x]=0|r[i+x];else{var k=_[x-3]^_[x-8]^_[x-14]^_[x-16];_[x]=k<<1|k>>>31}var P=(u<<5|u>>>27)+w+_[x];P+=x<20?1518500249+(p&g|~p&y):x<40?1859775393+(p^g^y):x<60?(p&g|p&y|g&y)-1894007588:(p^g^y)-899497514,w=y,y=g,g=p<<30|p>>>2,p=u,u=P}o[0]=o[0]+u|0,o[1]=o[1]+p|0,o[2]=o[2]+g|0,o[3]=o[3]+y|0,o[4]=o[4]+w|0},_doFinalize:function _doFinalize(){var r=this._data,i=r.words,o=8*this._nDataBytes,u=8*r.sigBytes;return i[u>>>5]|=128<<24-u%32,i[14+(u+64>>>9<<4)]=Math.floor(o/4294967296),i[15+(u+64>>>9<<4)]=o,r.sigBytes=4*i.length,this._process(),this._hash},clone:function clone(){var clone=y.clone.call(this);return clone._hash=this._hash.clone(),clone}}),u.SHA1=y._createHelper(x),u.HmacSHA1=y._createHmacHelper(x),k.SHA1)},6876:function(r,i,o){"use strict";var u,p,g,y,w,_;r.exports=(_=o(757),o(8921),p=(u=_).lib.WordArray,g=u.algo,y=g.SHA256,w=g.SHA224=y.extend({_doReset:function _doReset(){this._hash=new p.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function _doFinalize(){var r=y._doFinalize.call(this);return r.sigBytes-=4,r}}),u.SHA224=y._createHelper(w),u.HmacSHA224=y._createHmacHelper(w),_.SHA224)},8921:function(r,i,o){"use strict";var u;o(7042),r.exports=(u=o(757),function(r){var i=u,o=i.lib,p=o.WordArray,g=o.Hasher,y=i.algo,w=[],_=[];!function(){function isPrime(i){for(var o=r.sqrt(i),u=2;u<=o;u++)if(!(i%u))return!1;return!0}function getFractionalBits(r){return 4294967296*(r-(0|r))|0}for(var i=2,o=0;o<64;)isPrime(i)&&(o<8&&(w[o]=getFractionalBits(r.pow(i,.5))),_[o]=getFractionalBits(r.pow(i,1/3)),o++),i++}();var x=[],k=y.SHA256=g.extend({_doReset:function _doReset(){this._hash=new p.init(w.slice(0))},_doProcessBlock:function _doProcessBlock(r,i){for(var o=this._hash.words,u=o[0],p=o[1],g=o[2],y=o[3],w=o[4],k=o[5],P=o[6],O=o[7],I=0;I<64;I++){if(I<16)x[I]=0|r[i+I];else{var B=x[I-15],R=(B<<25|B>>>7)^(B<<14|B>>>18)^B>>>3,D=x[I-2],N=(D<<15|D>>>17)^(D<<13|D>>>19)^D>>>10;x[I]=R+x[I-7]+N+x[I-16]}var W=u&p^u&g^p&g,U=(u<<30|u>>>2)^(u<<19|u>>>13)^(u<<10|u>>>22),j=O+((w<<26|w>>>6)^(w<<21|w>>>11)^(w<<7|w>>>25))+(w&k^~w&P)+_[I]+x[I];O=P,P=k,k=w,w=y+j|0,y=g,g=p,p=u,u=j+(U+W)|0}o[0]=o[0]+u|0,o[1]=o[1]+p|0,o[2]=o[2]+g|0,o[3]=o[3]+y|0,o[4]=o[4]+w|0,o[5]=o[5]+k|0,o[6]=o[6]+P|0,o[7]=o[7]+O|0},_doFinalize:function _doFinalize(){var i=this._data,o=i.words,u=8*this._nDataBytes,p=8*i.sigBytes;return o[p>>>5]|=128<<24-p%32,o[14+(p+64>>>9<<4)]=r.floor(u/4294967296),o[15+(p+64>>>9<<4)]=u,i.sigBytes=4*o.length,this._process(),this._hash},clone:function clone(){var clone=g.clone.call(this);return clone._hash=this._hash.clone(),clone}});i.SHA256=g._createHelper(k),i.HmacSHA256=g._createHmacHelper(k)}(Math),u.SHA256)},8342:function(r,i,o){"use strict";var u;o(7042),r.exports=(u=o(757),o(2601),function(r){var i=u,o=i.lib,p=o.WordArray,g=o.Hasher,y=i.x64.Word,w=i.algo,_=[],x=[],k=[];!function(){for(var r=1,i=0,o=0;o<24;o++){_[r+5*i]=(o+1)*(o+2)/2%64;var u=(2*r+3*i)%5;r=i%5,i=u}for(r=0;r<5;r++)for(i=0;i<5;i++)x[r+5*i]=i+(2*r+3*i)%5*5;for(var p=1,g=0;g<24;g++){for(var w=0,P=0,O=0;O<7;O++){if(1&p){var I=(1<<O)-1;I<32?P^=1<<I:w^=1<<I-32}128&p?p=p<<1^113:p<<=1}k[g]=y.create(w,P)}}();var P=[];!function(){for(var r=0;r<25;r++)P[r]=y.create()}();var O=w.SHA3=g.extend({cfg:g.cfg.extend({outputLength:512}),_doReset:function _doReset(){for(var r=this._state=[],i=0;i<25;i++)r[i]=new y.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function _doProcessBlock(r,i){for(var o=this._state,u=this.blockSize/2,p=0;p<u;p++){var g=r[i+2*p],y=r[i+2*p+1];g=16711935&(g<<8|g>>>24)|4278255360&(g<<24|g>>>8),y=16711935&(y<<8|y>>>24)|4278255360&(y<<24|y>>>8),(te=o[p]).high^=y,te.low^=g}for(var w=0;w<24;w++){for(var O=0;O<5;O++){for(var I=0,B=0,R=0;R<5;R++)I^=(te=o[O+5*R]).high,B^=te.low;var D=P[O];D.high=I,D.low=B}for(O=0;O<5;O++){var N=P[(O+4)%5],W=P[(O+1)%5],U=W.high,j=W.low;for(I=N.high^(U<<1|j>>>31),B=N.low^(j<<1|U>>>31),R=0;R<5;R++)(te=o[O+5*R]).high^=I,te.low^=B}for(var G=1;G<25;G++){var X=(te=o[G]).high,K=te.low,Y=_[G];Y<32?(I=X<<Y|K>>>32-Y,B=K<<Y|X>>>32-Y):(I=K<<Y-32|X>>>64-Y,B=X<<Y-32|K>>>64-Y);var J=P[x[G]];J.high=I,J.low=B}var $=P[0],ee=o[0];for($.high=ee.high,$.low=ee.low,O=0;O<5;O++)for(R=0;R<5;R++){var te=o[G=O+5*R],re=P[G],ne=P[(O+1)%5+5*R],ie=P[(O+2)%5+5*R];te.high=re.high^~ne.high&ie.high,te.low=re.low^~ne.low&ie.low}te=o[0];var oe=k[w];te.high^=oe.high,te.low^=oe.low}},_doFinalize:function _doFinalize(){var i=this._data,o=i.words,u=(this._nDataBytes,8*i.sigBytes),g=32*this.blockSize;o[u>>>5]|=1<<24-u%32,o[(r.ceil((u+1)/g)*g>>>5)-1]|=128,i.sigBytes=4*o.length,this._process();for(var y=this._state,w=this.cfg.outputLength/8,_=w/8,x=[],k=0;k<_;k++){var P=y[k],O=P.high,I=P.low;O=16711935&(O<<8|O>>>24)|4278255360&(O<<24|O>>>8),I=16711935&(I<<8|I>>>24)|4278255360&(I<<24|I>>>8),x.push(I),x.push(O)}return new p.init(x,w)},clone:function clone(){for(var clone=g.clone.call(this),r=clone._state=this._state.slice(0),i=0;i<25;i++)r[i]=r[i].clone();return clone}});i.SHA3=g._createHelper(O),i.HmacSHA3=g._createHmacHelper(O)}(Math),u.SHA3)},8122:function(r,i,o){"use strict";var u,p,g,y,w,_,x,k;r.exports=(k=o(757),o(2601),o(7991),p=(u=k).x64,g=p.Word,y=p.WordArray,w=u.algo,_=w.SHA512,x=w.SHA384=_.extend({_doReset:function _doReset(){this._hash=new y.init([new g.init(3418070365,3238371032),new g.init(1654270250,914150663),new g.init(2438529370,812702999),new g.init(355462360,4144912697),new g.init(1731405415,4290775857),new g.init(2394180231,1750603025),new g.init(3675008525,1694076839),new g.init(1203062813,3204075428)])},_doFinalize:function _doFinalize(){var r=_._doFinalize.call(this);return r.sigBytes-=16,r}}),u.SHA384=_._createHelper(x),u.HmacSHA384=_._createHmacHelper(x),k.SHA384)},7991:function(r,i,o){"use strict";var u;r.exports=(u=o(757),o(2601),function(){var r=u,i=r.lib.Hasher,o=r.x64,p=o.Word,g=o.WordArray,y=r.algo;function X64Word_create(){return p.create.apply(p,arguments)}var w=[X64Word_create(1116352408,3609767458),X64Word_create(1899447441,602891725),X64Word_create(3049323471,3964484399),X64Word_create(3921009573,2173295548),X64Word_create(961987163,4081628472),X64Word_create(1508970993,3053834265),X64Word_create(2453635748,2937671579),X64Word_create(2870763221,3664609560),X64Word_create(3624381080,2734883394),X64Word_create(310598401,1164996542),X64Word_create(607225278,1323610764),X64Word_create(1426881987,3590304994),X64Word_create(1925078388,4068182383),X64Word_create(2162078206,991336113),X64Word_create(2614888103,633803317),X64Word_create(3248222580,3479774868),X64Word_create(3835390401,2666613458),X64Word_create(4022224774,944711139),X64Word_create(264347078,2341262773),X64Word_create(604807628,2007800933),X64Word_create(770255983,1495990901),X64Word_create(1249150122,1856431235),X64Word_create(1555081692,3175218132),X64Word_create(1996064986,2198950837),X64Word_create(2554220882,3999719339),X64Word_create(2821834349,766784016),X64Word_create(2952996808,2566594879),X64Word_create(3210313671,3203337956),X64Word_create(3336571891,1034457026),X64Word_create(3584528711,2466948901),X64Word_create(113926993,3758326383),X64Word_create(338241895,168717936),X64Word_create(666307205,1188179964),X64Word_create(773529912,1546045734),X64Word_create(1294757372,1522805485),X64Word_create(1396182291,2643833823),X64Word_create(1695183700,2343527390),X64Word_create(1986661051,1014477480),X64Word_create(2177026350,1206759142),X64Word_create(2456956037,344077627),X64Word_create(2730485921,1290863460),X64Word_create(2820302411,3158454273),X64Word_create(3259730800,3505952657),X64Word_create(3345764771,106217008),X64Word_create(3516065817,3606008344),X64Word_create(3600352804,1432725776),X64Word_create(4094571909,1467031594),X64Word_create(275423344,851169720),X64Word_create(430227734,3100823752),X64Word_create(506948616,1363258195),X64Word_create(659060556,3750685593),X64Word_create(883997877,3785050280),X64Word_create(958139571,3318307427),X64Word_create(1322822218,3812723403),X64Word_create(1537002063,2003034995),X64Word_create(1747873779,3602036899),X64Word_create(1955562222,1575990012),X64Word_create(2024104815,1125592928),X64Word_create(2227730452,2716904306),X64Word_create(2361852424,442776044),X64Word_create(2428436474,593698344),X64Word_create(2756734187,3733110249),X64Word_create(3204031479,2999351573),X64Word_create(3329325298,3815920427),X64Word_create(3391569614,3928383900),X64Word_create(3515267271,566280711),X64Word_create(3940187606,3454069534),X64Word_create(4118630271,4000239992),X64Word_create(116418474,1914138554),X64Word_create(174292421,2731055270),X64Word_create(289380356,3203993006),X64Word_create(460393269,320620315),X64Word_create(685471733,587496836),X64Word_create(852142971,1086792851),X64Word_create(1017036298,365543100),X64Word_create(1126000580,2618297676),X64Word_create(1288033470,3409855158),X64Word_create(1501505948,4234509866),X64Word_create(1607167915,987167468),X64Word_create(1816402316,1246189591)],_=[];!function(){for(var r=0;r<80;r++)_[r]=X64Word_create()}();var x=y.SHA512=i.extend({_doReset:function _doReset(){this._hash=new g.init([new p.init(1779033703,4089235720),new p.init(3144134277,2227873595),new p.init(1013904242,4271175723),new p.init(2773480762,1595750129),new p.init(1359893119,2917565137),new p.init(2600822924,725511199),new p.init(528734635,4215389547),new p.init(1541459225,327033209)])},_doProcessBlock:function _doProcessBlock(r,i){for(var o=this._hash.words,u=o[0],p=o[1],g=o[2],y=o[3],x=o[4],k=o[5],P=o[6],O=o[7],I=u.high,B=u.low,R=p.high,D=p.low,N=g.high,W=g.low,U=y.high,j=y.low,G=x.high,X=x.low,K=k.high,Y=k.low,J=P.high,$=P.low,ee=O.high,te=O.low,re=I,ne=B,ie=R,oe=D,ae=N,se=W,ce=U,le=j,ue=G,fe=X,he=K,de=Y,pe=J,ge=$,ye=ee,ve=te,me=0;me<80;me++){var be,we,_e=_[me];if(me<16)we=_e.high=0|r[i+2*me],be=_e.low=0|r[i+2*me+1];else{var Se=_[me-15],xe=Se.high,Ce=Se.low,ke=(xe>>>1|Ce<<31)^(xe>>>8|Ce<<24)^xe>>>7,Pe=(Ce>>>1|xe<<31)^(Ce>>>8|xe<<24)^(Ce>>>7|xe<<25),Ae=_[me-2],Ee=Ae.high,Te=Ae.low,Oe=(Ee>>>19|Te<<13)^(Ee<<3|Te>>>29)^Ee>>>6,Ie=(Te>>>19|Ee<<13)^(Te<<3|Ee>>>29)^(Te>>>6|Ee<<26),Be=_[me-7],Fe=Be.high,Le=Be.low,Re=_[me-16],De=Re.high,Me=Re.low;we=(we=(we=ke+Fe+((be=Pe+Le)>>>0<Pe>>>0?1:0))+Oe+((be+=Ie)>>>0<Ie>>>0?1:0))+De+((be+=Me)>>>0<Me>>>0?1:0),_e.high=we,_e.low=be}var Ne,We=ue&he^~ue&pe,ze=fe&de^~fe&ge,Ue=re&ie^re&ae^ie&ae,je=ne&oe^ne&se^oe&se,Ge=(re>>>28|ne<<4)^(re<<30|ne>>>2)^(re<<25|ne>>>7),Ve=(ne>>>28|re<<4)^(ne<<30|re>>>2)^(ne<<25|re>>>7),He=(ue>>>14|fe<<18)^(ue>>>18|fe<<14)^(ue<<23|fe>>>9),qe=(fe>>>14|ue<<18)^(fe>>>18|ue<<14)^(fe<<23|ue>>>9),Xe=w[me],Ze=Xe.high,Ke=Xe.low,Ye=ye+He+((Ne=ve+qe)>>>0<ve>>>0?1:0),Je=Ve+je;ye=pe,ve=ge,pe=he,ge=de,he=ue,de=fe,ue=ce+(Ye=(Ye=(Ye=Ye+We+((Ne+=ze)>>>0<ze>>>0?1:0))+Ze+((Ne+=Ke)>>>0<Ke>>>0?1:0))+we+((Ne+=be)>>>0<be>>>0?1:0))+((fe=le+Ne|0)>>>0<le>>>0?1:0)|0,ce=ae,le=se,ae=ie,se=oe,ie=re,oe=ne,re=Ye+(Ge+Ue+(Je>>>0<Ve>>>0?1:0))+((ne=Ne+Je|0)>>>0<Ne>>>0?1:0)|0}B=u.low=B+ne,u.high=I+re+(B>>>0<ne>>>0?1:0),D=p.low=D+oe,p.high=R+ie+(D>>>0<oe>>>0?1:0),W=g.low=W+se,g.high=N+ae+(W>>>0<se>>>0?1:0),j=y.low=j+le,y.high=U+ce+(j>>>0<le>>>0?1:0),X=x.low=X+fe,x.high=G+ue+(X>>>0<fe>>>0?1:0),Y=k.low=Y+de,k.high=K+he+(Y>>>0<de>>>0?1:0),$=P.low=$+ge,P.high=J+pe+($>>>0<ge>>>0?1:0),te=O.low=te+ve,O.high=ee+ye+(te>>>0<ve>>>0?1:0)},_doFinalize:function _doFinalize(){var r=this._data,i=r.words,o=8*this._nDataBytes,u=8*r.sigBytes;return i[u>>>5]|=128<<24-u%32,i[30+(u+128>>>10<<5)]=Math.floor(o/4294967296),i[31+(u+128>>>10<<5)]=o,r.sigBytes=4*i.length,this._process(),this._hash.toX32()},clone:function clone(){var clone=i.clone.call(this);return clone._hash=this._hash.clone(),clone},blockSize:32});r.SHA512=i._createHelper(x),r.HmacSHA512=i._createHmacHelper(x)}(),u.SHA512)},8437:function(r,i,o){"use strict";var u;o(7042),r.exports=(u=o(757),o(7508),o(3440),o(3839),o(1582),function(){var r=u,i=r.lib,o=i.WordArray,p=i.BlockCipher,g=r.algo,y=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],w=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],_=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],x=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],k=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],P=g.DES=p.extend({_doReset:function _doReset(){for(var r=this._key.words,i=[],o=0;o<56;o++){var u=y[o]-1;i[o]=r[u>>>5]>>>31-u%32&1}for(var p=this._subKeys=[],g=0;g<16;g++){var x=p[g]=[],k=_[g];for(o=0;o<24;o++)x[o/6|0]|=i[(w[o]-1+k)%28]<<31-o%6,x[4+(o/6|0)]|=i[28+(w[o+24]-1+k)%28]<<31-o%6;for(x[0]=x[0]<<1|x[0]>>>31,o=1;o<7;o++)x[o]=x[o]>>>4*(o-1)+3;x[7]=x[7]<<5|x[7]>>>27}var P=this._invSubKeys=[];for(o=0;o<16;o++)P[o]=p[15-o]},encryptBlock:function encryptBlock(r,i){this._doCryptBlock(r,i,this._subKeys)},decryptBlock:function decryptBlock(r,i){this._doCryptBlock(r,i,this._invSubKeys)},_doCryptBlock:function _doCryptBlock(r,i,o){this._lBlock=r[i],this._rBlock=r[i+1],exchangeLR.call(this,4,252645135),exchangeLR.call(this,16,65535),exchangeRL.call(this,2,858993459),exchangeRL.call(this,8,16711935),exchangeLR.call(this,1,1431655765);for(var u=0;u<16;u++){for(var p=o[u],g=this._lBlock,y=this._rBlock,w=0,_=0;_<8;_++)w|=x[_][((y^p[_])&k[_])>>>0];this._lBlock=y,this._rBlock=g^w}var P=this._lBlock;this._lBlock=this._rBlock,this._rBlock=P,exchangeLR.call(this,1,1431655765),exchangeRL.call(this,8,16711935),exchangeRL.call(this,2,858993459),exchangeLR.call(this,16,65535),exchangeLR.call(this,4,252645135),r[i]=this._lBlock,r[i+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function exchangeLR(r,i){var o=(this._lBlock>>>r^this._rBlock)&i;this._rBlock^=o,this._lBlock^=o<<r}function exchangeRL(r,i){var o=(this._rBlock>>>r^this._lBlock)&i;this._lBlock^=o,this._rBlock^=o<<r}r.DES=p._createHelper(P);var O=g.TripleDES=p.extend({_doReset:function _doReset(){var r=this._key.words;if(2!==r.length&&4!==r.length&&r.length<6)throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");var i=r.slice(0,2),u=r.length<4?r.slice(0,2):r.slice(2,4),p=r.length<6?r.slice(0,2):r.slice(4,6);this._des1=P.createEncryptor(o.create(i)),this._des2=P.createEncryptor(o.create(u)),this._des3=P.createEncryptor(o.create(p))},encryptBlock:function encryptBlock(r,i){this._des1.encryptBlock(r,i),this._des2.decryptBlock(r,i),this._des3.encryptBlock(r,i)},decryptBlock:function decryptBlock(r,i){this._des3.decryptBlock(r,i),this._des2.encryptBlock(r,i),this._des1.decryptBlock(r,i)},keySize:6,ivSize:2,blockSize:2});r.TripleDES=p._createHelper(O)}(),u.TripleDES)},2601:function(r,i,o){"use strict";var u;o(7042),r.exports=(u=o(757),function(r){var i=u,o=i.lib,p=o.Base,g=o.WordArray,y=i.x64={};y.Word=p.extend({init:function init(r,i){this.high=r,this.low=i}}),y.WordArray=p.extend({init:function init(i,o){i=this.words=i||[],this.sigBytes=o!=r?o:8*i.length},toX32:function toX32(){for(var r=this.words,i=r.length,o=[],u=0;u<i;u++){var p=r[u];o.push(p.high),o.push(p.low)}return g.create(o,this.sigBytes)},clone:function clone(){for(var clone=p.clone.call(this),r=clone.words=this.words.slice(0),i=r.length,o=0;o<i;o++)r[o]=r[o].clone();return clone}})}(),u)},9811:function(r,i,o){"use strict";function _createForOfIteratorHelperLoose(r,i){var o="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(o)return(o=o.call(r)).next.bind(o);if(Array.isArray(r)||(o=function _unsupportedIterableToArray(r,i){if(!r)return;if("string"==typeof r)return _arrayLikeToArray(r,i);var o=Object.prototype.toString.call(r).slice(8,-1);"Object"===o&&r.constructor&&(o=r.constructor.name);if("Map"===o||"Set"===o)return Array.from(r);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return _arrayLikeToArray(r,i)}(r))||i&&r&&"number"==typeof r.length){o&&(r=o);var u=0;return function(){return u>=r.length?{done:!0}:{done:!1,value:r[u++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(r,i){(null==i||i>r.length)&&(i=r.length);for(var o=0,u=new Array(i);o<i;o++)u[o]=r[o];return u}function _regeneratorRuntime(){_regeneratorRuntime=function _regeneratorRuntime(){return r};var r={},i=Object.prototype,o=i.hasOwnProperty,u=Object.defineProperty||function(r,i,o){r[i]=o.value},p="function"==typeof Symbol?Symbol:{},g=p.iterator||"@@iterator",y=p.asyncIterator||"@@asyncIterator",w=p.toStringTag||"@@toStringTag";function define(r,i,o){return Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}),r[i]}try{define({},"")}catch(r){define=function define(r,i,o){return r[i]=o}}function wrap(r,i,o,p){var g=i&&i.prototype instanceof Generator?i:Generator,y=Object.create(g.prototype),w=new Context(p||[]);return u(y,"_invoke",{value:makeInvokeMethod(r,o,w)}),y}function tryCatch(r,i,o){try{return{type:"normal",arg:r.call(i,o)}}catch(r){return{type:"throw",arg:r}}}r.wrap=wrap;var _={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var x={};define(x,g,(function(){return this}));var k=Object.getPrototypeOf,P=k&&k(k(values([])));P&&P!==i&&o.call(P,g)&&(x=P);var O=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(x);function defineIteratorMethods(r){["next","throw","return"].forEach((function(i){define(r,i,(function(r){return this._invoke(i,r)}))}))}function AsyncIterator(r,i){function invoke(u,p,g,y){var w=tryCatch(r[u],r,p);if("throw"!==w.type){var _=w.arg,x=_.value;return x&&"object"==typeof x&&o.call(x,"__await")?i.resolve(x.__await).then((function(r){invoke("next",r,g,y)}),(function(r){invoke("throw",r,g,y)})):i.resolve(x).then((function(r){_.value=r,g(_)}),(function(r){return invoke("throw",r,g,y)}))}y(w.arg)}var p;u(this,"_invoke",{value:function value(r,o){function callInvokeWithMethodAndArg(){return new i((function(i,u){invoke(r,o,i,u)}))}return p=p?p.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(r,i,o){var u="suspendedStart";return function(p,g){if("executing"===u)throw new Error("Generator is already running");if("completed"===u){if("throw"===p)throw g;return doneResult()}for(o.method=p,o.arg=g;;){var y=o.delegate;if(y){var w=maybeInvokeDelegate(y,o);if(w){if(w===_)continue;return w}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if("suspendedStart"===u)throw u="completed",o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);u="executing";var x=tryCatch(r,i,o);if("normal"===x.type){if(u=o.done?"completed":"suspendedYield",x.arg===_)continue;return{value:x.arg,done:o.done}}"throw"===x.type&&(u="completed",o.method="throw",o.arg=x.arg)}}}function maybeInvokeDelegate(r,i){var o=i.method,u=r.iterator[o];if(void 0===u)return i.delegate=null,"throw"===o&&r.iterator.return&&(i.method="return",i.arg=void 0,maybeInvokeDelegate(r,i),"throw"===i.method)||"return"!==o&&(i.method="throw",i.arg=new TypeError("The iterator does not provide a '"+o+"' method")),_;var p=tryCatch(u,r.iterator,i.arg);if("throw"===p.type)return i.method="throw",i.arg=p.arg,i.delegate=null,_;var g=p.arg;return g?g.done?(i[r.resultName]=g.value,i.next=r.nextLoc,"return"!==i.method&&(i.method="next",i.arg=void 0),i.delegate=null,_):g:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,_)}function pushTryEntry(r){var i={tryLoc:r[0]};1 in r&&(i.catchLoc=r[1]),2 in r&&(i.finallyLoc=r[2],i.afterLoc=r[3]),this.tryEntries.push(i)}function resetTryEntry(r){var i=r.completion||{};i.type="normal",delete i.arg,r.completion=i}function Context(r){this.tryEntries=[{tryLoc:"root"}],r.forEach(pushTryEntry,this),this.reset(!0)}function values(r){if(r){var i=r[g];if(i)return i.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var u=-1,p=function next(){for(;++u<r.length;)if(o.call(r,u))return next.value=r[u],next.done=!1,next;return next.value=void 0,next.done=!0,next};return p.next=p}}return{next:doneResult}}function doneResult(){return{value:void 0,done:!0}}return GeneratorFunction.prototype=GeneratorFunctionPrototype,u(O,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),u(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,w,"GeneratorFunction"),r.isGeneratorFunction=function(r){var i="function"==typeof r&&r.constructor;return!!i&&(i===GeneratorFunction||"GeneratorFunction"===(i.displayName||i.name))},r.mark=function(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,GeneratorFunctionPrototype):(r.__proto__=GeneratorFunctionPrototype,define(r,w,"GeneratorFunction")),r.prototype=Object.create(O),r},r.awrap=function(r){return{__await:r}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,y,(function(){return this})),r.AsyncIterator=AsyncIterator,r.async=function(i,o,u,p,g){void 0===g&&(g=Promise);var y=new AsyncIterator(wrap(i,o,u,p),g);return r.isGeneratorFunction(o)?y:y.next().then((function(r){return r.done?r.value:y.next()}))},defineIteratorMethods(O),define(O,w,"Generator"),define(O,g,(function(){return this})),define(O,"toString",(function(){return"[object Generator]"})),r.keys=function(r){var i=Object(r),o=[];for(var u in i)o.push(u);return o.reverse(),function next(){for(;o.length;){var r=o.pop();if(r in i)return next.value=r,next.done=!1,next}return next.done=!0,next}},r.values=values,Context.prototype={constructor:Context,reset:function reset(r){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(resetTryEntry),!r)for(var i in this)"t"===i.charAt(0)&&o.call(this,i)&&!isNaN(+i.slice(1))&&(this[i]=void 0)},stop:function stop(){this.done=!0;var r=this.tryEntries[0].completion;if("throw"===r.type)throw r.arg;return this.rval},dispatchException:function dispatchException(r){if(this.done)throw r;var i=this;function handle(o,u){return g.type="throw",g.arg=r,i.next=o,u&&(i.method="next",i.arg=void 0),!!u}for(var u=this.tryEntries.length-1;u>=0;--u){var p=this.tryEntries[u],g=p.completion;if("root"===p.tryLoc)return handle("end");if(p.tryLoc<=this.prev){var y=o.call(p,"catchLoc"),w=o.call(p,"finallyLoc");if(y&&w){if(this.prev<p.catchLoc)return handle(p.catchLoc,!0);if(this.prev<p.finallyLoc)return handle(p.finallyLoc)}else if(y){if(this.prev<p.catchLoc)return handle(p.catchLoc,!0)}else{if(!w)throw new Error("try statement without catch or finally");if(this.prev<p.finallyLoc)return handle(p.finallyLoc)}}}},abrupt:function abrupt(r,i){for(var u=this.tryEntries.length-1;u>=0;--u){var p=this.tryEntries[u];if(p.tryLoc<=this.prev&&o.call(p,"finallyLoc")&&this.prev<p.finallyLoc){var g=p;break}}g&&("break"===r||"continue"===r)&&g.tryLoc<=i&&i<=g.finallyLoc&&(g=null);var y=g?g.completion:{};return y.type=r,y.arg=i,g?(this.method="next",this.next=g.finallyLoc,_):this.complete(y)},complete:function complete(r,i){if("throw"===r.type)throw r.arg;return"break"===r.type||"continue"===r.type?this.next=r.arg:"return"===r.type?(this.rval=this.arg=r.arg,this.method="return",this.next="end"):"normal"===r.type&&i&&(this.next=i),_},finish:function finish(r){for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i];if(o.finallyLoc===r)return this.complete(o.completion,o.afterLoc),resetTryEntry(o),_}},catch:function _catch(r){for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i];if(o.tryLoc===r){var u=o.completion;if("throw"===u.type){var p=u.arg;resetTryEntry(o)}return p}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(r,i,o){return this.delegate={iterator:values(r),resultName:i,nextLoc:o},"next"===this.method&&(this.arg=void 0),_}},r}o(2443),o(3680),o(3706),o(2703),o(489),o(4747),o(8309),o(8674),o(1038),o(4916),o(4723),o(2165),o(6992),o(1539),o(8783),o(3948),o(2526),o(1817),o(7042);var u=function(){function StateMachine(r){this.stateTable=r.stateTable,this.accepting=r.accepting,this.tags=r.tags}var r=StateMachine.prototype;return r.match=function match(r){var i,o=this;return(i={})[Symbol.iterator]=_regeneratorRuntime().mark((function _callee(){var i,u,p,g,y,w;return _regeneratorRuntime().wrap((function _callee$(_){for(;;)switch(_.prev=_.next){case 0:i=1,u=null,p=null,g=null,y=0;case 5:if(!(y<r.length)){_.next=21;break}if(w=r[y],g=i,0!==(i=o.stateTable[i][w])){_.next=15;break}if(!(null!=u&&null!=p&&p>=u)){_.next=13;break}return _.next=13,[u,p,o.tags[g]];case 13:i=o.stateTable[1][w],u=null;case 15:0!==i&&null==u&&(u=y),o.accepting[i]&&(p=y),0===i&&(i=1);case 18:y++,_.next=5;break;case 21:if(!(null!=u&&null!=p&&p>=u)){_.next=24;break}return _.next=24,[u,p,o.tags[i]];case 24:case"end":return _.stop()}}),_callee)})),i},r.apply=function apply(r,i){for(var o,u=_createForOfIteratorHelperLoose(this.match(r));!(o=u()).done;)for(var p,g=o.value,y=g[0],w=g[1],_=_createForOfIteratorHelperLoose(g[2]);!(p=_()).done;){var x=p.value;"function"==typeof i[x]&&i[x](y,w,r.slice(y,w+1))}},StateMachine}();r.exports=u},8478:function(r,i,o){"use strict";var u=o(8823).Buffer;o(1539),o(8674),o(7042),o(6699);var p=o(3857),g=o(2635);r.exports=function(){function PNG(r){var i;for(this.data=r,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){var o=this.readUInt32(),p="";for(i=0;i<4;i++)p+=String.fromCharCode(this.data[this.pos++]);switch(p){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(o);break;case"IDAT":for(i=0;i<o;i++)this.imgData.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:this.transparency.indexed=this.read(o);var g=255-this.transparency.indexed.length;if(g>0)for(i=0;i<g;i++)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(o)[0];break;case 2:this.transparency.rgb=this.read(o)}break;case"tEXt":var y=this.read(o),w=y.indexOf(0),_=String.fromCharCode.apply(String,y.slice(0,w));this.text[_]=String.fromCharCode.apply(String,y.slice(w+1));break;case"IEND":switch(this.colorType){case 0:case 3:case 4:this.colors=1;break;case 2:case 6:this.colors=3}this.hasAlphaChannel=[4,6].includes(this.colorType);var x=this.colors+(this.hasAlphaChannel?1:0);switch(this.pixelBitlength=this.bits*x,this.colors){case 1:this.colorSpace="DeviceGray";break;case 3:this.colorSpace="DeviceRGB"}return void(this.imgData=new u(this.imgData));default:this.pos+=o}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}PNG.decode=function decode(r,i){return p.readFile(r,(function(r,o){return new PNG(o).decode((function(r){return i(r)}))}))},PNG.load=function load(r){return new PNG(p.readFileSync(r))};var r=PNG.prototype;return r.read=function read(r){for(var i=new Array(r),o=0;o<r;o++)i[o]=this.data[this.pos++];return i},r.readUInt32=function readUInt32(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},r.readUInt16=function readUInt16(){return this.data[this.pos++]<<8|this.data[this.pos++]},r.decodePixels=function decodePixels(r){var i=this;return g.inflate(this.imgData,(function(o,p){if(o)throw o;var g=i.width,y=i.height,w=i.pixelBitlength/8,_=new u(g*y*w),x=p.length,k=0;function pass(r,i,o,P,O){void 0===O&&(O=!1);for(var I=Math.ceil((g-r)/o),B=Math.ceil((y-i)/P),R=w*I,D=O?_:new u(R*B),N=0,W=0;N<B&&k<x;){var U,j,G,X,K;switch(p[k++]){case 0:for(G=0;G<R;G++)D[W++]=p[k++];break;case 1:for(G=0;G<R;G++)U=p[k++],X=G<w?0:D[W-w],D[W++]=(U+X)%256;break;case 2:for(G=0;G<R;G++)U=p[k++],j=(G-G%w)/w,K=N&&D[(N-1)*R+j*w+G%w],D[W++]=(K+U)%256;break;case 3:for(G=0;G<R;G++)U=p[k++],j=(G-G%w)/w,X=G<w?0:D[W-w],K=N&&D[(N-1)*R+j*w+G%w],D[W++]=(U+Math.floor((X+K)/2))%256;break;case 4:for(G=0;G<R;G++){var Y,J;U=p[k++],j=(G-G%w)/w,X=G<w?0:D[W-w],0===N?K=J=0:(K=D[(N-1)*R+j*w+G%w],J=j&&D[(N-1)*R+(j-1)*w+G%w]);var $=X+K-J,ee=Math.abs($-X),te=Math.abs($-K),re=Math.abs($-J);Y=ee<=te&&ee<=re?X:te<=re?K:J,D[W++]=(U+Y)%256}break;default:throw new Error("Invalid filter algorithm: "+p[k-1])}if(!O){var ne=((i+N*P)*g+r)*w,ie=N*R;for(G=0;G<I;G++){for(var oe=0;oe<w;oe++)_[ne++]=D[ie++];ne+=(o-1)*w}}N++}}return 1===i.interlaceMethod?(pass(0,0,8,8),pass(4,0,8,8),pass(0,4,4,8),pass(2,0,4,4),pass(0,2,2,4),pass(1,0,2,2),pass(0,1,1,2)):pass(0,0,1,1,!0),r(_)}))},r.decodePalette=function decodePalette(){for(var r=this.palette,i=r.length,o=this.transparency.indexed||[],p=new u(o.length+i),g=0,y=0,w=0;w<i;w+=3){var _;p[g++]=r[w],p[g++]=r[w+1],p[g++]=r[w+2],p[g++]=null!=(_=o[y++])?_:255}return p},r.copyToImageData=function copyToImageData(r,i){var o,u,p=this.colors,g=null,y=this.hasAlphaChannel;this.palette.length&&(g=this._decodedPalette||(this._decodedPalette=this.decodePalette()),p=4,y=!0);var w=r.data||r,_=w.length,x=g||i,k=o=0;if(1===p)for(;k<_;){u=g?4*i[k/4]:o;var P=x[u++];w[k++]=P,w[k++]=P,w[k++]=P,w[k++]=y?x[u++]:255,o=u}else for(;k<_;)u=g?4*i[k/4]:o,w[k++]=x[u++],w[k++]=x[u++],w[k++]=x[u++],w[k++]=y?x[u++]:255,o=u},r.decode=function decode(r){var i=this,o=new u(this.width*this.height*4);return this.decodePixels((function(u){return i.copyToImageData(o,u),r(o)}))},PNG}()},7103:function(r,i,o){"use strict";var u=o(4155);o(8145),o(6992),o(1539),o(2472),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(3290);var p,g=o(8823),y=g.Buffer,w={};for(p in g)g.hasOwnProperty(p)&&"SlowBuffer"!==p&&"Buffer"!==p&&(w[p]=g[p]);var _=w.Buffer={};for(p in y)y.hasOwnProperty(p)&&"allocUnsafe"!==p&&"allocUnsafeSlow"!==p&&(_[p]=y[p]);if(w.Buffer.prototype=y.prototype,_.from&&_.from!==Uint8Array.from||(_.from=function(r,i,o){if("number"==typeof r)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof r);if(r&&void 0===r.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);return y(r,i,o)}),_.alloc||(_.alloc=function(r,i,o){if("number"!=typeof r)throw new TypeError('The "size" argument must be of type number. Received type '+typeof r);if(r<0||r>=2*(1<<30))throw new RangeError('The value "'+r+'" is invalid for option "size"');var u=y(r);return i&&0!==i.length?"string"==typeof o?u.fill(i,o):u.fill(i):u.fill(0),u}),!w.kStringMaxLength)try{w.kStringMaxLength=u.binding("buffer").kStringMaxLength}catch(r){}w.constants||(w.constants={MAX_LENGTH:w.kMaxLength},w.kStringMaxLength&&(w.constants.MAX_STRING_LENGTH=w.kStringMaxLength)),r.exports=w},3361:function(r,i,o){"use strict";function ownKeys(r,i){var o=Object.keys(r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(r);i&&(u=u.filter((function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),o.push.apply(o,u)}return o}function _defineProperty(r,i,o){return i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r}function _defineProperties(r,i){for(var o=0;o<i.length;o++){var u=i[o];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(r,u.key,u)}}o(7941),o(2526),o(7327),o(1539),o(5003),o(4747),o(9337),o(7042);var u=o(8823).Buffer,p=o(9862).inspect,g=p&&p.custom||"inspect";r.exports=function(){function BufferList(){!function _classCallCheck(r,i){if(!(r instanceof i))throw new TypeError("Cannot call a class as a function")}(this,BufferList),this.head=null,this.tail=null,this.length=0}return function _createClass(r,i,o){return i&&_defineProperties(r.prototype,i),o&&_defineProperties(r,o),r}(BufferList,[{key:"push",value:function push(r){var i={data:r,next:null};this.length>0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function unshift(r){var i={data:r,next:this.head};0===this.length&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function shift(){if(0!==this.length){var r=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function clear(){this.head=this.tail=null,this.length=0}},{key:"join",value:function join(r){if(0===this.length)return"";for(var i=this.head,o=""+i.data;i=i.next;)o+=r+i.data;return o}},{key:"concat",value:function concat(r){if(0===this.length)return u.alloc(0);for(var i,o,p,g=u.allocUnsafe(r>>>0),y=this.head,w=0;y;)i=y.data,o=g,p=w,u.prototype.copy.call(i,o,p),w+=y.data.length,y=y.next;return g}},{key:"consume",value:function consume(r,i){var o;return r<this.head.data.length?(o=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):o=r===this.head.data.length?this.shift():i?this._getString(r):this._getBuffer(r),o}},{key:"first",value:function first(){return this.head.data}},{key:"_getString",value:function _getString(r){var i=this.head,o=1,u=i.data;for(r-=u.length;i=i.next;){var p=i.data,g=r>p.length?p.length:r;if(g===p.length?u+=p:u+=p.slice(0,r),0===(r-=g)){g===p.length?(++o,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=p.slice(g));break}++o}return this.length-=o,u}},{key:"_getBuffer",value:function _getBuffer(r){var i=u.allocUnsafe(r),o=this.head,p=1;for(o.data.copy(i),r-=o.data.length;o=o.next;){var g=o.data,y=r>g.length?g.length:r;if(g.copy(i,i.length-r,0,y),0===(r-=y)){y===g.length?(++p,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=g.slice(y));break}++p}return this.length-=p,i}},{key:g,value:function value(r,i){return p(this,function _objectSpread(r){for(var i=1;i<arguments.length;i++){var o=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(o),!0).forEach((function(i){_defineProperty(r,i,o[i])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach((function(i){Object.defineProperty(r,i,Object.getOwnPropertyDescriptor(o,i))}))}return r}({},i,{depth:0,customInspect:!1}))}}]),BufferList}()},5219:function(r,i,o){"use strict";var u=o(8823).Buffer;Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0,o(7941),o(2526),o(7327),o(1539),o(5003),o(4747),o(9337),o(489),o(2419),o(1817),o(2165),o(6992),o(8783),o(3948),o(1038),o(7042),o(8309),o(4916),o(2707),o(2222),o(9600),o(9714),o(5306),o(1249),o(9841),o(4953),o(6977),o(6699),o(5192),o(9653),o(3123),o(4723),o(8734),o(2472),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(7803),o(3290),o(9601),o(3210),o(9254),o(7397),o(8674);var p=_interopRequireDefault(o(2830)),g=_interopRequireDefault(o(2635)),y=_interopRequireDefault(o(5153)),w=_interopRequireDefault(o(1917)),_=o(7187),x=_interopRequireDefault(o(7337)),k=_interopRequireDefault(o(8478));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}var P=o(3857);function _classCallCheck(r,i){if(!(r instanceof i))throw new TypeError("Cannot call a class as a function")}function _defineProperties(r,i){for(var o=0;o<i.length;o++){var u=i[o];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(r,u.key,u)}}function _createClass(r,i,o){return i&&_defineProperties(r.prototype,i),o&&_defineProperties(r,o),r}function _defineProperty(r,i,o){return i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r}function ownKeys(r,i){var o=Object.keys(r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(r);i&&(u=u.filter((function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),o.push.apply(o,u)}return o}function _objectSpread2(r){for(var i=1;i<arguments.length;i++){var o=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(o),!0).forEach((function(i){_defineProperty(r,i,o[i])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach((function(i){Object.defineProperty(r,i,Object.getOwnPropertyDescriptor(o,i))}))}return r}function _inherits(r,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(i&&i.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),i&&_setPrototypeOf(r,i)}function _getPrototypeOf(r){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(r){return r.__proto__||Object.getPrototypeOf(r)},_getPrototypeOf(r)}function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}function _assertThisInitialized(r){if(void 0===r)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}function _possibleConstructorReturn(r,i){return!i||"object"!=typeof i&&"function"!=typeof i?_assertThisInitialized(r):i}function _createSuper(r){var i=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(r){return!1}}();return function _createSuperInternal(){var o,u=_getPrototypeOf(r);if(i){var p=_getPrototypeOf(this).constructor;o=Reflect.construct(u,arguments,p)}else o=u.apply(this,arguments);return _possibleConstructorReturn(this,o)}}function _slicedToArray(r,i){return function _arrayWithHoles(r){if(Array.isArray(r))return r}(r)||function _iterableToArrayLimit(r,i){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(r)))return;var o=[],u=!0,p=!1,g=void 0;try{for(var y,w=r[Symbol.iterator]();!(u=(y=w.next()).done)&&(o.push(y.value),!i||o.length!==i);u=!0);}catch(r){p=!0,g=r}finally{try{u||null==w.return||w.return()}finally{if(p)throw g}}return o}(r,i)||_unsupportedIterableToArray(r,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(r){return function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}(r)||function _iterableToArray(r){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(r))return Array.from(r)}(r)||_unsupportedIterableToArray(r)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(r,i){if(r){if("string"==typeof r)return _arrayLikeToArray(r,i);var o=Object.prototype.toString.call(r).slice(8,-1);return"Object"===o&&r.constructor&&(o=r.constructor.name),"Map"===o||"Set"===o?Array.from(r):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(r,i):void 0}}function _arrayLikeToArray(r,i){(null==i||i>r.length)&&(i=r.length);for(var o=0,u=new Array(i);o<i;o++)u[o]=r[o];return u}function _createForOfIteratorHelper(r,i){var o;if("undefined"==typeof Symbol||null==r[Symbol.iterator]){if(Array.isArray(r)||(o=_unsupportedIterableToArray(r))||i&&r&&"number"==typeof r.length){o&&(r=o);var u=0,p=function F(){};return{s:p,n:function n(){return u>=r.length?{done:!0}:{done:!1,value:r[u++]}},e:function e(r){throw r},f:p}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var g,y=!0,w=!1;return{s:function s(){o=r[Symbol.iterator]()},n:function n(){var r=o.next();return y=r.done,r},e:function e(r){w=!0,g=r},f:function f(){try{y||null==o.return||o.return()}finally{if(w)throw g}}}}var O=function(){function PDFAbstractReference(){_classCallCheck(this,PDFAbstractReference)}return _createClass(PDFAbstractReference,[{key:"toString",value:function toString(){throw new Error("Must be implemented by subclasses")}}]),PDFAbstractReference}(),I=function(){function PDFTree(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,PDFTree),this._items={},this.limits="boolean"!=typeof r.limits||r.limits}return _createClass(PDFTree,[{key:"add",value:function add(r,i){return this._items[r]=i}},{key:"get",value:function get(r){return this._items[r]}},{key:"toString",value:function toString(){var r=this,i=Object.keys(this._items).sort((function(i,o){return r._compareKeys(i,o)})),o=["<<"];if(this.limits&&i.length>1){var u=i[0],p=i[i.length-1];o.push("  /Limits ".concat(W.convert([this._dataForKey(u),this._dataForKey(p)])))}o.push("  /".concat(this._keysName()," ["));var g,y=_createForOfIteratorHelper(i);try{for(y.s();!(g=y.n()).done;){var w=g.value;o.push("    ".concat(W.convert(this._dataForKey(w))," ").concat(W.convert(this._items[w])))}}catch(r){y.e(r)}finally{y.f()}return o.push("]"),o.push(">>"),o.join("\n")}},{key:"_compareKeys",value:function _compareKeys(){throw new Error("Must be implemented by subclasses")}},{key:"_keysName",value:function _keysName(){throw new Error("Must be implemented by subclasses")}},{key:"_dataForKey",value:function _dataForKey(){throw new Error("Must be implemented by subclasses")}}]),PDFTree}(),B=function pad(r,i){return(Array(i+1).join("0")+r).slice(-i)},R=/[\n\r\t\b\f()\\]/g,D={"\n":"\\n","\r":"\\r","\t":"\\t","\b":"\\b","\f":"\\f","\\":"\\\\","(":"\\(",")":"\\)"},N=function swapBytes(r){var i=r.length;if(1&i)throw new Error("Buffer length must be even");for(var o=0,u=i-1;o<u;o+=2){var p=r[o];r[o]=r[o+1],r[o+1]=p}return r},W=function(){function PDFObject(){_classCallCheck(this,PDFObject)}return _createClass(PDFObject,null,[{key:"convert",value:function convert(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof r)return"/".concat(r);if(r instanceof String){for(var o,p=r,g=!1,y=0,w=p.length;y<w;y++)if(p.charCodeAt(y)>127){g=!0;break}return o=g?N(u.from("\ufeff".concat(p),"utf16le")):u.from(p.valueOf(),"ascii"),p=(p=i?i(o).toString("binary"):o.toString("binary")).replace(R,(function(r){return D[r]})),"(".concat(p,")")}if(u.isBuffer(r))return"<".concat(r.toString("hex"),">");if(r instanceof O||r instanceof I)return r.toString();if(r instanceof Date){var _="D:".concat(B(r.getUTCFullYear(),4))+B(r.getUTCMonth()+1,2)+B(r.getUTCDate(),2)+B(r.getUTCHours(),2)+B(r.getUTCMinutes(),2)+B(r.getUTCSeconds(),2)+"Z";return i&&(_=(_=i(u.from(_,"ascii")).toString("binary")).replace(R,(function(r){return D[r]}))),"(".concat(_,")")}if(Array.isArray(r)){var x=r.map((function(r){return PDFObject.convert(r,i)})).join(" ");return"[".concat(x,"]")}if("[object Object]"==={}.toString.call(r)){var k=["<<"];for(var P in r){var W=r[P];k.push("/".concat(P," ").concat(PDFObject.convert(W,i)))}return k.push(">>"),k.join("\n")}return"number"==typeof r?PDFObject.number(r):"".concat(r)}},{key:"number",value:function number(r){if(r>-1e21&&r<1e21)return Math.round(1e6*r)/1e6;throw new Error("unsupported number: ".concat(r))}}]),PDFObject}(),U=function(r){_inherits(PDFReference,r);var i=_createSuper(PDFReference);function PDFReference(r,o){var u,p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return _classCallCheck(this,PDFReference),(u=i.call(this)).document=r,u.id=o,u.data=p,u.gen=0,u.compress=u.document.compress&&!u.data.Filter,u.uncompressedLength=0,u.buffer=[],u}return _createClass(PDFReference,[{key:"write",value:function write(r){if(u.isBuffer(r)||(r=u.from(r+"\n","binary")),this.uncompressedLength+=r.length,null==this.data.Length&&(this.data.Length=0),this.buffer.push(r),this.data.Length+=r.length,this.compress)return this.data.Filter="FlateDecode"}},{key:"end",value:function end(r){return r&&this.write(r),this.finalize()}},{key:"finalize",value:function finalize(){this.offset=this.document._offset;var r=this.document._security?this.document._security.getEncryptFn(this.id,this.gen):null;this.buffer.length&&(this.buffer=u.concat(this.buffer),this.compress&&(this.buffer=g.default.deflateSync(this.buffer)),r&&(this.buffer=r(this.buffer)),this.data.Length=this.buffer.length),this.document._write("".concat(this.id," ").concat(this.gen," obj")),this.document._write(W.convert(this.data,r)),this.buffer.length&&(this.document._write("stream"),this.document._write(this.buffer),this.buffer=[],this.document._write("\nendstream")),this.document._write("endobj"),this.document._refEnd(this)}},{key:"toString",value:function toString(){return"".concat(this.id," ").concat(this.gen," R")}}]),PDFReference}(O),j={top:72,left:72,bottom:72,right:72},G={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},X=function(){function PDFPage(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,PDFPage),this.document=r,this.size=i.size||"letter",this.layout=i.layout||"portrait","number"==typeof i.margin?this.margins={top:i.margin,left:i.margin,bottom:i.margin,right:i.margin}:this.margins=i.margins||j;var o=Array.isArray(this.size)?this.size:G[this.size.toUpperCase()];this.width=o["portrait"===this.layout?0:1],this.height=o["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources}),this.markings=[]}return _createClass(PDFPage,[{key:"maxY",value:function maxY(){return this.height-this.margins.bottom}},{key:"write",value:function write(r){return this.content.write(r)}},{key:"end",value:function end(){return this.dictionary.end(),this.resources.end(),this.content.end()}},{key:"fonts",get:function get(){var r=this.resources.data;return null!=r.Font?r.Font:r.Font={}}},{key:"xobjects",get:function get(){var r=this.resources.data;return null!=r.XObject?r.XObject:r.XObject={}}},{key:"ext_gstates",get:function get(){var r=this.resources.data;return null!=r.ExtGState?r.ExtGState:r.ExtGState={}}},{key:"patterns",get:function get(){var r=this.resources.data;return null!=r.Pattern?r.Pattern:r.Pattern={}}},{key:"colorSpaces",get:function get(){var r=this.resources.data;return r.ColorSpace||(r.ColorSpace={})}},{key:"annotations",get:function get(){var r=this.dictionary.data;return null!=r.Annots?r.Annots:r.Annots=[]}},{key:"structParentTreeKey",get:function get(){var r=this.dictionary.data;return null!=r.StructParents?r.StructParents:r.StructParents=this.document.createStructParentTreeNextKey()}}]),PDFPage}(),K=function(r){_inherits(PDFNameTree,r);var i=_createSuper(PDFNameTree);function PDFNameTree(){return _classCallCheck(this,PDFNameTree),i.apply(this,arguments)}return _createClass(PDFNameTree,[{key:"_compareKeys",value:function _compareKeys(r,i){return r.localeCompare(i)}},{key:"_keysName",value:function _keysName(){return"Names"}},{key:"_dataForKey",value:function _dataForKey(r){return new String(r)}}]),PDFNameTree}(I);function inRange(r,i){if(r<i[0])return!1;for(var o=0,u=i.length/2;o<=u;){var p=Math.floor((o+u)/2),g=2*p;if(r>=i[g]&&r<=i[g+1])return!0;r>i[g+1]?o=p+1:u=p-1}return!1}var Y=[545,545,564,591,686,687,751,767,848,863,880,883,886,889,891,893,895,899,907,907,909,909,930,930,975,975,1015,1023,1159,1159,1231,1231,1270,1271,1274,1279,1296,1328,1367,1368,1376,1376,1416,1416,1419,1424,1442,1442,1466,1466,1477,1487,1515,1519,1525,1547,1549,1562,1564,1566,1568,1568,1595,1599,1622,1631,1774,1775,1791,1791,1806,1806,1837,1839,1867,1919,1970,2304,2308,2308,2362,2363,2382,2383,2389,2391,2417,2432,2436,2436,2445,2446,2449,2450,2473,2473,2481,2481,2483,2485,2490,2491,2493,2493,2501,2502,2505,2506,2510,2518,2520,2523,2526,2526,2532,2533,2555,2561,2563,2564,2571,2574,2577,2578,2601,2601,2609,2609,2612,2612,2615,2615,2618,2619,2621,2621,2627,2630,2633,2634,2638,2648,2653,2653,2655,2661,2677,2688,2692,2692,2700,2700,2702,2702,2706,2706,2729,2729,2737,2737,2740,2740,2746,2747,2758,2758,2762,2762,2766,2767,2769,2783,2785,2789,2800,2816,2820,2820,2829,2830,2833,2834,2857,2857,2865,2865,2868,2869,2874,2875,2884,2886,2889,2890,2894,2901,2904,2907,2910,2910,2914,2917,2929,2945,2948,2948,2955,2957,2961,2961,2966,2968,2971,2971,2973,2973,2976,2978,2981,2983,2987,2989,2998,2998,3002,3005,3011,3013,3017,3017,3022,3030,3032,3046,3059,3072,3076,3076,3085,3085,3089,3089,3113,3113,3124,3124,3130,3133,3141,3141,3145,3145,3150,3156,3159,3167,3170,3173,3184,3201,3204,3204,3213,3213,3217,3217,3241,3241,3252,3252,3258,3261,3269,3269,3273,3273,3278,3284,3287,3293,3295,3295,3298,3301,3312,3329,3332,3332,3341,3341,3345,3345,3369,3369,3386,3389,3396,3397,3401,3401,3406,3414,3416,3423,3426,3429,3440,3457,3460,3460,3479,3481,3506,3506,3516,3516,3518,3519,3527,3529,3531,3534,3541,3541,3543,3543,3552,3569,3573,3584,3643,3646,3676,3712,3715,3715,3717,3718,3721,3721,3723,3724,3726,3731,3736,3736,3744,3744,3748,3748,3750,3750,3752,3753,3756,3756,3770,3770,3774,3775,3781,3781,3783,3783,3790,3791,3802,3803,3806,3839,3912,3912,3947,3952,3980,3983,3992,3992,4029,4029,4045,4046,4048,4095,4130,4130,4136,4136,4139,4139,4147,4149,4154,4159,4186,4255,4294,4303,4345,4346,4348,4351,4442,4446,4515,4519,4602,4607,4615,4615,4679,4679,4681,4681,4686,4687,4695,4695,4697,4697,4702,4703,4743,4743,4745,4745,4750,4751,4783,4783,4785,4785,4790,4791,4799,4799,4801,4801,4806,4807,4815,4815,4823,4823,4847,4847,4879,4879,4881,4881,4886,4887,4895,4895,4935,4935,4955,4960,4989,5023,5109,5120,5751,5759,5789,5791,5873,5887,5901,5901,5909,5919,5943,5951,5972,5983,5997,5997,6001,6001,6004,6015,6109,6111,6122,6143,6159,6159,6170,6175,6264,6271,6314,7679,7836,7839,7930,7935,7958,7959,7966,7967,8006,8007,8014,8015,8024,8024,8026,8026,8028,8028,8030,8030,8062,8063,8117,8117,8133,8133,8148,8149,8156,8156,8176,8177,8181,8181,8191,8191,8275,8278,8280,8286,8292,8297,8306,8307,8335,8351,8370,8399,8427,8447,8507,8508,8524,8530,8580,8591,9167,9215,9255,9279,9291,9311,9471,9471,9748,9749,9752,9752,9854,9855,9866,9984,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10079,10080,10133,10135,10160,10160,10175,10191,10220,10223,11008,11903,11930,11930,12020,12031,12246,12271,12284,12287,12352,12352,12439,12440,12544,12548,12589,12592,12687,12687,12728,12783,12829,12831,12868,12880,12924,12926,13004,13007,13055,13055,13175,13178,13278,13279,13311,13311,19894,19967,40870,40959,42125,42127,42183,44031,55204,55295,64046,64047,64107,64255,64263,64274,64280,64284,64311,64311,64317,64317,64319,64319,64322,64322,64325,64325,64434,64466,64832,64847,64912,64913,64968,64975,65021,65023,65040,65055,65060,65071,65095,65096,65107,65107,65127,65127,65132,65135,65141,65141,65277,65278,65280,65280,65471,65473,65480,65481,65488,65489,65496,65497,65501,65503,65511,65511,65519,65528,65536,66303,66335,66335,66340,66351,66379,66559,66598,66599,66638,118783,119030,119039,119079,119081,119262,119807,119893,119893,119965,119965,119968,119969,119971,119972,119975,119976,119981,119981,119994,119994,119996,119996,120001,120001,120004,120004,120070,120070,120075,120076,120085,120085,120093,120093,120122,120122,120127,120127,120133,120133,120135,120137,120145,120145,120484,120487,120778,120781,120832,131069,173783,194559,195102,196605,196608,262141,262144,327677,327680,393213,393216,458749,458752,524285,524288,589821,589824,655357,655360,720893,720896,786429,786432,851965,851968,917501,917504,917504,917506,917535,917632,983037],J=function isUnassignedCodePoint(r){return inRange(r,Y)},$=[173,173,847,847,6150,6150,6155,6155,6156,6156,6157,6157,8203,8203,8204,8204,8205,8205,8288,8288,65024,65024,65025,65025,65026,65026,65027,65027,65028,65028,65029,65029,65030,65030,65031,65031,65032,65032,65033,65033,65034,65034,65035,65035,65036,65036,65037,65037,65038,65038,65039,65039,65279,65279],ee=[160,160,5760,5760,8192,8192,8193,8193,8194,8194,8195,8195,8196,8196,8197,8197,8198,8198,8199,8199,8200,8200,8201,8201,8202,8202,8203,8203,8239,8239,8287,8287,12288,12288],te=[128,159,1757,1757,1807,1807,6158,6158,8204,8204,8205,8205,8232,8232,8233,8233,8288,8288,8289,8289,8290,8290,8291,8291,8298,8303,65279,65279,65529,65532,119155,119162],re=[64976,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1114110,1114111],ne=[0,31,127,127,832,832,833,833,8206,8206,8207,8207,8234,8234,8235,8235,8236,8236,8237,8237,8238,8238,8298,8298,8299,8299,8300,8300,8301,8301,8302,8302,8303,8303,12272,12283,55296,57343,57344,63743,65529,65529,65530,65530,65531,65531,65532,65532,65533,65533,917505,917505,917536,917631,983040,1048573,1048576,1114109],ie=function isProhibitedCharacter(r){return inRange(r,ee)||inRange(r,ne)||inRange(r,te)||inRange(r,re)},oe=[1470,1470,1472,1472,1475,1475,1488,1514,1520,1524,1563,1563,1567,1567,1569,1594,1600,1610,1645,1647,1649,1749,1757,1757,1765,1766,1786,1790,1792,1805,1808,1808,1810,1836,1920,1957,1969,1969,8207,8207,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65020,65136,65140,65142,65276],ae=function isBidirectionalRAL(r){return inRange(r,oe)},se=[65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,544,546,563,592,685,688,696,699,705,720,721,736,740,750,750,890,890,902,902,904,906,908,908,910,929,931,974,976,1013,1024,1154,1162,1230,1232,1269,1272,1273,1280,1295,1329,1366,1369,1375,1377,1415,1417,1417,2307,2307,2309,2361,2365,2368,2377,2380,2384,2384,2392,2401,2404,2416,2434,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2494,2496,2503,2504,2507,2508,2519,2519,2524,2525,2527,2529,2534,2545,2548,2554,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2622,2624,2649,2652,2654,2654,2662,2671,2674,2676,2691,2691,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2752,2761,2761,2763,2764,2768,2768,2784,2784,2790,2799,2818,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2877,2878,2880,2880,2887,2888,2891,2892,2903,2903,2908,2909,2911,2913,2918,2928,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3006,3007,3009,3010,3014,3016,3018,3020,3031,3031,3047,3058,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3137,3140,3168,3169,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3262,3262,3264,3268,3271,3272,3274,3275,3285,3286,3294,3294,3296,3297,3302,3311,3330,3331,3333,3340,3342,3344,3346,3368,3370,3385,3390,3392,3398,3400,3402,3404,3415,3415,3424,3425,3430,3439,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3535,3537,3544,3551,3570,3572,3585,3632,3634,3635,3648,3654,3663,3675,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3792,3801,3804,3805,3840,3863,3866,3892,3894,3894,3896,3896,3902,3911,3913,3946,3967,3967,3973,3973,3976,3979,4030,4037,4039,4044,4047,4047,4096,4129,4131,4135,4137,4138,4140,4140,4145,4145,4152,4152,4160,4183,4256,4293,4304,4344,4347,4347,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,4961,4988,5024,5108,5121,5750,5761,5786,5792,5872,5888,5900,5902,5905,5920,5937,5941,5942,5952,5969,5984,5996,5998,6e3,6016,6070,6078,6085,6087,6088,6100,6106,6108,6108,6112,6121,6160,6169,6176,6263,6272,6312,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8206,8206,8305,8305,8319,8319,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8509,8511,8517,8521,8544,8579,9014,9082,9109,9109,9372,9449,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12588,12593,12686,12688,12727,12784,12828,12832,12867,12896,12923,12927,12976,12992,13003,13008,13054,13056,13174,13179,13277,13280,13310,13312,19893,19968,40869,40960,42124,44032,55203,55296,64045,64048,64106,64256,64262,64275,64279,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,66304,66334,66336,66339,66352,66378,66560,66597,66600,66637,118784,119029,119040,119078,119082,119142,119146,119154,119171,119172,119180,119209,119214,119261,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,12e4,120002,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120483,120488,120777,131072,173782,194560,195101,983040,1048573,1048576,1114109],ce=function isBidirectionalL(r){return inRange(r,se)},le=function isNonASCIISpaceCharacter(r){return inRange(r,ee)},ue=function isCommonlyMappedToNothing(r){return inRange(r,$)},fe=function getCodePoint(r){return r.codePointAt(0)},he=function first(r){return r[0]},de=function last(r){return r[r.length-1]};function toCodePoints(r){for(var i=[],o=r.length,u=0;u<o;u+=1){var p=r.charCodeAt(u);if(p>=55296&&p<=56319&&o>u+1){var g=r.charCodeAt(u+1);if(g>=56320&&g<=57343){i.push(1024*(p-55296)+g-56320+65536),u+=1;continue}}i.push(p)}return i}function saslprep(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"!=typeof r)throw new TypeError("Expected string.");if(0===r.length)return"";var o=toCodePoints(r).map((function(r){return le(r)?32:r})).filter((function(r){return!ue(r)})),u=String.fromCodePoint.apply(null,o).normalize("NFKC"),p=toCodePoints(u),g=p.some(ie);if(g)throw new Error("Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3");if(!0!==i.allowUnassigned){var y=p.some(J);if(y)throw new Error("Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5")}var w=p.some(ae),_=p.some(ce);if(w&&_)throw new Error("String must not contain RandALCat and LCat at the same time, see https://tools.ietf.org/html/rfc3454#section-6");var x=ae(fe(he(u))),k=ae(fe(de(u)));if(w&&(!x||!k))throw new Error("Bidirectional RandALCat character must be the first and the last character of the string, see https://tools.ietf.org/html/rfc3454#section-6");return u}var pe=function(){function PDFSecurity(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(_classCallCheck(this,PDFSecurity),!i.ownerPassword&&!i.userPassword)throw new Error("None of owner password and user password is defined.");this.document=r,this._setupEncryption(i)}return _createClass(PDFSecurity,null,[{key:"generateFileID",value:function generateFileID(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i="".concat(r.CreationDate.getTime(),"\n");for(var o in r)r.hasOwnProperty(o)&&(i+="".concat(o,": ").concat(r[o].valueOf(),"\n"));return wordArrayToBuffer(y.default.MD5(i))}},{key:"generateRandomWordArray",value:function generateRandomWordArray(r){return y.default.lib.WordArray.random(r)}},{key:"create",value:function create(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i.ownerPassword||i.userPassword?new PDFSecurity(r,i):null}}]),_createClass(PDFSecurity,[{key:"_setupEncryption",value:function _setupEncryption(r){switch(r.pdfVersion){case"1.4":case"1.5":this.version=2;break;case"1.6":case"1.7":this.version=4;break;case"1.7ext3":this.version=5;break;default:this.version=1}var i={Filter:"Standard"};switch(this.version){case 1:case 2:case 4:this._setupEncryptionV1V2V4(this.version,i,r);break;case 5:this._setupEncryptionV5(i,r)}this.dictionary=this.document.ref(i)}},{key:"_setupEncryptionV1V2V4",value:function _setupEncryptionV1V2V4(r,i,o){var u,p;switch(r){case 1:u=2,this.keyBits=40,p=function getPermissionsR2(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=-64;r.printing&&(i|=4);r.modifying&&(i|=8);r.copying&&(i|=16);r.annotating&&(i|=32);return i}(o.permissions);break;case 2:u=3,this.keyBits=128,p=getPermissionsR3(o.permissions);break;case 4:u=4,this.keyBits=128,p=getPermissionsR3(o.permissions)}var g,w=processPasswordR2R3R4(o.userPassword),_=o.ownerPassword?processPasswordR2R3R4(o.ownerPassword):w,x=function getOwnerPasswordR2R3R4(r,i,o,u){for(var p=u,g=r>=3?51:1,w=0;w<g;w++)p=y.default.MD5(p);var _=p.clone();_.sigBytes=i/8;var x=o;g=r>=3?20:1;for(var k=0;k<g;k++){for(var P=Math.ceil(_.sigBytes/4),O=0;O<P;O++)_.words[O]=p.words[O]^(k|k<<8|k<<16|k<<24);x=y.default.RC4.encrypt(x,_).ciphertext}return x}(u,this.keyBits,w,_);this.encryptionKey=function getEncryptionKeyR2R3R4(r,i,o,u,p,g){for(var w=u.clone().concat(p).concat(y.default.lib.WordArray.create([lsbFirstWord(g)],4)).concat(y.default.lib.WordArray.create(o)),_=r>=3?51:1,x=0;x<_;x++)(w=y.default.MD5(w)).sigBytes=i/8;return w}(u,this.keyBits,this.document._id,w,x,p),g=2===u?function getUserPasswordR2(r){return y.default.RC4.encrypt(processPasswordR2R3R4(),r).ciphertext}(this.encryptionKey):function getUserPasswordR3R4(r,i){for(var o=i.clone(),u=y.default.MD5(processPasswordR2R3R4().concat(y.default.lib.WordArray.create(r))),p=0;p<20;p++){for(var g=Math.ceil(o.sigBytes/4),w=0;w<g;w++)o.words[w]=i.words[w]^(p|p<<8|p<<16|p<<24);u=y.default.RC4.encrypt(u,o).ciphertext}return u.concat(y.default.lib.WordArray.create(null,16))}(this.document._id,this.encryptionKey),i.V=r,r>=2&&(i.Length=this.keyBits),4===r&&(i.CF={StdCF:{AuthEvent:"DocOpen",CFM:"AESV2",Length:this.keyBits/8}},i.StmF="StdCF",i.StrF="StdCF"),i.R=u,i.O=wordArrayToBuffer(x),i.U=wordArrayToBuffer(g),i.P=p}},{key:"_setupEncryptionV5",value:function _setupEncryptionV5(r,i){this.keyBits=256;var o=getPermissionsR3(i.permissions),u=processPasswordR5(i.userPassword),p=i.ownerPassword?processPasswordR5(i.ownerPassword):u;this.encryptionKey=function getEncryptionKeyR5(r){return r(32)}(PDFSecurity.generateRandomWordArray);var g=function getUserPasswordR5(r,i){var o=i(8),u=i(8);return y.default.SHA256(r.clone().concat(o)).concat(o).concat(u)}(u,PDFSecurity.generateRandomWordArray),w=function getUserEncryptionKeyR5(r,i,o){var u=y.default.SHA256(r.clone().concat(i)),p={mode:y.default.mode.CBC,padding:y.default.pad.NoPadding,iv:y.default.lib.WordArray.create(null,16)};return y.default.AES.encrypt(o,u,p).ciphertext}(u,y.default.lib.WordArray.create(g.words.slice(10,12),8),this.encryptionKey),_=function getOwnerPasswordR5(r,i,o){var u=o(8),p=o(8);return y.default.SHA256(r.clone().concat(u).concat(i)).concat(u).concat(p)}(p,g,PDFSecurity.generateRandomWordArray),x=function getOwnerEncryptionKeyR5(r,i,o,u){var p=y.default.SHA256(r.clone().concat(i).concat(o)),g={mode:y.default.mode.CBC,padding:y.default.pad.NoPadding,iv:y.default.lib.WordArray.create(null,16)};return y.default.AES.encrypt(u,p,g).ciphertext}(p,y.default.lib.WordArray.create(_.words.slice(10,12),8),g,this.encryptionKey),k=function getEncryptedPermissionsR5(r,i,o){var u=y.default.lib.WordArray.create([lsbFirstWord(r),4294967295,1415668834],12).concat(o(4)),p={mode:y.default.mode.ECB,padding:y.default.pad.NoPadding};return y.default.AES.encrypt(u,i,p).ciphertext}(o,this.encryptionKey,PDFSecurity.generateRandomWordArray);r.V=5,r.Length=this.keyBits,r.CF={StdCF:{AuthEvent:"DocOpen",CFM:"AESV3",Length:this.keyBits/8}},r.StmF="StdCF",r.StrF="StdCF",r.R=5,r.O=wordArrayToBuffer(_),r.OE=wordArrayToBuffer(x),r.U=wordArrayToBuffer(g),r.UE=wordArrayToBuffer(w),r.P=o,r.Perms=wordArrayToBuffer(k)}},{key:"getEncryptFn",value:function getEncryptFn(r,i){var o,u;if(this.version<5&&(o=this.encryptionKey.clone().concat(y.default.lib.WordArray.create([(255&r)<<24|(65280&r)<<8|r>>8&65280|255&i,(65280&i)<<16],5))),1===this.version||2===this.version){var p=y.default.MD5(o);return p.sigBytes=Math.min(16,this.keyBits/8+5),function(r){return wordArrayToBuffer(y.default.RC4.encrypt(y.default.lib.WordArray.create(r),p).ciphertext)}}u=4===this.version?y.default.MD5(o.concat(y.default.lib.WordArray.create([1933667412],4))):this.encryptionKey;var g=PDFSecurity.generateRandomWordArray(16),w={mode:y.default.mode.CBC,padding:y.default.pad.Pkcs7,iv:g};return function(r){return wordArrayToBuffer(g.clone().concat(y.default.AES.encrypt(y.default.lib.WordArray.create(r),u,w).ciphertext))}}},{key:"end",value:function end(){this.dictionary.end()}}]),PDFSecurity}();function getPermissionsR3(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=-3904;return"lowResolution"===r.printing&&(i|=4),"highResolution"===r.printing&&(i|=2052),r.modifying&&(i|=8),r.copying&&(i|=16),r.annotating&&(i|=32),r.fillingForms&&(i|=256),r.contentAccessibility&&(i|=512),r.documentAssembly&&(i|=1024),i}function processPasswordR2R3R4(){for(var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=u.alloc(32),o=r.length,p=0;p<o&&p<32;){var g=r.charCodeAt(p);if(g>255)throw new Error("Password contains one or more invalid characters.");i[p]=g,p++}for(;p<32;)i[p]=_e[p-o],p++;return y.default.lib.WordArray.create(i)}function processPasswordR5(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";r=unescape(encodeURIComponent(saslprep(r)));for(var i=Math.min(127,r.length),o=u.alloc(i),p=0;p<i;p++)o[p]=r.charCodeAt(p);return y.default.lib.WordArray.create(o)}function lsbFirstWord(r){return(255&r)<<24|(65280&r)<<8|r>>8&65280|r>>24&255}function wordArrayToBuffer(r){for(var i=[],o=0;o<r.sigBytes;o++)i.push(r.words[Math.floor(o/4)]>>8*(3-o%4)&255);return u.from(i)}var ge,ye,ve,me,be,we,_e=[40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122],Se=W.number,xe=function(){function PDFGradient(r){_classCallCheck(this,PDFGradient),this.doc=r,this.stops=[],this.embedded=!1,this.transform=[1,0,0,1,0,0]}return _createClass(PDFGradient,[{key:"stop",value:function stop(r,i,o){if(null==o&&(o=1),i=this.doc._normalizeColor(i),0===this.stops.length)if(3===i.length)this._colorSpace="DeviceRGB";else if(4===i.length)this._colorSpace="DeviceCMYK";else{if(1!==i.length)throw new Error("Unknown color space");this._colorSpace="DeviceGray"}else if("DeviceRGB"===this._colorSpace&&3!==i.length||"DeviceCMYK"===this._colorSpace&&4!==i.length||"DeviceGray"===this._colorSpace&&1!==i.length)throw new Error("All gradient stops must use the same color space");return o=Math.max(0,Math.min(1,o)),this.stops.push([r,i,o]),this}},{key:"setTransform",value:function setTransform(r,i,o,u,p,g){return this.transform=[r,i,o,u,p,g],this}},{key:"embed",value:function embed(r){var i,o=this.stops.length;if(0!==o){this.embedded=!0,this.matrix=r;var u=this.stops[o-1];u[0]<1&&this.stops.push([1,u[1],u[2]]);for(var p=[],g=[],y=[],w=0;w<o-1;w++)g.push(0,1),w+2!==o&&p.push(this.stops[w+1][0]),i=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[w+0][1],C1:this.stops[w+1][1],N:1}),y.push(i),i.end();1===o?i=y[0]:(i=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:y,Bounds:p,Encode:g})).end(),this.id="Sh".concat(++this.doc._gradCount);var _=this.shader(i);_.end();var x=this.doc.ref({Type:"Pattern",PatternType:2,Shading:_,Matrix:this.matrix.map(Se)});if(x.end(),this.stops.some((function(r){return r[2]<1}))){var k=this.opacityGradient();k._colorSpace="DeviceGray";var P,O=_createForOfIteratorHelper(this.stops);try{for(O.s();!(P=O.n()).done;){var I=P.value;k.stop(I[0],[I[2]])}}catch(r){O.e(r)}finally{O.f()}k=k.embed(this.matrix);var B=[0,0,this.doc.page.width,this.doc.page.height],R=this.doc.ref({Type:"XObject",Subtype:"Form",FormType:1,BBox:B,Group:{Type:"Group",S:"Transparency",CS:"DeviceGray"},Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:k}}});R.write("/Pattern cs /Sh1 scn"),R.end("".concat(B.join(" ")," re f"));var D=this.doc.ref({Type:"ExtGState",SMask:{Type:"Mask",S:"Luminosity",G:R}});D.end();var N=this.doc.ref({Type:"Pattern",PatternType:1,PaintType:1,TilingType:2,BBox:B,XStep:B[2],YStep:B[3],Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:x},ExtGState:{Gs1:D}}});N.write("/Gs1 gs /Pattern cs /Sh1 scn"),N.end("".concat(B.join(" ")," re f")),this.doc.page.patterns[this.id]=N}else this.doc.page.patterns[this.id]=x;return x}}},{key:"apply",value:function apply(r){var i=_slicedToArray(this.doc._ctm,6),o=i[0],u=i[1],p=i[2],g=i[3],y=i[4],w=i[5],_=_slicedToArray(this.transform,6),x=_[0],k=_[1],P=_[2],O=_[3],I=_[4],B=_[5],R=[o*x+p*k,u*x+g*k,o*P+p*O,u*P+g*O,o*I+p*B+y,u*I+g*B+w];this.embedded&&R.join(" ")===this.matrix.join(" ")||this.embed(R),this.doc._setColorSpace("Pattern",r);var D=r?"SCN":"scn";return this.doc.addContent("/".concat(this.id," ").concat(D))}}]),PDFGradient}(),Ce={PDFGradient:xe,PDFLinearGradient:function(r){_inherits(PDFLinearGradient,r);var i=_createSuper(PDFLinearGradient);function PDFLinearGradient(r,o,u,p,g){var y;return _classCallCheck(this,PDFLinearGradient),(y=i.call(this,r)).x1=o,y.y1=u,y.x2=p,y.y2=g,y}return _createClass(PDFLinearGradient,[{key:"shader",value:function shader(r){return this.doc.ref({ShadingType:2,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.x2,this.y2],Function:r,Extend:[!0,!0]})}},{key:"opacityGradient",value:function opacityGradient(){return new PDFLinearGradient(this.doc,this.x1,this.y1,this.x2,this.y2)}}]),PDFLinearGradient}(xe),PDFRadialGradient:function(r){_inherits(PDFRadialGradient,r);var i=_createSuper(PDFRadialGradient);function PDFRadialGradient(r,o,u,p,g,y,w){var _;return _classCallCheck(this,PDFRadialGradient),(_=i.call(this,r)).doc=r,_.x1=o,_.y1=u,_.r1=p,_.x2=g,_.y2=y,_.r2=w,_}return _createClass(PDFRadialGradient,[{key:"shader",value:function shader(r){return this.doc.ref({ShadingType:3,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.r1,this.x2,this.y2,this.r2],Function:r,Extend:[!0,!0]})}},{key:"opacityGradient",value:function opacityGradient(){return new PDFRadialGradient(this.doc,this.x1,this.y1,this.r1,this.x2,this.y2,this.r2)}}]),PDFRadialGradient}(xe)},ke=["DeviceCMYK","DeviceRGB"],Pe=function(){function PDFTilingPattern(r,i,o,u,p){_classCallCheck(this,PDFTilingPattern),this.doc=r,this.bBox=i,this.xStep=o,this.yStep=u,this.stream=p}return _createClass(PDFTilingPattern,[{key:"createPattern",value:function createPattern(){var r=this.doc.ref();r.end();var i=_slicedToArray(this.doc._ctm,6),o=i[0],u=i[1],p=i[2],g=i[3],y=[1*o+0*p,1*u+0*g,0*o+1*p,0*u+1*g,0*o+0*p+i[4],0*u+0*g+i[5]],w=this.doc.ref({Type:"Pattern",PatternType:1,PaintType:2,TilingType:2,BBox:this.bBox,XStep:this.xStep,YStep:this.yStep,Matrix:y.map((function(r){return+r.toFixed(5)})),Resources:r});return w.end(this.stream),w}},{key:"embedPatternColorSpaces",value:function embedPatternColorSpaces(){var r=this;ke.forEach((function(i){var o=r.getPatternColorSpaceId(i);if(!r.doc.page.colorSpaces[o]){var u=r.doc.ref(["Pattern",i]);u.end(),r.doc.page.colorSpaces[o]=u}}))}},{key:"getPatternColorSpaceId",value:function getPatternColorSpaceId(r){return"CsP".concat(r)}},{key:"embed",value:function embed(){this.id||(this.doc._patternCount=this.doc._patternCount+1,this.id="P"+this.doc._patternCount,this.pattern=this.createPattern()),this.doc.page.patterns[this.id]||(this.doc.page.patterns[this.id]=this.pattern)}},{key:"apply",value:function apply(r,i){this.embedPatternColorSpaces(),this.embed();var o=this.doc._normalizeColor(i);if(!o)throw Error("invalid pattern color. (value: ".concat(i,")"));var u=this.getPatternColorSpaceId(this.doc._getColorSpace(o));this.doc._setColorSpace(u,r);var p=r?"SCN":"scn";return this.doc.addContent("".concat(o.join(" ")," /").concat(this.id," ").concat(p))}}]),PDFTilingPattern}(),Ae=Ce.PDFGradient,Ee=Ce.PDFLinearGradient,Te=Ce.PDFRadialGradient,Oe={PDFTilingPattern:Pe}.PDFTilingPattern,Ie={initColor:function initColor(){return this._opacityRegistry={},this._opacityCount=0,this._patternCount=0,this._gradCount=0},_normalizeColor:function _normalizeColor(r){if("string"==typeof r)if("#"===r.charAt(0)){4===r.length&&(r=r.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3"));var i=parseInt(r.slice(1),16);r=[i>>16,i>>8&255,255&i]}else Be[r]&&(r=Be[r]);return Array.isArray(r)?(3===r.length?r=r.map((function(r){return r/255})):4===r.length&&(r=r.map((function(r){return r/100}))),r):null},_setColor:function _setColor(r,i){return r instanceof Ae?(r.apply(i),!0):Array.isArray(r)&&r[0]instanceof Oe?(r[0].apply(i,r[1]),!0):this._setColorCore(r,i)},_setColorCore:function _setColorCore(r,i){if(!(r=this._normalizeColor(r)))return!1;var o=i?"SCN":"scn",u=this._getColorSpace(r);return this._setColorSpace(u,i),r=r.join(" "),this.addContent("".concat(r," ").concat(o)),!0},_setColorSpace:function _setColorSpace(r,i){var o=i?"CS":"cs";return this.addContent("/".concat(r," ").concat(o))},_getColorSpace:function _getColorSpace(r){return 4===r.length?"DeviceCMYK":"DeviceRGB"},fillColor:function fillColor(r,i){return this._setColor(r,!1)&&this.fillOpacity(i),this._fillColor=[r,i],this},strokeColor:function strokeColor(r,i){return this._setColor(r,!0)&&this.strokeOpacity(i),this},opacity:function opacity(r){return this._doOpacity(r,r),this},fillOpacity:function fillOpacity(r){return this._doOpacity(r,null),this},strokeOpacity:function strokeOpacity(r){return this._doOpacity(null,r),this},_doOpacity:function _doOpacity(r,i){var o,u;if(null!=r||null!=i){null!=r&&(r=Math.max(0,Math.min(1,r))),null!=i&&(i=Math.max(0,Math.min(1,i)));var p="".concat(r,"_").concat(i);if(this._opacityRegistry[p]){var g=_slicedToArray(this._opacityRegistry[p],2);o=g[0],u=g[1]}else{o={Type:"ExtGState"},null!=r&&(o.ca=r),null!=i&&(o.CA=i),(o=this.ref(o)).end();var y=++this._opacityCount;u="Gs".concat(y),this._opacityRegistry[p]=[o,u]}return this.page.ext_gstates[u]=o,this.addContent("/".concat(u," gs"))}},linearGradient:function linearGradient(r,i,o,u){return new Ee(this,r,i,o,u)},radialGradient:function radialGradient(r,i,o,u,p,g){return new Te(this,r,i,o,u,p,g)},pattern:function pattern(r,i,o,u){return new Oe(this,r,i,o,u)}},Be={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};ge=ye=ve=me=be=we=0;var Fe={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0},Le={M:function M(r,i){return ge=i[0],ye=i[1],ve=me=null,be=ge,we=ye,r.moveTo(ge,ye)},m:function m(r,i){return ge+=i[0],ye+=i[1],ve=me=null,be=ge,we=ye,r.moveTo(ge,ye)},C:function C(r,i){return ge=i[4],ye=i[5],ve=i[2],me=i[3],r.bezierCurveTo.apply(r,_toConsumableArray(i))},c:function c(r,i){return r.bezierCurveTo(i[0]+ge,i[1]+ye,i[2]+ge,i[3]+ye,i[4]+ge,i[5]+ye),ve=ge+i[2],me=ye+i[3],ge+=i[4],ye+=i[5]},S:function S(r,i){return null===ve&&(ve=ge,me=ye),r.bezierCurveTo(ge-(ve-ge),ye-(me-ye),i[0],i[1],i[2],i[3]),ve=i[0],me=i[1],ge=i[2],ye=i[3]},s:function s(r,i){return null===ve&&(ve=ge,me=ye),r.bezierCurveTo(ge-(ve-ge),ye-(me-ye),ge+i[0],ye+i[1],ge+i[2],ye+i[3]),ve=ge+i[0],me=ye+i[1],ge+=i[2],ye+=i[3]},Q:function Q(r,i){return ve=i[0],me=i[1],ge=i[2],ye=i[3],r.quadraticCurveTo(i[0],i[1],ge,ye)},q:function q(r,i){return r.quadraticCurveTo(i[0]+ge,i[1]+ye,i[2]+ge,i[3]+ye),ve=ge+i[0],me=ye+i[1],ge+=i[2],ye+=i[3]},T:function T(r,i){return null===ve?(ve=ge,me=ye):(ve=ge-(ve-ge),me=ye-(me-ye)),r.quadraticCurveTo(ve,me,i[0],i[1]),ve=ge-(ve-ge),me=ye-(me-ye),ge=i[0],ye=i[1]},t:function t(r,i){return null===ve?(ve=ge,me=ye):(ve=ge-(ve-ge),me=ye-(me-ye)),r.quadraticCurveTo(ve,me,ge+i[0],ye+i[1]),ge+=i[0],ye+=i[1]},A:function A(r,i){return Re(r,ge,ye,i),ge=i[5],ye=i[6]},a:function a(r,i){return i[5]+=ge,i[6]+=ye,Re(r,ge,ye,i),ge=i[5],ye=i[6]},L:function L(r,i){return ge=i[0],ye=i[1],ve=me=null,r.lineTo(ge,ye)},l:function l(r,i){return ge+=i[0],ye+=i[1],ve=me=null,r.lineTo(ge,ye)},H:function H(r,i){return ge=i[0],ve=me=null,r.lineTo(ge,ye)},h:function h(r,i){return ge+=i[0],ve=me=null,r.lineTo(ge,ye)},V:function V(r,i){return ye=i[0],ve=me=null,r.lineTo(ge,ye)},v:function v(r,i){return ye+=i[0],ve=me=null,r.lineTo(ge,ye)},Z:function Z(r){return r.closePath(),ge=be,ye=we},z:function z(r){return r.closePath(),ge=be,ye=we}},Re=function solveArc(r,i,o,u){var p,g=_slicedToArray(u,7),y=g[0],w=g[1],_=g[2],x=g[3],k=g[4],P=g[5],O=g[6],I=_createForOfIteratorHelper(De(P,O,y,w,x,k,_,i,o));try{for(I.s();!(p=I.n()).done;){var B=p.value,R=Me.apply(void 0,_toConsumableArray(B));r.bezierCurveTo.apply(r,_toConsumableArray(R))}}catch(r){I.e(r)}finally{I.f()}},De=function arcToSegments(r,i,o,u,p,g,y,w,_){var x=y*(Math.PI/180),k=Math.sin(x),P=Math.cos(x);o=Math.abs(o),u=Math.abs(u);var O=(ve=P*(w-r)*.5+k*(_-i)*.5)*ve/(o*o)+(me=P*(_-i)*.5-k*(w-r)*.5)*me/(u*u);O>1&&(o*=O=Math.sqrt(O),u*=O);var I=P/o,B=k/o,R=-k/u,D=P/u,N=I*w+B*_,W=R*w+D*_,U=I*r+B*i,j=R*r+D*i,G=1/((U-N)*(U-N)+(j-W)*(j-W))-.25;G<0&&(G=0);var X=Math.sqrt(G);g===p&&(X=-X);var K=.5*(N+U)-X*(j-W),Y=.5*(W+j)+X*(U-N),J=Math.atan2(W-Y,N-K),$=Math.atan2(j-Y,U-K)-J;$<0&&1===g?$+=2*Math.PI:$>0&&0===g&&($-=2*Math.PI);for(var ee=Math.ceil(Math.abs($/(.5*Math.PI+.001))),te=[],re=0;re<ee;re++){var ne=J+re*$/ee,ie=J+(re+1)*$/ee;te[re]=[K,Y,ne,ie,o,u,k,P]}return te},Me=function segmentToBezier(r,i,o,u,p,g,y,w){var _=w*p,x=-y*g,k=y*p,P=w*g,O=.5*(u-o),I=8/3*Math.sin(.5*O)*Math.sin(.5*O)/Math.sin(O),B=r+Math.cos(o)-I*Math.sin(o),R=i+Math.sin(o)+I*Math.cos(o),D=r+Math.cos(u),N=i+Math.sin(u),W=D+I*Math.sin(u),U=N-I*Math.cos(u);return[_*B+x*R,k*B+P*R,_*W+x*U,k*W+P*U,_*D+x*N,k*D+P*N]},Ne=function(){function SVGPath(){_classCallCheck(this,SVGPath)}return _createClass(SVGPath,null,[{key:"apply",value:function apply(r,i){var o=function parse(r){var i,o,u=[],p=[],g="",y=!1,w=0,_=_createForOfIteratorHelper(r);try{for(_.s();!(o=_.n()).done;){var x=o.value;if(null!=Fe[x])w=Fe[x],i&&(g.length>0&&(p[p.length]=+g),u[u.length]={cmd:i,args:p},p=[],g="",y=!1),i=x;else if([" ",","].includes(x)||"-"===x&&g.length>0&&"e"!==g[g.length-1]||"."===x&&y){if(0===g.length)continue;p.length===w?(u[u.length]={cmd:i,args:p},p=[+g],"M"===i&&(i="L"),"m"===i&&(i="l")):p[p.length]=+g,y="."===x,g=["-","."].includes(x)?x:""}else g+=x,"."===x&&(y=!0)}}catch(r){_.e(r)}finally{_.f()}return g.length>0&&(p.length===w?(u[u.length]={cmd:i,args:p},p=[+g],"M"===i&&(i="L"),"m"===i&&(i="l")):p[p.length]=+g),u[u.length]={cmd:i,args:p},u}(i);!function apply(r,i){ge=ye=ve=me=be=we=0;for(var o=0;o<r.length;o++){var u=r[o];"function"==typeof Le[u.cmd]&&Le[u.cmd](i,u.args)}}(o,r)}}]),SVGPath}(),We=W.number,ze=(Math.sqrt(2)-1)/3*4,Ue={initVector:function initVector(){return this._ctm=[1,0,0,1,0,0],this._ctmStack=[]},save:function save(){return this._ctmStack.push(this._ctm.slice()),this.addContent("q")},restore:function restore(){return this._ctm=this._ctmStack.pop()||[1,0,0,1,0,0],this.addContent("Q")},closePath:function closePath(){return this.addContent("h")},lineWidth:function lineWidth(r){return this.addContent("".concat(We(r)," w"))},_CAP_STYLES:{BUTT:0,ROUND:1,SQUARE:2},lineCap:function lineCap(r){return"string"==typeof r&&(r=this._CAP_STYLES[r.toUpperCase()]),this.addContent("".concat(r," J"))},_JOIN_STYLES:{MITER:0,ROUND:1,BEVEL:2},lineJoin:function lineJoin(r){return"string"==typeof r&&(r=this._JOIN_STYLES[r.toUpperCase()]),this.addContent("".concat(r," j"))},miterLimit:function miterLimit(r){return this.addContent("".concat(We(r)," M"))},dash:function dash(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r;Array.isArray(r)||(r=[r,i.space||r]);var u=r.every((function(r){return Number.isFinite(r)&&r>0}));if(!u)throw new Error("dash(".concat(JSON.stringify(o),", ").concat(JSON.stringify(i),") invalid, lengths must be numeric and greater than zero"));return r=r.map(We).join(" "),this.addContent("[".concat(r,"] ").concat(We(i.phase||0)," d"))},undash:function undash(){return this.addContent("[] 0 d")},moveTo:function moveTo(r,i){return this.addContent("".concat(We(r)," ").concat(We(i)," m"))},lineTo:function lineTo(r,i){return this.addContent("".concat(We(r)," ").concat(We(i)," l"))},bezierCurveTo:function bezierCurveTo(r,i,o,u,p,g){return this.addContent("".concat(We(r)," ").concat(We(i)," ").concat(We(o)," ").concat(We(u)," ").concat(We(p)," ").concat(We(g)," c"))},quadraticCurveTo:function quadraticCurveTo(r,i,o,u){return this.addContent("".concat(We(r)," ").concat(We(i)," ").concat(We(o)," ").concat(We(u)," v"))},rect:function rect(r,i,o,u){return this.addContent("".concat(We(r)," ").concat(We(i)," ").concat(We(o)," ").concat(We(u)," re"))},roundedRect:function roundedRect(r,i,o,u,p){null==p&&(p=0);var g=(p=Math.min(p,.5*o,.5*u))*(1-ze);return this.moveTo(r+p,i),this.lineTo(r+o-p,i),this.bezierCurveTo(r+o-g,i,r+o,i+g,r+o,i+p),this.lineTo(r+o,i+u-p),this.bezierCurveTo(r+o,i+u-g,r+o-g,i+u,r+o-p,i+u),this.lineTo(r+p,i+u),this.bezierCurveTo(r+g,i+u,r,i+u-g,r,i+u-p),this.lineTo(r,i+p),this.bezierCurveTo(r,i+g,r+g,i,r+p,i),this.closePath()},ellipse:function ellipse(r,i,o,u){null==u&&(u=o);var p=o*ze,g=u*ze,y=(r-=o)+2*o,w=(i-=u)+2*u,_=r+o,x=i+u;return this.moveTo(r,x),this.bezierCurveTo(r,x-g,_-p,i,_,i),this.bezierCurveTo(_+p,i,y,x-g,y,x),this.bezierCurveTo(y,x+g,_+p,w,_,w),this.bezierCurveTo(_-p,w,r,x+g,r,x),this.closePath()},circle:function circle(r,i,o){return this.ellipse(r,i,o)},arc:function arc(r,i,o,u,p,g){null==g&&(g=!1);var y=2*Math.PI,w=.5*Math.PI,_=p-u;if(Math.abs(_)>y)_=y;else if(0!==_&&g!==_<0){_=(g?-1:1)*y+_}var x=Math.ceil(Math.abs(_)/w),k=_/x,P=k/w*ze*o,O=u,I=-Math.sin(O)*P,B=Math.cos(O)*P,R=r+Math.cos(O)*o,D=i+Math.sin(O)*o;this.moveTo(R,D);for(var N=0;N<x;N++){var W=R+I,U=D+B;O+=k,R=r+Math.cos(O)*o,D=i+Math.sin(O)*o;var j=R-(I=-Math.sin(O)*P),G=D-(B=Math.cos(O)*P);this.bezierCurveTo(W,U,j,G,R,D)}return this},polygon:function polygon(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];this.moveTo.apply(this,_toConsumableArray(i.shift()||[]));for(var u=0,p=i;u<p.length;u++){var g=p[u];this.lineTo.apply(this,_toConsumableArray(g||[]))}return this.closePath()},path:function path(r){return Ne.apply(this,r),this},_windingRule:function _windingRule(r){return/even-?odd/.test(r)?"*":""},fill:function fill(r,i){return/(even-?odd)|(non-?zero)/.test(r)&&(i=r,r=null),r&&this.fillColor(r),this.addContent("f".concat(this._windingRule(i)))},stroke:function stroke(r){return r&&this.strokeColor(r),this.addContent("S")},fillAndStroke:function fillAndStroke(r,i,o){null==i&&(i=r);var u=/(even-?odd)|(non-?zero)/;return u.test(r)&&(o=r,r=null),u.test(i)&&(o=i,i=r),r&&(this.fillColor(r),this.strokeColor(i)),this.addContent("B".concat(this._windingRule(o)))},clip:function clip(r){return this.addContent("W".concat(this._windingRule(r)," n"))},transform:function transform(r,i,o,u,p,g){var y=this._ctm,w=_slicedToArray(y,6),_=w[0],x=w[1],k=w[2],P=w[3],O=w[4],I=w[5];y[0]=_*r+k*i,y[1]=x*r+P*i,y[2]=_*o+k*u,y[3]=x*o+P*u,y[4]=_*p+k*g+O,y[5]=x*p+P*g+I;var B=[r,i,o,u,p,g].map((function(r){return We(r)})).join(" ");return this.addContent("".concat(B," cm"))},translate:function translate(r,i){return this.transform(1,0,0,1,r,i)},rotate:function rotate(r){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=r*Math.PI/180,p=Math.cos(u),g=Math.sin(u),y=i=0;if(null!=o.origin){var w=_slicedToArray(o.origin,2),_=(y=w[0])*p-(i=w[1])*g,x=y*g+i*p;y-=_,i-=x}return this.transform(p,g,-g,p,y,i)},scale:function scale(r,i){var o,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null==i&&(i=r),"object"==typeof i&&(u=i,i=r);var p=o=0;if(null!=u.origin){var g=_slicedToArray(u.origin,2);p=g[0],o=g[1],p-=r*p,o-=i*o}return this.transform(r,0,0,i,p,o)}},je={402:131,8211:150,8212:151,8216:145,8217:146,8218:130,8220:147,8221:148,8222:132,8224:134,8225:135,8226:149,8230:133,8364:128,8240:137,8249:139,8250:155,710:136,8482:153,338:140,339:156,732:152,352:138,353:154,376:159,381:142,382:158},Ge=".notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n  \nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n  \nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n  \ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n  \nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n  \nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n  \nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n  \nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis".split(/\s+/),Ve=function(){function AFMFont(r){_classCallCheck(this,AFMFont),this.contents=r,this.attributes={},this.glyphWidths={},this.boundingBoxes={},this.kernPairs={},this.parse(),this.charWidths=new Array(256);for(var i=0;i<=255;i++)this.charWidths[i]=this.glyphWidths[Ge[i]];this.bbox=this.attributes.FontBBox.split(/\s+/).map((function(r){return+r})),this.ascender=+(this.attributes.Ascender||0),this.descender=+(this.attributes.Descender||0),this.xHeight=+(this.attributes.XHeight||0),this.capHeight=+(this.attributes.CapHeight||0),this.lineGap=this.bbox[3]-this.bbox[1]-(this.ascender-this.descender)}return _createClass(AFMFont,null,[{key:"open",value:function open(r){return new AFMFont(P.readFileSync(r,"utf8"))}}]),_createClass(AFMFont,[{key:"parse",value:function parse(){var r,i="",o=_createForOfIteratorHelper(this.contents.split("\n"));try{for(o.s();!(r=o.n()).done;){var u,p,g=r.value;if(u=g.match(/^Start(\w+)/))i=u[1];else if(u=g.match(/^End(\w+)/))i="";else switch(i){case"FontMetrics":var y=(u=g.match(/(^\w+)\s+(.*)/))[1],w=u[2];(p=this.attributes[y])?(Array.isArray(p)||(p=this.attributes[y]=[p]),p.push(w)):this.attributes[y]=w;break;case"CharMetrics":if(!/^CH?\s/.test(g))continue;var _=g.match(/\bN\s+(\.?\w+)\s*;/)[1];this.glyphWidths[_]=+g.match(/\bWX\s+(\d+)\s*;/)[1];break;case"KernPairs":(u=g.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/))&&(this.kernPairs[u[1]+"\0"+u[2]]=parseInt(u[3]))}}}catch(r){o.e(r)}finally{o.f()}}},{key:"encodeText",value:function encodeText(r){for(var i=[],o=0,u=r.length;o<u;o++){var p=r.charCodeAt(o);p=je[p]||p,i.push(p.toString(16))}return i}},{key:"glyphsForString",value:function glyphsForString(r){for(var i=[],o=0,u=r.length;o<u;o++){var p=r.charCodeAt(o);i.push(this.characterToGlyph(p))}return i}},{key:"characterToGlyph",value:function characterToGlyph(r){return Ge[je[r]||r]||".notdef"}},{key:"widthOfGlyph",value:function widthOfGlyph(r){return this.glyphWidths[r]||0}},{key:"getKernPair",value:function getKernPair(r,i){return this.kernPairs[r+"\0"+i]||0}},{key:"advancesForGlyphs",value:function advancesForGlyphs(r){for(var i=[],o=0;o<r.length;o++){var u=r[o],p=r[o+1];i.push(this.widthOfGlyph(u)+this.getKernPair(u,p))}return i}}]),AFMFont}(),He=function(){function PDFFont(){_classCallCheck(this,PDFFont)}return _createClass(PDFFont,[{key:"encode",value:function encode(){throw new Error("Must be implemented by subclasses")}},{key:"widthOfString",value:function widthOfString(){throw new Error("Must be implemented by subclasses")}},{key:"ref",value:function ref(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()}},{key:"finalize",value:function finalize(){if(!this.embedded&&null!=this.dictionary)return this.embed(),this.embedded=!0}},{key:"embed",value:function embed(){throw new Error("Must be implemented by subclasses")}},{key:"lineHeight",value:function lineHeight(r,i){null==i&&(i=!1);var o=i?this.lineGap:0;return(this.ascender+o-this.descender)/1e3*r}}]),PDFFont}(),qe={Courier:function Courier(){return P.readFileSync("//data/Courier.afm","utf8")},"Courier-Bold":function CourierBold(){return P.readFileSync("//data/Courier-Bold.afm","utf8")},"Courier-Oblique":function CourierOblique(){return P.readFileSync("//data/Courier-Oblique.afm","utf8")},"Courier-BoldOblique":function CourierBoldOblique(){return P.readFileSync("//data/Courier-BoldOblique.afm","utf8")},Helvetica:function Helvetica(){return P.readFileSync("//data/Helvetica.afm","utf8")},"Helvetica-Bold":function HelveticaBold(){return P.readFileSync("//data/Helvetica-Bold.afm","utf8")},"Helvetica-Oblique":function HelveticaOblique(){return P.readFileSync("//data/Helvetica-Oblique.afm","utf8")},"Helvetica-BoldOblique":function HelveticaBoldOblique(){return P.readFileSync("//data/Helvetica-BoldOblique.afm","utf8")},"Times-Roman":function TimesRoman(){return P.readFileSync("//data/Times-Roman.afm","utf8")},"Times-Bold":function TimesBold(){return P.readFileSync("//data/Times-Bold.afm","utf8")},"Times-Italic":function TimesItalic(){return P.readFileSync("//data/Times-Italic.afm","utf8")},"Times-BoldItalic":function TimesBoldItalic(){return P.readFileSync("//data/Times-BoldItalic.afm","utf8")},Symbol:function Symbol(){return P.readFileSync("//data/Symbol.afm","utf8")},ZapfDingbats:function ZapfDingbats(){return P.readFileSync("//data/ZapfDingbats.afm","utf8")}},Xe=function(r){_inherits(StandardFont,r);var i=_createSuper(StandardFont);function StandardFont(r,o,u){var p;_classCallCheck(this,StandardFont),(p=i.call(this)).document=r,p.name=o,p.id=u,p.font=new Ve(qe[p.name]());var g=p.font;return p.ascender=g.ascender,p.descender=g.descender,p.bbox=g.bbox,p.lineGap=g.lineGap,p.xHeight=g.xHeight,p.capHeight=g.capHeight,p}return _createClass(StandardFont,[{key:"embed",value:function embed(){return this.dictionary.data={Type:"Font",BaseFont:this.name,Subtype:"Type1",Encoding:"WinAnsiEncoding"},this.dictionary.end()}},{key:"encode",value:function encode(r){for(var i=this.font.encodeText(r),o=this.font.glyphsForString("".concat(r)),u=this.font.advancesForGlyphs(o),p=[],g=0;g<o.length;g++){var y=o[g];p.push({xAdvance:u[g],yAdvance:0,xOffset:0,yOffset:0,advanceWidth:this.font.widthOfGlyph(y)})}return[i,p]}},{key:"widthOfString",value:function widthOfString(r,i){var o,u=this.font.glyphsForString("".concat(r)),p=0,g=_createForOfIteratorHelper(this.font.advancesForGlyphs(u));try{for(g.s();!(o=g.n()).done;){p+=o.value}}catch(r){g.e(r)}finally{g.f()}return p*(i/1e3)}}],[{key:"isStandardFont",value:function isStandardFont(r){return r in qe}}]),StandardFont}(He),Ze=function toHex(r){return"0000".concat(r.toString(16)).slice(-4)},Ke=function(r){_inherits(EmbeddedFont,r);var i=_createSuper(EmbeddedFont);function EmbeddedFont(r,o,u){var p;return _classCallCheck(this,EmbeddedFont),(p=i.call(this)).document=r,p.font=o,p.id=u,p.subset=p.font.createSubset(),p.unicode=[[0]],p.widths=[p.font.getGlyph(0).advanceWidth],p.name=p.font.postscriptName,p.scale=1e3/p.font.unitsPerEm,p.ascender=p.font.ascent*p.scale,p.descender=p.font.descent*p.scale,p.xHeight=p.font.xHeight*p.scale,p.capHeight=p.font.capHeight*p.scale,p.lineGap=p.font.lineGap*p.scale,p.bbox=p.font.bbox,!1!==r.options.fontLayoutCache&&(p.layoutCache=Object.create(null)),p}return _createClass(EmbeddedFont,[{key:"layoutRun",value:function layoutRun(r,i){for(var o=this.font.layout(r,i),u=0;u<o.positions.length;u++){var p=o.positions[u];for(var g in p)p[g]*=this.scale;p.advanceWidth=o.glyphs[u].advanceWidth*this.scale}return o}},{key:"layoutCached",value:function layoutCached(r){if(!this.layoutCache)return this.layoutRun(r);var i;if(i=this.layoutCache[r])return i;var o=this.layoutRun(r);return this.layoutCache[r]=o,o}},{key:"layout",value:function layout(r,i,o){if(i)return this.layoutRun(r,i);for(var u=o?null:[],p=o?null:[],g=0,y=0,w=0;w<=r.length;){var _;if(w===r.length&&y<w||(_=r.charAt(w),[" ","\t"].includes(_))){var x=this.layoutCached(r.slice(y,++w));o||(u=u.concat(x.glyphs),p=p.concat(x.positions)),g+=x.advanceWidth,y=w}else w++}return{glyphs:u,positions:p,advanceWidth:g}}},{key:"encode",value:function encode(r,i){for(var o=this.layout(r,i),u=o.glyphs,p=o.positions,g=[],y=0;y<u.length;y++){var w=u[y],_=this.subset.includeGlyph(w.id);g.push("0000".concat(_.toString(16)).slice(-4)),null==this.widths[_]&&(this.widths[_]=w.advanceWidth*this.scale),null==this.unicode[_]&&(this.unicode[_]=w.codePoints)}return[g,p]}},{key:"widthOfString",value:function widthOfString(r,i,o){return this.layout(r,o,!0).advanceWidth*(i/1e3)}},{key:"embed",value:function embed(){var r=this,i=null!=this.subset.cff,o=this.document.ref();i&&(o.data.Subtype="CIDFontType0C"),this.subset.encodeStream().on("data",(function(r){return o.write(r)})).on("end",(function(){return o.end()}));var u=((null!=this.font["OS/2"]?this.font["OS/2"].sFamilyClass:void 0)||0)>>8,p=0;this.font.post.isFixedPitch&&(p|=1),1<=u&&u<=7&&(p|=2),p|=4,10===u&&(p|=8),this.font.head.macStyle.italic&&(p|=64);var g=[1,2,3,4,5,6].map((function(i){return String.fromCharCode((r.id.charCodeAt(i)||73)+17)})).join("")+"+"+this.font.postscriptName,y=this.font.bbox,w=this.document.ref({Type:"FontDescriptor",FontName:g,Flags:p,FontBBox:[y.minX*this.scale,y.minY*this.scale,y.maxX*this.scale,y.maxY*this.scale],ItalicAngle:this.font.italicAngle,Ascent:this.ascender,Descent:this.descender,CapHeight:(this.font.capHeight||this.font.ascent)*this.scale,XHeight:(this.font.xHeight||0)*this.scale,StemV:0});i?w.data.FontFile3=o:w.data.FontFile2=o,w.end();var _={Type:"Font",Subtype:"CIDFontType0",BaseFont:g,CIDSystemInfo:{Registry:new String("Adobe"),Ordering:new String("Identity"),Supplement:0},FontDescriptor:w,W:[0,this.widths]};i||(_.Subtype="CIDFontType2",_.CIDToGIDMap="Identity");var x=this.document.ref(_);return x.end(),this.dictionary.data={Type:"Font",Subtype:"Type0",BaseFont:g,Encoding:"Identity-H",DescendantFonts:[x],ToUnicode:this.toUnicodeCmap()},this.dictionary.end()}},{key:"toUnicodeCmap",value:function toUnicodeCmap(){var r,i=this.document.ref(),o=[],u=_createForOfIteratorHelper(this.unicode);try{for(u.s();!(r=u.n()).done;){var p,g=r.value,y=[],w=_createForOfIteratorHelper(g);try{for(w.s();!(p=w.n()).done;){var _=p.value;_>65535&&(_-=65536,y.push(Ze(_>>>10&1023|55296)),_=56320|1023&_),y.push(Ze(_))}}catch(r){w.e(r)}finally{w.f()}o.push("<".concat(y.join(" "),">"))}}catch(r){u.e(r)}finally{u.f()}return i.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <".concat(Ze(o.length-1),"> [").concat(o.join(" "),"]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend")),i}}]),EmbeddedFont}(He),Ye=function(){function PDFFontFactory(){_classCallCheck(this,PDFFontFactory)}return _createClass(PDFFontFactory,null,[{key:"open",value:function open(r,i,o,p){var g;if("string"==typeof i){if(Xe.isStandardFont(i))return new Xe(r,i,p);i=P.readFileSync(i)}if(u.isBuffer(i)?g=w.default.create(i,o):i instanceof Uint8Array?g=w.default.create(u.from(i),o):i instanceof ArrayBuffer&&(g=w.default.create(u.from(new Uint8Array(i)),o)),null==g)throw new Error("Not a supported font format or standard PDF font.");return new Ke(r,g,p)}}]),PDFFontFactory}(),Je={initFonts:function initFonts(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Helvetica";this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={},r&&this.font(r)},font:function font(r,i,o){var u,font;if("number"==typeof i&&(o=i,i=null),"string"==typeof r&&this._registeredFonts[r]){u=r;var p=this._registeredFonts[r];r=p.src,i=p.family}else"string"!=typeof(u=i||r)&&(u=null);if(null!=o&&this.fontSize(o),font=this._fontFamilies[u])return this._font=font,this;var g="F".concat(++this._fontCount);return this._font=Ye.open(this,r,i,g),(font=this._fontFamilies[this._font.name])?(this._font=font,this):(u&&(this._fontFamilies[u]=this._font),this._font.name&&(this._fontFamilies[this._font.name]=this._font),this)},fontSize:function fontSize(r){return this._fontSize=r,this},currentLineHeight:function currentLineHeight(r){return null==r&&(r=!1),this._font.lineHeight(this._fontSize,r)},registerFont:function registerFont(r,i,o){return this._registeredFonts[r]={src:i,family:o},this}},Qe=function(r){_inherits(LineWrapper,r);var i=_createSuper(LineWrapper);function LineWrapper(r,o){var u;return _classCallCheck(this,LineWrapper),(u=i.call(this)).document=r,u.indent=o.indent||0,u.characterSpacing=o.characterSpacing||0,u.wordSpacing=0===o.wordSpacing,u.columns=o.columns||1,u.columnGap=null!=o.columnGap?o.columnGap:18,u.lineWidth=(o.width-u.columnGap*(u.columns-1))/u.columns,u.spaceLeft=u.lineWidth,u.startX=u.document.x,u.startY=u.document.y,u.column=1,u.ellipsis=o.ellipsis,u.continuedX=0,u.features=o.features,null!=o.height?(u.height=o.height,u.maxY=u.startY+o.height):u.maxY=u.document.page.maxY(),u.on("firstLine",(function(r){var i=u.continuedX||u.indent;return u.document.x+=i,u.lineWidth-=i,u.once("line",(function(){if(u.document.x-=i,u.lineWidth+=i,r.continued&&!u.continuedX&&(u.continuedX=u.indent),!r.continued)return u.continuedX=0}))})),u.on("lastLine",(function(r){var i=r.align;return"justify"===i&&(r.align="left"),u.lastLine=!0,u.once("line",(function(){return u.document.y+=r.paragraphGap||0,r.align=i,u.lastLine=!1}))})),u}return _createClass(LineWrapper,[{key:"wordWidth",value:function wordWidth(r){return this.document.widthOfString(r,this)+this.characterSpacing+this.wordSpacing}},{key:"eachWord",value:function eachWord(r,i){for(var o,u=new x.default(r),p=null,g=Object.create(null);o=u.nextBreak();){var y,w=r.slice((null!=p?p.position:void 0)||0,o.position),_=null!=g[w]?g[w]:g[w]=this.wordWidth(w);if(_>this.lineWidth+this.continuedX)for(var k=p,P={};w.length;){var O,I;_>this.spaceLeft?(O=Math.ceil(this.spaceLeft/(_/w.length)),I=(_=this.wordWidth(w.slice(0,O)))<=this.spaceLeft&&O<w.length):O=w.length;for(var B=_>this.spaceLeft&&O>0;B||I;)B?B=(_=this.wordWidth(w.slice(0,--O)))>this.spaceLeft&&O>0:(B=(_=this.wordWidth(w.slice(0,++O)))>this.spaceLeft&&O>0,I=_<=this.spaceLeft&&O<w.length);if(0===O&&this.spaceLeft===this.lineWidth&&(O=1),P.required=o.required||O<w.length,y=i(w.slice(0,O),_,P,k),k={required:!1},w=w.slice(O),_=this.wordWidth(w),!1===y)break}else y=i(w,_,o,p);if(!1===y)break;p=o}}},{key:"wrap",value:function wrap(r,i){var o=this;null!=i.indent&&(this.indent=i.indent),null!=i.characterSpacing&&(this.characterSpacing=i.characterSpacing),null!=i.wordSpacing&&(this.wordSpacing=i.wordSpacing),null!=i.ellipsis&&(this.ellipsis=i.ellipsis);var u=this.document.y+this.document.currentLineHeight(!0);(this.document.y>this.maxY||u>this.maxY)&&this.nextSection();var p="",g=0,y=0,w=0,_=this.document.y,x=function emitLine(){return i.textWidth=g+o.wordSpacing*(y-1),i.wordCount=y,i.lineWidth=o.lineWidth,_=o.document.y,o.emit("line",p,i,o),w++};return this.emit("sectionStart",i,this),this.eachWord(r,(function(r,u,w,_){if((null==_||_.required)&&(o.emit("firstLine",i,o),o.spaceLeft=o.lineWidth),u<=o.spaceLeft&&(p+=r,g+=u,y++),w.required||u>o.spaceLeft){var k=o.document.currentLineHeight(!0);if(null!=o.height&&o.ellipsis&&o.document.y+2*k>o.maxY&&o.column>=o.columns){for(!0===o.ellipsis&&(o.ellipsis="…"),p=p.replace(/\s+$/,""),g=o.wordWidth(p+o.ellipsis);p&&g>o.lineWidth;)p=p.slice(0,-1).replace(/\s+$/,""),g=o.wordWidth(p+o.ellipsis);g<=o.lineWidth&&(p+=o.ellipsis),g=o.wordWidth(p)}if(w.required&&(u>o.spaceLeft&&(x(),p=r,g=u,y=1),o.emit("lastLine",i,o)),x(),o.document.y+k>o.maxY)if(!o.nextSection())return y=0,p="",!1;return w.required?(o.spaceLeft=o.lineWidth,p="",g=0,y=0):(o.spaceLeft=o.lineWidth-u,p=r,g=u,y=1)}return o.spaceLeft-=u})),y>0&&(this.emit("lastLine",i,this),x()),this.emit("sectionEnd",i,this),!0===i.continued?(w>1&&(this.continuedX=0),this.continuedX+=i.textWidth||0,this.document.y=_):this.document.x=this.startX}},{key:"nextSection",value:function nextSection(r){if(this.emit("sectionEnd",r,this),++this.column>this.columns){if(null!=this.height)return!1;var i;if(this.document.continueOnNewPage(),this.column=1,this.startY=this.document.page.margins.top,this.maxY=this.document.page.maxY(),this.document.x=this.startX,this.document._fillColor)(i=this.document).fillColor.apply(i,_toConsumableArray(this.document._fillColor));this.emit("pageBreak",r,this)}else this.document.x+=this.lineWidth+this.columnGap,this.document.y=this.startY,this.emit("columnBreak",r,this);return this.emit("sectionStart",r,this),!0}}]),LineWrapper}(_.EventEmitter),$e=W.number,et={initText:function initText(){return this._line=this._line.bind(this),this.x=0,this.y=0,this._lineGap=0},lineGap:function lineGap(r){return this._lineGap=r,this},moveDown:function moveDown(r){return null==r&&(r=1),this.y+=this.currentLineHeight(!0)*r+this._lineGap,this},moveUp:function moveUp(r){return null==r&&(r=1),this.y-=this.currentLineHeight(!0)*r+this._lineGap,this},_text:function _text(r,i,o,u,p){var g=this;u=this._initOptions(i,o,u),r=null==r?"":"".concat(r),u.wordSpacing&&(r=r.replace(/\s{2,}/g," "));var y=function addStructure(){u.structParent&&u.structParent.add(g.struct(u.structType||"P",[g.markStructureContent(u.structType||"P")]))};if(u.width){var w=this._wrapper;w||((w=new Qe(this,u)).on("line",p),w.on("firstLine",y)),this._wrapper=u.continued?w:null,this._textOptions=u.continued?u:null,w.wrap(r,u)}else{var _,x=_createForOfIteratorHelper(r.split("\n"));try{for(x.s();!(_=x.n()).done;){var k=_.value;y(),p(k,u)}}catch(r){x.e(r)}finally{x.f()}}return this},text:function text(r,i,o,u){return this._text(r,i,o,u,this._line)},widthOfString:function widthOfString(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this._font.widthOfString(r,this._fontSize,i.features)+(i.characterSpacing||0)*(r.length-1)},heightOfString:function heightOfString(r,i){var o=this,u=this.x,p=this.y;(i=this._initOptions(i)).height=1/0;var g=i.lineGap||this._lineGap||0;this._text(r,this.x,this.y,i,(function(){return o.y+=o.currentLineHeight(!0)+g}));var y=this.y-p;return this.x=u,this.y=p,y},list:function list(r,i,o,u,p){var g=this,y=(u=this._initOptions(i,o,u)).listType||"bullet",w=Math.round(this._font.ascender/1e3*this._fontSize),_=w/2,x=u.bulletRadius||w/3,k=u.textIndent||("bullet"===y?5*x:2*w),P=u.bulletIndent||("bullet"===y?8*x:2*w),O=1,I=[],B=[],R=[];!function flatten(r){for(var i=1,o=0;o<r.length;o++){var u=r[o];Array.isArray(u)?(O++,flatten(u),O--):(I.push(u),B.push(O),"bullet"!==y&&R.push(i++))}}(r);(p=new Qe(this,u)).on("line",this._line),O=1;var D=0;return p.on("firstLine",(function(){var r,i,o,w,I;if(u.structParent)if(u.structTypes){var N=_slicedToArray(u.structTypes,3);i=N[0],o=N[1],w=N[2]}else i="LI",o="Lbl",w="LBody";if(i?(r=g.struct(i),u.structParent.add(r)):u.structParent&&(r=u.structParent),(I=B[D++])!==O){var W=P*(I-O);g.x+=W,p.lineWidth-=W,O=I}switch(r&&(o||w)&&r.add(g.struct(o||w,[g.markStructureContent(o||w)])),y){case"bullet":g.circle(g.x-k+x,g.y+_,x),g.fill();break;case"numbered":case"lettered":var U=function label(r){switch(y){case"numbered":return"".concat(r,".");case"lettered":var i=String.fromCharCode((r-1)%26+65),o=Math.floor((r-1)/26+1),u=Array(o+1).join(i);return"".concat(u,".")}}(R[D-1]);g._fragment(U,g.x-k,g.y,u)}r&&o&&w&&r.add(g.struct(w,[g.markStructureContent(w)])),r&&r!==u.structParent&&r.end()})),p.on("sectionStart",(function(){var r=k+P*(O-1);return g.x+=r,p.lineWidth-=r})),p.on("sectionEnd",(function(){var r=k+P*(O-1);return g.x-=r,p.lineWidth+=r})),p.wrap(I.join("\n"),u),this},_initOptions:function _initOptions(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};"object"==typeof r&&(o=r,r=null);var u=Object.assign({},o);if(this._textOptions)for(var p in this._textOptions){var g=this._textOptions[p];"continued"!==p&&void 0===u[p]&&(u[p]=g)}return null!=r&&(this.x=r),null!=i&&(this.y=i),!1!==u.lineBreak&&(null==u.width&&(u.width=this.page.width-this.x-this.page.margins.right),u.width=Math.max(u.width,0)),u.columns||(u.columns=0),null==u.columnGap&&(u.columnGap=18),u},_line:function _line(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;this._fragment(r,this.x,this.y,i);var u=i.lineGap||this._lineGap||0;return o?this.y+=this.currentLineHeight(!0)+u:this.x+=this.widthOfString(r)},_fragment:function _fragment(r,i,o,u){var p,g,y,w,_,x,k=this;if(0!==(r="".concat(r).replace(/\n/g,"")).length){var P=u.align||"left",O=u.wordSpacing||0,I=u.characterSpacing||0;if(u.width)switch(P){case"right":_=this.widthOfString(r.replace(/\s+$/,""),u),i+=u.lineWidth-_;break;case"center":i+=u.lineWidth/2-u.textWidth/2;break;case"justify":x=r.trim().split(/\s+/),_=this.widthOfString(r.replace(/\s+/g,""),u);var B=this.widthOfString(" ")+I;O=Math.max(0,(u.lineWidth-_)/Math.max(1,x.length-1)-B)}if("number"==typeof u.baseline)p=-u.baseline;else{switch(u.baseline){case"svg-middle":p=.5*this._font.xHeight;break;case"middle":case"svg-central":p=.5*(this._font.descender+this._font.ascender);break;case"bottom":case"ideographic":p=this._font.descender;break;case"alphabetic":p=0;break;case"mathematical":p=.5*this._font.ascender;break;case"hanging":p=.8*this._font.ascender;break;default:p=this._font.ascender}p=p/1e3*this._fontSize}var R,D=u.textWidth+O*(u.wordCount-1)+I*(r.length-1);if(null!=u.link&&this.link(i,o,D,this.currentLineHeight(),u.link),null!=u.goTo&&this.goTo(i,o,D,this.currentLineHeight(),u.goTo),null!=u.destination&&this.addNamedDestination(u.destination,"XYZ",i,o,null),u.underline){this.save(),u.stroke||this.strokeColor.apply(this,_toConsumableArray(this._fillColor||[]));var N=this._fontSize<10?.5:Math.floor(this._fontSize/10);this.lineWidth(N);var W=o+this.currentLineHeight()-N;this.moveTo(i,W),this.lineTo(i+D,W),this.stroke(),this.restore()}if(u.strike){this.save(),u.stroke||this.strokeColor.apply(this,_toConsumableArray(this._fillColor||[]));var U=this._fontSize<10?.5:Math.floor(this._fontSize/10);this.lineWidth(U);var j=o+this.currentLineHeight()/2;this.moveTo(i,j),this.lineTo(i+D,j),this.stroke(),this.restore()}if(this.save(),u.oblique)R="number"==typeof u.oblique?-Math.tan(u.oblique*Math.PI/180):-.25,this.transform(1,0,0,1,i,o),this.transform(1,0,R,1,-R*p,0),this.transform(1,0,0,1,-i,-o);this.transform(1,0,0,-1,0,this.page.height),o=this.page.height-o-p,null==this.page.fonts[this._font.id]&&(this.page.fonts[this._font.id]=this._font.ref()),this.addContent("BT"),this.addContent("1 0 0 1 ".concat($e(i)," ").concat($e(o)," Tm")),this.addContent("/".concat(this._font.id," ").concat($e(this._fontSize)," Tf"));var G=u.fill&&u.stroke?2:u.stroke?1:0;if(G&&this.addContent("".concat(G," Tr")),I&&this.addContent("".concat($e(I)," Tc")),O){x=r.trim().split(/\s+/),O+=this.widthOfString(" ")+I,O*=1e3/this._fontSize,g=[],w=[];var X,K=_createForOfIteratorHelper(x);try{for(K.s();!(X=K.n()).done;){var Y=X.value,J=_slicedToArray(this._font.encode(Y,u.features),2),$=J[0],ee=J[1];g=g.concat($),w=w.concat(ee);var te={},re=w[w.length-1];for(var ne in re){var ie=re[ne];te[ne]=ie}te.xAdvance+=O,w[w.length-1]=te}}catch(r){K.e(r)}finally{K.f()}}else{var oe=_slicedToArray(this._font.encode(r,u.features),2);g=oe[0],w=oe[1]}var ae=this._fontSize/1e3,se=[],ce=0,le=!1,ue=function addSegment(r){if(ce<r){var i=g.slice(ce,r).join(""),o=w[r-1].xAdvance-w[r-1].advanceWidth;se.push("<".concat(i,"> ").concat($e(-o)))}return ce=r},fe=function flush(r){if(ue(r),se.length>0)return k.addContent("[".concat(se.join(" "),"] TJ")),se.length=0};for(y=0;y<w.length;y++){var he=w[y];he.xOffset||he.yOffset?(fe(y),this.addContent("1 0 0 1 ".concat($e(i+he.xOffset*ae)," ").concat($e(o+he.yOffset*ae)," Tm")),fe(y+1),le=!0):(le&&(this.addContent("1 0 0 1 ".concat($e(i)," ").concat($e(o)," Tm")),le=!1),he.xAdvance-he.advanceWidth!=0&&ue(y+1)),i+=he.xAdvance*ae}return fe(y),this.addContent("ET"),this.restore()}}},tt=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],rt={1:"DeviceGray",3:"DeviceRGB",4:"DeviceCMYK"},nt=function(){function JPEG(r,i){var o;if(_classCallCheck(this,JPEG),this.data=r,this.label=i,65496!==this.data.readUInt16BE(0))throw"SOI not found in JPEG";for(var u=2;u<this.data.length&&(o=this.data.readUInt16BE(u),u+=2,!tt.includes(o));)u+=this.data.readUInt16BE(u);if(!tt.includes(o))throw"Invalid JPEG.";u+=2,this.bits=this.data[u++],this.height=this.data.readUInt16BE(u),u+=2,this.width=this.data.readUInt16BE(u),u+=2;var p=this.data[u++];this.colorSpace=rt[p],this.obj=null}return _createClass(JPEG,[{key:"embed",value:function embed(r){if(!this.obj)return this.obj=r.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null}}]),JPEG}(),it=function(){function PNGImage(r,i){_classCallCheck(this,PNGImage),this.label=i,this.image=new k.default(r),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}return _createClass(PNGImage,[{key:"embed",value:function embed(r){var i=!1;if(this.document=r,!this.obj){var o=this.image.hasAlphaChannel,p=1===this.image.interlaceMethod;if(this.obj=this.document.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:o?8:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),!o){var g=this.document.ref({Predictor:p?1:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width});this.obj.data.DecodeParms=g,g.end()}if(0===this.image.palette.length)this.obj.data.ColorSpace=this.image.colorSpace;else{var y=this.document.ref();y.end(u.from(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,y]}if(null!=this.image.transparency.grayscale){var w=this.image.transparency.grayscale;this.obj.data.Mask=[w,w]}else if(this.image.transparency.rgb){var _,x=[],k=_createForOfIteratorHelper(this.image.transparency.rgb);try{for(k.s();!(_=k.n()).done;){var P=_.value;x.push(P,P)}}catch(r){k.e(r)}finally{k.f()}this.obj.data.Mask=x}else{if(this.image.transparency.indexed)return i=!0,this.loadIndexedAlphaChannel();if(o)return i=!0,this.splitAlphaChannel()}if(p&&!i)return this.decodeData();this.finalize()}}},{key:"finalize",value:function finalize(){if(this.alphaChannel){var r=this.document.ref({Type:"XObject",Subtype:"Image",Height:this.height,Width:this.width,BitsPerComponent:8,Filter:"FlateDecode",ColorSpace:"DeviceGray",Decode:[0,1]});r.end(this.alphaChannel),this.obj.data.SMask=r}return this.obj.end(this.imgData),this.image=null,this.imgData=null}},{key:"splitAlphaChannel",value:function splitAlphaChannel(){var r=this;return this.image.decodePixels((function(i){for(var o,p,y=r.image.colors,w=r.width*r.height,_=u.alloc(w*y),x=u.alloc(w),k=p=o=0,P=i.length,O=16===r.image.bits?1:0;k<P;){for(var I=0;I<y;I++)_[p++]=i[k++],k+=O;x[o++]=i[k++],k+=O}return r.imgData=g.default.deflateSync(_),r.alphaChannel=g.default.deflateSync(x),r.finalize()}))}},{key:"loadIndexedAlphaChannel",value:function loadIndexedAlphaChannel(){var r=this,i=this.image.transparency.indexed;return this.image.decodePixels((function(o){for(var p=u.alloc(r.width*r.height),y=0,w=0,_=o.length;w<_;w++)p[y++]=i[o[w]];return r.alphaChannel=g.default.deflateSync(p),r.finalize()}))}},{key:"decodeData",value:function decodeData(){var r=this;this.image.decodePixels((function(i){r.imgData=g.default.deflateSync(i),r.finalize()}))}}]),PNGImage}(),ot=function(){function PDFImage(){_classCallCheck(this,PDFImage)}return _createClass(PDFImage,null,[{key:"open",value:function open(r,i){var o;if(u.isBuffer(r))o=r;else if(r instanceof ArrayBuffer)o=u.from(new Uint8Array(r));else{var p;if(p=/^data:.+;base64,(.*)$/.exec(r))o=u.from(p[1],"base64");else if(!(o=P.readFileSync(r)))return}if(255===o[0]&&216===o[1])return new nt(o,i);if(137===o[0]&&"PNG"===o.toString("ascii",1,4))return new it(o,i);throw new Error("Unknown image format.")}}]),PDFImage}(),at={initImages:function initImages(){return this._imageRegistry={},this._imageCount=0},image:function image(r,i,o){var u,p,g,image,y,w,_,x=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};"object"==typeof i&&(x=i,i=null),i=null!=(w=null!=i?i:x.x)?w:this.x,o=null!=(_=null!=o?o:x.y)?_:this.y,"string"==typeof r&&(image=this._imageRegistry[r]),image||(image=r.width&&r.height?r:this.openImage(r)),image.obj||image.embed(this),null==this.page.xobjects[image.label]&&(this.page.xobjects[image.label]=image.obj);var k=x.width||image.width,P=x.height||image.height;if(x.width&&!x.height){var O=k/image.width;k=image.width*O,P=image.height*O}else if(x.height&&!x.width){var I=P/image.height;k=image.width*I,P=image.height*I}else if(x.scale)k=image.width*x.scale,P=image.height*x.scale;else if(x.fit){var B=_slicedToArray(x.fit,2);p=(g=B[0])/(u=B[1]),(y=image.width/image.height)>p?(k=g,P=g/y):(P=u,k=u*y)}else if(x.cover){var R=_slicedToArray(x.cover,2);p=(g=R[0])/(u=R[1]),(y=image.width/image.height)>p?(P=u,k=u*y):(k=g,P=g/y)}return(x.fit||x.cover)&&("center"===x.align?i=i+g/2-k/2:"right"===x.align&&(i=i+g-k),"center"===x.valign?o=o+u/2-P/2:"bottom"===x.valign&&(o=o+u-P)),null!=x.link&&this.link(i,o,k,P,x.link),null!=x.goTo&&this.goTo(i,o,k,P,x.goTo),null!=x.destination&&this.addNamedDestination(x.destination,"XYZ",i,o,null),this.y===o&&(this.y+=P),this.save(),this.transform(k,0,0,-P,i,o+P),this.addContent("/".concat(image.label," Do")),this.restore(),this},openImage:function openImage(r){var i;return"string"==typeof r&&(i=this._imageRegistry[r]),i||(i=ot.open(r,"I".concat(++this._imageCount)),"string"==typeof r&&(this._imageRegistry[r]=i)),i}},st={annotate:function annotate(r,i,o,u,p){for(var g in p.Type="Annot",p.Rect=this._convertRect(r,i,o,u),p.Border=[0,0,0],"Link"===p.Subtype&&void 0===p.F&&(p.F=4),"Link"!==p.Subtype&&null==p.C&&(p.C=this._normalizeColor(p.color||[0,0,0])),delete p.color,"string"==typeof p.Dest&&(p.Dest=new String(p.Dest)),p){var y=p[g];p[g[0].toUpperCase()+g.slice(1)]=y}var w=this.ref(p);return this.page.annotations.push(w),w.end(),this},note:function note(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return g.Subtype="Text",g.Contents=new String(p),g.Name="Comment",null==g.color&&(g.color=[243,223,92]),this.annotate(r,i,o,u,g)},goTo:function goTo(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return g.Subtype="Link",g.A=this.ref({S:"GoTo",D:new String(p)}),g.A.end(),this.annotate(r,i,o,u,g)},link:function link(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(g.Subtype="Link","number"==typeof p){var y=this._root.data.Pages.data;if(!(p>=0&&p<y.Kids.length))throw new Error("The document has no page ".concat(p));g.A=this.ref({S:"GoTo",D:[y.Kids[p],"XYZ",null,null,null]}),g.A.end()}else g.A=this.ref({S:"URI",URI:new String(p)}),g.A.end();return this.annotate(r,i,o,u,g)},_markup:function _markup(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},g=this._convertRect(r,i,o,u),y=_slicedToArray(g,4),w=y[0],_=y[1],x=y[2],k=y[3];return p.QuadPoints=[w,k,x,k,w,_,x,_],p.Contents=new String,this.annotate(r,i,o,u,p)},highlight:function highlight(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return p.Subtype="Highlight",null==p.color&&(p.color=[241,238,148]),this._markup(r,i,o,u,p)},underline:function underline(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return p.Subtype="Underline",this._markup(r,i,o,u,p)},strike:function strike(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return p.Subtype="StrikeOut",this._markup(r,i,o,u,p)},lineAnnotation:function lineAnnotation(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return p.Subtype="Line",p.Contents=new String,p.L=[r,this.page.height-i,o,this.page.height-u],this.annotate(r,i,o,u,p)},rectAnnotation:function rectAnnotation(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return p.Subtype="Square",p.Contents=new String,this.annotate(r,i,o,u,p)},ellipseAnnotation:function ellipseAnnotation(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};return p.Subtype="Circle",p.Contents=new String,this.annotate(r,i,o,u,p)},textAnnotation:function textAnnotation(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return g.Subtype="FreeText",g.Contents=new String(p),g.DA=new String,this.annotate(r,i,o,u,g)},fileAnnotation:function fileAnnotation(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},y=this.file(p.src,Object.assign({hidden:!0},p));return g.Subtype="FileAttachment",g.FS=y,g.Contents?g.Contents=new String(g.Contents):y.data.Desc&&(g.Contents=y.data.Desc),this.annotate(r,i,o,u,g)},_convertRect:function _convertRect(r,i,o,u){var p=i;i+=u;var g=r+o,y=_slicedToArray(this._ctm,6),w=y[0],_=y[1],x=y[2],k=y[3],P=y[4],O=y[5];return[r=w*r+x*i+P,i=_*r+k*i+O,g=w*g+x*p+P,p=_*g+k*p+O]}},ct=function(){function PDFOutline(r,i,o,u){var p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{expanded:!1};_classCallCheck(this,PDFOutline),this.document=r,this.options=p,this.outlineData={},null!==u&&(this.outlineData.Dest=[u.dictionary,"Fit"]),null!==i&&(this.outlineData.Parent=i),null!==o&&(this.outlineData.Title=new String(o)),this.dictionary=this.document.ref(this.outlineData),this.children=[]}return _createClass(PDFOutline,[{key:"addItem",value:function addItem(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:!1},o=new PDFOutline(this.document,this.dictionary,r,this.document.page,i);return this.children.push(o),o}},{key:"endOutline",value:function endOutline(){if(this.children.length>0){this.options.expanded&&(this.outlineData.Count=this.children.length);var r=this.children[0],i=this.children[this.children.length-1];this.outlineData.First=r.dictionary,this.outlineData.Last=i.dictionary;for(var o=0,u=this.children.length;o<u;o++){var p=this.children[o];o>0&&(p.outlineData.Prev=this.children[o-1].dictionary),o<this.children.length-1&&(p.outlineData.Next=this.children[o+1].dictionary),p.endOutline()}}return this.dictionary.end()}}]),PDFOutline}(),lt={initOutline:function initOutline(){return this.outline=new ct(this,null,null,null)},endOutline:function endOutline(){if(this.outline.endOutline(),this.outline.children.length>0)return this._root.data.Outlines=this.outline.dictionary,this._root.data.PageMode="UseOutlines"}},ut=function(){function PDFStructureContent(r,i){_classCallCheck(this,PDFStructureContent),this.refs=[{pageRef:r,mcid:i}]}return _createClass(PDFStructureContent,[{key:"push",value:function push(r){var i=this;r.refs.forEach((function(r){return i.refs.push(r)}))}}]),PDFStructureContent}(),ft=function(){function PDFStructureElement(r,i){var o=this,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},p=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;_classCallCheck(this,PDFStructureElement),this.document=r,this._attached=!1,this._ended=!1,this._flushed=!1,this.dictionary=r.ref({S:i});var g=this.dictionary.data;(Array.isArray(u)||this._isValidChild(u))&&(p=u,u={}),void 0!==u.title&&(g.T=new String(u.title)),void 0!==u.lang&&(g.Lang=new String(u.lang)),void 0!==u.alt&&(g.Alt=new String(u.alt)),void 0!==u.expanded&&(g.E=new String(u.expanded)),void 0!==u.actual&&(g.ActualText=new String(u.actual)),this._children=[],p&&(Array.isArray(p)||(p=[p]),p.forEach((function(r){return o.add(r)})),this.end())}return _createClass(PDFStructureElement,[{key:"add",value:function add(r){if(this._ended)throw new Error("Cannot add child to already-ended structure element");if(!this._isValidChild(r))throw new Error("Invalid structure element child");return r instanceof PDFStructureElement&&(r.setParent(this.dictionary),this._attached&&r.setAttached()),r instanceof ut&&this._addContentToParentTree(r),"function"==typeof r&&this._attached&&(r=this._contentForClosure(r)),this._children.push(r),this}},{key:"_addContentToParentTree",value:function _addContentToParentTree(r){var i=this;r.refs.forEach((function(r){var o=r.pageRef,u=r.mcid;i.document.getStructParentTree().get(o.data.StructParents)[u]=i.dictionary}))}},{key:"setParent",value:function setParent(r){if(this.dictionary.data.P)throw new Error("Structure element added to more than one parent");this.dictionary.data.P=r,this._flush()}},{key:"setAttached",value:function setAttached(){var r=this;this._attached||(this._children.forEach((function(i,o){i instanceof PDFStructureElement&&i.setAttached(),"function"==typeof i&&(r._children[o]=r._contentForClosure(i))})),this._attached=!0,this._flush())}},{key:"end",value:function end(){this._ended||(this._children.filter((function(r){return r instanceof PDFStructureElement})).forEach((function(r){return r.end()})),this._ended=!0,this._flush())}},{key:"_isValidChild",value:function _isValidChild(r){return r instanceof PDFStructureElement||r instanceof ut||"function"==typeof r}},{key:"_contentForClosure",value:function _contentForClosure(r){var i=this.document.markStructureContent(this.dictionary.data.S);return r(),this.document.endMarkedContent(),this._addContentToParentTree(i),i}},{key:"_isFlushable",value:function _isFlushable(){return!(!this.dictionary.data.P||!this._ended)&&this._children.every((function(r){return"function"!=typeof r&&(!(r instanceof PDFStructureElement)||r._isFlushable())}))}},{key:"_flush",value:function _flush(){var r=this;!this._flushed&&this._isFlushable()&&(this.dictionary.data.K=[],this._children.forEach((function(i){return r._flushChild(i)})),this.dictionary.end(),this._children=[],this.dictionary.data.K=null,this._flushed=!0)}},{key:"_flushChild",value:function _flushChild(r){var i=this;r instanceof PDFStructureElement&&this.dictionary.data.K.push(r.dictionary),r instanceof ut&&r.refs.forEach((function(r){var o=r.pageRef,u=r.mcid;i.dictionary.data.Pg||(i.dictionary.data.Pg=o),i.dictionary.data.Pg===o?i.dictionary.data.K.push(u):i.dictionary.data.K.push({Type:"MCR",Pg:o,MCID:u})}))}}]),PDFStructureElement}(),ht=function(r){_inherits(PDFNumberTree,r);var i=_createSuper(PDFNumberTree);function PDFNumberTree(){return _classCallCheck(this,PDFNumberTree),i.apply(this,arguments)}return _createClass(PDFNumberTree,[{key:"_compareKeys",value:function _compareKeys(r,i){return parseInt(r)-parseInt(i)}},{key:"_keysName",value:function _keysName(){return"Nums"}},{key:"_dataForKey",value:function _dataForKey(r){return parseInt(r)}}]),PDFNumberTree}(I),dt={initMarkings:function initMarkings(r){this.structChildren=[],r.tagged&&(this.getMarkInfoDictionary().data.Marked=!0,this.getStructTreeRoot())},markContent:function markContent(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("Artifact"===r||i&&i.mcid){var o=0;for(this.page.markings.forEach((function(r){(o||r.structContent||"Artifact"===r.tag)&&o++}));o--;)this.endMarkedContent()}if(!i)return this.page.markings.push({tag:r}),this.addContent("/".concat(r," BMC")),this;this.page.markings.push({tag:r,options:i});var u={};return void 0!==i.mcid&&(u.MCID=i.mcid),"Artifact"===r&&("string"==typeof i.type&&(u.Type=i.type),Array.isArray(i.bbox)&&(u.BBox=[i.bbox[0],this.page.height-i.bbox[3],i.bbox[2],this.page.height-i.bbox[1]]),Array.isArray(i.attached)&&i.attached.every((function(r){return"string"==typeof r}))&&(u.Attached=i.attached)),"Span"===r&&(i.lang&&(u.Lang=new String(i.lang)),i.alt&&(u.Alt=new String(i.alt)),i.expanded&&(u.E=new String(i.expanded)),i.actual&&(u.ActualText=new String(i.actual))),this.addContent("/".concat(r," ").concat(W.convert(u)," BDC")),this},markStructureContent:function markStructureContent(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.getStructParentTree().get(this.page.structParentTreeKey),u=o.length;o.push(null),this.markContent(r,_objectSpread2(_objectSpread2({},i),{},{mcid:u}));var p=new ut(this.page.dictionary,u);return this.page.markings.slice(-1)[0].structContent=p,p},endMarkedContent:function endMarkedContent(){return this.page.markings.pop(),this.addContent("EMC"),this},struct:function struct(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return new ft(this,r,i,o)},addStructure:function addStructure(r){var i=this.getStructTreeRoot();return r.setParent(i),r.setAttached(),this.structChildren.push(r),i.data.K||(i.data.K=[]),i.data.K.push(r.dictionary),this},initPageMarkings:function initPageMarkings(r){var i=this;r.forEach((function(r){if(r.structContent){var o=r.structContent,u=i.markStructureContent(r.tag,r.options);o.push(u),i.page.markings.slice(-1)[0].structContent=o}else i.markContent(r.tag,r.options)}))},endPageMarkings:function endPageMarkings(r){var i=r.markings;return i.forEach((function(){return r.write("EMC")})),r.markings=[],i},getMarkInfoDictionary:function getMarkInfoDictionary(){return this._root.data.MarkInfo||(this._root.data.MarkInfo=this.ref({})),this._root.data.MarkInfo},getStructTreeRoot:function getStructTreeRoot(){return this._root.data.StructTreeRoot||(this._root.data.StructTreeRoot=this.ref({Type:"StructTreeRoot",ParentTree:new ht,ParentTreeNextKey:0})),this._root.data.StructTreeRoot},getStructParentTree:function getStructParentTree(){return this.getStructTreeRoot().data.ParentTree},createStructParentTreeNextKey:function createStructParentTreeNextKey(){this.getMarkInfoDictionary();var r=this.getStructTreeRoot(),i=r.data.ParentTreeNextKey++;return r.data.ParentTree.add(i,[]),i},endMarkings:function endMarkings(){var r=this._root.data.StructTreeRoot;r&&(r.end(),this.structChildren.forEach((function(r){return r.end()}))),this._root.data.MarkInfo&&this._root.data.MarkInfo.end()}},pt={readOnly:1,required:2,noExport:4,multiline:4096,password:8192,toggleToOffButton:16384,radioButton:32768,pushButton:65536,combo:131072,edit:262144,sort:524288,multiSelect:2097152,noSpell:4194304},gt={left:0,center:1,right:2},yt={value:"V",defaultValue:"DV"},vt={zip:"0",zipPlus4:"1",zip4:"1",phone:"2",ssn:"3"},mt={nDec:0,sepComma:!1,negStyle:"MinusBlack",currency:"",currencyPrepend:!0},bt={nDec:0,sepComma:!1},wt={initForm:function initForm(){if(!this._font)throw new Error("Must set a font before calling initForm method");this._acroform={fonts:{},defaultFont:this._font.name},this._acroform.fonts[this._font.id]=this._font.ref();var r={Fields:[],NeedAppearances:!0,DA:new String("/".concat(this._font.id," 0 Tf 0 g")),DR:{Font:{}}};r.DR.Font[this._font.id]=this._font.ref();var i=this.ref(r);return this._root.data.AcroForm=i,this},endAcroForm:function endAcroForm(){var r=this;if(this._root.data.AcroForm){if(!Object.keys(this._acroform.fonts).length&&!this._acroform.defaultFont)throw new Error("No fonts specified for PDF form");var i=this._root.data.AcroForm.data.DR.Font;Object.keys(this._acroform.fonts).forEach((function(o){i[o]=r._acroform.fonts[o]})),this._root.data.AcroForm.data.Fields.forEach((function(i){r._endChild(i)})),this._root.data.AcroForm.end()}return this},_endChild:function _endChild(r){var i=this;return Array.isArray(r.data.Kids)&&(r.data.Kids.forEach((function(r){i._endChild(r)})),r.end()),this},formField:function formField(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this._fieldDict(r,null,i),u=this.ref(o);return this._addToParent(u),u},formAnnotation:function formAnnotation(r,i,o,u,p,g){var y=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},w=this._fieldDict(r,i,y);w.Subtype="Widget",void 0===w.F&&(w.F=4),this.annotate(o,u,p,g,w);var _=this.page.annotations[this.page.annotations.length-1];return this._addToParent(_)},formText:function formText(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return this.formAnnotation(r,"text",i,o,u,p,g)},formPushButton:function formPushButton(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return this.formAnnotation(r,"pushButton",i,o,u,p,g)},formCombo:function formCombo(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return this.formAnnotation(r,"combo",i,o,u,p,g)},formList:function formList(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return this.formAnnotation(r,"list",i,o,u,p,g)},formRadioButton:function formRadioButton(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return this.formAnnotation(r,"radioButton",i,o,u,p,g)},formCheckbox:function formCheckbox(r,i,o,u,p){var g=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return this.formAnnotation(r,"checkbox",i,o,u,p,g)},_addToParent:function _addToParent(r){var i=r.data.Parent;return i?(i.data.Kids||(i.data.Kids=[]),i.data.Kids.push(r)):this._root.data.AcroForm.data.Fields.push(r),this},_fieldDict:function _fieldDict(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this._acroform)throw new Error("Call document.initForms() method before adding form elements to document");var u=Object.assign({},o);return null!==i&&(u=this._resolveType(i,o)),u=this._resolveFlags(u),u=this._resolveJustify(u),u=this._resolveFont(u),u=this._resolveStrings(u),u=this._resolveColors(u),(u=this._resolveFormat(u)).T=new String(r),u.parent&&(u.Parent=u.parent,delete u.parent),u},_resolveType:function _resolveType(r,i){if("text"===r)i.FT="Tx";else if("pushButton"===r)i.FT="Btn",i.pushButton=!0;else if("radioButton"===r)i.FT="Btn",i.radioButton=!0;else if("checkbox"===r)i.FT="Btn";else if("combo"===r)i.FT="Ch",i.combo=!0;else{if("list"!==r)throw new Error("Invalid form annotation type '".concat(r,"'"));i.FT="Ch"}return i},_resolveFormat:function _resolveFormat(r){var i=r.format;if(i&&i.type){var o,u,p="";if(void 0!==vt[i.type])o="AFSpecial_Keystroke",u="AFSpecial_Format",p=vt[i.type];else{var g=i.type.charAt(0).toUpperCase()+i.type.slice(1);if(o="AF".concat(g,"_Keystroke"),u="AF".concat(g,"_Format"),"date"===i.type)o+="Ex",p=String(i.param);else if("time"===i.type)p=String(i.param);else if("number"===i.type){var y=Object.assign({},mt,i);p=String([String(y.nDec),y.sepComma?"0":"1",'"'+y.negStyle+'"',"null",'"'+y.currency+'"',String(y.currencyPrepend)].join(","))}else if("percent"===i.type){var w=Object.assign({},bt,i);p=String([String(w.nDec),w.sepComma?"0":"1"].join(","))}}r.AA=r.AA?r.AA:{},r.AA.K={S:"JavaScript",JS:new String("".concat(o,"(").concat(p,");"))},r.AA.F={S:"JavaScript",JS:new String("".concat(u,"(").concat(p,");"))}}return delete r.format,r},_resolveColors:function _resolveColors(r){var i=this._normalizeColor(r.backgroundColor);return i&&(r.MK||(r.MK={}),r.MK.BG=i),(i=this._normalizeColor(r.borderColor))&&(r.MK||(r.MK={}),r.MK.BC=i),delete r.backgroundColor,delete r.borderColor,r},_resolveFlags:function _resolveFlags(r){var i=0;return Object.keys(r).forEach((function(o){pt[o]&&(i|=pt[o],delete r[o])})),0!==i&&(r.Ff=r.Ff?r.Ff:0,r.Ff|=i),r},_resolveJustify:function _resolveJustify(r){var i=0;return void 0!==r.align&&("number"==typeof gt[r.align]&&(i=gt[r.align]),delete r.align),0!==i&&(r.Q=i),r},_resolveFont:function _resolveFont(r){if(null===this._acroform.fonts[this._font.id]&&(this._acroform.fonts[this._font.id]=this._font.ref()),this._acroform.defaultFont!==this._font.name){r.DR={Font:{}};var i=r.fontSize||0;r.DR.Font[this._font.id]=this._font.ref(),r.DA=new String("/".concat(this._font.id," ").concat(i," Tf 0 g"))}return r},_resolveStrings:function _resolveStrings(r){var i=[];function appendChoices(r){if(Array.isArray(r))for(var o=0;o<r.length;o++)"string"==typeof r[o]?i.push(new String(r[o])):i.push(r[o])}return appendChoices(r.Opt),r.select&&(appendChoices(r.select),delete r.select),i.length&&(r.Opt=i),Object.keys(yt).forEach((function(i){void 0!==r[i]&&(r[yt[i]]=r[i],delete r[i])})),["V","DV"].forEach((function(i){"string"==typeof r[i]&&(r[i]=new String(r[i]))})),r.MK&&r.MK.CA&&(r.MK.CA=new String(r.MK.CA)),r.label&&(r.MK=r.MK?r.MK:{},r.MK.CA=new String(r.label),delete r.label),r}},_t={file:function file(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i.name=i.name||r;var o,p={Type:"EmbeddedFile",Params:{}};if(!r)throw new Error("No src specified");if(u.isBuffer(r))o=r;else if(r instanceof ArrayBuffer)o=u.from(new Uint8Array(r));else{var g;if(g=/^data:(.*);base64,(.*)$/.exec(r))g[1]&&(p.Subtype=g[1].replace("/","#2F")),o=u.from(g[2],"base64");else{if(!(o=P.readFileSync(r)))throw new Error("Could not read contents of file at filepath ".concat(r));var w=P.statSync(r),_=w.birthtime,x=w.ctime;p.Params.CreationDate=_,p.Params.ModDate=x}}i.creationDate instanceof Date&&(p.Params.CreationDate=i.creationDate),i.modifiedDate instanceof Date&&(p.Params.ModDate=i.modifiedDate),i.type&&(p.Subtype=i.type.replace("/","#2F"));var k,O=y.default.MD5(y.default.lib.WordArray.create(new Uint8Array(o)));p.Params.CheckSum=new String(O),p.Params.Size=o.byteLength,this._fileRegistry||(this._fileRegistry={});var file=this._fileRegistry[i.name];file&&isEqual(p,file)?k=file.ref:((k=this.ref(p)).end(o),this._fileRegistry[i.name]=_objectSpread2(_objectSpread2({},p),{},{ref:k}));var I={Type:"Filespec",F:new String(i.name),EF:{F:k},UF:new String(i.name)};i.description&&(I.Desc=new String(i.description));var B=this.ref(I);return B.end(),i.hidden||this.addNamedEmbeddedFile(i.name,B),B}};function isEqual(r,i){return r.Subtype===i.Subtype&&r.Params.CheckSum.toString()===i.Params.CheckSum.toString()&&r.Params.Size===i.Params.Size&&r.Params.CreationDate===i.Params.CreationDate&&r.Params.ModDate===i.Params.ModDate}var St=function(r){_inherits(PDFDocument,r);var i=_createSuper(PDFDocument);function PDFDocument(){var r,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};switch(_classCallCheck(this,PDFDocument),(r=i.call(this,o)).options=o,o.pdfVersion){case"1.4":r.version=1.4;break;case"1.5":r.version=1.5;break;case"1.6":r.version=1.6;break;case"1.7":case"1.7ext3":r.version=1.7;break;default:r.version=1.3}r.compress=null==r.options.compress||r.options.compress,r._pageBuffer=[],r._pageBufferStart=0,r._offsets=[],r._waiting=0,r._ended=!1,r._offset=0;var u=r.ref({Type:"Pages",Count:0,Kids:[]}),p=r.ref({Dests:new K});if(r._root=r.ref({Type:"Catalog",Pages:u,Names:p}),r.options.lang&&(r._root.data.Lang=new String(r.options.lang)),r.page=null,r.initColor(),r.initVector(),r.initFonts(o.font),r.initText(),r.initImages(),r.initOutline(),r.initMarkings(o),r.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},r.options.info)for(var g in r.options.info){var y=r.options.info[g];r.info[g]=y}return r.options.displayTitle&&(r._root.data.ViewerPreferences=r.ref({DisplayDocTitle:!0})),r._id=pe.generateFileID(r.info),r._security=pe.create(_assertThisInitialized(r),o),r._write("%PDF-".concat(r.version)),r._write("%ÿÿÿÿ"),!1!==r.options.autoFirstPage&&r.addPage(),r}return _createClass(PDFDocument,[{key:"addPage",value:function addPage(r){null==r&&(r=this.options),this.options.bufferPages||this.flushPages(),this.page=new X(this,r),this._pageBuffer.push(this.page);var i=this._root.data.Pages.data;return i.Kids.push(this.page.dictionary),i.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this.emit("pageAdded"),this}},{key:"continueOnNewPage",value:function continueOnNewPage(r){var i=this.endPageMarkings(this.page);return this.addPage(r),this.initPageMarkings(i),this}},{key:"bufferedPageRange",value:function bufferedPageRange(){return{start:this._pageBufferStart,count:this._pageBuffer.length}}},{key:"switchToPage",value:function switchToPage(r){var i;if(!(i=this._pageBuffer[r-this._pageBufferStart]))throw new Error("switchToPage(".concat(r,") out of bounds, current buffer covers pages ").concat(this._pageBufferStart," to ").concat(this._pageBufferStart+this._pageBuffer.length-1));return this.page=i}},{key:"flushPages",value:function flushPages(){var r=this._pageBuffer;this._pageBuffer=[],this._pageBufferStart+=r.length;var i,o=_createForOfIteratorHelper(r);try{for(o.s();!(i=o.n()).done;){var u=i.value;this.endPageMarkings(u),u.end()}}catch(r){o.e(r)}finally{o.f()}}},{key:"addNamedDestination",value:function addNamedDestination(r){for(var i=arguments.length,o=new Array(i>1?i-1:0),u=1;u<i;u++)o[u-1]=arguments[u];0===o.length&&(o=["XYZ",null,null,null]),"XYZ"===o[0]&&null!==o[2]&&(o[2]=this.page.height-o[2]),o.unshift(this.page.dictionary),this._root.data.Names.data.Dests.add(r,o)}},{key:"addNamedEmbeddedFile",value:function addNamedEmbeddedFile(r,i){this._root.data.Names.data.EmbeddedFiles||(this._root.data.Names.data.EmbeddedFiles=new K({limits:!1})),this._root.data.Names.data.EmbeddedFiles.add(r,i)}},{key:"addNamedJavaScript",value:function addNamedJavaScript(r,i){this._root.data.Names.data.JavaScript||(this._root.data.Names.data.JavaScript=new K);var o={JS:new String(i),S:"JavaScript"};this._root.data.Names.data.JavaScript.add(r,o)}},{key:"ref",value:function ref(r){var ref=new U(this,this._offsets.length+1,r);return this._offsets.push(null),this._waiting++,ref}},{key:"_read",value:function _read(){}},{key:"_write",value:function _write(r){return u.isBuffer(r)||(r=u.from(r+"\n","binary")),this.push(r),this._offset+=r.length}},{key:"addContent",value:function addContent(r){return this.page.write(r),this}},{key:"_refEnd",value:function _refEnd(r){if(this._offsets[r.id-1]=r.offset,0==--this._waiting&&this._ended)return this._finalize(),this._ended=!1}},{key:"write",value:function write(r,i){new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream.");return this.pipe(P.createWriteStream(r)),this.end(),this.once("end",i)}},{key:"end",value:function end(){for(var r in this.flushPages(),this._info=this.ref(),this.info){var i=this.info[r];"string"==typeof i&&(i=new String(i));var o=this.ref(i);o.end(),this._info.data[r]=o}for(var u in this._info.end(),this._fontFamilies){this._fontFamilies[u].finalize()}return this.endOutline(),this.endMarkings(),this._root.end(),this._root.data.Pages.end(),this._root.data.Names.end(),this.endAcroForm(),this._root.data.ViewerPreferences&&this._root.data.ViewerPreferences.end(),this._security&&this._security.end(),0===this._waiting?this._finalize():this._ended=!0}},{key:"_finalize",value:function _finalize(){var r=this._offset;this._write("xref"),this._write("0 ".concat(this._offsets.length+1)),this._write("0000000000 65535 f ");var i,o=_createForOfIteratorHelper(this._offsets);try{for(o.s();!(i=o.n()).done;){var u=i.value;u="0000000000".concat(u).slice(-10),this._write(u+" 00000 n ")}}catch(r){o.e(r)}finally{o.f()}var p={Size:this._offsets.length+1,Root:this._root,Info:this._info,ID:[this._id,this._id]};return this._security&&(p.Encrypt=this._security.dictionary),this._write("trailer"),this._write(W.convert(p)),this._write("startxref"),this._write("".concat(r)),this._write("%%EOF"),this.push(null)}},{key:"toString",value:function toString(){return"[object PDFDocument]"}}]),PDFDocument}(p.default.Readable),xt=function mixin(r){Object.assign(St.prototype,r)};xt(Ie),xt(Ue),xt(Je),xt(et),xt(at),xt(st),xt(lt),xt(dt),xt(wt),xt(_t),St.LineWrapper=Qe;var Ct=St;i.default=Ct},4559:function(r,i,o){"use strict";o(3290);var u=o(8823),p=u.Buffer;function copyProps(r,i){for(var o in r)i[o]=r[o]}function SafeBuffer(r,i,o){return p(r,i,o)}p.from&&p.alloc&&p.allocUnsafe&&p.allocUnsafeSlow?r.exports=u:(copyProps(u,i),i.Buffer=SafeBuffer),copyProps(p,SafeBuffer),SafeBuffer.from=function(r,i,o){if("number"==typeof r)throw new TypeError("Argument must not be a number");return p(r,i,o)},SafeBuffer.alloc=function(r,i,o){if("number"!=typeof r)throw new TypeError("Argument must be a number");var u=p(r);return void 0!==i?"string"==typeof o?u.fill(i,o):u.fill(i):u.fill(0),u},SafeBuffer.allocUnsafe=function(r){if("number"!=typeof r)throw new TypeError("Argument must be a number");return p(r)},SafeBuffer.allocUnsafeSlow=function(r){if("number"!=typeof r)throw new TypeError("Argument must be a number");return u.SlowBuffer(r)}},4781:function(r,i,o){"use strict";o(7042),o(6992),o(1539),o(2472),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(9135);var u=o(311),p=o(1753).swap32LE,g=function(){function UnicodeTrie(r){var i="function"==typeof r.readUInt32BE&&"function"==typeof r.slice;if(i||r instanceof Uint8Array){var o;if(i)this.highStart=r.readUInt32LE(0),this.errorValue=r.readUInt32LE(4),o=r.readUInt32LE(8),r=r.slice(12);else{var g=new DataView(r.buffer);this.highStart=g.getUint32(0,!0),this.errorValue=g.getUint32(4,!0),o=g.getUint32(8,!0),r=r.subarray(12)}r=u(r,new Uint8Array(o)),r=u(r,new Uint8Array(o)),p(r),this.data=new Uint32Array(r.buffer)}else{var y=r;this.data=y.data,this.highStart=y.highStart,this.errorValue=y.errorValue}}return UnicodeTrie.prototype.get=function get(r){var i;return r<0||r>1114111?this.errorValue:r<55296||r>56319&&r<=65535?(i=(this.data[r>>5]<<2)+(31&r),this.data[i]):r<=65535?(i=(this.data[2048+(r-55296>>5)]<<2)+(31&r),this.data[i]):r<this.highStart?(i=this.data[2080+(r>>11)],i=((i=this.data[i+(r>>5&63)])<<2)+(31&r),this.data[i]):this.data[this.data.length-4]},UnicodeTrie}();r.exports=g},1753:function(r,i,o){"use strict";o(6992),o(1539),o(2472),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(9135);var u=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],p=function swap(r,i,o){var u=r[i];r[i]=r[o],r[o]=u};r.exports={swap32LE:function swap32LE(r){u&&function swap32(r){for(var i=r.length,o=0;o<i;o+=4)p(r,o,o+3),p(r,o+1,o+2)}(r)}}},8071:function(r,i,o){"use strict";var u=o(8519);r.exports=u},8519:function(r,i,o){"use strict";r=o.nmd(r),o(8309),o(7941),o(3210),o(4916),o(4723),o(3728),o(5306),o(7042),o(9653),o(3123),o(2222),o(6992),o(1539),o(3948),o(9254),o(3290);r&&void 0!==r.exports&&(r.exports=function SVGtoPDF(r,i,o,u,p){var g={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgrey:[211,211,211],lightgreen:[144,238,144],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0]},y={black:[g.black,1],white:[g.white,1],transparent:[g.black,0]},w={quot:34,amp:38,lt:60,gt:62,apos:39,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,circ:710,tilde:732,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,permil:8240,lsaquo:8249,rsaquo:8250,euro:8364,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,fnof:402,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,bull:8226,hellip:8230,prime:8242,Prime:8243,oline:8254,frasl:8260,weierp:8472,image:8465,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},_={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0},x={A3:!0,A4:!0,a3:!0,a4:!0},k={color:{inherit:!0,initial:void 0},visibility:{inherit:!0,initial:"visible",values:{hidden:"hidden",collapse:"hidden",visible:"visible"}},fill:{inherit:!0,initial:y.black},stroke:{inherit:!0,initial:"none"},"stop-color":{inherit:!1,initial:y.black},"fill-opacity":{inherit:!0,initial:1},"stroke-opacity":{inherit:!0,initial:1},"stop-opacity":{inherit:!1,initial:1},"fill-rule":{inherit:!0,initial:"nonzero",values:{nonzero:"nonzero",evenodd:"evenodd"}},"clip-rule":{inherit:!0,initial:"nonzero",values:{nonzero:"nonzero",evenodd:"evenodd"}},"stroke-width":{inherit:!0,initial:1},"stroke-dasharray":{inherit:!0,initial:[]},"stroke-dashoffset":{inherit:!0,initial:0},"stroke-miterlimit":{inherit:!0,initial:4},"stroke-linejoin":{inherit:!0,initial:"miter",values:{miter:"miter",round:"round",bevel:"bevel"}},"stroke-linecap":{inherit:!0,initial:"butt",values:{butt:"butt",round:"round",square:"square"}},"font-size":{inherit:!0,initial:16,values:{"xx-small":9,"x-small":10,small:13,medium:16,large:18,"x-large":24,"xx-large":32}},"font-family":{inherit:!0,initial:"sans-serif"},"font-weight":{inherit:!0,initial:"normal",values:{600:"bold",700:"bold",800:"bold",900:"bold",bold:"bold",bolder:"bold",500:"normal",400:"normal",300:"normal",200:"normal",100:"normal",normal:"normal",lighter:"normal"}},"font-style":{inherit:!0,initial:"normal",values:{italic:"italic",oblique:"italic",normal:"normal"}},"text-anchor":{inherit:!0,initial:"start",values:{start:"start",middle:"middle",end:"end"}},direction:{inherit:!0,initial:"ltr",values:{ltr:"ltr",rtl:"rtl"}},"dominant-baseline":{inherit:!0,initial:"baseline",values:{auto:"baseline",baseline:"baseline","before-edge":"before-edge","text-before-edge":"before-edge",middle:"middle",central:"central","after-edge":"after-edge","text-after-edge":"after-edge",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"mathematical"}},"alignment-baseline":{inherit:!1,initial:void 0,values:{auto:"baseline",baseline:"baseline","before-edge":"before-edge","text-before-edge":"before-edge",middle:"middle",central:"central","after-edge":"after-edge","text-after-edge":"after-edge",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"mathematical"}},"baseline-shift":{inherit:!0,initial:"baseline",values:{baseline:"baseline",sub:"sub",super:"super"}},"word-spacing":{inherit:!0,initial:0,values:{normal:0}},"letter-spacing":{inherit:!0,initial:0,values:{normal:0}},"text-decoration":{inherit:!1,initial:"none",values:{none:"none",underline:"underline",overline:"overline","line-through":"line-through"}},"xml:space":{inherit:!0,initial:"default",css:"white-space",values:{preserve:"preserve",default:"default",pre:"preserve","pre-line":"preserve","pre-wrap":"preserve",nowrap:"default"}},"marker-start":{inherit:!0,initial:"none"},"marker-mid":{inherit:!0,initial:"none"},"marker-end":{inherit:!0,initial:"none"},opacity:{inherit:!1,initial:1},transform:{inherit:!1,initial:[1,0,0,1,0,0]},display:{inherit:!1,initial:"inline",values:{none:"none",inline:"inline",block:"inline"}},"clip-path":{inherit:!1,initial:"none"},mask:{inherit:!1,initial:"none"},overflow:{inherit:!1,initial:"hidden",values:{hidden:"hidden",scroll:"hidden",visible:"visible"}}};function docBeginGroup(i){var o=new function PDFGroup(){};return o.name="G"+(r._groupCount=(r._groupCount||0)+1),o.resources=r.ref(),o.xobj=r.ref({Type:"XObject",Subtype:"Form",FormType:1,BBox:i,Group:{S:"Transparency",CS:"DeviceRGB",I:!0,K:!1},Resources:o.resources}),o.xobj.write(""),o.savedMatrix=r._ctm,o.savedPage=r.page,Ae.push(o),r._ctm=[1,0,0,1,0,0],r.page={width:r.page.width,height:r.page.height,write:function write(r){o.xobj.write(r)},fonts:{},xobjects:{},ext_gstates:{},patterns:{}},o}function docEndGroup(i){if(i!==Ae.pop())throw"Group not matching";Object.keys(r.page.fonts).length&&(i.resources.data.Font=r.page.fonts),Object.keys(r.page.xobjects).length&&(i.resources.data.XObject=r.page.xobjects),Object.keys(r.page.ext_gstates).length&&(i.resources.data.ExtGState=r.page.ext_gstates),Object.keys(r.page.patterns).length&&(i.resources.data.Pattern=r.page.patterns),i.resources.end(),i.xobj.end(),r._ctm=i.savedMatrix,r.page=i.savedPage}function docInsertGroup(i){r.page.xobjects[i.name]=i.xobj,r.addContent("/"+i.name+" Do")}function docApplyMask(i,o){var u="M"+(r._maskCount=(r._maskCount||0)+1),p=r.ref({Type:"ExtGState",CA:1,ca:1,BM:"Normal",SMask:{S:"Luminosity",G:i.xobj,BC:o?[0,0,0]:[1,1,1]}});p.end(),r.page.ext_gstates[u]=p,r.addContent("/"+u+" gs")}function docCreatePattern(r,i,o,u){var p=new function PDFPattern(){};return p.group=r,p.dx=i,p.dy=o,p.matrix=u||[1,0,0,1,0,0],p}function docUsePattern(i,o){var u,p="P"+(r._patternCount=(r._patternCount||0)+1),g=r.ref({Type:"Pattern",PatternType:1,PaintType:1,TilingType:2,BBox:[0,0,i.dx,i.dy],XStep:i.dx,YStep:i.dy,Matrix:multiplyMatrix(r._ctm,i.matrix),Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],XObject:(u={},u[i.group.name]=i.group.xobj,u)}});g.write("/"+i.group.name+" Do"),g.end(),r.page.patterns[p]=g,o?(r.addContent("/Pattern CS"),r.addContent("/"+p+" SCN")):(r.addContent("/Pattern cs"),r.addContent("/"+p+" scn"))}function docSetTextMode(i,o){var u=i&&o?2:o?1:i?0:3;r.addContent(u+" Tr")}function docFillColor(i){"PDFPattern"===i[0].constructor.name?(r.fillOpacity(i[1]),docUsePattern(i[0],!1)):r.fillColor(i[0],i[1])}function docStrokeColor(i){"PDFPattern"===i[0].constructor.name?(r.strokeOpacity(i[1]),docUsePattern(i[0],!0)):r.strokeColor(i[0],i[1])}function parseXml(r){var i=function SvgNode(r,i,o,u){this.error=u,this.nodeName=r,this.nodeValue=o,this.nodeType=i,this.attributes=Object.create(null),this.childNodes=[],this.parentNode=null,this.id="",this.textContent="",this.classList=[]};i.prototype.getAttribute=function(r){return null!=this.attributes[r]?this.attributes[r]:null},i.prototype.getElementById=function(r){var i=null;return function recursive(o){if(!i&&1===o.nodeType){o.id===r&&(i=o);for(var u=0;u<o.childNodes.length;u++)recursive(o.childNodes[u])}}(this),i},i.prototype.getElementsByTagName=function(r){var i=[];return function recursive(o){if(1===o.nodeType){o.nodeName===r&&i.push(o);for(var u=0;u<o.childNodes.length;u++)recursive(o.childNodes[u])}}(this),i};for(var o,u,p=new P(r.trim()),g=!1,y=function recursive(){var r,o;if(r=p.match(/^<([\w:.-]+)\s*/,!0)){for(var u=new i(r[1],1,null,g);r=p.match(/^([\w:.-]+)(?:\s*=\s*"([^"]*)"|\s*=\s*'([^']*)')?\s*/,!0);){var y=r[1],w=decodeEntities(r[2]||r[3]||"");u.attributes[y]?(_e('parseXml: duplicate attribute "'+y+'"'),g=!0):(u.attributes[y]=w,"id"===y&&(u.id=w),"class"===y&&(u.classList=w.split(" ")))}if(p.match(/^>/)){for(;o=recursive();)u.childNodes.push(o),o.parentNode=u,u.textContent+=3===o.nodeType||4===o.nodeType?o.nodeValue:o.textContent;return(r=p.match(/^<\/([\w:.-]+)\s*>/,!0))?(r[1]===u.nodeName||(_e('parseXml: tag not matching, opening "'+u.nodeName+'" & closing "'+r[1]+'"'),g=!0),u):(_e('parseXml: tag not matching, opening "'+u.nodeName+'" & not closing'),g=!0,u)}if(p.match(/^\/>/))return u;_e('parseXml: tag could not be parsed "'+u.nodeName+'"'),g=!0}else{if(r=p.match(/^<!--[\s\S]*?-->/))return new i(null,8,r,g);if(r=p.match(/^<\?[\s\S]*?\?>/))return new i(null,7,r,g);if(r=p.match(/^<!DOCTYPE\s*([\s\S]*?)>/))return new i(null,10,r,g);if(r=p.match(/^<!\[CDATA\[([\s\S]*?)\]\]>/,!0))return new i("#cdata-section",4,r[1],g);if(r=p.match(/^([^<]+)/,!0))return new i("#text",3,decodeEntities(r[1]),g)}};u=y();)1!==u.nodeType||o?(1===u.nodeType||3===u.nodeType&&""!==u.nodeValue.trim())&&_e("parseXml: data after document end has been discarded"):o=u;return p.matchAll()&&_e("parseXml: parsing error"),o}function decodeEntities(r){return r.replace(/&(?:#([0-9]+)|#[xX]([0-9A-Fa-f]+)|([0-9A-Za-z]+));/g,(function(r,i,o,u){return i?String.fromCharCode(parseInt(i,10)):o?String.fromCharCode(parseInt(o,16)):u&&w[u]?String.fromCharCode(w[u]):r}))}function parseColor(r){var i,o;return r=(r||"").trim(),(i=g[r])?o=[i.slice(),1]:(i=r.match(/^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9.]+)\s*\)$/i))?(i[1]=parseInt(i[1]),i[2]=parseInt(i[2]),i[3]=parseInt(i[3]),i[4]=parseFloat(i[4]),i[1]<256&&i[2]<256&&i[3]<256&&i[4]<=1&&(o=[i.slice(1,4),i[4]])):(i=r.match(/^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/i))?(i[1]=parseInt(i[1]),i[2]=parseInt(i[2]),i[3]=parseInt(i[3]),i[1]<256&&i[2]<256&&i[3]<256&&(o=[i.slice(1,4),1])):(i=r.match(/^rgb\(\s*([0-9.]+)%\s*,\s*([0-9.]+)%\s*,\s*([0-9.]+)%\s*\)$/i))?(i[1]=2.55*parseFloat(i[1]),i[2]=2.55*parseFloat(i[2]),i[3]=2.55*parseFloat(i[3]),i[1]<256&&i[2]<256&&i[3]<256&&(o=[i.slice(1,4),1])):(i=r.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i))?o=[[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)],1]:(i=r.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i))&&(o=[[17*parseInt(i[1],16),17*parseInt(i[2],16),17*parseInt(i[3],16)],1]),Ce?Ce(o,r):o}function opacityToColor(r,i,o){var u=r[0].slice(),p=r[1]*i;if(o){for(var g=0;g<r.length;g++)u[g]*=p;return[u,1]}return[u,p]}function multiplyMatrix(){function multiply(r,i){return[r[0]*i[0]+r[2]*i[1],r[1]*i[0]+r[3]*i[1],r[0]*i[2]+r[2]*i[3],r[1]*i[2]+r[3]*i[3],r[0]*i[4]+r[2]*i[5]+r[4],r[1]*i[4]+r[3]*i[5]+r[5]]}for(var r=arguments[0],i=1;i<arguments.length;i++)r=multiply(r,arguments[i]);return r}function transformPoint(r,i){return[i[0]*r[0]+i[2]*r[1]+i[4],i[1]*r[0]+i[3]*r[1]+i[5]]}function getGlobalMatrix(){for(var i=r._ctm,o=Ae.length-1;o>=0;o--)i=multiplyMatrix(Ae[o].savedMatrix,i);return i}function getPageBBox(){return(new B).M(0,0).L(r.page.width,0).L(r.page.width,r.page.height).L(0,r.page.height).transform(inverseMatrix(getGlobalMatrix())).getBoundingBox()}function inverseMatrix(r){var i=r[0]*r[3]-r[1]*r[2];return[r[3]/i,-r[1]/i,-r[2]/i,r[0]/i,(r[2]*r[5]-r[3]*r[4])/i,(r[1]*r[4]-r[0]*r[5])/i]}function validateMatrix(r){var i=validateNumber(r[0]),o=validateNumber(r[1]),u=validateNumber(r[2]),p=validateNumber(r[3]),g=validateNumber(r[4]),y=validateNumber(r[5]);if(isNotEqual(i*p-o*u,0))return[i,o,u,p,g,y]}function solveEquation(r){var i=r[2]||0,o=r[1]||0,u=r[0]||0;if(isEqual(i,0)&&isEqual(o,0))return[];if(isEqual(i,0))return[-u/o];var p=o*o-4*i*u;return isNotEqual(p,0)&&p>0?[(-o+Math.sqrt(p))/(2*i),(-o-Math.sqrt(p))/(2*i)]:isEqual(p,0)?[-o/(2*i)]:[]}function getCurveValue(r,i){return(i[0]||0)+(i[1]||0)*r+(i[2]||0)*r*r+(i[3]||0)*r*r*r}function isEqual(r,i){return Math.abs(r-i)<1e-10}function isNotEqual(r,i){return Math.abs(r-i)>=1e-10}function validateNumber(r){return r>-1e21&&r<1e21?Math.round(1e6*r)/1e6:0}function parseTranform(r){for(var i,o=new P((r||"").trim()),u=[1,0,0,1,0,0];i=o.match(/^([A-Za-z]+)\s*[(]([^(]+)[)]/,!0);){for(var p=i[1],g=[],y=new P(i[2].trim()),w=void 0;w=y.matchNumber();)g.push(Number(w)),y.matchSeparator();if("matrix"===p&&6===g.length)u=multiplyMatrix(u,[g[0],g[1],g[2],g[3],g[4],g[5]]);else if("translate"===p&&2===g.length)u=multiplyMatrix(u,[1,0,0,1,g[0],g[1]]);else if("translate"===p&&1===g.length)u=multiplyMatrix(u,[1,0,0,1,g[0],0]);else if("scale"===p&&2===g.length)u=multiplyMatrix(u,[g[0],0,0,g[1],0,0]);else if("scale"===p&&1===g.length)u=multiplyMatrix(u,[g[0],0,0,g[0],0,0]);else if("rotate"===p&&3===g.length){var _=g[0]*Math.PI/180;u=multiplyMatrix(u,[1,0,0,1,g[1],g[2]],[Math.cos(_),Math.sin(_),-Math.sin(_),Math.cos(_),0,0],[1,0,0,1,-g[1],-g[2]])}else if("rotate"===p&&1===g.length){var x=g[0]*Math.PI/180;u=multiplyMatrix(u,[Math.cos(x),Math.sin(x),-Math.sin(x),Math.cos(x),0,0])}else if("skewX"===p&&1===g.length){var k=g[0]*Math.PI/180;u=multiplyMatrix(u,[1,0,Math.tan(k),1,0,0])}else{if("skewY"!==p||1!==g.length)return;var O=g[0]*Math.PI/180;u=multiplyMatrix(u,[1,Math.tan(O),0,1,0,0])}o.matchSeparator()}if(!o.matchAll())return u}function parseAspectRatio(r,i,o,u,p,g){var y=(r||"").trim().match(/^(none)$|^x(Min|Mid|Max)Y(Min|Mid|Max)(?:\s+(meet|slice))?$/)||[],w=y[1]||y[4]||"meet",_=y[2]||"Mid",x=y[3]||"Mid",k=i/u,P=o/p,O={Min:0,Mid:.5,Max:1}[_]-(g||0),I={Min:0,Mid:.5,Max:1}[x]-(g||0);return"slice"===w?P=k=Math.max(k,P):"meet"===w&&(P=k=Math.min(k,P)),[k,0,0,P,O*(i-u*k),I*(o-p*P)]}function parseStyleAttr(r){var i=Object.create(null);r=(r||"").trim().split(/;/);for(var o=0;o<r.length;o++){var u=(r[o].split(":")[0]||"").trim(),p=(r[o].split(":")[1]||"").trim();u&&(i[u]=p)}if(i.marker&&(i["marker-start"]||(i["marker-start"]=i.marker),i["marker-mid"]||(i["marker-mid"]=i.marker),i["marker-end"]||(i["marker-end"]=i.marker)),i.font){for(var g=null,y=null,w="normal",_="normal",x="normal",k=i.font.split(/\s+/),P=0;P<k.length;P++)switch(k[P]){case"normal":break;case"italic":case"oblique":w=k[P];break;case"small-caps":x=k[P];break;case"bold":case"bolder":case"lighter":case"100":case"200":case"300":case"400":case"500":case"600":case"700":case"800":case"900":_=k[P];break;default:y?g?g+=" "+k[P]:g=k[P]:y=k[P].split("/")[0]}i["font-style"]||(i["font-style"]=w),i["font-variant"]||(i["font-variant"]=x),i["font-weight"]||(i["font-weight"]=_),i["font-size"]||(i["font-size"]=y),i["font-family"]||(i["font-family"]=g)}return i}function parseSelector(r){for(var i,o=r.split(/(?=[.#])/g),u=[],p=[],g=[],y=0;y<o.length;y++)if(i=o[y].match(/^[#]([_A-Za-z0-9-]+)$/))u.push(i[1]);else if(i=o[y].match(/^[.]([_A-Za-z0-9-]+)$/))p.push(i[1]);else if(i=o[y].match(/^([_A-Za-z0-9-]+)$/))g.push(i[1]);else if("*"!==o[y])return;return{tags:g,ids:u,classes:p,specificity:1e4*u.length+100*p.length+g.length}}function parseStyleSheet(r){for(var i,o=new P(r.trim()),u=[];i=o.match(/^\s*([^\{\}]*?)\s*\{([^\{\}]*?)\}/,!0);)for(var p=i[1].split(/\s*,\s*/g),g=parseStyleAttr(i[2]),y=0;y<p.length;y++){var w=parseSelector(p[y]);w&&u.push({selector:w,css:g})}return u}function matchesSelector(r,i){if(1!==r.nodeType)return!1;for(var o=0;o<i.tags.length;o++)if(i.tags[o]!==r.nodeName)return!1;for(var u=0;u<i.ids.length;u++)if(i.ids[u]!==r.id)return!1;for(var p=0;p<i.classes.length;p++)if(-1===r.classList.indexOf(i.classes[p]))return!1;return!0}function combineArrays(r,i){return r.concat(i.slice(r.length))}function getAscent(r,i){return Math.max(r.ascender,(r.bbox[3]||r.bbox.maxY)*(r.scale||1))*i/1e3}function getDescent(r,i){return Math.min(r.descender,(r.bbox[1]||r.bbox.minY)*(r.scale||1))*i/1e3}function getTextPos(r,i,o){for(var u=r.encode(""+o),p=u[0],g=u[1],y=[],w=0;w<p.length;w++){var _=r.unicode?r.unicode[parseInt(p[w],16)]:[o.charCodeAt(w)];y.push({glyph:p[w],unicode:_,width:g[w].advanceWidth*i/1e3,xOffset:g[w].xOffset*i/1e3,yOffset:g[w].yOffset*i/1e3,xAdvance:g[w].xAdvance*i/1e3,yAdvance:g[w].yAdvance*i/1e3})}return y}function createSVGElement(r,i){switch(r.nodeName){case"use":return new U(r,i);case"symbol":return new j(r,i);case"g":return new G(r,i);case"a":return new X(r,i);case"svg":return new K(r,i);case"image":return new Y(r,i);case"rect":return new te(r,i);case"circle":return new re(r,i);case"ellipse":return new ne(r,i);case"line":return new ie(r,i);case"polyline":return new oe(r,i);case"polygon":return new ae(r,i);case"path":return new se(r,i);case"text":return new ge(r,i);case"tspan":return new de(r,i);case"textPath":return new pe(r,i);case"#text":case"#cdata-section":return new he(r,i);default:return new R(r,i)}}var P=function StringParser(r){this.match=function(i,o){var u=r.match(i);if(u&&0===u.index)return r=r.substring(u[0].length),o?u:u[0]},this.matchSeparator=function(){return this.match(/^(?:\s*,\s*|\s*|)/)},this.matchSpace=function(){return this.match(/^(?:\s*)/)},this.matchLengthUnit=function(){return this.match(/^(?:px|pt|cm|mm|in|pc|em|ex|%|)/)},this.matchNumber=function(){return this.match(/^(?:[-+]?(?:[0-9]+[.][0-9]+|[0-9]+[.]|[.][0-9]+|[0-9]+)(?:[eE][-+]?[0-9]+)?)/)},this.matchAll=function(){return this.match(/^[\s\S]+/)}},O=function BezierSegment(r,i,o,u,p,g,y,w){for(var _=6*Pe,x=[r,-3*r+3*o,3*r-6*o+3*p,3*o-r-3*p+y],k=[i,-3*i+3*u,3*i-6*u+3*g,3*u-i-3*g+w],P=[-3*r+3*o,6*r-12*o+6*p,-3*r+9*o-9*p+3*y],O=[-3*i+3*u,6*i-12*u+6*g,-3*i+9*u-9*g+3*w],I=[0],B=1;B<=_;B++){var R=(B-.5)/_,D=getCurveValue(R,P)/_,N=getCurveValue(R,O)/_,W=Math.sqrt(D*D+N*N);I[B]=I[B-1]+W}this.totalLength=I[_],this.startPoint=[r,i,isEqual(r,o)&&isEqual(i,u)?Math.atan2(g-u,p-o):Math.atan2(u-i,o-r)],this.endPoint=[y,w,isEqual(p,y)&&isEqual(g,w)?Math.atan2(g-u,p-o):Math.atan2(w-g,y-p)],this.getBoundingBox=function(){var r,i=getCurveValue(0,x),o=getCurveValue(0,k),u=getCurveValue(1,x),p=getCurveValue(1,k);i>u&&(r=u,u=i,i=r),o>p&&(r=p,p=o,o=r);for(var g=solveEquation(P),y=0;y<g.length;y++)if(g[y]>=0&&g[y]<=1){var w=getCurveValue(g[y],x);w<i&&(i=w),w>u&&(u=w)}for(var _=solveEquation(O),I=0;I<_.length;I++)if(_[I]>=0&&_[I]<=1){var B=getCurveValue(_[I],k);B<o&&(o=B),B>p&&(p=B)}return[i,o,u,p]},this.getPointAtLength=function(r){if(isEqual(r,0))return this.startPoint;if(isEqual(r,this.totalLength))return this.endPoint;if(!(r<0||r>this.totalLength))for(var i=1;i<=_;i++){var o=I[i-1],u=I[i];if(o<=r&&r<=u){var p=(i-(u-r)/(u-o))/_,g=getCurveValue(p,x),y=getCurveValue(p,k),w=getCurveValue(p,P),B=getCurveValue(p,O);return[g,y,Math.atan2(B,w)]}}}},I=function LineSegment(r,i,o,u){this.totalLength=Math.sqrt((o-r)*(o-r)+(u-i)*(u-i)),this.startPoint=[r,i,Math.atan2(u-i,o-r)],this.endPoint=[o,u,Math.atan2(u-i,o-r)],this.getBoundingBox=function(){return[Math.min(this.startPoint[0],this.endPoint[0]),Math.min(this.startPoint[1],this.endPoint[1]),Math.max(this.startPoint[0],this.endPoint[0]),Math.max(this.startPoint[1],this.endPoint[1])]},this.getPointAtLength=function(r){if(r>=0&&r<=this.totalLength){var i=r/this.totalLength||0;return[this.startPoint[0]+i*(this.endPoint[0]-this.startPoint[0]),this.startPoint[1]+i*(this.endPoint[1]-this.startPoint[1]),this.startPoint[2]]}}},B=function SvgShape(){this.pathCommands=[],this.pathSegments=[],this.startPoint=null,this.endPoint=null,this.totalLength=0;var i,o,u,p=0,g=0,y=0,w=0;this.move=function(r,i){return p=y=r,g=w=i,null},this.line=function(r,i){var o=new I(y,w,r,i);return y=r,w=i,o},this.curve=function(r,i,o,u,p,g){var _=new O(y,w,r,i,o,u,p,g);return y=p,w=g,_},this.close=function(){var r=new I(y,w,p,g);return y=p,w=g,r},this.addCommand=function(r){this.pathCommands.push(r);var i=this[r[0]].apply(this,r.slice(3));i&&(i.hasStart=r[1],i.hasEnd=r[2],this.startPoint=this.startPoint||i.startPoint,this.endPoint=i.endPoint,this.pathSegments.push(i),this.totalLength+=i.totalLength)},this.M=function(r,o){return this.addCommand(["move",!0,!0,r,o]),i="M",this},this.m=function(r,i){return this.M(y+r,w+i)},this.Z=this.z=function(){return this.addCommand(["close",!0,!0]),i="Z",this},this.L=function(r,o){return this.addCommand(["line",!0,!0,r,o]),i="L",this},this.l=function(r,i){return this.L(y+r,w+i)},this.H=function(r){return this.L(r,w)},this.h=function(r){return this.L(y+r,w)},this.V=function(r){return this.L(y,r)},this.v=function(r){return this.L(y,w+r)},this.C=function(r,p,g,y,w,_){return this.addCommand(["curve",!0,!0,r,p,g,y,w,_]),i="C",o=g,u=y,this},this.c=function(r,i,o,u,p,g){return this.C(y+r,w+i,y+o,w+u,y+p,w+g)},this.S=function(r,p,g,_){return this.C(y+("C"===i?y-o:0),w+("C"===i?w-u:0),r,p,g,_)},this.s=function(r,p,g,_){return this.C(y+("C"===i?y-o:0),w+("C"===i?w-u:0),y+r,w+p,y+g,w+_)},this.Q=function(r,p,g,_){var x=y+2/3*(r-y),k=w+2/3*(p-w),P=g+2/3*(r-g),O=_+2/3*(p-_);return this.addCommand(["curve",!0,!0,x,k,P,O,g,_]),i="Q",o=r,u=p,this},this.q=function(r,i,o,u){return this.Q(y+r,w+i,y+o,w+u)},this.T=function(r,p){return this.Q(y+("Q"===i?y-o:0),w+("Q"===i?w-u:0),r,p)},this.t=function(r,p){return this.Q(y+("Q"===i?y-o:0),w+("Q"===i?w-u:0),y+r,w+p)},this.A=function(r,o,u,p,g,_,x){if(isEqual(r,0)||isEqual(o,0))this.addCommand(["line",!0,!0,_,x]);else{u*=Math.PI/180,r=Math.abs(r),o=Math.abs(o),p=1*!!p,g=1*!!g;var k=Math.cos(u)*(y-_)/2+Math.sin(u)*(w-x)/2,P=Math.cos(u)*(w-x)/2-Math.sin(u)*(y-_)/2,O=k*k/(r*r)+P*P/(o*o);O>1&&(r*=Math.sqrt(O),o*=Math.sqrt(O));var I=Math.sqrt(Math.max(0,r*r*o*o-r*r*P*P-o*o*k*k)/(r*r*P*P+o*o*k*k)),B=(p===g?-1:1)*I*r*P/o,R=(p===g?1:-1)*I*o*k/r,D=Math.cos(u)*B-Math.sin(u)*R+(y+_)/2,N=Math.sin(u)*B+Math.cos(u)*R+(w+x)/2,W=Math.atan2((P-R)/o,(k-B)/r),U=Math.atan2((-P-R)/o,(-k-B)/r);0===g&&U-W>0?U-=2*Math.PI:1===g&&U-W<0&&(U+=2*Math.PI);for(var j=Math.ceil(Math.abs(U-W)/(Math.PI/Pe)),G=0;G<j;G++){var X=W+G*(U-W)/j,K=W+(G+1)*(U-W)/j,Y=4/3*Math.tan((K-X)/4),J=D+Math.cos(u)*r*(Math.cos(X)-Y*Math.sin(X))-Math.sin(u)*o*(Math.sin(X)+Y*Math.cos(X)),$=N+Math.sin(u)*r*(Math.cos(X)-Y*Math.sin(X))+Math.cos(u)*o*(Math.sin(X)+Y*Math.cos(X)),ee=D+Math.cos(u)*r*(Math.cos(K)+Y*Math.sin(K))-Math.sin(u)*o*(Math.sin(K)-Y*Math.cos(K)),te=N+Math.sin(u)*r*(Math.cos(K)+Y*Math.sin(K))+Math.cos(u)*o*(Math.sin(K)-Y*Math.cos(K)),re=D+Math.cos(u)*r*Math.cos(K)-Math.sin(u)*o*Math.sin(K),ne=N+Math.sin(u)*r*Math.cos(K)+Math.cos(u)*o*Math.sin(K);this.addCommand(["curve",0===G,G===j-1,J,$,ee,te,re,ne])}}return i="A",this},this.a=function(r,i,o,u,p,g,_){return this.A(r,i,o,u,p,y+g,w+_)},this.path=function(r){for(var i,o,u,p=new P((r||"").trim());i=p.match(/^[astvzqmhlcASTVZQMHLC]/);){p.matchSeparator();for(var g=[];o=x[i+g.length]?p.match(/^[01]/):p.matchNumber();)p.matchSeparator(),g.length===_[i]&&(this[i].apply(this,g),g=[],"M"===i?i="L":"m"===i&&(i="l")),g.push(Number(o));if(g.length!==_[i])return void _e("SvgPath: command "+i+" with "+g.length+" numbers");this[i].apply(this,g)}return(u=p.matchAll())&&_e("SvgPath: unexpected string "+u),this},this.getBoundingBox=function(){for(var r,i=[1/0,1/0,-1/0,-1/0],o=0;o<this.pathSegments.length;o++)(r=this.pathSegments[o].getBoundingBox())[0]<i[0]&&(i[0]=r[0]),r[2]>i[2]&&(i[2]=r[2]),r[1]<i[1]&&(i[1]=r[1]),r[3]>i[3]&&(i[3]=r[3]);return i[0]===1/0&&(i[0]=0),i[1]===1/0&&(i[1]=0),i[2]===-1/0&&(i[2]=0),i[3]===-1/0&&(i[3]=0),i},this.getPointAtLength=function(r){if(r>=0&&r<=this.totalLength){for(var i,o=0;o<this.pathSegments.length;o++){if(i=this.pathSegments[o].getPointAtLength(r))return i;r-=this.pathSegments[o].totalLength}return this.endPoint}},this.transform=function(r){this.pathSegments=[],this.startPoint=null,this.endPoint=null,this.totalLength=0;for(var i=0;i<this.pathCommands.length;i++){for(var o=this.pathCommands.shift(),u=3;u<o.length;u+=2){var p=transformPoint([o[u],o[u+1]],r);o[u]=p[0],o[u+1]=p[1]}this.addCommand(o)}return this},this.mergeShape=function(r){for(var i=0;i<r.pathCommands.length;i++)this.addCommand(r.pathCommands[i].slice());return this},this.clone=function(){return(new SvgShape).mergeShape(this)},this.insertInDocument=function(){for(var i=0;i<this.pathCommands.length;i++){var o=this.pathCommands[i][0],u=this.pathCommands[i].slice(3);switch(o){case"move":r.moveTo(u[0],u[1]);break;case"line":r.lineTo(u[0],u[1]);break;case"curve":r.bezierCurveTo(u[0],u[1],u[2],u[3],u[4],u[5]);break;case"close":r.closePath()}}},this.getSubPaths=function(){for(var r=[],i=new SvgShape,o=0;o<this.pathCommands.length;o++){var u=this.pathCommands[o];"move"===this.pathCommands[o][0]&&0!==o&&(r.push(i),i=new SvgShape),i.addCommand(u)}return r.push(i),r},this.getMarkers=function(){for(var r=[],i=this.getSubPaths(),o=0;o<i.length;o++){for(var u=i[o],p=[],g=0;g<u.pathSegments.length;g++){var y=u.pathSegments[g];if(isNotEqual(y.totalLength,0)||0===g||g===u.pathSegments.length-1){if(y.hasStart){var w=y.getPointAtLength(0),_=p.pop();_&&(w[2]=.5*(_[2]+w[2])),p.push(w)}if(y.hasEnd){var x=y.getPointAtLength(y.totalLength);p.push(x)}}}r=r.concat(p)}return r}},R=function SvgElem(r,o){var u=Object.create(null),p=null;this.name=r.nodeName,this.isOuterElement=r===i||!r.parentNode,this.inherits=o||(this.isOuterElement?null:createSVGElement(r.parentNode,null)),this.stack=this.inherits?this.inherits.stack.concat(r):[r],this.style=parseStyleAttr("function"==typeof r.getAttribute&&r.getAttribute("style")),this.css=we?getComputedStyle(r):function getStyle(r){for(var i=Object.create(null),o=Object.create(null),u=0;u<Oe.length;u++){var p=Oe[u];if(matchesSelector(r,p.selector))for(var g in p.css)o[g]>p.selector.specificity||(i[g]=p.css[g],o[g]=p.selector.specificity)}return i}(r),this.allowedChildren=[],this.attr=function(i){if("function"==typeof r.getAttribute)return r.getAttribute(i)},this.resolveUrl=function(r){var o=(r||"").match(/^\s*(?:url\("(.*)#(.*)"\)|url\('(.*)#(.*)'\)|url\((.*)#(.*)\)|(.*)#(.*))\s*$/)||[],u=o[1]||o[3]||o[5]||o[7],p=o[2]||o[4]||o[6]||o[8];if(p){if(!u){var g=i.getElementById(p);if(g)return-1===this.stack.indexOf(g)?g:void _e('SVGtoPDF: loop of circular references for id "'+p+'"')}if(ke){var y=Ee[u];if(!y){(function isArrayLike(r){return"object"==typeof r&&null!==r&&"number"==typeof r.length})(y=ke(u))||(y=[y]);for(var w=0;w<y.length;w++)"string"==typeof y[w]&&(y[w]=parseXml(y[w]));Ee[u]=y}for(var _=0;_<y.length;_++){var x=y[_].getElementById(p);if(x)return-1===this.stack.indexOf(x)?x:void _e('SVGtoPDF: loop of circular references for id "'+u+"#"+p+'"')}}}},this.computeUnits=function(r,i,o,u){return"%"===i?parseFloat(r)/100*(u||null!=o?o:this.getViewport()):"ex"===i||"em"===i?r*{em:1,ex:.5}[i]*(u?o:this.get("font-size")):r*{"":1,px:1,pt:96/72,cm:96/2.54,mm:96/25.4,in:96,pc:16}[i]},this.computeLength=function(r,i,o,u){var p,g,y=new P((r||"").trim());return"string"!=typeof(p=y.matchNumber())||"string"!=typeof(g=y.matchLengthUnit())||y.matchAll()?o:this.computeUnits(p,g,i,u)},this.computeLengthList=function(r,i,o){for(var u,p,g=new P((r||"").trim()),y=[];"string"==typeof(u=g.matchNumber())&&"string"==typeof(p=g.matchLengthUnit());)y.push(this.computeUnits(u,p,i)),g.matchSeparator();if(!o||!g.matchAll())return y},this.getLength=function(r,i,o){return this.computeLength(this.attr(r),i,o)},this.getLengthList=function(r,i){return this.computeLengthList(this.attr(r),i)},this.getUrl=function(r){return this.resolveUrl(this.attr(r))},this.getNumberList=function(r){for(var i,o=new P((this.attr(r)||"").trim()),u=[];i=o.matchNumber();)u.push(Number(i)),o.matchSeparator();return u.error=o.matchAll(),u},this.getViewbox=function(r,i){var o=this.getNumberList(r);return 4===o.length&&o[2]>=0&&o[3]>=0?o:i},this.getPercent=function(r,i){var o=this.attr(r),u=new P((o||"").trim()),p=u.matchNumber();return p?(u.match("%")&&(p*=.01),u.matchAll()?i:Math.max(0,Math.min(1,p))):i},this.chooseValue=function(r){for(var i=0;i<arguments.length;i++)if(null!=arguments[i]&&arguments[i]==arguments[i])return arguments[i];return arguments[arguments.length-1]},this.get=function(r){if(void 0!==u[r])return u[r];for(var i,o,p=k[r]||{},g=0;g<3;g++){switch(g){case 0:"transform"!==r&&(i=this.css[p.css||r]);break;case 1:i=this.style[r];break;case 2:i=this.attr(r)}if("inherit"===i&&null!=(o=this.inherits?this.inherits.get(r):p.initial))return u[r]=o;if(null!=p.values&&null!=(o=p.values[i]))return u[r]=o;if(null!=i){var y=void 0;switch(r){case"font-size":o=this.computeLength(i,this.inherits?this.inherits.get(r):p.initial,void 0,!0);break;case"baseline-shift":o=this.computeLength(i,this.get("font-size"));break;case"font-family":o=i||void 0;break;case"opacity":case"stroke-opacity":case"fill-opacity":case"stop-opacity":y=parseFloat(i),isNaN(y)||(o=Math.max(0,Math.min(1,y)));break;case"transform":o=parseTranform(i);break;case"stroke-dasharray":if("none"===i)o=[];else if(y=this.computeLengthList(i,this.getViewport(),!0)){for(var w=0,_=!1,x=0;x<y.length;x++)y[x]<0&&(_=!0),w+=y[x];_||(y.length%2==1&&(y=y.concat(y)),o=0===w?[]:y)}break;case"color":o="none"===i||"transparent"===i?"none":parseColor(i);break;case"fill":case"stroke":if("none"===i||"transparent"===i)o="none";else if("currentColor"===i)o=this.get("color");else{if(y=parseColor(i))return y;if(y=(i||"").split(" ")){var P=this.resolveUrl(y[0]),O=parseColor(y[1]);o=null==P?O:"linearGradient"===P.nodeName||"radialGradient"===P.nodeName?new $(P,null,O):"pattern"===P.nodeName?new J(P,null,O):O}}break;case"stop-color":o="none"===i||"transparent"===i?"none":"currentColor"===i?this.get("color"):parseColor(i);break;case"marker-start":case"marker-mid":case"marker-end":case"clip-path":case"mask":o="none"===i?"none":this.resolveUrl(i);break;case"stroke-width":null!=(y=this.computeLength(i,this.getViewport()))&&y>=0&&(o=y);break;case"stroke-miterlimit":null!=(y=parseFloat(i))&&y>=1&&(o=y);break;case"word-spacing":case"letter-spacing":o=this.computeLength(i,this.getViewport());break;case"stroke-dashoffset":if(null!=(o=this.computeLength(i,this.getViewport()))&&o<0)for(var I=this.get("stroke-dasharray"),B=0;B<I.length;B++)o+=I[B]}if(null!=o)return u[r]=o}}return u[r]=p.inherit&&this.inherits?this.inherits.get(r):p.initial},this.getChildren=function(){if(null!=p)return p;for(var i=[],o=0;o<r.childNodes.length;o++){var u=r.childNodes[o];u.error||-1===this.allowedChildren.indexOf(u.nodeName)||i.push(createSVGElement(u,this))}return p=i},this.getParentVWidth=function(){return this.inherits?this.inherits.getVWidth():ve},this.getParentVHeight=function(){return this.inherits?this.inherits.getVHeight():me},this.getParentViewport=function(){return Math.sqrt(.5*this.getParentVWidth()*this.getParentVWidth()+.5*this.getParentVHeight()*this.getParentVHeight())},this.getVWidth=function(){return this.getParentVWidth()},this.getVHeight=function(){return this.getParentVHeight()},this.getViewport=function(){return Math.sqrt(.5*this.getVWidth()*this.getVWidth()+.5*this.getVHeight()*this.getVHeight())},this.getBoundingBox=function(){return this.getBoundingShape().getBoundingBox()}},D=function SvgElemStylable(i,o){R.call(this,i,o),this.transform=function(){r.transform.apply(r,this.getTransformation())},this.clip=function(){if("none"!==this.get("clip-path"))return new le(this.get("clip-path"),null).useMask(this.getBoundingBox()),!0},this.mask=function(){if("none"!==this.get("mask"))return new ue(this.get("mask"),null).useMask(this.getBoundingBox()),!0},this.getFill=function(r,i){var o=this.get("opacity"),u=this.get("fill"),p=this.get("fill-opacity");return r?y.white:"none"!==u&&o&&p?u instanceof $||u instanceof J?u.getPaint(this.getBoundingBox(),p*o,r,i):opacityToColor(u,p*o,i):void 0},this.getStroke=function(r,i){var o=this.get("opacity"),u=this.get("stroke"),p=this.get("stroke-opacity");if(!r&&!isEqual(this.get("stroke-width"),0))return"none"!==u&&o&&p?u instanceof $||u instanceof J?u.getPaint(this.getBoundingBox(),p*o,r,i):opacityToColor(u,p*o,i):void 0}},N=function SvgElemHasChildren(r,i){D.call(this,r,i),this.allowedChildren=["use","g","a","svg","image","rect","circle","ellipse","line","polyline","polygon","path","text"],this.getBoundingShape=function(){for(var r=new B,i=this.getChildren(),o=0;o<i.length;o++)if("none"!==i[o].get("display")&&"function"==typeof i[o].getBoundingShape){var u=i[o].getBoundingShape().clone();"function"==typeof i[o].getTransformation&&u.transform(i[o].getTransformation()),r.mergeShape(u)}return r},this.drawChildren=function(r,i){for(var o=this.getChildren(),u=0;u<o.length;u++)"none"!==o[u].get("display")&&"function"==typeof o[u].drawInDocument&&o[u].drawInDocument(r,i)}},W=function SvgElemContainer(i,o){N.call(this,i,o),this.drawContent=function(i,o){this.transform();var u,p=this.clip(),g=this.mask();(this.get("opacity")<1||p||g)&&!i&&(u=docBeginGroup(getPageBBox())),this.drawChildren(i,o),u&&(docEndGroup(u),r.fillOpacity(this.get("opacity")),docInsertGroup(u))}},U=function SvgElemUse(i,o){W.call(this,i,o);var u=this.getLength("x",this.getVWidth(),0),p=this.getLength("y",this.getVHeight(),0),g=this.getUrl("href")||this.getUrl("xlink:href");g&&(g=createSVGElement(g,this)),this.getChildren=function(){return g?[g]:[]},this.drawInDocument=function(i,o){r.save(),this.drawContent(i,o),r.restore()},this.getTransformation=function(){return multiplyMatrix(this.get("transform"),[1,0,0,1,u,p])}},j=function SvgElemSymbol(i,o){W.call(this,i,o);var u=this.getLength("width",this.getParentVWidth(),this.getParentVWidth()),p=this.getLength("height",this.getParentVHeight(),this.getParentVHeight());o instanceof U&&(u=o.getLength("width",o.getParentVWidth(),u),p=o.getLength("height",o.getParentVHeight(),p));var g=(this.attr("preserveAspectRatio")||"").trim(),y=this.getViewbox("viewBox",[0,0,u,p]);this.getVWidth=function(){return y[2]},this.getVHeight=function(){return y[3]},this.drawInDocument=function(i,o){r.save(),this.drawContent(i,o),r.restore()},this.getTransformation=function(){return multiplyMatrix(parseAspectRatio(g,u,p,y[2],y[3]),[1,0,0,1,-y[0],-y[1]])}},G=function SvgElemGroup(i,o){W.call(this,i,o),this.drawInDocument=function(i,o){r.save(),!this.link||i||o||this.addLink(),this.drawContent(i,o),r.restore()},this.getTransformation=function(){return this.get("transform")}},X=function SvgElemLink(i,o){o&&o.isText?(de.call(this,i,o),this.allowedChildren=["textPath","tspan","#text","#cdata-section","a"]):G.call(this,i,o),this.link=this.attr("href")||this.attr("xlink:href"),this.addLink=function(){if(this.link.match(/^(?:[a-z][a-z0-9+.-]*:|\/\/)?/i)&&this.getChildren().length){var i=this.getBoundingShape().transform(getGlobalMatrix()).getBoundingBox();!function docInsertLink(i,o,u,p,g){var y=r.ref({Type:"Annot",Subtype:"Link",Rect:[i,o,u,p],Border:[0,0,0],A:{S:"URI",URI:new String(g)}});y.end(),Te.push(y)}(i[0],i[1],i[2],i[3],this.link)}}},K=function SvgElemSvg(i,o){W.call(this,i,o);var u=this.getLength("width",this.getParentVWidth(),this.getParentVWidth()),p=this.getLength("height",this.getParentVHeight(),this.getParentVHeight()),g=this.getLength("x",this.getParentVWidth(),0),y=this.getLength("y",this.getParentVHeight(),0);o instanceof U&&(u=o.getLength("width",o.getParentVWidth(),u),p=o.getLength("height",o.getParentVHeight(),p));var w=this.attr("preserveAspectRatio"),_=this.getViewbox("viewBox",[0,0,u,p]);this.isOuterElement&&be&&(g=y=0,u=ve,p=me,w=be),this.getVWidth=function(){return _[2]},this.getVHeight=function(){return _[3]},this.drawInDocument=function(i,o){r.save(),"hidden"===this.get("overflow")&&((new B).M(g,y).L(g+u,y).L(g+u,y+p).L(g,y+p).Z().transform(this.get("transform")).insertInDocument(),r.clip()),this.drawContent(i,o),r.restore()},this.getTransformation=function(){return multiplyMatrix(this.get("transform"),[1,0,0,1,g,y],parseAspectRatio(w,u,p,_[2],_[3]),[1,0,0,1,-_[0],-_[1]])}},Y=function SVGElemImage(i,o){D.call(this,i,o);var u,p=xe(this.attr("href")||this.attr("xlink:href")||""),g=this.getLength("x",this.getVWidth(),0),w=this.getLength("y",this.getVHeight(),0),_=this.getLength("width",this.getVWidth(),"auto"),x=this.getLength("height",this.getVHeight(),"auto");try{u=r.openImage(p)}catch(r){_e('SVGElemImage: failed to open image "'+p+'" in PDFKit')}u&&("auto"===_&&"auto"!==x?_=x*u.width/u.height:"auto"===x&&"auto"!==_?x=_*u.height/u.width:"auto"===_&&"auto"===x&&(_=u.width,x=u.height)),("auto"===_||_<0)&&(_=0),("auto"===x||x<0)&&(x=0),this.getTransformation=function(){return this.get("transform")},this.getBoundingShape=function(){return(new B).M(g,w).L(g+_,w).M(g+_,w+x).L(g,w+x)},this.drawInDocument=function(i,o){"hidden"!==this.get("visibility")&&u&&(r.save(),this.transform(),"hidden"===this.get("overflow")&&r.rect(g,w,_,x).clip(),this.clip(),this.mask(),r.translate(g,w),r.transform.apply(r,parseAspectRatio(this.attr("preserveAspectRatio"),_,x,u?u.width:_,u?u.height:x)),i?(r.rect(0,0,u.width,u.height),docFillColor(y.white).fill()):(r.fillOpacity(this.get("opacity")),r.image(u,0,0)),r.restore())}},J=function SvgElemPattern(i,o,u){N.call(this,i,o),this.ref=function(){var r=this.getUrl("href")||this.getUrl("xlink:href");if(r&&r.nodeName===i.nodeName)return new SvgElemPattern(r,o,u)}.call(this);var p=this.attr;this.attr=function(r){var i=p.call(this,r);return null!=i||"href"===r||"xlink:href"===r?i:this.ref?this.ref.attr(r):null};var g=this.getChildren;this.getChildren=function(){var r=g.call(this);return r.length>0?r:this.ref?this.ref.getChildren():[]},this.getPaint=function(i,o,p,g){var y="userSpaceOnUse"!==this.attr("patternUnits"),w="objectBoundingBox"===this.attr("patternContentUnits"),_=this.getLength("x",y?1:this.getParentVWidth(),0),x=this.getLength("y",y?1:this.getParentVHeight(),0),k=this.getLength("width",y?1:this.getParentVWidth(),0),P=this.getLength("height",y?1:this.getParentVHeight(),0);w&&!y?(_=(_-i[0])/(i[2]-i[0])||0,x=(x-i[1])/(i[3]-i[1])||0,k=k/(i[2]-i[0])||0,P=P/(i[3]-i[1])||0):!w&&y&&(_=i[0]+_*(i[2]-i[0]),x=i[1]+x*(i[3]-i[1]),k*=i[2]-i[0],P*=i[3]-i[1]);var O=this.getViewbox("viewBox",[0,0,k,P]),I=multiplyMatrix(parseAspectRatio((this.attr("preserveAspectRatio")||"").trim(),k,P,O[2],O[3],0),[1,0,0,1,-O[0],-O[1]]),B=parseTranform(this.attr("patternTransform"));if(w&&(B=multiplyMatrix([i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]],B)),(B=validateMatrix(B=multiplyMatrix(B,[1,0,0,1,_,x])))&&(I=validateMatrix(I))&&(k=validateNumber(k))&&(P=validateNumber(P))){var R=docBeginGroup([0,0,k,P]);return r.transform.apply(r,I),this.drawChildren(p,g),docEndGroup(R),[docCreatePattern(R,k,P,B),o]}return u?[u[0],u[1]*o]:void 0},this.getVWidth=function(){var r="userSpaceOnUse"!==this.attr("patternUnits"),i=this.getLength("width",r?1:this.getParentVWidth(),0);return this.getViewbox("viewBox",[0,0,i,0])[2]},this.getVHeight=function(){var r="userSpaceOnUse"!==this.attr("patternUnits"),i=this.getLength("height",r?1:this.getParentVHeight(),0);return this.getViewbox("viewBox",[0,0,0,i])[3]}},$=function SvgElemGradient(i,o,u){R.call(this,i,o),this.allowedChildren=["stop"],this.ref=function(){var r=this.getUrl("href")||this.getUrl("xlink:href");if(r&&r.nodeName===i.nodeName)return new SvgElemGradient(r,o,u)}.call(this);var p=this.attr;this.attr=function(r){var i=p.call(this,r);return null!=i||"href"===r||"xlink:href"===r?i:this.ref?this.ref.attr(r):null};var g=this.getChildren;this.getChildren=function(){var r=g.call(this);return r.length>0?r:this.ref?this.ref.getChildren():[]},this.getPaint=function(i,o,p,g){var w=this.getChildren();if(0!==w.length){if(1===w.length){var _=w[0],x=_.get("stop-color");if("none"===x)return;return opacityToColor(x,_.get("stop-opacity")*o,g)}var k,P,O,I,B,R,D="userSpaceOnUse"!==this.attr("gradientUnits"),N=parseTranform(this.attr("gradientTransform")),W=this.attr("spreadMethod"),U=0,j=0,G=1;if(D&&(N=multiplyMatrix([i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]],N)),N=validateMatrix(N)){if("linearGradient"===this.name)P=this.getLength("x1",D?1:this.getVWidth(),0),O=this.getLength("x2",D?1:this.getVWidth(),D?1:this.getVWidth()),I=this.getLength("y1",D?1:this.getVHeight(),0),B=this.getLength("y2",D?1:this.getVHeight(),0);else{O=this.getLength("cx",D?1:this.getVWidth(),D?.5:.5*this.getVWidth()),B=this.getLength("cy",D?1:this.getVHeight(),D?.5:.5*this.getVHeight()),R=this.getLength("r",D?1:this.getViewport(),D?.5:.5*this.getViewport()),P=this.getLength("fx",D?1:this.getVWidth(),O),I=this.getLength("fy",D?1:this.getVHeight(),B),R<0&&_e("SvgElemGradient: negative r value");var X=Math.sqrt(Math.pow(O-P,2)+Math.pow(B-I,2)),K=1;X>R&&(P=O+(P-O)*(K=R/X),I=B+(I-B)*K),R=Math.max(R,X*K*1.000001)}if("reflect"===W||"repeat"===W){var Y=inverseMatrix(N),J=transformPoint([i[0],i[1]],Y),$=transformPoint([i[2],i[1]],Y),ee=transformPoint([i[2],i[3]],Y),te=transformPoint([i[0],i[3]],Y);"linearGradient"===this.name?(U=Math.max((J[0]-O)*(O-P)+(J[1]-B)*(B-I),($[0]-O)*(O-P)+($[1]-B)*(B-I),(ee[0]-O)*(O-P)+(ee[1]-B)*(B-I),(te[0]-O)*(O-P)+(te[1]-B)*(B-I))/(Math.pow(O-P,2)+Math.pow(B-I,2)),j=Math.max((J[0]-P)*(P-O)+(J[1]-I)*(I-B),($[0]-P)*(P-O)+($[1]-I)*(I-B),(ee[0]-P)*(P-O)+(ee[1]-I)*(I-B),(te[0]-P)*(P-O)+(te[1]-I)*(I-B))/(Math.pow(O-P,2)+Math.pow(B-I,2))):U=Math.sqrt(Math.max(Math.pow(J[0]-O,2)+Math.pow(J[1]-B,2),Math.pow($[0]-O,2)+Math.pow($[1]-B,2),Math.pow(ee[0]-O,2)+Math.pow(ee[1]-B,2),Math.pow(te[0]-O,2)+Math.pow(te[1]-B,2)))/R-1,U=Math.ceil(U+.5),G=(j=Math.ceil(j+.5))+1+U}k="linearGradient"===this.name?r.linearGradient(P-j*(O-P),I-j*(B-I),O+U*(O-P),B+U*(B-I)):r.radialGradient(P,I,0,O,B,R+U*R);for(var re=0;re<G;re++)for(var ne=0,ie="reflect"!==W||(re-j)%2==0,oe=0;oe<w.length;oe++){var ae=w[ie?oe:w.length-1-oe],se=ae.get("stop-color");"none"===se&&(se=y.transparent),se=opacityToColor(se,ae.get("stop-opacity")*o,g),ne=Math.max(ne,ie?ae.getPercent("offset",0):1-ae.getPercent("offset",0)),0===oe&&4===se[0].length&&(k._colorSpace="DeviceCMYK"),0===oe&&ne>0&&k.stop((re+0)/G,se[0],se[1]),k.stop((re+ne)/(U+j+1),se[0],se[1]),oe===w.length-1&&ne<1&&k.stop((re+1)/G,se[0],se[1])}return k.setTransform.apply(k,N),[k,1]}return u?[u[0],u[1]*o]:void 0}}},ee=function SvgElemBasicShape(i,o){D.call(this,i,o),this.dashScale=1,this.getBoundingShape=function(){return this.shape},this.getTransformation=function(){return this.get("transform")},this.drawInDocument=function(i,o){if("hidden"!==this.get("visibility")&&this.shape){if(r.save(),this.transform(),this.clip(),i)this.shape.insertInDocument(),docFillColor(y.white),r.fill(this.get("clip-rule"));else{var u;this.mask()&&(u=docBeginGroup(getPageBBox()));var p=this.shape.getSubPaths(),g=this.getFill(i,o),w=this.getStroke(i,o),_=this.get("stroke-width"),x=this.get("stroke-linecap");if(g||w){if(g&&docFillColor(g),w){for(var k=0;k<p.length;k++)if(isEqual(p[k].totalLength,0)&&("square"===x||"round"===x)&&_>0&&p[k].startPoint&&p[k].startPoint.length>1){var P=p[k].startPoint[0],O=p[k].startPoint[1];docFillColor(w),"square"===x?r.rect(P-.5*_,O-.5*_,_,_):"round"===x&&r.circle(P,O,.5*_),r.fill()}var I=this.get("stroke-dasharray"),B=this.get("stroke-dashoffset");if(isNotEqual(this.dashScale,1)){for(var R=0;R<I.length;R++)I[R]*=this.dashScale;B*=this.dashScale}docStrokeColor(w),r.lineWidth(_).miterLimit(this.get("stroke-miterlimit")).lineJoin(this.get("stroke-linejoin")).lineCap(x).dash(I,{phase:B})}for(var D=0;D<p.length;D++)p[D].totalLength>0&&p[D].insertInDocument();g&&w?r.fillAndStroke(this.get("fill-rule")):g?r.fill(this.get("fill-rule")):w&&r.stroke()}var N=this.get("marker-start"),W=this.get("marker-mid"),U=this.get("marker-end");if("none"!==N||"none"!==W||"none"!==U){var j=this.shape.getMarkers();if("none"!==N&&new ce(N,null).drawMarker(!1,o,j[0],_),"none"!==W)for(var G=1;G<j.length-1;G++)new ce(W,null).drawMarker(!1,o,j[G],_);"none"!==U&&new ce(U,null).drawMarker(!1,o,j[j.length-1],_)}u&&(docEndGroup(u),docInsertGroup(u))}r.restore()}}},te=function SvgElemRect(r,i){ee.call(this,r,i);var o=this.getLength("x",this.getVWidth(),0),u=this.getLength("y",this.getVHeight(),0),p=this.getLength("width",this.getVWidth(),0),g=this.getLength("height",this.getVHeight(),0),y=this.getLength("rx",this.getVWidth()),w=this.getLength("ry",this.getVHeight());void 0===y&&void 0===w?y=w=0:void 0===y&&void 0!==w?y=w:void 0!==y&&void 0===w&&(w=y),p>0&&g>0?y&&w?(y=Math.min(y,.5*p),w=Math.min(w,.5*g),this.shape=(new B).M(o+y,u).L(o+p-y,u).A(y,w,0,0,1,o+p,u+w).L(o+p,u+g-w).A(y,w,0,0,1,o+p-y,u+g).L(o+y,u+g).A(y,w,0,0,1,o,u+g-w).L(o,u+w).A(y,w,0,0,1,o+y,u).Z()):this.shape=(new B).M(o,u).L(o+p,u).L(o+p,u+g).L(o,u+g).Z():this.shape=new B},re=function SvgElemCircle(r,i){ee.call(this,r,i);var o=this.getLength("cx",this.getVWidth(),0),u=this.getLength("cy",this.getVHeight(),0),p=this.getLength("r",this.getViewport(),0);this.shape=p>0?(new B).M(o+p,u).A(p,p,0,0,1,o-p,u).A(p,p,0,0,1,o+p,u).Z():new B},ne=function SvgElemEllipse(r,i){ee.call(this,r,i);var o=this.getLength("cx",this.getVWidth(),0),u=this.getLength("cy",this.getVHeight(),0),p=this.getLength("rx",this.getVWidth(),0),g=this.getLength("ry",this.getVHeight(),0);this.shape=p>0&&g>0?(new B).M(o+p,u).A(p,g,0,0,1,o-p,u).A(p,g,0,0,1,o+p,u).Z():new B},ie=function SvgElemLine(r,i){ee.call(this,r,i);var o=this.getLength("x1",this.getVWidth(),0),u=this.getLength("y1",this.getVHeight(),0),p=this.getLength("x2",this.getVWidth(),0),g=this.getLength("y2",this.getVHeight(),0);this.shape=(new B).M(o,u).L(p,g)},oe=function SvgElemPolyline(r,i){ee.call(this,r,i);var o=this.getNumberList("points");this.shape=new B;for(var u=0;u<o.length-1;u+=2)0===u?this.shape.M(o[u],o[u+1]):this.shape.L(o[u],o[u+1]);o.error&&_e("SvgElemPolygon: unexpected string "+o.error),o.length%2==1&&_e("SvgElemPolyline: uneven number of coordinates")},ae=function SvgElemPolygon(r,i){ee.call(this,r,i);var o=this.getNumberList("points");this.shape=new B;for(var u=0;u<o.length-1;u+=2)0===u?this.shape.M(o[u],o[u+1]):this.shape.L(o[u],o[u+1]);this.shape.Z(),o.error&&_e("SvgElemPolygon: unexpected string "+o.error),o.length%2==1&&_e("SvgElemPolygon: uneven number of coordinates")},se=function SvgElemPath(r,i){ee.call(this,r,i),this.shape=(new B).path(this.attr("d"));var o=this.getLength("pathLength",this.getViewport());this.pathLength=o>0?o:void 0,this.dashScale=void 0!==this.pathLength?this.shape.totalLength/this.pathLength:1},ce=function SvgElemMarker(i,o){N.call(this,i,o);var u=this.getLength("markerWidth",this.getParentVWidth(),3),p=this.getLength("markerHeight",this.getParentVHeight(),3),g=this.getViewbox("viewBox",[0,0,u,p]);this.getVWidth=function(){return g[2]},this.getVHeight=function(){return g[3]},this.drawMarker=function(i,o,y,w){r.save();var _=this.attr("orient"),x=this.attr("markerUnits"),k="auto"===_?y[2]:(parseFloat(_)||0)*Math.PI/180,P="userSpaceOnUse"===x?1:w;r.transform(Math.cos(k)*P,Math.sin(k)*P,-Math.sin(k)*P,Math.cos(k)*P,y[0],y[1]);var O,I=this.getLength("refX",this.getVWidth(),0),B=this.getLength("refY",this.getVHeight(),0),R=parseAspectRatio(this.attr("preserveAspectRatio"),u,p,g[2],g[3],.5);"hidden"===this.get("overflow")&&r.rect(R[0]*(g[0]+g[2]/2-I)-u/2,R[3]*(g[1]+g[3]/2-B)-p/2,u,p).clip(),r.transform.apply(r,R),r.translate(-I,-B),this.get("opacity")<1&&!i&&(O=docBeginGroup(getPageBBox())),this.drawChildren(i,o),O&&(docEndGroup(O),r.fillOpacity(this.get("opacity")),docInsertGroup(O)),r.restore()}},le=function SvgElemClipPath(i,o){N.call(this,i,o),this.useMask=function(i){var o=docBeginGroup(getPageBBox());r.save(),"objectBoundingBox"===this.attr("clipPathUnits")&&r.transform(i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]),this.clip(),this.drawChildren(!0,!1),r.restore(),docEndGroup(o),docApplyMask(o,!0)}},ue=function SvgElemMask(i,o){N.call(this,i,o),this.useMask=function(i){var o,u,p,g,y=docBeginGroup(getPageBBox());r.save(),"userSpaceOnUse"===this.attr("maskUnits")?(o=this.getLength("x",this.getVWidth(),-.1*(i[2]-i[0])+i[0]),u=this.getLength("y",this.getVHeight(),-.1*(i[3]-i[1])+i[1]),p=this.getLength("width",this.getVWidth(),1.2*(i[2]-i[0])),g=this.getLength("height",this.getVHeight(),1.2*(i[3]-i[1]))):(o=this.getLength("x",this.getVWidth(),-.1)*(i[2]-i[0])+i[0],u=this.getLength("y",this.getVHeight(),-.1)*(i[3]-i[1])+i[1],p=this.getLength("width",this.getVWidth(),1.2)*(i[2]-i[0]),g=this.getLength("height",this.getVHeight(),1.2)*(i[3]-i[1])),r.rect(o,u,p,g).clip(),"objectBoundingBox"===this.attr("maskContentUnits")&&r.transform(i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]),this.clip(),this.drawChildren(!1,!0),r.restore(),docEndGroup(y),docApplyMask(y,!0)}},fe=function SvgElemTextContainer(i,o){D.call(this,i,o),this.allowedChildren=["tspan","#text","#cdata-section","a"],this.isText=!0,this.getBoundingShape=function(){for(var r=new B,i=0;i<this._pos.length;i++){var o=this._pos[i];if(!o.hidden){var u=o.ascent*Math.sin(o.rotate),p=-o.ascent*Math.cos(o.rotate),g=o.descent*Math.sin(o.rotate),y=-o.descent*Math.cos(o.rotate),w=o.width*Math.cos(o.rotate),_=o.width*Math.sin(o.rotate);r.M(o.x+u,o.y+p).L(o.x+u+w,o.y+p+_).M(o.x+g+w,o.y+y+_).L(o.x+g,o.y+y)}}return r},this.drawTextInDocument=function(i,o){!this.link||i||o||this.addLink(),"underline"===this.get("text-decoration")&&this.decorate(.05*this._font.size,-.075*this._font.size,i,o),"overline"===this.get("text-decoration")&&this.decorate(.05*this._font.size,getAscent(this._font.font,this._font.size)+.075*this._font.size,i,o);var u=this.getFill(i,o),p=this.getStroke(i,o),g=this.get("stroke-width");this._font.fauxBold&&(p?g+=.03*this._font.size:(p=u,g=.03*this._font.size));for(var y,w,_,x,k,P,O,I,B,R=this.getChildren(),D=0;D<R.length;D++){var N=R[D];switch(N.name){case"tspan":case"textPath":case"a":"none"!==N.get("display")&&N.drawTextInDocument(i,o);break;case"#text":case"#cdata-section":if("hidden"===this.get("visibility"))continue;if(u||p||i){u&&docFillColor(u),p&&g&&(docStrokeColor(p),r.lineWidth(g).miterLimit(this.get("stroke-miterlimit")).lineJoin(this.get("stroke-linejoin")).lineCap(this.get("stroke-linecap")).dash(this.get("stroke-dasharray"),{phase:this.get("stroke-dashoffset")})),I=this._font.font,B=this._font.size,r.page.fonts[I.id]||(r.page.fonts[I.id]=I.ref()),r.addContent("BT").addContent("/"+I.id+" "+B+" Tf"),docSetTextMode(!!u,!!p);for(var W=0,U=N._pos;W<U.length;W++)if(!U[W].hidden&&isNotEqual(U[W].width,0)){var j=Math.cos(U[W].rotate),G=Math.sin(U[W].rotate),X=this._font.fauxItalic?-.25:0;w=j*U[W].scale,_=G*U[W].scale,x=j*X-G,k=G*X+j,P=U[W].x,O=U[W].y,r.addContent(validateNumber(w)+" "+validateNumber(_)+" "+validateNumber(-x)+" "+validateNumber(-k)+" "+validateNumber(P)+" "+validateNumber(O)+" Tm"),y=U[W].glyph,r.addContent("<"+y+"> Tj")}r.addContent("ET")}}}"line-through"===this.get("text-decoration")&&this.decorate(.05*this._font.size,.5*(getAscent(this._font.font,this._font.size)+getDescent(this._font.font,this._font.size)),i,o)},this.decorate=function(i,o,u,p){var g=this.getFill(u,p),y=this.getStroke(u,p);g&&docFillColor(g),y&&(docStrokeColor(y),r.lineWidth(this.get("stroke-width")).miterLimit(this.get("stroke-miterlimit")).lineJoin(this.get("stroke-linejoin")).lineCap(this.get("stroke-linecap")).dash(this.get("stroke-dasharray"),{phase:this.get("stroke-dashoffset")}));for(var w=0,_=this._pos;w<_.length;w++)if(!_[w].hidden&&isNotEqual(_[w].width,0)){var x=(o+i/2)*Math.sin(_[w].rotate),k=-(o+i/2)*Math.cos(_[w].rotate),P=(o-i/2)*Math.sin(_[w].rotate),O=-(o-i/2)*Math.cos(_[w].rotate),I=_[w].width*Math.cos(_[w].rotate),R=_[w].width*Math.sin(_[w].rotate);(new B).M(_[w].x+x,_[w].y+k).L(_[w].x+x+I,_[w].y+k+R).L(_[w].x+P+I,_[w].y+O+R).L(_[w].x+P,_[w].y+O).Z().insertInDocument(),g&&y?r.fillAndStroke():g?r.fill():y&&r.stroke()}}},he=function SvgElemTextNode(r,i){this.name=r.nodeName,this.textContent=r.nodeValue},de=function SvgElemTspan(r,i){fe.call(this,r,i)},pe=function SvgElemTextPath(r,i){var o;if(fe.call(this,r,i),(o=this.attr("path"))&&""!==o.trim()){var u=this.getLength("pathLength",this.getViewport());this.pathObject=(new B).path(o),this.pathLength=u>0?u:this.pathObject.totalLength,this.pathScale=this.pathObject.totalLength/this.pathLength}else if((o=this.getUrl("href")||this.getUrl("xlink:href"))&&"path"===o.nodeName){var p=new se(o,this);this.pathObject=p.shape.clone().transform(p.get("transform")),this.pathLength=this.chooseValue(p.pathLength,this.pathObject.totalLength),this.pathScale=this.pathObject.totalLength/this.pathLength}},ge=function SvgElemText(i,o){fe.call(this,i,o),this.allowedChildren=["textPath","tspan","#text","#cdata-section","a"],function(o){var u,p,g="",y=i.textContent,w=[],_=[],x=0,k=0;function doAnchoring(){if(_.length)for(var r=_[_.length-1],i=_[0],o=r.x+r.width-i.x,g={startltr:0,middleltr:.5,endltr:1,startrtl:1,middlertl:.5,endrtl:0}[u+p]*o||0,y=0;y<_.length;y++)_[y].x-=g;_=[]}function textOnPath(r){var i=r.pathObject,o=r.pathLength,u=r.pathScale;if(i)for(var p=r.getLength("startOffset",o,0),g=0;g<r._pos.length;g++){var y=p+r._pos[g].x+.5*r._pos[g].width;if(y>o||y<0)r._pos[g].hidden=!0;else{var w=i.getPointAtLength(y*u);isNotEqual(u,1)&&(r._pos[g].scale*=u,r._pos[g].width*=u),r._pos[g].x=w[0]-.5*r._pos[g].width*Math.cos(w[2])-r._pos[g].y*Math.sin(w[2]),r._pos[g].y=w[1]-.5*r._pos[g].width*Math.sin(w[2])+r._pos[g].y*Math.cos(w[2]),r._pos[g].rotate=w[2]+r._pos[g].rotate,r._pos[g].continuous=!1}}else for(var _=0;_<r._pos.length;_++)r._pos[_].hidden=!0}!function recursive(i,o){i._x=combineArrays(i.getLengthList("x",i.getVWidth()),o?o._x.slice(o._pos.length):[]),i._y=combineArrays(i.getLengthList("y",i.getVHeight()),o?o._y.slice(o._pos.length):[]),i._dx=combineArrays(i.getLengthList("dx",i.getVWidth()),o?o._dx.slice(o._pos.length):[]),i._dy=combineArrays(i.getLengthList("dy",i.getVHeight()),o?o._dy.slice(o._pos.length):[]),i._rot=combineArrays(i.getNumberList("rotate"),o?o._rot.slice(o._pos.length):[]),i._defRot=i.chooseValue(i._rot[i._rot.length-1],o&&o._defRot,0),"textPath"===i.name&&(i._y=[]);var P={fauxItalic:!1,fauxBold:!1},O=Se(i.get("font-family"),"bold"===i.get("font-weight"),"italic"===i.get("font-style"),P);try{r.font(O)}catch(r){_e('SVGElemText: failed to open font "'+O+'" in PDFKit')}i._pos=[],i._index=0,i._font={font:r._font,size:i.get("font-size"),fauxItalic:P.fauxItalic,fauxBold:P.fauxBold};var I=i.getLength("textLength",i.getVWidth(),void 0),B="spacingAndGlyphs"===i.attr("lengthAdjust"),R=i.get("word-spacing"),D=i.get("letter-spacing"),N=i.get("text-anchor"),W=i.get("direction"),U=function getBaseline(r,i,o,u){var p,g;switch(o){case"middle":p=.5*function getXHeight(r,i){return(r.xHeight||.5*(r.ascender-r.descender))*i/1e3}(r,i);break;case"central":p=.5*(getDescent(r,i)+getAscent(r,i));break;case"after-edge":case"text-after-edge":p=getDescent(r,i);break;case"alphabetic":case"auto":case"baseline":default:p=0;break;case"mathematical":p=.5*getAscent(r,i);break;case"hanging":p=.8*getAscent(r,i);break;case"before-edge":case"text-before-edge":p=getAscent(r,i)}switch(u){case"baseline":g=0;break;case"super":g=.6*i;break;case"sub":g=-.6*i;break;default:g=u}return p-g}(i._font.font,i._font.size,i.get("alignment-baseline")||i.get("dominant-baseline"),i.get("baseline-shift"));"textPath"===i.name&&(doAnchoring(),x=k=0);for(var j=i.getChildren(),G=0;G<j.length;G++){var X=j[G];switch(X.name){case"tspan":case"textPath":case"a":recursive(X,i);break;case"#text":case"#cdata-section":var K=X.textContent,Y=K,J=void 0;X._font=i._font,X._pos=[],y=y.substring(K.length),"preserve"===i.get("xml:space")?Y=Y.replace(/[\s]/g," "):(Y=Y.replace(/[\s]+/g," "),g.match(/[\s]$|^$/)&&(Y=Y.replace(/^[\s]/,"")),y.match(/^[\s]*$/)&&(Y=Y.replace(/[\s]$/,""))),g+=K,J=0===R?[Y]:Y.split(/(\s)/);for(var $=0;$<J.length;$++){for(var ee=getTextPos(i._font.font,i._font.size,J[$]),te=0;te<ee.length;te++){var re=i._index,ne=i._x[re],ie=i._y[re],oe=i._dx[re],ae=i._dy[re],se=i._rot[re],ce=!(0===$&&0===te);void 0!==ne&&(ce=!1,doAnchoring(),x=ne),void 0!==ie&&(ce=!1,doAnchoring(),k=ie),void 0!==oe&&(ce=!1,x+=oe),void 0!==ae&&(ce=!1,k+=ae),void 0===se&&0===i._defRot||(ce=!1);var le={glyph:ee[te].glyph,rotate:Math.PI/180*i.chooseValue(se,i._defRot),x:x+ee[te].xOffset,y:k+U+ee[te].yOffset,width:ee[te].width,ascent:getAscent(i._font.font,i._font.size),descent:getDescent(i._font.font,i._font.size),scale:1,hidden:!1,continuous:ce};_.push(le),X._pos.push(le),i._pos.push(le),i._index+=ee[te].unicode.length,1===_.length&&(u=N,p=W),x+=ee[te].xAdvance+D,k+=ee[te].yAdvance}" "===J[$]&&(x+=R)}break;default:y=y.substring(X.textContent.length)}}if(I&&i._pos.length&&function adjustLength(r,i,o){var u=r[0],p=r[r.length-1],g=u.x,y=p.x+p.width;if(o){var w=i/(y-g);if(w>0&&w<1/0)for(var _=0;_<r.length;_++)r[_].x=g+w*(r[_].x-g),r[_].scale*=w,r[_].width*=w}else if(r.length>=2)for(var k=(i-(y-g))/(r.length-1),P=0;P<r.length;P++)r[P].x+=P*k;x+=i-(y-g)}(i._pos,I,B),"textPath"!==i.name&&"text"!==i.name||doAnchoring(),"textPath"===i.name){w.push(i);var ue=i.pathObject;ue&&(x=ue.endPoint[0],k=ue.endPoint[1])}o&&(o._pos=o._pos.concat(i._pos),o._index+=i._index)}(o,null);for(var P=0;P<w.length;P++)textOnPath(w[P])}(this),this.getTransformation=function(){return this.get("transform")},this.drawInDocument=function(i,o){var u;r.save(),this.transform(),this.clip(),this.mask()&&(u=docBeginGroup(getPageBBox())),this.drawTextInDocument(i,o),u&&(docEndGroup(u),docInsertGroup(u)),r.restore()}},ye=(p=p||{}).assumePt?1:.75,ve=(p.width||r.page.width)/ye,me=(p.height||r.page.height)/ye,be=p.preserveAspectRatio||null,we=p.useCSS&&"undefined"!=typeof SVGElement&&i instanceof SVGElement&&"function"==typeof getComputedStyle,_e=p.warningCallback,Se=p.fontCallback,xe=p.imageCallback,Ce=p.colorCallback,ke=p.documentCallback,Pe=Math.ceil(Math.max(1,p.precision))||3,Ae=[],Ee={},Te=[],Oe=[];if("function"!=typeof _e&&(_e=function warningCallback(r){void 0!==typeof console&&console.warn}),"function"!=typeof Se&&(Se=function fontCallback(i,o,u,p){if(o&&u){if(r._registeredFonts.hasOwnProperty(i+"-BoldItalic"))return i+"-BoldItalic";if(r._registeredFonts.hasOwnProperty(i+"-Italic"))return p.fauxBold=!0,i+"-Italic";if(r._registeredFonts.hasOwnProperty(i+"-Bold"))return p.fauxItalic=!0,i+"-Bold";if(r._registeredFonts.hasOwnProperty(i))return p.fauxBold=!0,p.fauxItalic=!0,i}if(o&&!u){if(r._registeredFonts.hasOwnProperty(i+"-Bold"))return i+"-Bold";if(r._registeredFonts.hasOwnProperty(i))return p.fauxBold=!0,i}if(!o&&u){if(r._registeredFonts.hasOwnProperty(i+"-Italic"))return i+"-Italic";if(r._registeredFonts.hasOwnProperty(i))return p.fauxItalic=!0,i}if(!o&&!u&&r._registeredFonts.hasOwnProperty(i))return i;if(i.match(/(?:^|,)\s*serif\s*$/)){if(o&&u)return"Times-BoldItalic";if(o&&!u)return"Times-Bold";if(!o&&u)return"Times-Italic";if(!o&&!u)return"Times-Roman"}else if(i.match(/(?:^|,)\s*monospace\s*$/)){if(o&&u)return"Courier-BoldOblique";if(o&&!u)return"Courier-Bold";if(!o&&u)return"Courier-Oblique";if(!o&&!u)return"Courier"}else{if(i.match(/(?:^|,)\s*sans-serif\s*$/),o&&u)return"Helvetica-BoldOblique";if(o&&!u)return"Helvetica-Bold";if(!o&&u)return"Helvetica-Oblique";if(!o&&!u)return"Helvetica"}}),"function"!=typeof xe&&(xe=function imageCallback(r){return r.replace(/\s+/g,"")}),"function"!=typeof Ce)Ce=null;else for(var Ie in y){var Be=Ce(y[Ie]);y[Ie][0]=Be[0],y[Ie][1]=Be[1]}if("function"!=typeof ke&&(ke=null),"string"==typeof i&&(i=parseXml(i)),i){for(var Fe=i.getElementsByTagName("style"),Le=0;Le<Fe.length;Le++)Oe=Oe.concat(parseStyleSheet(Fe[Le].textContent));var Re=createSVGElement(i,null);if("function"==typeof Re.drawInDocument){p.useCSS&&!we&&_e("SVGtoPDF: useCSS option can only be used for SVG *elements* in compatible browsers");var De=r._fillColor;r.save().translate(o||0,u||0).scale(ye),Re.drawInDocument();for(var Me=0;Me<Te.length;Me++)r.page.annotations.push(Te[Me]);r.restore(),r._fillColor=De}else _e("SVGtoPDF: this element can't be rendered directly: "+i.nodeName)}else _e("SVGtoPDF: the input does not look like a valid SVG")})},9742:function(r,i){"use strict";i.byteLength=function byteLength(r){var i=getLens(r),o=i[0],u=i[1];return 3*(o+u)/4-u},i.toByteArray=function toByteArray(r){var i,o,g=getLens(r),y=g[0],w=g[1],_=new p(function _byteLength(r,i,o){return 3*(i+o)/4-o}(0,y,w)),x=0,k=w>0?y-4:y;for(o=0;o<k;o+=4)i=u[r.charCodeAt(o)]<<18|u[r.charCodeAt(o+1)]<<12|u[r.charCodeAt(o+2)]<<6|u[r.charCodeAt(o+3)],_[x++]=i>>16&255,_[x++]=i>>8&255,_[x++]=255&i;2===w&&(i=u[r.charCodeAt(o)]<<2|u[r.charCodeAt(o+1)]>>4,_[x++]=255&i);1===w&&(i=u[r.charCodeAt(o)]<<10|u[r.charCodeAt(o+1)]<<4|u[r.charCodeAt(o+2)]>>2,_[x++]=i>>8&255,_[x++]=255&i);return _},i.fromByteArray=function fromByteArray(r){for(var i,u=r.length,p=u%3,g=[],y=16383,w=0,_=u-p;w<_;w+=y)g.push(encodeChunk(r,w,w+y>_?_:w+y));1===p?(i=r[u-1],g.push(o[i>>2]+o[i<<4&63]+"==")):2===p&&(i=(r[u-2]<<8)+r[u-1],g.push(o[i>>10]+o[i>>4&63]+o[i<<2&63]+"="));return g.join("")};for(var o=[],u=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,w=g.length;y<w;++y)o[y]=g[y],u[g.charCodeAt(y)]=y;function getLens(r){var i=r.length;if(i%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var o=r.indexOf("=");return-1===o&&(o=i),[o,o===i?0:4-o%4]}function encodeChunk(r,i,u){for(var p,g,y=[],w=i;w<u;w+=3)p=(r[w]<<16&16711680)+(r[w+1]<<8&65280)+(255&r[w+2]),y.push(o[(g=p)>>18&63]+o[g>>12&63]+o[g>>6&63]+o[63&g]);return y.join("")}u["-".charCodeAt(0)]=62,u["_".charCodeAt(0)]=63},4181:function(r){var i=4096,o=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function BrotliBitReader(r){this.buf_=new Uint8Array(8224),this.input_=r,this.reset()}BrotliBitReader.READ_SIZE=i,BrotliBitReader.IBUF_MASK=8191,BrotliBitReader.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var r=0;r<4;r++)this.val_|=this.buf_[this.pos_]<<8*r,++this.pos_;return this.bit_end_pos_>0},BrotliBitReader.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var r=this.buf_ptr_,o=this.input_.read(this.buf_,r,i);if(o<0)throw new Error("Unexpected end of input");if(o<i){this.eos_=1;for(var u=0;u<32;u++)this.buf_[r+o+u]=0}if(0===r){for(u=0;u<32;u++)this.buf_[8192+u]=this.buf_[u];this.buf_ptr_=i}else this.buf_ptr_=0;this.bit_end_pos_+=o<<3}},BrotliBitReader.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},BrotliBitReader.prototype.readBits=function(r){32-this.bit_pos_<r&&this.fillBitWindow();var i=this.val_>>>this.bit_pos_&o[r];return this.bit_pos_+=r,i},r.exports=BrotliBitReader},7080:function(r,i){i.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,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,0,1,2,3,4,5,6,7,8,9,10,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,0,1,2,3,4,5,6,7,8,9,10,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,0,1,2,3,4,5,6,7,8,9,10,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,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),i.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},6450:function(r,i,o){var u=o(6154).g,p=o(6154).j,g=o(4181),y=o(5139),w=o(966).h,_=o(966).g,x=o(7080),k=o(8435),P=o(2973),O=1080,I=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),B=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),R=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),D=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function DecodeWindowBits(r){var i;return 0===r.readBits(1)?16:(i=r.readBits(3))>0?17+i:(i=r.readBits(3))>0?8+i:17}function DecodeVarLenUint8(r){if(r.readBits(1)){var i=r.readBits(3);return 0===i?1:r.readBits(i)+(1<<i)}return 0}function MetaBlockLength(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function DecodeMetaBlockLength(r){var i,o,u,p=new MetaBlockLength;if(p.input_end=r.readBits(1),p.input_end&&r.readBits(1))return p;if(7===(i=r.readBits(2)+4)){if(p.is_metadata=!0,0!==r.readBits(1))throw new Error("Invalid reserved bit");if(0===(o=r.readBits(2)))return p;for(u=0;u<o;u++){var g=r.readBits(8);if(u+1===o&&o>1&&0===g)throw new Error("Invalid size byte");p.meta_block_length|=g<<8*u}}else for(u=0;u<i;++u){var y=r.readBits(4);if(u+1===i&&i>4&&0===y)throw new Error("Invalid size nibble");p.meta_block_length|=y<<4*u}return++p.meta_block_length,p.input_end||p.is_metadata||(p.is_uncompressed=r.readBits(1)),p}function ReadSymbol(r,i,o){var u;return o.fillBitWindow(),(u=r[i+=o.val_>>>o.bit_pos_&255].bits-8)>0&&(o.bit_pos_+=8,i+=r[i].value,i+=o.val_>>>o.bit_pos_&(1<<u)-1),o.bit_pos_+=r[i].bits,r[i].value}function ReadHuffmanCode(r,i,o,u){var p,g,y=new Uint8Array(r);if(u.readMoreInput(),1===(g=u.readBits(2))){for(var x=r-1,k=0,P=new Int32Array(4),O=u.readBits(2)+1;x;)x>>=1,++k;for(B=0;B<O;++B)P[B]=u.readBits(k)%r,y[P[B]]=2;switch(y[P[0]]=1,O){case 1:break;case 3:if(P[0]===P[1]||P[0]===P[2]||P[1]===P[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(P[0]===P[1])throw new Error("[ReadHuffmanCode] invalid symbols");y[P[1]]=1;break;case 4:if(P[0]===P[1]||P[0]===P[2]||P[0]===P[3]||P[1]===P[2]||P[1]===P[3]||P[2]===P[3])throw new Error("[ReadHuffmanCode] invalid symbols");u.readBits(1)?(y[P[2]]=3,y[P[3]]=3):y[P[0]]=2}}else{var B,R=new Uint8Array(18),D=32,N=0,W=[new w(2,0),new w(2,4),new w(2,3),new w(3,2),new w(2,0),new w(2,4),new w(2,3),new w(4,1),new w(2,0),new w(2,4),new w(2,3),new w(3,2),new w(2,0),new w(2,4),new w(2,3),new w(4,5)];for(B=g;B<18&&D>0;++B){var U,j=I[B],G=0;u.fillBitWindow(),G+=u.val_>>>u.bit_pos_&15,u.bit_pos_+=W[G].bits,U=W[G].value,R[j]=U,0!==U&&(D-=32>>U,++N)}if(1!==N&&0!==D)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function ReadHuffmanCodeLengths(r,i,o,u){for(var p=0,g=8,y=0,x=0,k=32768,P=[],O=0;O<32;O++)P.push(new w(0,0));for(_(P,0,5,r,18);p<i&&k>0;){var I,B=0;if(u.readMoreInput(),u.fillBitWindow(),B+=u.val_>>>u.bit_pos_&31,u.bit_pos_+=P[B].bits,(I=255&P[B].value)<16)y=0,o[p++]=I,0!==I&&(g=I,k-=32768>>I);else{var R,D,N=I-14,W=0;if(16===I&&(W=g),x!==W&&(y=0,x=W),R=y,y>0&&(y-=2,y<<=N),p+(D=(y+=u.readBits(N)+3)-R)>i)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var U=0;U<D;U++)o[p+U]=x;p+=D,0!==x&&(k-=D<<15-x)}}if(0!==k)throw new Error("[ReadHuffmanCodeLengths] space = "+k);for(;p<i;p++)o[p]=0}(R,r,y,u)}if(0===(p=_(i,o,8,y,r)))throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return p}function ReadBlockLength(r,i,o){var u,p;return u=ReadSymbol(r,i,o),p=k.kBlockLengthPrefixCode[u].nbits,k.kBlockLengthPrefixCode[u].offset+o.readBits(p)}function TranslateShortCodes(r,i,o){var u;return r<16?(o+=B[r],u=i[o&=3]+R[r]):u=r-16+1,u}function MoveToFront(r,i){for(var o=r[i],u=i;u;--u)r[u]=r[u-1];r[0]=o}function HuffmanTreeGroup(r,i){this.alphabet_size=r,this.num_htrees=i,this.codes=new Array(i+i*D[r+31>>>5]),this.htrees=new Uint32Array(i)}function DecodeContextMap(r,i){var o,u,p={num_htrees:null,context_map:null},g=0;i.readMoreInput();var y=p.num_htrees=DecodeVarLenUint8(i)+1,_=p.context_map=new Uint8Array(r);if(y<=1)return p;for(i.readBits(1)&&(g=i.readBits(4)+1),o=[],u=0;u<O;u++)o[u]=new w(0,0);for(ReadHuffmanCode(y+g,o,0,i),u=0;u<r;){var x;if(i.readMoreInput(),0===(x=ReadSymbol(o,0,i)))_[u]=0,++u;else if(x<=g)for(var k=1+(1<<x)+i.readBits(x);--k;){if(u>=r)throw new Error("[DecodeContextMap] i >= context_map_size");_[u]=0,++u}else _[u]=x-g,++u}return i.readBits(1)&&function InverseMoveToFrontTransform(r,i){var o,u=new Uint8Array(256);for(o=0;o<256;++o)u[o]=o;for(o=0;o<i;++o){var p=r[o];r[o]=u[p],p&&MoveToFront(u,p)}}(_,r),p}function DecodeBlockType(r,i,o,u,p,g,y){var w,_=2*o,x=o,k=ReadSymbol(i,o*O,y);(w=0===k?p[_+(1&g[x])]:1===k?p[_+(g[x]-1&1)]+1:k-2)>=r&&(w-=r),u[o]=w,p[_+(1&g[x])]=w,++g[x]}function CopyUncompressedBlockToOutput(r,i,o,u,p,y){var w,_=p+1,x=o&p,k=y.pos_&g.IBUF_MASK;if(i<8||y.bit_pos_+(i<<3)<y.bit_end_pos_)for(;i-- >0;)y.readMoreInput(),u[x++]=y.readBits(8),x===_&&(r.write(u,_),x=0);else{if(y.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;y.bit_pos_<32;)u[x]=y.val_>>>y.bit_pos_,y.bit_pos_+=8,++x,--i;if(k+(w=y.bit_end_pos_-y.bit_pos_>>3)>g.IBUF_MASK){for(var P=g.IBUF_MASK+1-k,O=0;O<P;O++)u[x+O]=y.buf_[k+O];w-=P,x+=P,i-=P,k=0}for(O=0;O<w;O++)u[x+O]=y.buf_[k+O];if(i-=w,(x+=w)>=_){r.write(u,_),x-=_;for(O=0;O<x;O++)u[O]=u[_+O]}for(;x+i>=_;){if(w=_-x,y.input_.read(u,x,w)<w)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");r.write(u,_),i-=w,x=0}if(y.input_.read(u,x,i)<i)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");y.reset()}}function JumpToByteBoundary(r){var i=r.bit_pos_+7&-8;return 0==r.readBits(i-r.bit_pos_)}function BrotliDecompressedSize(r){var i=new u(r),o=new g(i);return DecodeWindowBits(o),DecodeMetaBlockLength(o).meta_block_length}function BrotliDecompress(r,i){var o,u,p,_,I,B,R,D,N,W,U=0,j=0,G=0,X=[16,15,11,4],K=0,Y=0,J=0,$=[new HuffmanTreeGroup(0,0),new HuffmanTreeGroup(0,0),new HuffmanTreeGroup(0,0)],ee=128+g.READ_SIZE;p=(1<<(u=DecodeWindowBits(W=new g(r))))-16,I=(_=1<<u)-1,B=new Uint8Array(_+ee+y.maxDictionaryWordLength),R=_,D=[],N=[];for(var te=0;te<3240;te++)D[te]=new w(0,0),N[te]=new w(0,0);for(;!j;){var re,ne,ie,oe,ae,se,ce,le,ue,fe,he,de=0,pe=[1<<28,1<<28,1<<28],ge=[0],ye=[1,1,1],ve=[0,1,0,1,0,1],me=[0],be=null,we=null,_e=0,Se=null,xe=0,Ce=0,ke=0;for(o=0;o<3;++o)$[o].codes=null,$[o].htrees=null;W.readMoreInput();var Pe=DecodeMetaBlockLength(W);if(U+(de=Pe.meta_block_length)>i.buffer.length){var Ae=new Uint8Array(U+de);Ae.set(i.buffer),i.buffer=Ae}if(j=Pe.input_end,re=Pe.is_uncompressed,Pe.is_metadata)for(JumpToByteBoundary(W);de>0;--de)W.readMoreInput(),W.readBits(8);else if(0!==de)if(re)W.bit_pos_=W.bit_pos_+7&-8,CopyUncompressedBlockToOutput(i,de,U,B,I,W),U+=de;else{for(o=0;o<3;++o)ye[o]=DecodeVarLenUint8(W)+1,ye[o]>=2&&(ReadHuffmanCode(ye[o]+2,D,o*O,W),ReadHuffmanCode(26,N,o*O,W),pe[o]=ReadBlockLength(N,o*O,W),me[o]=1);for(W.readMoreInput(),oe=(1<<(ne=W.readBits(2)))-1,ae=(ie=16+(W.readBits(4)<<ne))+(48<<ne),be=new Uint8Array(ye[0]),o=0;o<ye[0];++o)W.readMoreInput(),be[o]=W.readBits(2)<<1;var Ee=DecodeContextMap(ye[0]<<6,W);ce=Ee.num_htrees,se=Ee.context_map;var Te=DecodeContextMap(ye[2]<<2,W);for(ue=Te.num_htrees,le=Te.context_map,$[0]=new HuffmanTreeGroup(256,ce),$[1]=new HuffmanTreeGroup(704,ye[1]),$[2]=new HuffmanTreeGroup(ae,ue),o=0;o<3;++o)$[o].decode(W);for(we=0,Se=0,fe=be[ge[0]],Ce=x.lookupOffsets[fe],ke=x.lookupOffsets[fe+1],he=$[1].htrees[0];de>0;){var Oe,Ie,Be,Fe,Le,Re,De,Me,Ne,We,ze,Ue;for(W.readMoreInput(),0===pe[1]&&(DecodeBlockType(ye[1],D,1,ge,ve,me,W),pe[1]=ReadBlockLength(N,O,W),he=$[1].htrees[ge[1]]),--pe[1],(Ie=(Oe=ReadSymbol($[1].codes,he,W))>>6)>=2?(Ie-=2,De=-1):De=0,Be=k.kInsertRangeLut[Ie]+(Oe>>3&7),Fe=k.kCopyRangeLut[Ie]+(7&Oe),Le=k.kInsertLengthPrefixCode[Be].offset+W.readBits(k.kInsertLengthPrefixCode[Be].nbits),Re=k.kCopyLengthPrefixCode[Fe].offset+W.readBits(k.kCopyLengthPrefixCode[Fe].nbits),Y=B[U-1&I],J=B[U-2&I],Ne=0;Ne<Le;++Ne)W.readMoreInput(),0===pe[0]&&(DecodeBlockType(ye[0],D,0,ge,ve,me,W),pe[0]=ReadBlockLength(N,0,W),we=ge[0]<<6,fe=be[ge[0]],Ce=x.lookupOffsets[fe],ke=x.lookupOffsets[fe+1]),_e=se[we+(x.lookup[Ce+Y]|x.lookup[ke+J])],--pe[0],J=Y,Y=ReadSymbol($[0].codes,$[0].htrees[_e],W),B[U&I]=Y,(U&I)===I&&i.write(B,_),++U;if((de-=Le)<=0)break;if(De<0)if(W.readMoreInput(),0===pe[2]&&(DecodeBlockType(ye[2],D,2,ge,ve,me,W),pe[2]=ReadBlockLength(N,2160,W),Se=ge[2]<<2),--pe[2],xe=le[Se+(255&(Re>4?3:Re-2))],(De=ReadSymbol($[2].codes,$[2].htrees[xe],W))>=ie)Ue=(De-=ie)&oe,De=ie+((je=(2+(1&(De>>=ne))<<(ze=1+(De>>1)))-4)+W.readBits(ze)<<ne)+Ue;if((Me=TranslateShortCodes(De,X,K))<0)throw new Error("[BrotliDecompress] invalid distance");if(We=U&I,Me>(G=U<p&&G!==p?U:p)){if(!(Re>=y.minDictionaryWordLength&&Re<=y.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+U+" distance: "+Me+" len: "+Re+" bytes left: "+de);var je=y.offsetsByLength[Re],Ge=Me-G-1,Ve=y.sizeBitsByLength[Re],He=Ge>>Ve;if(je+=(Ge&(1<<Ve)-1)*Re,!(He<P.kNumTransforms))throw new Error("Invalid backward reference. pos: "+U+" distance: "+Me+" len: "+Re+" bytes left: "+de);var qe=P.transformDictionaryWord(B,We,je,Re,He);if(U+=qe,de-=qe,(We+=qe)>=R){i.write(B,_);for(var Xe=0;Xe<We-R;Xe++)B[Xe]=B[R+Xe]}}else{if(De>0&&(X[3&K]=Me,++K),Re>de)throw new Error("Invalid backward reference. pos: "+U+" distance: "+Me+" len: "+Re+" bytes left: "+de);for(Ne=0;Ne<Re;++Ne)B[U&I]=B[U-Me&I],(U&I)===I&&i.write(B,_),++U,--de}Y=B[U-1&I],J=B[U-2&I]}U&=1073741823}}i.write(B,U&I)}HuffmanTreeGroup.prototype.decode=function(r){var i,o=0;for(i=0;i<this.num_htrees;++i)this.htrees[i]=o,o+=ReadHuffmanCode(this.alphabet_size,this.codes,o,r)},i.BrotliDecompressBuffer=function BrotliDecompressBuffer(r,i){var o=new u(r);null==i&&(i=BrotliDecompressedSize(r));var g=new Uint8Array(i),y=new p(g);return BrotliDecompress(o,y),y.pos<y.buffer.length&&(y.buffer=y.buffer.subarray(0,y.pos)),y.buffer},y.init()},5340:function(r,i,o){var u=o(9742);i.init=function(){return(0,o(6450).BrotliDecompressBuffer)(u.toByteArray(o(2722)))}},2722:function(r){r.exports="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"},5139:function(r,i,o){var u=o(5340);i.init=function(){i.dictionary=u.init()},i.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),i.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),i.minDictionaryWordLength=4,i.maxDictionaryWordLength=24},966:function(r,i){function HuffmanCode(r,i){this.bits=r,this.value=i}i.h=HuffmanCode;var o=15;function GetNextKey(r,i){for(var o=1<<i-1;r&o;)o>>=1;return(r&o-1)+o}function ReplicateValue(r,i,o,u,p){do{r[i+(u-=o)]=new HuffmanCode(p.bits,p.value)}while(u>0)}function NextTableBitSize(r,i,u){for(var p=1<<i-u;i<o&&!((p-=r[i])<=0);)++i,p<<=1;return i-u}i.g=function(r,i,u,p,g){var y,w,_,x,k,P,O,I,B,R,D=i,N=new Int32Array(16),W=new Int32Array(16);for(R=new Int32Array(g),w=0;w<g;w++)N[p[w]]++;for(W[1]=0,y=1;y<o;y++)W[y+1]=W[y]+N[y];for(w=0;w<g;w++)0!==p[w]&&(R[W[p[w]]++]=w);if(B=I=1<<(O=u),1===W[15]){for(_=0;_<B;++_)r[i+_]=new HuffmanCode(0,65535&R[0]);return B}for(_=0,w=0,y=1,x=2;y<=u;++y,x<<=1)for(;N[y]>0;--N[y])ReplicateValue(r,i+_,x,I,new HuffmanCode(255&y,65535&R[w++])),_=GetNextKey(_,y);for(P=B-1,k=-1,y=u+1,x=2;y<=o;++y,x<<=1)for(;N[y]>0;--N[y])(_&P)!==k&&(i+=I,B+=I=1<<(O=NextTableBitSize(N,y,u)),r[D+(k=_&P)]=new HuffmanCode(O+u&255,i-D-k&65535)),ReplicateValue(r,i+(_>>u),x,I,new HuffmanCode(y-u&255,65535&R[w++])),_=GetNextKey(_,y);return B}},8435:function(r,i){function PrefixCodeRange(r,i){this.offset=r,this.nbits=i}i.kBlockLengthPrefixCode=[new PrefixCodeRange(1,2),new PrefixCodeRange(5,2),new PrefixCodeRange(9,2),new PrefixCodeRange(13,2),new PrefixCodeRange(17,3),new PrefixCodeRange(25,3),new PrefixCodeRange(33,3),new PrefixCodeRange(41,3),new PrefixCodeRange(49,4),new PrefixCodeRange(65,4),new PrefixCodeRange(81,4),new PrefixCodeRange(97,4),new PrefixCodeRange(113,5),new PrefixCodeRange(145,5),new PrefixCodeRange(177,5),new PrefixCodeRange(209,5),new PrefixCodeRange(241,6),new PrefixCodeRange(305,6),new PrefixCodeRange(369,7),new PrefixCodeRange(497,8),new PrefixCodeRange(753,9),new PrefixCodeRange(1265,10),new PrefixCodeRange(2289,11),new PrefixCodeRange(4337,12),new PrefixCodeRange(8433,13),new PrefixCodeRange(16625,24)],i.kInsertLengthPrefixCode=[new PrefixCodeRange(0,0),new PrefixCodeRange(1,0),new PrefixCodeRange(2,0),new PrefixCodeRange(3,0),new PrefixCodeRange(4,0),new PrefixCodeRange(5,0),new PrefixCodeRange(6,1),new PrefixCodeRange(8,1),new PrefixCodeRange(10,2),new PrefixCodeRange(14,2),new PrefixCodeRange(18,3),new PrefixCodeRange(26,3),new PrefixCodeRange(34,4),new PrefixCodeRange(50,4),new PrefixCodeRange(66,5),new PrefixCodeRange(98,5),new PrefixCodeRange(130,6),new PrefixCodeRange(194,7),new PrefixCodeRange(322,8),new PrefixCodeRange(578,9),new PrefixCodeRange(1090,10),new PrefixCodeRange(2114,12),new PrefixCodeRange(6210,14),new PrefixCodeRange(22594,24)],i.kCopyLengthPrefixCode=[new PrefixCodeRange(2,0),new PrefixCodeRange(3,0),new PrefixCodeRange(4,0),new PrefixCodeRange(5,0),new PrefixCodeRange(6,0),new PrefixCodeRange(7,0),new PrefixCodeRange(8,0),new PrefixCodeRange(9,0),new PrefixCodeRange(10,1),new PrefixCodeRange(12,1),new PrefixCodeRange(14,2),new PrefixCodeRange(18,2),new PrefixCodeRange(22,3),new PrefixCodeRange(30,3),new PrefixCodeRange(38,4),new PrefixCodeRange(54,4),new PrefixCodeRange(70,5),new PrefixCodeRange(102,5),new PrefixCodeRange(134,6),new PrefixCodeRange(198,7),new PrefixCodeRange(326,8),new PrefixCodeRange(582,9),new PrefixCodeRange(1094,10),new PrefixCodeRange(2118,24)],i.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],i.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},6154:function(r,i){function BrotliInput(r){this.buffer=r,this.pos=0}function BrotliOutput(r){this.buffer=r,this.pos=0}BrotliInput.prototype.read=function(r,i,o){this.pos+o>this.buffer.length&&(o=this.buffer.length-this.pos);for(var u=0;u<o;u++)r[i+u]=this.buffer[this.pos+u];return this.pos+=o,o},i.g=BrotliInput,BrotliOutput.prototype.write=function(r,i){if(this.pos+i>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(r.subarray(0,i),this.pos),this.pos+=i,i},i.j=BrotliOutput},2973:function(r,i,o){var u=o(5139),p=10,g=11;function Transform(r,i,o){this.prefix=new Uint8Array(r.length),this.transform=i,this.suffix=new Uint8Array(o.length);for(var u=0;u<r.length;u++)this.prefix[u]=r.charCodeAt(u);for(u=0;u<o.length;u++)this.suffix[u]=o.charCodeAt(u)}var y=[new Transform("",0,""),new Transform("",0," "),new Transform(" ",0," "),new Transform("",12,""),new Transform("",p," "),new Transform("",0," the "),new Transform(" ",0,""),new Transform("s ",0," "),new Transform("",0," of "),new Transform("",p,""),new Transform("",0," and "),new Transform("",13,""),new Transform("",1,""),new Transform(", ",0," "),new Transform("",0,", "),new Transform(" ",p," "),new Transform("",0," in "),new Transform("",0," to "),new Transform("e ",0," "),new Transform("",0,'"'),new Transform("",0,"."),new Transform("",0,'">'),new Transform("",0,"\n"),new Transform("",3,""),new Transform("",0,"]"),new Transform("",0," for "),new Transform("",14,""),new Transform("",2,""),new Transform("",0," a "),new Transform("",0," that "),new Transform(" ",p,""),new Transform("",0,". "),new Transform(".",0,""),new Transform(" ",0,", "),new Transform("",15,""),new Transform("",0," with "),new Transform("",0,"'"),new Transform("",0," from "),new Transform("",0," by "),new Transform("",16,""),new Transform("",17,""),new Transform(" the ",0,""),new Transform("",4,""),new Transform("",0,". The "),new Transform("",g,""),new Transform("",0," on "),new Transform("",0," as "),new Transform("",0," is "),new Transform("",7,""),new Transform("",1,"ing "),new Transform("",0,"\n\t"),new Transform("",0,":"),new Transform(" ",0,". "),new Transform("",0,"ed "),new Transform("",20,""),new Transform("",18,""),new Transform("",6,""),new Transform("",0,"("),new Transform("",p,", "),new Transform("",8,""),new Transform("",0," at "),new Transform("",0,"ly "),new Transform(" the ",0," of "),new Transform("",5,""),new Transform("",9,""),new Transform(" ",p,", "),new Transform("",p,'"'),new Transform(".",0,"("),new Transform("",g," "),new Transform("",p,'">'),new Transform("",0,'="'),new Transform(" ",0,"."),new Transform(".com/",0,""),new Transform(" the ",0," of the "),new Transform("",p,"'"),new Transform("",0,". This "),new Transform("",0,","),new Transform(".",0," "),new Transform("",p,"("),new Transform("",p,"."),new Transform("",0," not "),new Transform(" ",0,'="'),new Transform("",0,"er "),new Transform(" ",g," "),new Transform("",0,"al "),new Transform(" ",g,""),new Transform("",0,"='"),new Transform("",g,'"'),new Transform("",p,". "),new Transform(" ",0,"("),new Transform("",0,"ful "),new Transform(" ",p,". "),new Transform("",0,"ive "),new Transform("",0,"less "),new Transform("",g,"'"),new Transform("",0,"est "),new Transform(" ",p,"."),new Transform("",g,'">'),new Transform(" ",0,"='"),new Transform("",p,","),new Transform("",0,"ize "),new Transform("",g,"."),new Transform(" ",0,""),new Transform(" ",0,","),new Transform("",p,'="'),new Transform("",g,'="'),new Transform("",0,"ous "),new Transform("",g,", "),new Transform("",p,"='"),new Transform(" ",p,","),new Transform(" ",g,'="'),new Transform(" ",g,", "),new Transform("",g,","),new Transform("",g,"("),new Transform("",g,". "),new Transform(" ",g,"."),new Transform("",g,"='"),new Transform(" ",g,". "),new Transform(" ",p,'="'),new Transform(" ",g,"='"),new Transform(" ",p,"='")];function ToUpperCase(r,i){return r[i]<192?(r[i]>=97&&r[i]<=122&&(r[i]^=32),1):r[i]<224?(r[i+1]^=32,2):(r[i+2]^=5,3)}i.kTransforms=y,i.kNumTransforms=y.length,i.transformDictionaryWord=function(r,i,o,w,_){var x,k=y[_].prefix,P=y[_].suffix,O=y[_].transform,I=O<12?0:O-11,B=0,R=i;I>w&&(I=w);for(var D=0;D<k.length;)r[i++]=k[D++];for(o+=I,w-=I,O<=9&&(w-=O),B=0;B<w;B++)r[i++]=u.dictionary[o+B];if(x=i-w,O===p)ToUpperCase(r,x);else if(O===g)for(;w>0;){var N=ToUpperCase(r,x);x+=N,w-=N}for(var W=0;W<P.length;)r[i++]=P[W++];return i-R}},7709:function(r,i,o){r.exports=o(6450).BrotliDecompressBuffer},4505:function(r,i,o){"use strict";var u=o(8823).Buffer,p=o(4155),g=o(9282),y=o(2292),w=o(405),_=o(7948),x=o(1619);for(var k in x)i[k]=x[k];i.NONE=0,i.DEFLATE=1,i.INFLATE=2,i.GZIP=3,i.GUNZIP=4,i.DEFLATERAW=5,i.INFLATERAW=6,i.UNZIP=7;function Zlib(r){if("number"!=typeof r||r<i.DEFLATE||r>i.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=r,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}Zlib.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,g(this.init_done,"close before init"),g(this.mode<=i.UNZIP),this.mode===i.DEFLATE||this.mode===i.GZIP||this.mode===i.DEFLATERAW?w.deflateEnd(this.strm):this.mode!==i.INFLATE&&this.mode!==i.GUNZIP&&this.mode!==i.INFLATERAW&&this.mode!==i.UNZIP||_.inflateEnd(this.strm),this.mode=i.NONE,this.dictionary=null)},Zlib.prototype.write=function(r,i,o,u,p,g,y){return this._write(!0,r,i,o,u,p,g,y)},Zlib.prototype.writeSync=function(r,i,o,u,p,g,y){return this._write(!1,r,i,o,u,p,g,y)},Zlib.prototype._write=function(r,o,y,w,_,x,k,P){if(g.equal(arguments.length,8),g(this.init_done,"write before init"),g(this.mode!==i.NONE,"already finalized"),g.equal(!1,this.write_in_progress,"write already in progress"),g.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,g.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==i.Z_NO_FLUSH&&o!==i.Z_PARTIAL_FLUSH&&o!==i.Z_SYNC_FLUSH&&o!==i.Z_FULL_FLUSH&&o!==i.Z_FINISH&&o!==i.Z_BLOCK)throw new Error("Invalid flush value");if(null==y&&(y=u.alloc(0),_=0,w=0),this.strm.avail_in=_,this.strm.input=y,this.strm.next_in=w,this.strm.avail_out=P,this.strm.output=x,this.strm.next_out=k,this.flush=o,!r)return this._process(),this._checkError()?this._afterSync():void 0;var O=this;return p.nextTick((function(){O._process(),O._after()})),this},Zlib.prototype._afterSync=function(){var r=this.strm.avail_out,i=this.strm.avail_in;return this.write_in_progress=!1,[i,r]},Zlib.prototype._process=function(){var r=null;switch(this.mode){case i.DEFLATE:case i.GZIP:case i.DEFLATERAW:this.err=w.deflate(this.strm,this.flush);break;case i.UNZIP:switch(this.strm.avail_in>0&&(r=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===r)break;if(31!==this.strm.input[r]){this.mode=i.INFLATE;break}if(this.gzip_id_bytes_read=1,r++,1===this.strm.avail_in)break;case 1:if(null===r)break;139===this.strm.input[r]?(this.gzip_id_bytes_read=2,this.mode=i.GUNZIP):this.mode=i.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case i.INFLATE:case i.GUNZIP:case i.INFLATERAW:for(this.err=_.inflate(this.strm,this.flush),this.err===i.Z_NEED_DICT&&this.dictionary&&(this.err=_.inflateSetDictionary(this.strm,this.dictionary),this.err===i.Z_OK?this.err=_.inflate(this.strm,this.flush):this.err===i.Z_DATA_ERROR&&(this.err=i.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===i.GUNZIP&&this.err===i.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=_.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},Zlib.prototype._checkError=function(){switch(this.err){case i.Z_OK:case i.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===i.Z_FINISH)return this._error("unexpected end of file"),!1;break;case i.Z_STREAM_END:break;case i.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},Zlib.prototype._after=function(){if(this._checkError()){var r=this.strm.avail_out,i=this.strm.avail_in;this.write_in_progress=!1,this.callback(i,r),this.pending_close&&this.close()}},Zlib.prototype._error=function(r){this.strm.msg&&(r=this.strm.msg),this.onerror(r,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},Zlib.prototype.init=function(r,o,u,p,y){g(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),g(r>=8&&r<=15,"invalid windowBits"),g(o>=-1&&o<=9,"invalid compression level"),g(u>=1&&u<=9,"invalid memlevel"),g(p===i.Z_FILTERED||p===i.Z_HUFFMAN_ONLY||p===i.Z_RLE||p===i.Z_FIXED||p===i.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(o,r,u,p,y),this._setDictionary()},Zlib.prototype.params=function(){throw new Error("deflateParams Not supported")},Zlib.prototype.reset=function(){this._reset(),this._setDictionary()},Zlib.prototype._init=function(r,o,u,p,g){switch(this.level=r,this.windowBits=o,this.memLevel=u,this.strategy=p,this.flush=i.Z_NO_FLUSH,this.err=i.Z_OK,this.mode!==i.GZIP&&this.mode!==i.GUNZIP||(this.windowBits+=16),this.mode===i.UNZIP&&(this.windowBits+=32),this.mode!==i.DEFLATERAW&&this.mode!==i.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new y,this.mode){case i.DEFLATE:case i.GZIP:case i.DEFLATERAW:this.err=w.deflateInit2(this.strm,this.level,i.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case i.INFLATE:case i.GUNZIP:case i.INFLATERAW:case i.UNZIP:this.err=_.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==i.Z_OK&&this._error("Init error"),this.dictionary=g,this.write_in_progress=!1,this.init_done=!0},Zlib.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=i.Z_OK,this.mode){case i.DEFLATE:case i.DEFLATERAW:this.err=w.deflateSetDictionary(this.strm,this.dictionary)}this.err!==i.Z_OK&&this._error("Failed to set dictionary")}},Zlib.prototype._reset=function(){switch(this.err=i.Z_OK,this.mode){case i.DEFLATE:case i.DEFLATERAW:case i.GZIP:this.err=w.deflateReset(this.strm);break;case i.INFLATE:case i.INFLATERAW:case i.GUNZIP:this.err=_.inflateReset(this.strm)}this.err!==i.Z_OK&&this._error("Failed to reset stream")},i.Zlib=Zlib},2635:function(r,i,o){"use strict";var u=o(4155),p=o(8823).Buffer,g=o(2830).Transform,y=o(4505),w=o(9539),_=o(9282).ok,x=o(8823).kMaxLength,k="Cannot create final Buffer. It would be larger than 0x"+x.toString(16)+" bytes";y.Z_MIN_WINDOWBITS=8,y.Z_MAX_WINDOWBITS=15,y.Z_DEFAULT_WINDOWBITS=15,y.Z_MIN_CHUNK=64,y.Z_MAX_CHUNK=1/0,y.Z_DEFAULT_CHUNK=16384,y.Z_MIN_MEMLEVEL=1,y.Z_MAX_MEMLEVEL=9,y.Z_DEFAULT_MEMLEVEL=8,y.Z_MIN_LEVEL=-1,y.Z_MAX_LEVEL=9,y.Z_DEFAULT_LEVEL=y.Z_DEFAULT_COMPRESSION;for(var P=Object.keys(y),O=0;O<P.length;O++){var I=P[O];I.match(/^Z/)&&Object.defineProperty(i,I,{enumerable:!0,value:y[I],writable:!1})}for(var B={Z_OK:y.Z_OK,Z_STREAM_END:y.Z_STREAM_END,Z_NEED_DICT:y.Z_NEED_DICT,Z_ERRNO:y.Z_ERRNO,Z_STREAM_ERROR:y.Z_STREAM_ERROR,Z_DATA_ERROR:y.Z_DATA_ERROR,Z_MEM_ERROR:y.Z_MEM_ERROR,Z_BUF_ERROR:y.Z_BUF_ERROR,Z_VERSION_ERROR:y.Z_VERSION_ERROR},R=Object.keys(B),D=0;D<R.length;D++){var N=R[D];B[B[N]]=N}function zlibBuffer(r,i,o){var u=[],g=0;function flow(){for(var i;null!==(i=r.read());)u.push(i),g+=i.length;r.once("readable",flow)}function onEnd(){var i,y=null;g>=x?y=new RangeError(k):i=p.concat(u,g),u=[],r.close(),o(y,i)}r.on("error",(function onError(i){r.removeListener("end",onEnd),r.removeListener("readable",flow),o(i)})),r.on("end",onEnd),r.end(i),flow()}function zlibBufferSync(r,i){if("string"==typeof i&&(i=p.from(i)),!p.isBuffer(i))throw new TypeError("Not a string or buffer");var o=r._finishFlushFlag;return r._processChunk(i,o)}function Deflate(r){if(!(this instanceof Deflate))return new Deflate(r);Zlib.call(this,r,y.DEFLATE)}function Inflate(r){if(!(this instanceof Inflate))return new Inflate(r);Zlib.call(this,r,y.INFLATE)}function Gzip(r){if(!(this instanceof Gzip))return new Gzip(r);Zlib.call(this,r,y.GZIP)}function Gunzip(r){if(!(this instanceof Gunzip))return new Gunzip(r);Zlib.call(this,r,y.GUNZIP)}function DeflateRaw(r){if(!(this instanceof DeflateRaw))return new DeflateRaw(r);Zlib.call(this,r,y.DEFLATERAW)}function InflateRaw(r){if(!(this instanceof InflateRaw))return new InflateRaw(r);Zlib.call(this,r,y.INFLATERAW)}function Unzip(r){if(!(this instanceof Unzip))return new Unzip(r);Zlib.call(this,r,y.UNZIP)}function isValidFlushFlag(r){return r===y.Z_NO_FLUSH||r===y.Z_PARTIAL_FLUSH||r===y.Z_SYNC_FLUSH||r===y.Z_FULL_FLUSH||r===y.Z_FINISH||r===y.Z_BLOCK}function Zlib(r,o){var u=this;if(this._opts=r=r||{},this._chunkSize=r.chunkSize||i.Z_DEFAULT_CHUNK,g.call(this,r),r.flush&&!isValidFlushFlag(r.flush))throw new Error("Invalid flush flag: "+r.flush);if(r.finishFlush&&!isValidFlushFlag(r.finishFlush))throw new Error("Invalid flush flag: "+r.finishFlush);if(this._flushFlag=r.flush||y.Z_NO_FLUSH,this._finishFlushFlag=void 0!==r.finishFlush?r.finishFlush:y.Z_FINISH,r.chunkSize&&(r.chunkSize<i.Z_MIN_CHUNK||r.chunkSize>i.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+r.chunkSize);if(r.windowBits&&(r.windowBits<i.Z_MIN_WINDOWBITS||r.windowBits>i.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+r.windowBits);if(r.level&&(r.level<i.Z_MIN_LEVEL||r.level>i.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+r.level);if(r.memLevel&&(r.memLevel<i.Z_MIN_MEMLEVEL||r.memLevel>i.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+r.memLevel);if(r.strategy&&r.strategy!=i.Z_FILTERED&&r.strategy!=i.Z_HUFFMAN_ONLY&&r.strategy!=i.Z_RLE&&r.strategy!=i.Z_FIXED&&r.strategy!=i.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+r.strategy);if(r.dictionary&&!p.isBuffer(r.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new y.Zlib(o);var w=this;this._hadError=!1,this._handle.onerror=function(r,o){_close(w),w._hadError=!0;var u=new Error(r);u.errno=o,u.code=i.codes[o],w.emit("error",u)};var _=i.Z_DEFAULT_COMPRESSION;"number"==typeof r.level&&(_=r.level);var x=i.Z_DEFAULT_STRATEGY;"number"==typeof r.strategy&&(x=r.strategy),this._handle.init(r.windowBits||i.Z_DEFAULT_WINDOWBITS,_,r.memLevel||i.Z_DEFAULT_MEMLEVEL,x,r.dictionary),this._buffer=p.allocUnsafe(this._chunkSize),this._offset=0,this._level=_,this._strategy=x,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!u._handle},configurable:!0,enumerable:!0})}function _close(r,i){i&&u.nextTick(i),r._handle&&(r._handle.close(),r._handle=null)}function emitCloseNT(r){r.emit("close")}Object.defineProperty(i,"codes",{enumerable:!0,value:Object.freeze(B),writable:!1}),i.Deflate=Deflate,i.Inflate=Inflate,i.Gzip=Gzip,i.Gunzip=Gunzip,i.DeflateRaw=DeflateRaw,i.InflateRaw=InflateRaw,i.Unzip=Unzip,i.createDeflate=function(r){return new Deflate(r)},i.createInflate=function(r){return new Inflate(r)},i.createDeflateRaw=function(r){return new DeflateRaw(r)},i.createInflateRaw=function(r){return new InflateRaw(r)},i.createGzip=function(r){return new Gzip(r)},i.createGunzip=function(r){return new Gunzip(r)},i.createUnzip=function(r){return new Unzip(r)},i.deflate=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Deflate(i),r,o)},i.deflateSync=function(r,i){return zlibBufferSync(new Deflate(i),r)},i.gzip=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Gzip(i),r,o)},i.gzipSync=function(r,i){return zlibBufferSync(new Gzip(i),r)},i.deflateRaw=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new DeflateRaw(i),r,o)},i.deflateRawSync=function(r,i){return zlibBufferSync(new DeflateRaw(i),r)},i.unzip=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Unzip(i),r,o)},i.unzipSync=function(r,i){return zlibBufferSync(new Unzip(i),r)},i.inflate=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Inflate(i),r,o)},i.inflateSync=function(r,i){return zlibBufferSync(new Inflate(i),r)},i.gunzip=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Gunzip(i),r,o)},i.gunzipSync=function(r,i){return zlibBufferSync(new Gunzip(i),r)},i.inflateRaw=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new InflateRaw(i),r,o)},i.inflateRawSync=function(r,i){return zlibBufferSync(new InflateRaw(i),r)},w.inherits(Zlib,g),Zlib.prototype.params=function(r,o,p){if(r<i.Z_MIN_LEVEL||r>i.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+r);if(o!=i.Z_FILTERED&&o!=i.Z_HUFFMAN_ONLY&&o!=i.Z_RLE&&o!=i.Z_FIXED&&o!=i.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+o);if(this._level!==r||this._strategy!==o){var g=this;this.flush(y.Z_SYNC_FLUSH,(function(){_(g._handle,"zlib binding closed"),g._handle.params(r,o),g._hadError||(g._level=r,g._strategy=o,p&&p())}))}else u.nextTick(p)},Zlib.prototype.reset=function(){return _(this._handle,"zlib binding closed"),this._handle.reset()},Zlib.prototype._flush=function(r){this._transform(p.alloc(0),"",r)},Zlib.prototype.flush=function(r,i){var o=this,g=this._writableState;("function"==typeof r||void 0===r&&!i)&&(i=r,r=y.Z_FULL_FLUSH),g.ended?i&&u.nextTick(i):g.ending?i&&this.once("end",i):g.needDrain?i&&this.once("drain",(function(){return o.flush(r,i)})):(this._flushFlag=r,this.write(p.alloc(0),"",i))},Zlib.prototype.close=function(r){_close(this,r),u.nextTick(emitCloseNT,this)},Zlib.prototype._transform=function(r,i,o){var u,g=this._writableState,w=(g.ending||g.ended)&&(!r||g.length===r.length);return null===r||p.isBuffer(r)?this._handle?(w?u=this._finishFlushFlag:(u=this._flushFlag,r.length>=g.length&&(this._flushFlag=this._opts.flush||y.Z_NO_FLUSH)),void this._processChunk(r,u,o)):o(new Error("zlib binding closed")):o(new Error("invalid input"))},Zlib.prototype._processChunk=function(r,i,o){var u=r&&r.length,g=this._chunkSize-this._offset,y=0,w=this,P="function"==typeof o;if(!P){var O,I=[],B=0;this.on("error",(function(r){O=r})),_(this._handle,"zlib binding closed");do{var R=this._handle.writeSync(i,r,y,u,this._buffer,this._offset,g)}while(!this._hadError&&callback(R[0],R[1]));if(this._hadError)throw O;if(B>=x)throw _close(this),new RangeError(k);var D=p.concat(I,B);return _close(this),D}_(this._handle,"zlib binding closed");var N=this._handle.write(i,r,y,u,this._buffer,this._offset,g);function callback(x,k){if(this&&(this.buffer=null,this.callback=null),!w._hadError){var O=g-k;if(_(O>=0,"have should not go down"),O>0){var R=w._buffer.slice(w._offset,w._offset+O);w._offset+=O,P?w.push(R):(I.push(R),B+=R.length)}if((0===k||w._offset>=w._chunkSize)&&(g=w._chunkSize,w._offset=0,w._buffer=p.allocUnsafe(w._chunkSize)),0===k){if(y+=u-x,u=x,!P)return!0;var D=w._handle.write(i,r,y,u,w._buffer,w._offset,w._chunkSize);return D.callback=callback,void(D.buffer=r)}if(!P)return!1;o()}}N.buffer=r,N.callback=callback},w.inherits(Deflate,Zlib),w.inherits(Inflate,Zlib),w.inherits(Gzip,Zlib),w.inherits(Gunzip,Zlib),w.inherits(DeflateRaw,Zlib),w.inherits(InflateRaw,Zlib),w.inherits(Unzip,Zlib)},1924:function(r,i,o){"use strict";var u=o(210),p=o(5559),g=p(u("String.prototype.indexOf"));r.exports=function callBoundIntrinsic(r,i){var o=u(r,!!i);return"function"==typeof o&&g(r,".prototype.")>-1?p(o):o}},5559:function(r,i,o){"use strict";var u=o(8612),p=o(210),g=p("%Function.prototype.apply%"),y=p("%Function.prototype.call%"),w=p("%Reflect.apply%",!0)||u.call(y,g),_=p("%Object.getOwnPropertyDescriptor%",!0),x=p("%Object.defineProperty%",!0),k=p("%Math.max%");if(x)try{x({},"a",{value:1})}catch(r){x=null}r.exports=function callBind(r){var i=w(u,y,arguments);if(_&&x){var o=_(i,"length");o.configurable&&x(i,"length",{value:1+k(0,r.length-(arguments.length-1))})}return i};var P=function applyBind(){return w(u,g,arguments)};x?x(r.exports,"apply",{value:P}):r.exports.apply=P},6313:function(r,i,o){var u=o(8823).Buffer,p=function(){"use strict";function clone(r,i,o,p){"object"==typeof i&&(o=i.depth,p=i.prototype,i.filter,i=i.circular);var g=[],y=[],w=void 0!==u;return void 0===i&&(i=!0),void 0===o&&(o=1/0),function _clone(r,o){if(null===r)return null;if(0==o)return r;var _,x;if("object"!=typeof r)return r;if(clone.__isArray(r))_=[];else if(clone.__isRegExp(r))_=new RegExp(r.source,__getRegExpFlags(r)),r.lastIndex&&(_.lastIndex=r.lastIndex);else if(clone.__isDate(r))_=new Date(r.getTime());else{if(w&&u.isBuffer(r))return _=u.allocUnsafe?u.allocUnsafe(r.length):new u(r.length),r.copy(_),_;void 0===p?(x=Object.getPrototypeOf(r),_=Object.create(x)):(_=Object.create(p),x=p)}if(i){var k=g.indexOf(r);if(-1!=k)return y[k];g.push(r),y.push(_)}for(var P in r){var O;x&&(O=Object.getOwnPropertyDescriptor(x,P)),O&&null==O.set||(_[P]=_clone(r[P],o-1))}return _}(r,o)}function __objToStr(r){return Object.prototype.toString.call(r)}function __getRegExpFlags(r){var i="";return r.global&&(i+="g"),r.ignoreCase&&(i+="i"),r.multiline&&(i+="m"),i}return clone.clonePrototype=function clonePrototype(r){if(null===r)return null;var c=function(){};return c.prototype=r,new c},clone.__objToStr=__objToStr,clone.__isDate=function __isDate(r){return"object"==typeof r&&"[object Date]"===__objToStr(r)},clone.__isArray=function __isArray(r){return"object"==typeof r&&"[object Array]"===__objToStr(r)},clone.__isRegExp=function __isRegExp(r){return"object"==typeof r&&"[object RegExp]"===__objToStr(r)},clone.__getRegExpFlags=__getRegExpFlags,clone}();r.exports&&(r.exports=p)},4667:function(r,i,o){o(2479);var u=o(857);r.exports=u.Object.values},7633:function(r,i,o){o(9170),o(6992),o(1539),o(8674),o(7922),o(4668),o(7727),o(8783);var u=o(857);r.exports=u.Promise},3867:function(r,i,o){var u=o(1150);o(8628),o(7314),o(7479),o(6290),r.exports=u},9662:function(r,i,o){var u=o(7854),p=o(614),g=o(6330),y=u.TypeError;r.exports=function(r){if(p(r))return r;throw y(g(r)+" is not a function")}},9483:function(r,i,o){var u=o(7854),p=o(4411),g=o(6330),y=u.TypeError;r.exports=function(r){if(p(r))return r;throw y(g(r)+" is not a constructor")}},6077:function(r,i,o){var u=o(7854),p=o(614),g=u.String,y=u.TypeError;r.exports=function(r){if("object"==typeof r||p(r))return r;throw y("Can't set "+g(r)+" as a prototype")}},1223:function(r,i,o){var u=o(5112),p=o(30),g=o(3070),y=u("unscopables"),w=Array.prototype;null==w[y]&&g.f(w,y,{configurable:!0,value:p(null)}),r.exports=function(r){w[y][r]=!0}},1530:function(r,i,o){"use strict";var u=o(8710).charAt;r.exports=function(r,i,o){return i+(o?u(r,i).length:1)}},5787:function(r,i,o){var u=o(7854),p=o(7976),g=u.TypeError;r.exports=function(r,i){if(p(i,r))return r;throw g("Incorrect invocation")}},9670:function(r,i,o){var u=o(7854),p=o(111),g=u.String,y=u.TypeError;r.exports=function(r){if(p(r))return r;throw y(g(r)+" is not an object")}},1048:function(r,i,o){"use strict";var u=o(7908),p=o(1400),g=o(6244),y=Math.min;r.exports=[].copyWithin||function copyWithin(r,i){var o=u(this),w=g(o),_=p(r,w),x=p(i,w),k=arguments.length>2?arguments[2]:void 0,P=y((void 0===k?w:p(k,w))-x,w-_),O=1;for(x<_&&_<x+P&&(O=-1,x+=P-1,_+=P-1);P-- >0;)x in o?o[_]=o[x]:delete o[_],_+=O,x+=O;return o}},1285:function(r,i,o){"use strict";var u=o(7908),p=o(1400),g=o(6244);r.exports=function fill(r){for(var i=u(this),o=g(i),y=arguments.length,w=p(y>1?arguments[1]:void 0,o),_=y>2?arguments[2]:void 0,x=void 0===_?o:p(_,o);x>w;)i[w++]=r;return i}},8533:function(r,i,o){"use strict";var u=o(2092).forEach,p=o(9341)("forEach");r.exports=p?[].forEach:function forEach(r){return u(this,r,arguments.length>1?arguments[1]:void 0)}},7745:function(r){r.exports=function(r,i){for(var o=0,u=i.length,p=new r(u);u>o;)p[o]=i[o++];return p}},8457:function(r,i,o){"use strict";var u=o(7854),p=o(9974),g=o(6916),y=o(7908),w=o(3411),_=o(7659),x=o(4411),k=o(6244),P=o(6135),O=o(8554),I=o(1246),B=u.Array;r.exports=function from(r){var i=y(r),o=x(this),u=arguments.length,R=u>1?arguments[1]:void 0,D=void 0!==R;D&&(R=p(R,u>2?arguments[2]:void 0));var N,W,U,j,G,X,K=I(i),Y=0;if(!K||this==B&&_(K))for(N=k(i),W=o?new this(N):B(N);N>Y;Y++)X=D?R(i[Y],Y):i[Y],P(W,Y,X);else for(G=(j=O(i,K)).next,W=o?new this:[];!(U=g(G,j)).done;Y++)X=D?w(j,R,[U.value,Y],!0):U.value,P(W,Y,X);return W.length=Y,W}},1318:function(r,i,o){var u=o(5656),p=o(1400),g=o(6244),createMethod=function(r){return function(i,o,y){var w,_=u(i),x=g(_),k=p(y,x);if(r&&o!=o){for(;x>k;)if((w=_[k++])!=w)return!0}else for(;x>k;k++)if((r||k in _)&&_[k]===o)return r||k||0;return!r&&-1}};r.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},2092:function(r,i,o){var u=o(9974),p=o(1702),g=o(8361),y=o(7908),w=o(6244),_=o(5417),x=p([].push),createMethod=function(r){var i=1==r,o=2==r,p=3==r,k=4==r,P=6==r,O=7==r,I=5==r||P;return function(B,R,D,N){for(var W,U,j=y(B),G=g(j),X=u(R,D),K=w(G),Y=0,J=N||_,$=i?J(B,K):o||O?J(B,0):void 0;K>Y;Y++)if((I||Y in G)&&(U=X(W=G[Y],Y,j),r))if(i)$[Y]=U;else if(U)switch(r){case 3:return!0;case 5:return W;case 6:return Y;case 2:x($,W)}else switch(r){case 4:return!1;case 7:x($,W)}return P?-1:p||k?k:$}};r.exports={forEach:createMethod(0),map:createMethod(1),filter:createMethod(2),some:createMethod(3),every:createMethod(4),find:createMethod(5),findIndex:createMethod(6),filterReject:createMethod(7)}},6583:function(r,i,o){"use strict";var u=o(2104),p=o(5656),g=o(9303),y=o(6244),w=o(9341),_=Math.min,x=[].lastIndexOf,k=!!x&&1/[1].lastIndexOf(1,-0)<0,P=w("lastIndexOf"),O=k||!P;r.exports=O?function lastIndexOf(r){if(k)return u(x,this,arguments)||0;var i=p(this),o=y(i),w=o-1;for(arguments.length>1&&(w=_(w,g(arguments[1]))),w<0&&(w=o+w);w>=0;w--)if(w in i&&i[w]===r)return w||0;return-1}:x},1194:function(r,i,o){var u=o(7293),p=o(5112),g=o(7392),y=p("species");r.exports=function(r){return g>=51||!u((function(){var i=[];return(i.constructor={})[y]=function(){return{foo:1}},1!==i[r](Boolean).foo}))}},9341:function(r,i,o){"use strict";var u=o(7293);r.exports=function(r,i){var o=[][r];return!!o&&u((function(){o.call(null,i||function(){throw 1},1)}))}},3671:function(r,i,o){var u=o(7854),p=o(9662),g=o(7908),y=o(8361),w=o(6244),_=u.TypeError,createMethod=function(r){return function(i,o,u,x){p(o);var k=g(i),P=y(k),O=w(k),I=r?O-1:0,B=r?-1:1;if(u<2)for(;;){if(I in P){x=P[I],I+=B;break}if(I+=B,r?I<0:O<=I)throw _("Reduce of empty array with no initial value")}for(;r?I>=0:O>I;I+=B)I in P&&(x=o(x,P[I],I,k));return x}};r.exports={left:createMethod(!1),right:createMethod(!0)}},206:function(r,i,o){var u=o(1702);r.exports=u([].slice)},4362:function(r,i,o){var u=o(206),p=Math.floor,mergeSort=function(r,i){var o=r.length,g=p(o/2);return o<8?insertionSort(r,i):merge(r,mergeSort(u(r,0,g),i),mergeSort(u(r,g),i),i)},insertionSort=function(r,i){for(var o,u,p=r.length,g=1;g<p;){for(u=g,o=r[g];u&&i(r[u-1],o)>0;)r[u]=r[--u];u!==g++&&(r[u]=o)}return r},merge=function(r,i,o,u){for(var p=i.length,g=o.length,y=0,w=0;y<p||w<g;)r[y+w]=y<p&&w<g?u(i[y],o[w])<=0?i[y++]:o[w++]:y<p?i[y++]:o[w++];return r};r.exports=mergeSort},7475:function(r,i,o){var u=o(7854),p=o(3157),g=o(4411),y=o(111),w=o(5112)("species"),_=u.Array;r.exports=function(r){var i;return p(r)&&(i=r.constructor,(g(i)&&(i===_||p(i.prototype))||y(i)&&null===(i=i[w]))&&(i=void 0)),void 0===i?_:i}},5417:function(r,i,o){var u=o(7475);r.exports=function(r,i){return new(u(r))(0===i?0:i)}},3411:function(r,i,o){var u=o(9670),p=o(9212);r.exports=function(r,i,o,g){try{return g?i(u(o)[0],o[1]):i(o)}catch(i){p(r,"throw",i)}}},7072:function(r,i,o){var u=o(5112)("iterator"),p=!1;try{var g=0,y={next:function(){return{done:!!g++}},return:function(){p=!0}};y[u]=function(){return this},Array.from(y,(function(){throw 2}))}catch(r){}r.exports=function(r,i){if(!i&&!p)return!1;var o=!1;try{var g={};g[u]=function(){return{next:function(){return{done:o=!0}}}},r(g)}catch(r){}return o}},4326:function(r,i,o){var u=o(1702),p=u({}.toString),g=u("".slice);r.exports=function(r){return g(p(r),8,-1)}},648:function(r,i,o){var u=o(7854),p=o(1694),g=o(614),y=o(4326),w=o(5112)("toStringTag"),_=u.Object,x="Arguments"==y(function(){return arguments}());r.exports=p?y:function(r){var i,o,u;return void 0===r?"Undefined":null===r?"Null":"string"==typeof(o=function(r,i){try{return r[i]}catch(r){}}(i=_(r),w))?o:x?y(i):"Object"==(u=y(i))&&g(i.callee)?"Arguments":u}},7741:function(r,i,o){var u=o(1702),p=o(206),g=u("".replace),y=u("".split),w=u([].join),_=String(Error("zxcasd").stack),x=/\n\s*at [^:]*:[^\n]*/,k=x.test(_),P=/@[^\n]*\n/.test(_)&&!/zxcasd/.test(_);r.exports=function(r,i){if("string"!=typeof r)return r;if(k)for(;i--;)r=g(r,x,"");else if(P)return w(p(y(r,"\n"),i),"\n");return r}},5631:function(r,i,o){"use strict";var u=o(3070).f,p=o(30),g=o(2248),y=o(9974),w=o(5787),_=o(408),x=o(654),k=o(6340),P=o(9781),O=o(2423).fastKey,I=o(9909),B=I.set,R=I.getterFor;r.exports={getConstructor:function(r,i,o,x){var k=r((function(r,u){w(r,I),B(r,{type:i,index:p(null),first:void 0,last:void 0,size:0}),P||(r.size=0),null!=u&&_(u,r[x],{that:r,AS_ENTRIES:o})})),I=k.prototype,D=R(i),define=function(r,i,o){var u,p,g=D(r),y=getEntry(r,i);return y?y.value=o:(g.last=y={index:p=O(i,!0),key:i,value:o,previous:u=g.last,next:void 0,removed:!1},g.first||(g.first=y),u&&(u.next=y),P?g.size++:r.size++,"F"!==p&&(g.index[p]=y)),r},getEntry=function(r,i){var o,u=D(r),p=O(i);if("F"!==p)return u.index[p];for(o=u.first;o;o=o.next)if(o.key==i)return o};return g(I,{clear:function clear(){for(var r=D(this),i=r.index,o=r.first;o;)o.removed=!0,o.previous&&(o.previous=o.previous.next=void 0),delete i[o.index],o=o.next;r.first=r.last=void 0,P?r.size=0:this.size=0},delete:function(r){var i=this,o=D(i),u=getEntry(i,r);if(u){var p=u.next,g=u.previous;delete o.index[u.index],u.removed=!0,g&&(g.next=p),p&&(p.previous=g),o.first==u&&(o.first=p),o.last==u&&(o.last=g),P?o.size--:i.size--}return!!u},forEach:function forEach(r){for(var i,o=D(this),u=y(r,arguments.length>1?arguments[1]:void 0);i=i?i.next:o.first;)for(u(i.value,i.key,this);i&&i.removed;)i=i.previous},has:function has(r){return!!getEntry(this,r)}}),g(I,o?{get:function get(r){var i=getEntry(this,r);return i&&i.value},set:function set(r,i){return define(this,0===r?0:r,i)}}:{add:function add(r){return define(this,r=0===r?0:r,r)}}),P&&u(I,"size",{get:function(){return D(this).size}}),k},setStrong:function(r,i,o){var u=i+" Iterator",p=R(i),g=R(u);x(r,i,(function(r,i){B(this,{type:u,target:r,state:p(r),kind:i,last:void 0})}),(function(){for(var r=g(this),i=r.kind,o=r.last;o&&o.removed;)o=o.previous;return r.target&&(r.last=o=o?o.next:r.state.first)?"keys"==i?{value:o.key,done:!1}:"values"==i?{value:o.value,done:!1}:{value:[o.key,o.value],done:!1}:(r.target=void 0,{value:void 0,done:!0})}),o?"entries":"values",!o,!0),k(i)}}},7710:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(1702),y=o(4705),w=o(1320),_=o(2423),x=o(408),k=o(5787),P=o(614),O=o(111),I=o(7293),B=o(7072),R=o(8003),D=o(9587);r.exports=function(r,i,o){var N=-1!==r.indexOf("Map"),W=-1!==r.indexOf("Weak"),U=N?"set":"add",j=p[r],G=j&&j.prototype,X=j,K={},fixMethod=function(r){var i=g(G[r]);w(G,r,"add"==r?function add(r){return i(this,0===r?0:r),this}:"delete"==r?function(r){return!(W&&!O(r))&&i(this,0===r?0:r)}:"get"==r?function get(r){return W&&!O(r)?void 0:i(this,0===r?0:r)}:"has"==r?function has(r){return!(W&&!O(r))&&i(this,0===r?0:r)}:function set(r,o){return i(this,0===r?0:r,o),this})};if(y(r,!P(j)||!(W||G.forEach&&!I((function(){(new j).entries().next()})))))X=o.getConstructor(i,r,N,U),_.enable();else if(y(r,!0)){var Y=new X,J=Y[U](W?{}:-0,1)!=Y,$=I((function(){Y.has(1)})),ee=B((function(r){new j(r)})),te=!W&&I((function(){for(var r=new j,i=5;i--;)r[U](i,i);return!r.has(-0)}));ee||((X=i((function(r,i){k(r,G);var o=D(new j,r,X);return null!=i&&x(i,o[U],{that:o,AS_ENTRIES:N}),o}))).prototype=G,G.constructor=X),($||te)&&(fixMethod("delete"),fixMethod("has"),N&&fixMethod("get")),(te||J)&&fixMethod(U),W&&G.clear&&delete G.clear}return K[r]=X,u({global:!0,forced:X!=j},K),R(X,r),W||o.setStrong(X,r,N),X}},9920:function(r,i,o){var u=o(2597),p=o(3887),g=o(1236),y=o(3070);r.exports=function(r,i){for(var o=p(i),w=y.f,_=g.f,x=0;x<o.length;x++){var k=o[x];u(r,k)||w(r,k,_(i,k))}}},4964:function(r,i,o){var u=o(5112)("match");r.exports=function(r){var i=/./;try{"/./"[r](i)}catch(o){try{return i[u]=!1,"/./"[r](i)}catch(r){}}return!1}},8544:function(r,i,o){var u=o(7293);r.exports=!u((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},4230:function(r,i,o){var u=o(1702),p=o(4488),g=o(1340),y=/"/g,w=u("".replace);r.exports=function(r,i,o,u){var _=g(p(r)),x="<"+i;return""!==o&&(x+=" "+o+'="'+w(g(u),y,"&quot;")+'"'),x+">"+_+"</"+i+">"}},4994:function(r,i,o){"use strict";var u=o(3383).IteratorPrototype,p=o(30),g=o(9114),y=o(8003),w=o(7497),returnThis=function(){return this};r.exports=function(r,i,o){var _=i+" Iterator";return r.prototype=p(u,{next:g(1,o)}),y(r,_,!1,!0),w[_]=returnThis,r}},8880:function(r,i,o){var u=o(9781),p=o(3070),g=o(9114);r.exports=u?function(r,i,o){return p.f(r,i,g(1,o))}:function(r,i,o){return r[i]=o,r}},9114:function(r){r.exports=function(r,i){return{enumerable:!(1&r),configurable:!(2&r),writable:!(4&r),value:i}}},6135:function(r,i,o){"use strict";var u=o(4948),p=o(3070),g=o(9114);r.exports=function(r,i,o){var y=u(i);y in r?p.f(r,y,g(0,o)):r[y]=o}},8709:function(r,i,o){"use strict";var u=o(7854),p=o(9670),g=o(2140),y=u.TypeError;r.exports=function(r){if(p(this),"string"===r||"default"===r)r="string";else if("number"!==r)throw y("Incorrect hint");return g(this,r)}},654:function(r,i,o){"use strict";var u=o(2109),p=o(6916),g=o(1913),y=o(6530),w=o(614),_=o(4994),x=o(9518),k=o(7674),P=o(8003),O=o(8880),I=o(1320),B=o(5112),R=o(7497),D=o(3383),N=y.PROPER,W=y.CONFIGURABLE,U=D.IteratorPrototype,j=D.BUGGY_SAFARI_ITERATORS,G=B("iterator"),X="keys",K="values",Y="entries",returnThis=function(){return this};r.exports=function(r,i,o,y,B,D,J){_(o,i,y);var $,ee,te,getIterationMethod=function(r){if(r===B&&ae)return ae;if(!j&&r in ie)return ie[r];switch(r){case X:return function keys(){return new o(this,r)};case K:return function values(){return new o(this,r)};case Y:return function entries(){return new o(this,r)}}return function(){return new o(this)}},re=i+" Iterator",ne=!1,ie=r.prototype,oe=ie[G]||ie["@@iterator"]||B&&ie[B],ae=!j&&oe||getIterationMethod(B),se="Array"==i&&ie.entries||oe;if(se&&($=x(se.call(new r)))!==Object.prototype&&$.next&&(g||x($)===U||(k?k($,U):w($[G])||I($,G,returnThis)),P($,re,!0,!0),g&&(R[re]=returnThis)),N&&B==K&&oe&&oe.name!==K&&(!g&&W?O(ie,"name",K):(ne=!0,ae=function values(){return p(oe,this)})),B)if(ee={values:getIterationMethod(K),keys:D?ae:getIterationMethod(X),entries:getIterationMethod(Y)},J)for(te in ee)(j||ne||!(te in ie))&&I(ie,te,ee[te]);else u({target:i,proto:!0,forced:j||ne},ee);return g&&!J||ie[G]===ae||I(ie,G,ae,{name:B}),R[i]=ae,ee}},7235:function(r,i,o){var u=o(857),p=o(2597),g=o(6061),y=o(3070).f;r.exports=function(r){var i=u.Symbol||(u.Symbol={});p(i,r)||y(i,r,{value:g.f(r)})}},9781:function(r,i,o){var u=o(7293);r.exports=!u((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:function(r,i,o){var u=o(7854),p=o(111),g=u.document,y=p(g)&&p(g.createElement);r.exports=function(r){return y?g.createElement(r):{}}},8324:function(r){r.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:function(r,i,o){var u=o(317)("span").classList,p=u&&u.constructor&&u.constructor.prototype;r.exports=p===Object.prototype?void 0:p},8886:function(r,i,o){var u=o(8113).match(/firefox\/(\d+)/i);r.exports=!!u&&+u[1]},7871:function(r){r.exports="object"==typeof window},256:function(r,i,o){var u=o(8113);r.exports=/MSIE|Trident/.test(u)},1528:function(r,i,o){var u=o(8113),p=o(7854);r.exports=/ipad|iphone|ipod/i.test(u)&&void 0!==p.Pebble},6833:function(r,i,o){var u=o(8113);r.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(u)},5268:function(r,i,o){var u=o(4326),p=o(7854);r.exports="process"==u(p.process)},1036:function(r,i,o){var u=o(8113);r.exports=/web0s(?!.*chrome)/i.test(u)},8113:function(r,i,o){var u=o(5005);r.exports=u("navigator","userAgent")||""},7392:function(r,i,o){var u,p,g=o(7854),y=o(8113),w=g.process,_=g.Deno,x=w&&w.versions||_&&_.version,k=x&&x.v8;k&&(p=(u=k.split("."))[0]>0&&u[0]<4?1:+(u[0]+u[1])),!p&&y&&(!(u=y.match(/Edge\/(\d+)/))||u[1]>=74)&&(u=y.match(/Chrome\/(\d+)/))&&(p=+u[1]),r.exports=p},8008:function(r,i,o){var u=o(8113).match(/AppleWebKit\/(\d+)\./);r.exports=!!u&&+u[1]},748:function(r){r.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2914:function(r,i,o){var u=o(7293),p=o(9114);r.exports=!u((function(){var r=Error("a");return!("stack"in r)||(Object.defineProperty(r,"stack",p(1,7)),7!==r.stack)}))},2109:function(r,i,o){var u=o(7854),p=o(1236).f,g=o(8880),y=o(1320),w=o(3505),_=o(9920),x=o(4705);r.exports=function(r,i){var o,k,P,O,I,B=r.target,R=r.global,D=r.stat;if(o=R?u:D?u[B]||w(B,{}):(u[B]||{}).prototype)for(k in i){if(O=i[k],P=r.noTargetGet?(I=p(o,k))&&I.value:o[k],!x(R?k:B+(D?".":"#")+k,r.forced)&&void 0!==P){if(typeof O==typeof P)continue;_(O,P)}(r.sham||P&&P.sham)&&g(O,"sham",!0),y(o,k,O,r)}}},7293:function(r){r.exports=function(r){try{return!!r()}catch(r){return!0}}},7007:function(r,i,o){"use strict";o(4916);var u=o(1702),p=o(1320),g=o(2261),y=o(7293),w=o(5112),_=o(8880),x=w("species"),k=RegExp.prototype;r.exports=function(r,i,o,P){var O=w(r),I=!y((function(){var i={};return i[O]=function(){return 7},7!=""[r](i)})),B=I&&!y((function(){var i=!1,o=/a/;return"split"===r&&((o={}).constructor={},o.constructor[x]=function(){return o},o.flags="",o[O]=/./[O]),o.exec=function(){return i=!0,null},o[O](""),!i}));if(!I||!B||o){var R=u(/./[O]),D=i(O,""[r],(function(r,i,o,p,y){var w=u(r),_=i.exec;return _===g||_===k.exec?I&&!y?{done:!0,value:R(i,o,p)}:{done:!0,value:w(o,i,p)}:{done:!1}}));p(String.prototype,r,D[0]),p(k,O,D[1])}P&&_(k[O],"sham",!0)}},6677:function(r,i,o){var u=o(7293);r.exports=!u((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:function(r){var i=Function.prototype,o=i.apply,u=i.bind,p=i.call;r.exports="object"==typeof Reflect&&Reflect.apply||(u?p.bind(o):function(){return p.apply(o,arguments)})},9974:function(r,i,o){var u=o(1702),p=o(9662),g=u(u.bind);r.exports=function(r,i){return p(r),void 0===i?r:g?g(r,i):function(){return r.apply(i,arguments)}}},7065:function(r,i,o){"use strict";var u=o(7854),p=o(1702),g=o(9662),y=o(111),w=o(2597),_=o(206),x=u.Function,k=p([].concat),P=p([].join),O={},construct=function(r,i,o){if(!w(O,i)){for(var u=[],p=0;p<i;p++)u[p]="a["+p+"]";O[i]=x("C,a","return new C("+P(u,",")+")")}return O[i](r,o)};r.exports=x.bind||function bind(r){var i=g(this),o=i.prototype,u=_(arguments,1),p=function bound(){var o=k(u,_(arguments));return this instanceof p?construct(i,o.length,o):i.apply(r,o)};return y(o)&&(p.prototype=o),p}},6916:function(r){var i=Function.prototype.call;r.exports=i.bind?i.bind(i):function(){return i.apply(i,arguments)}},6530:function(r,i,o){var u=o(9781),p=o(2597),g=Function.prototype,y=u&&Object.getOwnPropertyDescriptor,w=p(g,"name"),_=w&&"something"===function something(){}.name,x=w&&(!u||u&&y(g,"name").configurable);r.exports={EXISTS:w,PROPER:_,CONFIGURABLE:x}},1702:function(r){var i=Function.prototype,o=i.bind,u=i.call,p=o&&o.bind(u);r.exports=o?function(r){return r&&p(u,r)}:function(r){return r&&function(){return u.apply(r,arguments)}}},5005:function(r,i,o){var u=o(7854),p=o(614),aFunction=function(r){return p(r)?r:void 0};r.exports=function(r,i){return arguments.length<2?aFunction(u[r]):u[r]&&u[r][i]}},1246:function(r,i,o){var u=o(648),p=o(8173),g=o(7497),y=o(5112)("iterator");r.exports=function(r){if(null!=r)return p(r,y)||p(r,"@@iterator")||g[u(r)]}},8554:function(r,i,o){var u=o(7854),p=o(6916),g=o(9662),y=o(9670),w=o(6330),_=o(1246),x=u.TypeError;r.exports=function(r,i){var o=arguments.length<2?_(r):i;if(g(o))return y(p(o,r));throw x(w(r)+" is not iterable")}},8173:function(r,i,o){var u=o(9662);r.exports=function(r,i){var o=r[i];return null==o?void 0:u(o)}},647:function(r,i,o){var u=o(1702),p=o(7908),g=Math.floor,y=u("".charAt),w=u("".replace),_=u("".slice),x=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,k=/\$([$&'`]|\d{1,2})/g;r.exports=function(r,i,o,u,P,O){var I=o+r.length,B=u.length,R=k;return void 0!==P&&(P=p(P),R=x),w(O,R,(function(p,w){var x;switch(y(w,0)){case"$":return"$";case"&":return r;case"`":return _(i,0,o);case"'":return _(i,I);case"<":x=P[_(w,1,-1)];break;default:var k=+w;if(0===k)return p;if(k>B){var O=g(k/10);return 0===O?p:O<=B?void 0===u[O-1]?y(w,1):u[O-1]+y(w,1):p}x=u[k-1]}return void 0===x?"":x}))}},7854:function(r,i,o){var check=function(r){return r&&r.Math==Math&&r};r.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof o.g&&o.g)||function(){return this}()||Function("return this")()},2597:function(r,i,o){var u=o(1702),p=o(7908),g=u({}.hasOwnProperty);r.exports=Object.hasOwn||function hasOwn(r,i){return g(p(r),i)}},3501:function(r){r.exports={}},842:function(r,i,o){var u=o(7854);r.exports=function(r,i){var o=u.console;o&&o.error&&(1==arguments.length?o.error(r):o.error(r,i))}},490:function(r,i,o){var u=o(5005);r.exports=u("document","documentElement")},4664:function(r,i,o){var u=o(9781),p=o(7293),g=o(317);r.exports=!u&&!p((function(){return 7!=Object.defineProperty(g("div"),"a",{get:function(){return 7}}).a}))},1179:function(r,i,o){var u=o(7854).Array,p=Math.abs,g=Math.pow,y=Math.floor,w=Math.log,_=Math.LN2;r.exports={pack:function(r,i,o){var x,k,P,O=u(o),I=8*o-i-1,B=(1<<I)-1,R=B>>1,D=23===i?g(2,-24)-g(2,-77):0,N=r<0||0===r&&1/r<0?1:0,W=0;for((r=p(r))!=r||r===1/0?(k=r!=r?1:0,x=B):(x=y(w(r)/_),r*(P=g(2,-x))<1&&(x--,P*=2),(r+=x+R>=1?D/P:D*g(2,1-R))*P>=2&&(x++,P/=2),x+R>=B?(k=0,x=B):x+R>=1?(k=(r*P-1)*g(2,i),x+=R):(k=r*g(2,R-1)*g(2,i),x=0));i>=8;O[W++]=255&k,k/=256,i-=8);for(x=x<<i|k,I+=i;I>0;O[W++]=255&x,x/=256,I-=8);return O[--W]|=128*N,O},unpack:function(r,i){var o,u=r.length,p=8*u-i-1,y=(1<<p)-1,w=y>>1,_=p-7,x=u-1,k=r[x--],P=127&k;for(k>>=7;_>0;P=256*P+r[x],x--,_-=8);for(o=P&(1<<-_)-1,P>>=-_,_+=i;_>0;o=256*o+r[x],x--,_-=8);if(0===P)P=1-w;else{if(P===y)return o?NaN:k?-1/0:1/0;o+=g(2,i),P-=w}return(k?-1:1)*o*g(2,P-i)}}},8361:function(r,i,o){var u=o(7854),p=o(1702),g=o(7293),y=o(4326),w=u.Object,_=p("".split);r.exports=g((function(){return!w("z").propertyIsEnumerable(0)}))?function(r){return"String"==y(r)?_(r,""):w(r)}:w},9587:function(r,i,o){var u=o(614),p=o(111),g=o(7674);r.exports=function(r,i,o){var y,w;return g&&u(y=i.constructor)&&y!==o&&p(w=y.prototype)&&w!==o.prototype&&g(r,w),r}},2788:function(r,i,o){var u=o(1702),p=o(614),g=o(5465),y=u(Function.toString);p(g.inspectSource)||(g.inspectSource=function(r){return y(r)}),r.exports=g.inspectSource},8340:function(r,i,o){var u=o(111),p=o(8880);r.exports=function(r,i){u(i)&&"cause"in i&&p(r,"cause",i.cause)}},2423:function(r,i,o){var u=o(2109),p=o(1702),g=o(3501),y=o(111),w=o(2597),_=o(3070).f,x=o(8006),k=o(1156),P=o(9711),O=o(6677),I=!1,B=P("meta"),R=0,D=Object.isExtensible||function(){return!0},setMetadata=function(r){_(r,B,{value:{objectID:"O"+R++,weakData:{}}})},N=r.exports={enable:function(){N.enable=function(){},I=!0;var r=x.f,i=p([].splice),o={};o[B]=1,r(o).length&&(x.f=function(o){for(var u=r(o),p=0,g=u.length;p<g;p++)if(u[p]===B){i(u,p,1);break}return u},u({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:k.f}))},fastKey:function(r,i){if(!y(r))return"symbol"==typeof r?r:("string"==typeof r?"S":"P")+r;if(!w(r,B)){if(!D(r))return"F";if(!i)return"E";setMetadata(r)}return r[B].objectID},getWeakData:function(r,i){if(!w(r,B)){if(!D(r))return!0;if(!i)return!1;setMetadata(r)}return r[B].weakData},onFreeze:function(r){return O&&I&&D(r)&&!w(r,B)&&setMetadata(r),r}};g[B]=!0},9909:function(r,i,o){var u,p,g,y=o(8536),w=o(7854),_=o(1702),x=o(111),k=o(8880),P=o(2597),O=o(5465),I=o(6200),B=o(3501),R="Object already initialized",D=w.TypeError,N=w.WeakMap;if(y||O.state){var W=O.state||(O.state=new N),U=_(W.get),j=_(W.has),G=_(W.set);u=function(r,i){if(j(W,r))throw new D(R);return i.facade=r,G(W,r,i),i},p=function(r){return U(W,r)||{}},g=function(r){return j(W,r)}}else{var X=I("state");B[X]=!0,u=function(r,i){if(P(r,X))throw new D(R);return i.facade=r,k(r,X,i),i},p=function(r){return P(r,X)?r[X]:{}},g=function(r){return P(r,X)}}r.exports={set:u,get:p,has:g,enforce:function(r){return g(r)?p(r):u(r,{})},getterFor:function(r){return function(i){var o;if(!x(i)||(o=p(i)).type!==r)throw D("Incompatible receiver, "+r+" required");return o}}}},7659:function(r,i,o){var u=o(5112),p=o(7497),g=u("iterator"),y=Array.prototype;r.exports=function(r){return void 0!==r&&(p.Array===r||y[g]===r)}},3157:function(r,i,o){var u=o(4326);r.exports=Array.isArray||function isArray(r){return"Array"==u(r)}},614:function(r){r.exports=function(r){return"function"==typeof r}},4411:function(r,i,o){var u=o(1702),p=o(7293),g=o(614),y=o(648),w=o(5005),_=o(2788),noop=function(){},x=[],k=w("Reflect","construct"),P=/^\s*(?:class|function)\b/,O=u(P.exec),I=!P.exec(noop),isConstructorModern=function(r){if(!g(r))return!1;try{return k(noop,x,r),!0}catch(r){return!1}};r.exports=!k||p((function(){var r;return isConstructorModern(isConstructorModern.call)||!isConstructorModern(Object)||!isConstructorModern((function(){r=!0}))||r}))?function(r){if(!g(r))return!1;switch(y(r)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return I||!!O(P,_(r))}:isConstructorModern},4705:function(r,i,o){var u=o(7293),p=o(614),g=/#|\.prototype\./,isForced=function(r,i){var o=w[y(r)];return o==x||o!=_&&(p(i)?u(i):!!i)},y=isForced.normalize=function(r){return String(r).replace(g,".").toLowerCase()},w=isForced.data={},_=isForced.NATIVE="N",x=isForced.POLYFILL="P";r.exports=isForced},5988:function(r,i,o){var u=o(111),p=Math.floor;r.exports=Number.isInteger||function isInteger(r){return!u(r)&&isFinite(r)&&p(r)===r}},111:function(r,i,o){var u=o(614);r.exports=function(r){return"object"==typeof r?null!==r:u(r)}},1913:function(r){r.exports=!1},7850:function(r,i,o){var u=o(111),p=o(4326),g=o(5112)("match");r.exports=function(r){var i;return u(r)&&(void 0!==(i=r[g])?!!i:"RegExp"==p(r))}},2190:function(r,i,o){var u=o(7854),p=o(5005),g=o(614),y=o(7976),w=o(3307),_=u.Object;r.exports=w?function(r){return"symbol"==typeof r}:function(r){var i=p("Symbol");return g(i)&&y(i.prototype,_(r))}},408:function(r,i,o){var u=o(7854),p=o(9974),g=o(6916),y=o(9670),w=o(6330),_=o(7659),x=o(6244),k=o(7976),P=o(8554),O=o(1246),I=o(9212),B=u.TypeError,Result=function(r,i){this.stopped=r,this.result=i},R=Result.prototype;r.exports=function(r,i,o){var u,D,N,W,U,j,G,X=o&&o.that,K=!(!o||!o.AS_ENTRIES),Y=!(!o||!o.IS_ITERATOR),J=!(!o||!o.INTERRUPTED),$=p(i,X),stop=function(r){return u&&I(u,"normal",r),new Result(!0,r)},callFn=function(r){return K?(y(r),J?$(r[0],r[1],stop):$(r[0],r[1])):J?$(r,stop):$(r)};if(Y)u=r;else{if(!(D=O(r)))throw B(w(r)+" is not iterable");if(_(D)){for(N=0,W=x(r);W>N;N++)if((U=callFn(r[N]))&&k(R,U))return U;return new Result(!1)}u=P(r,D)}for(j=u.next;!(G=g(j,u)).done;){try{U=callFn(G.value)}catch(r){I(u,"throw",r)}if("object"==typeof U&&U&&k(R,U))return U}return new Result(!1)}},9212:function(r,i,o){var u=o(6916),p=o(9670),g=o(8173);r.exports=function(r,i,o){var y,w;p(r);try{if(!(y=g(r,"return"))){if("throw"===i)throw o;return o}y=u(y,r)}catch(r){w=!0,y=r}if("throw"===i)throw o;if(w)throw y;return p(y),o}},3383:function(r,i,o){"use strict";var u,p,g,y=o(7293),w=o(614),_=o(30),x=o(9518),k=o(1320),P=o(5112),O=o(1913),I=P("iterator"),B=!1;[].keys&&("next"in(g=[].keys())?(p=x(x(g)))!==Object.prototype&&(u=p):B=!0),null==u||y((function(){var r={};return u[I].call(r)!==r}))?u={}:O&&(u=_(u)),w(u[I])||k(u,I,(function(){return this})),r.exports={IteratorPrototype:u,BUGGY_SAFARI_ITERATORS:B}},7497:function(r){r.exports={}},6244:function(r,i,o){var u=o(7466);r.exports=function(r){return u(r.length)}},5948:function(r,i,o){var u,p,g,y,w,_,x,k,P=o(7854),O=o(9974),I=o(1236).f,B=o(261).set,R=o(6833),D=o(1528),N=o(1036),W=o(5268),U=P.MutationObserver||P.WebKitMutationObserver,j=P.document,G=P.process,X=P.Promise,K=I(P,"queueMicrotask"),Y=K&&K.value;Y||(u=function(){var r,i;for(W&&(r=G.domain)&&r.exit();p;){i=p.fn,p=p.next;try{i()}catch(r){throw p?y():g=void 0,r}}g=void 0,r&&r.enter()},R||W||N||!U||!j?!D&&X&&X.resolve?((x=X.resolve(void 0)).constructor=X,k=O(x.then,x),y=function(){k(u)}):W?y=function(){G.nextTick(u)}:(B=O(B,P),y=function(){B(u)}):(w=!0,_=j.createTextNode(""),new U(u).observe(_,{characterData:!0}),y=function(){_.data=w=!w})),r.exports=Y||function(r){var i={fn:r,next:void 0};g&&(g.next=i),p||(p=i,y()),g=i}},3366:function(r,i,o){var u=o(7854);r.exports=u.Promise},133:function(r,i,o){var u=o(7392),p=o(7293);r.exports=!!Object.getOwnPropertySymbols&&!p((function(){var r=Symbol();return!String(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&u&&u<41}))},8536:function(r,i,o){var u=o(7854),p=o(614),g=o(2788),y=u.WeakMap;r.exports=p(y)&&/native code/.test(g(y))},8523:function(r,i,o){"use strict";var u=o(9662),PromiseCapability=function(r){var i,o;this.promise=new r((function(r,u){if(void 0!==i||void 0!==o)throw TypeError("Bad Promise constructor");i=r,o=u})),this.resolve=u(i),this.reject=u(o)};r.exports.f=function(r){return new PromiseCapability(r)}},6277:function(r,i,o){var u=o(1340);r.exports=function(r,i){return void 0===r?arguments.length<2?"":i:u(r)}},3929:function(r,i,o){var u=o(7854),p=o(7850),g=u.TypeError;r.exports=function(r){if(p(r))throw g("The method doesn't accept regular expressions");return r}},7023:function(r,i,o){var u=o(7854).isFinite;r.exports=Number.isFinite||function isFinite(r){return"number"==typeof r&&u(r)}},1574:function(r,i,o){"use strict";var u=o(9781),p=o(1702),g=o(6916),y=o(7293),w=o(1956),_=o(5181),x=o(5296),k=o(7908),P=o(8361),O=Object.assign,I=Object.defineProperty,B=p([].concat);r.exports=!O||y((function(){if(u&&1!==O({b:1},O(I({},"a",{enumerable:!0,get:function(){I(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var r={},i={},o=Symbol(),p="abcdefghijklmnopqrst";return r[o]=7,p.split("").forEach((function(r){i[r]=r})),7!=O({},r)[o]||w(O({},i)).join("")!=p}))?function assign(r,i){for(var o=k(r),p=arguments.length,y=1,O=_.f,I=x.f;p>y;)for(var R,D=P(arguments[y++]),N=O?B(w(D),O(D)):w(D),W=N.length,U=0;W>U;)R=N[U++],u&&!g(I,D,R)||(o[R]=D[R]);return o}:O},30:function(r,i,o){var u,p=o(9670),g=o(6048),y=o(748),w=o(3501),_=o(490),x=o(317),k=o(6200),P="prototype",O="script",I=k("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(r){return"<"+O+">"+r+"</"+O+">"},NullProtoObjectViaActiveX=function(r){r.write(scriptTag("")),r.close();var i=r.parentWindow.Object;return r=null,i},NullProtoObject=function(){try{u=new ActiveXObject("htmlfile")}catch(r){}var r,i,o;NullProtoObject="undefined"!=typeof document?document.domain&&u?NullProtoObjectViaActiveX(u):(i=x("iframe"),o="java"+O+":",i.style.display="none",_.appendChild(i),i.src=String(o),(r=i.contentWindow.document).open(),r.write(scriptTag("document.F=Object")),r.close(),r.F):NullProtoObjectViaActiveX(u);for(var p=y.length;p--;)delete NullProtoObject[P][y[p]];return NullProtoObject()};w[I]=!0,r.exports=Object.create||function create(r,i){var o;return null!==r?(EmptyConstructor[P]=p(r),o=new EmptyConstructor,EmptyConstructor[P]=null,o[I]=r):o=NullProtoObject(),void 0===i?o:g(o,i)}},6048:function(r,i,o){var u=o(9781),p=o(3070),g=o(9670),y=o(5656),w=o(1956);r.exports=u?Object.defineProperties:function defineProperties(r,i){g(r);for(var o,u=y(i),_=w(i),x=_.length,k=0;x>k;)p.f(r,o=_[k++],u[o]);return r}},3070:function(r,i,o){var u=o(7854),p=o(9781),g=o(4664),y=o(9670),w=o(4948),_=u.TypeError,x=Object.defineProperty;i.f=p?x:function defineProperty(r,i,o){if(y(r),i=w(i),y(o),g)try{return x(r,i,o)}catch(r){}if("get"in o||"set"in o)throw _("Accessors not supported");return"value"in o&&(r[i]=o.value),r}},1236:function(r,i,o){var u=o(9781),p=o(6916),g=o(5296),y=o(9114),w=o(5656),_=o(4948),x=o(2597),k=o(4664),P=Object.getOwnPropertyDescriptor;i.f=u?P:function getOwnPropertyDescriptor(r,i){if(r=w(r),i=_(i),k)try{return P(r,i)}catch(r){}if(x(r,i))return y(!p(g.f,r,i),r[i])}},1156:function(r,i,o){var u=o(4326),p=o(5656),g=o(8006).f,y=o(206),w="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];r.exports.f=function getOwnPropertyNames(r){return w&&"Window"==u(r)?function(r){try{return g(r)}catch(r){return y(w)}}(r):g(p(r))}},8006:function(r,i,o){var u=o(6324),p=o(748).concat("length","prototype");i.f=Object.getOwnPropertyNames||function getOwnPropertyNames(r){return u(r,p)}},5181:function(r,i){i.f=Object.getOwnPropertySymbols},9518:function(r,i,o){var u=o(7854),p=o(2597),g=o(614),y=o(7908),w=o(6200),_=o(8544),x=w("IE_PROTO"),k=u.Object,P=k.prototype;r.exports=_?k.getPrototypeOf:function(r){var i=y(r);if(p(i,x))return i[x];var o=i.constructor;return g(o)&&i instanceof o?o.prototype:i instanceof k?P:null}},7976:function(r,i,o){var u=o(1702);r.exports=u({}.isPrototypeOf)},6324:function(r,i,o){var u=o(1702),p=o(2597),g=o(5656),y=o(1318).indexOf,w=o(3501),_=u([].push);r.exports=function(r,i){var o,u=g(r),x=0,k=[];for(o in u)!p(w,o)&&p(u,o)&&_(k,o);for(;i.length>x;)p(u,o=i[x++])&&(~y(k,o)||_(k,o));return k}},1956:function(r,i,o){var u=o(6324),p=o(748);r.exports=Object.keys||function keys(r){return u(r,p)}},5296:function(r,i){"use strict";var o={}.propertyIsEnumerable,u=Object.getOwnPropertyDescriptor,p=u&&!o.call({1:2},1);i.f=p?function propertyIsEnumerable(r){var i=u(this,r);return!!i&&i.enumerable}:o},7674:function(r,i,o){var u=o(1702),p=o(9670),g=o(6077);r.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r,i=!1,o={};try{(r=u(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(o,[]),i=o instanceof Array}catch(r){}return function setPrototypeOf(o,u){return p(o),g(u),i?r(o,u):o.__proto__=u,o}}():void 0)},4699:function(r,i,o){var u=o(9781),p=o(1702),g=o(1956),y=o(5656),w=p(o(5296).f),_=p([].push),createMethod=function(r){return function(i){for(var o,p=y(i),x=g(p),k=x.length,P=0,O=[];k>P;)o=x[P++],u&&!w(p,o)||_(O,r?[o,p[o]]:p[o]);return O}};r.exports={entries:createMethod(!0),values:createMethod(!1)}},288:function(r,i,o){"use strict";var u=o(1694),p=o(648);r.exports=u?{}.toString:function toString(){return"[object "+p(this)+"]"}},2140:function(r,i,o){var u=o(7854),p=o(6916),g=o(614),y=o(111),w=u.TypeError;r.exports=function(r,i){var o,u;if("string"===i&&g(o=r.toString)&&!y(u=p(o,r)))return u;if(g(o=r.valueOf)&&!y(u=p(o,r)))return u;if("string"!==i&&g(o=r.toString)&&!y(u=p(o,r)))return u;throw w("Can't convert object to primitive value")}},3887:function(r,i,o){var u=o(5005),p=o(1702),g=o(8006),y=o(5181),w=o(9670),_=p([].concat);r.exports=u("Reflect","ownKeys")||function ownKeys(r){var i=g.f(w(r)),o=y.f;return o?_(i,o(r)):i}},857:function(r,i,o){var u=o(7854);r.exports=u},2534:function(r){r.exports=function(r){try{return{error:!1,value:r()}}catch(r){return{error:!0,value:r}}}},9478:function(r,i,o){var u=o(9670),p=o(111),g=o(8523);r.exports=function(r,i){if(u(r),p(i)&&i.constructor===r)return i;var o=g.f(r);return(0,o.resolve)(i),o.promise}},2248:function(r,i,o){var u=o(1320);r.exports=function(r,i,o){for(var p in i)u(r,p,i[p],o);return r}},1320:function(r,i,o){var u=o(7854),p=o(614),g=o(2597),y=o(8880),w=o(3505),_=o(2788),x=o(9909),k=o(6530).CONFIGURABLE,P=x.get,O=x.enforce,I=String(String).split("String");(r.exports=function(r,i,o,_){var x,P=!!_&&!!_.unsafe,B=!!_&&!!_.enumerable,R=!!_&&!!_.noTargetGet,D=_&&void 0!==_.name?_.name:i;p(o)&&("Symbol("===String(D).slice(0,7)&&(D="["+String(D).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!g(o,"name")||k&&o.name!==D)&&y(o,"name",D),(x=O(o)).source||(x.source=I.join("string"==typeof D?D:""))),r!==u?(P?!R&&r[i]&&(B=!0):delete r[i],B?r[i]=o:y(r,i,o)):B?r[i]=o:w(i,o)})(Function.prototype,"toString",(function toString(){return p(this)&&P(this).source||_(this)}))},7651:function(r,i,o){var u=o(7854),p=o(6916),g=o(9670),y=o(614),w=o(4326),_=o(2261),x=u.TypeError;r.exports=function(r,i){var o=r.exec;if(y(o)){var u=p(o,r,i);return null!==u&&g(u),u}if("RegExp"===w(r))return p(_,r,i);throw x("RegExp#exec called on incompatible receiver")}},2261:function(r,i,o){"use strict";var u,p,g=o(6916),y=o(1702),w=o(1340),_=o(7066),x=o(2999),k=o(2309),P=o(30),O=o(9909).get,I=o(9441),B=o(7168),R=k("native-string-replace",String.prototype.replace),D=RegExp.prototype.exec,N=D,W=y("".charAt),U=y("".indexOf),j=y("".replace),G=y("".slice),X=(p=/b*/g,g(D,u=/a/,"a"),g(D,p,"a"),0!==u.lastIndex||0!==p.lastIndex),K=x.UNSUPPORTED_Y||x.BROKEN_CARET,Y=void 0!==/()??/.exec("")[1];(X||Y||K||I||B)&&(N=function exec(r){var i,o,u,p,y,x,k,I=this,B=O(I),J=w(r),$=B.raw;if($)return $.lastIndex=I.lastIndex,i=g(N,$,J),I.lastIndex=$.lastIndex,i;var ee=B.groups,te=K&&I.sticky,re=g(_,I),ne=I.source,ie=0,oe=J;if(te&&(re=j(re,"y",""),-1===U(re,"g")&&(re+="g"),oe=G(J,I.lastIndex),I.lastIndex>0&&(!I.multiline||I.multiline&&"\n"!==W(J,I.lastIndex-1))&&(ne="(?: "+ne+")",oe=" "+oe,ie++),o=new RegExp("^(?:"+ne+")",re)),Y&&(o=new RegExp("^"+ne+"$(?!\\s)",re)),X&&(u=I.lastIndex),p=g(D,te?o:I,oe),te?p?(p.input=G(p.input,ie),p[0]=G(p[0],ie),p.index=I.lastIndex,I.lastIndex+=p[0].length):I.lastIndex=0:X&&p&&(I.lastIndex=I.global?p.index+p[0].length:u),Y&&p&&p.length>1&&g(R,p[0],o,(function(){for(y=1;y<arguments.length-2;y++)void 0===arguments[y]&&(p[y]=void 0)})),p&&ee)for(p.groups=x=P(null),y=0;y<ee.length;y++)x[(k=ee[y])[0]]=p[k[1]];return p}),r.exports=N},7066:function(r,i,o){"use strict";var u=o(9670);r.exports=function(){var r=u(this),i="";return r.global&&(i+="g"),r.ignoreCase&&(i+="i"),r.multiline&&(i+="m"),r.dotAll&&(i+="s"),r.unicode&&(i+="u"),r.sticky&&(i+="y"),i}},2999:function(r,i,o){var u=o(7293),p=o(7854).RegExp;i.UNSUPPORTED_Y=u((function(){var r=p("a","y");return r.lastIndex=2,null!=r.exec("abcd")})),i.BROKEN_CARET=u((function(){var r=p("^r","gy");return r.lastIndex=2,null!=r.exec("str")}))},9441:function(r,i,o){var u=o(7293),p=o(7854).RegExp;r.exports=u((function(){var r=p(".","s");return!(r.dotAll&&r.exec("\n")&&"s"===r.flags)}))},7168:function(r,i,o){var u=o(7293),p=o(7854).RegExp;r.exports=u((function(){var r=p("(?<a>b)","g");return"b"!==r.exec("b").groups.a||"bc"!=="b".replace(r,"$<a>c")}))},4488:function(r,i,o){var u=o(7854).TypeError;r.exports=function(r){if(null==r)throw u("Can't call method on "+r);return r}},3505:function(r,i,o){var u=o(7854),p=Object.defineProperty;r.exports=function(r,i){try{p(u,r,{value:i,configurable:!0,writable:!0})}catch(o){u[r]=i}return i}},6340:function(r,i,o){"use strict";var u=o(5005),p=o(3070),g=o(5112),y=o(9781),w=g("species");r.exports=function(r){var i=u(r),o=p.f;y&&i&&!i[w]&&o(i,w,{configurable:!0,get:function(){return this}})}},8003:function(r,i,o){var u=o(3070).f,p=o(2597),g=o(5112)("toStringTag");r.exports=function(r,i,o){r&&!p(r=o?r:r.prototype,g)&&u(r,g,{configurable:!0,value:i})}},6200:function(r,i,o){var u=o(2309),p=o(9711),g=u("keys");r.exports=function(r){return g[r]||(g[r]=p(r))}},5465:function(r,i,o){var u=o(7854),p=o(3505),g="__core-js_shared__",y=u[g]||p(g,{});r.exports=y},2309:function(r,i,o){var u=o(1913),p=o(5465);(r.exports=function(r,i){return p[r]||(p[r]=void 0!==i?i:{})})("versions",[]).push({version:"3.19.0",mode:u?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},6707:function(r,i,o){var u=o(9670),p=o(9483),g=o(5112)("species");r.exports=function(r,i){var o,y=u(r).constructor;return void 0===y||null==(o=u(y)[g])?i:p(o)}},3429:function(r,i,o){var u=o(7293);r.exports=function(r){return u((function(){var i=""[r]('"');return i!==i.toLowerCase()||i.split('"').length>3}))}},8710:function(r,i,o){var u=o(1702),p=o(9303),g=o(1340),y=o(4488),w=u("".charAt),_=u("".charCodeAt),x=u("".slice),createMethod=function(r){return function(i,o){var u,k,P=g(y(i)),O=p(o),I=P.length;return O<0||O>=I?r?"":void 0:(u=_(P,O))<55296||u>56319||O+1===I||(k=_(P,O+1))<56320||k>57343?r?w(P,O):u:r?x(P,O,O+2):k-56320+(u-55296<<10)+65536}};r.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},8415:function(r,i,o){"use strict";var u=o(7854),p=o(9303),g=o(1340),y=o(4488),w=u.RangeError;r.exports=function repeat(r){var i=g(y(this)),o="",u=p(r);if(u<0||u==1/0)throw w("Wrong number of repetitions");for(;u>0;(u>>>=1)&&(i+=i))1&u&&(o+=i);return o}},6091:function(r,i,o){var u=o(6530).PROPER,p=o(7293),g=o(1361);r.exports=function(r){return p((function(){return!!g[r]()||"​᠎"!=="​᠎"[r]()||u&&g[r].name!==r}))}},3111:function(r,i,o){var u=o(1702),p=o(4488),g=o(1340),y=o(1361),w=u("".replace),_="["+y+"]",x=RegExp("^"+_+_+"*"),k=RegExp(_+_+"*$"),createMethod=function(r){return function(i){var o=g(p(i));return 1&r&&(o=w(o,x,"")),2&r&&(o=w(o,k,"")),o}};r.exports={start:createMethod(1),end:createMethod(2),trim:createMethod(3)}},261:function(r,i,o){var u,p,g,y,w=o(7854),_=o(2104),x=o(9974),k=o(614),P=o(2597),O=o(7293),I=o(490),B=o(206),R=o(317),D=o(6833),N=o(5268),W=w.setImmediate,U=w.clearImmediate,j=w.process,G=w.Dispatch,X=w.Function,K=w.MessageChannel,Y=w.String,J=0,$={},ee="onreadystatechange";try{u=w.location}catch(r){}var run=function(r){if(P($,r)){var i=$[r];delete $[r],i()}},runner=function(r){return function(){run(r)}},listener=function(r){run(r.data)},post=function(r){w.postMessage(Y(r),u.protocol+"//"+u.host)};W&&U||(W=function setImmediate(r){var i=B(arguments,1);return $[++J]=function(){_(k(r)?r:X(r),void 0,i)},p(J),J},U=function clearImmediate(r){delete $[r]},N?p=function(r){j.nextTick(runner(r))}:G&&G.now?p=function(r){G.now(runner(r))}:K&&!D?(y=(g=new K).port2,g.port1.onmessage=listener,p=x(y.postMessage,y)):w.addEventListener&&k(w.postMessage)&&!w.importScripts&&u&&"file:"!==u.protocol&&!O(post)?(p=post,w.addEventListener("message",listener,!1)):p=ee in R("script")?function(r){I.appendChild(R("script"))[ee]=function(){I.removeChild(this),run(r)}}:function(r){setTimeout(runner(r),0)}),r.exports={set:W,clear:U}},863:function(r,i,o){var u=o(1702);r.exports=u(1..valueOf)},1400:function(r,i,o){var u=o(9303),p=Math.max,g=Math.min;r.exports=function(r,i){var o=u(r);return o<0?p(o+i,0):g(o,i)}},7067:function(r,i,o){var u=o(7854),p=o(9303),g=o(7466),y=u.RangeError;r.exports=function(r){if(void 0===r)return 0;var i=p(r),o=g(i);if(i!==o)throw y("Wrong length or index");return o}},5656:function(r,i,o){var u=o(8361),p=o(4488);r.exports=function(r){return u(p(r))}},9303:function(r){var i=Math.ceil,o=Math.floor;r.exports=function(r){var u=+r;return u!=u||0===u?0:(u>0?o:i)(u)}},7466:function(r,i,o){var u=o(9303),p=Math.min;r.exports=function(r){return r>0?p(u(r),9007199254740991):0}},7908:function(r,i,o){var u=o(7854),p=o(4488),g=u.Object;r.exports=function(r){return g(p(r))}},4590:function(r,i,o){var u=o(7854),p=o(3002),g=u.RangeError;r.exports=function(r,i){var o=p(r);if(o%i)throw g("Wrong offset");return o}},3002:function(r,i,o){var u=o(7854),p=o(9303),g=u.RangeError;r.exports=function(r){var i=p(r);if(i<0)throw g("The argument can't be less than 0");return i}},7593:function(r,i,o){var u=o(7854),p=o(6916),g=o(111),y=o(2190),w=o(8173),_=o(2140),x=o(5112),k=u.TypeError,P=x("toPrimitive");r.exports=function(r,i){if(!g(r)||y(r))return r;var o,u=w(r,P);if(u){if(void 0===i&&(i="default"),o=p(u,r,i),!g(o)||y(o))return o;throw k("Can't convert object to primitive value")}return void 0===i&&(i="number"),_(r,i)}},4948:function(r,i,o){var u=o(7593),p=o(2190);r.exports=function(r){var i=u(r,"string");return p(i)?i:i+""}},1694:function(r,i,o){var u={};u[o(5112)("toStringTag")]="z",r.exports="[object z]"===String(u)},1340:function(r,i,o){var u=o(7854),p=o(648),g=u.String;r.exports=function(r){if("Symbol"===p(r))throw TypeError("Cannot convert a Symbol value to a string");return g(r)}},6330:function(r,i,o){var u=o(7854).String;r.exports=function(r){try{return u(r)}catch(r){return"Object"}}},9843:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(6916),y=o(9781),w=o(3832),_=o(2094),x=o(2091),k=o(5787),P=o(9114),O=o(8880),I=o(5988),B=o(7466),R=o(7067),D=o(4590),N=o(4948),W=o(2597),U=o(648),j=o(111),G=o(2190),X=o(30),K=o(7976),Y=o(7674),J=o(8006).f,$=o(7321),ee=o(2092).forEach,te=o(6340),re=o(3070),ne=o(1236),ie=o(9909),oe=o(9587),ae=ie.get,se=ie.set,ce=re.f,le=ne.f,ue=Math.round,fe=p.RangeError,he=x.ArrayBuffer,de=he.prototype,pe=x.DataView,ge=_.NATIVE_ARRAY_BUFFER_VIEWS,ye=_.TYPED_ARRAY_CONSTRUCTOR,ve=_.TYPED_ARRAY_TAG,me=_.TypedArray,be=_.TypedArrayPrototype,we=_.aTypedArrayConstructor,_e=_.isTypedArray,Se="BYTES_PER_ELEMENT",xe="Wrong length",fromList=function(r,i){we(r);for(var o=0,u=i.length,p=new r(u);u>o;)p[o]=i[o++];return p},addGetter=function(r,i){ce(r,i,{get:function(){return ae(this)[i]}})},isArrayBuffer=function(r){var i;return K(de,r)||"ArrayBuffer"==(i=U(r))||"SharedArrayBuffer"==i},isTypedArrayIndex=function(r,i){return _e(r)&&!G(i)&&i in r&&I(+i)&&i>=0},Ce=function getOwnPropertyDescriptor(r,i){return i=N(i),isTypedArrayIndex(r,i)?P(2,r[i]):le(r,i)},ke=function defineProperty(r,i,o){return i=N(i),!(isTypedArrayIndex(r,i)&&j(o)&&W(o,"value"))||W(o,"get")||W(o,"set")||o.configurable||W(o,"writable")&&!o.writable||W(o,"enumerable")&&!o.enumerable?ce(r,i,o):(r[i]=o.value,r)};y?(ge||(ne.f=Ce,re.f=ke,addGetter(be,"buffer"),addGetter(be,"byteOffset"),addGetter(be,"byteLength"),addGetter(be,"length")),u({target:"Object",stat:!0,forced:!ge},{getOwnPropertyDescriptor:Ce,defineProperty:ke}),r.exports=function(r,i,o){var y=r.match(/\d+$/)[0]/8,_=r+(o?"Clamped":"")+"Array",x="get"+r,P="set"+r,I=p[_],N=I,W=N&&N.prototype,U={},addElement=function(r,i){ce(r,i,{get:function(){return function(r,i){var o=ae(r);return o.view[x](i*y+o.byteOffset,!0)}(this,i)},set:function(r){return function(r,i,u){var p=ae(r);o&&(u=(u=ue(u))<0?0:u>255?255:255&u),p.view[P](i*y+p.byteOffset,u,!0)}(this,i,r)},enumerable:!0})};ge?w&&(N=i((function(r,i,o,u){return k(r,W),oe(j(i)?isArrayBuffer(i)?void 0!==u?new I(i,D(o,y),u):void 0!==o?new I(i,D(o,y)):new I(i):_e(i)?fromList(N,i):g($,N,i):new I(R(i)),r,N)})),Y&&Y(N,me),ee(J(I),(function(r){r in N||O(N,r,I[r])})),N.prototype=W):(N=i((function(r,i,o,u){k(r,W);var p,w,_,x=0,P=0;if(j(i)){if(!isArrayBuffer(i))return _e(i)?fromList(N,i):g($,N,i);p=i,P=D(o,y);var O=i.byteLength;if(void 0===u){if(O%y)throw fe(xe);if((w=O-P)<0)throw fe(xe)}else if((w=B(u)*y)+P>O)throw fe(xe);_=w/y}else _=R(i),p=new he(w=_*y);for(se(r,{buffer:p,byteOffset:P,byteLength:w,length:_,view:new pe(p)});x<_;)addElement(r,x++)})),Y&&Y(N,me),W=N.prototype=X(be)),W.constructor!==N&&O(W,"constructor",N),O(W,ye,N),ve&&O(W,ve,_),U[_]=N,u({global:!0,forced:N!=I,sham:!ge},U),Se in N||O(N,Se,y),Se in W||O(W,Se,y),te(_)}):r.exports=function(){}},3832:function(r,i,o){var u=o(7854),p=o(7293),g=o(7072),y=o(2094).NATIVE_ARRAY_BUFFER_VIEWS,w=u.ArrayBuffer,_=u.Int8Array;r.exports=!y||!p((function(){_(1)}))||!p((function(){new _(-1)}))||!g((function(r){new _,new _(null),new _(1.5),new _(r)}),!0)||p((function(){return 1!==new _(new w(2),1,void 0).length}))},3074:function(r,i,o){var u=o(7745),p=o(6304);r.exports=function(r,i){return u(p(r),i)}},7321:function(r,i,o){var u=o(9974),p=o(6916),g=o(9483),y=o(7908),w=o(6244),_=o(8554),x=o(1246),k=o(7659),P=o(2094).aTypedArrayConstructor;r.exports=function from(r){var i,o,O,I,B,R,D=g(this),N=y(r),W=arguments.length,U=W>1?arguments[1]:void 0,j=void 0!==U,G=x(N);if(G&&!k(G))for(R=(B=_(N,G)).next,N=[];!(I=p(R,B)).done;)N.push(I.value);for(j&&W>2&&(U=u(U,arguments[2])),o=w(N),O=new(P(D))(o),i=0;o>i;i++)O[i]=j?U(N[i],i):N[i];return O}},6304:function(r,i,o){var u=o(2094),p=o(6707),g=u.TYPED_ARRAY_CONSTRUCTOR,y=u.aTypedArrayConstructor;r.exports=function(r){return y(p(r,r[g]))}},9711:function(r,i,o){var u=o(1702),p=0,g=Math.random(),y=u(1..toString);r.exports=function(r){return"Symbol("+(void 0===r?"":r)+")_"+y(++p+g,36)}},3307:function(r,i,o){var u=o(133);r.exports=u&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},6061:function(r,i,o){var u=o(5112);i.f=u},5112:function(r,i,o){var u=o(7854),p=o(2309),g=o(2597),y=o(9711),w=o(133),_=o(3307),x=p("wks"),k=u.Symbol,P=k&&k.for,O=_?k:k&&k.withoutSetter||y;r.exports=function(r){if(!g(x,r)||!w&&"string"!=typeof x[r]){var i="Symbol."+r;w&&g(k,r)?x[r]=k[r]:x[r]=_&&P?P(i):O(i)}return x[r]}},1361:function(r){r.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},9170:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(7976),y=o(9518),w=o(7674),_=o(9920),x=o(30),k=o(8880),P=o(9114),O=o(7741),I=o(8340),B=o(408),R=o(6277),D=o(2914),N=p.Error,W=[].push,U=function AggregateError(r,i){var o=g(j,this)?this:x(j),u=arguments.length>2?arguments[2]:void 0;w&&(o=w(new N(void 0),y(o))),k(o,"message",R(i,"")),D&&k(o,"stack",O(o.stack,1)),I(o,u);var p=[];return B(r,W,{that:p}),k(o,"errors",p),o};w?w(U,N):_(U,N);var j=U.prototype=x(N.prototype,{constructor:P(1,U),message:P(1,""),name:P(1,"AggregateError")});u({global:!0},{AggregateError:U})},2222:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(7293),y=o(3157),w=o(111),_=o(7908),x=o(6244),k=o(6135),P=o(5417),O=o(1194),I=o(5112),B=o(7392),R=I("isConcatSpreadable"),D=9007199254740991,N="Maximum allowed index exceeded",W=p.TypeError,U=B>=51||!g((function(){var r=[];return r[R]=!1,r.concat()[0]!==r})),j=O("concat"),isConcatSpreadable=function(r){if(!w(r))return!1;var i=r[R];return void 0!==i?!!i:y(r)};u({target:"Array",proto:!0,forced:!U||!j},{concat:function concat(r){var i,o,u,p,g,y=_(this),w=P(y,0),O=0;for(i=-1,u=arguments.length;i<u;i++)if(isConcatSpreadable(g=-1===i?y:arguments[i])){if(O+(p=x(g))>D)throw W(N);for(o=0;o<p;o++,O++)o in g&&k(w,O,g[o])}else{if(O>=D)throw W(N);k(w,O++,g)}return w.length=O,w}})},545:function(r,i,o){var u=o(2109),p=o(1048),g=o(1223);u({target:"Array",proto:!0},{copyWithin:p}),g("copyWithin")},3290:function(r,i,o){var u=o(2109),p=o(1285),g=o(1223);u({target:"Array",proto:!0},{fill:p}),g("fill")},7327:function(r,i,o){"use strict";var u=o(2109),p=o(2092).filter;u({target:"Array",proto:!0,forced:!o(1194)("filter")},{filter:function filter(r){return p(this,r,arguments.length>1?arguments[1]:void 0)}})},1038:function(r,i,o){var u=o(2109),p=o(8457);u({target:"Array",stat:!0,forced:!o(7072)((function(r){Array.from(r)}))},{from:p})},6699:function(r,i,o){"use strict";var u=o(2109),p=o(1318).includes,g=o(1223);u({target:"Array",proto:!0},{includes:function includes(r){return p(this,r,arguments.length>1?arguments[1]:void 0)}}),g("includes")},6992:function(r,i,o){"use strict";var u=o(5656),p=o(1223),g=o(7497),y=o(9909),w=o(654),_="Array Iterator",x=y.set,k=y.getterFor(_);r.exports=w(Array,"Array",(function(r,i){x(this,{type:_,target:u(r),index:0,kind:i})}),(function(){var r=k(this),i=r.target,o=r.kind,u=r.index++;return!i||u>=i.length?(r.target=void 0,{value:void 0,done:!0}):"keys"==o?{value:u,done:!1}:"values"==o?{value:i[u],done:!1}:{value:[u,i[u]],done:!1}}),"values"),g.Arguments=g.Array,p("keys"),p("values"),p("entries")},9600:function(r,i,o){"use strict";var u=o(2109),p=o(1702),g=o(8361),y=o(5656),w=o(9341),_=p([].join),x=g!=Object,k=w("join",",");u({target:"Array",proto:!0,forced:x||!k},{join:function join(r){return _(y(this),void 0===r?",":r)}})},1249:function(r,i,o){"use strict";var u=o(2109),p=o(2092).map;u({target:"Array",proto:!0,forced:!o(1194)("map")},{map:function map(r){return p(this,r,arguments.length>1?arguments[1]:void 0)}})},7042:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(3157),y=o(4411),w=o(111),_=o(1400),x=o(6244),k=o(5656),P=o(6135),O=o(5112),I=o(1194),B=o(206),R=I("slice"),D=O("species"),N=p.Array,W=Math.max;u({target:"Array",proto:!0,forced:!R},{slice:function slice(r,i){var o,u,p,O=k(this),I=x(O),R=_(r,I),U=_(void 0===i?I:i,I);if(g(O)&&(o=O.constructor,(y(o)&&(o===N||g(o.prototype))||w(o)&&null===(o=o[D]))&&(o=void 0),o===N||void 0===o))return B(O,R,U);for(u=new(void 0===o?N:o)(W(U-R,0)),p=0;R<U;R++,p++)R in O&&P(u,p,O[R]);return u.length=p,u}})},2707:function(r,i,o){"use strict";var u=o(2109),p=o(1702),g=o(9662),y=o(7908),w=o(6244),_=o(1340),x=o(7293),k=o(4362),P=o(9341),O=o(8886),I=o(256),B=o(7392),R=o(8008),D=[],N=p(D.sort),W=p(D.push),U=x((function(){D.sort(void 0)})),j=x((function(){D.sort(null)})),G=P("sort"),X=!x((function(){if(B)return B<70;if(!(O&&O>3)){if(I)return!0;if(R)return R<603;var r,i,o,u,p="";for(r=65;r<76;r++){switch(i=String.fromCharCode(r),r){case 66:case 69:case 70:case 72:o=3;break;case 68:case 71:o=4;break;default:o=2}for(u=0;u<47;u++)D.push({k:i+u,v:o})}for(D.sort((function(r,i){return i.v-r.v})),u=0;u<D.length;u++)i=D[u].k.charAt(0),p.charAt(p.length-1)!==i&&(p+=i);return"DGBEFHACIJK"!==p}}));u({target:"Array",proto:!0,forced:U||!j||!G||!X},{sort:function sort(r){void 0!==r&&g(r);var i=y(this);if(X)return void 0===r?N(i):N(i,r);var o,u,p=[],x=w(i);for(u=0;u<x;u++)u in i&&W(p,i[u]);for(k(p,function(r){return function(i,o){return void 0===o?-1:void 0===i?1:void 0!==r?+r(i,o)||0:_(i)>_(o)?1:-1}}(r)),o=p.length,u=0;u<o;)i[u]=p[u++];for(;u<x;)delete i[u++];return i}})},561:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(1400),y=o(9303),w=o(6244),_=o(7908),x=o(5417),k=o(6135),P=o(1194)("splice"),O=p.TypeError,I=Math.max,B=Math.min,R=9007199254740991,D="Maximum allowed length exceeded";u({target:"Array",proto:!0,forced:!P},{splice:function splice(r,i){var o,u,p,P,N,W,U=_(this),j=w(U),G=g(r,j),X=arguments.length;if(0===X?o=u=0:1===X?(o=0,u=j-G):(o=X-2,u=B(I(y(i),0),j-G)),j+o-u>R)throw O(D);for(p=x(U,u),P=0;P<u;P++)(N=G+P)in U&&k(p,P,U[N]);if(p.length=u,o<u){for(P=G;P<j-u;P++)W=P+o,(N=P+u)in U?U[W]=U[N]:delete U[W];for(P=j;P>j-u+o;P--)delete U[P-1]}else if(o>u)for(P=j-u;P>G;P--)W=P+o-1,(N=P+u-1)in U?U[W]=U[N]:delete U[W];for(P=0;P<o;P++)U[P+G]=arguments[P+2];return U.length=j-u+o,p}})},6078:function(r,i,o){var u=o(2597),p=o(1320),g=o(8709),y=o(5112)("toPrimitive"),w=Date.prototype;u(w,y)||p(w,y,g)},8309:function(r,i,o){var u=o(9781),p=o(6530).EXISTS,g=o(1702),y=o(3070).f,w=Function.prototype,_=g(w.toString),x=/^\s*function ([^ (]*)/,k=g(x.exec);u&&!p&&y(w,"name",{configurable:!0,get:function(){try{return k(x,_(this))[1]}catch(r){return""}}})},5837:function(r,i,o){o(2109)({global:!0},{globalThis:o(7854)})},3706:function(r,i,o){var u=o(7854);o(8003)(u.JSON,"JSON",!0)},1532:function(r,i,o){"use strict";o(7710)("Map",(function(r){return function Map(){return r(this,arguments.length?arguments[0]:void 0)}}),o(5631))},2703:function(r,i,o){o(8003)(Math,"Math",!0)},9653:function(r,i,o){"use strict";var u=o(9781),p=o(7854),g=o(1702),y=o(4705),w=o(1320),_=o(2597),x=o(9587),k=o(7976),P=o(2190),O=o(7593),I=o(7293),B=o(8006).f,R=o(1236).f,D=o(3070).f,N=o(863),W=o(3111).trim,U="Number",j=p[U],G=j.prototype,X=p.TypeError,K=g("".slice),Y=g("".charCodeAt),toNumeric=function(r){var i=O(r,"number");return"bigint"==typeof i?i:toNumber(i)},toNumber=function(r){var i,o,u,p,g,y,w,_,x=O(r,"number");if(P(x))throw X("Cannot convert a Symbol value to a number");if("string"==typeof x&&x.length>2)if(x=W(x),43===(i=Y(x,0))||45===i){if(88===(o=Y(x,2))||120===o)return NaN}else if(48===i){switch(Y(x,1)){case 66:case 98:u=2,p=49;break;case 79:case 111:u=8,p=55;break;default:return+x}for(y=(g=K(x,2)).length,w=0;w<y;w++)if((_=Y(g,w))<48||_>p)return NaN;return parseInt(g,u)}return+x};if(y(U,!j(" 0o1")||!j("0b1")||j("+0x1"))){for(var J,$=function Number(r){var i=arguments.length<1?0:j(toNumeric(r)),o=this;return k(G,o)&&I((function(){N(o)}))?x(Object(i),o,$):i},ee=u?B(j):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),te=0;ee.length>te;te++)_(j,J=ee[te])&&!_($,J)&&D($,J,R(j,J));$.prototype=G,G.constructor=$,w(p,U,$)}},3299:function(r,i,o){o(2109)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},5192:function(r,i,o){o(2109)({target:"Number",stat:!0},{isFinite:o(7023)})},3161:function(r,i,o){o(2109)({target:"Number",stat:!0},{isInteger:o(5988)})},6977:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(1702),y=o(9303),w=o(863),_=o(8415),x=o(7293),k=p.RangeError,P=p.String,O=Math.floor,I=g(_),B=g("".slice),R=g(1..toFixed),pow=function(r,i,o){return 0===i?o:i%2==1?pow(r,i-1,o*r):pow(r*r,i/2,o)},multiply=function(r,i,o){for(var u=-1,p=o;++u<6;)p+=i*r[u],r[u]=p%1e7,p=O(p/1e7)},divide=function(r,i){for(var o=6,u=0;--o>=0;)u+=r[o],r[o]=O(u/i),u=u%i*1e7},dataToString=function(r){for(var i=6,o="";--i>=0;)if(""!==o||0===i||0!==r[i]){var u=P(r[i]);o=""===o?u:o+I("0",7-u.length)+u}return o};u({target:"Number",proto:!0,forced:x((function(){return"0.000"!==R(8e-5,3)||"1"!==R(.9,0)||"1.25"!==R(1.255,2)||"1000000000000000128"!==R(0xde0b6b3a7640080,0)}))||!x((function(){R({})}))},{toFixed:function toFixed(r){var i,o,u,p,g=w(this),_=y(r),x=[0,0,0,0,0,0],O="",R="0";if(_<0||_>20)throw k("Incorrect fraction digits");if(g!=g)return"NaN";if(g<=-1e21||g>=1e21)return P(g);if(g<0&&(O="-",g=-g),g>1e-21)if(o=(i=function(r){for(var i=0,o=r;o>=4096;)i+=12,o/=4096;for(;o>=2;)i+=1,o/=2;return i}(g*pow(2,69,1))-69)<0?g*pow(2,-i,1):g/pow(2,i,1),o*=4503599627370496,(i=52-i)>0){for(multiply(x,0,o),u=_;u>=7;)multiply(x,1e7,0),u-=7;for(multiply(x,pow(10,u,1),0),u=i-1;u>=23;)divide(x,1<<23),u-=23;divide(x,1<<u),multiply(x,1,1),divide(x,2),R=dataToString(x)}else multiply(x,0,o),multiply(x,1<<-i,0),R=dataToString(x)+I("0",_);return R=_>0?O+((p=R.length)<=_?"0."+I("0",_-p)+R:B(R,0,p-_)+"."+B(R,p-_)):O+R}})},9601:function(r,i,o){var u=o(2109),p=o(1574);u({target:"Object",stat:!0,forced:Object.assign!==p},{assign:p})},3371:function(r,i,o){var u=o(2109),p=o(6677),g=o(7293),y=o(111),w=o(2423).onFreeze,_=Object.freeze;u({target:"Object",stat:!0,forced:g((function(){_(1)})),sham:!p},{freeze:function freeze(r){return _&&y(r)?_(w(r)):r}})},5003:function(r,i,o){var u=o(2109),p=o(7293),g=o(5656),y=o(1236).f,w=o(9781),_=p((function(){y(1)}));u({target:"Object",stat:!0,forced:!w||_,sham:!w},{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(r,i){return y(g(r),i)}})},9337:function(r,i,o){var u=o(2109),p=o(9781),g=o(3887),y=o(5656),w=o(1236),_=o(6135);u({target:"Object",stat:!0,sham:!p},{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(r){for(var i,o,u=y(r),p=w.f,x=g(u),k={},P=0;x.length>P;)void 0!==(o=p(u,i=x[P++]))&&_(k,i,o);return k}})},489:function(r,i,o){var u=o(2109),p=o(7293),g=o(7908),y=o(9518),w=o(8544);u({target:"Object",stat:!0,forced:p((function(){y(1)})),sham:!w},{getPrototypeOf:function getPrototypeOf(r){return y(g(r))}})},7941:function(r,i,o){var u=o(2109),p=o(7908),g=o(1956);u({target:"Object",stat:!0,forced:o(7293)((function(){g(1)}))},{keys:function keys(r){return g(p(r))}})},1539:function(r,i,o){var u=o(1694),p=o(1320),g=o(288);u||p(Object.prototype,"toString",g,{unsafe:!0})},2479:function(r,i,o){var u=o(2109),p=o(4699).values;u({target:"Object",stat:!0},{values:function values(r){return p(r)}})},7922:function(r,i,o){"use strict";var u=o(2109),p=o(6916),g=o(9662),y=o(8523),w=o(2534),_=o(408);u({target:"Promise",stat:!0},{allSettled:function allSettled(r){var i=this,o=y.f(i),u=o.resolve,x=o.reject,k=w((function(){var o=g(i.resolve),y=[],w=0,x=1;_(r,(function(r){var g=w++,_=!1;x++,p(o,i,r).then((function(r){_||(_=!0,y[g]={status:"fulfilled",value:r},--x||u(y))}),(function(r){_||(_=!0,y[g]={status:"rejected",reason:r},--x||u(y))}))})),--x||u(y)}));return k.error&&x(k.value),o.promise}})},4668:function(r,i,o){"use strict";var u=o(2109),p=o(9662),g=o(5005),y=o(6916),w=o(8523),_=o(2534),x=o(408),k="No one promise resolved";u({target:"Promise",stat:!0},{any:function any(r){var i=this,o=g("AggregateError"),u=w.f(i),P=u.resolve,O=u.reject,I=_((function(){var u=p(i.resolve),g=[],w=0,_=1,I=!1;x(r,(function(r){var p=w++,x=!1;_++,y(u,i,r).then((function(r){x||I||(I=!0,P(r))}),(function(r){x||I||(x=!0,g[p]=r,--_||O(new o(g,k)))}))})),--_||O(new o(g,k))}));return I.error&&O(I.value),u.promise}})},7727:function(r,i,o){"use strict";var u=o(2109),p=o(1913),g=o(3366),y=o(7293),w=o(5005),_=o(614),x=o(6707),k=o(9478),P=o(1320);if(u({target:"Promise",proto:!0,real:!0,forced:!!g&&y((function(){g.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(r){var i=x(this,w("Promise")),o=_(r);return this.then(o?function(o){return k(i,r()).then((function(){return o}))}:r,o?function(o){return k(i,r()).then((function(){throw o}))}:r)}}),!p&&_(g)){var O=w("Promise").prototype.finally;g.prototype.finally!==O&&P(g.prototype,"finally",O,{unsafe:!0})}},8674:function(r,i,o){"use strict";var u,p,g,y,w=o(2109),_=o(1913),x=o(7854),k=o(5005),P=o(6916),O=o(3366),I=o(1320),B=o(2248),R=o(7674),D=o(8003),N=o(6340),W=o(9662),U=o(614),j=o(111),G=o(5787),X=o(2788),K=o(408),Y=o(7072),J=o(6707),$=o(261).set,ee=o(5948),te=o(9478),re=o(842),ne=o(8523),ie=o(2534),oe=o(9909),ae=o(4705),se=o(5112),ce=o(7871),le=o(5268),ue=o(7392),fe=se("species"),he="Promise",de=oe.get,pe=oe.set,ge=oe.getterFor(he),ye=O&&O.prototype,ve=O,me=ye,be=x.TypeError,we=x.document,_e=x.process,Se=ne.f,xe=Se,Ce=!!(we&&we.createEvent&&x.dispatchEvent),ke=U(x.PromiseRejectionEvent),Pe="unhandledrejection",Ae=!1,Ee=ae(he,(function(){var r=X(ve),i=r!==String(ve);if(!i&&66===ue)return!0;if(_&&!me.finally)return!0;if(ue>=51&&/native code/.test(r))return!1;var o=new ve((function(r){r(1)})),FakePromise=function(r){r((function(){}),(function(){}))};return(o.constructor={})[fe]=FakePromise,!(Ae=o.then((function(){}))instanceof FakePromise)||!i&&ce&&!ke})),Te=Ee||!Y((function(r){ve.all(r).catch((function(){}))})),isThenable=function(r){var i;return!(!j(r)||!U(i=r.then))&&i},notify=function(r,i){if(!r.notified){r.notified=!0;var o=r.reactions;ee((function(){for(var u=r.value,p=1==r.state,g=0;o.length>g;){var y,w,_,x=o[g++],k=p?x.ok:x.fail,O=x.resolve,I=x.reject,B=x.domain;try{k?(p||(2===r.rejection&&onHandleUnhandled(r),r.rejection=1),!0===k?y=u:(B&&B.enter(),y=k(u),B&&(B.exit(),_=!0)),y===x.promise?I(be("Promise-chain cycle")):(w=isThenable(y))?P(w,y,O,I):O(y)):I(u)}catch(r){B&&!_&&B.exit(),I(r)}}r.reactions=[],r.notified=!1,i&&!r.rejection&&onUnhandled(r)}))}},dispatchEvent=function(r,i,o){var u,p;Ce?((u=we.createEvent("Event")).promise=i,u.reason=o,u.initEvent(r,!1,!0),x.dispatchEvent(u)):u={promise:i,reason:o},!ke&&(p=x["on"+r])?p(u):r===Pe&&re("Unhandled promise rejection",o)},onUnhandled=function(r){P($,x,(function(){var i,o=r.facade,u=r.value;if(isUnhandled(r)&&(i=ie((function(){le?_e.emit("unhandledRejection",u,o):dispatchEvent(Pe,o,u)})),r.rejection=le||isUnhandled(r)?2:1,i.error))throw i.value}))},isUnhandled=function(r){return 1!==r.rejection&&!r.parent},onHandleUnhandled=function(r){P($,x,(function(){var i=r.facade;le?_e.emit("rejectionHandled",i):dispatchEvent("rejectionhandled",i,r.value)}))},bind=function(r,i,o){return function(u){r(i,u,o)}},internalReject=function(r,i,o){r.done||(r.done=!0,o&&(r=o),r.value=i,r.state=2,notify(r,!0))},internalResolve=function(r,i,o){if(!r.done){r.done=!0,o&&(r=o);try{if(r.facade===i)throw be("Promise can't be resolved itself");var u=isThenable(i);u?ee((function(){var o={done:!1};try{P(u,i,bind(internalResolve,o,r),bind(internalReject,o,r))}catch(i){internalReject(o,i,r)}})):(r.value=i,r.state=1,notify(r,!1))}catch(i){internalReject({done:!1},i,r)}}};if(Ee&&(me=(ve=function Promise(r){G(this,me),W(r),P(u,this);var i=de(this);try{r(bind(internalResolve,i),bind(internalReject,i))}catch(r){internalReject(i,r)}}).prototype,(u=function Promise(r){pe(this,{type:he,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=B(me,{then:function then(r,i){var o=ge(this),u=o.reactions,p=Se(J(this,ve));return p.ok=!U(r)||r,p.fail=U(i)&&i,p.domain=le?_e.domain:void 0,o.parent=!0,u[u.length]=p,0!=o.state&&notify(o,!1),p.promise},catch:function(r){return this.then(void 0,r)}}),p=function(){var r=new u,i=de(r);this.promise=r,this.resolve=bind(internalResolve,i),this.reject=bind(internalReject,i)},ne.f=Se=function(r){return r===ve||r===g?new p(r):xe(r)},!_&&U(O)&&ye!==Object.prototype)){y=ye.then,Ae||(I(ye,"then",(function then(r,i){var o=this;return new ve((function(r,i){P(y,o,r,i)})).then(r,i)}),{unsafe:!0}),I(ye,"catch",me.catch,{unsafe:!0}));try{delete ye.constructor}catch(r){}R&&R(ye,me)}w({global:!0,wrap:!0,forced:Ee},{Promise:ve}),D(ve,he,!1,!0),N(he),g=k(he),w({target:he,stat:!0,forced:Ee},{reject:function reject(r){var i=Se(this);return P(i.reject,void 0,r),i.promise}}),w({target:he,stat:!0,forced:_||Ee},{resolve:function resolve(r){return te(_&&this===g?ve:this,r)}}),w({target:he,stat:!0,forced:Te},{all:function all(r){var i=this,o=Se(i),u=o.resolve,p=o.reject,g=ie((function(){var o=W(i.resolve),g=[],y=0,w=1;K(r,(function(r){var _=y++,x=!1;w++,P(o,i,r).then((function(r){x||(x=!0,g[_]=r,--w||u(g))}),p)})),--w||u(g)}));return g.error&&p(g.value),o.promise},race:function race(r){var i=this,o=Se(i),u=o.reject,p=ie((function(){var p=W(i.resolve);K(r,(function(r){P(p,i,r).then(o.resolve,u)}))}));return p.error&&u(p.value),o.promise}})},2419:function(r,i,o){var u=o(2109),p=o(5005),g=o(2104),y=o(7065),w=o(9483),_=o(9670),x=o(111),k=o(30),P=o(7293),O=p("Reflect","construct"),I=Object.prototype,B=[].push,R=P((function(){function F(){}return!(O((function(){}),[],F)instanceof F)})),D=!P((function(){O((function(){}))})),N=R||D;u({target:"Reflect",stat:!0,forced:N,sham:N},{construct:function construct(r,i){w(r),_(i);var o=arguments.length<3?r:w(arguments[2]);if(D&&!R)return O(r,i,o);if(r==o){switch(i.length){case 0:return new r;case 1:return new r(i[0]);case 2:return new r(i[0],i[1]);case 3:return new r(i[0],i[1],i[2]);case 4:return new r(i[0],i[1],i[2],i[3])}var u=[null];return g(B,u,i),new(g(y,r,u))}var p=o.prototype,P=k(x(p)?p:I),N=g(r,P,i);return x(N)?N:P}})},4916:function(r,i,o){"use strict";var u=o(2109),p=o(2261);u({target:"RegExp",proto:!0,forced:/./.exec!==p},{exec:p})},2087:function(r,i,o){var u=o(9781),p=o(3070),g=o(7066),y=o(7293),w=RegExp.prototype;u&&y((function(){return"sy"!==Object.getOwnPropertyDescriptor(w,"flags").get.call({dotAll:!0,sticky:!0})}))&&p.f(w,"flags",{configurable:!0,get:g})},9714:function(r,i,o){"use strict";var u=o(1702),p=o(6530).PROPER,g=o(1320),y=o(9670),w=o(7976),_=o(1340),x=o(7293),k=o(7066),P="toString",O=RegExp.prototype,I=O[P],B=u(k),R=x((function(){return"/a/b"!=I.call({source:"a",flags:"b"})})),D=p&&I.name!=P;(R||D)&&g(RegExp.prototype,P,(function toString(){var r=y(this),i=_(r.source),o=r.flags;return"/"+i+"/"+_(void 0===o&&w(O,r)&&!("flags"in O)?B(r):o)}),{unsafe:!0})},189:function(r,i,o){"use strict";o(7710)("Set",(function(r){return function Set(){return r(this,arguments.length?arguments[0]:void 0)}}),o(5631))},9841:function(r,i,o){"use strict";var u=o(2109),p=o(8710).codeAt;u({target:"String",proto:!0},{codePointAt:function codePointAt(r){return p(this,r)}})},4953:function(r,i,o){var u=o(2109),p=o(7854),g=o(1702),y=o(1400),w=p.RangeError,_=String.fromCharCode,x=String.fromCodePoint,k=g([].join);u({target:"String",stat:!0,forced:!!x&&1!=x.length},{fromCodePoint:function fromCodePoint(r){for(var i,o=[],u=arguments.length,p=0;u>p;){if(i=+arguments[p++],y(i,1114111)!==i)throw w(i+" is not a valid code point");o[p]=i<65536?_(i):_(55296+((i-=65536)>>10),i%1024+56320)}return k(o,"")}})},2023:function(r,i,o){"use strict";var u=o(2109),p=o(1702),g=o(3929),y=o(4488),w=o(1340),_=o(4964),x=p("".indexOf);u({target:"String",proto:!0,forced:!_("includes")},{includes:function includes(r){return!!~x(w(y(this)),w(g(r)),arguments.length>1?arguments[1]:void 0)}})},8734:function(r,i,o){"use strict";var u=o(2109),p=o(4230);u({target:"String",proto:!0,forced:o(3429)("italics")},{italics:function italics(){return p(this,"i","","")}})},8783:function(r,i,o){"use strict";var u=o(8710).charAt,p=o(1340),g=o(9909),y=o(654),w="String Iterator",_=g.set,x=g.getterFor(w);y(String,"String",(function(r){_(this,{type:w,string:p(r),index:0})}),(function next(){var r,i=x(this),o=i.string,p=i.index;return p>=o.length?{value:void 0,done:!0}:(r=u(o,p),i.index+=r.length,{value:r,done:!1})}))},9254:function(r,i,o){"use strict";var u=o(2109),p=o(4230);u({target:"String",proto:!0,forced:o(3429)("link")},{link:function link(r){return p(this,"a","href",r)}})},6373:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(6916),y=o(1702),w=o(4994),_=o(4488),x=o(7466),k=o(1340),P=o(9670),O=o(4326),I=o(7976),B=o(7850),R=o(7066),D=o(8173),N=o(1320),W=o(7293),U=o(5112),j=o(6707),G=o(1530),X=o(7651),K=o(9909),Y=o(1913),J=U("matchAll"),$="RegExp String",ee=$+" Iterator",te=K.set,re=K.getterFor(ee),ne=RegExp.prototype,ie=p.TypeError,oe=y(R),ae=y("".indexOf),se=y("".matchAll),ce=!!se&&!W((function(){se("a",/./)})),le=w((function RegExpStringIterator(r,i,o,u){te(this,{type:ee,regexp:r,string:i,global:o,unicode:u,done:!1})}),$,(function next(){var r=re(this);if(r.done)return{value:void 0,done:!0};var i=r.regexp,o=r.string,u=X(i,o);return null===u?{value:void 0,done:r.done=!0}:r.global?(""===k(u[0])&&(i.lastIndex=G(o,x(i.lastIndex),r.unicode)),{value:u,done:!1}):(r.done=!0,{value:u,done:!1})})),$matchAll=function(r){var i,o,u,p,g,y,w=P(this),_=k(r);return i=j(w,RegExp),void 0===(o=w.flags)&&I(ne,w)&&!("flags"in ne)&&(o=oe(w)),u=void 0===o?"":k(o),p=new i(i===RegExp?w.source:w,u),g=!!~ae(u,"g"),y=!!~ae(u,"u"),p.lastIndex=x(w.lastIndex),new le(p,_,g,y)};u({target:"String",proto:!0,forced:ce},{matchAll:function matchAll(r){var i,o,u,p,y=_(this);if(null!=r){if(B(r)&&(i=k(_("flags"in ne?r.flags:oe(r))),!~ae(i,"g")))throw ie("`.matchAll` does not allow non-global regexes");if(ce)return se(y,r);if(void 0===(u=D(r,J))&&Y&&"RegExp"==O(r)&&(u=$matchAll),u)return g(u,r,y)}else if(ce)return se(y,r);return o=k(y),p=new RegExp(r,"g"),Y?g($matchAll,p,o):p[J](o)}}),Y||J in ne||N(ne,J,$matchAll)},4723:function(r,i,o){"use strict";var u=o(6916),p=o(7007),g=o(9670),y=o(7466),w=o(1340),_=o(4488),x=o(8173),k=o(1530),P=o(7651);p("match",(function(r,i,o){return[function match(i){var o=_(this),p=null==i?void 0:x(i,r);return p?u(p,i,o):new RegExp(i)[r](w(o))},function(r){var u=g(this),p=w(r),_=o(i,u,p);if(_.done)return _.value;if(!u.global)return P(u,p);var x=u.unicode;u.lastIndex=0;for(var O,I=[],B=0;null!==(O=P(u,p));){var R=w(O[0]);I[B]=R,""===R&&(u.lastIndex=k(p,y(u.lastIndex),x)),B++}return 0===B?null:I}]}))},2481:function(r,i,o){o(2109)({target:"String",proto:!0},{repeat:o(8415)})},5306:function(r,i,o){"use strict";var u=o(2104),p=o(6916),g=o(1702),y=o(7007),w=o(7293),_=o(9670),x=o(614),k=o(9303),P=o(7466),O=o(1340),I=o(4488),B=o(1530),R=o(8173),D=o(647),N=o(7651),W=o(5112)("replace"),U=Math.max,j=Math.min,G=g([].concat),X=g([].push),K=g("".indexOf),Y=g("".slice),J="$0"==="a".replace(/./,"$0"),$=!!/./[W]&&""===/./[W]("a","$0");y("replace",(function(r,i,o){var g=$?"$":"$0";return[function replace(r,o){var u=I(this),g=null==r?void 0:R(r,W);return g?p(g,r,u,o):p(i,O(u),r,o)},function(r,p){var y=_(this),w=O(r);if("string"==typeof p&&-1===K(p,g)&&-1===K(p,"$<")){var I=o(i,y,w,p);if(I.done)return I.value}var R=x(p);R||(p=O(p));var W=y.global;if(W){var J=y.unicode;y.lastIndex=0}for(var $=[];;){var ee=N(y,w);if(null===ee)break;if(X($,ee),!W)break;""===O(ee[0])&&(y.lastIndex=B(w,P(y.lastIndex),J))}for(var te,re="",ne=0,ie=0;ie<$.length;ie++){for(var oe=O((ee=$[ie])[0]),ae=U(j(k(ee.index),w.length),0),se=[],ce=1;ce<ee.length;ce++)X(se,void 0===(te=ee[ce])?te:String(te));var le=ee.groups;if(R){var ue=G([oe],se,ae,w);void 0!==le&&X(ue,le);var fe=O(u(p,void 0,ue))}else fe=D(oe,w,ae,se,le,p);ae>=ne&&(re+=Y(w,ne,ae)+fe,ne=ae+oe.length)}return re+Y(w,ne)}]}),!!w((function(){var r=/./;return r.exec=function(){var r=[];return r.groups={a:"7"},r},"7"!=="".replace(r,"$<a>")}))||!J||$)},3123:function(r,i,o){"use strict";var u=o(2104),p=o(6916),g=o(1702),y=o(7007),w=o(7850),_=o(9670),x=o(4488),k=o(6707),P=o(1530),O=o(7466),I=o(1340),B=o(8173),R=o(206),D=o(7651),N=o(2261),W=o(2999),U=o(7293),j=W.UNSUPPORTED_Y,G=4294967295,X=Math.min,K=[].push,Y=g(/./.exec),J=g(K),$=g("".slice),ee=!U((function(){var r=/(?:)/,i=r.exec;r.exec=function(){return i.apply(this,arguments)};var o="ab".split(r);return 2!==o.length||"a"!==o[0]||"b"!==o[1]}));y("split",(function(r,i,o){var g;return g="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(r,o){var g=I(x(this)),y=void 0===o?G:o>>>0;if(0===y)return[];if(void 0===r)return[g];if(!w(r))return p(i,g,r,y);for(var _,k,P,O=[],B=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(r.sticky?"y":""),D=0,W=new RegExp(r.source,B+"g");(_=p(N,W,g))&&!((k=W.lastIndex)>D&&(J(O,$(g,D,_.index)),_.length>1&&_.index<g.length&&u(K,O,R(_,1)),P=_[0].length,D=k,O.length>=y));)W.lastIndex===_.index&&W.lastIndex++;return D===g.length?!P&&Y(W,"")||J(O,""):J(O,$(g,D)),O.length>y?R(O,0,y):O}:"0".split(void 0,0).length?function(r,o){return void 0===r&&0===o?[]:p(i,this,r,o)}:i,[function split(i,o){var u=x(this),y=null==i?void 0:B(i,r);return y?p(y,i,u,o):p(g,I(u),i,o)},function(r,u){var p=_(this),y=I(r),w=o(g,p,y,u,g!==i);if(w.done)return w.value;var x=k(p,RegExp),B=p.unicode,R=(p.ignoreCase?"i":"")+(p.multiline?"m":"")+(p.unicode?"u":"")+(j?"g":"y"),N=new x(j?"^(?:"+p.source+")":p,R),W=void 0===u?G:u>>>0;if(0===W)return[];if(0===y.length)return null===D(N,y)?[y]:[];for(var U=0,K=0,Y=[];K<y.length;){N.lastIndex=j?0:K;var ee,te=D(N,j?$(y,K):y);if(null===te||(ee=X(O(N.lastIndex+(j?K:0)),y.length))===U)K=P(y,K,B);else{if(J(Y,$(y,U,K)),Y.length===W)return Y;for(var re=1;re<=te.length-1;re++)if(J(Y,te[re]),Y.length===W)return Y;K=U=ee}}return J(Y,$(y,U)),Y}]}),!ee,j)},7397:function(r,i,o){"use strict";var u=o(2109),p=o(4230);u({target:"String",proto:!0,forced:o(3429)("strike")},{strike:function strike(){return p(this,"strike","","")}})},3210:function(r,i,o){"use strict";var u=o(2109),p=o(3111).trim;u({target:"String",proto:!0,forced:o(6091)("trim")},{trim:function trim(){return p(this)}})},2443:function(r,i,o){o(7235)("asyncIterator")},1817:function(r,i,o){"use strict";var u=o(2109),p=o(9781),g=o(7854),y=o(1702),w=o(2597),_=o(614),x=o(7976),k=o(1340),P=o(3070).f,O=o(9920),I=g.Symbol,B=I&&I.prototype;if(p&&_(I)&&(!("description"in B)||void 0!==I().description)){var R={},D=function Symbol(){var r=arguments.length<1||void 0===arguments[0]?void 0:k(arguments[0]),i=x(B,this)?new I(r):void 0===r?I():I(r);return""===r&&(R[i]=!0),i};O(D,I),D.prototype=B,B.constructor=D;var N="Symbol(test)"==String(I("test")),W=y(B.toString),U=y(B.valueOf),j=/^Symbol\((.*)\)[^)]+$/,G=y("".replace),X=y("".slice);P(B,"description",{configurable:!0,get:function description(){var r=U(this),i=W(r);if(w(R,r))return"";var o=N?X(i,7,-1):G(i,j,"$1");return""===o?void 0:o}}),u({global:!0,forced:!0},{Symbol:D})}},2165:function(r,i,o){o(7235)("iterator")},2526:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(5005),y=o(2104),w=o(6916),_=o(1702),x=o(1913),k=o(9781),P=o(133),O=o(7293),I=o(2597),B=o(3157),R=o(614),D=o(111),N=o(7976),W=o(2190),U=o(9670),j=o(7908),G=o(5656),X=o(4948),K=o(1340),Y=o(9114),J=o(30),$=o(1956),ee=o(8006),te=o(1156),re=o(5181),ne=o(1236),ie=o(3070),oe=o(5296),ae=o(206),se=o(1320),ce=o(2309),le=o(6200),ue=o(3501),fe=o(9711),he=o(5112),de=o(6061),pe=o(7235),ge=o(8003),ye=o(9909),ve=o(2092).forEach,me=le("hidden"),be="Symbol",we="prototype",_e=he("toPrimitive"),Se=ye.set,xe=ye.getterFor(be),Ce=Object[we],ke=p.Symbol,Pe=ke&&ke[we],Ae=p.TypeError,Ee=p.QObject,Te=g("JSON","stringify"),Oe=ne.f,Ie=ie.f,Be=te.f,Fe=oe.f,Le=_([].push),Re=ce("symbols"),De=ce("op-symbols"),Me=ce("string-to-symbol-registry"),Ne=ce("symbol-to-string-registry"),We=ce("wks"),ze=!Ee||!Ee[we]||!Ee[we].findChild,Ue=k&&O((function(){return 7!=J(Ie({},"a",{get:function(){return Ie(this,"a",{value:7}).a}})).a}))?function(r,i,o){var u=Oe(Ce,i);u&&delete Ce[i],Ie(r,i,o),u&&r!==Ce&&Ie(Ce,i,u)}:Ie,wrap=function(r,i){var o=Re[r]=J(Pe);return Se(o,{type:be,tag:r,description:i}),k||(o.description=i),o},je=function defineProperty(r,i,o){r===Ce&&je(De,i,o),U(r);var u=X(i);return U(o),I(Re,u)?(o.enumerable?(I(r,me)&&r[me][u]&&(r[me][u]=!1),o=J(o,{enumerable:Y(0,!1)})):(I(r,me)||Ie(r,me,Y(1,{})),r[me][u]=!0),Ue(r,u,o)):Ie(r,u,o)},Ge=function defineProperties(r,i){U(r);var o=G(i),u=$(o).concat(Xe(o));return ve(u,(function(i){k&&!w(Ve,o,i)||je(r,i,o[i])})),r},Ve=function propertyIsEnumerable(r){var i=X(r),o=w(Fe,this,i);return!(this===Ce&&I(Re,i)&&!I(De,i))&&(!(o||!I(this,i)||!I(Re,i)||I(this,me)&&this[me][i])||o)},He=function getOwnPropertyDescriptor(r,i){var o=G(r),u=X(i);if(o!==Ce||!I(Re,u)||I(De,u)){var p=Oe(o,u);return!p||!I(Re,u)||I(o,me)&&o[me][u]||(p.enumerable=!0),p}},qe=function getOwnPropertyNames(r){var i=Be(G(r)),o=[];return ve(i,(function(r){I(Re,r)||I(ue,r)||Le(o,r)})),o},Xe=function getOwnPropertySymbols(r){var i=r===Ce,o=Be(i?De:G(r)),u=[];return ve(o,(function(r){!I(Re,r)||i&&!I(Ce,r)||Le(u,Re[r])})),u};(P||(ke=function Symbol(){if(N(Pe,this))throw Ae("Symbol is not a constructor");var r=arguments.length&&void 0!==arguments[0]?K(arguments[0]):void 0,i=fe(r),setter=function(r){this===Ce&&w(setter,De,r),I(this,me)&&I(this[me],i)&&(this[me][i]=!1),Ue(this,i,Y(1,r))};return k&&ze&&Ue(Ce,i,{configurable:!0,set:setter}),wrap(i,r)},se(Pe=ke[we],"toString",(function toString(){return xe(this).tag})),se(ke,"withoutSetter",(function(r){return wrap(fe(r),r)})),oe.f=Ve,ie.f=je,ne.f=He,ee.f=te.f=qe,re.f=Xe,de.f=function(r){return wrap(he(r),r)},k&&(Ie(Pe,"description",{configurable:!0,get:function description(){return xe(this).description}}),x||se(Ce,"propertyIsEnumerable",Ve,{unsafe:!0}))),u({global:!0,wrap:!0,forced:!P,sham:!P},{Symbol:ke}),ve($(We),(function(r){pe(r)})),u({target:be,stat:!0,forced:!P},{for:function(r){var i=K(r);if(I(Me,i))return Me[i];var o=ke(i);return Me[i]=o,Ne[o]=i,o},keyFor:function keyFor(r){if(!W(r))throw Ae(r+" is not a symbol");if(I(Ne,r))return Ne[r]},useSetter:function(){ze=!0},useSimple:function(){ze=!1}}),u({target:"Object",stat:!0,forced:!P,sham:!k},{create:function create(r,i){return void 0===i?J(r):Ge(J(r),i)},defineProperty:je,defineProperties:Ge,getOwnPropertyDescriptor:He}),u({target:"Object",stat:!0,forced:!P},{getOwnPropertyNames:qe,getOwnPropertySymbols:Xe}),u({target:"Object",stat:!0,forced:O((function(){re.f(1)}))},{getOwnPropertySymbols:function getOwnPropertySymbols(r){return re.f(j(r))}}),Te)&&u({target:"JSON",stat:!0,forced:!P||O((function(){var r=ke();return"[null]"!=Te([r])||"{}"!=Te({a:r})||"{}"!=Te(Object(r))}))},{stringify:function stringify(r,i,o){var u=ae(arguments),p=i;if((D(i)||void 0!==r)&&!W(r))return B(i)||(i=function(r,i){if(R(p)&&(i=w(p,this,r,i)),!W(i))return i}),u[1]=i,y(Te,null,u)}});if(!Pe[_e]){var Ze=Pe.valueOf;se(Pe,_e,(function(r){return w(Ze,this)}))}ge(ke,be),ue[me]=!0},6649:function(r,i,o){o(7235)("toPrimitive")},3680:function(r,i,o){o(7235)("toStringTag")},2990:function(r,i,o){"use strict";var u=o(1702),p=o(2094),g=u(o(1048)),y=p.aTypedArray;(0,p.exportTypedArrayMethod)("copyWithin",(function copyWithin(r,i){return g(y(this),r,i,arguments.length>2?arguments[2]:void 0)}))},8927:function(r,i,o){"use strict";var u=o(2094),p=o(2092).every,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("every",(function every(r){return p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},3105:function(r,i,o){"use strict";var u=o(2094),p=o(6916),g=o(1285),y=u.aTypedArray;(0,u.exportTypedArrayMethod)("fill",(function fill(r){var i=arguments.length;return p(g,y(this),r,i>1?arguments[1]:void 0,i>2?arguments[2]:void 0)}))},5035:function(r,i,o){"use strict";var u=o(2094),p=o(2092).filter,g=o(3074),y=u.aTypedArray;(0,u.exportTypedArrayMethod)("filter",(function filter(r){var i=p(y(this),r,arguments.length>1?arguments[1]:void 0);return g(this,i)}))},7174:function(r,i,o){"use strict";var u=o(2094),p=o(2092).findIndex,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("findIndex",(function findIndex(r){return p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},4345:function(r,i,o){"use strict";var u=o(2094),p=o(2092).find,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("find",(function find(r){return p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},4197:function(r,i,o){o(9843)("Float32",(function(r){return function Float32Array(i,o,u){return r(this,i,o,u)}}))},6495:function(r,i,o){o(9843)("Float64",(function(r){return function Float64Array(i,o,u){return r(this,i,o,u)}}))},2846:function(r,i,o){"use strict";var u=o(2094),p=o(2092).forEach,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("forEach",(function forEach(r){p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},8145:function(r,i,o){"use strict";var u=o(3832);(0,o(2094).exportTypedArrayStaticMethod)("from",o(7321),u)},4731:function(r,i,o){"use strict";var u=o(2094),p=o(1318).includes,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("includes",(function includes(r){return p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},7209:function(r,i,o){"use strict";var u=o(2094),p=o(1318).indexOf,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("indexOf",(function indexOf(r){return p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},5109:function(r,i,o){o(9843)("Int16",(function(r){return function Int16Array(i,o,u){return r(this,i,o,u)}}))},5125:function(r,i,o){o(9843)("Int32",(function(r){return function Int32Array(i,o,u){return r(this,i,o,u)}}))},7145:function(r,i,o){o(9843)("Int8",(function(r){return function Int8Array(i,o,u){return r(this,i,o,u)}}))},6319:function(r,i,o){"use strict";var u=o(7854),p=o(1702),g=o(6530).PROPER,y=o(2094),w=o(6992),_=o(5112)("iterator"),x=u.Uint8Array,k=p(w.values),P=p(w.keys),O=p(w.entries),I=y.aTypedArray,B=y.exportTypedArrayMethod,R=x&&x.prototype[_],D=!!R&&"values"===R.name,N=function values(){return k(I(this))};B("entries",(function entries(){return O(I(this))})),B("keys",(function keys(){return P(I(this))})),B("values",N,g&&!D),B(_,N,g&&!D)},8867:function(r,i,o){"use strict";var u=o(2094),p=o(1702),g=u.aTypedArray,y=u.exportTypedArrayMethod,w=p([].join);y("join",(function join(r){return w(g(this),r)}))},7789:function(r,i,o){"use strict";var u=o(2094),p=o(2104),g=o(6583),y=u.aTypedArray;(0,u.exportTypedArrayMethod)("lastIndexOf",(function lastIndexOf(r){var i=arguments.length;return p(g,y(this),i>1?[r,arguments[1]]:[r])}))},3739:function(r,i,o){"use strict";var u=o(2094),p=o(2092).map,g=o(6304),y=u.aTypedArray;(0,u.exportTypedArrayMethod)("map",(function map(r){return p(y(this),r,arguments.length>1?arguments[1]:void 0,(function(r,i){return new(g(r))(i)}))}))},4483:function(r,i,o){"use strict";var u=o(2094),p=o(3671).right,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("reduceRight",(function reduceRight(r){var i=arguments.length;return p(g(this),r,i,i>1?arguments[1]:void 0)}))},9368:function(r,i,o){"use strict";var u=o(2094),p=o(3671).left,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("reduce",(function reduce(r){var i=arguments.length;return p(g(this),r,i,i>1?arguments[1]:void 0)}))},2056:function(r,i,o){"use strict";var u=o(2094),p=u.aTypedArray,g=u.exportTypedArrayMethod,y=Math.floor;g("reverse",(function reverse(){for(var r,i=this,o=p(i).length,u=y(o/2),g=0;g<u;)r=i[g],i[g++]=i[--o],i[o]=r;return i}))},3462:function(r,i,o){"use strict";var u=o(7854),p=o(2094),g=o(6244),y=o(4590),w=o(7908),_=o(7293),x=u.RangeError,k=p.aTypedArray;(0,p.exportTypedArrayMethod)("set",(function set(r){k(this);var i=y(arguments.length>1?arguments[1]:void 0,1),o=this.length,u=w(r),p=g(u),_=0;if(p+i>o)throw x("Wrong length");for(;_<p;)this[i+_]=u[_++]}),_((function(){new Int8Array(1).set({})})))},678:function(r,i,o){"use strict";var u=o(2094),p=o(6304),g=o(7293),y=o(206),w=u.aTypedArray;(0,u.exportTypedArrayMethod)("slice",(function slice(r,i){for(var o=y(w(this),r,i),u=p(this),g=0,_=o.length,x=new u(_);_>g;)x[g]=o[g++];return x}),g((function(){new Int8Array(1).slice()})))},7462:function(r,i,o){"use strict";var u=o(2094),p=o(2092).some,g=u.aTypedArray;(0,u.exportTypedArrayMethod)("some",(function some(r){return p(g(this),r,arguments.length>1?arguments[1]:void 0)}))},3824:function(r,i,o){"use strict";var u=o(7854),p=o(1702),g=o(7293),y=o(9662),w=o(4362),_=o(2094),x=o(8886),k=o(256),P=o(7392),O=o(8008),I=u.Array,B=_.aTypedArray,R=_.exportTypedArrayMethod,D=u.Uint16Array,N=D&&p(D.prototype.sort),W=!(!N||g((function(){N(new D(2),null)}))&&g((function(){N(new D(2),{})}))),U=!!N&&!g((function(){if(P)return P<74;if(x)return x<67;if(k)return!0;if(O)return O<602;var r,i,o=new D(516),u=I(516);for(r=0;r<516;r++)i=r%4,o[r]=515-r,u[r]=r-2*i+3;for(N(o,(function(r,i){return(r/4|0)-(i/4|0)})),r=0;r<516;r++)if(o[r]!==u[r])return!0}));R("sort",(function sort(r){return void 0!==r&&y(r),U?N(this,r):w(B(this),function(r){return function(i,o){return void 0!==r?+r(i,o)||0:o!=o?-1:i!=i?1:0===i&&0===o?1/i>0&&1/o<0?1:-1:i>o}}(r))}),!U||W)},5021:function(r,i,o){"use strict";var u=o(2094),p=o(7466),g=o(1400),y=o(6304),w=u.aTypedArray;(0,u.exportTypedArrayMethod)("subarray",(function subarray(r,i){var o=w(this),u=o.length,_=g(r,u);return new(y(o))(o.buffer,o.byteOffset+_*o.BYTES_PER_ELEMENT,p((void 0===i?u:g(i,u))-_))}))},2974:function(r,i,o){"use strict";var u=o(7854),p=o(2104),g=o(2094),y=o(7293),w=o(206),_=u.Int8Array,x=g.aTypedArray,k=g.exportTypedArrayMethod,P=[].toLocaleString,O=!!_&&y((function(){P.call(new _(1))}));k("toLocaleString",(function toLocaleString(){return p(P,O?w(x(this)):x(this),w(arguments))}),y((function(){return[1,2].toLocaleString()!=new _([1,2]).toLocaleString()}))||!y((function(){_.prototype.toLocaleString.call([1,2])})))},5016:function(r,i,o){"use strict";var u=o(2094).exportTypedArrayMethod,p=o(7293),g=o(7854),y=o(1702),w=g.Uint8Array,_=w&&w.prototype||{},x=[].toString,k=y([].join);p((function(){x.call({})}))&&(x=function toString(){return k(this)});var P=_.toString!=x;u("toString",x,P)},8255:function(r,i,o){o(9843)("Uint16",(function(r){return function Uint16Array(i,o,u){return r(this,i,o,u)}}))},9135:function(r,i,o){o(9843)("Uint32",(function(r){return function Uint32Array(i,o,u){return r(this,i,o,u)}}))},2472:function(r,i,o){o(9843)("Uint8",(function(r){return function Uint8Array(i,o,u){return r(this,i,o,u)}}))},9743:function(r,i,o){o(9843)("Uint8",(function(r){return function Uint8ClampedArray(i,o,u){return r(this,i,o,u)}}),!0)},8628:function(r,i,o){o(9170)},5743:function(r,i,o){o(5837)},7314:function(r,i,o){o(7922)},6290:function(r,i,o){o(4668)},7479:function(r,i,o){"use strict";var u=o(2109),p=o(8523),g=o(2534);u({target:"Promise",stat:!0},{try:function(r){var i=p.f(this),o=g(r);return(o.error?i.reject:i.resolve)(o.value),i.promise}})},3728:function(r,i,o){o(6373)},4747:function(r,i,o){var u=o(7854),p=o(8324),g=o(8509),y=o(8533),w=o(8880),handlePrototype=function(r){if(r&&r.forEach!==y)try{w(r,"forEach",y)}catch(i){r.forEach=y}};for(var _ in p)p[_]&&handlePrototype(u[_]&&u[_].prototype);handlePrototype(g)},3948:function(r,i,o){var u=o(7854),p=o(8324),g=o(8509),y=o(6992),w=o(8880),_=o(5112),x=_("iterator"),k=_("toStringTag"),P=y.values,handlePrototype=function(r,i){if(r){if(r[x]!==P)try{w(r,x,P)}catch(i){r[x]=P}if(r[k]||w(r,k,i),p[i])for(var o in y)if(r[o]!==y[o])try{w(r,o,y[o])}catch(i){r[o]=y[o]}}};for(var O in p)handlePrototype(u[O]&&u[O].prototype,O);handlePrototype(g,"DOMTokenList")},3753:function(r,i,o){"use strict";var u=o(2109),p=o(6916);u({target:"URL",proto:!0,enumerable:!0},{toJSON:function toJSON(){return p(URL.prototype.toString,this)}})},1150:function(r,i,o){var u=o(7633);o(3948),r.exports=u},251:function(r,i,o){var u=o(2215),p=o(2584),g=o(609),y=o(8420),w=o(2847),_=o(8923),x=Date.prototype.getTime;function deepEqual(r,i,o){var k=o||{};return!!(k.strict?g(r,i):r===i)||(!r||!i||"object"!=typeof r&&"object"!=typeof i?k.strict?g(r,i):r==i:function objEquiv(r,i,o){var g,k;if(typeof r!=typeof i)return!1;if(isUndefinedOrNull(r)||isUndefinedOrNull(i))return!1;if(r.prototype!==i.prototype)return!1;if(p(r)!==p(i))return!1;var P=y(r),O=y(i);if(P!==O)return!1;if(P||O)return r.source===i.source&&w(r)===w(i);if(_(r)&&_(i))return x.call(r)===x.call(i);var I=isBuffer(r),B=isBuffer(i);if(I!==B)return!1;if(I||B){if(r.length!==i.length)return!1;for(g=0;g<r.length;g++)if(r[g]!==i[g])return!1;return!0}if(typeof r!=typeof i)return!1;try{var R=u(r),D=u(i)}catch(r){return!1}if(R.length!==D.length)return!1;for(R.sort(),D.sort(),g=R.length-1;g>=0;g--)if(R[g]!=D[g])return!1;for(g=R.length-1;g>=0;g--)if(!deepEqual(r[k=R[g]],i[k],o))return!1;return!0}(r,i,k))}function isUndefinedOrNull(r){return null==r}function isBuffer(r){return!(!r||"object"!=typeof r||"number"!=typeof r.length)&&("function"==typeof r.copy&&"function"==typeof r.slice&&!(r.length>0&&"number"!=typeof r[0]))}r.exports=deepEqual},4289:function(r,i,o){"use strict";var u=o(2215),p="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),g=Object.prototype.toString,y=Array.prototype.concat,w=Object.defineProperty,_=o(1044)(),x=w&&_,defineProperty=function(r,i,o,u){var p;(!(i in r)||"function"==typeof(p=u)&&"[object Function]"===g.call(p)&&u())&&(x?w(r,i,{configurable:!0,enumerable:!1,value:o,writable:!0}):r[i]=o)},defineProperties=function(r,i){var o=arguments.length>2?arguments[2]:{},g=u(i);p&&(g=y.call(g,Object.getOwnPropertySymbols(i)));for(var w=0;w<g.length;w+=1)defineProperty(r,g[w],i[g[w]],o[g[w]])};defineProperties.supportsDescriptors=!!x,r.exports=defineProperties},8091:function(r){"use strict";function assign(r,i){if(null==r)throw new TypeError("Cannot convert first argument to object");for(var o=Object(r),u=1;u<arguments.length;u++){var p=arguments[u];if(null!=p)for(var g=Object.keys(Object(p)),y=0,w=g.length;y<w;y++){var _=g[y],x=Object.getOwnPropertyDescriptor(p,_);void 0!==x&&x.enumerable&&(o[_]=p[_])}}return o}r.exports={assign:assign,polyfill:function polyfill(){Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:assign})}}},7187:function(r){"use strict";var i,o="object"==typeof Reflect?Reflect:null,u=o&&"function"==typeof o.apply?o.apply:function ReflectApply(r,i,o){return Function.prototype.apply.call(r,i,o)};i=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(r){return Object.getOwnPropertyNames(r).concat(Object.getOwnPropertySymbols(r))}:function ReflectOwnKeys(r){return Object.getOwnPropertyNames(r)};var p=Number.isNaN||function NumberIsNaN(r){return r!=r};function EventEmitter(){EventEmitter.init.call(this)}r.exports=EventEmitter,r.exports.once=function once(r,i){return new Promise((function(o,u){function errorListener(o){r.removeListener(i,resolver),u(o)}function resolver(){"function"==typeof r.removeListener&&r.removeListener("error",errorListener),o([].slice.call(arguments))}eventTargetAgnosticAddListener(r,i,resolver,{once:!0}),"error"!==i&&function addErrorHandlerIfEventEmitter(r,i,o){"function"==typeof r.on&&eventTargetAgnosticAddListener(r,"error",i,o)}(r,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var g=10;function checkListener(r){if("function"!=typeof r)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}function _getMaxListeners(r){return void 0===r._maxListeners?EventEmitter.defaultMaxListeners:r._maxListeners}function _addListener(r,i,o,u){var p,g,y;if(checkListener(o),void 0===(g=r._events)?(g=r._events=Object.create(null),r._eventsCount=0):(void 0!==g.newListener&&(r.emit("newListener",i,o.listener?o.listener:o),g=r._events),y=g[i]),void 0===y)y=g[i]=o,++r._eventsCount;else if("function"==typeof y?y=g[i]=u?[o,y]:[y,o]:u?y.unshift(o):y.push(o),(p=_getMaxListeners(r))>0&&y.length>p&&!y.warned){y.warned=!0;var w=new Error("Possible EventEmitter memory leak detected. "+y.length+" "+String(i)+" listeners added. Use emitter.setMaxListeners() to increase limit");w.name="MaxListenersExceededWarning",w.emitter=r,w.type=i,w.count=y.length,function ProcessEmitWarning(r){console&&console.warn}()}return r}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(r,i,o){var u={fired:!1,wrapFn:void 0,target:r,type:i,listener:o},p=onceWrapper.bind(u);return p.listener=o,u.wrapFn=p,p}function _listeners(r,i,o){var u=r._events;if(void 0===u)return[];var p=u[i];return void 0===p?[]:"function"==typeof p?o?[p.listener||p]:[p]:o?function unwrapListeners(r){for(var i=new Array(r.length),o=0;o<i.length;++o)i[o]=r[o].listener||r[o];return i}(p):arrayClone(p,p.length)}function listenerCount(r){var i=this._events;if(void 0!==i){var o=i[r];if("function"==typeof o)return 1;if(void 0!==o)return o.length}return 0}function arrayClone(r,i){for(var o=new Array(i),u=0;u<i;++u)o[u]=r[u];return o}function eventTargetAgnosticAddListener(r,i,o,u){if("function"==typeof r.on)u.once?r.once(i,o):r.on(i,o);else{if("function"!=typeof r.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r);r.addEventListener(i,(function wrapListener(p){u.once&&r.removeEventListener(i,wrapListener),o(p)}))}}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:!0,get:function(){return g},set:function(r){if("number"!=typeof r||r<0||p(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");g=r}}),EventEmitter.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},EventEmitter.prototype.setMaxListeners=function setMaxListeners(r){if("number"!=typeof r||r<0||p(r))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+r+".");return this._maxListeners=r,this},EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)},EventEmitter.prototype.emit=function emit(r){for(var i=[],o=1;o<arguments.length;o++)i.push(arguments[o]);var p="error"===r,g=this._events;if(void 0!==g)p=p&&void 0===g.error;else if(!p)return!1;if(p){var y;if(i.length>0&&(y=i[0]),y instanceof Error)throw y;var w=new Error("Unhandled error."+(y?" ("+y.message+")":""));throw w.context=y,w}var _=g[r];if(void 0===_)return!1;if("function"==typeof _)u(_,this,i);else{var x=_.length,k=arrayClone(_,x);for(o=0;o<x;++o)u(k[o],this,i)}return!0},EventEmitter.prototype.addListener=function addListener(r,i){return _addListener(this,r,i,!1)},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.prependListener=function prependListener(r,i){return _addListener(this,r,i,!0)},EventEmitter.prototype.once=function once(r,i){return checkListener(i),this.on(r,_onceWrap(this,r,i)),this},EventEmitter.prototype.prependOnceListener=function prependOnceListener(r,i){return checkListener(i),this.prependListener(r,_onceWrap(this,r,i)),this},EventEmitter.prototype.removeListener=function removeListener(r,i){var o,u,p,g,y;if(checkListener(i),void 0===(u=this._events))return this;if(void 0===(o=u[r]))return this;if(o===i||o.listener===i)0==--this._eventsCount?this._events=Object.create(null):(delete u[r],u.removeListener&&this.emit("removeListener",r,o.listener||i));else if("function"!=typeof o){for(p=-1,g=o.length-1;g>=0;g--)if(o[g]===i||o[g].listener===i){y=o[g].listener,p=g;break}if(p<0)return this;0===p?o.shift():function spliceOne(r,i){for(;i+1<r.length;i++)r[i]=r[i+1];r.pop()}(o,p),1===o.length&&(u[r]=o[0]),void 0!==u.removeListener&&this.emit("removeListener",r,y||i)}return this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.removeAllListeners=function removeAllListeners(r){var i,o,u;if(void 0===(o=this._events))return this;if(void 0===o.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==o[r]&&(0==--this._eventsCount?this._events=Object.create(null):delete o[r]),this;if(0===arguments.length){var p,g=Object.keys(o);for(u=0;u<g.length;++u)"removeListener"!==(p=g[u])&&this.removeAllListeners(p);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(i=o[r]))this.removeListener(r,i);else if(void 0!==i)for(u=i.length-1;u>=0;u--)this.removeListener(r,i[u]);return this},EventEmitter.prototype.listeners=function listeners(r){return _listeners(this,r,!0)},EventEmitter.prototype.rawListeners=function rawListeners(r){return _listeners(this,r,!1)},EventEmitter.listenerCount=function(r,i){return"function"==typeof r.listenerCount?r.listenerCount(i):listenerCount.call(r,i)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?i(this._events):[]}},2536:function(r,i,o){var u=o(4275),p=o(7672);void 0===p.pdfMake&&(p.pdfMake=u),r.exports=u},7672:function(r,i,o){"use strict";r.exports=function(){if("object"==typeof globalThis)return globalThis;var r;try{r=this||new Function("return this")()}catch(r){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==o.g)return o.g}return r}()},4029:function(r,i,o){"use strict";var u=o(5320),p=Object.prototype.toString,g=Object.prototype.hasOwnProperty,y=function forEachArray(r,i,o){for(var u=0,p=r.length;u<p;u++)g.call(r,u)&&(null==o?i(r[u],u,r):i.call(o,r[u],u,r))},w=function forEachString(r,i,o){for(var u=0,p=r.length;u<p;u++)null==o?i(r.charAt(u),u,r):i.call(o,r.charAt(u),u,r)},_=function forEachObject(r,i,o){for(var u in r)g.call(r,u)&&(null==o?i(r[u],u,r):i.call(o,r[u],u,r))};r.exports=function forEach(r,i,o){if(!u(i))throw new TypeError("iterator must be a function");var g;arguments.length>=3&&(g=o),"[object Array]"===p.call(r)?y(r,i,g):"string"==typeof r?w(r,i,g):_(r,i,g)}},7648:function(r){"use strict";var i="Function.prototype.bind called on incompatible ",o=Array.prototype.slice,u=Object.prototype.toString,p="[object Function]";r.exports=function bind(r){var g=this;if("function"!=typeof g||u.call(g)!==p)throw new TypeError(i+g);for(var y,w=o.call(arguments,1),binder=function(){if(this instanceof y){var i=g.apply(this,w.concat(o.call(arguments)));return Object(i)===i?i:this}return g.apply(r,w.concat(o.call(arguments)))},_=Math.max(0,g.length-w.length),x=[],k=0;k<_;k++)x.push("$"+k);if(y=Function("binder","return function ("+x.join(",")+"){ return binder.apply(this,arguments); }")(binder),g.prototype){var P=function Empty(){};P.prototype=g.prototype,y.prototype=new P,P.prototype=null}return y}},8612:function(r,i,o){"use strict";var u=o(7648);r.exports=Function.prototype.bind||u},5972:function(r){"use strict";var i=function functionsHaveNames(){return"string"==typeof function f(){}.name},o=Object.getOwnPropertyDescriptor;if(o)try{o([],"length")}catch(r){o=null}i.functionsHaveConfigurableNames=function functionsHaveConfigurableNames(){if(!i()||!o)return!1;var r=o((function(){}),"name");return!!r&&!!r.configurable};var u=Function.prototype.bind;i.boundFunctionsHaveNames=function boundFunctionsHaveNames(){return i()&&"function"==typeof u&&""!==function f(){}.bind().name},r.exports=i},210:function(r,i,o){"use strict";var u,p=SyntaxError,g=Function,y=TypeError,getEvalledConstructor=function(r){try{return g('"use strict"; return ('+r+").constructor;")()}catch(r){}},w=Object.getOwnPropertyDescriptor;if(w)try{w({},"")}catch(r){w=null}var throwTypeError=function(){throw new y},_=w?function(){try{return throwTypeError}catch(r){try{return w(arguments,"callee").get}catch(r){return throwTypeError}}}():throwTypeError,x=o(1405)(),k=Object.getPrototypeOf||function(r){return r.__proto__},P={},O="undefined"==typeof Uint8Array?u:k(Uint8Array),I={"%AggregateError%":"undefined"==typeof AggregateError?u:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?u:ArrayBuffer,"%ArrayIteratorPrototype%":x?k([][Symbol.iterator]()):u,"%AsyncFromSyncIteratorPrototype%":u,"%AsyncFunction%":P,"%AsyncGenerator%":P,"%AsyncGeneratorFunction%":P,"%AsyncIteratorPrototype%":P,"%Atomics%":"undefined"==typeof Atomics?u:Atomics,"%BigInt%":"undefined"==typeof BigInt?u:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?u:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?u:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?u:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?u:FinalizationRegistry,"%Function%":g,"%GeneratorFunction%":P,"%Int8Array%":"undefined"==typeof Int8Array?u:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?u:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?u:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":x?k(k([][Symbol.iterator]())):u,"%JSON%":"object"==typeof JSON?JSON:u,"%Map%":"undefined"==typeof Map?u:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&x?k((new Map)[Symbol.iterator]()):u,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?u:Promise,"%Proxy%":"undefined"==typeof Proxy?u:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?u:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?u:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&x?k((new Set)[Symbol.iterator]()):u,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?u:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":x?k(""[Symbol.iterator]()):u,"%Symbol%":x?Symbol:u,"%SyntaxError%":p,"%ThrowTypeError%":_,"%TypedArray%":O,"%TypeError%":y,"%Uint8Array%":"undefined"==typeof Uint8Array?u:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?u:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?u:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?u:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?u:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?u:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?u:WeakSet},B=function doEval(r){var i;if("%AsyncFunction%"===r)i=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===r)i=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===r)i=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===r){var o=doEval("%AsyncGeneratorFunction%");o&&(i=o.prototype)}else if("%AsyncIteratorPrototype%"===r){var u=doEval("%AsyncGenerator%");u&&(i=k(u.prototype))}return I[r]=i,i},R={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},D=o(8612),N=o(7642),W=D.call(Function.call,Array.prototype.concat),U=D.call(Function.apply,Array.prototype.splice),j=D.call(Function.call,String.prototype.replace),G=D.call(Function.call,String.prototype.slice),X=D.call(Function.call,RegExp.prototype.exec),K=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Y=/\\(\\)?/g,J=function stringToPath(r){var i=G(r,0,1),o=G(r,-1);if("%"===i&&"%"!==o)throw new p("invalid intrinsic syntax, expected closing `%`");if("%"===o&&"%"!==i)throw new p("invalid intrinsic syntax, expected opening `%`");var u=[];return j(r,K,(function(r,i,o,p){u[u.length]=o?j(p,Y,"$1"):i||r})),u},$=function getBaseIntrinsic(r,i){var o,u=r;if(N(R,u)&&(u="%"+(o=R[u])[0]+"%"),N(I,u)){var g=I[u];if(g===P&&(g=B(u)),void 0===g&&!i)throw new y("intrinsic "+r+" exists, but is not available. Please file an issue!");return{alias:o,name:u,value:g}}throw new p("intrinsic "+r+" does not exist!")};r.exports=function GetIntrinsic(r,i){if("string"!=typeof r||0===r.length)throw new y("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof i)throw new y('"allowMissing" argument must be a boolean');if(null===X(/^%?[^%]*%?$/,r))throw new p("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var o=J(r),u=o.length>0?o[0]:"",g=$("%"+u+"%",i),_=g.name,x=g.value,k=!1,P=g.alias;P&&(u=P[0],U(o,W([0,1],P)));for(var O=1,B=!0;O<o.length;O+=1){var R=o[O],D=G(R,0,1),j=G(R,-1);if(('"'===D||"'"===D||"`"===D||'"'===j||"'"===j||"`"===j)&&D!==j)throw new p("property names with quotes must have matching quotes");if("constructor"!==R&&B||(k=!0),N(I,_="%"+(u+="."+R)+"%"))x=I[_];else if(null!=x){if(!(R in x)){if(!i)throw new y("base intrinsic for "+r+" exists, but the property is not available.");return}if(w&&O+1>=o.length){var K=w(x,R);x=(B=!!K)&&"get"in K&&!("originalValue"in K.get)?K.get:x[R]}else B=N(x,R),x=x[R];B&&!k&&(I[_]=x)}}return x}},7296:function(r,i,o){"use strict";var u=o(210)("%Object.getOwnPropertyDescriptor%",!0);if(u)try{u([],"length")}catch(r){u=null}r.exports=u},1044:function(r,i,o){"use strict";var u=o(210)("%Object.defineProperty%",!0),p=function hasPropertyDescriptors(){if(u)try{return u({},"a",{value:1}),!0}catch(r){return!1}return!1};p.hasArrayLengthDefineBug=function hasArrayLengthDefineBug(){if(!p())return null;try{return 1!==u([],"length",{value:1}).length}catch(r){return!0}},r.exports=p},1405:function(r,i,o){"use strict";var u="undefined"!=typeof Symbol&&Symbol,p=o(5419);r.exports=function hasNativeSymbols(){return"function"==typeof u&&("function"==typeof Symbol&&("symbol"==typeof u("foo")&&("symbol"==typeof Symbol("bar")&&p())))}},5419:function(r){"use strict";r.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var r={},i=Symbol("test"),o=Object(i);if("string"==typeof i)return!1;if("[object Symbol]"!==Object.prototype.toString.call(i))return!1;if("[object Symbol]"!==Object.prototype.toString.call(o))return!1;for(i in r[i]=42,r)return!1;if("function"==typeof Object.keys&&0!==Object.keys(r).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(r).length)return!1;var u=Object.getOwnPropertySymbols(r);if(1!==u.length||u[0]!==i)return!1;if(!Object.prototype.propertyIsEnumerable.call(r,i))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var p=Object.getOwnPropertyDescriptor(r,i);if(42!==p.value||!0!==p.enumerable)return!1}return!0}},6410:function(r,i,o){"use strict";var u=o(5419);r.exports=function hasToStringTagShams(){return u()&&!!Symbol.toStringTag}},7642:function(r,i,o){"use strict";var u=o(8612);r.exports=u.call(Function.call,Object.prototype.hasOwnProperty)},688:function(r,i,o){"use strict";var u=o(7103).Buffer;i._dbcs=DBCSCodec;for(var p=-1,g=-10,y=-1e3,w=new Array(256),_=0;_<256;_++)w[_]=p;function DBCSCodec(r,i){if(this.encodingName=r.encodingName,!r)throw new Error("DBCS codec is called without the data.");if(!r.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var o=r.table();this.decodeTables=[],this.decodeTables[0]=w.slice(0),this.decodeTableSeq=[];for(var u=0;u<o.length;u++)this._addDecodeChunk(o[u]);if("function"==typeof r.gb18030){this.gb18030=r.gb18030();var g=this.decodeTables.length;this.decodeTables.push(w.slice(0));var _=this.decodeTables.length;this.decodeTables.push(w.slice(0));var x=this.decodeTables[0];for(u=129;u<=254;u++)for(var k=this.decodeTables[y-x[u]],P=48;P<=57;P++){if(k[P]===p)k[P]=y-g;else if(k[P]>y)throw new Error("gb18030 decode tables conflict at byte 2");for(var O=this.decodeTables[y-k[P]],I=129;I<=254;I++){if(O[I]===p)O[I]=y-_;else{if(O[I]===y-_)continue;if(O[I]>y)throw new Error("gb18030 decode tables conflict at byte 3")}for(var B=this.decodeTables[y-O[I]],R=48;R<=57;R++)B[R]===p&&(B[R]=-2)}}}this.defaultCharUnicode=i.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var D={};if(r.encodeSkipVals)for(u=0;u<r.encodeSkipVals.length;u++){var N=r.encodeSkipVals[u];if("number"==typeof N)D[N]=!0;else for(P=N.from;P<=N.to;P++)D[P]=!0}if(this._fillEncodeTable(0,0,D),r.encodeAdd)for(var W in r.encodeAdd)Object.prototype.hasOwnProperty.call(r.encodeAdd,W)&&this._setEncodeChar(W.charCodeAt(0),r.encodeAdd[W]);this.defCharSB=this.encodeTable[0][i.defaultCharSingleByte.charCodeAt(0)],this.defCharSB===p&&(this.defCharSB=this.encodeTable[0]["?"]),this.defCharSB===p&&(this.defCharSB="?".charCodeAt(0))}function DBCSEncoder(r,i){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=i.encodeTable,this.encodeTableSeq=i.encodeTableSeq,this.defaultCharSingleByte=i.defCharSB,this.gb18030=i.gb18030}function DBCSDecoder(r,i){this.nodeIdx=0,this.prevBytes=[],this.decodeTables=i.decodeTables,this.decodeTableSeq=i.decodeTableSeq,this.defaultCharUnicode=i.defaultCharUnicode,this.gb18030=i.gb18030}function findIdx(r,i){if(r[0]>i)return-1;for(var o=0,u=r.length;o<u-1;){var p=o+(u-o+1>>1);r[p]<=i?o=p:u=p}return o}DBCSCodec.prototype.encoder=DBCSEncoder,DBCSCodec.prototype.decoder=DBCSDecoder,DBCSCodec.prototype._getDecodeTrieNode=function(r){for(var i=[];r>0;r>>>=8)i.push(255&r);0==i.length&&i.push(0);for(var o=this.decodeTables[0],u=i.length-1;u>0;u--){var g=o[i[u]];if(g==p)o[i[u]]=y-this.decodeTables.length,this.decodeTables.push(o=w.slice(0));else{if(!(g<=y))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+r.toString(16));o=this.decodeTables[y-g]}}return o},DBCSCodec.prototype._addDecodeChunk=function(r){var i=parseInt(r[0],16),o=this._getDecodeTrieNode(i);i&=255;for(var u=1;u<r.length;u++){var p=r[u];if("string"==typeof p)for(var y=0;y<p.length;){var w=p.charCodeAt(y++);if(55296<=w&&w<56320){var _=p.charCodeAt(y++);if(!(56320<=_&&_<57344))throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+r[0]);o[i++]=65536+1024*(w-55296)+(_-56320)}else if(4080<w&&w<=4095){for(var x=4095-w+2,k=[],P=0;P<x;P++)k.push(p.charCodeAt(y++));o[i++]=g-this.decodeTableSeq.length,this.decodeTableSeq.push(k)}else o[i++]=w}else{if("number"!=typeof p)throw new Error("Incorrect type '"+typeof p+"' given in "+this.encodingName+" at chunk "+r[0]);var O=o[i-1]+1;for(y=0;y<p;y++)o[i++]=O++}}if(i>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+r[0]+": too long"+i)},DBCSCodec.prototype._getEncodeBucket=function(r){var i=r>>8;return void 0===this.encodeTable[i]&&(this.encodeTable[i]=w.slice(0)),this.encodeTable[i]},DBCSCodec.prototype._setEncodeChar=function(r,i){var o=this._getEncodeBucket(r),u=255&r;o[u]<=g?this.encodeTableSeq[g-o[u]][-1]=i:o[u]==p&&(o[u]=i)},DBCSCodec.prototype._setEncodeSequence=function(r,i){var o,u=r[0],y=this._getEncodeBucket(u),w=255&u;y[w]<=g?o=this.encodeTableSeq[g-y[w]]:(o={},y[w]!==p&&(o[-1]=y[w]),y[w]=g-this.encodeTableSeq.length,this.encodeTableSeq.push(o));for(var _=1;_<r.length-1;_++){var x=o[u];"object"==typeof x?o=x:(o=o[u]={},void 0!==x&&(o[-1]=x))}o[u=r[r.length-1]]=i},DBCSCodec.prototype._fillEncodeTable=function(r,i,o){for(var u=this.decodeTables[r],p=!1,w={},_=0;_<256;_++){var x=u[_],k=i+_;if(!o[k])if(x>=0)this._setEncodeChar(x,k),p=!0;else if(x<=y){var P=y-x;if(!w[P]){var O=k<<8>>>0;this._fillEncodeTable(P,O,o)?p=!0:w[P]=!0}}else x<=g&&(this._setEncodeSequence(this.decodeTableSeq[g-x],k),p=!0)}return p},DBCSEncoder.prototype.write=function(r){for(var i=u.alloc(r.length*(this.gb18030?4:3)),o=this.leadSurrogate,y=this.seqObj,w=-1,_=0,x=0;;){if(-1===w){if(_==r.length)break;var k=r.charCodeAt(_++)}else{k=w;w=-1}if(55296<=k&&k<57344)if(k<56320){if(-1===o){o=k;continue}o=k,k=p}else-1!==o?(k=65536+1024*(o-55296)+(k-56320),o=-1):k=p;else-1!==o&&(w=k,k=p,o=-1);var P=p;if(void 0!==y&&k!=p){var O=y[k];if("object"==typeof O){y=O;continue}"number"==typeof O?P=O:null==O&&void 0!==(O=y[-1])&&(P=O,w=k),y=void 0}else if(k>=0){var I=this.encodeTable[k>>8];if(void 0!==I&&(P=I[255&k]),P<=g){y=this.encodeTableSeq[g-P];continue}if(P==p&&this.gb18030){var B=findIdx(this.gb18030.uChars,k);if(-1!=B){P=this.gb18030.gbChars[B]+(k-this.gb18030.uChars[B]);i[x++]=129+Math.floor(P/12600),P%=12600,i[x++]=48+Math.floor(P/1260),P%=1260,i[x++]=129+Math.floor(P/10),P%=10,i[x++]=48+P;continue}}}P===p&&(P=this.defaultCharSingleByte),P<256?i[x++]=P:P<65536?(i[x++]=P>>8,i[x++]=255&P):P<16777216?(i[x++]=P>>16,i[x++]=P>>8&255,i[x++]=255&P):(i[x++]=P>>>24,i[x++]=P>>>16&255,i[x++]=P>>>8&255,i[x++]=255&P)}return this.seqObj=y,this.leadSurrogate=o,i.slice(0,x)},DBCSEncoder.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var r=u.alloc(10),i=0;if(this.seqObj){var o=this.seqObj[-1];void 0!==o&&(o<256?r[i++]=o:(r[i++]=o>>8,r[i++]=255&o)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(r[i++]=this.defaultCharSingleByte,this.leadSurrogate=-1),r.slice(0,i)}},DBCSEncoder.prototype.findIdx=findIdx,DBCSDecoder.prototype.write=function(r){for(var i=u.alloc(2*r.length),o=this.nodeIdx,w=this.prevBytes,_=this.prevBytes.length,x=-this.prevBytes.length,k=0,P=0;k<r.length;k++){var O,I=k>=0?r[k]:w[k+_];if((O=this.decodeTables[o][I])>=0);else if(O===p)O=this.defaultCharUnicode.charCodeAt(0),k=x;else if(-2===O){if(k>=3)var B=12600*(r[k-3]-129)+1260*(r[k-2]-48)+10*(r[k-1]-129)+(I-48);else B=12600*(w[k-3+_]-129)+1260*((k-2>=0?r[k-2]:w[k-2+_])-48)+10*((k-1>=0?r[k-1]:w[k-1+_])-129)+(I-48);var R=findIdx(this.gb18030.gbChars,B);O=this.gb18030.uChars[R]+B-this.gb18030.gbChars[R]}else{if(O<=y){o=y-O;continue}if(!(O<=g))throw new Error("iconv-lite internal error: invalid decoding table value "+O+" at "+o+"/"+I);for(var D=this.decodeTableSeq[g-O],N=0;N<D.length-1;N++)O=D[N],i[P++]=255&O,i[P++]=O>>8;O=D[D.length-1]}if(O>=65536){var W=55296|(O-=65536)>>10;i[P++]=255&W,i[P++]=W>>8,O=56320|1023&O}i[P++]=255&O,i[P++]=O>>8,o=0,x=k+1}return this.nodeIdx=o,this.prevBytes=x>=0?Array.prototype.slice.call(r,x):w.slice(x+_).concat(Array.prototype.slice.call(r)),i.slice(0,P).toString("ucs2")},DBCSDecoder.prototype.end=function(){for(var r="";this.prevBytes.length>0;){r+=this.defaultCharUnicode;var i=this.prevBytes.slice(1);this.prevBytes=[],this.nodeIdx=0,i.length>0&&(r+=this.write(i))}return this.prevBytes=[],this.nodeIdx=0,r}},5990:function(r,i,o){"use strict";r.exports={shiftjis:{type:"_dbcs",table:function(){return o(7014)},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return o(5633)},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return o(3336)}},gbk:{type:"_dbcs",table:function(){return o(3336).concat(o(4346))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return o(3336).concat(o(4346))},gb18030:function(){return o(6258)},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return o(7348)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return o(4284)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return o(4284).concat(o(3480))},encodeSkipVals:[36457,36463,36478,36523,36532,36557,36560,36695,36713,36718,36811,36862,36973,36986,37060,37084,37105,37311,37551,37552,37553,37554,37585,37959,38090,38361,38652,39285,39798,39800,39803,39878,39902,39916,39926,40002,40019,40034,40040,40043,40055,40124,40125,40144,40279,40282,40388,40431,40443,40617,40687,40701,40800,40907,41079,41180,41183,36812,37576,38468,38637,41636,41637,41639,41638,41676,41678]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},6934:function(r,i,o){"use strict";for(var u=[o(1025),o(7688),o(1279),o(758),o(9068),o(3769),o(7018),o(688),o(5990)],p=0;p<u.length;p++){var g=u[p];for(var y in g)Object.prototype.hasOwnProperty.call(g,y)&&(i[y]=g[y])}},1025:function(r,i,o){"use strict";var u=o(7103).Buffer;function InternalCodec(r,i){this.enc=r.encodingName,this.bomAware=r.bomAware,"base64"===this.enc?this.encoder=InternalEncoderBase64:"cesu8"===this.enc&&(this.enc="utf8",this.encoder=InternalEncoderCesu8,"💩"!==u.from("eda0bdedb2a9","hex").toString()&&(this.decoder=InternalDecoderCesu8,this.defaultCharUnicode=i.defaultCharUnicode))}r.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:InternalCodec},InternalCodec.prototype.encoder=InternalEncoder,InternalCodec.prototype.decoder=InternalDecoder;var p=o(2553).s;function InternalDecoder(r,i){this.decoder=new p(i.enc)}function InternalEncoder(r,i){this.enc=i.enc}function InternalEncoderBase64(r,i){this.prevStr=""}function InternalEncoderCesu8(r,i){}function InternalDecoderCesu8(r,i){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=i.defaultCharUnicode}p.prototype.end||(p.prototype.end=function(){}),InternalDecoder.prototype.write=function(r){return u.isBuffer(r)||(r=u.from(r)),this.decoder.write(r)},InternalDecoder.prototype.end=function(){return this.decoder.end()},InternalEncoder.prototype.write=function(r){return u.from(r,this.enc)},InternalEncoder.prototype.end=function(){},InternalEncoderBase64.prototype.write=function(r){var i=(r=this.prevStr+r).length-r.length%4;return this.prevStr=r.slice(i),r=r.slice(0,i),u.from(r,"base64")},InternalEncoderBase64.prototype.end=function(){return u.from(this.prevStr,"base64")},InternalEncoderCesu8.prototype.write=function(r){for(var i=u.alloc(3*r.length),o=0,p=0;p<r.length;p++){var g=r.charCodeAt(p);g<128?i[o++]=g:g<2048?(i[o++]=192+(g>>>6),i[o++]=128+(63&g)):(i[o++]=224+(g>>>12),i[o++]=128+(g>>>6&63),i[o++]=128+(63&g))}return i.slice(0,o)},InternalEncoderCesu8.prototype.end=function(){},InternalDecoderCesu8.prototype.write=function(r){for(var i=this.acc,o=this.contBytes,u=this.accBytes,p="",g=0;g<r.length;g++){var y=r[g];128!=(192&y)?(o>0&&(p+=this.defaultCharUnicode,o=0),y<128?p+=String.fromCharCode(y):y<224?(i=31&y,o=1,u=1):y<240?(i=15&y,o=2,u=1):p+=this.defaultCharUnicode):o>0?(i=i<<6|63&y,u++,0===--o&&(p+=2===u&&i<128&&i>0||3===u&&i<2048?this.defaultCharUnicode:String.fromCharCode(i))):p+=this.defaultCharUnicode}return this.acc=i,this.contBytes=o,this.accBytes=u,p},InternalDecoderCesu8.prototype.end=function(){var r=0;return this.contBytes>0&&(r+=this.defaultCharUnicode),r}},9068:function(r,i,o){"use strict";var u=o(7103).Buffer;function SBCSCodec(r,i){if(!r)throw new Error("SBCS codec is called without the data.");if(!r.chars||128!==r.chars.length&&256!==r.chars.length)throw new Error("Encoding '"+r.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===r.chars.length){for(var o="",p=0;p<128;p++)o+=String.fromCharCode(p);r.chars=o+r.chars}this.decodeBuf=u.from(r.chars,"ucs2");var g=u.alloc(65536,i.defaultCharSingleByte.charCodeAt(0));for(p=0;p<r.chars.length;p++)g[r.chars.charCodeAt(p)]=p;this.encodeBuf=g}function SBCSEncoder(r,i){this.encodeBuf=i.encodeBuf}function SBCSDecoder(r,i){this.decodeBuf=i.decodeBuf}i._sbcs=SBCSCodec,SBCSCodec.prototype.encoder=SBCSEncoder,SBCSCodec.prototype.decoder=SBCSDecoder,SBCSEncoder.prototype.write=function(r){for(var i=u.alloc(r.length),o=0;o<r.length;o++)i[o]=this.encodeBuf[r.charCodeAt(o)];return i},SBCSEncoder.prototype.end=function(){},SBCSDecoder.prototype.write=function(r){for(var i=this.decodeBuf,o=u.alloc(2*r.length),p=0,g=0,y=0;y<r.length;y++)p=2*r[y],o[g=2*y]=i[p],o[g+1]=i[p+1];return o.toString("ucs2")},SBCSDecoder.prototype.end=function(){}},7018:function(r){"use strict";r.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:" ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:" Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:" Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:" ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:" ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:" ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:" ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:" �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:" ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:" ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:" กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:" ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:" Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:" ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:" ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:" ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:" ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:" ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:" ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:" ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:" �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:" ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},3769:function(r){"use strict";r.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "},mik:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},cp720:{type:"_sbcs",chars:"éâàçêëèïîّْô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡ًٌٍَُِ≈°∙·√ⁿ²■ "},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},1279:function(r,i,o){"use strict";var u=o(7103).Buffer;function Utf16BECodec(){}function Utf16BEEncoder(){}function Utf16BEDecoder(){this.overflowByte=-1}function Utf16Codec(r,i){this.iconv=i}function Utf16Encoder(r,i){void 0===(r=r||{}).addBOM&&(r.addBOM=!0),this.encoder=i.iconv.getEncoder("utf-16le",r)}function Utf16Decoder(r,i){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=r||{},this.iconv=i.iconv}function detectEncoding(r,i){var o=[],u=0,p=0,g=0;e:for(var y=0;y<r.length;y++)for(var w=r[y],_=0;_<w.length;_++)if(o.push(w[_]),2===o.length){if(0===u){if(255===o[0]&&254===o[1])return"utf-16le";if(254===o[0]&&255===o[1])return"utf-16be"}if(0===o[0]&&0!==o[1]&&g++,0!==o[0]&&0===o[1]&&p++,o.length=0,++u>=100)break e}return g>p?"utf-16be":g<p?"utf-16le":i||"utf-16le"}i.utf16be=Utf16BECodec,Utf16BECodec.prototype.encoder=Utf16BEEncoder,Utf16BECodec.prototype.decoder=Utf16BEDecoder,Utf16BECodec.prototype.bomAware=!0,Utf16BEEncoder.prototype.write=function(r){for(var i=u.from(r,"ucs2"),o=0;o<i.length;o+=2){var p=i[o];i[o]=i[o+1],i[o+1]=p}return i},Utf16BEEncoder.prototype.end=function(){},Utf16BEDecoder.prototype.write=function(r){if(0==r.length)return"";var i=u.alloc(r.length+1),o=0,p=0;for(-1!==this.overflowByte&&(i[0]=r[0],i[1]=this.overflowByte,o=1,p=2);o<r.length-1;o+=2,p+=2)i[p]=r[o+1],i[p+1]=r[o];return this.overflowByte=o==r.length-1?r[r.length-1]:-1,i.slice(0,p).toString("ucs2")},Utf16BEDecoder.prototype.end=function(){this.overflowByte=-1},i.utf16=Utf16Codec,Utf16Codec.prototype.encoder=Utf16Encoder,Utf16Codec.prototype.decoder=Utf16Decoder,Utf16Encoder.prototype.write=function(r){return this.encoder.write(r)},Utf16Encoder.prototype.end=function(){return this.encoder.end()},Utf16Decoder.prototype.write=function(r){if(!this.decoder){if(this.initialBufs.push(r),this.initialBufsLen+=r.length,this.initialBufsLen<16)return"";var i=detectEncoding(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(i,this.options);for(var o="",u=0;u<this.initialBufs.length;u++)o+=this.decoder.write(this.initialBufs[u]);return this.initialBufs.length=this.initialBufsLen=0,o}return this.decoder.write(r)},Utf16Decoder.prototype.end=function(){if(!this.decoder){var r=detectEncoding(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(r,this.options);for(var i="",o=0;o<this.initialBufs.length;o++)i+=this.decoder.write(this.initialBufs[o]);var u=this.decoder.end();return u&&(i+=u),this.initialBufs.length=this.initialBufsLen=0,i}return this.decoder.end()}},7688:function(r,i,o){"use strict";var u=o(7103).Buffer;function Utf32Codec(r,i){this.iconv=i,this.bomAware=!0,this.isLE=r.isLE}function Utf32Encoder(r,i){this.isLE=i.isLE,this.highSurrogate=0}function Utf32Decoder(r,i){this.isLE=i.isLE,this.badChar=i.iconv.defaultCharUnicode.charCodeAt(0),this.overflow=[]}function _writeCodepoint(r,i,o,u){if((o<0||o>1114111)&&(o=u),o>=65536){var p=55296|(o-=65536)>>10;r[i++]=255&p,r[i++]=p>>8;o=56320|1023&o}return r[i++]=255&o,r[i++]=o>>8,i}function Utf32AutoCodec(r,i){this.iconv=i}function Utf32AutoEncoder(r,i){void 0===(r=r||{}).addBOM&&(r.addBOM=!0),this.encoder=i.iconv.getEncoder(r.defaultEncoding||"utf-32le",r)}function Utf32AutoDecoder(r,i){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=r||{},this.iconv=i.iconv}function detectEncoding(r,i){var o=[],u=0,p=0,g=0,y=0,w=0;e:for(var _=0;_<r.length;_++)for(var x=r[_],k=0;k<x.length;k++)if(o.push(x[k]),4===o.length){if(0===u){if(255===o[0]&&254===o[1]&&0===o[2]&&0===o[3])return"utf-32le";if(0===o[0]&&0===o[1]&&254===o[2]&&255===o[3])return"utf-32be"}if((0!==o[0]||o[1]>16)&&g++,(0!==o[3]||o[2]>16)&&p++,0!==o[0]||0!==o[1]||0===o[2]&&0===o[3]||w++,0===o[0]&&0===o[1]||0!==o[2]||0!==o[3]||y++,o.length=0,++u>=100)break e}return w-g>y-p?"utf-32be":w-g<y-p?"utf-32le":i||"utf-32le"}i._utf32=Utf32Codec,i.utf32le={type:"_utf32",isLE:!0},i.utf32be={type:"_utf32",isLE:!1},i.ucs4le="utf32le",i.ucs4be="utf32be",Utf32Codec.prototype.encoder=Utf32Encoder,Utf32Codec.prototype.decoder=Utf32Decoder,Utf32Encoder.prototype.write=function(r){for(var i=u.from(r,"ucs2"),o=u.alloc(2*i.length),p=this.isLE?o.writeUInt32LE:o.writeUInt32BE,g=0,y=0;y<i.length;y+=2){var w=i.readUInt16LE(y),_=55296<=w&&w<56320,x=56320<=w&&w<57344;if(this.highSurrogate){if(!_&&x){var k=65536+(this.highSurrogate-55296<<10|w-56320);p.call(o,k,g),g+=4,this.highSurrogate=0;continue}p.call(o,this.highSurrogate,g),g+=4}_?this.highSurrogate=w:(p.call(o,w,g),g+=4,this.highSurrogate=0)}return g<o.length&&(o=o.slice(0,g)),o},Utf32Encoder.prototype.end=function(){if(this.highSurrogate){var r=u.alloc(4);return this.isLE?r.writeUInt32LE(this.highSurrogate,0):r.writeUInt32BE(this.highSurrogate,0),this.highSurrogate=0,r}},Utf32Decoder.prototype.write=function(r){if(0===r.length)return"";var i=0,o=0,p=u.alloc(r.length+4),g=0,y=this.isLE,w=this.overflow,_=this.badChar;if(w.length>0){for(;i<r.length&&w.length<4;i++)w.push(r[i]);4===w.length&&(o=y?w[i]|w[i+1]<<8|w[i+2]<<16|w[i+3]<<24:w[i+3]|w[i+2]<<8|w[i+1]<<16|w[i]<<24,w.length=0,g=_writeCodepoint(p,g,o,_))}for(;i<r.length-3;i+=4)g=_writeCodepoint(p,g,o=y?r[i]|r[i+1]<<8|r[i+2]<<16|r[i+3]<<24:r[i+3]|r[i+2]<<8|r[i+1]<<16|r[i]<<24,_);for(;i<r.length;i++)w.push(r[i]);return p.slice(0,g).toString("ucs2")},Utf32Decoder.prototype.end=function(){this.overflow.length=0},i.utf32=Utf32AutoCodec,i.ucs4="utf32",Utf32AutoCodec.prototype.encoder=Utf32AutoEncoder,Utf32AutoCodec.prototype.decoder=Utf32AutoDecoder,Utf32AutoEncoder.prototype.write=function(r){return this.encoder.write(r)},Utf32AutoEncoder.prototype.end=function(){return this.encoder.end()},Utf32AutoDecoder.prototype.write=function(r){if(!this.decoder){if(this.initialBufs.push(r),this.initialBufsLen+=r.length,this.initialBufsLen<32)return"";var i=detectEncoding(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(i,this.options);for(var o="",u=0;u<this.initialBufs.length;u++)o+=this.decoder.write(this.initialBufs[u]);return this.initialBufs.length=this.initialBufsLen=0,o}return this.decoder.write(r)},Utf32AutoDecoder.prototype.end=function(){if(!this.decoder){var r=detectEncoding(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(r,this.options);for(var i="",o=0;o<this.initialBufs.length;o++)i+=this.decoder.write(this.initialBufs[o]);var u=this.decoder.end();return u&&(i+=u),this.initialBufs.length=this.initialBufsLen=0,i}return this.decoder.end()}},758:function(r,i,o){"use strict";var u=o(7103).Buffer;function Utf7Codec(r,i){this.iconv=i}i.utf7=Utf7Codec,i.unicode11utf7="utf7",Utf7Codec.prototype.encoder=Utf7Encoder,Utf7Codec.prototype.decoder=Utf7Decoder,Utf7Codec.prototype.bomAware=!0;var p=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function Utf7Encoder(r,i){this.iconv=i.iconv}function Utf7Decoder(r,i){this.iconv=i.iconv,this.inBase64=!1,this.base64Accum=""}Utf7Encoder.prototype.write=function(r){return u.from(r.replace(p,function(r){return"+"+("+"===r?"":this.iconv.encode(r,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))},Utf7Encoder.prototype.end=function(){};for(var g=/[A-Za-z0-9\/+]/,y=[],w=0;w<256;w++)y[w]=g.test(String.fromCharCode(w));var _="+".charCodeAt(0),x="-".charCodeAt(0),k="&".charCodeAt(0);function Utf7IMAPCodec(r,i){this.iconv=i}function Utf7IMAPEncoder(r,i){this.iconv=i.iconv,this.inBase64=!1,this.base64Accum=u.alloc(6),this.base64AccumIdx=0}function Utf7IMAPDecoder(r,i){this.iconv=i.iconv,this.inBase64=!1,this.base64Accum=""}Utf7Decoder.prototype.write=function(r){for(var i="",o=0,p=this.inBase64,g=this.base64Accum,w=0;w<r.length;w++)if(p){if(!y[r[w]]){if(w==o&&r[w]==x)i+="+";else{var k=g+this.iconv.decode(r.slice(o,w),"ascii");i+=this.iconv.decode(u.from(k,"base64"),"utf16-be")}r[w]!=x&&w--,o=w+1,p=!1,g=""}}else r[w]==_&&(i+=this.iconv.decode(r.slice(o,w),"ascii"),o=w+1,p=!0);if(p){var P=(k=g+this.iconv.decode(r.slice(o),"ascii")).length-k.length%8;g=k.slice(P),k=k.slice(0,P),i+=this.iconv.decode(u.from(k,"base64"),"utf16-be")}else i+=this.iconv.decode(r.slice(o),"ascii");return this.inBase64=p,this.base64Accum=g,i},Utf7Decoder.prototype.end=function(){var r="";return this.inBase64&&this.base64Accum.length>0&&(r=this.iconv.decode(u.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",r},i.utf7imap=Utf7IMAPCodec,Utf7IMAPCodec.prototype.encoder=Utf7IMAPEncoder,Utf7IMAPCodec.prototype.decoder=Utf7IMAPDecoder,Utf7IMAPCodec.prototype.bomAware=!0,Utf7IMAPEncoder.prototype.write=function(r){for(var i=this.inBase64,o=this.base64Accum,p=this.base64AccumIdx,g=u.alloc(5*r.length+10),y=0,w=0;w<r.length;w++){var _=r.charCodeAt(w);32<=_&&_<=126?(i&&(p>0&&(y+=g.write(o.slice(0,p).toString("base64").replace(/\//g,",").replace(/=+$/,""),y),p=0),g[y++]=x,i=!1),i||(g[y++]=_,_===k&&(g[y++]=x))):(i||(g[y++]=k,i=!0),i&&(o[p++]=_>>8,o[p++]=255&_,p==o.length&&(y+=g.write(o.toString("base64").replace(/\//g,","),y),p=0)))}return this.inBase64=i,this.base64AccumIdx=p,g.slice(0,y)},Utf7IMAPEncoder.prototype.end=function(){var r=u.alloc(10),i=0;return this.inBase64&&(this.base64AccumIdx>0&&(i+=r.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),i),this.base64AccumIdx=0),r[i++]=x,this.inBase64=!1),r.slice(0,i)};var P=y.slice();P[",".charCodeAt(0)]=!0,Utf7IMAPDecoder.prototype.write=function(r){for(var i="",o=0,p=this.inBase64,g=this.base64Accum,y=0;y<r.length;y++)if(p){if(!P[r[y]]){if(y==o&&r[y]==x)i+="&";else{var w=g+this.iconv.decode(r.slice(o,y),"ascii").replace(/,/g,"/");i+=this.iconv.decode(u.from(w,"base64"),"utf16-be")}r[y]!=x&&y--,o=y+1,p=!1,g=""}}else r[y]==k&&(i+=this.iconv.decode(r.slice(o,y),"ascii"),o=y+1,p=!0);if(p){var _=(w=g+this.iconv.decode(r.slice(o),"ascii").replace(/,/g,"/")).length-w.length%8;g=w.slice(_),w=w.slice(0,_),i+=this.iconv.decode(u.from(w,"base64"),"utf16-be")}else i+=this.iconv.decode(r.slice(o),"ascii");return this.inBase64=p,this.base64Accum=g,i},Utf7IMAPDecoder.prototype.end=function(){var r="";return this.inBase64&&this.base64Accum.length>0&&(r=this.iconv.decode(u.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",r}},5395:function(r,i){"use strict";function PrependBOMWrapper(r,i){this.encoder=r,this.addBOM=!0}function StripBOMWrapper(r,i){this.decoder=r,this.pass=!1,this.options=i||{}}i.PrependBOM=PrependBOMWrapper,PrependBOMWrapper.prototype.write=function(r){return this.addBOM&&(r="\ufeff"+r,this.addBOM=!1),this.encoder.write(r)},PrependBOMWrapper.prototype.end=function(){return this.encoder.end()},i.StripBOM=StripBOMWrapper,StripBOMWrapper.prototype.write=function(r){var i=this.decoder.write(r);return this.pass||!i||("\ufeff"===i[0]&&(i=i.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0),i},StripBOMWrapper.prototype.end=function(){return this.decoder.end()}},4914:function(r,i,o){"use strict";var u,p=o(7103).Buffer,g=o(5395),y=r.exports;y.encodings=null,y.defaultCharUnicode="�",y.defaultCharSingleByte="?",y.encode=function encode(r,i,o){r=""+(r||"");var u=y.getEncoder(i,o),g=u.write(r),w=u.end();return w&&w.length>0?p.concat([g,w]):g},y.decode=function decode(r,i,o){"string"==typeof r&&(y.skipDecodeWarning||(y.skipDecodeWarning=!0),r=p.from(""+(r||""),"binary"));var u=y.getDecoder(i,o),g=u.write(r),w=u.end();return w?g+w:g},y.encodingExists=function encodingExists(r){try{return y.getCodec(r),!0}catch(r){return!1}},y.toEncoding=y.encode,y.fromEncoding=y.decode,y._codecDataCache={},y.getCodec=function getCodec(r){y.encodings||(y.encodings=o(6934));for(var i=y._canonicalizeEncoding(r),u={};;){var p=y._codecDataCache[i];if(p)return p;var g=y.encodings[i];switch(typeof g){case"string":i=g;break;case"object":for(var w in g)u[w]=g[w];u.encodingName||(u.encodingName=i),i=g.type;break;case"function":return u.encodingName||(u.encodingName=i),p=new g(u,y),y._codecDataCache[u.encodingName]=p,p;default:throw new Error("Encoding not recognized: '"+r+"' (searched as: '"+i+"')")}}},y._canonicalizeEncoding=function(r){return(""+r).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},y.getEncoder=function getEncoder(r,i){var o=y.getCodec(r),u=new o.encoder(i,o);return o.bomAware&&i&&i.addBOM&&(u=new g.PrependBOM(u,i)),u},y.getDecoder=function getDecoder(r,i){var o=y.getCodec(r),u=new o.decoder(i,o);return!o.bomAware||i&&!1===i.stripBOM||(u=new g.StripBOM(u,i)),u},y.enableStreamingAPI=function enableStreamingAPI(r){if(!y.supportsStreams){var i=o(8044)(r);y.IconvLiteEncoderStream=i.IconvLiteEncoderStream,y.IconvLiteDecoderStream=i.IconvLiteDecoderStream,y.encodeStream=function encodeStream(r,i){return new y.IconvLiteEncoderStream(y.getEncoder(r,i),i)},y.decodeStream=function decodeStream(r,i){return new y.IconvLiteDecoderStream(y.getDecoder(r,i),i)},y.supportsStreams=!0}};try{u=o(5832)}catch(r){}u&&u.Transform?y.enableStreamingAPI(u):y.encodeStream=y.decodeStream=function(){throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.")}},8044:function(r,i,o){"use strict";var u=o(7103).Buffer;r.exports=function(r){var i=r.Transform;function IconvLiteEncoderStream(r,o){this.conv=r,(o=o||{}).decodeStrings=!1,i.call(this,o)}function IconvLiteDecoderStream(r,o){this.conv=r,(o=o||{}).encoding=this.encoding="utf8",i.call(this,o)}return IconvLiteEncoderStream.prototype=Object.create(i.prototype,{constructor:{value:IconvLiteEncoderStream}}),IconvLiteEncoderStream.prototype._transform=function(r,i,o){if("string"!=typeof r)return o(new Error("Iconv encoding stream needs strings as its input."));try{var u=this.conv.write(r);u&&u.length&&this.push(u),o()}catch(r){o(r)}},IconvLiteEncoderStream.prototype._flush=function(r){try{var i=this.conv.end();i&&i.length&&this.push(i),r()}catch(i){r(i)}},IconvLiteEncoderStream.prototype.collect=function(r){var i=[];return this.on("error",r),this.on("data",(function(r){i.push(r)})),this.on("end",(function(){r(null,u.concat(i))})),this},IconvLiteDecoderStream.prototype=Object.create(i.prototype,{constructor:{value:IconvLiteDecoderStream}}),IconvLiteDecoderStream.prototype._transform=function(r,i,o){if(!(u.isBuffer(r)||r instanceof Uint8Array))return o(new Error("Iconv decoding stream needs buffers as its input."));try{var p=this.conv.write(r);p&&p.length&&this.push(p,this.encoding),o()}catch(r){o(r)}},IconvLiteDecoderStream.prototype._flush=function(r){try{var i=this.conv.end();i&&i.length&&this.push(i,this.encoding),r()}catch(i){r(i)}},IconvLiteDecoderStream.prototype.collect=function(r){var i="";return this.on("error",r),this.on("data",(function(r){i+=r})),this.on("end",(function(){r(null,i)})),this},{IconvLiteEncoderStream:IconvLiteEncoderStream,IconvLiteDecoderStream:IconvLiteDecoderStream}}},645:function(r,i){i.read=function(r,i,o,u,p){var g,y,w=8*p-u-1,_=(1<<w)-1,x=_>>1,k=-7,P=o?p-1:0,O=o?-1:1,I=r[i+P];for(P+=O,g=I&(1<<-k)-1,I>>=-k,k+=w;k>0;g=256*g+r[i+P],P+=O,k-=8);for(y=g&(1<<-k)-1,g>>=-k,k+=u;k>0;y=256*y+r[i+P],P+=O,k-=8);if(0===g)g=1-x;else{if(g===_)return y?NaN:1/0*(I?-1:1);y+=Math.pow(2,u),g-=x}return(I?-1:1)*y*Math.pow(2,g-u)},i.write=function(r,i,o,u,p,g){var y,w,_,x=8*g-p-1,k=(1<<x)-1,P=k>>1,O=23===p?Math.pow(2,-24)-Math.pow(2,-77):0,I=u?0:g-1,B=u?1:-1,R=i<0||0===i&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(w=isNaN(i)?1:0,y=k):(y=Math.floor(Math.log(i)/Math.LN2),i*(_=Math.pow(2,-y))<1&&(y--,_*=2),(i+=y+P>=1?O/_:O*Math.pow(2,1-P))*_>=2&&(y++,_/=2),y+P>=k?(w=0,y=k):y+P>=1?(w=(i*_-1)*Math.pow(2,p),y+=P):(w=i*Math.pow(2,P-1)*Math.pow(2,p),y=0));p>=8;r[o+I]=255&w,I+=B,w/=256,p-=8);for(y=y<<p|w,x+=p;x>0;r[o+I]=255&y,I+=B,y/=256,x-=8);r[o+I-B]|=128*R}},5717:function(r){"function"==typeof Object.create?r.exports=function inherits(r,i){i&&(r.super_=i,r.prototype=Object.create(i.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}))}:r.exports=function inherits(r,i){if(i){r.super_=i;var TempCtor=function(){};TempCtor.prototype=i.prototype,r.prototype=new TempCtor,r.prototype.constructor=r}}},2584:function(r,i,o){"use strict";var u=o(6410)(),p=o(1924)("Object.prototype.toString"),g=function isArguments(r){return!(u&&r&&"object"==typeof r&&Symbol.toStringTag in r)&&"[object Arguments]"===p(r)},y=function isArguments(r){return!!g(r)||null!==r&&"object"==typeof r&&"number"==typeof r.length&&r.length>=0&&"[object Array]"!==p(r)&&"[object Function]"===p(r.callee)},w=function(){return g(arguments)}();g.isLegacyArguments=y,r.exports=w?g:y},5320:function(r){"use strict";var i,o,u=Function.prototype.toString,p="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof p&&"function"==typeof Object.defineProperty)try{i=Object.defineProperty({},"length",{get:function(){throw o}}),o={},p((function(){throw 42}),null,i)}catch(r){r!==o&&(p=null)}else p=null;var g=/^\s*class\b/,y=function isES6ClassFunction(r){try{var i=u.call(r);return g.test(i)}catch(r){return!1}},w=function tryFunctionToStr(r){try{return!y(r)&&(u.call(r),!0)}catch(r){return!1}},_=Object.prototype.toString,x="function"==typeof Symbol&&!!Symbol.toStringTag,k=!(0 in[,]),P=function isDocumentDotAll(){return!1};if("object"==typeof document){var O=document.all;_.call(O)===_.call(document.all)&&(P=function isDocumentDotAll(r){if((k||!r)&&(void 0===r||"object"==typeof r))try{var i=_.call(r);return("[object HTMLAllCollection]"===i||"[object HTML document.all class]"===i||"[object HTMLCollection]"===i||"[object Object]"===i)&&null==r("")}catch(r){}return!1})}r.exports=p?function isCallable(r){if(P(r))return!0;if(!r)return!1;if("function"!=typeof r&&"object"!=typeof r)return!1;try{p(r,null,i)}catch(r){if(r!==o)return!1}return!y(r)&&w(r)}:function isCallable(r){if(P(r))return!0;if(!r)return!1;if("function"!=typeof r&&"object"!=typeof r)return!1;if(x)return w(r);if(y(r))return!1;var i=_.call(r);return!("[object Function]"!==i&&"[object GeneratorFunction]"!==i&&!/^\[object HTML/.test(i))&&w(r)}},8923:function(r,i,o){"use strict";var u=Date.prototype.getDay,p=Object.prototype.toString,g=o(6410)();r.exports=function isDateObject(r){return"object"==typeof r&&null!==r&&(g?function tryDateGetDayCall(r){try{return u.call(r),!0}catch(r){return!1}}(r):"[object Date]"===p.call(r))}},8662:function(r,i,o){"use strict";var u,p=Object.prototype.toString,g=Function.prototype.toString,y=/^\s*(?:function)?\*/,w=o(6410)(),_=Object.getPrototypeOf;r.exports=function isGeneratorFunction(r){if("function"!=typeof r)return!1;if(y.test(g.call(r)))return!0;if(!w)return"[object GeneratorFunction]"===p.call(r);if(!_)return!1;if(void 0===u){var i=function(){if(!w)return!1;try{return Function("return function*() {}")()}catch(r){}}();u=!!i&&_(i)}return _(r)===u}},8611:function(r){"use strict";r.exports=function isNaN(r){return r!=r}},360:function(r,i,o){"use strict";var u=o(5559),p=o(4289),g=o(8611),y=o(9415),w=o(6743),_=u(y(),Number);p(_,{getPolyfill:y,implementation:g,shim:w}),r.exports=_},9415:function(r,i,o){"use strict";var u=o(8611);r.exports=function getPolyfill(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:u}},6743:function(r,i,o){"use strict";var u=o(4289),p=o(9415);r.exports=function shimNumberIsNaN(){var r=p();return u(Number,{isNaN:r},{isNaN:function testIsNaN(){return Number.isNaN!==r}}),r}},8420:function(r,i,o){"use strict";var u,p,g,y,w=o(1924),_=o(6410)();if(_){u=w("Object.prototype.hasOwnProperty"),p=w("RegExp.prototype.exec"),g={};var throwRegexMarker=function(){throw g};y={toString:throwRegexMarker,valueOf:throwRegexMarker},"symbol"==typeof Symbol.toPrimitive&&(y[Symbol.toPrimitive]=throwRegexMarker)}var x=w("Object.prototype.toString"),k=Object.getOwnPropertyDescriptor;r.exports=_?function isRegex(r){if(!r||"object"!=typeof r)return!1;var i=k(r,"lastIndex");if(!(i&&u(i,"value")))return!1;try{p(r,y)}catch(r){return r===g}}:function isRegex(r){return!(!r||"object"!=typeof r&&"function"!=typeof r)&&"[object RegExp]"===x(r)}},5692:function(r,i,o){"use strict";var u=o(4029),p=o(3083),g=o(1924),y=g("Object.prototype.toString"),w=o(6410)(),_=o(7296),x="undefined"==typeof globalThis?o.g:globalThis,k=p(),P=g("Array.prototype.indexOf",!0)||function indexOf(r,i){for(var o=0;o<r.length;o+=1)if(r[o]===i)return o;return-1},O=g("String.prototype.slice"),I={},B=Object.getPrototypeOf;w&&_&&B&&u(k,(function(r){var i=new x[r];if(Symbol.toStringTag in i){var o=B(i),u=_(o,Symbol.toStringTag);if(!u){var p=B(o);u=_(p,Symbol.toStringTag)}I[r]=u.get}}));r.exports=function isTypedArray(r){if(!r||"object"!=typeof r)return!1;if(!w||!(Symbol.toStringTag in r)){var i=O(y(r),8,-1);return P(k,i)>-1}return!!_&&function tryAllTypedArrays(r){var i=!1;return u(I,(function(o,u){if(!i)try{i=o.call(r)===u}catch(r){}})),i}(r)}},4244:function(r){"use strict";var numberIsNaN=function(r){return r!=r};r.exports=function is(r,i){return 0===r&&0===i?1/r==1/i:r===i||!(!numberIsNaN(r)||!numberIsNaN(i))}},609:function(r,i,o){"use strict";var u=o(4289),p=o(5559),g=o(4244),y=o(5624),w=o(2281),_=p(y(),Object);u(_,{getPolyfill:y,implementation:g,shim:w}),r.exports=_},5624:function(r,i,o){"use strict";var u=o(4244);r.exports=function getPolyfill(){return"function"==typeof Object.is?Object.is:u}},2281:function(r,i,o){"use strict";var u=o(5624),p=o(4289);r.exports=function shimObjectIs(){var r=u();return p(Object,{is:r},{is:function testObjectIs(){return Object.is!==r}}),r}},8987:function(r,i,o){"use strict";var u;if(!Object.keys){var p=Object.prototype.hasOwnProperty,g=Object.prototype.toString,y=o(1414),w=Object.prototype.propertyIsEnumerable,_=!w.call({toString:null},"toString"),x=w.call((function(){}),"prototype"),k=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],equalsConstructorPrototype=function(r){var i=r.constructor;return i&&i.prototype===r},P={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},O=function(){if("undefined"==typeof window)return!1;for(var r in window)try{if(!P["$"+r]&&p.call(window,r)&&null!==window[r]&&"object"==typeof window[r])try{equalsConstructorPrototype(window[r])}catch(r){return!0}}catch(r){return!0}return!1}();u=function keys(r){var i=null!==r&&"object"==typeof r,o="[object Function]"===g.call(r),u=y(r),w=i&&"[object String]"===g.call(r),P=[];if(!i&&!o&&!u)throw new TypeError("Object.keys called on a non-object");var I=x&&o;if(w&&r.length>0&&!p.call(r,0))for(var B=0;B<r.length;++B)P.push(String(B));if(u&&r.length>0)for(var R=0;R<r.length;++R)P.push(String(R));else for(var D in r)I&&"prototype"===D||!p.call(r,D)||P.push(String(D));if(_)for(var N=function(r){if("undefined"==typeof window||!O)return equalsConstructorPrototype(r);try{return equalsConstructorPrototype(r)}catch(r){return!1}}(r),W=0;W<k.length;++W)N&&"constructor"===k[W]||!p.call(r,k[W])||P.push(k[W]);return P}}r.exports=u},2215:function(r,i,o){"use strict";var u=Array.prototype.slice,p=o(1414),g=Object.keys,y=g?function keys(r){return g(r)}:o(8987),w=Object.keys;y.shim=function shimObjectKeys(){if(Object.keys){var r=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);r||(Object.keys=function keys(r){return p(r)?w(u.call(r)):w(r)})}else Object.keys=y;return Object.keys||y},r.exports=y},1414:function(r){"use strict";var i=Object.prototype.toString;r.exports=function isArguments(r){var o=i.call(r),u="[object Arguments]"===o;return u||(u="[object Array]"!==o&&null!==r&&"object"==typeof r&&"number"==typeof r.length&&r.length>=0&&"[object Function]"===i.call(r.callee)),u}},4236:function(r,i){"use strict";var o="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function _has(r,i){return Object.prototype.hasOwnProperty.call(r,i)}i.assign=function(r){for(var i=Array.prototype.slice.call(arguments,1);i.length;){var o=i.shift();if(o){if("object"!=typeof o)throw new TypeError(o+"must be non-object");for(var u in o)_has(o,u)&&(r[u]=o[u])}}return r},i.shrinkBuf=function(r,i){return r.length===i?r:r.subarray?r.subarray(0,i):(r.length=i,r)};var u={arraySet:function(r,i,o,u,p){if(i.subarray&&r.subarray)r.set(i.subarray(o,o+u),p);else for(var g=0;g<u;g++)r[p+g]=i[o+g]},flattenChunks:function(r){var i,o,u,p,g,y;for(u=0,i=0,o=r.length;i<o;i++)u+=r[i].length;for(y=new Uint8Array(u),p=0,i=0,o=r.length;i<o;i++)g=r[i],y.set(g,p),p+=g.length;return y}},p={arraySet:function(r,i,o,u,p){for(var g=0;g<u;g++)r[p+g]=i[o+g]},flattenChunks:function(r){return[].concat.apply([],r)}};i.setTyped=function(r){r?(i.Buf8=Uint8Array,i.Buf16=Uint16Array,i.Buf32=Int32Array,i.assign(i,u)):(i.Buf8=Array,i.Buf16=Array,i.Buf32=Array,i.assign(i,p))},i.setTyped(o)},6069:function(r){"use strict";r.exports=function adler32(r,i,o,u){for(var p=65535&r|0,g=r>>>16&65535|0,y=0;0!==o;){o-=y=o>2e3?2e3:o;do{g=g+(p=p+i[u++]|0)|0}while(--y);p%=65521,g%=65521}return p|g<<16|0}},1619:function(r){"use strict";r.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:function(r){"use strict";var i=function makeTable(){for(var r,i=[],o=0;o<256;o++){r=o;for(var u=0;u<8;u++)r=1&r?3988292384^r>>>1:r>>>1;i[o]=r}return i}();r.exports=function crc32(r,o,u,p){var g=i,y=p+u;r^=-1;for(var w=p;w<y;w++)r=r>>>8^g[255&(r^o[w])];return-1^r}},405:function(r,i,o){"use strict";var u,p=o(4236),g=o(342),y=o(6069),w=o(2869),_=o(8898),x=-2,k=258,P=262,O=103,I=113,B=666;function err(r,i){return r.msg=_[i],i}function rank(r){return(r<<1)-(r>4?9:0)}function zero(r){for(var i=r.length;--i>=0;)r[i]=0}function flush_pending(r){var i=r.state,o=i.pending;o>r.avail_out&&(o=r.avail_out),0!==o&&(p.arraySet(r.output,i.pending_buf,i.pending_out,o,r.next_out),r.next_out+=o,i.pending_out+=o,r.total_out+=o,r.avail_out-=o,i.pending-=o,0===i.pending&&(i.pending_out=0))}function flush_block_only(r,i){g._tr_flush_block(r,r.block_start>=0?r.block_start:-1,r.strstart-r.block_start,i),r.block_start=r.strstart,flush_pending(r.strm)}function put_byte(r,i){r.pending_buf[r.pending++]=i}function putShortMSB(r,i){r.pending_buf[r.pending++]=i>>>8&255,r.pending_buf[r.pending++]=255&i}function longest_match(r,i){var o,u,p=r.max_chain_length,g=r.strstart,y=r.prev_length,w=r.nice_match,_=r.strstart>r.w_size-P?r.strstart-(r.w_size-P):0,x=r.window,O=r.w_mask,I=r.prev,B=r.strstart+k,R=x[g+y-1],D=x[g+y];r.prev_length>=r.good_match&&(p>>=2),w>r.lookahead&&(w=r.lookahead);do{if(x[(o=i)+y]===D&&x[o+y-1]===R&&x[o]===x[g]&&x[++o]===x[g+1]){g+=2,o++;do{}while(x[++g]===x[++o]&&x[++g]===x[++o]&&x[++g]===x[++o]&&x[++g]===x[++o]&&x[++g]===x[++o]&&x[++g]===x[++o]&&x[++g]===x[++o]&&x[++g]===x[++o]&&g<B);if(u=k-(B-g),g=B-k,u>y){if(r.match_start=i,y=u,u>=w)break;R=x[g+y-1],D=x[g+y]}}}while((i=I[i&O])>_&&0!=--p);return y<=r.lookahead?y:r.lookahead}function fill_window(r){var i,o,u,g,_,x,k,O,I,B,R=r.w_size;do{if(g=r.window_size-r.lookahead-r.strstart,r.strstart>=R+(R-P)){p.arraySet(r.window,r.window,R,R,0),r.match_start-=R,r.strstart-=R,r.block_start-=R,i=o=r.hash_size;do{u=r.head[--i],r.head[i]=u>=R?u-R:0}while(--o);i=o=R;do{u=r.prev[--i],r.prev[i]=u>=R?u-R:0}while(--o);g+=R}if(0===r.strm.avail_in)break;if(x=r.strm,k=r.window,O=r.strstart+r.lookahead,I=g,B=void 0,(B=x.avail_in)>I&&(B=I),o=0===B?0:(x.avail_in-=B,p.arraySet(k,x.input,x.next_in,B,O),1===x.state.wrap?x.adler=y(x.adler,k,B,O):2===x.state.wrap&&(x.adler=w(x.adler,k,B,O)),x.next_in+=B,x.total_in+=B,B),r.lookahead+=o,r.lookahead+r.insert>=3)for(_=r.strstart-r.insert,r.ins_h=r.window[_],r.ins_h=(r.ins_h<<r.hash_shift^r.window[_+1])&r.hash_mask;r.insert&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[_+3-1])&r.hash_mask,r.prev[_&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=_,_++,r.insert--,!(r.lookahead+r.insert<3)););}while(r.lookahead<P&&0!==r.strm.avail_in)}function deflate_fast(r,i){for(var o,u;;){if(r.lookahead<P){if(fill_window(r),r.lookahead<P&&0===i)return 1;if(0===r.lookahead)break}if(o=0,r.lookahead>=3&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+3-1])&r.hash_mask,o=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart),0!==o&&r.strstart-o<=r.w_size-P&&(r.match_length=longest_match(r,o)),r.match_length>=3)if(u=g._tr_tally(r,r.strstart-r.match_start,r.match_length-3),r.lookahead-=r.match_length,r.match_length<=r.max_lazy_match&&r.lookahead>=3){r.match_length--;do{r.strstart++,r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+3-1])&r.hash_mask,o=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart}while(0!=--r.match_length);r.strstart++}else r.strstart+=r.match_length,r.match_length=0,r.ins_h=r.window[r.strstart],r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+1])&r.hash_mask;else u=g._tr_tally(r,0,r.window[r.strstart]),r.lookahead--,r.strstart++;if(u&&(flush_block_only(r,!1),0===r.strm.avail_out))return 1}return r.insert=r.strstart<2?r.strstart:2,4===i?(flush_block_only(r,!0),0===r.strm.avail_out?3:4):r.last_lit&&(flush_block_only(r,!1),0===r.strm.avail_out)?1:2}function deflate_slow(r,i){for(var o,u,p;;){if(r.lookahead<P){if(fill_window(r),r.lookahead<P&&0===i)return 1;if(0===r.lookahead)break}if(o=0,r.lookahead>=3&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+3-1])&r.hash_mask,o=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart),r.prev_length=r.match_length,r.prev_match=r.match_start,r.match_length=2,0!==o&&r.prev_length<r.max_lazy_match&&r.strstart-o<=r.w_size-P&&(r.match_length=longest_match(r,o),r.match_length<=5&&(1===r.strategy||3===r.match_length&&r.strstart-r.match_start>4096)&&(r.match_length=2)),r.prev_length>=3&&r.match_length<=r.prev_length){p=r.strstart+r.lookahead-3,u=g._tr_tally(r,r.strstart-1-r.prev_match,r.prev_length-3),r.lookahead-=r.prev_length-1,r.prev_length-=2;do{++r.strstart<=p&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+3-1])&r.hash_mask,o=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart)}while(0!=--r.prev_length);if(r.match_available=0,r.match_length=2,r.strstart++,u&&(flush_block_only(r,!1),0===r.strm.avail_out))return 1}else if(r.match_available){if((u=g._tr_tally(r,0,r.window[r.strstart-1]))&&flush_block_only(r,!1),r.strstart++,r.lookahead--,0===r.strm.avail_out)return 1}else r.match_available=1,r.strstart++,r.lookahead--}return r.match_available&&(u=g._tr_tally(r,0,r.window[r.strstart-1]),r.match_available=0),r.insert=r.strstart<2?r.strstart:2,4===i?(flush_block_only(r,!0),0===r.strm.avail_out?3:4):r.last_lit&&(flush_block_only(r,!1),0===r.strm.avail_out)?1:2}function Config(r,i,o,u,p){this.good_length=r,this.max_lazy=i,this.nice_length=o,this.max_chain=u,this.func=p}function DeflateState(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new p.Buf16(1146),this.dyn_dtree=new p.Buf16(122),this.bl_tree=new p.Buf16(78),zero(this.dyn_ltree),zero(this.dyn_dtree),zero(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new p.Buf16(16),this.heap=new p.Buf16(573),zero(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new p.Buf16(573),zero(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function deflateResetKeep(r){var i;return r&&r.state?(r.total_in=r.total_out=0,r.data_type=2,(i=r.state).pending=0,i.pending_out=0,i.wrap<0&&(i.wrap=-i.wrap),i.status=i.wrap?42:I,r.adler=2===i.wrap?0:1,i.last_flush=0,g._tr_init(i),0):err(r,x)}function deflateReset(r){var i=deflateResetKeep(r);return 0===i&&function lm_init(r){r.window_size=2*r.w_size,zero(r.head),r.max_lazy_match=u[r.level].max_lazy,r.good_match=u[r.level].good_length,r.nice_match=u[r.level].nice_length,r.max_chain_length=u[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0}(r.state),i}function deflateInit2(r,i,o,u,g,y){if(!r)return x;var w=1;if(-1===i&&(i=6),u<0?(w=0,u=-u):u>15&&(w=2,u-=16),g<1||g>9||8!==o||u<8||u>15||i<0||i>9||y<0||y>4)return err(r,x);8===u&&(u=9);var _=new DeflateState;return r.state=_,_.strm=r,_.wrap=w,_.gzhead=null,_.w_bits=u,_.w_size=1<<_.w_bits,_.w_mask=_.w_size-1,_.hash_bits=g+7,_.hash_size=1<<_.hash_bits,_.hash_mask=_.hash_size-1,_.hash_shift=~~((_.hash_bits+3-1)/3),_.window=new p.Buf8(2*_.w_size),_.head=new p.Buf16(_.hash_size),_.prev=new p.Buf16(_.w_size),_.lit_bufsize=1<<g+6,_.pending_buf_size=4*_.lit_bufsize,_.pending_buf=new p.Buf8(_.pending_buf_size),_.d_buf=1*_.lit_bufsize,_.l_buf=3*_.lit_bufsize,_.level=i,_.strategy=y,_.method=o,deflateReset(r)}u=[new Config(0,0,0,0,(function deflate_stored(r,i){var o=65535;for(o>r.pending_buf_size-5&&(o=r.pending_buf_size-5);;){if(r.lookahead<=1){if(fill_window(r),0===r.lookahead&&0===i)return 1;if(0===r.lookahead)break}r.strstart+=r.lookahead,r.lookahead=0;var u=r.block_start+o;if((0===r.strstart||r.strstart>=u)&&(r.lookahead=r.strstart-u,r.strstart=u,flush_block_only(r,!1),0===r.strm.avail_out))return 1;if(r.strstart-r.block_start>=r.w_size-P&&(flush_block_only(r,!1),0===r.strm.avail_out))return 1}return r.insert=0,4===i?(flush_block_only(r,!0),0===r.strm.avail_out?3:4):(r.strstart>r.block_start&&(flush_block_only(r,!1),r.strm.avail_out),1)})),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)],i.deflateInit=function deflateInit(r,i){return deflateInit2(r,i,8,15,8,0)},i.deflateInit2=deflateInit2,i.deflateReset=deflateReset,i.deflateResetKeep=deflateResetKeep,i.deflateSetHeader=function deflateSetHeader(r,i){return r&&r.state?2!==r.state.wrap?x:(r.state.gzhead=i,0):x},i.deflate=function deflate(r,i){var o,p,y,_;if(!r||!r.state||i>5||i<0)return r?err(r,x):x;if(p=r.state,!r.output||!r.input&&0!==r.avail_in||p.status===B&&4!==i)return err(r,0===r.avail_out?-5:x);if(p.strm=r,o=p.last_flush,p.last_flush=i,42===p.status)if(2===p.wrap)r.adler=0,put_byte(p,31),put_byte(p,139),put_byte(p,8),p.gzhead?(put_byte(p,(p.gzhead.text?1:0)+(p.gzhead.hcrc?2:0)+(p.gzhead.extra?4:0)+(p.gzhead.name?8:0)+(p.gzhead.comment?16:0)),put_byte(p,255&p.gzhead.time),put_byte(p,p.gzhead.time>>8&255),put_byte(p,p.gzhead.time>>16&255),put_byte(p,p.gzhead.time>>24&255),put_byte(p,9===p.level?2:p.strategy>=2||p.level<2?4:0),put_byte(p,255&p.gzhead.os),p.gzhead.extra&&p.gzhead.extra.length&&(put_byte(p,255&p.gzhead.extra.length),put_byte(p,p.gzhead.extra.length>>8&255)),p.gzhead.hcrc&&(r.adler=w(r.adler,p.pending_buf,p.pending,0)),p.gzindex=0,p.status=69):(put_byte(p,0),put_byte(p,0),put_byte(p,0),put_byte(p,0),put_byte(p,0),put_byte(p,9===p.level?2:p.strategy>=2||p.level<2?4:0),put_byte(p,3),p.status=I);else{var P=8+(p.w_bits-8<<4)<<8;P|=(p.strategy>=2||p.level<2?0:p.level<6?1:6===p.level?2:3)<<6,0!==p.strstart&&(P|=32),P+=31-P%31,p.status=I,putShortMSB(p,P),0!==p.strstart&&(putShortMSB(p,r.adler>>>16),putShortMSB(p,65535&r.adler)),r.adler=1}if(69===p.status)if(p.gzhead.extra){for(y=p.pending;p.gzindex<(65535&p.gzhead.extra.length)&&(p.pending!==p.pending_buf_size||(p.gzhead.hcrc&&p.pending>y&&(r.adler=w(r.adler,p.pending_buf,p.pending-y,y)),flush_pending(r),y=p.pending,p.pending!==p.pending_buf_size));)put_byte(p,255&p.gzhead.extra[p.gzindex]),p.gzindex++;p.gzhead.hcrc&&p.pending>y&&(r.adler=w(r.adler,p.pending_buf,p.pending-y,y)),p.gzindex===p.gzhead.extra.length&&(p.gzindex=0,p.status=73)}else p.status=73;if(73===p.status)if(p.gzhead.name){y=p.pending;do{if(p.pending===p.pending_buf_size&&(p.gzhead.hcrc&&p.pending>y&&(r.adler=w(r.adler,p.pending_buf,p.pending-y,y)),flush_pending(r),y=p.pending,p.pending===p.pending_buf_size)){_=1;break}_=p.gzindex<p.gzhead.name.length?255&p.gzhead.name.charCodeAt(p.gzindex++):0,put_byte(p,_)}while(0!==_);p.gzhead.hcrc&&p.pending>y&&(r.adler=w(r.adler,p.pending_buf,p.pending-y,y)),0===_&&(p.gzindex=0,p.status=91)}else p.status=91;if(91===p.status)if(p.gzhead.comment){y=p.pending;do{if(p.pending===p.pending_buf_size&&(p.gzhead.hcrc&&p.pending>y&&(r.adler=w(r.adler,p.pending_buf,p.pending-y,y)),flush_pending(r),y=p.pending,p.pending===p.pending_buf_size)){_=1;break}_=p.gzindex<p.gzhead.comment.length?255&p.gzhead.comment.charCodeAt(p.gzindex++):0,put_byte(p,_)}while(0!==_);p.gzhead.hcrc&&p.pending>y&&(r.adler=w(r.adler,p.pending_buf,p.pending-y,y)),0===_&&(p.status=O)}else p.status=O;if(p.status===O&&(p.gzhead.hcrc?(p.pending+2>p.pending_buf_size&&flush_pending(r),p.pending+2<=p.pending_buf_size&&(put_byte(p,255&r.adler),put_byte(p,r.adler>>8&255),r.adler=0,p.status=I)):p.status=I),0!==p.pending){if(flush_pending(r),0===r.avail_out)return p.last_flush=-1,0}else if(0===r.avail_in&&rank(i)<=rank(o)&&4!==i)return err(r,-5);if(p.status===B&&0!==r.avail_in)return err(r,-5);if(0!==r.avail_in||0!==p.lookahead||0!==i&&p.status!==B){var R=2===p.strategy?function deflate_huff(r,i){for(var o;;){if(0===r.lookahead&&(fill_window(r),0===r.lookahead)){if(0===i)return 1;break}if(r.match_length=0,o=g._tr_tally(r,0,r.window[r.strstart]),r.lookahead--,r.strstart++,o&&(flush_block_only(r,!1),0===r.strm.avail_out))return 1}return r.insert=0,4===i?(flush_block_only(r,!0),0===r.strm.avail_out?3:4):r.last_lit&&(flush_block_only(r,!1),0===r.strm.avail_out)?1:2}(p,i):3===p.strategy?function deflate_rle(r,i){for(var o,u,p,y,w=r.window;;){if(r.lookahead<=k){if(fill_window(r),r.lookahead<=k&&0===i)return 1;if(0===r.lookahead)break}if(r.match_length=0,r.lookahead>=3&&r.strstart>0&&(u=w[p=r.strstart-1])===w[++p]&&u===w[++p]&&u===w[++p]){y=r.strstart+k;do{}while(u===w[++p]&&u===w[++p]&&u===w[++p]&&u===w[++p]&&u===w[++p]&&u===w[++p]&&u===w[++p]&&u===w[++p]&&p<y);r.match_length=k-(y-p),r.match_length>r.lookahead&&(r.match_length=r.lookahead)}if(r.match_length>=3?(o=g._tr_tally(r,1,r.match_length-3),r.lookahead-=r.match_length,r.strstart+=r.match_length,r.match_length=0):(o=g._tr_tally(r,0,r.window[r.strstart]),r.lookahead--,r.strstart++),o&&(flush_block_only(r,!1),0===r.strm.avail_out))return 1}return r.insert=0,4===i?(flush_block_only(r,!0),0===r.strm.avail_out?3:4):r.last_lit&&(flush_block_only(r,!1),0===r.strm.avail_out)?1:2}(p,i):u[p.level].func(p,i);if(3!==R&&4!==R||(p.status=B),1===R||3===R)return 0===r.avail_out&&(p.last_flush=-1),0;if(2===R&&(1===i?g._tr_align(p):5!==i&&(g._tr_stored_block(p,0,0,!1),3===i&&(zero(p.head),0===p.lookahead&&(p.strstart=0,p.block_start=0,p.insert=0))),flush_pending(r),0===r.avail_out))return p.last_flush=-1,0}return 4!==i?0:p.wrap<=0?1:(2===p.wrap?(put_byte(p,255&r.adler),put_byte(p,r.adler>>8&255),put_byte(p,r.adler>>16&255),put_byte(p,r.adler>>24&255),put_byte(p,255&r.total_in),put_byte(p,r.total_in>>8&255),put_byte(p,r.total_in>>16&255),put_byte(p,r.total_in>>24&255)):(putShortMSB(p,r.adler>>>16),putShortMSB(p,65535&r.adler)),flush_pending(r),p.wrap>0&&(p.wrap=-p.wrap),0!==p.pending?0:1)},i.deflateEnd=function deflateEnd(r){var i;return r&&r.state?42!==(i=r.state.status)&&69!==i&&73!==i&&91!==i&&i!==O&&i!==I&&i!==B?err(r,x):(r.state=null,i===I?err(r,-3):0):x},i.deflateSetDictionary=function deflateSetDictionary(r,i){var o,u,g,w,_,k,P,O,I=i.length;if(!r||!r.state)return x;if(2===(w=(o=r.state).wrap)||1===w&&42!==o.status||o.lookahead)return x;for(1===w&&(r.adler=y(r.adler,i,I,0)),o.wrap=0,I>=o.w_size&&(0===w&&(zero(o.head),o.strstart=0,o.block_start=0,o.insert=0),O=new p.Buf8(o.w_size),p.arraySet(O,i,I-o.w_size,o.w_size,0),i=O,I=o.w_size),_=r.avail_in,k=r.next_in,P=r.input,r.avail_in=I,r.next_in=0,r.input=i,fill_window(o);o.lookahead>=3;){u=o.strstart,g=o.lookahead-2;do{o.ins_h=(o.ins_h<<o.hash_shift^o.window[u+3-1])&o.hash_mask,o.prev[u&o.w_mask]=o.head[o.ins_h],o.head[o.ins_h]=u,u++}while(--g);o.strstart=u,o.lookahead=2,fill_window(o)}return o.strstart+=o.lookahead,o.block_start=o.strstart,o.insert=o.lookahead,o.lookahead=0,o.match_length=o.prev_length=2,o.match_available=0,r.next_in=k,r.input=P,r.avail_in=_,o.wrap=w,0},i.deflateInfo="pako deflate (from Nodeca project)"},4264:function(r){"use strict";r.exports=function inflate_fast(r,i){var o,u,p,g,y,w,_,x,k,P,O,I,B,R,D,N,W,U,j,G,X,K,Y,J,$;o=r.state,u=r.next_in,J=r.input,p=u+(r.avail_in-5),g=r.next_out,$=r.output,y=g-(i-r.avail_out),w=g+(r.avail_out-257),_=o.dmax,x=o.wsize,k=o.whave,P=o.wnext,O=o.window,I=o.hold,B=o.bits,R=o.lencode,D=o.distcode,N=(1<<o.lenbits)-1,W=(1<<o.distbits)-1;e:do{B<15&&(I+=J[u++]<<B,B+=8,I+=J[u++]<<B,B+=8),U=R[I&N];t:for(;;){if(I>>>=j=U>>>24,B-=j,0===(j=U>>>16&255))$[g++]=65535&U;else{if(!(16&j)){if(0==(64&j)){U=R[(65535&U)+(I&(1<<j)-1)];continue t}if(32&j){o.mode=12;break e}r.msg="invalid literal/length code",o.mode=30;break e}G=65535&U,(j&=15)&&(B<j&&(I+=J[u++]<<B,B+=8),G+=I&(1<<j)-1,I>>>=j,B-=j),B<15&&(I+=J[u++]<<B,B+=8,I+=J[u++]<<B,B+=8),U=D[I&W];r:for(;;){if(I>>>=j=U>>>24,B-=j,!(16&(j=U>>>16&255))){if(0==(64&j)){U=D[(65535&U)+(I&(1<<j)-1)];continue r}r.msg="invalid distance code",o.mode=30;break e}if(X=65535&U,B<(j&=15)&&(I+=J[u++]<<B,(B+=8)<j&&(I+=J[u++]<<B,B+=8)),(X+=I&(1<<j)-1)>_){r.msg="invalid distance too far back",o.mode=30;break e}if(I>>>=j,B-=j,X>(j=g-y)){if((j=X-j)>k&&o.sane){r.msg="invalid distance too far back",o.mode=30;break e}if(K=0,Y=O,0===P){if(K+=x-j,j<G){G-=j;do{$[g++]=O[K++]}while(--j);K=g-X,Y=$}}else if(P<j){if(K+=x+P-j,(j-=P)<G){G-=j;do{$[g++]=O[K++]}while(--j);if(K=0,P<G){G-=j=P;do{$[g++]=O[K++]}while(--j);K=g-X,Y=$}}}else if(K+=P-j,j<G){G-=j;do{$[g++]=O[K++]}while(--j);K=g-X,Y=$}for(;G>2;)$[g++]=Y[K++],$[g++]=Y[K++],$[g++]=Y[K++],G-=3;G&&($[g++]=Y[K++],G>1&&($[g++]=Y[K++]))}else{K=g-X;do{$[g++]=$[K++],$[g++]=$[K++],$[g++]=$[K++],G-=3}while(G>2);G&&($[g++]=$[K++],G>1&&($[g++]=$[K++]))}break}}break}}while(u<p&&g<w);u-=G=B>>3,I&=(1<<(B-=G<<3))-1,r.next_in=u,r.next_out=g,r.avail_in=u<p?p-u+5:5-(u-p),r.avail_out=g<w?w-g+257:257-(g-w),o.hold=I,o.bits=B}},7948:function(r,i,o){"use strict";var u=o(4236),p=o(6069),g=o(2869),y=o(4264),w=o(9241),_=-2,x=12,k=30;function zswap32(r){return(r>>>24&255)+(r>>>8&65280)+((65280&r)<<8)+((255&r)<<24)}function InflateState(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function inflateResetKeep(r){var i;return r&&r.state?(i=r.state,r.total_in=r.total_out=i.total=0,r.msg="",i.wrap&&(r.adler=1&i.wrap),i.mode=1,i.last=0,i.havedict=0,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new u.Buf32(852),i.distcode=i.distdyn=new u.Buf32(592),i.sane=1,i.back=-1,0):_}function inflateReset(r){var i;return r&&r.state?((i=r.state).wsize=0,i.whave=0,i.wnext=0,inflateResetKeep(r)):_}function inflateReset2(r,i){var o,u;return r&&r.state?(u=r.state,i<0?(o=0,i=-i):(o=1+(i>>4),i<48&&(i&=15)),i&&(i<8||i>15)?_:(null!==u.window&&u.wbits!==i&&(u.window=null),u.wrap=o,u.wbits=i,inflateReset(r))):_}function inflateInit2(r,i){var o,u;return r?(u=new InflateState,r.state=u,u.window=null,0!==(o=inflateReset2(r,i))&&(r.state=null),o):_}var P,O,I=!0;function fixedtables(r){if(I){var i;for(P=new u.Buf32(512),O=new u.Buf32(32),i=0;i<144;)r.lens[i++]=8;for(;i<256;)r.lens[i++]=9;for(;i<280;)r.lens[i++]=7;for(;i<288;)r.lens[i++]=8;for(w(1,r.lens,0,288,P,0,r.work,{bits:9}),i=0;i<32;)r.lens[i++]=5;w(2,r.lens,0,32,O,0,r.work,{bits:5}),I=!1}r.lencode=P,r.lenbits=9,r.distcode=O,r.distbits=5}function updatewindow(r,i,o,p){var g,y=r.state;return null===y.window&&(y.wsize=1<<y.wbits,y.wnext=0,y.whave=0,y.window=new u.Buf8(y.wsize)),p>=y.wsize?(u.arraySet(y.window,i,o-y.wsize,y.wsize,0),y.wnext=0,y.whave=y.wsize):((g=y.wsize-y.wnext)>p&&(g=p),u.arraySet(y.window,i,o-p,g,y.wnext),(p-=g)?(u.arraySet(y.window,i,o-p,p,0),y.wnext=p,y.whave=y.wsize):(y.wnext+=g,y.wnext===y.wsize&&(y.wnext=0),y.whave<y.wsize&&(y.whave+=g))),0}i.inflateReset=inflateReset,i.inflateReset2=inflateReset2,i.inflateResetKeep=inflateResetKeep,i.inflateInit=function inflateInit(r){return inflateInit2(r,15)},i.inflateInit2=inflateInit2,i.inflate=function inflate(r,i){var o,P,O,I,B,R,D,N,W,U,j,G,X,K,Y,J,$,ee,te,re,ne,ie,oe,ae,se=0,ce=new u.Buf8(4),le=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!r||!r.state||!r.output||!r.input&&0!==r.avail_in)return _;(o=r.state).mode===x&&(o.mode=13),B=r.next_out,O=r.output,D=r.avail_out,I=r.next_in,P=r.input,R=r.avail_in,N=o.hold,W=o.bits,U=R,j=D,ie=0;e:for(;;)switch(o.mode){case 1:if(0===o.wrap){o.mode=13;break}for(;W<16;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(2&o.wrap&&35615===N){o.check=0,ce[0]=255&N,ce[1]=N>>>8&255,o.check=g(o.check,ce,2,0),N=0,W=0,o.mode=2;break}if(o.flags=0,o.head&&(o.head.done=!1),!(1&o.wrap)||(((255&N)<<8)+(N>>8))%31){r.msg="incorrect header check",o.mode=k;break}if(8!=(15&N)){r.msg="unknown compression method",o.mode=k;break}if(W-=4,ne=8+(15&(N>>>=4)),0===o.wbits)o.wbits=ne;else if(ne>o.wbits){r.msg="invalid window size",o.mode=k;break}o.dmax=1<<ne,r.adler=o.check=1,o.mode=512&N?10:x,N=0,W=0;break;case 2:for(;W<16;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(o.flags=N,8!=(255&o.flags)){r.msg="unknown compression method",o.mode=k;break}if(57344&o.flags){r.msg="unknown header flags set",o.mode=k;break}o.head&&(o.head.text=N>>8&1),512&o.flags&&(ce[0]=255&N,ce[1]=N>>>8&255,o.check=g(o.check,ce,2,0)),N=0,W=0,o.mode=3;case 3:for(;W<32;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}o.head&&(o.head.time=N),512&o.flags&&(ce[0]=255&N,ce[1]=N>>>8&255,ce[2]=N>>>16&255,ce[3]=N>>>24&255,o.check=g(o.check,ce,4,0)),N=0,W=0,o.mode=4;case 4:for(;W<16;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}o.head&&(o.head.xflags=255&N,o.head.os=N>>8),512&o.flags&&(ce[0]=255&N,ce[1]=N>>>8&255,o.check=g(o.check,ce,2,0)),N=0,W=0,o.mode=5;case 5:if(1024&o.flags){for(;W<16;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}o.length=N,o.head&&(o.head.extra_len=N),512&o.flags&&(ce[0]=255&N,ce[1]=N>>>8&255,o.check=g(o.check,ce,2,0)),N=0,W=0}else o.head&&(o.head.extra=null);o.mode=6;case 6:if(1024&o.flags&&((G=o.length)>R&&(G=R),G&&(o.head&&(ne=o.head.extra_len-o.length,o.head.extra||(o.head.extra=new Array(o.head.extra_len)),u.arraySet(o.head.extra,P,I,G,ne)),512&o.flags&&(o.check=g(o.check,P,G,I)),R-=G,I+=G,o.length-=G),o.length))break e;o.length=0,o.mode=7;case 7:if(2048&o.flags){if(0===R)break e;G=0;do{ne=P[I+G++],o.head&&ne&&o.length<65536&&(o.head.name+=String.fromCharCode(ne))}while(ne&&G<R);if(512&o.flags&&(o.check=g(o.check,P,G,I)),R-=G,I+=G,ne)break e}else o.head&&(o.head.name=null);o.length=0,o.mode=8;case 8:if(4096&o.flags){if(0===R)break e;G=0;do{ne=P[I+G++],o.head&&ne&&o.length<65536&&(o.head.comment+=String.fromCharCode(ne))}while(ne&&G<R);if(512&o.flags&&(o.check=g(o.check,P,G,I)),R-=G,I+=G,ne)break e}else o.head&&(o.head.comment=null);o.mode=9;case 9:if(512&o.flags){for(;W<16;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(N!==(65535&o.check)){r.msg="header crc mismatch",o.mode=k;break}N=0,W=0}o.head&&(o.head.hcrc=o.flags>>9&1,o.head.done=!0),r.adler=o.check=0,o.mode=x;break;case 10:for(;W<32;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}r.adler=o.check=zswap32(N),N=0,W=0,o.mode=11;case 11:if(0===o.havedict)return r.next_out=B,r.avail_out=D,r.next_in=I,r.avail_in=R,o.hold=N,o.bits=W,2;r.adler=o.check=1,o.mode=x;case x:if(5===i||6===i)break e;case 13:if(o.last){N>>>=7&W,W-=7&W,o.mode=27;break}for(;W<3;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}switch(o.last=1&N,W-=1,3&(N>>>=1)){case 0:o.mode=14;break;case 1:if(fixedtables(o),o.mode=20,6===i){N>>>=2,W-=2;break e}break;case 2:o.mode=17;break;case 3:r.msg="invalid block type",o.mode=k}N>>>=2,W-=2;break;case 14:for(N>>>=7&W,W-=7&W;W<32;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if((65535&N)!=(N>>>16^65535)){r.msg="invalid stored block lengths",o.mode=k;break}if(o.length=65535&N,N=0,W=0,o.mode=15,6===i)break e;case 15:o.mode=16;case 16:if(G=o.length){if(G>R&&(G=R),G>D&&(G=D),0===G)break e;u.arraySet(O,P,I,G,B),R-=G,I+=G,D-=G,B+=G,o.length-=G;break}o.mode=x;break;case 17:for(;W<14;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(o.nlen=257+(31&N),N>>>=5,W-=5,o.ndist=1+(31&N),N>>>=5,W-=5,o.ncode=4+(15&N),N>>>=4,W-=4,o.nlen>286||o.ndist>30){r.msg="too many length or distance symbols",o.mode=k;break}o.have=0,o.mode=18;case 18:for(;o.have<o.ncode;){for(;W<3;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}o.lens[le[o.have++]]=7&N,N>>>=3,W-=3}for(;o.have<19;)o.lens[le[o.have++]]=0;if(o.lencode=o.lendyn,o.lenbits=7,oe={bits:o.lenbits},ie=w(0,o.lens,0,19,o.lencode,0,o.work,oe),o.lenbits=oe.bits,ie){r.msg="invalid code lengths set",o.mode=k;break}o.have=0,o.mode=19;case 19:for(;o.have<o.nlen+o.ndist;){for(;J=(se=o.lencode[N&(1<<o.lenbits)-1])>>>16&255,$=65535&se,!((Y=se>>>24)<=W);){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if($<16)N>>>=Y,W-=Y,o.lens[o.have++]=$;else{if(16===$){for(ae=Y+2;W<ae;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(N>>>=Y,W-=Y,0===o.have){r.msg="invalid bit length repeat",o.mode=k;break}ne=o.lens[o.have-1],G=3+(3&N),N>>>=2,W-=2}else if(17===$){for(ae=Y+3;W<ae;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}W-=Y,ne=0,G=3+(7&(N>>>=Y)),N>>>=3,W-=3}else{for(ae=Y+7;W<ae;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}W-=Y,ne=0,G=11+(127&(N>>>=Y)),N>>>=7,W-=7}if(o.have+G>o.nlen+o.ndist){r.msg="invalid bit length repeat",o.mode=k;break}for(;G--;)o.lens[o.have++]=ne}}if(o.mode===k)break;if(0===o.lens[256]){r.msg="invalid code -- missing end-of-block",o.mode=k;break}if(o.lenbits=9,oe={bits:o.lenbits},ie=w(1,o.lens,0,o.nlen,o.lencode,0,o.work,oe),o.lenbits=oe.bits,ie){r.msg="invalid literal/lengths set",o.mode=k;break}if(o.distbits=6,o.distcode=o.distdyn,oe={bits:o.distbits},ie=w(2,o.lens,o.nlen,o.ndist,o.distcode,0,o.work,oe),o.distbits=oe.bits,ie){r.msg="invalid distances set",o.mode=k;break}if(o.mode=20,6===i)break e;case 20:o.mode=21;case 21:if(R>=6&&D>=258){r.next_out=B,r.avail_out=D,r.next_in=I,r.avail_in=R,o.hold=N,o.bits=W,y(r,j),B=r.next_out,O=r.output,D=r.avail_out,I=r.next_in,P=r.input,R=r.avail_in,N=o.hold,W=o.bits,o.mode===x&&(o.back=-1);break}for(o.back=0;J=(se=o.lencode[N&(1<<o.lenbits)-1])>>>16&255,$=65535&se,!((Y=se>>>24)<=W);){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(J&&0==(240&J)){for(ee=Y,te=J,re=$;J=(se=o.lencode[re+((N&(1<<ee+te)-1)>>ee)])>>>16&255,$=65535&se,!(ee+(Y=se>>>24)<=W);){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}N>>>=ee,W-=ee,o.back+=ee}if(N>>>=Y,W-=Y,o.back+=Y,o.length=$,0===J){o.mode=26;break}if(32&J){o.back=-1,o.mode=x;break}if(64&J){r.msg="invalid literal/length code",o.mode=k;break}o.extra=15&J,o.mode=22;case 22:if(o.extra){for(ae=o.extra;W<ae;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}o.length+=N&(1<<o.extra)-1,N>>>=o.extra,W-=o.extra,o.back+=o.extra}o.was=o.length,o.mode=23;case 23:for(;J=(se=o.distcode[N&(1<<o.distbits)-1])>>>16&255,$=65535&se,!((Y=se>>>24)<=W);){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(0==(240&J)){for(ee=Y,te=J,re=$;J=(se=o.distcode[re+((N&(1<<ee+te)-1)>>ee)])>>>16&255,$=65535&se,!(ee+(Y=se>>>24)<=W);){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}N>>>=ee,W-=ee,o.back+=ee}if(N>>>=Y,W-=Y,o.back+=Y,64&J){r.msg="invalid distance code",o.mode=k;break}o.offset=$,o.extra=15&J,o.mode=24;case 24:if(o.extra){for(ae=o.extra;W<ae;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}o.offset+=N&(1<<o.extra)-1,N>>>=o.extra,W-=o.extra,o.back+=o.extra}if(o.offset>o.dmax){r.msg="invalid distance too far back",o.mode=k;break}o.mode=25;case 25:if(0===D)break e;if(G=j-D,o.offset>G){if((G=o.offset-G)>o.whave&&o.sane){r.msg="invalid distance too far back",o.mode=k;break}G>o.wnext?(G-=o.wnext,X=o.wsize-G):X=o.wnext-G,G>o.length&&(G=o.length),K=o.window}else K=O,X=B-o.offset,G=o.length;G>D&&(G=D),D-=G,o.length-=G;do{O[B++]=K[X++]}while(--G);0===o.length&&(o.mode=21);break;case 26:if(0===D)break e;O[B++]=o.length,D--,o.mode=21;break;case 27:if(o.wrap){for(;W<32;){if(0===R)break e;R--,N|=P[I++]<<W,W+=8}if(j-=D,r.total_out+=j,o.total+=j,j&&(r.adler=o.check=o.flags?g(o.check,O,j,B-j):p(o.check,O,j,B-j)),j=D,(o.flags?N:zswap32(N))!==o.check){r.msg="incorrect data check",o.mode=k;break}N=0,W=0}o.mode=28;case 28:if(o.wrap&&o.flags){for(;W<32;){if(0===R)break e;R--,N+=P[I++]<<W,W+=8}if(N!==(4294967295&o.total)){r.msg="incorrect length check",o.mode=k;break}N=0,W=0}o.mode=29;case 29:ie=1;break e;case k:ie=-3;break e;case 31:return-4;default:return _}return r.next_out=B,r.avail_out=D,r.next_in=I,r.avail_in=R,o.hold=N,o.bits=W,(o.wsize||j!==r.avail_out&&o.mode<k&&(o.mode<27||4!==i))&&updatewindow(r,r.output,r.next_out,j-r.avail_out)?(o.mode=31,-4):(U-=r.avail_in,j-=r.avail_out,r.total_in+=U,r.total_out+=j,o.total+=j,o.wrap&&j&&(r.adler=o.check=o.flags?g(o.check,O,j,r.next_out-j):p(o.check,O,j,r.next_out-j)),r.data_type=o.bits+(o.last?64:0)+(o.mode===x?128:0)+(20===o.mode||15===o.mode?256:0),(0===U&&0===j||4===i)&&0===ie&&(ie=-5),ie)},i.inflateEnd=function inflateEnd(r){if(!r||!r.state)return _;var i=r.state;return i.window&&(i.window=null),r.state=null,0},i.inflateGetHeader=function inflateGetHeader(r,i){var o;return r&&r.state?0==(2&(o=r.state).wrap)?_:(o.head=i,i.done=!1,0):_},i.inflateSetDictionary=function inflateSetDictionary(r,i){var o,u=i.length;return r&&r.state?0!==(o=r.state).wrap&&11!==o.mode?_:11===o.mode&&p(1,i,u,0)!==o.check?-3:updatewindow(r,i,u,u)?(o.mode=31,-4):(o.havedict=1,0):_},i.inflateInfo="pako inflate (from Nodeca project)"},9241:function(r,i,o){"use strict";var u=o(4236),p=15,g=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],y=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],w=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],_=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];r.exports=function inflate_table(r,i,o,x,k,P,O,I){var B,R,D,N,W,U,j,G,X,K=I.bits,Y=0,J=0,$=0,ee=0,te=0,re=0,ne=0,ie=0,oe=0,ae=0,se=null,ce=0,le=new u.Buf16(16),ue=new u.Buf16(16),fe=null,he=0;for(Y=0;Y<=p;Y++)le[Y]=0;for(J=0;J<x;J++)le[i[o+J]]++;for(te=K,ee=p;ee>=1&&0===le[ee];ee--);if(te>ee&&(te=ee),0===ee)return k[P++]=20971520,k[P++]=20971520,I.bits=1,0;for($=1;$<ee&&0===le[$];$++);for(te<$&&(te=$),ie=1,Y=1;Y<=p;Y++)if(ie<<=1,(ie-=le[Y])<0)return-1;if(ie>0&&(0===r||1!==ee))return-1;for(ue[1]=0,Y=1;Y<p;Y++)ue[Y+1]=ue[Y]+le[Y];for(J=0;J<x;J++)0!==i[o+J]&&(O[ue[i[o+J]]++]=J);if(0===r?(se=fe=O,U=19):1===r?(se=g,ce-=257,fe=y,he-=257,U=256):(se=w,fe=_,U=-1),ae=0,J=0,Y=$,W=P,re=te,ne=0,D=-1,N=(oe=1<<te)-1,1===r&&oe>852||2===r&&oe>592)return 1;for(;;){j=Y-ne,O[J]<U?(G=0,X=O[J]):O[J]>U?(G=fe[he+O[J]],X=se[ce+O[J]]):(G=96,X=0),B=1<<Y-ne,$=R=1<<re;do{k[W+(ae>>ne)+(R-=B)]=j<<24|G<<16|X|0}while(0!==R);for(B=1<<Y-1;ae&B;)B>>=1;if(0!==B?(ae&=B-1,ae+=B):ae=0,J++,0==--le[Y]){if(Y===ee)break;Y=i[o+O[J]]}if(Y>te&&(ae&N)!==D){for(0===ne&&(ne=te),W+=$,ie=1<<(re=Y-ne);re+ne<ee&&!((ie-=le[re+ne])<=0);)re++,ie<<=1;if(oe+=1<<re,1===r&&oe>852||2===r&&oe>592)return 1;k[D=ae&N]=te<<24|re<<16|W-P|0}}return 0!==ae&&(k[W+ae]=Y-ne<<24|64<<16|0),I.bits=te,0}},8898:function(r){"use strict";r.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},342:function(r,i,o){"use strict";var u=o(4236);function zero(r){for(var i=r.length;--i>=0;)r[i]=0}var p=256,g=286,y=30,w=15,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],x=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],k=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],P=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],O=new Array(576);zero(O);var I=new Array(60);zero(I);var B=new Array(512);zero(B);var R=new Array(256);zero(R);var D=new Array(29);zero(D);var N,W,U,j=new Array(y);function StaticTreeDesc(r,i,o,u,p){this.static_tree=r,this.extra_bits=i,this.extra_base=o,this.elems=u,this.max_length=p,this.has_stree=r&&r.length}function TreeDesc(r,i){this.dyn_tree=r,this.max_code=0,this.stat_desc=i}function d_code(r){return r<256?B[r]:B[256+(r>>>7)]}function put_short(r,i){r.pending_buf[r.pending++]=255&i,r.pending_buf[r.pending++]=i>>>8&255}function send_bits(r,i,o){r.bi_valid>16-o?(r.bi_buf|=i<<r.bi_valid&65535,put_short(r,r.bi_buf),r.bi_buf=i>>16-r.bi_valid,r.bi_valid+=o-16):(r.bi_buf|=i<<r.bi_valid&65535,r.bi_valid+=o)}function send_code(r,i,o){send_bits(r,o[2*i],o[2*i+1])}function bi_reverse(r,i){var o=0;do{o|=1&r,r>>>=1,o<<=1}while(--i>0);return o>>>1}function gen_codes(r,i,o){var u,p,g=new Array(16),y=0;for(u=1;u<=w;u++)g[u]=y=y+o[u-1]<<1;for(p=0;p<=i;p++){var _=r[2*p+1];0!==_&&(r[2*p]=bi_reverse(g[_]++,_))}}function init_block(r){var i;for(i=0;i<g;i++)r.dyn_ltree[2*i]=0;for(i=0;i<y;i++)r.dyn_dtree[2*i]=0;for(i=0;i<19;i++)r.bl_tree[2*i]=0;r.dyn_ltree[512]=1,r.opt_len=r.static_len=0,r.last_lit=r.matches=0}function bi_windup(r){r.bi_valid>8?put_short(r,r.bi_buf):r.bi_valid>0&&(r.pending_buf[r.pending++]=r.bi_buf),r.bi_buf=0,r.bi_valid=0}function smaller(r,i,o,u){var p=2*i,g=2*o;return r[p]<r[g]||r[p]===r[g]&&u[i]<=u[o]}function pqdownheap(r,i,o){for(var u=r.heap[o],p=o<<1;p<=r.heap_len&&(p<r.heap_len&&smaller(i,r.heap[p+1],r.heap[p],r.depth)&&p++,!smaller(i,u,r.heap[p],r.depth));)r.heap[o]=r.heap[p],o=p,p<<=1;r.heap[o]=u}function compress_block(r,i,o){var u,g,y,w,k=0;if(0!==r.last_lit)do{u=r.pending_buf[r.d_buf+2*k]<<8|r.pending_buf[r.d_buf+2*k+1],g=r.pending_buf[r.l_buf+k],k++,0===u?send_code(r,g,i):(send_code(r,(y=R[g])+p+1,i),0!==(w=_[y])&&send_bits(r,g-=D[y],w),send_code(r,y=d_code(--u),o),0!==(w=x[y])&&send_bits(r,u-=j[y],w))}while(k<r.last_lit);send_code(r,256,i)}function build_tree(r,i){var o,u,p,g=i.dyn_tree,y=i.stat_desc.static_tree,_=i.stat_desc.has_stree,x=i.stat_desc.elems,k=-1;for(r.heap_len=0,r.heap_max=573,o=0;o<x;o++)0!==g[2*o]?(r.heap[++r.heap_len]=k=o,r.depth[o]=0):g[2*o+1]=0;for(;r.heap_len<2;)g[2*(p=r.heap[++r.heap_len]=k<2?++k:0)]=1,r.depth[p]=0,r.opt_len--,_&&(r.static_len-=y[2*p+1]);for(i.max_code=k,o=r.heap_len>>1;o>=1;o--)pqdownheap(r,g,o);p=x;do{o=r.heap[1],r.heap[1]=r.heap[r.heap_len--],pqdownheap(r,g,1),u=r.heap[1],r.heap[--r.heap_max]=o,r.heap[--r.heap_max]=u,g[2*p]=g[2*o]+g[2*u],r.depth[p]=(r.depth[o]>=r.depth[u]?r.depth[o]:r.depth[u])+1,g[2*o+1]=g[2*u+1]=p,r.heap[1]=p++,pqdownheap(r,g,1)}while(r.heap_len>=2);r.heap[--r.heap_max]=r.heap[1],function gen_bitlen(r,i){var o,u,p,g,y,_,x=i.dyn_tree,k=i.max_code,P=i.stat_desc.static_tree,O=i.stat_desc.has_stree,I=i.stat_desc.extra_bits,B=i.stat_desc.extra_base,R=i.stat_desc.max_length,D=0;for(g=0;g<=w;g++)r.bl_count[g]=0;for(x[2*r.heap[r.heap_max]+1]=0,o=r.heap_max+1;o<573;o++)(g=x[2*x[2*(u=r.heap[o])+1]+1]+1)>R&&(g=R,D++),x[2*u+1]=g,u>k||(r.bl_count[g]++,y=0,u>=B&&(y=I[u-B]),_=x[2*u],r.opt_len+=_*(g+y),O&&(r.static_len+=_*(P[2*u+1]+y)));if(0!==D){do{for(g=R-1;0===r.bl_count[g];)g--;r.bl_count[g]--,r.bl_count[g+1]+=2,r.bl_count[R]--,D-=2}while(D>0);for(g=R;0!==g;g--)for(u=r.bl_count[g];0!==u;)(p=r.heap[--o])>k||(x[2*p+1]!==g&&(r.opt_len+=(g-x[2*p+1])*x[2*p],x[2*p+1]=g),u--)}}(r,i),gen_codes(g,k,r.bl_count)}function scan_tree(r,i,o){var u,p,g=-1,y=i[1],w=0,_=7,x=4;for(0===y&&(_=138,x=3),i[2*(o+1)+1]=65535,u=0;u<=o;u++)p=y,y=i[2*(u+1)+1],++w<_&&p===y||(w<x?r.bl_tree[2*p]+=w:0!==p?(p!==g&&r.bl_tree[2*p]++,r.bl_tree[32]++):w<=10?r.bl_tree[34]++:r.bl_tree[36]++,w=0,g=p,0===y?(_=138,x=3):p===y?(_=6,x=3):(_=7,x=4))}function send_tree(r,i,o){var u,p,g=-1,y=i[1],w=0,_=7,x=4;for(0===y&&(_=138,x=3),u=0;u<=o;u++)if(p=y,y=i[2*(u+1)+1],!(++w<_&&p===y)){if(w<x)do{send_code(r,p,r.bl_tree)}while(0!=--w);else 0!==p?(p!==g&&(send_code(r,p,r.bl_tree),w--),send_code(r,16,r.bl_tree),send_bits(r,w-3,2)):w<=10?(send_code(r,17,r.bl_tree),send_bits(r,w-3,3)):(send_code(r,18,r.bl_tree),send_bits(r,w-11,7));w=0,g=p,0===y?(_=138,x=3):p===y?(_=6,x=3):(_=7,x=4)}}zero(j);var G=!1;function _tr_stored_block(r,i,o,p){send_bits(r,0+(p?1:0),3),function copy_block(r,i,o,p){bi_windup(r),p&&(put_short(r,o),put_short(r,~o)),u.arraySet(r.pending_buf,r.window,i,o,r.pending),r.pending+=o}(r,i,o,!0)}i._tr_init=function _tr_init(r){G||(!function tr_static_init(){var r,i,o,u,p,P=new Array(16);for(o=0,u=0;u<28;u++)for(D[u]=o,r=0;r<1<<_[u];r++)R[o++]=u;for(R[o-1]=u,p=0,u=0;u<16;u++)for(j[u]=p,r=0;r<1<<x[u];r++)B[p++]=u;for(p>>=7;u<y;u++)for(j[u]=p<<7,r=0;r<1<<x[u]-7;r++)B[256+p++]=u;for(i=0;i<=w;i++)P[i]=0;for(r=0;r<=143;)O[2*r+1]=8,r++,P[8]++;for(;r<=255;)O[2*r+1]=9,r++,P[9]++;for(;r<=279;)O[2*r+1]=7,r++,P[7]++;for(;r<=287;)O[2*r+1]=8,r++,P[8]++;for(gen_codes(O,287,P),r=0;r<y;r++)I[2*r+1]=5,I[2*r]=bi_reverse(r,5);N=new StaticTreeDesc(O,_,257,g,w),W=new StaticTreeDesc(I,x,0,y,w),U=new StaticTreeDesc(new Array(0),k,0,19,7)}(),G=!0),r.l_desc=new TreeDesc(r.dyn_ltree,N),r.d_desc=new TreeDesc(r.dyn_dtree,W),r.bl_desc=new TreeDesc(r.bl_tree,U),r.bi_buf=0,r.bi_valid=0,init_block(r)},i._tr_stored_block=_tr_stored_block,i._tr_flush_block=function _tr_flush_block(r,i,o,u){var g,y,w=0;r.level>0?(2===r.strm.data_type&&(r.strm.data_type=function detect_data_type(r){var i,o=4093624447;for(i=0;i<=31;i++,o>>>=1)if(1&o&&0!==r.dyn_ltree[2*i])return 0;if(0!==r.dyn_ltree[18]||0!==r.dyn_ltree[20]||0!==r.dyn_ltree[26])return 1;for(i=32;i<p;i++)if(0!==r.dyn_ltree[2*i])return 1;return 0}(r)),build_tree(r,r.l_desc),build_tree(r,r.d_desc),w=function build_bl_tree(r){var i;for(scan_tree(r,r.dyn_ltree,r.l_desc.max_code),scan_tree(r,r.dyn_dtree,r.d_desc.max_code),build_tree(r,r.bl_desc),i=18;i>=3&&0===r.bl_tree[2*P[i]+1];i--);return r.opt_len+=3*(i+1)+5+5+4,i}(r),g=r.opt_len+3+7>>>3,(y=r.static_len+3+7>>>3)<=g&&(g=y)):g=y=o+5,o+4<=g&&-1!==i?_tr_stored_block(r,i,o,u):4===r.strategy||y===g?(send_bits(r,2+(u?1:0),3),compress_block(r,O,I)):(send_bits(r,4+(u?1:0),3),function send_all_trees(r,i,o,u){var p;for(send_bits(r,i-257,5),send_bits(r,o-1,5),send_bits(r,u-4,4),p=0;p<u;p++)send_bits(r,r.bl_tree[2*P[p]+1],3);send_tree(r,r.dyn_ltree,i-1),send_tree(r,r.dyn_dtree,o-1)}(r,r.l_desc.max_code+1,r.d_desc.max_code+1,w+1),compress_block(r,r.dyn_ltree,r.dyn_dtree)),init_block(r),u&&bi_windup(r)},i._tr_tally=function _tr_tally(r,i,o){return r.pending_buf[r.d_buf+2*r.last_lit]=i>>>8&255,r.pending_buf[r.d_buf+2*r.last_lit+1]=255&i,r.pending_buf[r.l_buf+r.last_lit]=255&o,r.last_lit++,0===i?r.dyn_ltree[2*o]++:(r.matches++,i--,r.dyn_ltree[2*(R[o]+p+1)]++,r.dyn_dtree[2*d_code(i)]++),r.last_lit===r.lit_bufsize-1},i._tr_align=function _tr_align(r){send_bits(r,2,3),send_code(r,256,O),function bi_flush(r){16===r.bi_valid?(put_short(r,r.bi_buf),r.bi_buf=0,r.bi_valid=0):r.bi_valid>=8&&(r.pending_buf[r.pending++]=255&r.bi_buf,r.bi_buf>>=8,r.bi_valid-=8)}(r)}},2292:function(r){"use strict";r.exports=function ZStream(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},4155:function(r){var i,o,u=r.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(r){if(i===setTimeout)return setTimeout(r,0);if((i===defaultSetTimout||!i)&&setTimeout)return i=setTimeout,setTimeout(r,0);try{return i(r,0)}catch(o){try{return i.call(null,r,0)}catch(o){return i.call(this,r,0)}}}!function(){try{i="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(r){i=defaultSetTimout}try{o="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(r){o=defaultClearTimeout}}();var p,g=[],y=!1,w=-1;function cleanUpNextTick(){y&&p&&(y=!1,p.length?g=p.concat(g):w=-1,g.length&&drainQueue())}function drainQueue(){if(!y){var r=runTimeout(cleanUpNextTick);y=!0;for(var i=g.length;i;){for(p=g,g=[];++w<i;)p&&p[w].run();w=-1,i=g.length}p=null,y=!1,function runClearTimeout(r){if(o===clearTimeout)return clearTimeout(r);if((o===defaultClearTimeout||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(r);try{return o(r)}catch(i){try{return o.call(null,r)}catch(i){return o.call(this,r)}}}(r)}}function Item(r,i){this.fun=r,this.array=i}function noop(){}u.nextTick=function(r){var i=new Array(arguments.length-1);if(arguments.length>1)for(var o=1;o<arguments.length;o++)i[o-1]=arguments[o];g.push(new Item(r,i)),1!==g.length||y||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=noop,u.addListener=noop,u.once=noop,u.off=noop,u.removeListener=noop,u.removeAllListeners=noop,u.emit=noop,u.prependListener=noop,u.prependOnceListener=noop,u.listeners=function(r){return[]},u.binding=function(r){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(r){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},3697:function(r,i,o){"use strict";var u=o(5972).functionsHaveConfigurableNames(),p=Object,g=TypeError;r.exports=function flags(){if(null!=this&&this!==p(this))throw new g("RegExp.prototype.flags getter called on non-object");var r="";return this.hasIndices&&(r+="d"),this.global&&(r+="g"),this.ignoreCase&&(r+="i"),this.multiline&&(r+="m"),this.dotAll&&(r+="s"),this.unicode&&(r+="u"),this.sticky&&(r+="y"),r},u&&Object.defineProperty&&Object.defineProperty(r.exports,"name",{value:"get flags"})},2847:function(r,i,o){"use strict";var u=o(4289),p=o(5559),g=o(3697),y=o(1721),w=o(2753),_=p(y());u(_,{getPolyfill:y,implementation:g,shim:w}),r.exports=_},1721:function(r,i,o){"use strict";var u=o(3697),p=o(4289).supportsDescriptors,g=Object.getOwnPropertyDescriptor;r.exports=function getPolyfill(){if(p&&"gim"===/a/gim.flags){var r=g(RegExp.prototype,"flags");if(r&&"function"==typeof r.get&&"boolean"==typeof RegExp.prototype.dotAll&&"boolean"==typeof RegExp.prototype.hasIndices){var i="",o={};if(Object.defineProperty(o,"hasIndices",{get:function(){i+="d"}}),Object.defineProperty(o,"sticky",{get:function(){i+="y"}}),"dy"===i)return r.get}}return u}},2753:function(r,i,o){"use strict";var u=o(4289).supportsDescriptors,p=o(1721),g=Object.getOwnPropertyDescriptor,y=Object.defineProperty,w=TypeError,_=Object.getPrototypeOf,x=/a/;r.exports=function shimFlags(){if(!u||!_)throw new w("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var r=p(),i=_(x),o=g(i,"flags");return o&&o.get===r||y(i,"flags",{configurable:!0,enumerable:!1,get:r}),r}},6099:function(r,i,o){var u=o(8823).Buffer;!function(r){r.parser=function(r,i){return new SAXParser(r,i)},r.SAXParser=SAXParser,r.SAXStream=SAXStream,r.createStream=function createStream(r,i){return new SAXStream(r,i)},r.MAX_BUFFER_LENGTH=65536;var i,p=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];function SAXParser(i,o){if(!(this instanceof SAXParser))return new SAXParser(i,o);var u=this;!function clearBuffers(r){for(var i=0,o=p.length;i<o;i++)r[p[i]]=""}(u),u.q=u.c="",u.bufferCheckPosition=r.MAX_BUFFER_LENGTH,u.opt=o||{},u.opt.lowercase=u.opt.lowercase||u.opt.lowercasetags,u.looseCase=u.opt.lowercase?"toLowerCase":"toUpperCase",u.tags=[],u.closed=u.closedRoot=u.sawRoot=!1,u.tag=u.error=null,u.strict=!!i,u.noscript=!(!i&&!u.opt.noscript),u.state=D.BEGIN,u.strictEntities=u.opt.strictEntities,u.ENTITIES=u.strictEntities?Object.create(r.XML_ENTITIES):Object.create(r.ENTITIES),u.attribList=[],u.opt.xmlns&&(u.ns=Object.create(_)),u.trackPosition=!1!==u.opt.position,u.trackPosition&&(u.position=u.line=u.column=0),emit(u,"onready")}r.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(r){function F(){}return F.prototype=r,new F}),Object.keys||(Object.keys=function(r){var i=[];for(var o in r)r.hasOwnProperty(o)&&i.push(o);return i}),SAXParser.prototype={end:function(){end(this)},write:function write(i){var o=this;if(this.error)throw this.error;if(o.closed)return error(o,"Cannot write after close. Assign an onready handler.");if(null===i)return end(o);"object"==typeof i&&(i=i.toString());var u=0,g="";for(;g=charAt(i,u++),o.c=g,g;)switch(o.trackPosition&&(o.position++,"\n"===g?(o.line++,o.column=0):o.column++),o.state){case D.BEGIN:if(o.state=D.BEGIN_WHITESPACE,"\ufeff"===g)continue;beginWhiteSpace(o,g);continue;case D.BEGIN_WHITESPACE:beginWhiteSpace(o,g);continue;case D.TEXT:if(o.sawRoot&&!o.closedRoot){for(var y=u-1;g&&"<"!==g&&"&"!==g;)(g=charAt(i,u++))&&o.trackPosition&&(o.position++,"\n"===g?(o.line++,o.column=0):o.column++);o.textNode+=i.substring(y,u-1)}"<"!==g||o.sawRoot&&o.closedRoot&&!o.strict?(isWhitespace(g)||o.sawRoot&&!o.closedRoot||strictFail(o,"Text data outside of root node."),"&"===g?o.state=D.TEXT_ENTITY:o.textNode+=g):(o.state=D.OPEN_WAKA,o.startTagPosition=o.position);continue;case D.SCRIPT:"<"===g?o.state=D.SCRIPT_ENDING:o.script+=g;continue;case D.SCRIPT_ENDING:"/"===g?o.state=D.CLOSE_TAG:(o.script+="<"+g,o.state=D.SCRIPT);continue;case D.OPEN_WAKA:if("!"===g)o.state=D.SGML_DECL,o.sgmlDecl="";else if(isWhitespace(g));else if(isMatch(x,g))o.state=D.OPEN_TAG,o.tagName=g;else if("/"===g)o.state=D.CLOSE_TAG,o.tagName="";else if("?"===g)o.state=D.PROC_INST,o.procInstName=o.procInstBody="";else{if(strictFail(o,"Unencoded <"),o.startTagPosition+1<o.position){var w=o.position-o.startTagPosition;g=new Array(w).join(" ")+g}o.textNode+="<"+g,o.state=D.TEXT}continue;case D.SGML_DECL:"[CDATA["===(o.sgmlDecl+g).toUpperCase()?(emitNode(o,"onopencdata"),o.state=D.CDATA,o.sgmlDecl="",o.cdata=""):o.sgmlDecl+g==="--"?(o.state=D.COMMENT,o.comment="",o.sgmlDecl=""):"DOCTYPE"===(o.sgmlDecl+g).toUpperCase()?(o.state=D.DOCTYPE,(o.doctype||o.sawRoot)&&strictFail(o,"Inappropriately located doctype declaration"),o.doctype="",o.sgmlDecl=""):">"===g?(emitNode(o,"onsgmldeclaration",o.sgmlDecl),o.sgmlDecl="",o.state=D.TEXT):isQuote(g)?(o.state=D.SGML_DECL_QUOTED,o.sgmlDecl+=g):o.sgmlDecl+=g;continue;case D.SGML_DECL_QUOTED:g===o.q&&(o.state=D.SGML_DECL,o.q=""),o.sgmlDecl+=g;continue;case D.DOCTYPE:">"===g?(o.state=D.TEXT,emitNode(o,"ondoctype",o.doctype),o.doctype=!0):(o.doctype+=g,"["===g?o.state=D.DOCTYPE_DTD:isQuote(g)&&(o.state=D.DOCTYPE_QUOTED,o.q=g));continue;case D.DOCTYPE_QUOTED:o.doctype+=g,g===o.q&&(o.q="",o.state=D.DOCTYPE);continue;case D.DOCTYPE_DTD:o.doctype+=g,"]"===g?o.state=D.DOCTYPE:isQuote(g)&&(o.state=D.DOCTYPE_DTD_QUOTED,o.q=g);continue;case D.DOCTYPE_DTD_QUOTED:o.doctype+=g,g===o.q&&(o.state=D.DOCTYPE_DTD,o.q="");continue;case D.COMMENT:"-"===g?o.state=D.COMMENT_ENDING:o.comment+=g;continue;case D.COMMENT_ENDING:"-"===g?(o.state=D.COMMENT_ENDED,o.comment=textopts(o.opt,o.comment),o.comment&&emitNode(o,"oncomment",o.comment),o.comment=""):(o.comment+="-"+g,o.state=D.COMMENT);continue;case D.COMMENT_ENDED:">"!==g?(strictFail(o,"Malformed comment"),o.comment+="--"+g,o.state=D.COMMENT):o.state=D.TEXT;continue;case D.CDATA:"]"===g?o.state=D.CDATA_ENDING:o.cdata+=g;continue;case D.CDATA_ENDING:"]"===g?o.state=D.CDATA_ENDING_2:(o.cdata+="]"+g,o.state=D.CDATA);continue;case D.CDATA_ENDING_2:">"===g?(o.cdata&&emitNode(o,"oncdata",o.cdata),emitNode(o,"onclosecdata"),o.cdata="",o.state=D.TEXT):"]"===g?o.cdata+="]":(o.cdata+="]]"+g,o.state=D.CDATA);continue;case D.PROC_INST:"?"===g?o.state=D.PROC_INST_ENDING:isWhitespace(g)?o.state=D.PROC_INST_BODY:o.procInstName+=g;continue;case D.PROC_INST_BODY:if(!o.procInstBody&&isWhitespace(g))continue;"?"===g?o.state=D.PROC_INST_ENDING:o.procInstBody+=g;continue;case D.PROC_INST_ENDING:">"===g?(emitNode(o,"onprocessinginstruction",{name:o.procInstName,body:o.procInstBody}),o.procInstName=o.procInstBody="",o.state=D.TEXT):(o.procInstBody+="?"+g,o.state=D.PROC_INST_BODY);continue;case D.OPEN_TAG:isMatch(k,g)?o.tagName+=g:(newTag(o),">"===g?openTag(o):"/"===g?o.state=D.OPEN_TAG_SLASH:(isWhitespace(g)||strictFail(o,"Invalid character in tag name"),o.state=D.ATTRIB));continue;case D.OPEN_TAG_SLASH:">"===g?(openTag(o,!0),closeTag(o)):(strictFail(o,"Forward-slash in opening tag not followed by >"),o.state=D.ATTRIB);continue;case D.ATTRIB:if(isWhitespace(g))continue;">"===g?openTag(o):"/"===g?o.state=D.OPEN_TAG_SLASH:isMatch(x,g)?(o.attribName=g,o.attribValue="",o.state=D.ATTRIB_NAME):strictFail(o,"Invalid attribute name");continue;case D.ATTRIB_NAME:"="===g?o.state=D.ATTRIB_VALUE:">"===g?(strictFail(o,"Attribute without value"),o.attribValue=o.attribName,attrib(o),openTag(o)):isWhitespace(g)?o.state=D.ATTRIB_NAME_SAW_WHITE:isMatch(k,g)?o.attribName+=g:strictFail(o,"Invalid attribute name");continue;case D.ATTRIB_NAME_SAW_WHITE:if("="===g)o.state=D.ATTRIB_VALUE;else{if(isWhitespace(g))continue;strictFail(o,"Attribute without value"),o.tag.attributes[o.attribName]="",o.attribValue="",emitNode(o,"onattribute",{name:o.attribName,value:""}),o.attribName="",">"===g?openTag(o):isMatch(x,g)?(o.attribName=g,o.state=D.ATTRIB_NAME):(strictFail(o,"Invalid attribute name"),o.state=D.ATTRIB)}continue;case D.ATTRIB_VALUE:if(isWhitespace(g))continue;isQuote(g)?(o.q=g,o.state=D.ATTRIB_VALUE_QUOTED):(strictFail(o,"Unquoted attribute value"),o.state=D.ATTRIB_VALUE_UNQUOTED,o.attribValue=g);continue;case D.ATTRIB_VALUE_QUOTED:if(g!==o.q){"&"===g?o.state=D.ATTRIB_VALUE_ENTITY_Q:o.attribValue+=g;continue}attrib(o),o.q="",o.state=D.ATTRIB_VALUE_CLOSED;continue;case D.ATTRIB_VALUE_CLOSED:isWhitespace(g)?o.state=D.ATTRIB:">"===g?openTag(o):"/"===g?o.state=D.OPEN_TAG_SLASH:isMatch(x,g)?(strictFail(o,"No whitespace between attributes"),o.attribName=g,o.attribValue="",o.state=D.ATTRIB_NAME):strictFail(o,"Invalid attribute name");continue;case D.ATTRIB_VALUE_UNQUOTED:if(!isAttribEnd(g)){"&"===g?o.state=D.ATTRIB_VALUE_ENTITY_U:o.attribValue+=g;continue}attrib(o),">"===g?openTag(o):o.state=D.ATTRIB;continue;case D.CLOSE_TAG:if(o.tagName)">"===g?closeTag(o):isMatch(k,g)?o.tagName+=g:o.script?(o.script+="</"+o.tagName,o.tagName="",o.state=D.SCRIPT):(isWhitespace(g)||strictFail(o,"Invalid tagname in closing tag"),o.state=D.CLOSE_TAG_SAW_WHITE);else{if(isWhitespace(g))continue;notMatch(x,g)?o.script?(o.script+="</"+g,o.state=D.SCRIPT):strictFail(o,"Invalid tagname in closing tag."):o.tagName=g}continue;case D.CLOSE_TAG_SAW_WHITE:if(isWhitespace(g))continue;">"===g?closeTag(o):strictFail(o,"Invalid characters in closing tag");continue;case D.TEXT_ENTITY:case D.ATTRIB_VALUE_ENTITY_Q:case D.ATTRIB_VALUE_ENTITY_U:var _,I;switch(o.state){case D.TEXT_ENTITY:_=D.TEXT,I="textNode";break;case D.ATTRIB_VALUE_ENTITY_Q:_=D.ATTRIB_VALUE_QUOTED,I="attribValue";break;case D.ATTRIB_VALUE_ENTITY_U:_=D.ATTRIB_VALUE_UNQUOTED,I="attribValue"}";"===g?(o[I]+=parseEntity(o),o.entity="",o.state=_):isMatch(o.entity.length?O:P,g)?o.entity+=g:(strictFail(o,"Invalid character in entity name"),o[I]+="&"+o.entity+g,o.entity="",o.state=_);continue;default:throw new Error(o,"Unknown state: "+o.state)}o.position>=o.bufferCheckPosition&&function checkBufferLength(i){for(var o=Math.max(r.MAX_BUFFER_LENGTH,10),u=0,g=0,y=p.length;g<y;g++){var w=i[p[g]].length;if(w>o)switch(p[g]){case"textNode":closeText(i);break;case"cdata":emitNode(i,"oncdata",i.cdata),i.cdata="";break;case"script":emitNode(i,"onscript",i.script),i.script="";break;default:error(i,"Max buffer length exceeded: "+p[g])}u=Math.max(u,w)}var _=r.MAX_BUFFER_LENGTH-u;i.bufferCheckPosition=_+i.position}(o);return o},resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){!function flushBuffers(r){closeText(r),""!==r.cdata&&(emitNode(r,"oncdata",r.cdata),r.cdata=""),""!==r.script&&(emitNode(r,"onscript",r.script),r.script="")}(this)}};try{i=o(2830).Stream}catch(r){i=function(){}}var g=r.EVENTS.filter((function(r){return"error"!==r&&"end"!==r}));function SAXStream(r,o){if(!(this instanceof SAXStream))return new SAXStream(r,o);i.apply(this),this._parser=new SAXParser(r,o),this.writable=!0,this.readable=!0;var u=this;this._parser.onend=function(){u.emit("end")},this._parser.onerror=function(r){u.emit("error",r),u._parser.error=null},this._decoder=null,g.forEach((function(r){Object.defineProperty(u,"on"+r,{get:function(){return u._parser["on"+r]},set:function(i){if(!i)return u.removeAllListeners(r),u._parser["on"+r]=i,i;u.on(r,i)},enumerable:!0,configurable:!1})}))}SAXStream.prototype=Object.create(i.prototype,{constructor:{value:SAXStream}}),SAXStream.prototype.write=function(r){if("function"==typeof u&&"function"==typeof u.isBuffer&&u.isBuffer(r)){if(!this._decoder){var i=o(2553).s;this._decoder=new i("utf8")}r=this._decoder.write(r)}return this._parser.write(r.toString()),this.emit("data",r),!0},SAXStream.prototype.end=function(r){return r&&r.length&&this.write(r),this._parser.end(),!0},SAXStream.prototype.on=function(r,o){var u=this;return u._parser["on"+r]||-1===g.indexOf(r)||(u._parser["on"+r]=function(){var i=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);i.splice(0,0,r),u.emit.apply(u,i)}),i.prototype.on.call(u,r,o)};var y="http://www.w3.org/XML/1998/namespace",w="http://www.w3.org/2000/xmlns/",_={xml:y,xmlns:w},x=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,k=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/,P=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,O=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;function isWhitespace(r){return" "===r||"\n"===r||"\r"===r||"\t"===r}function isQuote(r){return'"'===r||"'"===r}function isAttribEnd(r){return">"===r||isWhitespace(r)}function isMatch(r,i){return r.test(i)}function notMatch(r,i){return!isMatch(r,i)}var I,B,R,D=0;for(var N in r.STATE={BEGIN:D++,BEGIN_WHITESPACE:D++,TEXT:D++,TEXT_ENTITY:D++,OPEN_WAKA:D++,SGML_DECL:D++,SGML_DECL_QUOTED:D++,DOCTYPE:D++,DOCTYPE_QUOTED:D++,DOCTYPE_DTD:D++,DOCTYPE_DTD_QUOTED:D++,COMMENT_STARTING:D++,COMMENT:D++,COMMENT_ENDING:D++,COMMENT_ENDED:D++,CDATA:D++,CDATA_ENDING:D++,CDATA_ENDING_2:D++,PROC_INST:D++,PROC_INST_BODY:D++,PROC_INST_ENDING:D++,OPEN_TAG:D++,OPEN_TAG_SLASH:D++,ATTRIB:D++,ATTRIB_NAME:D++,ATTRIB_NAME_SAW_WHITE:D++,ATTRIB_VALUE:D++,ATTRIB_VALUE_QUOTED:D++,ATTRIB_VALUE_CLOSED:D++,ATTRIB_VALUE_UNQUOTED:D++,ATTRIB_VALUE_ENTITY_Q:D++,ATTRIB_VALUE_ENTITY_U:D++,CLOSE_TAG:D++,CLOSE_TAG_SAW_WHITE:D++,SCRIPT:D++,SCRIPT_ENDING:D++},r.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},r.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(r.ENTITIES).forEach((function(i){var o=r.ENTITIES[i],u="number"==typeof o?String.fromCharCode(o):o;r.ENTITIES[i]=u})),r.STATE)r.STATE[r.STATE[N]]=N;function emit(r,i,o){r[i]&&r[i](o)}function emitNode(r,i,o){r.textNode&&closeText(r),emit(r,i,o)}function closeText(r){r.textNode=textopts(r.opt,r.textNode),r.textNode&&emit(r,"ontext",r.textNode),r.textNode=""}function textopts(r,i){return r.trim&&(i=i.trim()),r.normalize&&(i=i.replace(/\s+/g," ")),i}function error(r,i){return closeText(r),r.trackPosition&&(i+="\nLine: "+r.line+"\nColumn: "+r.column+"\nChar: "+r.c),i=new Error(i),r.error=i,emit(r,"onerror",i),r}function end(r){return r.sawRoot&&!r.closedRoot&&strictFail(r,"Unclosed root tag"),r.state!==D.BEGIN&&r.state!==D.BEGIN_WHITESPACE&&r.state!==D.TEXT&&error(r,"Unexpected end"),closeText(r),r.c="",r.closed=!0,emit(r,"onend"),SAXParser.call(r,r.strict,r.opt),r}function strictFail(r,i){if("object"!=typeof r||!(r instanceof SAXParser))throw new Error("bad call to strictFail");r.strict&&error(r,i)}function newTag(r){r.strict||(r.tagName=r.tagName[r.looseCase]());var i=r.tags[r.tags.length-1]||r,o=r.tag={name:r.tagName,attributes:{}};r.opt.xmlns&&(o.ns=i.ns),r.attribList.length=0,emitNode(r,"onopentagstart",o)}function qname(r,i){var o=r.indexOf(":")<0?["",r]:r.split(":"),u=o[0],p=o[1];return i&&"xmlns"===r&&(u="xmlns",p=""),{prefix:u,local:p}}function attrib(r){if(r.strict||(r.attribName=r.attribName[r.looseCase]()),-1!==r.attribList.indexOf(r.attribName)||r.tag.attributes.hasOwnProperty(r.attribName))r.attribName=r.attribValue="";else{if(r.opt.xmlns){var i=qname(r.attribName,!0),o=i.prefix,u=i.local;if("xmlns"===o)if("xml"===u&&r.attribValue!==y)strictFail(r,"xml: prefix must be bound to "+y+"\nActual: "+r.attribValue);else if("xmlns"===u&&r.attribValue!==w)strictFail(r,"xmlns: prefix must be bound to "+w+"\nActual: "+r.attribValue);else{var p=r.tag,g=r.tags[r.tags.length-1]||r;p.ns===g.ns&&(p.ns=Object.create(g.ns)),p.ns[u]=r.attribValue}r.attribList.push([r.attribName,r.attribValue])}else r.tag.attributes[r.attribName]=r.attribValue,emitNode(r,"onattribute",{name:r.attribName,value:r.attribValue});r.attribName=r.attribValue=""}}function openTag(r,i){if(r.opt.xmlns){var o=r.tag,u=qname(r.tagName);o.prefix=u.prefix,o.local=u.local,o.uri=o.ns[u.prefix]||"",o.prefix&&!o.uri&&(strictFail(r,"Unbound namespace prefix: "+JSON.stringify(r.tagName)),o.uri=u.prefix);var p=r.tags[r.tags.length-1]||r;o.ns&&p.ns!==o.ns&&Object.keys(o.ns).forEach((function(i){emitNode(r,"onopennamespace",{prefix:i,uri:o.ns[i]})}));for(var g=0,y=r.attribList.length;g<y;g++){var w=r.attribList[g],_=w[0],x=w[1],k=qname(_,!0),P=k.prefix,O=k.local,I=""===P?"":o.ns[P]||"",B={name:_,value:x,prefix:P,local:O,uri:I};P&&"xmlns"!==P&&!I&&(strictFail(r,"Unbound namespace prefix: "+JSON.stringify(P)),B.uri=P),r.tag.attributes[_]=B,emitNode(r,"onattribute",B)}r.attribList.length=0}r.tag.isSelfClosing=!!i,r.sawRoot=!0,r.tags.push(r.tag),emitNode(r,"onopentag",r.tag),i||(r.noscript||"script"!==r.tagName.toLowerCase()?r.state=D.TEXT:r.state=D.SCRIPT,r.tag=null,r.tagName=""),r.attribName=r.attribValue="",r.attribList.length=0}function closeTag(r){if(!r.tagName)return strictFail(r,"Weird empty close tag."),r.textNode+="</>",void(r.state=D.TEXT);if(r.script){if("script"!==r.tagName)return r.script+="</"+r.tagName+">",r.tagName="",void(r.state=D.SCRIPT);emitNode(r,"onscript",r.script),r.script=""}var i=r.tags.length,o=r.tagName;r.strict||(o=o[r.looseCase]());for(var u=o;i--;){if(r.tags[i].name===u)break;strictFail(r,"Unexpected close tag")}if(i<0)return strictFail(r,"Unmatched closing tag: "+r.tagName),r.textNode+="</"+r.tagName+">",void(r.state=D.TEXT);r.tagName=o;for(var p=r.tags.length;p-- >i;){var g=r.tag=r.tags.pop();r.tagName=r.tag.name,emitNode(r,"onclosetag",r.tagName);var y={};for(var w in g.ns)y[w]=g.ns[w];var _=r.tags[r.tags.length-1]||r;r.opt.xmlns&&g.ns!==_.ns&&Object.keys(g.ns).forEach((function(i){var o=g.ns[i];emitNode(r,"onclosenamespace",{prefix:i,uri:o})}))}0===i&&(r.closedRoot=!0),r.tagName=r.attribValue=r.attribName="",r.attribList.length=0,r.state=D.TEXT}function parseEntity(r){var i,o=r.entity,u=o.toLowerCase(),p="";return r.ENTITIES[o]?r.ENTITIES[o]:r.ENTITIES[u]?r.ENTITIES[u]:("#"===(o=u).charAt(0)&&("x"===o.charAt(1)?(o=o.slice(2),p=(i=parseInt(o,16)).toString(16)):(o=o.slice(1),p=(i=parseInt(o,10)).toString(10))),o=o.replace(/^0+/,""),isNaN(i)||p.toLowerCase()!==o?(strictFail(r,"Invalid character entity"),"&"+r.entity+";"):String.fromCodePoint(i))}function beginWhiteSpace(r,i){"<"===i?(r.state=D.OPEN_WAKA,r.startTagPosition=r.position):isWhitespace(i)||(strictFail(r,"Non-whitespace before first tag."),r.textNode=i,r.state=D.TEXT)}function charAt(r,i){var o="";return i<r.length&&(o=r.charAt(i)),o}D=r.STATE,String.fromCodePoint||(I=String.fromCharCode,B=Math.floor,R=function(){var r,i,o=16384,u=[],p=-1,g=arguments.length;if(!g)return"";for(var y="";++p<g;){var w=Number(arguments[p]);if(!isFinite(w)||w<0||w>1114111||B(w)!==w)throw RangeError("Invalid code point: "+w);w<=65535?u.push(w):(r=55296+((w-=65536)>>10),i=w%1024+56320,u.push(r,i)),(p+1===g||u.length>o)&&(y+=I.apply(null,u),u.length=0)}return y},Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:R,configurable:!0,writable:!0}):String.fromCodePoint=R)}(i)},2830:function(r,i,o){r.exports=Stream;var u=o(7187).EventEmitter;function Stream(){u.call(this)}o(5717)(Stream,u),Stream.Readable=o(6577),Stream.Writable=o(323),Stream.Duplex=o(8656),Stream.Transform=o(4473),Stream.PassThrough=o(2366),Stream.finished=o(1086),Stream.pipeline=o(6472),Stream.Stream=Stream,Stream.prototype.pipe=function(r,i){var o=this;function ondata(i){r.writable&&!1===r.write(i)&&o.pause&&o.pause()}function ondrain(){o.readable&&o.resume&&o.resume()}o.on("data",ondata),r.on("drain",ondrain),r._isStdio||i&&!1===i.end||(o.on("end",onend),o.on("close",onclose));var p=!1;function onend(){p||(p=!0,r.end())}function onclose(){p||(p=!0,"function"==typeof r.destroy&&r.destroy())}function onerror(r){if(cleanup(),0===u.listenerCount(this,"error"))throw r}function cleanup(){o.removeListener("data",ondata),r.removeListener("drain",ondrain),o.removeListener("end",onend),o.removeListener("close",onclose),o.removeListener("error",onerror),r.removeListener("error",onerror),o.removeListener("end",cleanup),o.removeListener("close",cleanup),r.removeListener("close",cleanup)}return o.on("error",onerror),r.on("error",onerror),o.on("end",cleanup),o.on("close",cleanup),r.on("close",cleanup),r.emit("pipe",o),r}},8106:function(r){"use strict";var i={};function createErrorType(r,o,u){u||(u=Error);var p=function(r){function NodeError(i,u,p){return r.call(this,function getMessage(r,i,u){return"string"==typeof o?o:o(r,i,u)}(i,u,p))||this}return function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,r.__proto__=i}(NodeError,r),NodeError}(u);p.prototype.name=u.name,p.prototype.code=r,i[r]=p}function oneOf(r,i){if(Array.isArray(r)){var o=r.length;return r=r.map((function(r){return String(r)})),o>2?"one of ".concat(i," ").concat(r.slice(0,o-1).join(", "),", or ")+r[o-1]:2===o?"one of ".concat(i," ").concat(r[0]," or ").concat(r[1]):"of ".concat(i," ").concat(r[0])}return"of ".concat(i," ").concat(String(r))}createErrorType("ERR_INVALID_OPT_VALUE",(function(r,i){return'The value "'+i+'" is invalid for option "'+r+'"'}),TypeError),createErrorType("ERR_INVALID_ARG_TYPE",(function(r,i,o){var u,p;if("string"==typeof i&&function startsWith(r,i,o){return r.substr(!o||o<0?0:+o,i.length)===i}(i,"not ")?(u="must not be",i=i.replace(/^not /,"")):u="must be",function endsWith(r,i,o){return(void 0===o||o>r.length)&&(o=r.length),r.substring(o-i.length,o)===i}(r," argument"))p="The ".concat(r," ").concat(u," ").concat(oneOf(i,"type"));else{var g=function includes(r,i,o){return"number"!=typeof o&&(o=0),!(o+i.length>r.length)&&-1!==r.indexOf(i,o)}(r,".")?"property":"argument";p='The "'.concat(r,'" ').concat(g," ").concat(u," ").concat(oneOf(i,"type"))}return p+=". Received type ".concat(typeof o)}),TypeError),createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),createErrorType("ERR_METHOD_NOT_IMPLEMENTED",(function(r){return"The "+r+" method is not implemented"})),createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close"),createErrorType("ERR_STREAM_DESTROYED",(function(r){return"Cannot call "+r+" after a stream was destroyed"})),createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end"),createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),createErrorType("ERR_UNKNOWN_ENCODING",(function(r){return"Unknown encoding: "+r}),TypeError),createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),r.exports.q=i},8656:function(r,i,o){"use strict";var u=o(4155),p=Object.keys||function(r){var i=[];for(var o in r)i.push(o);return i};r.exports=Duplex;var g=o(6577),y=o(323);o(5717)(Duplex,g);for(var w=p(y.prototype),_=0;_<w.length;_++){var x=w[_];Duplex.prototype[x]||(Duplex.prototype[x]=y.prototype[x])}function Duplex(r){if(!(this instanceof Duplex))return new Duplex(r);g.call(this,r),y.call(this,r),this.allowHalfOpen=!0,r&&(!1===r.readable&&(this.readable=!1),!1===r.writable&&(this.writable=!1),!1===r.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",onend)))}function onend(){this._writableState.ended||u.nextTick(onEndNT,this)}function onEndNT(r){r.end()}Object.defineProperty(Duplex.prototype,"writableHighWaterMark",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Object.defineProperty(Duplex.prototype,"writableBuffer",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Duplex.prototype,"writableLength",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Duplex.prototype,"destroyed",{enumerable:!1,get:function get(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function set(r){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=r,this._writableState.destroyed=r)}})},2366:function(r,i,o){"use strict";r.exports=PassThrough;var u=o(4473);function PassThrough(r){if(!(this instanceof PassThrough))return new PassThrough(r);u.call(this,r)}o(5717)(PassThrough,u),PassThrough.prototype._transform=function(r,i,o){o(null,r)}},6577:function(r,i,o){"use strict";var u,p=o(4155);r.exports=Readable,Readable.ReadableState=ReadableState;o(7187).EventEmitter;var g=function EElistenerCount(r,i){return r.listeners(i).length},y=o(3194),w=o(8823).Buffer,_=o.g.Uint8Array||function(){};var x,k=o(964);x=k&&k.debuglog?k.debuglog("stream"):function debug(){};var P,O,I,B=o(3361),R=o(1029),D=o(94).getHighWaterMark,N=o(8106).q,W=N.ERR_INVALID_ARG_TYPE,U=N.ERR_STREAM_PUSH_AFTER_EOF,j=N.ERR_METHOD_NOT_IMPLEMENTED,G=N.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;o(5717)(Readable,y);var X=R.errorOrDestroy,K=["error","close","destroy","pause","resume"];function ReadableState(r,i,p){u=u||o(8656),r=r||{},"boolean"!=typeof p&&(p=i instanceof u),this.objectMode=!!r.objectMode,p&&(this.objectMode=this.objectMode||!!r.readableObjectMode),this.highWaterMark=D(this,r,"readableHighWaterMark",p),this.buffer=new B,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==r.emitClose,this.autoDestroy=!!r.autoDestroy,this.destroyed=!1,this.defaultEncoding=r.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,r.encoding&&(P||(P=o(2553).s),this.decoder=new P(r.encoding),this.encoding=r.encoding)}function Readable(r){if(u=u||o(8656),!(this instanceof Readable))return new Readable(r);var i=this instanceof u;this._readableState=new ReadableState(r,this,i),this.readable=!0,r&&("function"==typeof r.read&&(this._read=r.read),"function"==typeof r.destroy&&(this._destroy=r.destroy)),y.call(this)}function readableAddChunk(r,i,o,u,p){x("readableAddChunk",i);var g,y=r._readableState;if(null===i)y.reading=!1,function onEofChunk(r,i){if(x("onEofChunk"),i.ended)return;if(i.decoder){var o=i.decoder.end();o&&o.length&&(i.buffer.push(o),i.length+=i.objectMode?1:o.length)}i.ended=!0,i.sync?emitReadable(r):(i.needReadable=!1,i.emittedReadable||(i.emittedReadable=!0,emitReadable_(r)))}(r,y);else if(p||(g=function chunkInvalid(r,i){var o;(function _isUint8Array(r){return w.isBuffer(r)||r instanceof _})(i)||"string"==typeof i||void 0===i||r.objectMode||(o=new W("chunk",["string","Buffer","Uint8Array"],i));return o}(y,i)),g)X(r,g);else if(y.objectMode||i&&i.length>0)if("string"==typeof i||y.objectMode||Object.getPrototypeOf(i)===w.prototype||(i=function _uint8ArrayToBuffer(r){return w.from(r)}(i)),u)y.endEmitted?X(r,new G):addChunk(r,y,i,!0);else if(y.ended)X(r,new U);else{if(y.destroyed)return!1;y.reading=!1,y.decoder&&!o?(i=y.decoder.write(i),y.objectMode||0!==i.length?addChunk(r,y,i,!1):maybeReadMore(r,y)):addChunk(r,y,i,!1)}else u||(y.reading=!1,maybeReadMore(r,y));return!y.ended&&(y.length<y.highWaterMark||0===y.length)}function addChunk(r,i,o,u){i.flowing&&0===i.length&&!i.sync?(i.awaitDrain=0,r.emit("data",o)):(i.length+=i.objectMode?1:o.length,u?i.buffer.unshift(o):i.buffer.push(o),i.needReadable&&emitReadable(r)),maybeReadMore(r,i)}Object.defineProperty(Readable.prototype,"destroyed",{enumerable:!1,get:function get(){return void 0!==this._readableState&&this._readableState.destroyed},set:function set(r){this._readableState&&(this._readableState.destroyed=r)}}),Readable.prototype.destroy=R.destroy,Readable.prototype._undestroy=R.undestroy,Readable.prototype._destroy=function(r,i){i(r)},Readable.prototype.push=function(r,i){var o,u=this._readableState;return u.objectMode?o=!0:"string"==typeof r&&((i=i||u.defaultEncoding)!==u.encoding&&(r=w.from(r,i),i=""),o=!0),readableAddChunk(this,r,i,!1,o)},Readable.prototype.unshift=function(r){return readableAddChunk(this,r,null,!0,!1)},Readable.prototype.isPaused=function(){return!1===this._readableState.flowing},Readable.prototype.setEncoding=function(r){P||(P=o(2553).s);var i=new P(r);this._readableState.decoder=i,this._readableState.encoding=this._readableState.decoder.encoding;for(var u=this._readableState.buffer.head,p="";null!==u;)p+=i.write(u.data),u=u.next;return this._readableState.buffer.clear(),""!==p&&this._readableState.buffer.push(p),this._readableState.length=p.length,this};var Y=1073741824;function howMuchToRead(r,i){return r<=0||0===i.length&&i.ended?0:i.objectMode?1:r!=r?i.flowing&&i.length?i.buffer.head.data.length:i.length:(r>i.highWaterMark&&(i.highWaterMark=function computeNewHighWaterMark(r){return r>=Y?r=Y:(r--,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r++),r}(r)),r<=i.length?r:i.ended?i.length:(i.needReadable=!0,0))}function emitReadable(r){var i=r._readableState;x("emitReadable",i.needReadable,i.emittedReadable),i.needReadable=!1,i.emittedReadable||(x("emitReadable",i.flowing),i.emittedReadable=!0,p.nextTick(emitReadable_,r))}function emitReadable_(r){var i=r._readableState;x("emitReadable_",i.destroyed,i.length,i.ended),i.destroyed||!i.length&&!i.ended||(r.emit("readable"),i.emittedReadable=!1),i.needReadable=!i.flowing&&!i.ended&&i.length<=i.highWaterMark,flow(r)}function maybeReadMore(r,i){i.readingMore||(i.readingMore=!0,p.nextTick(maybeReadMore_,r,i))}function maybeReadMore_(r,i){for(;!i.reading&&!i.ended&&(i.length<i.highWaterMark||i.flowing&&0===i.length);){var o=i.length;if(x("maybeReadMore read 0"),r.read(0),o===i.length)break}i.readingMore=!1}function updateReadableListening(r){var i=r._readableState;i.readableListening=r.listenerCount("readable")>0,i.resumeScheduled&&!i.paused?i.flowing=!0:r.listenerCount("data")>0&&r.resume()}function nReadingNextTick(r){x("readable nexttick read 0"),r.read(0)}function resume_(r,i){x("resume",i.reading),i.reading||r.read(0),i.resumeScheduled=!1,r.emit("resume"),flow(r),i.flowing&&!i.reading&&r.read(0)}function flow(r){var i=r._readableState;for(x("flow",i.flowing);i.flowing&&null!==r.read(););}function fromList(r,i){return 0===i.length?null:(i.objectMode?o=i.buffer.shift():!r||r>=i.length?(o=i.decoder?i.buffer.join(""):1===i.buffer.length?i.buffer.first():i.buffer.concat(i.length),i.buffer.clear()):o=i.buffer.consume(r,i.decoder),o);var o}function endReadable(r){var i=r._readableState;x("endReadable",i.endEmitted),i.endEmitted||(i.ended=!0,p.nextTick(endReadableNT,i,r))}function endReadableNT(r,i){if(x("endReadableNT",r.endEmitted,r.length),!r.endEmitted&&0===r.length&&(r.endEmitted=!0,i.readable=!1,i.emit("end"),r.autoDestroy)){var o=i._writableState;(!o||o.autoDestroy&&o.finished)&&i.destroy()}}function indexOf(r,i){for(var o=0,u=r.length;o<u;o++)if(r[o]===i)return o;return-1}Readable.prototype.read=function(r){x("read",r),r=parseInt(r,10);var i=this._readableState,o=r;if(0!==r&&(i.emittedReadable=!1),0===r&&i.needReadable&&((0!==i.highWaterMark?i.length>=i.highWaterMark:i.length>0)||i.ended))return x("read: emitReadable",i.length,i.ended),0===i.length&&i.ended?endReadable(this):emitReadable(this),null;if(0===(r=howMuchToRead(r,i))&&i.ended)return 0===i.length&&endReadable(this),null;var u,p=i.needReadable;return x("need readable",p),(0===i.length||i.length-r<i.highWaterMark)&&x("length less than watermark",p=!0),i.ended||i.reading?x("reading or ended",p=!1):p&&(x("do read"),i.reading=!0,i.sync=!0,0===i.length&&(i.needReadable=!0),this._read(i.highWaterMark),i.sync=!1,i.reading||(r=howMuchToRead(o,i))),null===(u=r>0?fromList(r,i):null)?(i.needReadable=i.length<=i.highWaterMark,r=0):(i.length-=r,i.awaitDrain=0),0===i.length&&(i.ended||(i.needReadable=!0),o!==r&&i.ended&&endReadable(this)),null!==u&&this.emit("data",u),u},Readable.prototype._read=function(r){X(this,new j("_read()"))},Readable.prototype.pipe=function(r,i){var o=this,u=this._readableState;switch(u.pipesCount){case 0:u.pipes=r;break;case 1:u.pipes=[u.pipes,r];break;default:u.pipes.push(r)}u.pipesCount+=1,x("pipe count=%d opts=%j",u.pipesCount,i);var y=(!i||!1!==i.end)&&r!==p.stdout&&r!==p.stderr?onend:unpipe;function onunpipe(i,p){x("onunpipe"),i===o&&p&&!1===p.hasUnpiped&&(p.hasUnpiped=!0,function cleanup(){x("cleanup"),r.removeListener("close",onclose),r.removeListener("finish",onfinish),r.removeListener("drain",w),r.removeListener("error",onerror),r.removeListener("unpipe",onunpipe),o.removeListener("end",onend),o.removeListener("end",unpipe),o.removeListener("data",ondata),_=!0,!u.awaitDrain||r._writableState&&!r._writableState.needDrain||w()}())}function onend(){x("onend"),r.end()}u.endEmitted?p.nextTick(y):o.once("end",y),r.on("unpipe",onunpipe);var w=function pipeOnDrain(r){return function pipeOnDrainFunctionResult(){var i=r._readableState;x("pipeOnDrain",i.awaitDrain),i.awaitDrain&&i.awaitDrain--,0===i.awaitDrain&&g(r,"data")&&(i.flowing=!0,flow(r))}}(o);r.on("drain",w);var _=!1;function ondata(i){x("ondata");var p=r.write(i);x("dest.write",p),!1===p&&((1===u.pipesCount&&u.pipes===r||u.pipesCount>1&&-1!==indexOf(u.pipes,r))&&!_&&(x("false write response, pause",u.awaitDrain),u.awaitDrain++),o.pause())}function onerror(i){x("onerror",i),unpipe(),r.removeListener("error",onerror),0===g(r,"error")&&X(r,i)}function onclose(){r.removeListener("finish",onfinish),unpipe()}function onfinish(){x("onfinish"),r.removeListener("close",onclose),unpipe()}function unpipe(){x("unpipe"),o.unpipe(r)}return o.on("data",ondata),function prependListener(r,i,o){if("function"==typeof r.prependListener)return r.prependListener(i,o);r._events&&r._events[i]?Array.isArray(r._events[i])?r._events[i].unshift(o):r._events[i]=[o,r._events[i]]:r.on(i,o)}(r,"error",onerror),r.once("close",onclose),r.once("finish",onfinish),r.emit("pipe",o),u.flowing||(x("pipe resume"),o.resume()),r},Readable.prototype.unpipe=function(r){var i=this._readableState,o={hasUnpiped:!1};if(0===i.pipesCount)return this;if(1===i.pipesCount)return r&&r!==i.pipes||(r||(r=i.pipes),i.pipes=null,i.pipesCount=0,i.flowing=!1,r&&r.emit("unpipe",this,o)),this;if(!r){var u=i.pipes,p=i.pipesCount;i.pipes=null,i.pipesCount=0,i.flowing=!1;for(var g=0;g<p;g++)u[g].emit("unpipe",this,{hasUnpiped:!1});return this}var y=indexOf(i.pipes,r);return-1===y||(i.pipes.splice(y,1),i.pipesCount-=1,1===i.pipesCount&&(i.pipes=i.pipes[0]),r.emit("unpipe",this,o)),this},Readable.prototype.on=function(r,i){var o=y.prototype.on.call(this,r,i),u=this._readableState;return"data"===r?(u.readableListening=this.listenerCount("readable")>0,!1!==u.flowing&&this.resume()):"readable"===r&&(u.endEmitted||u.readableListening||(u.readableListening=u.needReadable=!0,u.flowing=!1,u.emittedReadable=!1,x("on readable",u.length,u.reading),u.length?emitReadable(this):u.reading||p.nextTick(nReadingNextTick,this))),o},Readable.prototype.addListener=Readable.prototype.on,Readable.prototype.removeListener=function(r,i){var o=y.prototype.removeListener.call(this,r,i);return"readable"===r&&p.nextTick(updateReadableListening,this),o},Readable.prototype.removeAllListeners=function(r){var i=y.prototype.removeAllListeners.apply(this,arguments);return"readable"!==r&&void 0!==r||p.nextTick(updateReadableListening,this),i},Readable.prototype.resume=function(){var r=this._readableState;return r.flowing||(x("resume"),r.flowing=!r.readableListening,function resume(r,i){i.resumeScheduled||(i.resumeScheduled=!0,p.nextTick(resume_,r,i))}(this,r)),r.paused=!1,this},Readable.prototype.pause=function(){return x("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(x("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},Readable.prototype.wrap=function(r){var i=this,o=this._readableState,u=!1;for(var p in r.on("end",(function(){if(x("wrapped end"),o.decoder&&!o.ended){var r=o.decoder.end();r&&r.length&&i.push(r)}i.push(null)})),r.on("data",(function(p){(x("wrapped data"),o.decoder&&(p=o.decoder.write(p)),o.objectMode&&null==p)||(o.objectMode||p&&p.length)&&(i.push(p)||(u=!0,r.pause()))})),r)void 0===this[p]&&"function"==typeof r[p]&&(this[p]=function methodWrap(i){return function methodWrapReturnFunction(){return r[i].apply(r,arguments)}}(p));for(var g=0;g<K.length;g++)r.on(K[g],this.emit.bind(this,K[g]));return this._read=function(i){x("wrapped _read",i),u&&(u=!1,r.resume())},this},"function"==typeof Symbol&&(Readable.prototype[Symbol.asyncIterator]=function(){return void 0===O&&(O=o(828)),O(this)}),Object.defineProperty(Readable.prototype,"readableHighWaterMark",{enumerable:!1,get:function get(){return this._readableState.highWaterMark}}),Object.defineProperty(Readable.prototype,"readableBuffer",{enumerable:!1,get:function get(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(Readable.prototype,"readableFlowing",{enumerable:!1,get:function get(){return this._readableState.flowing},set:function set(r){this._readableState&&(this._readableState.flowing=r)}}),Readable._fromList=fromList,Object.defineProperty(Readable.prototype,"readableLength",{enumerable:!1,get:function get(){return this._readableState.length}}),"function"==typeof Symbol&&(Readable.from=function(r,i){return void 0===I&&(I=o(1265)),I(Readable,r,i)})},4473:function(r,i,o){"use strict";r.exports=Transform;var u=o(8106).q,p=u.ERR_METHOD_NOT_IMPLEMENTED,g=u.ERR_MULTIPLE_CALLBACK,y=u.ERR_TRANSFORM_ALREADY_TRANSFORMING,w=u.ERR_TRANSFORM_WITH_LENGTH_0,_=o(8656);function afterTransform(r,i){var o=this._transformState;o.transforming=!1;var u=o.writecb;if(null===u)return this.emit("error",new g);o.writechunk=null,o.writecb=null,null!=i&&this.push(i),u(r);var p=this._readableState;p.reading=!1,(p.needReadable||p.length<p.highWaterMark)&&this._read(p.highWaterMark)}function Transform(r){if(!(this instanceof Transform))return new Transform(r);_.call(this,r),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,r&&("function"==typeof r.transform&&(this._transform=r.transform),"function"==typeof r.flush&&(this._flush=r.flush)),this.on("prefinish",prefinish)}function prefinish(){var r=this;"function"!=typeof this._flush||this._readableState.destroyed?done(this,null,null):this._flush((function(i,o){done(r,i,o)}))}function done(r,i,o){if(i)return r.emit("error",i);if(null!=o&&r.push(o),r._writableState.length)throw new w;if(r._transformState.transforming)throw new y;return r.push(null)}o(5717)(Transform,_),Transform.prototype.push=function(r,i){return this._transformState.needTransform=!1,_.prototype.push.call(this,r,i)},Transform.prototype._transform=function(r,i,o){o(new p("_transform()"))},Transform.prototype._write=function(r,i,o){var u=this._transformState;if(u.writecb=o,u.writechunk=r,u.writeencoding=i,!u.transforming){var p=this._readableState;(u.needTransform||p.needReadable||p.length<p.highWaterMark)&&this._read(p.highWaterMark)}},Transform.prototype._read=function(r){var i=this._transformState;null===i.writechunk||i.transforming?i.needTransform=!0:(i.transforming=!0,this._transform(i.writechunk,i.writeencoding,i.afterTransform))},Transform.prototype._destroy=function(r,i){_.prototype._destroy.call(this,r,(function(r){i(r)}))}},323:function(r,i,o){"use strict";var u,p=o(4155);function CorkedRequest(r){var i=this;this.next=null,this.entry=null,this.finish=function(){!function onCorkedFinish(r,i,o){var u=r.entry;r.entry=null;for(;u;){var p=u.callback;i.pendingcb--,p(o),u=u.next}i.corkedRequestsFree.next=r}(i,r)}}r.exports=Writable,Writable.WritableState=WritableState;var g={deprecate:o(4927)},y=o(3194),w=o(8823).Buffer,_=o.g.Uint8Array||function(){};var x,k=o(1029),P=o(94).getHighWaterMark,O=o(8106).q,I=O.ERR_INVALID_ARG_TYPE,B=O.ERR_METHOD_NOT_IMPLEMENTED,R=O.ERR_MULTIPLE_CALLBACK,D=O.ERR_STREAM_CANNOT_PIPE,N=O.ERR_STREAM_DESTROYED,W=O.ERR_STREAM_NULL_VALUES,U=O.ERR_STREAM_WRITE_AFTER_END,j=O.ERR_UNKNOWN_ENCODING,G=k.errorOrDestroy;function nop(){}function WritableState(r,i,g){u=u||o(8656),r=r||{},"boolean"!=typeof g&&(g=i instanceof u),this.objectMode=!!r.objectMode,g&&(this.objectMode=this.objectMode||!!r.writableObjectMode),this.highWaterMark=P(this,r,"writableHighWaterMark",g),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var y=!1===r.decodeStrings;this.decodeStrings=!y,this.defaultEncoding=r.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(r){!function onwrite(r,i){var o=r._writableState,u=o.sync,g=o.writecb;if("function"!=typeof g)throw new R;if(function onwriteStateUpdate(r){r.writing=!1,r.writecb=null,r.length-=r.writelen,r.writelen=0}(o),i)!function onwriteError(r,i,o,u,g){--i.pendingcb,o?(p.nextTick(g,u),p.nextTick(finishMaybe,r,i),r._writableState.errorEmitted=!0,G(r,u)):(g(u),r._writableState.errorEmitted=!0,G(r,u),finishMaybe(r,i))}(r,o,u,i,g);else{var y=needFinish(o)||r.destroyed;y||o.corked||o.bufferProcessing||!o.bufferedRequest||clearBuffer(r,o),u?p.nextTick(afterWrite,r,o,y,g):afterWrite(r,o,y,g)}}(i,r)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==r.emitClose,this.autoDestroy=!!r.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(r){var i=this instanceof(u=u||o(8656));if(!i&&!x.call(Writable,this))return new Writable(r);this._writableState=new WritableState(r,this,i),this.writable=!0,r&&("function"==typeof r.write&&(this._write=r.write),"function"==typeof r.writev&&(this._writev=r.writev),"function"==typeof r.destroy&&(this._destroy=r.destroy),"function"==typeof r.final&&(this._final=r.final)),y.call(this)}function doWrite(r,i,o,u,p,g,y){i.writelen=u,i.writecb=y,i.writing=!0,i.sync=!0,i.destroyed?i.onwrite(new N("write")):o?r._writev(p,i.onwrite):r._write(p,g,i.onwrite),i.sync=!1}function afterWrite(r,i,o,u){o||function onwriteDrain(r,i){0===i.length&&i.needDrain&&(i.needDrain=!1,r.emit("drain"))}(r,i),i.pendingcb--,u(),finishMaybe(r,i)}function clearBuffer(r,i){i.bufferProcessing=!0;var o=i.bufferedRequest;if(r._writev&&o&&o.next){var u=i.bufferedRequestCount,p=new Array(u),g=i.corkedRequestsFree;g.entry=o;for(var y=0,w=!0;o;)p[y]=o,o.isBuf||(w=!1),o=o.next,y+=1;p.allBuffers=w,doWrite(r,i,!0,i.length,p,"",g.finish),i.pendingcb++,i.lastBufferedRequest=null,g.next?(i.corkedRequestsFree=g.next,g.next=null):i.corkedRequestsFree=new CorkedRequest(i),i.bufferedRequestCount=0}else{for(;o;){var _=o.chunk,x=o.encoding,k=o.callback;if(doWrite(r,i,!1,i.objectMode?1:_.length,_,x,k),o=o.next,i.bufferedRequestCount--,i.writing)break}null===o&&(i.lastBufferedRequest=null)}i.bufferedRequest=o,i.bufferProcessing=!1}function needFinish(r){return r.ending&&0===r.length&&null===r.bufferedRequest&&!r.finished&&!r.writing}function callFinal(r,i){r._final((function(o){i.pendingcb--,o&&G(r,o),i.prefinished=!0,r.emit("prefinish"),finishMaybe(r,i)}))}function finishMaybe(r,i){var o=needFinish(i);if(o&&(function prefinish(r,i){i.prefinished||i.finalCalled||("function"!=typeof r._final||i.destroyed?(i.prefinished=!0,r.emit("prefinish")):(i.pendingcb++,i.finalCalled=!0,p.nextTick(callFinal,r,i)))}(r,i),0===i.pendingcb&&(i.finished=!0,r.emit("finish"),i.autoDestroy))){var u=r._readableState;(!u||u.autoDestroy&&u.endEmitted)&&r.destroy()}return o}o(5717)(Writable,y),WritableState.prototype.getBuffer=function getBuffer(){for(var r=this.bufferedRequest,i=[];r;)i.push(r),r=r.next;return i},function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:g.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(r){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(x=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(r){return!!x.call(this,r)||this===Writable&&(r&&r._writableState instanceof WritableState)}})):x=function realHasInstance(r){return r instanceof this},Writable.prototype.pipe=function(){G(this,new D)},Writable.prototype.write=function(r,i,o){var u=this._writableState,g=!1,y=!u.objectMode&&function _isUint8Array(r){return w.isBuffer(r)||r instanceof _}(r);return y&&!w.isBuffer(r)&&(r=function _uint8ArrayToBuffer(r){return w.from(r)}(r)),"function"==typeof i&&(o=i,i=null),y?i="buffer":i||(i=u.defaultEncoding),"function"!=typeof o&&(o=nop),u.ending?function writeAfterEnd(r,i){var o=new U;G(r,o),p.nextTick(i,o)}(this,o):(y||function validChunk(r,i,o,u){var g;return null===o?g=new W:"string"==typeof o||i.objectMode||(g=new I("chunk",["string","Buffer"],o)),!g||(G(r,g),p.nextTick(u,g),!1)}(this,u,r,o))&&(u.pendingcb++,g=function writeOrBuffer(r,i,o,u,p,g){if(!o){var y=function decodeChunk(r,i,o){r.objectMode||!1===r.decodeStrings||"string"!=typeof i||(i=w.from(i,o));return i}(i,u,p);u!==y&&(o=!0,p="buffer",u=y)}var _=i.objectMode?1:u.length;i.length+=_;var x=i.length<i.highWaterMark;x||(i.needDrain=!0);if(i.writing||i.corked){var k=i.lastBufferedRequest;i.lastBufferedRequest={chunk:u,encoding:p,isBuf:o,callback:g,next:null},k?k.next=i.lastBufferedRequest:i.bufferedRequest=i.lastBufferedRequest,i.bufferedRequestCount+=1}else doWrite(r,i,!1,_,u,p,g);return x}(this,u,y,r,i,o)),g},Writable.prototype.cork=function(){this._writableState.corked++},Writable.prototype.uncork=function(){var r=this._writableState;r.corked&&(r.corked--,r.writing||r.corked||r.bufferProcessing||!r.bufferedRequest||clearBuffer(this,r))},Writable.prototype.setDefaultEncoding=function setDefaultEncoding(r){if("string"==typeof r&&(r=r.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((r+"").toLowerCase())>-1))throw new j(r);return this._writableState.defaultEncoding=r,this},Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Writable.prototype._write=function(r,i,o){o(new B("_write()"))},Writable.prototype._writev=null,Writable.prototype.end=function(r,i,o){var u=this._writableState;return"function"==typeof r?(o=r,r=null,i=null):"function"==typeof i&&(o=i,i=null),null!=r&&this.write(r,i),u.corked&&(u.corked=1,this.uncork()),u.ending||function endWritable(r,i,o){i.ending=!0,finishMaybe(r,i),o&&(i.finished?p.nextTick(o):r.once("finish",o));i.ended=!0,r.writable=!1}(this,u,o),this},Object.defineProperty(Writable.prototype,"writableLength",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Writable.prototype,"destroyed",{enumerable:!1,get:function get(){return void 0!==this._writableState&&this._writableState.destroyed},set:function set(r){this._writableState&&(this._writableState.destroyed=r)}}),Writable.prototype.destroy=k.destroy,Writable.prototype._undestroy=k.undestroy,Writable.prototype._destroy=function(r,i){i(r)}},828:function(r,i,o){"use strict";var u,p=o(4155);function _defineProperty(r,i,o){return i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r}var g=o(1086),y=Symbol("lastResolve"),w=Symbol("lastReject"),_=Symbol("error"),x=Symbol("ended"),k=Symbol("lastPromise"),P=Symbol("handlePromise"),O=Symbol("stream");function createIterResult(r,i){return{value:r,done:i}}function readAndResolve(r){var i=r[y];if(null!==i){var o=r[O].read();null!==o&&(r[k]=null,r[y]=null,r[w]=null,i(createIterResult(o,!1)))}}function onReadable(r){p.nextTick(readAndResolve,r)}var I=Object.getPrototypeOf((function(){})),B=Object.setPrototypeOf((_defineProperty(u={get stream(){return this[O]},next:function next(){var r=this,i=this[_];if(null!==i)return Promise.reject(i);if(this[x])return Promise.resolve(createIterResult(void 0,!0));if(this[O].destroyed)return new Promise((function(i,o){p.nextTick((function(){r[_]?o(r[_]):i(createIterResult(void 0,!0))}))}));var o,u=this[k];if(u)o=new Promise(function wrapForNext(r,i){return function(o,u){r.then((function(){i[x]?o(createIterResult(void 0,!0)):i[P](o,u)}),u)}}(u,this));else{var g=this[O].read();if(null!==g)return Promise.resolve(createIterResult(g,!1));o=new Promise(this[P])}return this[k]=o,o}},Symbol.asyncIterator,(function(){return this})),_defineProperty(u,"return",(function _return(){var r=this;return new Promise((function(i,o){r[O].destroy(null,(function(r){r?o(r):i(createIterResult(void 0,!0))}))}))})),u),I);r.exports=function createReadableStreamAsyncIterator(r){var i,o=Object.create(B,(_defineProperty(i={},O,{value:r,writable:!0}),_defineProperty(i,y,{value:null,writable:!0}),_defineProperty(i,w,{value:null,writable:!0}),_defineProperty(i,_,{value:null,writable:!0}),_defineProperty(i,x,{value:r._readableState.endEmitted,writable:!0}),_defineProperty(i,P,{value:function value(r,i){var u=o[O].read();u?(o[k]=null,o[y]=null,o[w]=null,r(createIterResult(u,!1))):(o[y]=r,o[w]=i)},writable:!0}),i));return o[k]=null,g(r,(function(r){if(r&&"ERR_STREAM_PREMATURE_CLOSE"!==r.code){var i=o[w];return null!==i&&(o[k]=null,o[y]=null,o[w]=null,i(r)),void(o[_]=r)}var u=o[y];null!==u&&(o[k]=null,o[y]=null,o[w]=null,u(createIterResult(void 0,!0))),o[x]=!0})),r.on("readable",onReadable.bind(null,o)),o}},1029:function(r,i,o){"use strict";var u=o(4155);function emitErrorAndCloseNT(r,i){emitErrorNT(r,i),emitCloseNT(r)}function emitCloseNT(r){r._writableState&&!r._writableState.emitClose||r._readableState&&!r._readableState.emitClose||r.emit("close")}function emitErrorNT(r,i){r.emit("error",i)}r.exports={destroy:function destroy(r,i){var o=this,p=this._readableState&&this._readableState.destroyed,g=this._writableState&&this._writableState.destroyed;return p||g?(i?i(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,u.nextTick(emitErrorNT,this,r)):u.nextTick(emitErrorNT,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,(function(r){!i&&r?o._writableState?o._writableState.errorEmitted?u.nextTick(emitCloseNT,o):(o._writableState.errorEmitted=!0,u.nextTick(emitErrorAndCloseNT,o,r)):u.nextTick(emitErrorAndCloseNT,o,r):i?(u.nextTick(emitCloseNT,o),i(r)):u.nextTick(emitCloseNT,o)})),this)},undestroy:function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function errorOrDestroy(r,i){var o=r._readableState,u=r._writableState;o&&o.autoDestroy||u&&u.autoDestroy?r.destroy(i):r.emit("error",i)}}},1086:function(r,i,o){"use strict";var u=o(8106).q.ERR_STREAM_PREMATURE_CLOSE;function noop(){}r.exports=function eos(r,i,o){if("function"==typeof i)return eos(r,null,i);i||(i={}),o=function once(r){var i=!1;return function(){if(!i){i=!0;for(var o=arguments.length,u=new Array(o),p=0;p<o;p++)u[p]=arguments[p];r.apply(this,u)}}}(o||noop);var p=i.readable||!1!==i.readable&&r.readable,g=i.writable||!1!==i.writable&&r.writable,y=function onlegacyfinish(){r.writable||_()},w=r._writableState&&r._writableState.finished,_=function onfinish(){g=!1,w=!0,p||o.call(r)},x=r._readableState&&r._readableState.endEmitted,k=function onend(){p=!1,x=!0,g||o.call(r)},P=function onerror(i){o.call(r,i)},O=function onclose(){var i;return p&&!x?(r._readableState&&r._readableState.ended||(i=new u),o.call(r,i)):g&&!w?(r._writableState&&r._writableState.ended||(i=new u),o.call(r,i)):void 0},I=function onrequest(){r.req.on("finish",_)};return!function isRequest(r){return r.setHeader&&"function"==typeof r.abort}(r)?g&&!r._writableState&&(r.on("end",y),r.on("close",y)):(r.on("complete",_),r.on("abort",O),r.req?I():r.on("request",I)),r.on("end",k),r.on("finish",_),!1!==i.error&&r.on("error",P),r.on("close",O),function(){r.removeListener("complete",_),r.removeListener("abort",O),r.removeListener("request",I),r.req&&r.req.removeListener("finish",_),r.removeListener("end",y),r.removeListener("close",y),r.removeListener("finish",_),r.removeListener("end",k),r.removeListener("error",P),r.removeListener("close",O)}}},1265:function(r){r.exports=function(){throw new Error("Readable.from is not available in the browser")}},6472:function(r,i,o){"use strict";var u;var p=o(8106).q,g=p.ERR_MISSING_ARGS,y=p.ERR_STREAM_DESTROYED;function noop(r){if(r)throw r}function destroyer(r,i,p,g){g=function once(r){var i=!1;return function(){i||(i=!0,r.apply(void 0,arguments))}}(g);var w=!1;r.on("close",(function(){w=!0})),void 0===u&&(u=o(1086)),u(r,{readable:i,writable:p},(function(r){if(r)return g(r);w=!0,g()}));var _=!1;return function(i){if(!w&&!_)return _=!0,function isRequest(r){return r.setHeader&&"function"==typeof r.abort}(r)?r.abort():"function"==typeof r.destroy?r.destroy():void g(i||new y("pipe"))}}function call(r){r()}function pipe(r,i){return r.pipe(i)}function popCallback(r){return r.length?"function"!=typeof r[r.length-1]?noop:r.pop():noop}r.exports=function pipeline(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];var u,p=popCallback(i);if(Array.isArray(i[0])&&(i=i[0]),i.length<2)throw new g("streams");var y=i.map((function(r,o){var g=o<i.length-1;return destroyer(r,g,o>0,(function(r){u||(u=r),r&&y.forEach(call),g||(y.forEach(call),p(u))}))}));return i.reduce(pipe)}},94:function(r,i,o){"use strict";var u=o(8106).q.ERR_INVALID_OPT_VALUE;r.exports={getHighWaterMark:function getHighWaterMark(r,i,o,p){var g=function highWaterMarkFrom(r,i,o){return null!=r.highWaterMark?r.highWaterMark:i?r[o]:null}(i,p,o);if(null!=g){if(!isFinite(g)||Math.floor(g)!==g||g<0)throw new u(p?o:"highWaterMark",g);return Math.floor(g)}return r.objectMode?16:16384}}},3194:function(r,i,o){r.exports=o(7187).EventEmitter},2984:function(r,i,o){var u,p,g;p=[],void 0===(g="function"==typeof(u=function(){"use strict";function b(r,i){return void 0===i?i={autoBom:!1}:"object"!=typeof i&&(i={autoBom:!i}),i.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(r.type)?new Blob(["\ufeff",r],{type:r.type}):r}function c(r,i,o){var u=new XMLHttpRequest;u.open("GET",r),u.responseType="blob",u.onload=function(){p(u.response,i,o)},u.onerror=function(){},u.send()}function d(r){var i=new XMLHttpRequest;i.open("HEAD",r,!1);try{i.send()}catch(r){}return 200<=i.status&&299>=i.status}function e(r){try{r.dispatchEvent(new MouseEvent("click"))}catch(o){var i=document.createEvent("MouseEvents");i.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),r.dispatchEvent(i)}}var i="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof o.g&&o.g.global===o.g?o.g:void 0,u=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),p=i.saveAs||("object"!=typeof window||window!==i?function(){}:"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype&&!u?function(r,o,u){var p=i.URL||i.webkitURL,g=document.createElement("a");o=o||r.name||"download",g.download=o,g.rel="noopener","string"==typeof r?(g.href=r,g.origin===location.origin?e(g):d(g.href)?c(r,o,u):e(g,g.target="_blank")):(g.href=p.createObjectURL(r),setTimeout((function(){p.revokeObjectURL(g.href)}),4e4),setTimeout((function(){e(g)}),0))}:"msSaveOrOpenBlob"in navigator?function(r,i,o){if(i=i||r.name||"download","string"!=typeof r)navigator.msSaveOrOpenBlob(b(r,o),i);else if(d(r))c(r,i,o);else{var u=document.createElement("a");u.href=r,u.target="_blank",setTimeout((function(){e(u)}))}}:function(r,o,p,g){if((g=g||open("","_blank"))&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof r)return c(r,o,p);var y="application/octet-stream"===r.type,w=/constructor/i.test(i.HTMLElement)||i.safari,_=/CriOS\/[\d]+/.test(navigator.userAgent);if((_||y&&w||u)&&"undefined"!=typeof FileReader){var x=new FileReader;x.onloadend=function(){var r=x.result;r=_?r:r.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=r:location=r,g=null},x.readAsDataURL(r)}else{var k=i.URL||i.webkitURL,P=k.createObjectURL(r);g?g.location=P:location.href=P,g=null,setTimeout((function(){k.revokeObjectURL(P)}),4e4)}});i.saveAs=p.saveAs=p,r.exports=p})?u.apply(i,p):u)||(r.exports=g)},2553:function(r,i,o){"use strict";var u=o(4559).Buffer,p=u.isEncoding||function(r){switch((r=""+r)&&r.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function StringDecoder(r){var i;switch(this.encoding=function normalizeEncoding(r){var i=function _normalizeEncoding(r){if(!r)return"utf8";for(var i;;)switch(r){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return r;default:if(i)return;r=(""+r).toLowerCase(),i=!0}}(r);if("string"!=typeof i&&(u.isEncoding===p||!p(r)))throw new Error("Unknown encoding: "+r);return i||r}(r),this.encoding){case"utf16le":this.text=utf16Text,this.end=utf16End,i=4;break;case"utf8":this.fillLast=utf8FillLast,i=4;break;case"base64":this.text=base64Text,this.end=base64End,i=3;break;default:return this.write=simpleWrite,void(this.end=simpleEnd)}this.lastNeed=0,this.lastTotal=0,this.lastChar=u.allocUnsafe(i)}function utf8CheckByte(r){return r<=127?0:r>>5==6?2:r>>4==14?3:r>>3==30?4:r>>6==2?-1:-2}function utf8FillLast(r){var i=this.lastTotal-this.lastNeed,o=function utf8CheckExtraBytes(r,i,o){if(128!=(192&i[0]))return r.lastNeed=0,"�";if(r.lastNeed>1&&i.length>1){if(128!=(192&i[1]))return r.lastNeed=1,"�";if(r.lastNeed>2&&i.length>2&&128!=(192&i[2]))return r.lastNeed=2,"�"}}(this,r);return void 0!==o?o:this.lastNeed<=r.length?(r.copy(this.lastChar,i,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(r.copy(this.lastChar,i,0,r.length),void(this.lastNeed-=r.length))}function utf16Text(r,i){if((r.length-i)%2==0){var o=r.toString("utf16le",i);if(o){var u=o.charCodeAt(o.length-1);if(u>=55296&&u<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=r[r.length-2],this.lastChar[1]=r[r.length-1],o.slice(0,-1)}return o}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=r[r.length-1],r.toString("utf16le",i,r.length-1)}function utf16End(r){var i=r&&r.length?this.write(r):"";if(this.lastNeed){var o=this.lastTotal-this.lastNeed;return i+this.lastChar.toString("utf16le",0,o)}return i}function base64Text(r,i){var o=(r.length-i)%3;return 0===o?r.toString("base64",i):(this.lastNeed=3-o,this.lastTotal=3,1===o?this.lastChar[0]=r[r.length-1]:(this.lastChar[0]=r[r.length-2],this.lastChar[1]=r[r.length-1]),r.toString("base64",i,r.length-o))}function base64End(r){var i=r&&r.length?this.write(r):"";return this.lastNeed?i+this.lastChar.toString("base64",0,3-this.lastNeed):i}function simpleWrite(r){return r.toString(this.encoding)}function simpleEnd(r){return r&&r.length?this.write(r):""}i.s=StringDecoder,StringDecoder.prototype.write=function(r){if(0===r.length)return"";var i,o;if(this.lastNeed){if(void 0===(i=this.fillLast(r)))return"";o=this.lastNeed,this.lastNeed=0}else o=0;return o<r.length?i?i+this.text(r,o):this.text(r,o):i||""},StringDecoder.prototype.end=function utf8End(r){var i=r&&r.length?this.write(r):"";return this.lastNeed?i+"�":i},StringDecoder.prototype.text=function utf8Text(r,i){var o=function utf8CheckIncomplete(r,i,o){var u=i.length-1;if(u<o)return 0;var p=utf8CheckByte(i[u]);if(p>=0)return p>0&&(r.lastNeed=p-1),p;if(--u<o||-2===p)return 0;if(p=utf8CheckByte(i[u]),p>=0)return p>0&&(r.lastNeed=p-2),p;if(--u<o||-2===p)return 0;if(p=utf8CheckByte(i[u]),p>=0)return p>0&&(2===p?p=0:r.lastNeed=p-3),p;return 0}(this,r,i);if(!this.lastNeed)return r.toString("utf8",i);this.lastTotal=o;var u=r.length-(o-this.lastNeed);return r.copy(this.lastChar,0,u),r.toString("utf8",i,u)},StringDecoder.prototype.fillLast=function(r){if(this.lastNeed<=r.length)return r.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);r.copy(this.lastChar,this.lastTotal-this.lastNeed,0,r.length),this.lastNeed-=r.length}},311:function(r){function Tree(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function Data(r,i){this.source=r,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=i,this.destLen=0,this.ltree=new Tree,this.dtree=new Tree}var i=new Tree,o=new Tree,u=new Uint8Array(30),p=new Uint16Array(30),g=new Uint8Array(30),y=new Uint16Array(30),w=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_=new Tree,x=new Uint8Array(320);function tinf_build_bits_base(r,i,o,u){var p,g;for(p=0;p<o;++p)r[p]=0;for(p=0;p<30-o;++p)r[p+o]=p/o|0;for(g=u,p=0;p<30;++p)i[p]=g,g+=1<<r[p]}var k=new Uint16Array(16);function tinf_build_tree(r,i,o,u){var p,g;for(p=0;p<16;++p)r.table[p]=0;for(p=0;p<u;++p)r.table[i[o+p]]++;for(r.table[0]=0,g=0,p=0;p<16;++p)k[p]=g,g+=r.table[p];for(p=0;p<u;++p)i[o+p]&&(r.trans[k[i[o+p]]++]=p)}function tinf_getbit(r){r.bitcount--||(r.tag=r.source[r.sourceIndex++],r.bitcount=7);var i=1&r.tag;return r.tag>>>=1,i}function tinf_read_bits(r,i,o){if(!i)return o;for(;r.bitcount<24;)r.tag|=r.source[r.sourceIndex++]<<r.bitcount,r.bitcount+=8;var u=r.tag&65535>>>16-i;return r.tag>>>=i,r.bitcount-=i,u+o}function tinf_decode_symbol(r,i){for(;r.bitcount<24;)r.tag|=r.source[r.sourceIndex++]<<r.bitcount,r.bitcount+=8;var o=0,u=0,p=0,g=r.tag;do{u=2*u+(1&g),g>>>=1,++p,o+=i.table[p],u-=i.table[p]}while(u>=0);return r.tag=g,r.bitcount-=p,i.trans[o+u]}function tinf_decode_trees(r,i,o){var u,p,g,y,k,P;for(u=tinf_read_bits(r,5,257),p=tinf_read_bits(r,5,1),g=tinf_read_bits(r,4,4),y=0;y<19;++y)x[y]=0;for(y=0;y<g;++y){var O=tinf_read_bits(r,3,0);x[w[y]]=O}for(tinf_build_tree(_,x,0,19),k=0;k<u+p;){var I=tinf_decode_symbol(r,_);switch(I){case 16:var B=x[k-1];for(P=tinf_read_bits(r,2,3);P;--P)x[k++]=B;break;case 17:for(P=tinf_read_bits(r,3,3);P;--P)x[k++]=0;break;case 18:for(P=tinf_read_bits(r,7,11);P;--P)x[k++]=0;break;default:x[k++]=I}}tinf_build_tree(i,x,0,u),tinf_build_tree(o,x,u,p)}function tinf_inflate_block_data(r,i,o){for(;;){var w,_,x,k,P=tinf_decode_symbol(r,i);if(256===P)return 0;if(P<256)r.dest[r.destLen++]=P;else for(w=tinf_read_bits(r,u[P-=257],p[P]),_=tinf_decode_symbol(r,o),k=x=r.destLen-tinf_read_bits(r,g[_],y[_]);k<x+w;++k)r.dest[r.destLen++]=r.dest[k]}}function tinf_inflate_uncompressed_block(r){for(var i,o;r.bitcount>8;)r.sourceIndex--,r.bitcount-=8;if((i=256*(i=r.source[r.sourceIndex+1])+r.source[r.sourceIndex])!==(65535&~(256*r.source[r.sourceIndex+3]+r.source[r.sourceIndex+2])))return-3;for(r.sourceIndex+=4,o=i;o;--o)r.dest[r.destLen++]=r.source[r.sourceIndex++];return r.bitcount=0,0}!function tinf_build_fixed_trees(r,i){var o;for(o=0;o<7;++o)r.table[o]=0;for(r.table[7]=24,r.table[8]=152,r.table[9]=112,o=0;o<24;++o)r.trans[o]=256+o;for(o=0;o<144;++o)r.trans[24+o]=o;for(o=0;o<8;++o)r.trans[168+o]=280+o;for(o=0;o<112;++o)r.trans[176+o]=144+o;for(o=0;o<5;++o)i.table[o]=0;for(i.table[5]=32,o=0;o<32;++o)i.trans[o]=o}(i,o),tinf_build_bits_base(u,p,4,3),tinf_build_bits_base(g,y,2,1),u[28]=0,p[28]=258,r.exports=function tinf_uncompress(r,u){var p,g,y=new Data(r,u);do{switch(p=tinf_getbit(y),tinf_read_bits(y,2,0)){case 0:g=tinf_inflate_uncompressed_block(y);break;case 1:g=tinf_inflate_block_data(y,i,o);break;case 2:tinf_decode_trees(y,y.ltree,y.dtree),g=tinf_inflate_block_data(y,y.ltree,y.dtree);break;default:g=-3}if(0!==g)throw new Error("Data error")}while(!p);return y.destLen<y.dest.length?"function"==typeof y.dest.slice?y.dest.slice(0,y.destLen):y.dest.subarray(0,y.destLen):y.dest}},1917:function(r,i,o){"use strict";var u,p=o(8823).Buffer;function _defineProperties(r,i){for(var o=0;o<i.length;o++){var u=i[o];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(r,(p=u.key,g=void 0,"symbol"==typeof(g=function _toPrimitive(r,i){if("object"!=typeof r||null===r)return r;var o=r[Symbol.toPrimitive];if(void 0!==o){var u=o.call(r,i||"default");if("object"!=typeof u)return u;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(r)}(p,"string"))?g:String(g)),u)}var p,g}function _createClass(r,i,o){return i&&_defineProperties(r.prototype,i),o&&_defineProperties(r,o),Object.defineProperty(r,"prototype",{writable:!1}),r}function _inheritsLoose(r,i){r.prototype=Object.create(i.prototype),r.prototype.constructor=r,_setPrototypeOf(r,i)}function _setPrototypeOf(r,i){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(r,i){return r.__proto__=i,r},_setPrototypeOf(r,i)}function _createForOfIteratorHelperLoose(r,i){var o="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(o)return(o=o.call(r)).next.bind(o);if(Array.isArray(r)||(o=function _unsupportedIterableToArray(r,i){if(!r)return;if("string"==typeof r)return _arrayLikeToArray(r,i);var o=Object.prototype.toString.call(r).slice(8,-1);"Object"===o&&r.constructor&&(o=r.constructor.name);if("Map"===o||"Set"===o)return Array.from(r);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return _arrayLikeToArray(r,i)}(r))||i&&r&&"number"==typeof r.length){o&&(r=o);var u=0;return function(){return u>=r.length?{done:!0}:{done:!1,value:r[u++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(r,i){(null==i||i>r.length)&&(i=r.length);for(var o=0,u=new Array(i);o<i;o++)u[o]=r[o];return u}function _interopDefault(r){return r&&"object"==typeof r&&"default"in r?r.default:r}o(2526),o(1817),o(2165),o(6649),o(6078),o(1539),o(4747),o(7941),o(7042),o(6992),o(1532),o(8783),o(3948),o(2222),o(9653),o(1249),o(2087),o(8309),o(9601),o(4953),o(8674),o(5003),o(189),o(561),o(2481),o(2707),o(4916),o(4723),o(1038),o(9600),o(3371),o(3290),o(3299),o(8255),o(2990),o(8927),o(3105),o(5035),o(4345),o(7174),o(2846),o(4731),o(7209),o(6319),o(8867),o(7789),o(3739),o(9368),o(4483),o(2056),o(3462),o(678),o(7462),o(3824),o(5021),o(2974),o(5016),o(5109),o(9714),o(3210);var g=_interopDefault(o(5106)),y=o(6610),w=_interopDefault(o(251)),_=_interopDefault(o(3631)),x=_interopDefault(o(4781)),k=_interopDefault(o(9811)),P=_interopDefault(o(6313)),O=_interopDefault(o(311)),I=_interopDefault(o(7709)),B=o(3857),R={logErrors:!1},D=[];function _defineProperty(r,i,o){return i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r}function _applyDecoratedDescriptor(r,i,o,u,p){var g={};return Object.keys(u).forEach((function(r){g[r]=u[r]})),g.enumerable=!!g.enumerable,g.configurable=!!g.configurable,("value"in g||g.initializer)&&(g.writable=!0),g=o.slice().reverse().reduce((function(o,u){return u(r,i,o)||o}),g),p&&void 0!==g.initializer&&(g.value=g.initializer?g.initializer.call(p):void 0,g.initializer=void 0),void 0===g.initializer&&(Object.defineProperty(r,i,g),g=null),g}function cache(r,i,o){if(o.get){var u=o.get;o.get=function(){var r=u.call(this);return Object.defineProperty(this,i,{value:r}),r}}else if("function"==typeof o.value){var p=o.value;return{get:function get(){var r=new Map;function memoized(){for(var i=arguments.length,o=new Array(i),u=0;u<i;u++)o[u]=arguments[u];var g=o.length>0?o[0]:"value";if(r.has(g))return r.get(g);var y=p.apply(this,o);return r.set(g,y),y}return Object.defineProperty(this,i,{value:memoized}),memoized}}}}R.registerFormat=function(r){D.push(r)},R.openSync=function(r,i){var o=B.readFileSync(r);return R.create(o,i)},R.open=function(r,i,o){"function"==typeof i&&(o=i,i=null),B.readFile(r,(function(r,u){if(r)return o(r);try{var p=R.create(u,i)}catch(r){return o(r)}return o(null,p)}))},R.create=function(r,i){for(var o=0;o<D.length;o++){var u=D[o];if(u.probe(r)){var p=new u(new g.DecodeStream(r));return i?p.getFont(i):p}}throw new Error("Unknown font format")},R.defaultLanguage="en",R.setDefaultLanguage=function(r){void 0===r&&(r="en"),R.defaultLanguage=r};var N=new g.Struct({firstCode:g.uint16,entryCount:g.uint16,idDelta:g.int16,idRangeOffset:g.uint16}),W=new g.Struct({startCharCode:g.uint32,endCharCode:g.uint32,glyphID:g.uint32}),U=new g.Struct({startUnicodeValue:g.uint24,additionalCount:g.uint8}),j=new g.Struct({unicodeValue:g.uint24,glyphID:g.uint16}),G=new g.Array(U,g.uint32),X=new g.Array(j,g.uint32),K=new g.Struct({varSelector:g.uint24,defaultUVS:new g.Pointer(g.uint32,G,{type:"parent"}),nonDefaultUVS:new g.Pointer(g.uint32,X,{type:"parent"})}),Y=new g.VersionedStruct(g.uint16,{0:{length:g.uint16,language:g.uint16,codeMap:new g.LazyArray(g.uint8,256)},2:{length:g.uint16,language:g.uint16,subHeaderKeys:new g.Array(g.uint16,256),subHeaderCount:function subHeaderCount(r){return Math.max.apply(Math,r.subHeaderKeys)},subHeaders:new g.LazyArray(N,"subHeaderCount"),glyphIndexArray:new g.LazyArray(g.uint16,"subHeaderCount")},4:{length:g.uint16,language:g.uint16,segCountX2:g.uint16,segCount:function segCount(r){return r.segCountX2>>1},searchRange:g.uint16,entrySelector:g.uint16,rangeShift:g.uint16,endCode:new g.LazyArray(g.uint16,"segCount"),reservedPad:new g.Reserved(g.uint16),startCode:new g.LazyArray(g.uint16,"segCount"),idDelta:new g.LazyArray(g.int16,"segCount"),idRangeOffset:new g.LazyArray(g.uint16,"segCount"),glyphIndexArray:new g.LazyArray(g.uint16,(function(r){return(r.length-r._currentOffset)/2}))},6:{length:g.uint16,language:g.uint16,firstCode:g.uint16,entryCount:g.uint16,glyphIndices:new g.LazyArray(g.uint16,"entryCount")},8:{reserved:new g.Reserved(g.uint16),length:g.uint32,language:g.uint16,is32:new g.LazyArray(g.uint8,8192),nGroups:g.uint32,groups:new g.LazyArray(W,"nGroups")},10:{reserved:new g.Reserved(g.uint16),length:g.uint32,language:g.uint32,firstCode:g.uint32,entryCount:g.uint32,glyphIndices:new g.LazyArray(g.uint16,"numChars")},12:{reserved:new g.Reserved(g.uint16),length:g.uint32,language:g.uint32,nGroups:g.uint32,groups:new g.LazyArray(W,"nGroups")},13:{reserved:new g.Reserved(g.uint16),length:g.uint32,language:g.uint32,nGroups:g.uint32,groups:new g.LazyArray(W,"nGroups")},14:{length:g.uint32,numRecords:g.uint32,varSelectors:new g.LazyArray(K,"numRecords")}}),J=new g.Struct({platformID:g.uint16,encodingID:g.uint16,table:new g.Pointer(g.uint32,Y,{type:"parent",lazy:!0})}),$=new g.Struct({version:g.uint16,numSubtables:g.uint16,tables:new g.Array(J,"numSubtables")}),ee=new g.Struct({version:g.int32,revision:g.int32,checkSumAdjustment:g.uint32,magicNumber:g.uint32,flags:g.uint16,unitsPerEm:g.uint16,created:new g.Array(g.int32,2),modified:new g.Array(g.int32,2),xMin:g.int16,yMin:g.int16,xMax:g.int16,yMax:g.int16,macStyle:new g.Bitfield(g.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:g.uint16,fontDirectionHint:g.int16,indexToLocFormat:g.int16,glyphDataFormat:g.int16}),te=new g.Struct({version:g.int32,ascent:g.int16,descent:g.int16,lineGap:g.int16,advanceWidthMax:g.uint16,minLeftSideBearing:g.int16,minRightSideBearing:g.int16,xMaxExtent:g.int16,caretSlopeRise:g.int16,caretSlopeRun:g.int16,caretOffset:g.int16,reserved:new g.Reserved(g.int16,4),metricDataFormat:g.int16,numberOfMetrics:g.uint16}),re=new g.Struct({advance:g.uint16,bearing:g.int16}),ne=new g.Struct({metrics:new g.LazyArray(re,(function(r){return r.parent.hhea.numberOfMetrics})),bearings:new g.LazyArray(g.int16,(function(r){return r.parent.maxp.numGlyphs-r.parent.hhea.numberOfMetrics}))}),ie=new g.Struct({version:g.int32,numGlyphs:g.uint16,maxPoints:g.uint16,maxContours:g.uint16,maxComponentPoints:g.uint16,maxComponentContours:g.uint16,maxZones:g.uint16,maxTwilightPoints:g.uint16,maxStorage:g.uint16,maxFunctionDefs:g.uint16,maxInstructionDefs:g.uint16,maxStackElements:g.uint16,maxSizeOfInstructions:g.uint16,maxComponentElements:g.uint16,maxComponentDepth:g.uint16});function getEncoding(r,i,o){return void 0===o&&(o=0),1===r&&ae[o]?ae[o]:oe[r][i]}var oe=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],ae={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},se=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],ce=new g.Struct({platformID:g.uint16,encodingID:g.uint16,languageID:g.uint16,nameID:g.uint16,length:g.uint16,string:new g.Pointer(g.uint16,new g.String("length",(function(r){return getEncoding(r.platformID,r.encodingID,r.languageID)})),{type:"parent",relativeTo:function relativeTo(r){return r.parent.stringOffset},allowNull:!1})}),le=new g.Struct({length:g.uint16,tag:new g.Pointer(g.uint16,new g.String("length","utf16be"),{type:"parent",relativeTo:function relativeTo(r){return r.stringOffset}})}),ue=new g.VersionedStruct(g.uint16,{0:{count:g.uint16,stringOffset:g.uint16,records:new g.Array(ce,"count")},1:{count:g.uint16,stringOffset:g.uint16,records:new g.Array(ce,"count"),langTagCount:g.uint16,langTags:new g.Array(le,"langTagCount")}}),fe=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];ue.process=function(r){for(var i,o={},u=_createForOfIteratorHelperLoose(this.records);!(i=u()).done;){var p=i.value,g=se[p.platformID][p.languageID];null==g&&null!=this.langTags&&p.languageID>=32768&&(g=this.langTags[p.languageID-32768].tag),null==g&&(g=p.platformID+"-"+p.languageID);var y=p.nameID>=256?"fontFeatures":fe[p.nameID]||p.nameID;null==o[y]&&(o[y]={});var w=o[y];p.nameID>=256&&(w=w[p.nameID]||(w[p.nameID]={})),"string"!=typeof p.string&&"string"==typeof w[g]||(w[g]=p.string)}this.records=o},ue.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var r=[];for(var i in this.records){var o=this.records[i];"fontFeatures"!==i&&(r.push({platformID:3,encodingID:1,languageID:1033,nameID:fe.indexOf(i),length:p.byteLength(o.en,"utf16le"),string:o.en}),"postscriptName"===i&&r.push({platformID:1,encodingID:0,languageID:0,nameID:fe.indexOf(i),length:o.en.length,string:o.en}))}this.records=r,this.count=r.length,this.stringOffset=ue.size(this,null,!1)}};var he=new g.VersionedStruct(g.uint16,{header:{xAvgCharWidth:g.int16,usWeightClass:g.uint16,usWidthClass:g.uint16,fsType:new g.Bitfield(g.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:g.int16,ySubscriptYSize:g.int16,ySubscriptXOffset:g.int16,ySubscriptYOffset:g.int16,ySuperscriptXSize:g.int16,ySuperscriptYSize:g.int16,ySuperscriptXOffset:g.int16,ySuperscriptYOffset:g.int16,yStrikeoutSize:g.int16,yStrikeoutPosition:g.int16,sFamilyClass:g.int16,panose:new g.Array(g.uint8,10),ulCharRange:new g.Array(g.uint32,4),vendorID:new g.String(4),fsSelection:new g.Bitfield(g.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:g.uint16,usLastCharIndex:g.uint16},0:{},1:{typoAscender:g.int16,typoDescender:g.int16,typoLineGap:g.int16,winAscent:g.uint16,winDescent:g.uint16,codePageRange:new g.Array(g.uint32,2)},2:{typoAscender:g.int16,typoDescender:g.int16,typoLineGap:g.int16,winAscent:g.uint16,winDescent:g.uint16,codePageRange:new g.Array(g.uint32,2),xHeight:g.int16,capHeight:g.int16,defaultChar:g.uint16,breakChar:g.uint16,maxContent:g.uint16},5:{typoAscender:g.int16,typoDescender:g.int16,typoLineGap:g.int16,winAscent:g.uint16,winDescent:g.uint16,codePageRange:new g.Array(g.uint32,2),xHeight:g.int16,capHeight:g.int16,defaultChar:g.uint16,breakChar:g.uint16,maxContent:g.uint16,usLowerOpticalPointSize:g.uint16,usUpperOpticalPointSize:g.uint16}}),de=he.versions;de[3]=de[4]=de[2];var pe=new g.VersionedStruct(g.fixed32,{header:{italicAngle:g.fixed32,underlinePosition:g.int16,underlineThickness:g.int16,isFixedPitch:g.uint32,minMemType42:g.uint32,maxMemType42:g.uint32,minMemType1:g.uint32,maxMemType1:g.uint32},1:{},2:{numberOfGlyphs:g.uint16,glyphNameIndex:new g.Array(g.uint16,"numberOfGlyphs"),names:new g.Array(new g.String(g.uint8))},2.5:{numberOfGlyphs:g.uint16,offsets:new g.Array(g.uint8,"numberOfGlyphs")},3:{},4:{map:new g.Array(g.uint32,(function(r){return r.parent.maxp.numGlyphs}))}}),ge=new g.Struct({controlValues:new g.Array(g.int16)}),ye=new g.Struct({instructions:new g.Array(g.uint8)}),ve=new g.VersionedStruct("head.indexToLocFormat",{0:{offsets:new g.Array(g.uint16)},1:{offsets:new g.Array(g.uint32)}});ve.process=function(){if(0===this.version)for(var r=0;r<this.offsets.length;r++)this.offsets[r]<<=1},ve.preEncode=function(){if(0===this.version)for(var r=0;r<this.offsets.length;r++)this.offsets[r]>>>=1};var me=new g.Struct({controlValueProgram:new g.Array(g.uint8)}),be=new g.Array(new g.Buffer),we=function(){function CFFIndex(r){this.type=r}var r=CFFIndex.prototype;return r.getCFFVersion=function getCFFVersion(r){for(;r&&!r.hdrSize;)r=r.parent;return r?r.version:-1},r.decode=function decode(r,i){var o=this.getCFFVersion(i)>=2?r.readUInt32BE():r.readUInt16BE();if(0===o)return[];var u,p=r.readUInt8();if(1===p)u=g.uint8;else if(2===p)u=g.uint16;else if(3===p)u=g.uint24;else{if(4!==p)throw new Error("Bad offset size in CFFIndex: ".concat(p," ").concat(r.pos));u=g.uint32}for(var y=[],w=r.pos+(o+1)*p-1,_=u.decode(r),x=0;x<o;x++){var k=u.decode(r);if(null!=this.type){var P=r.pos;r.pos=w+_,i.length=k-_,y.push(this.type.decode(r,i)),r.pos=P}else y.push({offset:w+_,length:k-_});_=k}return r.pos=w+_,y},r.size=function size(r,i){var size=2;if(0===r.length)return size;for(var o,u=this.type||new g.Buffer,p=1,y=0;y<r.length;y++){var w=r[y];p+=u.size(w,i)}if(p<=255)o=g.uint8;else if(p<=65535)o=g.uint16;else if(p<=16777215)o=g.uint24;else{if(!(p<=4294967295))throw new Error("Bad offset in CFFIndex");o=g.uint32}return size+=1+o.size()*(r.length+1),size+=p-1,size},r.encode=function encode(r,i,o){if(r.writeUInt16BE(i.length),0!==i.length){for(var u,p,y=this.type||new g.Buffer,w=[],_=1,x=_createForOfIteratorHelperLoose(i);!(u=x()).done;){var k=u.value,P=y.size(k,o);w.push(P),_+=P}if(_<=255)p=g.uint8;else if(_<=65535)p=g.uint16;else if(_<=16777215)p=g.uint24;else{if(!(_<=4294967295))throw new Error("Bad offset in CFFIndex");p=g.uint32}r.writeUInt8(p.size()),_=1,p.encode(r,_);for(var O=0,I=w;O<I.length;O++){_+=I[O],p.encode(r,_)}for(var B,R=_createForOfIteratorHelperLoose(i);!(B=R()).done;){var D=B.value;y.encode(r,D,o)}}},CFFIndex}(),_e=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],Se={".":10,E:11,"E-":12,"-":14},xe=function(){function CFFOperand(){}return CFFOperand.decode=function decode(r,i){if(32<=i&&i<=246)return i-139;if(247<=i&&i<=250)return 256*(i-247)+r.readUInt8()+108;if(251<=i&&i<=254)return 256*-(i-251)-r.readUInt8()-108;if(28===i)return r.readInt16BE();if(29===i)return r.readInt32BE();if(30===i){for(var o="";;){var u=r.readUInt8(),p=u>>4;if(15===p)break;o+=_e[p];var g=15&u;if(15===g)break;o+=_e[g]}return parseFloat(o)}return null},CFFOperand.size=function size(r){if(r.forceLarge&&(r=32768),(0|r)!==r){var i=""+r;return 1+Math.ceil((i.length+1)/2)}return-107<=r&&r<=107?1:108<=r&&r<=1131||-1131<=r&&r<=-108?2:-32768<=r&&r<=32767?3:5},CFFOperand.encode=function encode(r,i){var o=Number(i);if(i.forceLarge)return r.writeUInt8(29),r.writeInt32BE(o);if((0|o)===o)return-107<=o&&o<=107?r.writeUInt8(o+139):108<=o&&o<=1131?(o-=108,r.writeUInt8(247+(o>>8)),r.writeUInt8(255&o)):-1131<=o&&o<=-108?(o=-o-108,r.writeUInt8(251+(o>>8)),r.writeUInt8(255&o)):-32768<=o&&o<=32767?(r.writeUInt8(28),r.writeInt16BE(o)):(r.writeUInt8(29),r.writeInt32BE(o));r.writeUInt8(30);for(var u=""+o,p=0;p<u.length;p+=2){var g=u[p],y=Se[g]||+g;if(p===u.length-1)var w=15;else{var _=u[p+1];w=Se[_]||+_}r.writeUInt8(y<<4|15&w)}return 15!==w?r.writeUInt8(240):void 0},CFFOperand}(),Ce=function(){function CFFDict(r){void 0===r&&(r=[]),this.ops=r,this.fields={};for(var i,o=_createForOfIteratorHelperLoose(r);!(i=o()).done;){var u=i.value,p=Array.isArray(u[0])?u[0][0]<<8|u[0][1]:u[0];this.fields[p]=u}}var r=CFFDict.prototype;return r.decodeOperands=function decodeOperands(r,i,o,u){var p=this;if(Array.isArray(r))return u.map((function(u,g){return p.decodeOperands(r[g],i,o,[u])}));if(null!=r.decode)return r.decode(i,o,u);switch(r){case"number":case"offset":case"sid":return u[0];case"boolean":return!!u[0];default:return u}},r.encodeOperands=function encodeOperands(r,i,o,u){var p=this;return Array.isArray(r)?u.map((function(u,g){return p.encodeOperands(r[g],i,o,u)[0]})):null!=r.encode?r.encode(i,u,o):"number"==typeof u?[u]:"boolean"==typeof u?[+u]:Array.isArray(u)?u:[u]},r.decode=function decode(r,i){var o=r.pos+i.length,u={},p=[];for(var g in Object.defineProperties(u,{parent:{value:i},_startOffset:{value:r.pos}}),this.fields){var w=this.fields[g];u[w[1]]=w[3]}for(;r.pos<o;){var _=r.readUInt8();if(_<28){12===_&&(_=_<<8|r.readUInt8());var x=this.fields[_];if(!x)throw new Error("Unknown operator ".concat(_));var k=this.decodeOperands(x[2],r,u,p);null!=k&&(k instanceof y.PropertyDescriptor?Object.defineProperty(u,x[1],k):u[x[1]]=k),p=[]}else p.push(xe.decode(r,_))}return u},r.size=function size(r,i,o){void 0===o&&(o=!0);var u={parent:i,val:r,pointerSize:0,startOffset:i.startOffset||0},p=0;for(var g in this.fields){var y=this.fields[g],_=r[y[1]];if(null!=_&&!w(_,y[3])){for(var x,k=_createForOfIteratorHelperLoose(this.encodeOperands(y[2],null,u,_));!(x=k()).done;){var P=x.value;p+=xe.size(P)}p+=(Array.isArray(y[0])?y[0]:[y[0]]).length}}return o&&(p+=u.pointerSize),p},r.encode=function encode(r,i,o){var u={pointers:[],startOffset:r.pos,parent:o,val:i,pointerSize:0};u.pointerOffset=r.pos+this.size(i,u,!1);for(var p,g=_createForOfIteratorHelperLoose(this.ops);!(p=g()).done;){var y=p.value,_=i[y[1]];if(null!=_&&!w(_,y[3])){for(var x,k=_createForOfIteratorHelperLoose(this.encodeOperands(y[2],r,u,_));!(x=k()).done;){var P=x.value;xe.encode(r,P)}for(var O,I=_createForOfIteratorHelperLoose(Array.isArray(y[0])?y[0]:[y[0]]);!(O=I()).done;){var B=O.value;r.writeUInt8(B)}}}for(var R=0;R<u.pointers.length;){var D=u.pointers[R++];D.type.encode(r,D.val,D.parent)}},CFFDict}(),ke=function(r){function CFFPointer(i,o){return void 0===o&&(o={}),null==o.type&&(o.type="global"),r.call(this,null,i,o)||this}_inheritsLoose(CFFPointer,r);var i=CFFPointer.prototype;return i.decode=function decode(i,o,u){return this.offsetType={decode:function decode(){return u[0]}},r.prototype.decode.call(this,i,o,u)},i.encode=function encode(i,o,u){if(!i)return this.offsetType={size:function size(){return 0}},this.size(o,u),[new Pe(0)];var p=null;return this.offsetType={encode:function encode(r,i){return p=i}},r.prototype.encode.call(this,i,o,u),[new Pe(p)]},CFFPointer}(g.Pointer),Pe=function(){function Ptr(r){this.val=r,this.forceLarge=!0}return Ptr.prototype.valueOf=function valueOf(){return this.val},Ptr}(),Ae=new Ce([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",function(){function CFFBlendOp(){}return CFFBlendOp.decode=function decode(r,i,o){for(var u=o.pop();o.length>u;)o.pop()},CFFBlendOp}(),null],[19,"Subrs",new ke(new we,{type:"local"}),null]]),Ee=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],Te=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],Oe=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],Ie=new g.Struct({reserved:new g.Reserved(g.uint16),reqFeatureIndex:g.uint16,featureCount:g.uint16,featureIndexes:new g.Array(g.uint16,"featureCount")}),Be=new g.Struct({tag:new g.String(4),langSys:new g.Pointer(g.uint16,Ie,{type:"parent"})}),Fe=new g.Struct({defaultLangSys:new g.Pointer(g.uint16,Ie),count:g.uint16,langSysRecords:new g.Array(Be,"count")}),Le=new g.Struct({tag:new g.String(4),script:new g.Pointer(g.uint16,Fe,{type:"parent"})}),Re=new g.Array(Le,g.uint16),De=new g.Struct({featureParams:g.uint16,lookupCount:g.uint16,lookupListIndexes:new g.Array(g.uint16,"lookupCount")}),Me=new g.Struct({tag:new g.String(4),feature:new g.Pointer(g.uint16,De,{type:"parent"})}),Ne=new g.Array(Me,g.uint16),We=new g.Struct({markAttachmentType:g.uint8,flags:new g.Bitfield(g.uint8,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])});function LookupList(r){var i=new g.Struct({lookupType:g.uint16,flags:We,subTableCount:g.uint16,subTables:new g.Array(new g.Pointer(g.uint16,r),"subTableCount"),markFilteringSet:new g.Optional(g.uint16,(function(r){return r.flags.flags.useMarkFilteringSet}))});return new g.LazyArray(new g.Pointer(g.uint16,i),g.uint16)}var ze=new g.Struct({start:g.uint16,end:g.uint16,startCoverageIndex:g.uint16}),Ue=new g.VersionedStruct(g.uint16,{1:{glyphCount:g.uint16,glyphs:new g.Array(g.uint16,"glyphCount")},2:{rangeCount:g.uint16,rangeRecords:new g.Array(ze,"rangeCount")}}),je=new g.Struct({start:g.uint16,end:g.uint16,class:g.uint16}),Ge=new g.VersionedStruct(g.uint16,{1:{startGlyph:g.uint16,glyphCount:g.uint16,classValueArray:new g.Array(g.uint16,"glyphCount")},2:{classRangeCount:g.uint16,classRangeRecord:new g.Array(je,"classRangeCount")}}),Ve=new g.Struct({a:g.uint16,b:g.uint16,deltaFormat:g.uint16}),He=new g.Struct({sequenceIndex:g.uint16,lookupListIndex:g.uint16}),qe=new g.Struct({glyphCount:g.uint16,lookupCount:g.uint16,input:new g.Array(g.uint16,(function(r){return r.glyphCount-1})),lookupRecords:new g.Array(He,"lookupCount")}),Xe=new g.Array(new g.Pointer(g.uint16,qe),g.uint16),Ze=new g.Struct({glyphCount:g.uint16,lookupCount:g.uint16,classes:new g.Array(g.uint16,(function(r){return r.glyphCount-1})),lookupRecords:new g.Array(He,"lookupCount")}),Ke=new g.Array(new g.Pointer(g.uint16,Ze),g.uint16),Ye=new g.VersionedStruct(g.uint16,{1:{coverage:new g.Pointer(g.uint16,Ue),ruleSetCount:g.uint16,ruleSets:new g.Array(new g.Pointer(g.uint16,Xe),"ruleSetCount")},2:{coverage:new g.Pointer(g.uint16,Ue),classDef:new g.Pointer(g.uint16,Ge),classSetCnt:g.uint16,classSet:new g.Array(new g.Pointer(g.uint16,Ke),"classSetCnt")},3:{glyphCount:g.uint16,lookupCount:g.uint16,coverages:new g.Array(new g.Pointer(g.uint16,Ue),"glyphCount"),lookupRecords:new g.Array(He,"lookupCount")}}),Je=new g.Struct({backtrackGlyphCount:g.uint16,backtrack:new g.Array(g.uint16,"backtrackGlyphCount"),inputGlyphCount:g.uint16,input:new g.Array(g.uint16,(function(r){return r.inputGlyphCount-1})),lookaheadGlyphCount:g.uint16,lookahead:new g.Array(g.uint16,"lookaheadGlyphCount"),lookupCount:g.uint16,lookupRecords:new g.Array(He,"lookupCount")}),Qe=new g.Array(new g.Pointer(g.uint16,Je),g.uint16),$e=new g.VersionedStruct(g.uint16,{1:{coverage:new g.Pointer(g.uint16,Ue),chainCount:g.uint16,chainRuleSets:new g.Array(new g.Pointer(g.uint16,Qe),"chainCount")},2:{coverage:new g.Pointer(g.uint16,Ue),backtrackClassDef:new g.Pointer(g.uint16,Ge),inputClassDef:new g.Pointer(g.uint16,Ge),lookaheadClassDef:new g.Pointer(g.uint16,Ge),chainCount:g.uint16,chainClassSet:new g.Array(new g.Pointer(g.uint16,Qe),"chainCount")},3:{backtrackGlyphCount:g.uint16,backtrackCoverage:new g.Array(new g.Pointer(g.uint16,Ue),"backtrackGlyphCount"),inputGlyphCount:g.uint16,inputCoverage:new g.Array(new g.Pointer(g.uint16,Ue),"inputGlyphCount"),lookaheadGlyphCount:g.uint16,lookaheadCoverage:new g.Array(new g.Pointer(g.uint16,Ue),"lookaheadGlyphCount"),lookupCount:g.uint16,lookupRecords:new g.Array(He,"lookupCount")}}),et=new g.Fixed(16,"BE",14),tt=new g.Struct({startCoord:et,peakCoord:et,endCoord:et}),rt=new g.Struct({axisCount:g.uint16,regionCount:g.uint16,variationRegions:new g.Array(new g.Array(tt,"axisCount"),"regionCount")}),nt=new g.Struct({shortDeltas:new g.Array(g.int16,(function(r){return r.parent.shortDeltaCount})),regionDeltas:new g.Array(g.int8,(function(r){return r.parent.regionIndexCount-r.parent.shortDeltaCount})),deltas:function deltas(r){return r.shortDeltas.concat(r.regionDeltas)}}),it=new g.Struct({itemCount:g.uint16,shortDeltaCount:g.uint16,regionIndexCount:g.uint16,regionIndexes:new g.Array(g.uint16,"regionIndexCount"),deltaSets:new g.Array(nt,"itemCount")}),ot=new g.Struct({format:g.uint16,variationRegionList:new g.Pointer(g.uint32,rt),variationDataCount:g.uint16,itemVariationData:new g.Array(new g.Pointer(g.uint32,it),"variationDataCount")}),at=new g.VersionedStruct(g.uint16,{1:(u={axisIndex:g.uint16},u.axisIndex=g.uint16,u.filterRangeMinValue=et,u.filterRangeMaxValue=et,u)}),st=new g.Struct({conditionCount:g.uint16,conditionTable:new g.Array(new g.Pointer(g.uint32,at),"conditionCount")}),ct=new g.Struct({featureIndex:g.uint16,alternateFeatureTable:new g.Pointer(g.uint32,De,{type:"parent"})}),lt=new g.Struct({version:g.fixed32,substitutionCount:g.uint16,substitutions:new g.Array(ct,"substitutionCount")}),ut=new g.Struct({conditionSet:new g.Pointer(g.uint32,st,{type:"parent"}),featureTableSubstitution:new g.Pointer(g.uint32,lt,{type:"parent"})}),ft=new g.Struct({majorVersion:g.uint16,minorVersion:g.uint16,featureVariationRecordCount:g.uint32,featureVariationRecords:new g.Array(ut,"featureVariationRecordCount")}),ht=function(){function PredefinedOp(r,i){this.predefinedOps=r,this.type=i}var r=PredefinedOp.prototype;return r.decode=function decode(r,i,o){return this.predefinedOps[o[0]]?this.predefinedOps[o[0]]:this.type.decode(r,i,o)},r.size=function size(r,i){return this.type.size(r,i)},r.encode=function encode(r,i,o){var u=this.predefinedOps.indexOf(i);return-1!==u?u:this.type.encode(r,i,o)},PredefinedOp}(),dt=function(r){function CFFEncodingVersion(){return r.call(this,"UInt8")||this}return _inheritsLoose(CFFEncodingVersion,r),CFFEncodingVersion.prototype.decode=function decode(r){return 127&g.uint8.decode(r)},CFFEncodingVersion}(g.Number),pt=new g.Struct({first:g.uint16,nLeft:g.uint8}),gt=new g.Struct({first:g.uint16,nLeft:g.uint16}),yt=new ht([Te,["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"]],new ke(new g.VersionedStruct(new dt,{0:{nCodes:g.uint8,codes:new g.Array(g.uint8,"nCodes")},1:{nRanges:g.uint8,ranges:new g.Array(pt,"nRanges")}}),{lazy:!0})),vt=function(r){function RangeArray(){return r.apply(this,arguments)||this}return _inheritsLoose(RangeArray,r),RangeArray.prototype.decode=function decode(r,i){for(var o=y.resolveLength(this.length,r,i),u=0,p=[];u<o;){var g=this.type.decode(r,i);g.offset=u,u+=g.nLeft+1,p.push(g)}return p},RangeArray}(g.Array),mt=new g.VersionedStruct(g.uint8,{0:{glyphs:new g.Array(g.uint16,(function(r){return r.parent.CharStrings.length-1}))},1:{ranges:new vt(pt,(function(r){return r.parent.CharStrings.length-1}))},2:{ranges:new vt(gt,(function(r){return r.parent.CharStrings.length-1}))}}),bt=new ht([Oe,[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]],new ke(mt,{lazy:!0})),wt=new g.Struct({first:g.uint16,fd:g.uint8}),_t=new g.Struct({first:g.uint32,fd:g.uint16}),St=new g.VersionedStruct(g.uint8,{0:{fds:new g.Array(g.uint8,(function(r){return r.parent.CharStrings.length}))},3:{nRanges:g.uint16,ranges:new g.Array(wt,"nRanges"),sentinel:g.uint16},4:{nRanges:g.uint32,ranges:new g.Array(_t,"nRanges"),sentinel:g.uint32}}),xt=new ke(Ae),Ct=function(){function CFFPrivateOp(){}var r=CFFPrivateOp.prototype;return r.decode=function decode(r,i,o){return i.length=o[0],xt.decode(r,i,[o[1]])},r.size=function size(r,i){return[Ae.size(r,i,!1),xt.size(r,i)[0]]},r.encode=function encode(r,i,o){return[Ae.size(i,o,!1),xt.encode(r,i,o)[0]]},CFFPrivateOp}(),kt=new Ce([[18,"Private",new Ct,null],[[12,38],"FontName","sid",null],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[[12,5],"PaintType","number",0]]),Pt=new Ce([[[12,30],"ROS",["sid","sid","number"],null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","boolean",!1],[[12,2],"ItalicAngle","number",0],[[12,3],"UnderlinePosition","number",-100],[[12,4],"UnderlineThickness","number",50],[[12,5],"PaintType","number",0],[[12,6],"CharstringType","number",2],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[13,"UniqueID","number",null],[5,"FontBBox","array",[0,0,0,0]],[[12,8],"StrokeWidth","number",0],[14,"XUID","array",null],[15,"charset",bt,Oe],[16,"Encoding",yt,Te],[17,"CharStrings",new ke(new we),null],[18,"Private",new Ct,null],[[12,20],"SyntheticBase","number",null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","number",0],[[12,32],"CIDFontRevision","number",0],[[12,33],"CIDFontType","number",0],[[12,34],"CIDCount","number",8720],[[12,35],"UIDBase","number",null],[[12,37],"FDSelect",new ke(St),null],[[12,36],"FDArray",new ke(new we(kt)),null],[[12,38],"FontName","sid",null]]),At=new g.Struct({length:g.uint16,itemVariationStore:ot}),Et=new Ce([[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[17,"CharStrings",new ke(new we),null],[[12,37],"FDSelect",new ke(St),null],[[12,36],"FDArray",new ke(new we(kt)),null],[24,"vstore",new ke(At),null],[25,"maxstack","number",193]]),Tt=new g.VersionedStruct(g.fixed16,{1:{hdrSize:g.uint8,offSize:g.uint8,nameIndex:new we(new g.String("length")),topDictIndex:new we(Pt),stringIndex:new we(new g.String("length")),globalSubrIndex:new we},2:{hdrSize:g.uint8,length:g.uint16,topDict:Et,globalSubrIndex:new we}}),Ot=function(){function CFFFont(r){this.stream=r,this.decode()}CFFFont.decode=function decode(r){return new CFFFont(r)};var r=CFFFont.prototype;return r.decode=function decode(){this.stream.pos;var r=Tt.decode(this.stream);for(var i in r){var o=r[i];this[i]=o}if(this.version<2){if(1!==this.topDictIndex.length)throw new Error("Only a single font is allowed in CFF");this.topDict=this.topDictIndex[0]}return this.isCIDFont=null!=this.topDict.ROS,this},r.string=function string(r){return this.version>=2?null:r<Ee.length?Ee[r]:this.stringIndex[r-Ee.length]},r.getCharString=function getCharString(r){return this.stream.pos=this.topDict.CharStrings[r].offset,this.stream.readBuffer(this.topDict.CharStrings[r].length)},r.getGlyphName=function getGlyphName(r){if(this.version>=2)return null;if(this.isCIDFont)return null;var i=this.topDict.charset;if(Array.isArray(i))return i[r];if(0===r)return".notdef";switch(r-=1,i.version){case 0:return this.string(i.glyphs[r]);case 1:case 2:for(var o=0;o<i.ranges.length;o++){var u=i.ranges[o];if(u.offset<=r&&r<=u.offset+u.nLeft)return this.string(u.first+(r-u.offset))}}return null},r.fdForGlyph=function fdForGlyph(r){if(!this.topDict.FDSelect)return null;switch(this.topDict.FDSelect.version){case 0:return this.topDict.FDSelect.fds[r];case 3:case 4:for(var i=this.topDict.FDSelect.ranges,o=0,u=i.length-1;o<=u;){var p=o+u>>1;if(r<i[p].first)u=p-1;else{if(!(p<u&&r>=i[p+1].first))return i[p].fd;o=p+1}}default:throw new Error("Unknown FDSelect version: ".concat(this.topDict.FDSelect.version))}},r.privateDictForGlyph=function privateDictForGlyph(r){if(this.topDict.FDSelect){var i=this.fdForGlyph(r);return this.topDict.FDArray[i]?this.topDict.FDArray[i].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private},_createClass(CFFFont,[{key:"postscriptName",get:function get(){return this.version<2?this.nameIndex[0]:null}},{key:"fullName",get:function get(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function get(){return this.string(this.topDict.FamilyName)}}]),CFFFont}(),It=new g.Struct({glyphIndex:g.uint16,vertOriginY:g.int16}),Bt=new g.Struct({majorVersion:g.uint16,minorVersion:g.uint16,defaultVertOriginY:g.int16,numVertOriginYMetrics:g.uint16,metrics:new g.Array(It,"numVertOriginYMetrics")}),Ft=new g.Struct({height:g.uint8,width:g.uint8,horiBearingX:g.int8,horiBearingY:g.int8,horiAdvance:g.uint8,vertBearingX:g.int8,vertBearingY:g.int8,vertAdvance:g.uint8}),Lt=new g.Struct({height:g.uint8,width:g.uint8,bearingX:g.int8,bearingY:g.int8,advance:g.uint8}),Rt=new g.Struct({glyph:g.uint16,xOffset:g.int8,yOffset:g.int8}),Dt=function ByteAligned(){},Mt=function BitAligned(){},Nt=(new g.VersionedStruct("version",{1:{metrics:Lt,data:Dt},2:{metrics:Lt,data:Mt},5:{data:Mt},6:{metrics:Ft,data:Dt},7:{metrics:Ft,data:Mt},8:{metrics:Lt,pad:new g.Reserved(g.uint8),numComponents:g.uint16,components:new g.Array(Rt,"numComponents")},9:{metrics:Ft,pad:new g.Reserved(g.uint8),numComponents:g.uint16,components:new g.Array(Rt,"numComponents")},17:{metrics:Lt,dataLen:g.uint32,data:new g.Buffer("dataLen")},18:{metrics:Ft,dataLen:g.uint32,data:new g.Buffer("dataLen")},19:{dataLen:g.uint32,data:new g.Buffer("dataLen")}}),new g.Struct({ascender:g.int8,descender:g.int8,widthMax:g.uint8,caretSlopeNumerator:g.int8,caretSlopeDenominator:g.int8,caretOffset:g.int8,minOriginSB:g.int8,minAdvanceSB:g.int8,maxBeforeBL:g.int8,minAfterBL:g.int8,pad:new g.Reserved(g.int8,2)})),Wt=new g.Struct({glyphCode:g.uint16,offset:g.uint16}),zt=new g.VersionedStruct(g.uint16,{header:{imageFormat:g.uint16,imageDataOffset:g.uint32},1:{offsetArray:new g.Array(g.uint32,(function(r){return r.parent.lastGlyphIndex-r.parent.firstGlyphIndex+1}))},2:{imageSize:g.uint32,bigMetrics:Ft},3:{offsetArray:new g.Array(g.uint16,(function(r){return r.parent.lastGlyphIndex-r.parent.firstGlyphIndex+1}))},4:{numGlyphs:g.uint32,glyphArray:new g.Array(Wt,(function(r){return r.numGlyphs+1}))},5:{imageSize:g.uint32,bigMetrics:Ft,numGlyphs:g.uint32,glyphCodeArray:new g.Array(g.uint16,"numGlyphs")}}),Ut=new g.Struct({firstGlyphIndex:g.uint16,lastGlyphIndex:g.uint16,subtable:new g.Pointer(g.uint32,zt)}),jt=new g.Struct({indexSubTableArray:new g.Pointer(g.uint32,new g.Array(Ut,1),{type:"parent"}),indexTablesSize:g.uint32,numberOfIndexSubTables:g.uint32,colorRef:g.uint32,hori:Nt,vert:Nt,startGlyphIndex:g.uint16,endGlyphIndex:g.uint16,ppemX:g.uint8,ppemY:g.uint8,bitDepth:g.uint8,flags:new g.Bitfield(g.uint8,["horizontal","vertical"])}),Gt=new g.Struct({version:g.uint32,numSizes:g.uint32,sizes:new g.Array(jt,"numSizes")}),Vt=new g.Struct({ppem:g.uint16,resolution:g.uint16,imageOffsets:new g.Array(new g.Pointer(g.uint32,"void"),(function(r){return r.parent.parent.maxp.numGlyphs+1}))}),Ht=new g.Struct({version:g.uint16,flags:new g.Bitfield(g.uint16,["renderOutlines"]),numImgTables:g.uint32,imageTables:new g.Array(new g.Pointer(g.uint32,Vt),"numImgTables")}),qt=new g.Struct({gid:g.uint16,paletteIndex:g.uint16}),Xt=new g.Struct({gid:g.uint16,firstLayerIndex:g.uint16,numLayers:g.uint16}),Zt=new g.Struct({version:g.uint16,numBaseGlyphRecords:g.uint16,baseGlyphRecord:new g.Pointer(g.uint32,new g.Array(Xt,"numBaseGlyphRecords")),layerRecords:new g.Pointer(g.uint32,new g.Array(qt,"numLayerRecords"),{lazy:!0}),numLayerRecords:g.uint16}),Kt=new g.Struct({blue:g.uint8,green:g.uint8,red:g.uint8,alpha:g.uint8}),Yt=new g.VersionedStruct(g.uint16,{header:{numPaletteEntries:g.uint16,numPalettes:g.uint16,numColorRecords:g.uint16,colorRecords:new g.Pointer(g.uint32,new g.Array(Kt,"numColorRecords")),colorRecordIndices:new g.Array(g.uint16,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new g.Pointer(g.uint32,new g.Array(g.uint32,"numPalettes")),offsetPaletteLabelArray:new g.Pointer(g.uint32,new g.Array(g.uint16,"numPalettes")),offsetPaletteEntryLabelArray:new g.Pointer(g.uint32,new g.Array(g.uint16,"numPaletteEntries"))}}),Jt=new g.VersionedStruct(g.uint16,{1:{coordinate:g.int16},2:{coordinate:g.int16,referenceGlyph:g.uint16,baseCoordPoint:g.uint16},3:{coordinate:g.int16,deviceTable:new g.Pointer(g.uint16,Ve)}}),Qt=new g.Struct({defaultIndex:g.uint16,baseCoordCount:g.uint16,baseCoords:new g.Array(new g.Pointer(g.uint16,Jt),"baseCoordCount")}),$t=new g.Struct({tag:new g.String(4),minCoord:new g.Pointer(g.uint16,Jt,{type:"parent"}),maxCoord:new g.Pointer(g.uint16,Jt,{type:"parent"})}),er=new g.Struct({minCoord:new g.Pointer(g.uint16,Jt),maxCoord:new g.Pointer(g.uint16,Jt),featMinMaxCount:g.uint16,featMinMaxRecords:new g.Array($t,"featMinMaxCount")}),tr=new g.Struct({tag:new g.String(4),minMax:new g.Pointer(g.uint16,er,{type:"parent"})}),rr=new g.Struct({baseValues:new g.Pointer(g.uint16,Qt),defaultMinMax:new g.Pointer(g.uint16,er),baseLangSysCount:g.uint16,baseLangSysRecords:new g.Array(tr,"baseLangSysCount")}),nr=new g.Struct({tag:new g.String(4),script:new g.Pointer(g.uint16,rr,{type:"parent"})}),ir=new g.Array(nr,g.uint16),or=new g.Array(new g.String(4),g.uint16),ar=new g.Struct({baseTagList:new g.Pointer(g.uint16,or),baseScriptList:new g.Pointer(g.uint16,ir)}),sr=new g.VersionedStruct(g.uint32,{header:{horizAxis:new g.Pointer(g.uint16,ar),vertAxis:new g.Pointer(g.uint16,ar)},65536:{},65537:{itemVariationStore:new g.Pointer(g.uint32,ot)}}),cr=new g.Array(g.uint16,g.uint16),lr=new g.Struct({coverage:new g.Pointer(g.uint16,Ue),glyphCount:g.uint16,attachPoints:new g.Array(new g.Pointer(g.uint16,cr),"glyphCount")}),ur=new g.VersionedStruct(g.uint16,{1:{coordinate:g.int16},2:{caretValuePoint:g.uint16},3:{coordinate:g.int16,deviceTable:new g.Pointer(g.uint16,Ve)}}),fr=new g.Array(new g.Pointer(g.uint16,ur),g.uint16),hr=new g.Struct({coverage:new g.Pointer(g.uint16,Ue),ligGlyphCount:g.uint16,ligGlyphs:new g.Array(new g.Pointer(g.uint16,fr),"ligGlyphCount")}),dr=new g.Struct({markSetTableFormat:g.uint16,markSetCount:g.uint16,coverage:new g.Array(new g.Pointer(g.uint32,Ue),"markSetCount")}),pr=new g.VersionedStruct(g.uint32,{header:{glyphClassDef:new g.Pointer(g.uint16,Ge),attachList:new g.Pointer(g.uint16,lr),ligCaretList:new g.Pointer(g.uint16,hr),markAttachClassDef:new g.Pointer(g.uint16,Ge)},65536:{},65538:{markGlyphSetsDef:new g.Pointer(g.uint16,dr)},65539:{markGlyphSetsDef:new g.Pointer(g.uint16,dr),itemVariationStore:new g.Pointer(g.uint32,ot)}}),gr=new g.Bitfield(g.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),yr={xPlacement:g.int16,yPlacement:g.int16,xAdvance:g.int16,yAdvance:g.int16,xPlaDevice:new g.Pointer(g.uint16,Ve,{type:"global",relativeTo:function relativeTo(r){return r.rel}}),yPlaDevice:new g.Pointer(g.uint16,Ve,{type:"global",relativeTo:function relativeTo(r){return r.rel}}),xAdvDevice:new g.Pointer(g.uint16,Ve,{type:"global",relativeTo:function relativeTo(r){return r.rel}}),yAdvDevice:new g.Pointer(g.uint16,Ve,{type:"global",relativeTo:function relativeTo(r){return r.rel}})},vr=function(){function ValueRecord(r){void 0===r&&(r="valueFormat"),this.key=r}var r=ValueRecord.prototype;return r.buildStruct=function buildStruct(r){for(var i=r;!i[this.key]&&i.parent;)i=i.parent;if(i[this.key]){var o={rel:function(){return i._startOffset}},u=i[this.key];for(var p in u)u[p]&&(o[p]=yr[p]);return new g.Struct(o)}},r.size=function size(r,i){return this.buildStruct(i).size(r,i)},r.decode=function decode(r,i){var o=this.buildStruct(i).decode(r,i);return delete o.rel,o},ValueRecord}(),mr=new g.Struct({secondGlyph:g.uint16,value1:new vr("valueFormat1"),value2:new vr("valueFormat2")}),br=new g.Array(mr,g.uint16),wr=new g.Struct({value1:new vr("valueFormat1"),value2:new vr("valueFormat2")}),_r=new g.VersionedStruct(g.uint16,{1:{xCoordinate:g.int16,yCoordinate:g.int16},2:{xCoordinate:g.int16,yCoordinate:g.int16,anchorPoint:g.uint16},3:{xCoordinate:g.int16,yCoordinate:g.int16,xDeviceTable:new g.Pointer(g.uint16,Ve),yDeviceTable:new g.Pointer(g.uint16,Ve)}}),Sr=new g.Struct({entryAnchor:new g.Pointer(g.uint16,_r,{type:"parent"}),exitAnchor:new g.Pointer(g.uint16,_r,{type:"parent"})}),xr=new g.Struct({class:g.uint16,markAnchor:new g.Pointer(g.uint16,_r,{type:"parent"})}),Cr=new g.Array(xr,g.uint16),kr=new g.Array(new g.Pointer(g.uint16,_r),(function(r){return r.parent.classCount})),Pr=new g.Array(kr,g.uint16),Ar=new g.Array(new g.Pointer(g.uint16,_r),(function(r){return r.parent.parent.classCount})),Er=new g.Array(Ar,g.uint16),Tr=new g.Array(new g.Pointer(g.uint16,Er),g.uint16),Or=new g.VersionedStruct("lookupType",{1:new g.VersionedStruct(g.uint16,{1:{coverage:new g.Pointer(g.uint16,Ue),valueFormat:gr,value:new vr},2:{coverage:new g.Pointer(g.uint16,Ue),valueFormat:gr,valueCount:g.uint16,values:new g.LazyArray(new vr,"valueCount")}}),2:new g.VersionedStruct(g.uint16,{1:{coverage:new g.Pointer(g.uint16,Ue),valueFormat1:gr,valueFormat2:gr,pairSetCount:g.uint16,pairSets:new g.LazyArray(new g.Pointer(g.uint16,br),"pairSetCount")},2:{coverage:new g.Pointer(g.uint16,Ue),valueFormat1:gr,valueFormat2:gr,classDef1:new g.Pointer(g.uint16,Ge),classDef2:new g.Pointer(g.uint16,Ge),class1Count:g.uint16,class2Count:g.uint16,classRecords:new g.LazyArray(new g.LazyArray(wr,"class2Count"),"class1Count")}}),3:{format:g.uint16,coverage:new g.Pointer(g.uint16,Ue),entryExitCount:g.uint16,entryExitRecords:new g.Array(Sr,"entryExitCount")},4:{format:g.uint16,markCoverage:new g.Pointer(g.uint16,Ue),baseCoverage:new g.Pointer(g.uint16,Ue),classCount:g.uint16,markArray:new g.Pointer(g.uint16,Cr),baseArray:new g.Pointer(g.uint16,Pr)},5:{format:g.uint16,markCoverage:new g.Pointer(g.uint16,Ue),ligatureCoverage:new g.Pointer(g.uint16,Ue),classCount:g.uint16,markArray:new g.Pointer(g.uint16,Cr),ligatureArray:new g.Pointer(g.uint16,Tr)},6:{format:g.uint16,mark1Coverage:new g.Pointer(g.uint16,Ue),mark2Coverage:new g.Pointer(g.uint16,Ue),classCount:g.uint16,mark1Array:new g.Pointer(g.uint16,Cr),mark2Array:new g.Pointer(g.uint16,Pr)},7:Ye,8:$e,9:{posFormat:g.uint16,lookupType:g.uint16,extension:new g.Pointer(g.uint32,Or)}});Or.versions[9].extension.type=Or;var Ir=new g.VersionedStruct(g.uint32,{header:{scriptList:new g.Pointer(g.uint16,Re),featureList:new g.Pointer(g.uint16,Ne),lookupList:new g.Pointer(g.uint16,new LookupList(Or))},65536:{},65537:{featureVariations:new g.Pointer(g.uint32,ft)}}),Br=new g.Array(g.uint16,g.uint16),Fr=Br,Lr=new g.Struct({glyph:g.uint16,compCount:g.uint16,components:new g.Array(g.uint16,(function(r){return r.compCount-1}))}),Rr=new g.Array(new g.Pointer(g.uint16,Lr),g.uint16),Dr=new g.VersionedStruct("lookupType",{1:new g.VersionedStruct(g.uint16,{1:{coverage:new g.Pointer(g.uint16,Ue),deltaGlyphID:g.int16},2:{coverage:new g.Pointer(g.uint16,Ue),glyphCount:g.uint16,substitute:new g.LazyArray(g.uint16,"glyphCount")}}),2:{substFormat:g.uint16,coverage:new g.Pointer(g.uint16,Ue),count:g.uint16,sequences:new g.LazyArray(new g.Pointer(g.uint16,Br),"count")},3:{substFormat:g.uint16,coverage:new g.Pointer(g.uint16,Ue),count:g.uint16,alternateSet:new g.LazyArray(new g.Pointer(g.uint16,Fr),"count")},4:{substFormat:g.uint16,coverage:new g.Pointer(g.uint16,Ue),count:g.uint16,ligatureSets:new g.LazyArray(new g.Pointer(g.uint16,Rr),"count")},5:Ye,6:$e,7:{substFormat:g.uint16,lookupType:g.uint16,extension:new g.Pointer(g.uint32,Dr)},8:{substFormat:g.uint16,coverage:new g.Pointer(g.uint16,Ue),backtrackCoverage:new g.Array(new g.Pointer(g.uint16,Ue),"backtrackGlyphCount"),lookaheadGlyphCount:g.uint16,lookaheadCoverage:new g.Array(new g.Pointer(g.uint16,Ue),"lookaheadGlyphCount"),glyphCount:g.uint16,substitutes:new g.Array(g.uint16,"glyphCount")}});Dr.versions[7].extension.type=Dr;var Mr=new g.VersionedStruct(g.uint32,{header:{scriptList:new g.Pointer(g.uint16,Re),featureList:new g.Pointer(g.uint16,Ne),lookupList:new g.Pointer(g.uint16,new LookupList(Dr))},65536:{},65537:{featureVariations:new g.Pointer(g.uint32,ft)}}),Nr=new g.Array(g.uint16,g.uint16),Wr=new g.Struct({shrinkageEnableGSUB:new g.Pointer(g.uint16,Nr),shrinkageDisableGSUB:new g.Pointer(g.uint16,Nr),shrinkageEnableGPOS:new g.Pointer(g.uint16,Nr),shrinkageDisableGPOS:new g.Pointer(g.uint16,Nr),shrinkageJstfMax:new g.Pointer(g.uint16,new LookupList(Or)),extensionEnableGSUB:new g.Pointer(g.uint16,Nr),extensionDisableGSUB:new g.Pointer(g.uint16,Nr),extensionEnableGPOS:new g.Pointer(g.uint16,Nr),extensionDisableGPOS:new g.Pointer(g.uint16,Nr),extensionJstfMax:new g.Pointer(g.uint16,new LookupList(Or))}),zr=new g.Array(new g.Pointer(g.uint16,Wr),g.uint16),Ur=new g.Struct({tag:new g.String(4),jstfLangSys:new g.Pointer(g.uint16,zr)}),jr=new g.Struct({extenderGlyphs:new g.Pointer(g.uint16,new g.Array(g.uint16,g.uint16)),defaultLangSys:new g.Pointer(g.uint16,zr),langSysCount:g.uint16,langSysRecords:new g.Array(Ur,"langSysCount")}),Gr=new g.Struct({tag:new g.String(4),script:new g.Pointer(g.uint16,jr,{type:"parent"})}),Vr=new g.Struct({version:g.uint32,scriptCount:g.uint16,scriptList:new g.Array(Gr,"scriptCount")}),Hr=function(){function VariableSizeNumber(r){this._size=r}var r=VariableSizeNumber.prototype;return r.decode=function decode(r,i){switch(this.size(0,i)){case 1:return r.readUInt8();case 2:return r.readUInt16BE();case 3:return r.readUInt24BE();case 4:return r.readUInt32BE()}},r.size=function size(r,i){return y.resolveLength(this._size,null,i)},VariableSizeNumber}(),qr=new g.Struct({entry:new Hr((function(r){return 1+((48&r.parent.entryFormat)>>4)})),outerIndex:function outerIndex(r){return r.entry>>1+(15&r.parent.entryFormat)},innerIndex:function innerIndex(r){return r.entry&(1<<1+(15&r.parent.entryFormat))-1}}),Xr=new g.Struct({entryFormat:g.uint16,mapCount:g.uint16,mapData:new g.Array(qr,"mapCount")}),Zr=new g.Struct({majorVersion:g.uint16,minorVersion:g.uint16,itemVariationStore:new g.Pointer(g.uint32,ot),advanceWidthMapping:new g.Pointer(g.uint32,Xr),LSBMapping:new g.Pointer(g.uint32,Xr),RSBMapping:new g.Pointer(g.uint32,Xr)}),Kr=new g.Struct({format:g.uint32,length:g.uint32,offset:g.uint32}),Yr=new g.Struct({reserved:new g.Reserved(g.uint16,2),cbSignature:g.uint32,signature:new g.Buffer("cbSignature")}),Jr=new g.Struct({ulVersion:g.uint32,usNumSigs:g.uint16,usFlag:g.uint16,signatures:new g.Array(Kr,"usNumSigs"),signatureBlocks:new g.Array(Yr,"usNumSigs")}),Qr=new g.Struct({rangeMaxPPEM:g.uint16,rangeGaspBehavior:new g.Bitfield(g.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),$r=new g.Struct({version:g.uint16,numRanges:g.uint16,gaspRanges:new g.Array(Qr,"numRanges")}),en=new g.Struct({pixelSize:g.uint8,maximumWidth:g.uint8,widths:new g.Array(g.uint8,(function(r){return r.parent.parent.maxp.numGlyphs}))}),tn=new g.Struct({version:g.uint16,numRecords:g.int16,sizeDeviceRecord:g.int32,records:new g.Array(en,"numRecords")}),rn=new g.Struct({left:g.uint16,right:g.uint16,value:g.int16}),nn=new g.Struct({firstGlyph:g.uint16,nGlyphs:g.uint16,offsets:new g.Array(g.uint16,"nGlyphs"),max:function max(r){return r.offsets.length&&Math.max.apply(Math,r.offsets)}}),on=new g.Struct({off:function off(r){return r._startOffset-r.parent.parent._startOffset},len:function len(r){return((r.parent.leftTable.max-r.off)/r.parent.rowWidth+1)*(r.parent.rowWidth/2)},values:new g.LazyArray(g.int16,"len")}),an=new g.VersionedStruct("format",{0:{nPairs:g.uint16,searchRange:g.uint16,entrySelector:g.uint16,rangeShift:g.uint16,pairs:new g.Array(rn,"nPairs")},2:{rowWidth:g.uint16,leftTable:new g.Pointer(g.uint16,nn,{type:"parent"}),rightTable:new g.Pointer(g.uint16,nn,{type:"parent"}),array:new g.Pointer(g.uint16,on,{type:"parent"})},3:{glyphCount:g.uint16,kernValueCount:g.uint8,leftClassCount:g.uint8,rightClassCount:g.uint8,flags:g.uint8,kernValue:new g.Array(g.int16,"kernValueCount"),leftClass:new g.Array(g.uint8,"glyphCount"),rightClass:new g.Array(g.uint8,"glyphCount"),kernIndex:new g.Array(g.uint8,(function(r){return r.leftClassCount*r.rightClassCount}))}}),sn=new g.VersionedStruct("version",{0:{subVersion:g.uint16,length:g.uint16,format:g.uint8,coverage:new g.Bitfield(g.uint8,["horizontal","minimum","crossStream","override"]),subtable:an,padding:new g.Reserved(g.uint8,(function(r){return r.length-r._currentOffset}))},1:{length:g.uint32,coverage:new g.Bitfield(g.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:g.uint8,tupleIndex:g.uint16,subtable:an,padding:new g.Reserved(g.uint8,(function(r){return r.length-r._currentOffset}))}}),cn=new g.VersionedStruct(g.uint16,{0:{nTables:g.uint16,tables:new g.Array(sn,"nTables")},1:{reserved:new g.Reserved(g.uint16),nTables:g.uint32,tables:new g.Array(sn,"nTables")}}),ln=new g.Struct({version:g.uint16,numGlyphs:g.uint16,yPels:new g.Array(g.uint8,"numGlyphs")}),un=new g.Struct({version:g.uint16,fontNumber:g.uint32,pitch:g.uint16,xHeight:g.uint16,style:g.uint16,typeFamily:g.uint16,capHeight:g.uint16,symbolSet:g.uint16,typeface:new g.String(16),characterComplement:new g.String(8),fileName:new g.String(6),strokeWeight:new g.String(1),widthType:new g.String(1),serifStyle:g.uint8,reserved:new g.Reserved(g.uint8)}),fn=new g.Struct({bCharSet:g.uint8,xRatio:g.uint8,yStartRatio:g.uint8,yEndRatio:g.uint8}),hn=new g.Struct({yPelHeight:g.uint16,yMax:g.int16,yMin:g.int16}),dn=new g.Struct({recs:g.uint16,startsz:g.uint8,endsz:g.uint8,entries:new g.Array(hn,"recs")}),pn=new g.Struct({version:g.uint16,numRecs:g.uint16,numRatios:g.uint16,ratioRanges:new g.Array(fn,"numRatios"),offsets:new g.Array(g.uint16,"numRatios"),groups:new g.Array(dn,"numRecs")}),gn=new g.Struct({version:g.uint16,ascent:g.int16,descent:g.int16,lineGap:g.int16,advanceHeightMax:g.int16,minTopSideBearing:g.int16,minBottomSideBearing:g.int16,yMaxExtent:g.int16,caretSlopeRise:g.int16,caretSlopeRun:g.int16,caretOffset:g.int16,reserved:new g.Reserved(g.int16,4),metricDataFormat:g.int16,numberOfMetrics:g.uint16}),yn=new g.Struct({advance:g.uint16,bearing:g.int16}),vn=new g.Struct({metrics:new g.LazyArray(yn,(function(r){return r.parent.vhea.numberOfMetrics})),bearings:new g.LazyArray(g.int16,(function(r){return r.parent.maxp.numGlyphs-r.parent.vhea.numberOfMetrics}))}),mn=new g.Fixed(16,"BE",14),bn=new g.Struct({fromCoord:mn,toCoord:mn}),wn=new g.Struct({pairCount:g.uint16,correspondence:new g.Array(bn,"pairCount")}),_n=new g.Struct({version:g.fixed32,axisCount:g.uint32,segment:new g.Array(wn,"axisCount")}),Sn=function(){function UnboundedArrayAccessor(r,i,o){this.type=r,this.stream=i,this.parent=o,this.base=this.stream.pos,this._items=[]}var r=UnboundedArrayAccessor.prototype;return r.getItem=function getItem(r){if(null==this._items[r]){var i=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*r,this._items[r]=this.type.decode(this.stream,this.parent),this.stream.pos=i}return this._items[r]},r.inspect=function inspect(){return"[UnboundedArray ".concat(this.type.constructor.name,"]")},UnboundedArrayAccessor}(),xn=function(r){function UnboundedArray(i){return r.call(this,i,0)||this}return _inheritsLoose(UnboundedArray,r),UnboundedArray.prototype.decode=function decode(r,i){return new Sn(this.type,r,i)},UnboundedArray}(g.Array),Cn=function LookupTable(r){void 0===r&&(r=g.uint16),r=new(function(){function Shadow(r){this.type=r}var r=Shadow.prototype;return r.decode=function decode(r,i){return i=i.parent.parent,this.type.decode(r,i)},r.size=function size(r,i){return i=i.parent.parent,this.type.size(r,i)},r.encode=function encode(r,i,o){return o=o.parent.parent,this.type.encode(r,i,o)},Shadow}())(r);var i=new g.Struct({unitSize:g.uint16,nUnits:g.uint16,searchRange:g.uint16,entrySelector:g.uint16,rangeShift:g.uint16}),o=new g.Struct({lastGlyph:g.uint16,firstGlyph:g.uint16,value:r}),u=new g.Struct({lastGlyph:g.uint16,firstGlyph:g.uint16,values:new g.Pointer(g.uint16,new g.Array(r,(function(r){return r.lastGlyph-r.firstGlyph+1})),{type:"parent"})}),p=new g.Struct({glyph:g.uint16,value:r});return new g.VersionedStruct(g.uint16,{0:{values:new xn(r)},2:{binarySearchHeader:i,segments:new g.Array(o,(function(r){return r.binarySearchHeader.nUnits}))},4:{binarySearchHeader:i,segments:new g.Array(u,(function(r){return r.binarySearchHeader.nUnits}))},6:{binarySearchHeader:i,segments:new g.Array(p,(function(r){return r.binarySearchHeader.nUnits}))},8:{firstGlyph:g.uint16,count:g.uint16,values:new g.Array(r,"count")}})};function StateTable(r,i){void 0===r&&(r={}),void 0===i&&(i=g.uint16);var o=Object.assign({newState:g.uint16,flags:g.uint16},r),u=new g.Struct(o),p=new xn(new g.Array(g.uint16,(function(r){return r.nClasses})));return new g.Struct({nClasses:g.uint32,classTable:new g.Pointer(g.uint32,new Cn(i)),stateArray:new g.Pointer(g.uint32,p),entryTable:new g.Pointer(g.uint32,new xn(u))})}var kn=new g.VersionedStruct("format",{0:{deltas:new g.Array(g.int16,32)},1:{deltas:new g.Array(g.int16,32),mappingData:new Cn(g.uint16)},2:{standardGlyph:g.uint16,controlPoints:new g.Array(g.uint16,32)},3:{standardGlyph:g.uint16,controlPoints:new g.Array(g.uint16,32),mappingData:new Cn(g.uint16)}}),Pn=new g.Struct({version:g.fixed32,format:g.uint16,defaultBaseline:g.uint16,subtable:kn}),An=new g.Struct({setting:g.uint16,nameIndex:g.int16,name:function name(r){return r.parent.parent.parent.name.records.fontFeatures[r.nameIndex]}}),En=new g.Struct({feature:g.uint16,nSettings:g.uint16,settingTable:new g.Pointer(g.uint32,new g.Array(An,"nSettings"),{type:"parent"}),featureFlags:new g.Bitfield(g.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:g.uint8,nameIndex:g.int16,name:function name(r){return r.parent.parent.name.records.fontFeatures[r.nameIndex]}}),Tn=new g.Struct({version:g.fixed32,featureNameCount:g.uint16,reserved1:new g.Reserved(g.uint16),reserved2:new g.Reserved(g.uint32),featureNames:new g.Array(En,"featureNameCount")}),On=new g.Struct({axisTag:new g.String(4),minValue:g.fixed32,defaultValue:g.fixed32,maxValue:g.fixed32,flags:g.uint16,nameID:g.uint16,name:function name(r){return r.parent.parent.name.records.fontFeatures[r.nameID]}}),In=new g.Struct({nameID:g.uint16,name:function name(r){return r.parent.parent.name.records.fontFeatures[r.nameID]},flags:g.uint16,coord:new g.Array(g.fixed32,(function(r){return r.parent.axisCount})),postscriptNameID:new g.Optional(g.uint16,(function(r){return r.parent.instanceSize-r._currentOffset>0}))}),Bn=new g.Struct({version:g.fixed32,offsetToData:g.uint16,countSizePairs:g.uint16,axisCount:g.uint16,axisSize:g.uint16,instanceCount:g.uint16,instanceSize:g.uint16,axis:new g.Array(On,"axisCount"),instance:new g.Array(In,"instanceCount")}),Fn=new g.Fixed(16,"BE",14),Ln=function(){function Offset(){}return Offset.decode=function decode(r,i){return i.flags?r.readUInt32BE():2*r.readUInt16BE()},Offset}(),Rn=new g.Struct({version:g.uint16,reserved:new g.Reserved(g.uint16),axisCount:g.uint16,globalCoordCount:g.uint16,globalCoords:new g.Pointer(g.uint32,new g.Array(new g.Array(Fn,"axisCount"),"globalCoordCount")),glyphCount:g.uint16,flags:g.uint16,offsetToData:g.uint32,offsets:new g.Array(new g.Pointer(Ln,"void",{relativeTo:function relativeTo(r){return r.offsetToData},allowNull:!1}),(function(r){return r.glyphCount+1}))}),Dn=new g.Struct({length:g.uint16,coverage:g.uint16,subFeatureFlags:g.uint32,stateTable:new function StateTable1(r,i){void 0===r&&(r={}),void 0===i&&(i=g.uint16);var o=new g.Struct({version:function version(){return 8},firstGlyph:g.uint16,values:new g.Array(g.uint8,g.uint16)}),u=Object.assign({newStateOffset:g.uint16,newState:function newState(r){return(r.newStateOffset-(r.parent.stateArray.base-r.parent._startOffset))/r.parent.nClasses},flags:g.uint16},r),p=new g.Struct(u),y=new xn(new g.Array(g.uint8,(function(r){return r.nClasses})));return new g.Struct({nClasses:g.uint16,classTable:new g.Pointer(g.uint16,o),stateArray:new g.Pointer(g.uint16,y),entryTable:new g.Pointer(g.uint16,new xn(p))})}}),Mn=new g.Struct({justClass:g.uint32,beforeGrowLimit:g.fixed32,beforeShrinkLimit:g.fixed32,afterGrowLimit:g.fixed32,afterShrinkLimit:g.fixed32,growFlags:g.uint16,shrinkFlags:g.uint16}),Nn=new g.Array(Mn,g.uint32),Wn=new g.VersionedStruct("actionType",{0:{lowerLimit:g.fixed32,upperLimit:g.fixed32,order:g.uint16,glyphs:new g.Array(g.uint16,g.uint16)},1:{addGlyph:g.uint16},2:{substThreshold:g.fixed32,addGlyph:g.uint16,substGlyph:g.uint16},3:{},4:{variationAxis:g.uint32,minimumLimit:g.fixed32,noStretchValue:g.fixed32,maximumLimit:g.fixed32},5:{flags:g.uint16,glyph:g.uint16}}),zn=new g.Struct({actionClass:g.uint16,actionType:g.uint16,actionLength:g.uint32,actionData:Wn,padding:new g.Reserved(g.uint8,(function(r){return r.actionLength-r._currentOffset}))}),Un=new g.Array(zn,g.uint32),jn=new g.Struct({lookupTable:new Cn(new g.Pointer(g.uint16,Un))}),Gn=new g.Struct({classTable:new g.Pointer(g.uint16,Dn,{type:"parent"}),wdcOffset:g.uint16,postCompensationTable:new g.Pointer(g.uint16,jn,{type:"parent"}),widthDeltaClusters:new Cn(new g.Pointer(g.uint16,Nn,{type:"parent",relativeTo:function relativeTo(r){return r.wdcOffset}}))}),Vn=new g.Struct({version:g.uint32,format:g.uint16,horizontal:new g.Pointer(g.uint16,Gn),vertical:new g.Pointer(g.uint16,Gn)}),Hn={action:g.uint16},qn={markIndex:g.uint16,currentIndex:g.uint16},Xn={currentInsertIndex:g.uint16,markedInsertIndex:g.uint16},Zn=new g.Struct({items:new xn(new g.Pointer(g.uint32,new Cn))}),Kn=new g.VersionedStruct("type",{0:{stateTable:new StateTable},1:{stateTable:new StateTable(qn),substitutionTable:new g.Pointer(g.uint32,Zn)},2:{stateTable:new StateTable(Hn),ligatureActions:new g.Pointer(g.uint32,new xn(g.uint32)),components:new g.Pointer(g.uint32,new xn(g.uint16)),ligatureList:new g.Pointer(g.uint32,new xn(g.uint16))},4:{lookupTable:new Cn},5:{stateTable:new StateTable(Xn),insertionActions:new g.Pointer(g.uint32,new xn(g.uint16))}}),Yn=new g.Struct({length:g.uint32,coverage:g.uint24,type:g.uint8,subFeatureFlags:g.uint32,table:Kn,padding:new g.Reserved(g.uint8,(function(r){return r.length-r._currentOffset}))}),Jn=new g.Struct({featureType:g.uint16,featureSetting:g.uint16,enableFlags:g.uint32,disableFlags:g.uint32}),Qn=new g.Struct({defaultFlags:g.uint32,chainLength:g.uint32,nFeatureEntries:g.uint32,nSubtables:g.uint32,features:new g.Array(Jn,"nFeatureEntries"),subtables:new g.Array(Yn,"nSubtables")}),$n=new g.Struct({version:g.uint16,unused:new g.Reserved(g.uint16),nChains:g.uint32,chains:new g.Array(Qn,"nChains")}),ei=new g.Struct({left:g.int16,top:g.int16,right:g.int16,bottom:g.int16}),ti=new g.Struct({version:g.fixed32,format:g.uint16,lookupTable:new Cn(ei)}),ri={};ri.cmap=$,ri.head=ee,ri.hhea=te,ri.hmtx=ne,ri.maxp=ie,ri.name=ue,ri["OS/2"]=he,ri.post=pe,ri.fpgm=ye,ri.loca=ve,ri.prep=me,ri["cvt "]=ge,ri.glyf=be,ri["CFF "]=Ot,ri.CFF2=Ot,ri.VORG=Bt,ri.EBLC=Gt,ri.CBLC=ri.EBLC,ri.sbix=Ht,ri.COLR=Zt,ri.CPAL=Yt,ri.BASE=sr,ri.GDEF=pr,ri.GPOS=Ir,ri.GSUB=Mr,ri.JSTF=Vr,ri.HVAR=Zr,ri.DSIG=Jr,ri.gasp=$r,ri.hdmx=tn,ri.kern=cn,ri.LTSH=ln,ri.PCLT=un,ri.VDMX=pn,ri.vhea=gn,ri.vmtx=vn,ri.avar=_n,ri.bsln=Pn,ri.feat=Tn,ri.fvar=Bn,ri.gvar=Rn,ri.just=Vn,ri.morx=$n,ri.opbd=ti;var ni,ii=new g.Struct({tag:new g.String(4),checkSum:g.uint32,offset:new g.Pointer(g.uint32,"void",{type:"global"}),length:g.uint32}),oi=new g.Struct({tag:new g.String(4),numTables:g.uint16,searchRange:g.uint16,entrySelector:g.uint16,rangeShift:g.uint16,tables:new g.Array(ii,"numTables")});function binarySearch(r,i){for(var o=0,u=r.length-1;o<=u;){var p=o+u>>1,g=i(r[p]);if(g<0)u=p-1;else{if(!(g>0))return p;o=p+1}}return-1}function range(r,i){for(var o=[];r<i;)o.push(r++);return o}oi.process=function(){for(var r,i={},o=_createForOfIteratorHelperLoose(this.tables);!(r=o()).done;){var u=r.value;i[u.tag]=u}this.tables=i},oi.preEncode=function(r){var i=[];for(var o in this.tables){var u=this.tables[o];u&&i.push({tag:o,checkSum:0,offset:new g.VoidPointer(ri[o],u),length:ri[o].size(u)})}this.tag="true",this.numTables=i.length,this.tables=i;var p=Math.floor(Math.log(this.numTables)/Math.LN2),y=Math.pow(2,p);this.searchRange=16*y,this.entrySelector=Math.log(y)/Math.LN2,this.rangeShift=16*this.numTables-this.searchRange};try{var ai=o(4914)}catch(r){}var si=(ni=function(){function CmapProcessor(r){if(this.encoding=null,this.cmap=this.findSubtable(r,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0]]),!this.cmap&&ai)for(var i,o=_createForOfIteratorHelperLoose(r.tables);!(i=o()).done;){var u=i.value,p=getEncoding(u.platformID,u.encodingID,u.table.language-1);ai.encodingExists(p)&&(this.cmap=u.table,this.encoding=p)}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(r,[[0,5]]),this.uvs&&14!==this.uvs.version&&(this.uvs=null)}var r=CmapProcessor.prototype;return r.findSubtable=function findSubtable(r,i){for(var o,u=_createForOfIteratorHelperLoose(i);!(o=u()).done;)for(var p,g=o.value,y=g[0],w=g[1],_=_createForOfIteratorHelperLoose(r.tables);!(p=_()).done;){var x=p.value;if(x.platformID===y&&x.encodingID===w)return x.table}return null},r.lookup=function lookup(r,i){if(this.encoding){var o=ai.encode(String.fromCodePoint(r),this.encoding);r=0;for(var u=0;u<o.length;u++)r=r<<8|o[u]}else if(i){var p=this.getVariationSelector(r,i);if(p)return p}var g=this.cmap;switch(g.version){case 0:return g.codeMap.get(r)||0;case 4:for(var y=0,w=g.segCount-1;y<=w;){var _=y+w>>1;if(r<g.startCode.get(_))w=_-1;else{if(!(r>g.endCode.get(_))){var x=g.idRangeOffset.get(_),k=void 0;if(0===x)k=r+g.idDelta.get(_);else{var P=x/2+(r-g.startCode.get(_))-(g.segCount-_);0!==(k=g.glyphIndexArray.get(P)||0)&&(k+=g.idDelta.get(_))}return 65535&k}y=_+1}}return 0;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return g.glyphIndices.get(r-g.firstCode)||0;case 12:case 13:for(var O=0,I=g.nGroups-1;O<=I;){var B=O+I>>1,R=g.groups.get(B);if(r<R.startCharCode)I=B-1;else{if(!(r>R.endCharCode))return 12===g.version?R.glyphID+(r-R.startCharCode):R.glyphID;O=B+1}}return 0;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format ".concat(g.version))}},r.getVariationSelector=function getVariationSelector(r,i){if(!this.uvs)return 0;var o=this.uvs.varSelectors.toArray(),u=binarySearch(o,(function(r){return i-r.varSelector})),p=o[u];return-1!==u&&p.defaultUVS&&(u=binarySearch(p.defaultUVS,(function(i){return r<i.startUnicodeValue?-1:r>i.startUnicodeValue+i.additionalCount?1:0}))),-1!==u&&p.nonDefaultUVS&&-1!==(u=binarySearch(p.nonDefaultUVS,(function(i){return r-i.unicodeValue})))?p.nonDefaultUVS[u].glyphID:0},r.getCharacterSet=function getCharacterSet(){var r=this.cmap;switch(r.version){case 0:return range(0,r.codeMap.length);case 4:for(var i=[],o=r.endCode.toArray(),u=0;u<o.length;u++){var p=o[u]+1,g=r.startCode.get(u);i.push.apply(i,range(g,p))}return i;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return range(r.firstCode,r.firstCode+r.glyphIndices.length);case 12:case 13:for(var y,w=[],_=_createForOfIteratorHelperLoose(r.groups.toArray());!(y=_()).done;){var x=y.value;w.push.apply(w,range(x.startCharCode,x.endCharCode+1))}return w;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format ".concat(r.version))}},r.codePointsForGlyph=function codePointsForGlyph(r){var i=this.cmap;switch(i.version){case 0:for(var o=[],u=0;u<256;u++)i.codeMap.get(u)===r&&o.push(u);return o;case 4:for(var p=[],g=0;g<i.segCount;g++)for(var y=i.endCode.get(g),w=i.startCode.get(g),_=i.idRangeOffset.get(g),x=i.idDelta.get(g),k=w;k<=y;k++){var P=0;if(0===_)P=k+x;else{var O=_/2+(k-w)-(i.segCount-g);0!==(P=i.glyphIndexArray.get(O)||0)&&(P+=x)}P===r&&p.push(k)}return p;case 12:for(var I,B=[],R=_createForOfIteratorHelperLoose(i.groups.toArray());!(I=R()).done;){var D=I.value;r>=D.glyphID&&r<=D.glyphID+(D.endCharCode-D.startCharCode)&&B.push(D.startCharCode+(r-D.glyphID))}return B;case 13:for(var N,W=[],U=_createForOfIteratorHelperLoose(i.groups.toArray());!(N=U()).done;){var j=N.value;r===j.glyphID&&W.push.apply(W,range(j.startCharCode,j.endCharCode+1))}return W;default:throw new Error("Unknown cmap format ".concat(i.version))}},CmapProcessor}(),_applyDecoratedDescriptor(ni.prototype,"getCharacterSet",[cache],Object.getOwnPropertyDescriptor(ni.prototype,"getCharacterSet"),ni.prototype),_applyDecoratedDescriptor(ni.prototype,"codePointsForGlyph",[cache],Object.getOwnPropertyDescriptor(ni.prototype,"codePointsForGlyph"),ni.prototype),ni),ci=function(){function KernProcessor(r){this.kern=r.kern}var r=KernProcessor.prototype;return r.process=function process(r,i){for(var o=0;o<r.length-1;o++){var u=r[o].id,p=r[o+1].id;i[o].xAdvance+=this.getKerning(u,p)}},r.getKerning=function getKerning(r,i){for(var o,u=0,p=_createForOfIteratorHelperLoose(this.kern.tables);!(o=p()).done;){var g=o.value;if(!g.coverage.crossStream){switch(g.version){case 0:if(!g.coverage.horizontal)continue;break;case 1:if(g.coverage.vertical||g.coverage.variation)continue;break;default:throw new Error("Unsupported kerning table version ".concat(g.version))}var y=0,w=g.subtable;switch(g.format){case 0:var _=binarySearch(w.pairs,(function(o){return r-o.left||i-o.right}));_>=0&&(y=w.pairs[_].value);break;case 2:var x=0,k=0;x=r>=w.leftTable.firstGlyph&&r<w.leftTable.firstGlyph+w.leftTable.nGlyphs?w.leftTable.offsets[r-w.leftTable.firstGlyph]:w.array.off,i>=w.rightTable.firstGlyph&&i<w.rightTable.firstGlyph+w.rightTable.nGlyphs&&(k=w.rightTable.offsets[i-w.rightTable.firstGlyph]);var P=(x+k-w.array.off)/2;y=w.array.values.get(P);break;case 3:if(r>=w.glyphCount||i>=w.glyphCount)return 0;y=w.kernValue[w.kernIndex[w.leftClass[r]*w.rightClassCount+w.rightClass[i]]];break;default:throw new Error("Unsupported kerning sub-table format ".concat(g.format))}g.coverage.override?u=y:u+=y}}return u},KernProcessor}(),li=function(){function UnicodeLayoutEngine(r){this.font=r}var r=UnicodeLayoutEngine.prototype;return r.positionGlyphs=function positionGlyphs(r,i){for(var o=0,u=0,p=0;p<r.length;p++){r[p].isMark?u=p:(o!==u&&this.positionCluster(r,i,o,u),o=u=p)}return o!==u&&this.positionCluster(r,i,o,u),i},r.positionCluster=function positionCluster(r,i,o,u){var p=r[o],g=p.cbox.copy();p.codePoints.length>1&&(g.minX+=(p.codePoints.length-1)*g.width/p.codePoints.length);for(var y=-i[o].xAdvance,w=0,_=this.font.unitsPerEm/16,x=o+1;x<=u;x++){var k=r[x],P=k.cbox,O=i[x],I=this.getCombiningClass(k.codePoints[0]);if("Not_Reordered"!==I){switch(O.xOffset=O.yOffset=0,I){case"Double_Above":case"Double_Below":O.xOffset+=g.minX-P.width/2-P.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":O.xOffset+=g.minX-P.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":O.xOffset+=g.maxX-P.width-P.minX;break;default:O.xOffset+=g.minX+(g.width-P.width)/2-P.minX}switch(I){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":"Attached_Below_Left"!==I&&"Attached_Below"!==I||(g.minY+=_),O.yOffset=-g.minY-P.maxY,g.minY+=P.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":"Attached_Above"!==I&&"Attached_Above_Right"!==I||(g.maxY+=_),O.yOffset=g.maxY-P.minY,g.maxY+=P.height}O.xAdvance=O.yAdvance=0,O.xOffset+=y,O.yOffset+=w}else y-=O.xAdvance,w-=O.yAdvance}},r.getCombiningClass=function getCombiningClass(r){var i=_.getCombiningClass(r);if(3584==(-256&r))if("Not_Reordered"===i)switch(r){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(3642===r)return"Below_Right";switch(i){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":case"CCC29":case"CCC32":case"CCC118":case"CCC129":case"CCC132":return"Below";case"CCC23":return"Attached_Above";case"CCC24":case"CCC107":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":case"CCC122":case"CCC130":return"Above";case"CCC21":break;case"CCC103":return"Below_Right"}return i},UnicodeLayoutEngine}(),ui=function(){function BBox(r,i,o,u){void 0===r&&(r=1/0),void 0===i&&(i=1/0),void 0===o&&(o=-1/0),void 0===u&&(u=-1/0),this.minX=r,this.minY=i,this.maxX=o,this.maxY=u}var r=BBox.prototype;return r.addPoint=function addPoint(r,i){Math.abs(r)!==1/0&&(r<this.minX&&(this.minX=r),r>this.maxX&&(this.maxX=r)),Math.abs(i)!==1/0&&(i<this.minY&&(this.minY=i),i>this.maxY&&(this.maxY=i))},r.copy=function copy(){return new BBox(this.minX,this.minY,this.maxX,this.maxY)},_createClass(BBox,[{key:"width",get:function get(){return this.maxX-this.minX}},{key:"height",get:function get(){return this.maxY-this.minY}}]),BBox}(),fi={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:["ory2","orya"],Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:["tml2","taml"],Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi  ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},hi={};for(var di in fi){var pi=fi[di];if(Array.isArray(pi))for(var gi,yi=_createForOfIteratorHelperLoose(pi);!(gi=yi()).done;){var vi=gi.value;hi[vi]=di}else hi[pi]=di}var mi={arab:!0,hebr:!0,syrc:!0,thaa:!0,cprt:!0,khar:!0,phnx:!0,"nko ":!0,lydi:!0,avst:!0,armi:!0,phli:!0,prti:!0,sarb:!0,orkh:!0,samr:!0,mand:!0,merc:!0,mero:!0,mani:!0,mend:!0,nbat:!0,narb:!0,palm:!0,phlp:!0};function direction(r){return mi[r]?"rtl":"ltr"}for(var bi=function(){function GlyphRun(r,i,o,u,p){if(this.glyphs=r,this.positions=null,this.script=o,this.language=u||null,this.direction=p||direction(o),this.features={},Array.isArray(i))for(var g,y=_createForOfIteratorHelperLoose(i);!(g=y()).done;){var w=g.value;this.features[w]=!0}else"object"==typeof i&&(this.features=i)}return _createClass(GlyphRun,[{key:"advanceWidth",get:function get(){for(var r,i=0,o=_createForOfIteratorHelperLoose(this.positions);!(r=o()).done;){i+=r.value.xAdvance}return i}},{key:"advanceHeight",get:function get(){for(var r,i=0,o=_createForOfIteratorHelperLoose(this.positions);!(r=o()).done;){i+=r.value.yAdvance}return i}},{key:"bbox",get:function get(){for(var r=new ui,i=0,o=0,u=0;u<this.glyphs.length;u++){var p=this.glyphs[u],g=this.positions[u],y=p.bbox;r.addPoint(y.minX+i+g.xOffset,y.minY+o+g.yOffset),r.addPoint(y.maxX+i+g.xOffset,y.maxY+o+g.yOffset),i+=g.xAdvance,o+=g.yAdvance}return r}}]),GlyphRun}(),wi=function GlyphPosition(r,i,o,u){void 0===r&&(r=0),void 0===i&&(i=0),void 0===o&&(o=0),void 0===u&&(u=0),this.xAdvance=r,this.yAdvance=i,this.xOffset=o,this.yOffset=u},_i={allTypographicFeatures:{code:0,exclusive:!1,allTypeFeatures:0},ligatures:{code:1,exclusive:!1,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20},cursiveConnection:{code:2,exclusive:!0,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:!0},verticalSubstitution:{code:4,exclusive:!1,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:!1,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:!0,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:!1,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:!0,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:!0,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:!0,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:!1,preventOverlap:0},typographicExtras:{code:14,exclusive:!1,slashedZero:4},mathematicalExtras:{code:15,exclusive:!1,mathematicalGreek:10},ornamentSets:{code:16,exclusive:!0,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:!0,noAlternates:0},designComplexity:{code:18,exclusive:!0,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:!0,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:!0,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:!0,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:!0,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:!0,noTransliteration:0},annotation:{code:24,exclusive:!0,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:!0,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:!0,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:!1,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:!1,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:!0,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:!0,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:!0,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:!1,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:!1,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:!1,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:!1,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:!1,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:!0,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:!0,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:!0},CJKRomanSpacing:{code:103,exclusive:!0,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},Si=function feature(r,i){return[_i[r].code,_i[r][i]]},xi={rlig:Si("ligatures","requiredLigatures"),clig:Si("ligatures","contextualLigatures"),dlig:Si("ligatures","rareLigatures"),hlig:Si("ligatures","historicalLigatures"),liga:Si("ligatures","commonLigatures"),hist:Si("ligatures","historicalLigatures"),smcp:Si("lowerCase","lowerCaseSmallCaps"),pcap:Si("lowerCase","lowerCasePetiteCaps"),frac:Si("fractions","diagonalFractions"),dnom:Si("fractions","diagonalFractions"),numr:Si("fractions","diagonalFractions"),afrc:Si("fractions","verticalFractions"),case:Si("caseSensitiveLayout","caseSensitiveLayout"),ccmp:Si("unicodeDecomposition","canonicalComposition"),cpct:Si("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:Si("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:Si("contextualAlternates","swashAlternates"),cswh:Si("contextualAlternates","contextualSwashAlternates"),curs:Si("cursiveConnection","cursive"),c2pc:Si("upperCase","upperCasePetiteCaps"),c2sc:Si("upperCase","upperCaseSmallCaps"),init:Si("smartSwash","wordInitialSwashes"),fin2:Si("smartSwash","wordFinalSwashes"),medi:Si("smartSwash","nonFinalSwashes"),med2:Si("smartSwash","nonFinalSwashes"),fin3:Si("smartSwash","wordFinalSwashes"),fina:Si("smartSwash","wordFinalSwashes"),pkna:Si("kanaSpacing","proportionalKana"),half:Si("textSpacing","halfWidthText"),halt:Si("textSpacing","altHalfWidthText"),hkna:Si("alternateKana","alternateHorizKana"),vkna:Si("alternateKana","alternateVertKana"),ital:Si("italicCJKRoman","CJKItalicRoman"),lnum:Si("numberCase","upperCaseNumbers"),onum:Si("numberCase","lowerCaseNumbers"),mgrk:Si("mathematicalExtras","mathematicalGreek"),calt:Si("contextualAlternates","contextualAlternates"),vrt2:Si("verticalSubstitution","substituteVerticalForms"),vert:Si("verticalSubstitution","substituteVerticalForms"),tnum:Si("numberSpacing","monospacedNumbers"),pnum:Si("numberSpacing","proportionalNumbers"),sups:Si("verticalPosition","superiors"),subs:Si("verticalPosition","inferiors"),ordn:Si("verticalPosition","ordinals"),pwid:Si("textSpacing","proportionalText"),hwid:Si("textSpacing","halfWidthText"),qwid:Si("textSpacing","quarterWidthText"),twid:Si("textSpacing","thirdWidthText"),fwid:Si("textSpacing","proportionalText"),palt:Si("textSpacing","altProportionalText"),trad:Si("characterShape","traditionalCharacters"),smpl:Si("characterShape","simplifiedCharacters"),jp78:Si("characterShape","JIS1978Characters"),jp83:Si("characterShape","JIS1983Characters"),jp90:Si("characterShape","JIS1990Characters"),jp04:Si("characterShape","JIS2004Characters"),expt:Si("characterShape","expertCharacters"),hojo:Si("characterShape","hojoCharacters"),nlck:Si("characterShape","NLCCharacters"),tnam:Si("characterShape","traditionalNamesCharacters"),ruby:Si("rubyKana","rubyKana"),titl:Si("styleOptions","titlingCaps"),zero:Si("typographicExtras","slashedZero"),ss01:Si("stylisticAlternatives","stylisticAltOne"),ss02:Si("stylisticAlternatives","stylisticAltTwo"),ss03:Si("stylisticAlternatives","stylisticAltThree"),ss04:Si("stylisticAlternatives","stylisticAltFour"),ss05:Si("stylisticAlternatives","stylisticAltFive"),ss06:Si("stylisticAlternatives","stylisticAltSix"),ss07:Si("stylisticAlternatives","stylisticAltSeven"),ss08:Si("stylisticAlternatives","stylisticAltEight"),ss09:Si("stylisticAlternatives","stylisticAltNine"),ss10:Si("stylisticAlternatives","stylisticAltTen"),ss11:Si("stylisticAlternatives","stylisticAltEleven"),ss12:Si("stylisticAlternatives","stylisticAltTwelve"),ss13:Si("stylisticAlternatives","stylisticAltThirteen"),ss14:Si("stylisticAlternatives","stylisticAltFourteen"),ss15:Si("stylisticAlternatives","stylisticAltFifteen"),ss16:Si("stylisticAlternatives","stylisticAltSixteen"),ss17:Si("stylisticAlternatives","stylisticAltSeventeen"),ss18:Si("stylisticAlternatives","stylisticAltEighteen"),ss19:Si("stylisticAlternatives","stylisticAltNineteen"),ss20:Si("stylisticAlternatives","stylisticAltTwenty")},Ci=1;Ci<=99;Ci++)xi["cv".concat("00".concat(Ci).slice(-2))]=[_i.characterAlternatives.code,Ci];var ki,Pi={};for(var Ai in xi){var Ei=xi[Ai];null==Pi[Ei[0]]&&(Pi[Ei[0]]={}),Pi[Ei[0]][Ei[1]]=Ai}function mapFeatureStrings(r){var i=r[0],o=r[1];if(isNaN(i))var u=_i[i]&&_i[i].code;else u=i;if(isNaN(o))var p=_i[i]&&_i[i][o];else p=o;return[u,p]}var Ti,Oi=(ki=function(){function AATLookupTable(r){this.table=r}var r=AATLookupTable.prototype;return r.lookup=function lookup(r){switch(this.table.version){case 0:return this.table.values.getItem(r);case 2:case 4:for(var i=0,o=this.table.binarySearchHeader.nUnits-1;i<=o;){var u=i+o>>1;if(65535===(y=this.table.segments[u]).firstGlyph)return null;if(r<y.firstGlyph)o=u-1;else{if(!(r>y.lastGlyph))return 2===this.table.version?y.value:y.values[r-y.firstGlyph];i=u+1}}return null;case 6:for(var p=0,g=this.table.binarySearchHeader.nUnits-1;p<=g;){var y;u=p+g>>1;if(65535===(y=this.table.segments[u]).glyph)return null;if(r<y.glyph)g=u-1;else{if(!(r>y.glyph))return y.value;p=u+1}}return null;case 8:return this.table.values[r-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: ".concat(this.table.version))}},r.glyphsForValue=function glyphsForValue(r){var i=[];switch(this.table.version){case 2:case 4:for(var o,u=_createForOfIteratorHelperLoose(this.table.segments);!(o=u()).done;){var p=o.value;if(2===this.table.version&&p.value===r)i.push.apply(i,range(p.firstGlyph,p.lastGlyph+1));else for(var g=0;g<p.values.length;g++)p.values[g]===r&&i.push(p.firstGlyph+g)}break;case 6:for(var y,w=_createForOfIteratorHelperLoose(this.table.segments);!(y=w()).done;){var _=y.value;_.value===r&&i.push(_.glyph)}break;case 8:for(var x=0;x<this.table.values.length;x++)this.table.values[x]===r&&i.push(this.table.firstGlyph+x);break;default:throw new Error("Unknown lookup table format: ".concat(this.table.version))}return i},AATLookupTable}(),_applyDecoratedDescriptor(ki.prototype,"glyphsForValue",[cache],Object.getOwnPropertyDescriptor(ki.prototype,"glyphsForValue"),ki.prototype),ki),Ii=function(){function AATStateMachine(r){this.stateTable=r,this.lookupTable=new Oi(r.classTable)}var r=AATStateMachine.prototype;return r.process=function process(r,i,o){for(var u=0,p=i?r.length-1:0,g=i?-1:1;1===g&&p<=r.length||-1===g&&p>=-1;){var y=null,w=1,_=!0;p===r.length||-1===p?w=0:65535===(y=r[p]).id?w=2:null==(w=this.lookupTable.lookup(y.id))&&(w=1);var x=this.stateTable.stateArray.getItem(u)[w],k=this.stateTable.entryTable.getItem(x);0!==w&&2!==w&&(o(y,k,p),_=!(16384&k.flags)),u=k.newState,_&&(p+=g)}return r},r.traverse=function traverse(r,i,o){if(void 0===i&&(i=0),void 0===o&&(o=new Set),!o.has(i)){o.add(i);for(var u=this.stateTable,p=u.nClasses,g=u.stateArray,y=u.entryTable,w=g.getItem(i),_=4;_<p;_++)for(var x,k=w[_],P=y.getItem(k),O=_createForOfIteratorHelperLoose(this.lookupTable.glyphsForValue(_));!(x=O()).done;){var I=x.value;r.enter&&r.enter(I,P),0!==P.newState&&this.traverse(r,P.newState,o),r.exit&&r.exit(I,P)}}},AATStateMachine}(),Bi=4194304,Fi=(Ti=function(){function AATMorxProcessor(r){this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=r,this.morx=r.morx,this.inputCache=null}var r=AATMorxProcessor.prototype;return r.process=function process(r,i){void 0===i&&(i={});for(var o,u=_createForOfIteratorHelperLoose(this.morx.chains);!(o=u()).done;){for(var p,g=o.value,y=g.defaultFlags,w=_createForOfIteratorHelperLoose(g.features);!(p=w()).done;){var _,x=p.value;(_=i[x.featureType])&&(_[x.featureSetting]?(y&=x.disableFlags,y|=x.enableFlags):!1===_[x.featureSetting]&&(y|=~x.disableFlags,y&=~x.enableFlags))}for(var k,P=_createForOfIteratorHelperLoose(g.subtables);!(k=P()).done;){var O=k.value;O.subFeatureFlags&y&&this.processSubtable(O,r)}}for(var I=r.length-1;I>=0;)65535===r[I].id&&r.splice(I,1),I--;return r},r.processSubtable=function processSubtable(r,i){if(this.subtable=r,this.glyphs=i,4!==this.subtable.type){this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var o=this.getStateMachine(r),u=this.getProcessor(),p=!!(this.subtable.coverage&Bi);return o.process(this.glyphs,p,u)}this.processNoncontextualSubstitutions(this.subtable,this.glyphs)},r.getStateMachine=function getStateMachine(r){return new Ii(r.table.stateTable)},r.getProcessor=function getProcessor(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: ".concat(this.subtable.type))}},r.processIndicRearragement=function processIndicRearragement(r,i,o){32768&i.flags&&(this.firstGlyph=o),8192&i.flags&&(this.lastGlyph=o),function reorderGlyphs(r,i,o,u){switch(i){case 0:return r;case 1:return swap(r,[o,1],[u,0]);case 2:return swap(r,[o,0],[u,1]);case 3:return swap(r,[o,1],[u,1]);case 4:return swap(r,[o,2],[u,0]);case 5:return swap(r,[o,2],[u,0],!0,!1);case 6:return swap(r,[o,0],[u,2]);case 7:return swap(r,[o,0],[u,2],!1,!0);case 8:return swap(r,[o,1],[u,2]);case 9:return swap(r,[o,1],[u,2],!1,!0);case 10:return swap(r,[o,2],[u,1]);case 11:return swap(r,[o,2],[u,1],!0,!1);case 12:return swap(r,[o,2],[u,2]);case 13:return swap(r,[o,2],[u,2],!0,!1);case 14:return swap(r,[o,2],[u,2],!1,!0);case 15:return swap(r,[o,2],[u,2],!0,!0);default:throw new Error("Unknown verb: ".concat(i))}}(this.glyphs,15&i.flags,this.firstGlyph,this.lastGlyph)},r.processContextualSubstitution=function processContextualSubstitution(r,i,o){var u=this.subtable.table.substitutionTable.items;if(65535!==i.markIndex){var p=u.getItem(i.markIndex),g=new Oi(p);r=this.glyphs[this.markedGlyph],(y=g.lookup(r.id))&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(y,r.codePoints))}if(65535!==i.currentIndex){var y,w=u.getItem(i.currentIndex),_=new Oi(w);r=this.glyphs[o],(y=_.lookup(r.id))&&(this.glyphs[o]=this.font.getGlyph(y,r.codePoints))}32768&i.flags&&(this.markedGlyph=o)},r.processLigature=function processLigature(r,i,o){if(32768&i.flags&&this.ligatureStack.push(o),8192&i.flags){for(var u,p=this.subtable.table.ligatureActions,g=this.subtable.table.components,y=this.subtable.table.ligatureList,w=i.action,_=!1,x=0,k=[],P=[];!_;){var O,I=this.ligatureStack.pop();(O=k).unshift.apply(O,this.glyphs[I].codePoints);var B=p.getItem(w++);_=!!(2147483648&B);var R=!!(1073741824&B),D=(1073741823&B)<<2>>2;if(D+=this.glyphs[I].id,x+=g.getItem(D),_||R){var N=y.getItem(x);this.glyphs[I]=this.font.getGlyph(N,k),P.push(I),x=0,k=[]}else this.glyphs[I]=this.font.getGlyph(65535)}(u=this.ligatureStack).push.apply(u,P)}},r.processNoncontextualSubstitutions=function processNoncontextualSubstitutions(r,i,o){var u=new Oi(r.table.lookupTable);for(o=0;o<i.length;o++){var p=i[o];if(65535!==p.id){var g=u.lookup(p.id);g&&(i[o]=this.font.getGlyph(g,p.codePoints))}}},r._insertGlyphs=function _insertGlyphs(r,i,o,u){for(var p,g=[];o--;){var y=this.subtable.table.insertionActions.getItem(i++);g.push(this.font.getGlyph(y))}u||r++,(p=this.glyphs).splice.apply(p,[r,0].concat(g))},r.processGlyphInsertion=function processGlyphInsertion(r,i,o){if(32768&i.flags&&(this.markedIndex=o),65535!==i.markedInsertIndex){var u=(31&i.flags)>>>5,p=!!(1024&i.flags);this._insertGlyphs(this.markedIndex,i.markedInsertIndex,u,p)}if(65535!==i.currentInsertIndex){var g=(992&i.flags)>>>5,y=!!(2048&i.flags);this._insertGlyphs(o,i.currentInsertIndex,g,y)}},r.getSupportedFeatures=function getSupportedFeatures(){for(var r,i=[],o=_createForOfIteratorHelperLoose(this.morx.chains);!(r=o()).done;)for(var u,p=_createForOfIteratorHelperLoose(r.value.features);!(u=p()).done;){var g=u.value;i.push([g.featureType,g.featureSetting])}return i},r.generateInputs=function generateInputs(r){return this.inputCache||this.generateInputCache(),this.inputCache[r]||[]},r.generateInputCache=function generateInputCache(){this.inputCache={};for(var r,i=_createForOfIteratorHelperLoose(this.morx.chains);!(r=i()).done;)for(var o,u=r.value,p=u.defaultFlags,g=_createForOfIteratorHelperLoose(u.subtables);!(o=g()).done;){var y=o.value;y.subFeatureFlags&p&&this.generateInputsForSubtable(y)}},r.generateInputsForSubtable=function generateInputsForSubtable(r){var i=this;if(2===r.type){if(!!(r.coverage&Bi))throw new Error("Reverse subtable, not supported.");this.subtable=r,this.ligatureStack=[];var o=this.getStateMachine(r),u=this.getProcessor(),p=[],g=[];this.glyphs=[],o.traverse({enter:function enter(r,o){var y=i.glyphs;g.push({glyphs:y.slice(),ligatureStack:i.ligatureStack.slice()});var w=i.font.getGlyph(r);p.push(w),y.push(p[p.length-1]),u(y[y.length-1],o,y.length-1);for(var _=0,x=0,k=0;k<y.length&&_<=1;k++)65535!==y[k].id&&(_++,x=y[k].id);if(1===_){var P=p.map((function(r){return r.id})),O=i.inputCache[x];O?O.push(P):i.inputCache[x]=[P]}},exit:function exit(){var r=g.pop();i.glyphs=r.glyphs,i.ligatureStack=r.ligatureStack,p.pop()}})}},AATMorxProcessor}(),_applyDecoratedDescriptor(Ti.prototype,"getStateMachine",[cache],Object.getOwnPropertyDescriptor(Ti.prototype,"getStateMachine"),Ti.prototype),Ti);function swap(r,i,o,u,p){void 0===u&&(u=!1),void 0===p&&(p=!1);var g=r.splice(o[0]-(o[1]-1),o[1]);p&&g.reverse();var y=r.splice.apply(r,[i[0],i[1]].concat(g));return u&&y.reverse(),r.splice.apply(r,[o[0]-(i[1]-1),0].concat(y)),r}var Li=function(){function AATLayoutEngine(r){this.font=r,this.morxProcessor=new Fi(r),this.fallbackPosition=!1}var r=AATLayoutEngine.prototype;return r.substitute=function substitute(r){"rtl"===r.direction&&r.glyphs.reverse(),this.morxProcessor.process(r.glyphs,function mapOTToAAT(r){var i={};for(var o in r){var u;(u=xi[o])&&(null==i[u[0]]&&(i[u[0]]={}),i[u[0]][u[1]]=r[o])}return i}(r.features))},r.getAvailableFeatures=function getAvailableFeatures(r,i){return function mapAATToOT(r){var i={};if(Array.isArray(r))for(var o=0;o<r.length;o++){var u,p=mapFeatureStrings(r[o]);(u=Pi[p[0]]&&Pi[p[0]][p[1]])&&(i[u]=!0)}else if("object"==typeof r)for(var g in r){var y=r[g];for(var w in y){var _=void 0,x=mapFeatureStrings([g,w]);y[w]&&(_=Pi[x[0]]&&Pi[x[0]][x[1]])&&(i[_]=!0)}}return Object.keys(i)}(this.morxProcessor.getSupportedFeatures())},r.stringsForGlyph=function stringsForGlyph(r){for(var i,o=this.morxProcessor.generateInputs(r),u=new Set,p=_createForOfIteratorHelperLoose(o);!(i=p()).done;){var g=i.value;this._addStrings(g,0,u,"")}return u},r._addStrings=function _addStrings(r,i,o,u){for(var p,g=_createForOfIteratorHelperLoose(this.font._cmapProcessor.codePointsForGlyph(r[i]));!(p=g()).done;){var y=p.value,w=u+String.fromCodePoint(y);i<r.length-1?this._addStrings(r,i+1,o,w):o.add(w)}},AATLayoutEngine}(),Ri=function(){function ShapingPlan(r,i,o){this.font=r,this.script=i,this.direction=o,this.stages=[],this.globalFeatures={},this.allFeatures={}}var r=ShapingPlan.prototype;return r._addFeatures=function _addFeatures(r,i){for(var o,u=this.stages.length-1,p=this.stages[u],g=_createForOfIteratorHelperLoose(r);!(o=g()).done;){var y=o.value;null==this.allFeatures[y]&&(p.push(y),this.allFeatures[y]=u,i&&(this.globalFeatures[y]=!0))}},r.add=function add(r,i){if(void 0===i&&(i=!0),0===this.stages.length&&this.stages.push([]),"string"==typeof r&&(r=[r]),Array.isArray(r))this._addFeatures(r,i);else{if("object"!=typeof r)throw new Error("Unsupported argument to ShapingPlan#add");this._addFeatures(r.global||[],!0),this._addFeatures(r.local||[],!1)}},r.addStage=function addStage(r,i){"function"==typeof r?this.stages.push(r,[]):(this.stages.push([]),this.add(r,i))},r.setFeatureOverrides=function setFeatureOverrides(r){if(Array.isArray(r))this.add(r);else if("object"==typeof r)for(var i in r)if(r[i])this.add(i);else if(null!=this.allFeatures[i]){var o=this.stages[this.allFeatures[i]];o.splice(o.indexOf(i),1),delete this.allFeatures[i],delete this.globalFeatures[i]}},r.assignGlobalFeatures=function assignGlobalFeatures(r){for(var i,o=_createForOfIteratorHelperLoose(r);!(i=o()).done;){var u=i.value;for(var p in this.globalFeatures)u.features[p]=!0}},r.process=function process(r,i,o){for(var u,p=_createForOfIteratorHelperLoose(this.stages);!(u=p()).done;){var g=u.value;"function"==typeof g?o||g(this.font,i,this):g.length>0&&r.applyFeatures(g,i,o)}},ShapingPlan}(),Di=["rvrn"],Mi=["ccmp","locl","rlig","mark","mkmk"],Ni=["frac","numr","dnom"],Wi=["calt","clig","liga","rclt","curs","kern"],zi={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},Ui=function(){function DefaultShaper(){}return DefaultShaper.plan=function plan(r,i,o){this.planPreprocessing(r),this.planFeatures(r),this.planPostprocessing(r,o),r.assignGlobalFeatures(i),this.assignFeatures(r,i)},DefaultShaper.planPreprocessing=function planPreprocessing(r){r.add({global:[].concat(Di,zi[r.direction]),local:Ni})},DefaultShaper.planFeatures=function planFeatures(r){},DefaultShaper.planPostprocessing=function planPostprocessing(r,i){r.add([].concat(Mi,Wi)),r.setFeatureOverrides(i)},DefaultShaper.assignFeatures=function assignFeatures(r,i){for(var o=0;o<i.length;o++){var u=i[o];if(8260===u.codePoints[0]){for(var p=o,g=o+1;p>0&&_.isDigit(i[p-1].codePoints[0]);)i[p-1].features.numr=!0,i[p-1].features.frac=!0,p--;for(;g<i.length&&_.isDigit(i[g].codePoints[0]);)i[g].features.dnom=!0,i[g].features.frac=!0,g++;u.features.frac=!0,o=g-1}}},DefaultShaper}();_defineProperty(Ui,"zeroMarkWidths","AFTER_GPOS");var ji=new x(p("APABAAAAAAAAOAAAAf0BAv7tmi1MxDAUx7vtvjhAgcDgkEgEAnmXEBIMCYaEcygEiqBQ4FAkCE4ikUgMiiBJSAgSiUQSDMn9L9eSl6bddddug9t7yS/trevre+3r27pcNxZiG+yCfdCVv/9LeQxOwRm4AJegD27ALbgD9+ABPJF+z+BN/h7yDj5k/VOWX6SdmU5+wLWknggxDxaS8u0qiiX4uiz9XamQ3wzDMAzDMAzDMAzDVI/h959V/v7BMAzDMAzDMLlyNTNiMSdewVxbiA44B4/guz1qW58VYlMI0WsJ0W+N6kXw0spvPtdwhtkwnGM6uLaV4Xyzg3v3PM9DPfQ/sOg4xPWjipy31P8LTqbU304c/cLCUmWJLNB2Uz2U1KTeRKNmKHVMfbJC+/0loTZRH/W5cvEvBJPMbREkWt3FD1NcqXZBSpuE2Ad0PBehPtNrPtIEdYP+hiRt/V1jIiE69X4NT/uVZI3PUHE9bm5M7ePGdZWy951v7Nn6j8v1WWKP3mt6ttnsigx6VN7Vc0VomSSGqW2mGNP1muZPl7LfjNUaKNFtDGVf2fvE9O7VlBS5j333c5p/eeoOqcs1R/hIqDWLJ7TTlksirVT1SI7l8k4Yp+g3jafGcrU1RM6l9th80XOpnlN97bDNY4i4s61B0Si/ipa0uHMl6zqEjlFfCZm/TM8KmzQDjmuTAQ==","base64")),Gi=["isol","fina","fin2","fin3","medi","med2","init"],Vi=0,Hi=6,qi="isol",Xi="fina",Zi="fin2",Ki="medi",Yi="med2",Ji="init",Qi=null,$i=[[[Qi,Qi,0],[Qi,qi,2],[Qi,qi,1],[Qi,qi,2],[Qi,qi,1],[Qi,qi,6]],[[Qi,Qi,0],[Qi,qi,2],[Qi,qi,1],[Qi,qi,2],[Qi,Zi,5],[Qi,qi,6]],[[Qi,Qi,0],[Qi,qi,2],[Ji,Xi,1],[Ji,Xi,3],[Ji,Xi,4],[Ji,Xi,6]],[[Qi,Qi,0],[Qi,qi,2],[Ki,Xi,1],[Ki,Xi,3],[Ki,Xi,4],[Ki,Xi,6]],[[Qi,Qi,0],[Qi,qi,2],[Yi,qi,1],[Yi,qi,2],[Yi,Zi,5],[Yi,qi,6]],[[Qi,Qi,0],[Qi,qi,2],[qi,qi,1],[qi,qi,2],[qi,Zi,5],[qi,qi,6]],[[Qi,Qi,0],[Qi,qi,2],[Qi,qi,1],[Qi,qi,2],[Qi,"fin3",5],[Qi,qi,6]]],eo=function(r){function ArabicShaper(){return r.apply(this,arguments)||this}return _inheritsLoose(ArabicShaper,r),ArabicShaper.planFeatures=function planFeatures(r){r.add(["ccmp","locl"]);for(var i=0;i<Gi.length;i++){var o=Gi[i];r.addStage(o,!1)}r.addStage("mset")},ArabicShaper.assignFeatures=function assignFeatures(i,o){r.assignFeatures.call(this,i,o);for(var u=-1,p=0,g=[],y=0;y<o.length;y++){var w,_,x=getShapingClass((I=o[y]).codePoints[0]);if(x!==Hi){var k=$i[p][x];_=k[0],w=k[1],p=k[2],_!==Qi&&-1!==u&&(g[u]=_),g[y]=w,u=y}else g[y]=Qi}for(var P=0;P<o.length;P++){var O,I=o[P];(O=g[P])&&(I.features[O]=!0)}},ArabicShaper}(Ui);function getShapingClass(r){var i=ji.get(r);if(i)return i-1;var o=_.getCategory(r);return"Mn"===o||"Me"===o||"Cf"===o?Hi:Vi}var to=function(){function GlyphIterator(r,i){this.glyphs=r,this.reset(i)}var r=GlyphIterator.prototype;return r.reset=function reset(r,i){void 0===r&&(r={}),void 0===i&&(i=0),this.options=r,this.flags=r.flags||{},this.markAttachmentType=r.markAttachmentType||0,this.index=i},r.shouldIgnore=function shouldIgnore(r){return this.flags.ignoreMarks&&r.isMark||this.flags.ignoreBaseGlyphs&&r.isBase||this.flags.ignoreLigatures&&r.isLigature||this.markAttachmentType&&r.isMark&&r.markAttachmentType!==this.markAttachmentType},r.move=function move(r){for(this.index+=r;0<=this.index&&this.index<this.glyphs.length&&this.shouldIgnore(this.glyphs[this.index]);)this.index+=r;return 0>this.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},r.next=function next(){return this.move(1)},r.prev=function prev(){return this.move(-1)},r.peek=function peek(r){void 0===r&&(r=1);var i=this.index,o=this.increment(r);return this.index=i,o},r.peekIndex=function peekIndex(r){void 0===r&&(r=1);var i=this.index;this.increment(r);var o=this.index;return this.index=i,o},r.increment=function increment(r){void 0===r&&(r=1);var i=r<0?-1:1;for(r=Math.abs(r);r--;)this.move(i);return this.glyphs[this.index]},_createClass(GlyphIterator,[{key:"cur",get:function get(){return this.glyphs[this.index]||null}}]),GlyphIterator}(),ro=["DFLT","dflt","latn"],no=function(){function OTProcessor(r,i){this.font=r,this.table=i,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.variationsIndex=r._variationProcessor?this.findVariationsIndex(r._variationProcessor.normalizedCoords):-1,this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1,this.currentFeature=null}var r=OTProcessor.prototype;return r.findScript=function findScript(r){if(null==this.table.scriptList)return null;Array.isArray(r)||(r=[r]);for(var i,o=_createForOfIteratorHelperLoose(r);!(i=o()).done;)for(var u,p=i.value,g=_createForOfIteratorHelperLoose(this.table.scriptList);!(u=g()).done;){var y=u.value;if(y.tag===p)return y}return null},r.selectScript=function selectScript(r,i,o){var u,p=!1;if(!this.script||r!==this.scriptTag){if((u=this.findScript(r))||(u=this.findScript(ro)),!u)return this.scriptTag;this.scriptTag=u.tag,this.script=u.script,this.language=null,this.languageTag=null,p=!0}if(o&&o===this.direction||(this.direction=o||direction(r)),i&&i.length<4&&(i+=" ".repeat(4-i.length)),!i||i!==this.languageTag){this.language=null;for(var g,y=_createForOfIteratorHelperLoose(this.script.langSysRecords);!(g=y()).done;){var w=g.value;if(w.tag===i){this.language=w.langSys,this.languageTag=w.tag;break}}this.language||(this.language=this.script.defaultLangSys,this.languageTag=null),p=!0}if(p&&(this.features={},this.language))for(var _,x=_createForOfIteratorHelperLoose(this.language.featureIndexes);!(_=x()).done;){var k=_.value,P=this.table.featureList[k],O=this.substituteFeatureForVariations(k);this.features[P.tag]=O||P.feature}return this.scriptTag},r.lookupsForFeatures=function lookupsForFeatures(r,i){void 0===r&&(r=[]);for(var o,u=[],p=_createForOfIteratorHelperLoose(r);!(o=p()).done;){var g=o.value,y=this.features[g];if(y)for(var w,_=_createForOfIteratorHelperLoose(y.lookupListIndexes);!(w=_()).done;){var x=w.value;i&&-1!==i.indexOf(x)||u.push({feature:g,index:x,lookup:this.table.lookupList.get(x)})}}return u.sort((function(r,i){return r.index-i.index})),u},r.substituteFeatureForVariations=function substituteFeatureForVariations(r){if(-1===this.variationsIndex)return null;for(var i,o=_createForOfIteratorHelperLoose(this.table.featureVariations.featureVariationRecords[this.variationsIndex].featureTableSubstitution.substitutions);!(i=o()).done;){var u=i.value;if(u.featureIndex===r)return u.alternateFeatureTable}return null},r.findVariationsIndex=function findVariationsIndex(r){var i=this.table.featureVariations;if(!i)return-1;for(var o=i.featureVariationRecords,u=0;u<o.length;u++){var p=o[u].conditionSet.conditionTable;if(this.variationConditionsMatch(p,r))return u}return-1},r.variationConditionsMatch=function variationConditionsMatch(r,i){return r.every((function(r){var o=r.axisIndex<i.length?i[r.axisIndex]:0;return r.filterRangeMinValue<=o&&o<=r.filterRangeMaxValue}))},r.applyFeatures=function applyFeatures(r,i,o){var u=this.lookupsForFeatures(r);this.applyLookups(u,i,o)},r.applyLookups=function applyLookups(r,i,o){this.glyphs=i,this.positions=o,this.glyphIterator=new to(i);for(var u,p=_createForOfIteratorHelperLoose(r);!(u=p()).done;){var g=u.value,y=g.feature,w=g.lookup;for(this.currentFeature=y,this.glyphIterator.reset(w.flags);this.glyphIterator.index<i.length;)if(y in this.glyphIterator.cur.features){for(var _,x=_createForOfIteratorHelperLoose(w.subTables);!(_=x()).done;){var k=_.value;if(this.applyLookup(w.lookupType,k))break}this.glyphIterator.next()}else this.glyphIterator.next()}},r.applyLookup=function applyLookup(r,i){throw new Error("applyLookup must be implemented by subclasses")},r.applyLookupList=function applyLookupList(r){for(var i,o=this.glyphIterator.options,u=this.glyphIterator.index,p=_createForOfIteratorHelperLoose(r);!(i=p()).done;){var g=i.value;this.glyphIterator.reset(o,u),this.glyphIterator.increment(g.sequenceIndex);var y=this.table.lookupList.get(g.lookupListIndex);this.glyphIterator.reset(y.flags,this.glyphIterator.index);for(var w,_=_createForOfIteratorHelperLoose(y.subTables);!(w=_()).done;){var x=w.value;if(this.applyLookup(y.lookupType,x))break}}return this.glyphIterator.reset(o,u),!0},r.coverageIndex=function coverageIndex(r,i){switch(null==i&&(i=this.glyphIterator.cur.id),r.version){case 1:return r.glyphs.indexOf(i);case 2:for(var o,u=_createForOfIteratorHelperLoose(r.rangeRecords);!(o=u()).done;){var p=o.value;if(p.start<=i&&i<=p.end)return p.startCoverageIndex+i-p.start}}return-1},r.match=function match(r,i,o,u){for(var p=this.glyphIterator.index,g=this.glyphIterator.increment(r),y=0;y<i.length&&g&&o(i[y],g);)u&&u.push(this.glyphIterator.index),y++,g=this.glyphIterator.next();return this.glyphIterator.index=p,!(y<i.length)&&(u||!0)},r.sequenceMatches=function sequenceMatches(r,i){return this.match(r,i,(function(r,i){return r===i.id}))},r.sequenceMatchIndices=function sequenceMatchIndices(r,i){var o=this;return this.match(r,i,(function(r,i){return o.currentFeature in i.features&&r===i.id}),[])},r.coverageSequenceMatches=function coverageSequenceMatches(r,i){var o=this;return this.match(r,i,(function(r,i){return o.coverageIndex(r,i.id)>=0}))},r.getClassID=function getClassID(r,i){switch(i.version){case 1:var o=r-i.startGlyph;if(o>=0&&o<i.classValueArray.length)return i.classValueArray[o];break;case 2:for(var u,p=_createForOfIteratorHelperLoose(i.classRangeRecord);!(u=p()).done;){var g=u.value;if(g.start<=r&&r<=g.end)return g.class}}return 0},r.classSequenceMatches=function classSequenceMatches(r,i,o){var u=this;return this.match(r,i,(function(r,i){return r===u.getClassID(i.id,o)}))},r.applyContext=function applyContext(r){switch(r.version){case 1:var i=this.coverageIndex(r.coverage);if(-1===i)return!1;for(var o,u=r.ruleSets[i],p=_createForOfIteratorHelperLoose(u);!(o=p()).done;){var g=o.value;if(this.sequenceMatches(1,g.input))return this.applyLookupList(g.lookupRecords)}break;case 2:if(-1===this.coverageIndex(r.coverage))return!1;if(-1===(i=this.getClassID(this.glyphIterator.cur.id,r.classDef)))return!1;for(var y,w=_createForOfIteratorHelperLoose(u=r.classSet[i]);!(y=w()).done;){var _=y.value;if(this.classSequenceMatches(1,_.classes,r.classDef))return this.applyLookupList(_.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(0,r.coverages))return this.applyLookupList(r.lookupRecords)}return!1},r.applyChainingContext=function applyChainingContext(r){switch(r.version){case 1:var i=this.coverageIndex(r.coverage);if(-1===i)return!1;for(var o,u=_createForOfIteratorHelperLoose(r.chainRuleSets[i]);!(o=u()).done;){var p=o.value;if(this.sequenceMatches(-p.backtrack.length,p.backtrack)&&this.sequenceMatches(1,p.input)&&this.sequenceMatches(1+p.input.length,p.lookahead))return this.applyLookupList(p.lookupRecords)}break;case 2:if(-1===this.coverageIndex(r.coverage))return!1;i=this.getClassID(this.glyphIterator.cur.id,r.inputClassDef);var g=r.chainClassSet[i];if(!g)return!1;for(var y,w=_createForOfIteratorHelperLoose(g);!(y=w()).done;){var _=y.value;if(this.classSequenceMatches(-_.backtrack.length,_.backtrack,r.backtrackClassDef)&&this.classSequenceMatches(1,_.input,r.inputClassDef)&&this.classSequenceMatches(1+_.input.length,_.lookahead,r.lookaheadClassDef))return this.applyLookupList(_.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(-r.backtrackGlyphCount,r.backtrackCoverage)&&this.coverageSequenceMatches(0,r.inputCoverage)&&this.coverageSequenceMatches(r.inputGlyphCount,r.lookaheadCoverage))return this.applyLookupList(r.lookupRecords)}return!1},OTProcessor}(),io=function(){function GlyphInfo(r,i,o,u){if(void 0===o&&(o=[]),this._font=r,this.codePoints=o,this.id=i,this.features={},Array.isArray(u))for(var p=0;p<u.length;p++){var g=u[p];this.features[g]=!0}else"object"==typeof u&&Object.assign(this.features,u);this.ligatureID=null,this.ligatureComponent=null,this.isLigated=!1,this.cursiveAttachment=null,this.markAttachment=null,this.shaperInfo=null,this.substituted=!1,this.isMultiplied=!1}return GlyphInfo.prototype.copy=function copy(){return new GlyphInfo(this._font,this.id,this.codePoints,this.features)},_createClass(GlyphInfo,[{key:"id",get:function get(){return this._id},set:function set(r){this._id=r,this.substituted=!0;var i=this._font.GDEF;if(i&&i.glyphClassDef){var o=no.prototype.getClassID(r,i.glyphClassDef);this.isBase=1===o,this.isLigature=2===o,this.isMark=3===o,this.markAttachmentType=i.markAttachClassDef?no.prototype.getClassID(r,i.markAttachClassDef):0}else this.isMark=this.codePoints.length>0&&this.codePoints.every(_.isMark),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0}}]),GlyphInfo}(),oo=function(r){function HangulShaper(){return r.apply(this,arguments)||this}return _inheritsLoose(HangulShaper,r),HangulShaper.planFeatures=function planFeatures(r){r.add(["ljmo","vjmo","tjmo"],!1)},HangulShaper.assignFeatures=function assignFeatures(r,i){for(var o=0,u=0;u<i.length;){var p,g=i[u].codePoints[0],y=getType(g),w=go[o][y];switch(p=w[0],o=w[1],p){case uo:r.font.hasGlyphForCodePoint(g)||(u=decompose(i,u,r.font));break;case fo:u=compose(i,u,r.font);break;case ho:reorderToneMark(i,u,r.font);break;case po:u=insertDottedCircle(i,u,r.font)}u++}},HangulShaper}(Ui);_defineProperty(oo,"zeroMarkWidths","NONE");var ao=44032,so=4352,co=4449,lo=4519;function getType(r){return function isL(r){return 4352<=r&&r<=4447||43360<=r&&r<=43388}(r)?1:function isV(r){return 4448<=r&&r<=4519||55216<=r&&r<=55238}(r)?2:function isT(r){return 4520<=r&&r<=4607||55243<=r&&r<=55291}(r)?3:function isLV(r){return r-ao<11173&&(r-ao)%28==0}(r)?4:function isLVT(r){return ao<=r&&r<=55204}(r)?5:function isTone(r){return 12334<=r&&r<=12335}(r)?6:0}var uo=1,fo=2,ho=4,po=5,go=[[[0,0],[0,1],[0,0],[0,0],[uo,2],[uo,3],[po,0]],[[0,0],[0,1],[fo,2],[0,0],[uo,2],[uo,3],[po,0]],[[0,0],[0,1],[0,0],[fo,3],[uo,2],[uo,3],[ho,0]],[[0,0],[0,1],[0,0],[0,0],[uo,2],[uo,3],[ho,0]]];function getGlyph(r,i,o){return new io(r,r.glyphForCodePoint(i).id,[i],o)}function decompose(r,i,o){var u=r[i],p=u.codePoints[0]-ao,g=lo+p%28,y=so+(p=p/28|0)/21|0,w=co+p%21;if(!o.hasGlyphForCodePoint(y)||!o.hasGlyphForCodePoint(w)||g!==lo&&!o.hasGlyphForCodePoint(g))return i;var _=getGlyph(o,y,u.features);_.features.ljmo=!0;var x=getGlyph(o,w,u.features);x.features.vjmo=!0;var k=[_,x];if(g>lo){var P=getGlyph(o,g,u.features);P.features.tjmo=!0,k.push(P)}return r.splice.apply(r,[i,1].concat(k)),i+k.length-1}function compose(r,i,o){var u,p,g,y,w=r[i],_=getType(r[i].codePoints[0]),x=r[i-1].codePoints[0],k=getType(x);if(4===k&&3===_)u=x,y=w;else{2===_?(p=r[i-1],g=w):(p=r[i-2],g=r[i-1],y=w);var P=p.codePoints[0],O=g.codePoints[0];(function isCombiningL(r){return so<=r&&r<=4370})(P)&&function isCombiningV(r){return co<=r&&r<=4469}(O)&&(u=ao+28*(21*(P-so)+(O-co)))}var I=y&&y.codePoints[0]||lo;if(null!=u&&(I===lo||function isCombiningT(r){return 1<=r&&r<=4546}(I))){var B=u+(I-lo);if(o.hasGlyphForCodePoint(B)){var R=2===k?3:2;return r.splice(i-R+1,R,getGlyph(o,B,w.features)),i-R+1}}return p&&(p.features.ljmo=!0),g&&(g.features.vjmo=!0),y&&(y.features.tjmo=!0),4===k?(decompose(r,i-1,o),i+1):i}function reorderToneMark(r,i,o){var u=r[i],p=r[i].codePoints[0];if(0!==o.glyphForCodePoint(p).advanceWidth){var g=function getLength(r){switch(getType(r)){case 4:case 5:return 1;case 2:return 2;case 3:return 3}}(r[i-1].codePoints[0]);return r.splice(i,1),r.splice(i-g,0,u)}}function insertDottedCircle(r,i,o){var u=r[i],p=r[i].codePoints[0];if(o.hasGlyphForCodePoint(9676)){var g=getGlyph(o,9676,u.features),y=0===o.glyphForCodePoint(p).advanceWidth?i:i+1;r.splice(y,0,g),i++}return i}var yo={stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],accepting:[!1,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!1,!1,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0],tags:[[],["broken_cluster"],["consonant_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],[],["broken_cluster"],["symbol_cluster"],[],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["symbol_cluster"],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],[],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],[],[],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],["consonant_syllable"],["vowel_syllable"],["standalone_cluster"]]},vo={categories:["O","IND","S","GB","B","FM","CGJ","VMAbv","VMPst","VAbv","VPst","CMBlw","VPre","VBlw","H","VMBlw","CMAbv","MBlw","CS","R","SUB","MPst","MPre","FAbv","FPst","FBlw","null","SMAbv","SMBlw","VMPre","ZWNJ","ZWJ","WJ","M","VS","N","HN","MAbv"],decompositions:{2507:[2503,2494],2508:[2503,2519],2888:[2887,2902],2891:[2887,2878],2892:[2887,2903],3018:[3014,3006],3019:[3015,3006],3020:[3014,3031],3144:[3142,3158],3264:[3263,3285],3271:[3270,3285],3272:[3270,3286],3274:[3270,3266],3275:[3270,3266,3285],3402:[3398,3390],3403:[3399,3390],3404:[3398,3415],3546:[3545,3530],3548:[3545,3535],3549:[3545,3535,3530],3550:[3545,3551],3635:[3661,3634],3763:[3789,3762],3955:[3953,3954],3957:[3953,3956],3958:[4018,3968],3959:[4018,3953,3968],3960:[4019,3968],3961:[4019,3953,3968],3969:[3953,3968],6971:[6970,6965],6973:[6972,6965],6976:[6974,6965],6977:[6975,6965],6979:[6978,6965],69934:[69937,69927],69935:[69938,69927],70475:[70471,70462],70476:[70471,70487],70843:[70841,70842],70844:[70841,70832],70846:[70841,70845],71098:[71096,71087],71099:[71097,71087]},stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,0,23,0,0,2,0,0,24,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,39,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0]],accepting:[!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0],tags:[[],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["symbol_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["virama_terminated_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["number_joiner_terminated_cluster"],["standard_cluster"],["standard_cluster"],["numeral_cluster"]]},mo=1,bo=8,wo=16,_o=32,So=64,xo=128,Co=8192,ko=32768,Po=65536,Ao=1<<17,Eo={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Above_C:64,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},To=2|Po|Ao|4|2048|4096,Oo=So|_o,Io=wo|16384,Bo={Default:{hasOldSpec:!1,virama:0,basePos:"Last",rephPos:Eo.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:!0,virama:2381,basePos:"Last",rephPos:Eo.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:!0,virama:2509,basePos:"Last",rephPos:Eo.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:!0,virama:2637,basePos:"Last",rephPos:Eo.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:!0,virama:2765,basePos:"Last",rephPos:Eo.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:!0,virama:2893,basePos:"Last",rephPos:Eo.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:!0,virama:3021,basePos:"Last",rephPos:Eo.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:!0,virama:3149,basePos:"Last",rephPos:Eo.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:!0,virama:3277,basePos:"Last",rephPos:Eo.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:!0,virama:3405,basePos:"Last",rephPos:Eo.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:!1,virama:6098,basePos:"First",rephPos:Eo.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},Fo={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},Lo=vo.decompositions,Ro=new x(p("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","base64")),Do=new k(yo),Mo=function(r){function IndicShaper(){return r.apply(this,arguments)||this}return _inheritsLoose(IndicShaper,r),IndicShaper.planFeatures=function planFeatures(r){r.addStage(setupSyllables),r.addStage(["locl","ccmp"]),r.addStage(initialReordering),r.addStage("nukt"),r.addStage("akhn"),r.addStage("rphf",!1),r.addStage("rkrf"),r.addStage("pref",!1),r.addStage("blwf",!1),r.addStage("abvf",!1),r.addStage("half",!1),r.addStage("pstf",!1),r.addStage("vatu"),r.addStage("cjct"),r.addStage("cfar",!1),r.addStage(finalReordering),r.addStage({local:["init"],global:["pres","abvs","blws","psts","haln","dist","abvm","blwm","calt","clig"]}),r.unicodeScript=function fromOpenType(r){return hi[r]}(r.script),r.indicConfig=Bo[r.unicodeScript]||Bo.Default,r.isOldSpec=r.indicConfig.hasOldSpec&&"2"!==r.script[r.script.length-1]},IndicShaper.assignFeatures=function assignFeatures(r,i){for(var o=function _loop(o){var u=i[o].codePoints[0],p=Fo[u]||Lo[u];if(p){var g=p.map((function(u){var p=r.font.glyphForCodePoint(u);return new io(r.font,p.id,[u],i[o].features)}));i.splice.apply(i,[o,1].concat(g))}},u=i.length-1;u>=0;u--)o(u)},IndicShaper}(Ui);function indicCategory(r){return Ro.get(r.codePoints[0])>>8}function indicPosition(r){return 1<<(255&Ro.get(r.codePoints[0]))}_defineProperty(Mo,"zeroMarkWidths","NONE");var No=function IndicInfo(r,i,o,u){this.category=r,this.position=i,this.syllableType=o,this.syllable=u};function setupSyllables(r,i){for(var o,u=0,p=0,g=_createForOfIteratorHelperLoose(Do.match(i.map(indicCategory)));!(o=g()).done;){var y=o.value,w=y[0],_=y[1],x=y[2];if(w>p){++u;for(var k=p;k<w;k++)i[k].shaperInfo=new No(mo,Eo.End,"non_indic_cluster",u)}++u;for(var P=w;P<=_;P++)i[P].shaperInfo=new No(1<<indicCategory(i[P]),indicPosition(i[P]),x[0],u);p=_+1}if(p<i.length){++u;for(var O=p;O<i.length;O++)i[O].shaperInfo=new No(mo,Eo.End,"non_indic_cluster",u)}}function isConsonant(r){return r.shaperInfo.category&To}function isJoiner(r){return r.shaperInfo.category&Oo}function isHalantOrCoeng(r){return r.shaperInfo.category&Io}function wouldSubstitute(r,i){for(var o,u=_createForOfIteratorHelperLoose(r);!(o=u()).done;){var p;o.value.features=((p={})[i]=!0,p)}return r[0]._font._layoutEngine.engine.GSUBProcessor.applyFeatures([i],r),1===r.length}function consonantPosition(r,i,o){var u=[o,i,o];return wouldSubstitute(u.slice(0,2),"blwf")||wouldSubstitute(u.slice(1,3),"blwf")?Eo.Below_C:wouldSubstitute(u.slice(0,2),"pstf")||wouldSubstitute(u.slice(1,3),"pstf")||wouldSubstitute(u.slice(0,2),"pref")||wouldSubstitute(u.slice(1,3),"pref")?Eo.Post_C:Eo.Base_C}function initialReordering(r,i,o){var u=o.indicConfig,p=r._layoutEngine.engine.GSUBProcessor.features,g=r.glyphForCodePoint(9676).id,y=r.glyphForCodePoint(u.virama).id;if(y)for(var w=new io(r,y,[u.virama]),_=0;_<i.length;_++)i[_].shaperInfo.position===Eo.Base_C&&(i[_].shaperInfo.position=consonantPosition(0,i[_].copy(),w));for(var x=0,k=nextSyllable(i,0);x<i.length;k=nextSyllable(i,x=k)){var P=i[x].shaperInfo,O=(P.category,P.syllableType);if("symbol_cluster"!==O&&"non_indic_cluster"!==O){if("broken_cluster"===O&&g){var I=new io(r,g,[9676]);I.shaperInfo=new No(1<<indicCategory(I),indicPosition(I),i[x].shaperInfo.syllableType,i[x].shaperInfo.syllable);for(var B=x;B<k&&i[B].shaperInfo.category===ko;)B++;i.splice(B++,0,I),k++}var R=k,D=x,N=!1;if(u.rephPos!==Eo.Ra_To_Become_Reph&&p.rphf&&x+3<=k&&("Implicit"===u.rephMode&&!isJoiner(i[x+2])||"Explicit"===u.rephMode&&i[x+2].shaperInfo.category===So)){var W=[i[x].copy(),i[x+1].copy(),i[x+2].copy()];if(wouldSubstitute(W.slice(0,2),"rphf")||"Explicit"===u.rephMode&&wouldSubstitute(W,"rphf")){for(D+=2;D<k&&isJoiner(i[D]);)D++;R=x,N=!0}}else if("Log_Repha"===u.rephMode&&i[x].shaperInfo.category===ko){for(D++;D<k&&isJoiner(i[D]);)D++;R=x,N=!0}switch(u.basePos){case"Last":var U=k,j=!1;do{var G=i[--U].shaperInfo;if(isConsonant(i[U])){if(G.position!==Eo.Below_C&&(G.position!==Eo.Post_C||j)){R=U;break}G.position===Eo.Below_C&&(j=!0),R=U}else if(x<U&&G.category===So&&i[U-1].shaperInfo.category===wo)break}while(U>D);break;case"First":for(var X=(R=x)+1;X<k;X++)isConsonant(i[X])&&(i[X].shaperInfo.position=Eo.Below_C)}N&&R===x&&D-R<=2&&(N=!1);for(var K=x;K<R;K++){var Y=i[K].shaperInfo;Y.position=Math.min(Eo.Pre_C,Y.position)}R<k&&(i[R].shaperInfo.position=Eo.Base_C);for(var J=R+1;J<k;J++)if(i[J].shaperInfo.category===xo){for(var $=J+1;$<k;$++)if(isConsonant(i[$])){i[$].shaperInfo.position=Eo.Final_C;break}break}if(N&&(i[x].shaperInfo.position=Eo.Ra_To_Become_Reph),o.isOldSpec)for(var ee="Malayalam"!==o.unicodeScript,te=R+1;te<k;te++)if(i[te].shaperInfo.category===wo){var re=void 0;for(re=k-1;re>te&&!(isConsonant(i[re])||ee&&i[re].shaperInfo.category===wo);re--);if(i[re].shaperInfo.category!==wo&&re>te){var ne=i[te];i.splice.apply(i,[te,0].concat(i.splice(te+1,re-te))),i[re]=ne}break}for(var ie=Eo.Start,oe=x;oe<k;oe++){var ae=i[oe].shaperInfo;if(ae.category&(Oo|bo|Co|Ao|Io&ae.category)){if(ae.position=ie,ae.category===wo&&ae.position===Eo.Pre_M)for(var se=oe;se>x;se--)if(i[se-1].shaperInfo.position!==Eo.Pre_M){ae.position=i[se-1].shaperInfo.position;break}}else ae.position!==Eo.SMVD&&(ie=ae.position)}for(var ce=R,le=R+1;le<k;le++)if(isConsonant(i[le])){for(var ue=ce+1;ue<le;ue++)i[ue].shaperInfo.position<Eo.SMVD&&(i[ue].shaperInfo.position=i[le].shaperInfo.position);ce=le}else i[le].shaperInfo.category===xo&&(ce=le);var fe=i.slice(x,k);fe.sort((function(r,i){return r.shaperInfo.position-i.shaperInfo.position})),i.splice.apply(i,[x,fe.length].concat(fe));for(var he=x;he<k;he++)if(i[he].shaperInfo.position===Eo.Base_C){R=he;break}for(var de=x;de<k&&i[de].shaperInfo.position===Eo.Ra_To_Become_Reph;de++)i[de].features.rphf=!0;for(var pe=!o.isOldSpec&&"Pre_And_Post"===u.blwfMode,ge=x;ge<R;ge++)i[ge].features.half=!0,pe&&(i[ge].features.blwf=!0);for(var ye=R+1;ye<k;ye++)i[ye].features.abvf=!0,i[ye].features.pstf=!0,i[ye].features.blwf=!0;if(o.isOldSpec&&"Devanagari"===o.unicodeScript)for(var ve=x;ve+1<R;ve++)i[ve].shaperInfo.category!==Po||i[ve+1].shaperInfo.category!==wo||ve+1!==R&&i[ve+2].shaperInfo.category!==So||(i[ve].features.blwf=!0,i[ve+1].features.blwf=!0);if(p.pref&&R+2<k)for(var me=R+1;me+2-1<k;me++){if(wouldSubstitute([i[me].copy(),i[me+1].copy()],"pref")){for(var be=0;be<2;be++)i[me++].features.pref=!0;if(p.cfar)for(;me<k;me++)i[me].features.cfar=!0;break}}for(var we=x+1;we<k;we++)if(isJoiner(i[we])){var _e=i[we].shaperInfo.category===_o,Se=we;do{Se--,_e&&delete i[Se].features.half}while(Se>x&&!isConsonant(i[Se]))}}}}function finalReordering(r,i,o){for(var u=o.indicConfig,p=r._layoutEngine.engine.GSUBProcessor.features,g=0,y=nextSyllable(i,0);g<i.length;y=nextSyllable(i,g=y)){for(var w=!!p.pref,x=g;x<y;x++)if(i[x].shaperInfo.position>=Eo.Base_C){if(w&&x+1<y)for(var k=x+1;k<y;k++)if(i[k].features.pref){if(!i[k].substituted||!i[k].isLigated||i[k].isMultiplied){for(x=k;x<y&&isHalantOrCoeng(i[x]);)x++;i[x].shaperInfo.position=Eo.BASE_C,w=!1}break}if("Malayalam"===o.unicodeScript)for(var P=x+1;P<y;P++){for(;P<y&&isJoiner(i[P]);)P++;if(P===y||!isHalantOrCoeng(i[P]))break;for(P++;P<y&&isJoiner(i[P]);)P++;P<y&&isConsonant(i[P])&&i[P].shaperInfo.position===Eo.Below_C&&(i[x=P].shaperInfo.position=Eo.Base_C)}g<x&&i[x].shaperInfo.position>Eo.Base_C&&x--;break}if(x===y&&g<x&&i[x-1].shaperInfo.category===So&&x--,x<y)for(;g<x&&i[x].shaperInfo.category&(bo|Io);)x--;if(g+1<y&&g<x){var O=x===y?x-2:x-1;if("Malayalam"!==o.unicodeScript&&"Tamil"!==o.unicodeScript){for(;O>g&&!(i[O].shaperInfo.category&(xo|Io));)O--;isHalantOrCoeng(i[O])&&i[O].shaperInfo.position!==Eo.Pre_M?O+1<y&&isJoiner(i[O+1])&&O++:O=g}if(g<O&&i[O].shaperInfo.position!==Eo.Pre_M)for(var I=O;I>g;I--)if(i[I-1].shaperInfo.position===Eo.Pre_M){var B=I-1;B<x&&x<=O&&x--;var R=i[B];i.splice.apply(i,[B,0].concat(i.splice(B+1,O-B))),i[O]=R,O--}}if(g+1<y&&i[g].shaperInfo.position===Eo.Ra_To_Become_Reph&&i[g].shaperInfo.category===ko!==(i[g].isLigated&&!i[g].isMultiplied)){var D=void 0,N=u.rephPos,W=!1;if(N!==Eo.After_Post){for(D=g+1;D<x&&!isHalantOrCoeng(i[D]);)D++;if(D<x&&isHalantOrCoeng(i[D])&&(D+1<x&&isJoiner(i[D+1])&&D++,W=!0),!W&&N===Eo.After_Main){for(D=x;D+1<y&&i[D+1].shaperInfo.position<=Eo.After_Main;)D++;W=D<y}if(!W&&N===Eo.After_Sub){for(D=x;D+1<y&&!(i[D+1].shaperInfo.position&(Eo.Post_C|Eo.After_Post|Eo.SMVD));)D++;W=D<y}}if(!W){for(D=g+1;D<x&&!isHalantOrCoeng(i[D]);)D++;D<x&&isHalantOrCoeng(i[D])&&(D+1<x&&isJoiner(i[D+1])&&D++,W=!0)}if(!W){for(D=y-1;D>g&&i[D].shaperInfo.position===Eo.SMVD;)D--;if(isHalantOrCoeng(i[D]))for(var U=x+1;U<D;U++)i[U].shaperInfo.category===xo&&D--}var j=i[g];i.splice.apply(i,[g,0].concat(i.splice(g+1,D-g))),i[D]=j,g<x&&x<=D&&x--}if(w&&x+1<y)for(var G=x+1;G<y;G++)if(i[G].features.pref){if(i[G].isLigated&&!i[G].isMultiplied){var X=x;if("Malayalam"!==o.unicodeScript&&"Tamil"!==o.unicodeScript){for(;X>g&&!(i[X-1].shaperInfo.category&(xo|Io));)X--;if(X>g&&i[X-1].shaperInfo.category===xo)for(var K=G,Y=x+1;Y<K;Y++)if(i[Y].shaperInfo.category===xo){X--;break}}X>g&&isHalantOrCoeng(i[X-1])&&X<y&&isJoiner(i[X])&&X++;var J=G,$=i[J];i.splice.apply(i,[X+1,0].concat(i.splice(X,J-X))),i[X]=$,X<=x&&x<J&&x++}break}i[g].shaperInfo.position!==Eo.Pre_M||g&&/Cf|Mn/.test(_.getCategory(i[g-1].codePoints[0]))||(i[g].features.init=!0)}}function nextSyllable(r,i){if(i>=r.length)return i;for(var o=r[i].shaperInfo.syllable;++i<r.length&&r[i].shaperInfo.syllable===o;);return i}var Wo=vo.categories,zo=vo.decompositions,Uo=new x(p("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","base64")),jo=new k(vo),Go=function(r){function UniversalShaper(){return r.apply(this,arguments)||this}return _inheritsLoose(UniversalShaper,r),UniversalShaper.planFeatures=function planFeatures(r){r.addStage(setupSyllables$1),r.addStage(["locl","ccmp","nukt","akhn"]),r.addStage(clearSubstitutionFlags),r.addStage(["rphf"],!1),r.addStage(recordRphf),r.addStage(clearSubstitutionFlags),r.addStage(["pref"]),r.addStage(recordPref),r.addStage(["rkrf","abvf","blwf","half","pstf","vatu","cjct"]),r.addStage(reorder),r.addStage(["abvs","blws","pres","psts","dist","abvm","blwm"])},UniversalShaper.assignFeatures=function assignFeatures(r,i){for(var o=function _loop(o){var u=i[o].codePoints[0];if(zo[u]){var p=zo[u].map((function(u){var p=r.font.glyphForCodePoint(u);return new io(r.font,p.id,[u],i[o].features)}));i.splice.apply(i,[o,1].concat(p))}},u=i.length-1;u>=0;u--)o(u)},UniversalShaper}(Ui);function useCategory(r){return Uo.get(r.codePoints[0])}_defineProperty(Go,"zeroMarkWidths","BEFORE_GPOS");var Vo=function USEInfo(r,i,o){this.category=r,this.syllableType=i,this.syllable=o};function setupSyllables$1(r,i){for(var o,u=0,p=_createForOfIteratorHelperLoose(jo.match(i.map(useCategory)));!(o=p()).done;){var g=o.value,y=g[0],w=g[1],_=g[2];++u;for(var x=y;x<=w;x++)i[x].shaperInfo=new Vo(Wo[useCategory(i[x])],_[0],u);for(var k="R"===i[y].shaperInfo.category?1:Math.min(3,w-y),P=y;P<y+k;P++)i[P].features.rphf=!0}}function clearSubstitutionFlags(r,i){for(var o,u=_createForOfIteratorHelperLoose(i);!(o=u()).done;){o.value.substituted=!1}}function recordRphf(r,i){for(var o,u=_createForOfIteratorHelperLoose(i);!(o=u()).done;){var p=o.value;p.substituted&&p.features.rphf&&(p.shaperInfo.category="R")}}function recordPref(r,i){for(var o,u=_createForOfIteratorHelperLoose(i);!(o=u()).done;){var p=o.value;p.substituted&&(p.shaperInfo.category="VPre")}}function reorder(r,i){for(var o=r.glyphForCodePoint(9676).id,u=0,p=nextSyllable$1(i,0);u<i.length;p=nextSyllable$1(i,u=p)){var g=void 0,y=void 0,w=i[u].shaperInfo,_=w.syllableType;if("virama_terminated_cluster"===_||"standard_cluster"===_||"broken_cluster"===_){if("broken_cluster"===_&&o){var x=new io(r,o,[9676]);for(x.shaperInfo=w,g=u;g<p&&"R"===i[g].shaperInfo.category;g++);i.splice(++g,0,x),p++}if("R"===w.category&&p-u>1)for(g=u+1;g<p;g++)if(isBase(w=i[g].shaperInfo)||isHalant(i[g])){isHalant(i[g])&&g--,i.splice.apply(i,[u,0].concat(i.splice(u+1,g-u),[i[g]]));break}for(g=u,y=p;g<p;g++)isBase(w=i[g].shaperInfo)||isHalant(i[g])?y=isHalant(i[g])?g+1:g:("VPre"===w.category||"VMPre"===w.category)&&y<g&&i.splice.apply(i,[y,1,i[g]].concat(i.splice(y,g-y)))}}}function nextSyllable$1(r,i){if(i>=r.length)return i;for(var o=r[i].shaperInfo.syllable;++i<r.length&&r[i].shaperInfo.syllable===o;);return i}function isHalant(r){return"H"===r.shaperInfo.category&&!r.isLigated}function isBase(r){return"B"===r.category||"GB"===r.category}var Ho={arab:eo,mong:eo,syrc:eo,"nko ":eo,phag:eo,mand:eo,mani:eo,phlp:eo,hang:oo,bng2:Mo,beng:Mo,dev2:Mo,deva:Mo,gjr2:Mo,gujr:Mo,guru:Mo,gur2:Mo,knda:Mo,knd2:Mo,mlm2:Mo,mlym:Mo,ory2:Mo,orya:Mo,taml:Mo,tml2:Mo,telu:Mo,tel2:Mo,khmr:Mo,bali:Go,batk:Go,brah:Go,bugi:Go,buhd:Go,cakm:Go,cham:Go,dupl:Go,egyp:Go,gran:Go,hano:Go,java:Go,kthi:Go,kali:Go,khar:Go,khoj:Go,sind:Go,lepc:Go,limb:Go,mahj:Go,mtei:Go,modi:Go,hmng:Go,rjng:Go,saur:Go,shrd:Go,sidd:Go,sinh:Go,sund:Go,sylo:Go,tglg:Go,tagb:Go,tale:Go,lana:Go,tavt:Go,takr:Go,tibt:Go,tfng:Go,tirh:Go,latn:Ui,DFLT:Ui};for(var qo=function(r){function GSUBProcessor(){return r.apply(this,arguments)||this}return _inheritsLoose(GSUBProcessor,r),GSUBProcessor.prototype.applyLookup=function applyLookup(r,i){var o=this;switch(r){case 1:var u=this.coverageIndex(i.coverage);if(-1===u)return!1;var p=this.glyphIterator.cur;switch(i.version){case 1:p.id=p.id+i.deltaGlyphID&65535;break;case 2:p.id=i.substitute.get(u)}return!0;case 2:var g=this.coverageIndex(i.coverage);if(-1!==g){var y,w=i.sequences.get(g);if(0===w.length)return this.glyphs.splice(this.glyphIterator.index,1),!0;this.glyphIterator.cur.id=w[0],this.glyphIterator.cur.ligatureComponent=0;var _=this.glyphIterator.cur.features,x=this.glyphIterator.cur,k=w.slice(1).map((function(r,i){var u=new io(o.font,r,void 0,_);return u.shaperInfo=x.shaperInfo,u.isLigated=x.isLigated,u.ligatureComponent=i+1,u.substituted=!0,u.isMultiplied=!0,u}));return(y=this.glyphs).splice.apply(y,[this.glyphIterator.index+1,0].concat(k)),!0}return!1;case 3:var P=this.coverageIndex(i.coverage);if(-1!==P){return this.glyphIterator.cur.id=i.alternateSet.get(P)[0],!0}return!1;case 4:var O=this.coverageIndex(i.coverage);if(-1===O)return!1;for(var I,B=_createForOfIteratorHelperLoose(i.ligatureSets.get(O));!(I=B()).done;){var R=I.value,D=this.sequenceMatchIndices(1,R.components);if(D){for(var N,W=this.glyphIterator.cur,U=W.codePoints.slice(),j=_createForOfIteratorHelperLoose(D);!(N=j()).done;){var G,X=N.value;(G=U).push.apply(G,this.glyphs[X].codePoints)}var K=new io(this.font,R.glyph,U,W.features);K.shaperInfo=W.shaperInfo,K.isLigated=!0,K.substituted=!0;for(var Y=W.isMark,J=0;J<D.length&&Y;J++)Y=this.glyphs[D[J]].isMark;K.ligatureID=Y?null:this.ligatureID++;for(var $,ee=W.ligatureID,te=W.codePoints.length,re=te,ne=this.glyphIterator.index+1,ie=_createForOfIteratorHelperLoose(D);!($=ie()).done;){var oe=$.value;if(Y)ne=oe;else for(;ne<oe;){var ae=re-te+Math.min(this.glyphs[ne].ligatureComponent||1,te);this.glyphs[ne].ligatureID=K.ligatureID,this.glyphs[ne].ligatureComponent=ae,ne++}ee=this.glyphs[ne].ligatureID,re+=te=this.glyphs[ne].codePoints.length,ne++}if(ee&&!Y)for(var se=ne;se<this.glyphs.length&&this.glyphs[se].ligatureID===ee;se++){ae=re-te+Math.min(this.glyphs[se].ligatureComponent||1,te);this.glyphs[se].ligatureComponent=ae}for(var ce=D.length-1;ce>=0;ce--)this.glyphs.splice(D[ce],1);return this.glyphs[this.glyphIterator.index]=K,!0}}return!1;case 5:return this.applyContext(i);case 6:return this.applyChainingContext(i);case 7:return this.applyLookup(i.lookupType,i.extension);default:throw new Error("GSUB lookupType ".concat(r," is not supported"))}},GSUBProcessor}(no),Xo=function(r){function GPOSProcessor(){return r.apply(this,arguments)||this}_inheritsLoose(GPOSProcessor,r);var i=GPOSProcessor.prototype;return i.applyPositionValue=function applyPositionValue(r,i){var o=this.positions[this.glyphIterator.peekIndex(r)];null!=i.xAdvance&&(o.xAdvance+=i.xAdvance),null!=i.yAdvance&&(o.yAdvance+=i.yAdvance),null!=i.xPlacement&&(o.xOffset+=i.xPlacement),null!=i.yPlacement&&(o.yOffset+=i.yPlacement);var u=this.font._variationProcessor,p=this.font.GDEF&&this.font.GDEF.itemVariationStore;u&&p&&(i.xPlaDevice&&(o.xOffset+=u.getDelta(p,i.xPlaDevice.a,i.xPlaDevice.b)),i.yPlaDevice&&(o.yOffset+=u.getDelta(p,i.yPlaDevice.a,i.yPlaDevice.b)),i.xAdvDevice&&(o.xAdvance+=u.getDelta(p,i.xAdvDevice.a,i.xAdvDevice.b)),i.yAdvDevice&&(o.yAdvance+=u.getDelta(p,i.yAdvDevice.a,i.yAdvDevice.b)))},i.applyLookup=function applyLookup(r,i){switch(r){case 1:var o=this.coverageIndex(i.coverage);if(-1===o)return!1;switch(i.version){case 1:this.applyPositionValue(0,i.value);break;case 2:this.applyPositionValue(0,i.values.get(o))}return!0;case 2:var u=this.glyphIterator.peek();if(!u)return!1;var p=this.coverageIndex(i.coverage);if(-1===p)return!1;switch(i.version){case 1:for(var g,y=_createForOfIteratorHelperLoose(i.pairSets.get(p));!(g=y()).done;){var w=g.value;if(w.secondGlyph===u.id)return this.applyPositionValue(0,w.value1),this.applyPositionValue(1,w.value2),!0}return!1;case 2:var _=this.getClassID(this.glyphIterator.cur.id,i.classDef1),x=this.getClassID(u.id,i.classDef2);if(-1===_||-1===x)return!1;var k=i.classRecords.get(_).get(x);return this.applyPositionValue(0,k.value1),this.applyPositionValue(1,k.value2),!0}case 3:var P=this.glyphIterator.peekIndex(),O=this.glyphs[P];if(!O)return!1;var I=i.entryExitRecords[this.coverageIndex(i.coverage)];if(!I||!I.exitAnchor)return!1;var B=i.entryExitRecords[this.coverageIndex(i.coverage,O.id)];if(!B||!B.entryAnchor)return!1;var R=this.getAnchor(B.entryAnchor),D=this.getAnchor(I.exitAnchor),N=this.positions[this.glyphIterator.index],W=this.positions[P];switch(this.direction){case"ltr":N.xAdvance=D.x+N.xOffset;var U=R.x+W.xOffset;W.xAdvance-=U,W.xOffset-=U;break;case"rtl":U=D.x+N.xOffset,N.xAdvance-=U,N.xOffset-=U,W.xAdvance=R.x+W.xOffset}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=P,N.yOffset=R.y-D.y):(O.cursiveAttachment=this.glyphIterator.index,N.yOffset=D.y-R.y),!0;case 4:var j=this.coverageIndex(i.markCoverage);if(-1===j)return!1;for(var G=this.glyphIterator.index;--G>=0&&(this.glyphs[G].isMark||this.glyphs[G].ligatureComponent>0););if(G<0)return!1;var X=this.coverageIndex(i.baseCoverage,this.glyphs[G].id);if(-1===X)return!1;var K=i.markArray[j],Y=i.baseArray[X][K.class];return this.applyAnchor(K,Y,G),!0;case 5:var J=this.coverageIndex(i.markCoverage);if(-1===J)return!1;for(var $=this.glyphIterator.index;--$>=0&&this.glyphs[$].isMark;);if($<0)return!1;var ee=this.coverageIndex(i.ligatureCoverage,this.glyphs[$].id);if(-1===ee)return!1;var te=i.ligatureArray[ee],re=this.glyphIterator.cur,ne=this.glyphs[$],ie=ne.ligatureID&&ne.ligatureID===re.ligatureID&&re.ligatureComponent>0?Math.min(re.ligatureComponent,ne.codePoints.length)-1:ne.codePoints.length-1,oe=i.markArray[J],ae=te[ie][oe.class];return this.applyAnchor(oe,ae,$),!0;case 6:var se=this.coverageIndex(i.mark1Coverage);if(-1===se)return!1;var ce=this.glyphIterator.peekIndex(-1),le=this.glyphs[ce];if(!le||!le.isMark)return!1;var ue=this.glyphIterator.cur,fe=!1;if(ue.ligatureID===le.ligatureID?ue.ligatureID?ue.ligatureComponent===le.ligatureComponent&&(fe=!0):fe=!0:(ue.ligatureID&&!ue.ligatureComponent||le.ligatureID&&!le.ligatureComponent)&&(fe=!0),!fe)return!1;var he=this.coverageIndex(i.mark2Coverage,le.id);if(-1===he)return!1;var de=i.mark1Array[se],pe=i.mark2Array[he][de.class];return this.applyAnchor(de,pe,ce),!0;case 7:return this.applyContext(i);case 8:return this.applyChainingContext(i);case 9:return this.applyLookup(i.lookupType,i.extension);default:throw new Error("Unsupported GPOS table: ".concat(r))}},i.applyAnchor=function applyAnchor(r,i,o){var u=this.getAnchor(i),p=this.getAnchor(r.markAnchor),g=(this.positions[o],this.positions[this.glyphIterator.index]);g.xOffset=u.x-p.x,g.yOffset=u.y-p.y,this.glyphIterator.cur.markAttachment=o},i.getAnchor=function getAnchor(r){var i=r.xCoordinate,o=r.yCoordinate,u=this.font._variationProcessor,p=this.font.GDEF&&this.font.GDEF.itemVariationStore;return u&&p&&(r.xDeviceTable&&(i+=u.getDelta(p,r.xDeviceTable.a,r.xDeviceTable.b)),r.yDeviceTable&&(o+=u.getDelta(p,r.yDeviceTable.a,r.yDeviceTable.b))),{x:i,y:o}},i.applyFeatures=function applyFeatures(i,o,u){r.prototype.applyFeatures.call(this,i,o,u);for(var p=0;p<this.glyphs.length;p++)this.fixCursiveAttachment(p);this.fixMarkAttachment()},i.fixCursiveAttachment=function fixCursiveAttachment(r){var i=this.glyphs[r];if(null!=i.cursiveAttachment){var o=i.cursiveAttachment;i.cursiveAttachment=null,this.fixCursiveAttachment(o),this.positions[r].yOffset+=this.positions[o].yOffset}},i.fixMarkAttachment=function fixMarkAttachment(){for(var r=0;r<this.glyphs.length;r++){var i=this.glyphs[r];if(null!=i.markAttachment){var o=i.markAttachment;if(this.positions[r].xOffset+=this.positions[o].xOffset,this.positions[r].yOffset+=this.positions[o].yOffset,"ltr"===this.direction)for(var u=o;u<r;u++)this.positions[r].xOffset-=this.positions[u].xAdvance,this.positions[r].yOffset-=this.positions[u].yAdvance;else for(var p=o+1;p<r+1;p++)this.positions[r].xOffset+=this.positions[p].xAdvance,this.positions[r].yOffset+=this.positions[p].yAdvance}}},GPOSProcessor}(no),Zo=function(){function OTLayoutEngine(r){this.font=r,this.glyphInfos=null,this.plan=null,this.GSUBProcessor=null,this.GPOSProcessor=null,this.fallbackPosition=!0,r.GSUB&&(this.GSUBProcessor=new qo(r,r.GSUB)),r.GPOS&&(this.GPOSProcessor=new Xo(r,r.GPOS))}var r=OTLayoutEngine.prototype;return r.setup=function setup(r){var i=this;this.glyphInfos=r.glyphs.map((function(r){return new io(i.font,r.id,[].concat(r.codePoints))}));var o=null;for(var u in this.GPOSProcessor&&(o=this.GPOSProcessor.selectScript(r.script,r.language,r.direction)),this.GSUBProcessor&&(o=this.GSUBProcessor.selectScript(r.script,r.language,r.direction)),this.shaper=function choose(r){Array.isArray(r)||(r=[r]);for(var i,o=_createForOfIteratorHelperLoose(r);!(i=o()).done;){var u=i.value,p=Ho[u];if(p)return p}return Ui}(o),this.plan=new Ri(this.font,o,r.direction),this.shaper.plan(this.plan,this.glyphInfos,r.features),this.plan.allFeatures)r.features[u]=!0},r.substitute=function substitute(r){var i=this;this.GSUBProcessor&&(this.plan.process(this.GSUBProcessor,this.glyphInfos),r.glyphs=this.glyphInfos.map((function(r){return i.font.getGlyph(r.id,r.codePoints)})))},r.position=function position(r){return"BEFORE_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(r.positions),this.GPOSProcessor&&this.plan.process(this.GPOSProcessor,this.glyphInfos,r.positions),"AFTER_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(r.positions),"rtl"===r.direction&&(r.glyphs.reverse(),r.positions.reverse()),this.GPOSProcessor&&this.GPOSProcessor.features},r.zeroMarkAdvances=function zeroMarkAdvances(r){for(var i=0;i<this.glyphInfos.length;i++)this.glyphInfos[i].isMark&&(r[i].xAdvance=0,r[i].yAdvance=0)},r.cleanup=function cleanup(){this.glyphInfos=null,this.plan=null,this.shaper=null},r.getAvailableFeatures=function getAvailableFeatures(r,i){var o=[];return this.GSUBProcessor&&(this.GSUBProcessor.selectScript(r,i),o.push.apply(o,Object.keys(this.GSUBProcessor.features))),this.GPOSProcessor&&(this.GPOSProcessor.selectScript(r,i),o.push.apply(o,Object.keys(this.GPOSProcessor.features))),o},OTLayoutEngine}(),Ko=function(){function LayoutEngine(r){this.font=r,this.unicodeLayoutEngine=null,this.kernProcessor=null,this.font.morx?this.engine=new Li(this.font):(this.font.GSUB||this.font.GPOS)&&(this.engine=new Zo(this.font))}var r=LayoutEngine.prototype;return r.layout=function layout(r,i,o,u,p){if("string"==typeof i&&(p=u,u=o,o=i,i=[]),"string"==typeof r){null==o&&(o=function forString(r){for(var i=r.length,o=0;o<i;){var u=r.charCodeAt(o++);if(55296<=u&&u<=56319&&o<i){var p=r.charCodeAt(o);56320<=p&&p<=57343&&(o++,u=((1023&u)<<10)+(1023&p)+65536)}var g=_.getScript(u);if("Common"!==g&&"Inherited"!==g&&"Unknown"!==g)return fi[g]}return fi.Unknown}(r));var g=this.font.glyphsForString(r)}else{if(null==o){for(var y,w=[],x=_createForOfIteratorHelperLoose(r);!(y=x()).done;){var k=y.value;w.push.apply(w,k.codePoints)}o=function forCodePoints(r){for(var i=0;i<r.length;i++){var o=r[i],u=_.getScript(o);if("Common"!==u&&"Inherited"!==u&&"Unknown"!==u)return fi[u]}return fi.Unknown}(w)}g=r}var P=new bi(g,i,o,u,p);return 0===g.length?(P.positions=[],P):(this.engine&&this.engine.setup&&this.engine.setup(P),this.substitute(P),this.position(P),this.hideDefaultIgnorables(P.glyphs,P.positions),this.engine&&this.engine.cleanup&&this.engine.cleanup(),P)},r.substitute=function substitute(r){this.engine&&this.engine.substitute&&this.engine.substitute(r)},r.position=function position(r){r.positions=r.glyphs.map((function(r){return new wi(r.advanceWidth)}));var i=null;this.engine&&this.engine.position&&(i=this.engine.position(r)),i||this.engine&&!this.engine.fallbackPosition||(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new li(this.font)),this.unicodeLayoutEngine.positionGlyphs(r.glyphs,r.positions)),i&&i.kern||!1===r.features.kern||!this.font.kern||(this.kernProcessor||(this.kernProcessor=new ci(this.font)),this.kernProcessor.process(r.glyphs,r.positions),r.features.kern=!0)},r.hideDefaultIgnorables=function hideDefaultIgnorables(r,i){for(var o=this.font.glyphForCodePoint(32),u=0;u<r.length;u++)this.isDefaultIgnorable(r[u].codePoints[0])&&(r[u]=o,i[u].xAdvance=0,i[u].yAdvance=0)},r.isDefaultIgnorable=function isDefaultIgnorable(r){var i=r>>16;if(0===i)switch(r>>8){case 0:return 173===r;case 3:return 847===r;case 6:return 1564===r;case 23:return 6068<=r&&r<=6069;case 24:return 6155<=r&&r<=6158;case 32:return 8203<=r&&r<=8207||8234<=r&&r<=8238||8288<=r&&r<=8303;case 254:return 65024<=r&&r<=65039||65279===r;case 255:return 65520<=r&&r<=65528;default:return!1}else switch(i){case 1:return 113824<=r&&r<=113827||119155<=r&&r<=119162;case 14:return 917504<=r&&r<=921599;default:return!1}},r.getAvailableFeatures=function getAvailableFeatures(r,i){var o=[];return this.engine&&o.push.apply(o,this.engine.getAvailableFeatures(r,i)),this.font.kern&&-1===o.indexOf("kern")&&o.push("kern"),o},r.stringsForGlyph=function stringsForGlyph(r){for(var i,o=new Set,u=_createForOfIteratorHelperLoose(this.font._cmapProcessor.codePointsForGlyph(r));!(i=u()).done;){var p=i.value;o.add(String.fromCodePoint(p))}if(this.engine&&this.engine.stringsForGlyph)for(var g,y=_createForOfIteratorHelperLoose(this.engine.stringsForGlyph(r));!(g=y()).done;){var w=g.value;o.add(w)}return Array.from(o)},LayoutEngine}(),Yo={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},Jo=function(){function Path(){this.commands=[],this._bbox=null,this._cbox=null}var r=Path.prototype;return r.toFunction=function toFunction(){var r=this;return function(i){r.commands.forEach((function(r){return i[r.command].apply(i,r.args)}))}},r.toSVG=function toSVG(){return this.commands.map((function(r){var i=r.args.map((function(r){return Math.round(100*r)/100}));return"".concat(Yo[r.command]).concat(i.join(" "))})).join("")},r.mapPoints=function mapPoints(r){for(var i,o=new Path,u=_createForOfIteratorHelperLoose(this.commands);!(i=u()).done;){for(var p=i.value,g=[],y=0;y<p.args.length;y+=2){var w=r(p.args[y],p.args[y+1]),_=w[0],x=w[1];g.push(_,x)}o[p.command].apply(o,g)}return o},r.transform=function transform(r,i,o,u,p,g){return this.mapPoints((function(y,w){return[y=r*y+o*w+p,w=i*y+u*w+g]}))},r.translate=function translate(r,i){return this.transform(1,0,0,1,r,i)},r.rotate=function rotate(r){var i=Math.cos(r),o=Math.sin(r);return this.transform(i,o,-o,i,0,0)},r.scale=function scale(r,i){return void 0===i&&(i=r),this.transform(r,0,0,i,0,0)},_createClass(Path,[{key:"cbox",get:function get(){if(!this._cbox){for(var r,i=new ui,o=_createForOfIteratorHelperLoose(this.commands);!(r=o()).done;)for(var u=r.value,p=0;p<u.args.length;p+=2)i.addPoint(u.args[p],u.args[p+1]);this._cbox=Object.freeze(i)}return this._cbox}},{key:"bbox",get:function get(){if(this._bbox)return this._bbox;for(var r,i=new ui,o=0,u=0,p=function f(r){return Math.pow(1-r,3)*j[Y]+3*Math.pow(1-r,2)*r*G[Y]+3*(1-r)*Math.pow(r,2)*X[Y]+Math.pow(r,3)*K[Y]},g=_createForOfIteratorHelperLoose(this.commands);!(r=g()).done;){var y=r.value;switch(y.command){case"moveTo":case"lineTo":var w=y.args,_=w[0],x=w[1];i.addPoint(_,x),o=_,u=x;break;case"quadraticCurveTo":case"bezierCurveTo":if("quadraticCurveTo"===y.command)var k=y.args,P=k[0],O=k[1],I=o+2/3*(P-o),B=u+2/3*(O-u),R=(W=k[2])+2/3*(P-W),D=(U=k[3])+2/3*(O-U);else var N=y.args,W=(I=N[0],B=N[1],R=N[2],D=N[3],N[4]),U=N[5];i.addPoint(W,U);for(var j=[o,u],G=[I,B],X=[R,D],K=[W,U],Y=0;Y<=1;Y++){var J=6*j[Y]-12*G[Y]+6*X[Y],$=-3*j[Y]+9*G[Y]-9*X[Y]+3*K[Y];if(y=3*G[Y]-3*j[Y],0!==$){var ee=Math.pow(J,2)-4*y*$;if(!(ee<0)){var te=(-J+Math.sqrt(ee))/(2*$);0<te&&te<1&&(0===Y?i.addPoint(p(te),i.maxY):1===Y&&i.addPoint(i.maxX,p(te)));var re=(-J-Math.sqrt(ee))/(2*$);0<re&&re<1&&(0===Y?i.addPoint(p(re),i.maxY):1===Y&&i.addPoint(i.maxX,p(re)))}}else{if(0===J)continue;var ne=-y/J;0<ne&&ne<1&&(0===Y?i.addPoint(p(ne),i.maxY):1===Y&&i.addPoint(i.maxX,p(ne)))}}o=W,u=U}}return this._bbox=Object.freeze(i)}}]),Path}(),Qo=function _loop(r){Jo.prototype[r]=function(){this._bbox=this._cbox=null;for(var i=arguments.length,o=new Array(i),u=0;u<i;u++)o[u]=arguments[u];return this.commands.push({command:r,args:o}),this}},$o=0,ea=["moveTo","lineTo","quadraticCurveTo","bezierCurveTo","closePath"];$o<ea.length;$o++){Qo(ea[$o])}var ta,ra,na=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],ia=(ta=function(){function Glyph(r,i,o){this.id=r,this.codePoints=i,this._font=o,this.isMark=this.codePoints.length>0&&this.codePoints.every(_.isMark),this.isLigature=this.codePoints.length>1}var r=Glyph.prototype;return r._getPath=function _getPath(){return new Jo},r._getCBox=function _getCBox(){return this.path.cbox},r._getBBox=function _getBBox(){return this.path.bbox},r._getTableMetrics=function _getTableMetrics(r){if(this.id<r.metrics.length)return r.metrics.get(this.id);var i=r.metrics.get(r.metrics.length-1);return{advance:i?i.advance:0,bearing:r.bearings.get(this.id-r.metrics.length)||0}},r._getMetrics=function _getMetrics(r){if(this._metrics)return this._metrics;var i,o=this._getTableMetrics(this._font.hmtx),u=o.advance,p=o.bearing;if(this._font.vmtx)var g=this._getTableMetrics(this._font.vmtx),y=g.advance,w=g.bearing;else if(null==r&&(r=this.cbox),(i=this._font["OS/2"])&&i.version>0)y=Math.abs(i.typoAscender-i.typoDescender),w=i.typoAscender-r.maxY;else{var _=this._font.hhea;y=Math.abs(_.ascent-_.descent),w=_.ascent-r.maxY}return this._font._variationProcessor&&this._font.HVAR&&(u+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:u,advanceHeight:y,leftBearing:p,topBearing:w}},r.getScaledPath=function getScaledPath(r){var i=1/this._font.unitsPerEm*r;return this.path.scale(i)},r._getName=function _getName(){var r=this._font.post;if(!r)return null;switch(r.version){case 1:return na[this.id];case 2:var i=r.glyphNameIndex[this.id];return i<na.length?na[i]:r.names[i-na.length];case 2.5:return na[this.id+r.offsets[this.id]];case 4:return String.fromCharCode(r.map[this.id])}},r.render=function render(r,i){r.save();var o=1/this._font.head.unitsPerEm*i;r.scale(o,o),this.path.toFunction()(r),r.fill(),r.restore()},_createClass(Glyph,[{key:"cbox",get:function get(){return this._getCBox()}},{key:"bbox",get:function get(){return this._getBBox()}},{key:"path",get:function get(){return this._getPath()}},{key:"advanceWidth",get:function get(){return this._getMetrics().advanceWidth}},{key:"advanceHeight",get:function get(){return this._getMetrics().advanceHeight}},{key:"ligatureCaretPositions",get:function get(){}},{key:"name",get:function get(){return this._getName()}}]),Glyph}(),_applyDecoratedDescriptor(ta.prototype,"cbox",[cache],Object.getOwnPropertyDescriptor(ta.prototype,"cbox"),ta.prototype),_applyDecoratedDescriptor(ta.prototype,"bbox",[cache],Object.getOwnPropertyDescriptor(ta.prototype,"bbox"),ta.prototype),_applyDecoratedDescriptor(ta.prototype,"path",[cache],Object.getOwnPropertyDescriptor(ta.prototype,"path"),ta.prototype),_applyDecoratedDescriptor(ta.prototype,"advanceWidth",[cache],Object.getOwnPropertyDescriptor(ta.prototype,"advanceWidth"),ta.prototype),_applyDecoratedDescriptor(ta.prototype,"advanceHeight",[cache],Object.getOwnPropertyDescriptor(ta.prototype,"advanceHeight"),ta.prototype),_applyDecoratedDescriptor(ta.prototype,"name",[cache],Object.getOwnPropertyDescriptor(ta.prototype,"name"),ta.prototype),ta),oa=new g.Struct({numberOfContours:g.int16,xMin:g.int16,yMin:g.int16,xMax:g.int16,yMax:g.int16}),aa=function(){function Point(r,i,o,u){void 0===o&&(o=0),void 0===u&&(u=0),this.onCurve=r,this.endContour=i,this.x=o,this.y=u}return Point.prototype.copy=function copy(){return new Point(this.onCurve,this.endContour,this.x,this.y)},Point}(),sa=function Component(r,i,o){this.glyphID=r,this.dx=i,this.dy=o,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0},ca=function(r){function TTFGlyph(){return r.apply(this,arguments)||this}_inheritsLoose(TTFGlyph,r);var i=TTFGlyph.prototype;return i._getCBox=function _getCBox(r){if(this._font._variationProcessor&&!r)return this.path.cbox;var i=this._font._getTableStream("glyf");i.pos+=this._font.loca.offsets[this.id];var o=oa.decode(i),u=new ui(o.xMin,o.yMin,o.xMax,o.yMax);return Object.freeze(u)},i._parseGlyphCoord=function _parseGlyphCoord(r,i,o,u){if(o){var p=r.readUInt8();u||(p=-p),p+=i}else if(u)p=i;else p=i+r.readInt16BE();return p},i._decode=function _decode(){var r=this._font.loca.offsets[this.id];if(r===this._font.loca.offsets[this.id+1])return null;var i=this._font._getTableStream("glyf");i.pos+=r;var o=i.pos,u=oa.decode(i);return u.numberOfContours>0?this._decodeSimple(u,i):u.numberOfContours<0&&this._decodeComposite(u,i,o),u},i._decodeSimple=function _decodeSimple(r,i){r.points=[];var o=new g.Array(g.uint16,r.numberOfContours).decode(i);r.instructions=new g.Array(g.uint8,g.uint16).decode(i);for(var u=[],p=o[o.length-1]+1;u.length<p;){var y=i.readUInt8();if(u.push(y),8&y)for(var w=i.readUInt8(),_=0;_<w;_++)u.push(y)}for(var x=0;x<u.length;x++){y=u[x];var k=new aa(!!(1&y),o.indexOf(x)>=0,0,0);r.points.push(k)}var P=0;for(x=0;x<u.length;x++){y=u[x];r.points[x].x=P=this._parseGlyphCoord(i,P,2&y,16&y)}var O=0;for(x=0;x<u.length;x++){y=u[x];r.points[x].y=O=this._parseGlyphCoord(i,O,4&y,32&y)}if(this._font._variationProcessor){var I=r.points.slice();I.push.apply(I,this._getPhantomPoints(r)),this._font._variationProcessor.transformPoints(this.id,I),r.phantomPoints=I.slice(-4)}},i._decodeComposite=function _decodeComposite(r,i,o){void 0===o&&(o=0),r.components=[];for(var u=!1,p=32;32&p;){p=i.readUInt16BE();var g=i.pos-o,y=i.readUInt16BE();if(u||(u=0!=(256&p)),1&p)var w=i.readInt16BE(),_=i.readInt16BE();else w=i.readInt8(),_=i.readInt8();(P=new sa(y,w,_)).pos=g,8&p?P.scaleX=P.scaleY=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824:64&p?(P.scaleX=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824,P.scaleY=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824):128&p&&(P.scaleX=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824,P.scale01=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824,P.scale10=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824,P.scaleY=(i.readUInt8()<<24|i.readUInt8()<<16)/1073741824),r.components.push(P)}if(this._font._variationProcessor){for(var x=[],k=0;k<r.components.length;k++){var P=r.components[k];x.push(new aa(!0,!0,P.dx,P.dy))}x.push.apply(x,this._getPhantomPoints(r)),this._font._variationProcessor.transformPoints(this.id,x),r.phantomPoints=x.splice(-4,4);for(var O=0;O<x.length;O++){var I=x[O];r.components[O].dx=I.x,r.components[O].dy=I.y}}return u},i._getPhantomPoints=function _getPhantomPoints(r){var i=this._getCBox(!0);null==this._metrics&&(this._metrics=ia.prototype._getMetrics.call(this,i));var o=this._metrics,u=o.advanceWidth,p=o.advanceHeight,g=o.leftBearing,y=o.topBearing;return[new aa(!1,!0,r.xMin-g,0),new aa(!1,!0,r.xMin-g+u,0),new aa(!1,!0,0,r.yMax+y),new aa(!1,!0,0,r.yMax+y+p)]},i._getContours=function _getContours(){var r=this._decode();if(!r)return[];var i=[];if(r.numberOfContours<0)for(var o,u=_createForOfIteratorHelperLoose(r.components);!(o=u()).done;)for(var p=o.value,g=this._font.getGlyph(p.glyphID)._getContours(),y=0;y<g.length;y++)for(var w=g[y],_=0;_<w.length;_++){var x=w[_],k=x.x*p.scaleX+x.y*p.scale01+p.dx,P=x.y*p.scaleY+x.x*p.scale10+p.dy;i.push(new aa(x.onCurve,x.endContour,k,P))}else i=r.points||[];r.phantomPoints&&!this._font.directory.tables.HVAR&&(this._metrics.advanceWidth=r.phantomPoints[1].x-r.phantomPoints[0].x,this._metrics.advanceHeight=r.phantomPoints[3].y-r.phantomPoints[2].y,this._metrics.leftBearing=r.xMin-r.phantomPoints[0].x,this._metrics.topBearing=r.phantomPoints[2].y-r.yMax);for(var O=[],I=[],B=0;B<i.length;B++){var R=i[B];I.push(R),R.endContour&&(O.push(I),I=[])}return O},i._getMetrics=function _getMetrics(){if(this._metrics)return this._metrics;var i=this._getCBox(!0);return r.prototype._getMetrics.call(this,i),this._font._variationProcessor&&!this._font.HVAR&&this.path,this._metrics},i._getPath=function _getPath(){for(var r=this._getContours(),i=new Jo,o=0;o<r.length;o++){var u=r[o],p=u[0],g=u[u.length-1],y=0;if(p.onCurve){var w=null;y=1}else w=p=g.onCurve?g:new aa(!1,!1,(p.x+g.x)/2,(p.y+g.y)/2);i.moveTo(p.x,p.y);for(var _=y;_<u.length;_++){var x=u[_],k=0===_?p:u[_-1];if(k.onCurve&&x.onCurve)i.lineTo(x.x,x.y);else if(k.onCurve&&!x.onCurve)w=x;else if(k.onCurve||x.onCurve){if(k.onCurve||!x.onCurve)throw new Error("Unknown TTF path state");i.quadraticCurveTo(w.x,w.y,x.x,x.y);w=null}else{var P=(k.x+x.x)/2,O=(k.y+x.y)/2;i.quadraticCurveTo(k.x,k.y,P,O);var w=x}}w&&i.quadraticCurveTo(w.x,w.y,p.x,p.y),i.closePath()}return i},TTFGlyph}(ia),la=function(r){function CFFGlyph(){return r.apply(this,arguments)||this}_inheritsLoose(CFFGlyph,r);var i=CFFGlyph.prototype;return i._getName=function _getName(){return this._font.CFF2?r.prototype._getName.call(this):this._font["CFF "].getGlyphName(this.id)},i.bias=function bias(r){return r.length<1240?107:r.length<33900?1131:32768},i._getPath=function _getPath(){var r=this._font.CFF2||this._font["CFF "],i=r.stream,o=r.topDict.CharStrings[this.id],u=o.offset+o.length;i.pos=o.offset;var p,g,y=new Jo,w=[],_=[],x=null,k=0,P=0,O=0,I=!1;this._usedGsubrs=p={},this._usedSubrs=g={};var B=r.globalSubrIndex||[],R=this.bias(B),D=r.privateDictForGlyph(this.id)||{},N=D.Subrs||[],W=this.bias(N),U=r.topDict.vstore&&r.topDict.vstore.itemVariationStore,j=D.vsindex,G=this._font._variationProcessor;function checkWidth(){null==x&&(x=w.shift()+D.nominalWidthX)}function parseStems(){return w.length%2!=0&&checkWidth(),k+=w.length>>1,w.length=0}function moveTo(r,i){I&&y.closePath(),y.moveTo(r,i),I=!0}return function parse(){for(;i.pos<u;){var o=i.readUInt8();if(o<32)switch(o){case 1:case 3:case 18:case 23:parseStems();break;case 4:w.length>1&&checkWidth(),O+=w.shift(),moveTo(P,O);break;case 5:for(;w.length>=2;)P+=w.shift(),O+=w.shift(),y.lineTo(P,O);break;case 6:case 7:for(var x=6===o;w.length>=1;)x?P+=w.shift():O+=w.shift(),y.lineTo(P,O),x=!x;break;case 8:for(;w.length>0;){var D=P+w.shift(),X=O+w.shift(),K=D+w.shift(),Y=X+w.shift();P=K+w.shift(),O=Y+w.shift(),y.bezierCurveTo(D,X,K,Y,P,O)}break;case 10:var J=w.pop()+W,$=N[J];if($){g[J]=!0;var ee=i.pos,te=u;i.pos=$.offset,u=$.offset+$.length,parse(),i.pos=ee,u=te}break;case 11:if(r.version>=2)break;return;case 14:if(r.version>=2)break;w.length>0&&checkWidth(),I&&(y.closePath(),I=!1);break;case 15:if(r.version<2)throw new Error("vsindex operator not supported in CFF v1");j=w.pop();break;case 16:if(r.version<2)throw new Error("blend operator not supported in CFF v1");if(!G)throw new Error("blend operator in non-variation font");for(var re=G.getBlendVector(U,j),ne=w.pop(),ie=ne*re.length,oe=w.length-ie,ae=oe-ne,se=0;se<ne;se++){for(var ce=w[ae+se],le=0;le<re.length;le++)ce+=re[le]*w[oe++];w[ae+se]=ce}for(;ie--;)w.pop();break;case 19:case 20:parseStems(),i.pos+=k+7>>3;break;case 21:w.length>2&&checkWidth(),P+=w.shift(),O+=w.shift(),moveTo(P,O);break;case 22:w.length>1&&checkWidth(),moveTo(P+=w.shift(),O);break;case 24:for(;w.length>=8;){D=P+w.shift(),X=O+w.shift(),K=D+w.shift(),Y=X+w.shift();P=K+w.shift(),O=Y+w.shift(),y.bezierCurveTo(D,X,K,Y,P,O)}P+=w.shift(),O+=w.shift(),y.lineTo(P,O);break;case 25:for(;w.length>=8;)P+=w.shift(),O+=w.shift(),y.lineTo(P,O);D=P+w.shift(),X=O+w.shift(),K=D+w.shift(),Y=X+w.shift();P=K+w.shift(),O=Y+w.shift(),y.bezierCurveTo(D,X,K,Y,P,O);break;case 26:for(w.length%2&&(P+=w.shift());w.length>=4;)D=P,X=O+w.shift(),K=D+w.shift(),Y=X+w.shift(),P=K,O=Y+w.shift(),y.bezierCurveTo(D,X,K,Y,P,O);break;case 27:for(w.length%2&&(O+=w.shift());w.length>=4;)D=P+w.shift(),X=O,K=D+w.shift(),Y=X+w.shift(),P=K+w.shift(),O=Y,y.bezierCurveTo(D,X,K,Y,P,O);break;case 28:w.push(i.readInt16BE());break;case 29:if(J=w.pop()+R,$=B[J]){p[J]=!0;ee=i.pos,te=u;i.pos=$.offset,u=$.offset+$.length,parse(),i.pos=ee,u=te}break;case 30:case 31:for(x=31===o;w.length>=4;)x?(D=P+w.shift(),X=O,K=D+w.shift(),Y=X+w.shift(),O=Y+w.shift(),P=K+(1===w.length?w.shift():0)):(D=P,X=O+w.shift(),K=D+w.shift(),Y=X+w.shift(),P=K+w.shift(),O=Y+(1===w.length?w.shift():0)),y.bezierCurveTo(D,X,K,Y,P,O),x=!x;break;case 12:switch(o=i.readUInt8()){case 3:var ue=w.pop(),fe=w.pop();w.push(ue&&fe?1:0);break;case 4:ue=w.pop(),fe=w.pop(),w.push(ue||fe?1:0);break;case 5:ue=w.pop(),w.push(ue?0:1);break;case 9:ue=w.pop(),w.push(Math.abs(ue));break;case 10:ue=w.pop(),fe=w.pop(),w.push(ue+fe);break;case 11:ue=w.pop(),fe=w.pop(),w.push(ue-fe);break;case 12:ue=w.pop(),fe=w.pop(),w.push(ue/fe);break;case 14:ue=w.pop(),w.push(-ue);break;case 15:ue=w.pop(),fe=w.pop(),w.push(ue===fe?1:0);break;case 18:w.pop();break;case 20:var he=w.pop(),de=w.pop();_[de]=he;break;case 21:de=w.pop(),w.push(_[de]||0);break;case 22:var pe=w.pop(),ge=w.pop(),ye=w.pop(),ve=w.pop();w.push(ye<=ve?pe:ge);break;case 23:w.push(Math.random());break;case 24:ue=w.pop(),fe=w.pop(),w.push(ue*fe);break;case 26:ue=w.pop(),w.push(Math.sqrt(ue));break;case 27:ue=w.pop(),w.push(ue,ue);break;case 28:ue=w.pop(),fe=w.pop(),w.push(fe,ue);break;case 29:(de=w.pop())<0?de=0:de>w.length-1&&(de=w.length-1),w.push(w[de]);break;case 30:var me=w.pop(),be=w.pop();if(be>=0)for(;be>0;){for(var we=w[me-1],_e=me-2;_e>=0;_e--)w[_e+1]=w[_e];w[0]=we,be--}else for(;be<0;){we=w[0];for(var Se=0;Se<=me;Se++)w[Se]=w[Se+1];w[me-1]=we,be++}break;case 34:D=P+w.shift(),X=O,K=D+w.shift(),Y=X+w.shift();var xe=K+w.shift(),Ce=Y,ke=xe+w.shift(),Pe=Ce,Ae=ke+w.shift(),Ee=Pe,Te=Ae+w.shift(),Oe=Ee;P=Te,O=Oe,y.bezierCurveTo(D,X,K,Y,xe,Ce),y.bezierCurveTo(ke,Pe,Ae,Ee,Te,Oe);break;case 35:for(var Ie=[],Be=0;Be<=5;Be++)P+=w.shift(),O+=w.shift(),Ie.push(P,O);y.bezierCurveTo.apply(y,Ie.slice(0,6)),y.bezierCurveTo.apply(y,Ie.slice(6)),w.shift();break;case 36:D=P+w.shift(),X=O+w.shift(),K=D+w.shift(),Pe=Ce=Y=X+w.shift(),Ae=(ke=(xe=K+w.shift())+w.shift())+w.shift(),Ee=Pe+w.shift(),Te=Ae+w.shift(),P=Te,O=Oe=Ee,y.bezierCurveTo(D,X,K,Y,xe,Ce),y.bezierCurveTo(ke,Pe,Ae,Ee,Te,Oe);break;case 37:var Fe=P,Le=O;Ie=[];for(var Re=0;Re<=4;Re++)P+=w.shift(),O+=w.shift(),Ie.push(P,O);Math.abs(P-Fe)>Math.abs(O-Le)?(P+=w.shift(),O=Le):(P=Fe,O+=w.shift()),Ie.push(P,O),y.bezierCurveTo.apply(y,Ie.slice(0,6)),y.bezierCurveTo.apply(y,Ie.slice(6));break;default:throw new Error("Unknown op: 12 ".concat(o))}break;default:throw new Error("Unknown op: ".concat(o))}else if(o<247)w.push(o-139);else if(o<251){var De=i.readUInt8();w.push(256*(o-247)+De+108)}else if(o<255){De=i.readUInt8();w.push(256*-(o-251)-De-108)}else w.push(i.readInt32BE()/65536)}}(),I&&y.closePath(),y},CFFGlyph}(ia),ua=new g.Struct({originX:g.uint16,originY:g.uint16,type:new g.String(4),data:new g.Buffer((function(r){return r.parent.buflen-r._currentOffset}))}),fa=function(r){function SBIXGlyph(){return r.apply(this,arguments)||this}_inheritsLoose(SBIXGlyph,r);var i=SBIXGlyph.prototype;return i.getImageForSize=function getImageForSize(r){for(var i=0;i<this._font.sbix.imageTables.length;i++){var o=this._font.sbix.imageTables[i];if(o.ppem>=r)break}var u=o.imageOffsets,p=u[this.id],g=u[this.id+1];return p===g?null:(this._font.stream.pos=p,ua.decode(this._font.stream,{buflen:g-p}))},i.render=function render(i,o){var u=this.getImageForSize(o);if(null!=u){var p=o/this._font.unitsPerEm;i.image(u.data,{height:o,x:u.originX,y:(this.bbox.minY-u.originY)*p})}this._font.sbix.flags.renderOutlines&&r.prototype.render.call(this,i,o)},SBIXGlyph}(ca),ha=function COLRLayer(r,i){this.glyph=r,this.color=i},da=function(r){function COLRGlyph(){return r.apply(this,arguments)||this}_inheritsLoose(COLRGlyph,r);var i=COLRGlyph.prototype;return i._getBBox=function _getBBox(){for(var r=new ui,i=0;i<this.layers.length;i++){var o=this.layers[i].glyph.bbox;r.addPoint(o.minX,o.minY),r.addPoint(o.maxX,o.maxY)}return r},i.render=function render(r,i){for(var o,u=_createForOfIteratorHelperLoose(this.layers);!(o=u()).done;){var p=o.value,g=p.glyph,y=p.color;r.fillColor([y.red,y.green,y.blue],y.alpha/255*100),g.render(r,i)}},_createClass(COLRGlyph,[{key:"layers",get:function get(){for(var r=this._font.CPAL,i=this._font.COLR,o=0,u=i.baseGlyphRecord.length-1;o<=u;){var p=o+u>>1,g=i.baseGlyphRecord[p];if(this.id<g.gid)u=p-1;else{if(!(this.id>g.gid)){var y=g;break}o=p+1}}if(null==y){var w=this._font._getBaseGlyph(this.id);return[new ha(w,k={red:0,green:0,blue:0,alpha:255})]}for(var _=[],x=y.firstLayerIndex;x<y.firstLayerIndex+y.numLayers;x++){g=i.layerRecords[x];var k=r.colorRecords[g.paletteIndex];w=this._font._getBaseGlyph(g.gid);_.push(new ha(w,k))}return _}}]),COLRGlyph}(ia),pa=function(){function GlyphVariationProcessor(r,i){this.font=r,this.normalizedCoords=this.normalizeCoords(i),this.blendVectors=new Map}var r=GlyphVariationProcessor.prototype;return r.normalizeCoords=function normalizeCoords(r){for(var i=[],o=0;o<this.font.fvar.axis.length;o++){var u=this.font.fvar.axis[o];r[o]<u.defaultValue?i.push((r[o]-u.defaultValue+Number.EPSILON)/(u.defaultValue-u.minValue+Number.EPSILON)):i.push((r[o]-u.defaultValue+Number.EPSILON)/(u.maxValue-u.defaultValue+Number.EPSILON))}if(this.font.avar)for(o=0;o<this.font.avar.segment.length;o++)for(var p=this.font.avar.segment[o],g=0;g<p.correspondence.length;g++){var y=p.correspondence[g];if(g>=1&&i[o]<y.fromCoord){var w=p.correspondence[g-1];i[o]=((i[o]-w.fromCoord)*(y.toCoord-w.toCoord)+Number.EPSILON)/(y.fromCoord-w.fromCoord+Number.EPSILON)+w.toCoord;break}}return i},r.transformPoints=function transformPoints(r,i){if(this.font.fvar&&this.font.gvar){var o=this.font.gvar;if(!(r>=o.glyphCount)){var u=o.offsets[r];if(u!==o.offsets[r+1]){var p=this.font.stream;if(p.pos=u,!(p.pos>=p.length)){var g=p.readUInt16BE(),y=u+p.readUInt16BE();if(32768&g){var w=p.pos;p.pos=y;var _=this.decodePoints();y=p.pos,p.pos=w}var x=i.map((function(r){return r.copy()}));g&=4095;for(var k=0;k<g;k++){var P=p.readUInt16BE(),O=p.readUInt16BE();if(32768&O)for(var I=[],B=0;B<o.axisCount;B++)I.push(p.readInt16BE()/16384);else{if((4095&O)>=o.globalCoordCount)throw new Error("Invalid gvar table");I=o.globalCoords[4095&O]}if(16384&O){for(var R=[],D=0;D<o.axisCount;D++)R.push(p.readInt16BE()/16384);for(var N=[],W=0;W<o.axisCount;W++)N.push(p.readInt16BE()/16384)}var U=this.tupleFactor(O,I,R,N);if(0!==U){w=p.pos;if(p.pos=y,8192&O)var j=this.decodePoints();else j=_;var G=0===j.length?i.length:j.length,X=this.decodeDeltas(G),K=this.decodeDeltas(G);if(0===j.length)for(var Y=0;Y<i.length;Y++){var J=i[Y];J.x+=Math.round(X[Y]*U),J.y+=Math.round(K[Y]*U)}else{for(var $=x.map((function(r){return r.copy()})),ee=i.map((function(){return!1})),te=0;te<j.length;te++){var re=j[te];if(re<i.length){var ne=$[re];ee[re]=!0,ne.x+=Math.round(X[te]*U),ne.y+=Math.round(K[te]*U)}}this.interpolateMissingDeltas($,x,ee);for(var ie=0;ie<i.length;ie++){var oe=$[ie].x-x[ie].x,ae=$[ie].y-x[ie].y;i[ie].x+=oe,i[ie].y+=ae}}y+=P,p.pos=w}else y+=P}}}}}},r.decodePoints=function decodePoints(){var r=this.font.stream,i=r.readUInt8();128&i&&(i=(127&i)<<8|r.readUInt8());for(var o=new Uint16Array(i),u=0,p=0;u<i;)for(var g=r.readUInt8(),y=1+(127&g),w=128&g?r.readUInt16:r.readUInt8,_=0;_<y&&u<i;_++)p+=w.call(r),o[u++]=p;return o},r.decodeDeltas=function decodeDeltas(r){for(var i=this.font.stream,o=0,u=new Int16Array(r);o<r;){var p=i.readUInt8(),g=1+(63&p);if(128&p)o+=g;else for(var y=64&p?i.readInt16BE:i.readInt8,w=0;w<g&&o<r;w++)u[o++]=y.call(i)}return u},r.tupleFactor=function tupleFactor(r,i,o,u){for(var p=this.normalizedCoords,g=this.font.gvar,y=1,w=0;w<g.axisCount;w++)if(0!==i[w]){if(0===p[w])return 0;if(0==(16384&r)){if(p[w]<Math.min(0,i[w])||p[w]>Math.max(0,i[w]))return 0;y=(y*p[w]+Number.EPSILON)/(i[w]+Number.EPSILON)}else{if(p[w]<o[w]||p[w]>u[w])return 0;y=p[w]<i[w]?y*(p[w]-o[w]+Number.EPSILON)/(i[w]-o[w]+Number.EPSILON):y*(u[w]-p[w]+Number.EPSILON)/(u[w]-i[w]+Number.EPSILON)}}return y},r.interpolateMissingDeltas=function interpolateMissingDeltas(r,i,o){if(0!==r.length)for(var u=0;u<r.length;){for(var p=u,g=u,y=r[g];!y.endContour;)y=r[++g];for(;u<=g&&!o[u];)u++;if(!(u>g)){var w=u,_=u;for(u++;u<=g;)o[u]&&(this.deltaInterpolate(_+1,u-1,_,u,i,r),_=u),u++;_===w?this.deltaShift(p,g,_,i,r):(this.deltaInterpolate(_+1,g,_,w,i,r),w>0&&this.deltaInterpolate(p,w-1,_,w,i,r)),u=g+1}}},r.deltaInterpolate=function deltaInterpolate(r,i,o,u,p,g){if(!(r>i))for(var y=["x","y"],w=0;w<y.length;w++){var _=y[w];if(p[o][_]>p[u][_]){var x=o;o=u,u=x}var k=p[o][_],P=p[u][_],O=g[o][_],I=g[u][_];if(k!==P||O===I)for(var B=k===P?0:(I-O)/(P-k),R=r;R<=i;R++){var D=p[R][_];D<=k?D+=O-k:D>=P?D+=I-P:D=O+(D-k)*B,g[R][_]=D}}},r.deltaShift=function deltaShift(r,i,o,u,p){var g=p[o].x-u[o].x,y=p[o].y-u[o].y;if(0!==g||0!==y)for(var w=r;w<=i;w++)w!==o&&(p[w].x+=g,p[w].y+=y)},r.getAdvanceAdjustment=function getAdvanceAdjustment(r,i){var o,u;if(i.advanceWidthMapping){var p=r;p>=i.advanceWidthMapping.mapCount&&(p=i.advanceWidthMapping.mapCount-1);i.advanceWidthMapping.entryFormat;var g=i.advanceWidthMapping.mapData[p];o=g.outerIndex,u=g.innerIndex}else o=0,u=r;return this.getDelta(i.itemVariationStore,o,u)},r.getDelta=function getDelta(r,i,o){if(i>=r.itemVariationData.length)return 0;var u=r.itemVariationData[i];if(o>=u.deltaSets.length)return 0;for(var p=u.deltaSets[o],g=this.getBlendVector(r,i),y=0,w=0;w<u.regionIndexCount;w++)y+=p.deltas[w]*g[w];return y},r.getBlendVector=function getBlendVector(r,i){var o=r.itemVariationData[i];if(this.blendVectors.has(o))return this.blendVectors.get(o);for(var u=this.normalizedCoords,p=[],g=0;g<o.regionIndexCount;g++){for(var y=1,w=o.regionIndexes[g],_=r.variationRegionList.variationRegions[w],x=0;x<_.length;x++){var k=_[x];y*=k.startCoord>k.peakCoord||k.peakCoord>k.endCoord||k.startCoord<0&&k.endCoord>0&&0!==k.peakCoord||0===k.peakCoord?1:u[x]<k.startCoord||u[x]>k.endCoord?0:u[x]===k.peakCoord?1:u[x]<k.peakCoord?(u[x]-k.startCoord+Number.EPSILON)/(k.peakCoord-k.startCoord+Number.EPSILON):(k.endCoord-u[x]+Number.EPSILON)/(k.endCoord-k.peakCoord+Number.EPSILON)}p[g]=y}return this.blendVectors.set(o,p),p},GlyphVariationProcessor}(),ga=Promise.resolve(),ya=function(){function Subset(r){this.font=r,this.glyphs=[],this.mapping={},this.includeGlyph(0)}var r=Subset.prototype;return r.includeGlyph=function includeGlyph(r){return"object"==typeof r&&(r=r.id),null==this.mapping[r]&&(this.glyphs.push(r),this.mapping[r]=this.glyphs.length-1),this.mapping[r]},r.encodeStream=function encodeStream(){var r=this,i=new g.EncodeStream;return ga.then((function(){return r.encode(i),i.end()})),i},Subset}(),va=function(){function Point$1(){}return Point$1.size=function size(r){return r>=0&&r<=255?1:2},Point$1.encode=function encode(r,i){i>=0&&i<=255?r.writeUInt8(i):r.writeInt16BE(i)},Point$1}(),ma=new g.Struct({numberOfContours:g.int16,xMin:g.int16,yMin:g.int16,xMax:g.int16,yMax:g.int16,endPtsOfContours:new g.Array(g.uint16,"numberOfContours"),instructions:new g.Array(g.uint8,g.uint16),flags:new g.Array(g.uint8,0),xPoints:new g.Array(va,0),yPoints:new g.Array(va,0)}),ba=function(){function TTFGlyphEncoder(){}var r=TTFGlyphEncoder.prototype;return r.encodeSimple=function encodeSimple(r,i){void 0===i&&(i=[]);for(var o=[],u=[],p=[],y=[],w=0,_=0,x=0,k=0,P=0,O=0;O<r.commands.length;O++){for(var I=r.commands[O],B=0;B<I.args.length;B+=2){var R=I.args[B],D=I.args[B+1],N=0;if("quadraticCurveTo"===I.command&&2===B){var W=r.commands[O+1];if(W&&"quadraticCurveTo"===W.command){var U=(_+W.args[0])/2,j=(x+W.args[1])/2;if(R===U&&D===j)continue}}"quadraticCurveTo"===I.command&&0===B||(N|=1),N=this._encodePoint(R,_,u,N,2,16),(N=this._encodePoint(D,x,p,N,4,32))===k&&w<255?(y[y.length-1]|=8,w++):(w>0&&(y.push(w),w=0),y.push(N),k=N),_=R,x=D,P++}"closePath"===I.command&&o.push(P-1)}r.commands.length>1&&"closePath"!==r.commands[r.commands.length-1].command&&o.push(P-1);var G=r.bbox,X={numberOfContours:o.length,xMin:G.minX,yMin:G.minY,xMax:G.maxX,yMax:G.maxY,endPtsOfContours:o,instructions:i,flags:y,xPoints:u,yPoints:p},K=ma.size(X),Y=4-K%4,J=new g.EncodeStream(K+Y);return ma.encode(J,X),0!==Y&&J.fill(0,Y),J.buffer},r._encodePoint=function _encodePoint(r,i,o,u,p,g){var y=r-i;return r===i?u|=g:(-255<=y&&y<=255&&(u|=p,y<0?y=-y:u|=g),o.push(y)),u},TTFGlyphEncoder}(),wa=function(r){function TTFSubset(i){var o;return(o=r.call(this,i)||this).glyphEncoder=new ba,o}_inheritsLoose(TTFSubset,r);var i=TTFSubset.prototype;return i._addGlyph=function _addGlyph(r){var i=this.font.getGlyph(r),o=i._decode(),u=this.font.loca.offsets[r],g=this.font.loca.offsets[r+1],y=this.font._getTableStream("glyf");y.pos+=u;var w=y.readBuffer(g-u);if(o&&o.numberOfContours<0){w=p.from(w);for(var _,x=_createForOfIteratorHelperLoose(o.components);!(_=x()).done;){var k=_.value;r=this.includeGlyph(k.glyphID),w.writeUInt16BE(r,k.pos)}}else o&&this.font._variationProcessor&&(w=this.glyphEncoder.encodeSimple(i.path,o.instructions));return this.glyf.push(w),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:i.advanceWidth,bearing:i._getMetrics().leftBearing}),this.offset+=w.length,this.glyf.length-1},i.encode=function encode(r){this.glyf=[],this.offset=0,this.loca={offsets:[],version:this.font.loca.version},this.hmtx={metrics:[],bearings:[]};for(var i=0;i<this.glyphs.length;)this._addGlyph(this.glyphs[i++]);var o=P(this.font.maxp);o.numGlyphs=this.glyf.length,this.loca.offsets.push(this.offset);var u=P(this.font.head);u.indexToLocFormat=this.loca.version;var p=P(this.font.hhea);p.numberOfMetrics=this.hmtx.metrics.length,oi.encode(r,{tables:{head:u,hhea:p,loca:this.loca,maxp:o,"cvt ":this.font["cvt "],prep:this.font.prep,glyf:this.glyf,hmtx:this.hmtx,fpgm:this.font.fpgm}})},TTFSubset}(ya),_a=function(r){function CFFSubset(i){var o;if((o=r.call(this,i)||this).cff=o.font["CFF "],!o.cff)throw new Error("Not a CFF Font");return o}_inheritsLoose(CFFSubset,r);var i=CFFSubset.prototype;return i.subsetCharstrings=function subsetCharstrings(){this.charstrings=[];for(var r,i={},o=_createForOfIteratorHelperLoose(this.glyphs);!(r=o()).done;){var u=r.value;this.charstrings.push(this.cff.getCharString(u));var p=this.font.getGlyph(u);p.path;for(var g in p._usedGsubrs)i[g]=!0}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,i)},i.subsetSubrs=function subsetSubrs(r,i){for(var o=[],u=0;u<r.length;u++){var g=r[u];i[u]?(this.cff.stream.pos=g.offset,o.push(this.cff.stream.readBuffer(g.length))):o.push(p.from([11]))}return o},i.subsetFontdict=function subsetFontdict(r){r.FDArray=[],r.FDSelect={version:0,fds:[]};for(var i,o={},u=[],p={},g=_createForOfIteratorHelperLoose(this.glyphs);!(i=g()).done;){var y=i.value,w=this.cff.fdForGlyph(y);if(null!=w){o[w]||(r.FDArray.push(Object.assign({},this.cff.topDict.FDArray[w])),u.push({}),p[w]=r.FDArray.length-1),o[w]=!0,r.FDSelect.fds.push(p[w]);var _=this.font.getGlyph(y);_.path;for(var x in _._usedSubrs)u[p[w]][x]=!0}}for(var k=0;k<r.FDArray.length;k++){var P=r.FDArray[k];delete P.FontName,P.Private&&P.Private.Subrs&&(P.Private=Object.assign({},P.Private),P.Private.Subrs=this.subsetSubrs(P.Private.Subrs,u[k]))}},i.createCIDFontdict=function createCIDFontdict(r){for(var i,o={},u=_createForOfIteratorHelperLoose(this.glyphs);!(i=u()).done;){var p=i.value,g=this.font.getGlyph(p);g.path;for(var y in g._usedSubrs)o[y]=!0}var w=Object.assign({},this.cff.topDict.Private);return this.cff.topDict.Private&&this.cff.topDict.Private.Subrs&&(w.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,o)),r.FDArray=[{Private:w}],r.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}},i.addString=function addString(r){return r?(this.strings||(this.strings=[]),this.strings.push(r),Ee.length+this.strings.length-1):null},i.encode=function encode(r){this.subsetCharstrings();var i={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},o=Object.assign({},this.cff.topDict);o.Private=null,o.charset=i,o.Encoding=null,o.CharStrings=this.charstrings;for(var u=0,p=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"];u<p.length;u++){var g=p[u];o[g]=this.addString(this.cff.string(o[g]))}o.ROS=[this.addString("Adobe"),this.addString("Identity"),0],o.CIDCount=this.charstrings.length,this.cff.isCIDFont?this.subsetFontdict(o):this.createCIDFontdict(o);var y={version:1,hdrSize:this.cff.hdrSize,offSize:4,header:this.cff.header,nameIndex:[this.cff.postscriptName],topDictIndex:[o],stringIndex:this.strings,globalSubrIndex:this.gsubrs};Tt.encode(r,y)},CFFSubset}(ya),Sa=(ra=function(){function TTFFont(r,i){for(var o in void 0===i&&(i=null),this.defaultLanguage=null,this.stream=r,this.variationCoords=i,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory(),this.directory.tables){var u=this.directory.tables[o];ri[o]&&u.length>0&&Object.defineProperty(this,o,{get:this._getTable.bind(this,u)})}}TTFFont.probe=function probe(r){var i=r.toString("ascii",0,4);return"true"===i||"OTTO"===i||i===String.fromCharCode(0,1,0,0)};var r=TTFFont.prototype;return r.setDefaultLanguage=function setDefaultLanguage(r){void 0===r&&(r=null),this.defaultLanguage=r},r._getTable=function _getTable(r){if(!(r.tag in this._tables))try{this._tables[r.tag]=this._decodeTable(r)}catch(r){R.logErrors}return this._tables[r.tag]},r._getTableStream=function _getTableStream(r){var i=this.directory.tables[r];return i?(this.stream.pos=i.offset,this.stream):null},r._decodeDirectory=function _decodeDirectory(){return this.directory=oi.decode(this.stream,{_startOffset:0})},r._decodeTable=function _decodeTable(r){var i=this.stream.pos,o=this._getTableStream(r.tag),u=ri[r.tag].decode(o,this,r.length);return this.stream.pos=i,u},r.getName=function getName(r,i){void 0===i&&(i=this.defaultLanguage||R.defaultLanguage);var o=this.name&&this.name.records[r];return o&&(o[i]||o[this.defaultLanguage]||o[R.defaultLanguage]||o.en||o[Object.keys(o)[0]])||null},r.hasGlyphForCodePoint=function hasGlyphForCodePoint(r){return!!this._cmapProcessor.lookup(r)},r.glyphForCodePoint=function glyphForCodePoint(r){return this.getGlyph(this._cmapProcessor.lookup(r),[r])},r.glyphsForString=function glyphsForString(r){for(var i=[],o=r.length,u=0,p=-1,g=-1;u<=o;){var y=0,w=0;if(u<o){if(55296<=(y=r.charCodeAt(u++))&&y<=56319&&u<o){var _=r.charCodeAt(u);56320<=_&&_<=57343&&(u++,y=((1023&y)<<10)+(1023&_)+65536)}w=65024<=y&&y<=65039||917760<=y&&y<=917999?1:0}else u++;0===g&&1===w?i.push(this.getGlyph(this._cmapProcessor.lookup(p,y),[p,y])):0===g&&0===w&&i.push(this.glyphForCodePoint(p)),p=y,g=w}return i},r.layout=function layout(r,i,o,u,p){return this._layoutEngine.layout(r,i,o,u,p)},r.stringsForGlyph=function stringsForGlyph(r){return this._layoutEngine.stringsForGlyph(r)},r.getAvailableFeatures=function getAvailableFeatures(r,i){return this._layoutEngine.getAvailableFeatures(r,i)},r._getBaseGlyph=function _getBaseGlyph(r,i){return void 0===i&&(i=[]),this._glyphs[r]||(this.directory.tables.glyf?this._glyphs[r]=new ca(r,i,this):(this.directory.tables["CFF "]||this.directory.tables.CFF2)&&(this._glyphs[r]=new la(r,i,this))),this._glyphs[r]||null},r.getGlyph=function getGlyph(r,i){return void 0===i&&(i=[]),this._glyphs[r]||(this.directory.tables.sbix?this._glyphs[r]=new fa(r,i,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[r]=new da(r,i,this):this._getBaseGlyph(r,i)),this._glyphs[r]||null},r.createSubset=function createSubset(){return this.directory.tables["CFF "]?new _a(this):new wa(this)},r.getVariation=function getVariation(r){if(!this.directory.tables.fvar||!(this.directory.tables.gvar&&this.directory.tables.glyf||this.directory.tables.CFF2))throw new Error("Variations require a font with the fvar, gvar and glyf, or CFF2 tables.");if("string"==typeof r&&(r=this.namedVariations[r]),"object"!=typeof r)throw new Error("Variation settings must be either a variation name or settings object.");var i=this.fvar.axis.map((function(i,o){var u=i.axisTag.trim();return u in r?Math.max(i.minValue,Math.min(i.maxValue,r[u])):i.defaultValue})),o=new g.DecodeStream(this.stream.buffer);o.pos=this._directoryPos;var u=new TTFFont(o,i);return u._tables=this._tables,u},r.getFont=function getFont(r){return this.getVariation(r)},_createClass(TTFFont,[{key:"postscriptName",get:function get(){return this.getName("postscriptName")}},{key:"fullName",get:function get(){return this.getName("fullName")}},{key:"familyName",get:function get(){return this.getName("fontFamily")}},{key:"subfamilyName",get:function get(){return this.getName("fontSubfamily")}},{key:"copyright",get:function get(){return this.getName("copyright")}},{key:"version",get:function get(){return this.getName("version")}},{key:"ascent",get:function get(){return this.hhea.ascent}},{key:"descent",get:function get(){return this.hhea.descent}},{key:"lineGap",get:function get(){return this.hhea.lineGap}},{key:"underlinePosition",get:function get(){return this.post.underlinePosition}},{key:"underlineThickness",get:function get(){return this.post.underlineThickness}},{key:"italicAngle",get:function get(){return this.post.italicAngle}},{key:"capHeight",get:function get(){var r=this["OS/2"];return r?r.capHeight:this.ascent}},{key:"xHeight",get:function get(){var r=this["OS/2"];return r?r.xHeight:0}},{key:"numGlyphs",get:function get(){return this.maxp.numGlyphs}},{key:"unitsPerEm",get:function get(){return this.head.unitsPerEm}},{key:"bbox",get:function get(){return Object.freeze(new ui(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}},{key:"_cmapProcessor",get:function get(){return new si(this.cmap)}},{key:"characterSet",get:function get(){return this._cmapProcessor.getCharacterSet()}},{key:"_layoutEngine",get:function get(){return new Ko(this)}},{key:"availableFeatures",get:function get(){return this._layoutEngine.getAvailableFeatures()}},{key:"variationAxes",get:function get(){var r={};if(!this.fvar)return r;for(var i,o=_createForOfIteratorHelperLoose(this.fvar.axis);!(i=o()).done;){var u=i.value;r[u.axisTag.trim()]={name:u.name.en,min:u.minValue,default:u.defaultValue,max:u.maxValue}}return r}},{key:"namedVariations",get:function get(){var r={};if(!this.fvar)return r;for(var i,o=_createForOfIteratorHelperLoose(this.fvar.instance);!(i=o()).done;){for(var u=i.value,p={},g=0;g<this.fvar.axis.length;g++){p[this.fvar.axis[g].axisTag.trim()]=u.coord[g]}r[u.name.en]=p}return r}},{key:"_variationProcessor",get:function get(){if(!this.fvar)return null;var r=this.variationCoords;return r||this.CFF2?(r||(r=this.fvar.axis.map((function(r){return r.defaultValue}))),new pa(this,r)):null}}]),TTFFont}(),_applyDecoratedDescriptor(ra.prototype,"bbox",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"bbox"),ra.prototype),_applyDecoratedDescriptor(ra.prototype,"_cmapProcessor",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"_cmapProcessor"),ra.prototype),_applyDecoratedDescriptor(ra.prototype,"characterSet",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"characterSet"),ra.prototype),_applyDecoratedDescriptor(ra.prototype,"_layoutEngine",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"_layoutEngine"),ra.prototype),_applyDecoratedDescriptor(ra.prototype,"variationAxes",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"variationAxes"),ra.prototype),_applyDecoratedDescriptor(ra.prototype,"namedVariations",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"namedVariations"),ra.prototype),_applyDecoratedDescriptor(ra.prototype,"_variationProcessor",[cache],Object.getOwnPropertyDescriptor(ra.prototype,"_variationProcessor"),ra.prototype),ra),xa=new g.Struct({tag:new g.String(4),offset:new g.Pointer(g.uint32,"void",{type:"global"}),compLength:g.uint32,length:g.uint32,origChecksum:g.uint32}),Ca=new g.Struct({tag:new g.String(4),flavor:g.uint32,length:g.uint32,numTables:g.uint16,reserved:new g.Reserved(g.uint16),totalSfntSize:g.uint32,majorVersion:g.uint16,minorVersion:g.uint16,metaOffset:g.uint32,metaLength:g.uint32,metaOrigLength:g.uint32,privOffset:g.uint32,privLength:g.uint32,tables:new g.Array(xa,"numTables")});Ca.process=function(){for(var r,i={},o=_createForOfIteratorHelperLoose(this.tables);!(r=o()).done;){var u=r.value;i[u.tag]=u}this.tables=i};var ka=function(r){function WOFFFont(){return r.apply(this,arguments)||this}_inheritsLoose(WOFFFont,r),WOFFFont.probe=function probe(r){return"wOFF"===r.toString("ascii",0,4)};var i=WOFFFont.prototype;return i._decodeDirectory=function _decodeDirectory(){this.directory=Ca.decode(this.stream,{_startOffset:0})},i._getTableStream=function _getTableStream(r){var i=this.directory.tables[r];if(i){if(this.stream.pos=i.offset,i.compLength<i.length){this.stream.pos+=2;var o=p.alloc(i.length),u=O(this.stream.readBuffer(i.compLength-2),o);return new g.DecodeStream(u)}return this.stream}return null},WOFFFont}(Sa),Pa=function(r){function WOFF2Glyph(){return r.apply(this,arguments)||this}_inheritsLoose(WOFF2Glyph,r);var i=WOFF2Glyph.prototype;return i._decode=function _decode(){return this._font._transformedGlyphs[this.id]},i._getCBox=function _getCBox(){return this.path.bbox},WOFF2Glyph}(ca),Aa={decode:function decode(r){for(var i=0,o=[0,1,2,3,4],u=0;u<o.length;u++){var p=r.readUInt8();if(3758096384&i)throw new Error("Overflow");if(i=i<<7|127&p,0==(128&p))return i}throw new Error("Bad base 128 number")}},Ea=["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"],Ta=new g.Struct({flags:g.uint8,customTag:new g.Optional(new g.String(4),(function(r){return 63==(63&r.flags)})),tag:function tag(r){return r.customTag||Ea[63&r.flags]},length:Aa,transformVersion:function transformVersion(r){return r.flags>>>6&3},transformed:function transformed(r){return"glyf"===r.tag||"loca"===r.tag?0===r.transformVersion:0!==r.transformVersion},transformLength:new g.Optional(Aa,(function(r){return r.transformed}))}),Oa=new g.Struct({tag:new g.String(4),flavor:g.uint32,length:g.uint32,numTables:g.uint16,reserved:new g.Reserved(g.uint16),totalSfntSize:g.uint32,totalCompressedSize:g.uint32,majorVersion:g.uint16,minorVersion:g.uint16,metaOffset:g.uint32,metaLength:g.uint32,metaOrigLength:g.uint32,privOffset:g.uint32,privLength:g.uint32,tables:new g.Array(Ta,"numTables")});Oa.process=function(){for(var r={},i=0;i<this.tables.length;i++){var o=this.tables[i];r[o.tag]=o}return this.tables=r};var Ia=function(r){function WOFF2Font(){return r.apply(this,arguments)||this}_inheritsLoose(WOFF2Font,r),WOFF2Font.probe=function probe(r){return"wOF2"===r.toString("ascii",0,4)};var i=WOFF2Font.prototype;return i._decodeDirectory=function _decodeDirectory(){this.directory=Oa.decode(this.stream),this._dataPos=this.stream.pos},i._decompress=function _decompress(){if(!this._decompressed){this.stream.pos=this._dataPos;var r=this.stream.readBuffer(this.directory.totalCompressedSize),i=0;for(var o in this.directory.tables){var u=this.directory.tables[o];u.offset=i,i+=null!=u.transformLength?u.transformLength:u.length}var y=I(r,i);if(!y)throw new Error("Error decoding compressed data in WOFF2");this.stream=new g.DecodeStream(p.from(y)),this._decompressed=!0}},i._decodeTable=function _decodeTable(i){return this._decompress(),r.prototype._decodeTable.call(this,i)},i._getBaseGlyph=function _getBaseGlyph(i,o){if(void 0===o&&(o=[]),!this._glyphs[i])return this.directory.tables.glyf&&this.directory.tables.glyf.transformed?(this._transformedGlyphs||this._transformGlyfTable(),this._glyphs[i]=new Pa(i,o,this)):r.prototype._getBaseGlyph.call(this,i,o)},i._transformGlyfTable=function _transformGlyfTable(){this._decompress(),this.stream.pos=this.directory.tables.glyf.offset;for(var r=Fa.decode(this.stream),i=[],o=0;o<r.numGlyphs;o++){var u={},p=r.nContours.readInt16BE();if(u.numberOfContours=p,p>0){for(var g=[],y=0,w=0;w<p;w++){y+=read255UInt16(r.nPoints),g.push(y)}u.points=decodeTriplet(r.flags,r.glyphs,y);for(var _=0;_<p;_++)u.points[g[_]-1].endContour=!0;read255UInt16(r.glyphs)}else if(p<0){if(ca.prototype._decodeComposite.call({_font:this},u,r.composites))read255UInt16(r.glyphs)}i.push(u)}this._transformedGlyphs=i},WOFF2Font}(Sa),Ba=function(){function Substream(r){this.length=r,this._buf=new g.Buffer(r)}return Substream.prototype.decode=function decode(r,i){return new g.DecodeStream(this._buf.decode(r,i))},Substream}(),Fa=new g.Struct({version:g.uint32,numGlyphs:g.uint16,indexFormat:g.uint16,nContourStreamSize:g.uint32,nPointsStreamSize:g.uint32,flagStreamSize:g.uint32,glyphStreamSize:g.uint32,compositeStreamSize:g.uint32,bboxStreamSize:g.uint32,instructionStreamSize:g.uint32,nContours:new Ba("nContourStreamSize"),nPoints:new Ba("nPointsStreamSize"),flags:new Ba("flagStreamSize"),glyphs:new Ba("glyphStreamSize"),composites:new Ba("compositeStreamSize"),bboxes:new Ba("bboxStreamSize"),instructions:new Ba("instructionStreamSize")});function read255UInt16(r){var i=r.readUInt8();return 253===i?r.readUInt16BE():255===i?r.readUInt8()+253:254===i?r.readUInt8()+506:i}function withSign(r,i){return 1&r?i:-i}function decodeTriplet(r,i,o){for(var u,p=u=0,g=[],y=0;y<o;y++){var w=0,_=0,x=r.readUInt8(),k=!(x>>7);if((x&=127)<10)w=0,_=withSign(x,((14&x)<<7)+i.readUInt8());else if(x<20)w=withSign(x,((x-10&14)<<7)+i.readUInt8()),_=0;else if(x<84){w=withSign(x,1+(48&(P=x-20))+((O=i.readUInt8())>>4)),_=withSign(x>>1,1+((12&P)<<2)+(15&O))}else if(x<120){var P;w=withSign(x,1+((P=x-84)/12<<8)+i.readUInt8()),_=withSign(x>>1,1+(P%12>>2<<8)+i.readUInt8())}else if(x<124){var O=i.readUInt8(),I=i.readUInt8();w=withSign(x,(O<<4)+(I>>4)),_=withSign(x>>1,((15&I)<<8)+i.readUInt8())}else w=withSign(x,i.readUInt16BE()),_=withSign(x>>1,i.readUInt16BE());p+=w,u+=_,g.push(new aa(k,!1,p,u))}return g}var La=new g.VersionedStruct(g.uint32,{65536:{numFonts:g.uint32,offsets:new g.Array(g.uint32,"numFonts")},131072:{numFonts:g.uint32,offsets:new g.Array(g.uint32,"numFonts"),dsigTag:g.uint32,dsigLength:g.uint32,dsigOffset:g.uint32}}),Ra=function(){function TrueTypeCollection(r){if(this.stream=r,"ttcf"!==r.readString(4))throw new Error("Not a TrueType collection");this.header=La.decode(r)}return TrueTypeCollection.probe=function probe(r){return"ttcf"===r.toString("ascii",0,4)},TrueTypeCollection.prototype.getFont=function getFont(r){for(var i,o=_createForOfIteratorHelperLoose(this.header.offsets);!(i=o()).done;){var u=i.value,p=new g.DecodeStream(this.stream.buffer);p.pos=u;var y=new Sa(p);if(y.postscriptName===r)return y}return null},_createClass(TrueTypeCollection,[{key:"fonts",get:function get(){for(var r,i=[],o=_createForOfIteratorHelperLoose(this.header.offsets);!(r=o()).done;){var u=r.value,p=new g.DecodeStream(this.stream.buffer);p.pos=u,i.push(new Sa(p))}return i}}]),TrueTypeCollection}(),Da=new g.String(g.uint8),Ma=(new g.Struct({len:g.uint32,buf:new g.Buffer("len")}),new g.Struct({id:g.uint16,nameOffset:g.int16,attr:g.uint8,dataOffset:g.uint24,handle:g.uint32})),Na=new g.Struct({name:new g.String(4),maxTypeIndex:g.uint16,refList:new g.Pointer(g.uint16,new g.Array(Ma,(function(r){return r.maxTypeIndex+1})),{type:"parent"})}),Wa=new g.Struct({length:g.uint16,types:new g.Array(Na,(function(r){return r.length+1}))}),za=new g.Struct({reserved:new g.Reserved(g.uint8,24),typeList:new g.Pointer(g.uint16,Wa),nameListOffset:new g.Pointer(g.uint16,"void")}),Ua=new g.Struct({dataOffset:g.uint32,map:new g.Pointer(g.uint32,za),dataLength:g.uint32,mapLength:g.uint32}),ja=function(){function DFont(r){this.stream=r,this.header=Ua.decode(this.stream);for(var i,o=_createForOfIteratorHelperLoose(this.header.map.typeList.types);!(i=o()).done;){for(var u,p=i.value,g=_createForOfIteratorHelperLoose(p.refList);!(u=g()).done;){var y=u.value;y.nameOffset>=0?(this.stream.pos=y.nameOffset+this.header.map.nameListOffset,y.name=Da.decode(this.stream)):y.name=null}"sfnt"===p.name&&(this.sfnt=p)}}return DFont.probe=function probe(r){var i=new g.DecodeStream(r);try{var o=Ua.decode(i)}catch(r){return!1}for(var u,p=_createForOfIteratorHelperLoose(o.map.typeList.types);!(u=p()).done;){if("sfnt"===u.value.name)return!0}return!1},DFont.prototype.getFont=function getFont(r){if(!this.sfnt)return null;for(var i,o=_createForOfIteratorHelperLoose(this.sfnt.refList);!(i=o()).done;){var u=i.value,p=this.header.dataOffset+u.dataOffset+4,y=new g.DecodeStream(this.stream.buffer.slice(p)),w=new Sa(y);if(w.postscriptName===r)return w}return null},_createClass(DFont,[{key:"fonts",get:function get(){for(var r,i=[],o=_createForOfIteratorHelperLoose(this.sfnt.refList);!(r=o()).done;){var u=r.value,p=this.header.dataOffset+u.dataOffset+4,y=new g.DecodeStream(this.stream.buffer.slice(p));i.push(new Sa(y))}return i}}]),DFont}();R.registerFormat(Sa),R.registerFormat(ka),R.registerFormat(Ia),R.registerFormat(Ra),R.registerFormat(ja),r.exports=R},7337:function(r,i,o){"use strict";var u=o(4781),p=o(9742),g=o(2055),y=g.BK,w=g.CR,_=g.LF,x=g.NL,k=g.SG,P=g.WJ,O=g.SP,I=g.ZWJ,B=g.BA,R=g.HY,D=g.NS,N=g.AI,W=g.AL,U=g.CJ,j=g.HL,G=g.RI,X=g.SA,K=g.XX,Y=o(8383),J=Y.DI_BRK,$=Y.IN_BRK,ee=Y.CI_BRK,te=Y.CP_BRK,re=(Y.PR_BRK,Y.pairTable),ne=new u(p.toByteArray("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")),ie=function mapClass(r){switch(r){case N:case X:case k:case K:return W;case U:return D;default:return r}},oe=function mapFirst(r){switch(r){case _:case x:return y;case O:return P;default:return r}},ae=function Break(r,i){void 0===i&&(i=!1),this.position=r,this.required=i},se=function(){function LineBreaker(r){this.string=r,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null,this.LB8a=!1,this.LB21a=!1,this.LB30a=0}var r=LineBreaker.prototype;return r.nextCodePoint=function nextCodePoint(){var r=this.string.charCodeAt(this.pos++),i=this.string.charCodeAt(this.pos);return 55296<=r&&r<=56319&&56320<=i&&i<=57343?(this.pos++,1024*(r-55296)+(i-56320)+65536):r},r.nextCharClass=function nextCharClass(){return ie(ne.get(this.nextCodePoint()))},r.getSimpleBreak=function getSimpleBreak(){switch(this.nextClass){case O:return!1;case y:case _:case x:return this.curClass=y,!1;case w:return this.curClass=w,!1}return null},r.getPairTableBreak=function getPairTableBreak(r){var i=!1;switch(re[this.curClass][this.nextClass]){case J:i=!0;break;case $:i=r===O;break;case ee:if(!(i=r===O))return i=!1;break;case te:if(r!==O)return i}return this.LB8a&&(i=!1),!this.LB21a||this.curClass!==R&&this.curClass!==B?this.LB21a=this.curClass===j:(i=!1,this.LB21a=!1),this.curClass===G?(this.LB30a++,2==this.LB30a&&this.nextClass===G&&(i=!0,this.LB30a=0)):this.LB30a=0,this.curClass=this.nextClass,i},r.nextBreak=function nextBreak(){if(null==this.curClass){var r=this.nextCharClass();this.curClass=oe(r),this.nextClass=r,this.LB8a=r===I,this.LB30a=0}for(;this.pos<this.string.length;){this.lastPos=this.pos;var i=this.nextClass;if(this.nextClass=this.nextCharClass(),this.curClass===y||this.curClass===w&&this.nextClass!==_)return this.curClass=oe(ie(this.nextClass)),new ae(this.lastPos,!0);var o=this.getSimpleBreak();if(null===o&&(o=this.getPairTableBreak(i)),this.LB8a=this.nextClass===I,o)return new ae(this.lastPos)}return this.lastPos<this.string.length?(this.lastPos=this.string.length,new ae(this.string.length)):null},LineBreaker}();r.exports=se},4927:function(r,i,o){function config(r){try{if(!o.g.localStorage)return!1}catch(r){return!1}var i=o.g.localStorage[r];return null!=i&&"true"===String(i).toLowerCase()}r.exports=function deprecate(r,i){if(config("noDeprecation"))return r;var o=!1;return function deprecated(){if(!o){if(config("throwDeprecation"))throw new Error(i);config("traceDeprecation"),o=!0}return r.apply(this,arguments)}}},384:function(r){r.exports=function isBuffer(r){return r&&"object"==typeof r&&"function"==typeof r.copy&&"function"==typeof r.fill&&"function"==typeof r.readUInt8}},5955:function(r,i,o){"use strict";var u=o(2584),p=o(8662),g=o(6430),y=o(5692);function uncurryThis(r){return r.call.bind(r)}var w="undefined"!=typeof BigInt,_="undefined"!=typeof Symbol,x=uncurryThis(Object.prototype.toString),k=uncurryThis(Number.prototype.valueOf),P=uncurryThis(String.prototype.valueOf),O=uncurryThis(Boolean.prototype.valueOf);if(w)var I=uncurryThis(BigInt.prototype.valueOf);if(_)var B=uncurryThis(Symbol.prototype.valueOf);function checkBoxedPrimitive(r,i){if("object"!=typeof r)return!1;try{return i(r),!0}catch(r){return!1}}function isMapToString(r){return"[object Map]"===x(r)}function isSetToString(r){return"[object Set]"===x(r)}function isWeakMapToString(r){return"[object WeakMap]"===x(r)}function isWeakSetToString(r){return"[object WeakSet]"===x(r)}function isArrayBufferToString(r){return"[object ArrayBuffer]"===x(r)}function isArrayBuffer(r){return"undefined"!=typeof ArrayBuffer&&(isArrayBufferToString.working?isArrayBufferToString(r):r instanceof ArrayBuffer)}function isDataViewToString(r){return"[object DataView]"===x(r)}function isDataView(r){return"undefined"!=typeof DataView&&(isDataViewToString.working?isDataViewToString(r):r instanceof DataView)}i.isArgumentsObject=u,i.isGeneratorFunction=p,i.isTypedArray=y,i.isPromise=function isPromise(r){return"undefined"!=typeof Promise&&r instanceof Promise||null!==r&&"object"==typeof r&&"function"==typeof r.then&&"function"==typeof r.catch},i.isArrayBufferView=function isArrayBufferView(r){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(r):y(r)||isDataView(r)},i.isUint8Array=function isUint8Array(r){return"Uint8Array"===g(r)},i.isUint8ClampedArray=function isUint8ClampedArray(r){return"Uint8ClampedArray"===g(r)},i.isUint16Array=function isUint16Array(r){return"Uint16Array"===g(r)},i.isUint32Array=function isUint32Array(r){return"Uint32Array"===g(r)},i.isInt8Array=function isInt8Array(r){return"Int8Array"===g(r)},i.isInt16Array=function isInt16Array(r){return"Int16Array"===g(r)},i.isInt32Array=function isInt32Array(r){return"Int32Array"===g(r)},i.isFloat32Array=function isFloat32Array(r){return"Float32Array"===g(r)},i.isFloat64Array=function isFloat64Array(r){return"Float64Array"===g(r)},i.isBigInt64Array=function isBigInt64Array(r){return"BigInt64Array"===g(r)},i.isBigUint64Array=function isBigUint64Array(r){return"BigUint64Array"===g(r)},isMapToString.working="undefined"!=typeof Map&&isMapToString(new Map),i.isMap=function isMap(r){return"undefined"!=typeof Map&&(isMapToString.working?isMapToString(r):r instanceof Map)},isSetToString.working="undefined"!=typeof Set&&isSetToString(new Set),i.isSet=function isSet(r){return"undefined"!=typeof Set&&(isSetToString.working?isSetToString(r):r instanceof Set)},isWeakMapToString.working="undefined"!=typeof WeakMap&&isWeakMapToString(new WeakMap),i.isWeakMap=function isWeakMap(r){return"undefined"!=typeof WeakMap&&(isWeakMapToString.working?isWeakMapToString(r):r instanceof WeakMap)},isWeakSetToString.working="undefined"!=typeof WeakSet&&isWeakSetToString(new WeakSet),i.isWeakSet=function isWeakSet(r){return isWeakSetToString(r)},isArrayBufferToString.working="undefined"!=typeof ArrayBuffer&&isArrayBufferToString(new ArrayBuffer),i.isArrayBuffer=isArrayBuffer,isDataViewToString.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&isDataViewToString(new DataView(new ArrayBuffer(1),0,1)),i.isDataView=isDataView;var R="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function isSharedArrayBufferToString(r){return"[object SharedArrayBuffer]"===x(r)}function isSharedArrayBuffer(r){return void 0!==R&&(void 0===isSharedArrayBufferToString.working&&(isSharedArrayBufferToString.working=isSharedArrayBufferToString(new R)),isSharedArrayBufferToString.working?isSharedArrayBufferToString(r):r instanceof R)}function isNumberObject(r){return checkBoxedPrimitive(r,k)}function isStringObject(r){return checkBoxedPrimitive(r,P)}function isBooleanObject(r){return checkBoxedPrimitive(r,O)}function isBigIntObject(r){return w&&checkBoxedPrimitive(r,I)}function isSymbolObject(r){return _&&checkBoxedPrimitive(r,B)}i.isSharedArrayBuffer=isSharedArrayBuffer,i.isAsyncFunction=function isAsyncFunction(r){return"[object AsyncFunction]"===x(r)},i.isMapIterator=function isMapIterator(r){return"[object Map Iterator]"===x(r)},i.isSetIterator=function isSetIterator(r){return"[object Set Iterator]"===x(r)},i.isGeneratorObject=function isGeneratorObject(r){return"[object Generator]"===x(r)},i.isWebAssemblyCompiledModule=function isWebAssemblyCompiledModule(r){return"[object WebAssembly.Module]"===x(r)},i.isNumberObject=isNumberObject,i.isStringObject=isStringObject,i.isBooleanObject=isBooleanObject,i.isBigIntObject=isBigIntObject,i.isSymbolObject=isSymbolObject,i.isBoxedPrimitive=function isBoxedPrimitive(r){return isNumberObject(r)||isStringObject(r)||isBooleanObject(r)||isBigIntObject(r)||isSymbolObject(r)},i.isAnyArrayBuffer=function isAnyArrayBuffer(r){return"undefined"!=typeof Uint8Array&&(isArrayBuffer(r)||isSharedArrayBuffer(r))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(r){Object.defineProperty(i,r,{enumerable:!1,value:function(){throw new Error(r+" is not supported in userland")}})}))},9539:function(r,i,o){var u=o(4155),p=Object.getOwnPropertyDescriptors||function getOwnPropertyDescriptors(r){for(var i=Object.keys(r),o={},u=0;u<i.length;u++)o[i[u]]=Object.getOwnPropertyDescriptor(r,i[u]);return o},g=/%[sdj%]/g;i.format=function(r){if(!isString(r)){for(var i=[],o=0;o<arguments.length;o++)i.push(inspect(arguments[o]));return i.join(" ")}o=1;for(var u=arguments,p=u.length,y=String(r).replace(g,(function(r){if("%%"===r)return"%";if(o>=p)return r;switch(r){case"%s":return String(u[o++]);case"%d":return Number(u[o++]);case"%j":try{return JSON.stringify(u[o++])}catch(r){return"[Circular]"}default:return r}})),w=u[o];o<p;w=u[++o])isNull(w)||!isObject(w)?y+=" "+w:y+=" "+inspect(w);return y},i.deprecate=function(r,o){if(void 0!==u&&!0===u.noDeprecation)return r;if(void 0===u)return function(){return i.deprecate(r,o).apply(this,arguments)};var p=!1;return function deprecated(){if(!p){if(u.throwDeprecation)throw new Error(o);u.traceDeprecation,p=!0}return r.apply(this,arguments)}};var y={},w=/^$/;if(u.env.NODE_DEBUG){var _=u.env.NODE_DEBUG;_=_.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),w=new RegExp("^"+_+"$","i")}function inspect(r,o){var u={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(u.depth=arguments[2]),arguments.length>=4&&(u.colors=arguments[3]),isBoolean(o)?u.showHidden=o:o&&i._extend(u,o),isUndefined(u.showHidden)&&(u.showHidden=!1),isUndefined(u.depth)&&(u.depth=2),isUndefined(u.colors)&&(u.colors=!1),isUndefined(u.customInspect)&&(u.customInspect=!0),u.colors&&(u.stylize=stylizeWithColor),formatValue(u,r,u.depth)}function stylizeWithColor(r,i){var o=inspect.styles[i];return o?"["+inspect.colors[o][0]+"m"+r+"["+inspect.colors[o][1]+"m":r}function stylizeNoColor(r,i){return r}function formatValue(r,o,u){if(r.customInspect&&o&&isFunction(o.inspect)&&o.inspect!==i.inspect&&(!o.constructor||o.constructor.prototype!==o)){var p=o.inspect(u,r);return isString(p)||(p=formatValue(r,p,u)),p}var g=function formatPrimitive(r,i){if(isUndefined(i))return r.stylize("undefined","undefined");if(isString(i)){var o="'"+JSON.stringify(i).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return r.stylize(o,"string")}if(isNumber(i))return r.stylize(""+i,"number");if(isBoolean(i))return r.stylize(""+i,"boolean");if(isNull(i))return r.stylize("null","null")}(r,o);if(g)return g;var y=Object.keys(o),w=function arrayToHash(r){var i={};return r.forEach((function(r,o){i[r]=!0})),i}(y);if(r.showHidden&&(y=Object.getOwnPropertyNames(o)),isError(o)&&(y.indexOf("message")>=0||y.indexOf("description")>=0))return formatError(o);if(0===y.length){if(isFunction(o)){var _=o.name?": "+o.name:"";return r.stylize("[Function"+_+"]","special")}if(isRegExp(o))return r.stylize(RegExp.prototype.toString.call(o),"regexp");if(isDate(o))return r.stylize(Date.prototype.toString.call(o),"date");if(isError(o))return formatError(o)}var x,k="",P=!1,O=["{","}"];(isArray(o)&&(P=!0,O=["[","]"]),isFunction(o))&&(k=" [Function"+(o.name?": "+o.name:"")+"]");return isRegExp(o)&&(k=" "+RegExp.prototype.toString.call(o)),isDate(o)&&(k=" "+Date.prototype.toUTCString.call(o)),isError(o)&&(k=" "+formatError(o)),0!==y.length||P&&0!=o.length?u<0?isRegExp(o)?r.stylize(RegExp.prototype.toString.call(o),"regexp"):r.stylize("[Object]","special"):(r.seen.push(o),x=P?function formatArray(r,i,o,u,p){for(var g=[],y=0,w=i.length;y<w;++y)hasOwnProperty(i,String(y))?g.push(formatProperty(r,i,o,u,String(y),!0)):g.push("");return p.forEach((function(p){p.match(/^\d+$/)||g.push(formatProperty(r,i,o,u,p,!0))})),g}(r,o,u,w,y):y.map((function(i){return formatProperty(r,o,u,w,i,P)})),r.seen.pop(),function reduceToSingleString(r,i,o){var u=r.reduce((function(r,i){return i.indexOf("\n")>=0&&0,r+i.replace(/\u001b\[\d\d?m/g,"").length+1}),0);if(u>60)return o[0]+(""===i?"":i+"\n ")+" "+r.join(",\n  ")+" "+o[1];return o[0]+i+" "+r.join(", ")+" "+o[1]}(x,k,O)):O[0]+k+O[1]}function formatError(r){return"["+Error.prototype.toString.call(r)+"]"}function formatProperty(r,i,o,u,p,g){var y,w,_;if((_=Object.getOwnPropertyDescriptor(i,p)||{value:i[p]}).get?w=_.set?r.stylize("[Getter/Setter]","special"):r.stylize("[Getter]","special"):_.set&&(w=r.stylize("[Setter]","special")),hasOwnProperty(u,p)||(y="["+p+"]"),w||(r.seen.indexOf(_.value)<0?(w=isNull(o)?formatValue(r,_.value,null):formatValue(r,_.value,o-1)).indexOf("\n")>-1&&(w=g?w.split("\n").map((function(r){return"  "+r})).join("\n").slice(2):"\n"+w.split("\n").map((function(r){return"   "+r})).join("\n")):w=r.stylize("[Circular]","special")),isUndefined(y)){if(g&&p.match(/^\d+$/))return w;(y=JSON.stringify(""+p)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(y=y.slice(1,-1),y=r.stylize(y,"name")):(y=y.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),y=r.stylize(y,"string"))}return y+": "+w}function isArray(r){return Array.isArray(r)}function isBoolean(r){return"boolean"==typeof r}function isNull(r){return null===r}function isNumber(r){return"number"==typeof r}function isString(r){return"string"==typeof r}function isUndefined(r){return void 0===r}function isRegExp(r){return isObject(r)&&"[object RegExp]"===objectToString(r)}function isObject(r){return"object"==typeof r&&null!==r}function isDate(r){return isObject(r)&&"[object Date]"===objectToString(r)}function isError(r){return isObject(r)&&("[object Error]"===objectToString(r)||r instanceof Error)}function isFunction(r){return"function"==typeof r}function objectToString(r){return Object.prototype.toString.call(r)}i.debuglog=function(r){if(r=r.toUpperCase(),!y[r])if(w.test(r)){u.pid;y[r]=function(){i.format.apply(i,arguments)}}else y[r]=function(){};return y[r]},i.inspect=inspect,inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},inspect.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},i.types=o(5955),i.isArray=isArray,i.isBoolean=isBoolean,i.isNull=isNull,i.isNullOrUndefined=function isNullOrUndefined(r){return null==r},i.isNumber=isNumber,i.isString=isString,i.isSymbol=function isSymbol(r){return"symbol"==typeof r},i.isUndefined=isUndefined,i.isRegExp=isRegExp,i.types.isRegExp=isRegExp,i.isObject=isObject,i.isDate=isDate,i.types.isDate=isDate,i.isError=isError,i.types.isNativeError=isError,i.isFunction=isFunction,i.isPrimitive=function isPrimitive(r){return null===r||"boolean"==typeof r||"number"==typeof r||"string"==typeof r||"symbol"==typeof r||void 0===r},i.isBuffer=o(384);function hasOwnProperty(r,i){return Object.prototype.hasOwnProperty.call(r,i)}i.log=function(){},i.inherits=o(5717),i._extend=function(r,i){if(!i||!isObject(i))return r;for(var o=Object.keys(i),u=o.length;u--;)r[o[u]]=i[o[u]];return r};var x="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function callbackifyOnRejected(r,i){if(!r){var o=new Error("Promise was rejected with a falsy value");o.reason=r,r=o}return i(r)}i.promisify=function promisify(r){if("function"!=typeof r)throw new TypeError('The "original" argument must be of type Function');if(x&&r[x]){var i;if("function"!=typeof(i=r[x]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(i,x,{value:i,enumerable:!1,writable:!1,configurable:!0}),i}function i(){for(var i,o,u=new Promise((function(r,u){i=r,o=u})),p=[],g=0;g<arguments.length;g++)p.push(arguments[g]);p.push((function(r,u){r?o(r):i(u)}));try{r.apply(this,p)}catch(r){o(r)}return u}return Object.setPrototypeOf(i,Object.getPrototypeOf(r)),x&&Object.defineProperty(i,x,{value:i,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(i,p(r))},i.promisify.custom=x,i.callbackify=function callbackify(r){if("function"!=typeof r)throw new TypeError('The "original" argument must be of type Function');function callbackified(){for(var i=[],o=0;o<arguments.length;o++)i.push(arguments[o]);var p=i.pop();if("function"!=typeof p)throw new TypeError("The last argument must be of type Function");var g=this,cb=function(){return p.apply(g,arguments)};r.apply(this,i).then((function(r){u.nextTick(cb.bind(null,null,r))}),(function(r){u.nextTick(callbackifyOnRejected.bind(null,r,cb))}))}return Object.setPrototypeOf(callbackified,Object.getPrototypeOf(r)),Object.defineProperties(callbackified,p(r)),callbackified}},6430:function(r,i,o){"use strict";var u=o(4029),p=o(3083),g=o(1924),y=o(7296),w=g("Object.prototype.toString"),_=o(6410)(),x="undefined"==typeof globalThis?o.g:globalThis,k=p(),P=g("String.prototype.slice"),O={},I=Object.getPrototypeOf;_&&y&&I&&u(k,(function(r){if("function"==typeof x[r]){var i=new x[r];if(Symbol.toStringTag in i){var o=I(i),u=y(o,Symbol.toStringTag);if(!u){var p=I(o);u=y(p,Symbol.toStringTag)}O[r]=u.get}}}));var B=o(5692);r.exports=function whichTypedArray(r){return!!B(r)&&(_&&Symbol.toStringTag in r?function tryAllTypedArrays(r){var i=!1;return u(O,(function(o,u){if(!i)try{var p=o.call(r);p===u&&(i=p)}catch(r){}})),i}(r):P(w(r),8,-1))}},6513:function(r,i,o){r.exports=o(5011)},5011:function(r,i,o){!function(){var i;if(r.exports&&!o.g.xmldocAssumeBrowser)i=o(6099);else if(!(i=this.sax))throw new Error("Expected sax to be defined. Make sure you're including sax.js before this file.");function XmlElement(r){var i=u[u.length-1].parser;this.name=r.name,this.attr=r.attributes,this.val="",this.children=[],this.firstChild=null,this.lastChild=null,this.line=i.line,this.column=i.column,this.position=i.position,this.startTagPosition=i.startTagPosition}function XmlTextNode(r){this.text=r}function XmlCDataNode(r){this.cdata=r}function XmlCommentNode(r){this.comment=r}function XmlDocument(r){if(r&&(r=r.toString().trim()),!r)throw new Error("No XML to parse!");this.doctype="",this.parser=i.parser(!0),function addParserEvents(r){r.onopentag=parser_opentag,r.onclosetag=parser_closetag,r.ontext=parser_text,r.oncdata=parser_cdata,r.oncomment=parser_comment,r.ondoctype=parser_doctype,r.onerror=parser_error}(this.parser),u=[this],this.parser.write(r),delete this.parser}XmlElement.prototype._addChild=function(r){this.children.push(r),this.firstChild||(this.firstChild=r),this.lastChild=r},XmlElement.prototype._opentag=function(r){var i=new XmlElement(r);this._addChild(i),u.unshift(i)},XmlElement.prototype._closetag=function(){u.shift()},XmlElement.prototype._text=function(r){void 0!==this.children&&(this.val+=r,this._addChild(new XmlTextNode(r)))},XmlElement.prototype._cdata=function(r){this.val+=r,this._addChild(new XmlCDataNode(r))},XmlElement.prototype._comment=function(r){void 0!==this.children&&this._addChild(new XmlCommentNode(r))},XmlElement.prototype._error=function(r){throw r},XmlElement.prototype.eachChild=function(r,i){for(var o=0,u=this.children.length;o<u;o++)if("element"===this.children[o].type&&!1===r.call(i,this.children[o],o,this.children))return},XmlElement.prototype.childNamed=function(r){for(var i=0,o=this.children.length;i<o;i++){var u=this.children[i];if(u.name===r)return u}},XmlElement.prototype.childrenNamed=function(r){for(var i=[],o=0,u=this.children.length;o<u;o++)this.children[o].name===r&&i.push(this.children[o]);return i},XmlElement.prototype.childWithAttribute=function(r,i){for(var o=0,u=this.children.length;o<u;o++){var p=this.children[o];if("element"===p.type&&(i&&p.attr[r]===i||!i&&p.attr[r]))return p}},XmlElement.prototype.descendantsNamed=function(r){for(var i=[],o=0,u=this.children.length;o<u;o++){var p=this.children[o];"element"===p.type&&(p.name===r&&i.push(p),i=i.concat(p.descendantsNamed(r)))}return i},XmlElement.prototype.descendantWithPath=function(r){for(var i=this,o=r.split("."),u=0,p=o.length;u<p;u++){if(!i||"element"!==i.type)return;i=i.childNamed(o[u])}return i},XmlElement.prototype.valueWithPath=function(r){var i=r.split("@"),o=this.descendantWithPath(i[0]);return o?i.length>1?o.attr[i[1]]:o.val:void 0},XmlElement.prototype.toString=function(r){return this.toStringWithIndent("",r)},XmlElement.prototype.toStringWithIndent=function(r,i){var o=r+"<"+this.name,u=i&&i.compressed?"":"\n";i&&i.preserveWhitespace;for(var p in this.attr)Object.prototype.hasOwnProperty.call(this.attr,p)&&(o+=" "+p+'="'+escapeXML(this.attr[p])+'"');if(1===this.children.length&&"element"!==this.children[0].type)o+=">"+this.children[0].toString(i)+"</"+this.name+">";else if(this.children.length){o+=">"+u;for(var g=r+(i&&i.compressed?"":"  "),y=0,w=this.children.length;y<w;y++)o+=this.children[y].toStringWithIndent(g,i)+u;o+=r+"</"+this.name+">"}else if(i&&i.html){-1!==["area","base","br","col","embed","frame","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"].indexOf(this.name)?o+="/>":o+="></"+this.name+">"}else o+="/>";return o},XmlTextNode.prototype.toString=function(r){return formatText(escapeXML(this.text),r)},XmlTextNode.prototype.toStringWithIndent=function(r,i){return r+this.toString(i)},XmlCDataNode.prototype.toString=function(r){return"<![CDATA["+formatText(this.cdata,r)+"]]>"},XmlCDataNode.prototype.toStringWithIndent=function(r,i){return r+this.toString(i)},XmlCommentNode.prototype.toString=function(r){return"\x3c!--"+formatText(escapeXML(this.comment),r)+"--\x3e"},XmlCommentNode.prototype.toStringWithIndent=function(r,i){return r+this.toString(i)},XmlElement.prototype.type="element",XmlTextNode.prototype.type="text",XmlCDataNode.prototype.type="cdata",XmlCommentNode.prototype.type="comment",function extend(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])}(XmlDocument.prototype,XmlElement.prototype),XmlDocument.prototype._opentag=function(r){void 0===this.children?XmlElement.call(this,r):XmlElement.prototype._opentag.apply(this,arguments)},XmlDocument.prototype._doctype=function(r){this.doctype+=r};var u=null;function parser_opentag(){u[0]&&u[0]._opentag.apply(u[0],arguments)}function parser_closetag(){u[0]&&u[0]._closetag.apply(u[0],arguments)}function parser_text(){u[0]&&u[0]._text.apply(u[0],arguments)}function parser_cdata(){u[0]&&u[0]._cdata.apply(u[0],arguments)}function parser_comment(){u[0]&&u[0]._comment.apply(u[0],arguments)}function parser_doctype(){u[0]&&u[0]._doctype.apply(u[0],arguments)}function parser_error(){u[0]&&u[0]._error.apply(u[0],arguments)}function escapeXML(r){return r.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;")}function formatText(r,i){var o=r;return i&&i.trimmed&&r.length>25&&(o=o.substring(0,25).trim()+"…"),i&&i.preserveWhitespace||(o=o.trim()),o}r.exports&&!o.g.xmldocAssumeBrowser?(r.exports.XmlDocument=XmlDocument,r.exports.XmlElement=XmlElement,r.exports.XmlTextNode=XmlTextNode,r.exports.XmlCDataNode=XmlCDataNode,r.exports.XmlCommentNode=XmlCommentNode):(this.XmlDocument=XmlDocument,this.XmlElement=XmlElement,this.XmlTextNode=XmlTextNode,this.XmlCDataNode=XmlCDataNode,this.XmlCommentNode=XmlCommentNode)}()},6255:function(r,i,o){"use strict";"undefined"==typeof window||window.Promise||o(3867),o(4667);function URLBrowserResolver(r){this.fs=r,this.resolving={}}URLBrowserResolver.prototype.resolve=function(r,i){if(!this.resolving[r]){var o=this;this.resolving[r]=new Promise((function(u,p){0===r.toLowerCase().indexOf("https://")||0===r.toLowerCase().indexOf("http://")?o.fs.existsSync(r)?u():function(r,i){return new Promise((function(o,u){var p=new XMLHttpRequest;for(var g in p.open("GET",r,!0),i)p.setRequestHeader(g,i[g]);p.responseType="arraybuffer",p.onreadystatechange=function(){4===p.readyState&&(p.status>=200&&p.status<300||setTimeout((function(){u(new TypeError('Failed to fetch (url: "'+r+'")'))}),0))},p.onload=function(){p.status>=200&&p.status<300&&o(p.response)},p.onerror=function(){setTimeout((function(){u(new TypeError('Network request failed (url: "'+r+'")'))}),0)},p.ontimeout=function(){setTimeout((function(){u(new TypeError('Network request failed (url: "'+r+'")'))}),0)},p.send()}))}(r,i).then((function(i){o.fs.writeFileSync(r,i),u()}),(function(r){p(r)})):u()}))}return this.resolving[r]},URLBrowserResolver.prototype.resolved=function(){var r=this;return new Promise((function(i,o){Promise.all(Object.values(r.resolving)).then((function(){i()}),(function(r){o(r)}))}))},r.exports=URLBrowserResolver},4275:function(r,i,o){"use strict";var u=o(8823).Buffer,p=o(6225).isFunction,g=o(6225).isUndefined,y=(o(6225).isNull,o(2984).saveAs),w={Roboto:{normal:"Roboto-Regular.ttf",bold:"Roboto-Medium.ttf",italics:"Roboto-Italic.ttf",bolditalics:"Roboto-MediumItalic.ttf"}};function Document(r,i,o,u){this.docDefinition=r,this.tableLayouts=i||null,this.fonts=o||w,this.vfs=u}Document.prototype._createDoc=function(r,i){var getExtendedUrl=function(r){return"object"==typeof r?{url:r.url,headers:r.headers}:{url:r,headers:{}}};r=r||{},this.tableLayouts&&(r.tableLayouts=this.tableLayouts);var u=new(o(8617))(this.fonts);if(o(3857).bindFS(this.vfs),!p(i))return u.createPdfKitDocument(this.docDefinition,r);var g=new(o(6255))(o(3857));for(var y in this.fonts)if(this.fonts.hasOwnProperty(y)){if(this.fonts[y].normal)if(Array.isArray(this.fonts[y].normal)){var w=getExtendedUrl(this.fonts[y].normal[0]);g.resolve(w.url,w.headers),this.fonts[y].normal[0]=w.url}else{w=getExtendedUrl(this.fonts[y].normal);g.resolve(w.url,w.headers),this.fonts[y].normal=w.url}if(this.fonts[y].bold)if(Array.isArray(this.fonts[y].bold)){w=getExtendedUrl(this.fonts[y].bold[0]);g.resolve(w.url,w.headers),this.fonts[y].bold[0]=w.url}else{w=getExtendedUrl(this.fonts[y].bold);g.resolve(w.url,w.headers),this.fonts[y].bold=w.url}if(this.fonts[y].italics)if(Array.isArray(this.fonts[y].italics)){w=getExtendedUrl(this.fonts[y].italics[0]);g.resolve(w.url,w.headers),this.fonts[y].italics[0]=w.url}else{w=getExtendedUrl(this.fonts[y].italics);g.resolve(w.url,w.headers),this.fonts[y].italics=w.url}if(this.fonts[y].bolditalics)if(Array.isArray(this.fonts[y].bolditalics)){w=getExtendedUrl(this.fonts[y].bolditalics[0]);g.resolve(w.url,w.headers),this.fonts[y].bolditalics[0]=w.url}else{w=getExtendedUrl(this.fonts[y].bolditalics);g.resolve(w.url,w.headers),this.fonts[y].bolditalics=w.url}}if(this.docDefinition.images)for(var _ in this.docDefinition.images)if(this.docDefinition.images.hasOwnProperty(_)){w=getExtendedUrl(this.docDefinition.images[_]);g.resolve(w.url,w.headers),this.docDefinition.images[_]=w.url}var x=this;g.resolved().then((function(){var o=u.createPdfKitDocument(x.docDefinition,r);i(o)}),(function(r){throw r}))},Document.prototype._flushDoc=function(r,i){var o,p=[];r.on("readable",(function(){for(var i;null!==(i=r.read(9007199254740991));)p.push(i)})),r.on("end",(function(){o=u.concat(p),i(o,r._pdfMakePages)})),r.end()},Document.prototype._getPages=function(r,i){if(!i)throw"_getPages is an async method and needs a callback argument";var o=this;this._createDoc(r,(function(r){o._flushDoc(r,(function(r,o){i(o)}))}))},Document.prototype._bufferToBlob=function(r){var i;try{i=new Blob([r],{type:"application/pdf"})}catch(u){if("InvalidStateError"===u.name){var o=new Uint8Array(r);i=new Blob([o.buffer],{type:"application/pdf"})}}if(!i)throw"Could not generate blob";return i},Document.prototype._openWindow=function(){var r=window.open("","_blank");if(null===r)throw"Open PDF in new window blocked by browser";return r},Document.prototype._openPdf=function(r,i){i||(i=this._openWindow());try{this.getBlob((function(r){var o=(window.URL||window.webkitURL).createObjectURL(r);i.location.href=o}),r)}catch(r){throw i.close(),r}},Document.prototype.open=function(r,i){(r=r||{}).autoPrint=!1,i=i||null,this._openPdf(r,i)},Document.prototype.print=function(r,i){(r=r||{}).autoPrint=!0,i=i||null,this._openPdf(r,i)},Document.prototype.download=function(r,i,o){p(r)&&(g(i)||(o=i),i=r,r=null),r=r||"file.pdf",this.getBlob((function(o){y(o,r),p(i)&&i()}),o)},Document.prototype.getBase64=function(r,i){if(!r)throw"getBase64 is an async method and needs a callback argument";this.getBuffer((function(i){r(i.toString("base64"))}),i)},Document.prototype.getDataUrl=function(r,i){if(!r)throw"getDataUrl is an async method and needs a callback argument";this.getBuffer((function(i){r("data:application/pdf;base64,"+i.toString("base64"))}),i)},Document.prototype.getBlob=function(r,i){if(!r)throw"getBlob is an async method and needs a callback argument";var o=this;this.getBuffer((function(i){var u=o._bufferToBlob(i);r(u)}),i)},Document.prototype.getBuffer=function(r,i){if(!r)throw"getBuffer is an async method and needs a callback argument";var o=this;this._createDoc(i,(function(i){o._flushDoc(i,(function(i){r(i)}))}))},Document.prototype.getStream=function(r,i){if(!p(i))return this._createDoc(r);this._createDoc(r,(function(r){i(r)}))},r.exports={createPdf:function(r,i,u,p){if(!function canCreatePdf(){try{var r=new Uint8Array(1),i={foo:function(){return 42}};return Object.setPrototypeOf(i,Uint8Array.prototype),Object.setPrototypeOf(r,i),42===r.foo()}catch(r){return!1}}())throw"Your browser does not provide the level of support needed";return new Document(r,i||o.g.pdfMake.tableLayouts,u||o.g.pdfMake.fonts,p||o.g.pdfMake.vfs)}}},3857:function(r,i,o){"use strict";var u=o(8823).Buffer;function VirtualFileSystem(){this.fileSystem={},this.dataSystem={}}function fixFilename(r){return 0===r.indexOf("/")&&(r=r.substring("/".length)),0===r.indexOf("/")&&(r=r.substring(1)),r}VirtualFileSystem.prototype.existsSync=function(r){return r=fixFilename(r),void 0!==this.fileSystem[r]||void 0!==this.dataSystem[r]},VirtualFileSystem.prototype.readFileSync=function(r,i){r=fixFilename(r);var o=this.dataSystem[r];if("string"==typeof o&&"utf8"===i)return o;if(o)return new u(o,"string"==typeof o?"base64":void 0);var p=this.fileSystem[r];if(p)return p;throw"File '"+r+"' not found in virtual file system"},VirtualFileSystem.prototype.writeFileSync=function(r,i){this.fileSystem[fixFilename(r)]=i},VirtualFileSystem.prototype.bindFS=function(r){this.dataSystem=r||{}},r.exports=new VirtualFileSystem},4498:function(r,i,o){"use strict";var u=o(6225).isString;function isAutoColumn(r){return"auto"===r.width}function isStarColumn(r){return null===r.width||void 0===r.width||"*"===r.width||"star"===r.width}r.exports={buildColumnWidths:function buildColumnWidths(r,i){var o=[],p=0,g=0,y=[],w=0,_=0,x=[],k=i;r.forEach((function(r){isAutoColumn(r)?(o.push(r),p+=r._minWidth,g+=r._maxWidth):isStarColumn(r)?(y.push(r),w=Math.max(w,r._minWidth),_=Math.max(_,r._maxWidth)):x.push(r)})),x.forEach((function(r){u(r.width)&&/\d+%/.test(r.width)&&(r.width=parseFloat(r.width)*k/100),r.width<r._minWidth&&r.elasticWidth?r._calcWidth=r._minWidth:r._calcWidth=r.width,i-=r._calcWidth}));var P=p+w*y.length,O=g+_*y.length;if(P>=i)o.forEach((function(r){r._calcWidth=r._minWidth})),y.forEach((function(r){r._calcWidth=w}));else{if(O<i)o.forEach((function(r){r._calcWidth=r._maxWidth,i-=r._calcWidth}));else{var I=i-P,B=O-P;o.forEach((function(r){var o=r._maxWidth-r._minWidth;r._calcWidth=r._minWidth+o*I/B,i-=r._calcWidth}))}if(y.length>0){var R=i/y.length;y.forEach((function(r){r._calcWidth=R}))}}},measureMinMax:function measureMinMax(r){for(var i={min:0,max:0},o={min:0,max:0},u=0,p=0,g=r.length;p<g;p++){var y=r[p];isStarColumn(y)?(o.min=Math.max(o.min,y._minWidth),o.max=Math.max(o.max,y._maxWidth),u++):isAutoColumn(y)?(i.min+=y._minWidth,i.max+=y._maxWidth):(i.min+=void 0!==y.width&&y.width||y._minWidth,i.max+=void 0!==y.width&&y.width||y._maxWidth)}return u&&(i.min+=u*o.min,i.max+=u*o.max),i},isAutoColumn:isAutoColumn,isStarColumn:isStarColumn}},1728:function(r,i,o){"use strict";var u=o(1350),p=o(7597),g=o(4498),y=o(6225).isString,w=o(6225).isNumber,_=o(6225).isObject,x=o(6225).isArray,k=o(6225).fontStringify,P=o(6225).getNodeId,O=o(6225).pack,I=o(145);function DocMeasure(r,i,o,g,y,w,_){this.textTools=new u(r),this.styleStack=new p(i,o),this.imageMeasure=g,this.svgMeasure=y,this.tableLayouts=w,this.images=_,this.autoImageIndex=1}DocMeasure.prototype.measureDocument=function(r){return this.measureNode(r)},DocMeasure.prototype.measureNode=function(r){var i=this;return this.styleStack.auto(r,(function(){if(r._margin=function getNodeMargin(){function processSingleMargins(r,i){return r.marginLeft||r.marginTop||r.marginRight||r.marginBottom?[r.marginLeft||i[0]||0,r.marginTop||i[1]||0,r.marginRight||i[2]||0,r.marginBottom||i[3]||0]:i}function flattenStyleArray(r){for(var o={},u=r.length-1;u>=0;u--){var p=r[u],g=i.styleStack.styleDictionary[p];for(var y in g)g.hasOwnProperty(y)&&(o[y]=g[y])}return o}function convertMargin(r){return w(r)?r=[r,r,r,r]:x(r)&&2===r.length&&(r=[r[0],r[1],r[0],r[1]]),r}var o=[void 0,void 0,void 0,void 0];if(r.style){var u=flattenStyleArray(x(r.style)?r.style:[r.style]);u&&(o=processSingleMargins(u,o)),u.margin&&(o=convertMargin(u.margin))}o=processSingleMargins(r,o),r.margin&&(o=convertMargin(r.margin));return void 0===o[0]&&void 0===o[1]&&void 0===o[2]&&void 0===o[3]?null:o}(),r.columns)return extendMargins(i.measureColumns(r));if(r.stack)return extendMargins(i.measureVerticalContainer(r));if(r.ul)return extendMargins(i.measureUnorderedList(r));if(r.ol)return extendMargins(i.measureOrderedList(r));if(r.table)return extendMargins(i.measureTable(r));if(void 0!==r.text)return extendMargins(i.measureLeaf(r));if(r.toc)return extendMargins(i.measureToc(r));if(r.image)return extendMargins(i.measureImage(r));if(r.svg)return extendMargins(i.measureSVG(r));if(r.canvas)return extendMargins(i.measureCanvas(r));if(r.qr)return extendMargins(i.measureQr(r));throw"Unrecognized document structure: "+JSON.stringify(r,k)}));function extendMargins(r){var i=r._margin;return i&&(r._minWidth+=i[0]+i[2],r._maxWidth+=i[0]+i[2]),r}},DocMeasure.prototype.convertIfBase64Image=function(r){if(/^data:image\/(jpeg|jpg|png);base64,/.test(r.image)){var i="$$pdfmake$$"+this.autoImageIndex++;this.images[i]=r.image,r.image=i}},DocMeasure.prototype.measureImageWithDimensions=function(r,i){if(r.fit){var o=i.width/i.height>r.fit[0]/r.fit[1]?r.fit[0]/i.width:r.fit[1]/i.height;r._width=r._minWidth=r._maxWidth=i.width*o,r._height=i.height*o}else r._width=r._minWidth=r._maxWidth=r.width||i.width,r._height=r.height||i.height*r._width/i.width,w(r.maxWidth)&&r.maxWidth<r._width&&(r._width=r._minWidth=r._maxWidth=r.maxWidth,r._height=r._width*i.height/i.width),w(r.maxHeight)&&r.maxHeight<r._height&&(r._height=r.maxHeight,r._width=r._minWidth=r._maxWidth=r._height*i.width/i.height),w(r.minWidth)&&r.minWidth>r._width&&(r._width=r._minWidth=r._maxWidth=r.minWidth,r._height=r._width*i.height/i.width),w(r.minHeight)&&r.minHeight>r._height&&(r._height=r.minHeight,r._width=r._minWidth=r._maxWidth=r._height*i.width/i.height);r._alignment=this.styleStack.getProperty("alignment")},DocMeasure.prototype.measureImage=function(r){this.images&&this.convertIfBase64Image(r);var i=this.imageMeasure.measureImage(r.image);return this.measureImageWithDimensions(r,i),r},DocMeasure.prototype.measureSVG=function(r){var i=this.svgMeasure.measureSVG(r.svg);return this.measureImageWithDimensions(r,i),r.font=this.styleStack.getProperty("font"),r.svg=this.svgMeasure.writeDimensions(r.svg,{width:r._width,height:r._height}),r},DocMeasure.prototype.measureLeaf=function(r){r._textRef&&r._textRef._textNodeRef.text&&(r.text=r._textRef._textNodeRef.text);var i=this.styleStack.clone();i.push(r);var o=this.textTools.buildInlines(r.text,i);return r._inlines=o.items,r._minWidth=o.minWidth,r._maxWidth=o.maxWidth,r},DocMeasure.prototype.measureToc=function(r){if(r.toc.title&&(r.toc.title=this.measureNode(r.toc.title)),r.toc._items.length>0){for(var i=[],o=r.toc.textStyle||{},u=r.toc.numberStyle||o,p=r.toc.textMargin||[0,0,0,0],g=0,y=r.toc._items.length;g<y;g++){var w=r.toc._items[g],_=w._textNodeRef.tocStyle||o,x=w._textNodeRef.tocMargin||p,k=w._textNodeRef.tocNumberStyle||u,O=P(w._nodeRef);i.push([{text:w._textNodeRef.text,linkToDestination:O,alignment:"left",style:_,margin:x},{text:"00000",linkToDestination:O,alignment:"right",_tocItemRef:w._nodeRef,style:k,margin:[0,x[1],0,x[3]]}])}r.toc._table={table:{dontBreakRows:!0,widths:["*","auto"],body:i},layout:"noBorders"},r.toc._table=this.measureNode(r.toc._table)}return r},DocMeasure.prototype.measureVerticalContainer=function(r){var i=r.stack;r._minWidth=0,r._maxWidth=0;for(var o=0,u=i.length;o<u;o++)i[o]=this.measureNode(i[o]),r._minWidth=Math.max(r._minWidth,i[o]._minWidth),r._maxWidth=Math.max(r._maxWidth,i[o]._maxWidth);return r},DocMeasure.prototype.gapSizeForList=function(){return this.textTools.sizeOfString("9. ",this.styleStack)},DocMeasure.prototype.buildUnorderedMarker=function(r,i,o){var u,p=r.getProperty("markerColor")||r.getProperty("color")||"black";switch(o){case"circle":u=function buildCircle(r,i){var o=r.fontSize/6;return{canvas:[{x:o,y:r.height/r.lineHeight+r.descender-r.fontSize/3,r1:o,r2:o,type:"ellipse",lineColor:i}]}}(i,p);break;case"square":u=function buildSquare(r,i){var o=r.fontSize/3;return{canvas:[{x:0,y:r.height/r.lineHeight+r.descender-r.fontSize/3-o/2,h:o,w:o,type:"rect",color:i}]}}(i,p);break;case"none":u={};break;default:u=function buildDisc(r,i){var o=r.fontSize/6;return{canvas:[{x:o,y:r.height/r.lineHeight+r.descender-r.fontSize/3,r1:o,r2:o,type:"ellipse",color:i}]}}(i,p)}return u._minWidth=u._maxWidth=i.width,u._minHeight=u._maxHeight=i.height,u},DocMeasure.prototype.buildOrderedMarker=function(r,i,o,u){function prepareAlpha(r){return r<1?r.toString():function toAlpha(r){return(r>=26?toAlpha((r/26>>0)-1):"")+"abcdefghijklmnopqrstuvwxyz"[r%26>>0]}(r-1)}function prepareRoman(r){if(r<1||r>4999)return r.toString();var i,o=r,u={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},p="";for(i in u)for(;o>=u[i];)p+=i,o-=u[i];return p}var p;switch(o){case"none":p=null;break;case"upper-alpha":p=prepareAlpha(r).toUpperCase();break;case"lower-alpha":p=prepareAlpha(r);break;case"upper-roman":p=prepareRoman(r);break;case"lower-roman":p=prepareRoman(r).toLowerCase();break;default:p=function prepareDecimal(r){return r.toString()}(r)}if(null===p)return{};u&&(x(u)?(u[0]&&(p=u[0]+p),u[1]&&(p+=u[1]),p+=" "):p+=u+" ");var g={text:p},y=i.getProperty("markerColor");return y&&(g.color=y),{_inlines:this.textTools.buildInlines(g,i).items}},DocMeasure.prototype.measureUnorderedList=function(r){var i=this.styleStack.clone(),o=r.ul;r.type=r.type||"disc",r._gapSize=this.gapSizeForList(),r._minWidth=0,r._maxWidth=0;for(var u=0,p=o.length;u<p;u++){var g=o[u]=this.measureNode(o[u]);g.ol||g.ul||(g.listMarker=this.buildUnorderedMarker(i,r._gapSize,g.listType||r.type)),r._minWidth=Math.max(r._minWidth,o[u]._minWidth+r._gapSize.width),r._maxWidth=Math.max(r._maxWidth,o[u]._maxWidth+r._gapSize.width)}return r},DocMeasure.prototype.measureOrderedList=function(r){var i=this.styleStack.clone(),o=r.ol;r.type=r.type||"decimal",r.separator=r.separator||".",r.reversed=r.reversed||!1,w(r.start)||(r.start=r.reversed?o.length:1),r._gapSize=this.gapSizeForList(),r._minWidth=0,r._maxWidth=0;for(var u=r.start,p=0,g=o.length;p<g;p++){if(!(_=o[p]=this.measureNode(o[p])).ol&&!_.ul){var y=w(_.counter)?_.counter:u;_.listMarker=this.buildOrderedMarker(y,i,_.listType||r.type,r.separator),_.listMarker._inlines&&(r._gapSize.width=Math.max(r._gapSize.width,_.listMarker._inlines[0].width))}r._minWidth=Math.max(r._minWidth,o[p]._minWidth),r._maxWidth=Math.max(r._maxWidth,o[p]._maxWidth),r.reversed?u--:u++}r._minWidth+=r._gapSize.width,r._maxWidth+=r._gapSize.width;for(p=0,g=o.length;p<g;p++){var _;(_=o[p]).ol||_.ul||(_.listMarker._minWidth=_.listMarker._maxWidth=r._gapSize.width)}return r},DocMeasure.prototype.measureColumns=function(r){var i=r.columns;r._gap=this.styleStack.getProperty("columnGap")||0;for(var o=0,u=i.length;o<u;o++)i[o]=this.measureNode(i[o]);var p=g.measureMinMax(i),y=i.length>0?i.length-1:0;return r._minWidth=p.min+r._gap*y,r._maxWidth=p.max+r._gap*y,r},DocMeasure.prototype.measureTable=function(r){!function extendTableWidths(r){r.table.widths||(r.table.widths="auto");if(y(r.table.widths))for(r.table.widths=[r.table.widths];r.table.widths.length<r.table.body[0].length;)r.table.widths.push(r.table.widths[r.table.widths.length-1]);for(var i=0,o=r.table.widths.length;i<o;i++){var u=r.table.widths[i];(w(u)||y(u))&&(r.table.widths[i]={width:u})}}(r),r._layout=function getLayout(i){var o=r.layout;y(o)&&(o=i[o]);return O({hLineWidth:function(r,i){return 1},vLineWidth:function(r,i){return 1},hLineColor:function(r,i){return"black"},vLineColor:function(r,i){return"black"},hLineStyle:function(r,i){return null},vLineStyle:function(r,i){return null},paddingLeft:function(r,i){return 4},paddingRight:function(r,i){return 4},paddingTop:function(r,i){return 2},paddingBottom:function(r,i){return 2},fillColor:function(r,i){return null},fillOpacity:function(r,i){return 1},defaultBorder:!0},o)}(this.tableLayouts),r._offsets=function getOffsets(i){for(var o=[],u=0,p=0,g=0,y=r.table.widths.length;g<y;g++){var w=p+i.vLineWidth(g,r)+i.paddingLeft(g,r);o.push(w),u+=w,p=i.paddingRight(g,r)}return{total:u+=p+i.vLineWidth(r.table.widths.length,r),offsets:o}}(r._layout);var i,o,u,p,x=[];for(i=0,u=r.table.body[0].length;i<u;i++){var k=r.table.widths[i];for(k._minWidth=0,k._maxWidth=0,o=0,p=r.table.body.length;o<p;o++){var P=r.table.body[o],I=P[i];if(void 0===I)throw"Malformed table row, a cell is undefined.";null===I&&(I=""),I._span||((I=P[i]=this.styleStack.auto(I,measureCb(this,I))).colSpan&&I.colSpan>1?(markSpans(P,i,I.colSpan),x.push({col:i,span:I.colSpan,minWidth:I._minWidth,maxWidth:I._maxWidth})):(k._minWidth=Math.max(k._minWidth,I._minWidth),k._maxWidth=Math.max(k._maxWidth,I._maxWidth))),I.rowSpan&&I.rowSpan>1&&markVSpans(r.table,o,i,I.rowSpan)}}!function extendWidthsForColSpans(){for(var i,o,u=0,p=x.length;u<p;u++){var g=x[u],y=getMinMax(g.col,g.span,r._offsets),w=g.minWidth-y.minWidth,_=g.maxWidth-y.maxWidth;if(w>0)for(i=w/g.span,o=0;o<g.span;o++)r.table.widths[g.col+o]._minWidth+=i;if(_>0)for(i=_/g.span,o=0;o<g.span;o++)r.table.widths[g.col+o]._maxWidth+=i}}();var B=g.measureMinMax(r.table.widths);return r._minWidth=B.min+r._offsets.total,r._maxWidth=B.max+r._offsets.total,r;function measureCb(r,i){return function(){return _(i)&&(i.fillColor=r.styleStack.getProperty("fillColor"),i.fillOpacity=r.styleStack.getProperty("fillOpacity")),r.measureNode(i)}}function getMinMax(i,o,u){for(var p={minWidth:0,maxWidth:0},g=0;g<o;g++)p.minWidth+=r.table.widths[i+g]._minWidth+(g?u.offsets[i+g]:0),p.maxWidth+=r.table.widths[i+g]._maxWidth+(g?u.offsets[i+g]:0);return p}function markSpans(r,i,o){for(var u=1;u<o;u++)r[i+u]={_span:!0,_minWidth:0,_maxWidth:0,rowSpan:r[i].rowSpan}}function markVSpans(r,i,o,u){for(var p=1;p<u;p++)r.body[i+p][o]={_span:!0,_minWidth:0,_maxWidth:0,fillColor:r.body[i][o].fillColor,fillOpacity:r.body[i][o].fillOpacity}}},DocMeasure.prototype.measureCanvas=function(r){for(var i=0,o=0,u=0,p=r.canvas.length;u<p;u++){var g=r.canvas[u];switch(g.type){case"ellipse":i=Math.max(i,g.x+g.r1),o=Math.max(o,g.y+g.r2);break;case"rect":i=Math.max(i,g.x+g.w),o=Math.max(o,g.y+g.h);break;case"line":i=Math.max(i,g.x1,g.x2),o=Math.max(o,g.y1,g.y2);break;case"polyline":for(var y=0,w=g.points.length;y<w;y++)i=Math.max(i,g.points[y].x),o=Math.max(o,g.points[y].y)}}return r._minWidth=r._maxWidth=i,r._minHeight=r._maxHeight=o,r._alignment=this.styleStack.getProperty("alignment"),r},DocMeasure.prototype.measureQr=function(r){return(r=I.measure(r))._alignment=this.styleStack.getProperty("alignment"),r},r.exports=DocMeasure},4889:function(r,i,o){"use strict";var u=o(8823).Buffer,p=o(6225).isString,g=o(6225).isNumber,y=o(6225).isBoolean,w=o(6225).isArray,_=o(6225).isUndefined,x=o(6225).fontStringify;function DocPreprocessor(){}DocPreprocessor.prototype.preprocessDocument=function(r){return this.parentNode=null,this.tocs=[],this.nodeReferences=[],this.preprocessNode(r)},DocPreprocessor.prototype.preprocessNode=function(r){if(w(r)?r={stack:r}:p(r)?r={text:r}:g(r)||y(r)?r={text:r.toString()}:null==r||0===Object.keys(r).length?r={text:""}:!("text"in r)||void 0!==r.text&&null!==r.text||(r.text=""),r.columns)return this.preprocessColumns(r);if(r.stack)return this.preprocessVerticalContainer(r);if(r.ul)return this.preprocessList(r);if(r.ol)return this.preprocessList(r);if(r.table)return this.preprocessTable(r);if(void 0!==r.text)return this.preprocessText(r);if(r.toc)return this.preprocessToc(r);if(r.image)return this.preprocessImage(r);if(r.svg)return this.preprocessSVG(r);if(r.canvas)return this.preprocessCanvas(r);if(r.qr)return this.preprocessQr(r);if(r.pageReference||r.textReference)return this.preprocessText(r);throw"Unrecognized document structure: "+JSON.stringify(r,x)},DocPreprocessor.prototype.preprocessColumns=function(r){for(var i=r.columns,o=0,u=i.length;o<u;o++)i[o]=this.preprocessNode(i[o]);return r},DocPreprocessor.prototype.preprocessVerticalContainer=function(r){for(var i=r.stack,o=0,u=i.length;o<u;o++)i[o]=this.preprocessNode(i[o]);return r},DocPreprocessor.prototype.preprocessList=function(r){for(var i=r.ul||r.ol,o=0,u=i.length;o<u;o++)i[o]=this.preprocessNode(i[o]);return r},DocPreprocessor.prototype.preprocessTable=function(r){var i,o,u,p;for(i=0,u=r.table.body[0].length;i<u;i++)for(o=0,p=r.table.body.length;o<p;o++){var g=r.table.body[o],y=g[i];void 0!==y&&(null===y&&(y=""),y._span||(g[i]=this.preprocessNode(y)))}return r},DocPreprocessor.prototype.preprocessText=function(r){if(r.tocItem){w(r.tocItem)||(r.tocItem=[r.tocItem]);for(var i=0,o=r.tocItem.length;i<o;i++){p(r.tocItem[i])||(r.tocItem[i]="_default_");var u=r.tocItem[i];this.tocs[u]||(this.tocs[u]={toc:{_items:[],_pseudo:!0}}),r.id||(r.id="toc-"+u+"-"+this.tocs[u].toc._items.length);var g={_nodeRef:this._getNodeForNodeRef(r),_textNodeRef:r};this.tocs[u].toc._items.push(g)}}if(r.id)if(this.nodeReferences[r.id]){if(!this.nodeReferences[r.id]._pseudo)throw"Node id '"+r.id+"' already exists";this.nodeReferences[r.id]._nodeRef=this._getNodeForNodeRef(r),this.nodeReferences[r.id]._textNodeRef=r,this.nodeReferences[r.id]._pseudo=!1}else this.nodeReferences[r.id]={_nodeRef:this._getNodeForNodeRef(r),_textNodeRef:r};if(r.pageReference&&(this.nodeReferences[r.pageReference]||(this.nodeReferences[r.pageReference]={_nodeRef:{},_textNodeRef:{},_pseudo:!0}),r.text="00000",r.linkToDestination=r.pageReference,r._pageRef=this.nodeReferences[r.pageReference]),r.textReference&&(this.nodeReferences[r.textReference]||(this.nodeReferences[r.textReference]={_nodeRef:{},_pseudo:!0}),r.text="",r.linkToDestination=r.textReference,r._textRef=this.nodeReferences[r.textReference]),r.text&&r.text.text)r.text=[this.preprocessNode(r.text)];else if(w(r.text)){var y=!1;null===this.parentNode&&(this.parentNode=r,y=!0);for(i=0,o=r.text.length;i<o;i++)r.text[i]=this.preprocessNode(r.text[i]);y&&(this.parentNode=null)}return r},DocPreprocessor.prototype.preprocessToc=function(r){if(r.toc.id||(r.toc.id="_default_"),r.toc.title=r.toc.title?this.preprocessNode(r.toc.title):null,r.toc._items=[],this.tocs[r.toc.id]){if(!this.tocs[r.toc.id].toc._pseudo)throw"TOC '"+r.toc.id+"' already exists";r.toc._items=this.tocs[r.toc.id].toc._items}return this.tocs[r.toc.id]=r,r},DocPreprocessor.prototype.preprocessImage=function(r){return _(r.image.type)||_(r.image.data)||"Buffer"!==r.image.type||!w(r.image.data)||(r.image=u.from(r.image.data)),r},DocPreprocessor.prototype.preprocessSVG=function(r){return r},DocPreprocessor.prototype.preprocessCanvas=function(r){return r},DocPreprocessor.prototype.preprocessQr=function(r){return r},DocPreprocessor.prototype._getNodeForNodeRef=function(r){return this.parentNode?this.parentNode:r},r.exports=DocPreprocessor},3858:function(r,i,o){"use strict";var u=o(8537),p=o(6225).isString;function DocumentContext(r,i){this.pages=[],this.pageMargins=i,this.x=i.left,this.availableWidth=r.width-i.left-i.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new u,this.backgroundLength=[],this.addPage(r)}DocumentContext.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},DocumentContext.prototype.beginColumn=function(r,i,o){var u=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(u),this.endingCell=o,this.page=u.page,this.x=this.x+this.lastColumnWidth+(i||0),this.y=u.y,this.availableWidth=r,this.availableHeight=u.availableHeight,this.lastColumnWidth=r},DocumentContext.prototype.calculateBottomMost=function(r){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):r.bottomMost=function bottomMostContext(r,i){var o;o=r.page>i.page?r:i.page>r.page?i:r.y>i.y?r:i;return{page:o.page,x:o.x,y:o.y,availableHeight:o.availableHeight,availableWidth:o.availableWidth}}(this,r.bottomMost)},DocumentContext.prototype.markEnding=function(r){this.page=r._columnEndingContext.page,this.x=r._columnEndingContext.x,this.y=r._columnEndingContext.y,this.availableWidth=r._columnEndingContext.availableWidth,this.availableHeight=r._columnEndingContext.availableHeight,this.lastColumnWidth=r._columnEndingContext.lastColumnWidth},DocumentContext.prototype.saveContextInEndingCell=function(r){r._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},DocumentContext.prototype.completeColumnGroup=function(r){var i=this.snapshots.pop();this.calculateBottomMost(i),this.endingCell=null,this.x=i.x;var o=i.bottomMost.y;r&&(i.page===i.bottomMost.page?i.y+r>o&&(o=i.y+r):o+=r),this.y=o,this.page=i.bottomMost.page,this.availableWidth=i.availableWidth,this.availableHeight=i.bottomMost.availableHeight,r&&(this.availableHeight-=o-i.bottomMost.y),this.lastColumnWidth=i.lastColumnWidth},DocumentContext.prototype.addMargin=function(r,i){this.x+=r,this.availableWidth-=r+(i||0)},DocumentContext.prototype.moveDown=function(r){return this.y+=r,this.availableHeight-=r,this.availableHeight>0},DocumentContext.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},DocumentContext.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},DocumentContext.prototype.moveTo=function(r,i){null!=r&&(this.x=r,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),null!=i&&(this.y=i,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},DocumentContext.prototype.moveToRelative=function(r,i){null!=r&&(this.x=this.x+r),null!=i&&(this.y=this.y+i)},DocumentContext.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},DocumentContext.prototype.endDetachedBlock=function(){var r=this.snapshots.pop();this.x=r.x,this.y=r.y,this.availableWidth=r.availableWidth,this.availableHeight=r.availableHeight,this.page=r.page,this.endingCell=r.endingCell,this.lastColumnWidth=r.lastColumnWidth};var getPageSize=function(r,i){return(i=function pageOrientation(r,i){return void 0===r?i:p(r)&&"landscape"===r.toLowerCase()?"landscape":"portrait"}(i,r.pageSize.orientation))!==r.pageSize.orientation?{orientation:i,width:r.pageSize.height,height:r.pageSize.width}:{orientation:r.pageSize.orientation,width:r.pageSize.width,height:r.pageSize.height}};DocumentContext.prototype.moveToNextPage=function(r){var i=this.page+1,o=this.page,u=this.y,p=i>=this.pages.length;if(p){var g=this.availableWidth,y=this.getCurrentPage().pageSize.orientation,w=getPageSize(this.getCurrentPage(),r);this.addPage(w),y===w.orientation&&(this.availableWidth=g)}else this.page=i,this.initializePage();return{newPageCreated:p,prevPage:o,prevY:u,y:this.y}},DocumentContext.prototype.addPage=function(r){var i={items:[],pageSize:r};return this.pages.push(i),this.backgroundLength.push(0),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),i},DocumentContext.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},DocumentContext.prototype.getCurrentPosition=function(){var r=this.getCurrentPage().pageSize,i=r.height-this.pageMargins.top-this.pageMargins.bottom,o=r.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:r.orientation,pageInnerHeight:i,pageInnerWidth:o,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/i,horizontalRatio:(this.x-this.pageMargins.left)/o}},r.exports=DocumentContext},1196:function(r,i,o){"use strict";var u=o(4775),p=o(6225).isNumber,g=o(6225).pack,y=o(6225).offsetVector,w=o(3858);function ElementWriter(r,i){this.context=r,this.contextStack=[],this.tracker=i}function addPageItem(r,i,o){null==o||o<0||o>r.items.length?r.items.push(i):r.items.splice(o,0,i)}ElementWriter.prototype.addLine=function(r,i,o){var u=r.getHeight(),p=this.context,g=p.getCurrentPage(),y=this.getCurrentPositionOnPage();return!(p.availableHeight<u||!g)&&(r.x=p.x+(r.x||0),r.y=p.y+(r.y||0),this.alignLine(r),addPageItem(g,{type:"line",item:r},o),this.tracker.emit("lineAdded",r),i||p.moveDown(u),y)},ElementWriter.prototype.alignLine=function(r){var i=this.context.availableWidth,o=r.getWidth(),u=r.inlines&&r.inlines.length>0&&r.inlines[0].alignment,p=0;switch(u){case"right":p=i-o;break;case"center":p=(i-o)/2}if(p&&(r.x=(r.x||0)+p),"justify"===u&&!r.newLineForced&&!r.lastLineInParagraph&&r.inlines.length>1)for(var g=(i-o)/(r.inlines.length-1),y=1,w=r.inlines.length;y<w;y++)p=y*g,r.inlines[y].x+=p,r.inlines[y].justifyShift=g},ElementWriter.prototype.addImage=function(r,i,o){var u=this.context,p=u.getCurrentPage(),g=this.getCurrentPositionOnPage();return!(!p||void 0===r.absolutePosition&&u.availableHeight<r._height&&p.items.length>0)&&(void 0===r._x&&(r._x=r.x||0),r.x=u.x+r._x,r.y=u.y,this.alignImage(r),addPageItem(p,{type:o||"image",item:r},i),u.moveDown(r._height),g)},ElementWriter.prototype.addSVG=function(r,i){return this.addImage(r,i,"svg")},ElementWriter.prototype.addQr=function(r,i){var o=this.context,u=o.getCurrentPage(),p=this.getCurrentPositionOnPage();if(!u||void 0===r.absolutePosition&&o.availableHeight<r._height)return!1;void 0===r._x&&(r._x=r.x||0),r.x=o.x+r._x,r.y=o.y,this.alignImage(r);for(var g=0,y=r._canvas.length;g<y;g++){var w=r._canvas[g];w.x+=r.x,w.y+=r.y,this.addVector(w,!0,!0,i)}return o.moveDown(r._height),p},ElementWriter.prototype.alignImage=function(r){var i=this.context.availableWidth,o=r._minWidth,u=0;switch(r._alignment){case"right":u=i-o;break;case"center":u=(i-o)/2}u&&(r.x=(r.x||0)+u)},ElementWriter.prototype.alignCanvas=function(r){var i=this.context.availableWidth,o=r._minWidth,u=0;switch(r._alignment){case"right":u=i-o;break;case"center":u=(i-o)/2}u&&r.canvas.forEach((function(r){y(r,u,0)}))},ElementWriter.prototype.addVector=function(r,i,o,u){var p=this.context,g=p.getCurrentPage(),w=this.getCurrentPositionOnPage();if(g)return y(r,i?0:p.x,o?0:p.y),addPageItem(g,{type:"vector",item:r},u),w},ElementWriter.prototype.beginClip=function(r,i){var o=this.context;return o.getCurrentPage().items.push({type:"beginClip",item:{x:o.x,y:o.y,width:r,height:i}}),!0},ElementWriter.prototype.endClip=function(){return this.context.getCurrentPage().items.push({type:"endClip"}),!0},ElementWriter.prototype.addFragment=function(r,i,o,p){var w=this.context,_=w.getCurrentPage();return!(!i&&r.height>w.availableHeight)&&(r.items.forEach((function(p){switch(p.type){case"line":var x=function cloneLine(r){var i=new u(r.maxWidth);for(var o in r)r.hasOwnProperty(o)&&(i[o]=r[o]);return i}(p.item);x._node&&(x._node.positions[0].pageNumber=w.page+1),x.x=(x.x||0)+(i?r.xOffset||0:w.x),x.y=(x.y||0)+(o?r.yOffset||0:w.y),_.items.push({type:"line",item:x});break;case"vector":var k=g(p.item);y(k,i?r.xOffset||0:w.x,o?r.yOffset||0:w.y),_.items.push({type:"vector",item:k});break;case"image":case"svg":var P=g(p.item);P.x=(P.x||0)+(i?r.xOffset||0:w.x),P.y=(P.y||0)+(o?r.yOffset||0:w.y),_.items.push({type:p.type,item:P})}})),p||w.moveDown(r.height),!0)},ElementWriter.prototype.pushContext=function(r,i){void 0===r&&(i=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,r=this.context.availableWidth),p(r)&&(r=new w({width:r,height:i},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=r},ElementWriter.prototype.popContext=function(){this.context=this.contextStack.pop()},ElementWriter.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},r.exports=ElementWriter},2249:function(r,i,o){"use strict";var u=o(6225).isArray;function FontProvider(r,i){for(var o in this.fonts={},this.pdfKitDoc=i,this.fontCache={},r)if(r.hasOwnProperty(o)){var u=r[o];this.fonts[o]={normal:u.normal,bold:u.bold,italics:u.italics,bolditalics:u.bolditalics}}}FontProvider.prototype.getFontType=function(r,i){return function typeName(r,i){var o="normal";return r&&i?o="bolditalics":r?o="bold":i&&(o="italics"),o}(r,i)},FontProvider.prototype.getFontFile=function(r,i,o){var u=this.getFontType(i,o);return this.fonts[r]&&this.fonts[r][u]?this.fonts[r][u]:null},FontProvider.prototype.provideFont=function(r,i,o){var p=this.getFontType(i,o);if(null===this.getFontFile(r,i,o))throw new Error("Font '"+r+"' in style '"+p+"' is not defined in the font section of the document definition.");if(this.fontCache[r]=this.fontCache[r]||{},!this.fontCache[r][p]){var g=this.fonts[r][p];u(g)||(g=[g]),this.fontCache[r][p]=this.pdfKitDoc.font.apply(this.pdfKitDoc,g)._font}return this.fontCache[r][p]},r.exports=FontProvider},6225:function(r){"use strict";function isArray(r){return Array.isArray(r)}r.exports={isString:function isString(r){return"string"==typeof r||r instanceof String},isNumber:function isNumber(r){return"number"==typeof r||r instanceof Number},isBoolean:function isBoolean(r){return"boolean"==typeof r},isArray:isArray,isFunction:function isFunction(r){return"function"==typeof r},isObject:function isObject(r){return null!==r&&"object"==typeof r},isNull:function isNull(r){return null===r},isUndefined:function isUndefined(r){return void 0===r},pack:function pack(){for(var r={},i=0,o=arguments.length;i<o;i++){var u=arguments[i];if(u)for(var p in u)u.hasOwnProperty(p)&&(r[p]=u[p])}return r},fontStringify:function fontStringify(r,i){return"font"===r?"font":i},offsetVector:function offsetVector(r,i,o){switch(r.type){case"ellipse":case"rect":r.x+=i,r.y+=o;break;case"line":r.x1+=i,r.x2+=i,r.y1+=o,r.y2+=o;break;case"polyline":for(var u=0,p=r.points.length;u<p;u++)r.points[u].x+=i,r.points[u].y+=o}},getNodeId:function getNodeId(r){if(r.id)return r.id;if(isArray(r.text))for(var i=0,o=r.text.length;i<o;i++){var u=getNodeId(r.text[i]);if(u)return u}return null},isPattern:function isPattern(r){return isArray(r)&&2===r.length},getPattern:function getPattern(r,i){return[i[r[0]],r[1]]}}},3090:function(r,i,o){"use strict";var u=o(8823).Buffer,p=o(3857);function ImageMeasure(r,i){this.pdfKitDoc=r,this.imageDictionary=i||{}}ImageMeasure.prototype.measureImage=function(r){var i,o=this;if(this.pdfKitDoc._imageRegistry[r])i=this.pdfKitDoc._imageRegistry[r];else{try{if(i=this.pdfKitDoc.openImage(function realImageSrc(r){var i=o.imageDictionary[r];if(!i)return r;if(p.existsSync(i))return p.readFileSync(i);var g=i.indexOf("base64,");if(g<0)return o.imageDictionary[r];return u.from(i.substring(g+7),"base64")}(r)),!i)throw"No image"}catch(r){throw"Invalid image: "+r.toString()+"\nImages dictionary should contain dataURL entries (or local file paths in node.js)"}i.embed(this.pdfKitDoc),this.pdfKitDoc._imageRegistry[r]=i}return{width:i.width,height:i.height}},r.exports=ImageMeasure},2678:function(r,i,o){"use strict";var u=o(8537),p=o(4889),g=o(1728),y=o(3858),w=o(2912),_=o(4498),x=o(9342),k=o(4775),P=o(6225).isString,O=o(6225).isArray,I=o(6225).isUndefined,B=o(6225).isNull,R=o(6225).pack,D=o(6225).offsetVector,N=o(6225).fontStringify,W=o(6225).getNodeId,U=o(6225).isFunction,j=o(1350),G=o(7597),X=o(6225).isNumber;function addAll(r,i){i.forEach((function(i){r.push(i)}))}function LayoutBuilder(r,i,o,p){this.pageSize=r,this.pageMargins=i,this.tracker=new u,this.imageMeasure=o,this.svgMeasure=p,this.tableLayouts={}}LayoutBuilder.prototype.registerTableLayouts=function(r){this.tableLayouts=R(this.tableLayouts,r)},LayoutBuilder.prototype.layoutDocument=function(r,i,o,u,y,w,_,x,k,P){function addPageBreaksIfNecessary(r,i){if(!U(P))return!1;r=r.filter((function(r){return r.positions.length>0})),r.forEach((function(r){var o={};["id","text","ul","ol","table","image","qr","canvas","svg","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"].forEach((function(i){void 0!==r[i]&&(o[i]=r[i])})),o.startPosition=r.positions[0],o.pageNumbers=Array.from(new Set(r.positions.map((function(r){return r.pageNumber})))),o.pages=i.length,o.stack=O(r.stack),r.nodeInfo=o}));for(var o=0;o<r.length;o++){var u=r[o];if("before"!==u.pageBreak&&!u.pageBreakCalculated){u.pageBreakCalculated=!0;var p=u.nodeInfo.pageNumbers[0],g=[],y=[],w=[];if(P.length>1)for(var _=o+1,x=r.length;_<x;_++)r[_].nodeInfo.pageNumbers.indexOf(p)>-1&&g.push(r[_].nodeInfo),P.length>2&&r[_].nodeInfo.pageNumbers.indexOf(p+1)>-1&&y.push(r[_].nodeInfo);if(P.length>3)for(_=0;_<o;_++)r[_].nodeInfo.pageNumbers.indexOf(p)>-1&&w.push(r[_].nodeInfo);if(P(u.nodeInfo,g,y,w))return u.pageBreak="before",!0}}return!1}function resetXYs(r){r.linearNodeList.forEach((function(r){r.resetXY()}))}this.docPreprocessor=new p,this.docMeasure=new g(i,o,u,this.imageMeasure,this.svgMeasure,this.tableLayouts,x);for(var I=this.tryLayoutDocument(r,i,o,u,y,w,_,x,k);addPageBreaksIfNecessary(I.linearNodeList,I.pages);)resetXYs(I),I=this.tryLayoutDocument(r,i,o,u,y,w,_,x,k);return I.pages},LayoutBuilder.prototype.tryLayoutDocument=function(r,i,o,u,p,g,_,x,k,P){this.linearNodeList=[],r=this.docPreprocessor.preprocessDocument(r),r=this.docMeasure.measureDocument(r),this.writer=new w(new y(this.pageSize,this.pageMargins),this.tracker);var O=this;return this.writer.context().tracker.startTracking("pageAdded",(function(){O.addBackground(p)})),this.addBackground(p),this.processNode(r),this.addHeadersAndFooters(g,_),null!=k&&this.addWatermark(k,i,u),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},LayoutBuilder.prototype.addBackground=function(r){var i=U(r)?r:function(){return r},o=this.writer.context(),u=o.getCurrentPage().pageSize,p=i(o.page+1,u);p&&(this.writer.beginUnbreakableBlock(u.width,u.height),p=this.docPreprocessor.preprocessDocument(p),this.processNode(this.docMeasure.measureDocument(p)),this.writer.commitUnbreakableBlock(0,0),o.backgroundLength[o.page]+=p.positions.length)},LayoutBuilder.prototype.addStaticRepeatable=function(r,i){this.addDynamicRepeatable((function(){return JSON.parse(JSON.stringify(r))}),i)},LayoutBuilder.prototype.addDynamicRepeatable=function(r,i){for(var o=0,u=this.writer.context().pages.length;o<u;o++){this.writer.context().page=o;var p=r(o+1,u,this.writer.context().pages[o].pageSize);if(p){var g=i(this.writer.context().getCurrentPage().pageSize,this.pageMargins);this.writer.beginUnbreakableBlock(g.width,g.height),p=this.docPreprocessor.preprocessDocument(p),this.processNode(this.docMeasure.measureDocument(p)),this.writer.commitUnbreakableBlock(g.x,g.y)}}},LayoutBuilder.prototype.addHeadersAndFooters=function(r,i){var headerSizeFct=function(r,i){return{x:0,y:0,width:r.width,height:i.top}},footerSizeFct=function(r,i){return{x:0,y:r.height-i.bottom,width:r.width,height:i.bottom}};U(r)?this.addDynamicRepeatable(r,headerSizeFct):r&&this.addStaticRepeatable(r,headerSizeFct),U(i)?this.addDynamicRepeatable(i,footerSizeFct):i&&this.addStaticRepeatable(i,footerSizeFct)},LayoutBuilder.prototype.addWatermark=function(r,i,o){if(P(r)&&(r={text:r}),r.text){r.font=r.font||o.font||"Roboto",r.fontSize=r.fontSize||"auto",r.color=r.color||"black",r.opacity=X(r.opacity)?r.opacity:.6,r.bold=r.bold||!1,r.italics=r.italics||!1,r.angle=I(r.angle)||B(r.angle)?null:r.angle,null===r.angle&&(r.angle=-180*Math.atan2(this.pageSize.height,this.pageSize.width)/Math.PI),"auto"===r.fontSize&&(r.fontSize=function getWatermarkFontSize(r,i,o){var u,p=new j(o),g=new G(null,{font:i.font,bold:i.bold,italics:i.italics}),y=0,w=1e3,_=(y+w)/2;for(;Math.abs(y-w)>1;)g.push({fontSize:_}),(u=p.sizeOfRotatedText(i.text,i.angle,g)).width>r.width?_=(y+(w=_))/2:u.width<r.width&&(_=u.height>r.height?(y+(w=_))/2:((y=_)+w)/2),g.pop();return _}(this.pageSize,r,i));var u={text:r.text,font:i.provideFont(r.font,r.bold,r.italics),fontSize:r.fontSize,color:r.color,opacity:r.opacity,angle:r.angle};u._size=function getWatermarkSize(r,i){var o=new j(i),u=new G(null,{font:r.font,bold:r.bold,italics:r.italics});u.push({fontSize:r.fontSize});var p=o.sizeOfString(r.text,u),g=o.sizeOfRotatedText(r.text,r.angle,u);return{size:p,rotatedSize:g}}(r,i);for(var p=this.writer.context().pages,g=0,y=p.length;g<y;g++)p[g].watermark=u}},LayoutBuilder.prototype.processNode=function(r){var i=this;this.linearNodeList.push(r),function decorateNode(r){var i=r.x,o=r.y;r.positions=[],O(r.canvas)&&r.canvas.forEach((function(r){var i=r.x,o=r.y,u=r.x1,p=r.y1,g=r.x2,y=r.y2;r.resetXY=function(){r.x=i,r.y=o,r.x1=u,r.y1=p,r.x2=g,r.y2=y}})),r.resetXY=function(){r.x=i,r.y=o,O(r.canvas)&&r.canvas.forEach((function(r){r.resetXY()}))}}(r),function applyMargins(o){var u=r._margin;"before"===r.pageBreak?i.writer.moveToNextPage(r.pageOrientation):"beforeOdd"===r.pageBreak?(i.writer.moveToNextPage(r.pageOrientation),(i.writer.context().page+1)%2==1&&i.writer.moveToNextPage(r.pageOrientation)):"beforeEven"===r.pageBreak&&(i.writer.moveToNextPage(r.pageOrientation),(i.writer.context().page+1)%2==0&&i.writer.moveToNextPage(r.pageOrientation));u&&(i.writer.context().moveDown(u[1]),i.writer.context().addMargin(u[0],u[2]));o(),u&&(i.writer.context().addMargin(-u[0],-u[2]),i.writer.context().moveDown(u[3]));"after"===r.pageBreak?i.writer.moveToNextPage(r.pageOrientation):"afterOdd"===r.pageBreak?(i.writer.moveToNextPage(r.pageOrientation),(i.writer.context().page+1)%2==1&&i.writer.moveToNextPage(r.pageOrientation)):"afterEven"===r.pageBreak&&(i.writer.moveToNextPage(r.pageOrientation),(i.writer.context().page+1)%2==0&&i.writer.moveToNextPage(r.pageOrientation))}((function(){var o=r.unbreakable;o&&i.writer.beginUnbreakableBlock();var u=r.absolutePosition;u&&(i.writer.context().beginDetachedBlock(),i.writer.context().moveTo(u.x||0,u.y||0));var p=r.relativePosition;if(p&&(i.writer.context().beginDetachedBlock(),i.writer.context().moveToRelative(p.x||0,p.y||0)),r.stack)i.processVerticalContainer(r);else if(r.columns)i.processColumns(r);else if(r.ul)i.processList(!1,r);else if(r.ol)i.processList(!0,r);else if(r.table)i.processTable(r);else if(void 0!==r.text)i.processLeaf(r);else if(r.toc)i.processToc(r);else if(r.image)i.processImage(r);else if(r.svg)i.processSVG(r);else if(r.canvas)i.processCanvas(r);else if(r.qr)i.processQr(r);else if(!r._span)throw"Unrecognized document structure: "+JSON.stringify(r,N);(u||p)&&i.writer.context().endDetachedBlock(),o&&i.writer.commitUnbreakableBlock()}))},LayoutBuilder.prototype.processVerticalContainer=function(r){var i=this;r.stack.forEach((function(o){i.processNode(o),addAll(r.positions,o.positions)}))},LayoutBuilder.prototype.processColumns=function(r){var i=r.columns,o=this.writer.context().availableWidth,u=function gapArray(r){if(!r)return null;var o=[];o.push(0);for(var u=i.length-1;u>0;u--)o.push(r);return o}(r._gap);u&&(o-=(u.length-1)*r._gap),_.buildColumnWidths(i,o);var p=this.processRow(i,i,u);addAll(r.positions,p.positions)},LayoutBuilder.prototype.processRow=function(r,i,o,u,p,g){var y=this,w=[],_=[];return this.tracker.auto("pageChanged",(function storePageBreakData(r){for(var i,o=0,u=w.length;o<u;o++){var p=w[o];if(p.prevPage===r.prevPage){i=p;break}}i||(i=r,w.push(i));i.prevY=Math.max(i.prevY,r.prevY),i.y=Math.min(i.y,r.y)}),(function(){i=i||r,y.writer.context().beginColumnGroup();for(var u=0,p=r.length;u<p;u++){var w=r[u],x=i[u]._calcWidth,k=colLeftOffset(u);if(w.colSpan&&w.colSpan>1)for(var P=1;P<w.colSpan;P++)x+=i[++u]._calcWidth+o[u];y.writer.context().beginColumn(x,k,getEndingCell(w,u)),w._span?w._columnEndingContext&&y.writer.context().markEnding(w):(y.processNode(w),addAll(_,w.positions))}y.writer.context().completeColumnGroup(g)})),{pageBreaks:w,positions:_};function colLeftOffset(r){return o&&o.length>r?o[r]:0}function getEndingCell(r,i){if(r.rowSpan&&r.rowSpan>1){var o=p+r.rowSpan-1;if(o>=u.length)throw"Row span for column "+i+" (with indexes starting from 0) exceeded row count";return u[o][i]}return null}},LayoutBuilder.prototype.processList=function(r,i){var o,u=this,p=r?i.ol:i.ul,g=i._gapSize;this.writer.context().addMargin(g.width),this.tracker.auto("lineAdded",(function addMarkerToFirstLeaf(r){if(o){var i=o;if(o=null,i.canvas){var p=i.canvas[0];D(p,-i._minWidth,0),u.writer.addVector(p)}else if(i._inlines){var g=new k(u.pageSize.width);g.addInline(i._inlines[0]),g.x=-i._minWidth,g.y=r.getAscenderHeight()-g.getAscenderHeight(),u.writer.addLine(g,!0)}}}),(function(){p.forEach((function(r){o=r.listMarker,u.processNode(r),addAll(i.positions,r.positions)}))})),this.writer.context().addMargin(-g.width)},LayoutBuilder.prototype.processTable=function(r){var i=new x(r);i.beginTable(this.writer);for(var o=r.table.heights,u=0,p=r.table.body.length;u<p;u++){var g;i.beginRow(u,this.writer),"auto"===(g=U(o)?o(u):O(o)?o[u]:o)&&(g=void 0);var y=this.processRow(r.table.body[u],r.table.widths,r._offsets.offsets,r.table.body,u,g);addAll(r.positions,y.positions),i.endRow(u,this.writer,y.pageBreaks)}i.endTable(this.writer)},LayoutBuilder.prototype.processLeaf=function(r){var i=this.buildNextLine(r);i&&(r.tocItem||r.id)&&(i._node=r);var o=i?i.getHeight():0,u=r.maxHeight||-1;if(i){var p=W(r);p&&(i.id=p)}if(r._tocItemRef&&(i._pageNodeRef=r._tocItemRef),r._pageRef&&(i._pageNodeRef=r._pageRef._nodeRef),i&&i.inlines&&O(i.inlines))for(var g=0,y=i.inlines.length;g<y;g++)i.inlines[g]._tocItemRef&&(i.inlines[g]._pageNodeRef=i.inlines[g]._tocItemRef),i.inlines[g]._pageRef&&(i.inlines[g]._pageNodeRef=i.inlines[g]._pageRef._nodeRef);for(;i&&(-1===u||o<u);){var w=this.writer.addLine(i);r.positions.push(w),(i=this.buildNextLine(r))&&(o+=i.getHeight())}},LayoutBuilder.prototype.processToc=function(r){r.toc.title&&this.processNode(r.toc.title),r.toc._table&&this.processNode(r.toc._table)},LayoutBuilder.prototype.buildNextLine=function(r){function cloneInline(r){var i=r.constructor();for(var o in r)i[o]=r[o];return i}if(!r._inlines||0===r._inlines.length)return null;for(var i=new k(this.writer.context().availableWidth),o=new j(null),u=!1;r._inlines&&r._inlines.length>0&&(i.hasEnoughSpaceForInline(r._inlines[0],r._inlines.slice(1))||u);){var p=!1,g=r._inlines.shift();if(u=!1,!g.noWrap&&g.text.length>1&&g.width>i.getAvailableWidth()){var y=g.width/g.text.length,w=Math.floor(i.getAvailableWidth()/y);if(w<1&&(w=1),w<g.text.length){var _=cloneInline(g);_.text=g.text.substr(w),g.text=g.text.substr(0,w),_.width=o.widthOfString(_.text,_.font,_.fontSize,_.characterSpacing,_.fontFeatures),g.width=o.widthOfString(g.text,g.font,g.fontSize,g.characterSpacing,g.fontFeatures),r._inlines.unshift(_),p=!0}}i.addInline(g),u=g.noNewLine&&!p}return i.lastLineInParagraph=0===r._inlines.length,i},LayoutBuilder.prototype.processImage=function(r){var i=this.writer.addImage(r);r.positions.push(i)},LayoutBuilder.prototype.processSVG=function(r){var i=this.writer.addSVG(r);r.positions.push(i)},LayoutBuilder.prototype.processCanvas=function(r){var i=r._minHeight;void 0===r.absolutePosition&&this.writer.context().availableHeight<i&&this.writer.moveToNextPage(),this.writer.alignCanvas(r),r.canvas.forEach((function(i){var o=this.writer.addVector(i);r.positions.push(o)}),this),this.writer.context().moveDown(i)},LayoutBuilder.prototype.processQr=function(r){var i=this.writer.addQr(r);r.positions.push(i)},r.exports=LayoutBuilder},4775:function(r){"use strict";function Line(r){this.maxWidth=r,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}Line.prototype.getAscenderHeight=function(){var r=0;return this.inlines.forEach((function(i){r=Math.max(r,i.font.ascender/1e3*i.fontSize)})),r},Line.prototype.hasEnoughSpaceForInline=function(r,i){if(i=i||[],0===this.inlines.length)return!0;if(this.newLineForced)return!1;var o=r.width,u=r.trailingCut||0;if(r.noNewLine)for(var p=0,g=i.length;p<g;p++){var y=i[p];if(o+=y.width,u+=y.trailingCut||0,!y.noNewLine)break}return this.inlineWidths+o-this.leadingCut-u<=this.maxWidth},Line.prototype.addInline=function(r){0===this.inlines.length&&(this.leadingCut=r.leadingCut||0),this.trailingCut=r.trailingCut||0,r.x=this.inlineWidths-this.leadingCut,this.inlines.push(r),this.inlineWidths+=r.width,r.lineEnd&&(this.newLineForced=!0)},Line.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},Line.prototype.getAvailableWidth=function(){return this.maxWidth-this.getWidth()},Line.prototype.getHeight=function(){var r=0;return this.inlines.forEach((function(i){r=Math.max(r,i.height||0)})),r},r.exports=Line},2912:function(r,i,o){"use strict";var u=o(6225).isUndefined,p=o(1196);function PageElementWriter(r,i){this.transactionLevel=0,this.repeatables=[],this.tracker=i,this.writer=new p(r,i)}function fitOnPage(r,i){var o=i(r);return o||(r.moveToNextPage(),o=i(r)),o}PageElementWriter.prototype.addLine=function(r,i,o){return fitOnPage(this,(function(u){return u.writer.addLine(r,i,o)}))},PageElementWriter.prototype.addImage=function(r,i){return fitOnPage(this,(function(o){return o.writer.addImage(r,i)}))},PageElementWriter.prototype.addSVG=function(r,i){return fitOnPage(this,(function(o){return o.writer.addSVG(r,i)}))},PageElementWriter.prototype.addQr=function(r,i){return fitOnPage(this,(function(o){return o.writer.addQr(r,i)}))},PageElementWriter.prototype.addVector=function(r,i,o,u){return this.writer.addVector(r,i,o,u)},PageElementWriter.prototype.beginClip=function(r,i){return this.writer.beginClip(r,i)},PageElementWriter.prototype.endClip=function(){return this.writer.endClip()},PageElementWriter.prototype.alignCanvas=function(r){this.writer.alignCanvas(r)},PageElementWriter.prototype.addFragment=function(r,i,o,u){this.writer.addFragment(r,i,o,u)||(this.moveToNextPage(),this.writer.addFragment(r,i,o,u))},PageElementWriter.prototype.moveToNextPage=function(r){var i=this.writer.context.moveToNextPage(r);this.repeatables.forEach((function(r){u(r.insertedOnPages[this.writer.context.page])?(r.insertedOnPages[this.writer.context.page]=!0,this.writer.addFragment(r,!0)):this.writer.context.moveDown(r.height)}),this),this.writer.tracker.emit("pageChanged",{prevPage:i.prevPage,prevY:i.prevY,y:this.writer.context.y})},PageElementWriter.prototype.beginUnbreakableBlock=function(r,i){0==this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(r,i))},PageElementWriter.prototype.commitUnbreakableBlock=function(r,i){if(0==--this.transactionLevel){var o=this.writer.context;this.writer.popContext();var u=o.pages.length;if(u>0){var p=o.pages[0];if(p.xOffset=r,p.yOffset=i,u>1)if(void 0!==r||void 0!==i)p.height=o.getCurrentPage().pageSize.height-o.pageMargins.top-o.pageMargins.bottom;else{p.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var g=0,y=this.repeatables.length;g<y;g++)p.height-=this.repeatables[g].height}else p.height=o.y;void 0!==r||void 0!==i?this.writer.addFragment(p,!0,!0,!0):this.addFragment(p)}}},PageElementWriter.prototype.currentBlockToRepeatable=function(){var r=this.writer.context,i={items:[]};return r.pages[0].items.forEach((function(r){i.items.push(r)})),i.xOffset=this.originalX,i.height=r.y,i.insertedOnPages=[],i},PageElementWriter.prototype.pushToRepeatables=function(r){this.repeatables.push(r)},PageElementWriter.prototype.popFromRepeatables=function(){this.repeatables.pop()},PageElementWriter.prototype.context=function(){return this.writer.context},r.exports=PageElementWriter},6079:function(r,i,o){"use strict";var u=function _interopDefault(r){return r&&"object"==typeof r&&"default"in r?r.default:r}(o(5219));r.exports={getEngineInstance:function getEngineInstance(){return u},createPdfDocument:function createPdfDocument(r){return new u(r=r||{})}}},8617:function(r,i,o){"use strict";var u=o(6079),p=o(2249),g=o(2678),y=o(4762),w=o(3090),_=o(7601),x=o(3497),k=o(1350),P=o(6225).isFunction,O=o(6225).isString,I=o(6225).isNumber,B=o(6225).isBoolean,R=o(6225).isArray,D=o(6225).isUndefined,N=o(6225).isPattern,W=o(6225).getPattern,U=o(8071);function PdfPrinter(r){this.fontDescriptors=r}function createMetadata(r){function standardizePropertyKey(r){var i=r.charAt(0).toUpperCase()+r.slice(1);return-1!==["Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped"].indexOf(i)?i:r.replace(/\s+/g,"")}var i={Producer:"pdfmake",Creator:"pdfmake"};if(r.info)for(var o in r.info){var u=r.info[o];u&&(i[o=standardizePropertyKey(o)]=u)}return i}function fixPageMargins(r){if(I(r))r={left:r,right:r,top:r,bottom:r};else if(R(r))if(2===r.length)r={left:r[0],top:r[1],right:r[0],bottom:r[1]};else{if(4!==r.length)throw"Invalid pageMargins definition";r={left:r[0],top:r[1],right:r[2],bottom:r[3]}}return r}function updatePageOrientationInOptions(r,i){var o=i.options.size[0]>i.options.size[1]?"landscape":"portrait";if(r.pageSize.orientation!==o){var u=i.options.size[0],p=i.options.size[1];i.options.size=[p,u]}}function offsetText(r,i){var o=r;return i.sup&&(o-=.75*i.fontSize),i.sub&&(o+=.35*i.fontSize),o}function renderLine(r,i,o,u,p){function preparePageNodeRefLine(r,i){var o,u,p=new k(null);if(D(r.positions))throw"Page reference id not found";var g=r.positions[0].pageNumber.toString();switch(i.text=g,o=p.widthOfString(i.text,i.font,i.fontSize,i.characterSpacing,i.fontFeatures),u=i.width-o,i.width=o,i.alignment){case"right":i.x+=u;break;case"center":i.x+=u/2}}r._pageNodeRef&&preparePageNodeRefLine(r._pageNodeRef,r.inlines[0]),i=i||0,o=o||0;var g=r.getHeight(),y=g-r.getAscenderHeight();x.drawBackground(r,i,o,u,p);for(var w=0,_=r.inlines.length;w<_;w++){var P=r.inlines[w],O=g-P.font.ascender/1e3*P.fontSize-y;P._pageNodeRef&&preparePageNodeRefLine(P._pageNodeRef,P);var B={lineBreak:!1,textWidth:P.width,characterSpacing:P.characterSpacing,wordCount:1,link:P.link};P.linkToDestination&&(B.goTo=P.linkToDestination),r.id&&0===w&&(B.destination=r.id),P.fontFeatures&&(B.features=P.fontFeatures);var R=I(P.opacity)?P.opacity:1;p.opacity(R),p.fill(P.color||"black"),p._font=P.font,p.fontSize(P.fontSize);var N=offsetText(o+O,P);if(p.text(P.text,i+P.x,N,B),P.linkToPage){p.ref({Type:"Action",S:"GoTo",D:[P.linkToPage,0,0]}).end();p.annotate(i+P.x,N,P.width,P.height,{Subtype:"Link",Dest:[P.linkToPage-1,"XYZ",null,null,null]})}}x.drawDecorations(r,i,o,p)}function renderWatermark(r,i){var o=r.watermark;i.fill(o.color),i.opacity(o.opacity),i.save(),i.rotate(o.angle,{origin:[i.page.width/2,i.page.height/2]});var u=i.page.width/2-o._size.size.width/2,p=i.page.height/2-o._size.size.height/2;i._font=o.font,i.fontSize(o.fontSize),i.text(o.text,u,p,{lineBreak:!1}),i.restore()}function renderVector(r,i,o){o.lineWidth(r.lineWidth||1),r.dash?o.dash(r.dash.length,{space:r.dash.space||r.dash.length,phase:r.dash.phase||0}):o.undash(),o.lineJoin(r.lineJoin||"miter"),o.lineCap(r.lineCap||"butt");var u=null;switch(r.type){case"ellipse":o.ellipse(r.x,r.y,r.r1,r.r2),r.linearGradient&&(u=o.linearGradient(r.x-r.r1,r.y,r.x+r.r1,r.y));break;case"rect":r.r?o.roundedRect(r.x,r.y,r.w,r.h,r.r):o.rect(r.x,r.y,r.w,r.h),r.linearGradient&&(u=o.linearGradient(r.x,r.y,r.x+r.w,r.y));break;case"line":o.moveTo(r.x1,r.y1),o.lineTo(r.x2,r.y2);break;case"polyline":if(0===r.points.length)break;o.moveTo(r.points[0].x,r.points[0].y);for(var p=1,g=r.points.length;p<g;p++)o.lineTo(r.points[p].x,r.points[p].y);if(r.points.length>1){var y=r.points[0],w=r.points[r.points.length-1];(r.closePath||y.x===w.x&&y.y===w.y)&&o.closePath()}break;case"path":o.path(r.d)}if(r.linearGradient&&u){var _=1/(r.linearGradient.length-1);for(p=0;p<r.linearGradient.length;p++)u.stop(p*_,r.linearGradient[p]);r.color=u}N(r.color)&&(r.color=W(r.color,i));var x=I(r.fillOpacity)?r.fillOpacity:1,k=I(r.strokeOpacity)?r.strokeOpacity:1;r.color&&r.lineColor?(o.fillColor(r.color,x),o.strokeColor(r.lineColor,k),o.fillAndStroke()):r.color?(o.fillColor(r.color,x),o.fill()):(o.strokeColor(r.lineColor||"black",k),o.stroke())}function renderImage(r,i,o,u){var p=I(r.opacity)?r.opacity:1;if(u.opacity(p),r.cover){var g=r.cover.align||"center",y=r.cover.valign||"center",w=r.cover.width?r.cover.width:r.width,_=r.cover.height?r.cover.height:r.height;u.save(),u.rect(r.x,r.y,w,_).clip(),u.image(r.image,r.x,r.y,{cover:[w,_],align:g,valign:y}),u.restore()}else u.image(r.image,r.x,r.y,{width:r._width,height:r._height});r.link&&u.link(r.x,r.y,r._width,r._height,r.link),r.linkToPage&&(u.ref({Type:"Action",S:"GoTo",D:[r.linkToPage,0,0]}).end(),u.annotate(r.x,r.y,r._width,r._height,{Subtype:"Link",Dest:[r.linkToPage-1,"XYZ",null,null,null]})),r.linkToDestination&&u.goTo(r.x,r.y,r._width,r._height,r.linkToDestination)}function renderSVG(r,i,o,u,p){var g=Object.assign({width:r._width,height:r._height,assumePt:!0},r.options);g.fontCallback=function(i,o,u){var g=i.split(",").map((function(r){return r.trim().replace(/('|")/g,"")})),y=function(r,i,o){for(var u=0;u<i.length;u++){var p=i[u].toLowerCase();for(var g in r)if(g.toLowerCase()===p)return g}return o}(p.fonts,g,r.font||"Roboto"),w=p.getFontFile(y,o,u);if(null===w){var _=p.getFontType(o,u);throw new Error("Font '"+y+"' in style '"+_+"' is not defined in the font section of the document definition.")}return w},U(u,r.svg,r.x,r.y,g)}function beginClip(r,i){i.save(),i.addContent(r.x+" "+r.y+" "+r.width+" "+r.height+" re"),i.clip()}function endClip(r){r.restore()}PdfPrinter.prototype.createPdfKitDocument=function(r,i){i=i||{},r.version=r.version||"1.3",r.compress=!B(r.compress)||r.compress,r.images=r.images||{},r.pageMargins=void 0!==r.pageMargins&&null!==r.pageMargins?r.pageMargins:40;var o=function fixPageSize(r,i){function isNeedSwapPageSizes(r){return!!O(r)&&("portrait"===(r=r.toLowerCase())&&o.width>o.height||"landscape"===r&&o.width<o.height)}r&&"auto"===r.height&&(r.height=1/0);var o=function pageSize2widthAndHeight(r){if(O(r)){var i=y[r.toUpperCase()];if(!i)throw"Page size "+r+" not recognized";return{width:i[0],height:i[1]}}return r}(r||"A4");isNeedSwapPageSizes(i)&&(o={width:o.height,height:o.width});return o.orientation=o.width>o.height?"landscape":"portrait",o}(r.pageSize,r.pageOrientation),x={size:[o.width,o.height],pdfVersion:r.version,compress:r.compress,userPassword:r.userPassword,ownerPassword:r.ownerPassword,permissions:r.permissions,fontLayoutCache:!B(i.fontLayoutCache)||i.fontLayoutCache,bufferPages:i.bufferPages||!1,autoFirstPage:!1,info:createMetadata(r),font:null};this.pdfKitDoc=u.createPdfDocument(x),this.fontProvider=new p(this.fontDescriptors,this.pdfKitDoc);var k=new g(o,fixPageMargins(r.pageMargins),new w(this.pdfKitDoc,r.images),new _);!function registerDefaultTableLayouts(r){r.registerTableLayouts({noBorders:{hLineWidth:function(r){return 0},vLineWidth:function(r){return 0},paddingLeft:function(r){return r?4:0},paddingRight:function(r,i){return r<i.table.widths.length-1?4:0}},headerLineOnly:{hLineWidth:function(r,i){return 0===r||r===i.table.body.length?0:r===i.table.headerRows?2:0},vLineWidth:function(r){return 0},paddingLeft:function(r){return 0===r?0:8},paddingRight:function(r,i){return r===i.table.widths.length-1?0:8}},lightHorizontalLines:{hLineWidth:function(r,i){return 0===r||r===i.table.body.length?0:r===i.table.headerRows?2:1},vLineWidth:function(r){return 0},hLineColor:function(r){return 1===r?"black":"#aaa"},paddingLeft:function(r){return 0===r?0:8},paddingRight:function(r,i){return r===i.table.widths.length-1?0:8}}})}(k),i.tableLayouts&&k.registerTableLayouts(i.tableLayouts);var R=k.layoutDocument(r.content,this.fontProvider,r.styles||{},r.defaultStyle||{fontSize:12,font:"Roboto"},r.background,r.header,r.footer,r.images,r.watermark,r.pageBreakBefore),D=r.maxPagesNumber||-1;if(I(D)&&D>-1&&(R=R.slice(0,D)),o.height===1/0){var N=function calculatePageHeight(r,i){function getItemHeight(r){return P(r.item.getHeight)?r.item.getHeight():r.item._height?r.item._height:"vector"===r.type?void 0!==r.item.y1?r.item.y1>r.item.y2?r.item.y1:r.item.y2:r.item.h:0}function getBottomPosition(r){return(r.item.y||0)+getItemHeight(r)}var o=fixPageMargins(i||40),u=o.top;return r.forEach((function(r){r.items.forEach((function(r){var i=getBottomPosition(r);i>u&&(u=i)}))})),u+=o.bottom}(R,r.pageMargins);this.pdfKitDoc.options.size=[o.width,N]}var W=function createPatterns(r,i){var o={};return Object.keys(r).forEach((function(u){var p=r[u];o[u]=i.pattern(p.boundingBox,p.xStep,p.yStep,p.pattern,p.colored)})),o}(r.patterns||{},this.pdfKitDoc);if(function renderPages(r,i,o,u,p){o._pdfMakePages=r,o.addPage();var g=0;p&&r.forEach((function(r){g+=r.items.length}));var y=0;p=p||function(){};for(var w=0;w<r.length;w++){w>0&&(updatePageOrientationInOptions(r[w],o),o.addPage(o.options));for(var _=r[w],x=0,k=_.items.length;x<k;x++){var P=_.items[x];switch(P.type){case"vector":renderVector(P.item,u,o);break;case"line":renderLine(P.item,P.item.x,P.item.y,u,o);break;case"image":renderImage(P.item,P.item.x,P.item.y,o);break;case"svg":renderSVG(P.item,P.item.x,P.item.y,o,i);break;case"beginClip":beginClip(P.item,o);break;case"endClip":endClip(o)}p(++y/g)}_.watermark&&renderWatermark(_,o)}}(R,this.fontProvider,this.pdfKitDoc,W,i.progressCallback),i.autoPrint){var U=this.pdfKitDoc.ref({Type:"Action",S:"Named",N:"Print"});this.pdfKitDoc._root.data.OpenAction=U,U.end()}return this.pdfKitDoc},r.exports=PdfPrinter},145:function(r){"use strict";for(var i=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]],o=/^\d*$/,u=/^[A-Za-z0-9 $%*+\-./:]*$/,p=/^[A-Z0-9 $%*+\-./:]*$/,g=[],y=[-1],w=0,_=1;w<255;++w)g.push(_),y[_]=w,_=2*_^(_>=128?285:0);var x=[[]];for(w=0;w<30;++w){for(var k=x[w],P=[],O=0;O<=w;++O){var I=O<w?g[k[O]]:0,B=g[(w+(k[O-1]||0))%255];P.push(y[I^B])}x.push(P)}var R={};for(w=0;w<45;++w)R["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(w)]=w;var D=[function(r,i){return(r+i)%2==0},function(r,i){return r%2==0},function(r,i){return i%3==0},function(r,i){return(r+i)%3==0},function(r,i){return((r/2|0)+(i/3|0))%2==0},function(r,i){return r*i%2+r*i%3==0},function(r,i){return(r*i%2+r*i%3)%2==0},function(r,i){return((r+i)%2+r*i%3)%2==0}],needsverinfo=function(r){return r>6},ndatabits=function(r,o){var u=-8&function(r){var o=i[r],u=16*r*r+128*r+64;return needsverinfo(r)&&(u-=36),o[2].length&&(u-=25*o[2].length*o[2].length-10*o[2].length-55),u}(r),p=i[r];return u-=8*p[0][o]*p[1][o]},ndatalenbits=function(r,i){switch(i){case 1:return r<10?10:r<27?12:14;case 2:return r<10?9:r<27?11:13;case 4:return r<10?8:16;case 8:return r<10?8:r<27?10:12}},getmaxdatalen=function(r,i,o){var u=ndatabits(r,o)-4-ndatalenbits(r,i);switch(i){case 1:return 3*(u/10|0)+(u%10<4?0:u%10<7?1:2);case 2:return 2*(u/11|0)+(u%11<6?0:1);case 4:return u/8|0;case 8:return u/13|0}},calculateecc=function(r,i){for(var o=r.slice(0),u=r.length,p=i.length,w=0;w<p;++w)o.push(0);for(w=0;w<u;){var _=y[o[w++]];if(_>=0)for(var x=0;x<p;++x)o[w+x]^=g[(_+i[x])%255]}return o.slice(u)},augumentbch=function(r,i,o,u){for(var p=r<<u,g=i-1;g>=0;--g)p>>u+g&1&&(p^=o<<g);return r<<u|p},maskdata=function(r,i,o){for(var u=D[o],p=r.length,g=0;g<p;++g)for(var y=0;y<p;++y)i[g][y]||(r[g][y]^=u(g,y));return r},putformatinfo=function(r,i,o,u){for(var p=r.length,g=21522^augumentbch(o<<3|u,5,1335,10),y=0;y<15;++y){var w=[p-1,p-2,p-3,p-4,p-5,p-6,p-7,p-8,7,5,4,3,2,1,0][y];r[[0,1,2,3,4,5,7,8,p-7,p-6,p-5,p-4,p-3,p-2,p-1][y]][8]=r[8][w]=g>>y&1}return r},evaluatematrix=function(r){for(var evaluategroup=function(r){for(var i=0,o=0;o<r.length;++o)r[o]>=5&&(i+=r[o]-5+3);for(o=5;o<r.length;o+=2){var u=r[o];r[o-1]==u&&r[o-2]==3*u&&r[o-3]==u&&r[o-4]==u&&(r[o-5]>=4*u||r[o+1]>=4*u)&&(i+=40)}return i},i=r.length,o=0,u=0,p=0;p<i;++p){var g,y=r[p];g=[0];for(var w=0;w<i;){for(_=0;w<i&&y[w];++_)++w;for(g.push(_),_=0;w<i&&!y[w];++_)++w;g.push(_)}o+=evaluategroup(g),g=[0];for(w=0;w<i;){var _;for(_=0;w<i&&r[w][p];++_)++w;for(g.push(_),_=0;w<i&&!r[w][p];++_)++w;g.push(_)}o+=evaluategroup(g);var x=r[p+1]||[];u+=y[0];for(w=1;w<i;++w){var k=y[w];u+=k,y[w-1]==k&&x[w]===k&&x[w-1]===k&&(o+=3)}}return o+=10*(Math.abs(u/i/i-.5)/.05|0)},generate=function(r,o,u,p,g){var y=i[o],w=function(r,i,o,u){var p=[],g=0,y=8,w=o.length,pack=function(r,i){if(i>=y){for(p.push(g|r>>(i-=y));i>=8;)p.push(r>>(i-=8)&255);g=0,y=8}i>0&&(g|=(r&(1<<i)-1)<<(y-=i))},_=ndatalenbits(r,i);switch(pack(i,4),pack(w,_),i){case 1:for(var x=2;x<w;x+=3)pack(parseInt(o.substring(x-2,x+1),10),10);pack(parseInt(o.substring(x-2),10),[0,4,7][w%3]);break;case 2:for(x=1;x<w;x+=2)pack(45*R[o.charAt(x-1)]+R[o.charAt(x)],11);w%2==1&&pack(R[o.charAt(x-1)],6);break;case 4:for(x=0;x<w;++x)pack(o[x],8)}for(pack(0,4),y<8&&p.push(g);p.length+1<u;)p.push(236,17);return p.length<u&&p.push(236),p}(o,u,r,ndatabits(o,p)>>3);w=function(r,i,o){for(var u=[],p=r.length/i|0,g=0,y=i-r.length%i,w=0;w<y;++w)u.push(g),g+=p;for(w=y;w<i;++w)u.push(g),g+=p+1;u.push(g);var _=[];for(w=0;w<i;++w)_.push(calculateecc(r.slice(u[w],u[w+1]),o));var x=[],k=r.length/i|0;for(w=0;w<k;++w)for(var P=0;P<i;++P)x.push(r[u[P]+w]);for(P=y;P<i;++P)x.push(r[u[P+1]-1]);for(w=0;w<o.length;++w)for(P=0;P<i;++P)x.push(_[P][w]);return x}(w,y[1][p],x[y[0][p]]);var _=function(r){for(var o=i[r],u=function(r){return 4*r+17}(r),p=[],g=[],y=0;y<u;++y)p.push([]),g.push([]);var blit=function(r,i,o,u,y){for(var w=0;w<o;++w)for(var _=0;_<u;++_)p[r+w][i+_]=y[w]>>_&1,g[r+w][i+_]=1};for(blit(0,0,9,9,[127,65,93,93,93,65,383,0,64]),blit(u-8,0,8,9,[256,127,65,93,93,93,65,127]),blit(0,u-8,9,8,[254,130,186,186,186,130,254,0,0]),y=9;y<u-8;++y)p[6][y]=p[y][6]=1&~y,g[6][y]=g[y][6]=1;var w=o[2],_=w.length;for(y=0;y<_;++y)for(var x=0===y?_-1:_,k=0===y||y===_-1?1:0;k<x;++k)blit(w[y],w[k],5,5,[31,17,21,17,31]);if(needsverinfo(r)){var P=augumentbch(r,6,7973,12),O=0;for(y=0;y<6;++y)for(k=0;k<3;++k)p[y][u-11+k]=p[u-11+k][y]=P>>O++&1,g[y][u-11+k]=g[u-11+k][y]=1}return{matrix:p,reserved:g}}(o),k=_.matrix,P=_.reserved;if(function(r,i,o){for(var u=r.length,p=0,g=-1,y=u-1;y>=0;y-=2){6==y&&--y;for(var w=g<0?u-1:0,_=0;_<u;++_){for(var x=y;x>y-2;--x)i[w][x]||(r[w][x]=o[p>>3]>>(7&~p)&1,++p);w+=g}g=-g}}(k,P,w),g<0){maskdata(k,P,0),putformatinfo(k,0,p,0);var O=0,I=evaluatematrix(k);for(maskdata(k,P,0),g=1;g<8;++g){maskdata(k,P,g),putformatinfo(k,0,p,g);var B=evaluatematrix(k);I>B&&(I=B,O=g),maskdata(k,P,g)}g=O}return maskdata(k,P,g),putformatinfo(k,0,p,g),k};function generateFrame(r,i){var g={numeric:1,alphanumeric:2,octet:4},y={L:1,M:0,Q:3,H:2},w=(i=i||{}).version||-1,_=y[(i.eccLevel||"L").toUpperCase()],x=i.mode?g[i.mode.toLowerCase()]:-1,k="mask"in i?i.mask:-1;if(x<0)x="string"==typeof r?r.match(o)?1:r.match(p)?2:4:4;else if(1!=x&&2!=x&&4!=x)throw"invalid or unsupported mode";if(r=function(r,i){switch(r){case 1:return i.match(o)?i:null;case 2:return i.match(u)?i.toUpperCase():null;case 4:if("string"==typeof i){for(var p=[],g=0;g<i.length;++g){var y=i.charCodeAt(g);y<128?p.push(y):y<2048?p.push(192|y>>6,128|63&y):y<65536?p.push(224|y>>12,128|y>>6&63,128|63&y):p.push(240|y>>18,128|y>>12&63,128|y>>6&63,128|63&y)}return p}return i}}(x,r),null===r)throw"invalid data format";if(_<0||_>3)throw"invalid ECC level";if(w<0){for(w=1;w<=40&&!(r.length<=getmaxdatalen(w,x,_));++w);if(w>40)throw"too large data for the Qr format"}else if(w<1||w>40)throw"invalid Qr version! should be between 1 and 40";if(-1!=k&&(k<0||k>8))throw"invalid mask";return generate(r,w,x,_,k)}r.exports={measure:function measure(r){var i=function buildCanvas(r,i){var o=[],u=i.background||"#fff",p=i.foreground||"#000",g=generateFrame(r,i),y=g.length,w=Math.floor(i.fit?i.fit/y:5),_=y*w;o.push({type:"rect",x:0,y:0,w:_,h:_,lineWidth:0,color:u});for(var x=0;x<y;++x)for(var k=0;k<y;++k)g[x][k]&&o.push({type:"rect",x:w*k,y:w*x,w:w,h:w,lineWidth:0,color:p});return{canvas:o,size:_}}(r.qr,r);return r._canvas=i.canvas,r._width=r._height=r._minWidth=r._maxWidth=r._minHeight=r._maxHeight=i.size,r}}},4762:function(r){"use strict";r.exports={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]}},7597:function(r,i,o){"use strict";var u=o(6225).isString,p=o(6225).isArray,g=o(6225).isUndefined,y=o(6225).isNull;function StyleContextStack(r,i){this.defaultStyle=i||{},this.styleDictionary=r,this.styleOverrides=[]}StyleContextStack.prototype.clone=function(){var r=new StyleContextStack(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach((function(i){r.styleOverrides.push(i)})),r},StyleContextStack.prototype.push=function(r){this.styleOverrides.push(r)},StyleContextStack.prototype.pop=function(r){for(r=r||1;r-- >0;)this.styleOverrides.pop()},StyleContextStack.prototype.autopush=function(r){if(u(r))return 0;var i=[];r.style&&(i=p(r.style)?r.style:[r.style]);for(var o=0,w=i.length;o<w;o++)this.push(i[o]);var _={},x=!1;return["font","fontSize","fontFeatures","bold","italics","alignment","color","columnGap","fillColor","fillOpacity","decoration","decorationStyle","decorationColor","background","lineHeight","characterSpacing","noWrap","markerColor","leadingIndent","sup","sub"].forEach((function(i){g(r[i])||y(r[i])||(_[i]=r[i],x=!0)})),x&&this.push(_),i.length+(x?1:0)},StyleContextStack.prototype.auto=function(r,i){var o=this.autopush(r),u=i();return o>0&&this.pop(o),u},StyleContextStack.prototype.getProperty=function(r){if(this.styleOverrides)for(var i=this.styleOverrides.length-1;i>=0;i--){var o=this.styleOverrides[i];if(u(o)){var p=this.styleDictionary[o];if(p&&!g(p[r])&&!y(p[r]))return p[r]}else if(!g(o[r])&&!y(o[r]))return o[r]}return this.defaultStyle&&this.defaultStyle[r]},r.exports=StyleContextStack},7601:function(r,i,o){"use strict";var u=o(6513);function stripUnits(r){var i=parseFloat(r);if("number"==typeof i&&!isNaN(i))return i}function parseSVG(r){var i;try{i=new u.XmlDocument(r)}catch(r){throw new Error("SVGMeasure: "+r)}if("svg"!==i.name)throw new Error("SVGMeasure: expected <svg> document");return i}function SVGMeasure(){}SVGMeasure.prototype.measureSVG=function(r){var i=parseSVG(r),o=stripUnits(i.attr.width),u=stripUnits(i.attr.height);if((null==o||null==u)&&"string"==typeof i.attr.viewBox){var p=i.attr.viewBox.split(/[,\s]+/);if(4!==p.length)throw new Error("Unexpected svg viewbox format, should have 4 entries but found: '"+i.attr.viewBox+"'");null==o&&(o=stripUnits(p[2])),null==u&&(u=stripUnits(p[3]))}return{width:o,height:u}},SVGMeasure.prototype.writeDimensions=function(r,i){var o=parseSVG(r);return o.attr.width=""+i.width,o.attr.height=""+i.height,o.toString()},r.exports=SVGMeasure},9342:function(r,i,o){"use strict";var u=o(4498),p=o(6225).isFunction,g=o(6225).isNumber;function TableProcessor(r){this.tableNode=r}TableProcessor.prototype.beginTable=function(r){var i,o,p=this;i=this.tableNode,this.offsets=i._offsets,this.layout=i._layout,o=r.context().availableWidth-this.offsets.total,u.buildColumnWidths(i.table.widths,o),this.tableWidth=i._offsets.total+function getTableInnerContentWidth(){var r=0;return i.table.widths.forEach((function(i){r+=i._calcWidth})),r}(),this.rowSpanData=function prepareRowSpanData(){var r=[],i=0,o=0;r.push({left:0,rowSpan:0});for(var u=0,g=p.tableNode.table.body[0].length;u<g;u++){o=p.layout.paddingLeft(u,p.tableNode)+p.layout.paddingRight(u,p.tableNode)+p.layout.vLineWidth(u,p.tableNode)+p.tableNode.table.widths[u]._calcWidth,r[r.length-1].width=o,i+=o,r.push({left:i,rowSpan:0,width:0})}return r}(),this.cleanUpRepeatables=!1,this.headerRows=i.table.headerRows||0,this.rowsWithoutPageBreak=this.headerRows+(i.table.keepWithHeaderRows||0),this.dontBreakRows=i.table.dontBreakRows||!1,this.rowsWithoutPageBreak&&r.beginUnbreakableBlock(),function prepareCellBorders(r){for(var i=0;i<r.length;i++)for(var o=r[i],u=0;u<o.length;u++){var p=o[u];if(p.border){for(var g=p.rowSpan||1,y=p.colSpan||1,w=0;w<g;w++)void 0!==p.border[0]&&w>0&&setBorder(i+w,u,0,p.border[0]),void 0!==p.border[2]&&setBorder(i+w,u+y-1,2,p.border[2]);for(var _=0;_<y;_++)void 0!==p.border[1]&&_>0&&setBorder(i,u+_,1,p.border[1]),void 0!==p.border[3]&&setBorder(i+g-1,u+_,3,p.border[3])}}function setBorder(i,o,u,p){var g=r[i][o];g.border=g.border||{},g.border[u]=p}}(this.tableNode.table.body),this.drawHorizontalLine(0,r)},TableProcessor.prototype.onRowBreak=function(r,i){var o=this;return function(){var r=o.rowPaddingTop+(o.headerRows?0:o.topLineWidth);i.context().availableHeight-=o.reservedAtBottom,i.context().moveDown(r)}},TableProcessor.prototype.beginRow=function(r,i){this.topLineWidth=this.layout.hLineWidth(r,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(r,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(r+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(r,this.tableNode),this.rowCallback=this.onRowBreak(r,i),i.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&i.beginUnbreakableBlock(),this.rowTopY=i.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,i.context().availableHeight-=this.reservedAtBottom,i.context().moveDown(this.rowPaddingTop)},TableProcessor.prototype.drawHorizontalLine=function(r,i,o){var u=this.layout.hLineWidth(r,this.tableNode);if(u){var g,y=this.layout.hLineStyle(r,this.tableNode);y&&y.dash&&(g=y.dash);for(var w,_,x,k=u/2,P=null,O=this.tableNode.table.body,I=0,B=this.rowSpanData.length;I<B;I++){var R=this.rowSpanData[I],D=!R.rowSpan,N=null;if(D&&I<B-1){var W=!1,U=!1,j=!1;r>0&&(U=(w=O[r-1][I]).border?w.border[3]:this.layout.defaultBorder)&&w.borderColor&&(N=w.borderColor[3]),r<O.length&&(W=(_=O[r][I]).border?_.border[1]:this.layout.defaultBorder)&&null==N&&_.borderColor&&(N=_.borderColor[1]),D=W||U}if(w&&w._rowSpanCurrentOffset&&(j=(x=O[r-1-w._rowSpanCurrentOffset][I])&&x.border?x.border[3]:this.layout.defaultBorder)&&x&&x.borderColor&&(N=x.borderColor[3]),null==N&&(N=p(this.layout.hLineColor)?this.layout.hLineColor(r,this.tableNode,I):this.layout.hLineColor),!P&&D&&(P={left:R.left,width:0}),D){var G=0;if(x&&x.colSpan&&j){for(;x.colSpan>G;)P.width+=this.rowSpanData[I+G++].width||0;I+=G-1}else if(w&&w.colSpan&&U){for(;w.colSpan>G;)P.width+=this.rowSpanData[I+G++].width||0;I+=G-1}else if(_&&_.colSpan&&W){for(;_.colSpan>G;)P.width+=this.rowSpanData[I+G++].width||0;I+=G-1}else P.width+=this.rowSpanData[I].width||0}var X=(o||0)+k;D&&P&&P.width&&(i.addVector({type:"line",x1:P.left,x2:P.left+P.width,y1:X,y2:X,lineWidth:u,dash:g,lineColor:N},!1,o),P=null,N=null,w=null,_=null,x=null)}i.context().moveDown(u)}},TableProcessor.prototype.drawVerticalLine=function(r,i,o,u,g,y,w){var _=this.layout.vLineWidth(u,this.tableNode);if(0!==_){var x,k=this.layout.vLineStyle(u,this.tableNode);k&&k.dash&&(x=k.dash);var P,O,I,B=this.tableNode.table.body;if(u>0&&(P=B[y][w])&&P.borderColor&&(P.border?P.border[2]:this.layout.defaultBorder)&&(I=P.borderColor[2]),null==I&&u<B.length&&(O=B[y][u])&&O.borderColor&&(O.border?O.border[0]:this.layout.defaultBorder)&&(I=O.borderColor[0]),null==I&&P&&P._rowSpanCurrentOffset){var R=B[y-P._rowSpanCurrentOffset][w];R.borderColor&&(R.border?R.border[2]:this.layout.defaultBorder)&&(I=R.borderColor[2])}if(null==I&&O&&O._rowSpanCurrentOffset){var D=B[y-O._rowSpanCurrentOffset][u];D.borderColor&&(D.border?D.border[2]:this.layout.defaultBorder)&&(I=D.borderColor[2])}null==I&&(I=p(this.layout.vLineColor)?this.layout.vLineColor(u,this.tableNode,y):this.layout.vLineColor),g.addVector({type:"line",x1:r+_/2,x2:r+_/2,y1:i,y2:o,lineWidth:_,dash:x,lineColor:I},!1,!0),P=null,O=null,I=null}},TableProcessor.prototype.endTable=function(r){this.cleanUpRepeatables&&r.popFromRepeatables()},TableProcessor.prototype.endRow=function(r,i,o){var u,y,w=this;i.tracker.stopTracking("pageChanged",this.rowCallback),i.context().moveDown(this.layout.paddingBottom(r,this.tableNode)),i.context().availableHeight+=this.reservedAtBottom;var _=i.context().page,x=i.context().y,k=function getLineXs(){for(var i=[],o=0,u=0,p=w.tableNode.table.body[r].length;u<p;u++){if(!o){i.push({x:w.rowSpanData[u].left,index:u});var g=w.tableNode.table.body[r][u];o=g._colSpan||g.colSpan||0}o>0&&o--}return i.push({x:w.rowSpanData[w.rowSpanData.length-1].left,index:w.rowSpanData.length-1}),i}(),P=[],O=o&&o.length>0,I=this.tableNode.table.body;if(P.push({y0:this.rowTopY,page:O?o[0].prevPage:_}),O)for(y=0,u=o.length;y<u;y++){var B=o[y];P[P.length-1].y1=B.prevY,P.push({y0:B.y,page:B.prevPage+1})}P[P.length-1].y1=x;for(var R=P[0].y1-P[0].y0===this.rowPaddingTop?1:0,D=P.length;R<D;R++){var N=R<P.length-1,W=R>0&&!this.headerRows,U=W?0:this.topLineWidth,j=P[R].y0,G=P[R].y1;for(N&&(G+=this.rowPaddingBottom),i.context().page!=P[R].page&&(i.context().page=P[R].page,this.reservedAtBottom=0),y=0,u=k.length;y<u;y++){var X,K=!1,Y=!1,J=k[y].index;if(J<I[r].length)K=(X=I[r][J]).border?X.border[0]:this.layout.defaultBorder,Y=X.border?X.border[2]:this.layout.defaultBorder;if(J>0&&!K)K=(X=I[r][J-1]).border?X.border[2]:this.layout.defaultBorder;if(J+1<I[r].length&&!Y)Y=(X=I[r][J+1]).border?X.border[0]:this.layout.defaultBorder;if(K&&this.drawVerticalLine(k[y].x,j-U,G+this.bottomLineWidth,k[y].index,i,r,k[y-1]?k[y-1].index:null),y<u-1){var $=I[r][J].fillColor,ee=I[r][J].fillOpacity;$||($=p(this.layout.fillColor)?this.layout.fillColor(r,this.tableNode,J):this.layout.fillColor),g(ee)||(ee=p(this.layout.fillOpacity)?this.layout.fillOpacity(r,this.tableNode,J):this.layout.fillOpacity);var te=I[r][J].overlayPattern,re=I[r][J].overlayOpacity;if($||te){var ne,ie=K?this.layout.vLineWidth(J,this.tableNode):0;ne=0!==J&&J+1!=I[r].length||Y?Y?this.layout.vLineWidth(J+1,this.tableNode)/2:0:this.layout.vLineWidth(J+1,this.tableNode);var oe=this.dontBreakRows?k[y].x+ie:k[y].x+ie/2,ae=this.dontBreakRows?j:j-U/2,se=k[y+1].x+ne-oe,ce=(this.dontBreakRows?G+this.bottomLineWidth:G+this.bottomLineWidth/2)-ae;$&&i.addVector({type:"rect",x:oe,y:ae,w:se,h:ce,lineWidth:0,color:$,fillOpacity:ee},!1,!0,i.context().backgroundLength[i.context().page]),te&&i.addVector({type:"rect",x:oe,y:ae,w:se,h:ce,lineWidth:0,color:te,fillOpacity:re},!1,!0)}}}N&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(r+1,i,G),W&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(r,i,j)}i.context().page=_,i.context().y=x;var le=this.tableNode.table.body[r];for(y=0,u=le.length;y<u;y++){if(le[y].rowSpan){if(this.rowSpanData[y].rowSpan=le[y].rowSpan,le[y].colSpan&&le[y].colSpan>1)for(var ue=1;ue<le[y].rowSpan;ue++)this.tableNode.table.body[r+ue][y]._colSpan=le[y].colSpan;if(le[y].rowSpan&&le[y].rowSpan>1)for(ue=1;ue<le[y].rowSpan;ue++)this.tableNode.table.body[r+ue][y]._rowSpanCurrentOffset=ue}this.rowSpanData[y].rowSpan>0&&this.rowSpanData[y].rowSpan--}this.drawHorizontalLine(r+1,i),this.headerRows&&r===this.headerRows-1&&(this.headerRepeatable=i.currentBlockToRepeatable()),this.dontBreakRows&&i.tracker.auto("pageChanged",(function(){w.headerRows||!1===w.layout.hLineWhenBroken||w.drawHorizontalLine(r,i)}),(function(){i.commitUnbreakableBlock()})),!this.headerRepeatable||r!==this.rowsWithoutPageBreak-1&&r!==this.tableNode.table.body.length-1||(i.commitUnbreakableBlock(),i.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},r.exports=TableProcessor},3497:function(r,i,o){"use strict";var u=o(6225).isArray,p=o(6225).isPattern,g=o(6225).getPattern;function drawDecoration(r,i,o,u){var p=r.inlines[0],g=function maxInline(){for(var i=0,o=0,u=r.inlines.length;o<u;o++){i=r.inlines[o].fontSize>i?o:i}return r.inlines[i]}(),y=function width(){for(var i=0,o=0,u=r.inlines.length;o<u;o++){var p=r.inlines[o].justifyShift||0;i+=r.inlines[o].width+p}return i}(),w=r.line.getAscenderHeight(),_=g.font.ascender/1e3*g.fontSize,x=g.height-_,k=.5+.12*Math.floor(Math.max(g.fontSize-8,0)/2);switch(r.decoration){case"underline":o+=w+.45*x;break;case"overline":o+=w-.85*_;break;case"lineThrough":o+=w-.25*_;break;default:throw"Unkown decoration : "+r.decoration}if(u.save(),"double"===r.decorationStyle){var P=Math.max(.5,2*k);u.fillColor(r.decorationColor).rect(i+p.x,o-k/2,y,k/2).fill().rect(i+p.x,o+P-k/2,y,k/2).fill()}else if("dashed"===r.decorationStyle){var O=Math.ceil(y/6.8),I=i+p.x;u.rect(I,o,y,k).clip(),u.fillColor(r.decorationColor);for(var B=0;B<O;B++)u.rect(I,o-k/2,3.96,k).fill(),I+=6.8}else if("dotted"===r.decorationStyle){var R=Math.ceil(y/(3*k)),D=i+p.x;u.rect(D,o,y,k).clip(),u.fillColor(r.decorationColor);for(var N=0;N<R;N++)u.rect(D,o-k/2,k,k).fill(),D+=3*k}else if("wavy"===r.decorationStyle){var W=.7,U=Math.ceil(y/1.4)+1,j=i+p.x-1;u.rect(i+p.x,o-1,y,o+1).clip(),u.lineWidth(.24),u.moveTo(j,o);for(var G=0;G<U;G++)u.bezierCurveTo(j+W,o-1,j+1.4,o-1,j+3*W,o).bezierCurveTo(j+2.8,o+1,j+3.5,o+1,j+6*W,o),j+=6*W;u.stroke(r.decorationColor)}else u.fillColor(r.decorationColor).rect(i+p.x,o-k/2,y,k).fill();u.restore()}r.exports={drawBackground:function drawBackground(r,i,o,u,y){for(var w=r.getHeight(),_=0,x=r.inlines.length;_<x;_++){var k=r.inlines[_];if(k.background){var P=k.background;p(k.background)&&(P=g(k.background,u));var O=k.justifyShift||0;y.fillColor(P).rect(i+k.x-O,o,k.width+O,w).fill()}}},drawDecorations:function drawDecorations(r,i,o,p){for(var g=function groupDecorations(r){for(var i=[],o=null,p=0,g=r.inlines.length;p<g;p++){var y=r.inlines[p],w=y.decoration;if(w){u(w)||(w=[w]);for(var _=y.decorationColor||y.color||"black",x=y.decorationStyle||"solid",k=0,P=w.length;k<P;k++){var O=w[k];o&&O===o.decoration&&x===o.decorationStyle&&_===o.decorationColor?o.inlines.push(y):(o={line:r,decoration:O,decorationColor:_,decorationStyle:x,inlines:[y]},i.push(o))}}else o=null}return i}(r),y=0,w=g.length;y<w;y++)drawDecoration(g[y],i,o,p)}}},1350:function(r,i,o){"use strict";var u=o(6225).isString,p=o(6225).isNumber,g=o(6225).isObject,y=o(6225).isArray,w=o(6225).isUndefined,_=o(7337),x=/^(\s)+/g,k=/(\s)+$/g;function TextTools(r){this.fontProvider=r}function splitWords(r,i){var o=[];if(r=r.replace(/\t/g,"    "),i)return o.push({text:r}),o;for(var u,p=new _(r),g=0;u=p.nextBreak();){var y=r.slice(g,u.position);u.required||y.match(/\r?\n$|\r$/)?(y=y.replace(/\r?\n$|\r$/,""),o.push({text:y,lineEnd:!0})):o.push({text:y}),g=u.position}return o}function copyStyle(r,i){for(var o in i=i||{},r=r||{})"text"!=o&&r.hasOwnProperty(o)&&(i[o]=r[o]);return i}function normalizeString(r){return null==r?"":p(r)?r.toString():u(r)?r:r.toString()}function getStyleProperty(r,i,o,u){var p;return void 0!==r[o]&&null!==r[o]?r[o]:i?(i.auto(r,(function(){p=i.getProperty(o)})),null!=p?p:u):u}function widthOfString(r,i,o,u,p){return i.widthOfString(r,o,p)+(u||0)*(r.length-1)}TextTools.prototype.buildInlines=function(r,i){var o,u=function measure(r,i,o){var u=function normalizeTextArray(r,i){function flatten(r){return r.reduce((function(r,i){var o=y(i.text)?flatten(i.text):i,u=[].concat(o).some(Array.isArray);return r.concat(u?flatten(o):o)}),[])}function getOneWord(r,i,o){if(w(i[r]))return null;if(i[r].lineEnd)return null;var u=i[r].text;if(o){var p=splitWords(normalizeString(u),!1);if(w(p[p.length-1]))return null;u=p[p.length-1].text}return u}var o=[];y(r)||(r=[r]);r=flatten(r);for(var u=null,p=0,_=r.length;p<_;p++){var x,k=r[p],P=null,O=getStyleProperty(k||{},i,"noWrap",!1);if(g(k)?(k._textRef&&k._textRef._textNodeRef.text&&(k.text=k._textRef._textNodeRef.text),x=splitWords(normalizeString(k.text),O),P=copyStyle(k)):x=splitWords(normalizeString(k),O),u&&x.length)1===splitWords(normalizeString(u+getOneWord(0,x,O)),!1).length&&(o[o.length-1].noNewLine=!0);for(var I=0,B=x.length;I<B;I++){var R={text:x[I].text};x[I].lineEnd&&(R.lineEnd=!0),copyStyle(P,R),o.push(R)}u=null,p+1<_&&(u=getOneWord(x.length-1,x,O))}return o}(i,o);if(u.length){var p=getStyleProperty(u[0],o,"leadingIndent",0);p&&(u[0].leadingCut=-p,u[0].leadingIndent=p)}return u.forEach((function(i){var u=getStyleProperty(i,o,"font","Roboto"),p=getStyleProperty(i,o,"fontSize",12),g=getStyleProperty(i,o,"fontFeatures",null),y=getStyleProperty(i,o,"bold",!1),w=getStyleProperty(i,o,"italics",!1),_=getStyleProperty(i,o,"color","black"),P=getStyleProperty(i,o,"decoration",null),O=getStyleProperty(i,o,"decorationColor",null),I=getStyleProperty(i,o,"decorationStyle",null),B=getStyleProperty(i,o,"background",null),R=getStyleProperty(i,o,"lineHeight",1),D=getStyleProperty(i,o,"characterSpacing",0),N=getStyleProperty(i,o,"link",null),W=getStyleProperty(i,o,"linkToPage",null),U=getStyleProperty(i,o,"linkToDestination",null),j=getStyleProperty(i,o,"noWrap",null),G=getStyleProperty(i,o,"preserveLeadingSpaces",!1),X=getStyleProperty(i,o,"preserveTrailingSpaces",!1),K=getStyleProperty(i,o,"opacity",1),Y=getStyleProperty(i,o,"sup",!1),J=getStyleProperty(i,o,"sub",!1);(Y||J)&&void 0===i.fontSize&&(p*=.58);var $,ee,te=r.provideFont(u,y,w);i.width=widthOfString(i.text,te,p,D,g),i.height=te.lineHeight(p)*R,i.leadingCut||(i.leadingCut=0),!G&&($=i.text.match(x))&&(i.leadingCut+=widthOfString($[0],te,p,D,g)),!X&&(ee=i.text.match(k))?i.trailingCut=widthOfString(ee[0],te,p,D,g):i.trailingCut=0,i.alignment=getStyleProperty(i,o,"alignment","left"),i.font=te,i.fontSize=p,i.fontFeatures=g,i.characterSpacing=D,i.color=_,i.decoration=P,i.decorationColor=O,i.decorationStyle=I,i.background=B,i.link=N,i.linkToPage=W,i.linkToDestination=U,i.noWrap=j,i.opacity=K,i.sup=Y,i.sub=J})),u}(this.fontProvider,r,i),p=0,_=0;return u.forEach((function(r){p=Math.max(p,r.width-r.leadingCut-r.trailingCut),o||(o={width:0,leadingCut:r.leadingCut,trailingCut:0}),o.width+=r.width,o.trailingCut=r.trailingCut,_=Math.max(_,function getTrimmedWidth(r){return Math.max(0,r.width-r.leadingCut-r.trailingCut)}(o)),r.lineEnd&&(o=null)})),getStyleProperty({},i,"noWrap",!1)&&(p=_),{items:u,minWidth:p,maxWidth:_}},TextTools.prototype.sizeOfString=function(r,i){r=r?r.toString().replace(/\t/g,"    "):"";var o=getStyleProperty({},i,"font","Roboto"),u=getStyleProperty({},i,"fontSize",12),p=getStyleProperty({},i,"fontFeatures",null),g=getStyleProperty({},i,"bold",!1),y=getStyleProperty({},i,"italics",!1),w=getStyleProperty({},i,"lineHeight",1),_=getStyleProperty({},i,"characterSpacing",0),x=this.fontProvider.provideFont(o,g,y);return{width:widthOfString(r,x,u,_,p),height:x.lineHeight(u)*w,fontSize:u,lineHeight:w,ascender:x.ascender/1e3*u,descender:x.descender/1e3*u}},TextTools.prototype.sizeOfRotatedText=function(r,i,o){var u=i*Math.PI/-180,p=this.sizeOfString(r,o);return{width:Math.abs(p.height*Math.sin(u))+Math.abs(p.width*Math.cos(u)),height:Math.abs(p.width*Math.sin(u))+Math.abs(p.height*Math.cos(u))}},TextTools.prototype.widthOfString=function(r,i,o,u,p){return widthOfString(r,i,o,u,p)},r.exports=TextTools},8537:function(r){"use strict";function TraversalTracker(){this.events={}}TraversalTracker.prototype.startTracking=function(r,i){var o=this.events[r]||(this.events[r]=[]);o.indexOf(i)<0&&o.push(i)},TraversalTracker.prototype.stopTracking=function(r,i){var o=this.events[r];if(o){var u=o.indexOf(i);u>=0&&o.splice(u,1)}},TraversalTracker.prototype.emit=function(r){var i=Array.prototype.slice.call(arguments,1),o=this.events[r];o&&o.forEach((function(r){r.apply(this,i)}))},TraversalTracker.prototype.auto=function(r,i,o){this.startTracking(r,i),o(),this.stopTracking(r,i)},r.exports=TraversalTracker},2480:function(){},5832:function(){},9862:function(){},964:function(){},3083:function(r,i,o){"use strict";var u=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],p="undefined"==typeof globalThis?o.g:globalThis;r.exports=function availableTypedArrays(){for(var r=[],i=0;i<u.length;i++)"function"==typeof p[u[i]]&&(r[r.length]=u[i]);return r}},3631:function(r,i,o){var u=o(9742),p=o(4781);function $parcel$interopDefault(r){return r&&r.__esModule?r.default:r}function $parcel$export(r,i,o,u){Object.defineProperty(r,i,{get:o,set:u,enumerable:!0,configurable:!0})}!function $parcel$defineInteropFlag(r){Object.defineProperty(r,"__esModule",{value:!0,configurable:!0})}(r.exports),$parcel$export(r.exports,"getCategory",(()=>$43d7963e56408b24$export$410364bbb673ddbc)),$parcel$export(r.exports,"getCombiningClass",(()=>$43d7963e56408b24$export$c03b919c6651ed55)),$parcel$export(r.exports,"getScript",(()=>$43d7963e56408b24$export$941569448d136665)),$parcel$export(r.exports,"getEastAsianWidth",(()=>$43d7963e56408b24$export$92f6187db8ca6d26)),$parcel$export(r.exports,"getNumericValue",(()=>$43d7963e56408b24$export$7d1258ebb7625a0d)),$parcel$export(r.exports,"isAlphabetic",(()=>$43d7963e56408b24$export$52c8ea63abd07594)),$parcel$export(r.exports,"isDigit",(()=>$43d7963e56408b24$export$727d9dbc4fbb948f)),$parcel$export(r.exports,"isPunctuation",(()=>$43d7963e56408b24$export$a5b49f4dc6a07d2c)),$parcel$export(r.exports,"isLowerCase",(()=>$43d7963e56408b24$export$7b6804e8df61fcf5)),$parcel$export(r.exports,"isUpperCase",(()=>$43d7963e56408b24$export$aebd617640818cda)),$parcel$export(r.exports,"isTitleCase",(()=>$43d7963e56408b24$export$de8b4ee23b2cf823)),$parcel$export(r.exports,"isWhiteSpace",(()=>$43d7963e56408b24$export$3c52dd84024ae72c)),$parcel$export(r.exports,"isBaseForm",(()=>$43d7963e56408b24$export$a11bdcffe109e74b)),$parcel$export(r.exports,"isMark",(()=>$43d7963e56408b24$export$e33ad6871e762338)),$parcel$export(r.exports,"default",(()=>U));var g;g=JSON.parse('{"categories":["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],"combiningClasses":["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],"scripts":["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Osage","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Hanifi_Rohingya","Old_Sogdian","Sogdian","Elymaic","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Newa","Tirhuta","Siddham","Modi","Takri","Ahom","Dogra","Warang_Citi","Nandinagari","Zanabazar_Square","Soyombo","Pau_Cin_Hau","Bhaiksuki","Marchen","Masaram_Gondi","Gunjala_Gondi","Makasar","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Medefaidrin","Miao","Tangut","Nushu","Duployan","SignWriting","Nyiakeng_Puachue_Hmong","Wancho","Mende_Kikakui","Adlam"],"eaw":["N","Na","A","W","H","F"]}');const y=new($parcel$interopDefault(p))($parcel$interopDefault(u).toByteArray("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")),w=Math.log2||(r=>Math.log(r)/Math.LN2),$43d7963e56408b24$var$bits=r=>w(r)+1|0,_=$43d7963e56408b24$var$bits($parcel$interopDefault(g).categories.length-1),x=$43d7963e56408b24$var$bits($parcel$interopDefault(g).combiningClasses.length-1),k=$43d7963e56408b24$var$bits($parcel$interopDefault(g).scripts.length-1),P=$43d7963e56408b24$var$bits($parcel$interopDefault(g).eaw.length-1),O=x+k+P+10,I=k+P+10,B=P+10,R=(1<<_)-1,D=(1<<x)-1,N=(1<<k)-1,W=(1<<P)-1;function $43d7963e56408b24$export$410364bbb673ddbc(r){const i=y.get(r);return $parcel$interopDefault(g).categories[i>>O&R]}function $43d7963e56408b24$export$c03b919c6651ed55(r){const i=y.get(r);return $parcel$interopDefault(g).combiningClasses[i>>I&D]}function $43d7963e56408b24$export$941569448d136665(r){const i=y.get(r);return $parcel$interopDefault(g).scripts[i>>B&N]}function $43d7963e56408b24$export$92f6187db8ca6d26(r){const i=y.get(r);return $parcel$interopDefault(g).eaw[i>>10&W]}function $43d7963e56408b24$export$7d1258ebb7625a0d(r){let i=y.get(r),o=1023&i;if(0===o)return null;if(o<=50)return o-1;if(o<480){return((o>>4)-12)/(1+(15&o))}if(o<768){i=(o>>5)-14;let r=2+(31&o);for(;r>0;)i*=10,r--;return i}{i=(o>>2)-191;let r=1+(3&o);for(;r>0;)i*=60,r--;return i}}function $43d7963e56408b24$export$52c8ea63abd07594(r){const i=$43d7963e56408b24$export$410364bbb673ddbc(r);return"Lu"===i||"Ll"===i||"Lt"===i||"Lm"===i||"Lo"===i||"Nl"===i}function $43d7963e56408b24$export$727d9dbc4fbb948f(r){return"Nd"===$43d7963e56408b24$export$410364bbb673ddbc(r)}function $43d7963e56408b24$export$a5b49f4dc6a07d2c(r){const i=$43d7963e56408b24$export$410364bbb673ddbc(r);return"Pc"===i||"Pd"===i||"Pe"===i||"Pf"===i||"Pi"===i||"Po"===i||"Ps"===i}function $43d7963e56408b24$export$7b6804e8df61fcf5(r){return"Ll"===$43d7963e56408b24$export$410364bbb673ddbc(r)}function $43d7963e56408b24$export$aebd617640818cda(r){return"Lu"===$43d7963e56408b24$export$410364bbb673ddbc(r)}function $43d7963e56408b24$export$de8b4ee23b2cf823(r){return"Lt"===$43d7963e56408b24$export$410364bbb673ddbc(r)}function $43d7963e56408b24$export$3c52dd84024ae72c(r){const i=$43d7963e56408b24$export$410364bbb673ddbc(r);return"Zs"===i||"Zl"===i||"Zp"===i}function $43d7963e56408b24$export$a11bdcffe109e74b(r){const i=$43d7963e56408b24$export$410364bbb673ddbc(r);return"Nd"===i||"No"===i||"Nl"===i||"Lu"===i||"Ll"===i||"Lt"===i||"Lm"===i||"Lo"===i||"Me"===i||"Mc"===i}function $43d7963e56408b24$export$e33ad6871e762338(r){const i=$43d7963e56408b24$export$410364bbb673ddbc(r);return"Mn"===i||"Me"===i||"Mc"===i}var U={getCategory:$43d7963e56408b24$export$410364bbb673ddbc,getCombiningClass:$43d7963e56408b24$export$c03b919c6651ed55,getScript:$43d7963e56408b24$export$941569448d136665,getEastAsianWidth:$43d7963e56408b24$export$92f6187db8ca6d26,getNumericValue:$43d7963e56408b24$export$7d1258ebb7625a0d,isAlphabetic:$43d7963e56408b24$export$52c8ea63abd07594,isDigit:$43d7963e56408b24$export$727d9dbc4fbb948f,isPunctuation:$43d7963e56408b24$export$a5b49f4dc6a07d2c,isLowerCase:$43d7963e56408b24$export$7b6804e8df61fcf5,isUpperCase:$43d7963e56408b24$export$aebd617640818cda,isTitleCase:$43d7963e56408b24$export$de8b4ee23b2cf823,isWhiteSpace:$43d7963e56408b24$export$3c52dd84024ae72c,isBaseForm:$43d7963e56408b24$export$a11bdcffe109e74b,isMark:$43d7963e56408b24$export$e33ad6871e762338}},3480:function(r){"use strict";r.exports=JSON.parse('[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]')},3336:function(r){"use strict";r.exports=JSON.parse('[["0","\\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]')},7348:function(r){"use strict";r.exports=JSON.parse('[["0","\\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]')},4284:function(r){"use strict";r.exports=JSON.parse('[["0","\\u0000",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]')},5633:function(r){"use strict";r.exports=JSON.parse('[["0","\\u0000",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]')},6258:function(r){"use strict";r.exports=JSON.parse('{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}')},4346:function(r){"use strict";r.exports=JSON.parse('[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc","ḿ"],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93],["8135f437",""]]')},7014:function(r){"use strict";r.exports=JSON.parse('[["0","\\u0000",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]')}},i={};function __webpack_require__(o){var u=i[o];if(void 0!==u)return u.exports;var p=i[o]={id:o,loaded:!1,exports:{}};return r[o].call(p.exports,p,p.exports,__webpack_require__),p.loaded=!0,p.exports}return __webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),__webpack_require__.nmd=function(r){return r.paths=[],r.children||(r.children=[]),r},__webpack_require__(2536)}()}));
29
//# sourceMappingURL=pdfmake.min.js.map
30
31
this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
32
  "Roboto-Italic.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAdT4AAACWEdQT1PInCKzAAHXUAAAZfhHU1VChRYO9AACPUgAABX2T1MvMpeDsUwAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAHU7AAAAAxnbHlmJ9ZJigAAOpAAAZd6aGVhZAakHScAAAEcAAAANmhoZWEMnBKaAAABVAAAACRobXR4O9/cTQAAAfgAABR8bG9jYY3Y7xYAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOSJt4gAB0gwAAALAcG9zdP9hAGQAAdTMAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSDPLHDFfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv2v6N/3VCUMIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJA/o3/mwJQwgAAbMAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA5YAZAAAAAAAAAAAAfcAAAH3AAACAABEAnwAyQTHAFIEXABJBa8AugTUADkBWwCsAqgAbQK0/5ADWABrBGcATAGH/48CJQAaAgwANAM0/5AEXABqBFwA+gRcABgEXAA1BFwABQRcAHIEXABtBFwAnQRcAEAEXACUAesAKQGu/5sD8gBCBEIAcAQPADsDqwClBvgAQQUQ/68E1gA7BQ0AcAUYADsEaQA7BEoAOwVJAHQFiQA7AhwASQRIAAcE3gA7BC4AOwbGADsFiQA7BVcAcwTlADsFVwBrBMgAOwScACkEoQCpBQgAYwTxAKUG4gDDBN3/1ASpAKgEpv/sAg8AAAMwAMACD/97Az4ATwOA/4ECZgDQBDkAMQRcAB8EEABGBGAARwQdAEUCswB1BFwAAwRGACAB4wAvAdv/EwPvACAB4wAvBs4AHgRJACAEbQBGBFz/1wRpAEYCoQAgBAEALgKKAEMERwBbA8IAbgXVAIAD2v/FA6z/qgPa/+4CoAA3AeUAIgKg/40FRwBpAeX/8QQ/AFAEg//zBYkAEgQUAEMB3f/4BML/2gM/ANoGGQBeA3kAwwOuAFYETACBBhoAXQOPAPgC5gDoBCYAJgLiAF0C4gBvAm8A1QRm/+YDzAB4AgcApQHt/8gC4gDgA4gAvwOtABEFuQC6Bg8AtQYTAJ4Drf/RB0H/gwQkACgFVwAgBJYAOQSdAB8GjgATBI0AXARvAEQEZgA6BHn/4ASjAEYFcAA2AewALwRSAC4ELgAjAhkAJAVgADUEZgAlB2YAVQcMAEcB7QA0BV0AUgKl/0cFVQBmBHAAQwVlAGMEzQBbAfX/CQQYAD8DpwEYA3MBKAOZAPgDUQEHAeMBDgKZAQECGv+uA6kA3gLlAMMCSP/pAAD9agAA/eoAAP0LAAD99AAA/NsAAPy6Af4BIwPtAPQCEQClBFEARAV5/7IFSABnBRf/xARvAAwFiQBEBG//2wWPAFYFXgCFBSkACgRjAEgEmf/xA+QAhQRmAEUEMAApBAUAigRmACUEawB1AoQAhARN/7gDzgBABKAAYARm/90ELQBKBGUASAQMAIcEPABoBXgAQAVvAE4GZABnBH4AUgQiAGcGGABoBdIAogU8AHMIUP/NCGMARAZRALQFiABCBO4ANgXW/4wHC/+rBJwAJQWJAEQFf//LBOEAlAX+AFsFrQBBBVAAywdNAEIHhABCBeMAigbAAEQE3gA2BTwAdgb6AEkE8f/pBEsARwRwADEDQgAuBK//jQXy/6cD8QAgBHsAMAQyADAEfP/IBcEAMQR6ADAEewAwA7sAYAWhAEkEmgAwBDkAeQZHADAGbAAlBNEAVgYQADEENwAxBC0AMgZWADEEQv+/BEYAIAQtAE4Glf/DBq8AMARwACAEewAwBtMAbgX9AE8ENgAvBvUASgXLAC0Erv+6BCb/ogbWAFsF3gBPBp4AJgW1ACoIwABJB5UALwQE/80Dvf/JBUgAZwRpAEME5ACtA+UAhQVIAGcEZgBDBssAdAX1AFIG0wBuBf0ATwUKAGkEJwBMBNgAQAAA/OcAAP0KAAD+FgAA/jsAAPo3AAD6TgXlAEQE0QAwBDYALwT0ADsEZ//XBEIANQN2ACUEwABEA+cAJQdx/6sGOv+nBXkARASeADAE4wA2BFwALgZaALwFWgB2BdsAOwS+ADAHkwA7BYgAJQf8AEIGvwAlBcEAawSvAFwE+//UBBT/xQb2AKwFNABXBZoAywR9AHkFRgDKBEkAlAVGABwGAACIBJoABATjADYEOQAuBdr/ywTT/8gFhwBEBGYAJQXtADsE0AAwByEAOwYYADEFXQBSBIQAPASE//0Env/5A5n/6QUQ/9QEKf/FBNEALgZiADEGsABIBiYArQUEAGgEKQCwA+kAoAeG/+AGRP/aB74APAZvACME0QBlA/4ATQWCAJsE+gB9BTwAaAXe/8sE1//IAwkA8wP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAABAgAAANUAAAAAAAACLQAaAi0AGgUiAKYGGQCYA4r/XgGOALABjgCJAYz/lwGOANICyAC4AtAAlQKt/5QESAB3BG3/9gKeAKEDsQA4BTsAOAF0AFIHbwCWAlUAXQJVAAQDh//wAuIAjwLiAGQC4gCKAuIAkALiAKIC4gB7AuIAqgNHAH4C4v/cAuIALQLi/6sC4v+8AuL/sgLi/9gC4v/eAuL/8ALi/8kC4v/4BIP/8wYlAAoGXwA5CD8AOwW+AAkF/AAfBFwAUQWtAEMEAwBKBFIACwUf//IFJv/lBbsAzAOxAEsH+wA1BNsA6wTxAH8GAQC2BqwAkgalAJAGQwC+BG0ATQVkACQEi/+tBHAAqwSgAEEH+wBLAf3/FQRfADMEQgBwA/z/0wQZABgD6QBCAkQAdwJ8AHEB9f/kBNcAdQRNAFkEaAB1BqAAdQagAHUEyAB1BmgAKAAAAAAH9f+rCDUAXALY/+oC2ABsAtgAHAPxAGkD8QAnA/EAcAPwAEsD8QBKA/H/9wPxABcD8f/9A/EAvQPxAEYEA//dBAsAdQQz/7cF5gCUBEYAeQRbAEIEBwBuBAAAEgQpAB0EmABGBDsAHgSYAEwEvQAeBdQAHgOZAB4ENAAeA7L/9gHaACsEvgAeBIgATAOvAB4EAAASBBQABgOFABkDkwAeBEb/sASYAEwERv+wA27/0wSqAB4D0v/WBT4AUgTwAH0EzQAOBUkAbQRaAEgHCv/DBxgAHgVKAG4EqQAeBDkAIAT9/4kF3f+vBB8AEgTGACAELQAfBJz/xAQAAFoFAQAeBEgAVgYgAB4GeQAeBPYAUQXNACAELgAgBFoAIAZFAB4EZP/gA/P/+gYY/68EVwAfBOMAHwUPAGoFlwBQBEcAdQSE/7cGMQBtBEgAVQRIAB4FmAAuBKYAQAQfABIEnABGBBQAAAPGAB8H5AAeBIf/3gLY//sC2P/xAtgAFwLYAB0C2AAvAtgACALYADcDewCTAqABCwPIAB4EGv+ZBJ8ASAUjAEQE/QBEA/UAJgUVAEQD8AAmBF0AHgRaAEgEMAAeBGP/pgHvAPwDiQESAAD9KgPSANMD1gAiA/AAzgPXAM0DkwAeA4QBEgODARMC4gCPAuIAZALiAIoC4gCQAuIAogLiAHsC4gCqBVgAgAWDAIEFaABEBbMAgwW2AIMDuAC8BF8AOQQ3/4EEqv/TBEn/1QQOACsDiQEUAYb/vgZxAEwElgA+Ae3/DwRm/6wEZv/jBGb/uARmACwEZgBWBGYAJARmAGYEZgAbBGYAQARmAQ0CAP8JAf//CQH2AC8B9v94AfYALwQwAB4E2gBkBAEAYgRcAB8EEwBEBHAAQwRpACMEfABCBGv/1wR5AEIEHQBGBFwANQRO/78DaACpBLEALAOZ/+kGCv+aA9oAHgSY//QEvQAeBL0AHgH3AAACJQAaBTYALwU2AC8EZAA+BKEAqQKK//QFEP+vBRD/rwUQ/68FEP+vBRD/rwUQ/68FEP+vBQ0AcARpADsEaQA7BGkAOwRpADsCHABJAhwASQIcAEkCHABJBYkAOwVXAHMFVwBzBVcAcwVXAHMFVwBzBQgAYwUIAGMFCABjBQgAYwSpAKgEOQAxBDkAMQQ5ADEEOQAxBDkAMQQ5ADEEOQAxBBAARgQdAEUEHQBFBB0ARQQdAEUB7AAvAewALwHsAC8B7AAvBEkAIARtAEYEbQBGBG0ARgRtAEYEbQBGBEcAWwRHAFsERwBbBEcAWwOs/6oDrP+qBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBQ0AcAQQAEYFDQBwBBAARgUNAHAEEABGBQ0AcAQQAEYFGAA7BPYARwRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUFSQB0BFwAAwVJAHQEXAADBUkAdARcAAMFSQB0BFwAAwWJADsERgAgAhwASQHsABECHABJAewALgIcAEkB7AAvAhz/iwHj/20CHABJBmQASQO+AC8ESAAHAfX/CQTeADsD7wAgBC4AOwHjAC8ELgA7AeP/ogQuADsCeQAvBC4AOwK/AC8FiQA7BEkAIAWJADsESQAgBYkAOwRJACAESQAgBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBMgAOwKhACAEyAA7AqH/nwTIADsCoQAgBJwAKQQBAC4EnAApBAEALgScACkEAQAuBJwAKQQBAC4EnAApBAEALgShAKkCigBDBKEAqQKKAEMEoQCpArIAQwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwUIAGMERwBbBQgAYwRHAFsFCABjBEcAWwbiAMMF1QCABKkAqAOs/6oEqQCoBKb/7APa/+4Epv/sA9r/7gSm/+wD2v/uB0H/gwaOABMFVwAgBGYAOgRd/68EXf+vBAcAbgRj/6YEY/+mBGP/pgRj/6YEY/+mBGP/pgRj/6YEWgBIA8gAHgPIAB4DyAAeA8gAHgHaACsB2gArAdoAKwHaACsEvQAeBJgATASYAEwEmABMBJgATASYAEwEWwBCBFsAQgRbAEIEWwBCBAsAdQRj/6YEY/+mBGP/pgRaAEgEWgBIBFoASARaAEgEXQAeA8gAHgPIAB4DyAAeA8gAHgPIAB4EiABMBIgATASIAEwEiABMBL4AHgHaAA4B2gArAdoAKwHk/4IB2gArA7L/9gQ0AB4DmQAeA5kAHgOZAB4DmQAeBL0AHgS9AB4EvQAeBJgATASYAEwEmABMBCkAHQQpAB0EKQAdBAAAEgQAABIEAAASBAAAEgQHAG4EBwBuBAcAbgRbAEIEWwBCBFsAQgRbAEIEWwBCBFsAQgXmAJQECwB1BAsAdQQD/90EA//dBAP/3QUQ/68EzQADBe0AEQKAABcFawBrBQ3/7QU9AB4ChAAgBRD/rwTWADsEaQA7BKb/7AWJADsCHABJBN4AOwbGADsFiQA7BVcAcwTlADsEoQCpBKkAqATd/9QCHABJBKkAqARjAEgEMAApBGYAJQKEAIQEPABoBFIALgRtAEYEZv/mA8IAbgRO/78ChABlBDwAaARtAEYEPABoBmQAZwRpADsEUQBEBJwAKQIcAEkCHABJBEgABwT9AEQE3gA7BOEAlAUQ/68E1gA7BFEARARpADsFiQBEBsYAOwWJADsFVwBzBYkARATlADsFDQBwBKEAqQTd/9QEOQAxBB0ARQR7ADAEbQBGBFz/1wQQAEYDrP+qA9r/xQQdAEUDQgAuBAEALgHjAC8B7AAvAdv/EwQyADADrP+qBuIAwwXVAIAG4gDDBdUAgAbiAMMF1QCABKkAqAOs/6oBWwCsAnwAyQQAAEQB9f8JAY4AiQbGADsGzgAeBRD/rwQ5ADEEaQA7BYkARAQdAEUEewAwBV4AhQVvAE4E5ACtA+UAhQgZAEYJAwBzBJwAJQPxACAFDQBwBBAARgSpAKgD5ACFAhwASQcL/6sF8v+nAhwASQUQ/68EOQAxBRD/rwQ5ADEHQf+DBo4AEwRpADsEHQBFBV0AUgQYAD8EGAA/Bwv/qwXy/6cEnAAlA/EAIAWJAEQEewAwBYkARAR7ADAFVwBzBG0ARgVIAGcEaQBDBUgAZwRpAEMFPAB2BC0AMgThAJQDrP+qBOEAlAOs/6oE4QCUA6z/qgVQAMsEOQB5BsAARAYQADEEYABHBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBRD/rwQ5ADEFEP+vBDkAMQUQ/68EOQAxBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQRpADsEHQBFBGkAOwQdAEUEaQA7BB0ARQIcAEkB7AAvAhwADQHj//AFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVXAHMEbQBGBVcAcwRtAEYFVwBzBG0ARgVVAGYEcABDBVUAZgRwAEMFVQBmBHAAQwVVAGYEcABDBVUAZgRwAEMFCABjBEcAWwUIAGMERwBbBWUAYwTNAFsFZQBjBM0AWwVlAGMEzQBbBWUAYwTNAFsFZQBjBM0AWwSpAKgDrP+qBKkAqAOs/6oEqQCoA6z/qgR+AAAEoQCpA7sAYAVQAMsEOQB5BFEARANCAC4GAACIBJoABARGACAE3gAsBN4ALARRABEDQv/nBREAWAQJADoEqQCoA+QAXgTd/9QD2v/FBDAAKQRK/9cGGQCYBFwAGARcADUEXAAFBFwAcgRwAIEEhABUBHAAlASEAH4FSQB0BFwAAwWJADsESQAgBRD/rwQ5ADEEaQA7BB0ARQIc/+AB7P+NBVcAcwRtAEYEyAA7AqEAIAUIAGMERwBbBIb/sQTWADsEXAAfBRgAOwRgAEcFGAA7BGAARwWJADsERgAgBN4AOwPvACAE3gA7A+8AIAQuADsB4//wBsYAOwbOAB4FiQA7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AAD//wAr/+0FcQSNBCYB8wAAAAcB8gHaAAD///+aAAAGAAYABiYChAAAAQcAdQKXAAAAC7YGGQ8BAU1WACs0AP////T/xgSjBh4GJgKGAAABBwB1AYIAHgALtgMwEQEBW1YAKzQA//8AEv38A+sEngYmAekAAAAHAcoA4v6e//8AlAAABikGHgYmAeUAAAEHAEQBpQAeAAu2BBgKAQFrVgArNAD//wCUAAAGKQYeBiYB5QAAAQcAdQIxAB4AC7YEFgoBAWtWACs0AP//AJQAAAYpBeYGJgHlAAABBwBqAXEAHgANtwUEHwoBAYRWACs0NAD//wB1AAAEZQYeBiYB4wAAAAcARACwAB7///+v/k4EiwWwBiYAJQAAAQcApAFmAAAAC7YDDgUBATlWACs0AP//ADH+TgPHBFAGJgBFAAABBwCkALQAAAALtgI7MQAATVYAKzQA//8AO/5YBLEFsAYmACkAAAEHAKQBJwAKAAu2BBACAABDVgArNAD//wBF/k4D2gRRBiYASQAAAQcApAD+AAAAC7YBLAAAAE1WACs0AP///6b+TgPjBI0GJgJDAAAABwCkAQsAAP//AB7+VgPwBI0GJgI4AAAABwCkANcACP////D+qgGfBDoGJgCNAAABBwCtAzYACgAOtAEHAgEBuP9/sFYAKzQAAAAAAA8AugADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAAwAagADAAEECQADABoAdgADAAEECQAEABoAdgADAAEECQAFACYAkAADAAEECQAGABoAtgADAAEECQAHAEAA0AADAAEECQAIAAwBEAADAAEECQAJACYBHAADAAEECQALABQBQgADAAEECQAMABQBQgADAAEECQANAFwBVgADAAEECQAOAFQBsgADAAEECQAZAAwAXgBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAA1ADsAIAAyADAAMgAyAFIAbwBiAG8AdABvAC0ASQB0AGEAbABp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As//8wLR//MC0//zAuH/8wLj//MC5f/zAuf/8wMJ//MDC//zAw3/8wM+//MDm//zA6j/8wPO//MD0f/zA/7/8wQB//MEHP/zBB7/8wQg//MEW//zBF3/8wRf//MEYf/zBGP/8wRl//MEZ//zBGn/8wRr//MEbf/zBG//8wRx//MEsP/zBMn/8wBAAEf/7ABI/+wASf/sAEv/7ABV/+wAlP/sAJn/7AC7/+wAyP/sAMn/7AD3/+wBA//sAR7/7AEi/+wBQv/sAWD/7AFh/+wBa//sArL/7AKz/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/oAuT/6ALm/+gC6P/oA6//6APV/+gD2f/oA9z/6APsABAD7QAQA/AAEAP3/+gD/f/oBAL/6AQQ/+gEEv/oBBP/6AQf/+gELv/oBEj/6ARK/+gETP/oBE7/6ARQ/+gEUv/oBFT/6ARW/+gEav/oBGz/6ARu/+gEcv/oBK3/6AS6/+gEvP/oAE8ARwAMAEgADABJAAwASwAMAFUADACUAAwAmQAMALsADADIAAwAyQAMAO0AOgDyABgA9v/jAPcADAD5//cA/AAAAP4AAAEDAAwBBAAYAR4ADAEiAAwBOv/iAUIADAFI//cBSv/jAVEAGAFgAAwBYQAMAWsADAFt/+MBcAAYArIADAKzAAwCtAAMArUADAK2AAwCzgAMAtAADALSAAwC1AAMAtYADALYAAwC2gAMAtwADALeAAwC4AAMAuIADALkAAwC5gAMAugADAOvAAwD1QAMA9kADAPcAAwD9wAMA/0ADAQCAAwEEAAMBBIADAQTAAwEHwAMBCv/9wQuAAwESAAMBEoADARMAAwETgAMBFAADARSAAwEVAAMBFYADARqAAwEbAAMBG4ADARyAAwEi//3BK0ADAS6AAwEvAAMAFMAOP++AFEAAABSAAAAVAAAAFr/7wBd/+8Avf/vAMEAAADS/74A1v++AOb/yQDsAAAA8AAAAPEAAADzAAAA9AAAAPUAAAD2/98A+AAAAPoAAAD7AAAA/gAAAQAAAAEFAAABCf/tARr/7wEg/+sBKwAAATYAAAE5/74BOv/fATwAAAE+AAABRf++AUz/6QFTAAABVQAAAVcAAAFcAAABY//1AW3/4AK7AAACxf/vAsb/7wMDAAADBQAAAwcAAAMIAAADH/++AyH/vgMj/74DNP/vA7EAAAO3/+8D0v++A9YAAAPYAAAD2v/vA90AAAPiAAAD4//vA+v/7wPyAAAD+AAAA/z/7wQE/+8EGQAABBsAAAQl/+8EJ//vBCn/7wQtAAAEgv/vBIT/7wSG/+8EiP++BI0AAASpAAAExgAABMgAAATQ/74E1P/vBNb/7wBoADj+9QA6/8gAPP/wAD3/rQBRAAAAUgAAAFQAAADBAAAA0v71ANT/9QDW/vUA2v/wAN3/9QDe/+sA4f/nAOb/wwDsAAAA8AAAAPEAAADzAAAA9AAAAPUAAAD2/88A+AAAAPoAAAD7AAAA/gAAAQAAAAEFAAABGf/IASsAAAEz//ABNgAAATn+9QE6/84BPAAAAT4AAAFD//ABRf71AUf/5wFJ/+cBTP/fAVD/9QFTAAABVQAAAVcAAAFcAAABXf/wAWL/0QFk/+wBZv/1AWz/oAFt/9EBb//1Aqr/rQK7AAADAwAAAwUAAAMHAAADCAAAAx/+9QMh/vUDI/71AzP/rQM1/60DnP+tA6v/rQOs//ADrv+tA7EAAAPG/+sD0v71A9P/8APWAAAD2AAAA90AAAPiAAAD6v+tA/IAAAP4AAAD+//IBAP/rQQG//AEFP/wBBkAAAQbAAAEJP/rBCb/6wQo/+sEKv/nBC0AAASB/60Eg/+tBIX/rQSI/vUEiv/nBI0AAASX/60EqQAABMYAAATIAAAE0P71BNP/yATV/8gAaABH/8UASP/FAEn/xQBL/8UATAAgAE8AIABQACAAU/+AAFX/xQBX/5AAWwALAJT/xQCZ/8UAu//FAMj/xQDJ/8UA9//FAQP/xQEY/4ABHv/FASL/xQFC/8UBYP/FAWH/xQFr/8UB0f+QArL/xQKz/8UCtP/FArX/xQK2/8UCvP+AAr3/gAK+/4ACv/+AAsD/gALO/8UC0P/FAtL/xQLU/8UC1v/FAtj/xQLa/8UC3P/FAt7/xQLg/8UC4v/FAuT/xQLm/8UC6P/FAwr/gAMM/4ADDv+AAxb/kAMY/5ADGv+QAxz/kAMe/5ADr//FA7X/gAO7/4AD1f/FA9f/gAPZ/8UD3P/FA97/kAP3/8UD/f/FBAL/xQQQ/8UEEv/FBBP/xQQd/4AEH//FBCH/gAQu/8UESP/FBEr/xQRM/8UETv/FBFD/xQRS/8UEVP/FBFb/xQRc/4AEXv+ABGD/gARi/4AEZP+ABGb/gARo/4AEav/FBGz/xQRu/8UEcP+ABHL/xQSt/8UEsf+ABLr/xQS8/8UEvgAgBMAAIATCACAEz/+QAGoAOP/mADr/5wA8//IAPf/nAFEAAABSAAAAVAAAAFz/8QDBAAAA0v/mANb/5gDa//IA3v/uAOH/6ADm/+YA7AAAAO7/8QDwAAAA8QAAAPMAAAD0AAAA9QAAAPb/0AD4AAAA+gAAAPsAAAD+AAABAAAAAQUAAAEZ/+cBKwAAATP/8gE0//EBNgAAATn/5gE6/84BPAAAAT4AAAFD//IBRP/xAUX/5gFH/+gBSf/oAVMAAAFVAAABVwAAAVwAAAFd//IBXv/xAWL/5wFk/+0BbP/mAW3/0AKq/+cCuwAAAwMAAAMFAAADBwAAAwgAAAMf/+YDIf/mAyP/5gMz/+cDNf/nA5z/5wOr/+cDrP/yA67/5wOxAAADxv/uA9L/5gPT//ID1gAAA9gAAAPb//ED3QAAA+IAAAPq/+cD8gAAA/gAAAP7/+cEA//nBAb/8gQH//EEFP/yBBX/8QQZAAAEGwAABCT/7gQm/+4EKP/uBCr/6AQtAAAEgf/nBIP/5wSF/+cEiP/mBIr/6ASNAAAEl//nBKkAAATGAAAEyAAABND/5gTT/+cE1f/nAGsAJQAPADj/5gA6/+YAPAAOAD3/5gCyAA8AtAAPANL/5gDUAA4A1v/mANkAEwDaAA4A3QAOAN4ACwDh/+UA5v/mAOf/9ADtABIA8gAPAPb/5wD5/+gA/gAAAQQADwENAA8BGf/mATMADgE5/+YBOv/nAUMADgFF/+YBR//lAUj/6AFJ/+UBSv/oAUz/5AFQAA4BUQAPAV0ADgFi/+YBZP/mAWYADgFs/+YBbf/nAW8ADgFwAA8CkAAPApEADwKSAA8CkwAPApQADwKVAA8ClgAPAqr/5gLHAA8CyQAPAssADwMf/+YDIf/mAyP/5gMz/+YDNf/mA5cADwOc/+YDnwAPA6v/5gOsAA4Drv/mA8YACwPHAA8D0v/mA9MADgPq/+YD8wAPA/v/5gQD/+YEBgAOBAkADwQLAA8EFAAOBCQACwQmAAsEKAALBCr/5QQr/+gELwAPBDEADwQzAA8ENQAPBDcADwQ5AA8EOwAPBD0ADwQ/AA8EQQAPBEMADwRFAA8Egf/mBIP/5gSF/+YEiP/mBIr/5QSL/+gEl//mBKoADwTQ/+YE0//mBNX/5gB1AAb/wAAL/8AAOP71ADr/yAA8//AAPf+tAFEAAABSAAAAVAAAAFz/yQDBAAAA0v71ANb+9QDa//AA3v/rAOH/5wDm/8MA7AAAAO7/yQDwAAAA8QAAAPMAAAD0AAAA9QAAAPb/zwD4AAAA+gAAAPsAAAD+AAABAAAAAQUAAAEZ/8gBKwAAATP/8AE0/8kBNgAAATn+9QE6/84BPAAAAT4AAAFD//ABRP/JAUX+9QFH/+cBSf/nAUz/3wFTAAABVQAAAVcAAAFcAAABXf/wAV7/yQFi/9EBZP/sAWz/oAFt/9EBhP/AAYX/wAGH/8ABiP/AAYn/wAKq/60CuwAAAwMAAAMFAAADBwAAAwgAAAMf/vUDIf71AyP+9QMz/60DNf+tA5z/rQOr/60DrP/wA67/rQOxAAADxv/rA9L+9QPT//AD1gAAA9gAAAPb/8kD3QAAA+IAAAPq/60D7P/AA+3/wAPw/8AD8gAAA/gAAAP7/8gEA/+tBAb/8AQH/8kEFP/wBBX/yQQZAAAEGwAABCT/6wQm/+sEKP/rBCr/5wQtAAAEgf+tBIP/rQSF/60EiP71BIr/5wSNAAAEl/+tBKkAAATGAAAEyAAABND+9QTT/8gE1f/IAHYAR//wAEj/8ABJ//AAS//wAFP/6wBV//AAlP/wAJn/8AC7//AAyP/wAMn/8AD3//ABA//wARj/6wEc/+sBHv/wASL/8AFC//ABYP/wAWH/8AFr//AB6//rAe3/6wH1/+kB/P/rAgX/6wIh/+sCKv/rAkH/6wKy//ACs//wArT/8AK1//ACtv/wArz/6wK9/+sCvv/rAr//6wLA/+sCzv/wAtD/8ALS//AC1P/wAtb/8ALY//AC2v/wAtz/8ALe//AC4P/wAuL/8ALk//AC5v/wAuj/8AMK/+sDDP/rAw7/6wNK/+sDVP/rA1X/6wNW/+sDV//rA1j/6wNh/+sDYv/rA2P/6wNk/+sDa//rA2z/6wNt/+sDbv/rA37/6wN//+sDgP/rA6//8AO1/+sDu//rA9X/8APX/+sD2f/wA9z/8AP3//AD/f/wBAL/8AQQ//AEEv/wBBP/8AQd/+sEH//wBCH/6wQu//AESP/wBEr/8ARM//AETv/wBFD/8ARS//AEVP/wBFb/8ARc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/wBGz/8ARu//AEcP/rBHL/8ASt//AEsf/rBLr/8AS8//AE4P/rBQL/6wUF/+sFCv/rAHwABv/aAAv/2gBH//AASP/wAEn/8ABL//AAVf/wAFn/7wBa/9wAXf/cAJT/8ACZ//AAm//vALv/8AC9/9wAwv/sAMQADwDG/+oAyP/wAMn/8ADK/8QAy//vAMz/5wD3//ABA//wARr/3AEe//ABIv/wAUL/8AFg//ABYf/wAWv/8AGE/9oBhf/aAYf/2gGI/9oBif/aArL/8AKz//ACtP/wArX/8AK2//ACwf/vAsL/7wLD/+8CxP/vAsX/3ALG/9wCzv/wAtD/8ALS//AC1P/wAtb/8ALY//AC2v/wAtz/8ALe//AC4P/wAuL/8ALk//AC5v/wAuj/8AMm/+8DKP/vAyr/7wMs/+8DLv/vAzD/7wM0/9wDr//wA7P/7wO3/9wDuv/vA7z/7wPV//AD2f/wA9r/3APc//AD4//cA+v/3APs/9oD7f/aA/D/2gP3//AD/P/cA/3/8AQC//AEBP/cBBD/8AQS//AEE//wBB//8AQl/9wEJ//cBCn/3AQu//AESP/wBEr/8ARM//AETv/wBFD/8ARS//AEVP/wBFb/8ARq//AEbP/wBG7/8ARy//AEdP/vBHb/7wR4/+8Eev/vBHz/7wR+/+8EgP/vBIL/3ASE/9wEhv/cBK3/8AS1/+8Euv/wBLz/8ATU/9wE1v/cAIwABv/KAAv/ygA4/9IAOv/UADz/9AA9/9MAUf/RAFL/0QBU/9EAWv/mAFz/7wBd/+YAvf/mAMH/0QDS/9IA1v/SANr/9ADe/+0A4f/hAOb/1ADs/9EA7v/vAPD/0QDx/9EA8//RAPT/0QD1/9EA9v/JAPj/0QD6/9EA+//RAP7/0QEA/9EBBf/RAQn/5QEZ/9QBGv/mASD/4wEr/9EBM//0ATT/7wE2/9EBOf/SATr/xAE8/9EBPv/RAUP/9AFE/+8BRf/SAUf/4QFJ/+EBU//RAVX/0QFX/9EBXP/RAV3/9AFe/+8BYv/UAWP/9QFk/+cBbP/SAW3/yQGE/8oBhf/KAYf/ygGI/8oBif/KAqr/0wK7/9ECxf/mAsb/5gMD/9EDBf/RAwf/0QMI/9EDH//SAyH/0gMj/9IDM//TAzT/5gM1/9MDnP/TA6v/0wOs//QDrv/TA7H/0QO3/+YDxv/tA9L/0gPT//QD1v/RA9j/0QPa/+YD2//vA93/0QPi/9ED4//mA+r/0wPr/+YD7P/KA+3/ygPw/8oD8v/RA/j/0QP7/9QD/P/mBAP/0wQE/+YEBv/0BAf/7wQU//QEFf/vBBn/0QQb/9EEJP/tBCX/5gQm/+0EJ//mBCj/7QQp/+YEKv/hBC3/0QSB/9MEgv/mBIP/0wSE/+YEhf/TBIb/5gSI/9IEiv/hBI3/0QSX/9MEqf/RBMb/0QTI/9EE0P/SBNP/1ATU/+YE1f/UBNb/5gCYACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98Ag//oAJP/6ACY/+gAsgAQALP/6AC0ABAA0v/gANP/6ADUABAA1v/gANkAFADdABAA4f/hAOb/4ADtABMA8gAQAPn/4AEEABABCP/oAQ0AEAEX/+gBGf/gARv/6AEd/+gBH//oASH/6AE5/+ABQf/oAUX/4AFH/+EBSP/gAUn/4QFK/+ABTf/hAVAAEAFRABABWP/pAWL/3wFk/94BZgAQAWr/6AFs/98Bbv/yAW8AEAFwABACVf/oAlb/6AJY/+gCWf/oApAAEAKRABACkgAQApMAEAKUABAClQAQApYAEAKX/+gCof/oAqL/6AKj/+gCpP/oAqX/6AKq/98CxwAQAskAEALLABACzf/oAs//6ALR/+gC0//oAuH/6ALj/+gC5f/oAuf/6AMJ/+gDC//oAw3/6AMf/+ADIf/gAyP/4AMz/98DNf/fAz7/6AOXABADm//oA5z/3wOfABADqP/oA6v/3wOu/98DxwAQA87/6APR/+gD0v/gA+r/3wPzABAD+//gA/7/6AQB/+gEA//fBAkAEAQLABAEHP/oBB7/6AQg/+gEKv/hBCv/4AQvABAEMQAQBDMAEAQ1ABAENwAQBDkAEAQ7ABAEPQAQBD8AEARBABAEQwAQBEUAEARb/+gEXf/oBF//6ARh/+gEY//oBGX/6ARn/+gEaf/oBGv/6ARt/+gEb//oBHH/6ASB/98Eg//fBIX/3wSI/+AEiv/hBIv/4ASX/98EqgAQBLD/6ATJ/+gE0P/gBNP/4ATV/+AAugBH/9wASP/cAEn/3ABL/9wAUf/zAFL/8wBT/9YAVP/zAFX/3ABZ/90AWv/hAF3/4QCU/9wAmf/cAJv/3QC7/9wAvf/hAL7/7gC//+YAwf/zAML/6wDD/+kAxf/wAMb/5wDI/9wAyf/cAMr/4wDL/90AzP/OAM3/1ADO/9sA7P/zAPD/8wDx//MA8//zAPT/8wD1//MA9//cAPj/8wD6//MA+//zAP7/8wEA//MBA//cAQX/8wEY/9YBGv/hAR7/3AEi/9wBK//zATb/8wE8//MBPv/zAUL/3AFT//MBVf/zAVf/8wFc//MBYP/cAWH/3AFr/9wCsv/cArP/3AK0/9wCtf/cArb/3AK7//MCvP/WAr3/1gK+/9YCv//WAsD/1gLB/90Cwv/dAsP/3QLE/90Cxf/hAsb/4QLO/9wC0P/cAtL/3ALU/9wC1v/cAtj/3ALa/9wC3P/cAt7/3ALg/9wC4v/cAuT/3ALm/9wC6P/cAwP/8wMF//MDB//zAwj/8wMK/9YDDP/WAw7/1gMm/90DKP/dAyr/3QMs/90DLv/dAzD/3QM0/+EDr//cA7H/8wOz/90Dtf/WA7f/4QO6/90Du//WA7z/3QPV/9wD1v/zA9f/1gPY//MD2f/cA9r/4QPc/9wD3f/zA+L/8wPj/+ED6//hA/L/8wP3/9wD+P/zA/z/4QP9/9wEAv/cBAT/4QQQ/9wEEv/cBBP/3AQZ//MEG//zBB3/1gQf/9wEIf/WBCX/4QQn/+EEKf/hBC3/8wQu/9wESP/cBEr/3ARM/9wETv/cBFD/3ARS/9wEVP/cBFb/3ARc/9YEXv/WBGD/1gRi/9YEZP/WBGb/1gRo/9YEav/cBGz/3ARu/9wEcP/WBHL/3AR0/90Edv/dBHj/3QR6/90EfP/dBH7/3QSA/90Egv/hBIT/4QSG/+EEjf/zBKn/8wSt/9wEsf/WBLX/3QS6/9wEvP/cBMb/8wTI//ME1P/hBNb/4QC/AAYADAALAAwAR//oAEj/6ABJ/+gASgAMAEv/6ABT/+oAVf/oAFoACwBdAAsAlP/oAJn/6AC7/+gAvQALAL7/7QDEAAAAxgALAMj/6ADJ/+gAygAMAPf/6AED/+gBGP/qARoACwEe/+gBIv/oAUL/6AFg/+gBYf/oAWv/6AGEAAwBhQAMAYcADAGIAAwBiQAMAeMADQHmAA0B6AAOAen/9QHr/+wB7f/tAfX/7AH7/78B/P/tAf3/vwIEAA4CBf/tAggADgIgAA4CIf/tAiIADQIkAA4CKv/tAkH/7gJD/78Csv/oArP/6AK0/+gCtf/oArb/6AK8/+oCvf/qAr7/6gK//+oCwP/qAsUACwLGAAsCzv/oAtD/6ALS/+gC1P/oAtb/6ALY/+gC2v/oAtz/6ALe/+gC4P/oAuL/6ALk/+gC5v/oAuj/6AMK/+oDDP/qAw7/6gM0AAsDQ/+/A0T/vwNF/78DRv+/A0f/vwNI/78DSf+/A0r/7QNU/+0DVf/tA1b/7QNX/+0DWP/tA10ADQNe/78DX/+/A2D/vwNh/+0DYv/tA2P/7QNk/+0Da//tA2z/7QNt/+0Dbv/tA37/7QN//+0DgP/tA4T/9QOF//UDhv/1A4f/9QOJAA4DkgANA5MADQOv/+gDtf/qA7cACwO7/+oD1f/oA9f/6gPZ/+gD2gALA9z/6APjAAsD6wALA+wADAPtAAwD8AAMA/f/6AP8AAsD/f/oBAL/6AQEAAsEEP/oBBL/6AQT/+gEHf/qBB//6AQh/+oEJQALBCcACwQpAAsELv/oBEj/6ARK/+gETP/oBE7/6ARQ/+gEUv/oBFT/6ARW/+gEXP/qBF7/6gRg/+oEYv/qBGT/6gRm/+oEaP/qBGr/6ARs/+gEbv/oBHD/6gRy/+gEggALBIQACwSGAAsErf/oBLH/6gS6/+gEvP/oBNQACwTWAAsE3P+/BOD/7QThAA0E4/+/BO8ADQTyAA0E+/+/BQL/7QUF/+0FBgAOBQr/7QULAA0A4wAGAA0ACwANAEX/8ABH/7AASP+wAEn/sABKAA0AS/+wAFP/1gBV/7AAWgALAF0ACwCU/7AAmf+wALv/sAC9AAsAvv+wAMf/qwDI/8AAyf+wAMz/1QDt/6oA8v+vAPf/sAED/7ABBP+vARj/1gEaAAsBHP/iAR7/sAEgAAwBIv+wAUL/sAFR/68BYP+wAWH/sAFjAAsBZQALAWv/sAFw/68BhAANAYUADQGHAA0BiAANAYkADQHjAA0B5gANAegADgHp//UB6//sAe3/7QH1/+wB+/+/Afz/7QH9/78CBAAOAgX/7QIIAA4CIAAOAiH/7QIiAA0CJAAOAir/7QJB/+4CQ/+/Aqv/8AKs//ACrf/wAq7/8AKv//ACsP/wArH/8AKy/7ACs/+wArT/sAK1/7ACtv+wArz/1gK9/9YCvv/WAr//1gLA/9YCxQALAsYACwLI//ACyv/wAsz/8ALO/7AC0P+wAtL/sALU/7AC1v+wAtj/sALa/7AC3P+wAt7/sALg/7AC4v+wAuT/sALm/7AC6P+wAwr/1gMM/9YDDv/WAzQACwND/78DRP+/A0X/vwNG/78DR/+/A0j/vwNJ/78DSv/tA1T/7QNV/+0DVv/tA1f/7QNY/+0DXQANA17/vwNf/78DYP+/A2H/7QNi/+0DY//tA2T/7QNr/+0DbP/tA23/7QNu/+0Dfv/tA3//7QOA/+0DhP/1A4X/9QOG//UDh//1A4kADgOSAA0DkwANA6//sAO1/9YDtwALA7v/1gPU//AD1f+wA9f/1gPZ/7AD2gALA9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMpAykA4gMrAysA4wMtAy0A5AMvAy8A5QMxAzEA5gMzAzsA5wNAA0kA8ANUA1gA+gNeA2AA/wNlA2UBAgN2A3oBAwN+A4ABCAOJA4kBCwOXA5wBDAOfA64BEgOxA7EBIgO1A7UBIwO3A7cBJAO7A7sBJQO+A78BJgPBA8oBKAPMA84BMgPQA9UBNQPXA90BOwPjA+QBQgPmA+YBRAPoA+gBRQPqA+0BRgPwA/UBSgP3A/cBUAP7A/wBUQQBBAwBUwQPBBABXwQSBBUBYQQcBB0BZQQhBCEBZwQjBCkBaAQvBFcBbwRZBFkBmARbBGgBmQRwBHABpwRzBHMBqAR1BHUBqQSBBIYBqgSIBIgBsASMBI0BsQSQBJABswSSBJMBtASVBJUBtgSXBJcBtwSoBKwBuASuBK4BvQSwBLEBvgSzBLMBwAS3BLkBwQS7BLsBxAS9BL8BxQTBBMEByATDBMMByQTFBMsBygTNBM0B0QTQBNAB0gTSBNcB0wTZBNwB2QTgBOAB3QTjBOMB3gTpBOkB3wTuBO4B4AT5BPkB4QT7BPsB4gUCBQIB4wUGBQYB5AACAXQABgAGAA8ACwALAA8AEAAQABoAEgASABoAJQAlAAIAJgAmACQAJwAnABAAKAAoAAEAKQApAAQALgAuAAgALwAvAA0AMAAwABcAMwAzAAEANAA0ACUAOAA4ABIAOQA5AAgAOgA6ABwAOwA7ABgAPAA8ABEAPQA9AAwAPgA+ABkARQBFAAMARgBGAA4ARwBHABMASQBJAAUATABMAAkAUQBSAAkAUwBTAAYAVABUAA4AVgBWABsAWgBaAAcAXABcABUAXQBdAAcAXgBeAB8AigCKAA4AlgCWAAEAsQCxABYAsgCyAAIAswCzAAEAtAC0AAIAvQC9AAcAwQDBAAkAxwDHAA4A1ADVACAA2gDaABEA3gDeACEA5ADkACAA5gDmACAA7ADsACIA7gDuABUA9wD3AA4A/AD8ACMA/gD+ACMA/wD/AA4BBAEFACMBCgEKACMBDQENAAIBGAEYAAYBGQEZABwBGgEaAAcBLgEuAA4BLwEvABYBMAEwACIBMwEzABEBNAE0ABUBNQE1AA0BNwE3AA0BOQE5AA0BQwFDABEBRAFEABUBWAFYAAEBXAFcACIBXQFdABEBXgFeABUBhAGFAA8BhgGGABoBhwGJAA8BigGKABoBjgGPABoB6AHoAB0B7QHtAAoB8AHwAB4B8QHxABQB+wH7AAsB/AH8AAoB/QH9AAsCDwIPABQCHgIgABQCQAJAAAoCQwJDAAsCVQJVABACVwJYAAECiwKMAAECjgKOABICkAKWAAIClwKXABACmAKbAAQCoQKlAAECpgKpAAgCqgKqAAwCqwKxAAMCsgKyABMCswK2AAUCuwK7AAkCvALAAAYCxQLGAAcCxwLHAAICyALIAAMCyQLJAAICygLKAAMCywLLAAICzALMAAMCzQLNABACzgLOABMCzwLPABAC0ALQABMC0QLRABAC0gLSABMC0wLTABAC1ALUABMC1QLVAAEC1wLXAAQC2ALYAAUC2QLZAAQC2gLaAAUC2wLbAAQC3ALcAAUC3QLdAAQC3gLeAAUC3wLfAAQC4ALgAAUC6gLqAAkC9gL2AAgC+AL4AA0C+gL6ABcC/AL8ABcC/gL+ABcDAAMAABcDAwMDAAkDBQMFAAkDBwMIAAkDCQMJAAEDCgMKAAYDCwMLAAEDDAMMAAYDDQMNAAEDDgMOAAYDEAMQABsDEgMSABsDFAMUABsDHwMfABIDIQMhABIDIwMjABIDJQMlAAgDJwMnAAgDKQMpAAgDKwMrAAgDLQMtAAgDLwMvAAgDMQMxABgDMwMzAAwDNAM0AAcDNQM1AAwDNgM2ABkDNwM3AB8DOAM4ABkDOQM5AB8DOgM6ABkDOwM7AB8DQANBAAoDQgNCAB0DQwNJAAsDVANYAAoDXgNgAAsDZQNlAAoDdgN2ABQDdwN6AB4DfgOAAAoDiQOJAB0DlwOXAAIDmAOYAAQDmwObAAEDnAOcAAwDnwOfAAIDoAOgACQDoQOhAAQDogOiABkDpQOlAA0DqAOoAAEDqQOpACUDqgOqABIDqwOr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AAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAEAAAAAAAAAAIADAAAAAAABAAAAAAAFwAAAAAAAAAAAAAAAgAAAAAADAAQAAAADAABAAAAAwAAAAgAAAAHAAAACQAAAAAACAAHAAgAAAAAAAAAAAAAAAAAIwAAAAAAHwAEAAAAAAAAAAAAAAAAAAIAAAAAAAIADQAQAAYAAQADAAcAAwABAAkAEwABAAMAEQAAAAAAAAADAAkAFgAAABYAAAAWAAAADAAJAA8ADwAAAAAADwAAAAMABAAGAAAAAAABAAMAAAAAABoACQABAAIAAAAAAAIAAQAMAAkAAAAQABMAAAAEAAYABAAGAAAAAAAAAAEAAAABAAEAEAATAAAAAAAAAAMAAAADAAIABwACAAEAAgAHAAAAAAAfAAkAHwAJAB8ACQAgACIAAAADAAEABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAIABwACAAcAAgAHAAIABwACAAcAAgAHAAIABwACAAEAAgABAAIAAQACAAcAAgABAAsACAALAAgAAAAIAAAACAAAAAgAAAAIAAAACAAMAAkADAAJAAwACQAAAA0AAAAgACIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMABAAGAAAAAQAAAAAAAgAHAAAAAAAAAAgAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwACAAAAAAAAAAAAFAARAA0AAAALABoACQAaAAkAFgAAABcAHQAAAAoAAAAAAAAABQASAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAA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BOgB/QH+Af8E7QIAAgAE7gTvAgECAgIDAgoE/AT9AgsCDAINAg4CDwIQBQAFAQUDBQYFDwISAhMCFAIVAhYCFwIYAhkCGgIbAgQCBQIGAgcCCAIJAksCHQIeAh8CIAUJAiECIwIkAiUCJwIpAocDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQOTA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5QDlQOWBREFEgTcBN0E3gTfBOkE7ATqBOsE8ATxBPIE4AThBOIE+wT+BP8FAgUEBQUCEQUHBPME9AT1BPYE9wT4BPkE+gUUBRUFFgUXBQgFCgULAigFDQIqBQ4FDAImAhwCIgUcBR0AAgcAAPoB9wKCAeEB4AHfAd4B3QHcAdsB2gHZAdgCQwJCAkECQAI4AfYB9QH0AfMB8gHxAfAB7wHuAe0B7AHrAeoB6QHoAecB5gHlAeQB4wHiAfgB+QKEAoYChQKHAoMCiAJiAfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAhACEQUPAhICEwIUAhUCFgIXAhgCGQIaAhsCSwIdAh4CHwIgBQkCIQIjAiQCJQImAicCKAIpAisCLAIuAi0DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0BRADdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YFEwOHA4gDigOJA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWBREFEgTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgCDwT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUUBRUFFgUXBQgFCgULBQ0CKgUOBQwCHAIiBRwFHQABAAEBewABAAEASwABAAEAuwABAAEANgABAAEAEwABAAIDGQMaAAIG5AbYAAIG5gbYAAEG7gABBvAAAQbyAAIAAQAUAB0AAAABAAIALwBPAAEAAwBJAEsCegACAAAAAQbeAAEABgLLAswC3QLeA2ADaQABAAYATQBOAvID3wPhBFoAAgADAZQBlAAAAdUB1wABAi8CNQAEAAIAAgCoAKwAAQEkAScAAQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAgACABQAHQAAAmUCbgAKAAIABgBNAE0ABgBOAE4ABALyAvIABQPfA98AAwPhA+EAAgRaBFoAAQACAAQAFAAdAAACdgJ2AAoCgQKBAAsEngSlAAwAAgAGABoAGgAAABwAHAABAloCXwACAmMCYwAIAmUCbgAJAnUCdQATAAEAFAAaABwCWgJbAlwCXQJeAl8CYwJ1AnYCgQSeBJ8EoAShBKIEowSkBKUAAQXeAAEF4AABBeIAAQXkAAEF5gABBegAAQXqAAEF7AABBe4AAQXwAAEF8gABBfQAAQX2AAEF+AABBfoAAgX8BgIAAgYCBggAAgYIBg4AAgYOBhQAAgYUBhoAAgYaBiAAAgYgBiYAAgYmBiwAAgYsBjIAAgYyBjgAAgY4Bj4AAwY+BkQGSgADBkgGTgZUAAMGUgZYBl4AAwZcBmIGaAADBmYGbAZyAAMGcAZ2BnwAAwZ6BoAGhgADBoQGigaQAAQGjgaUBpoGoAAEBpwGogaoBq4ABQaqBrAGtga8BsIABQa8BsIGyAbOBtQABQbOBtQG2gbgBuYABQbgBuYG7AbyBvgABQbyBvgG/gcEBwoABQcEBwoHEAcWBxwABQcWBxwHIgcoBy4ABQcoBy4HNAc6B0AABQc6B0AHRgdMB1IABgdMB1IHWAdeB2QHagAGB2IHaAduB3QHegeAAAYHeAd+B4QHigeQB5YABgeOB5QHmgegB6YHrAAGB6QHqgewB7YHvAfCAAYHugfAB8YHzAfSB9gABgfQB9YH3AfiB+gH7gAHCC4H5gfsB/IH+Af+CAQABwgmB/oIAAgGCAwIEggYAAEA6wAKAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCFAIYAhwCJAIoAiwCNAJAAkgCUALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDqAOsA7ADtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD/AQABAQECAQMBBAEFAQYBBwEwATQBNgE4AToBPAFCAUQBRgFKAU0BWgKNAo8CqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLIAsoCzALOAtAC0gLUAtYC2ALaAtwC3gLgAuIC5ALmAugC6gLsAu4C8ALyAvUC9wL5AvsC/QL/AwEDAwMFAwcDCgMMAw4DEAMSAxQDFgMYAxoDHAMeAyADIgMkAyYDKAMqAywDLgMwAzIDNAM3AzkDOwM9Az8DrwOwA7EDsgO0A7UDtgO3A7gDuQO6A7sDvAO9A9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5QPnA+kD6wQABAIEBAQSBBkEHwQlBI8EkASUBJgFGQUbAAEA+gAIAAoAFAAVABYAFwAYABkAGgAbABwAHQAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZQBnAIEAgwCEAIwAjwCRAJMAsQCyALMAtAC1ALYAtwC4ALkAugDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgA6QEvATMBNQE3ATkBOwFBAUMBRQFJAUsBTAFYAVkBpwGtAbIBtQKLAowCjgKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgLHAskCywLNAs8C0QLTAtUC1wLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvMC9AL2AvgC+gL8Av4DAAMCAwQDBgMJAwsDDQMPAxEDEwMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzUDNgM4AzoDPAM+A5cDmAOZA5oDmwOcA50DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA+QD5gPoA+oD/wQBBAMEGAQeBCQEjgSTBJcFGAUaAcwAAgBNAc0AAgBQAc4AAwBKAE0BzwADAEoAUAABAAEASgHLAAIASgHRAAIAWAHQAAIAWAABAAMASgBXAJUAAAABAAEAAQABAAAAAwS3AAIArQLNAAIAqQS9AAIArQTKAAIAqQS4AAIArQLOAAIAqQSnAAIAqQS+AAIArQRaAAIArQTLAAIAqQM8AAIAqQM+AAIAqQM9AAIAqQM/AAIAqQS2AAIAqQS7AAIBygS5AAIArQSmAAIAqQLnAAIBygPxAAIAqQTFAAIArQMfAAIBygTQAAIArQTVAAIArQTTAAIAqgM2AAIAqQTZAAIArQS8AAIBygS6AAIArQPyAAIAqQTGAAIArQMgAAIBygTRAAIArQTWAAIArQTUAAIAqgM3AAIAqQTaAAIArQS/AAIAqQL4AAIBygTBAAIArQL6AAIAqQL8AAIBygTDAAIArQMVAAIAqQMbAAIBygTOAAIArQPmAAIAqQTXAAIArQPkAAIAqATAAAIAqQL5AAIBygTCAAIArQL7AAIAqQL9AAIBygTEAAIArQMWAAIAqQMcAAIBygTPAAIArQPnAAIAqQTYAAIArQPlAAIAqAMPAAIAqQMRAAIBygTMAAIArQSyAAIArAMQAAIAqQMSAAIBygTNAAIArQSzAAIArAMCAAIAqQMEAAIBygTHAAIArQSoAAIAqAKgAAIAqgKqAAIAqQSBAAIArQPqAAIAqASDAAIAqwSFAAIAqgMDAAIAqQMFAAIBygTIAAIArQSpAAIAqAK7AAIAqgLFAAIAqQSCAAIArQPrAAIAqASEAAIAqwSGAAIAqgK4AAIAqQK3AAIAqARYAAIAqwLsAAIAqgSvAAIArARpAAIAqQRxAAIArQRrAAIAqARtAAIAqwRvAAIAqgRqAAIAqQRyAAIArQRsAAIAqARuAAIAqwRwAAIAqgR3AAIAqQR/AAIArQR5AAIAqAR7AAIAqwR9AAIAqgR4AAIAqQSAAAIArQR6AAIAqAR8AAIAqwR+AAIAqgKRAAIAqQQvAAIArQKQAAIAqAQxAAIAqwKTAAIAqgSqAAIArAKZAAIAqQRHAAIArQKYAAIAqARJAAIAqwRLAAIAqgSsAAIArAKdAAIAqQRZAAIArQKcAAIAqARXAAIAqwLrAAIAqgSuAAIArAKsAAIAqQQwAAIArQKrAAIAqAQyAAIAqwKuAAIAqgSrAAIArAK0AAIAqQRIAAIArQKzAAIAqARKAAIAqwRMAAIAqgStAAIArAK9AAIAqQRcAAIArQK8AAIAqAReAAIAqwK/AAIAqgSxAAIArALCAAIAqQR0AAIArQLBAAIAqAR2AAIAqwMmAAIAqgS1AAIArAKiAAIAqQRbAAIArQKhAAIAqARdAAIAqwKkAAIAqgSwAAIArAKnAAIAqQRzAAIArQKmAAIAqAR1AAIAqwMlAAIAqgS0AAIArATJAAMAqgCpBNIAAwCqAKkAAgARACUAKQAAACsALQAFAC8ANAAIADYAOwAOAD0APgAUAEUASQAWAEsATQAbAE8AVAAeAFYAWwAkAF0AXgAqAIEAgQAsAIMAgwAtAIYAhgAuAIkAiQAvAI0AjQAwAJgAmwAxANAA0AA1AAA=",
33
  "Roboto-Medium.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb9IAAACWEdQT1Pk1zcKAAHBoAAAZixHU1VChRYO9AACJ8wAABX2T1MvMpfnsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG/PAAAAAxnbHlmoVpeAgAAOpAAAYGiaGVhZAatHSkAAAEcAAAANmhoZWEK9grYAAABVAAAACRobXR4JpFVzgAAAfgAABR8bG9jYSpiho0AADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lQlx1PgABvDQAAALmcG9zdP9tAGQAAb8cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSOm9QH9fDzz1ABkIAAAAAADE8BEuAAAAAN8Gv236Jv3VCWEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJbvom/j4JYQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAf0AAAH9AAACHgCMAo4AYATTAFYEjABkBeQAZAUhAFUBVwBSAsUAgQLMACcDjAAcBHEAQgHKACICuABQAjkAhgMfAAEEjABoBIwAqgSMAFIEjABOBIwANwSMAH8EjABzBIwARASMAGcEjABdAhwAfwHrADMEEgA+BIAAjwQoAH4D5AA7By0AWwVOABEFDQCUBTkAZgU5AJQEhQCUBGgAlAVzAGsFrQCUAkQApQRyAC8FDgCUBFIAlAb/AJQFrQCUBYMAZQUbAJQFgwBgBQkAlATYAEsE4AAtBTwAgAUqABEHCwAvBQ0AJgTjAAgE0wBQAiwAhQNVABICLAALA24ANgOVAAICkAA4BFAAVgR/AH0ELQBOBIIAUARJAFEC0wArBIkAUgRyAHoCCgB8AgL/qwQsAH0CCgCMBvgAfAR0AHoEigBOBH8AfQSHAFAC1AB9BB4ASQKqAAoEcwB3A/gAFgXwACMEBgAfA+sADAQGAFECqwA4Af0ArwKrABwFTQB1Ah8AhQSCAGcEtQBfBZ4AXARAAA0B+ACJBPkAXAOSAGMGSQBaA5AAjgPjAFcEawB/BkoAWQPaAJ0DDwCBBEoAXAL1AD0C9QA3ApQAbwTBAJMD6gBJAkQAkAITAGwC9QCCA6cAeQPjAF4FygBfBiIAUwZcAGYD5QBGB37//ARCAEwFgQBpBM8AlQTrAIoGwgBIBKQAaASRAEMEhgBOBJEAgQTsAFAFsAAfAhcAkASaAI0EZAAgAlIAIAWXAJAEhgB9B7AAZQc+AFkCBwCJBY0AVQLQ/94FkQBbBJ0ATQWjAIAE5gB3AiX/rgQ5AFcD3gCQA6oAbgPaAJ0DfgB1AgoAgQKqAHgCTAApA84AdwMoAEsCcwCJAAD8kwAA/WIAAPx0AAD9OgAA/AgAAP0eAmsAzQQ7AG4CRACQBHQAmQXCABoFegBcBTUAIASMAGoFrgCZBIwARwX5AEwFsQBGBVkAbASEAFYEyACXBA0AHgSGAFEEZQBiBA8AWQSGAH0EpwB2AqUAowRoABUEGgBnBPwAMASGAIAEMwBQBI4AUAQqADwEXQB/BdEARgXMAFIGlABlBLQAeASH/+EGeQArBf0AJAVTAGcIgQAtCIwAmQZRAC0FpQCPBQcAkAX9ACYHqQAVBNsASQWmAJIFqAAsBQsAMgZfAE4F+ACOBYUAkQeaAJUH+gCVBiEAFQbwAJkFAgCQBUgAYwdiAKEE6AAXBIAAWgSLAI8DWwCDBPIAJwaHACAEFwBOBJIAhARsAI8ElAAgBgIAjwSRAIQEkgCEA/oAIwXUAFMEzwCEBGUAYAaNAIQG8QB9BSEAIAZvAI8EaQCPBDkAUAaCAJIEcAAuBHL/1wQ5AFIG1gAdBuQAhASG/+gEkgCEB1gAiAZqAHIEaP/hBygAmAYCAIYFFgAaBGMACwdLAKwGPQCaBuUAfgXdAIEJKgClB+4AkAQgACgD9QAyBXoAYASIAE0FGAAQBA0AHgV6AGAEhgBOB1QAiAZWAHUHWACIBmoAcgUQAGcERwBdBPsAcAAA/HAAAPx1AAD9gQAA/aYAAPomAAD6UQYgAJIFEwCEBGj/4QUQAJQEhgB9BGsAjwOjAH0E6gCZBCQAfQgjABUG4AAgBckAmQT7AI8FLgCRBKwAjQaUADQFoAA8BiAAlAUHAIQH3QCUBa0AfQhJAJcG7wB9BjcAZwUEAGAFOQAmBEEAHwcoACkFbwAnBfIAkQTcAGAFcACBBHQAdQWFAIkGGwAKBMT/ywUgAJEEeACNBh8ALAUUACAFrQCZBIYAfQYqAJQFEQCEB3UAlAZ0AI8FjQBVBKMAWwSkAF0EwwAsA6oAJAVpACYEcQAfBPkATwbzAGgG2wBfBlEAPQUoAC8EgwBKBEgAcwe8AEIGpAA/B/UAlAaeAHQFBgBcBC8AVQWoACEFHQBEBU4AfQZGACwFOwAgAxsAZAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACtwBQArcAUAUjAJwGKgB7A5oACAG/AGUBugA3Ac4ANQGjAEsDCwBtAxMAQwMAADUEWwA/BJoAXQLMAIoD/QCNBaoAjQHPAF4HrgBQAnQAbAJpAFUDmQArAvUATAL1ADYC9QBQAvUATgL1ADcC9QBLAvUARwNcAGcC9QBMAvUAggL1AD0C9QA3AvUANgL1AFAC9QBOAvUANwL1AEsC9QBHBLUAYgZuACMGvwCZCJUAlAY7ACMGmwB9BIwAXAXqACMELQAqBJsAJAViAE8FfgArBeQAbgPjAEUIKQCQBQgAbwUUAJYGNwBcBt4AVgbQAF4GrABcBJMAYQWKAKYE3gA/BIAAnASdADsIUgBhAjL/pwSRAGUEgACPBBIAPQQoAH0EDgAlAlEAnAKOAGQB6QBHBRkAKwStABoEvQArBygAKwcoACsFDwArBrcASQAAAAAIMABZCDUAXAL1AD0C9QCCAvUATAQdAE8EHQBXBB0AOAQdAF8EHQBmBB0AMwQdAD0EHQBDBB0AmAQdAFgEKwBBBD4ABgRcABMGCQAnBHkACASIAGkEPwAlBDcAPwRkAHUEvQBNBGsAdgS9AE4E3AB2BgUAdgO3AHYEXgB2A9YAJgH+AIYE3QB2BKcAVgPIAHYENwA/BGgAOgOlAAoDvAB2BHkACAS9AE4EeQAIA50ARgTZAHYEHgBEBaYATwVYAE8E4ABeBZIAIwSAAE8HVgAkB1gAdgWZACUE2AB2BHIAdgVeACcGRQAbBEYAQwTiAHYEXQB2BMsAJARMAB8FYgB2BI0AQwaEAHYHDgB2BWEACQYWAHYEZwB2BIAAPQaPAHYEhABCBCgACwajABsEoAB2BQ0AdgV0ACEF+ABOBFYABgTEABMGlwAjBI0AQwSNAHYGAAAOBM4ATQRHAEMEvQBOBGgAOgP0AEUILQB2BPQAKAL1ADcC9QA2AvUAUAL1AE4C9QA3AvUASwL1AEcDtgCNAq4AmAPgAHYEOgAMBLYAVgVBAJkFKACZBDAAgQU1AJkEKACBBHoAdgSAAE8EYAB2BJoACAH+AJADoQB1AAD8ngP3AHoD+v9RBAsAeQP6AHkDvAB2A50AdQOdAHUC9QBMAvUANgL1AFAC9QBOAvUANwL1AEsC9QBHBXMAaQWeAGkFfwCZBdkAaQXaAGkEKACWBIIAawRYAA8EuwA0BGsAZwQuAEIDoQB2AboAYgaYAE4ErwBuAgz/pwSMADgEjABoBIwALASMAGIEjABfBIwANASMAGwEjABZBIwAZwSMAOYCJv+uAiX/rgIXAJACF//6AhcAkARgAHYE5gBgBDAAOQSIAH0EPgBPBJUATgSRAE4EnQBJBJIAfQSaAE4ESQBRBIkAUARZADQDrQBhBQwAXwPEAAUGRv/sBAcAdgS9AE4FDgA0BNwAdgH9AAACuABQBVcAFwVXABcEkP/1BOAALQKq/+sFTgARBU4AEQVOABEFTgARBU4AEQVOABEFTgARBTkAZgSFAJQEhQCUBIUAlASFAJQCRP/LAkQApQJE/8oCRP++Ba0AlAWDAGUFgwBlBYMAZQWDAGUFgwBlBTwAgAU8AIAFPACABTwAgATjAAgEUABWBFAAVgRQAFYEUABWBFAAVgRQAFYEUABWBC0ATgRJAFEESQBRBEkAUQRJAFECF/+1AhcAkAIX/7MCF/+oBHQAegSKAE4EigBOBIoATgSKAE4EigBOBHMAdwRzAHcEcwB3BHMAdwPrAAwD6wAMBU4AEQRQAFYFTgARBFAAVgVOABEEUABWBTkAZgQtAE4FOQBmBC0ATgU5AGYELQBOBTkAZgQtAE4FOQCUBRgAUASFAJQESQBRBIUAlARJAFEEhQCUBEkAUQSFAJQESQBRBIUAlARJAFEFcwBrBIkAUgVzAGsEiQBSBXMAawSJAFIFcwBrBIkAUgWtAJQEcgB6AkT/tAIX/50CRP/RAhf/uwJE/90CF//GAkQAGAIK//8CRACfBrUApQQLAHwEcgAvAiX/rgUOAJQELAB9BFIAlAIKAIwEUgCUAgoAWQRSAJQCoACMBFIAlALmAIwFrQCUBHQAegWtAJQEdAB6Ba0AlAR0AHoEdP+jBYMAZQSKAE4FgwBlBIoATgWDAGUEigBOBQkAlALUAH0FCQCUAtQAUgUJAJQC1AA3BNgASwQeAEkE2ABLBB4ASQTYAEsEHgBJBNgASwQeAEkE2ABLBB4ASQTgAC0CqgAKBOAALQKqAAoE4AAtAtIACgU8AIAEcwB3BTwAgARzAHcFPACABHMAdwU8AIAEcwB3BTwAgARzAHcFPACABHMAdwcLAC8F8AAjBOMACAPrAAwE4wAIBNMAUAQGAFEE0wBQBAYAUQTTAFAEBgBRB37//AbCAEgFgQBpBIYATgR6/6UEev+lBD8AJQSaAAgEmgAIBJoACASaAAgEmgAIBJoACASaAAgEgABPA+AAdgPgAHYD4AB2A+AAdgH+/6kB/gCGAf7/pwH+/5wE3AB2BL0ATgS9AE4EvQBOBL0ATgS9AE4EiABpBIgAaQSIAGkEiABpBD4ABgSaAAgEmgAIBJoACASAAE8EgABPBIAATwSAAE8EegBhA+AAdgPgAHYD4AB2A+AAdgPgAHYEpwBWBKcAVgSnAFYEpwBWBN0AdgH+/5EB/v+vAf7/ugH+ABcB/gB9A9YAJgReAHYDtwB2A7cAdgO3AHYDtwB2BNwAdgTcAHYE3AB2BL0ATgS9AE4EvQBOBGQAdQRkAHUEZAB1BDcAPwQ3AD8ENwA/BDcAPwQ/ACUEPwAlBD8AJQSIAGkEiABpBIgAaQSIAGkEiABpBIgAaQYJACcEPgAGBD4ABgQrAEEEKwBBBCsAQQVOABEE6f9CBhH/SgKo/04Fl/+0BUf/QQVt/8ICpf+FBU4AEQUNAJQEhQCUBNMAUAWtAJQCRAClBQ4AlAb/AJQFrQCUBYMAZQUbAJQE4AAtBOMACAUNACYCRP++BOMACASEAFYEZQBiBIYAfQKlAKMEXQB/BJoAjQSKAE4EwQCTA/gAFgRZADQCpf/DBF0AfwSKAE4EXQB/BpQAZQSFAJQEdACZBNgASwJEAKUCRP++BHIALwUoAJkFDgCUBQsAMgVOABEFDQCUBHQAmQSFAJQFpgCSBv8AlAWtAJQFgwBlBa4AmQUbAJQFOQBmBOAALQUNACYEUABWBEkAUQSSAIQEigBOBH8AfQQtAE4D6wAMBAYAHwRJAFEDWwCDBB4ASQIKAHwCF/+oAgL/qwRsAI8D6wAMBwsALwXwACMHCwAv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FgoBAWtWACs0AP//ACcAAAXlBesGJgHlAAABBwBqATsAHgANtwUEHwoBAYRWACs0NAD//wAGAAAEOAYeBiYB4wAAAAcARACKAB7//wAR/lcFPwWwBiYAJQAAAQcApAGAAAMAC7YDDgUBATlWACs0AP//AFb+XAP5BE4GJgBFAAABBwCkALQACAALtgI7MQAATVYAKzQA//8AlP5eBE0FsAYmACkAAAEHAKQBQgAKAAu2BBACAABDVgArNAD//wBR/lQECgROBiYASQAAAQcApAEFAAAAC7YBLAAAAE1WACs0AP//AAj+VASRBI0GJgJDAAAABwCkASIAAP//AHb+XAO2BI0GJgI4AAAABwCkAPEACP//AHj+oQGLBDoGJgCNAAABBwCtA1oACgAOtAEHAgEBuP9/sFYAKzQAAAAAABEA0gADAAEECQAAAF4AAAADAAEECQABABoAXgADAAEECQACAA4AeAADAAEECQADABoAXgADAAEECQAEABoAXgADAAEECQAFACYAhgADAAEECQAGABoArAADAAEECQAHAEAAxgADAAEECQAIAAwBBgADAAEECQAJACYBEgADAAEECQALABQBOAADAAEECQAMABQBOAADAAEECQANAFwBTAADAAEECQAOAFQBqAADAAEECQAQAAwB/AADAAEECQARAAwCCAADAAEECQAZAAwB/ABDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AIABNAGUAZABpAHUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAzAC4AMAAwADUAOwAgADIAMAAyADIAUgBvAGIAbwB0AG8ALQBNAGUAZABpAHUAbQBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUAQwBoAHIAaQBzAHQAaQBhAG4AIABSAG8AYgBlAHIAdABzAG8AbgBHAG8AbwBnAGwAZQAuAGMAbwBtAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAUgBvAGIAbwB0AG8ATQBlAGQAaQB1AG0AAAADAAAAAAAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAcsB0QACAeIB9gABAfoB+gABAgMCAwABAgUCBQABAgwCDgABAhACEQABAhMCEwABAhcCFwABAhkCGwABAiECIQABAiYCKAABAioCKgABAjgCOAABAjsCOwABAj0CPQABAkACQwABAm8CcwABAoMCiAABAosC8wABAvYDtQABA7cDtwABA7kDwwABA8UDzgABA9AD6wABA+8D7wABA/ED+AABA/oD/AABA/8EAwABBAUEkAABBJMElAABBJYElwABBJkEnAABBKYFAgABBQQFDgABBREFHgABAAEAAwAAABAAAAAWAAAAIAABAAEArQACAAEAqACsAAAAAgACAKgArAAAASQBJwAFAAEAAAAeABAACgACAC4ANgACY3BzcAA6a2VybgBAAARERkxUADhjeXJsADhncmVrADhsYXRuADgAAQAAAAEAIgACAAgAAgAuBBAAAAABAAAAAAABAAEADgAAAAEPAgAFACQASAAA//8AAgAAAAEAAUuMAAQAAAHsE9wRBBEEF7QQ5hdaEVQRkhJkEXZH7hKkEqQVxBG2EqQSpBJkEsYgkBlQH8YRpBHMFwAY3hHiFO4SghIsEUAp5BEiJsIRXhFeEw4SLBGEGHgSRhH4EQoSRhU0EiwSZBnGHwAXWhJkF1olxCfEIwodmBDsEkYRLD54EV438iTSKMYSEhDyEPhBYhD+FHYUChpIOeQtpjRCLFgSpDDqPBYXACFeEqQSpBV6EqQSpBKkMpQa0hKkE7IeOhx0GBYj7B0GEUoiNBEKEzQ2GERgEiwUsCsaG1wS6BIsG+YTXhaqFEAS6BdaEw4RpBJGE4gSLB8AEUoXABEKFcQVxBXEEqQXABEKEqQSpBJkEUoXABEKEQQvSBEEEQQRBBEcFg4WXBEWETYREBEWERARaBEQEZISZBJkEmQSZB/GF1oXWhdaF1oXWhdaF1oRkhF2EXYRdhF2EqQSpBKkEqQSpBJkEmQSZBJkEmQY3hKCEoISghKCEoISghKCEUARQBFAEUARXhMOEw4TDhMOEw4SRhJGF1oSghdaEoIXWhKCEZIRkhGSEZISZBF2EUARdhFAEXYRQBF2EUARdhFAEqQRXhKkEqQSpBKkEqQVxBG2EbYRthG2EqQRXhKkEV4SpBFeEV4SZBMOEmQTDhJkEw4RhBGEEYQfxh/GH8YRzBjeEkYY3hHiEeIR4hEWERYRHBEQERAREBEQERAREBEQERYRFhEWERYRFhEQERAREBEWETYRNhE2ETYRFhEWERYRHBdaEXYSpBKkEmQY3hdaEVQRdhHiEqQSpBXEEqQSpBJkEsYfxhjeFwASpBjeEV4TDhJGEw4Rdh8AEqQSpBXEFcQVehdaEVQfABF2EqQSpBJkEsYRkh/GFwASghFAEw4SLBJGEQoRQBFKEkYRzBHMEcwY3hJGEQQRBBEEEqQRXhdaEoIRdhFAEaQSRhGSGN4SRhKkFwARChKkF1oSghdaEoIRdhFAEUARQBcAEQoSZBMOEw4SLBV6EkYVehJGFXoSRhdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghdaEoIXWhKCF1oSghF2EUARdhFAEXYRQBF2EUARdhFAEXYRQBF2EUARdhFAEqQSpBJkEw4SZBMOEmQTDhJkEw4SZBMOEmQTDhJkEw4TDhje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BGX/8wRn//MEaf/zBGv/8wRt//MEb//zBHH/8wSw//MEyf/zAEAAR//sAEj/7ABJ/+wAS//sAFX/7ACU/+wAmf/sALv/7ADI/+wAyf/sAPf/7AED/+wBHv/sASL/7AFC/+wBYP/sAWH/7AFr/+wCsv/sArP/7AK0/+wCtf/sArb/7ALO/+wC0P/sAtL/7ALU/+wC1v/sAtj/7ALa/+wC3P/sAt7/7ALg/+wC4v/sAuT/7ALm/+wC6P/sA6//7APV/+wD2f/sA9z/7AP3/+wD/f/sBAL/7AQQ/+wEEv/sBBP/7AQf/+wELv/sBEj/7ARK/+wETP/sBE7/7ARQ/+wEUv/sBFT/7ARW/+wEav/sBGz/7ARu/+wEcv/sBK3/7AS6/+wEvP/sAEAAJ//mACv/5gAz/+YANf/mAIP/5gCT/+YAmP/mALP/5gC4/8IAxAAQANP/5gEI/+YBF//mARv/5gEd/+YBH//mASH/5gFB/+YBav/mAlX/5gJW/+YCWP/mAln/5gKX/+YCof/mAqL/5gKj/+YCpP/mAqX/5gLN/+YCz//mAtH/5gLT/+YC4f/mAuP/5gLl/+YC5//mAwn/5gML/+YDDf/mAz7/5gOb/+YDqP/mA87/5gPR/+YD/v/mBAH/5gQc/+YEHv/mBCD/5gRb/+YEXf/mBF//5gRh/+YEY//mBGX/5gRn/+YEaf/mBGv/5gRt/+YEb//mBHH/5gSw/+YEyf/mAEcAEAAEABIABABH/+cASP/nAEn/5wBL/+cAVf/nAJT/5wCZ/+cAu//nAMQADwDI/+cAyf/nAPf/5wED/+cBHv/nASL/5wFC/+cBYP/nAWH/5wFr/+cBhgAEAYoABAGOAAQBjwAEArL/5wKz/+cCtP/nArX/5wK2/+cCzv/nAtD/5wLS/+cC1P/nAtb/5wLY/+cC2v/nAtz/5wLe/+cC4P/nAuL/5wLk/+cC5v/nAuj/5wOv/+cD1f/nA9n/5wPc/+cD9//nA/3/5wQC/+cEEP/nBBL/5wQT/+cEH//nBC7/5wRI/+cESv/nBEz/5wRO/+cEUP/nBFL/5wRU/+cEVv/nBGr/5wRs/+cEbv/nBHL/5wSt/+cEuv/nBLz/5wBNAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCU/+gAmf/oALv/6ADI/+gAyf/oAPf/6AED/+gBHv/oASL/6AFC/+gBYP/oAWH/6AFr/+gBhAAQAYUAEAGHABABiAAQAYkAEAKy/+gCs//oArT/6AK1/+gCtv/oAs7/6ALQ/+gC0v/oAtT/6ALW/+gC2P/oAtr/6ALc/+gC3v/oAuD/6ALi/+gC5P/oAub/6ALo/+gDr//oA9X/6APZ/+gD3P/oA+wAEAPtABAD8AAQA/f/6AP9/+gEAv/oBBD/6AQS/+gEE//oBB//6AQu/+gESP/oBEr/6ARM/+gETv/oBFD/6ARS/+gEVP/oBFb/6ARq/+gEbP/oBG7/6ARy/+gErf/oBLr/6AS8/+gATwBHAAEASAABAEkAAQBLAAEAVQABAJQAAQCZAAEAuwABAMgAAQDJAAEA7QArAPIAFAD2/+MA9wABAPn/8AD8/+YA/v/1AQMAAQEEABQBHgABASIAAQE6/9MBQgABAUj/8AFK/98BUQAUAWAAAQFhAAEBawABAW3/4wFwABQCsgABArMAAQK0AAECtQABArYAAQLOAAEC0AABAtIAAQLUAAEC1gABAtgAAQLaAAEC3AABAt4AAQLgAAEC4gABAuQAAQLmAAEC6AABA68AAQPVAAED2QABA9wAAQP3AAED/QABBAIAAQQQAAEEEgABBBMAAQQfAAEEK//wBC4AAQRIAAEESgABBEwAAQROAAEEUAABBFIAAQRUAAEEVgABBGoAAQRsAAEEbgABBHIAAQSL//AErQABBLoAAQS8AAEAUwA4/74AUf/1AFL/9QBU//UAWv/vAF3/7wC9/+8Awf/1ANL/vgDW/74A5v/JAOz/9QDw//UA8f/1APP/9QD0//UA9f/1APb/3wD4//UA+v/1APv/9QD+//UBAP/1AQX/9QEJ/+0BGv/vASD/6wEr//UBNv/1ATn/vgE6/98BPP/1AT7/9QFF/74BTP/pAVP/9QFV//UBV//1AVz/9QFj//UBbf/gArv/9QLF/+8Cxv/vAwP/9QMF//UDB//1Awj/9QMf/74DIf++AyP/vgM0/+8Dsf/1A7f/7wPS/74D1v/1A9j/9QPa/+8D3f/1A+L/9QPj/+8D6//vA/L/9QP4//UD/P/vBAT/7wQZ//UEG//1BCX/7wQn/+8EKf/vBC3/9QSC/+8EhP/vBIb/7wSI/74Ejf/1BKn/9QTG//UEyP/1BND/vgTU/+8E1v/vAGgAOP8zADr/yAA8//AAPf+sAFH/7wBS/+8AVP/vAMH/7wDS/zMA1P/1ANb/MwDa//AA3f/1AN7/6wDh/+YA5v/CAOz/7wDw/+8A8f/vAPP/7wD0/+8A9f/vAPb/zgD4/+8A+v/vAPv/7wD+/+8BAP/vAQX/7wEZ/8gBK//vATP/8AE2/+8BOf8zATr/zQE8/+8BPv/vAUP/8AFF/zMBR//mAUn/5gFM/98BUP/1AVP/7wFV/+8BV//vAVz/7wFd//ABYv/QAWT/6wFm//UBbP+fAW3/0AFv//UCqv+sArv/7wMD/+8DBf/vAwf/7wMI/+8DH/8zAyH/MwMj/zMDM/+sAzX/rAOc/6wDq/+sA6z/8AOu/6wDsf/vA8b/6wPS/zMD0//wA9b/7wPY/+8D3f/vA+L/7wPq/6wD8v/vA/j/7wP7/8gEA/+sBAb/8AQU//AEGf/vBBv/7wQk/+sEJv/rBCj/6wQq/+YELf/vBIH/rASD/6wEhf+sBIj/MwSK/+YEjf/vBJf/rASp/+8Exv/vBMj/7wTQ/zME0//IBNX/yABoAEf/tABI/7QASf+0AEv/tABMABQATwAUAFAAFABT/3oAVf+0AFf/ZABbAAsAlP+0AJn/tAC7/7QAyP+0AMn/tAD3/7QBA/+0ARj/egEe/7QBIv+0AUL/tAFg/7QBYf+0AWv/tAHR/2QCsv+0ArP/tAK0/7QCtf+0Arb/tAK8/3oCvf96Ar7/egK//3oCwP96As7/tALQ/7QC0v+0AtT/tALW/7QC2P+0Atr/tALc/7QC3v+0AuD/tALi/7QC5P+0Aub/tALo/7QDCv96Awz/egMO/3oDFv9kAxj/ZAMa/2QDHP9kAx7/ZAOv/7QDtf96A7v/egPV/7QD1/96A9n/tAPc/7QD3v9kA/f/tAP9/7QEAv+0BBD/tAQS/7QEE/+0BB3/egQf/7QEIf96BC7/tARI/7QESv+0BEz/tARO/7QEUP+0BFL/tARU/7QEVv+0BFz/egRe/3oEYP96BGL/egRk/3oEZv96BGj/egRq/7QEbP+0BG7/tARw/3oEcv+0BK3/tASx/3oEuv+0BLz/tAS+ABQEwAAUBMIAFATP/2QAagA4/+YAOv/nADz/8gA9/+cAUf/xAFL/8QBU//EAXP/xAMH/8QDS/+YA1v/mANr/8gDe/+4A4f/oAOb/5gDs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ASL/3AEr/+EBNv/hATz/4QE+/+EBQv/cAVP/4QFV/+EBV//hAVz/4QFg/9wBYf/cAWv/3AKy/9wCs//cArT/3AK1/9wCtv/cArv/4QK8/9YCvf/WAr7/1gK//9YCwP/WAsH/3QLC/90Cw//dAsT/3QLF/+ECxv/hAs7/3ALQ/9wC0v/cAtT/3ALW/9wC2P/cAtr/3ALc/9wC3v/cAuD/3ALi/9wC5P/cAub/3ALo/9wDA//hAwX/4QMH/+EDCP/hAwr/1gMM/9YDDv/WAyb/3QMo/90DKv/dAyz/3QMu/90DMP/dAzT/4QOv/9wDsf/hA7P/3QO1/9YDt//hA7r/3QO7/9YDvP/dA9X/3APW/+ED1//WA9j/4QPZ/9wD2v/hA9z/3APd/+ED4v/hA+P/4QPr/+ED8v/hA/f/3AP4/+ED/P/hA/3/3AQC/9wEBP/hBBD/3AQS/9wEE//cBBn/4QQb/+EEHf/WBB//3AQh/9YEJf/hBCf/4QQp/+EELf/hBC7/3ARI/9wESv/cBEz/3ARO/9wEUP/cBFL/3ARU/9wEVv/cBFz/1gRe/9YEYP/WBGL/1gRk/9YEZv/WBGj/1gRq/9wEbP/cBG7/3ARw/9YEcv/cBHT/3QR2/90EeP/dBHr/3QR8/90Efv/dBID/3QSC/+EEhP/hBIb/4QSN/+EEqf/hBK3/3ASx/9YEtf/dBLr/3AS8/9wExv/hBMj/4QTU/+EE1v/hAL8ABgAMAAsADABH/+gASP/oAEn/6ABKAAwAS//oAFP/6gBV/+gAWgALAF0ACwCU/+gAmf/oALv/6AC9AAsAvv/0AMT/1wDGAAsAyP/oAMn/6ADKAAwA9//oAQP/6AEY/+oBGgALAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQADAGFAAwBhwAMAYgADAGJAAwB4wANAeYADQHoAA4B6f/1Aev/7AHt/+0B9f/sAfv/vwH8/+0B/f+/AgQADgIF/+0CCAAOAiAADgIh/+0CIgANAiQADgIq/+0CQf/uAkP/vwKy/+gCs//oArT/6AK1/+gCtv/oArz/6gK9/+oCvv/qAr//6gLA/+oCxQALAsYACwLO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/oAuT/6ALm/+gC6P/oAwr/6gMM/+oDDv/qAzQACwND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/8ADSf/AA17/wANf/8ADYP/AA5f/TgOf/04Dr//rA7P/6gO1/+sDt//oA7r/6gO7/+sDvP/qA8P/DQPH/04D0gAUA9T/3gPV/+sD1//rA9n/6wPa/+gD3P/rA+P/6APr/+gD8/9OA/T/3gP3/+sD/P/oA/3/6wQC/+sEBP/oBAn/TgQK/94EC/9OBAz/3gQQ/+sEEv/rBBP/6wQd/+sEH//rBCH/6wQl/+gEJ//oBCn/6AQu/+sEL/9OBDD/3gQx/04EMv/eBDP/TgQ0/94ENf9OBDb/3gQ3/04EOP/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ESP/rBEr/6wRM/+sETv/rBFD/6wRS/+sEVP/rBFb/6wRc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/rBGz/6wRu/+sEcP/rBHL/6wR0/+oEdv/qBHj/6gR6/+oEfP/qBH7/6gSA/+oEgv/oBIT/6ASG/+gEiAAUBKr/TgSr/94Erf/rBLH/6wS1/+oEuv/rBLz/6wTQABQE1P/oBNb/6ATc/8AE4//ABPv/wAACAKAABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAAtAAsALwA2AA0AOAA4ABUAOgA/ABYARQBGABwASQBKAB4ATABMACAATwBPACEAUQBUACIAVgBWACYAWABYACcAWgBdACgAXwBfACwAigCKAC0AlgCWAC4AnQCdAC8AsQC1ADAAtwC5ADUAuwC7ADgAvQC+ADkAwADBADsAwwDFAD0AxwDOAEAA0gDSAEgA1ADeAEkA4ADvAFQA8QDxAGQA9gD4AGUA+wD8AGgA/gEAAGoBAwEFAG0BCgEKAHABDQENAHEBGAEaAHIBIgEiAHUBLgEwAHYBMwE1AHkBNwE3AHwBOQE5AH0BOwE7AH4BQwFEAH8BVAFUAIEBVgFWAIIBWAFYAIMBXAFeAIQBhAGFAIcBhwGJAIkB6AHoAIwB6gHrAI0B7QHtAI8B8AHwAJAB+wH9AJECQAJAAJQCQwJDAJUCVQJVAJYCVwJYAJcCiwKMAJkCjgKOAJsCkAKlAJwCqgKxALICswK2ALoCuwLAAL4CxQLNAMQCzwLPAM0C0QLRAM4C0wLTAM8C1QLVANAC1wLgANEC6QLrANsC7QLtAN4C7wLvAN8C8QLxAOAC8wLzAOEC+AL4AOIC+gL6AOMC/AL8AOQC/gL+AOUDAAMAAOYDAgMOAOcDEAMQAPQDEgMSAPUDFAMUAPYDHwMfAPcDIQMhAPgDIwMjAPkDMQMxAPoDMwM2APsDOAM4AP8DOgM6AQADQANJAQEDVANYAQsDXgNgARADZQNlARMDdwN6ARQDfgOAARgDiQOJARsDlwOcARwDnwOuASIDsQOxATIDtQO1ATMDtwO3ATQDuwO7ATUDvgO/ATYDwQPCATgDxAPKAToDzAPOAUED0APVAUQD1wPYAUoD2gPdAUwD4wPkAVAD5gPmAVID6APoAVMD6gPtAVQD8AP1AVgD9wP3AV4D+wP8AV8EAQQBAWEEAwQMAWIEDwQQAWwEEgQVAW4EHAQdAXIEIQQhAXQEIwQpAXUELwRXAXwEWQRZAaUEWwRoAaYEcARwAbQEgQSGAbUEiASIAbsEjASNAbwEkASQAb4EkgSTAb8ElQSVAcEElwSXAcIEqASsAcMErgSuAcgEsASxAckEswSzAcsEtwS5AcwEuwS7Ac8EvQS/AdAEwQTBAdMEwwTDAdQExQTLAdUEzQTNAdwE0ATQAd0E0wTXAd4E2QTZAeME2wTcAeQE4ATgAeYE4wTjAecE7gTuAegE+wT7AekFAgUCAeoFBgUGAesAAgCaAAYABgAAAAsACwABABAAEAACABIAEgADACUAKQAEACwANAAJADgAPgASAEUARwAZAEkASQAcAEwATAAdAFEAVAAeAFYAVgAiAFoAWgAjAFwAXgAkAIoAigAnAJYAlgAoALEAtAApAL0AvQAtAMEAwQAuAMcAxwAvANQA1QAwANcA1wAyANoA2gAzANwA3gA0AOAA5gA3AOwA7AA+AO4A7gA/APcA9wBAAPwA/ABBAP4A/wBCAQQBBQBEAQoBCgBGAQ0BDQBHARgBGgBIAS4BMABLATMBNQBOATcBNwBRATkBOQBSATsBOwBTAUMBRABUAVQBVABWAVYBVgBXAVgBWABYAVwBXgBZAYQBigBcAY4BjwBjAegB6ABlAe0B7QBmAfAB8QBnAfsB/QBpAg8CDwBsAh4CIABtAkACQABwAkMCQwBxAlUCVQByAlcCWABzAosCjAB1Ao4CjgB3ApACtgB4ArsCwACfAsUC1QClAtcC4AC2AukC6wDA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABkAJAAAAA4AFQAcAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAKAAUACgAAAAAAAAAAAAAAAAAVAAUAAAAAABUAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAABUABQASABkAFQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAABAAEAAQABAAEAAQABAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgALAAsACwALAAwABgAGAAYABgAGAAYABgABAAEAAQABAAEAAAAAAAAAAAADAAcABwAHAAcABwAIAAgACAAIAAkACQAEAAYABAAGAAQABgACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAcAAgAHAAIABwAAAAAAAAAAAAAAAAAUABEAFAARABQAEQAUABEAFAARAA0AAAANAAAADQAAAAsACAALAAgACwAIAAsACAALAAgACwAIABYAAAAMAAkADAAXAB0AFwAdABcAHQAAAAAAAgAAAAAAAAAAAAoACgAKAAoACgAKAAoABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUADgAOAA4ADgAS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AiQCJQInAikChwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA5MDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwUQA3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGBRMDhwOIA4oDiQOLA4wDjQOOA48DkAORA5IDlAOVA5YFEQUSBNwE3QTeBN8E6QTsBOoE6wTwBPEE8gTgBOEE4gT7BP4E/wUCBQQFBQIRBQcE8wT0BPUE9gT3BPgE+QT6BRQFFQUWBRcFCAUKBQsCKAUNAioFDgUMAiYCHAIiBRwFHQACBwAA+gH3AoIB4QHgAd8B3gHdAdwB2wHaAdkB2AJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeIB+AH5AoQChgKFAocCgwKIAmIB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CEAIRBQ8CEgITAhQCFQIWAhcCGAIZAhoCGwJLAh0CHgIfAiAFCQIhAiMCJAIlAiYCJwIoAikCKwIsAi4CLQNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YFEQUSBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AIPBPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBRQFFQUWBRcFCAUKBQsFDQIqBQ4FDAIcAiIFHAUdAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMZAxoAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwJ6AAIAAAABBt4AAQAGAssCzALdAt4DYANpAAEABgBNAE4C8gPfA+EEWgACAAMBlAGUAAAB1QHXAAECLwI1AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACZQJuAAoAAgAGAE0ATQAGAE4ATgAEAvIC8gAFA98D3wADA+ED4QACBFoEWgABAAIABAAUAB0AAAJ2AnYACgKBAoEACwSeBKUADAACAAYAGgAaAAAAHAAcAAECWgJfAAICYwJjAAgCZQJuAAkCdQJ1ABMAAQAUABoAHAJaAlsCXAJdAl4CXwJjAnUCdgKBBJ4EnwSgBKEEogSjBKQEpQABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAo0CjwKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAsgCygLMAs4C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9QL3AvkC+wL9Av8DAQMDAwUDBwMKAwwDDgMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzcDOQM7Az0DPwOvA7ADsQOyA7QDtQO2A7cDuAO5A7oDuwO8A70D1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPlA+cD6QPrBAAEAgQEBBIEGQQfBCUEjwSQBJQEmAUZBRsAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGnAa0BsgG1AosCjAKOApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAscCyQLLAs0CzwLRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL0AvYC+AL6AvwC/gMAAwIDBAMGAwkDCwMNAw8DEQMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM2AzgDOgM8Az4DlwOYA5kDmgObA5wDnQOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD5APmA+gD6gP/BAEEAwQYBB4EJASOBJMElwUYBRoBzAACAE0BzQACAFABzgADAEoATQHPAAMASgBQAAEAAQBKAcsAAgBKAdEAAgBYAdAAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBLcAAgCtAs0AAgCpBL0AAgCtBMoAAgCpBLgAAgCtAs4AAgCpBKcAAgCpBL4AAgCtBFoAAgCtBMsAAgCpAzwAAgCpAz4AAgCpAz0AAgCpAz8AAgCpBLYAAgCpBLsAAgHKBLkAAgCtBKYAAgCpAucAAgHKA/EAAgCpBMUAAgCtAx8AAgHKBNAAAgCtBNUAAgCtBNMAAgCqAzYAAgCpBNkAAgCtBLwAAgHKBLoAAgCtA/IAAgCpBMYAAgCtAyAAAgHKBNEAAgCtBNYAAgCtBNQAAgCqAzcAAgCpBNoAAgCtBL8AAgCpAvgAAgHKBMEAAgCtAvoAAgCpAvwAAgHKBMMAAgCtAxUAAgCpAxsAAgHKBM4AAgCtA+YAAgCpBNcAAgCtA+QAAgCoBMAAAgCpAvkAAgHKBMIAAgCtAvsAAgCpAv0AAgHKBMQAAgCtAxYAAgCpAxwAAgHKBM8AAgCtA+cAAgCpBNgAAgCtA+UAAgCoAw8AAgCpAxEAAgHKBMwAAgCtBLIAAgCsAxAAAgCpAxIAAgHKBM0AAgCtBLMAAgCsAwIAAgCpAwQAAgHKBMcAAgCtBKgAAgCoAqAAAgCqAqoAAgCpBIEAAgCtA+oAAgCoBIMAAgCrBIUAAgCqAwMAAgCpAwUAAgHKBMgAAgCtBKkAAgCoArsAAgCqAsUAAgCpBIIAAgCtA+sAAgCoBIQAAgCrBIYAAgCqArgAAgCpArcAAgCoBFgAAgCrAuwAAgCqBK8AAgCsBGkAAgCpBHEAAgCtBGsAAgCoBG0AAgCrBG8AAgCqBGoAAgCpBHIAAgCtBGwAAgCoBG4AAgCrBHAAAgCqBHcAAgCpBH8AAgCtBHkAAgCoBHsAAgCrBH0AAgCqBHgAAgCpBIAAAgCtBHoAAgCoBHwAAgCrBH4AAgCqApEAAgCpBC8AAgCtApAAAgCoBDEAAgCrApMAAgCqBKoAAgCsApkAAgCpBEcAAgCtApgAAgCoBEkAAgCrBEsAAgCqBKwAAgCsAp0AAgCpBFkAAgCtApwAAgCoBFcAAgCrAusAAgCqBK4AAgCsAqwAAgCpBDAAAgCtAqsAAgCoBDIAAgCrAq4AAgCqBKsAAgCsArQAAgCpBEgAAgCtArMAAgCoBEoAAgCrBEwAAgCqBK0AAgCsAr0AAgCpBFwAAgCtArwAAgCoBF4AAgCrAr8AAgCqBLEAAgCsAsIAAgCpBHQAAgCtAsEAAgCoBHYAAgCrAyYAAgCqBLUAAgCsAqIAAgCpBFsAAgCtAqEAAgCoBF0AAgCrAqQAAgCqBLAAAgCsAqcAAgCpBHMAAgCtAqYAAgCoBHUAAgCrAyUAAgCqBLQAAgCsBMkAAwCqAKkE0gADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==",
34
  "Roboto-MediumItalic.ttf": "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BGoAWwRqAAkF0gA7BKkAMgQmAA4EnAA0BEYABwPWAB4H7wAJBM7/2gLe//UC3v/zAt4ACwLeABYC3gAlAt4ABQLeADQDmQCRApoBCAPCAAkEGv+HBJIAOwUZACsFAAArBBAAFAUNACsECQAUBFcACQReADkEPwAJBHb/mgHvAOgDhQEEAAD9JwPZANwD2wAWA+wA3APcANsDnwAJA4EBBAOBAQUC6ACJAugAZgLoAH4C6ACJAugAmALoAHgC6ACnBUoAbAVzAGsFVQArBawAbgWuAG0ECQCrBF8AHAQ3/4EEl//RBEn/2AQOADEDhQEFAa3/uAZmADsEiwBFAfz/AARz/6kEc//ZBHP/yQRzABMEcwBMBHMAIgRzAFcEcwAxBHMANwRzAPgCH/8EAh//BAIRACMCEf98AhEAIwQ/AAkEwQBMBBAAVgRmABAEHgA2BHIANwRuAC0EegAyBG//yAR3ADYEKAA6BGYALgQ4/58DmwCrBOYAJAOn/+8GFf9+A+gACQSZ/9sE5wAiBLYACQH4AAACowBABS8AIAUvACAEbgArBLoAnQKW/+UFJf+jBSX/owUl/6MFJf+jBSX/owUl/6MFJf+jBREAXwRjACYEYwAmBGMAJgRjACYCMgA3AjIANwIyADcCMgA3BYEAJgVZAGIFWQBiBVkAYgVZAGIFWQBiBRQAWAUUAFgFFABYBRQAWAS9AKEELwAcBC8AHAQvABwELwAcBC8AHAQvABwELwAcBA0ANwQoADoEKAA6BCgAOgQoADoCBwAjAgcAIwIHACMCBwAjBFIADQRnADgEZwA4BGcAOARnADgEZwA4BFEASgRRAEoEUQBKBFEASgPN/7wDzf+8BSX/owQvABwFJf+jBC8AHAUl/6MELwAcBREAXwQNADcFEQBfBA0ANwURAF8EDQA3BREAXwQNADcFEQAmBPUAOARjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoFSQBmBGb/+QVJAGYEZv/5BUkAZgRm//kFSQBmBGb/+QWBACYEUAANAjIANwIHABMCMgA3AgcAIwIyADcCBwAjAjL/jgH6/3UCMgA3BoIANwPsACAETwAEAhX/BATnACYEDAARBDEAJgH6ACAEMQAmAfr/pgQxACYCkAAgBDEAJgLWACAFgQAmBFIADQWBACYEUgANBYEAJgRSAA0EUgANBVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BOIAJgK+ABEE4gAmAr7/nwTiACYCvgARBLQAJgP/ABsEtAAmA/8AGwS0ACYD/wAbBLQAJgP/ABsEtAAmA/8AGwS6AJ0ClgA/BLoAnQKWAD8EugCdAr4APwUUAFgEUQBKBRQAWARRAEoFFABYBFEASgUUAFgEUQBKBRQAWARRAEoFFABYBFEASgbVALUFwgB5BL0AoQPN/7wEvQChBK7/5QPo/+YErv/lA+j/5gSu/+UD6P/mB0X/jQaOAA4FVwAWBGMAKgRX/5YEV/+WBB4AYwR2/5oEdv+aBHb/mgR2/5oEdv+aBHb/mgR2/5oEXgA5A8IACQPCAAkDwgAJA8IACQHvABoB7wAaAe8AGgHvABoEtgAJBJkAOwSZADsEmQA7BJkAOwSZADsEZgA4BGYAOARmADgEZgA4BB4AbAR2/5oEdv+aBHb/mgReADkEXgA5BF4AOQReADkEVwAJA8IACQPCAAkDwgAJA8IACQPCAAkEgwA/BIMAPwSDAD8EgwA/BLcACQHvAA4B7wAaAe8AGgH5/5cB7wAaA7n/8wQ8AAkDmwAJA5sACQObAAkDmwAJBLYACQS2AAkEtgAJBJkAOwSZADsEmQA7BEMACQRDAAkEQwAJBBYADwQWAA8EFgAPBBYADwQeAGMEHgBjBB4AYwRmADgEZgA4BGYAOARmADgEZgA4BGYAOAXaAIsEHgBsBB4AbAQL/9YEC//WBAv/1gUl/6MEx/+6BeX/wgKW/8YFbQAmBSH/uAVEAB4CkAAJBSX/owTmACYEYwAmBK7/5QWBACYCMgA3BOcAJgbJACYFgQAmBVkAYgT0ACYEugCdBL0AoQTm/8ACMgA3BL0AoQRhADsEQwAoBGMAEQKQAGYEPABXBHcAIQRnADgEnf/eA9oAZAQ4/58CkABEBDwAVwRnADgEPABXBmEAUgRjACYEUgArBLQAJgIyADcCMgA3BE8ABAUAACsE5wAmBOQAmQUl/6ME5gAmBFIAKwRjACYFegAlBskAJgWBACYFWQBiBYIAKwT0ACYFEQBfBLoAnQTm/8AELwAcBCgAOgRvABcEZwA4BF3/yAQNADcDzf+8A+j/ugQoADoDQQAWA/8AGwH6ACACBwAjAfL/AgRKACIDzf+8BtUAtQXCAHkG1QC1BcIAeQbVALUFwgB5BL0AoQPN/7wBTACRAnoAnQQbADMCFf8EAa0AjQbJACYGwwAPBSX/owQvABwEYwAmBXoAJQQoADoEbwAXBYUAdgWfAD8E8QCoA+4AdQg0ADgJJgBiBLYAHwP4ABcFEQBfBA0ANwS9AKED7QB1AjIANwdu/6QGVf+wAjIANwUl/6MELwAcBSX/owQvABwHRf+NBo4ADgRjACYEKAA6BWIASwQZADQEGQA0B27/pAZV/7AEtgAfA/gAFwV6ACUEbwAXBXoAJQRvABcFWQBiBGcAOAVQAGEEZQA0BVAAYQRlADQFIABIBBkAIATkAJkDzf+8BOQAmQPN/7wE5ACZA83/vAVaAMQEQwBtBsUALAZIACMEXwA4BSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBSX/owQvABwFJf+jBC8AHAUl/6MELwAcBGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgRjACYEKAA6BGMAJgQoADoEYwAmBCgAOgIyADcCBwAjAjL//wH6/+MFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVZAGIEZwA4BVkAYgRnADgFWQBiBGcAOAVmAFwEegA0BWYAXAR6ADQFZgBcBHoANAVmAFwEegA0BWYAXAR6ADQFFABYBFEASgUUAFgEUQBKBXcAWATAAEoFdwBYBMAASgV3AFgEwABKBXcAWATAAEoFdwBYBMAASgS9AKEDzf+8BL0AoQPN/7wEvQChA83/vAR9//QEugCdA9sAVAVaAMQEQwBtBFIAKwNBABYF7ABVBKD/8gRQAA0E2wAkBNsAJARSAAADQf/HBRQAPwQkACgEvQChA+0AUgTm/8AD6P+6BEMAKARG/8IGBAB8BGkADQRpACYEaQANBGkAWAR9AHEEkQBLBH0AjASRAHMFSQBmBGb/+QWBACYEUgANBSX/owQvABwEYwAmBCgAOgIy/88CB/+ABVkAYgRnADgE4gAmAr4ADAUUAFgEUQBKBMj/hQTmACYEXQAQBREAJgRfADgFEQAmBF8AOAWBACYEUAANBOcAJgQMABEE5wAmBAwAEQQxACYB+v/jBskAJgbDAA8FgQAmBFIADQVZAGIE9AAmBF3/yATiACYCvv/dBLQAJgP/ABsEugCdApYAPwUUAFgFAwCaA9oAZAUDAJoD2gBkBtUAtQXCAHkErv/lA+j/5gWf/wEEdv+aA/7/pgTz/64CK/+xBKP/2ARa/2UExf/qBHb/mgQ/AAkDwgAJBAv/1gS3AAkB7wAaBDwACQXXAAkEtgAJBJkAOwRJAAkEHgBjBB4AbAQ7/6IB7wAaBB4AbAPCAAkDnwAJBBYADwHvABoB7wAaA7n/8wQ8AAkEKwB2BHb/mgQ/AAkDnwAJA8IACQS8AAsF1wAJBLcACQSZADsEswAJBEkACQReADkEHgBjBDv/ogQlAA4EtwAJBF4AOQQeAGwF0gA7BLwACwQrAHYFewBBBagAGgYV/34Emf/bBBYADwXaAIsF2gCLBdoAiwQeAGwFJf+jBC8AHARjACYEKAA6BHb/mgPCAAkCB//jAAAAAgAAAAMAAAAUAAMAAQAAABQABAZuAAAA9ACAAAYAdAAAAAIADQB+AKAArACtAL8AxgDPAOYA7wD+AQ8BEQElAScBMAFTAV8BZwF+AX8BjwGSAaEBsAHwAf8CGwI3AlkCvALHAskC3QLzAwEDAwMJAw8DIwOKA4wDkgOhA7ADuQPJA84D0gPWBCUELwRFBE8EYgRvBHkEhgSfBKkEsQS6BM4E1wThBPUFAQUQBRMeAR4/HoUe8R7zHvkfTSAJIAsgESAVIB4gIiAnIDAgMyA6IDwgRCB0IH8gpCCqIKwgsSC6IL0hBSETIRYhIiEmIS4hXiICIgYiDyISIhoiHiIrIkgiYCJlJcruAvbD+wT+///9//8AAAAAAAIADQAgAKAAoQCtAK4AwADHANAA5wDwAP8BEAESASYBKAExAVQBYAFoAX8BjwGSAaABrwHwAfoCGAI3AlkCvALGAskC2ALzAwADAwMJAw8DIwOEA4wDjgOTA6MDsQO6A8oD0QPWBAAEJgQwBEYEUARjBHAEegSIBKAEqgSyBLsEzwTYBOIE9gUCBREeAB4+HoAeoB7yHvQfTSAAIAogECATIBcgICAlIDAgMiA5IDwgRCB0IH8goyCmIKsgsSC5ILwhBSETIRYhIiEmIS4hWyICIgYiDyIRIhoiHiIrIkgiYCJkJcruAfbD+wH+///8//8AAQAA//b/5AHp/8IB3f/BAAAB0AAAAcsAAAHHAAABxQAAAcMAAAG7AAABvf8W/wf/Bf74/usB/wAAAAD+Zf5EATT92P3X/cn9tP2o/af9ov2d/YoAAAAPAA4AAAAA/QoAAP/v/P78+wAA/LoAAPyyAAD8pwAA/KEAAPyZAAD8kQAA/zkAAP82AAD8XgAA5fPls+Vk5Y/k+OWN5Y7hcuFz4W8AAOFs4WvhaeFh47rhWeOy4VDhIuEdAADhAgAA4P3g9uD14K7goeCf4JTflOCJ4F3fut6s367frd+m36Pfl99732TfYdv9E8cLBwbLAtMB1wABAAAAAAAAAAAAAAAAAAAAAADkAAAA7gAAARgAAAEyAAABMgAAATIAAAF0AAAAAAAAAAAAAAAAAAABdAF+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWwAAAAAAXQBkAAAAagAAAAAAAABwAAAAggAAAIwAAACUgAAAmIAAAKOAAACmgAAAr4AAALOAAAC4gAAAAAAAAAAAAAAAAAAAAAAAAAAAtIAAAAAAAAAAAAAAAAAAAAAAAAAAALCAAACwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQApECkgKTApQClQCBAowCoAKhAqICowKkAqUAggCDAqYCpwKoAqkCqgCEAIUCqwKsAq0CrgKvArAAhgCHArsCvAK9Ar4CvwLAAIgAiQLBAsICwwLEAsUAigKLAIsAjAKNAI0C9AL1AvYC9wL4AvkAjgL6AvsC/AL9Av4C/wMAAwEAjwCQAwIDAwMEAwUDBgMHAwgAkQCSAwkDCgMLAwwDDQMOAJMAlAMdAx4DIQMiAyMDJAKOAo8ClgKxAzwDPQM+Az8DGwMcAx8DIACuAK8DlwCwA5gDmQOaALEAsgOhA6IDowCzA6QDpQC0A6YDpwC1A6gAtgOpALcDqgOrALgDrAC5ALoDrQOuA68DsAOxA7IDswO0AMQDtgO3AMUDtQDGAMcAyADJAMoAywDMA7gAzQDOA/UDvgDSA78A0wPAA8EDwgPDANQA1QDWA8UD9gPGANcDxwDYA8gDyQDZA8oA2gDbANwDywPEAN0DzAPNA84DzwPQA9ED0gDeAN8D0wPUAOoA6wDsAO0D1QDuAO8A8APWAPEA8gDzAPQD1wD1A9gD2QD2A9oA9wPbA/cD3AECA90BAwPeA98D4APhAQQBBQEGA+ID+APjAQcBCAEJBJID+QP6ARcBGAEZARoD+wP8A/4D/QEoASkBKgErBJEBLAEtAS4BLwEwBJMElAExATIBMwE0A/8EAAE1ATYBNwE4BJUElgQBBAIEiASJBAMEBASXBJgEkAFMAU0EjgSPBAUEBgQHAU4BTwFQAVEBUgFTAVQBVQSKBIsBVgFXAVgEEgQRBBMEFAQVBBYEFwFZAVoEjASNBCwELQFbAVwBXQFeBJkEmgFfBC4EmwFvAXABgQGCBJ0EnAGnBIcBrQAAQEqZmJeWh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNRUE9OTUxLSklIR0YoHxAKCSwBsQsKQyNDZQotLACxCgtDI0MLLSwBsAZDsAdDZQotLLBPKyCwQFFYIUtSWEVEGyEhWRsjIbBAsAQlRbAEJUVhZIpjUlhFRBshIVlZLSwAsAdDsAZDCy0sS1MjS1FaWCBFimBEGyEhWS0sS1RYIEWKYEQbISFZLSxLUyNLUVpYOBshIVktLEtUWDgbISFZLSywAkNUWLBGKxshISEhWS0ssAJDVFiwRysbISEhWS0ssAJDVFiwSCsbISEhIVktLLACQ1RYsEkrGyEhIVktLCMgsABQiopksQADJVRYsEAbsQEDJVRYsAVDi1mwTytZI7BiKyMhI1hlWS0ssQgADCFUYEMtLLEMAAwhVGBDLSwBIEewAkMguBAAYrgQAGNXI7gBAGK4EABjV1pYsCBgZllILSyxAAIlsAIlsAIlU7gANSN4sAIlsAIlYLAgYyAgsAYlI2JQWIohsAFgIxsgILAGJSNiUlgjIbABYRuKISMhIFlZuP/BHGCwIGMjIS0ssQIAQrEjAYhRsUABiFNaWLgQALAgiFRYsgIBAkNgQlmxJAGIUVi4IACwQIhUWLICAgJDYEKxJAGIVFiyAiACQ2BCAEsBS1JYsgIIAkNgQlkbuEAAsICIVFiyAgQCQ2BCWbhAALCAY7gBAIhUWLICCAJDYEJZuUAAAQBjuAIAiFRYsgIQAkNgQlmxJgGIUVi5QAACAGO4BACIVFiyAkACQ2BCWblAAAQAY7gIAIhUWLICgAJDYEJZsSgBiFFYuUAACABjuBAAiFRYuQACAQCwAkNgQllZWVlZWVmxAAJDVFhACgVACEAJQAwCDQIbsQECQ1RYsgVACLoBAAAJAQCzDAENARuxgAJDUliyBUAIuAGAsQlAG7gBALACQ1JYsgVACLoBgAAJAUAbuAGAsAJDUliyBUAIuAIAsQlAG7IFQAi6AQAACQEAWVlZuEAAsICIVblAAAIAY7gEAIhVWlizDAANARuzDAANAVlZWUJCQkJCLSxFsQJOKyOwTysgsEBRWCFLUViwAiVFsQFOK2BZGyNLUViwAyVFIGSKY7BAU1ixAk4rYBshWRshWVlELSwgsABQIFgjZRsjWbEUFIpwRbBPKyOxYQYmYCuKWLAFQ4tZI1hlWSMQOi0ssAMlSWMjRmCwTysjsAQlsAQlSbADJWNWIGCwYmArsAMlIBBGikZgsCBjYTotLLAAFrECAyWxAQQlAT4APrEBAgYMsAojZUKwCyNCsQIDJbEBBCUBPwA/sQECBgywBiNlQrAHI0KwARaxAAJDVFhFI0UgGGmKYyNiICCwQFBYZxtmWWGwIGOwQCNhsAQjQhuxBABCISFZGAEtLCBFsQBOK0QtLEtRsUBPK1BbWCBFsQFOKyCKikQgsUAEJmFjYbEBTitEIRsjIYpFsQFOKyCKI0REWS0sS1GxQE8rUFtYRSCKsEBhY2AbIyFFWbEBTitELSwjRSCKRSNhIGSwQFGwBCUgsABTI7BAUVpasUBPK1RaWIoMZCNkI1NYsUBAimEgY2EbIGNZG4pZY7ECTitgRC0sAS0sAC0sBbELCkMjQ2UKLSyxCgtDI0MLAi0ssAIlY2awAiW4IABiYCNiLSywAiVjsCBgZrACJbggAGJgI2ItLLACJWNnsAIluCAAYmAjYi0ssAIlY2awIGCwAiW4IABiYCNiLSwjSrECTistLCNKsQFOKy0sI4pKI0VksAIlZLACJWFksANDUlghIGRZsQJOKyOwAFBYZVktLCOKSiNFZLACJWSwAiVhZLADQ1JYISBkWbEBTisjsABQWGVZLSwgsAMlSrECTiuKEDstLCCwAyVKsQFOK4oQOy0ssAMlsAMlirBnK4oQOy0ssAMlsAMlirBoK4oQOy0ssAMlRrADJUZgsAQlLrAEJbAEJbAEJiCwAFBYIbBqG7BsWSuwAyVGsAMlRmBhsIBiIIogECM6IyAQIzotLLADJUewAyVHYLAFJUewgGNhsAIlsAYlSWMjsAUlSrCAYyBYYhshWbAEJkZgikaKRmCwIGNhLSywBCawBCWwBCWwBCawbisgiiAQIzojIBAjOi0sIyCwAVRYIbACJbECTiuwgFAgYFkgYGAgsAFRWCEhGyCwBVFYISBmYbBAI2GxAAMlULADJbADJVBaWCCwAyVhilNYIbAAWRshWRuwB1RYIGZhZSMhGyEhsABZWVmxAk4rLSywAiWwBCVKsABTWLAAG4qKI4qwAVmwBCVGIGZhILAFJrAGJkmwBSawBSawcCsjYWWwIGAgZmGwIGFlLSywAiVGIIogsABQWCGxAk4rG0UjIVlhZbACJRA7LSywBCYguAIAYiC4AgBjiiNhILBdYCuwBSURihKKIDmKWLkAXRAAsAQmY1ZgKyMhIBAgRiCxAk4rI2EbIyEgiiAQSbECTitZOy0suQBdEACwCSVjVmArsAUlsAUlsAUmsG0rsV0HJWArsAUlsAUlsAUlsAUlsG8ruQBdEACwCCZjVmArILAAUliwUCuwBSWwBSWwByWwByWwBSWwcSuwAhc4sABSsAIlsAFSWliwBCWwBiVJsAMlsAUlSWAgsEBSWCEbsABSWCCwAlRYsAQlsAQlsAclsAclSbACFzgbsAQlsAQlsAQlsAYlSbACFzhZWVlZWSEhISEhLSy5AF0QALALJWNWYCuwByWwByWwBiWwBiWwDCWwDCWwCSWwCCWwbiuwBBc4sAclsAclsAcmsG0rsAQlsAQlsAQmsG0rsFArsAYlsAYlsAMlsHErsAUlsAUlsAMlsAIXOCCwBiWwBiWwBSWwcStgsAYlsAYlsAQlZbACFziwAiWwAiVgILBAU1ghsEBhI7BAYSMbuP/AUFiwQGAjsEBgI1lZsAglsAglsAQmsAIXOLAFJbAFJYqwAhc4ILAAUliwBiWwCCVJsAMlsAUlSWAgsEBSWCEbsABSWLAGJbAGJbAGJbAGJbALJbALJUmwBBc4sAYlsAYlsAYlsAYlsAolsAolsAclsHErsAQXOLAEJbAEJbAFJbAHJbAFJbBxK7ACFzgbsAQlsAQluP/AsAIXOFlZWSEhISEhISEhLSywBCWwAyWHsAMlsAMliiCwAFBYIbBlG7BoWStksAQlsAQlBrAEJbAEJUkgIGOwAyUgY1GxAAMlVFtYISEjIQcbIGOwAiUgY2EgsFMrimOwBSWwBSWHsAQlsAQmSrAAUFhlWbAEJiABRiMARrAFJiABRiMARrAAFgCwACNIAbAAI0gAILABI0iwAiNIASCwASNIsAIjSCOyAgABCCM4sgIAAQkjOLECAQewARZZLSwjEA0MimMjimNgZLlAAAQAY1BYsAA4GzxZLSywBiWwCSWwCSWwByawdisjsABUWAUbBFmwBCWwBiawdyuwBSWwBSawBSWwBSawdiuwAFRYBRsEWbB3Ky0ssAclsAolsAolsAgmsHYrirAAVFgFGwRZsAUlsAcmsHcrsAYlsAYmsAYlsAYmsHYrCLB3Ky0ssAclsAolsAolsAgmsHYriooIsAQlsAYmsHcrsAUlsAUmsAUlsAUmsHYrsABUWAUbBFmwdystLLAIJbALJbALJbAJJrB2K7AEJrAEJgiwBSWwByawdyuwBiWwBiawBiWwBiawdisIsHcrLSwDsAMlsAMlSrAEJbADJUoCsAUlsAUmSrAFJrAFJkqwBCZjiopjYS0ssV0OJWArsAwmEbAFJhKwCiU5sAclObAKJbAKJbAJJbB8K7AAULALJbAIJbAKJbB8K7AAUFRYsAclsAslh7AEJbAEJQuwCiUQsAklwbACJbACJQuwByUQsAYlwRuwByWwCyWwCyW4//+wdiuwBCWwBCULsAclsAolsHcrsAolsAglsAgluP//sHYrsAIlsAIlC7AKJbAHJbB3K1mwCiVGsAolRmCwCCVGsAglRmCwBiWwBiULsAwlsAwlsAwmILAAUFghsGobsGxZK7AEJbAEJQuwCSWwCSWwCSYgsABQWCGwahuwbFkrI7AKJUawCiVGYGGwIGMjsAglRrAIJUZgYbAgY7EBDCVUWAQbBVmwCiYgELADJTqwBiawBiYLsAcmIBCKOrEBByZUWAQbBVmwBSYgELACJTqKigsjIBAjOi0sI7ABVFi5AABAABu4QACwAFmKsAFUWLkAAEAAG7hAALAAWbB9Ky0siooIDYqwAVRYuQAAQAAbuEAAsABZsH0rLSwIsAFUWLkAAEAAG7hAALAAWQ2wfSstLLAEJrAEJggNsAQmsAQmCA2wfSstLCABRiMARrAKQ7ALQ4pjI2JhLSywCSuwBiUusAUlfcWwBiWwBSWwBCUgsABQWCGwahuwbFkrsAUlsAQlsAMlILAAUFghsGobsGxZKxiwCCWwByWwBiWwCiWwbyuwBiWwBSWwBCYgsABQWCGwZhuwaFkrsAUlsAQlsAQmILAAUFghsGYbsGhZK1RYfbAEJRCwAyXFsAIlELABJcWwBSYhsAUmIRuwBiawBCWwAyWwCCawbytZsQACQ1RYfbACJbCCK7AFJbCCKyAgaWGwBEMBI2GwYGAgaWGwIGEgsAgmsAgmirACFziKimEgaWFhsAIXOBshISEhWRgtLEtSsQECQ1NaWCMQIAE8ADwbISFZLSwjsAIlsAIlU1ggsAQlWDwbOVmwAWC4/+kcWSEhIS0ssAIlR7ACJUdUiiAgEBGwAWCKIBKwAWGwhSstLLAEJUewAiVHVCMgErABYSMgsAYmICAQEbABYLAGJrCFK4qKsIUrLSywAkNUWAwCiktTsAQmS1FaWAo4GwohIVkbISEhIVktLLCYK1gMAopLU7AEJktRWlgKOBsKISFZGyEhISFZLSwgsAJDVLABI7gAaCN4IbEAAkO4AF4jeSGwAkMjsCAgXFghISGwALgATRxZioogiiCKI7gQAGNWWLgQAGNWWCEhIbABuAAwHFkbIVmwgGIgXFghISGwALgAHRxZI7CAYiBcWCEhIbAAuAAMHFmKsAFhuP+rHCMhLSwgsAJDVLABI7gAgSN4IbEAAkO4AHcjeSGxAAJDirAgIFxYISEhuABnHFmKiiCKIIojuBAAY1ZYuBAAY1ZYsAQmsAFbsAQmsAQmsAQmGyEhISG4ADiwACMcWRshWbAEJiOwgGIgXFiKXIpaIyEjIbgAHhxZirCAYiBcWCEhIyG4AA4cWbAEJrABYbj/kxwjIS0AAED/fjR9VXw+/x97O/8fej3/H3k7QB94PP8fdzw9H3Y1Bx91Ov8fdDpnH3M5Tx9yOf8fcTb/H3A4zR9vOP8fbjdeH203zR9sN/8fazctH2o3GB9pNP8faDL/H2cyzR9mM/8fZTH/H2Qw/x9jMKsfYjBnH2Eu/x9gLoAfXy//H14vkx9dLf8fXCz/H1sr/x9aKs0fWSr/H1gqDR9XKf8fVij/H1UnJB9UJy0fUyVeH1Il/x9RJasfUCb/H08mgB9OJP8fTSMrH0wjqx9LI/8fSiNWH0kjKx9IIv8fRyD/H0Ygch9FIf8fRCFyH0Mf/x9CHpMfQR7/H0Ad/x8/HP8fPTuTQOofPDs0Hzo1Dh85NnIfODZPHzc2Ih82NZMfMzJAHzEwch8vLkofKypAHycZBB8mJSgfJTMbGVwkGhIfIwUaGVwiGf8fISA9HyA4GBZcHxgtHx4X/x8dFv8fHBYHHxszGRxbGDQWHFsaMxkcWxc0FhxbFRk+FqZaEzESVRExEFUSWRBZDTQMVQU0BFUMWQRZHwRfBAIPBH8E7wQDD14OVQs0ClUHNAZVATEAVQ5ZClkGWX8GAS8GTwZvBgM/Bl8GfwYDAFkvAAEvAG8A7wADCTQIVQM0AlUIWQJZHwJfAgIPAn8C7wIDA0BABQG4AZCwVCtLuAf/UkuwCVBbsAGIsCVTsAGIsEBRWrAGiLAAVVpbWLEBAY5ZhY2NAB1CS7CQU1iyAwAAHUJZsQICQ1FYsQQDjllzdAArACsrK3N0ACtzdHUAKwArACsrKysrc3QAKwArKysAKwArKysBKwErASsBKwErASsrACsrASsrASsAKwArASsrKysrASsrACsrKysrKysBKysAKysrKysrKwErACsrKysrKysrKysrKysBKysAKysrKysrKysrKwErKysrKysrACsrKysrKysrKysrKysrKysrKysrKxgAAAYAABUFsAAUBbAAFAQ6ABQAAP/sAAD/7AAA/+z+YP/1BbAAFQAA/+sAAAC9AMAAnQCdALoAlwCXACcAwACdAIYAvACrALoAmgDTALMAmQHgAJYAugCaAKkBCwCCAK4AoACMAJUAuQCpABcAkwCaAHsAiwChAN4AoACMAJ0AtgAnAMAAnQCkAIYAogCrALYAvwC6AIIAjgCaAKIAsgDTAJEAmQCtALMAvgHJAf0AlgC6AEcAmACdAKkBCwCCAJkAnwCpALAAgQCFAIsAlACpALUAugAXAFAAYwB4AH0AgwCLAJAAmACiAK4A1ADeASYAewCJAJMAnQClALQEjQAQAAAAAAAyADIAMgAyADIAXAB+ALUBNAHDAj8CVQKGArcC5AMDAx8DMQNPA2MDuQPTBBcEiQS2BQcFaQWHBgEGYgZuBnoGoQa+BuUHPQfvCCYIjQjYCR0JUgl+CdIJ/QoSCkEKdgqXCssK8AtCC3sL2gwiDIkMqQzbDQINQw1xDZYNxg3iDfYOEg43DkgOXA7NDycPcw/NECIQVRDGEQMRLRFqEZ8RtRIZElcSpBL/E1oTkBPuFCIUXhSDFMYU8xUvFV0VqhW+Fg0WUBZ2FtgXJxeNF9cX8xiQGMMZSBmmGbIZ0Rp5GosawhrqGyYbjBugG+QcBRwhHE0cZhyrHLccyBzZHOodQR2SHbAeEh5QHrUfYR/IIAUgYCC8ISAhVSFqIZ0hyiHsIiwifyL0I4sjsyQHJFskxyUnJWwlvCXkJjYmVyZ3Jn8mpSbCJvMnICdgJ38nryfDJ9gn4SgPKCwoSShdKJ0opSi+KO4pUSl3KaEpwCn4KlQqmCsBK3Ur4SwPLIIs8y1HLYUt6C4QLmQu3S8aL3AvwDAbME8wjTDlMSoxmzIFMl4y2zMqM4Iz5TQ0NHg0nzToNT81izX+NiI2XTaaNvQ3IDdaN4I3tjf5OD44eDjQOTo5fjn1OmE6ejrCOxI7gTulO9g8EzxEPG88mDy2PVc9gj27PeI+Fj5aPp4+2D8uP5U/20A9QJJA80FDQYlBsEIOQm1CskMVQ3dDs0PsREFEkkT7RWFF30ZdRuZHa0fYSC5IZEicSQxJc0oqSt9LUUvETA9MV0yFTKNM1EzqTP9Ntk4KTiZOQk6ETsxPN09bT39Pv0/9UBBQI1AvUEJQg1DCUP5ROlFNUWBRlVHKUg5SXFLTU0ZTWVNsU6JT2FPrU/5UR1SPVMlVM1WbVehWMlZFVlhWk1bQVuNW9lcJVxxXcFfBWBJYIVgxWD1YSViAWN1ZWlnYWlRay1tAW6FcBFxTXKZc911HXYxd0V5FXlFeXV6JXoleiV6JXoleiV6JXoleiV6JXoleiV6JXolekV6ZXqtevV7aXvZfEl8uX0lfVV9hX5BfsV/fX/9gC2AbYDhhAGEkYURhW2FkYW1hdmF/YYhhkWGaYdNh3GHlYe5h92IAYgliEmIbYiRiLWKFYsBjIWMtY4Zj1GQuZH9k1GUaZVtlnGYnZnlm42chZ29nhWeWZ6xnwmgvaExog2iVaMFpW2mYafdqJmpaao5qwWrOauxrCGsUa1BrkGvzbF1swW13bXdulG7abxRvOW98b9VwUHBscMVxDXE2caNx4XH6ckdydXKmctJzE3M2c2ZzhHPmdCl0hnS9dQp1LHVedXt1rHXYdet2FXZkdpB3C3dbd5t3uHfoeEB4YniLeLF46nk9eYR57Xo6eo166Xs0e3Z7qXvqfDR8hnz0fSB9U32Nfch9/X40fmZ+qH7nfvN/KH97f9+ALIBXgLSA8oExgWyB4IHsgiaCZIKpgt+DP4OQg9+EQYSdhPWFYoWlhgGGKoZshr6G2YdEh5aHqIfliBiIxYkliYOJt4nqihuKUIqRitmLQItwi42Lu4v6jB+MRYyFjM6M+o0pjXqNg42MjZWNno2njbCNuY4Ijl+OoY71j1iPd4+6kACQKpB3kJOQ6ZD7kXWR2ZH+kgaSDpIWkh6SJpIukjaSPpJGkk6SVpJekmaSeJKAkumTNZNTk62T+JRSlMOVEJVrlcaWF5aHltaW3pdSl3+X0JgJmGWYmJjcmNyY5Jk1mYaZzJn0mjWaSJpbmm6agZqVmqmav5rSmuWa+JsLmx+bMptFm1ibbJt/m5KbpZu4m8ub35vynAWcGJwsnD+cUpxlnHeciZycnLCcxpzZnOyc/50RnSSdNp1InVudb52BnZSdp525ncud3p3xngSeFp4pnjyeT55innSeh56anvOfhZ+Yn6ufvp/Qn+Of9qAJoBugLqBBoFSgZqB5oIugnqCxoQyhhKGXoamhvKHOoeGh86IGohmiLaJAolOiZqJ5ooyin6KyosWi2KLqovyjD6MboyejOqNNo2GjdaOIo5ujr6PDo9aj6aP1pAGkFKQnpDukT6RipHSkh6SapKykv6TSpOak+qUNpSClNKVIpVulbaWApZOlpqW4pcul3qXypgamGaYrpj+mU6ZmpnmmjKagprOmxabYpuqm/acQpySnOKdMp2Cnt6gZqCyoP6hSqGSoeKiLqJ6osajEqNeo6aj8qQ+pIqk1qUGpTalYqWupfqmQqaKptqnKqdap4qn1qgiqGqotqj+qUapkqniqi6qeqrGqw6rWquqq/asQqyKrNqtJq1urbqvBq9Sr5qv5rAusHawvrEGsVKyrrL2sz6zirPWtCa0brS6tQa1UrV+tca2ErZCtoq22rcKtzq3hre2uAK4SriWuOa5Mrliuaq59ro+um66trsGu067frvGvA68WryqvPq+Ur6evua/Mr9+v8rAEsBewK7A3sEuwX7BysIawm7CjsKuws7C7sMOwy7DTsNuw47DrsPOw+7EDsQuxH7EzsUaxWbFssX6xkrGasaKxqrGysbqxzrHhsfSyB7Iasi6yQbKmsq6ywrLKstKy5bL4swCzCLMQsxizK7MzszuzQ7NLs1OzW7Njs2uzc7N7s46zlrOes+ez77P3tAq0HbQltC20QbRJtFy0brSBtJS0p7S6tM604rT1tQe1D7UXtSO1NrU+tVG1ZLV5tY61obW0tce12rXiteq1/rYSth62KrY9tlC2Y7Z2tn62hraOtqG2tLa8ts+24rb2twm3EbcZtyy3PrdSt1q3bbeBt5W3qbe8t8+34bf1uAm4HbgwuDi4QLhUuGe4e7iOuKG4s7jHuNq47rkCuRa5Kbk9uVG5WbltuYG5lLmnubu5zrniufW6CbocujC6Q7pguny6kLqjure6yrreuvG7BbsYuzW7Urtmu3q7jbugu7O7xbvZu+y8ALwTvCe8OrxOvGG8fryavK28wLzUvOi8/L0QvSO9Nr1KvV29cb2EvZi9q72/vdK9774Lvh6+Mb5Evle+ar59vpC+or62vsq+3r7yvwW/GL8rvz6/Ub9kv3e/ir+dv6+/w7/Xv+u//8ASwCXAOMBKwGfAesCNwKDAs8DGwNnA7MD/wQfBSsGMwbHB1sIXwlrCisK/wvfDLsM2w0rDUsNaw2LDasNyw3rDgsOKw5LDpcO4w8vD3sPyxAbEGsQuxELEVsRqxH7EksSmxLrEzsTaxO7FAsUWxSrFPsVSxWbFesWNxaDFtMXIxdzF8MYExhjGLMZAxlTGZ8Z6xo7Gosa2xsrG3sbyxwbHGccrxz/HU8dnx3vHj8ejx7fHw8fPx9vH58fzx//IC8gTyBvII8gryDPIO8hDyEvIU8hbyGPIa8hzyHvIj8iiyLXIyMjQyNjI7Mj0yQfJGskiySrJMsk6yU3JVcldyWXJbcl1yX3JhcmNygnKPcqQypjKpMq3ysnK0crdyvDLA8sPyyLLNctJy1XLaMt7y47Locuty7nLzQAGAGQAAAMoBbAAAwAHAAsADwATABcAAEEVITUzESMRIREjERMVITUBASMBEQEzAQMJ/XYbNgLENhf9dgKK/a86AlH9rzoCUQWwNjb6UAWw+lAFsPqGNjYFXPqMBXT6jAV0+owAAgAz//ACHAWwAAMADwATQAkCAgcNC3IAAnIAKyvdzi8wMUEDIxMDNDY3NhYXFAYjBiYCHMnLm/BOOThNAU45OE0FsPv9BAP6vjtLAQFHOTlMAUYAAgCdA/gCvAYAAAUACwAMswkDCwUALzPNMjAxQQcDIxM3IQcDIxM3AZkXW4o7FwHNF1yJPBYGAJX+jQF0lJX+jQF8jAAEADIAAATcBbAAAwAHAAsADwAjQBEEAAUNDg4ACgkJAAICcgAScgArKxE5LzMROS8zMhEzMDFzATMBMwEzAQEhNyEDITchggIApv3/1QIBpP4AAh/8DhsD87f8DRsD8wWw+lAFsPpQA3Wb/YqbAAMAQf8sBEkGmQADAAcAPQA2QBwEBzo6CCsQIwQULzU1Bi8NcgECHx8UGhoDFAVyACvNMy8RMxI5OSvNMy8REhc5MxI5OTAxQQMjEwMDIxMBNiYmJy4CNz4CFx4DByM2LgInJgYGBwYWFhceAgcOAicuAzczBh4CFxY2NgNIMJcweyqWKwFaCDFbNWWnXQgIiNV9aJZfKQXqAgoiRThBYz0HCDFdNmSlXQgKkN+BaaFsNAXsAxEtUDpDcEkGmf7VASv5n/70AQwBSkFaPxYrcKR7gbliAwJKgKpgLV9RMwECNWA/Q1g9GCtypHmIuFwCAkR8qWY0YEsrAQExXwAABQC1/+gFOAXIABEAIwA1AEcASwAjQBFJMksFO0QpMhcOIAUFcjINcgArKzLEMhDEMjMRMxEzMDFTNz4CFx4CBwcOAicuAjcHBhYWFxY2Njc3NiYmJyYGBgE3PgIXHgIHBw4CJy4CNwcGFhYXFjY2Nzc2JiYnJgYGAQEnAboGCVmOW1d8PwYGCViOWlZ9QLIJAxMyLC1DKAcKAxIyLC5EKQFpBghajlpXfD8FBglXj1pWfUCyCAISMisvQygGCgISMiwuRCkBWPyRdwNwBEtMWItOAgJQiFRNWIlNAgJPh6FQJUYuAQEsSSlOJkgvAQEtSfxVTViKTgICUIdUTliJTgICUIeiUSVGLwECLEoqTyZILgEBLEkDSfuYTgRnAAEAKf/qBJ4FxwBCACRAFCMSAA8iAQYaMDArERE7E3IHGgNyACsyKzIvMjIvERc5MDFBJTY2NzYmJyIGBgcGFhYXASEBLgI3PgIXHgIHDgIHBQ4CBwYWFhcWPgI3Mw4CBwYGBwYGJy4CNz4CAXwBEDZUBwZGOTNMMAYHJj4cAh3/AP5GLFY3Bghts3JZk1QFBEFlOf6zJEIuBggqWkBorYNRDckKPm5OCREKVuF0dsBsCAdmkwMZqSNZQzpLATNSLzZoXyr81AKVQI2ZUnCsXgMCT4xdSndgJ94aRFAuP2I6AwNbm7xcaLujRQgTCUxQAgNhs31hlXMAAQCRA/4BlQYAAAUACLEDBQAvxjAxQQcDIxM3AZUXUps9FAYAi/6JAYGBAAABAGj+MQMXBl8AFwAIsQYTAC8vMDFTNzYSEjY3Fw4DBwcGBhYWFwcmJgICeQMVX5rajyRqm2xDEwMPDhlYWDd8k0QHAjsRkgE4ASDoQY1Pzev8fhVm+v3fTINM9AEhASgAAAH/lP4wAksGXQAXAAixEwYALy8wMUEHBgICBgcnPgM3NzY2JiYnNxYWEhICOgIVYZzdkSRpm21DEwQODhtXVzl7lUcJAlURk/7I/t7mQYdQzu3+fhZk+f7gS4NM8v7e/tkAAQBoAk4DqgWxAA4AFEAKDQEHBAQODAYCcgArxDIXOTAxUxMlNwUTMwMlFwUTBwMDjPn+404BGy+rTAE0F/68m5GB4ALFAQ5ZnXgBYP6lcq9b/u9fASP+6QAAAgA8AJIEKwS2AAMABwAQtQcHAwMGAgAvxjMQxi8wMUEHITcBAyMTBCsl/DYmAp645LgDHtnZAZj73AQkAAAB/4/+uAEVAOgACgAIsQQAAC/NMDFlBwYGByc+Ajc3ARUdEn5dfCE8LQsg6Kt1yUdNMF5mOrUAAAEAQAIOAmUCzgADAAixAwIALzMwMUEHITcCZSL9/SECzsDAAAEALv/yAUIA/wALAAqzAwkLcgArMjAxdyY2NzYWFRYGBwYmLwFQOjpPAVA7OFB0O04BAUk6O00BAUgAAAH/fv+DA3kFsAADAAmyAAIBAC8/MDFBASMBA3n8x8IDOQWw+dMGLQACAF//6AQ4BcgAFwAvABNACSsGHxIFcgYNcgArKzIRMzAxQQcOAycuBDc3PgMXHgQBEzY2LgInJg4CBwMGBh4CFxY+AgQtJRJKgcSLao9YKAQLIxJMgcSJapFXKQT+4S4FCQchRjtSbEMjCi0FCQYgRjxSbUEkA1Ltd+S3awQCTIChslfud+K1aAQCSn2gsf6YATYqaGhZOQIES3uOQP7LKWlsWzsDA0x+kQAAAQDxAAADeQW1AAYADLUGBHIBDHIAKyswMUEDIxMFNyUDeffrzP6OJQJBBbX6SwSSedHLAAEADQAABDwFxwAfABlADBAQDBUFcgMfHwIMcgArMhEzKzIyLzAxZQchNwE+Ajc2JiYnJgYGBwc+AhceAgcOAwcBA98e/EwbAhIzcVcLByBRQlF1RQrpC5Hnine8ZgsHSGt6Of6VwMCuAf0xdoZLPGZAAQNKfksBi9N0AgJcsH1Ulod4Nv6lAAACACb/6gQ4BccAHAA7ACpAFhscHh8EAAAdHRIzLy8pDXINDQkSBXIAKzIyLysyLzIROS8zEhc5MDFBFz4CNzYmJicmBgYHBz4CFx4CBw4DIycHNxceAwcOAycuAzczBhYWFxY2Njc2JiYnAaKCSntQCAckVEFCaUQL6wqQ2Xl6wGgJBluNplG+CBaiVZt3PwYHW5K3Y12cczwC6gMvXENKeEsICTBlSQNFAgI1aExAYDcCATRfPwF+tV8CAmC1gFyJXC8BNoQBAixXiWBopHA4AgI6aphfQWI4AgI8bktLZjYCAAACAA0AAAQrBbAABwALAB1ADgMHBwYCAgUJDHILBQRyACsyKxI5LzkzEjkwMUEHITcBMwkCAyMTBCsi/AQUAwLL/vH+QgL7/Ov8AgfAnQPM/pD9yAOo+lAFsAABAFj/6ARzBbAAKQAdQA4nCQkCHRkZEw1yBQIEcgArMisyLzIROS8zMDFBJxMhByEDNjYzMh4CBw4DJy4DJzMeAhcWPgI3Ni4CJyYGAXjAvgL9IP3KZzJzO2aTWiMICVKJuW5cl24+AuUEKlZDQmJFJgYFEC9SPEBpAqYxAtnM/poeHVCHrF1stoZJAwE+b5dbPmQ8AgE0WXA6NWRQLwIBLAABAF3/6QQOBboANgAbQA0OLBgiIiwDAARyLA1yACsrMhE5LzMRMzAxQTMHIyYOAgcHBh4CFxY+Ajc2LgInJgYGByc+AxceAwcOAycuAzc3NhI2JAOpIxQMdsKTXhEfBgUkTkM/YkUoBgULKUs7R3hUEFcPTHOXW2OKVSAICVOIt21zpGQmDA0Yfc0BGwW6xQFKir1x5jN4bUgCAjVbbjcwZ1g3AgFBbkIfVZNuPAMCVIqpV2m4jU4DAmSkyGdkqQEn4X8AAQCGAAAEmwWwAAYAE0AJAQUFBgRyAwxyACsrMhEzMDFBBwEhASE3BJsW/QP+/gL5/SofBbCQ+uAE8MAABAA3/+kEQgXHABAAIAAwAEAAIUAQDT09JS0VFQQ1LQVyHQQNcgArMisyEjkvEjkzEjkwMUEOAicuAjc+AxceAgc2JiYnJgYGBwYWFhcWNjYBDgInLgI3PgIXHgIHNiYmJyYGBgcGFhYXFjY2A+IKk+WDecJrCQdckrJdcsNx8QcnV0NKdUoIBydYREp0SQFJCI/Wc2q2agcIh9Z9dbRg9QUgSzxCZjwHBh5MPUJlPgGVisBiAwJhtYFjm2k1AgJer24/aUIBAkN1RkFnPQECP3EC4HquWwMCWaNygrthAwJgsIE3YD0BAT5qPzdhPQEBP2sAAAEAjP/2BCwFxwA4ABtADQA4FiEhOAwrBXI4DHIAKysyETkvMxEzMDF3MxY+Ajc3Ni4CJyYOAgcGHgIXFj4CNxcOAycuAzc+AxceAwcHDgQHI+EPd7yMWBEjBgQiS0M+YUQnBQUKJ0k7OGFMNAtWCUp3l1VkjFUhBwlTh7hueKFaHQsLElWHvPCUG70BQXy0c/wwe3BMAQM6X3I2MGdbOgIBKUpeMxxRl3ZFAgJUiqpYaL2RUQMCa6zOZleJ9cmSUAH//wAn//IB0ARTBCYAEvkAAAcAEgCOA1T///+f/rgBvQRTBCcAEgB7A1QABgAQEAAAAgAzAK0DxwRSAAQACQAWQAwBAwcGAAQIBQgCCQIALy8SFzkwMVMBBwE3JQUHNwHrAmIo/Q4aA0/9X8QcA3QCkf7+4gF0lKb8JqYBcwAAAgBgAWQEGAPSAAMABwAOtQYHEgMCEAA/Mz8zMDFBByE3AQchNwQYI/y0IwMDJPy1IgPSxsb+WMbGAAIALQCiA9cESAAEAAkAFUALBQgEAAYDAQcCCQIALy8SFzkwMUEBNwEHBSU3BwEDFv2TJwMHG/ycAq7NHvx4AmkBAN/+jJWp+yum/owAAAIAk//yA9oFxwAgACwAG0ANAQEkJCoLchERDRYDcgArMjIvKzIRMy8wMUEHPgI3PgI3NiYmJyYGBgcHPgIXHgIHDgIHBgYBNDY3NhYVFgYHBiYCF9YIL1Q/LVpDCQYWQTg6WTkL6w2Bynlyq1kKB12GRD5B/stNOTlNAU46N00BrQJThnI2JlFiPzJVNAIBMFY3AXyuWQIDW6h1X5V7ODF4/nY6TAEBRzk6SgEBRgAAAgAu/joGqQWRAEEAaAAnQBISBQVHUhNyYWRkC11dHR08KTAALzMvMxEzLzMzETMrMjIRMzAxQQ4DJy4DNxMzAwYGFhYXFj4CNzY0LgInJg4DBwYGHgIXFjY3FwYGJy4DAjc2EjY2JBceAxIFBgYWFhcWPgI3Fw4DJy4DNz4EFxYWFwcmJicmDgIGkhBJd6hvRl0zDQqPro4FBgomJklpRioKFDRyuYaH6b2RYBgVATNxuIVYqlAcUMNdoOyeVA4YG3ax6AEZoJzmmlMR+/8GCwotMi5JOSoPQhdEWXJGVWMrAQwOO1l2lVlViENlI1YzUXZQMQIOX8OjYgMCO2F1PQI5/ccbQj0pAgNSg4w3ctq/klQCA1me0e16b9zDmVgBASYjhzMlAQJkr+cBDI+TARr0uGYCAmKs4/779iFcWT8CAjFOVSJXOnJcNgIDV4WWQUuilnhFAgE9MnUkKAICUYOVAAAD/6MAAASrBbAABAAJAA0AKUAUBAcHCg0NBgALDAwCCAMCcgUCCHIAKzIrMhE5LzM5OTMRMzIRMzAxQQEhATMTAzczAQMHITcDKP2F/vYDEKtUzg+fARmyI/z+IwTh+x8FsPpQBPy0+lACHMfHAAIAJv//BLcFsAAZADAAKUAUGSkmAicnASYmDgwPAnIcGxsOCHIAKzIRMysyETkvMzMRMxI5OTAxQSE3BTI2Njc2JiYnJwMjEwUeAwcOAgcDITcFMjY2NzYmJiclNwUXHgIHDgICt/6MHgEtR4BYCwkvYkL42vb9AdFdpn1DBwh4uWbT/j+QAThLgFULCSJYRv7gIgFaKl6HQwYLnPICkrcBLV9NSFYnAQH7GAWwAQIrWpFpcJVPCv0wxwE0aU1EYzcDAbcBRQlZkl+WwFsAAQBf/+gFCgXHACcAFUAKGRUQA3IkAAUJcgArzDMrzDMwMUE3BgYEJy4DNzc+AxceAhcnNCYmJyYOAgcHBhQWFhcWNjYDtvAYrf78nI/CbiMRERRqq+yVmdFwBfMvbF5mlGU6DRIKKWlgZI9dAdkDnOF3BAN4xfJ9eYb6xG8DA3/glAFWhk4DA1SQr1Z8SKaUYQMERoYAAgAmAAAE2QWwABoAHgAbQA0CAQEdDg8PHgJyHQhyACsrMhEzETMRMzAxYSE3BTI2Njc3Ni4CJyU3BR4DBwcOAgQDAyMTAdD+wyUBH5PPexUKCws+fGf+tSMBL5LVhjMQChV8xP7/UP32/ccChuCHUFWpjVcDAcgBA3G/9odOk/26ZwWw+lAFsAAABAAmAAAEvAWwAAMABwALAA8AHUAOCwoKBg8OBwJyAwIGCHIAKzIyKzIyETkvMzAxZQchNwEDIxMBByE3AQchNwPoI/0RIgEh/fb9AtMi/XIjA1Mj/RYkx8fHBOn6UAWw/aDExAJgyMgAAAMAJgAABKkFsAADAAcACwAbQA0HBgYCCgsLAwJyAghyACsrMhEzETkvMzAxQQMjEwEHITcBByE3Ahn99v0CxyP9gSMDPiP9MCQFsPpQBbD9g8fHAn3IyAABAGb/6wUXBccAKwAbQA0rKioFGRUQA3IkBQlyACsyK8wzEjkvMzAxQQMOAicuAzc3PgMXHgIXIy4CJyYOAgcHBh4CFxY2NjcTITcE5lk+udBflMx4KREPE2mr7pqT0HUK7Qc3bFNpl2Y8DQ8KBjV1ZDVmXio1/tohAuj901BbJQECd8b3hGSL/cVwAwJxzpBPdkMDBFiTslhoT6yWXgIBDycjASG7AAADACYAAAWFBbAAAwAHAAsAG0ANCQYIAwICBgcCcgYIcgArKxE5LzMyETMwMUEHITcTAyMTIQMjEwRhI/0QI6j99v0EYv3z/ANQx8cCYPpQBbD6UAWwAAEANwAAAikFsAADAAy1AAJyAQhyACsrMDFBAyMTAin99f0FsPpQBbAAAAEABP/oBF0FsAATABNACRAMDAcJcgICcgArKzIvMjAxQRMzAw4CJy4CNzMGFhYXFjY2Aruu9K4TjeCNhrtdB/YFHVBJTG9DAbQD/PwFitBzAgNrw4ZCakECAkd3AAADACYAAAVyBbAAAwAJAA0AHEAQBgcLBQwIBgIEAwJyCgIIcgArMisyEhc5MDFBAyMTIQEBEwEBAwE3AQIZ/fb9BE/9R/53AQEYAe7J/qC9AbYFsPpQBbD9P/6ZAQwBIwH5+lACvKL8ogAAAgAmAAADwAWwAAMABwAVQAoDAgIGBwJyBghyACsrETMRMzAxZQchNwEDIxMDwCP9OSMBIP32/cfHxwTp+lAFsAAAAwAmAAAGzgWwAAYACwAQABtADQIHDgULCHIMBAAHAnIAKzIyMisyMhE5MDFBMxMBMwEjATMDAyMBMwMjEwGL0dUCWuT86K7+etCFU/UF1tL99VcFsPufBGH6UAWw/Cv+JQWw+lAB8AABACYAAAWGBbAACQAXQAsDCAUJBwJyAgUIcgArMisyEjk5MDFBAyMBAyMTMwETBYb97v43tvb97gHKtwWw+lAEHfvjBbD74QQfAAIAYv/pBSIFxwAVACsAE0AJJwYcEQNyBglyACsrMhEzMDFBBwYCBgYnLgM3NzYSNjYXHgMFNzYuAicmDgIHBwYeAhcWPgIFEgoUa63wmZLIcSYQCxRsrvCYk8dxJP7wCwkCLm1kZ5loPQwLCgMubmJpmGg9AwJPiv7/y3QDA3zM+YBPiQEAy3QDA3vM+NJTS6uZYgQEWZa0V1NKrJplAwRalrQAAQAmAAAE+gWwABcAF0ALAgEBDgwPAnIOCHIAKysyETkvMzAxQSU3BTI2Njc2JiYnJQMjEwUeAgcOAgKs/oIjAWNTi1sLCyxkTP7P2vb9AguH1HEMDaX+Ah4BxwE5clhKcUEDAfsYBbABA23IjZ3NYgAAAwBe/wMFHgXHAAMAGQAvABlADCAVA3IAKysDCglyAgAvKzIyETMrMjAxZQEHAQEHBgIGBicuAzc3NhI2NhceAwU3Ni4CJyYOAgcHBh4CFxY+AgMqAUqr/rwCiQsTa67wmJPIcSUQChRsrvGXk8dyJP7vCwkBLm5jaJhoPgwLCQIubmNomWc8wv7HhgE2AslPiv7+ynQDA3zM+YBQiAEAy3QDA3vL+dJTS6uZYgQEWZa0V1NKrJplAwRalrQAAAIAJgAABNUFsAAYAB0AI0ASGxoJAwwMCwsAHBkYCHIWAAJyACsyKzIyEjkvMxIXOTAxQQUeAgcOAgcHITcFMjY2NzYmJiclAyMhAzcTFQEjAeeF03MMCWWjZ1H+MSEBRFCIWgsKLGRK/vPa9gMt2/XrBbABA168kHSjcCUkxwE7cVJMajkCAfsYAo4B/X8OAAEAJv/qBL0FxgA5AB9ADwomDzYxMSsJchgUFA8DcgArMi8yKzIvMhE5OTAxQTYuAicuAzc+AxceAgcjNiYmJyYGBgcGHgIXHgMHDgMnLgM3FwYeAjMWNjYDUAkoS14uTJR3QgYIZ6C+XoXQdgX0BjFoTUWAWQsILVBcKFGVdD4HCWaevmFnt4pLBPQEIUZlP0SBWwF+O1E3JhEbSmaLXWmbZjECA2zGiExtPQECLV5KNEw0JA4cTWqRYWubYi4CAT53qm0BQGNCIgIqWwAAAgCdAAAFJQWwAAMABwAVQAoAAwMGBwJyAQhyACsrMjIRMzAxQQMjEyEHITcDavz0/QKuI/ubIwWw+lAFsMjIAAEAWP/oBTEFsAAVABNACQERBgsCcgYJcgArKxEzMjAxQTMDDgInLgI3EzMDBhYWFxY2NjcEPPWmF6X/npXaaxKm9KUKJmpbYY9YDgWw/DWd5noDA33hlwPN/DJUh1ICA0uMXAACAJoAAAV/BbAABAAJABdACwAGCAEJAnIDCAhyACsyKzISOTkwMUEBIQEjAxMXIwECQAIpARb9Ir5EuQiy/uwBFQSb+lAFsPtP/wWwAAAEALUAAAc6BbAABQAKAA8AFQAbQA0QDAEKAnITEg4ECQhyACsyMjIyKzIyMjAxQQEzAwEjExMDIwMBATMBIwMTAyMDEwHIAcWWPf4hnTo2HqNkBAEBjPj91qYPZweYdBoBUgRe/tL7fgWw+5T+vAWw+64EUvpQBbD7iP7IBJgBGAAAAf/AAAAFRgWwAAsAGkAOBwQKAQQJAwsCcgYJCHIAKzIrMhIXOTAxQRMBIQEBIQMBIQEBAcnYAX4BJ/3bAT/+8N7+eP7WAjL+yQWw/e8CEf0j/S0CHP3kAuoCxgABAKEAAAVQBbAACAAXQAwEBwEDBgMIAnIGCHIAKysyEhc5MDFBEwEhAQMjEwEBps4BwAEc/Xxb92D+xwWw/UsCtfxc/fQCJQOLAAP/5QAABOsFsAADAAkADQAfQA8EDAwJDQJyBwMDAgIGCHIAKzIRMxEzKzIyETMwMWUHITcBASM3ATMjByE3BCcj/CojBH37w6weBD6qWyP8VyPHx8cEQ/r2qwUFyMgAAAH/8P66ArQGjwAHAA60AwYCBwYALy8zETMwMUEHIwMzByEBArQen/+gHf51ATkGj7r5oLsH1QAAAQCr/4MCxwWwAAMACbIBAgAALz8wMUUBMwEB5v7F4QE7fQYt+dMAAAH/ev66AkAGjwAHAA60BQQAAQQALy8zETMwMVM3IQEhNzMTlh4BjP7H/nMdof4F1br4K7sGYAAAAgBEAtkDMQWwAAQACQAWQAkIBwcGAAUCAwIAP80yOTkzETMwMUEBIwEzEQMnMxMCIP700AGhkWgCgqMEv/4aAtf9KQH+2f0pAAAB/3n/RAMRAAAAAwAIsQIDAC8zMDFhByE3AxEh/IkhvLwAAQDPBNMCWQYAAAMACrIDgAIALxrNMDFBEyMDAcuOtNYGAP7TASwAAAIAHP/pA9EEUAAbADoAKUAVKyweJx46Og8nMQtyGBkKcgkFDwdyACsyMisyKzISOS8zERI5OTAxZRM2JiYnJgYGBwc+AxceAgcDBgYXBwcmNBMHJyIOAgcGFhYXFjY2NxcOAycuAjc+AzMCiFIGGkU4Mlg9CusGWYmfTG6qWQtPCQcTAukPdRicMGVYPAcFH0AsO3NVED8WT2h7QVqUVgUFYZm2WdkCBzRUMQEBI0QxAVV/UycBAlqkdP4eOXc3EgE1bwHvlQESLEs4LUEmAQEwWTpsPWZKKAECT45daY1TJAADABD/6AQRBgAABAAaAC8AGUAOIRYHcisLC3IECnIAAHIAKysrMisyMDFBMwMHIwEHDgMnLgM3Nz4DFx4DBzc2LgInJg4CBwcGFhYXFj4CARvs5TvXA/cCDUN1q3RniU4cBAgRS3ina3CMSRP4AwYBHktGPmRMMg0cAyhcS0tpQyYGAPrZ2QItFWTHpGEDAmKct1hEXb2dXQMDZaC+cBYzeGxFAgMtT2Y3t0N8UQIDQmyCAAABADf/6gPmBFEAJwAZQAwdGRkUB3IEBAAJC3IAKzIyLysyLzIwMWUWNjY3Nw4CJy4DNzc+AxceAgcnNCYmJyYOAgcHBh4CAeA7YkEN3w2Jy3Fzo2QnCgQMU4u+d3iuXAHdJU8/SmlFJwcEBQMiT6sBLlY4AXSsXQICWpjBaCRvxplWAwJqt3UBOGE9AgI+an8+IzV5akQAAAMAOP/oBIcGAAAEABoALwAZQA0hBAQWC3IrCwdyAQByACsrMisyLzIwMWUTMwEjATc+AxceAwcHDgMnLgM3BwYeAhcWNjY3NzYuAicmDgICueHt/vXU/ZkCDUV3rXVmiE0cBQgQTHmna2uMTBb5AgYCH0tET3tSERwDEzBPOEprRSjuBRL6AAIJFWTIpmIDA2Set1dEXLycXAMEZaG7cBU0dmtGAwNOfke3MmJQMwEDQm6CAAEAOv/rA/AEUQArAB9AEGcTAQYTEhIAGQsHciQAC3IAKzIrMhE5LzNfXTAxRS4DNzc+AxceAwcHITcFNzYmJicmDgIHBwYeAhcWNjcXDgIB9m+rcDIIBAtUjcB2cZxcHwsO/NQcAj0ECR9SRUtrRicIBAYSNFxEVYs5dC6HnRQCU4+7ailty59cAwJalbxlZ60BFT9wSAICQnCDPig7dF87AgJLPHtFWisAAgBeAAADWwYZABEAFQAVQAsUFQZyDQYBcgEKcgArKzIrMjAxYSMTPgIXFhYXByYmJyIGBgcXByE3AU7syg5ssHYkSCMXFi0XOVc3Ccgg/ZwgBKJyqVwBAQoIvAUGASxPOGiwsAAAA//5/lEEQgRRABMAKQA+ABtADzAlC3I6GgdyDgYPcgAGcgArKzIrMisyMDFBMwMOAicuAic3FhYXFjY2NxMBNz4DFx4DBwcOAycuAzcHBh4CFxY2Njc3Ni4CJyYOAgNq2LMUk+iQSIx4K3sufE1UglMNjP0WAwxIea91aolLGgUIEEx5p2xrjk4Z+AIGBCJOQ1F9UxEcBBQxUDlLbUkqBDr75Y/QbwQBK1A7jD5IAgJBeFIDOP64FmTJpWACA2KcuFpEXbybXAMDZaC8cBU1dmpFAgRMfkm3M2NQMQEDQm6CAAIADQAAA/IGAAADABoAF0AMEQIWCgdyAwByAgpyACsrKzIRMzAxQQEjARMjPgMXHgMHAyMTNiYmJyYOAgID/vXrAQsfSg1FdqZtWXdEFgl07XYGFERBRmtLLgYA+gAGAPxFXruZWgMCQnGRUf1JAro7XjkBAjhgdgAAAgAgAAACCgXYAAMADwAQtwcNAwZyAgpyACsrzjIwMUEDIxMTJjY3NhYVFgYHBiYBx7zrvCEBTjk3TwFPODdOBDr7xgQ6ARg6SgEBRTk6SAEBQwAAAv8C/kYCAQXYABEAHQATQAkNBg9yFRsABnIAK84yKzIwMVMzAw4CJyYmJzcWFjMyNjY3EyY2NzYWFRQGBwYm1+3IDVubbSNFIhUWKxYvQigH5wFOODhPTjg3TwQ6+2honVcCAQoIvAQIJkQtBbA6SgEBRTk6SAEBQwADABEAAAROBgAAAwAJAA0AHUARBgcLBQwIBgIJBgMAcgoCCnIAKzIrPxIXOTAxQQEjCQMnNwEDATcBAgj+9ewBCwMy/eH+zRzgAWB5/v6oAV0GAPoABgD+Ov36/u/c6gFR+8YCBqD9WgAAAQAgAAACFgYAAAMADLUDAHICCnIAKyswMUEBIwECFv716wEKBgD6AAYAAAADAA8AAAZhBFEABAAbADIAIUARKRICLiIiFwsDBnILB3ICCnIAKysrETMzETMRMzMwMUEDIxMzAyM+AxceAwcDIxM2JiYnJg4CJQc+AxceAwcDIxM2JiYnJg4CAY6T7LzebE4MRXaqcFNxRBYHeOx2BxZFQEdoRSsCjXILR3ekaFh4RRYJdex2BxVEQTpbQSgDUPywBDr+C2O9llYDAj5qh0z9LwK9Ol04AgI4YHcEGV6viU8CAkFwj1H9RAK+O102AQIrS2AAAAIADQAAA/IEUQAEABsAGUANEgIXCwMGcgsHcgIKcgArKysRMxEzMDFBAyMTMwMHPgMXHgMHAyMTNiYmJyYOAgGKkey83W9IDEd2qW9YdUEUCXTtdgYUREBGakwvA0X8uwQ6/gsBYb2XWAMCQnCQT/1FAr46XTcBAjhhdgACADj/6QQeBFEAFQArABC3HBELcicGB3IAKzIrMjAxUzc+AxceAwcHDgMnLgM3BwYeAhcWPgI3NzYuAicmDgJBAwxWj8N4dKdpKgoCDVePw3dzp2kq9gIFCChURkpuSiwHAgYIKFRGS25KKwILF3DKnVgDAlyZw2oXcMibVwMCW5jBgBc3empEAgJAbIE+FzZ7bUUCAkFuggAAA//I/mAEEARRAAQAGgAvABlADiEWB3IrCwtyAwZyAg5yACsrKzIrMjAxQQMjATMBBw4DJy4DNzc+AxceAwc3Ni4CJyYOAgcHBhYWFxY+AgGS3uwBBNkCYQIMRXWqc2WKUiEEChBNeqhtb4xJE/gDBQMgTUQ+ZEwzCx8DK11ISmpGKQNc+wQF2v3zFWLHpWIDAl2Ws1hQX76dXAMDZKC+cBYzeGtGAgMtUGY3xEJ3TAICQm+DAAADADf+YAQ4BFEABAAaAC8AGUAOIRYLcisLB3IEDnIDBnIAKysrMisyMDFBEzczAQE3PgMXHgMHBw4DJy4DNwcGHgIXFjY2Nzc2LgInJg4CAkfhO9X++/0OAwxFd651aIhPHAQIEU16qGttjEwX+gMGAyBLRFF8UhIcAxQxTzlLakcp/mAFEcn6JgOrFWTJpGACA2Odt1hEXrybXAMEZaC9bxUzeGxHAwNOgUi3M2NQMwECQm+CAAIAEQAAAvIEUwAEABYAGUANBgkJBRQHcgMGcgIKcgArKysyMhEzMDFBAyMTMyUHJiYjJg4CBwc+AxcyFgGSluu83wFGGhcvFz1iSjIOOAoxWIhhFy4DYPygBDoJ4QQGASRDXTkET6qTWwIIAAEAG//rA8EETwA1ABdACxsADjIpC3IXDgdyACsyKzIROTkwMUE2JiYnLgM3PgMXHgIHJzYmJicmBgYHBh4CFx4CBw4DJy4CNRcUFhYXMjY2ApcIQGAoPXlkOgMEUH+YS2mxawHqAidKNC1XPgcGIjxDG1WkaAUDVoafTWq7ceMvVTkvX0UBKzc9IAoPL0hpSVR+VCgBAk6YcAEySSgBASBAMSYxHhMGF0d/Z1h/USYBAlSfcwE6UCkBGz4AAgA//+0CrgVDAAMAFQATQAkKEQtyBAIDBnIAKzIvKzIwMUEHITcTMwMGFhYXFjY3BwYGJy4CNwKuH/2wHtnrswQJJScVKxYRJEsmWm4sCAQ6sLABCfvmIzQdAQEGA7oLCgEBUYhUAAACAEr/6AQvBDoABAAbABVACgERBnIYAwMLC3IAKzIvMisyMDFBEzMDIxM3DgMnLgM3EzMDBh4CFxY2NgK2jey83mNODEBupG9ZeUYXCHXrdgMGHDctYIFLAQsDL/vGAeADYreQUgMDQXCQUAK7/UInSDojAgNRjgACAGQAAAQSBDoABAAJABdACwAGCAEJBnIDCApyACsyKzISOTkwMWUBMwEjAxMHIwMBjgGI/P3pnQ18EJPGyQNx+8YEOvx2sAQ6AAQAeQAABfQEOgAFAAoADwAVACRAFAcLABEDFAYJEAwBCgZyEg4ECQpyACsyMjIrMjIyEhc5MDFlATMDASMTEwcjAwEBMwEjExMHIwM3AVgBf55a/oKNSSsYk2ADTAFD7P4pnAdgDYFpA/sDP/75/M0EOvyk3gQ6/MgDOPvGBDr8suwDS+8AAf+6AAAEEgQ6AAsAGkAOBwQKAQQJAwsGcgYJCnIAKzIrMhIXOTAxQRMBIQETIwMBIQEDAXGOAQQBD/5n7/Wb/vH+8QGo5gQ6/psBZf3h/eUBdf6LAjICCAAAAv+8/kcEGQQ6ABMAGAAZQA0XFhUDCAIYBnIPCA9yACsyKzISFzkwMWUBIQEOAyMmJic3FhYzFjY2NxMTBwcDAVcBvgEE/YYbRVhtRB89HhELFgs5VkEZd24CpL6CA7j7IDhkTCsBCwe5AQMCIUQxBJf8yvYqBFYAA//mAAAD5AQ6AAMACQANABxADQQMDAkNBnIHAwMGAhIAPzMzETMrMjIRMzAxZQchNwEBIzcBMyMHITcDXyL88SIDePy/oR0DPKVaIv0kIsDAwALZ/GemA5TAwAACAC3+lQMDBj8AEQAlABlACh0JCgocHBITAQAALzIvMzkvMxI5OTAxQRcGBgcHDgIHNzY2Nzc+AgMHLgI3NzYmJic3HgIHBwYWFgLfJG5nDxwPgMd3C2dvDxwQaa1tM2yKOQwcBxRFQgttqFoLGwgGOQY/iyiybs5/nUsDiwN6Ys58uH35AYkkhbhwzT1gOwWLBFOedM1BgWgAAQAh/vIBzQWwAAMACbIAAgEALz8wMUEBIwEBzf7yngEOBbD5Qga+AAL/mP6SAm4GPAATACYAG0ALHgsKCh8fARUUAAEALzMvMxI5LzMSOTkwMVM3HgIHBwYWFhcHLgI3NzYmJgEnPgI3Nz4CNwcGBgcHDgKgNWuJOg0bCBRFQgprqloLGwgHOf7ZJEleMwsbEIDGdwtnbhAcEGitBbWHI4a4b889XzoFhQRQmnPPQYFp+PqMG2KCScyAmkgDhAR6Y8x9uH0AAQBcAYMExwMyAB8AG0ALDAAAFgaAHAYQEAYALzMvETMaEM0yLzIwMUE3DgMnJiYnJiYnIgYGBwc+AxcWFhcWFhcyNjYEGK8GMleAU1KBOCBLMTZHJgi3BjJZf1NSgzYgSzI3SCoDEQJKj3RDAQJOOSI6ATlZLQFKjHFBAQJPOSE7ATxcAAAC/+b+kwHOBE8AAwAPAAyzAQcNAAAvL93OMDFDEzMDExQGIwYmJzQ2MzYWGsrJme5NOThOAU46N03+kwQD+/0FPjpMAUY5OksBRQAAAwBN/wsEAgUmAAMABwAvACVAEgIBJSUhAxwHcgcECAgMBhENcgArzcwzEjk5K83MMxI5OTAxQQMjEwMDIxM3FjY2NzcOAicuAzc3PgMXHgIHIzYmJicmDgIHBwYeAgMXNLs0IjO7M3I8YkMN3w6KzXF0oWElCwQNVo3Ad3isWwLeASRNP0prRygJAwcCIE0FJv7fASH7Bf7gASCAAi9WOAF1rF0CA1qYwWckcMeYVgMDarZ1OWE+AQM/aYA+IzR5akYAAAP/9wAABKIFxwADAAcAIgAhQBAGBQUBHxYFcgwNDQICAQxyACsyETMRMysyETkvMzAxYSE3IQMhNyElAwYGByc+AjcTPgIXHgIHJzYmJicmBgYD8PwHIwP59/1AIgLB/utMC1tSticuGAVVEIXUhnqrVwTtAx1JPURhOccBkcP1/ZVglTFIEEdXJgJ0g8duAwNltHgBOFw4AgFFbwAABgAG/+UFfwTxABMAJwArAC8AMwA3AA61DxkFIw1yACsyLzMwMUEGHgIXFj4CNzYuAicmDgIHPgMXHgMHDgMnLgMBByc3AQcnNwEnNxcBJzcXASoLIFGDVl+mg1MNCx9SgVdfpoNUuw5xtOeDfcB/Nw0NcbTng33AfzcFD9103vxK3XPdA1ypkar8jamQqQJXT5t+TQIDSoOmWU+afU0DA0uBplh+5rNmAgNpsNt0fue0ZwMDarHbAnfElsT7ucSVw/6n2IHYAzHZgNgABQAuAAAErgWxAAMABwAMABEAFQAtQBYLEBAGBxIVFQgOAwMCAhEUDHIJEQRyACsyKxI5LzMSOTkyETPOMjMRMzAxQQchNwEHITclASEBIwMTBwcDAQMjEwPHGvy0GgMaGvyzGwGaAbwBD/3Rj1HDLo/+AfyF9IUC45WV/t2UlPgC+PyUA2388V0BA2z9Tv0CAv4AAAL/7v7yAfUFsAADAAcADbQBAgYHAgA/3d7NMDFTIxMzEwMjE8nbituihNyE/vIDGQOl/QoC9gAAAv/g/iQEqwXHAC8AYQAeQBNTPwABBStdNTEwDyEMT0QdFBFyACsyLzMXOTAxZTc+Ajc2LgInLgM3PgMXHgIHIzYmJicmBgYHBh4CFx4DBw4DAwcOAgcGHgIXHgMHDgMnLgM3NwYeAjMWNjY3Ni4CJy4DNz4DAk4LPXNQCwgvU2ApTpRzPQcGZZy4WobLawbqBDBiST5+XAsJLFFfK0+VdUAHBmKXsF0LPmlHCggqUF8tT5VyPgYHY5q4W2WtgUQD7gQgQFw4PX5cCwkwVF8mTpR1QAYGXpKqeoMCKVZCN0szIg4aQ16HYGeSXCsCAmO+i0dpPAEBIlNGOEkuHw0ZQV6HYGWESyAC8YUDKVRBOkwxIA4bQV6HYWmRWSkBAjVon2wBO1c5HgEiUUQ2SDAgDRlCXodgYYNOIQACANcE4wONBc8ACwAXAA60AwkJDxUALzMzLzMwMVM0Njc2FhcUBgcGJiUmNjc2FhUWBgcGJtdHMjJIAUcyMUkBwQFGMzJJAUgyMUgFVjNEAQFAMzNDAQFAMTNEAQFANDNCAQE/AAADAFz/6AXcBccAHwAzAEcAH0AOHQQEJSVDFA0NLy85A3IAKzIRMxEzLzMRMxEzMDFBNwYGJy4CNzc+AhcWFgcnNiYnJgYGBwcGFhYXFjYlBh4CFxY+Ajc2LgInJg4CBzYSNiQXHgISBwYCBgQnLgICA6mQDLiYbIc7CAwLX6JxkZwFkgVDWUlhNwkNBhJERV1g/UUQMHm7fYPot3URDy95u3yE6Ld1hRCG1QERnJXnmkMPEYXV/u+cleeaQwJVAZapBANvr2J1aLJsAgOpkAFUYwIBS3dAdzhzUgIEZNRz3LFrAgNmted8c9qxawIDZrPmfZUBEdV6AwJ+0/76jJT+7tZ7AwJ/1AEHAAIAvwKyA0cFyAAXADEAGrUxGhoNFiq4AQCyCA0DAD8zGtzEEjkvMzAxQRM2JiYnJgYHJz4CFx4CBwMGBhcjJhMHIw4CBwYWFzI2NjcXDgIjJiY3PgIzAmo1AwwoJzhTD6IHXoxLU3Q5BjEHAwifDmIUgidXQQYIPSomUkIQBhdNXTRkfwICcKJQA14BViI6JAECMjYMU2gyAgFHe1L+xi9aLlABbXEBFjUuLyYBHzYkcy5BIQF1ZmFoJwD//wBGAIkDrAOnBCYBkuz+AAcBkgFL//4AAgCAAXcDxgMiAAMABwAStgYHAwYCAgMALzMRMxI5LzAxQQchNwUDIxMDxhz81h4DGz26PgMipaVL/qABYAAEAFz/6AXbBccAHgAvAEMAVwA1QBsfGxggBAICAQEPKQ0NNTVTDA8PSVMTcj9JA3IAKzIrEjkvMxEzETMvMxI5fS8zEhc5MDFBIzcXPgI3NiYmJyMDIxMFHgIHDgIHBgYHDgIHNxYWBwcGFhcHJyY2Nzc2JiUGHgIXFj4CNzYuAicmDgIHNhI2JBceAhIHBgIGBCcuAgIDNd8SsClSPQgJJEUtjXCOhQEBToVPBAJJaTUEBwQKEBIhF3F/CAYDAwIBjgUEBAcGNv15DzB4vH2D6Ld1EA8veLx8g+m3dYURhdUBEZyV55pDDxCF1v7vm5bnmkICjoIBAho2LTM1FAL9MQNQAQI0blZLTC4dAgkDBwgEAmMDdHY3IT0hEgEkSSU1SDxLc9yxawMCZrXnfHPbsGsCA2az5n2VARHVegMCftP++oyU/u7WewIDf9MBCAABAQQFEAOxBaoAAwAIsQMCAC8zMDFBByE3A7EY/WsZBaqamgACAOUDrwLlBccADwAbAA+1EwzAGQQDAD8zGswyMDFTPgIXHgIHDgInLgI3BhYzMjY3NiYnIgboAU18S0VpOgEDSXpLRms9hgY5MjhRBwY0MzhWBLBJgE4BAUt2Qkl+TAEBR3VFMElSNS9MAVQAAAMAGQABBAIE/QADAAcACwAStwsCAwMEChJyACsvOS8zMjAxQQchNwEDIxMBByE3BAIf/IUgAmeX0ZcBVR/8xR8Dg8TEAXr8PAPE+8XBwQAAAQBXApsC7gW+ABwAE7EcArgBALMLEwNyACsyGswyMDFBByE3AT4CNzYmJyIGBwc+AhceAgcOAgcHAsEa/bAXATgaPi8HBiwqOkUMtAhWiVNJfEoDA0xrM58DLJGEAQEWOEAlKTEBSDUCVHpBAQEzZ1BGbVgldQAAAgBoAo4C+QW+ABkAMwAsQAwcGAAAGhoQLCkpJBC4AQC1CwsIEANyACsyMi8aEMwyLzIROS8zEjk5MDFBMz4CNzYmJyIGByM+AhceAgcOAgcjBzcXHgIHDgInLgI1MxYWFzI2NzYmJicBYUkiQS8GBjooK0MOtgdXhElEglQCAl2HPoAID2JBe1ACAWaXSkx+TK4BQDExWggGHTYgBGsCFS4mLCgBJihNZS8BAS1gTktYJgEoUgECIFJNVmoxAgE2a1AyLAE0NiUpEgEAAQDHBNMCzQYAAAMACrIBgAAALxrNMDFTEyEBx+0BGf7IBNMBLf7TAAP/3v5gBFkEOgAEABoAHgAZQAwdBQAWCxNyAxJyHAAALzIrKzIROS8wMUEzAyMTNzcOAycuAicTMwYeAhcWPgIBMwEjA23svNgaRlQKMFuUbD92VAsOgQQBGUA7Tm5HKf3G6/776gQ6+8YBCPICWLyfYgMCMFxDARIvZFY3AgI0XnsChPomAAABAH4AAAPQBbEADAAOtgMLAnIAEnIAKyvNMDFhIxMnLgI3PgIzBQLUxltEh8FfDQ6V7JEBJQIIAQN1zIeU1XQBAAABAJ8CRAGyA1AACwAIsQMJAC8zMDFTNDY3NhYXFAYjBiagTjs6TgFQOjlQAsU7TgEBSTo7TQFHAAH/zf49AS8ABAATABG2CwqAEwIAEgA/MjIazDIwMXc3BxYWBw4DBzc+Ajc2JiYnGawUPkABAURqejgHIEIxBgYsQhgDATwNVj9GWjIVAooCEiklJR8JAwABAOQCmwKABa8ABgAKswYCcgEALyswMUEDIxMHNyUCgIOxZMwbAWoFr/zsAjwxl3IAAAIAvgKwA3AFyAARACMAELYXDiAFA3IOAC8rMhEzMDFTNz4CFx4CBwcOAicuAjcHBhYWFxY2Njc3NiYmJyYGBsUHCmOhamSIQAgHC2GgamSJQLUJBRI+PD1VMggJBRQ9Oj5WMgQTT2SkXgIDYZ9gUGSiXQIDYJ+vUjJfQAECPWI3UTFgPwICPGIA//8ABQCLA3UDqAQmAZMJAAAHAZMBcgAA//8AwQAABSIFrAQnAdYAUQKYACcBlAEVAAgABwIwAqkAAP//ALUAAAV4Ba8EJwGUAOsACAAnAdYARQKbAAcB1QL9AAD//wCWAAAFoQW+BCcBlAGjAAgAJwIwAygAAAAHAi8AoQKbAAL/1P57Ax8EUAAhAC0AGEAKAAAlJSsQERENFgAvMzMvPzMvMy8wMUE3DgIHDgIHBhYWFxY2Njc3DgInLgI3PgI3PgIBFAYjBiYnNDY3NhYBkNUHLlE+LlpCCQcZQzc8WjkL6wyBynpyrloJB16GRSg1HgE1TTk4TgFOOThOApYBUoNwNyhUZUA0UjEBAjJXNwJ9r1sDAlmnd2CYfjghSVUBbjpMAUY5OkoBAUYAAAb/jQAAB28FsAAEAAgADAAQABQAGAAxQBgAFxcIBxQTBxMHEwINAxgCcgwLCw4CCHIAKzIyETMrMjIROTkvLxEzETMyETMwMUEBIQEzAwchNwEHITcTAyMTAQchNwEHITcEM/x//tsEIJsfJf0qJQV9Iv04IvPB68ICpyL9myIDHCL9OSIFC/r1BbD8etLS/pfBwQTv+lAFsP2hwcECX8HBAAIAHwDKBA8EdwADAAcADLMEBgIAAC8vMzIwMXcnARcBATcBnX4Dc33+9f2NnQJyy5wDEJz87wMmh/zbAAMAFv+iBZAF7QADABsAMwAXQAsBAC8KIxYDcgoJcgArKzIRMzIzMDFBASMBEwcGAgYGJy4ENzc2EjY2Fx4EBTc2Ni4CJyYOAgcHBgYeAhcWPgIFkPs3sQTLNQoUaq7wmXWvdkESDAsUbK7wmHWudkIR/vMLBwMVOGZOaJlnPgwLCAIVOWVOaZhnPQXt+bUGS/0VUIn+/8t0AwJSjLPKZ1CIAQDLdAMCUouzyrhTPIiCakMDA1mWtFdTPIeDbEMDBFqWtAACACcAAASBBbAAAwAZAB1ADg8ODgMZBAQDAAJyAwhyACsrETkvMxE5LzMwMUEzAyMBIR4CBw4CIyU3BTI2Njc2JiYnJwEk7P3sATABaoHOcQsMovaM/tghAQ1PiVsMCS1jSPgFsPpQBJcDZL2JlsZiAb8BOnFSSGo7AwEAAQAd/+kEUAYYADkAGUANIxs2CAIKcggBchsLcgArKysRMxEzMDFBAyMTPgMXHgIHDgMHBh4DBw4CJy4CJzcWFjMyNjY3Ni4DNz4DNzYmJicmBgYBw7vrvQ1Ne6hpZ6FYCAYuOzIJCSlHSjEDB3/IdC9hXipBLm44NV9ACQgsSUswBAUvPTMHBho+MUxeMgRS+64EU2OnekEDAlKZbDtiWV43NFpWV2I7e6VQAQENHBfAHiMlSzc2WlRVYz43X1ldOC5MLgIDTnwAAAMADv/qBl8EUQAUADIAXgA3QBxXMzMyF0ZFFCUAAykXRRdFDx8pC3JMPj4FDwdyACsyMhEzKzISOTkvLxIXOREzETMyETMwMWUTNiYmJyYGBgcnPgMXHgIHAwMHJyIGBgcGFhYzFj4CNxcOAicuAjc+AzMBLgM3Nz4DFx4DBwchNyE3NiYmJyYOAgcHBh4CFxY2NxcOAgKCWAUVQTk0XkQK6QdZiKBQdaZQDFJvHNU5dVQJBydHLChfWkIMYSuWsVRimlQFBl6TrlQCWnOnaSsKBw1Vib10aJdbIAsV/OYdAioGCRVLREdrSSoICAYNMV1IVZZJODODjbUCFzNXNwIBI0c1Elh/USUBA2Ktdv4RAaukASVPQTA+HgEaMUQqlk1gKgECTJBnZINNIP1oAlORvGs6a8SZVgMCUIeuYIynHzxrRQIDPWl9PDk/dV46AgI2KKUrNRgAAgBG/+gESAYtADQAOAAZQAs2IBYWASoMC3I4AQAvMysyEjkvMzMwMUE3HgISBwcOAycuAzc+AxceAhUnNi4CJyYOAgcGHgIXFj4CNzc2LgIlAScBAXpWp/aYORUMEFmPw3pkn2wzCQlNgbFuaKBcVwMlQlIpSG5NLgcGEC1POUpsSSwJDhMlb7wCSf21PAJLBW3AKrL6/tGnVW3QpmEDA02DrGFmu5FSAwRlpmYCL0YtFwECNV52QTJkVDUCAkRygz1mhe3Eji3+nXUBYgADAD4AlAQ8BMsAAwAPABsAE7cZEwIHDQMCEgA/3cYyEMYyMDFBByE3ATQ2NzYWFRYGBwYmAzY2NzYWFRQGBwYmBDwk/CYkAZtQOTlQAVA6OFCOAU47OVBQOjlQAxjOzgEpPEwBAUc6PEoBAUb9DDxLAQFHOjtLAQFGAAMAKv91BDAEvQADABkALwAZQAwgAQEVC3IrAAAKB3IAKzIvMisyLzIwMUEBIwEBNz4DFx4DBwcOAycuAzcHBh4CFxY+Ajc3Ni4CJyYOAgQw/JOZA278pwMOWZHEeXOmZigLAg5akcR4c6VnKPkDBQUmU0VLb0wtCQIHBiZTRktvTCwEvfq4BUj9TRdwy51ZAwNcmsJpGHDJm1cDA1uXwYAXNnlrRAICP2yCPhc2em1GAgJAboMAA//N/mAEFQYAAAMAGQAvABtADysKIBUHcgoLcgMAcgIOcgArKysrMhEzMDFBASMBAQcOAycuAzc3PgMXHgMHNzYuAicmDgIHBwYeAhcWPgICDP6t7AFTAusCDUR1qnNmilIhBQoQTXmpbG+MSRT4AwUDIE1EPmRNMgsfAxgyTzdKakYpBgD4YAeg/C0VY8alYgMCXZazWFBfvp1dAwNlob1vFTR3a0YCAy1QZjfEMlxLLQEDRG6DAAQAN//oBRMGAAAEABoALwAzAB1ADyEEBBYLcjMyKwsHcgEAcgArKzLOMisyLzIwMWUTMwEjATc+AxceAwcHDgMnLgM3BwYeAhcWNjY3NzYuAicmDgIBByE3Arnh7f711P2ZAgxGd610Z4hNHAUIEEx5p2trjEwX+gIGAh9LRE97UhEcAxMwTzhKa0UoA9od/XMd7gUS+gACCBZjyaZjAwRknrdXRFy8nFwDBGWgu3EVNHZrRwIDTX9HtzJiUDMBA0JuggMUp6cABAAsAAAF2gWwAAMABwALAA8AH0APAwKABwYGCgwLAnINCghyACsyKzIROS8zGswyMDFBByE3AQchNxMDIxMhAyMTBdoc+qscA+Ej/RAkp/31/QRi/fT8BKuenv6lx8cCYPpQBbD6UAWwAAEAIwAAAcoEOgADAAy1AwZyAgpyACsrMDFBAyMTAcq867wEOvvGBDoAAAMAIQAABJAEOgADAAkADQAfQA8MBwcLBgYCCQMGcgoCCnIAKzIrMhE5LzMzETMwMUEDIxMhASE3MwEDATcBAci867sDtP2c/vUHowGPmf7wxwFmBDr7xgQ6/XXaAbH7xgHhgf2eAAMAHwAAA9IFsAADAAcACwAbQA0CCgAHBgYKCwJyCghyACsrETMRMzIRMzAxQQcFNwEHITcBAyMTArga/YEbA5gk/TojAR/99f0Dspi8mv3Px8cE6fpQBbAAAAIAIAAAAl8GAAADAAcAE0AJAgYABwByBgpyACsrMhEzMDFBBwU3AQEjAQJfG/3cGwH4/vbsAQsDtJi7mAMH+gAGAAAAAwAj/kcFewWzAAMABwAZAB1ADhUOBgcHAwhyCQUEAAJyACsyMjIrMhEzLzMwMUEzAyMBNwEHEzMBDgInIiYnNxYWMzI2NjcBH/b99QE0tQI7tfT1/v4PZKp3I0UjIxgwGTRDJgcFsPpQBURv+rlsBbD6GXCvYwIKCcIHCDdVLQACABH+SAP5BFEABAAqABlADhwVD3ImCwdyAwZyAgpyACsrKzIrMjAxQQMjEzMDBz4DFx4DBwMOAiMmJic3FhYzFjY2NxM2LgInJg4CAY2R67zXfSMMQW+iblx5QRMJdg9ip3UjRCEhGDIYNUMlCHYGBR0+NUpyUTQDRfy7BDr+BgJdvZxdAgJKe5hR/SNvq2ABCQnBBwgBNVMuAtwtVEQoAgM2X3kABQBQ/+wHjQXGACMAJwArAC8AMwAzQBovLi4mMigzAnIpJyYIchUSEhYZCQQHBwMAAwA/MjIRMz8zMxEzKzIyKzIyETkvMzAxQTIWFwcmJiMmDgIHAwYeAhcWNjcHBgYnLgM3Ez4DAQchNwEDIxMBByE3AQchNwMdSZJJFkSLRVuOZUENMAkMNmtVSZFIE0aMRn2+fTMQLxNtqt8EICL9ECMBIPz2/QLTI/1zIwNTI/0WIwXGDgjGDhABP3GUU/7NSI1zRwICDgzHCAsBA2Ck1HgBMH/ao1r7AcfHBOn6UAWw/aDExAJgyMgAAwA//+gGzgRSACoAQABWACdAEyQAAEc8ExISPFIZCwsxB3I8C3IAKysyETMyETkvMxEzMxEzMDFFLgM3Nz4DFx4DBwchNwU3NiYmJyYOAgcHBh4CFxY2NxcGBgE3PgMXHgMHBw4DJy4DNwcGHgIXFj4CNzc2LgInJg4CBMpwo2YqCgQMVYu7c2iXXSMMFvzsHgIlBQoaTURFZkYoCAUGCytVRVWaRz1P1vsZAw1Yj8N5c6VkJgoDDliQwnhzpGUn+wIGBCRQRktuSisJAgYFJVBHS21KKhQCWJa9Zitpxp5bAwNPha1ijq0BHTxqRAICQ25+OSo4dmQ/AgMyLJ5GOgIgF3DLnVgDAlybwmgYcMmbVwIDXJnAfxc2eWpFAgNAbII/FjZ6bUYCAkFuggABABwAAAMaBhkAEQAOtg0GAXIBCnIAKysyMDFhIxM+AhcWFhcHJiYjIgYGBwEH68oOaK12J00nJRcuGDhSMgkEonGpXQEBDQe4BggvUzUAAAEAS//pBS0FxAAsABtADQ8ABgkJABoiA3IACXIAKysyETkvMxEzMDFFLgM3NyEHIQcGHgIXFj4CNzc2LgInJgYHJz4CFx4DBwcOAwJNks55KRIXBAMj/PkIDRVEdlVimG5DDhINE0uKaWO+XB46lppElt+MNhMRE3O18BQCbbrxh4/DI06IZjsDAlOMq1V8XKmFTwICKCPFJScMAQFrvfiOe4T3xXAAAAH/RP5GA0wGGQAnAClAFRQCAhUnBnIfIiIeGwFyCw4OCgcPcgArMjIRMysyMhEzKzIyETMwMUEHIwMOAiciJic3FhYzMjY2NxMjNzM3PgIXMhYXByYmIyIGBgcHAsIbyZUNXaFzI0MhIBYuGDRAIgaWoRuhDQ5nrHUoTiYnGDAYOE8uCQ4EOrD8MW2oYAILCbsHCTVSLQPPsGhyqF0CDgi4BgYuUDVoAAMAXP/pBiEGLQAJACEAOQAdQA4FBgYpKQAAHANyNRAJcgArMisyLzIROREzMDFBNw4CBzc+AgMHBgIGBicuBDc3NhI2NhceBAU3NjYuAicmDgIHBwYGHgIXFj4CBXmoCmCzhw5TYDBlCxNrrvCYdq51QxINCxRrr/CYda52QRL+8gsIAxY4ZFBomGg9DQsIAhY4ZU9pmGc9BisCg75oBJICUH79IE+K/v/LdAMCUoy0ymZQiAEAynUDAlKLs8q4UzyIgmpCAwRZl7NYUjyHg2xEAgRalrQAAAMANP/pBPAEqgAJAB8ANQAVQAomGwtyMQAAEAdyACsyLzIrMjAxQTcOAgc3PgIBNz4DFx4DBwcOAycuAzcHBh4CFxY+Ajc3Ni4CJyYOAgRZlwlXoXoLTVgq+/ACDliSxHl0pWYoCwIOWZLEeHKmZin5AgYFJlNGSm9MLQkCBwYmUkZMb0wsBKgCd6VWBHkCRXD9phdwy51YAwJcmsJpGHDJm1YCA1uYwIAXN3hrRAICP22BPhc2em1GAgJAboMAAAIAWP/pBqQGAwAJAB8AGUAMBQoKAAAVAnIbEAlyACsyKzIvMhEzMDFBNw4CBzc+AiUzAw4CJy4CNxMzAwYWFhcWNjY3Bf+lDG3Ilw5ldz3+SfWmGKT+n5XaaxKm9KUKJmpbYY9YDgYCAZTGZwOSAkuHC/w0neV5AwJ94ZcDzfwyVIhRAwNMjFwAAAMASv/oBVkElgAJAA4AJQAdQA4FCwsAABsGciIODhULcgArMi8yKzIvMhEzMDFBNw4CBzc+AgETMwMjEzcOAycuAzcTMwMGHgIXFjY2BMSVCl6qfgxUXzD9/o3svN5jTQw/bqRwWXhFGAh163YEBxw3LWCCSgSVAX6bSgJ9AjJm/MMDL/vGAeADYriPUgMCQnCQUAK7/UInSDojAgRSjgAB/wT+RwHbBDoAEQAOtg0GD3IBBnIAKysyMDFTMwMOAicmJic3FhYzMjY2N+/sww5ip3UjQyIiGC8ZNEQmBwQ6+4lvrGEBAQoJuwcJN1ctAAEANP/qA9oEUQAqABlADBEUFAAZCwtyJAAHcgArMisyEjkvMzAxQR4DBwcOAycuAzc3IQclBwYWFhcWPgI3NzYuAicmBgcnNjYCOHCjZikKBAxVirxyaZhcIgwVAxUf/dwFCxpNQ0ZmRigIBQYLK1VEVZtHPU/XBE8CWZW9Zitqxp1aAwJPha1ijq4BHDxqRAICQ25+OSo4dWRAAgMyLJ1HOgAAAQD+BN4DoAYAAAgAFLcHBQUEAQOACAAvGs0yOTIRMzAxQRMVJycHBycBArTsuXiwwAEBLwYA/u8RA5ybAxIBDwAAAQEJBOADvQYDAAgAErYBBoAHBAIAAC8yMjIazTkwMUEXNzcXASMDJwHMdK3PAf7LlOoBBgCcmwQQ/u0BExAA//8BBAUQA7EFqgYGAHAAAAABAP0EywNyBegADgAQtQEBCYAMBQAvMxrMMi8wMUE3DgInJiY1FwYWFxY2AsSuB1yTWYCmrwM4Q0RQBeYCW4BCAgKWgwE+TwEBTwAAAQEDBOICAAXXAAsACbIDCRAAPzMwMUE0Njc2FhUUBgcGJgEDSDU1S0g2NUoFWDdGAQFCNjZFAQFAAAIA+gSMAqIGJgANABkADrQXBIARCwAvMxrMMjAxUzQ2NjMyFhUUBgYjIiY3BhYzMjY3NiYjIgb6PWU7VHc+ZTtTd2gFMCwwSgYGMC0wSgVPPGI5c1U8YDZuVyo/Ri8qQUkAAf+o/lUBIAA7ABUADrQID4ABAAAvMhrMMjAxdxcOAgcGFhcyNjcXBgYjIiY3PgKrdSNSPgYDGB0YLBUNIk4pVWkCAU52Oz0ZOkovHSABDgmNFRRpV0pwUAAAAQDcBN8DxAXzABkAJ0ATAAABAQoSQA8aSBIFgA0NDg4XBQAvMzMvMy8aEM0rMjIvMy8wMUEXDgInLgMHBgYHJz4CFx4DNzY2AzaOBTdkSCZAPD4jLzAMkgY4ZEkkPzw/JS4yBfMKQXdLAQEeJhwBAj4oB0B4TAEBHSYcAQE/AAACAK4E0QPrBf8AAwAHAA60AQWAAAQALzMazTIwMUEBMwEhEzMBAeQBEvX+yP375O7+8QTRAS7+0gEu/tIAAAL/9P5sAVH/vgALABcADrQPCYAVAwAvMxrMMjAxRyY2MzIWFRYGBwYmNwYWMzI2NzYmIyIGCwFrSkRjAWhIRWdiBCIeITYFBB4fIjjzS2ZeRkljAQFaSR0tNCAbMTUAAAH9VgTT/tsGAAADAAqyA4ACAC8azTAxQRMjA/5RirTRBgD+0wEsAAAB/dwE0//oBgAAAwAKsgGAAAAvGs0wMUETBQH93PIBGv7DBNMBLQH+1P///PgE3//gBfMEBwCl/BwAAAAB/dUE5f88BnwAFAAQtRQCAIALDAAvMxrMMjIwMUEnNz4CNzYuAic3HgMHBgYH/oy3CxpFNwUEHC4wEBAqa2M/AQJjQATlAZABCh4jGRsLAgF4AQ4mSDpISAsAAAL8vATk/7AF7gADAAcADrQHA4AEAAAvMhrNMjAxQSMDIQEjAzP+idvyAQoB6s/A/wTkAQr+9gEKAAAB/KH+lf2v/4wACwAIsQMJAC8zMDFFJjY3NhYVFgYHBib8ogFQNzVRAVE1NVL0OUUBAUE3OUQBAUAAAQE2BOwCkQZAAAMACrIAgAEALxrNMDFBEzMDATZ64cYE7AFU/qwAAAMA7wTjBCAGsAADAA8AGwAZQAoTGRkNAYAAAAcNAC8zMy8azREzETMwMUETMwMFNDY3NhYVFgYHBiYlJjY3NhYVFAYHBiYCQGDksv4dRjMxSQFHMjJIAj0BRjMySUYyMkkFhwEp/tcyNEQBAUAyNEMBAT8xNEQBAUAzNEIBAT7//wCfAkQBsgNQBgYAeAAAAAEAKwAABKwFsAAFAA62AgUCcgQIcgArKzIwMUEHIQMjEwSsI/1x2vX9BbDI+xgFsAAAA/+sAAAFDwWwAAQACQANABtADQYCBwMCcg0MDAUCEnIAKzIyETMrMhI5MDFBASEBMxMBNzMBJwchNwON/Sj+9wM+jqL++jmOATSxI/w2IwUi+t4FsPpQBUNt+lDHx8cAAwBd/+kFFwXHAAMAGwAzABtADS8KAwICCiMWA3IKCXIAKysyETkvMxEzMDFBByE3BQcGAgYGJy4ENzc2EjY2Fx4EBTc2Ni4CJyYOAgcHBgYeAhcWPgIDqyH+USIDDQsTa67wmHaudkISDQoUbK/wl3WvdUIS/vILCAIVOGVPaJhoPQ0LCAIWOGVPaJlnPAM5v783T4v+/8p0AwJSjLTKZlCIAQDLdAMCUYyzyrhTPIiCakIDBFmWtFdTPIeDbEQCBFqWtAAAAv+yAAAEfQWwAAQACQAXQAsGAAIHAwJyBQIIcgArMisyEjk5MDFBASEBMxMDNzMTAxf9q/7wAumxMrMbqO8Ew/s9BbD6UAThz/pQAAP//gAABIQFsAADAAcACwAbQA0BAAUEBAAICQJyAAhyACsrMhE5LzMRMzAxYzchBwE3IQcBNyEHAiMDqST9LCMC2yL9OCQDeiTHxwKHwsICYcjIAAEAKwAABYMFsAAHABNACQIGBAcCcgYIcgArKzIRMzAxQQMjEyEDIxMFg/302f2P2vX9BbD6UATo+xgFsAAAA//cAAAEnQWwAAMABwAQACFAEA4GBgcHDwJyDAMDAgILCHIAKzIRMxEzKzIRMxEzMDFlByE3AQchNwEHASM3AQE3MwPmI/x2IwRBI/ycIwHjAv17uRwCI/6mGKnHx8cE6cjI/TgV/S2dAkwCQYYAAAMAVAAABawFsAATACcAKwAhQBAUFRUBACkIch8eHgoLKAJyACvNMjIRMyvNMjIRMzAxZScuAzc2EiQzFx4DBwYGBCUXMjY2NzYuAicnJgYGBwYeAgEDIxMDEMR2wIQ+DBG2AR2pyXa/hD0MEbn+4v6dx26saw8IFT9pS8xvrWsNCRdBawHx/fX9qgICT4/Fd6wBAI0CA1KTx3at/IfTA1WebUd6WzUDAgFZom5Id1czBDH6UAWwAAACAHYAAAXRBbAAGQAdABlADBQHBw0cCHIdAQ0CcgArMjIrETkRMzAxQTMDBgIEJycuAzcTMwMGHgIXFxY2NjcDAyMTBNv2VBu7/t64VYDIgzcPU/RTCRNAcVNTerNuErn89f0FsP4Stf72jwEBBFic1IAB7v4RTIlrQAQBAmOxdAHu+lAFsAAAAwAKAAAE7wXHAC0AMQA1ACVAEigSEi8pKTQRETMuMhJyBh0DcgArMisyMjIRMzMRMzIRMzAxQTc2LgInJg4CBwcGBhYWFwcuAzc3PgMXHgMHBw4DBzc+AwE3IQchNyEHA8oOCAMnXVJYgFczCg8IDRFDSQ1yn14gDQ4RaKTdiIC7cywPDhFjnc9+D1NzSiz+oyMB4SP7xyQB6CMC72g/kIBUAwNLf5hJZz2jpYAbjxeNyN1nZHzjsWQDA2ux3XVkdufCghKQHXaYqP1hyMjIyAAAAwA7/+cEMgRSABYALABBABpADS4GNDs7HRILcigGB3IAKzIrMjIRMz8wMVM3PgMXHgQHBw4DJy4DNwcGHgIXFj4CNzc2LgInJg4CATMDBgYWFhcWNjcXBgYnLgM3E0QDDEN1rndRcUgmDAQHD0Vwn2lqjE0X+QIGAyBLQkJoTzMNCQMMKU8/TWtEJgIpzYECBQMUGAYOBwYaOB89UC0PAl4B9BVk0K1oAwNGc4qSQj5Yu55fAwNembZwFjNxZEADAjlhdDlGM3VrRgIDSniJAfP9Bw8tLR8CAQQBtA8MAQE5W2s0Aj4AAAL/5v51BGkFxwAcADoAHkAONQAmJyccHDAdAxMJC3IAKzI/MzkvMxI5OS8wMUEXHgIHDgInLgM3NwYWFhcWNjY3NiYmJycTHgIHDgIjIzczMjY2NzYmJicmBgYHAyMTPgICL3tztWEJCoLXiFeSaTcEXQVKfEZNflAKCB9RRXzCc7VlCQiMz25vFEFGa0IIBiJNOkRuRwv46/cSk9wDLQEDWqp6h8xwAwI5aZBYG01mMwIBQnVLQG5HAwEDIAJcq3h5olOEN2VGN1w3AgJAbD/6VwWofsFrAAMAdf5fBDAEOgADAAgADQAZQA4IDAMECgUBBQ0GcgEOcgArKzISFzkwMWUDIxM3ATMBIxMTByMDAhtc7FyGAX79/dCmB24Jmbht/fICDqEDLPvGBDr8t/EEOgAAAgA1/+kEHAYkACwAQgAZQA0UKD4DBDMeC3ILBAFyACsyKzISFzkwMUE+AhcWFhcHJiYHIgYGBwYeAhceAgcHDgMnLgM3Nz4CNzUuAgMHBh4CFxY+Ajc3Ni4CJyYOAgE6BX29ZUSAQBM3dz4pVT8JBhkxNxd6p0wOAg5ZkcJ1caRoKwkDDGeocDBDIgcDBQYnUUVIbUstCQMFDixMOUhvTS4E5HCOQgEBHRa/FyABGDYtITAmGwo1n9eHFnDEl1MDAlaTu2gXbr+EFQ0bTWD9bhY2d2lDAgI/aoA+FTFvZkkLBkBtgQACACj/6gQEBE8AHwA/AB9ADwAhPj4DAxY1KwdyDBYLcgArMisyEjkvMxI5OTAxQRcHJyIGBgcGHgIXFjY2NzcOAycuAzc+AwUnLgM3PgMXHgMVJzYmJiciBgYHBh4CFxcB7fMWrzhvUQkFIDtGITVqUA3sCFuNpVNImYFNAwRWhpoBLtU5gG9EAgNbkKZNS45zQ+gBNlUtMGdNCAYaMz8eywJMAXcBG0VBKDgiEAEBIEc4AVyDUiUCASNKeVdXcUAaRwECHTxjR119SiACAihQeVMBMz4cAR1CNyYyHA0BAQAAAgBm/nwEPgWwACgALAAVQAkVAiwsKSkAAnIAKzIvMxEzLzAxQTMHAQ4CBwYeAhcXHgIHDgIHJz4CNzYmJicnLgM3PgI3AyEHIQOwjhv+ZUV+WQ8FBhguI1w9b0MEBUprNXYYMiYGBhwvF0hEakgfBwxtnFDoAvYh/QoFsJj+XUWUqWUlPTAlDh8VMFVNRHplJGgZN0AjHSQWBxYVQFd1SnbbwFEB2L4AAgAR/mED+wRRAAQAHAAXQAwYCwMGcgIKcgsHchEALysrKxEzMDFBAyMTMwMHPgMXHgMHAyMTNi4CJyYOAgGOkuu813A+C0N1qG9beUMUCLvsuwYIID4ySm5OMANF/LsEOv4HBGK9m1oCAkNwklP7rARULU08IwEDN2F6AAMAbv/pBEIFxwAZACcANgAdQBANKGowIGowMA0AGmoADQtyACsvKxI5LysrMDFBHgQHBw4EJy4ENzc+BBcmDgIHByE3NjYuAgMWPgM3NyEHBgYeAgLGaY9XKQQLIA42V3ypbWmPVykECyAONld9qGBRbUMlCgcByAgFCAYhRPxBXkMsGgcH/jcGBggHIEUFxANOgqSxVtZcu6eBSAMDT4Wls1TXXbqlf0bBBFCBkT40NihpbV48+6YDNVxxdDEuLyhqb2E+AAEAZv/1AgAEOgARAA62Bg0LcgAGcgArKzIwMVMzAwYWFhcyNjcHBgYjLgI38eyEBAkmJhUsFREkSyZabiwIBDr8+CM0HgIGArkLCgJRiVQAAv+n//AD2gX7AAQAJgAeQBAAGwQDBAIgBQByDxYWAgpyACsyLzMrMhIXOTAxQQEhARcBMh4CFxMeAhcWNjMHBgYjLgInAwMuAicmBgc3NjYCKv6G/vcCT6j+/ixLPCsL4wURHRoJEwkOFSoWRV87EJk+CBgnHg4cDg0ePgLk/RwEUggBsBYsQCv7yhcqHQIBAcAEAwE1XkEDEgEFGykYAQEBAbQHCAAAAgBC/nYEHgXGAB4ARgAZQAsfEQ8PISEzBRsDcgArMi85LzMSOTkwMUEHLgIjIgYGBwYeAhcXBycuAzc+AxcyFhYBFwcnIgYGBwYWFhcXHgIHDgIHJz4CNzYmJicnLgM3PgMEHjYiR0glOn5eCggiQ1QrnBqDSJ+MVAQGXJOwWDFdW/7TnBh9Yq92DAkuXj5ePHBFBQRLazN7GDYoBgUdLxY3V5FmMgcKd7fYBZi6ChIKH0tEM0QnEQEBjAEBHkZ3W2SOWikBCxT9xQGIATuDakVnRRIZETJYSUR5ZCRmGjg/JhwiFAgRG0dkkWN7p2QtAAADAGH/9QTlBDoAAwAHABkAGUANDhULcgYKcgkHAgMGcgArMjIyKysyMDFBByE3IQMjEyEzAwYWFhcyNjcHBgYjLgI3BOUh+50hAZS87LwCLuyEBAolJRYqFQ4lSyVbbiwHBDq6uvvGBDr8+CM0HgEFA7oLCgJRiVQAAAH/y/5gBA8EUQAvABdADB4pBhELcgYHcgAOcgArKysRMzIwMUMTPgMXHgMHBw4DJy4DJx4CFx4CFxY+Ajc3NjYmJicmDgIHAzWqEFSGuHR3nFYbCwIMRXWocGiGSyEBDRwcDwMpWk1HaEYoCQIFAhtLRkNhQScIqP5gA+JpwJNTAwNlpclmFWK+m1oDA12VsVcKFBQJQ3VIAwI7ZHo8FTKBeFADAkJsejb8LAABADb+iQPjBFEALQAOtRsJBQAHcgArzDMvMDFBHgIHIzYmJicmDgIHBwYWFhceAgcOAgcnPgI3NiYmJy4CNzc+AwJreapVBN4EH0pASGlIKggECi1oUD50SgQDS2ozeBgzJgUEGS0XgLBUDQQMVo6+BE4CabZ3OmA9AgNAbH48I1WBWxsWMVhQQnplJGgYOD8mHCQUCCqIyI0jbceaVwAAAwA3/+kErwRCABgALgAyABNACSoGMgZyHxQLcgArMisyMjAxUzc+AxceAhceAgcHDgMnLgM3BwYeAhcWPgI3NzYuAicmDgIBByE3QQMNWZHCdx0zNSFRaS8HAwtaj71vc6RlJvgDBQUkUUdJa0gpCAIGBiNPQ0hsSywDeCL90yICChdsx5pUBg8xMw8njaxWF2u8j04CAluawH8XNnlqRQMCQmyBPRc0c2ZCAgI7Z3wB28DAAAACAGz/7AQkBDoAAwAVABVACgUKEQIDBnIRC3IAKysyETMyMDFBByE3ITMDBhYWFxY2NxcGBicuAjcEJCH8aSEBSuuEAwQeIhkuFxIoVS9fbSkIBDq+vvzwHTYkAQENB7IVEgECWpJXAAEAV//nA+4EPAAeABNACRAHGQAGchkLcgArKxEzMjAxUzMDBgYWFhcWPgI3NgInFxYWBgcOAycuAzfP620EARIyL0lvTS4IEwog4BoVAwsPUorEfmOJUh4JBDr9ZyJTTTQBBE9+jDqAAQZ9AlGsr1Vx1qphAwJGep9bAAABADH+IgVeBEUALwAZQAwrBQUZGAZyIg8LcgAALysyKzIyETMwMUETPgIXHgMHDgMnLgM3PgI3Fw4CBwYeAhcWNjY3Ni4CJwYGBwMBmt0JU4JQbalyMQsQgcr7iondmUMQDU5+V4w1VDoMDyBXi1t71I0PBggoUD4eIQjj/iIFHE92QgECWZa+Z5DbkkkCAlGZ24xqvqA+kjJ2hUhak2k6AgJZr381c2RDBQkWH/rdAAIAP/4lBV8EPAAeACIAFUAKIQcZC3IgEAAGcgArMjIrMi8wMVMzAwYeAhcWPgI3NiYnFx4CBw4DJy4DNwEzASOi7FIMGEqCX2OrhFYQExMj2x8bAgoTfcT9ko3bkDsRAlTr/vLsBDr+EliXcUACAjhtnWJ7/ncCTqaoU5PlnE8CAlWf4o8B6fnrAAIAUv/nBgQEPQAeAD8AGUAMARcKCik2HwZyNgtyACsrETMzETMyMDFBFx4CBw4DJy4DNxMzAwYGFhYXFj4CNzYCJRcGAgcGBh4CFxY+AjcTMwMOAycuBDc+AgTe3SMiBAsMQHGte2d9PQwKM6w0BQMUOjlEWjUcBxEX/CrwQ4IWBQkBFzYwPlU2HgY1qzMNO2WabF1/TSMDCQw7WQQ9A1Grr1Zn07BoAwNjm7NSATf+uidoY0MCA1aCiDGCAQd5AX3+/44eX2ldPgIEO2FvMAFG/slauZpcAwJJeJWgS2G1qQABAFL/6ASOBcoAOAAdQA0dHhc2BAQNIxcLci0NAC8zKzIROS8zEMwyMDFBBwYGJy4CNzc+AhceAwcDDgInLgM3EzcDBhYWFxY2NjcTNjYmJiciBgYHBwYWFhcyNgSOBzh1O5jyhQwBC2eqcFV3SBoIZxOI25Bim2csCy7kLgkgV0xOaDoLZwMBDiQiLjsgBgEIRotiOXQDIMYSFQEBgeeeFGusZAMCQ2+NTf2GidZ4AwJLf6hgASEB/t1EeE4CA059RAKLGzs0IwIvSikWYY1NAhIAAAMAbgAABRcFyAADABYAKQAeQA4QCQkfJgNyGhgWAwMCEgA/MxEzMzMrMjIRMzAxQQMjEzcBPgIXMhYXByYmIyIGBgcBJwMTBwcDLgInJgYHJzY2Mx4CAr559Hh4AR4fUm5LJUYjOA0bDRwqIw7+Y6gQewWbrwYWIBYPHA8QHj8hQ18+Arf9SQK3NQIBPmQ5AhANuwIFFSQV/U8BAvj939cBArEUIBMBAQQDwQwMATdeAAADAFT/5waFBD0AAwAkAEUAIUAQJgUDHA8vPAtyPA8CAwZyDwAvKzIROSsyETMRMzMwMUEHITclFx4CBw4EJy4DNzczBwYGFhYXFj4DNzYCJRcGAgcOAhYWFxY+Ajc3MwcOAycuBDc+AgaFIPn5HwRJ3CQiAwoKKUZnkWBngD8OCiKsIwUCFz06NEkwHxAFERj8RfBDgxYDCwISLyw/VzgfCCKsIg08aJ1sXHlGHwEIDTtZBDqysgMDUKyvVk+nm3tGAwJim7NU1OMpaWNCAQE6X21mJIIBB3kBff7/jhpdaWBAAwY7YnAw49RcuZpaAgNMepedR2G1qQAAAwCU/+4FgAWwABsAHwAjACFAER8jGAUFDiIjHghyIwJyDglyACsrKxEzEjkvMxEzMDFBNz4CFx4CBw4DBzc+Azc2JiYnJgYGEwMjEyEHITcCMhA5en09itZxDAtloMpvEUFuVDYICTBqTj96eLX99PwC1iP7tCMCbswUHxABAmbGknmtbjgCvwEhQWNCT248AQIRHgMu+lAFsMjIAAACAGH/6QUNBccAAwAsAB1ADgMCAgkdGRQDcikECQlyACvMMyvMMxI5LzMwMUEHITcBNwYGBCcuAzc3PgMXHgIXIy4CJyYOAgcHBgYeAhcWNjYDaSP9viMCkPIZrf78m5DCbiMQEhRprOuWmdJwBfMCLmteZ5VkPA0RCAQTNGFNZJBdA0DHx/6ZApvhdgMDd8XzfXeI+cVvAwOA4JNXhk8DBFaRr1Z7OoN/aUICA0aIAAP/xv//B+4FsAARABUALgAnQBMkISEJLhYWAAoJCHIUFRUjAAJyACsyMhEzKzISOS8zETMRMzAxQTMDDgQnIzc3PgQ3AQchNwEFHgIHDgMnIRMzAwU+Ajc2JiYnJQHu9J8UM0x3rnxJGiNTcUgsHAsDXST9YCMCsgFUhtJyDApkoMds/eb99dsBC1OMWwsKLWNK/o8FsP0tY9C9llgBxgIGVoScmj8Ck8jI/e4BA27JjHOweD0BBbD7FwIBQ3xVSHBBAwEAAAMAK///B/QFsAADAAcAIAAjQBEIICADAgIGFQcCchYTEwYIcgArMhEzKzIROS8zMy8zMDFBByE3EwMjEwEFHgIHDgMnIRMzAwU+Ajc2JiYnJQRdI/0WI6r99f0DrgFUgtR0Cwlln8dq/eb89dkBCVGLXQsKMWVH/pADQcbGAm/6UAWw/dQBBGbBi3KudDoBBbD7GwEBPXVTR2g6AwEAAwCdAAAFiwWwABUAGQAdAB1ADhkBGAYRERgcHQJyGAhyACsrMhE5LzMRMzIwMWEjEzYmJicmDgIHNz4DFx4CBwEDIxMhByE3BS/0TAokZ1gyYWNgLxQtXl9hMJHXaxH9pv32/QLVI/vBIwHGVnQ8AgEIDhYOyg4WDAYBAmfNmgPs+lAFsMjIAAIAIv6ZBXoFsAAHAAsAF0ALCQYBAnILAwMACHIAKzISOSsyLzAxcxMzAyETMwMlAyMTIv312gJw2/X9/nhf9V8FsPsXBOn6ULv93gIiAAIAI///BKQFsAAFAB4AIUAQBh4eBAITEwUCchQREQQIcgArMhEzKzIRMxE5LzMwMUEHIQMjExMFHgIHDgMnIRMzAwUyNjY3NiYmJyUEpCP9cNr0/EgBVYPUdQwJZKDGa/3m/PbbAQpSi1sMCTBlR/6OBbDI+xgFsP3RAQNkwIxzrXQ6AQWw+xcBPnZVSWc3AwEABv+I/poFkAWwAAMABwALAA8AEwAlACdAEwsRESADAwceCHIODw8QFAJyCQUALzMrMjIRMysyMhEzMhEzMDFlByE3MwMjEyEDIxMTByE3IQMjEyEzAw4FByM3Fz4DNwSnI/vuIz1h6VYFhm/oYWgj/XMjA0f89P39eviKES9AUmiCTpEdPkxtTDMTx8fH/dMCLf3UAiwE6cjI+lAFsP2zTKmupJBtH8cCO5uwu1wABf+kAAAH6AWwAAUACQANABMAFwAnQBMWEQkDAwAADw8UDAgIcg4KAQJyACsyMisyMjIvMxEzETMzMzAxQQEhEyEHJwEhAQEDIxMhASE3MwEDAzcBAkn+ggEd7gEISNX+Iv7BAnwCsfz0/QQK/Wr+rATxAb3Z/ssBVwJ2Azr9n9kV/XUDPwJx+lAFsPzG2QJh+lACoKL8vgACAB//6gSkBcYAHgA+ACNAEQAgAgI+PhU0MCoJcg8LFQNyACsyzCvMMxI5LzMSOTkwMUEnNxcyNjY3NiYmJyYGBgcHPgMXHgMHDgMlFx4DBw4DJy4DNxcGFhYXFjY2NzYuAicnApPTGZxLg1cKCTttQUR4VQ30CWOauV9fq4RGCAdjmbH+6LZWpH9FBwdsqctmYaqARgPzAzxpREyRaAsHGTxYN7cCuQGPATBlUEdcLgEBMF9FAWebZjMBAjFjmGphjFssWAECKVeLZHKmazICAjhqnmcBRmM2AwEzalE7VTccAgEAAAEAJQAABXwFsAAJABdACwUABgIIAnIEBghyACsyKzISOTkwMUEBMwMjEwEjEzMBYgMe/P31tPzj/P30AagECPpQBAn79wWwAAP/xf/+BX4FsAADAAcAGQAZQAwSBREIcgIDAwQIAnIAKzIyETMrMjIwMUEHITchAyMTITMDDgQnIzc3PgQ3BMMj/VojA2H99f39Y/WfFTJNdq97SRojVHFIKxsNBbDIyPpQBbD9LWLQv5hWAscCBlWEm5pAAAACAJn/6AVWBbAAEwAYABpADhcWABUECAIYAnIPCAlyACsyKzISFzkwMUEBIQEOAyMiJic3FhYzMjY2NwMTFwcBAjgCBgEY/UojUGF5TRs3GxYSKBQ0SzgXAdoYt/7GAgUDq/tXP2lOKQQDxwMEJkMrBG38z/sIBDQAAAMAVf/EBgwF7AAVACkALQAbQAwfDAwrFgAAKyoDcisALysROS8zETkvMzAxQQUeAwcOAyMlLgM3PgMXJgYGBwYeAhcFMjY2NzYuAicTASMBAv8BFXvBgjoNDXG15oP+63zBgjoNDXG053x5t28PCRRAb1EBGHi1cA4KEz9tUyH+7+wBEQUoAgNeoNN3g9ygWQICW5/QeITdpFrIAWu4dkmGakADAmi2c0qIbEIDAY752AYoAAIAIf6hBXkFsAAFAA0AGUAMDAcCcgUEBAkGCHIBAC8rMjIRMysyMDFlAyMTIzcFEzMDIRMzAwVOcuM+fyP8Rv312gJx2vX8yf3YAV/JyQWw+xcE6fpQAAACAMQAAAVdBbAAFQAZABdACxcGEREYAAJyGAhyACsrETkvMzIwMUEzAwYWFhcWPgI3Bw4DJy4CNwEzAyMBIfRKCiRmWDFiYWAvEy5dYWAwktdqEQOT9f31BbD+PFd0PAIBBw8WDckPFg0GAQJozpoBw/pQAAEAKAAAB2UFsAALABlADAUJBgICCwACcgsIcgArKxEzETMyMjAxQTMDIRMzAyETMwMhASX12gGz2vXbAa/a9f35wAWw+xcE6fsXBOn6UAAAAgAo/qEHZQWwAAUAEQAdQA4MBQgIBBEIcg8LBgJyAQAvKzIyKzIyETMzMDFlAyMTIzcBMwMhEzMDIRMzAyEHMXDZPX8h+1712gGz2vXbAa/a9f35wL/94gFfvwTx+xcE6fsXBOn6UAACAIf//wWbBbAAAwAcAB1ADhESDwQcHA8AAQJyDwhyACsrMhE5LzMRMzIwMVM3IQcTBR4CBw4DJyETMwMFPgI3NiYmJyWHIgHeIRQBVIPVdQwJZKDGbP3m/fXbAQpTilsMCS9mRv6OBPDAwP6RAQNkwIxzrXQ6AQWw+xcCAT92VElnNwMBAAIALP//BrkFsAAYABwAHUAOGhkOCwAYGAsMAnILCHIAKysROS8zETMyMzAxQQUeAgcOAychEzMDBTI2Njc2JiYnJQEDIxMBcAFVg9R0Cwpkn8Zs/eb89toBCVOKXAsKMGZH/o8FbP30/AOBAQNkwIxzrXQ6AQWw+xcBPnZVSWc3AwEC9vpQBbAAAAEAJP//BIgFsAAYABlADA4LABgYCwwCcgsIcgArKxE5LzMRMzAxQQUeAgcOAychEzMDBTI2Njc2JiYnJQFnAVWD1HUMCWSgxmv95vz22wEKUotbDAkwZUf+jgOBAQNkwIxzrXQ6AQWw+xcBPnZVSWc3AwEAAgBI/+kE8gXHAAMALAAdQA4DAgIeCQUpCXIZFR4DcgArMswrzDMSOS8zMDFBByE3ATMeAhcWPgI3NzY2LgInJgYGBwc2NiQXHgMHBw4DJy4CBFcj/bAj/kHyAzJvX2aSYjkNEQgDFTdkTWSOWhbzG6oBAJyQxHIkEBITaKjpk5jYdgM7yMj+oFmDSwMDV5KvVXs6hH9oQAMDS4pcAZrkegMCeMbzfniG+MRwAwN63QAEADP/6QcCBccAAwAHAB0AMwAjQBMvBwYGDiQZAwJyAghyGQNyDglyACsrKysRMxI5LzMyMDFBAyMTAQchNwUHBgIGBicuAzc3NhI2NhceAwU3Ni4CJyYOAgcHBh4CFxY+AgIl/fX9AaQY/pUXBYoLE2ut8JmTx3EmEAsUbK7wmJPHcST+8AsJAi5tY2iZaD0MCwoCLm5jaZhnPQWw+lAFsP1xwMAfT4r+/8t0AwN8zPmAT4kBAMt0AwN7zPjSU0urmWIEBFmWtFdTSqyaZQMEWpa0AAL/pwAABMwFsQAWABoAH0APFxYWAAAJDAwZCHIOCQJyACsyKzIREjkvMxI5MDFBIScmJjc+AjMFAyMTJwYGBwYWFhcFBQEhAQOF/oZYiZENDKT8kQHp/Pba2YCzEAknYUwBRP7P/kX+7AG/AiIqOsubnMhhAfpQBOgCAYWDSnBBAwFQ/W4CkgADAEL/6ARWBhUAFgAvAEQAGUAMOiIwFxciAAFyIgtyACsrETkvMxEzMDFBNw4DBw4DDwI3NhI2Njc+AgMeAwcHDgMnLgM3Nz4CNz4CFyYGBgcHBh4CFxY+Ajc3Ni4CA5q8BkBri1F2nWIzCwm9CRBOidGSMWlR92mWXiYIAgxXj79zdKVnKggCBCEoDTeRtzpafUgKAgYLKFNER2pJKwcCBQ0sUwYUAVx2SCoPFnChxW1EEUSHAQfhnRwKGDj+IwNTi69gFm7AkVADAlqZwGkWGi8tFlucXcACWJBQFjdyYT4BAjlheD0WNmxXNwAAAgAj//8EDwQ6ABsAMwAtQBYCARsrKSkoASgBKA8NEAZyHh0dDwpyACsyETMrMhE5OS8vETMSOTkRMzAxQSE3BT4CNzYuAiMnAyMTBR4DBw4DBwMhNwU+Ajc2JiYnJTcFFx4CBw4DAmj+phwBCC9lTAkGGzNAH8yb6rsBm0aReEcEBEJoeTqN/lh+ATAxXkMJByZJKf7mIAE0NUZ6SgIEUoWeAc+qAQITOTgnMRoLAfyEBDoBARxAcFZFXzwhBf3wvgEBGT43MTgYAQGqAUIJOmlOXHtHHwAAAQAWAAADiAQ6AAUADrYCBQZyBApyACsrMjAxQQchAyMTA4gi/jab67wEOsD8hgQ6AAAD/4X+vgRjBDoADwAVAB0AIUAQHRgJFhYbEwgKchUQEAAGcgArMhEzKzIyMhEzLzMwMUEzAw4DByM3Nz4DNxMhAyMTIQEhAyMTIQMjAYrsThRHcaRyUBofOllALA+KApy865n+T/48BHha6zj9YTjvBDr+hG3awpIjvQE3cnuLUAF9+8YDbv1S/f4BQv6+AAAF/7AAAAaBBDoABQAJAA0AEwAXADBAFxUQEAAWEREJAwMGAAAUBwwSEw0NAgZyACsyETM/MzM5LzMzETMzETMRMxEzMDFBASETMwcnASEBAQMjEyEBITczAQMDNwEBv/7MAROr1kSl/qf+0wHlAl+867wDeP3u/tkHwwFAnMDDARQBtQKF/lbbGv4xAl8B2/vGBDr9e9sBqvvGAeGB/Z4AAgAX/+oDvQRQAB0AOwAjQBEAHwICOzsUMi4pC3IPCxQHcgArMswrzDMSOS8zEjk5MDFBJzcXPgI3NiYmJyYGBgcHPgIXHgMHDgMlFx4DBw4DJy4CNxcGFhYXMjY2NzYmJicnAirYFpYxVzwHBiRFKjBXPwvsCYjFaEeLbz8EBEx1if70u0J/ZToDBVeKo05ps20C6AEvUTIzYEMIByNKL7ECBAF6AQEcPjUvPB4BASBAMAFxkUYCASNJdFNLakIfRwEBHT5oTVuAUCQCAk2WcAE0RSMBIkg2NT4bAQEAAQAXAAAERQQ6AAkAF0ALBQAGAggGcgQGCnIAKzIrMhI5OTAxQQEzAyMTASMTMwFCAhDzvOx9/e/yvOsBbwLL+8YCy/01BDoAAwAiAAAEfgQ6AAMACQANAB9ADwwHBwsGBgIJAwZyCgIKcgArMisyETkvMzMRMzAxQQMjEyEBITczAQMDNwEByLvrvAOg/bb+7ge6AWaa8MYBUQQ6+8YEOv112gGx+8YB4YH9ngAAA/+8//8ERQQ6AAMABwAZABlADBIFEQpyAgMDBAgGcgArMjIRMysyMjAxQQchNyEDIxMhMwMOBCcjNzc+BDcDjyL9/iICuLzrvP3463cPKT5eh15RFyM7UTQhEwgEOsDA+8YEOv3qTZ2Obz4BxQIEPVxtbS0AAAMAIwAABZsEOgAGAAoADgAbQA0ACQwGAQoGcgsDCQpyACsyMisyMjISOTAxQQEzASMDMyMDIxMBEzMDAq0Bwtb9kaH3wje86rsDFbzsvAEmAxT7xgQ6+8YEOvvGBDr7xgAAAwAXAAAEQwQ6AAMABwALABtADQkGCAMCAgYHBnIGCnIAKysROS8zMhEzMDFBByE3EwMjEyEDIxMDTCH93iKTvOu8A3C87LwCdr6+AcT7xgQ6+8YEOgADABcAAARFBDoAAwAHAAsAGUAMCQYIAgMDBwZyBgpyACsrMhEzMhEzMDFBByE3MwMjEyEDIxMDjSH9+CI4vOu8A3K87bwEOsDA+8YEOvvGBDoAAgBUAAAEDAQ6AAMABwAQtwMGBwZyAgpyACsrMjIwMUEDIxMhByE3ArS87LwCRCH8aSEEOvvGBDq+vgAABQA5/mAFUgYAABYAKwBCAFYAWgAnQBUnBgZJHhERUjM+C3IzB3JYAHJXDnIAKysrKxEzMxEzMjIRMzAxQQcOAycuAzcTPgMXHgQHNzY2LgInJgYGBwMeAjMWPgIlNz4EFx4DBwMOAycuAzcHBgYWFhcWNjY3Ey4CJyYOAhMBMwEFSgIMPm2hb09zSyIDMA1AZYlXWXdHIAT0AgQFCB8/NjpXPRFKBypHMUVhQCT76wIKKkhoj1xRckUdAi4NQGSHVmmDRBH4AgUCGEE/OFY+E0cFJEQ2SmM+IHEBU+z+rQIWFV6/nl8DA0NwiUgBO02XekcCAkp6lJpaFiRgZVY3AgMsUDH+VC4+IwJAZ3ksFUykmXlGAwJMepFI/tNMk3VFAwNim7VrFixwZ0QCAiVHMAGgMEwuAQFMeoj8HQeg+GAAAAIAF/6/BEUEOgAHAA0AG0ANBgEDDQwMAApyAQZyCQAvKysyETMyETMwMXMTMwMhEzMDNwMjEyM3F7zrmgGamu28sGzYOH4hBDr8hgN6+8a//gABQb8AAgBtAAAEGAQ7AAMAFwAXQAsPFAkJAQAGcgEKcgArKxE5LzMyMDFBAyMTEwcOAicuAjcTMwMGFhYXFjY2BBi77LwuEjJucTh+ulsONes1CRtNRjpxbgQ6+8YEOv4hwRcdDgEBYLaDAUj+t0JfNQIBESAAAQAXAAAGLQQ6AAsAGUAMBQkGAgILAAZyCwpyACsrETMRMzIyMDFTMwMhEzMDIRMzAyHT65oBTJrsmgFLm+u8+qYEOvyGA3r8hgN6+8YAAgAR/r8GQgQ6AAUAEQAdQA4MBQgIBBEKcg8LBgZyAQAvKzIyKzIyETMzMDFlAyMTIzcBMwMhEzMDIRMzAyEGQmvZOH4h+/TrmwFMm+yaAUua7Lz6pr/+AAFBvwN7/IYDevyGA3r7xgACAFH//wSrBDoAAwAcAB1ADhESDxwEBA8CAwZyDwpyACsrMhE5LzMRMzIwMUEHITcBBR4CBw4DJyETMwMXPgI3NiYmJyUCbiL+BSIBkQEna7FkCAZThqVX/iC87ZvYOmNECQcgRzL+vAQ6wMD+qAEEUp10YI5fLgEEOvyFAQEpUT00SyoCAQAAAgAj//8F+AQ6ABgAHAAdQA4aGQ4LGAAACwwGcgsKcgArKxE5LzMRMzIzMDFBBR4CBw4DJyETMwMXPgI3NiYmJyUBAyMTAT0BJ2yxZAgGU4alV/4hu+ua2TpjRAkHH0gy/rwE3LzsvALiAQNTnXRfj18uAQQ6/IUBASlRPTRLKgIBAhj7xgQ6AAEAI///A+UEOgAYABlADA4LGAAACwwGcgsKcgArKxE5LzMRMzAxQQUeAgcOAychEzMDFz4CNzYmJiclAT0BJ2yxZAgGU4alV/4hu+ua2TpjRAkHH0gy/rwC4gEDU510X49fLgEEOvyFAQEpUT00SyoCAQAAAgAg/+gDzARRACcAKwAdQA4rKioJHRkUC3IEAAkHcgArMswrzDMSOS8zMDFBJgYGBwc+AhceAwcHDgMnLgI3FwYWFhcWPgI3NzYuAhMHITcCKDpePwveCofMcHGgYSUKBA5Vjb92datZBd8EIUs8SGpIKQgEBgMhTdMd/lUdA48CMFU4AXSsXgMCXJq/ZiRtx5lYAwJst3QBN2E+AwJAa387IzR3bEf+6KOjAAQAJf/oBgkEUgADAAcAHQAzACNAEyQDAgIZLw4HBnIGCnIOB3IZC3IAKysrKxEzEjkvMzIwMUEHITcBAyMTATc+AxceAwcHDgMnLgM3BwYeAhcWPgI3NzYuAicmDgIC7CL9zCEBFbzrvAFJAw5YkcR5dKZmKAsDDVqSxHhypWco+QIGBSZSRkpwTC0JAwYGJ1JHS25MLAKFwMABtfvGBDr90Bdwy51ZAwNcmsJpGHDJm1cDA1uYwIAXNnlqRQICP2yBPxc2e2xGAgJAboMAAv+9AAAEGAQ7AAMAHQAdQA4BEhITEwMJBAZyBwMKcgArMisyEjkvMxI5MDFBIQEhAQUDIxMnDgIHBhYWFwUHJS4DNz4DAUIBAv56/v8CiQHSvOubzDVjRwkHIkQrAUMf/tlJiWk6BQVVh6QCEf3vBDsB+8YDfAEBJks4L0AjAgGwAQErUXtRXYZXKQAEAA3+RwPxBgAAEQAVACwAMAAdQBAwLygcB3IVAHIUCnINBg9yACsyKysrMswyMDFBMwMOAiciJic3FhYzMjY2NwMBIwETIz4DFx4DBwMjEzYmJicmDgIBByE3AtjtVw5hp3YjQyIgGDMZNUMkB37+9esBCx9KDUV2pmxad0QVCHTtdQcUQ0FHa0suAakd/XMdAc799W6sYgEKCbwICThXLQY++gAGAPxFXruZWgMCQnGRUf1JAro7XjkCATdgdwLVpqYAAgA5/+kD7ARRAAMAKwAbQA0EDQMCAg0hGAdyDQtyACsrMhE5LzMRMzAxQQchNwEWNjY3Nw4CJy4DNzc+AxceAgcjNCYmJyYOAgcHBh4CApQc/jUcARQ7YkMO3QyKznFzomEkCgQOVY3Ad3mrWgHdI08+SmtHKAkDBgEgTgJoo6P+QwIvVjgBdK1dAgNamMFnJHDGmVYDAmu2dTlhPQIDP2mAPiM0eWpGAAAD/7j//wZJBDoAEQAVAC4AJUASFi4uACQhIQoJCnIUFRUjAAZyACsyMhEzKzIyETMROS8zMDFBMwMOBCcjNzc+BDcBByE3AQUeAgcOAychEzMDFz4CNzYmJiclAVDqdw8oPl6HXlMZIjtRNCEUCAKKIv4NIgIZASZns2kHBVWGpFX+Ibzsm9g3ZEQJCCZKLv69BDr96k2djm8+AcUCBDxdbW0tAc/AwP6HAQNLlXJeilkrAQQ6/IQBASdNOzJBHwIBAAMAF///BloEOgADAAcAIAAlQBIVFhMTBggDIAMCAgYHBnIGCnIAKysROS8zMxEzETMRMzIwMUEHITcTAyMTAQUeAgcOAychEzMDFz4CNzYmJiclA1Mi/d8hjbzrvALeASdnsmkHBlSGpFT+ILzsm9g4Y0UICCZJL/69Apy+vgGe+8YEOv6HAQNKlXNdilorAQQ6/IQBASdNOzJBHwIBAAADAA0AAAPyBgAAAwAaAB4AGUANHh0WCgdyAwByEQIKcgArMisrMswyMDFBASMBEyM+AxceAwcDIxM2JiYnJg4CAQchNwID/vXrAQsfSg1FdqZtWXdEFgl07XYGFERBRmtLLgG7Hv1zHgYA+gAGAPxFXruZWgMCQnGRUf1JAro7XjkBAjhgdgLep6cAAAIAF/6bBEUEOgADAAsAF0ALAAYGCwpyCQQGcgIALysyKzISOTAxZTMDIwMzAyETMwMhAX3sYOtL65oBmprtvPyOwP3bBZ/8hgN6+8YAAAIAX//mBzAFsAAYADAAG0AOLB8JchQHCXImGg4AAnIAKzIyMisyKzIwMUEzAw4DJy4DNxMzAwYeAhcWNjY3ATMDDgInLgM3EzMDBh4CFxY2NjcDqMivDUp3pWhimGMqC671rQUGID81TW1ACwNB9a4ThtmNYYtWIAqux60GCSNENUxoPQoFsPwBYad+RAICRnukYAQA+/8sV0ouAgNFdkYEAPwBiNBzAwNLfqFaBAD7/y1ZSC0CA0Z3RAAAAgBH/+cGKgQ6ABgAMQAbQA4sHwtyFAcLciYaDgAGcgArMjIyKzIrMjAxQTMDDgMnLgM3EzMDBh4CFxY2NjcBMwMOAicuAzcTMwMGHgIXFj4CNwMBwHIMQmyVYVuGVSIJcuxyBAIWMi1EXTYJAq/scxB1wYNafUkbCXLAcQQDGzgvMkgxHQYEOv1YWZt2QAIDQ3OXVwKp/VYiT0UuAwNCbDwCqv1YfMJtBAJHd5VRAqn9ViZQRCsCAihEUyoAAAIAIf/+A+cGFwAXABsAIUAQDQoAFxcKGhsbCgsBcgoKcgArKxE5LzMROS8zETMwMUEFHgIHDgInIQEzAxc+Ajc2JiYnJQEHITcBQgEnbrBgCAqI03n+IAEP7O7YPmZBCAgdRTb+vQHaHf1YHQMAAQRYo3WBsVsCBhf6qAEBMFk/NVEwAwECoKenAAMAK//qBuQFyQADACwAMAAgQBEDAgIvMAJyLwgdFANyKQkJcgArMisyPysSOS8zMDFBByE3ATcGBgQnLgM3Nz4DFx4CFycuAicmDgIHBwYGHgIXFjY2AQMjEwUsIfwvIgQz8Bit/vydjsJuIxASFGqr7JWY0nAG9AEtbF5mlWQ7DBIHBRI0YUxkkF38pP30/QNOwMD+jAKc4HYDA3jE8315hvrEcAMDgd+UAVaGTwMDVZCvVnw5g35pQQIER4UEM/pQBbAAAAMAGf/pBaQEUQADACsALwAkQBMDAgIuLwZyLgohHRgHcggEDQtyACsyzCvMMz8rEjkvMzAxQQchNwEWNjY3Nw4CJy4DNzc+AxceAgcjNCYmJyYOAgcHBh4CAQMjEwRkHfywHQKAO2JDDt0Mis5wdKJhJAsDDVeMwXd4rFoC3CNPPkprRykIBAYCIE3+c7zsvAJxp6f+OgIvVjgBdaxdAgNamcBnJHDGmVYDA2q2dTlhPgEDP2mAPiM0eWpGA477xgQ6AAAE/6wAAASJBbAABAAJAA0AEQAkQBERDQwMAgAGBgcDAnIPBQUCCAA/MxEzKzIyETMROS8zMzAxQQEhATMTAzczEwMHITcFAyMTA0H9c/74AvSPZMo6kPagIP0rIAHQXtheBRb66gWw+lAFOHj6UAJmuLhK/eQCHAAE/50AAAO6BDoABAAJAA0AEQAeQA4RDQwMAQcDBnIQBQUBCgA/MxEzKzISOS8zMzAxQQEjATMTAwMzEwMHITcFAyMTAg/+ifsCWLoljBiq4HEe/XUeAY9EtUQCwv0+BDr7xgLYAWL7xgHFqalA/nsBhQAGAD4AAAaTBbAAAwAIAA0AEQAVABkANEAaCRQUBgYYFREREBADAgIYCBYCcgQKCgsHAnIAKzIyETMrPzkvMzMRMxEzETMRMxEzMDFBByE3AQEhATMTAzczEwMHITcFAyMTAQMjEwNwIf3PIAQN/XP+9wL1j2PJOpD2oCH9KyEBz17YXv4b/fX9Ama3twKx+ukFsPpQBTh4+lACZri4Sv3kAhwDlPpQBbAAAAYALQAABYIEOgADAAgADQARABUAGQAuQBcVEREQEAMCAhgZBnIJFBQGBhgKCwcGcgArMj8zETMRMysSOS8zMxEzETMwMUEHITclASMBMxMDAzMTAwchNwUDIxMBAyMTAvQe/dIeAxL+iPsCWLoljBiq4HEe/XYeAY5DtUP+dbzsvAHFqKj9/T4EOvvGAtkBYfvGAcWpqUD+ewGFArX7xgQ6AAUAEgAABl8FsQAWABoAHwAkACgANEAZGRoaJBsfHyMjEygGBhMTARwkAnINJycBCAA/MxEzKzISOS8zETMRMxEzETMRMxEzMDFhIxM+AjMFHgIHAyMTNiYmJyUiBgcBByE3EwEhASMDAQcjAQEDIxMBB/U6FpbwmwHWkM1jEDr1OgoeXVL+K4efFQQ6I/0FI7cCCwEd/XeSogEYMoz+pQJXhfSGAWGgx10BAmPGmP6fAWJRbTkCBHWJBE/Jyf0XAun8lwNq/PtlA2n9Ufz/AwEAAAUAFQAABScEOwAXABsAIAAlACkAMEAXGhsbJSAkJBMpBgYTEwEdJQZyDSgoAQoAPzMRMysyEjkvMxEzETMRMxEzETMwMWEjNz4CMwUeAgcHIzc2JiYnJSIGBgcBByE3EwEhASMDEwcjAQEDIxMBAOsaFIPYkwE1iLZSDxrsGwgOSEz+ylVwQAwDhh79RB20AYABD/4FiGXJK4H+7wH+X+xgrZPDXwIDZcCKrq9EbUMDBDpxUQONq6v9xwI4/VoCp/2vVgKm/ez92gImAAcANwAACJMFsQADAAcAHgAiACcALAAwADxAHiEiIiQsAnInKysbMA4OGxsDAgIFBwJyFS8vCQkFCAA/MxEzETMrEjkvMzMRMxEzETMRMysyMhEzMDFBByE3EwMjEwEjEz4CMwUeAgcDIxM2JiYnJSIGBwEHITcTASEBIwMBByMBAQMjEwUBIvxrIr399f0CB/U5FJfymwHVkc5iETn1OgoeXFP+KoafFQQ6I/0FI7cCDAEc/XaRogEYMoz+pQJYhfaGAyfAwAKJ+lAFsPpQAWChyFwBAmLGmf6fAWJRbTkCBHWJBE/Jyf0XAun8lwNq/PxmA2n9Ufz/AwEAAAcAIwAABygEOwADAAcAHwAjACgALQAxAD5AHiUiIyMtLQcoLCwbMQ4OGxsDAgIGBwZyFTAwCQkGCgA/MxEzETMrEjkvMzMRMxEzETMRMxEzETMRMzMwMUEHITcTAyMTASM3PgIzBR4CBwcjNzYmJiclIgYGBwEHITcTASEBIwMTByMBAQMjEwStIPw9IOC867wCIuwbFIPYkwE1ibZRDxrtHAgOR03+ylVwQAwDhh79Qx60AYABD/4GiGbJKoH+7gH/YOtfAmG1tQHZ+8YEOvvGrZTCXwIDZcCKrq9EbUMDBDpxUQONq6v9xwI4/VoCp/2tVAKm/ez92gImAAP/qf5FBDIHigAXAEAASQArQBQYDQxAQAArLAlFQ0NCSEGARxcAAgA/Mt4azTI5MhEzPzMSOS8zMzMwMUEFHgMHDgMjJzcXMjY2NzYmJiclExceAwcOAyMnBgYHBhYWFwcuAjc+AjMXPgM3Ni4CJycBFzc3FwEjAzUBDwEDWKF9QwYHZZy4WaEYgkmEWQsJNGI9/uEtf1eujE4HCF2VumY4N14IByE7IVZKcT4EBWqlXTg2Z1Q4CQgdQl85mAE/da3PAf7Kk+sFsAECLFuOYmiPWCgBjAEuYk9DVCkCAf4kAQEnVI1obaRtNgEBMzwrPSwQkxtfg1NnfDgCAR48WDo+WDkdAQEE/pybBBD+7QETEAAD/7T+TQPEBh4AGABBAEoAJkARDRkMQUEALUNJRkRCgEgYAAYAPzLeGs0yMjI5LxI5LzMzMzAxUxceAwcOAyMnNxc+Ajc2LgIjJRMXHgMHDgMjJwYGBwYWFhcHLgI3PgIzMzI+Ajc2LgInJxMXNzcVASMDJ83/RZSATAQDYpSjRqkWiTRvUQkGIDpDHv7jRIhAnI5aAwRajqRPMThkCgYdOCBVQms8AwRlnlYyJldPNwgIJ0VQIaH4dazQ/suU6wEEOgEBHUJxVlhyPxkBfQEBGUM9JzEbCgH+vQEBEzdpVV2ATSMBAjA+KjwtEoodYH5MYnY0DyI8Li44HQoBAQRRnJsEEf7uARMQAAMAYf/pBRsFxwAXACgAOQAfQBIMKWoyIGoyMgwAGGoAA3IMCXIAKysrEjkvKyswMUEeBAcHBgIGBicuBDc3NhI2NhcmDgIHBgYHITY2NTYuAgEWPgI3NjY3IQYUBwYeAgMvda52QhENCxNrru+Zda53QhINCxRrr/CLXpBmQhABAwICpgEBBww0a/7iX49lQRECAgH9WQEBBQ01awXEAlKLs8lnT4r+/8t0AwJSi7TJZ1CJAQDLdM8DSX+fUQcMBwYLBkqYgVL7wgNIf59RBgwFBQsGSJaCUgAAAwA0/+gEHQRSABUAIAArAB9AEgshaicbaicnCwAWagAHcgsLcgArKysSOS8rKzAxQR4DBwcOAycuAzc3PgMXJg4CByE2LgIDFj4CNyEGHgICd3OmZSgLAg5ZksR4cqZmKQsCDliSxGxAY0kyDwHvARAsTLs/ZUoyDv4PAhArTgRPA1yawmkYcMmaWAMDW5jAaRdwy51ZwwIvUmg3MmRTNP0cAi9TajcyZVQ0AAIAqAAABWEFxgAOABMAGUANDhIIBRMCcgUDchIIcgArKysRMxEzMDFBAT4CFxcHJw4CBwEjAxMTIwMCWgFdJGKPZi8ZEyg7KxD95b8YghSw4wGGAvxVlVoBAdIBASY8IvuSBbD7xP6MBbAAAAIAdQAABEoEUgASABcAFUALFwZyEhYKcgwFB3IAKzIrMiswMUETPgIXMhYXByYmIw4CBwEjGwIjAwHPvh1af1cfNhsqCxcMHjEmDP55pRxEC5ekAW4BwUqFVAEMDLoDBQEeLxj83wQ6/Sf+nwQ6AAAEAGH/dgUbBi4AAwAHAB8ANwAkQBACAicnAxoDcgcHMzMGDglyACvNMxEzfC8rGM0zETN9LzAxQQMjEwMDIxMBBwYCBgYnLgQ3NzYSNjYXHgQFNzY2LgInJg4CBwcGBh4CFxY+AgOvSrhJJUu4SwL1CxNqrvGYda53QhINCxNsr/CYda52QRL+8gsIAxY3ZU9omGg9DQwHAhU5ZE9pmGc9Bi7+WQGn+vj+UAGwAdxQif7+ynQDA1GLtMlmUYkBAMt0AwJSi7PKuFM8h4JrQwMDWZezWFI8h4NsQwMEWpe0AAQANf+GBB4EtQADAAcAHQAzACRAEAcHJCQGGQtyAgIvLwMOB3IAK80zETN9LysYzTMRM3wvMDFBAyMTEwMjEyU3PgMXHgMHBw4DJy4DNwcGHgIXFj4CNzc2LgInJg4CAvFHqUcISKlI/pkCDlmRxHlzpmYoCwIOWpHEeHOlZin5AwUFJlJGS29MLQkCBwYmU0ZLb0wsBLX+aAGY/HD+YQGf5Rdwy51ZAwNcmsJpGHDJm1cDA1uXwYAXNnlrRAICP2yCPhc2em1GAgJAboMABABj/+cG2QdAABUAIABBAGUAM0AZW04JclQxMSw4CXJCQ0MRCAgbGxYWIiECcgArMjJ8LzMYLzMRMzIRMysyMi8zKzIwMUEzBycuAyMiBgcHJzc2NhceAwEnNjY3NxcHDgIlBw4CBwMGHgIXFjY2NxMzAw4DJy4DNxM+AgU3HgMHAw4DJy4DNxMzAwYeAhcWPgI3EzYuAgXcIAgZPHBvbjgzRAoCfgIJgms9cG5y/k5RHTMKEp4NBzVK/roWT2g7DFQFAx0/OE1tPwtBxkANSnmkZ2WYYCYKVRSH3AMSEGSVXyYLVQ9Qgq9sYoxYIgpBxj8GCiZGNjtWPCMIVQYDG0AGwIQBAycwJTozEwEmanMCASYxJf5TPSFGLF8BZS1MO4nIAU99R/3tLF1SNQIERndGAYb+emCnfUUDAkyCqmACEpHUdMnLBU2AqWD97maugkcDAkp+oVsBhv55L1pILAICLlJjMwITL1xOMgAABABM/+cFwwXnABUAIABCAGYAM0AZXE8LclUyMiw5C3JDREQRCAgbGxYWIiEGcgArMjJ8LzMYLzMRMzIRMysyMi8zKzIwMUE3BycuAyMiBgcHJzc2NhceAwEnNjY3NxcHDgIlBw4CBwcGBhYWFxY+Ajc3MwcOAycuAzc3PgIFNx4DBwcOAycuAzc3MwcGHgIXFj4CNzc2NCYmBTciCB07cWxuODRFCAJ/AgiEaz1wbXL+T04dMwkSnw4HN0r+5xVGWjIKIgQBFDAuMUk0Hwceth4LPWWQXV2FUSAJIhJ6ygKLEFyIVSIJIgxEcZtjWHlIGQgfth0FBxw3LTJGLRoFIwQWNgVnAYUBAicxJTozEgEla3ICASYxJf5SPSBHLF4BZS5KO3vAAUhxPvIhU000AgMoRFQqxsVUmnlDAwJJepxW8YbDbMDBBEh3mlnxW6F6RAMDSXiVTsXGJU9GLAEDL0tYKPQoUkYvAAADAF//5gcwBxAABwAgADgAK0AVNCcJcgUCAQEHBy0hCAgVAnIcDwlyACsyKzIRMzMzfC8zGC8zMysyMDFBITchByEHIwczAw4DJy4DNxMzAwYeAhcWNjY3ATMDDgInLgM3EzMDBh4CFxY2NjcD8v7AFQM6FP6vF6k0yK8NSnelZ2OYYyoLrvWtBQYgQDRNbUALA0H1rhOG2Y1hi1YgCq7HrQYJI0Q1TGg9CgaYeHh+avwBYad+RAIBR3ukYAQA+/8sWEkuAgNFdkYEAPwBiNBzAwJLfqJaBAD7/y1ZSC0CA0d2RAADAEf/5wYqBbEABwAgADkAK0AVNCcLcgUCAQEHBy0hCAgVBnIcDwtyACsyKzIRMzMzfC8zGC8zMysyMDFBITchByEHIwczAw4DJy4DNxMzAwYeAhcWNjY3ATMDDgInLgM3EzMDBh4CFxY+AjcDSf7QFQMYEf69F6kxwHIMQWyWYFyHVSEIc+xyBAIWMi1EXTYJAq/scxB1wYNafUoaCXLAcQQDGzcwMUkxHQYFOXh4f4D9WFmcdUEDAkRzl1cCqf1WIk9FLgIDQWw8Aqr9WHzCbQMCR3eWUQKp/VYmUEMrAgInQ1QqAAIAWP6OBNwFyAAhACUAGUAMFhINA3IlAAAkAQlyACvNMxEzK8wzMDFlBy4ENxM+AxceAgcjNiYmJyYOAgcDBh4DFwMjEwI0EGWccUMXDCoTZ6LahZjUZwj0BidoXFWCXDkLLAgBFzRX4F/0YLPJBUZ2mLBdARB736xiAwJ73ZdUhVACAkh6lEn+7TVxaFU1Bf3cAiQAAAIARP6LA+8EUQAfACMAGUAMFREMB3IgAAAiAQtyACvNMxEzK8wzMDFlBy4DNzc+AxceAgcnNiYmJyYOAgcHBh4CFwMjEwHlEm+eXyMLAw1Wjb91d6pYBd0DIEs8SGpIKwgFBgIgTtpf7GCtwwddmL1mI23HmlcDA2u3cwE2YT8CA0BrfzwjN3ZmRAf94AIgAAEAOwAABLgFPgATAAixDwUALy8wMUEBFwcnAyMBJzcXASc3FxMzARcHAzz+8fxT/em1ASb7Uv4BDf1U/PCy/tX/VgMs/ouscqn+vgGWq3KqAXWrdKoBS/5hq3EAAfzwBKX/4AX8AAcAFbcGBgQEAQICAQAvMy8RMxEzfC8wMUMhByc3ITcXRv3zF6YqAg4SpgUjfgHqbAEAAf0QBRb/8gYUABUAErYBFBQPBoALAC8azDIzETMwMUEXFj4CFxYWBwcnNzYmJyYOAgcj/RoZQXp1eEBkcwUDfQIDJjE9d3h7PyUFmgEBJjElAQFvZicBFC42AgIjMScBAAAB/jEFGP8CBmIABQAKsgCAAgAvGs0wMUEnNzMHF/62hRa0HyYFGM97pG0AAAH+PQUa/1cGYgAFAAqyAYAEAC8azTAxQwcnNzczw7VLThi0BdG3THGLAAj6Q/7CAaEFsQANABsAKQA3AEUAUwBhAG8AAEEHNjYXFhYXJzYmIyYGAQc2NhcWFhcnNiYjJgYTBzY2FxYWFyc2JiMiBgEHNjYXFhYXJzYmIyIGAQc2NhcWFhcnNiYjJgYBBzY2FxYWFyc2JiMmBgEHNjYXFhYXJzYmIyIGEwc2NhcWFhcnNiYjIgb+D3AIcVpYawFsAx4wMDQCAnEIcllYbAFsAh0xLzRRbghwWlhqAWsCHTAwNf7bbghwWldrAWsCHTAwNf2VcQlxWldrAWsCHTAwNf6ncQhyWlhrAWwDHTEwNP7xbghwWldrAWsCHTEvNTxvCHBaV2wBbAIdMDA0BPQBWGYBAWdXASo8ATv+wQFYZgEBZ1cBKjwBPP3gAVdmAQFmVwEqPDv90AFXZgEBZlcBKjw7/rsBWGYBAWdXASo8ATsE8AFYZgEBZ1cBKjwBO/3fAVdmAQFmVwEqPDv90AFXZgEBZlcBKjw7AAj6c/5jAXgFxgAEAAkADgATABgAHQAiACcAAEU3FwMjAQcnEzMBNzcFByUHByU3ASc3JRcBFwcFJwEHJwM3ATcXEwf9Y4UOq2YBpYQOqmYBIA0LATgQ+lsOCf7HEQVoWwMBTD762loC/rZAAgZnEV9CAt9nE15DPQMT/rAGBAMRAVH8JowKgFqUjAqAWgEIYhKYTvwxYhOYTwQCXwIBUTv7V2AC/q88//8AJf6ABXwHJgQmANwAAAAnAKEBRwE+AQcAEARN/8gAFUAOAiMEAACYVgEPAQEBXlYAKzQrNAD//wAX/oAEbQXbBCYA8AAAACcAoQCL//MBBwAQA1j/yAAVQA4CIwQBAJhWAQ8BAQF9VgArNCs0AAACACH//gPnBmAAFwAbABpADBoLGwJyABcXDQ0KEgA/MxEzLzMrzjMwMUEFHgIHDgInIQEzAxc+Ajc2JiYnJQEHITcBQgEnbrBgCAqI03n+IAEb7PrYPmZBCAgdRTb+vQH/Hv1XHgMAAQRYo3WCsVoCBmD6XwEBMFo+NVEwAwEDb6amAAACACYAAAT6BbAAAwAbACNAEQECBQADBgYFBRIQEwJyEghyACsrMhE5LzMRMzMRMzMwMUEBBwEDJTcFMjY2NzYmJiclAyMTBR4CBw4CA1kBRGv+vUP+giMBY1OLWwsLLGRM/s7a9f0CC4fTcgwNpf4D3/42VgHJ/pYBxwE5c1dKcUEDAfsYBbABA23JjJ3NYgAE/8j+YAQQBFIAAwAIAB4ANAAlQBQAAzABAjAlGg8LcgcGchoHcgYOcgArKysrETMyMjIRMzMwMUEBBwEDAyMBMwEHDgMnLgM3Nz4DFx4DBzc2LgInJg4CBwcGHgIXFj4CAoIBHGz+5YXe7AEE2QJhAgxFdapzZolTIAQKEE16qG1vjEkT9wIFAyBNRD5kTDMLHwIXM082SmpHKAGr/lNWAa4CBvsEBdr98xVix6ViAwJdlrNYUF++nV0EA2ShvXAWM3hrRgIDLVBmN8QyXEssAgJCb4MAAgAjAAAE6gcTAAMACQAVQAoCBgYDCQJyCAhyACsrzjMRMzAxQQMjExMHIQMjEwTqX+xfpiP9cNr0/AcT/d4CIv6dyPsYBbAAAgARAAAD0gV3AAMACQAVQAoCBgYDCQZyCApyACsrzjMRMzAxQQMjExMHIQMjEwPSWexZnSL+NpvrvAV3/gMB/f7DwPyGBDoAAgAr/sMErAWwAAUAHQAZQAwGBwcTEgIFAnIECHIAKysyLzM5LzMwMUEHIQMjExM3Fx4DBw4DBzc+Azc2LgInBKwj/XHa9f0YI+iBxYE2Dg1alc+CE1N2TywJCRE8b1UFsMj7GAWw/M3GAQJVl9F/f9GaVQK3AkFtiUpMiWk/AgACABH+4AOFBDoAFAAaABtADQABAQsXGgZyGQpyDAsALzMrKzIROS8zMDFTNxceAgcOAwcnPgI3NiYmJwEHIQMjE64j3YzZcg4ITHeWUUhGckoKCy9sUgHcIv42m+u8AcrGAQNy0pNYmHhWF60ZUXNNUXlFAwJxwPyGBDr///+k/poH6AWwBCYA2gAAAQcCYQaFAAAAC7YFGwwAAJpWACs0AP///7D+mgaBBDoEJgDuAAABBwJhBUgAAAALtgUbDAAAmlYAKzQA//8AK/6YBXYFsAQmAjwAAAAHAmEEDP/+//8AIv6aBH4EOgQmAPEAAAEHAmEDVAAAAAu2AxECAQCaVgArNAAABAAkAAAFgwWwAAMABwANABEAL0AXDw4OCwwEBAwMCwcHCwsAEAMIcggAAnIAKzIrMhI5LzMvETMRMy8REjkRMzAxQTMDIwEzAyMBIQEhNyEHNwEhASD2/fUCDJt8mwKYATf9nP4hBgGFHsYBMf7VBbD6UARL/TgELfzA2ami/L4AAAQAIQAABMoEOgADAAcADQARAC1AFg8ODgsEBAwMCwcHCwsAEAMKcgkABnIAKzIrMhI5LzMvETMRMy8RMxEzMDFTMwMjATMDIwEhASE3IQc3EyHc7LzrAdWSapICDAEy/g7+SQcBYSW/9/7gBDr7xgNT/aUDQv112qeA/Z4AAAQApAAABuEFsAADAAcADQARACNAERAPDwsKCgMOBghyDQcCAwJyACsyMjIrMhI5LzMzETMwMUEHITchAyMTIQEhNzMBAwE3AQLjIf3iIgLB/PX9BE79Mf6hBegCBrz+pLYBvgWwwMD6UAWw/MLaAmT6UAKkt/ylAAQAbAAABbQEOgADAAcADQARACNAERAPDwsKCgMOBgpyDQcCAwZyACsyMjIrMhI5LzMzETMwMUEHITchAyMTIQEhNzMBAwM3AQKTIv37IgJxvOy8A6H9tv7uB7kBZ5rvxgFPBDrAwPvGBDr9ddoBsfvGAeGB/Z4A//8AJv6aBYUFsAQmACwAAAEHAmEEYAAAAAu2Aw8KAACaVgArNAD//wAX/poEYQQ6BCYA9AAAAQcCYQNgAAAAC7YDDwoAAJpWACs0AAAEACYAAAfqBbAAAwAHAAsADwAfQA8HBgYKAgMDDAsCcg0KCHIAKzIrMjIRMxE5LzMwMUEHJScDByE3EwMjEyEDIxMH6iH9m5ZuI/0RI6j99v0EYv30/AWwwAG+/aHHxwJg+lAFsPpQBbAABAARAAAFlgQ6AAMABwALAA8AH0APBwYGCgIDAwwLBnINCgpyACsyKzIyETMROS8zMDFBByE3AwchNxMDIxMhAyMTBZYi/lAjoCL93iGUvOu8A3C87LwEOsDA/jy+vgHE+8YEOvvGBDoAAAIAKv7CB4kFsAAHAB8AGUAMCAkJFAQHAnIGCHICAC8rKzIvOS8zMDFBAyMTIQMjEwE3Fx4DBw4DBzc+Azc2LgInBYH989n9j9r1/QNaI+mBxIE2Dg1Zls6DE1N2TywJChI8b1UFsPpQBOj7GAWw/MzGAQJVl9F/f9GaVQK3AkFtiUpMiGo/AgAEABH+4wZHBDoAFAAYABwAIAAjQBEeFxgYAAEBCx0cBnIbCnIMCwAvMysrMhE5LzMyETMvMDFBNwUeAgcOAwcnPgI3NiYmJwMHITczAyMTIQMjEwMyIwEKjuF5DQdLd5RRS0ZySgoLN3ZT0SL9+CI5vOu8A3K87LwBzcYBA27Rl1mXeVYXrhlQdE1VeUECAm7AwPvGBDr7xgQ6AAABAF//6AXmBccAQwAdQA45DAwjIgNyAAEBLhcJcgArMjIRMysyMhEzMDFlByYkJgI3Nz4DFx4DBwcGAgYEJy4DNzc+AzcHDgMHBwYeAhcWPgI3NzY2JiYnJg4CBwcGHgIFZBGg/uXQZBggDkd4qG9xkU0XDCAXjNj+7Z2P2o06Eh0SWpLKgRhMakgoCh4LEUN+YnC7kF4RIgUHEDo7PlQzHAYhEj2Oy7DGBWa7AQ6u017DpGMEA22tx1vOmP76xWsDA3HB9YbBdtuvaAPPAlJ9iz7EUaiNWAMDT4+6aOMnc3JPAwNHbXcu2ILGiEcAAQBL/+gElgRTAEMAHUAOOQwMIyIHcgABAS4XC3IAKzIyLzMrMjIRMzAxZQcuAzc3PgMXHgMHBw4DJy4DNzc+AzcHDgMHBwYeAhcWPgI3NzY2JiYnIg4CBwcGHgIEUwp+5KpVEBEKNlyEV1dwPRIHERBtqdV5dK5wLQsKDEd1oWUXMUUsGgcKBwksWEdNgWM/ChICBQoiJCc0IBIDEg44daCOowVLj9KMgUqYfUsDA1iKnEd/dsiUTwMDYKDKbE5fq4RNA8YFOVNdKU86fm9IAwM3Y4FHghhOUzsEMEpOHYdllWMxAP///8D+mgVGBbAEJgA8AAABBwJhA7IAAAALtgEPBgAAmlYAKzQA////uv6aBBIEOgQmAFwAAAEHAmECvQAAAAu2AQ8GAACaVgArNAAAAwCa/qEGbQWwAAMACQARAB1ADgkNDQgKCHIFEAwCAwJyACsyMjIvKzIyETMwMUEHITcBAyMTIzcFEzMDIRMzAwReIvxeIgWFcuI9fyT8Rvz22wJy2vX9BbDAwPsZ/dgBX8nJBbD7FwTp+lAAAwBX/r8E2QQ7AAMACwARAB9ADwIDAw0KBQZyCAcHEAQKcgArMjIRMysyLzkvMzAxQQchNxMTMwMhEzMDNwMjEyM3Ayki/VAiMbzsmwGbmu28sGvaOH4iBDvAwPvFBDr8hgN6+8a//gABQb///wDE/poFXQWwBCYA4QAAAQcCYQQ0AAAAC7YCHRkAAJpWACs0AP//AG3+mgQ3BDsEJgD5AAABBwJhAzYAAAALtgIbAgAAmlYAKzQAAAMAtAAABU4FsAADABkAHQAjQBEDAwoKFQICFRUEHAhyGwQCcgArMisROS8zLxEzETMvMDFBAyMTATMDBhYWFxY+AjcHDgMnLgI3ATMDIwNDf5p//mj1SgokZVkxYmFgLhIuXmBhL5LYahIDk/X99QQQ/SQC3AGg/jxXdDwCAQcPFg3JDxYNBgECaM6aAcP6UAAAAwCCAAAELgQ7AAMABwAbACNAEAAAGBgNAQENDQUKchIEBnIAKzIrMi8zfS8RMxEzGC8wMUEDIxMBAyMTEwcOAicuAjcTMwMGFhYXFjY2AqBqmmoCKLzsvC0RMm5xN3+5XA416zUIGk1GOnFuAyz9oAJgAQ77xgQ6/iHCFh4NAQFgtoMBSP63Ql81AgERIAAAAgAcAAAEtQWwABUAGQAZQAwBFwYRERcYAnIXCHIAKysROS8zETMwMWEjEzYmJicmDgIHNz4DFx4CBwEjEzMEWfVKCiNlWTFiYWEvFC1eX2AwkthqEfxu9v31AcVWdTsCAQcPFQ7JDxUNBgECZ86a/j0FsAACAFX/6QW7BcYACQA2ACVAEgUdAQEdHQYcHAokFQNyLwoJcgArMisyETkvMzMRMy8RMzAxUxcGFhYXBy4CAS4DNzc+AxceAwcHITchNzYuAicmDgIHAwYeAhcWNjcXDgJbrAYfUUcPeJhEAwGK1Ys6EicTa6rchY26ZRsRFfxdIgKnBgwIL2JQVYVhPA0pCxRGfV5etFcdNYuSBDoBRGU7Ba8FbbX8IgFeqeSG/3rhrmIDA3bC7XuJviJChG5EAgNFd5JL/wBTlHNCAgIoIsMmJwwAAAL/8v/qBHMEUQAIADUAJUASBBwBARwcBRsbCSMUB3IuCQtyACsyKzISOS8zMxEzLxEzMDFDFwYWFwcuAgEuAzc3PgMXHgMHByE3BTc2LgInJg4CBwcGHgIXFjY3Fw4CCKAIS2UOcI9BAnxvqG8vCQUMV47CdnGaWh4MEPzTHgI+BQcMKUg0S2xJKQgFBhAyWkRWjDpzL4eeA10BYnAGogVkp/z6AlOQumopbcyfWwMDWZa7ZWetARYuWEYqAwJCcIQ+KDtzYDsCAks8fERaLAADACT+uQVUBbAAAwAJACEAIUAQCgYGCwgHBxcWCQMCcgIIcgArKzIvMzkvMzMzETMwMUEDIxMhASE3MwEBNxceAwcOAwc3PgM3Ni4CJwIW/fX8BDT9Ff7YBs4CBv1tJPGAxoA3Dg1bmNCCElF2TS0JCRA6bFQFsPpQBbD8w98CXvzCzQECVZnQgH/Sm1YDwAFBa4dJSoZpQAIAAwAh/uQEfgQ6AAMACQAeACFAEBYVCQZyBgoKBwsLAQMGcgEALysSOS8zMxEzKy8zMDFBAyMTIQEjNzMBATcFHgIHDgMHJz4CNzYmJicByLzruwOi/aH+B6MBff15IwEMi+R9DQhMeZRQR0RxTAkMO3hQBDr7xgQ6/XXaAbH9dsUBA2XHmFiUdFMWrRhMb0tWbzkC////xf6ABX4FsAQmAN0AAAEHABAETP/IAAu2AyQGAACYVgArNAD///+8/oAEbQQ6BCYA8gAAAQcAEANY/8gAC7YDJAYBAJhWACs0AAABACv+SAWCBbAAGQAZQAwZCHIXAgIRCgUAAnIAKzIvMzkvMyswMUEzAyETMwEOAiciJic3FhYzMjY2NxMhAyMBKPVvAnBv9f7+D2SpeCNFIiMXMRg1QyUIcf2RbPUFsP2CAn76GHCvYQELCMIHCDdVLQKj/ZUAAQAR/kgEPQQ6ABkAHUAPGQpyFwICABEKD3IFAAZyACsyKzISOS8zKzAxUzMDIRMzAw4CJyImJzcWFjMWNjY3EyEDI83rTwGZT+zDDmKmdSNDIiIXMBk0RCUHVP5nTOsEOv48AcT7iG+rYAEJCbwHCQE4Vi4B9v5IAP//ACb+gAWFBbAEJgAsAAABBwAQBFb/yAALtgMWCgEAmFYAKzQA//8AF/6ABGsEOgQmAPQAAAEHABADVv/IAAu2AxYKAQCYVgArNAD//wAm/oAGzgWwBCYAMQAAAQcAEAWY/8gAC7YDGw8AAJhWACs0AP//ACP+gAXDBDoEJgDzAAABBwAQBK7/yAALtgMZCwEAmFYAKzQAAAEAS//pBS0FxAAsABtADRoLERQUCyUAA3ILCXIAKysyETkvMxEzMDFBHgMHBw4DJy4DNzchByEHBh4CFxY+Ajc3Ni4CJyYGByc+AgLtl+KQNxMRE3O18JGSznkpEhcEAyP8+QgNFUR2VWKYbkMOEg0TS4ppY75cHjqRlwXDAWq8+JB7hPjEcAMDbLrxh4/DI06IZjsDAlOMq1V8XKmFTwICKCPFJScMAAIAL//oBJ4FsAAHACUAH0APBQgIBCUlABwSCXIHAAJyACsyKzIROREzMxEzMDFBIQcBIzcBIRM3NhYWBw4DJy4DNzMGFhYXFjY2NzYmJicnASEDfR79164XAZr9pMCUis9rCwljncBmYJ9yPAXzBCtbQkmCWAoLLG1WkwWwrP3igQGB/nMHAWzKjm6lbjYCAjxvnGE/ZDwCAzlrS1Z6QgMBAAL/8f5zBFYEOgAHACUAH0AOCAUFBCUlABwYEgcABnIAKzIvzDMSOS8zMxEzMDFTIQcBIzcBJRM3MhYWBw4DJy4DNzMGFhYXFjY2NzYmJicn3QN5G/3arhcBlf2owY+J0GwLCWGcv2VgnnI6BOoELVxES4RaCgstb1iTBDqk/diCAYkB/mcGaceObaVuNgICPG6cYEBoPQIDOm5NV3pCAwEA//8AJ/5HBPgFsAQmALFMAAAmAjapKAAHAmQBJwAA////+v5DA9QEOgQmAOxMAAAnAjb/gv92AAcCZAD6//z////A/kcFRgWwBCYAPAAAAAcCZAOrAAD///+6/kcEEgQ6BCYAXAAAAAcCZAK2AAAAAQApAAAE7AWwABgAErcDAAALEA0CcgArLzM5LzMwMUEFByUOAgcGFhYXBRMzAyUuAjc+AwJ1AXIj/qpSilwKCytjSgEk2vX8/gKG0nEMCmSgxgOaAccBAT92VEhyRAMBBOn6UAEEbceOc652PAACAEL//wZtBbAAGAAtAB9ADhsLCxAlJQMAABoQDQJyACsvMzkvMzMvETMRMzAxQQUHJQ4CBwYWFhcFEzMDJS4CNz4DASM3Fz4CNzY2NCYnFxYWBgcOAgKOAXIk/qpSilwLCitjSgEl2vX9/gKG0nALCmWfxwI/liR7Tm1ADQgKCgvmDAwBCBSF2QOaAccBAT92VEhyRAMBBOn6UAEEbMiOc652PPxmxgEBT3xILFxeXSwCO3t7PIvXeAADAET/5wZKBhgAFgArAEcAHUAQM0QLcjstAXIdEgtyJwYHcgArMisyKy8rMjAxUzc+AxceBAcHDgMnLgM3BwYeAhcWNjY3NzYuAicmDgIFEzMDBhYWFxY+Ajc2NicXFhYHDgMnLgJOAg1Cda53UXNKKQ4ECA9IdKFoa4tMGPkCBgMgSkNOfVUQHAQUMlA4TWpFJwGPy+zMBQ0vMkhqRyoKEAQR3g4HDhBUi795c5VDAfQVZM+uaAMDRXGJkkNDWrucXQMDXpm2cBYzcGNAAgNMfEi3M2JTMwICSXaI4ASw+08oVDwDBENwgTpkyWMBZMdjb8qbWgIBYasAAgCs/+kFtwWwACAARgAhQBAoJycCAQEOMkMJcjoNDgJyACsyLysyETkvMzMRMzAxQSM3FzI2Njc2LgInJTcFHgMHDgQHDgIHBgYTJzc2JiYnNx4DBwcGFhYXFj4CNzY2JxcWFgcOAycuAgHC5SOXUo5fCwccO1Mx/p8jAUVgqn9CCAY4V2tyNQcGBgcMOIsBCAcgUEQaVZVtOAkHAg0nIkVhQCYJEAQS6A0HDg9Tib14bYI7AmfJASxoWjZLMBYCAckBAi9hmGpUaEAsLSIFEREFCAj+0QJDQWU8BXgCKFOEXkcgOSgDAkVtfTZjymMBZMdjbcmeWgECUpYAAgBh/+MExQQ6AB0AQgAlQBI+PT0bAgEBDSoqIjMLcgwNBnIAKzIrMjIvETkvMzMzETMwMUElNxc+Ajc2JiYnJTcXHgIHDgMHDgIHBgYFNwYWFxY+Ajc2JicXFhYHDgMnIi4CNzc2JiYnNx4CBwFt/vQfqDFhRQgIJ0os/vMc9mK1cAYEPVpkLAkEBAgJMwExBAMTLThSNyIHDAYU3g8SCgtKd6JkPGxULgMJAyA+KC9Tl1kJAaABuAEBGj45Mj4eAgG/AQI+h3JOTyclJQcaGwYHCL0TKjYHAjNVZC9OoE0BTp1OX6V9RgIZOF1DTi00GAODASxtYgADAJP+twPfBbAAHwA0AD8AH0AOOjk/LAwNAnIhICABAQIALzMRMxEzKzIvMy8zMDFBITcXMjY2NzYmJiclNwUeAgcOBAcOAgcOAgc3HgIHBwYGFhcHIyYmNjc3NiYmAQcGBgcnPgI3NwGq/ukhvFGNXQsKL2NH/tcfAQ+BznIKBzJQYmw1BgcHBgkfHzMxd7RdDxEGAhEZA+gaEQUFEQolXAITHBKAXHwhPC4KIQJdwAEvaVdJZTQCAcABA1q2i1BmQTAvIQUPDgUGCQYBgAJQon95JU1IHhkhU1kndkloPf6PrHTJR0wwX2Y5tgAAAwCL/qgDvAQ6AB4AMwA+AB5ADjggHx8CAQE+KwoMDQZyACsyPzM5LzMzETMvMDFBITcXPgI3NiYmJyU3BR4DBw4DBwYGBw4CIzceAgcHBgYWFwcHJiY2Nzc2JiYFBwYGByc+Ajc3Abv+0B7YNGdKCgcrTi7+1h0BEkyPc0AFBEFhbjMIBgcIGhtFPV2gWgoLBAENEALsDwsDBAsGJUwCBhwTfVt/ITwtCyABna8BARxCPDRBHwEBvgECJU17VlFXLygiBhcGBgcFeQE2fGpWGzIvFhIBGDg6HVU5RSDArHTJSE0wXmY6tgAAA//b/+YHQwWwABEAFQAyAB1ADiYmHi8JchcUABUCcgsIAC8zKzIyMisyMi8wMUEzAw4EIyM3Nz4ENwEHITcBEzMDBh4CFxY+Ajc2NicXFhYHDgMnLgICAvSfFDJNdq58SRojU3BJLBsMA0Uj/ZYjAXS59bkDBRUrJUZnRCkJEAQS6Q0GDRBVjL96dZpDBbD9LWTPvZZXxwIFVoWbmj8Ck8nJ+7sERfu6HT43IwIEQm5/OGPKYwFjyGNvy51aAwNgqwAD/9n/5gYfBDoAEQAVADMAH0AQJyceLwtyFxQAFQZyCwgKcgArMisyMjIrMjIvMDFBMwMOBCcjNzc+BDcBByE3ARMzAwYeAhcWPgI3NjYnMxYWBw4DJy4DAXDreA8oPl6HXlIZIztQNCEUCAKDIv4iIwEjeet5AwYZLyY9VzghCA4CEd0OCg0NS3usbleEViQEOv3qTJ2Pbz4BxQIEPF1tbS0Bz8LC/S4C0v0tIEA3IwECPWRwL16/XV69XmK7k1UDAjdkiwADACf/5wdCBbAAAwAHACMAIEARFhYOHwlyCAJyAAMDBggEAnIAKz85LzMrKzIyLzAxQSEHIQMzAyMBMwMGFhYXFj4CNzY2JxcWFgcOAycuAjcBbALiI/0eJfX99QRY9LcEDC4vRmdFKQkQAxLpDAcNEFaKwHpzl0QJAzLHA0X6UAWw+7knUzoDA0JvfjhjymMBY8hjcMmeWQICYqxyAAMAB//oBh4EOgADAAcAJQAiQBIZGRAhC3IJBnIDAgIFBwZyBQoAPysSOS8zKysyMi8wMUEHITcTAyMTARMzAwYeAhcWPgI3NjYnMxYWBw4DJy4DAzAi/fIhj7ztvAIVeex5AwYYMCY9VzkgCA8BEd0OCg0NS3usb1aCVSQCfL+/Ab77xgQ6/S4C0v0tIEA3IgICPWRwL16/XV69XmO6klQBAThljAABAEv/6ASLBcgAKwAVQAoSCwNyJSUdAAlyACsyMi8rMjAxRS4DNxM+AxcyFhcHJiYnJg4CBwMGHgIXFjY2NzYmJxcWFgcOAgJMgceDNhApFHSy54lbrU5KQIxJWZJsRw0qChI+cFRRglQODwIM6gkICxOf8hUDY6zdewEGguKqXwIpL7YkIgEBRHeWUv73R5J7TAICQnZPVrFWAVeuVpLRbQABAD3/6AOnBFEAKwAVQAohGgdyBwcADwtyACsyMi8rMjAxZRY2Njc2NiczFhYHDgInLgM3Nz4DFxYWFwcmJiMmDgIHBwYeAgICMU4xCAkBBd4FBQYNertucqlsLQoFDVqTwXRJjT9AMXQ6R25OLwkFBw0tWKwBIUIxNm82Nm02c5pMAgNYlsBqK27Gl1YBAR0nuCAdAT5ofT4qOXhoQQAAAgCR/+YFLQWwAAMAIAAXQAsUFAwdCXIFAgMCcgArMjIrMjIvMDFBByE3ExMzAwYeAhcWPgI3NjYnFxYWBw4DJy4CBRMj+6Ej/bn0uQIEFSskR2ZFKQoQAxHnDgYOD1WLv3p0l0UFsMnJ+7sERfu6HT82JAIDQm9+OGPKYwFkx2Nvy51aAwJirAAAAgBz/+gEkgQ6AAMAIAAXQAsTEwscC3IFAgMGcgArMjIrMjIvMDFBByE3ExMzAwYWFhcWPgI3NiYnFxYWBw4DJy4DBAYh/I4iwnnreQQPNTI2UjsjCA0JFNwQFAoMTX6nZleDVCUEOr+//S4C0v0tKlQ6AgIsTV4uTZlKAUqYTGGnfEUBATdljAAAAgBQ/+kFGQXHACAAPwAjQBEAIj8/AgIXNTEsA3IRDRcJcgArMswrzDMSOS8zEjk5MDFBFwcnIg4CBwYeAhcWNjY3Nw4DJy4DNz4DBScuAzc+AxceAgcnNiYmJyYGBgcGHgIXFwKe5RivQHpnRAgIL1VoM0qRag/zCW6qy2ZgvZlVBwhuq8YBNchNpYtTBgdwr89ne9uGA/ICQ3FBSZlwCwkiRl0zygMSAYwBGDdgSD1VNBgBATBmTgFxomgwAgExZJ5wcpVXJVgBAilVhV51pGQsAgNctYcBR1wtAgIrY1M7UTAXAQEA////xf5HBYsFsAQmAN0AAAAHAmQEUAAA////vP5HBJcEOgQmAPIAAAAHAmQDXAAAAAIA6ARyA0kF2AAFAA8AErYFBQ0HAgIHAC8zLxDNMi8wMUE3EzcHASU3MwcGFhcHJiYB5AGgxAH+9P60DKUPChAnTEdEBIMWAT4BF/7D+VpVO2QuQyuNAP//AEACDgJlAs4EBgARAAD//wBAAg4CZQLOBAYAEQAAAAEAmwJwBKUDMQADAAixAwIALzMwMUEHITcEpSn8HykDMcHBAAEAfAJwBd4DMQADAAixAwIALzMwMUEHITcF3jb61DcDMcHBAAL/WP5mAxUAAAADAAcADrQCA4AGBwAvMxrOMjAxQQchNwEHITcC6Bv8ixsDohv8ixv+/piYAQKYmAABALIEJgIcBhwACgAIsQUAAC/NMDFTNz4CNxcGBgcHshQLP1w5dzBKDxgEJodJhXMuTkKLUokAAAEAjQQEAfoGAAAKAAixBQAAL80wMUEHDgIHJzY2NzcB+hYLPlw4ejFKDxkGAIxKhXMuT0KLUY8AAf+n/toBEwDPAAoACLEFAAAvzTAxZQcOAgcnNjY3NwETFQw+Wzl5MUUPGM+FSoVzLk5CjFGIAAABAM0EBgHGBgAACgAIsQYAAC/NMDFTMwcGFhcHLgI368sZDBIjdi09GQcGAJBNkEZHL3iEQv//ALoEJgNhBhwEJgGECAAABwGEAUUAAP//AJoEBANEBgAEJgGFDQAABwGFAUoAAAAC/6T+yAJSAP4ACgAVAAyzEAULAAAvMs0yMDFlBw4CByc2Njc3IQcOAgcnNjY3NwEbHgw9XDt5MkcPIAIGHgw/Xzp5MkoQIP60TIt6MU1HlVa3tE2LeTFNR5VWtwAAAgBpAAAESgWwAAMABwAVQAoGBwcCAwJyAhJyACsrETkvMzAxQQMjEwEHITcDF+Ts5AIfIPw/HwWw+lAFsP6KxMQAA//8/mAEZgWwAAMABwALAB1ADgsKBgcHAQMKEnIDAnIBAC8rKxESOS8zETMwMUEBIwEBByE3AQchNwMz/tvsASUCHx78Px4DNh78Px4FsPiwB1D+isDA/IbAwAABAJ8CAwJPA9gADQAIsQQLAC/NMDFTNzY2MxYWBwcGBicmJp8CBXtjXm0BAQZ8YltuAtIoYX0Bd1wpYHgBAXL//wA1//IDAwD/BCYAEgcAAAcAEgHBAAD//wA1//IErwD/BCYAEgcAACcAEgHBAAAABwASA20AAAABAF4B7gFrAvEACwAIsQMJAC/NMDFTJjY3NhYVFAYHBiZfAU45N09OODdPAms6SgEBRTk7SAEBRAAABwCi/+gHAwXHABEAIwA1AEcAWQBrAG8AKUATX1ZWMmhNTUQpKTsyDRcODiAFBQA/MzMvMz8zMy8zMy8zETMvMzAxUzc+AhceAgcHDgInLgI3BwYWFhcWNjY3NzYmJicmBgYBNz4CFx4CBwcOAicuAjcHBhYWFxY2Njc3NiYmJyYGBgU3PgIXHgIHBw4CJy4CNwcGFhYXFjY2Nzc2JiYnJgYGAwEnAacGCVaLWVV9QAYGCVmPWFV5PaoJAxIyLC5DKQYJBBIyLS1EKQGTBghaj1lUcjYFBglPg1dWfUGzCgITMisvRCcGCQQTMiwuRCgBHgYIUIRYVnxABQcIWI9YVXI3mwkDEzMrL0MoBgoDEzIsLkMqePyRdwNwBEtMVYtQAgJRh1NNV4lOAgJSh55PJkYuAQEsSCpOJkgvAQEtSfxVTVeKTwICVYdPTlKLUgICUYehUCVHLgICLEoqTyZILgEBLEl4TlOJUwICUYdTTlaKTwICVYedUCVHLgICLUkqTyZILgEBLEkDSfuYTgRnAAIAWgCLAmEDqQAEAAkAEkAJAQUDCQIIBgYAAC8vFzkwMUEBBzUBAxMHAzUCYf7HxwFQlK6U3QOo/m8DEgGD/nb+bQEBhBIAAAL//ACLAgMDqAAEAAkADrQCCAgFAAAvLzkvMzAxZwE3FwEDMxMVJwQBOccB/q8Zk93CjAGRAxL+fQMd/n0SAgAB/+AAcAPGBSUAAwAOswADAgEAfC8zGC8zMDFBAScBA8b8kHYDcATY+5hOBGf//wCJAowC9AW/BgcB1wBzApv//wBmApsC7AWwBgcCMABzApv//wB+Ao4DBQWwBgcCMQBzApv//wCJAo4C3wW/BgcCMgBzApv//wCYApsDLQWwBgcCMwBzApv//wB4Ao4C9QW9BgcCNABzApv//wCnAo8C7wW9BgcCNQBzApsAAgBrAowDTAW9AAQAGQATtxYLBAQLAhECAC8zPzMvETMwMUEDIxMzAwc+AxceAgcDIxM2JiYnJgYGAZJqvYyPLikIKUhwT1pmJQdSu0oFBis1QVEsBPP9mQMh/okBQYp2RwICV4tQ/gUBzClZPgIBRWv////X/oQCQgG3BgcB1//B/pP//wAx/pQBzQGoBgcB1v/B/pT///+l/pQCPAG3BgcB1f/B/pT///+2/ocCRgG3BgcCL//B/pT///+0/pQCOgGpBgcCMP/B/pT////M/ocCUwGpBgcCMf/B/pT////X/ocCLQG4BgcCMv/B/pT////m/pQCewGpBgcCM//B/pT////G/ocCQwG2BgcCNP/B/pT////1/ogCPQG2BgcCNf/B/pQABP/3AAAEogXHAAMAHgAiACYAIkAQIiElJiYBGxcSBXIJAgIBDAA/MxEzK8wzEjkvM84yMDFhITchAQMGBgcnPgI3Ez4CFx4CByc2JiYnJgYGBQchNwEHITcD8PwHIwP5/hdMC1tSticuGAVVEIXUhnqrVwTtAx1JPkRgOQEXGP1DGgKOGv1EGccDSf2WYJYxSQ9HVyYCdIPHbgMDZbN5AThcOAIBRW/gjY3+946OAAADAA8AAAZbBbAAAwAHABEAIkAQAwIGCw4QBwcNEQ4EcgoNDAA/MysyEjkvORI5M84yMDFBByE3AQchNwEDIwEDIxMzARMGWxv6BRsFxRv6BRwFtvzt/je39f3tAcq3A8Sbm/7Jm5sDI/pQBB374wWw++EEHwAAAwAs/+0GXQWwABcAGwAtACNAEiIpDRwZGAZyAgEBDgwPBHIODAA/KzISOS8zKzLMPzMwMUEnNxcyNjY3NiYmJycDIxMFHgIHDgIBByE3EzMDBhYWFxY2NwcGBicuAjcCF+QkyFV+TAsKHlhMld3z/QFvh8ZkDA6W7wOzH/2wH9jqsgQJJSYVKxUQJEslWm4sCAIcAckBQXdTR21AAwH7GAWwAQRrxIqY0m0CH7CwAQn75iM0HQEBBgO6CwoBAVGJU///ACb/6wgVBbAEJgA2AAAABwBXBFQAAAAGACAAAAZFBbAAAwAHAA0AEgAXAB0AKkAUHRUKChIGBwMCAhESBHITGxsIEQwAPzMzETMrEjkvM84yETMRMzMwMUEHITcBByE3ARMBMwMBCwIjAwETATMBCwIjExMGPRz6NhwFkhv6NhwBM1IBao9B/oslESOaIQKfVgFn+f3mJxEllw0wBC2amv7Cmpr9EQFmBEr+ofuvBbD7nf6zBbD6UAFpBEf6UAWw+53+swReAVIAAgAQ//4GRQQ6ABEAIgAgQA8WExMRFAgUCBEKHA8ABnIAKzIyPzk5Ly8RMxEzMDFTBR4DBwMjEzYuAiclAyMhIRMzAwUWNjY3EzMDDgPMAnRde0UUCTPtNQUFHT0x/qWb7AO8/dZ/610BQUplPAxy7HENXI2wBDoCAj9sklb+wgFALUw5IAIB/IYC1/3pAgExYEgCpP1dZJpnNAAAAwBL/+0EnwXGACMAJwArAB1ADiorJyYmBxkSBXIABw1yACsyKzISOS8zzjIwMWUWNjcXBgYnLgM3Ez4DFxYWFwcmJicmDgIHAwYeAhMHITcBByE3AuA0ZjIJO3g8fLl1Lw41FGek3Ig8dTsvLl4wWYljPQw2CQ00Z/wZ/QgZAskY/QcatAERD8oODgECV5vMeAFTgdmeVQEBEgzKEBMBATprjlP+qkeDZz4C8YmJ/vSJiQAAAwBEAAAGAwWwAAMABwAfAClAEwYHAwICFAoUFwkKChYXBHIWDHIAKysSOX0vMxEzERI5GC8zzjIwMUEHITcFByE3ASU3BTI2Njc2JiYnJQMjEwUeAgcOAgYDHPqFHAVTHPqFGwKQ/oEkAWNTi1sMCStkTP7O2vT8AguG1HMMDab9BKabm+qbm/5iAccBOXJYSnFBAwH7GAWwAQNtyI6dzGMAAwBEAAAEfgWwAAMAHAAgAC1AFR8gIBEDAgUGBhoCGgIaBBARBHIEDAA/KzISOTl9Ly8RMxEzETMRMxEzMDFBByE3AQE3FzI2Njc2JiYnJTcXHgIHDgIHAQcBByE3BD9P/GtPASP+dxnbUolcCwoqZU3+71fAjNNtDA2F2IoBYgEBo0/9EFAER7Gx+7kCW4sBPnVUTW4+AgHIAQNiw5OTv2cP/eMPBbCxsQAEABX/5wQ+BbAAAwAUABgAHAAVQAkEBAMPAQsNAwQAPz8zMxI5LzAxQQMjEwE3BwYCBgYnJiYnJT4DNwMHATcFBwE3Anf99P0ByfIJD2yw8pc/fD4BAGucaj0MDCX9PiMCiiT9PSQFsPpQBbD9TwFOi/7/ynUCARAGtwNVj7NfAoDM/vXMQMz+9csAAAL/5QAABK4EOgAbAB8AGEALCBUVHh8Gcg4BHgoAPzMzKxI5LzMwMWEjNzY2LgInJg4CBwcjNz4DFx4EBwEDIxMEhOweCQEYPWlRaZ1tQg4d7B0Vbq/wmXWvd0QSDv7GvOy8tT+Jg2tCAgRalrZas7GJ/8t0AwJSi7TKZwOJ+8YEOgAC/+oAAAVaBbAAFwAbABpADBkYAwAADgwPBHIODAA/KzISOS8zzjIwMUElNwUyNjY3NiYmJyUDIxMFHgIHDgIHByE3Awz9EyMCzVaNWwsKLWRK/s7Z9f0CCobTcwsOpP6bI/0JIwIeAccBOXRZSXBAAwH7GAWwAQNrxo6dzmRqx8cABADA/+gFOAXJACEAMwBFAEkAJUASQicwR0c5MA1yHwUOSUkWDgVyACsyMi8QzDIrMjIvEMwyMDFBNw4CJy4CNzc+AhceAhUnNiYnJgYGBwcGFhYXMjYTNz4CFx4CBwcOAicuAjcHBhYWFxY2Njc3NiYmJyYGBgEBJwECQqIGToFQVHM4BQYIUYdYT3VAowIsOCw8JAUKAwopKDZBoAYIWo9ZV3w/BQYJWI5aVn4/sggDEzIrL0MoBgkDEjIsLkQpAVD8kXcDcAQiAlB3QAICU4hPTVSLUgICQ3ZOATFHAQExSiZOIEgzAUX9JE1ZiU4DAVCHVE5YiU4CAlCHolElRy0CAixKKk8mSC8BAS1JA0n7mE4EZwABACv/6gPaBfoALgAUtxkYGAEkDAABAC8zLzMSOS8zMDFlBy4DNxM+AxceAwcHDgQHNz4DNzc2NCYmJyIOAgcDBh4CAnsTY5lmKgtvCjZchlpEZ0EcBAUNe7/q/XgSdujFhBEGAQkYGCIrGg0DbAcDH0XE2gVDd6NjAqZPlnpGAwI3W3VAKoXgsn5EAbQCTY/KfSoRLCgcAyk/Qhr9XzRcSSwAAAQAIwAAB+AFwwADABUAJwAxACVAESswLioCAxsSJAkJMS4EKi0MAD8zPzMzLzPcMs4yERI5OTAxQQchNxM3PgIXHgIHBw4CJy4CNwcGFhYXFjY2Nzc2JiYnJgYGAwMjAQMjEzMBEwdSGv20Gi4HC2KiamSHQQgICmKhaWSIQbUJBBM+Oz5VMQgJBRQ+Oj5WMvb9/P7NuOz8/gEzuAIvj48B21Rko14CA2GdYFNloV0DA16ds1UyXT4BAjxiN1QxXz8BAjxjARv6UAQc++QFsPviBB4AAgDwA5QE0QWwAAwAFAAkQBEJBAEDBgoHBxMUAgADAwYGEQAvMxEzETM/MzMRMxIXOTAxQRMDBwMDIxMzExMzAwEHIwMjEyM3BAY/r0A5Q25egzrEhl7+ERGFTnVNiBADlQFj/p0BAX/+ggIb/oMBff3lAhte/kQBvF4AAAIAff/rBG4EUQAdACYAF0AKIhcXBB4OBxsECwA/Mz8zEjkvMzAxZQcGBicuAzc+AxceAwcGBgchAxYWFxY2AyYGBwMhEyYmA6kBU79jbahwMQoKZaHLcW+fYisEAQIB/RE8LnlFacByU5I+NAIKNSx3xWg1PQICYJ7CZWvNpl8DA16bv2IMFwz+tjI3AgNIA14CSTL+6gEfNDsA//8Auv/zBYwFmgQnAdYASgKGACcBlAD4AAABBwI0AwoAAAAHsQYEAD8wMQD//wCF//MGJgW3BCcCLwCQApQAJwGUAZsAAAAHAjQDpAAA//8Ai//zBhYFqAQnAjEAgAKTACcBlAGCAAABBwI0A5QAAAAHsQIEAD8wMQD//wC6//MF2AWkBCcCMwCVAo8AJwGUAS0AAAEHAjQDVgAAAAexBgQAPzAxAAACAET/6ARGBfcAKQA/ABlADCoAABI1HwtyCRIAcgArMisyETkvMzAxQRYWFzYuAycmBgYHJz4CFx4DBgcHDgQnLgM3Nz4DFyYOAgcHBh4CFxY+Ajc3LgMCYVGONAQJIDtbQC9YViwPL2ZpNoKqXyYCDQgNPV+FrWxwpGcpCgMMVYm3fUVrTC8IAwUHJ1BDUXNKLAoPBCg+SQQGAkM/NHRvXTgDAQ0aD7MYIQ8BAmyy2d9iO1y9rYZNAwJXkrxoFmq4i0vBAjRbdD0WNnJiPQMCS3yQQVwoPiwYAAEAHv8WBUkFsAAHAA61BAcCcgIGAC8zKzIwMUEBIxMhAyMBBUn++O3r/bfr7QEIBbD5ZgXd+iMGmgAD/6b+8wUBBbAAAwAHABAAH0AODgYGBwcPAnIMAwMKAgsALzMzMxEzKzIRMxEzMDFFByE3AQchNwEHASM3AQE3MwQqIvv3IgTgIvwnIgJGA/zkqRsCtf5DGJhOv78F/r+//LIf/LCbAtACzIYAAAEAmgJwA/gDMQADAAixAwIALzMwMUEHITcD+CL8xCIDMcHBAAMANP//BPMFsAAEAAkADQAWQAoJCwsKBAgIAQJyACs/My8zETMwMWUBMwEjExMHIwMHNyEHAdwCQtX9OaAdUgiIjaojAUoi9QS7+k8DA/3U1wMDwsLCAAAEAEn/6AeuBFEAFwAvAEcAXwAdQA5bNjYeEwtyTkNDKwYHcgArMjIRMysyMhEzMDFTNz4DFx4EFwcOBCcuAzcHBh4CFxY+Azc3Ni4DJyYOAgUHDgMnLgQnNz4EFx4DBzc2LgInJg4DBwcGHgMXFj4CUwMNWpLCdleIZkcuCwUTUXSOoFRwomgq9AMFCSpVRTVkWUk2DgYEFy5DUi9JclExBl8DDVqSxHZXiGVHLQoEE1J1jqBUb6NnKfQDBQkqU0U1ZFhKNg8HAxUuQlIuS3JRMQIKF23Kn1oDA0BriJdLJE+fjm8+AQJem8B7Fzd4aUMBAStKXmQvIyxeWEYsAgI/bIIxF23Kn1oDA0Jti5hLJE+djGw+AgJenL97FzZ4aUQCASpIW2MwIitgWkktAgM/bIEAAAH/D/5GAx4GGQAfABC3GxQBcgsED3IAKzIrMjAxRQ4CJyYmJzcWFjMWNjY3Ez4CFzIWFwcmJiMiBgYHAR0NYKRzJEQiIxMpFTVIKAi/DmasdShMJiQXLRc4UTEITW+kWgIBCwm6BwgCLk8wBPFxqFwBDQi3BgcuUzQAAgAxAQQEOAP5ABkAMwAbQAsXBIAKEUAxHoAkKwAvMxrdMhreMhrNMjAxUzc2NjM2FhcWFjMyNjcHBgYjIiYnJiYjBgYDNzY2MzYWFxYWMzI2NwcGBiciJicmJiMGBnoTMoFIQWs3MmM8S300Fi90RDxmMjdpQE+HgBMyfUdBazgyZDtMfzUWMHdFPGUzNmlAToQCudMyOgErIBwqTTHTMDwpHh8rAUv+K9MxOwEsHx0pTDLTMD0BKR0fLAFLAAMAYACBBBgEvQADAAcACwAfQA0CAQEKCgsAAwMHBwYLAC/OMhEzETMRMxEzETMwMUEBJwEXByE3AQchNwPZ/ShpAtmnI/y0IwMDJPy1IgR6/AdCA/rrxsb+WMbGAAAD/9YAAQPfBFEABAAJAA0AIkAQAwcGAAQIBgUJCQECAg0NDAAvM3wQzi8yMhgvMxc5MDFBBQcBNyUFBzcBAwchNwEDAmIo/Q0bA079YMUeA3OsIvzFIgLK48MBRn6T3R+NAUX8aLi4AAMAFAAAA/EEVAAEAAkADQAiQBADBwYABAgGAQICBQkJDQ0MAC8zfBDOLzIyGC8zFzkwMUElNwEHBSU3BwEFByE3AzH9kicDBxr8nAKtzR38eAMpIvzFIgKz4cD+u3+X3SSO/rxvubkAAgA8AAAD4wWwAAcADwAdQA4FCAgOBxJyAwoKCwECcgArMjIRMysyMhEzMDFTATMHARMHIzcBAzczEwEjPAHptEr+lbEEmVYBbK8Dmfz+FqsC5ALMv/3Z/dymvAIoAiSo/Rr9NgD//wBjAKgCCgUIBCcAEgA1ALYABwASAMgECQACAGcChAJ2BDoAAwAHABC2BgICBwMGcgArMjIRMzAxQQMjEyEDIxMBSEyVTQHCTZRNBDr+SgG2/koBtgAB/9H/ZAEMAQAACQAKsgSACQAvGs0wMUEHBgYHJzY2NzcBDAoNYkt3KTwNDwEASmOuQU07eUdU//8AXgAABZAGGQQmAEoAAAAHAEoCNQAAAAMATgAABFMGGQAQABQAGAAbQA8YBhcKchMUBnINBgFyAQoAPysyKzIrPzAxYSMTPgIXFhYXByYmIyYGBxcHITchAyMTAT3sxRGAzYNOlko3Onk+ZoQQyiD9oR8D5rzsvAR/g7dgAgIlFsUXHAJlZUawsPvGBDoAAAMAXgAABK0GGQASABYAGgAbQA8ZGgZyFAByDgYBchMBCnIAKzIrMisrMjAxYSMTPgIXHgIXByYmIyIGBgcTATMBAwchNwFO7MgQeMB8SpaTSXhLmk09YUAKowEH6/76xSD9nCAEmXysWAIBDxcLtg4ZK1M8+2QF5/oZBDqwsAAABQBeAAAGvAYaABEAFQAmACoALgAlQBQjHAFyLioUFQZyDQYBci0XFwEKcgArMhEzKzIrMjIyKzIwMWEjEz4CFxYWFwcmJiMiBgYHFwchNwEjEz4CFxYWFwcmJiMmBgcXByE3IQMjEwFO7MoObLB3JEcjFxYtFzlXNwnOH/2VIAMp7MQRgM2DTpVKNjp5P2SEEcof/aAfA+a87LwEonKqXAEBCwi8BgYrUDhosLD7xgR+hLZgAQElF8UWHAFjZUawsPvGBDoABQBeAAAHBgYaABEAFQAoACwAMAApQBcrAHIkHAFyLhQULRUGcg0GAXIpFwEKcgArMjIrMisyMhEzKzIrMDFhIxM+AhcWFhcHJiYjIgYGBxcHITcBIxM+AhceAhcHJiYjJgYGBxMBMwEDByE3AU7syg5ssXYkRyMXFi4XOFc3Cc8g/ZUgAynsyRB4v3tKlpVId0yaTD1iQAqjAQbs/vrFH/2bHwSicqpcAQELCLwGBitQOGiwsPvGBJp8qlgBARAWC7YNGAEqUzz7ZAXn+hkEOrCwAAAEAF7/7QT7BhkAAwAXABsALQAlQBQiKQtyEwpyCRwcDQ0EAXIYAgMGcgArMjIrMhEzETMrKzIwMUEHITcBFhYXByc3JiYjIgYGBwMjEz4CAQchNxMzAwYWFhcWNjcHBgYnLgI3AdUf/qggAkhy2mgf5xAmWCk4UjEKy+vKDmmuAqog/a8f2euzBAolJhUrFBAkSSZabS4IBDqwsAHeAj4rzwFYEw8vUjX7XQSicqlc/iGwsAEJ++YiNB0BAQUDugsKAQFRiFQAAAQAFf/qBpsGFgAbAB8AMQBnADFAGzsyQGRgWwtyAUVJQAdyJi0Lch4QHwZyFAoBcgArMisyMisyKzLMMivMMxI5OTAxQSMuAjc+AxceAwcjNiYmJyYGBwYeAgEHITc3MwMGFhYXFjY3BwYGJy4CNwU2JiYnLgM3PgMXHgIHJzYmJiciBgYHBh4CFx4CBw4DJy4CNxcUFhYXMjY2A8VyEDooBwdNdY1GW4xfLQTsAxdCPkptDAgGEAwC0R79tR607JEEByQnFSsUECRLJmBqJQn+HAk+Xyg8eWM5BARRgJlMaLFpAuoCJUoyL1dABwchO0IcVaJlBgRWh6BNa7lvAeMtVDovX0cC9lCnqVNOckojAQI3ZI5ZNV06AQFXSjhycnIBCrCwWfyoIT0nAgEGA7oLCgECYZhUETY9IAoPL0hnSlR/VCgBAk+XcQEzSSgBH0EwJjEeEwcWR39mWX9SJgICVJ9zATpQKQEbPgAV/6j+cghEBa4ABQALABEAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBXAHMAjACaAKgAAEEjEyEHIyEjNyEDIwEhEzMHMwUhNzM3MwEhNyEFITchASE3IQEHIzcTByM3ASE3IQEHIzcBITchBSE3IQEHIzcTByM3AQcjNwUTMwMGBiMiJicXBhY3MjYlIzcXNjY3NiYnJwMjExceAgcOAgcGBgcGIgcnNzM2Njc2JicnNzcyFhcWBhceAhUGBgEHBgYnJiY3NzY2FxYWBzc2JicmBgcHBhYXFjYBJ28yAS0UvgZ+whUBLjJt+TH+0jhvJL8GGf7SFMAkbf4n/vEUAQ/85P7yFQENARj+8xUBDQPhLG4t8C1tLPxN/vEVAQ78ny1vLQTo/vIVAQ4Bb/7xFQEP+i8tby2wLG8sBxksbi3+9jpjOwloUFFpAlkCJTAsOv3zmgRsLFYJCUAiZlFeYKguWToBAjJGHwQCBAQPLr40fytKCQYsJHwGiwUTBAMDBBg1IwGA/sMHCYZkYHMDCAqFY190ag4FMEBDUQoPBjFBRFAEkQEddHT+4/nhATvKcXHK/sVxcXEGV3T7dPn5AvL6+vpecQI/+fkEGHR0dPzu/PwBePr6/oj8/PQBe/6FTlxSVQIrMwE6cEYBAiIyLBQBAf4vAiUBARk+NzgnERgDDwME9QNIAygvKSMDAUYBAgUDDwMYEiIyV0kBR3BhfgICfF9wYnwCAnzOcjpXAgFYPXI7VwIBWAAFAFz91QfXCHMAAwAeACIAJgAqAABTCQIDMzQ2NzY2NTQmIyIGBzM2NjMyFhUUBgcOAhM1IxUTNTMVAzUzFVwDvAO//EF3yhkpRGKnlX+xAssCPic4OTUoLz0dycp/BAYEAoMDz/wx/DEC3jM+GyWBUoCXfY03MEA0NE0aITpO/ruqqv1IBAQKmgQEAAH/5AAAAnsDIwAcABC1AxwcCxMCAC/MMjMRMzAxZQchNwE+Ajc2JiciBgcHPgIXHgIHDgIHBwJOGv2wFwE4Gj4vBwYsKjpFDLQHV4lTSH1KAwNMbDOekZGEAQEWOEAlKTEBSDUCVHpBAQEzZ1BGbVgldQAAAQBwAAACDAMUAAYAI0AVBAUFAwMvAH8AAg8AXwCvAP8ABAABAC/NXXEyETMRMzAxQQMjEwc3JQIMgrFjzBsBawMU/OwCPDGXcgACABb/8QKBAyQAEQAjAAyzFw4gBQAvM8QyMDFBBw4CJy4CNzc+AhceAgc3NiYmJyYGBgcHBhYWFxY2NgJ6EApQjGVgdjMHEQtPjGZfdzHNFAQFJy4xOx4FFQQGJy8xOx0B1phdmFgDA1qTWphemFgDA1uV+7EjTzkBAjZSKLAkTzkBAjVTAAEAYf/zA7QEoAAyABdAChQeHiYBMQoMJn4APzM/MxI5LzMwMXczFj4CNzc2LgInJgYGBwYWFhcWPgI3Fw4CJy4CNz4CFx4DBwcOAwcjwQ9dn3xRDyAEByA+MUFgOggFHEc7J0s/Lgo/DmuZU3GWRwgKhdB8ZpJYIAkJE3S8/JwbswInVohg2SlURSsBAUJqPDVbOQEBFy0+JkRVfkUBAmasa3zBbAICToOqXkua8KVVAQAEAB7/7gO/BKAAEgAiADQARAAdQA0oFxdBDg4FOTF+HwULAD8zPzMSOS8zMxEzMDFBDgMnLgI3PgMXHgMHNiYmJyYGBgcGFhYXFjY2AQ4DJy4DNz4CFx4CBzYmJiMmBgYHBhYWFzI2NgN4BVOGolFjtnAFBVaIn05HjHND7AcrTi41YUEHBilOMDVgQgEwBFB+lUhChGs+AgWAxGhhqWbzBiNCKjBRNgYFIUErMFI3AUdbhFMnAgFGj3FZf1EmAgEmTXZAMkUjAQEnTDkzRSMBAShNAj1Sd0wkAQIkSG5MdJVIAgJGi3ksPyEBJUYwLUEiASZJAAABAFkAAAQUBI0ABgAOtQUBBn0DCgA/PzMzMDFBBwEhASU3BBQZ/WP++wKe/YAhBI2R/AQDzAHAAAEAPP/sA54EnAAxABVACRYfHw4nCwMAfgA/Mj8zOS8zMDFBMwcjJg4CBwcGHgIXFjY2NzYmJicmBgYHJz4CFx4CBw4CJy4DNzc+AiQDNicVDGKphVgPGQUJIkE0P2I+BwYfSTo1ZkwPOA5yoVdtkkQICYXPemSWYSgKCRR5wAEABJzEAi1hk2WsK1dJLQEBO2Q6N1c0AQEpTDVIV4JGAQJprGd8u2YDA0h+pmBRmfGpWgABADD/6wPdBI0AIwAXQAohCQkCGRELBQJ9AD8zPzMSOS8zMDFBJxMhByEHNjYXNhYWBw4CJy4CJzMWFhcyNjY3NiYmJyYGATzBrgK0Iv4TVy1lM3CcTQgJg9F8Za9tA+YEXEpCYToGBiRPOzZdAg8xAk3D/BcWAQFgqG5+uWMDAlCWa0xFAThjPzlYMgEBIAAC//8AAAO1BI0ABwALABVACQABAQoEC30KEgA/PzMSOS8zMDFBByE3ATMJAgMjEwO1IvxsEgKTyf73/qMClMrrygG7wKMC7/6o/ocC0ftzBI0AAgAI/+4DwASgAB0APQAdQA0fAAAdHh4SNCoLCRJ+AD8zPzMSOS8zMxEzMDFBFz4CNzYmJiMmBgYHBz4CFx4DBw4DIycHNxceAwcOAycuAzcXBhYWFxY2Njc2LgInAW1wNmhJCAcnSS0vVT0L7gmHx2dLjXA+BARTgpNFsgoVlEeKcD8FBFmNplJQj2w+AukBMFExN2RFCAYZM0YoAqcBASFLPDFAHwEcPC8BcpFFAgEmT3pVUnFFHwE3cwEBHEBvVF2GVicCASxXgFYBM0QhAQIlTTotPSURAQAB//IAAAO8BKAAHgAStwsUfgMeHgISAD8zETM/MzAxZQchNwE+Ajc2JicmBgYHBz4CFx4CBw4DBwUDdCL8oB4B1SlhTAkKT0U/YD4J7AqI0XZnr2UIBUNkcjX+5b+/rAGGI1VlOUZSAQEwWjwBe69bAgFNlnBJfWtcKdQAAQC0AAADDASNAAYACrMGfQIKAD8/MDFBAyMTBTclAwzD7Jn+viQCFQSN+3MDcVLGqAACADn/7QO9BKAAFQArAA61HBF+JwYLAD8zPzMwMUEHDgMnLgM3Nz4DFx4DATc2NCYmJyYOAgcHBhQWFhcWPgIDshwOSXqtcGqTVR0LHQ5Jeq1wa5JVHP7rIgUZPzg8VjcfCCIFGT45PVU3IAKtzGe2i0wDAlOKsGHNZ7WLTAMCU4qw/r74K2FVOAICMVVmM/YsYlY5AgIyVmcAA//WAAAEKgSNAAMACQANABxADAQMDA0NCH0HAwMGAgAvMzMRMz8zLzMRMzAxZQchNwEBIzcBMyMHITcDkSL8piID2fx0rhoDk6dSIfzKIr+/vwM9/ASUA/nAwAADAGwAAASCBI4ABAAJAA0AG0AQCAcDBAYACg0IAQwKcgUBfQA/MysRFzkwMUEBIQEjAxMHIwEBAyMTAcgBqwEP/deJcNoxgP7jAgxf618CDgJ//PcDCv1ocgMJ/ZX93gIiAAH/ogAABH0EjQALABVACgcKBAEECQUDAH0APzIvMxc5MDFBEwEhAQEhAwEhAQEBh6MBMgEh/iYBF/73sv7E/t8B5v77BI3+awGV/bH9wgGc/mQCVwI2AAAEAIsAAAYeBI0ABQAKAA8AFQAgQA4SBBABDgQMAQgEBgF9BAAvPzMRMxEzETMRMxEzMDFlATMHASMTEwcjAwEBMwEjExMHIwM3AVoBjYkd/maMOiAflUgDSQFf6/4kkwVKFY1OItMDutD8QwSN/D/MBI38UwOt+3MEjfwzwAPVuAAAAgBuAAAEtwSNAAQACQAPtQcDBQF9AwAvPzMRMzAxQQEhASMDExMjAwIJAawBAv2LtyyFEqjgAToDU/tzBI38l/7cBI0AAAEAOP/sBGQEjQAVAA+1DBEGAH0GAC8/ETMyMDFBMwMOAicuAjcTMwMGFhYXFjY2NwN37YISkt6Fe8JmDoHrgggkWEVJcEgLBI39AIa8XwMCYriCAwD8/0NiNwICNGRIAAIAYwAABF4EjQADAAcAEbYGBwcBAH0BAC8/ETkvMzAxQQMjEyEHITcC5MrsywJlI/woIwSN+3MEjcDAAAEAD//uA/4EngA5ABhACgomDzYxKxgUD34AP8wzL8wzEjk5MDFBNi4CJy4DNz4DFx4CByc2JiYjIgYGBwYeAhceAwcOAycuAzcXBh4CMzI2NgK9CCI9SiFEhWs8BQVXh6FOb7xxAuoDLlY4MWRKCAcnQkodRoRoOQUGWYqkUFeee0UC6wMdO1IxMmVJATgsOycYChQ2UHVTWIJUJgECUJ93ATpOKB1CNik3JRcJFDlUeVRcgFAkAgEwXY1eATRKLhccQAACAAkAAAQWBI0AGQAeABhAChsNDQwMGhgXAH0APzIvMzkvMxI5MDFTBR4DBw4CBwchNwUyNjY3NiYmJycDIyEDNxMV0wGvUJRyPgYGVYlVUv5pIAEbO2tLCQcoUDXfqewCs7/tzgSNAQIoUYFaZYRXIynAASdRQThLJQIB/DMCBAL+Bw0AAAMAOv8vBFYEoAADABkALwAcQAwAAwMrKwoKAiAVfgIALz8zEjkvMxI5ETMwMWUBBwEBBw4DJy4DNzc+AxceAwc3Ni4CJyYOAgcHBh4CFxY+AgKrASSi/uMCOwYPXpnOfnmsaykLBg5fmc99ea1qKfwHBggqWkxReVQyCQgGBypaTVF7UzKu/vx7AQUCMTh30p9YAwJenspuOnfRoFgDAl+fyqI6PYBuRQMDQG+JRjs9gXFIAwNCcosAAAEACQAABDAEjQAYABO3AgEBDQwPfQ0ALz8zEjkvMzAxQSU3BT4CNzYmJicnAyMTBR4CBw4DAjT+uCIBLDxwTgoIKFM296nsywHGcLtrCAdZjqwBmgHAAQElUEI5UiwDAfwzBI0BA1ameWSQWysAAgA7/+0EWASgABUAKwAQticGHBF+BgsAPz8zETMwMUEHDgMnLgM3Nz4DFx4DBzc2LgInJg4CBwcGHgIXFj4CBEwGDl6Yz355rWspCwcOX5nOfnitair9BwYIKllMUXlUMgkHBwcrWkxSeVQwAmk5dtSgWQMCXp7Kbjp30aBYAwJdnsmmOj2AbUYDA0BviUY7PYFxSAMDQ3GLAAEACQAABKgEjQAJABG2AwgFAQcAfQA/Mi8zOTkwMUEDIwEDIxMzARMEqMrk/omO7MvjAXiNBI37cwMt/NMEjfzTAy0AAwAJAAAFyASNAAYACwAQABZACQIOCgUMBwQAfQA/MjIyLzMzOTAxQTMTATMBIwEzAwMjATMDIxMBQMKzAdjW/Xai/p3HcDbsBPXKy+w6BI38sQNP+3MEjfyo/ssEjftzAUoAAAIACQAAAzEEjQADAAcAD7UGAwIEfQIALz8RMzMwMWUHITcTAyMTAzEi/Zsi88rsy7+/vwPO+3MEjQADAAkAAASdBI0AAwAJAA0AF0AMBgcLBQwIBgoBBAB9AD8yLzMXOTAxQQMjEyEBASc3AQMBNwEBv8rsywPJ/bX+vxHjAYSZ/uG8AW0EjftzBI39uf7u8+kBfftzAiON/VAAAAH/8//tA68EjQATAA20EAwHAX0APy/MMzAxQRMzAw4CJy4CNxcGFhYXFjY2AjyG7YcQeb52c6taBesDHUQ5OVEvAW4DH/zidK5gAgNWoncBNVAtAQI3WAABABoAAAHPBI0AAwAJsgB9AQAvPzAxQQMjEwHPyuvKBI37cwSNAAMACQAABKkEjQADAAcACwAYQAoCAwMECQUIBH0FAC8/MxEzEjkvMzAxQQchNxMDIxMhAyMTA6ch/X4imcrsywPVy+rKAp3AwAHw+3MEjftzBI0AAAEAP//vBE4EoAAqABZACSkqKgUZEH4kBQAvMz8zEjkvMzAxQQMOAicuAzc3PgMXHgIXJy4CJyYOAgcHBh4CFxY2NzcjNwQsRziktVB6sG8sDQkPXJbLf326bQriBjJZQVF4VDEKCggKMGBOPXMzKPUfAmL+L0FGGwIBWpvJckl3zptVAwJYq38BQFYsAwI9aoVITEGCa0ECARkhzK0AAwAJAAAD6ASNAAMABwALABpACwcGBgEKCwsBAH0BAC8/ETkvMxE5LzMwMUEDIxMBByE3AQchNwG/yuzLAn8i/dciAr4i/ZciBI37cwSN/hHAwAHvwMAAAAMAD/8TA/4FcwADAAcAQQApQBMHPj4kCBczBgYzCwIgIBcAABd+AD8zLxEzETM/My8REjk5MxEzMDFBAyMTAwMjEyU2LgInLgM3PgMXHgIHJzYmJiMmBgYHBh4CFx4DBw4DJy4DNxcGHgIzPgIC8zWWNlA2ljYBRQgiPUkiRIVrPAUFVoigT2+8cQLqAy5WODFkSQkHJ0JKHUaEaDkFBlmKpFBXnntFAusDHTtSMjFlSgVz/swBNPrU/swBNPEsOycYChQ1UHZSWYJTJwECUJ93ATpOKAEeQzYoNyUXCRQ5VHlTXIFQJAECL16NXgE0Si4XARtAAAMAEQAABAgEoAADAAcAJgAdQA0EBQUBIhl+DgICDQEKAD8zMxEzPzMSOS8zMDFhITchAwchNyUHDgIHJz4DNxM+AxceAgcnNiYmJyYOAgOU/H0hA4R/Gf0GGQGQHAg6Y0WKJjAdDwUfCkNxnmV5oEsE7gQQOjwzSS0ZwAG5kJBp+VOPdCtZDkJWVyIBAV6jekQDAmezdgExYEACAS1MWwAFAAIAAAPnBI4AAwAHAAwAEQAVABtACwYHAwICERQKCRF9AD8zPxI5fC8zGM4yMDFBByE3BQchNyUBIQEjAxMHIwMBAyMTAzsa/QcZAtQa/QcZAWkBYgEB/iaJJ40sgcwBvWDrYAJEkZHYj4+iAn/89wMK/WhyAwn9lf3eAiIAAAIACQAAA+AEjQADAAcADrUHBgN9AgoAPz8zMzAxQQMjEyEHITcBv8rsywMMIv2cIgSN+3MEjcDAAAAD/6QAAAPrBI0AAwAIAA0AG0AMCAx9AAUFCQIDAwkKAD8zETMRMxEzPzMwMWE3IQcBEzMDIwEBEyMBAysi/TMiAgqE/+Gz/jwBtXem/YvAwANR/K8EjftzA2oBI/tzAAADADv/7QRYBKAAAwAZAC8AF0AKAwICCiAVfisKCwA/Mz8zEjkvMzAxQQchNwUHDgMnLgM3Nz4DFx4DBzc2LgInJg4CBwcGHgIXFj4CAy0i/mYhAroGDl6Yz355rWspCwcOX5nOfnitair9BwYIKllMUXlUMgkHBwcrWkxSelMxAqHAwDg5d9OgWQMCXp7Kbjp30aBYAgNdnsmmOzyAbkUDA0BviUY7PYFxSAMCQnGLAAL/pAAAA+sEjQAEAAkADrUBCQoECH0APzM/MzAxQRMzAyMBARMjAQJohP/hs/48AbV3pv2LA1H8rwSN+3MDagEj+3MAA//bAAADoQSNAAMABwALABdACgcGBgIKC30DAgoAPzM/MxI5LzMwMWUHITcBByE3AQchNwL4Iv0FIQMMI/2XIQMEIf0DIsDAwAH+wcEBz8DAAAMACQAABKQEjQADAAcACwATtwoFCwcCAAN9AD8zMzMzLzMwMUEHITczAyMTIQMjEwP7Iv1/IkXK7MsD0MrtywSNwMD7cwSN+3MEjQAD/9oAAQQMBI0AAwAHABAAJUASDQgJAwoGEBAOB30KAgwDAwIKAD8zETMRMz8zMxEzEhc5MDFlByE3AQchNwEHASM3AQM3MwOHIvzPIgO2IvzwIgF/Av4MqxsBhu8YmsC/vwPNwMD90Bf9u50BvgGrhgADAEEAAAU0BI0AFQAnACsAFUAJFgAAK30eDCoKAD/NMj8zLzMwMUEXHgMHDgMjJy4DNz4DFyYGBgcGFhYXFxY2Njc2JiYnEwMjEwLBeGi7jkoJCnGy2XN4aruMSAkKcbLZZGGkbA4MOXtZi2SkawwLOnxXWcvsywQZAQI5cKpzfbd4OgICO3Stc3y1dDi7ATuAZ115PwMBAT+EaVx1OgMBL/tzBI0AAgBtAAAFRQSNABkAHQAfQA4VFBQGBwcNHA4AHR0NfQA/MxEzPxI5ETMzETMwMUEzAwYCBCcnLgM3EzMDBh4CFxcWNjY3AwMjEwRa6zIapf7yuEmBunIrEDLrMgkHMGZVSn2jWxK4y+vKBI3+07H++JMBAQNbntJ7AS7+0UmKbkQEAQNntHMBLvtzBI0AAAMAAAAABHEEoAAsADAANAAnQBMtNAouMwooEhIpEREyMjEKBh1+AD8zPzMRMxEzMxEzPzM/MzAxQTc2LgInJg4CBwcGBhYWFwcuAzc3PgMXHgMHBw4DBzc+AgE3IQchNyEHA3MFBwwvW0dMdlU0CQUHAhpGQApnlFwlCQQMZJ3Jcm2sdDUJAw1ZjrxxC2B4P/7JIwHAIvwQIgHAIwJrKz5zXTgCAjRefEUrOn1zWRh1EmaXtWIjcr2LSwMCTou3aiRwwJJdD3Ugf6j99cHBwcEAAAMAYv/rBQsEjQADAAcAIwAcQA0XFgsgDQ0DBAoFAgN9AD8zMz8SOS8zPzMwMUEHITcTEzMDEzc+AhceAgcOAwc3Mj4CNzYmJicmBgYEGyL8aSKHyu3LBw81fH47fLhgCQdaj7RgEzJZRiwICCZZQzx2dASNwMD7cwSN+3MB+78aHgwBAV2xgG2UWSgBuhcvTDVFWzABAhMfAAACADn/7QREBKAAAwArABdACgABAQkdFH4oCQsAPzM/MxI5LzMwMUEHITcBNw4CJy4DNzc+AxceAhcjLgInJg4CBwcGHgIXFjY2Ar0i/kQhAgzqFJjjgnipZiUMCg5clcl7gb1sCOoCLV1HUHZPMAkKBwMlVUxLckwCp8DA/twBhbdbAwJcnMdtT3POnFYDAmO4f0ZhNAMCPWuHRFE7f21GAgMvYQAAA//B//8GwwSNABEAKQAtACBADygpKRwsHQEtfR8cCgsICgA/Mz8zPzMzMxI5LzMwMUEzAw4EJyM3Nz4ENyUeAgcOAychEzMDFzY2NzYmJiclNwMHITcBc+9uEixEbJ5xNhYiQ1o5IhUIBCBuu2wIB1iOrVv+G8rtqd1emQ4IKlM0/rYiICL90iIEjf34XLqmgUkByAEEQWV4eTRfA1OheWSTYi8BBI38MwEBZ2M4SygCAcABlcDAAAMACf//BsYEjQAXABsAHwAhQA8XFhYbGhoeCx99DQoKHgoAPzMRMz8zEjkvMzMvMzAxQR4CBw4DJyETMwMXNjY3NiYmJyU3BwchNxMDIxMFL268bQgGWo2uWv4ay+up316YDggqUjX+tyJrIf2NIpnK7MsC9wNToXljlGIvAQSN/DMBAWdiOUsoAgHAW8DAAfD7cwSNAAMAYwAABQoEjQADAAcAGwAZQAsYDQ0DEwQKBQIDfQA/MzM/MxI5LzMwMUEHITcTEzMDEzc+AhceAgcDIxM2JiYnJgYGBBwi/Gkjh8rsywcNNnt+O4O5WA437DgJHlVLO3ZzBI3AwPtzBI37cwH7vxoeDAEBZLuH/qoBV0hlNwICEx8AAAQACf6hBKMEjQADAAcACwAPABtADA8LfQMHBw4KAgIKCgA/My8RMzMRMz8zMDFlAyMTJQchNxMDIxMhAyMTAo5c7FwBsCL9fyLuyuzLA8/K7Muz/e4CEg3AwAPN+3MEjftzBI0AAAIAC//8A/gEjQAXABsAG0AMAgEBDQsOChsaGg19AD8zETM/MxI5LzMwMUEhBwUeAgcGBgcnEyMDBRY+Ajc2JiY3NyEHAm/+uSIBLDRcNwECjVr7qunKAchcsJNiDRBftfoh/YciAunAAQEiSTxjXQEBA837cwICL2CTYnmeT+m+vgAD/4P+rwS/BI0AEAAWAB4AI0AQGh0dCRcKChwUCQoWEREAfQA/MhEzPzMzMxEzETMvMzAxQTMDDgQHIzcXPgM3EyEDIxMhASEDIxMhAyMBmutTEDJMbJJgUBogQF5BLA+MAunK66n+Af4sBMhc7Dv9DzvsBI3+Y1q7sphzHr8BPH+KmVcBmvtzA8388/3vAVH+sAAABf+qAAAGRQSNAAMACQANABMAFwA1QBkUFxcRDAsLBwcREQYODg8KAgIVCgkDAw99AD8zETM/MxEzEjkvMzMRMxEzETMRMxEzMDFBAyMTIQEhNzMBAwM3CQIhEzMHJwEhAQPjyuzKA07+B/7XFacBQ6q7zAEE/Bf+/gEJnbY1jf6f/s8B7QSN+3MEjf1L1QHg+3MCC5D9ZQHYArX+INUf/gkClwACAA7/7gPrBJ8AHgA+AB1ADR8CAgE+PhU0KgsLFX4APzM/MxI5LzMzETMwMUEnNxc+Ajc2JiYjJgYGBwc+AxceAwcOAycXHgMHDgMnLgM3Fx4CFxY2Njc2LgInJwIuwhaBN2pKCAg0WC4xV0EM7QdVhJ1QSZN6RgQDVIKX/qVEinFCBAVfk61VUJNxQALoATFSNDlyUgkGGjZJKJcCKwF9AQEdRz82QRsBGzwxAVh+TyQBASFGd1dUeEwlRwEBIERvUmGGUiQCASpUgVkBN0MdAQEgSkAvPyQRAQEAAwALAAAErQSOAAMABwALABtADAADCgcLCgECBQUIfQA/MxEzMz8zMzMzMDF3ARcBATMDIwEzAyNaA3KP/JAC2enK6f3b6crpVgQ4V/vJBI37cwSN+3MAAAMACgAABGoEjQADAAkADQAfQA4MCwsHBwYGAgkDfQoCCgA/Mz8zEjkvMxEzETMwMUEDIxMhASE3MwEDAzcBAcDK7MsDlf26/u4GtAF9rfq2AVsEjftzBI39S9UB4PtzAguQ/WUAAAP/wf/+BJgEjQADAAcAGQAYQAsTEAoHAgMDCH0GCgA/PzMRMzM/MzAxQQchNyEDIxMhMwMOBCcjNzc+BDcD4CL90iIC5svsyv3I7m8SLUVqnXA2FyJCWTkiFQkEjcDA+3MEjf33W7ingkoCyAIHQWN2eDQAAgB2/+gEiQSNABIAFwAXQAoBF30VFhYODgcLAD8zETMRMz8zMDFBASEBDgIHIiYnNxYWMzI2NjcDExMHAQIIAXUBDP3cLWiLYxw2GhEUKRQyRzYXIJ8orP7rAecCpvx4UIFLAQMCwQMEKUMoA1L9p/7zRQOrAAQACf6vBLgEjQAFAAkADQARAB1ADRENfQUJCRALCAICCAoAPzMvETMzMxEzPzMwMWUDIxMjNzMHITcTAyMTIQMjEwS4btk6gCIFIv1/Iu7K7MsD0Mrty8D97wFRwMDAA837cwSN+3MEjQACAFsAAARbBI0AAwAXABO3FAkJAgMOfQIALz8zEjkvMzAxQQMjEwMHDgInLgI3EzMDBhYWFxY2NgRbyuzKCA41dHY6hcFfDznsOggdVks7dnMEjftzBI39/78YHw4CAV+7jAFc/qNIZDcDARIfAAQACQAABkMEjQADAAcACwAPABlACwsHBw8QCgYGAw59AD8zMxEzPzMRMzAxZQchNwEDIxMhAyMTIQMjEwTxIvvGIgNKyuzKAy7K7Mr8aMrsy8DAwAPN+3MEjftzBI37cwSNAAAFAAn+rwZXBI0ABQAJAA0AEQAVACdAEhENDRV9BBACAhAQDAwTEwkICgA/MzMRMxEzETMvETM/MxEzMDFlAyMTIzczByE3AQMjEyEDIxMhAyMTBldu2DqAIgQi+8YiA0rK7MoDL8vsyvxoyuzLwP3vAVHAwMADzftzBI37cwSN+3MEjQACAEv//ATlBI0AAwAaABdACgYFBQ8SChEBAH0APzIyPzM5LzMwMVMHITcBJQcFHgIHBgYHJxMjAwUWNjY3NiYmbCEBuyIBPf65IgEqNls3AQKPWvuq6coByHvknhIQX7MEjcDA/moBwAECJkw7YmYBAQPN+3MCAlmxgXiiU///AAv//AXZBI0EJgIYAAAABwHzBAoAAAABAAv//APzBI0AFgAVQAkVFhYKDAkKCn0APz8zEjkvMzAxQR4CBw4CJyUTMwMXNjY3NCYmJyU3AnFvs2AREp7lev44yumq+1uNAzZbNf7VIQL3A1OieIGxWQMBBI38MwEBZmI7TCYCAcAAAgAU/+0EHwSgAAMAKwAXQAoCAQEcCCcLExx+AD8zPzMSOS8zMDFBITchAR4CFxY+Ajc3Ni4CJyYGBgcHPgIXHgMHBw4DJy4CJwNY/kUhAbz9hAIvXkhRdE4tCgoHBSZXSktzTBDsFpjghHeqZycMCg9ak8d9fsFwBgHnwP7eR14wAgM+a4ZFUTp+bkYDAjNkRwGFul8DAlydxm5PdM2bVgMDX7OAAAQACf/tBhoEoAADAAcAHQAzAB1ADiQZfi8OCwMCAgYHfQYKAD8/EjkvMz8zPzMwMUEHITcTAyMTAQcOAycuAzc3PgMXHgMHNzYuAicmDgIHBwYeAhcWPgIClSL+kyKXyuzLBTwHDl2Zzn55rmspDAYPXprOfXitain8BwYHKlpLUXpVMgkHBwgrWkxRelMxAqTAwAHp+3MEjf3cOXfToFkDAl+ey284dtGgWAIDXZ7Jqjs9gW5HAwNAb4pGOj2CcEgDA0FxigAAAv/RAAAEUgSOAAMAIwAZQAsjAAQEGRsWfRkBCgA/Mz8zEjkvMzMwMUEBIQEFJSImJicuAicuAjc+AzMFAyMTJwYGBwYWFhcFAmf+dP72AZIB3v6jDRUVCgQGBgNIbTsFBVaKpVYBzcrsqcdXjQ4HJkwyATUCS/21AkuNAQcJBQUNDAYdTnNUYIhVJwH7cwPNAQFUXDdEIgIBAAP/9gAABEkEjQADAAcACwAbQAwLCgoDAgYHBwN9AgoAPz8zETMREjkvMzAxQQMjEyEHITcTByE3AijK7MoDDSH9myK7Hf1zHgSN+3MEjcDA/gGmpgAABv+q/q8GRQSNAAMABwANABEAFwAbADtAHAIOAQEODgYbGBgVEhIQDwwJCRMGBhkKDQcHE30APzMRMz8zERI5LzMzMzMRMzMRMxEzETMvETMwMUEjEzMBAyMTIQEhNzMBAwM3CQIhEzMHJwEhAQWlyVzJ/eLK7MoDTv4H/tcVpwFDqrvMAQT8F/7+AQmdtjWN/p/+zwHt/q8CEAPO+3MEjf1L1QHg+3MCC5H9ZAHYArX+INUf/gkClwAABAAK/q8EagSNAAMABwANABEAJ0ASEA8PCwoKBg0HfQIOAQEODgYKAD8zETMvETM/MxI5LzMzETMwMUEjEzMBAyMTIQEhNzMBAwM3AQO7yVzI/arK7MsDlf26/u4GtAF9rfq2AVv+rwIQA877cwSN/UvVAeD7cwILkP1lAAQACgAABRUEjQADAAcADQARAClAExAPDwoACwsKAwMKCgYNB30OBgoAPzM/MxI5LzMvETMRMxEzETMwMUEzAyMTAyMTIQEhNyEBAwM3AQHXmnCaWcrsywRA/br+QwYBXgF+rPy3AVsDjf1+A4L7cwSN/UvVAeD7cwILkP1lAAQAYAAABXQEjQADAAcADQARACFADxAPDwsKCg4GCg0HBwMAfQA/MjIRMz8zOS8zMxEzMDFTIQchJQMjEyEBITczAQMDNwGCAb8i/kECasrsywOV/br+7ga0AX2s+rUBXASNwMD7cwSN/UvVAeD7cwILkP1lAAABAD7/6AV3BKgARAAbQAwAAQEvGAskIyM6DX4APzMzETM/MzMvMzAxZQcuBDc3PgMXHgMHBw4CBCcuAzc3PgM3Bw4DBwcGHgIXFj4CNzc2NiYmJyYOAgcHBh4CBSYQfOS/h0ANBQtEdKZsaoxQGgkJE4nT/vuPidOLPQ4FDliRxHoWS21JKwkFCRlJgFxos4xZDQYFBRA4OD1UMxwGBQ5EkMqvwQM0ZJrViilht5FTAgNWjq9dRpDuqlwDAlmg3oYwdcqXVQPIAUBqgEElVpRwQAIDP3qnZjUnZ2JCAwI6XmwwLYWyay7//wBsAAAEggSOBCYB4wAAAAcCNgAJ/tMAAv+i/q8EfQSNAAMADwAiQBELDggFBAoGD30CCgEBCgoNCgA/MxEzLxEzPzMSFzkwMUEjEzMBEwEhAQEhAwEhAQEDwshcyP1powEyASH+JgEX/vey/sT+3wHm/vv+rwIQA87+awGV/bH9wgGc/mQCVwI2AAAFAGL+rwW8BI0ABQAJAA0AEQAVACJAEBENDRQVfRASDAkECAICCBIAPzMvETMzMz8/MzMRMzAxZQMjEyM3MwchNxMDIxMhAyMTIwchNwW8btk7gCEFIf1+Iu7K7MoD0cvryq0i/HUiwP3vAVHAwMADzftzBI37cwSNwMAAAwBbAAAEWwSNAAMABwAbAB9ADgAYGA0DAw0NBgcSfQYKAD8/MxI5LzMvETMRMzAxQTMDIwEDIxMDBw4CJy4CNxMzAwYWFhcWNjYB/ZlvmgLOyuzKCA41dHc5hcJeDznsOQkeVUs7dnMDQv1+A837cwSN/f+/GB4PAgFfu4wBXP6jSGU2AwESHwAAAgAJAAAECQSNAAMAFwAUQAkPEhQJCQF9ABIAPz85LzM/MDFzEzMDEzc+AhceAgcDIxM2JiYnJgYGCcvrygkPM3R3OIbCXg456zkJHlVLPHVzBI37cwICvxgfDgECX7uL/qIBXkhlNwICEiAAAQA7//AFlASnADQAG0AMGBgdHRERIgt+LQALAD8yPzM5LzMRMy8wMUUuAzc3PgMXHgMHByUuAzcXBhYWFwU3NiYmJyYOAgcHBh4CFxY2NxcOAgNWecOGPQ4PD2agz3d4snArDhf8I12FUiMFugQZR0EDBwUOK21VTHpZOQsTChhDcU5QmEkxNHuBDwFOkMd7dHPIlFICA1OSw3SYAQNBcZVYATtkPwQDG1J/SwICNmJ9RoVLelcxAQIjHLcgIgwAAQAy/+0EbwSkACsAFUAJERQUGQsLJAB+AD8yPzM5LzMwMUEeAwcHDgMnLgM3NyEHJQcGFhYXFj4CNzc2LgInJgYHJz4CAnt4wII6DRAPZ5/OeHiybywOGANmIv2NBQ4sbFVMelo4CxMJF0NxTlGXSTA1foQEowFQkcd4dHPHlVIDAlKSxHSZwAEaUYBKAwI3YX1Hg0t7WDEBASIduB8iDAAAAgAO/+gEBgSNAAcAJgAbQAwIBQUEJiYdEwsHAH0APzI/MzkvMzMRMzAxUyEHASM3ASETFx4DBw4DJy4DNxcUFhYXMjY2NzYmJicnygM8G/4ypBcBK/3t5J1Mi2o6BQZdkbBZUZNxPwLoM1U1PHBNCAgwWjaQBI2j/mV9AQH+6AICLVV/VGOPWSkCAitWgloBOEUfASRRQj5JIQIBAAADADT/7QRQBKEAFQAkADQAG0AOCyVqLR1qLS0LABZqAAsALy8rEjkvKyswMUEeAwcHDgMnLgM3Nz4DFyYGBgcGBgchNjQnNiYmAxY2Njc2NjchFAYXBh4CApd5rGoqCwYOXpnNf3mtaykLBw5fmc5wWoNUFQEDAgIgAQECJF3kWoJUFAIDAf3hAQEBEzBUBJ4DXZ7Jbjl21KBZAwJenspuOnfRoFnDBFGGTwYLBgYLBkeCVvzTAk+GTwYKBgUJBDZnUzQABAAHAAAECgSgAAMABwALACoAIUAPBgcDAgIJJh1+EgoKEQkSAD8zMxEzPzMSOS8zzjIwMUEHITcFByE3ASE3IQEHDgIHJz4DNxM+AxceAgcnNiYmJyYOAgNDGf0GGQLRGf0GGgNz/H0hA4T+FxwIOmNEiyYwHQ8FHwpDcZ5ld6FOBewDEjo7NEguGQK8kZHrj4/+L8ACIvlTj3QrWQ5CVlciAQFeo3pEAwJjrXUBMlo6AgEtTFsAAAMAHv/xA+4EoQAjACcAKwAdQA0nJiYqKysHGRJ+AAcLAD8zPzMSOS8zMy8zMDFlFjY3FwYGJy4DNzc+AxcWFhcHJiYnIg4CBwcGHgIBByE3BQchNwJlM2QyBjVsN26laSsMGxBYjsB3OnI5KTBiM0ltSy4JHAcGJ1ABMBn9DRoCyRn9DhmxARAMvg4PAQJLhLNrwHK8iUkBARQNuxAPATFYdEPDOWpWNAJQkZHukJAABAAJAAAHtgShAAMAFQAnADEAKUASKzAuLSQJCTEufSotChsSEgIDAC8zM3wvMxg/Mz8zMy8zERI5OTAxQQchNxM3PgIXHgIHBw4CJy4CNwcGFhYXFjY2Nzc2JiYnJgYGAQMjAQMjEzMBEwcjGv3WGhMGCmSiZWGJRQcHCmOhZWCJRrIIBBc/ODtVNAcIBBg/NzpWM/7oyuT+iY7sy+MBeI0BYZCQAaJJZJtWAgJZll9JY5lVAgJXlapLMlY3AQI1WjZKMVY3AgI1WQEI+3MDLfzTBI380wMtAAAC/9oAAAS0BI0AGAAcABtACxscAgEBDgwPfQ4KAD8/MxI5fC8zGM4yMDFBJTcFPgI3NiYmJyUDIxMFHgIHDgMHByE3Ar/9Rx8Cnj5tSggIJU41/wCp68oBz224aggGWIuqWx/9Ox8BnQGyAQEvWEA4TywCAfwzBI0BA1SidmKRXy5NsrIAAAL/9f/zAoUDIwAZADMAGUAKGwAAGRoaCBAsJAAvM8wyOS8zMxEzMDFTMz4CNzYmJyIGByM+AhceAgcOAgcjBzcXHgIHDgInLgI1MxYWFzI2NzYmJifuSSJBLgYHOikqQw+2B1iESEWBVAECXYc+gQcPYkF7TwECZpZLS35MrQFBMTFZCQYdNx8B0AIVLiYsKAEmKE1lLwEBLWBOS1gmAShSAQIgUk1WajECATZrUDIsATQ2JSkSAQAC//MAAAJ5AxUABwALABdACQMHBwEBBgUICgAvzDIyOS8zETMwMUEHITcBMwMHAQMjEwJ5Gv2UDAGynMnOAbaJsooBOZSCAe7+/9oB2/zrAxUAAQAL//MCkgMVACEAErYfCQkEAxkRAC8zzDI5LzMwMVMnEyEHIQc2NjM2FhYHDgInLgInFxYWNzI2NzYmJyIGz5Z4AeEa/rY6HkAgS2w4AwNYjVVHfFADrQQ1Lz1KCAY2NyI7AV4nAZCRnA0PAT5wSld/RAIBNmdLAi4nAUw7NUEBFQAAAQAW//MCbAMkAC0AE7YTHBwDAAwkAC8zzDI5fS8zMDFBMwcnJgYGBwcGFhY3PgI3NiYHIgYGByc+AjMyFhYHDgInLgI3Nz4DAh4iDgdZjl4ODwMOLislPScEBzUzIT0wDS4ISWs9SmcyAwNYjlNdfjwGBAxSh7ADJJYBAzR0W3ckQyoBASU8JDM+ARcrHyM+XTRGdUdVf0YBAlSPWjVrpHI6AAABACUAAAK6AxUABgAMswUBBgIAL8wyMjAxQQcBIwElNwK6FP5HyAG8/lsaAxVy/V0CggGSAAAEAAX/8wKCAyIADwAfAC8APQAXQAoMJDsDFBQ0LBwEAC8zzDI5LxczMDFlDgInLgI3PgIXHgIHNiYmIyIGBgcGFhYzMjY2Ew4CIy4CNTQ2NhceAgc2JiYjIgYHBhYWMzI2AlMCXY5KRIFSAQJgjkdCgFStBBoxGyA7KQUEGi8cIDsq4AJZhUI9eVBWhkZDeEy2BBQnGipEBwQUKBkrROFVaTABAS1iTVJmMAEBLV49HygUFy4iHykUFzABe0xfLAEqWEZPZzEBAS5fVxomEzIsGyYUNAAAAQA0//QCfAMiAC4AE7YSGxsKIwEtAC8zzDI5fC8zMDF3FxY2Njc3NiYmIyIGBgcGFhYzMjY2NxcOAiMuAjc+AhceAgcHDgMHJ3gKUoFVDRQDDCkpJzslBAMTLSMgOCsKNwlDZDpNaTUDA1iPVF12NAYFCk6BrmoWhgECK2VWmiFAKStDJCE3HxYqHSE5WTMBQ3RJVoVLAQJYkVc2baNtNwEBAAABAJECiwM8AzEAAwAIsQMCAC8zMDFBByE3Azwe/XMdAzGmpgADAQgETANaBpoAAwAPABsAGUAJEw0NBwEDAxkHAC8zM3wvGM0RMxEzMDFBNxcFBSY2NzIWFRQGIyImNxQWMzI2NzYmJyIGAaLH8f7v/sABb01HZ2xMSGpgICQlOgUGIiMpNQXYwgHB5E1qAWJJTGleSyAxNyUgMwE6AAQACQAAA/sEjQADAAcACwAPABtADAsKCgYPDgd9AwIGCgA/MzM/MzMSOS8zMDFlByE3EwMjEwEHITcBByE3A1Qi/Xgi88rsywKEIv3LIgLYIv15Ir+/vwPO+3MEjf4tv78B08DAAAT/h/5JBEsEUQASACQAWwBfADNAGl1fBnIlJhgYD0BBQS5TUw8PBUo3D3IhBQdyACsyKzIROS85ETMzETMRMxI5OSsyMDFTNz4CFx4CBwcOAycuAjcHBhYWFxY2Njc3NiYmJyIGBgMXBgYHBhYWFxceAgcOAycuAzc+AjcXDgIHBh4CMxY+Ajc2JiYnJy4CNz4CAQchN1oCCpDVc2u3bAYBCFmJpFNouG/xAwMsUTI3ZUcJAwQrUDQ4ZkYtXCQ/BwUcLxitW6ViBgV3s8FOPJeLWAMDZpdOMyU/KgcGJ0NMIChpZ0oJCClHJsE5cEkBAj5eA1wZ/owQAsYWe6dTAwJTnnQXWotdLgICVJyIFjVNKgEBLVM4FjVOLAEsVP61OBM6LB4eCgEBAjl9amKKVSYBARg7aFBafEsRWwouQigrNh0MAQ8mQTMuMBICAgEiTkNAXUMCiZWVAAAEADv/5wSJBFIAFQArAC8AMwAXQAwwCi0GHBELcicGB3IAKzIrMj8/MDFTNz4DFx4DBwcOAycuAzcHBh4CFxY+Ajc3Ni4CJyYOAgUTMwMDEzMTRAMMRXixeGmJTRsEBxFMeqhta45PGfkCBQMfS0NBY0gtCwcECCJIPUxrRCYByqnaxsUMtBAB9BVm0K1mAwNlobtYOF++m1wDA12Xt3IWMnJlQQECQGl3NjQudW9JAwNJeYkrAh794v3kAhz95AACACsAAATqBbAAGQAuAB9ADyYIGxoaAgEBDgwPAnIOCAA/KzISOS8zMxEzPzAxQSE3BTI2Njc2JiYnJQMjEwUeAgcOAg8CNx4CBwcGBhYXByMmJjY3NzYmJgLa/mIhAUxPilsLCStgRf7Z2vX9AgqAy20KCXi1YyB7OXazWg8RBQMRGgPxGxAEBhAJIlcCWMYBL2dVR2I0AgH7GAWwAQNatYpxlFkYMRSEAlKif3UkTUceHCFUWSdySGg7AAMAKwAABXYFsAADAAkADQAgQBAKCAkCDAsLBwYGAgMCcgIIAD8rEjkvMzMRMz8/MDFBAyMTIQEhNzMBAwE3AQId/fX9BE79Mv6gBekCBrz+pLYBvQWw+lAFsPzC2gJk+lACpLf8pQAAAwAUAAAERgYAAAMACQANABxADgsHBgYCCQZyAwByCgIKAD8zKysSOS8zMzAxQQEjCQIhJzMBAwM3AQIK/vXrAQsDJ/3p/uAj3wFYgfauAUwGAPoABgD+Ov2hvwGg+8YCBaD9WwAAAwArAAAFYAWwAAMACQANABpADgYLBwgMBQIJAwJyCgIIAD8zKzISFzkwMUEDIxMhASE3MwEDATcBAh399f0EOP0N/s4KYwJ3yP4Z4QImBbD6UAWw/QZ2AoT6UALfYPzBAAADABQAAAQzBhgAAwAJAA0AIEAQDAsLBwYGAgkGcgMBcgoCCgA/MysrEjkvMzMRMzAxQQEjCQIhNTMBAwE3AQIO/vHrAQ8DEP28/vx+AZt+/rS8AZsGGPnoBhj+Iv3BngGh+8YCH3n9aAAAAgAJ//8EFgSNABkAHQAWQAkbGg8CAQ4PfQEALz8zETMRMzIwMWEhNxcWNjY3NzYuAiclNwUeAwcHBgYEAwMjEwGG/uoj+nSlZA8ICA00ZVH+4SIBAne3ezYMBhSw/u5vyuzLvwEBW6RvOkd/YzsDAcABA1aVxnM5p/uLBI77cwSNAAEAOf/tBEQEoAAnABG2GRUQfiQABQAvzDM/zDMwMUE3DgInLgM3Nz4DFx4CFyMuAicmDgIHBwYeAhcWNjYDDOoUmOOCd6pmJQwKDlyVyXyAvWwI6gItXUdQdk8wCQoHAyVVTEtyTAGDAYW3WwMCXJzHbU9zzpxWAwJjuH9GYTQDAj1shUVRO39tRgIDL2EAAAIACf//BAAEjQAZADEAKEATHBspGQICARsmAQEmGwMNDA99DQAvPzMSFzkvLy8RMxI5OREzMDFBITcFPgI3NiYmJycDIxMFHgMHDgIHAyE3BT4CNzYmJicnNwUXHgIHDgMCQv67HAEJNGVICAgpTi/PqezLAZJLlHdEBQVqoVaz/nqBAQw1ZkkKCCJIMf0fASQpTnxFBAVViKUB/aYBARxDOjc9GwEB/DMEjQECH0Z3WWJ4OwX9xb8BAh9GOzVDIgIBpgFBBEB0U2KETyIAA/+aAAAEAQSNAAQACQANABxADA0ABgMMDAEHA30FAQAvMz8zEjkvEjk5MzAxQQEjATMTAzczEwMHITcCgP4T+QKSpky3BJv7qyD9eSADk/xtBI37cwOr4vtzAbC1tQAAAQDoBG0CLAYqAAoACrIFgAAALxrNMDFTNz4CNxcGBgcH6BQILkkyfyM2DBcEbYQ9c2MmUjp0Q3oAAAIBBATSA30GfAAPABMAErUSEwoADQUALzN83DLWGM0wMUE3DgInLgInFwYWFzI2JyczFwLTqgdmlEpHiVsDpgJIOz1dpIeiUQWwAlRjKQIBLGFRAj01ATZHwcEAAv0nBL7/dgaJABcAGwAdQAwAFRUFGRsbCRERDAUALzMzETMzLzMRMxEzMDFDFw4CBwYmJgcGBgcnPgIzMhYWNzY2JzcXB/piBidHMypERCcmKgtmBSpINClERicmKfOkytUFnhwuUzYBASgnAwI1IBouVTUnJwMCNzrRAdAAAgDcBOcFHQaKAAYACgAUtwgHBwUBgAQGAC8zGs05My/NMDFTJRcXBycHJRMzAdwBQZjvtYK0Ab/D4v8ABOf2AfQBjY2bAQj++AACABYE2wOhBn8ABgAKABdACQdACAgDBoACBAAvMxrNOTMvGs0wMUEXIycHIyUlEyMDArPutYKz3gFB/r9qiaQF0faOjvau/vgBBwAAAgDcBOgEjwbHAAYAGgAfQA0REghAGgkICAMGgAIEAC8zGs05MxEzMxoQzDIwMUEXBycHByUFJzc+Ajc2JiYjNx4DBwYGBwK/5KWPxc4BNwHmjQoWOi8FBCs6EhAjVk4xAgJTNgXe9QGfngH3dAF7AggZHR0XBWcBDSI8MD47CwACANsE6AOjBswABgAeACVAEAgHBxAYDEAUExMcDAwGgAQALxrNMhEzMxEzGhDNMjIRMzAxQRcHJwcHJSUXDgIHBiYmBwYGByc+AjMyFhY3NjYCrfalksLPAUUBGlkGJD8sJUA9JR8mC1sGJD8tJEA/JCAmBdLpAY6NAer6HChILgEBJiUDAi0aGCdJMCYjAwMtAAMACQAABBYFxAADAAcACwAbQAwCCgoLCwcDAwd9BgoAPz8zLxEzETMRMzAxQQMjEwEDIxMhByE3BBZY61j+lMrsywMMIv2cIgXE/gkB9/7J+3MEjcDAAAACAQQE0QN8BnwADwATABK1ERMACg0FAC8zfNwyGNbNMDFBNw4CJy4CJxcGFhcyNic3FwcC06kGZpRKR4pbAqUBSDs9XcyWwMgFrwJVYikCASxhUQI9NQE2ScABvwAAAgEFBNMDdQcHAA8AJQAoQBEbHBwRJRISEREJDQUACQkFEAA/M3wvMxEzETMYLzMRMxEzLzMwMUE3DgInLgInFwYWFzI2JyM3PgI3NiYmIiM3HgMVDgIHAs+mBmWRSkeIWgGjAkg6O10logcVQzgEBCAwLgsNIGJhQAExSCIFrwJTYikCAStgUQI8MwE0U3UBBRcdFRUIXwEIHDgxKjEXBgD//wCJAokC9AW8BgcB1wBzApj//wBmApgC7AWtBgcCMABzApj//wB+AosDBQWtBgcCMQBzApj//wCJAosC3wW8BgcCMgBzApj//wCYApgDLQWtBgcCMwBzApj//wB4AosC9QW6BgcCNABzApj//wCnAowC7wW6BgcCNQBzApgAAQBs/+gFPwXIACkAFUAKGhYRA3ImAAUJcgArzDMrzDMwMUE3BgYEJy4ENzc2EjY2Fx4CFycuAicmDgIHBwYeAxcWNjYD6fIbrv77nXezfUcWDQcScrj4mZvadwb0BDZxXmqhcUUNBwgBG0BqUWORYAHZAp3gdgMCUo62zWk4jQEFzncDA33glwFXhk8DA12cu1k5Po2Ib0YCA0mIAAABAGv/6gVGBcgALQAbQA0tLCwFGhYRA3ImBQlyACsyK8wzEjkvMzAxQQMOAicuBDc3NhI2NhceAhcjLgInJg4CBwcGHgMXFjY2NxMhNwUTVzu70F15vohSHQ4FE3K5+5uU2H0L7gc/c1RrpXRGDQYJBSVJdVQ0aWIpNv7jIQLh/dpQWyYBAlCLt9JuKI4BCNJ5AwNuz5JRdkEDA1+gvVwoRZKHbUECAQ4lIgEfuwACACsAAAUVBbAAGwAfABK3HA8QAnICHQAALzIyKzIyMDFhITcFMj4CNzc2LgInJTcFHgMHBwYCBgQDAyMTAeD+tyUBInO+klsQBg0YUJFt/rIjATuW5JQ+EAUUiNb+72D99f3HAUuKunAsYLOMVAMByAEDcML8ji2b/v2+ZwWw+lAFsAACAG7/6AVpBcgAGQAxABC3IRQDci0HCXIAKzIrMjAxQQcOBCcuBDc3PgQXHgQFNzYuAycmDgIHBwYeAxcWPgIFXQUPUYKt03t2tH5MGQwFD1ODrdJ4drV/Sxn++wYIBB9CbVFopnlJDQYIBB9CbVFrpndIAvUtcNe9jU8DAlWQuM5nLW/Wu41PAwJUjrfOky4/jIVuQwMDXp28WS4+jYhwRgIEXqC/AAADAG3/BAVpBcgAAwAdADUAG0ANJRgDcgADAzELCXIBAgAvMysyMhEzKzIwMWUBBwEBBw4EJy4ENzc+BBceBAU3Ni4DJyYOAgcHBh4DFxY+AgNjAT6s/skCngQPUoCs1Xt3tX9KGQ0ED1OBrdN6d7V/Sxj+/AUIAx5CbVJqp3dJDgQIAx9BblFtpnZIwv7IhgE2ArUjcdm9jk8DAlWRuNBpInHYvI5PAwJVjrnQiiRAjYdvRAMDX5+9XCM/jolxRgIEX6HAAAABAKsAAAMwBI0ABgAVQAkDBAQFBQZ9AgoAPz8zLzMRMzAxQQMjEwU3JQMwxOqX/pIlAj0EjftzA2p60M0AAAEAHAAABAkEogAgABdAChAQDBV+AyAgAhIAPzMRMz8zMy8wMWUHITcBPgI3NiYmJyYGBgcHPgIXHgMHDgMHBQPJIfx0HQIaKlI8CAcnTDFFa0UM6QuS3nxMjm89BwQ7Wmky/sa/v6UBnyJMWjk0RSQBAjllQQGBumICAihQfVZFdWJWKPkAAf+B/qEEEgSNAB8AGkALBgAeHgMWDwUCA30APzMzLzMSOS8zMzAxQQEhNyEHAR4CBw4DJyYmJzcWFhcWNjY3NiYmJycBRAF//dIiA1sa/mNpkEQIC3Gz431mv1tGRZxSabR4Dg1AiF5TAl8BbsCX/oITgbhogsuNSQIBOiyzKy8BAlWcamR+PQEBAAAC/9H+xAQfBI0ABwALABZACQYEC30KAwcHAgAvMxEzLz8zMzAxZQchNwEzCQMjAQQfIvvUFAM7yP7x/hEDMP7/6wEBv8CeA/D+iP2rA836NwXJAAAB/9j+nQRNBIwAJwAWQAkkCQkCGhMFAn0APzMvMxI5LzMwMUEnEyEHIQM2NhcyHgIHDgMnJiYnNxYWFxY+Ajc2LgInJgYGASvO3AMUJP2vdDZ4PWeSWCIJC2Wj0Hhqw1lYPJtQTIBjPQoGDi5RPTBSQwFqEgMQzP6fHxkBT4esXnjFkEwBAj03rzQxAQE0Xn1KNWdTNAEBFjIAAQAx/sQEWgSNAAYAD7UBBQUGfQMALz8zETMwMUEHASMBJTcEWhn86PgDDP1DIgSNkfrIBQgBwAACAQUEzAODBtkADwAnAClAEREQEBkhIRUdHBwlFRUACQ0FAC8zzTIyfC8zMxEzETMYLzMzETMwMUE3DgInLgInFwYWFzI2ExcOAiMGJiYHBgYHJz4CMzIWFjc2NgLNpwZkkktHh1gCpQNFOzxcY2EEKUg0KURFJyYpC2cGKUk0KEVGJyYrBa4CVWMsAgEuY1ECPDUBNQFnGy9UNQEoJwIDNSEcLlQ2KCYCAzUAAf+4/poBAQCzAAMACLEBAAAvzTAxZQMjEwEBXexes/3nAhkABQA7//AGnwSfACkALQAxADUAOQAxQBg4OTkxfRYtLRcwCjU0NCYbAQYGJn4RGwsAPzM/MxEzERI5LzM/MzMRMz8zETMwMUEHLgMnJg4CBwcGHgIXFj4CNxcOAicuAzc3PgMzHgIBByE3EwMjEwEHITcBByE3BCYnLFpaWi1Se1YzCgcHBihYSy1aW1kuBT5+fT55rGkpCwcPXprOfkGCggISIf14IfTK7MsChCL9yyIC2CL9eSIEjcMCBggGAQFAbYpIOzyAb0cEAgMFBgG/AwcGAgNdncluOnjQn1gBCAn8Mr+/A877cwSN/i2/vwHTwMAAAAEARf6xBD0EpAA7ABS3ABUfHzULKTUALy8zEjkvMzIwMUUWPgI3NzYuAicmDgIHBh4CFxY+Ajc3DgInLgM3PgMXHgMHBw4EJyYmJzcWFgFRcaNuQQ8kBwQmVEZEaUkqBwUJKUw8OWtbPwxkDoDNhGiUWiMIClWMu3B5rGclDh8QSHCdyn1LkERAMWWQAmChwV/2OHhpQgMBO2R4OzFrXDwCAh8+WTkKgMVtAwNTi69fasCTVAIDXp/Lb89u17+SUgIBIR2wFRwAAf8A/kcBOwDOABEACrINBgAAL8wyMDF3MwMOAiciJic3FhYzMjY2N0/sKQ9hpnUjQyEgFzEZNEImB87+9W6sYgEKCMIGCTRULf///6n+oQQ6BI0EBgJcKAD////a/p0ETwSMBAYCXgIA////yf7EBBcEjQQGAl34AP//ABMAAAQABKIEBgJb9wD//wBN/sQEdgSNBAYCXxwA//8AIv/oBD8EowQGAnXWAP//AFb/6QQHBboEBgAa+QD//wAx/rEEKQSkBAYCY+wA//8AN//pBEIFxwYGABwAAP//APgAAAN9BI0EBgJaTQD///8E/kcB2wQ6BAYAnAAA////BP5HAdsEOgYGAJwAAP//ACMAAAHKBDoGBgCNAAD///98/l8BygQ6BiYAjQAAAQYApNQKAAu2AQQCAABDVgArNAD//wAjAAABygQ6BgYAjQAAAAMACf/mA+cEoQADABYAMQApQBQPJiYNIyMJGy8LcgQAAAITCX4CCgA/PzMSOS8zKzIROS8zMxEzMDFBAyMTFwc+AhcWFhcBJzc3JiYnJgYGAzcWFjMyNjY3NiYmJyc3NzYeAgcOAicmJgFzg+eC6+AKbcKLfr9Q/nSLFfEcRShHWC9CVR5EJjlXNgcINl41XhxfS5BzQAQIcbxzPnMC7f0TAu0CAoXHbAMDeFv+ZgN7/BwgAQFLdPz8thgcNlg2P0IYAQGeBQIjTHpVda9hAgEeAAIATP/oBGkEowAVACsADrUcEX4nBgsAPzM/MzAxQQcOAycuAzc3PgMXHgMHNzYuAicmDgIHBwYeAhcWPgIEXgIPW5fRhH6uaCYMAg9dmNGDfa5nJfoGBggpWUxRe1YzCQUGBypZTVJ7VTECVRF626leAwNjp9FxE3nZp10DAmOl0JEyPIJxSQMDQ3OMRjE8hHRLAwNEdY4AAQBWAAAEYQWwAAYAE0AJAQUFBgRyAwxyACsrMhEzMDFBBwEjASE3BGEZ/Qb4Avr9WiEFsJH64QTwwAAAAwAQ/+gEJQYAAAQAGgAvABlADiEWB3IrCwtyBApyAAByACsrKzIrMjAxQTMDByMBBw4DJy4DNzc+AxceAwc3Ni4CJyYOAgcHBhYWFxY+AgEb7OVEzgQLAwxKfbB0Z4lOHQUIEEt4qGtxklAZ+AIGBiVRRz1mTjQLHQQrXkpLb0ssBgD62dkCLRZkyKNgAwNhmrZYRF2/nV4DA2Ofv3IWN3hpRAICLFBnOLdDe08CA0BtgQAAAQA2/+kD9gRRACcAGUAMHRkZFAdyBAQACQtyACsyMi8rMi8yMDFlFjY2NzcOAicuAzc3PgMXHgIHIzQmJicmDgIHBwYeAgHjPGJGD90OjM5xc6VkKAsFDViQw3h4rFwB2yZQP0ptSywIBAYEI1CqAi9WOAJ1rF0CA1qXwWgkcMiYVQMDarZ1OWE9AgM+aYA/IzZ5akQAAwA3/+gEmQYAAAQAGgAvABlADSEEBBYLcisLB3IBAHIAKysyKzIvMjAxZRMzASMBNz4DFx4DBwcOAycuAzcHBh4CFxY2Njc3Ni4CJyYOAgLM4ez+9cr9fAMMS3+zc2iHTRwECBBNeadrbJFTHPkDBgcnUURPflQRHAMUMVA4S3BNLu4FEvoAAgkWZcqkYAMDZJ23V0RdvJxcAwRjoLxyFTZ3akQDA01/SLcyYlAyAQNAbYIAAwAt/lIESgRRABMAKQA+ABtADzAlC3I6GgdyDgYPcgAGcgArKzIrMisyMDFBMwMOAycmJic3FhYXFjY2NxMBNz4DFx4DBwcOAycuAzcHBh4CFxY2Njc3Ni4CJyYOAgN9zasRWI7AeFWkSkA4f0JkiVEOhP0LAgxLfbN1aolLGwUIEUx5qGtskVIc+QMGBydRRFF8VBAdAxMyUDlLb00uBDr8FnK8iEgCATAprCIoAQNSj14DCP63FmbJomADAmKbuFpDXr2bXAMDZaC8cRY1d2pEAgRNfkm3M2NPMQICQG2CAAIAMv/pBDQEUQAVACsAELccEQtyJwYHcgArMisyMDFTNz4DFx4DBwcOAycuAzcHBh4CFxY+Ajc3Ni4CJyYOAjwDDV2WyHlzqWwsCgMOXpfIeHGpbCz4AwYKKldGSnNSMQkDBQgsVkZLc1ExAgoXccycVwMCW5rCahhxyplWAwJamMGAFzh6aUMCAz9rgkEWOHtrRQICQG2DAAAD/8j+YAQkBFIABAAaAC8AGUAOIRYHcisLC3IDBnICDnIAKysrMisyMDFBAyMBMwEHDgMnLgM3Nz4DFx4DBzc2LgInJg4CBwcGFhYXFj4CAZLe7AEE0gJ8AwxKfbFzZYlTIAQKEE16qWxvklAa+QMGCCdTRT1nTTQMHwMtXkhKcE4uA1z7BAXa/fMVZMijYQMDXZWyWFFevp5dAwNjoL5xFTZ4akQCAy1QZjjEQndLAwJCboIAAAMANv5gBEoEUgAEABoALwAZQA4hFgtyKwsHcgQOcgMGcgArKysyKzIwMUETNzMBATc+AxceAwcHDgMnLgM3BwYeAhcWNjY3NzYuAicmDgICWeFBz/78/PoDDEp/tHVoiU4cBAgQTXuoa22SVBz6AwYHJ1JFUH9UER0DFDJROUtxTi7+YAURyfomA6kWZsqjYAMDY524V0RevZtbAwNjn71yFTZ4akYDAk2ASrczY1ExAgJBboMAAQA6/+wD9QRRACoAGUAMExISABkLB3IkAAtyACsyKzIROS8zMDFFLgM3Nz4DFx4DBwchNwU3NiYmJyYOAgcHBh4CFxY2NxcGBgIEcrB1MwkEDVePwHVtm10hDBT81B8CPQULHFFGSmxJKggFCBU8ZkpMkkIpSsMTAVORwG0rbcebWAMCU4y0ZX+tAR1AbEMDAj9rgD4qQnlfOAIBLCanOy8AAwAu/lIEOQRRABIAKAA9ABtADy8kC3I5GQdyDQYPcgAGcgArKzIrMisyMDFBMwMOAicmJic3FhYXFjY2NxMBNz4DFx4DBwcOAycuAzcHBh4CFxY2Njc3Ni4CJyYOAgNrzq0WkOqdT5xGQDV1PWGJUg6G/R0DDEV2rXRriUsaBQgQTHmna2yMSxb4AgYCH0tDUXtQER0DEy9POUtqRicEOvwLl+J6AgEpJK0eIQECTIpcAxT+thZkyKVhAgNhnLhaRF28nFwDBGWhvG4VM3ZrRgIETX9ItzNiUDECAkJugQAC/5/+TwRnBEgAAwAlABlADA4VAQEVHwQHcgMGcgArKzIvMy8RMzAxQQEjASUeAxcTHgIXFjY3BwYGJy4DJwMuAicmBgc3NjYEZ/wz+wPN/Yw/WD4rEO4HFyUfEygTNBgvGDpRNiMO4QoiNykQIhAMHj0EOvomBdoNASxKYDT8Zho6LAYDAQHBBgUCAjpZZy8DdSNCKwEBAwG5BwkA//8AqwAAAzMFtQQGABW6AAABACT/7QRJBJ8AQQAXQAs4OBAifhkKMwALcgArMj8/MzkvMDFFLgM3PgI3JTY2NzYmByIGBwYWFhcBIwEuAjc+AhceAgcOAgcFDgIHBhYWFxY+Ajc3BgYHBgYHBgYBmEKFbj8EBEJlOgEfI0gHBTsrM1AIBiAzFAIX8v5BJkUrBAZpoFZPjVUFAzVSL/7GGS0gBQcpSCldn3pODcsNa1kOHhBW4BEBI0duTUpuVySzGEIvLTQBQzIlQzwa/U8CRDBibEFdf0ABAj95WDtgTh7HESkzIC86GgEEPXCXWQF+zFcOHAtGPgAAA//vAAADPQSNAAMABwALAB1ADQgJCQsKCgYHfQMCBgoAPzMzPxI5LzMzLzMwMWUHITcTAyMTAQcFNwM9Iv2bIvPK68oBqBv9ghu/v78DzvtzBI3+pZm6mAAABv9+AAAGDwSNAAMABwALABAAFAAYADNAGAoLCxgYDwcGFBMGEwYTDQ99AwICFxcNCgA/MxEzETM/Ejk5Ly8RMxEzETMRMxEzMDFlByE3AQchNwEHITcHASEBMxMHITcBAyMTBZAi/ZYhAl0h/eAiAqwh/ZUicf1V/vUDJKMuIv2aIQL4oemhvr6+AgC+vgHPvr5/+/IEjf03vLwCyftzBI0AAgAJAAADvASNAAMAGQAXQAoPEBABfQUEBAAKAD8yLzM/My8zMDFzEzMDJzcXMjY2NzYmJicnNxceAgcOAiMJy+vKKSLZPXBNCQgqUzXyI9Rvu20ICZPeewSN+3PkwQEoU0M6TikCAcABA1OieYarUAAAA//b/8cEuwS7ABUAKwAvABtACy8vHBF+LS0nBgtyACsyMnwvGD8zM3wvMDFBBw4DJy4DNzc+AxceAwc3Ni4CJyYOAgcHBh4CFxY+AgEBIwEETAYOXpjPfnmtaykLBw5fmc5+eK1qKv0HBgcrWUxReVQyCQcHBytaTFJ6VDABafvLqwQ1Amk5d9OgWQMCXp7Kbjp30aBYAgNdn8imOz2AbUUDA0BviUY7PYFxSAMCQnGLAtH7DAT0AAQAIgAABP4EjQADAAcACwAPABtADAIDgA4PDwsHfQoGCgA/Mz8zMy8zGswyMDFBByE3EwMjEyEDIxMFByE3A8Ai/X4imsrsywPUy+rKASge+30eAp3AwAHw+3MEjftzBI2Wp6cAAAIACf5HBKgEjQAJABsAH0APFxAPcgkDBn0ICgoCAgUKAD8zETMRMz8zMysyMDFBAyMBAyMTMwETAzMHDgInJiYnNxYWMzI2NjcEqMrk/omO7MvjAXiNvesSDmOmdiNDIiMYMBg0QyYIBI37cwMt/NMEjfzTAy37uIFwrGEBAQoJwAYJNFMuAP//AEACDgJlAs4GBgARAAAAAwAgAAAE9wWwABoAHgAiACNAEQIBAR0iISEdDg8PHgJyHQhyACsrMhEzETkvMxEzETMwMWEhNwUyNjY3NzYuAiclNwUeAwcHDgIEAwMjEwEHITcB7v7DJQEfk897FQoLCz58Z/61IwEvktWGMxAKFXzE/v9Q/fb9AYoe/XMdxwKG4IdQVamNVwMByAEDcb/2h06T/bpnBbD6UAWw/YSmpgAAAwAgAAAE9wWwABoAHgAiACNAEQIBAR0iISEdDg8PHgJyHQhyACsrMhEzETkvMxEzETMwMWEhNwUyNjY3NzYuAiclNwUeAwcHDgIEAwMjEwEHITcB7v7DJQEfk897FQoLCz58Z/61IwEvktWGMxAKFXzE/v9Q/fb9AYoe/XMdxwKG4IdQVamNVwMByAEDcb/2h06T/bpnBbD6UAWw/YSmpgAAAwArAAAEEAYAAAMAGgAeABlADR4dFgoHcgMAchECCnIAKzIrKzLEMjAxQQEjARMjPgMXHgMHAyMTNiYmJyYOAgEHITcCIf716wELH0oNRXambVl3RBYJdO12BhREQUZrSy4BrR39cx0GAPoABgD8RV67mVoDAkJxkVH9SQK6O145AQI4YHYC7qamAAADAJ0AAAUlBbAAAwAHAAsAFUAKAwoLBgcCcgEIcgArKzIvMzIwMUEDIxMhByE3AQchNwNq/PT9Aq4j+5sjAxse/XMeBbD6UAWwyMj+CKamAAP/5f/tAq4FQwADABUAGQAdQA4KEQtyGBkZAgIEBAMGcgArMi8yETMvMysyMDFBByE3EzMDBhYWFxY2NwcGBicuAjcBByE3Aq4f/bAe2euzBAklJxUrFhEkSyZabiwIAg0e/XMeBDqwsAEJ++YjNB0BAQYDugsKAQFRiFQBwaamAP///6MAAASrBzcGJgAlAAABBwBEAVQBNwALtgMQBwEBYVYAKzQA////owAABMMHNwYmACUAAAEHAHUB9gE3AAu2Aw4DAQFhVgArNAD///+jAAAEqwc3BiYAJQAAAQcAngDyATcAC7YDEQcBAWxWACs0AP///6MAAATFByoGJgAlAAABBwClAQEBNwALtgMcAwEBa1YAKzQA////owAABKsHBgYmACUAAAEHAGoBHgE3AA23BAMjBwEBeFYAKzQ0AP///6MAAASrB5IGJgAlAAABBwCjAY0BbAANtwQDGQcBAUdWACs0NAD///+jAAAE2AexBiYAJQAAAQcCNwF+ARcAErYFBAMbBwEAuP+ysFYAKzQ0NP//AF/+NwUKBccGJgAnAAABBwB5Abz/+gALtgEoBQAAClYAKzQA//8AJgAABLwHPgYmACkAAAEHAEQBIQE+AAu2BBIHAQFsVgArNAD//wAmAAAEvAc+BiYAKQAAAQcAdQHDAT4AC7YEEAcBAWxWACs0AP//ACYAAAS8Bz4GJgApAAABBwCeAL8BPgALtgQTBwEBd1YAKzQA//8AJgAABLwHDQYmACkAAAEHAGoA6wE+AA23BQQlBwEBg1YAKzQ0AP//ADcAAAIyBz4GJgAtAAABBwBE/9kBPgALtgEGAwEBbFYAKzQA//8ANwAAA0gHPgYmAC0AAAEHAHUAewE+AAu2AQQDAQFsVgArNAD//wA3AAADFwc+BiYALQAAAQcAnv93AT4AC7YBBwMBAXdWACs0AP//ADcAAAMwBw0GJgAtAAABBwBq/6MBPgANtwIBGQMBAYNWACs0NAD//wAmAAAFhgcqBiYAMgAAAQcApQEsATcAC7YBGAYBAWtWACs0AP//AGL/6QUiBzgGJgAzAAABBwBEAWwBOAALtgIuEQEBT1YAKzQA//8AYv/pBSIHOAYmADMAAAEHAHUCDQE4AAu2AiwRAQFPVgArNAD//wBi/+kFIgc4BiYAMwAAAQcAngEKATgAC7YCLxEBAVpWACs0AP//AGL/6QUiBywGJgAzAAABBwClARgBOQALtgI6EQEBWVYAKzQA//8AYv/pBSIHBwYmADMAAAEHAGoBNQE4AA23AwJBEQEBZlYAKzQ0AP//AFj/6AUxBzcGJgA5AAABBwBEAUkBNwALtgEYAAEBYVYAKzQA//8AWP/oBTEHNwYmADkAAAEHAHUB6gE3AAu2ARYLAQFhVgArNAD//wBY/+gFMQc3BiYAOQAAAQcAngDmATcAC7YBGQABAWxWACs0AP//AFj/6AUxBwYGJgA5AAABBwBqARIBNwANtwIBKwABAXhWACs0NAD//wChAAAFUAc2BiYAPQAAAQcAdQHBATYAC7YBCQIBAWBWACs0AP//ABz/6QPRBgAGJgBFAAABBwBEAKwAAAALtgI9DwEBjFYAKzQA//8AHP/pBBsGAAYmAEUAAAEHAHUBTgAAAAu2AjsPAQGMVgArNAD//wAc/+kD6wYABiYARQAAAQYAnksAAAu2Aj4PAQGXVgArNAD//wAc/+kEHQX0BiYARQAAAQYApVkBAAu2AkkPAQGWVgArNAD//wAc/+kEBAXPBiYARQAAAQYAancAAA23AwJQDwEBo1YAKzQ0AP//ABz/6QPRBlsGJgBFAAABBwCjAOYANQANtwMCRg8BAXJWACs0NAD//wAc/+kEMAZ6BiYARQAAAQcCNwDW/+AAErYEAwJIDwAAuP/dsFYAKzQ0NP//ADf+NwPmBFEGJgBHAAABBwB5AUH/+gALtgEoCQAAClYAKzQA//8AOv/rA/AGAAYmAEkAAAEHAEQAlgAAAAu2AS4LAQGMVgArNAD//wA6/+sEBQYABiYASQAAAQcAdQE4AAAAC7YBLAsBAYxWACs0AP//ADr/6wPwBgAGJgBJAAABBgCeNAAAC7YBLwsBAZdWACs0AP//ADr/6wPwBc8GJgBJAAABBgBqYAAADbcCAUELAQGjVgArNDQA//8AIwAAAeQF9wYmAI0AAAEGAESL9wALtgEGAwEBnlYAKzQA//8AIwAAAvoF9wYmAI0AAAEGAHUt9wALtgEEAwEBnlYAKzQA//8AIwAAAsgF9wYmAI0AAAEHAJ7/KP/3AAu2AQcDAQGpVgArNAD//wAjAAAC4gXGBiYAjQAAAQcAav9V//cADbcCARkDAQG1VgArNDQA//8ADQAABCcF9AYmAFIAAAEGAKVjAQALtgIqAwEBqlYAKzQA//8AOP/pBB4GAAYmAFMAAAEHAEQAqwAAAAu2Ai4GAQGMVgArNAD//wA4/+kEHgYABiYAUwAAAQcAdQFNAAAAC7YCLAYBAYxWACs0AP//ADj/6QQeBgAGJgBTAAABBgCeSQAAC7YCLwYBAZdWACs0AP//ADj/6QQeBfQGJgBTAAABBgClWAEAC7YCOgYBAZZWACs0AP//ADj/6QQeBc8GJgBTAAABBgBqdQAADbcDAkEGAQGjVgArNDQA//8ASv/oBC8GAAYmAFkAAAEHAEQAsgAAAAu2Ah4RAQGgVgArNAD//wBK/+gELwYABiYAWQAAAQcAdQFUAAAAC7YCHBEBAaBWACs0AP//AEr/6AQvBgAGJgBZAAABBgCeUAAAC7YCHxEBAatWACs0AP//AEr/6AQvBc8GJgBZAAABBgBqfAAADbcDAjERAQG3VgArNDQA////vP5HBBkGAAYmAF0AAAEHAHUBHgAAAAu2AhkBAQGgVgArNAD///+8/kcEGQXPBiYAXQAAAQYAakcAAA23AwIuAQEBt1YAKzQ0AP///6MAAASrBuMGJgAlAAABBwBwAPkBOQALtgMQAwEBplYAKzQA//8AHP/pBAMFrQYmAEUAAAEGAHBSAwALtgI9DwEB0VYAKzQA////owAABKsHHwYmACUAAAEHAKEBKgE3AAu2AxMHAQFTVgArNAD//wAc/+kD9QXoBiYARQAAAQcAoQCDAAAAC7YCQA8BAX5WACs0AAAE/6P+VQSrBbAABAAJAA0AIwArQBUNDAwDFh0GAAIHAwJyDg8PBQUCCHIAKzIRMxEzKzISOTkvMxI5LzMwMUEBIQEzEwM3MwEDByE3ARcOAgcGFhcyNjcXBgYjIiY3PgIDKP2F/vYDEKtUzg+fARmyI/z+IwMFdSNSPgYDGB4XLRUMIk4oVmkCAU52BOH7HwWw+lAE/LT6UAIcx8f+Hz0ZOkovHSABDgmNFRRpV0pwUAAAAwAc/lUD0QRQABsAOgBQACtAFx46Og9DSg9yJzELcjs8PBkKcgkFDwdyACsyMisyETMrMisyEjkvMzAxZRM2JiYnJgYGBwc+AxceAgcDBgYXBwcmNBMHJyIOAgcGFhYXFjY2NxcOAycuAjc+AzMTFw4CBwYWFzI2NxcGBiMiJjc+AgKIUgYaRTgyWD0K6wZZiZ9MbqpZC08JBxMC6Q91GJwwZVg8BwUfQCw7c1UQPxZPaHtBWpRWBQVhmbZZp3UjUj4GAxgeFy0UDSJOKVVpAQJOddkCBzRUMQEBI0QxAVV/UycBAlqkdP4eOXc3EgE1bwHvlQESLEs4LUEmAQEwWTpsPWZKKAECT45daY1TJP2oPRk6Si8dIAEOCY0VFGlXSnBQ//8AX//oBQoHSwYmACcAAAEHAHUB/AFLAAu2ASgQAQFtVgArNAD//wA3/+oD8gYABiYARwAAAQcAdQElAAAAC7YBKBQBAYxWACs0AP//AF//6AUKB0sGJgAnAAABBwCeAPgBSwALtgErEAEBeFYAKzQA//8AN//qA+YGAAYmAEcAAAEGAJ4iAAALtgErFAEBl1YAKzQA//8AX//oBQoHKgYmACcAAAEHAKIB1wFTAAu2ATEQAQGCVgArNAD//wA3/+oD5gXfBiYARwAAAQcAogEAAAgAC7YBMRQBAaFWACs0AP//AF//6AUKB04GJgAnAAABBwCfAQ4BSwALtgEuEAEBdlYAKzQA//8AN//qA/QGAwYmAEcAAAEGAJ83AAALtgEuFAEBlVYAKzQA//8AJgAABNkHQQYmACgAAAEHAJ8AlQE+AAu2AiUeAQF1VgArNAD//wA4/+gFzwYCBCYASAAAAQcBygTDBQIAC7YDOQEBAABWACs0AP//ACYAAAS8BuoGJgApAAABBwBwAMYBQAALtgQSBwEBsVYAKzQA//8AOv/rA/AFrQYmAEkAAAEGAHA7AwALtgEuCwEB0VYAKzQA//8AJgAABLwHJgYmACkAAAEHAKEA+AE+AAu2BBUHAQFeVgArNAD//wA6/+sD8AXoBiYASQAAAQYAoWwAAAu2ATELAQF+VgArNAD//wAmAAAEvAcdBiYAKQAAAQcAogGeAUYAC7YEGQcBAYFWACs0AP//ADr/6wPwBeAGJgBJAAABBwCiARMACQALtgE1CwEBoVYAKzQAAAUAJv5VBLwFsAADAAcACwAPACUAKUAUCgsLGB8ODw8HAnIQEREDAgIGCHIAKzIRMzIRMysyETMvMzkvMzAxZQchNwEDIxMBByE3AQchNwEXDgIHBhYXMjY3FwYGIyImNz4CA+gj/REiASH99v0C0yL9ciMDUyP9FiQBC3UkUT4GAxgeFy0UDCJNKFZpAgFOdcfHxwTp+lAFsP2gxMQCYMjI+os9GTpKLx0gAQ4JjRUUaVdKcFAAAgA6/nID8ARRACsAQQAlQBMSExMLNDsOchkLB3IsLSQkAAtyACsyETk5KzIrMhI5LzMwMUUuAzc3PgMXHgMHByE3BTc2JiYnJg4CBwcGHgIXFjY3Fw4CNxcOAgcGFhcyNjcXBgYjJiY3PgIB9m+rcDIIBAtUjcB2cZxcHwsO/NQcAj0ECR9SRUtrRicIBAYSNFxEVYs5dC6HnRh0I1I+BgMYHhctFQwiTihWaQIBTnYUAlOPu2opbcufXAMCWpW8ZWetARU/cEgCAkJwgz4oO3RfOwICSzx7RVorbT0YOkowHSABDwiMFhQBaVZKcFD//wAmAAAEvAdBBiYAKQAAAQcAnwDVAT4AC7YEFgcBAXVWACs0AP//ADr/6wQHBgMGJgBJAAABBgCfSgAAC7YBMgsBAZVWACs0AP//AGb/6wUXB0sGJgArAAABBwCeAPoBSwALtgEvEAEBeFYAKzQA////+f5RBEIGAAYmAEsAAAEGAJ5BAAALtgNCGgEBl1YAKzQA//8AZv/rBRcHMwYmACsAAAEHAKEBMgFLAAu2ATEQAQFfVgArNAD////5/lEEQgXoBiYASwAAAQYAoXoAAAu2A0QaAQF+VgArNAD//wBm/+sFFwcqBiYAKwAAAQcAogHYAVMAC7YBNRABAYJWACs0AP////n+UQRCBd8EJgBLAAABBwCiASEACAALtgNIGgEBoVYAKzQA//8AZv32BRcFxwYmACsAAAEHAcoBmP6SAA60ATUFAQG4/5iwVgArNP////n+UQRCBqYEJgBLAAABBwJEATwAfAALtgM/GgEBmFYAKzQA//8AJgAABYUHPgYmACwAAAEHAJ4BFgE+AAu2Aw8LAQF3VgArNAD//wANAAAD9gdfBiYATAAAAQcAngBWAV8AC7YCHgMBASZWACs0AP//ADcAAANJBzEGJgAtAAABBwCl/4UBPgALtgESAwEBdlYAKzQA//8AEwAAAvsF6wYmAI0AAAEHAKX/N//4AAu2ARIDAQGoVgArNAD//wA3AAADLgbqBiYALQAAAQcAcP99AUAAC7YBBgMBAbFWACs0AP//ACMAAALgBaQGJgCNAAABBwBw/y//+gALtgEGAwEB41YAKzQA//8ANwAAAyEHJgYmAC0AAAEHAKH/rwE+AAu2AQkDAQFeVgArNAD//wAjAAAC0wXfBiYAjQAAAQcAof9h//cAC7YBCQMBAZBWACs0AP///47+WwIpBbAGJgAtAAABBgCk5gYAC7YBBQIAAABWACs0AP///3X+VQIKBdgGJgBNAAABBgCkzQAAC7YCEQIAAABWACs0AP//ADcAAAJWBx0GJgAtAAABBwCiAFYBRgALtgENAwEBgVYAKzQA//8AN//oBo8FsAQmAC0AAAAHAC4CMgAA//8AIP5GA/sF2AQmAE0AAAAHAE4B+gAA//8ABP/oBToHNQYmAC4AAAEHAJ4BmgE1AAu2ARcBAQFqVgArNAD///8E/kcCxwXeBiYAnAAAAQcAnv8n/94AC7YBFQABAYJWACs0AP//ACb+SQVyBbAEJgAvAAABBwHKAV7+5QAOtAMXAgEAuP/nsFYAKzT//wAR/jQETgYABiYATwAAAQcBygD0/tAADrQDFwIBAbj/1LBWACs0//8AJgAAA8AHMwYmADAAAAEHAHUAbAEzAAu2AggHAQFcVgArNAD//wAgAAADOQeQBiYAUAAAAQcAdQBsAZAAC7YBBAMBAXFWACs0AP//ACb+BgPABbAEJgAwAAABBwHKASj+ogAOtAIRAgEBuP+XsFYAKzT///+m/gYCFgYABCYAUAAAAQcByv/V/qIADrQBDQIBAbj/l7BWACs0//8AJgAAA9cFsQYmADAAAAEHAcoCywSxAAu2AhEHAAABVgArNAD//wAgAAADagYCBCYAUAAAAQcBygJeBQIAC7YBDQMAAAJWACs0AP//ACYAAAPABbAGJgAwAAAABwCiAV790P//ACAAAAL0BgAEJgBQAAAABwCiAPT9rf//ACYAAAWGBzcGJgAyAAABBwB1AiABNwALtgEKBgEBYVYAKzQA//8ADQAABCUGAAYmAFIAAAEHAHUBWAAAAAu2AhwDAQGgVgArNAD//wAm/gIFhgWwBCYAMgAAAQcBygGV/p4ADrQBEwUBAbj/l7BWACs0//8ADf4GA/IEUQQmAFIAAAEHAcoBAP6iAA60AiUCAQG4/5ewVgArNP//ACYAAAWGBzoGJgAyAAABBwCfATIBNwALtgEQCQEBalYAKzQA//8ADQAABCcGAwYmAFIAAAEGAJ9qAAALtgIiAwEBqVYAKzQA//8ADQAAA/IGAwYmAFIAAAEHAcoAPwUDAAu2AiADAQE6VgArNAD//wBi/+kFIgblBiYAMwAAAQcAcAEQATsAC7YCLhEBAZRWACs0AP//ADj/6QQeBa0GJgBTAAABBgBwUAMAC7YCLgYBAdFWACs0AP//AGL/6QUiByAGJgAzAAABBwChAUEBOAALtgIxEQEBQVYAKzQA//8AOP/pBB4F6AYmAFMAAAEHAKEAggAAAAu2AjEGAQF+VgArNAD//wBi/+kFdgc3BiYAMwAAAQcApgGLATgADbcDAiwRAQFFVgArNDQA//8AOP/pBLUF/wYmAFMAAAEHAKYAygAAAA23AwIsBgEBglYAKzQ0AP//ACYAAATVBzcGJgA2AAABBwB1AaoBNwALtgIeAAEBYVYAKzQA//8AEQAAA4UGAAYmAFYAAAEHAHUAuAAAAAu2AhcDAQGgVgArNAD//wAm/gYE1QWwBCYANgAAAQcBygEp/qIADrQCJxgBAbj/l7BWACs0////n/4HAvIEUwQmAFYAAAEHAcr/zv6jAA60AiACAQG4/5iwVgArNP//ACYAAATVBzoGJgA2AAABBwCfALwBNwALtgIkAAEBalYAKzQA//8AEQAAA4cGAwYmAFYAAAEGAJ/KAAALtgIdAwEBqVYAKzQA//8AJv/qBL0HOAYmADcAAAEHAHUBywE4AAu2AToPAQFPVgArNAD//wAb/+sD+gYABiYAVwAAAQcAdQEtAAAAC7YBNg4BAYxWACs0AP//ACb/6gS9BzgGJgA3AAABBwCeAMcBOAALtgE9DwEBWlYAKzQA//8AG//rA8oGAAYmAFcAAAEGAJ4qAAALtgE5DgEBl1YAKzQA//8AJv48BL0FxgYmADcAAAEHAHkBk///AAu2ATorAAATVgArNAD//wAb/jMDwQRPBiYAVwAAAQcAeQE9//YAC7YBNikAAApWACs0AP//ACb9+wS9BcYGJgA3AAABBwHKAUT+lwAOtAFDKwEBuP+gsFYAKzT//wAb/fIDwQRPBiYAVwAAAQcBygDt/o4ADrQBPykBAbj/l7BWACs0//8AJv/qBL0HOwYmADcAAAEHAJ8A3AE4AAu2AUAPAQFYVgArNAD//wAb/+sD/AYDBiYAVwAAAQYAnz8AAAu2ATwOAQGVVgArNAD//wCd/gAFJQWwBiYAOAAAAQcBygEz/pwADrQCEQIBAbj/jbBWACs0//8AP/38Aq4FQwYmAFgAAAEHAcoAgv6YAA60Ah8RAQG4/6GwVgArNP//AJ3+QQUlBbAGJgA4AAABBwB5AYMABAALtgIIAgEAAFYAKzQA//8AP/49Aq4FQwYmAFgAAAEHAHkA0wAAAAu2AhYRAAAUVgArNAD//wCdAAAFJQc5BiYAOAAAAQcAnwDNATYAC7YCDgMBAWlWACs0AP//AD//7QO/Bn4EJgBYAAABBwHKArMFfgAOtAIaBAEAuP+osFYAKzT//wBY/+gFMQcqBiYAOQAAAQcApQD0ATcAC7YBJAsBAWtWACs0AP//AEr/6AQvBfQGJgBZAAABBgClXwEAC7YCKhEBAapWACs0AP//AFj/6AUxBuMGJgA5AAABBwBwAO0BOQALtgEYCwEBplYAKzQA//8ASv/oBC8FrQYmAFkAAAEGAHBXAwALtgIeEQEB5VYAKzQA//8AWP/oBTEHHwYmADkAAAEHAKEBHgE3AAu2ARsAAQFTVgArNAD//wBK/+gELwXoBiYAWQAAAQcAoQCIAAAAC7YCIREBAZJWACs0AP//AFj/6AUxB5IGJgA5AAABBwCjAYEBbAANtwIBIQABAUdWACs0NAD//wBK/+gELwZbBiYAWQAAAQcAowDrADUADbcDAicRAQGGVgArNDQA//8AWP/oBVMHNgYmADkAAAEHAKYBaAE3AA23AgEWAAEBV1YAKzQ0AP//AEr/6AS8Bf8GJgBZAAABBwCmANEAAAANtwMCHBEBAZZWACs0NAAAAgBY/owFMQWwABUAKwAbQA0eJQELAnIXFhERBglyACsyEjk5KzIvMzAxQTMDDgInLgI3EzMDBhYWFxY2NjcDFw4CBwYWFzI2NxcGBiMmJjc+AgQ89aYXpf+eldprEqb0pQomalthj1gOsXUjUz0FBBgeFywVDSNNKFZpAgFOdQWw/DWd5noDA33hlwPN/DJUh1ICA0uMXP6QPRk6Si8dIAEOCY0VFQFpVktvUQAAAwBK/lUELwQ6AAQAGwAxACFAESQrD3IBEQZyHB0dBAQYCwtyACsyMhEzETMrMisyMDFBEzMDIxM3DgMnLgM3EzMDBh4CFxY2NgMXDgIHBhYXMjY3FwYGIyImNz4CAraN7LzeY04MQG6kb1l5RhcIdet2AwYcNy1ggUsCdSNSPwUEGR0XLRUNI00pVmgBAU91AQsDL/vGAeADYreQUgMDQXCQUAK7/UInSDojAgNRjv6xPRk6Si8dIAEOCY0VFGlXSnBQ//8AtQAABzoHNwYmADsAAAEHAJ4BwQE3AAu2BBkVAQFsVgArNAD//wB5AAAF9AYABiYAWwAAAQcAngEEAAAAC7YEGRUBAatWACs0AP//AKEAAAVQBzYGJgA9AAABBwCeAL0BNgALtgEMAgEBa1YAKzQA////vP5HBBkGAAYmAF0AAAEGAJ4bAAALtgIcAQEBq1YAKzQA//8AoQAABVAHBQYmAD0AAAEHAGoA6QE2AA23AgEeAgEBd1YAKzQ0AP///+UAAATrBzcGJgA+AAABBwB1Ab0BNwALtgMODQEBYVYAKzQA////5gAAA+8GAAYmAF4AAAEHAHUBIgAAAAu2Aw4NAQGgVgArNAD////lAAAE6wcWBiYAPgAAAQcAogGYAT8AC7YDFwgBAXZWACs0AP///+YAAAPkBd8GJgBeAAABBwCiAP0ACAALtgMXCAEBtVYAKzQA////5QAABOsHOgYmAD4AAAEHAJ8AzwE3AAu2AxQIAQFqVgArNAD////mAAAD8QYDBiYAXgAAAQYAnzQAAAu2AxQIAQGpVgArNAD///+NAAAHbwdCBiYAgQAAAQcAdQLwAUIAC7YGGQMBAWxWACs0AP//AA7/6gZfBgEGJgCGAAABBwB1Am4AAQALtgNfDwEBjVYAKzQA//8AFv+iBZAHgAYmAIMAAAEHAHUCIwGAAAu2AzQWAQGWVgArNAD//wAq/3UEMAX9BiYAiQAAAQcAdQE0//0AC7YDMAoBAYtWACs0AP///5b//wQWBI0GJgJAAAAABwI2/wX/a////5b//wQWBI0GJgJAAAAABwI2/wX/a///AGMAAAReBI0GJgHoAAAABgI2Jbr///+aAAAEAQYeBiYCQwAAAQcARADLAB4AC7YDEAcBAWtWACs0AP///5oAAAQ6Bh4GJgJDAAABBwB1AW0AHgALtgMOAwEBa1YAKzQA////mgAABAkGHgYmAkMAAAEGAJ5pHgALtgMTAwEBa1YAKzQA////mgAABDsGEgYmAkMAAAEGAKV3HwALtgMbAwEBa1YAKzQA////mgAABCIF7QYmAkMAAAEHAGoAlQAeAA23BAMXAwEBa1YAKzQ0AP///5oAAAQBBnkGJgJDAAABBwCjAQQAUwANtwQDGQMBAVFWACs0NAD///+aAAAETgaYBiYCQwAAAAcCNwD0//7//wA5/jwERASgBiYCQQAAAAcAeQFi/////wAJAAAD+wYeBiYCOAAAAQcARACgAB4AC7YEEgcBAWxWACs0AP//AAkAAAQPBh4GJgI4AAABBwB1AUIAHgALtgQQBwEBbFYAKzQA//8ACQAAA/sGHgYmAjgAAAEGAJ4+HgALtgQWBwEBbFYAKzQA//8ACQAAA/sF7QYmAjgAAAEGAGpqHgANtwUEGQcBAYRWACs0NAD//wAaAAAB3wYeBiYB8wAAAQYARIYeAAu2AQYDAQFrVgArNAD//wAaAAAC9AYeBiYB8wAAAQYAdSceAAu2AQQDAQFrVgArNAD//wAaAAACwwYeBiYB8wAAAQcAnv8jAB4AC7YBCQMBAXZWACs0AP//ABoAAALdBe0GJgHzAAABBwBq/1AAHgANtwIBDQMBAYRWACs0NAD//wAJAAAEqAYSBiYB7gAAAQcApQCYAB8AC7YBGAYBAXZWACs0AP//ADv/7QRYBh4GJgHtAAABBwBEANkAHgALtgIuEQEBW1YAKzQA//8AO//tBFgGHgYmAe0AAAEHAHUBegAeAAu2AiwRAQFbVgArNAD//wA7/+0EWAYeBiYB7QAAAQYAnnceAAu2AjERAQFbVgArNAD//wA7/+0EWAYSBiYB7QAAAQcApQCGAB8AC7YCMREBAW9WACs0AP//ADv/7QRYBe0GJgHtAAABBwBqAKMAHgANtwMCNREBAXRWACs0NAD//wA4/+wEZAYeBiYB5wAAAQcARAC/AB4AC7YBGAsBAWtWACs0AP//ADj/7ARkBh4GJgHnAAABBwB1AWEAHgALtgEWCwEBa1YAKzQA//8AOP/sBGQGHgYmAecAAAEGAJ5dHgALtgEbCwEBa1YAKzQA//8AOP/sBGQF7QYmAecAAAEHAGoAiQAeAA23AgEfCwEBhFYAKzQ0AP//AGwAAASCBh4GJgHjAAABBwB1ATkAHgALtgMOCQEBa1YAKzQA////mgAABCEFywYmAkMAAAEGAHBwIQALtgMQAwEBsFYAKzQA////mgAABBMGBgYmAkMAAAEHAKEAoQAeAAu2AxMDAQFdVgArNAAABP+a/lUEAQSNAAQACQANACMAIUAPDQwMAxYdCAN9Dw4FBQESAD8zETMzPzMvMxI5LzMwMUEBIwEzEwM3MxMDByE3ARcOAgcGFhcyNjcXBgYjIiY3PgICgP4T+QKSpky3BJv7qyD9eSACj3YkUj4GAxkdFy0UDSJOKFZpAQJOdgOT/G0EjftzA6vi+3MBsLW1/os9GTpKLx0gAQ4JjRUUaVdKcFAA//8AOf/tBEQGHgYmAkEAAAEHAHUBbQAeAAu2ASgQAQFbVgArNAD//wA5/+0ERAYeBiYCQQAAAQYAnmoeAAu2AS0QAQFbVgArNAD//wA5/+0ERAX9BiYCQQAAAQcAogFIACYAC7YBMRABAXBWACs0AP//ADn/7QREBiEGJgJBAAABBgCffx4AC7YBLhABAWRWACs0AP//AAn//wQWBiEGJgJAAAABBgCf+R4AC7YCJB0BAXRWACs0AP//AAkAAAP7BcsGJgI4AAABBgBwRSEAC7YEEgcBAbBWACs0AP//AAkAAAP7BgYGJgI4AAABBgChdh4AC7YEFQcBAV5WACs0AP//AAkAAAP7Bf0GJgI4AAABBwCiAR0AJgALtgQZBwEBgFYAKzQAAAUACf5VA/sEjQADAAcACwAPACUAI0AQGB8LCgoGDw4HfREQEAUGEgA/MzMRMz8zMxI5LzMvMzAxZQchNxMDIxMBByE3AQchNxMXDgIHBhYXMjY3FwYGIyImNz4CA1Qi/Xgi88rsywKEIv3LIgLYIv15Iul1I1I/BQMYHhcsFgwjTSlVaQIBTna/v78DzvtzBI3+Lb+/AdPAwPuuPRk6Si8dIAEOCY0VFGlXSnBQ//8ACQAABBEGIQYmAjgAAAEGAJ9UHgALtgQWBwEBdFYAKzQA//8AP//vBE4GHgYmAfUAAAEGAJ5xHgALtgEwEAEBZlYAKzQA//8AP//vBE4GBgYmAfUAAAEHAKEAqQAeAAu2ATAQAQFNVgArNAD//wA//+8ETgX9BiYB9QAAAQcAogFQACYAC7YBNBABAXBWACs0AP//AD/9+wROBKAGJgH1AAABBwHKASn+lwAOtAE0BQEBuP+ZsFYAKzT//wAJAAAEqQYeBiYB9AAAAQYAnn8eAAu2AxEHAQF2VgArNAD//wAOAAAC9gYSBiYB8wAAAQcApf8yAB8AC7YBCQMBAX9WACs0AP//ABoAAALbBcsGJgHzAAABBwBw/yoAIQALtgEGAwEBsFYAKzQA//8AGgAAAs4GBgYmAfMAAAEHAKH/XAAeAAu2AQkDAQFdVgArNAD///+W/lUBzwSNBiYB8wAAAAYApO4A//8AGgAAAgIF/QYmAfMAAAEGAKICJgALtgENAwEBgFYAKzQA////8//tBJgGHgYmAfIAAAEHAJ4A+AAeAAu2ARkBAQF2VgArNAD//wAJ/gMEnQSNBiYB8QAAAAcBygDP/p///wAJAAADMQYeBiYB8AAAAQYAdR0eAAu2AggHAQFrVgArNAD//wAJ/gQDMQSNBiYB8AAAAQcBygDN/qAADrQCEQYBAbj/lbBWACs0//8ACQAAAzEEkAYmAfAAAAAHAcoCJAOQ//8ACQAAAzEEjQYmAfAAAAAHAKIA8P1B//8ACQAABKgGHgYmAe4AAAEHAHUBjQAeAAu2AQoGAQFrVgArNAD//wAJ/f0EqASNBiYB7gAAAAcBygEy/pn//wAJAAAEqAYhBiYB7gAAAQcAnwCfAB4AC7YBEAYBAXRWACs0AP//ADv/7QRYBcsGJgHtAAABBgBwfiEAC7YCLhEBAaBWACs0AP//ADv/7QRYBgYGJgHtAAABBwChAK8AHgALtgIxEQEBTVYAKzQA//8AO//tBOMGHQYmAe0AAAEHAKYA+AAeAA23AwIwEQEBUVYAKzQ0AP//AAkAAAQWBh4GJgHqAAABBwB1ASIAHgALtgIfAAEBa1YAKzQA//8ACf4EBBYEjQYmAeoAAAAHAcoA1f6g//8ACQAABBYGIQYmAeoAAAEGAJ80HgALtgIlAAEBdFYAKzQA//8AD//uBBsGHgYmAekAAAEHAHUBTgAeAAu2AToPAQFbVgArNAD//wAP/+4D/gYeBiYB6QAAAQYAnkoeAAu2AT8PAQFmVgArNAD//wAP/j0D/gSeBiYB6QAAAAcAeQFIAAD//wAP/+4EHAYhBiYB6QAAAQYAn18eAAu2AUAPAQFmVgArNAD//wBj/gMEXgSNBiYB6AAAAQcBygDj/p8ADrQCEQIBAbj/kLBWACs0//8AYwAABF4GIQYmAegAAAEGAJ9NHgALtgIOBwEBdFYAKzQA//8AY/5EBF4EjQYmAegAAAAHAHkBNAAH//8AOP/sBGQGEgYmAecAAAEGAKVsHwALtgEbCwEBf1YAKzQA//8AOP/sBGQFywYmAecAAAEGAHBkIQALtgEYCwEBsFYAKzQA//8AOP/sBGQGBgYmAecAAAEHAKEAlQAeAAu2ARsLAQFdVgArNAD//wA4/+wEZAZ5BiYB5wAAAQcAowD4AFMADbcCASELAQFRVgArNDQA//8AOP/sBMkGHQYmAecAAAEHAKYA3gAeAA23AgEaCwEBYVYAKzQ0AAACADj+hQRkBI0AFQArABpADB4lFxYWEQYLcgwAfQA/MisyMhEzLzMwMUEzAw4CJy4CNxMzAwYWFhcWNjY3AxcOAgcGFhcyNjcXBgYjIiY3PgIDd+2CEpLehXvCZg6B64IIJFhFSXBIC5V1I1I+BgMYHhctFA0iTihWaQIBTnUEjf0AhrxfAwJiuIIDAPz/Q2I3AgI0ZEj+3z0ZOkovHSABDgmNFRRpV0pwUAD//wCLAAAGHgYeBiYB5QAAAQcAngEXAB4AC7YEGwoBAXZWACs0AP//AGwAAASCBh4GJgHjAAABBgCeNR4AC7YDEwkBAXZWACs0AP//AGwAAASCBe0GJgHjAAABBgBqYR4ADbcEAxcJAQGEVgArNDQA////1gAABCoGHgYmAeIAAAEHAHUBPAAeAAu2Aw4NAQFrVgArNAD////WAAAEKgX9BiYB4gAAAQcAogEXACYAC7YDFw0BAYBWACs0AP///9YAAAQqBiEGJgHiAAABBgCfTh4AC7YDFA0BAXRWACs0AP///6MAAASrBj8GJgAlAAABBgCusP8ADrQDDgMAALj/PrBWACs0////ugAABSAGQQQmAClkAAEHAK7+hAABAA60BBAHAAC4/z+wVgArNP///8IAAAXpBkAEJgAsZAAABwCu/owAAP///8YAAAKNBkIEJgAtZAABBwCu/pAAAgAOtAEEAwAAuP9BsFYAKzT//wAn/+kFNgY/BCYAMxQAAQcArv7x//8ADrQCLBEAALj/KrBWACs0////uQAABbQGPwQmAD1kAAEHAK7+g///AAu2AQoIAACOVgArNAD//wAeAAAFAwY/BCYAuhQAAQcArv7+//8ADrQDNh0AALj/KrBWACs0//8ACf/1AzoGmwYmAMMAAAEHAK//Gv/rABBACQMCASsAAQGiVgArNDQ0////owAABKsFsAYGACUAAP//ACb//wS3BbAGBgAmAAD//wAmAAAEvAWwBgYAKQAA////5QAABOsFsAYGAD4AAP//ACYAAAWFBbAGBgAsAAD//wA3AAACKQWwBgYALQAA//8AJgAABXIFsAYGAC8AAP//ACYAAAbOBbAGBgAxAAD//wAmAAAFhgWwBgYAMgAA//8AYv/pBSIFxwYGADMAAP//ACYAAAT6BbAGBgA0AAD//wCdAAAFJQWwBgYAOAAA//8AoQAABVAFsAYGAD0AAP///8AAAAVGBbAGBgA8AAD//wA3AAADMAcNBiYALQAAAQcAav+jAT4ADbcCARkDAQGDVgArNDQA//8AoQAABVAHBQYmAD0AAAEHAGoA6QE2AA23AgEeAgEBd1YAKzQ0AP//ADv/5wQyBjwGJgC7AAABBwCuAT///AALtgNCBgEBmlYAKzQA//8AKP/qBAQGOwYmAL8AAAEHAK4BDP/7AAu2AkArAQGaVgArNAD//wAR/mED+wY8BiYAwQAAAQcArgEU//wAC7YCHQMBAa5WACs0AP//AGb/9QKOBiYGJgDDAAABBgCu/eYAC7YBEgABAZlWACs0AP//AFf/5wQ4BqMGJgDLAAABBgCvGPMAEEAJAwIBOA8BAaJWACs0NDT//wAhAAAEkAQ6BgYAjgAA//8AOP/pBB4EUQYGAFMAAP///97+YARZBDoGBgB2AAD//wBkAAAEEgQ6BgYAWgAA////n/5PBGcESAYGAoAAAP//AET/9QL6BboGJgDDAAABBwBq/23/6wANtwIBJwABAaJWACs0NAD//wBX/+cD+AXCBiYAywAAAQYAamvzAA23AgE0DwEBolYAKzQ0AP//ADj/6QQeBjwGJgBTAAABBwCuAQX//AALtgIsBgEBmlYAKzQA//8AV//nA+4GLgYmAMsAAAEHAK4A+//uAAu2AR8PAQGZVgArNAD//wBS/+cGBAYsBiYAzgAAAQcArgIT/+wAC7YCQB8BAZZWACs0AP//ACYAAAS8Bw0GJgApAAABBwBqAOsBPgANtwUEJQcBAYNWACs0NAD//wArAAAErAc+BiYAsQAAAQcAdQG6AT4AC7YBBgUBAWxWACs0AAABACb/6gS9BcYAOQAbQA0KJg82MSsJchgUDwNyACvMMyvMMxI5OTAxQTYuAicuAzc+AxceAgcjNiYmJyYGBgcGHgIXHgMHDgMnLgM3FwYeAjMWNjYDUAkoS14uTJR3QgYIZ6C+XoXQdgX0BjFoTUWAWQsILVBcKFGVdD4HCWaevmFnt4pLBPQEIUZlP0SBWwF+O1E3JhEbSmaLXWmbZjECA2zGiExtPQECLV5KNEw0JA4cTWqRYWubYi4CAT53qm0BQGNCIgIqWwD//wA3AAACKQWwBgYALQAA//8ANwAAAzAHDQYmAC0AAAEHAGr/owE+AA23AgEZAwEBg1YAKzQ0AP//AAT/6ARdBbAGBgAuAAD//wArAAAFdgWwBgYCPAAA//8AJgAABXIHMwYmAC8AAAEHAHUBpgEzAAu2Aw4DAQFbVgArNAD//wCZ/+gFVgcmBiYA3gAAAQcAoQEVAT4AC7YCHgEBAV5WACs0AP///6MAAASrBbAGBgAlAAD//wAm//8EtwWwBgYAJgAA//8AKwAABKwFsAYGALEAAP//ACYAAAS8BbAGBgApAAD//wAlAAAFfAcmBiYA3AAAAQcAoQFTAT4AC7YBDwEBAV5WACs0AP//ACYAAAbOBbAGBgAxAAD//wAmAAAFhQWwBgYALAAA//8AYv/pBSIFxwYGADMAAP//ACsAAAWDBbAGBgC2AAD//wAmAAAE+gWwBgYANAAA//8AX//oBQoFxwYGACcAAP//AJ0AAAUlBbAGBgA4AAD////AAAAFRgWwBgYAPAAA//8AHP/pA9EEUAYGAEUAAP//ADr/6wPwBFEGBgBJAAD//wAXAAAERQXbBiYA8AAAAQcAoQCW//MAC7YBDwEBAX1WACs0AP//ADj/6QQeBFEGBgBTAAD////I/mAEEARRBgYAVAAAAAEAN//qA+YEUQAnABNACQAJHRQHcgkLcgArKzIRMzAxZRY2Njc3DgInLgM3Nz4DFx4CByc0JiYnJg4CBwcGHgIB4DtiQQ3fDYnLcXOjZCcKBAxTi753eK5cAd0lTz9KaUUnBwQFAyJPqwEuVjgBdKxdAgJamMFoJG/GmVYDAmq3dQE4YT0CAj5qfz4jNXlqRAD///+8/kcEGQQ6BgYAXQAA////ugAABBIEOgYGAFwAAP//ADr/6wPwBc8GJgBJAAABBgBqYAAADbcCAUELAQGjVgArNDQA//8AFgAAA5UF8wYmAOwAAAEHAHUAyP/zAAu2AQYFAQGLVgArNAD//wAb/+sDwQRPBgYAVwAA//8AIAAAAgoF2AYGAE0AAP//ACMAAALiBcYGJgCNAAABBwBq/1X/9wANtwIBGQMBAbVWACs0NAD///8C/kYCAQXYBgYATgAA//8AIgAABH4F8gYmAPEAAAEHAHUBSv/yAAu2Aw4DAQGKVgArNAD///+8/kcEGQXoBiYAXQAAAQYAoVMAAAu2Ah4BAQGSVgArNAD//wC1AAAHOgc3BiYAOwAAAQcARAIjATcAC7YEGBUBAWFWACs0AP//AHkAAAX0BgAGJgBbAAABBwBEAWYAAAALtgQYFQEBoFYAKzQA//8AtQAABzoHNwYmADsAAAEHAHUCxAE3AAu2BBYBAQFhVgArNAD//wB5AAAF9AYABiYAWwAAAQcAdQIIAAAAC7YEFgEBAaBWACs0AP//ALUAAAc6BwYGJgA7AAABBwBqAe0BNwANtwUEKxUBAXhWACs0NAD//wB5AAAF9AXPBiYAWwAAAQcAagExAAAADbcFBCsVAQG3VgArNDQA//8AoQAABVAHNgYmAD0AAAEHAEQBHwE2AAu2AQsCAQFgVgArNAD///+8/kcEGQYABiYAXQAAAQYARH0AAAu2AhsBAQGgVgArNAD//wCRA/4BlQYABgYACwAA//8AnQP4ArwGAAYGAAYAAP//ADP/8AQqBbAEJgAFAAAABwAFAg4AAP///wT+RwL5BeEGJgCcAAABBwCf/zz/3gALtgEYAAEBgFYAKzQA//8AjQQEAfoGAAYGAYUAAP//ACYAAAbOBzcGJgAxAAABBwB1AsEBNwALtgMRAAEBYVYAKzQA//8ADwAABmEGAAYmAFEAAAEHAHUCmwAAAAu2AzMDAQGgVgArNAD///+j/nAEqwWwBiYAJQAAAQcApwFpAAQAELUEAxEFAQG4/7WwVgArNDT//wAc/nUD0QRQBiYARQAAAQcApwCkAAkAELUDAj4xAQG4/8mwVgArNDT//wAmAAAEvAc+BiYAKQAAAQcARAEhAT4AC7YEEgcBAWxWACs0AP//ACUAAAV8Bz4GJgDcAAABBwBEAX0BPgALtgEMAQEBbFYAKzQA//8AOv/rA/AGAAYmAEkAAAEHAEQAlgAAAAu2AS4LAQGMVgArNAD//wAXAAAERQXzBiYA8AAAAQcARADA//MAC7YBDAEBAYtWACs0AP//AHYAAAXRBbAGBgC5AAD//wA//iUFXwQ8BgYAzQAA//8AqAAABWEG/QYmARkAAAEHAKwEXAEPAA23AwIVEwEBLVYAKzQ0AP//AHUAAARKBdAGJgEaAAABBwCsA8f/4gANtwMCGRcBAXtWACs0NAD//wA4/kcIgARRBCYAUwAAAAcAXQRnAAD//wBi/kcJcgXHBCYAMwAAAAcAXQVZAAD//wAf/jcEpAXGBiYA2wAAAQcCYQFz/50AC7YCQioAAGRWACs0AP//ABf+OAO9BFAGJgDvAAABBwJhARr/ngALtgI/KQAAZVYAKzQA//8AX/46BQoFxwYmACcAAAEHAmEBs/+gAAu2ASsFAABkVgArNAD//wA3/joD5gRRBiYARwAAAQcCYQE3/6AAC7YBKwkAAGRWACs0AP//AKEAAAVQBbAGBgA9AAD//wB1/l8EMAQ6BgYAvQAA//8ANwAAAikFsAYGAC0AAP///6QAAAfoByYGJgDaAAABBwChAlABPgALtgUdDQEBXlYAKzQA////sAAABoEF2wYmAO4AAAEHAKEBi//zAAu2BR0NAQF9VgArNAD//wA3AAACKQWwBgYALQAA////owAABKsHHwYmACUAAAEHAKEBKgE3AAu2AxMHAQFTVgArNAD//wAc/+kD9QXoBiYARQAAAQcAoQCDAAAAC7YCQA8BAX5WACs0AP///6MAAASrBwYGJgAlAAABBwBqAR4BNwANtwQDIwcBAXhWACs0NAD//wAc/+kEBAXPBiYARQAAAQYAancAAA23AwJQDwEBo1YAKzQ0AP///40AAAdvBbAGBgCBAAD//wAO/+oGXwRRBgYAhgAA//8AJgAABLwHJgYmACkAAAEHAKEA+AE+AAu2BBUHAQFeVgArNAD//wA6/+sD8AXoBiYASQAAAQYAoWwAAAu2ATELAQF+VgArNAD//wBL/+kFLQbeBiYBWAAAAQcAagD3AQ8ADbcCAUIAAQFBVgArNDQA//8ANP/qA9oEUQYGAJ0AAP//ADT/6gP4BdAGJgCdAAABBgBqawEADbcCAUAAAQGiVgArNDQA////pAAAB+gHDQYmANoAAAEHAGoCRAE+AA23BgUtDQEBg1YAKzQ0AP///7AAAAaBBcIGJgDuAAABBwBqAX//8wANtwYFLQ0BAaJWACs0NAD//wAf/+oEpAcaBiYA2wAAAQcAagDfAUsADbcDAlQVAQGEVgArNDQA//8AF//qA98FzgYmAO8AAAEGAGpS/wANtwMCURQBAaNWACs0NAD//wAlAAAFfAbqBiYA3AAAAQcAcAEiAUAAC7YBDAgBAbFWACs0AP//ABcAAARFBaAGJgDwAAABBgBwZfYAC7YBDAgBAdBWACs0AP//ACUAAAV8Bw0GJgDcAAABBwBqAUcBPgANtwIBHwEBAYNWACs0NAD//wAXAAAERQXCBiYA8AAAAQcAagCK//MADbcCAR8BAQGiVgArNDQA//8AYv/pBSIHBwYmADMAAAEHAGoBNQE4AA23AwJBEQEBZlYAKzQ0AP//ADj/6QQeBc8GJgBTAAABBgBqdQAADbcDAkEGAQGjVgArNDQA//8AYf/pBRsFxwYGARcAAP//ADT/6AQdBFIGBgEYAAD//wBh/+kFGwcJBiYBFwAAAQcAagFGAToADbcEA08AAQFqVgArNDQA//8ANP/oBB0F0AYmARgAAAEGAGp2AQANtwQDQQABAaVWACs0NAD//wBI/+kE8gcbBiYA5wAAAQcAagEXAUwADbcDAkIeAQGFVgArNDQA//8AIP/oA+YFzwYmAP8AAAEGAGpZAAANtwMCQQkBAaNWACs0NAD//wCZ/+gFVgbqBiYA3gAAAQcAcADkAUAAC7YCGxgBAbFWACs0AP///7z+RwQZBa0GJgBdAAABBgBwIgMAC7YCGxgBAeVWACs0AP//AJn/6AVWBw0GJgDeAAABBwBqAQkBPgANtwMCLgEBAYNWACs0NAD///+8/kcEGQXPBiYAXQAAAQYAakcAAA23AwIuAQEBt1YAKzQ0AP//AJn/6AVWBz0GJgDeAAABBwCmAV4BPgANtwMCGQEBAWJWACs0NAD///+8/kcEhwX/BiYAXQAAAQcApgCcAAAADbcDAhkBAQGWVgArNDQA//8AxAAABV0HDQYmAOEAAAEHAGoBSAE+AA23AwIvFgEBg1YAKzQ0AP//AG0AAAQYBcIGJgD5AAABBgBqafMADbcDAi0DAQGiVgArNDQA//8ALP//BrkHDQYmAOUAAAEHAGoB7wE+AA23AwIyHAEBg1YAKzQ0AP//ACP//wX4BcIGJgD9AAABBwBqAXL/8wANtwMCMhwBAaJWACs0NAD//wA4/+gEhwYABgYASAAA////o/6YBKsFsAYmACUAAAEHAK0E5AADAA60AxEFAQG4/3WwVgArNP//ABz+nQPRBFAGJgBFAAABBwCtBB4ACAAOtAI+MQEBuP+JsFYAKzT///+jAAAEqwe5BiYAJQAAAQcAqwUTAT0AC7YDDwcBAXFWACs0AP//ABz/6QPRBoMGJgBFAAABBwCrBGwABwALtgI8DwEBnFYAKzQA////owAABgsHqwYmACUAAAEHAkcA7gEhAA23BAMSBwEBYVYAKzQ0AP//ABz/6QVjBnQGJgBFAAABBgJHRuoADbcDAkEPAQGMVgArNDQA////owAABKsHqQYmACUAAAEHAkgA8QEqAA23BAMQBwEBXFYAKzQ0AP//ABz/6QPqBnIGJgBFAAABBgJISfMADbcDAj0PAQGHVgArNDQA////owAABXsH3AYmACUAAAEHAkkA7AEVAA23BAMTAwEBUFYAKzQ0AP//ABz/6QTUBqUGJgBFAAABBgJJRd4ADbcDAkAPAQF7VgArNDQA////owAABKsH0wYmACUAAAEHAkoA6wEHAA23BAMQBwEBOlYAKzQ0AP//ABz/6QPnBpwGJgBFAAABBgJKRNAADbcDAj0PAQFlVgArNDQA////o/6YBKsHNwYmACUAAAAnAJ4A8gE3AQcArQTkAAMAF7QEGgUBAbj/dbdWAxEHAQFsVgArNCs0AP//ABz+nQPrBgAGJgBFAAAAJgCeSwABBwCtBB4ACAAXtANHMQEBuP+Jt1YCPg8BAZdWACs0KzQA////owAABKsHrgYmACUAAAEHAkwBGAEyAA23BAMTBwEBXFYAKzQ0AP//ABz/6QPtBngGJgBFAAABBgJMcfwADbcDAkAPAQGHVgArNDQA////owAABKsHrgYmACUAAAEHAkUBGAEyAA23BAMTBwEBXFYAKzQ0AP//ABz/6QPuBngGJgBFAAABBgJFcfwADbcDAkAPAQGHVgArNDQA////owAABKsIPQYmACUAAAEHAk0BFwE2AA23BAMTBwEBblYAKzQ0AP//ABz/6QPlBwYGJgBFAAABBgJNcP8ADbcDAkAPAQGZVgArNDQA////owAABKsIFQYmACUAAAEHAmABGwE8AA23BAMTBwEBb1YAKzQ0AP//ABz/6QP3Bt4GJgBFAAABBgJgdAUADbcDAkAPAQGaVgArNDQA////o/6YBKsHHwYmACUAAAAnAKEBKgE3AQcArQTkAAMAF7QEIAUBAbj/dbdWAxMHAQFTVgArNCs0AP//ABz+nQP1BegGJgBFAAAAJwChAIMAAAEHAK0EHgAIABe0A00xAQG4/4m3VgJADwEBflYAKzQrNAD//wAm/p8EvAWwBiYAKQAAAQcArQSoAAoADrQEEwIBAbj/f7BWACs0//8AOv6VA/AEUQYmAEkAAAEHAK0EdQAAAA60AS8AAQG4/4mwVgArNP//ACYAAAS8B8AGJgApAAABBwCrBOABRAALtgQRBwEBfFYAKzQA//8AOv/rA/AGgwYmAEkAAAEHAKsEVQAHAAu2AS0LAQGcVgArNAD//wAmAAAEvAcxBiYAKQAAAQcApQDOAT4AC7YEHgcBAXZWACs0AP//ADr/6wQHBfQGJgBJAAABBgClQwEAC7YBOgsBAZZWACs0AP//ACYAAAXYB7IGJgApAAABBwJHALsBKAANtwUEFAcBAWxWACs0NAD//wA6/+sFTQZ1BiYASQAAAQYCRzDrAA23AgEwCwEBjFYAKzQ0AP//ACYAAAS8B7AGJgApAAABBwJIAL4BMQANtwUEEgcBAWdWACs0NAD//wA6/+sD8AZzBiYASQAAAQYCSDP0AA23AgEuCwEBh1YAKzQ0AP//ACYAAAVJB+MGJgApAAABBwJJALoBHAANtwUEFQcBAVtWACs0NAD//wA6/+sEvgamBiYASQAAAQYCSS/fAA23AgExCwEBe1YAKzQ0AP//ACYAAAS8B9oGJgApAAABBwJKALkBDgANtwUEEgcBAUVWACs0NAD//wA6/+sD8AadBiYASQAAAQYCSi3RAA23AgEuCwEBZVYAKzQ0AP//ACb+nwS8Bz4GJgApAAAAJwCeAL8BPgEHAK0EqAAKABe0BRwCAQG4/3+3VgQTBwEBd1YAKzQrNAD//wA6/pUD8AYABiYASQAAACYAnjQAAQcArQR1AAAAF7QCOAABAbj/ibdWAS8LAQGXVgArNCs0AP//ADcAAALTB8AGJgAtAAABBwCrA5cBRAALtgEFAwEBfFYAKzQA//8AIwAAAoUGegYmAI0AAAEHAKsDSf/+AAu2AQUDAQGuVgArNAD//////psCKQWwBiYALQAAAQcArQNeAAYADrQBBwIBAbj/frBWACs0////4/6fAgoF2AYmAE0AAAEHAK0DQgAKAA60AhMCAQG4/3+wVgArNP//AGL+lQUiBccGJgAzAAABBwCtBPQAAAAOtAIvBgEBuP+JsFYAKzT//wA4/pEEHgRRBiYAUwAAAQcArQSB//wADrQCLxEBAbj/iLBWACs0//8AYv/pBSIHuwYmADMAAAEHAKsFKgE/AAu2Ai0RAQFfVgArNAD//wA4/+kEHgaDBiYAUwAAAQcAqwRqAAcAC7YCLQYBAZxWACs0AP//AGL/6QYjB6wGJgAzAAABBwJHAQYBIgANtwMCMBEBAU9WACs0NAD//wA4/+kFYgZ0BiYAUwAAAQYCR0XqAA23AwIwBgEBjFYAKzQ0AP//AGL/6QUiB6oGJgAzAAABBwJIAQgBKwANtwMCLhEBAUpWACs0NAD//wA4/+kEHgZyBiYAUwAAAQYCSEjzAA23AwIuBgEBh1YAKzQ0AP//AGL/6QWSB90GJgAzAAABBwJJAQMBFgANtwMCMREBAT5WACs0NAD//wA4/+kE0walBiYAUwAAAQYCSUTeAA23AwIxBgEBe1YAKzQ0AP//AGL/6QUiB9QGJgAzAAABBwJKAQMBCAANtwMCLhEBAShWACs0NAD//wA4/+kEHgacBiYAUwAAAQYCSkPQAA23AwIuBgEBZVYAKzQ0AP//AGL+lQUiBzgGJgAzAAAAJwCeAQoBOAEHAK0E9AAAABe0AzgGAQG4/4m3VgIvEQEBWlYAKzQrNAD//wA4/pEEHgYABiYAUwAAACYAnkkAAQcArQSB//wAF7QDOBEBAbj/iLdWAi8GAQGXVgArNCs0AP//AFz/6QYhBzUGJgCYAAABBwB1AgwBNQALtgM6HAEBR1YAKzQA//8ANP/pBPAGAAYmAJkAAAEHAHUBXQAAAAu2AzYQAQGMVgArNAD//wBc/+kGIQc1BiYAmAAAAQcARAFqATUAC7YDPBwBAUdWACs0AP//ADT/6QTwBgAGJgCZAAABBwBEALsAAAALtgM4EAEBjFYAKzQA//8AXP/pBiEHuAYmAJgAAAEHAKsFKQE8AAu2AzscAQFXVgArNAD//wA0/+kE8AaDBiYAmQAAAQcAqwR6AAcAC7YDNxABAZxWACs0AP//AFz/6QYhBykGJgCYAAABBwClARcBNgALtgNIHAEBUVYAKzQA//8ANP/pBPAF9AYmAJkAAAEGAKVoAQALtgNEEAEBllYAKzQA//8AXP6VBiEGLQYmAJgAAAEHAK0E3gAAAA60Az0QAQG4/4mwVgArNP//ADT+iwTwBKoGJgCZAAABBwCtBHT/9gAOtAM5GwEBuP9/sFYAKzT//wBY/pUFMQWwBiYAOQAAAQcArQTNAAAADrQBGQYBAbj/ibBWACs0//8ASv6VBC8EOgYmAFkAAAEHAK0EHgAAAA60Ah8LAQG4/4mwVgArNP//AFj/6AUxB7kGJgA5AAABBwCrBQcBPQALtgEXAAEBcVYAKzQA//8ASv/oBC8GgwYmAFkAAAEHAKsEcQAHAAu2Ah0RAQGwVgArNAD//wBY/+kGpAdCBiYAmgAAAQcAdQIPAUIAC7YCIAoBAWxWACs0AP//AEr/6AVZBesGJgCbAAABBwB1AVf/6wALtgMmGwEBi1YAKzQA//8AWP/pBqQHQgYmAJoAAAEHAEQBbQFCAAu2AiIKAQFsVgArNAD//wBK/+gFWQXrBiYAmwAAAQcARAC2/+sAC7YDKBsBAYtWACs0AP//AFj/6QakB8UGJgCaAAABBwCrBSwBSQALtgIhCgEBfFYAKzQA//8ASv/oBVkGbgYmAJsAAAEHAKsEdf/yAAu2AycbAQGbVgArNAD//wBY/+kGpAc2BiYAmgAAAQcApQEaAUMAC7YCLhUBAXZWACs0AP//AEr/6AVZBd8GJgCbAAABBgClY+wAC7YDNBsBAZVWACs0AP//AFj+jAakBgMGJgCaAAABBwCtBO7/9wAOtAIjEAEBuP+AsFYAKzT//wBK/pUFWQSWBiYAmwAAAQcArQRrAAAADrQDKRUBAbj/ibBWACs0//8Aof6nBVAFsAYmAD0AAAEHAK0EpQASAA60AQwGAQG4/3awVgArNP///7z+DwQZBDoGJgBdAAABBwCtBQ3/egAOtAIiCAAAuP+5sFYAKzT//wChAAAFUAe5BiYAPQAAAQcAqwTeAT0AC7YBCgIBAXBWACs0AP///7z+RwQZBoMGJgBdAAABBwCrBDwABwALtgIaAQEBsFYAKzQA//8AoQAABVAHKgYmAD0AAAEHAKUAzAE3AAu2ARcIAQFqVgArNAD///+8/kcEGQX0BiYAXQAAAQYApSkBAAu2AicYAQGqVgArNAD////0/rAFFAYABCYASAAAACcCNgHYAj8BBwBDAHv/bAAXtAQ3FgEBuP93t1YDMgsBAYNWACs0KzQA//8Anf6aBSUFsAYmADgAAAEHAmECNAAAAAu2AgsCAACaVgArNAD//wBU/poEDAQ6BiYA9gAAAQcCYQHRAAAAC7YCCwIAAJpWACs0AP//AMT+mgVdBbAGJgDhAAABBwJhArgAAAALtgIdGQEAmlYAKzQA//8Abf6aBBgEOwYmAPkAAAEHAmEBuQAAAAu2AhsCAQCaVgArNAD//wAr/poErAWwBiYAsQAAAQcCYQD1AAAAC7YBCQQAAJpWACs0AP//ABb+mgOIBDoGJgDsAAABBwJhANsAAAALtgEJBAAAmlYAKzQA//8AVf49BbsFxgYmAUwAAAEHAmECuf+jAAu2AjoKAABrVgArNAD////y/kQEcwRRBiYBTQAAAQcCYQHR/6oAC7YCOQkAAGtWACs0AP//AA0AAAPyBgAGBgBMAAAAAgAk//8EiAWwABgAHAAaQAwcGxgAAAsMAnIOCwgAPzMrEjkvM8wyMDFBBR4CBw4DJyETMwMFMjY2NzYmJiclAQchNwFnAVWD1HUMCWSgxmv95vz22wEKUotbDAkwZUf+jgGUHv1zHgOBAQNkwIxzrXQ6AQWw+xcBPnZVSWc3AwECNaenAAACACT//wSIBbAAGAAcABlACxwbGAAACwwCDgsIAD8zPxI5LzPMMjAxQQUeAgcOAychEzMDBTI2Njc2JiYnJQEHITcBZwFVg9R1DAlkoMZr/eb89tsBClKLWwwJMGVH/o4BlB79cx4DgQEDZMCMc610OgEFsPsXAT52VUlnNwMBAjWnpwACAAAAAASsBbAABQAJABZACgYHBwQCBQJyBAgAPysyEjkvMzAxQQchAyMTAQchNwSsI/1x2vX9AYMe/XMeBbDI+xgFsP2XpqYAAAL/xwAAA4gEOgAFAAkAFkAKCQgIBAIFBnIECgA/KzISOS8zMDFBByEDIxMBByE3A4gi/jab67wBoB39ch4EOsD8hgQ6/j+npwAABAA/AAAFigWwAAMACQANABEAK0AVDAsLBwcGEBEGEQYRAgkDAnIKAghyACsyKzIROTkvLxEzETMSOREzMDFBAyMTIQEhNzMBAwE3AQEHITcCMf31/QRO/TL+oAXpAga8/qS2Ab3+Rx79cx4FsPpQBbD8wtoCZPpQAqS3/KUE56enAAQAKAAABFoGAAADAAkADQARAC1AFwQGcgwLCwcHBhARBhEGEQIDAHIKAgpyACsyKxE5OS8vETMRMxI5ETMrMDFBASMJAiEnMwEDAzcBAwchNwIe/vXrAQsDJ/3p/uAj3wFYgfauAUzbHv1zHgYA+gAGAP46/aG/AaD7xgIFoP1bBWOmpgAAAgChAAAFUAWwAAgADAAdQA8MAQQHAwsLBgMIAnIGCHIAKysyETkvFzkzMDFBEwEhAQMjEwEBByE3AabOAcABHP18W/dg/scDGR79dB0FsP1LArX8XP30AiUDi/z8p6cABABS/l8EMAQ6AAMACAANABEAF0ALERAQAgUNBnICDnIAKysyEjkvMzAxZQMjEzcBMwEjExMHIwMBByE3Ahtc7FyGAX79/dCmB24JmbgCiB79cx1t/fICDqEDLPvGBDr8t/EEOvxspqYAAAL/wAAABUYFsAALAA8AH0APDwcFAQQKAw4OCQUDAAJyACsyLzM5Lxc5EjkzMDFBEwEhAQEhAwEhCQIHITcBydgBfgEn/dsBP/7w3v54/tYCMv7JAyke/XMeBbD97wIR/SP9LQIc/eQC6gLG/Y2npwAC/7oAAAQSBDoACwAPAB9ADw8HBQEKBAMODgkFAwAGcgArMi8zOS8XORI5MzAxQRMBIQETIwMBIQEDAQchNwFxjgEEAQ/+Z+/1m/7x/vEBqOYCzR79cx4EOv6bAWX94f3lAXX+iwIyAgj+Raam//8AKP/qBAQETwYGAL8AAP///8IAAASpBbAGJgAqAAABBwI2/zH+ZQAOtAMOAgIAuAEIsFYAKzT//wB8AnAF3gMxBgYBggAA//8ADQAABDwFxwYGABYAAP//ACb/6gQ4BccGBgAXAAD//wANAAAEKwWwBgYAGAAA//8AWP/oBHMFsAYGABkAAP//AHH/6QQiBboEBgAaFAD//wBL/+kEVgXHBAYAHBQA//8AjP/2BCwFxwQGAB0AAP//AHP/6ARMBcgEBgAUFAD//wBm/+sFFwdLBiYAKwAAAQcAdQH9AUsAC7YBLBABAW1WACs0AP////n+UQRCBgAGJgBLAAABBwB1AUUAAAALtgM/GgEBjFYAKzQA//8AJgAABYYHNwYmADIAAAEHAEQBfwE3AAu2AQwJAQFhVgArNAD//wANAAAD8gYABiYAUgAAAQcARAC3AAAAC7YCHgMBAaBWACs0AP///6MAAASrByEGJgAlAAABBwCsBI4BMwANtwQDDgMBAWZWACs0NAD//wAc/+kD0QXrBiYARQAAAQcArAPn//0ADbcDAjwPAQGRVgArNDQA//8AJgAABLwHKAYmACkAAAEHAKwEWwE6AA23BQQRBwEBcVYAKzQ0AP//ADr/6wPwBesGJgBJAAABBwCsA9D//QANtwIBLQsBAZFWACs0NAD////PAAACwwcoBiYALQAAAQcArAMTAToADbcCAQUDAQFxVgArNDQA////gAAAAnQF4gYmAI0AAAEHAKwCxP/0AA23AgEFAwEBo1YAKzQ0AP//AGL/6QUiByMGJgAzAAABBwCsBKUBNQANtwMCLREBAVRWACs0NAD//wA4/+kEHgXrBiYAUwAAAQcArAPl//0ADbcDAi0GAQGRVgArNDQA//8AJgAABNUHIQYmADYAAAEHAKwEQgEzAA23AwIfAAEBZlYAKzQ0AP//AAwAAAMABesGJgBWAAABBwCsA1D//QANtwMCGAMBAaVWACs0NAD//wBY/+gFMQchBiYAOQAAAQcArASCATMADbcCARcLAQFmVgArNDQA//8ASv/oBC8F6wYmAFkAAAEHAKwD7P/9AA23AwIdEQEBpVYAKzQ0AP///4UAAAV7Bj8EJgDQZAAABwCu/k//////ACb+nwS3BbAGJgAmAAABBwCtBJAACgAOtAI0GwEBuP9/sFYAKzT//wAQ/osEEQYABiYARgAAAQcArQSn//YADrQDMwQBAbj/a7BWACs0//8AJv6fBNkFsAYmACgAAAEHAK0EaQAKAA60AiIdAQG4/3+wVgArNP//ADj+lQSHBgAGJgBIAAABBwCtBIsAAAAOtAMzFgEBuP+JsFYAKzT//wAm/gYE2QWwBiYAKAAAAQcBygD8/qIADrQCKB0BAbj/l7BWACs0//8AOP38BIcGAAYmAEgAAAEHAcoBHf6YAA60AzkWAQG4/6GwVgArNP//ACb+nwWFBbAGJgAsAAABBwCtBQAACgAOtAMPCgEBuP9/sFYAKzT//wAN/p8D8gYABiYATAAAAQcArQR9AAoADrQCHgIBAbj/f7BWACs0//8AJgAABXIHMwYmAC8AAAEHAHUBpgEzAAu2Aw4DAQFbVgArNAD//wARAAAEegc9BiYATwAAAQcAdQGtAT0AC7YDDgMBABtWACs0AP//ACb+4QVyBbAGJgAvAAABBwCtBMwATAAOtAMRAgEBuP/PsFYAKzT//wAR/s0ETgYABiYATwAAAQcArQRhADgADrQDEQIBAbj/vLBWACs0//8AJv6fA8AFsAYmADAAAAEHAK0ElQAKAA60AgsCAQG4/3+wVgArNP///+P+nwIWBgAGJgBQAAABBwCtA0IACgAOtAEHAgEBuP9/sFYAKzT//wAm/p8GzgWwBiYAMQAAAQcArQWpAAoADrQDFAYBAbj/f7BWACs0//8AD/6fBmEEUQYmAFEAAAEHAK0FrwAKAA60AzYCAQG4/3+wVgArNP//ACb+mwWGBbAGJgAyAAABBwCtBQIABgAOtAENAgEBuP9/sFYAKzT//wAN/p8D8gRRBiYAUgAAAQcArQRtAAoADrQCHwIBAbj/f7BWACs0//8AYv/pBSIH3gYmADMAAAEHAkYFFAFVAA23AwIxEQEBWlYAKzQ0AP//ACYAAAT6B0IGJgA0AAABBwB1AaoBQgALtgEYDwEBbFYAKzQA////yP5gBGoF9gYmAFQAAAEHAHUBnf/2AAu2AzADAQGWVgArNAD//wAm/p8E1QWwBiYANgAAAQcArQSWAAoADrQCIRgBAbj/f7BWACs0////3f6gAvIEUwYmAFYAAAEHAK0DPAALAA60AhoCAQG4/4CwVgArNP//ACb+lAS9BcYGJgA3AAABBwCtBLH//wAOtAE9KwEBuP+IsFYAKzT//wAb/osDwQRPBiYAVwAAAQcArQRa//YADrQBOSkBAbj/f7BWACs0//8Anf6ZBSUFsAYmADgAAAEHAK0EoQAEAA60AgsCAQG4/3WwVgArNP//AD/+lQKuBUMGJgBYAAABBwCtA/AAAAAOtAIZEQEBuP+JsFYAKzT//wBY/+gFMQfcBiYAOQAAAQcCRgTxAVMADbcCARsAAQFsVgArNDQA//8AmgAABX8HNgYmADoAAAEHAKUA3gFDAAu2AhgJAQF2VgArNAD//wBkAAAEEgXqBiYAWgAAAQYApRv3AAu2AhgJAQGgVgArNAD//wCa/p8FfwWwBiYAOgAAAQcArQTSAAoADrQCDQQBAbj/f7BWACs0//8AZP6fBBIEOgYmAFoAAAEHAK0EQQAKAA60Ag0EAQG4/3+wVgArNP//ALX+nwc6BbAGJgA7AAABBwCtBcEACgAOtAQZEwEBuP9/sFYAKzT//wB5/p8F9AQ6BiYAWwAAAQcArQUlAAoADrQEGRMBAbj/f7BWACs0////5f6fBOsFsAYmAD4AAAEHAK0EoQAKAA60AxECAQG4/3+wVgArNP///+b+nwPkBDoGJgBeAAABBwCtBEQACgAOtAMRAgEBuP9/sFYAKzT///8B/+kFaAXXBCYAM0YAAQcBcf4Z//8ADbcDAi4RAAASVgArNDQA////mgAABAEFHAYmAkMAAAAHAK7/Mv7c////pgAABDcFHwQmAjg8AAAHAK7+cP7f////rgAABOUFGgQmAfQ8AAAHAK7+eP7a////sQAAAgsFHwQmAfM8AAAHAK7+e/7f////2P/tBGIFHAQmAe0KAAAHAK7+ov7c////ZQAABL4FHAQmAeM8AAAHAK7+L/7c////6gAABHsFHAQmAgMKAAAHAK7+tP7c////mgAABAEEjQYGAkMAAP//AAn//wQABI0GBgJCAAD//wAJAAAD+wSNBgYCOAAA////1gAABCoEjQYGAeIAAP//AAkAAASpBI0GBgH0AAD//wAaAAABzwSNBgYB8wAA//8ACQAABJ0EjQYGAfEAAP//AAkAAAXIBI0GBgHvAAD//wAJAAAEqASNBgYB7gAA//8AO//tBFgEoAYGAe0AAP//AAkAAAQwBI0GBgHsAAD//wBjAAAEXgSNBgYB6AAA//8AbAAABIIEjgYGAeMAAP///6IAAAR9BI0GBgHkAAD//wAaAAAC3QXtBiYB8wAAAQcAav9QAB4ADbcCAQ0DAQGEVgArNDQA//8AbAAABIIF7QYmAeMAAAEGAGphHgANtwQDFwkBAYNWACs0NAD//wAJAAAD+wXtBiYCOAAAAQYAamoeAA23BQQZBwEBg1YAKzQ0AP//AAkAAAP4Bh4GJgH6AAABBwB1ASsAHgALtgIIAwEBg1YAKzQA//8AD//uA/4EngYGAekAAP//ABoAAAHPBI0GBgHzAAD//wAaAAAC3QXtBiYB8wAAAQcAav9QAB4ADbcCAQ0DAQGEVgArNDQA////8//tA68EjQYGAfIAAP//AAkAAASdBh4GJgHxAAABBwB1ASIAHgALtgMOAwEBhFYAKzQA//8Adv/oBIkGBgYmAhEAAAEHAKEAiwAeAAu2Ah0XAQGEVgArNAD///+aAAAEAQSNBgYCQwAA//8ACf//BAAEjQYGAkIAAP//AAkAAAPgBI0GBgH6AAD//wAJAAAD+wSNBgYCOAAA//8ACwAABK0GBgYmAg4AAAEHAKEAwQAeAAu2AxEIAQGEVgArNAD//wAJAAAFyASNBgYB7wAA//8ACQAABKkEjQYGAfQAAP//ADv/7QRYBKAGBgHtAAD//wAJAAAEpASNBgYB/wAA//8ACQAABDAEjQYGAewAAP//ADn/7QREBKAGBgJBAAD//wBjAAAEXgSNBgYB6AAA////ogAABH0EjQYGAeQAAAADAA7+NwPrBJ8AHgA+AEIAKEATHwECAj4+FT80NEAwKgtyDwsVfgA/M8wrzM0zEjkSOS8zEjk5MDFBJzcXPgI3NiYmIyYGBgcHPgMXHgMHDgMnFx4DBw4DJy4DNxceAhcWNjY3Ni4CJycTAyMTAi7CFoE3akoICDRYLjFXQQztB1WEnVBJk3pGBANUgpf+pUSKcUIEBV+TrVVQk3FAAugBMVI0OXJSCQYaNkkol7Jd7F4CKwF9AQEdRz82QRsBGzwxAVh+TyQBASFGd1dUeEwlRwEBIERvUmGGUiQCASpUgVkBN0MdAQEgSkAvPyQRAQH+Uv3nAhkAAAQACf6aBLkEjQADAAcACwAPAB1ADQMCAgYLB30PDgoKBhIAPzMQzjM/MxI5LzMwMUEHITcTAyMTIQMjExMDIxMDpyH9fiKZyuzLA9XL6sr7XuxeAp3AwAHw+3MEjftzBI38Jv3nAhkAAgA5/kAERASgACcAKwAYQAsZEH4oJCQqKgULcgArMi8yETM/MzAxQTcOAicuAzc3PgMXHgIXIy4CJyYOAgcHBh4CFxY2NgcDIxMDDOoUmOOCd6pmJQwKDlyVyXyAvWwI6gItXUdQdk8wCQoHAyVVTEtyTKBe610BgwGFt1sDAlycx21Pc86cVgMCY7h/RmE0AwI9bIVFUTt/bUYCAy9h4v3nAhkA//8AbAAABIIEjgYGAeMAAP//ADv+NwWUBKcGJgInAAAABwJhAr//nf//AAsAAAStBcsGJgIOAAABBwBwAI8AIQALtgMOCAEBsFYAKzQA//8Adv/oBIkFywYmAhEAAAEGAHBZIQALtgIaFwEBsFYAKzQA//8AQQAABTQEjQYGAgEAAP//ABr/7QWeBI0EJgHzAAAABwHyAe8AAP///34AAAYPBgAGJgKEAAABBwB1AnkAAAALtgYZDwEBTVYAKzQA////2//HBLsGHgYmAoYAAAEHAHUBegAeAAu2AzARAQFbVgArNAD//wAP/fwD/gSeBiYB6QAAAAcBygD3/pj//wCLAAAGHgYeBiYB5QAAAQcARAF4AB4AC7YEGAoBAWtWACs0AP//AIsAAAYeBh4GJgHlAAABBwB1AhoAHgALtgQWCgEBa1YAKzQA//8AiwAABh4F7QYmAeUAAAEHAGoBQwAeAA23BQQfCgEBhFYAKzQ0AP//AGwAAASCBh4GJgHjAAAABwBEAJcAHv///6P+WASrBbAGJgAlAAABBwCkAWsAAwALtgMOBQEBOVYAKzQA//8AHP5dA9EEUAYmAEUAAAEHAKQApgAIAAu2AjsxAABNVgArNAD//wAm/l8EvAWwBiYAKQAAAQcApAEwAAoAC7YEEAIAAENWACs0AP//ADr+VQPwBFEGJgBJAAABBwCkAP0AAAALtgEsAAAATVYAKzQA////mv5VBAEEjQYmAkMAAAAHAKQBDwAA//8ACf5dA/sEjQYmAjgAAAAHAKQA4AAI////4/6fAcoEOgYmAI0AAAEHAK0DQgAKAA60AQcCAQG4/3+wVgArNAAAAAAAEQDSAAMAAQQJAAAAXgAAAAMAAQQJAAEAGgBeAAMAAQQJAAIADAB4AAMAAQQJAAMAKACEAAMAAQQJAAQAKACEAAMAAQQJAAUAJgCsAAMAAQQJAAYAJgDSAAMAAQQJAAcAQAD4AAMAAQQJAAgADAE4AAMAAQQJAAkAJgFEAAMAAQQJAAsAFAFqAAMAAQQJAAwAFAFqAAMAAQQJAA0AXAF+AAMAAQQJAA4AVAHaAAMAAQQJABAADAIuAAMAAQQJABEAGgI6AAMAAQQJABkADAIuAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEAMQAgAEcAbwBvAGcAbABlACAASQBuAGMALgAgAEEAbABsACAAUgBpAGcAaAB0AHMAIABSAGUAcwBlAHIAdgBlAGQALgBSAG8AYgBvAHQAbwAgAE0AZQBkAGkAdQBtAEkAdABhAGwAaQBjAFIAbwBiAG8AdABvACAATQBlAGQAaQB1AG0AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMwAuADAAMAA1ADsAIAAyADAAMgAyAFIAbwBiAG8AdABvAC0ATQBlAGQAaQB1AG0ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAuAEcAbwBvAGcAbABlAEMAaAByAGkAcwB0AGkAYQBuACAAUgBvAGIAZQByAHQAcwBvAG4ARwBvAG8AZwBsAGUALgBjAG8AbQBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAFIAbwBiAG8AdABvAE0AZQBkAGkAdQBtACAASQB0AGEAbABpAGMAAAADAAD/9AAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAj//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEQAXgABAGoAagABAHAAcAABAHUAdQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnwABAKEAowABAKUApgABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAxAABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJwADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAcsB0QACAeIB9gABAfoB+gABAgMCAwABAgUCBQABAgwCDgABAhACEQABAhMCEwABAhcCFwABAhkCGwABAiECIQABAiYCKAAB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/+gEX//oBGH/6ARj/+gEZf/oBGf/6ARp/+gEa//oBG3/6ARv/+gEcf/oBIH/3wSD/98Ehf/fBIj/4ASK/+EEi//gBJf/3wSqABAEsP/oBMn/6ATQ/+AE0//gBNX/4AC6AEf/3ABI/9wASf/cAEv/3ABR/+EAUv/hAFP/1gBU/+EAVf/cAFn/3QBa/+EAXf/hAJT/3ACZ/9wAm//dALv/3AC9/+EAvv/1AL//5gDB/+EAwv/rAMP/6QDF//AAxv/nAMj/3ADJ/9wAyv/jAMv/3QDM/84Azf/UAM7/2wDs/+EA8P/hAPH/4QDz/+EA9P/hAPX/4QD3/9wA+P/hAPr/4QD7/+EA/v/hAQD/4QED/9wBBf/hARj/1gEa/+EBHv/cASL/3AEr/+EBNv/hATz/4QE+/+EBQv/cAVP/4QFV/+EBV//hAVz/4QFg/9wBYf/cAWv/3AKy/9wCs//cArT/3AK1/9wCtv/cArv/4QK8/9YCvf/WAr7/1gK//9YCwP/WAsH/3QLC/90Cw//dAsT/3QLF/+ECxv/hAs7/3ALQ/9wC0v/cAtT/3ALW/9wC2P/cAtr/3ALc/9wC3v/cAuD/3ALi/9wC5P/cAub/3ALo/9wDA//hAwX/4QMH/+EDCP/hAwr/1gMM/9YDDv/WAyb/3QMo/90DKv/dAyz/3QMu/90DMP/dAzT/4QOv/9wDsf/hA7P/3QO1/9YDt//hA7r/3QO7/9YDvP/dA9X/3APW/+ED1//WA9j/4QPZ/9wD2v/hA9z/3APd/+ED4v/hA+P/4QPr/+ED8v/hA/f/3AP4/+ED/P/hA/3/3AQC/9wEBP/hBBD/3AQS/9wEE//cBBn/4QQb/+EEHf/WBB//3AQh/9YEJf/hBCf/4QQp/+EELf/hBC7/3ARI/9wESv/cBEz/3ARO/9wEUP/cBFL/3ARU/9wEVv/cBFz/1gRe/9YEYP/WBGL/1gRk/9YEZv/WBGj/1gRq/9wEbP/cBG7/3ARw/9YEcv/cBHT/3QR2/90EeP/dBHr/3QR8/90Efv/dBID/3QSC/+EEhP/hBIb/4QSN/+EEqf/hBK3/3ASx/9YEtf/dBLr/3AS8/9wExv/hBMj/4QTU/+EE1v/hAL8ABgAMAAsADABH/+gASP/oAEn/6ABKAAwAS//oAFP/6gBV/+gAWgALAF0ACwCU/+gAmf/oALv/6AC9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/8AB/f/AAkP/wAKQ/04Ckf9OApL/TgKT/04ClP9OApX/TgKW/04Cq//eAqz/3gKt/94Crv/eAq//3gKw/94Csf/eArL/6wKz/+sCtP/rArX/6wK2/+sCvP/rAr3/6wK+/+sCv//rAsD/6wLB/+oCwv/qAsP/6gLE/+oCxf/oAsb/6ALH/04CyP/eAsn/TgLK/94Cy/9OAsz/3gLO/+sC0P/rAtL/6wLU/+sC1v/rAtj/6wLa/+sC3P/rAt7/6wLg/+sC4v/rAuT/6wLm/+sC6P/rAvb/DQMK/+sDDP/rAw7/6wMfABQDIQAUAyMAFAMm/+oDKP/qAyr/6gMs/+oDLv/qAzD/6gM0/+gDQ//AA0T/wANF/8ADRv/AA0f/wANI/8ADSf/AA17/wANf/8ADYP/AA5f/TgOf/04Dr//rA7P/6gO1/+sDt//oA7r/6gO7/+sDvP/qA8P/DQPH/04D0gAUA9T/3gPV/+sD1//rA9n/6wPa/+gD3P/rA+P/6APr/+gD8/9OA/T/3gP3/+sD/P/oA/3/6wQC/+sEBP/oBAn/TgQK/94EC/9OBAz/3gQQ/+sEEv/rBBP/6wQd/+sEH//rBCH/6wQl/+gEJ//oBCn/6AQu/+sEL/9OBDD/3gQx/04EMv/eBDP/TgQ0/94ENf9OBDb/3gQ3/04EOP/eBDn/TgQ6/94EO/9OBDz/3gQ9/04EPv/eBD//TgRA/94EQf9OBEL/3gRD/04ERP/eBEX/TgRG/94ESP/rBEr/6wRM/+sETv/rBFD/6wRS/+sEVP/rBFb/6wRc/+sEXv/rBGD/6wRi/+sEZP/rBGb/6wRo/+sEav/rBGz/6wRu/+sEcP/rBHL/6wR0/+oEdv/qBHj/6gR6/+oEfP/qBH7/6gSA/+oEgv/oBIT/6ASG/+gEiAAUBKr/TgSr/94Erf/rBLH/6wS1/+oEuv/rBLz/6wTQABQE1P/oBNb/6ATc/8AE4//ABPv/wAACAKAABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAAtAAsALwA2AA0AOAA4ABUAOgA/ABYARQBGABwASQBKAB4ATABMACAATwBPACEAUQBUACIAVgBWACYAWABYACcAWgBdACgAXwBfACwAigCKAC0AlgCWAC4AnQCdAC8AsQC1ADAAtwC5ADUAuwC7ADgAvQC+ADkAwADBADsAwwDFAD0AxwDOAEAA0gDSAEgA1ADeAEkA4ADvAFQA8QDxAGQA9gD4AGUA+wD8AGgA/gEAAGoBAwEFAG0BCgEKAHABDQENAHEBGAEaAHIBIgEiAHUBLgEwAHYBMwE1AHkBNwE3AHwBOQE5AH0BOwE7AH4BQwFEAH8BVAFUAIEBVgFWAIIBWAFYAIMBXAFeAIQBhAGFAIcBhwGJAIkB6AHoAIwB6gHrAI0B7QHtAI8B8AHwAJAB+wH9AJECQAJAAJQCQwJDAJUCVQJVAJYCVwJYAJcCiwKMAJkCjgKOAJsCkAKlAJwCqgKxALICswK2ALoCuwLAAL4CxQLNAMQCzwLPAM0C0QLRAM4C0wLTAM8C1QLVANAC1wLgANEC6QLrANsC7QLtAN4C7wLvAN8C8QLxAOAC8wLzAOEC+AL4AOIC+gL6AOMC/AL8AOQC/gL+AOUDAAMAAOYDAgMOAOcDEAMQAPQDEgMSAPUDFAMUAPYDHwMfAPcDIQMhAPgDIwMjAPkDMQMxAPoDMwM2APsDOAM4AP8DOgM6AQADQANJAQEDVANYAQsDXgNgARADZQNlARMDdwN6ARQDfgOAARgDiQOJARsDlwOcARwDnwOuASIDsQOxATIDtQO1ATMDtwO3ATQDuwO7ATUDvgO/ATYDwQPCATgDxAPKAToDzAPOAUED0APVAUQD1wPYAUoD2gPdAUwD4wPkAVAD5gPmAVID6APoAVMD6gPtAVQD8AP1AVgD9wP3AV4D+wP8AV8EAQQBAWEEAwQMAWIEDwQQAWwEEgQVAW4EHAQdAXIEIQQhAXQEIwQpAXUELwRXAXwEWQRZAaUEWwRoAaYEcARwAbQEgQSGAbUEiASIAbsEjASNAbwEkASQAb4EkgSTAb8ElQSVAcEElwSXAcIEqASsAcMErgSuAcgEsASxAckEswSzAcsEtwS5AcwEuwS7Ac8EvQS/AdAEwQTBAdMEwwTDAdQExQTLAdUEzQTNAdwE0ATQAd0E0wTXAd4E2QTZAeME2wTcAeQE4ATgAeYE4wTjAecE7gTuAegE+wT7AekFAgUCAeoFBgUGAesAAgCaAAYABgAAAAsACwABABAAEAACABIAEgADACUAKQAEACwANAAJADgAPgASAEUARwAZAEkASQAcAEwATAAdAFEAVAAeAFYAVgAiAFoAWgAjAFwAXgAkAIoAigAnAJYAlgAoALEAtAApAL0AvQAtAMEAwQAuAMcAxwAvANQA1QAwANcA1wAyANoA2gAzANwA3gA0AOAA5gA3AOwA7AA+AO4A7gA/APcA9wBAAPwA/ABBAP4A/wBCAQQBBQBEAQoBCgBGAQ0BDQBHARgBGgBIAS4BMABLATMBNQBOATcBNwBRATkBOQBSATsBOwBTAUMBRABUAVQBVABWAVYBVgBXAVgBWABYAVwBXgBZAYQBigBcAY4BjwBjAegB6ABlAe0B7QBmAfAB8QBnAfsB/QBpAg8CDwBsAh4CIABtAkACQABwAkMCQwBxAlUCVQByAlcCWABzAosCjAB1Ao4CjgB3ApACtgB4ArsCwACfAsUC1QClAtcC4AC2AukC6wDAAu0C7QDDAu8C7wDEAvEC8QDFAvMC8wDGAvYC9gDHAvgC+ADIAvoC+gDJAvwC/ADKAv4C/gDLAwADAADMAwIDDgDNAxADEADaAxIDEgDbAxQDFADcAx8DHwDdAyEDIQDeAyMDIwDfAyUDJQDgAycDJwDhAykDKQDiAysDKwDjAy0DLQDkAy8DLwDlAzEDMQDmAzMDOwDnA0ADSQDwA1QDWAD6A14DYAD/A2UDZQECA3YDegEDA34DgAEIA4kDiQELA5cDnAEMA58DrgESA7EDsQEiA7UDtQEjA7cDtwEkA7sDuwElA74DvwEmA8EDygEoA8wDzgEyA9AD1QE1A9cD3QE7A+MD5AFCA+YD5gFEA+gD6AFFA+oD7QFGA/AD9QFKA/cD9wFQA/sD/AFRBAEEDAFTBA8EEAFfBBIEFQFhBBwEHQFlBCEEIQFnBCMEKQFoBC8EVwFvBFkEWQGYBFsEaAGZBHAEcAGnBHMEcwGoBHUEdQGpBIEEhgGqBIgEiAGwBIwEjQGxBJAEkAGzBJIEkwG0BJUElQG2BJcElwG3BKgErAG4BK4ErgG9BLAEsQG+BLMEswHABLcEuQHBBLsEuwHEBL0EvwHFBMEEwQHIBMMEwwHJBMUEywHKBM0EzQHRBNAE0AHSBNIE1wHTBNkE3AHZBOAE4AHdBOME4wHeBOkE6QHfBO4E7gHgBPkE+QHhBPsE+wHiBQIFAgHjBQYFBgHkAAIBdAAGAAYADwALAAsADwAQABAAGgASABIAGgAlACUAAgAmACYAJAAnACcAEAAoACgAAQApACkABAAuAC4ACAAv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AAAABAAAAAAAAAAAAAAAAAAAAAAAAAACAAcAGgAJAAIAAAACAAEAAgAAAAIAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAABAAEwAAAAMAAAAAAA0AAAAAAAMAAAADAAAAAAACAAEAEAATAA0AAAAgACIAAAAAAAAAAAAAAAAAAAAeACEAAAADAAAAAwAAAAMAAAAAAAAAAAADABAAEwAAAAEAAQAAAAAAAAAAAB4AAAAAAAAAAgABAAAAAAAAAB4AIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAGwAAAA8ADwAYAA8ADwAPABgAAAAAAAAAGAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABkAJAAAAA4AFQAcAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAKAAUACgAAAAAAAAAAAAAAAAAVAAUAAAAAABUAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAABUABQASABkAFQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAABAAEAAQABAAEAAQABAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgALAAsACwALAAwABgAGAAYABgAGAAYABgABAAEAAQABAAEAAAAAAAAAAAADAAcABwAHAAcABwAIAAgACAAIAAkACQAEAAYABAAGAAQABgACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAcAAgAHAAIABwAAAAAAAAAAAAAAAAAUABEAFAARABQAEQAUABEAFAARAA0AAAANAAAADQAAAAsACAALAAgACwAIAAsACAALAAgACwAIABYAAAAMAAkADAAXAB0AFwAdABcAHQAAAAAAAgAAAAAAAAAAAAoACgAKAAoACgAKAAoABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUADgAOAA4ADgASAAoACgAKAAUABQAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAcABwAHAAcAAAAFQAAAA4ADgAOAA4ADgAOACQAEgASAAAAAAAAAAQAAAAAAAAAAgAMAAAAAAAEAAAAAAAXAAAAAAAAAAAAAAACAAAAAAAMABAAAAAMAAEAAAADAAAACAAAAAcAAAAJAAAAAAAIAAcACAAAAAAAAAAAAAAAAAAjAAAAAAAfAAQAAAAAAAAAAAAAAAAAAgAAAAAAAgANABAABgABAAMABwADAAEACQATAAEAAwARAAAAAAAAAAMACQAWAAAAFgAAABYAAAAMAAkADwAPAAAAAAAPAAAAAwAEAAYAAAAAAAEAAwAAAAAAGgAJAAEAAgAAAAAAAgABAAwACQAAABAAEwAAAAQABgAEAAYAAAAAAAAAAQAAAAEAAQAQABMAAAAAAAAAAwAAAAMAAgAHAAIAAQACAAcAAAAAAB8ACQAfAAkAHwAJACAAIgAAAAMAAQAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAgAHAAIABwACAAcAAgAHAAIABwACAAcAAgAHAAIAAQACAAEAAgABAAIABwACAAEACwAIAAsACAAAAAgAAAAIAAAACAAAAAgAAAAIAAwACQAMAAkADAAJAAAADQAAACAAIgAAAAMAAAAA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BjIGOgX8BoYHVAXABnIGQgYCB2QGCAZKBpIGDgccBcQFyAYUByoFzAXQBdQGUgZaBhoGngc4BdgGfAZiBiAHRgYmBmoGqgYsBdwF4AXkBegGtgbCBs4G2gbmBewAAgcCAOsCggJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeICdAKEA0EChgKFA0AB8wKDAogCYgTjBOQB+gH7BOUE5gTnAfwE6AH9Af4B/wTtAgACAATuBO8CAQICAgMCCgT8BP0CCwIMAg0CDgIPAhAFAAUBBQMFBgUPAhICEwIUAhUCFgIXAhgCGQIaAhsCBAIFAgYCBwIIAgkCSwIdAh4CHwIgBQkCIQIjAiQCJQInAikChwNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA5MDXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwUQA3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGBRMDhwOIA4oDiQOLA4wDjQOOA48DkAORA5IDlAOVA5YFEQUSBNwE3QTeBN8E6QTsBOoE6wTwBPEE8gTgBOEE4gT7BP4E/wUCBQQFBQIRBQcE8wT0BPUE9gT3BPgE+QT6BRQFFQUWBRcFCAUKBQsCKAUNAioFDgUMAiYCHAIiBRwFHQACBwAA+gH3AoIB4QHgAd8B3gHdAdwB2wHaAdkB2AJDAkICQQJAAjgB9gH1AfQB8wHyAfEB8AHvAe4B7QHsAesB6gHpAegB5wHmAeUB5AHjAeIB+AH5AoQChgKFAocCgwKIAmIB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CEAIRBQ8CEgITAhQCFQIWAhcCGAIZAhoCGwJLAh0CHgIfAiAFCQIhAiMCJAIlAiYCJwIoAikCKwIsAi4CLQNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QFEAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgUTA4cDiAOKA4kDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YFEQUSBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AIPBPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBRQFFQUWBRcFCAUKBQsFDQIqBQ4FDAIcAiIFHAUdAAEAAQF7AAEAAQBLAAEAAQC7AAEAAQA2AAEAAQATAAEAAgMZAxoAAgbkBtgAAgbmBtgAAQbuAAEG8AABBvIAAgABABQAHQAAAAEAAgAvAE8AAQADAEkASwJ6AAIAAAABBt4AAQAGAssCzALdAt4DYANpAAEABgBNAE4C8gPfA+EEWgACAAMBlAGUAAAB1QHXAAECLwI1AAQAAgACAKgArAABASQBJwABAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQACAAIAFAAdAAACZQJuAAoAAgAGAE0ATQAGAE4ATgAEAvIC8gAFA98D3wADA+ED4QACBFoEWgABAAIABAAUAB0AAAJ2AnYACgKBAoEACwSeBKUADAACAAYAGgAaAAAAHAAcAAECWgJfAAICYwJjAAgCZQJuAAkCdQJ1ABMAAQAUABoAHAJaAlsCXAJdAl4CXwJjAnUCdgKBBJ4EnwSgBKEEogSjBKQEpQABBd4AAQXgAAEF4gABBeQAAQXmAAEF6AABBeoAAQXsAAEF7gABBfAAAQXyAAEF9AABBfYAAQX4AAEF+gACBfwGAgACBgIGCAACBggGDgACBg4GFAACBhQGGgACBhoGIAACBiAGJgACBiYGLAACBiwGMgACBjIGOAACBjgGPgADBj4GRAZKAAMGSAZOBlQAAwZSBlgGXgADBlwGYgZoAAMGZgZsBnIAAwZwBnYGfAADBnoGgAaGAAMGhAaKBpAABAaOBpQGmgagAAQGnAaiBqgGrgAFBqoGsAa2BrwGwgAFBrwGwgbIBs4G1AAFBs4G1AbaBuAG5gAFBuAG5gbsBvIG+AAFBvIG+Ab+BwQHCgAFBwQHCgcQBxYHHAAFBxYHHAciBygHLgAFBygHLgc0BzoHQAAFBzoHQAdGB0wHUgAGB0wHUgdYB14HZAdqAAYHYgdoB24HdAd6B4AABgd4B34HhAeKB5AHlgAGB44HlAeaB6AHpgesAAYHpAeqB7AHtge8B8IABge6B8AHxgfMB9IH2AAGB9AH1gfcB+IH6AfuAAcILgfmB+wH8gf4B/4IBAAHCCYH+ggACAYIDAgSCBgAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAo0CjwKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAsgCygLMAs4C0ALSAtQC1gLYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvIC9QL3AvkC+wL9Av8DAQMDAwUDBwMKAwwDDgMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAzADMgM0AzcDOQM7Az0DPwOvA7ADsQOyA7QDtQO2A7cDuAO5A7oDuwO8A70D1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPlA+cD6QPrBAAEAgQEBBIEGQQfBCUEjwSQBJQEmAUZBRsAAQD6AAgACgAUABUAFgAXABgAGQAaABsAHAAdACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAgQCDAIQAjACPAJEAkwCxALIAswC0ALUAtgC3ALgAuQC6ANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAS8BMwE1ATcBOQE7AUEBQwFFAUkBSwFMAVgBWQGnAa0BsgG1AosCjAKOApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAscCyQLLAs0CzwLRAtMC1QLXAtkC2wLdAt8C4QLjAuUC5wLpAusC7QLvAvEC8wL0AvYC+AL6AvwC/gMAAwIDBAMGAwkDCwMNAw8DEQMTAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMrAy0DLwMxAzMDNQM2AzgDOgM8Az4DlwOYA5kDmgObA5wDnQOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD5APmA+gD6gP/BAEEAwQYBB4EJASOBJMElwUYBRoBzAACAE0BzQACAFABzgADAEoATQHPAAMASgBQAAEAAQBKAcsAAgBKAdEAAgBYAdAAAgBYAAEAAwBKAFcAlQAAAAEAAQABAAEAAAADBLcAAgCtAs0AAgCpBL0AAgCtBMoAAgCpBLgAAgCtAs4AAgCpBKcAAgCpBL4AAgCtBFoAAgCtBMsAAgCpAzwAAgCpAz4AAgCpAz0AAgCpAz8AAgCpBLYAAgCpBLsAAgHKBLkAAgCtBKYAAgCpAucAAgHKA/EAAgCpBMUAAgCtAx8AAgHKBNAAAgCtBNUAAgCtBNMAAgCqAzYAAgCpBNkAAgCtBLwAAgHKBLoAAgCtA/IAAgCpBMYAAgCtAyAAAgHKBNEAAgCtBNYAAgCtBNQAAgCqAzcAAgCpBNoAAgCtBL8AAgCpAvgAAgHKBMEAAgCtAvoAAgCpAvwAAgHKBMMAAgCtAxUAAgCpAxsAAgHKBM4AAgCtA+YAAgCpBNcAAgCtA+QAAgCoBMAAAgCpAvkAAgHKBMIAAgCtAvsAAgCpAv0AAgHKBMQAAgCtAxYAAgCpAxwAAgHKBM8AAgCtA+cAAgCpBNgAAgCtA+UAAgCoAw8AAgCpAxEAAgHKBMwAAgCtBLIAAgCsAxAAAgCpAxIAAgHKBM0AAgCtBLMAAgCsAwIAAgCpAwQAAgHKBMcAAgCtBKgAAgCoAqAAAgCqAqoAAgCpBIEAAgCtA+oAAgCoBIMAAgCrBIUAAgCqAwMAAgCpAwUAAgHKBMgAAgCtBKkAAgCoArsAAgCqAsUAAgCpBIIAAgCtA+sAAgCoBIQAAgCrBIYAAgCqArgAAgCpArcAAgCoBFgAAgCrAuwAAgCqBK8AAgCsBGkAAgCpBHEAAgCtBGsAAgCoBG0AAgCrBG8AAgCqBGoAAgCpBHIAAgCtBGwAAgCoBG4AAgCrBHAAAgCqBHcAAgCpBH8AAgCtBHkAAgCoBHsAAgCrBH0AAgCqBHgAAgCpBIAAAgCtBHoAAgCoBHwAAgCrBH4AAgCqApEAAgCpBC8AAgCtApAAAgCoBDEAAgCrApMAAgCqBKoAAgCsApkAAgCpBEcAAgCtApgAAgCoBEkAAgCrBEsAAgCqBKwAAgCsAp0AAgCpBFkAAgCtApwAAgCoBFcAAgCrAusAAgCqBK4AAgCsAqwAAgCpBDAAAgCtAqsAAgCoBDIAAgCrAq4AAgCqBKsAAgCsArQAAgCpBEgAAgCtArMAAgCoBEoAAgCrBEwAAgCqBK0AAgCsAr0AAgCpBFwAAgCtArwAAgCoBF4AAgCrAr8AAgCqBLEAAgCsAsIAAgCpBHQAAgCtAsEAAgCoBHYAAgCrAyYAAgCqBLUAAgCsAqIAAgCpBFsAAgCtAqEAAgCoBF0AAgCrAqQAAgCqBLAAAgCsAqcAAgCpBHMAAgCtAqYAAgCoBHUAAgCrAyUAAgCqBLQAAgCsBMkAAwCqAKkE0gADAKoAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAA==",
35
  "Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqWLoiAAAb8IAAACWEdQT1PInCKzAAHBYAAAZfhHU1VChRYO9AACJ1gAABX2T1MvMpeDsYsAAAGYAAAAYGNtYXDOyFo6AAAWdAAABoJjdnQgO/gmfQAAL1AAAAD+ZnBnbagFhDIAABz4AAAPhmdhc3AACAAZAAG+/AAAAAxnbHlmnLrJSwAAOpAAAYGgaGVhZAZzHSoAAAEcAAAANmhoZWEKugrAAAABVAAAACRobXR45eWbKgAAAfgAABR8bG9jYQ+pa9gAADBQAAAKQG1heHAIzxDGAAABeAAAACBuYW1lOEJpvQABvDAAAAKqcG9zdP9tAGQAAb7cAAAAIHByZXB5WM7TAAAsgAAAAs4AAQAAAAMBSPgkVmdfDzz1ABsIAAAAAADE8BEuAAAAAN8Gv276Gv3VCTEIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJSvoa/koJMQABAAAAAAAAAAAAAAAAAAAFHwABAAAFHwCpABUAdgAHAAIAEAAvAJoAAALmD3UAAwABAAQEiQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwAAAAIAADA4wAZAAAAAAAAAAAAfwAAAH8AAACEAChApAAiQTtAHcEfwBuBdwAaQT6AGYBZgBoAr0AhgLJACcDcgAcBIoATgGTAB0CNgAmAhwAkANNABMEfwBzBH8AqwR/AF4EfwBfBH8ANQR/AJoEfwCFBH8ATgR/AHEEfwBkAfAAhQGxACkEEQBIBGQAmAQvAIcDyABLBy8AbQU4AB0E/ACpBTUAeAVAAKkEjACpBGwAqQVzAHoFtQCpAi0AtwRqADUFBQCpBE8AqQb8AKkFtQCpBYEAdwUMAKkFgQBuBO4AqQTAAFEExgAyBTAAjAUYAB0HGQA9BQQAOgTOAA8EywBXAh8AkwNJACkCHwAKA1gAQAOcAAQCeQA5BFoAbQR+AIwEMABdBIMAXwQ+AF0CyAA9BH4AYQRoAI0B8gCOAer/vgQOAI0B8gCcBwQAiwRrAI0EkABcBH4AjASMAF8CtgCNBCEAXwKeAAkEaQCJA+AAIQYDACsD+AAqA8kAFgP4AFkCtQBAAfQAsAK1ABQFcQCDAfQAiwRhAGkEpwBbBbUAaQQ0AA8B7ACUBOgAWwNZAGUGSQBcA5QAkwPBAGUEbgB/BkoAWwOrAI8C/QCDBEcAYQLvAEIC7wA/AoIAewSJAJsD6gBEAhcAlAH8AHQC7wB7A6QAewPAAGcF3ABVBjUAUAY5AHADygBEB3r/8QRFAFkFgQB3BLoApwTCAIwGwgBPBLEAfgSSAEcEiQBcBJwAlQTIAF8FmwAeAfsAnAR0AJsETwAjAioAIwWLAKIEiQCSB6EAaQdEAGEB/AChBYcAXgK6/+MFfwBmBJMAXAWQAIwE8wCJAgT/tAQ4AGMDxACqA44AjgOrAI8DawCCAfIAjgKuAHkCKwAyA8YAewL8AF8CWgB/AAD8pwAA/W4AAPyKAAD9XQAA/CcAAP04Ag4AuAQMAHICFwCUBHMAsgWkACAFcgBnBT8AMgSSAHgFtQCyBJIARgW7AE4FiQBaBVIAcgSGAGQEvQChBAMALwSJAGEEUQBkBCUAbQSJAJIEjwB7ApgAwwRvACYD7ABmBMUAKQSJAJIETgBlBIgAYQQsAFEEXgCQBaMAWAWaAGAGlwB6BKIAegRD/9oGSABLBgAAKwVlAHsIkgAyCKUAsgaDAD4FtACwBQsAowYEADMHQwAbBMAAUAW1ALIFqgAwBQgATQYtAFQF2gCvBXoAlweHALAHwACwBhIAEQbrALIFBQCjBWUAlAcnALcFGABaBG0AYgSTAJ4DXACbBNQALgYhABYEEABYBJ4AnQRTAJ0EoAAsBe8AngSdAJ0EngCdA9kAKAXOAGQEvgCdBFoAaAZ5AJ0GnwCSBPcAHgY2AJ4EWACeBE4AZAaIAJ4EZAAvBGj/5wROAGcGyQAnBuQAnQSJ//0EngCdBwkAnAYsAIEEV//bBywAuAX5AJoE0wAoBEcADwcMAMoGDAC9BtIAkwXiAJcJBQC3B9EAnAQkAFAD2wBMBXIAZwSMAFwFCwAWBAQALwVyAGcEiQBcBwEAnAYkAH4HCQCcBiwAgQUyAHYESABkBP4AdAAA/GYAAPxwAAD9ZQAA/aQAAPoaAAD6KwYJALIE7QCdBFf/2wUbAKkEigCMBGQAogORAJIE2wCyBAYAkgeiABsGYQAWBZoAsgS4AJ0FCgCkBH4AmwaMAEUFhAA/Bf8AqQTZAJ0HzwCpBbQAkggxALAG9ACSBe8AcQTUAG4FGAA6BCoAKgctADQFXQAfBbwAlwSWAGgFcACXBGsAhAVwAIkGMAA/BL7/3QUKAKQEWgCbBf4AMATvACwFswCyBIkAkgYSAKkE7ACdB08AqQY+AJ4FhwBeBKgAaASoAGoEuAA5A6sAOgUuADoEQAAqBPcAVwaVAFoG5QBkBlcANgUsADEESgBTBAgAeQfCAEUGdgA/B/sAqgaiAJAE9wB2BB4AZgWuACQFIQBGBWUAlwYCADAE8wAsAyEAcAQUAAAIKQAABBQAAAgpAAACuQAAAgoAAAFcAAAEfwAAAjAAAAGiAAABAAAAANEAAAAAAAACNAAmAjQAJgVAAKIGPwCQA6YADQGaAGEBmgAwAZgAJAGaAE8C1ABpAtwAPALCACQEagBGBJAAVwKzAIsDxACUBVoAlAF/AFIHqgBEAmcAbAJnAFoDowA8Au8AUQLvADYC7wBcAu8AVgLvADsC7wBPAu8ASgNhAHoC7wBRAu8AewLvAEIC7wA/Au8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBKcAWwZWAB8GkQCnCHYAqQXrAB8GKwCMBH8AXwXaAB8EIwArBHQAIQVIAF0FTwAfBegAewPOAGgIOgCiBQEAaAUYAJgGJgBUBtcAZQbPAGQGagBaBJAAagWPAKkErwBGBJMAqATFAD8IOgBjAg3/rwSCAGUEZACYBBEAPQQvAIQECAAsAkwAtQKQAG8CBABdBPMAPQRvACAEiwA9BtQAPQbUAD0E7gA9BpsAXwAAAAAINABbCDUAXALvAEIC7wB7Au8AUQQQAFYEEABhBBAAQgQPAHIEEACBBBAAMQQQAE8EEABPBBAAmQQQAGMEIwBIBCsADgRUACcGFQAxBGgAFAR9AHUEJwApBCAARARKAIoEvABaBF0AiwS8AGAE4wCLBgIAiwO1AIsEVQCLA88ALAHpAJgE5ACLBKwAZAPMAIsEIABEBDQAMQOhAA4DrwCLBGgAFAS8AGAEaAAUA4kAPgTPAIsD8ABABWcAYQUXAGEE8wB2BXMAJwR8AGEHQgAoB1AAiwV0ACkEzgCLBFoAiwUlAC4GCwAfBEAASATsAIsETgCMBMEAKAQgACMFKQCLBGoAPQZRAIsGrACLBR0ACQXxAIsETwCLBHwASwZ3AIsEhwBQBBIACwZIAB8EeQCMBQoAjAU3ACQFwwBgBF8ADgSoACcGYgAnBGoAPQRqAIsFxAACBMsAXgRAAEgEvABgBDQAMQPkAEMIIgCLBKsAKALvAD8C7wA2Au8AXALvAFYC7wA7Au8ATwLvAEoDlwCPArUAnwPmAIsEOgAfBMQAZAVMALIFJACyBBQAkwU9ALIEDwCTBIAAiwR8AGEEUQCLBIYAFAH+AJ8DpQCCAAD8owPwAG8D9P9dBA8AaQP1AGkDrwCLA6AAggOfAIIC7wBRAu8ANgLvAFwC7wBWAu8AOwLvAE8C7wBKBYIAfgWvAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpQCEAZIAaAakAGAEugCCAfz/tgR/ADsEfwBzBH8AIgR/AHYEfwB2BH8ANgR/AH4EfwBeBH8AcQR/APQCBv+0AgT/tAH7AJwB+//5AfsAnARRAIsFAAB4BCEAOwR+AIwEMwBdBJMAWwSMAFsEnwBaBI4AjAScAFsEPgBdBH4AYQRwAFoDeQBXBNYAaAO1AAEGOgAJA/kAiwS8AGAE4wAwBOMAiwH8AAACNgAmBV4AJQVeACUEhgABBMYAMgKe//QFOAAdBTgAHQU4AB0FOAAdBTgAHQU4AB0FOAAdBTUAeASMAKkEjACpBIwAqQSMAKkCLf/fAi0AsQIt/+oCLf/VBbUAqQWBAHcFgQB3BYEAdwWBAHcFgQB3BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EWgBtBDAAXQQ+AF0EPgBdBD4AXQQ+AF0B+//EAfsAlgH7/88B+/+6BGsAjQSQAFwEkABcBJAAXASQAFwEkABcBGkAiQRpAIkEaQCJBGkAiQPJABYDyQAWBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTUAeAQwAF0FNQB4BDAAXQU1AHgEMABdBTUAeAQwAF0FQACpBRkAXwSMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0FcwB6BH4AYQVzAHoEfgBhBXMAegR+AGEFcwB6BH4AYQW1AKkEaACNAi3/tgH7/5sCLf/NAfv/sgIt/+wB+//RAi0AFwHy//oCLQCqBpcAtwPcAI4EagA1AgT/tAUFAKkEDgCNBE8AogHyAJMETwCpAfIAVgRPAKkCiACcBE8AqQLOAJwFtQCpBGsAjQW1AKkEawCNBbUAqQRrAI0Ea/+7BYEAdwSQAFwFgQB3BJAAXAWBAHcEkABcBO4AqQK2AI0E7gCpArYAUwTuAKkCtgBkBMAAUQQhAF8EwABRBCEAXwTAAFEEIQBfBMAAUQQhAF8EwABRBCEAXwTGADICngAJBMYAMgKeAAkExgAyAsYACQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQUwAIwEaQCJBTAAjARpAIkFMACMBGkAiQcZAD0GAwArBM4ADwPJABYEzgAPBMsAVwP4AFkEywBXA/gAWQTLAFcD+ABZB3r/8QbCAE8FgQB3BIkAXASA/70EgP+9BCcAKQSGABQEhgAUBIYAFASGABQEhgAUBIYAFASGABQEfABhA+YAiwPmAIsD5gCLA+YAiwHp/7wB6QCOAen/xwHp/7IE4wCLBLwAYAS8AGAEvABgBLwAYAS8AGAEfQB1BH0AdQR9AHUEfQB1BCsADgSGABQEhgAUBIYAFAR8AGEEfABhBHwAYQR8AGEEgACLA+YAiwPmAIsD5gCLA+YAiwPmAIsErABkBKwAZASsAGQErABkBOQAiwHp/5MB6f+qAen/yQHpAAUB6QCHA88ALARVAIsDtQCDA7UAiwO1AIsDtQCLBOMAiwTjAIsE4wCLBLwAYAS8AGAEvABgBEoAigRKAIoESgCKBCAARAQgAEQEIABEBCAARAQnACkEJwApBCcAKQR9AHUEfQB1BH0AdQR9AHUEfQB1BH0AdQYVADEEKwAOBCsADgQjAEgEIwBIBCMASAU4AB0E8P+MBhn/mgKR/6AFlf/6BTL/dgVm//wCmP+bBTgAHQT8AKkEjACpBMsAVwW1AKkCLQC3BQUAqQb8AKkFtQCpBYEAdwUMAKkExgAyBM4ADwUEADoCLf/VBM4ADwSGAGQEUQBkBIkAkgKYAMMEXgCQBHQAmwSQAFwEiQCbA+AAIQRwAFoCmP/kBF4AkASQAFwEXgCQBpcAegSMAKkEcwCyBMAAUQItALcCLf/VBGoANQUkALIFBQCpBQgATQU4AB0E/ACpBHMAsgSMAKkFtQCyBvwAqQW1AKkFgQB3BbUAsgUMAKkFNQB4BMYAMgUEADoEWgBtBD4AXQSeAJ0EkABcBH4AjAQwAF0DyQAWA/gAKgQ+AF0DXACbBCEAXwHyAI4B+/+6Aer/vgRTAJ0DyQAWBxkAPQYDACsHGQA9BgMAKwcZAD0GAwArBM4ADwPJABYBZgBoApAAiQQgAKECBP+0AZoAMAb8AKkHBACLBTgAHQRaAG0EjACpBbUAsgQ+AF0EngCdBYkAWgWaAGAFCwAWBAT/+whZAFwJSgB3BMAAUAQQAFgFNQB4BDAAXQTOAA8EAwAvAi0AtwdDABsGIQAWAi0AtwU4AB0EWgBtBTgAHQRaAG0Hev/xBsIATwSMAKkEPgBdBYcAXgQ4AGMEOABjB0MAGwYhABYEwABQBBAAWAW1ALIEngCdBbUAsgSeAJ0FgQB3BJAAXAVyAGcEjABcBXIAZwSMAFwFZQCUBE4AZAUIAE0DyQAWBQgATQPJABYFCABNA8kAFgV6AJcEWgBoBusAsgY2AJ4EgwBfBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRa/8kFOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBTgAHQRaAG0FOAAdBFoAbQU4AB0EWgBtBIwAqQQ+AF0EjACpBD4AXQSMAKkEPgBdBIwAqQQ+AF0EjP/uBD7/uASMAKkEPgBdBIwAqQQ+AF0EjACpBD4AXQItALcB+wCcAi0ApAHyAIYFgQB3BJAAXAWBAHcEkABcBYEAdwSQAFwFgQBGBJD/wgWBAHcEkABcBYEAdwSQAFwFgQB3BJAAXAV/AGYEkwBcBX8AZgSTAFwFfwBmBJMAXAV/AGYEkwBcBX8AZgSTAFwFMACMBGkAiQUwAIwEaQCJBZAAjATzAIkFkACMBPMAiQWQAIwE8wCJBZAAjATzAIkFkACMBPMAiQTOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8ExgAyA9kAKAV6AJcEWgBoBHMAsgNcAJsGMAA/BL7/3QRoAI0FBf/UBQX/1ARzAAMDXP/9BTgACwQo/9MEzgAPBAMALwUEADoD+AAqBFEAZARsABIGPwCQBH8AXgR/AF8EfwA1BH8AmgSTAJkEpwCFBJMAZASnAIcFcwB6BH4AYQW1AKkEawCNBTgAHQRaADoEjABfBD4AKQIt/wsB+/7wBYEAdwSQADME7gBWArb/jAUwAIwEaQArBKf/OAT8AKkEfgCMBUAAqQSDAF8FQACpBIMAXwW1AKkEaACNBQUAqQQOAI0FBQCpBA4AjQRPAKkB8gCGBvwAqQcEAIsFtQCp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GRwfkhGaEcIWzBiqEdgUuhJ4EiIRNimwEVQmjhFUEVQTBBIiEXoYRBI8Ee4RChI8FQASIhJaGZIezBcmEloXJiWQJ5Ai1h1kEOwSPBEiPkQRVDe+JJ4okhIIEPIQ+EEuEP4UQhPWGhQ5sC1yNA4sJBKaMLY74hbMISoSmhKaFUYSmhKaEpoyYBqeEpoTfh4GHEAX4iO4HNIRQCIAEQoTVDXkRCwSIhR8KuYbKBLeEiIbshMqFnYUDBLeFyYTBBGaEjwTVBIiHswRQBbMEQoVkBWQFZASmhbMEQoSmhKaEloRQBbMEQoRBC8UEQQRBBEEERwV2hYoERYRLBEQERYREBFeERARiBJaEloSWhJaH5IXJhcmFyYXJhcmFyYXJhGIEWwRbBFsEWwSmhKaEpoSmhKaEloSWhJaEloSWhiqEngSeBJ4EngSeBJ4EngRNhE2ETYRNhFUEwQTBBMEEwQTBBI8EjwXJhJ4FyYSeBcmEngRiBGIEYgRiBJaEWwRNhFsETYRbBE2EWwRNhFsETYSmhFUEpoSmhKaEpoSmhWQEawRrBGsEawSmhFUEpoRVBKaEVQRVBJaEwQSWhMEEloTBBF6EXoReh+SH5IfkhHCGKoSPBiqEdgR2BHYERYRFhEcERAREBEQERAREBEQERARFhEWERYRFhEWERAREBEQERYRLBEsESwRLBEWERYRFhEcFyYRbBKaEpoSWhiqFyYRShFsEdgSmhKaFZASmhKaEloSvB+SGKoWzBKaGKoRVBMEEjwTBBFsHswSmhKaFZAVkBVGFyYRSh7MEWwSmhKaEloSvBGIH5IWzBJ4ETYTBBIiEjwRChE2EUASPBHCEcIRwhiqEjwRBBEEEQQSmhFUFyYSeBFsETYRmhI8EYgYqhI8EpoWzBEKEpoXJhJ4FyYSeBFsETYRNhE2FswRChJaEwQTBBIiFUYSPBVGEjwVRhI8FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4FyYSeBcmEngXJhJ4EWwRNhFsETYRbBE2EWwRNhFsETYRbBE2EWwRNhFsETYSmhKaEloTBBJaEwQSWhMEEloTBBJaEwQSWhMEEloTBBMEGKoSPBiqEjwYqhI8H5IezBFAEVQTfh7MFZAYqhKaEVQXJhJ4EWwSmhJaEwQRehFKEiISWhJaEpoRVBWQFZARrBKa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/+wCtP/sArX/7AK2/+wCzv/sAtD/7ALS/+wC1P/sAtb/7ALY/+wC2v/sAtz/7ALe/+wC4P/sAuL/7ALk/+wC5v/sAuj/7AOv/+wD1f/sA9n/7APc/+wD9//sA/3/7AQC/+wEEP/sBBL/7AQT/+wEH//sBC7/7ARI/+wESv/sBEz/7ARO/+wEUP/sBFL/7ARU/+wEVv/sBGr/7ARs/+wEbv/sBHL/7ASt/+wEuv/sBLz/7ABAACf/5gAr/+YAM//mADX/5gCD/+YAk//mAJj/5gCz/+YAuP/CAMQAEADT/+YBCP/mARf/5gEb/+YBHf/mAR//5gEh/+YBQf/mAWr/5gJV/+YCVv/mAlj/5gJZ/+YCl//mAqH/5gKi/+YCo//mAqT/5gKl/+YCzf/mAs//5gLR/+YC0//mAuH/5gLj/+YC5f/mAuf/5gMJ/+YDC//mAw3/5gM+/+YDm//mA6j/5gPO/+YD0f/mA/7/5gQB/+YEHP/mBB7/5gQg/+YEW//mBF3/5gRf/+YEYf/mBGP/5gRl/+YEZ//mBGn/5gRr/+YEbf/mBG//5gRx/+YEsP/mBMn/5gBHABAAAAASAAAAR//nAEj/5wBJ/+cAS//nAFX/5wCU/+cAmf/nALv/5wDEAA8AyP/nAMn/5wD3/+cBA//nAR7/5wEi/+cBQv/nAWD/5wFh/+cBa//nAYYAAAGKAAABjgAAAY8AAAKy/+cCs//nArT/5wK1/+cCtv/nAs7/5wLQ/+cC0v/nAtT/5wLW/+cC2P/nAtr/5wLc/+cC3v/nAuD/5wLi/+cC5P/nAub/5wLo/+cDr//nA9X/5wPZ/+cD3P/nA/f/5wP9/+cEAv/nBBD/5wQS/+cEE//nBB//5wQu/+cESP/nBEr/5wRM/+cETv/nBFD/5wRS/+cEVP/nBFb/5wRq/+cEbP/nBG7/5wRy/+cErf/nBLr/5wS8/+cATQAGABAACwAQAA0AFABBABIAR//oAEj/6ABJ/+gAS//oAFX/6ABhABMAlP/oAJn/6AC7/+gAyP/oAMn/6AD3/+gBA//oAR7/6AEi/+gBQv/oAWD/6AFh/+gBa//oAYQAEAGFABABhwAQAYgAEAGJABACsv/oArP/6AK0/+gCtf/oArb/6ALO/+gC0P/oAtL/6ALU/+gC1v/oAtj/6ALa/+gC3P/oAt7/6ALg/+gC4v/o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A9z/sAPjAAsD6wALA+wADQPtAA0D8AANA/T/8AP3/7AD/AALA/3/sAQC/7AEBAALBAr/8AQM//AEEP+wBBL/sAQT/7AEHf/WBB//sAQh/9YEJQALBCcACwQpAAsELv+wBDD/8AQy//AENP/wBDb/8AQ4//AEOv/wBDz/8AQ+//AEQP/wBEL/8ARE//AERv/wBEj/sARK/7AETP+wBE7/sARQ/7AEUv+wBFT/sARW/7AEXP/WBF7/1gRg/9YEYv/WBGT/1gRm/9YEaP/WBGr/sARs/7AEbv+wBHD/1gRy/7AEggALBIQACwSGAAsEq//wBK3/sASx/9YEuv+wBLz/sATUAAsE1gALBNz/vwTg/+0E4QANBOP/vwTvAA0E8gANBPv/vwUC/+0FBf/tBQYADgUK/+0FCwANAOcAEP8WABL/FgAl/1YALv74ADgAFABF/94AR//rAEj/6wBJ/+sAS//rAFP/6wBV/+sAVv/mAFn/6gBa/+gAXf/oAJT/6wCZ/+sAm//qALL/VgC0/1YAu//rAL3/6ADI/+sAyf/rAMv/6gDSABQA1gAUAPf/6wED/+sBDf9WARj/6wEa/+gBHv/rASL/6wE5ABQBQv/rAUUAFAFg/+sBYf/rAWv/6wGG/xYBiv8WAY7/FgGP/xYB+//AAf3/wAJD/8ACkP9WApH/VgKS/1YCk/9WApT/VgKV/1YClv9WAqv/3gKs/94Crf/eAq7/3gKv/94CsP/eArH/3gKy/+sCs//rArT/6wK1/+sCtv/rArz/6wK9/+sCvv/rAr//6wLA/+sCwf/qAsL/6gLD/+oCxP/qAsX/6ALG/+gCx/9WAsj/3gLJ/1YCyv/eAsv/VgLM/94Czv/rAtD/6wLS/+sC1P/rAtb/6wLY/+sC2v/rAtz/6wLe/+sC4P/rAuL/6wLk/+sC5v/rAuj/6wL2/vgDCv/rAwz/6wMO/+sDHwAUAyEAFAMjABQDJv/qAyj/6gMq/+oDLP/qAy7/6gMw/+oDNP/oA0P/wANE/8ADRf/AA0b/wANH/8ADSP/AA0n/wANe/8ADX//AA2D/wAOX/1YDn/9WA6//6wOz/+oDtf/rA7f/6AO6/+oDu//rA7z/6gPD/vgDx/9WA9IAFAPU/94D1f/rA9f/6wPZ/+sD2v/oA9z/6wPj/+gD6//oA/P/VgP0/94D9//rA/z/6AP9/+sEAv/rBAT/6AQJ/1YECv/eBAv/VgQM/94EEP/rBBL/6wQT/+sEHf/rBB//6wQh/+sEJf/oBCf/6AQp/+gELv/rBC//VgQw/94EMf9WBDL/3gQz/1YENP/eBDX/VgQ2/94EN/9WBDj/3gQ5/1YEOv/eBDv/VgQ8/94EPf9WBD7/3gQ//1YEQP/eBEH/VgRC/94EQ/9WBET/3gRF/1YERv/eBEj/6wRK/+sETP/rBE7/6wRQ/+sEUv/rBFT/6wRW/+sEXP/rBF7/6wRg/+sEYv/rBGT/6wRm/+sEaP/rBGr/6wRs/+sEbv/rBHD/6wRy/+sEdP/qBHb/6gR4/+oEev/qBHz/6gR+/+oEgP/qBIL/6ASE/+gEhv/oBIgAFASq/1YEq//eBK3/6wSx/+sEtf/qBLr/6wS8/+sE0AAUBNT/6ATW/+gE3P/ABOP/wAT7/8AAAgCgAAQABAAAAAYABgABAAsADAACABMAEwAEACUAKgAFACwALQALAC8ANgANADgAOAAVADoAPwAWAEUARgAcAEkASgAeAEwATAAgAE8ATwAhAFEAVAAiAFYAVgAmAFgAWAAnAFoAXQAoAF8AXwAsAIoAigAtAJYAlgAuAJ0AnQAvALEAtQAwALcAuQA1ALsAuwA4AL0AvgA5AMAAwQA7AMMAxQA9AMcAzgBAANIA0gBIANQA3gBJAOAA7wBUAPEA8QBkAPYA+ABlAPsA/ABoAP4BAABqAQMBBQBtAQoBCgBwAQ0BDQBxARgBGgByASIBIgB1AS4BMAB2ATMBNQB5ATcBNwB8ATkBOQB9ATsBOwB+AUMBRAB/AVQBVACBAVYBVgCCAVgBWACDAVwBXgCEAYQBhQCHAYcBiQCJAegB6ACMAeoB6wCNAe0B7QCPAfAB8ACQAfsB/QCRAkACQACUAkMCQwCVAlUCVQCWAlcCWACXAosCjACZAo4CjgCbApACpQCcAqoCsQCyArMCtgC6ArsCwAC+AsUCzQDEAs8CzwDNAtEC0QDOAtMC0wDPAtUC1QDQAtcC4ADRAukC6wDbAu0C7QDeAu8C7wDfAvEC8QDgAvMC8wDhAvgC+ADiAvoC+gDjAvwC/ADkAv4C/gDlAwADAADmAwIDDgDnAxADEAD0AxIDEgD1AxQDFAD2Ax8DHwD3AyEDIQD4AyMDIwD5AzEDMQD6AzMDNgD7AzgDOAD/AzoDOgEAA0ADSQEBA1QDWAELA14DYAEQA2UDZQETA3cDegEUA34DgAEYA4kDiQEbA5cDnAEcA58DrgEiA7EDsQEyA7UDtQEzA7cDtwE0A7sDuwE1A74DvwE2A8EDwgE4A8QDygE6A8wDzgFBA9AD1QFEA9cD2AFKA9oD3QFMA+MD5AFQA+YD5gFSA+gD6AFTA+oD7QFUA/AD9QFYA/cD9wFeA/sD/AFfBAEEAQFhBAMEDAFiBA8EEAFsBBIEFQFuBBwEHQFyBCEEIQF0BCMEKQF1BC8EVwF8BFkEWQGlBFsEaAGmBHAEcAG0BIEEhgG1BIgEiAG7BIwEjQG8BJAEkAG+BJIEkwG/BJUElQHBBJcElwHCBKgErAHDBK4ErgHIBLAEsQHJBLMEswHLBLcEuQHMBLsEuwHPBL0EvwHQBMEEwQHTBMMEwwHUBMUEywHVBM0EzQHcBNAE0AHdBNME1wHeBNkE2QHjBNsE3AHkBOAE4AHmBOME4wHnBO4E7gHoBPsE+wHpBQIFAgHqBQYFBgHrAAIAmgAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCWAJYAKACxALQAKQC9AL0ALQDBAMEALgDHAMcALwDUANUAMADXANcAMgDaANoAMwDcAN4ANADgAOYANwDsAOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHoAegAZQHtAe0AZgHwAfEAZwH7Af0AaQIPAg8AbAIeAiAAbQJAAkAAcAJDAkMAcQJVAlUAcgJXAlgAcwKLAowAdQKOAo4AdwKQArYAeAK7AsAAnwLFAtUApQLXAuAAtgLpAusAwALtAu0AwwLvAu8AxALxAvEAxQLzAvMAxgL2AvYAxwL4AvgAyAL6AvoAyQL8AvwAygL+Av4AywMAAwAAzAMCAw4AzQMQAxAA2gMSAxIA2wMUAxQA3AMfAx8A3QMhAyEA3gMjAyMA3wMlAyUA4AMnAycA4QMp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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAAAjAAAAAAAAAAAAAgAAAAIAAAAUAA0ACwAaABYAEAAMABcAAAAAAAAAAAAAAAAABgAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAwADAAcAAwABAAAAEQAAAAgACQAAABMACQAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAAAAAAAAAIAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIABAAAAAAAAAAAAAAAAAABAAAACQAAAAAAAAADAAAAAAAAAAAAAAAAAAEAAQAAAAgAAAAAAAAAAAAAAAAADQACAB4AAAANAAAAAAAAABAAAAAAAB4AHwAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAATAAAAAwADACEAAwADAAMAAAABAAMAIgADAAMAAAAAAAMAAAADAAAAAAABACEAAwAAAAAAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgAHABoACQACAAAAAgABAAIAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAQABMAAAADAAAAAAANAAAAAAADAAAAAwAAAAAAAgABABAAEwANAAAAIAAiAAAAAAAAAAAAAAAAAAAAHgAhAAAAAwAAAAMAAAADAAAAAAAAAAAAAwAQABMAAAABAAEAAAAAAAAAAAAeAAAAAAAAAAIAAQAAAAAAAAAeACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbABsAAAAPAA8AGAAPAA8ADwAYAAAAAAAAABgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAZACQAAAAOABUAHAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAACgAFAAoAAAAAAAAAAAAAAAAAFQAFAAAAAAAVAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAVAAUAEgAZABUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACwALAAsACwAMAAYABgAGAAYABgAGAAYAAQABAAEAAQABAAAAAAAAAAAAAwAHAAcABwAHAAcACAAIAAgACAAJAAkABAAGAAQABgAEAAYAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAHAAIABwACAAcAAAAAAAAAAAAAAAAAFAARABQAEQAUABEAFAARABQAEQANAAAADQAAAA0AAAALAAgACwAIAAsACAALAAgACwAIAAsACAAWAAAADAAJAAwAFwAdABcAHQAXAB0AAAAAAAIAAAAAAAAAAAAKAAoACgAKAAoACgAKAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAA4ADgAOAA4AEgAKAAoACgAFAAUABQAFAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAHAAcABwAHAAAABUAAAAOAA4ADgAOAA4ADgAkABIAEgAAAAAAAAAE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"
36
};
37
38
/*! DataTables 2.3.7
14
 * © SpryMedia Ltd - datatables.net/license
39
 * © SpryMedia Ltd - datatables.net/license
15
 */
40
 */
16
!function(n){"use strict";var r;"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e,window,document)}):"object"==typeof exports?(r=require("jquery"),"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||r(e),n(t,e,e.document)}:module.exports=n(r,window,window.document)):window.DataTable=n(jQuery,window,document)}(function(H,W,S){"use strict";function f(e){var t=parseInt(e,10);return!isNaN(t)&&isFinite(e)?t:null}function c(e,t,n,r){var a=typeof e,o="string"==a;return"number"==a||"bigint"==a||!(!r||!_(e))||(t&&o&&(e=E(e,t)),n&&o&&(e=e.replace(P,"")),!isNaN(parseFloat(e))&&isFinite(e))}function n(e,t,n,r){var a;return!(!r||!_(e))||("string"!=typeof e||!e.match(/<(input|select)/i))&&(_(a=e)||"string"==typeof a)&&!!c(w(e),t,n,r)||null}function v(e,t,n,r){var a=[],o=0,i=t.length;if(void 0!==r)for(;o<i;o++)e[t[o]]&&e[t[o]][n]&&a.push(e[t[o]][n][r]);else for(;o<i;o++)e[t[o]]&&a.push(e[t[o]][n]);return a}function h(e,t){var n,r=[];void 0===t?(t=0,n=e):(n=t,t=e);for(var a=t;a<n;a++)r.push(a);return r}function A(e){for(var t=[],n=0,r=e.length;n<r;n++)e[n]&&t.push(e[n]);return t}var T,X,r,e,V=function(e,P){var E,k,M;return V.factory(e,P)?V:this instanceof V?H(e).DataTable(P):(k=void 0===(P=e),M=(E=this).length,k&&(P={}),this.api=function(){return new X(this)},this.each(function(){var t=1<M?tt({},P,!0):P,e=0,n=this.getAttribute("id"),r=V.defaults,a=H(this);if("table"!=this.nodeName.toLowerCase())z(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{t.on&&t.on.options&&lt(a,"options",t.on.options),a.trigger("options.dt",t),Q(r),K(r.column),B(r,r,!0),B(r.column,r.column,!0),B(r,H.extend(t,st(a.data())),!0);var o=V.settings;for(e=0,j=o.length;e<j;e++){var i=o[e];if(i.nTable==this||i.nTHead&&i.nTHead.parentNode==this||i.nTFoot&&i.nTFoot.parentNode==this){var l=(void 0!==t.bRetrieve?t:r).bRetrieve,s=(void 0!==t.bDestroy?t:r).bDestroy;if(k||l)return i.oInstance;if(s){new V.Api(i).destroy();break}return void z(i,0,"Cannot reinitialise DataTable",3)}if(i.sTableId==this.id){o.splice(e,1);break}}null!==n&&""!==n||(n="DataTables_Table_"+V.ext._unique++,this.id=n),a.children("colgroup").remove();var u,c=H.extend(!0,{},V.models.oSettings,{sDestroyWidth:a[0].style.width,sInstance:n,sTableId:n,colgroup:H("<colgroup>").prependTo(this),fastData:function(e,t,n){return q(c,e,t,n)}}),n=(c.nTable=this,c.oInit=t,o.push(c),c.api=new X(c),c.oInstance=1===E.length?E:a.dataTable(),Q(t),t.aLengthMenu&&!t.iDisplayLength&&(t.iDisplayLength=Array.isArray(t.aLengthMenu[0])?t.aLengthMenu[0][0]:H.isPlainObject(t.aLengthMenu[0])?t.aLengthMenu[0].value:t.aLengthMenu[0]),t=tt(H.extend(!0,{},r),t),$(c.oFeatures,t,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),$(c,t,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout","orderDescReverse","orderIndicators","orderHandler","titleRow","typeDetect",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),$(c.oScroll,t,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),$(c.oLanguage,t,"fnInfoCallback"),Y(c,"aoDrawCallback",t.fnDrawCallback),Y(c,"aoStateSaveParams",t.fnStateSaveParams),Y(c,"aoStateLoadParams",t.fnStateLoadParams),Y(c,"aoStateLoaded",t.fnStateLoaded),Y(c,"aoRowCallback",t.fnRowCallback),Y(c,"aoRowCreatedCallback",t.fnCreatedRow),Y(c,"aoHeaderCallback",t.fnHeaderCallback),Y(c,"aoFooterCallback",t.fnFooterCallback),Y(c,"aoInitComplete",t.fnInitComplete),Y(c,"aoPreDrawCallback",t.fnPreDrawCallback),c.rowIdFn=U(t.rowId),t.on&&Object.keys(t.on).forEach(function(e){lt(a,e,t.on[e])}),c),d=(V.__browser||(f={},V.__browser=f,p=H("<div/>").css({position:"fixed",top:0,left:-1*W.pageXOffset,height:1,width:1,overflow:"hidden"}).append(H("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(H("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=p.children(),u=d.children(),f.barWidth=d[0].offsetWidth-d[0].clientWidth,f.bScrollbarLeft=1!==Math.round(u.offset().left),p.remove()),H.extend(n.oBrowser,V.__browser),n.oScroll.iBarWidth=V.__browser.barWidth,c.oClasses),f=(H.extend(d,V.ext.classes,t.oClasses),a.addClass(d.table),c.oFeatures.bPaginate||(t.iDisplayStart=0),void 0===c.iInitDisplayStart&&(c.iInitDisplayStart=t.iDisplayStart,c._iDisplayStart=t.iDisplayStart),t.iDeferLoading),h=(null!==f&&(c.deferLoading=!0,u=Array.isArray(f),c._iRecordsDisplay=u?f[0]:f,c._iRecordsTotal=u?f[1]:f),[]),p=this.getElementsByTagName("thead"),n=Ne(c,p[0]);if(t.aoColumns)h=t.aoColumns;else if(n.length)for(j=n[e=0].length;e<j;e++)h.push(null);for(e=0,j=h.length;e<j;e++)ee(c);var g,m,v,b,y,D,x,S=c,w=t.aoColumnDefs,T=h,_=n,C=function(e,t){te(c,e,t)},I=S.aoColumns;if(T)for(g=0,m=T.length;g<m;g++)T[g]&&T[g].name&&(I[g].sName=T[g].name);if(w)for(g=w.length-1;0<=g;g--){var L=void 0!==(x=w[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(L)||(L=[L]),v=0,b=L.length;v<b;v++){var A=L[v];if("number"==typeof A&&0<=A){for(;I.length<=A;)ee(S);C(A,x)}else if("number"==typeof A&&A<0)C(I.length+A,x);else if("string"==typeof A)for(y=0,D=I.length;y<D;y++)"_all"===A?C(y,x):-1!==A.indexOf(":name")?I[y].sName===A.replace(":name","")&&C(y,x):_.forEach(function(e){e[y]&&(e=H(e[y].cell),A.match(/^[a-z][\w-]*$/i)&&(A="."+A),e.is(A))&&C(y,x)})}}if(T)for(g=0,m=T.length;g<m;g++)C(g,T[g]);var N,n=a.children("tbody").find("tr:first-child").eq(0),F=(n.length&&(N=function(e,t){return null!==e.getAttribute("data-"+t)?t:null},H(n[0]).children("th, td").each(function(e,t){var n,r=c.aoColumns[e];r||z(c,0,"Incorrect column count",18),r.mData===e&&(n=N(t,"sort")||N(t,"order"),t=N(t,"filter")||N(t,"search"),null===n&&null===t||(r.mData={_:e+".display",sort:null!==n?e+".@data-"+n:void 0,type:null!==n?e+".@data-"+n:void 0,filter:null!==t?e+".@data-"+t:void 0},r._isArrayHost=!0,te(c,e)))})),Y(c,"aoDrawCallback",Ke),c.oFeatures);if(t.bStateSave&&(F.bStateSave=!0),void 0===t.aaSorting)for(var O=c.aaSorting,e=0,j=O.length;e<j;e++)O[e][1]=c.aoColumns[e].asSorting[0];Qe(c),Y(c,"aoDrawCallback",function(){(c.bSorted||"ssp"===J(c)||F.bDeferRender)&&Qe(c)});var n=a.children("caption"),n=(c.caption&&(n=0===n.length?H("<caption/>").appendTo(a):n).html(c.caption),n.length&&(n[0]._captionSide=n.css("caption-side"),c.captionNode=n[0]),0===p.length&&(p=H("<thead/>").appendTo(a)),c.nTHead=p[0],a.children("tbody")),n=(0===n.length&&(n=H("<tbody/>").insertAfter(p)),c.nTBody=n[0],a.children("tfoot")),R=(0===n.length&&(n=H("<tfoot/>").appendTo(a)),c.nTFoot=n[0],c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,R,t.oLanguage),R.sUrl?H.ajax({dataType:"json",url:R.sUrl,success:function(e){B(r.oLanguage,e),H.extend(!0,R,e,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),He(c)},error:function(){z(c,0,"i18n file loading error",21),He(c)}}):(G(c,null,"i18n",[c],!0),He(c))}}),E=null,this)},d=(V.ext=T={builder:"dt/dt-2.3.4/b-3.2.5/b-colvis-3.2.5/b-html5-3.2.5/b-print-3.2.5/r-3.0.7",buttons:{},ccContent:{},classes:{},errMode:"alert",escape:{attributes:!1},feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(T,{afnFiltering:T.search,aTypes:T.type.detect,ofnSearch:T.type.search,oSort:T.type.order,afnSortData:T.order,aoFeatures:T.feature,oStdClasses:T.classes,oPagination:T.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),N=/[\r\n\u2028]/g,F=/<([^>]*>)/g,O=Math.pow(2,28),j=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,R=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),P=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,_=function(e){return!e||!0===e||"-"===e},E=function(e,t){return d[t]||(d[t]=new RegExp(Ee(t),"g")),"string"==typeof e&&"."!==t?e.replace(/\./g,"").replace(d[t],"."):e},b=function(e,t,n){var r=[],a=0,o=e.length;if(void 0!==n)for(;a<o;a++)e[a]&&e[a][t]&&r.push(e[a][t][n]);else for(;a<o;a++)e[a]&&r.push(e[a][t]);return r},w=function(e){if(!e||"string"!=typeof e)return e;if(e.length>O)throw new Error("Exceeded max str len");var t;for(e=e.replace(F,"");(e=(t=e).replace(/<script/i,""))!==t;);return t},u=function(e){return"string"==typeof(e=Array.isArray(e)?e.join(","):e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):e},k=function(e,t){var n;return"string"!=typeof e?e:(n=e.normalize?e.normalize("NFD"):e).length!==e.length?(!0===t?e+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},C=function(e){if(Array.from&&Set)return Array.from(new Set(e));if(function(e){if(!(e.length<2))for(var t=e.slice().sort(),n=t[0],r=1,a=t.length;r<a;r++){if(t[r]===n)return!1;n=t[r]}return!0}(e))return e.slice();var t,n,r,a=[],o=e.length,i=0;e:for(n=0;n<o;n++){for(t=e[n],r=0;r<i;r++)if(a[r]===t)continue e;a.push(t),i++}return a},M=function(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)M(e,t[n]);else e.push(t);return e};function y(t,e){e&&e.split(" ").forEach(function(e){e&&t.classList.add(e)})}function Z(t){var n,r,a={};H.each(t,function(e){(n=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(r=e.replace(n[0],n[2].toLowerCase()),a[r]=e,"o"===n[1])&&Z(t[e])}),t._hungarianMap=a}function B(t,n,r){var a;t._hungarianMap||Z(t),H.each(n,function(e){void 0===(a=t._hungarianMap[e])||!r&&void 0!==n[a]||("o"===a.charAt(0)?(n[a]||(n[a]={}),H.extend(!0,n[a],n[e]),B(t[a],n[a],r)):n[a]=n[e])})}V.util={diacritics:function(e,t){if("function"!=typeof e)return k(e,t);k=e},debounce:function(n,r){var a;return function(){var e=this,t=arguments;clearTimeout(a),a=setTimeout(function(){n.apply(e,t)},r||250)}},throttle:function(r,e){var a,o,i=void 0!==e?e:200;return function(){var e=this,t=+new Date,n=arguments;a&&t<a+i?(clearTimeout(o),o=setTimeout(function(){a=void 0,r.apply(e,n)},i)):(a=t,r.apply(e,n))}},escapeRegex:function(e){return e.replace(R,"\\$1")},set:function(r){var f;return H.isPlainObject(r)?V.util.set(r._):null===r?function(){}:"function"==typeof r?function(e,t,n){r(e,"set",t,n)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(e,t){e[r]=t}:(f=function(e,t,n){for(var r,a,o,i,l=ge(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(r=l[s].match(pe),a=l[s].match(p),r){if(l[s]=l[s].replace(pe,""),e[l[s]]=[],(r=l.slice()).splice(0,s+1),i=r.join("."),Array.isArray(t))for(var c=0,d=t.length;c<d;c++)f(o={},t[c],i),e[l[s]].push(o);else e[l[s]]=t;return}a&&(l[s]=l[s].replace(p,""),e=e[l[s]](t)),null!==e[l[s]]&&void 0!==e[l[s]]||(e[l[s]]={}),e=e[l[s]]}n.match(p)?e[n.replace(p,"")](t):e[n.replace(pe,"")]=t},function(e,t){return f(e,t,r)})},get:function(a){var o,f;return H.isPlainObject(a)?(o={},H.each(a,function(e,t){t&&(o[e]=V.util.get(t))}),function(e,t,n,r){var a=o[t]||o._;return void 0!==a?a(e,t,n,r):e}):null===a?function(e){return e}:"function"==typeof a?function(e,t,n,r){return a(e,t,n,r)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(e){return e[a]}:(f=function(e,t,n){var r,a,o;if(""!==n)for(var i=ge(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(pe),r=i[l].match(p),d){if(i[l]=i[l].replace(pe,""),""!==i[l]&&(e=e[i[l]]),a=[],i.splice(0,l+1),o=i.join("."),Array.isArray(e))for(var u=0,c=e.length;u<c;u++)a.push(f(e[u],t,o));var d=d[0].substring(1,d[0].length-1);e=""===d?a:a.join(d);break}if(r)i[l]=i[l].replace(p,""),e=e[i[l]]();else{if(null===e||null===e[i[l]])return null;if(void 0===e||void 0===e[i[l]])return;e=e[i[l]]}}return e},function(e,t){return f(e,t,a)})},stripHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t?w(e):e;w=e},escapeHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t||Array.isArray(e)?u(e):e;u=e},unique:C};var a=function(e,t,n){void 0!==e[t]&&(e[n]=e[t])};function Q(e){a(e,"ordering","bSort"),a(e,"orderMulti","bSortMulti"),a(e,"orderClasses","bSortClasses"),a(e,"orderCellsTop","bSortCellsTop"),a(e,"order","aaSorting"),a(e,"orderFixed","aaSortingFixed"),a(e,"paging","bPaginate"),a(e,"pagingType","sPaginationType"),a(e,"pageLength","iDisplayLength"),a(e,"searching","bFilter"),"boolean"==typeof e.sScrollX&&(e.sScrollX=e.sScrollX?"100%":""),"boolean"==typeof e.scrollX&&(e.scrollX=e.scrollX?"100%":""),"object"==typeof e.bSort?(e.orderIndicators=void 0===e.bSort.indicators||e.bSort.indicators,e.orderHandler=void 0===e.bSort.handler||e.bSort.handler,e.bSort=!0):!1===e.bSort?(e.orderIndicators=!1,e.orderHandler=!1):!0===e.bSort&&(e.orderIndicators=!0,e.orderHandler=!0),"boolean"==typeof e.bSortCellsTop&&(e.titleRow=e.bSortCellsTop);var t=e.aoSearchCols;if(t)for(var n=0,r=t.length;n<r;n++)t[n]&&B(V.models.oSearch,t[n]);e.serverSide&&!e.searchDelay&&(e.searchDelay=400)}function K(e){a(e,"orderable","bSortable"),a(e,"orderData","aDataSort"),a(e,"orderSequence","asSorting"),a(e,"orderDataType","sortDataType");var t=e.aDataSort;"number"!=typeof t||Array.isArray(t)||(e.aDataSort=[t])}function ee(e){var t=V.defaults.column,n=e.aoColumns.length,t=H.extend({},V.models.oColumn,t,{aDataSort:t.aDataSort||[n],mData:t.mData||n,idx:n,searchFixed:{},colEl:H("<col>").attr("data-dt-column",n)}),t=(e.aoColumns.push(t),e.aoPreSearchCols);t[n]=H.extend({},V.models.oSearch,t[n])}function te(e,t,n){function r(e){return"string"==typeof e&&-1!==e.indexOf("@")}var a=e.aoColumns[t],o=(null!=n&&(K(n),B(V.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(a._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),t=a.sClass,H.extend(a,n),$(a,n,"sWidth","sWidthOrig"),t!==a.sClass&&(a.sClass=t+" "+a.sClass),void 0!==n.iDataSort&&(a.aDataSort=[n.iDataSort]),$(a,n,"aDataSort")),a.mData),i=U(o);a.mRender&&Array.isArray(a.mRender)&&(n=(t=a.mRender.slice()).shift(),a.mRender=V.render[n].apply(W,t)),a._render=a.mRender?U(a.mRender):null;a._bAttrSrc=H.isPlainObject(o)&&(r(o.sort)||r(o.type)||r(o.filter)),a._setter=null,a.fnGetData=function(e,t,n){var r=i(e,t,void 0,n);return a._render&&t?a._render(r,t,e,n):r},a.fnSetData=function(e,t,n){return m(o)(e,t,n)},"number"==typeof o||a._isArrayHost||(e._rowReadObject=!0),e.oFeatures.bSort||(a.bSortable=!1)}function ne(e){!function(t){if(t.oFeatures.bAutoWidth){var e,n,r=t.nTable,a=t.aoColumns,o=t.oScroll,i=o.sY,l=o.sX,o=o.sXInner,s=ie(t,"bVisible"),u=r.getAttribute("width"),c=r.parentNode,d=r.style.width,f=ze(t);if(f===t.containerWidth)return;t.containerWidth=f,d||u||(r.style.width="100%",d="100%"),d&&-1!==d.indexOf("%")&&(u=d),G(t,null,"column-calc",{visible:s},!1);var f=H(r.cloneNode()).css("visibility","hidden").removeAttr("id"),h=(f.append("<tbody/>"),H("<tr/>").appendTo(f.find("tbody")));for(f.append(H(t.nTHead).clone()).append(H(t.nTFoot).clone()),f.find("tfoot th, tfoot td").css("width",""),f.find("thead th, thead td").each(function(){var e=ce(t,this,!0,!1);e?(this.style.width=e,l&&(this.style.minWidth=e,H(this).append(H("<div/>").css({width:e,margin:0,padding:0,border:0,height:1})))):this.style.width=""}),e=0;e<s.length;e++){p=s[e],n=a[p];var p=function(e,t){var n=e.aoColumns[t];if(!n.maxLenString){for(var r,a="",o=-1,i=0,l=e.aiDisplayMaster.length;i<l;i++){var s=e.aiDisplayMaster[i],s=De(e,s)[t],s=s&&"object"==typeof s&&s.nodeType?s.innerHTML:s+"";s=s.replace(/id=".*?"/g,"").replace(/name=".*?"/g,""),(r=w(s).replace(/&nbsp;/g," ")).length>o&&(a=s,o=r.length)}n.maxLenString=a}return n.maxLenString}(t,p),g=T.type.className[n.sType],m=p+n.sContentPadding,p=-1===p.indexOf("<")?S.createTextNode(m):m;H("<td/>").addClass(g).addClass(n.sClass).append(p).appendTo(h)}H("[name]",f).removeAttr("name");var v,b,d=H("<div/>").css(l||i?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(f).appendTo(c),y=(l&&o?f.width(o):l?(f.css("width","auto"),f.removeAttr("width"),f.outerWidth()<c.clientWidth&&u&&f.outerWidth(c.clientWidth)):i?f.outerWidth(c.clientWidth):u&&f.outerWidth(u),0),D=f.find("tbody tr").eq(0).children();for(e=0;e<s.length;e++){var x=D[e].getBoundingClientRect().width;y+=x,a[s[e]].sWidth=L(x)}r.style.width=L(y),d.remove(),u&&(r.style.width=L(u)),!u&&!l||t._reszEvt||(v=V.util.throttle(function(){var e=ze(t);t.bDestroying||0===e||ne(t)}),W.ResizeObserver?(b=H(t.nTableWrapper).is(":visible"),o=H("<div>").css({width:"100%",height:0}).addClass("dt-autosize").appendTo(t.nTableWrapper),t.resizeObserver=new ResizeObserver(function(e){b?b=!1:v()}),t.resizeObserver.observe(o[0])):H(W).on("resize.DT-"+t.sInstance,v),t._reszEvt=!0)}}(e);for(var t=e,n=t.aoColumns,r=0;r<n.length;r++){var a=ce(t,[r],!1,!1);n[r].colEl.css("width",a),t.oScroll.sX&&n[r].colEl.css("min-width",a)}var o=e.oScroll;""===o.sY&&""===o.sX||Ue(e),G(e,null,"column-sizing",[e])}function re(e,t){e=ie(e,"bVisible");return"number"==typeof e[t]?e[t]:null}function ae(e,t){e=ie(e,"bVisible").indexOf(t);return-1!==e?e:null}function oe(e){var t=e.aoHeader,n=e.aoColumns,r=0;if(t.length)for(var a=0,o=t[0].length;a<o;a++)n[a].bVisible&&"none"!==H(t[0][a].cell).css("display")&&r++;return r}function ie(e,n){var r=[];return e.aoColumns.map(function(e,t){e[n]&&r.push(t)}),r}function le(e,t){return!0===t?e._name:t}function se(e){for(var t,n,r,a,o,i,l=e.aoColumns,s=e.aoData,u=V.ext.type.detect,c=0,d=l.length;c<d;c++){if(i=[],!(o=l[c]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){if(!e.typeDetect)return;for(t=0,n=u.length;t<n;t++){var f=u[t],h=f.oneOf,p=f.allOf||f,g=f.init,m=!1,v=null;if(g&&(v=le(f,g(e,o,c)))){o.sType=v;break}for(r=0,a=s.length;r<a;r++)if(s[r]){if(void 0===i[r]&&(i[r]=q(e,r,c,"type")),h&&!m&&(m=le(f,h(i[r],e))),!(v=le(f,p(i[r],e)))&&t!==u.length-3)break;if("html"===v&&!_(i[r]))break}if(h&&m&&v||!h&&v){o.sType=v;break}}o.sType||(o.sType="string")}var b=T.type.className[o.sType],b=(b&&(ue(e.aoHeader,c,b),ue(e.aoFooter,c,b)),T.type.render[o.sType]);if(b&&!o._render){o._render=V.util.get(b),y=w=S=x=D=void 0;for(var y,D=e,x=c,S=D.aoData,w=0;w<S.length;w++)S[w].nTr&&(y=q(D,w,x,"display"),S[w].displayData[x]=y,he(S[w].anCells[x],y))}}}function ue(e,t,n){e.forEach(function(e){e[t]&&e[t].unique&&y(e[t].cell,n)})}function ce(e,t,n,r){Array.isArray(t)||(t=de(t));for(var a,o=0,i=e.aoColumns,l=0,s=t.length;l<s;l++){var u=i[t[l]],c=n?u.sWidthOrig:u.sWidth;if(r||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(a="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],a=3===u.length?u[2]:"px")}}return o+a}function de(e){e=H(e).closest("[data-dt-column]").attr("data-dt-column");return e?e.split(",").map(function(e){return+e}):[]}function D(e,t,n,r){for(var a=e.aoData.length,o=H.extend(!0,{},V.models.oRow,{src:n?"dom":"data",idx:a}),i=(o._aData=t,e.aoData.push(o),e.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;e.aiDisplayMaster.push(a);t=e.rowIdFn(t);return void 0!==t&&(e.aIds[t]=o),!n&&e.oFeatures.bDeferRender||xe(e,a,n,r),a}function fe(n,e){var r;return(e=e instanceof H?e:H(e)).map(function(e,t){return r=ye(n,t),D(n,r.data,t,r.cells)})}function q(e,t,n,r){"search"===r?r="filter":"order"===r&&(r="sort");var a=e.aoData[t];if(a){var o=e.iDraw,i=e.aoColumns[n],a=a._aData,l=i.sDefaultContent,s=i.fnGetData(a,r,{settings:e,row:t,col:n});if(void 0===(s="display"!==r&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return e.iDrawError!=o&&null===l&&(z(e,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+t+", column "+n,4),e.iDrawError=o),l;if(s!==a&&null!==s||null===l||void 0===r){if("function"==typeof s)return s.call(a)}else s=l;return null===s&&"display"===r?"":s="filter"===r&&(t=V.ext.type.search)[i.sType]?t[i.sType](s):s}}function he(e,t){t&&"object"==typeof t&&t.nodeName?H(e).empty().append(t):e.innerHTML=t}var pe=/\[.*?\]$/,p=/\(\)$/;function ge(e){return(e.match(/(\\.|[^.])+/g)||[""]).map(function(e){return e.replace(/\\\./g,".")})}var U=V.util.get,m=V.util.set;function me(e){return b(e.aoData,"_aData")}function ve(e){e.aoData.length=0,e.aiDisplayMaster.length=0,e.aiDisplay.length=0,e.aIds={}}function be(e,t,n,r){var a,o,i=e.aoData[t];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=De(e,t);if(l)if(void 0!==r)he(l[r],s[r]);else for(a=0,o=l.length;a<o;a++)he(l[a],s[a])}else i._aData=ye(e,i,r,void 0===r?void 0:i._aData).data;var u=e.aoColumns;if(void 0!==r)u[r].sType=null,u[r].maxLenString=null;else{for(a=0,o=u.length;a<o;a++)u[a].sType=null,u[a].maxLenString=null;Se(e,i)}}function ye(e,t,n,r){function a(e,t){var n;"string"==typeof e&&-1!==(n=e.indexOf("@"))&&(n=e.substring(n+1),m(e)(r,t.getAttribute(n)))}function o(e){void 0!==n&&n!==d||(l=f[d],s=e.innerHTML.trim(),l&&l._bAttrSrc?(m(l.mData._)(r,s),a(l.mData.sort,e),a(l.mData.type,e),a(l.mData.filter,e)):h?(l._setter||(l._setter=m(l.mData)),l._setter(r,s)):r[d]=s),d++}var i,l,s,u=[],c=t.firstChild,d=0,f=e.aoColumns,h=e._rowReadObject;r=void 0!==r?r:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=t.anCells).length;p<g;p++)o(u[p]);var t=t.firstChild?t:t.nTr;return t&&(t=t.getAttribute("id"))&&m(e.rowId)(r,t),{data:r,cells:u}}function De(e,t){var n=e.aoData[t],r=e.aoColumns;if(!n.displayData){n.displayData=[];for(var a=0,o=r.length;a<o;a++)n.displayData.push(q(e,t,a,"display"))}return n.displayData}function xe(e,t,n,r){var a,o,i,l,s,u,c=e.aoData[t],d=c._aData,f=[],h=e.oClasses.tbody.row;if(null===c.nTr){for(a=n||S.createElement("tr"),c.nTr=a,c.anCells=f,y(a,h),a._DT_RowIndex=t,Se(e,c),l=0,s=e.aoColumns.length;l<s;l++){i=e.aoColumns[l],(o=(u=!n||!r[l])?S.createElement(i.sCellType):r[l])||z(e,0,"Incorrect column count",18),o._DT_CellIndex={row:t,column:l},f.push(o);var p=De(e,t);!u&&(!i.mRender&&i.mData===l||H.isPlainObject(i.mData)&&i.mData._===l+".display")||he(o,p[l]),y(o,i.sClass),i.bVisible&&u?a.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(e.oInstance,o,q(e,t,l),d,t,l)}G(e,"aoRowCreatedCallback","row-created",[a,d,t,f])}else y(c.nTr,h)}function Se(e,t){var n=t.nTr,r=t._aData;n&&((e=e.rowIdFn(r))&&(n.id=e),r.DT_RowClass&&(e=r.DT_RowClass.split(" "),t.__rowc=t.__rowc?C(t.__rowc.concat(e)):e,H(n).removeClass(t.__rowc.join(" ")).addClass(r.DT_RowClass)),r.DT_RowAttr&&H(n).attr(r.DT_RowAttr),r.DT_RowData)&&H(n).data(r.DT_RowData)}function we(e,t){var n,r,a,o=e.oClasses,i=e.aoColumns,l="header"===t?e.nTHead:e.nTFoot,s="header"===t?"sTitle":t;if(l){if(("header"===t||b(e.aoColumns,s).join(""))&&1===(a=(a=H("tr",l)).length?a:H("<tr/>").appendTo(l)).length){var u=0;for(H("td, th",a).each(function(){u+=this.colSpan}),n=u,r=i.length;n<r;n++)H("<th/>").html(i[n][s]||"").appendTo(a)}var c=Ne(e,l,!0);"header"===t?(e.aoHeader=c,H("tr",l).addClass(o.thead.row)):(e.aoFooter=c,H("tr",l).addClass(o.tfoot.row)),H(l).children("tr").children("th, td").each(function(){at(e,t)(e,H(this),o)})}}function Te(e,t,n){var r,a,o,i,l,s=[],u=[],c=e.aoColumns,e=c.length;if(t){for(n=n||h(e).filter(function(e){return c[e].bVisible}),r=0;r<t.length;r++)s[r]=t[r].slice().filter(function(e,t){return n.includes(t)}),u.push([]);for(r=0;r<s.length;r++)for(a=0;a<s[r].length;a++)if(l=i=1,void 0===u[r][a]){for(o=s[r][a].cell;void 0!==s[r+i]&&s[r][a].cell==s[r+i][a].cell;)u[r+i][a]=null,i++;for(;void 0!==s[r][a+l]&&s[r][a].cell==s[r][a+l].cell;){for(var d=0;d<i;d++)u[r+d][a+l]=null;l++}var f=H("span.dt-column-title",o);u[r][a]={cell:o,colspan:l,rowspan:i,title:(f.length?f:H(o)).html()}}return u}}function _e(e,t){for(var n,r,a=Te(e,t),o=0;o<t.length;o++){if(n=t[o].row)for(;r=n.firstChild;)n.removeChild(r);for(var i=0;i<a[o].length;i++){var l=a[o][i];l&&H(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function x(e,t){if(a="ssp"==J(s=e),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!a&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==G(e,"aoPreDrawCallback","preDraw",[e]).indexOf(!1))I(e,!1);else{var l,n=[],r=0,a="ssp"==J(e),o=e.aiDisplay,i=e._iDisplayStart,s=e.fnDisplayEnd(),u=e.aoColumns,c=H(e.nTBody);if(e.bDrawing=!0,e.deferLoading)e.deferLoading=!1,e.iDraw++,I(e,!1);else if(a){if(!e.bDestroying&&!t)return 0===e.iDraw&&c.empty().append(Ie(e)),(l=e).iDraw++,I(l,!0),void Fe(l,function(t){function n(e,t){return"function"==typeof r[e][t]?"function":r[e][t]}var r=t.aoColumns,e=t.oFeatures,a=t.oPreviousSearch,o=t.aoPreSearchCols;return{draw:t.iDraw,columns:r.map(function(t,e){return{data:n(e,"mData"),name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:o[e].search,regex:o[e].regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}),order:Je(t).map(function(e){return{column:e.col,dir:e.dir,name:n(e.col,"sName")}}),start:t._iDisplayStart,length:e.bPaginate?t._iDisplayLength:-1,search:{value:a.search,regex:a.regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}(l),function(e){var t=l,n=Oe(t,e=e),r=je(t,"draw",e),a=je(t,"recordsTotal",e),e=je(t,"recordsFiltered",e);if(void 0!==r){if(+r<t.iDraw)return;t.iDraw=+r}n=n||[],ve(t),t._iRecordsTotal=parseInt(a,10),t._iRecordsDisplay=parseInt(e,10);for(var o=0,i=n.length;o<i;o++)D(t,n[o]);t.aiDisplay=t.aiDisplayMaster.slice(),se(t),x(t,!0),We(t),I(t,!1)})}else e.iDraw++;if(0!==o.length)for(var d=a?e.aoData.length:s,f=a?0:i;f<d;f++){for(var h=o[f],p=e.aoData[h],g=(null===p.nTr&&xe(e,h),p.nTr),m=0;m<u.length;m++){var v=u[m],b=p.anCells[m];y(b,T.type.className[v.sType]),y(b,e.oClasses.tbody.cell)}G(e,"aoRowCallback",null,[g,p._aData,r,f,h]),n.push(g),r++}else n[0]=Ie(e);G(e,"aoHeaderCallback","header",[H(e.nTHead).children("tr")[0],me(e),i,s,o]),G(e,"aoFooterCallback","footer",[H(e.nTFoot).children("tr")[0],me(e),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(H(n))),H(e.nTableWrapper).toggleClass("dt-empty-footer",0===H("tr",e.nTFoot).length),G(e,"aoDrawCallback","draw",[e],!0),e.bSorted=!1,e.bFiltered=!1,e.bDrawing=!1}}function Ce(e,t,n){var r=e.oFeatures,a=r.bSort,r=r.bFilter;void 0!==n&&!0!==n||(se(e),a&&Ze(e),r?Re(e,e.oPreviousSearch):e.aiDisplay=e.aiDisplayMaster.slice()),!0!==t&&(e._iDisplayStart=0),e._drawHold=t,x(e),e.api.one("draw",function(){e._drawHold=!1})}function Ie(e){var t=e.oLanguage,n=t.sZeroRecords,r=J(e);return"ssp"!==r&&"ajax"!==r||e.json?t.sEmptyTable&&0===e.fnRecordsTotal()&&(n=t.sEmptyTable):n=t.sLoadingRecords,H("<tr/>").append(H("<td />",{colSpan:oe(e),class:e.oClasses.empty.row}).html(n))[0]}function Le(e,t,a){var o=[];H.each(t,function(e,t){var n,r;null!==t&&(n=(e=e.match(/^([a-z]+)([0-9]*)([A-Za-z]*)$/))[2]?+e[2]:0,r=e[3]?e[3].toLowerCase():"full",e[1]===a)&&function e(t,n,r){if(Array.isArray(r))for(var a=0;a<r.length;a++)e(t,n,r[a]);else{var o=t[n];H.isPlainObject(r)?r.features?(r.rowId&&(t.id=r.rowId),r.rowClass&&(t.className=r.rowClass),o.id=r.id,o.className=r.className,e(t,n,r.features)):Object.keys(r).map(function(e){o.contents.push({feature:e,opts:r[e]})}):o.contents.push(r)}}(function(e,t,n){for(var r,a=0;a<e.length;a++)if((r=e[a]).rowNum===t&&("full"===n&&r.full||("start"===n||"end"===n)&&(r.start||r.end)))return r[n]||(r[n]={contents:[]}),r;return(r={rowNum:t})[n]={contents:[]},e.push(r),r}(o,n,r),r,t)}),o.sort(function(e,t){var n=e.rowNum,r=t.rowNum;return n===r?(e=e.full&&!t.full?-1:1,"bottom"===a?-1*e:e):r-n}),"bottom"===a&&o.reverse();for(var n=0;n<o.length;n++)delete o[n].rowNum,!function(o,i){function l(e,t){return T.features[e]||z(o,0,"Unknown feature: "+e),T.features[e].apply(this,[o,t])}function e(e){if(i[e])for(var t,n=i[e].contents,r=0,a=n.length;r<a;r++)n[r]&&("string"==typeof n[r]?n[r]=l(n[r],null):H.isPlainObject(n[r])?n[r]=l(n[r].feature,n[r].opts):"function"==typeof n[r].node?n[r]=n[r].node(o):"function"==typeof n[r]&&(t=n[r](o),n[r]="function"==typeof t.node?t.node():t))}e("start"),e("end"),e("full")}(e,o[n]);return o}function Ae(t){var r,e=t.oClasses,n=H(t.nTable),a=H("<div/>").attr({id:t.sTableId+"_wrapper",class:e.container}).insertBefore(n);if(t.nTableWrapper=a[0],t.sDom)for(var o,i,l,s,u,c,d=t,e=t.sDom,f=a,h=e.match(/(".*?")|('.*?')|./g),p=0;p<h.length;p++)o=null,"<"==(i=h[p])?(l=H("<div/>"),"'"!=(s=h[p+1])[0]&&'"'!=s[0]||(s=s.replace(/['"]/g,""),u="",-1!=s.indexOf(".")?(c=s.split("."),u=c[0],c=c[1]):"#"==s[0]?u=s:c=s,l.attr("id",u.substring(1)).addClass(c),p++),f.append(l),f=l):">"==i?f=f.parent():"t"==i?o=qe(d):V.ext.feature.forEach(function(e){i==e.cFeature&&(o=e.fnInit(d))}),o&&f.append(o);else{var n=Le(t,t.layout,"top"),e=Le(t,t.layout,"bottom"),g=at(t,"layout");n.forEach(function(e){g(t,a,e)}),g(t,a,{full:{table:!0,contents:[qe(t)]}}),e.forEach(function(e){g(t,a,e)})}var n=t,e=n.nTable,m=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(r=H("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),m?r.prependTo(H("div.dt-scroll",n.nTableWrapper)):r.insertBefore(e),H(e).on("processing.dt.DT",function(e,t,n){r.css("display",n?"block":"none")}))}function Ne(e,t,n){for(var r,a,o,i,l,s,u=e.aoColumns,c=H(t).children("tr"),d=e.titleRow,f=t&&"thead"===t.nodeName.toLowerCase(),h=[],p=0,g=c.length;p<g;p++)h.push([]);for(p=0,g=c.length;p<g;p++)for(a=(r=c[p]).firstChild;a;){if("TD"==a.nodeName.toUpperCase()||"TH"==a.nodeName.toUpperCase()){var m,v,b,y,D,x=[],S=H(a);for(y=(y=+a.getAttribute("colspan"))&&0!=y&&1!=y?y:1,D=(D=+a.getAttribute("rowspan"))&&0!=D&&1!=D?D:1,l=function(e,t,n){for(var r=e[t];r[n];)n++;return n}(h,p,0),s=1==y,n&&(s&&(te(e,l,st(S.data())),m=u[l],v=a.getAttribute("width")||null,(b=a.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=b[1]),m.sWidthOrig=m.sWidth||v,f?(null===m.sTitle||m.autoTitle||(!0===d&&0===p||!1===d&&p===c.length-1||d===p||null===d)&&(a.innerHTML=m.sTitle),!m.sTitle&&s&&(m.sTitle=w(a.innerHTML),m.autoTitle=!0)):m.footer&&(a.innerHTML=m.footer),m.ariaTitle||(m.ariaTitle=S.attr("aria-label")||m.sTitle),m.className)&&S.addClass(m.className),0===H("span.dt-column-title",a).length&&H("<span>").addClass("dt-column-title").append(a.childNodes).appendTo(a),e.orderIndicators&&f&&0!==S.filter(":not([data-dt-order=disable])").length&&0!==S.parent(":not([data-dt-order=disable])").length&&0===H("span.dt-column-order",a).length&&H("<span>").addClass("dt-column-order").appendTo(a),0===H("span.dt-column-"+(b=f?"header":"footer"),a).length)&&H("<div>").addClass("dt-column-"+b).append(a.childNodes).appendTo(a),i=0;i<y;i++){for(o=0;o<D;o++)h[p+o][l+i]={cell:a,unique:s},h[p+o].row=r;x.push(l+i)}a.setAttribute("data-dt-column",C(x).join(","))}a=a.nextSibling}return h}function Fe(n,e,r){function t(e){var t=n.jqXHR?n.jqXHR.status:null;if((null===e||"number"==typeof t&&204==t)&&Oe(n,e={},[]),(t=e.error||e.sError)&&z(n,0,t),e.d&&"string"==typeof e.d)try{e=JSON.parse(e.d)}catch(e){}n.json=e,G(n,null,"xhr",[n,e,n.jqXHR],!0),r(e)}var a,o=n.ajax,i=n.oInstance,l=(H.isPlainObject(o)&&o.data&&(l="function"==typeof(a=o.data)?a(e,n):a,e="function"==typeof a&&l?l:H.extend(!0,e,l),delete o.data),{url:"string"==typeof o?o:"",data:e,success:t,dataType:"json",cache:!1,type:n.sServerMethod,error:function(e,t){-1===G(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==t?z(n,0,"Invalid JSON response",1):4===e.readyState&&z(n,0,"Ajax error",7)),I(n,!1)}});H.isPlainObject(o)&&H.extend(l,o),n.oAjaxData=e,G(n,null,"preXhr",[n,e,l],!0),"json"===l.submitAs&&"object"==typeof e&&(l.data=JSON.stringify(e)),"function"==typeof o?n.jqXHR=o.call(i,e,t,n):""===o.url?(Oe(n,i={},[]),t(i)):n.jqXHR=H.ajax(l),a&&(o.data=a)}function Oe(e,t,n){var r="data";if(H.isPlainObject(e.ajax)&&void 0!==e.ajax.dataSrc&&("string"==typeof(e=e.ajax.dataSrc)||"function"==typeof e?r=e:void 0!==e.data&&(r=e.data)),!n)return"data"===r?t.aaData||t[r]:""!==r?U(r)(t):t;m(r)(t,n)}function je(e,t,n){var e=H.isPlainObject(e.ajax)?e.ajax.dataSrc:null;return e&&e[t]?U(e[t])(n):(e="","draw"===t?e="sEcho":"recordsTotal"===t?e="iTotalRecords":"recordsFiltered"===t&&(e="iTotalDisplayRecords"),void 0!==n[e]?n[e]:n[t])}function Re(n,e){var t=n.aoPreSearchCols;if("ssp"!=J(n)){for(var r,a,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],r=0,a=u.length;r<a;r++)u[r].bSearchable?"string"!=typeof(i=null===(i=q(s,d,r,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(ke.innerHTML=i,i=Me?ke.textContent:ke.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join("  "),0}n.aiDisplay=n.aiDisplayMaster.slice(),Pe(n.aiDisplay,n,e.search,e),H.each(n.searchFixed,function(e,t){Pe(n.aiDisplay,n,t,{})});for(var f=0;f<t.length;f++){var h=t[f];Pe(n.aiDisplay,n,h.search,h,f),H.each(n.aoColumns[f].searchFixed,function(e,t){Pe(n.aiDisplay,n,t,{},f)})}for(var p,g,m=n,v=V.ext.search,b=m.aiDisplay,y=0,D=v.length;y<D;y++){for(var x=[],S=0,w=b.length;S<w;S++)g=b[S],p=m.aoData[g],v[y](m,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,it(b,x)}}n.bFiltered=!0,G(n,null,"search",[n])}function Pe(e,t,n,r,a){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:function(e,t){var r=[],t=H.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},t);"string"!=typeof e&&(e=e.toString());if(e=k(e),t.exact)return new RegExp("^"+Ee(e)+"$",t.caseInsensitive?"i":"");{var n,a,o;e=t.regex?e:Ee(e),t.smart&&(n=(e.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(e){var t,n=!1;return"!"===e.charAt(0)&&(n=!0,e=e.substring(1)),'"'===e.charAt(0)?e=(t=e.match(/^"(.*)"$/))?t[1]:e:"“"===e.charAt(0)&&(e=(t=e.match(/^\u201C(.*)\u201D$/))?t[1]:e),n&&(1<e.length&&r.push("(?!"+e+")"),e=""),e.replace(/"/g,"")}),a=r.length?r.join(""):"",o=t.boundary?"\\b":"",e="^(?=.*?"+o+n.join(")(?=.*?"+o)+")("+a+".)*$")}return new RegExp(e,t.caseInsensitive?"i":"")}(n,r),o=0;o<e.length;o++){var u=t.aoData[e[o]],c=void 0===a?u._sFilterRow:u._aFilterData[a];(l&&l(c,u._aData,e[o],a)||s&&s.test(c))&&i.push(e[o])}for(e.length=i.length,o=0;o<i.length;o++)e[o]=i[o]}}var Ee=V.util.escapeRegex,ke=H("<div>")[0],Me=void 0!==ke.textContent;function He(i){var l,t,n,e,s=i.oInit,u=i.deferLoading,c=J(i);i.bInitialised?(we(i,"header"),we(i,"footer"),n=function(){_e(i,i.aoHeader),_e(i,i.aoFooter);var n=i.iInitDisplayStart;if(s.aaData)for(l=0;l<s.aaData.length;l++)D(i,s.aaData[l]);else!u&&"dom"!=c||fe(i,H(i.nTBody).children("tr"));i.aiDisplay=i.aiDisplayMaster.slice(),Ae(i);var e=i,t=e.nTHead,r=t.querySelectorAll("tr"),a=e.titleRow,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';!0===a?t=r[0]:!1===a?t=r[r.length-1]:null!==a&&(t=r[a]),e.orderHandler&&Ye(e,t,t===e.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),g(e,r=[],e.aaSorting),e.aaSorting=r,$e(i),I(i,!0),G(i,null,"preInit",[i],!0),Ce(i),"ssp"==c&&!u||("ajax"==c?Fe(i,{},function(e){var t=Oe(i,e);for(l=0;l<t.length;l++)D(i,t[l]);i.iInitDisplayStart=n,Ce(i),I(i,!1),We(i)}):(We(i),I(i,!1)))},(t=i).oFeatures.bStateSave?void 0!==(e=t.fnStateLoadCallback.call(t.oInstance,t,function(e){et(t,e,n)}))&&et(t,e,n):n()):setTimeout(function(){He(i)},200)}function We(e){var t;e._bInitComplete||(t=[e,e.json],e._bInitComplete=!0,ne(e),G(e,null,"plugin-init",t,!0),G(e,"aoInitComplete","init",t,!0))}function Xe(e,t){t=parseInt(t,10);e._iDisplayLength=t,rt(e),G(e,null,"length",[e,t])}function Ve(e,t,n){var r=e._iDisplayStart,a=e._iDisplayLength,o=e.fnRecordsDisplay();if(0===o||-1===a)r=0;else if("number"==typeof t)o<(r=t*a)&&(r=0);else if("first"==t)r=0;else if("previous"==t)(r=0<=a?r-a:0)<0&&(r=0);else if("next"==t)r+a<o&&(r+=a);else if("last"==t)r=Math.floor((o-1)/a)*a;else{if("ellipsis"===t)return;z(e,0,"Unknown paging action: "+t,5)}o=e._iDisplayStart!==r;e._iDisplayStart=r,G(e,null,o?"page":"page-nc",[e]),o&&n&&x(e)}function I(e,t){e.bDrawing&&!1===t||G(e,null,"processing",[e,t])}function Be(e,t,n){t?(I(e,!0),setTimeout(function(){n(),I(e,!1)},0)):n()}function qe(e){var t,n,r,a,o,i,l,s,u,c,d,f,h,p=H(e.nTable),g=e.oScroll;return""===g.sX&&""===g.sY?e.nTable:(t=g.sX,n=g.sY,r=e.oClasses.scrolling,o=(a=e.captionNode)?a._captionSide:null,u=H(p[0].cloneNode(!1)),i=H(p[0].cloneNode(!1)),c=function(e){return e?L(e):null},(l=p.children("tfoot")).length||(l=null),u=H(s="<div/>",{class:r.container}).append(H(s,{class:r.header.self}).css({overflow:"hidden",position:"relative",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?a:null).append(p.children("thead"))))).append(H(s,{class:r.body}).css({position:"relative",overflow:"auto",width:c(t)}).append(p)),l&&u.append(H(s,{class:r.footer.self}).css({overflow:"hidden",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?a:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,H(f).on("scroll.DT",function(){var e=this.scrollLeft;d.scrollLeft=e,l&&(h.scrollLeft=e)}),H("th, td",d).on("focus",function(){var e=d.scrollLeft;f.scrollLeft=e,l&&(f.scrollLeft=e)}),H(f).css("max-height",n),g.bCollapse||H(f).css("height",n),e.nScrollHead=d,e.nScrollBody=f,e.nScrollFoot=h,e.aoDrawCallback.push(Ue),u[0])}function Ue(t){var e=t.oScroll,n=e.iBarWidth,r=H(t.nScrollHead).children("div"),a=r.children("table"),o=t.nScrollBody,i=H(o),l=H(t.nScrollFoot).children("div"),s=l.children("table"),u=H(t.nTHead),c=H(t.nTable),d=t.nTFoot&&H("th, td",t.nTFoot).length?H(t.nTFoot):null,f=t.oBrowser,h=o.scrollHeight>o.clientHeight;if(t.scrollBarVis!==h&&void 0!==t.scrollBarVis)t.scrollBarVis=h,ne(t);else{if(t.scrollBarVis=h,c.children("thead, tfoot").remove(),(h=u.clone().prependTo(c)).find("th, td").removeAttr("tabindex"),h.find("[id]").removeAttr("id"),d&&(D=d.clone().prependTo(c)).find("[id]").removeAttr("id"),t.aiDisplay.length){for(var p=null,g="ssp"!==J(t)?t._iDisplayStart:0,m=g;m<g+t.aiDisplay.length;m++){var v=t.aiDisplay[m],v=t.aoData[v].nTr;if(v){p=v;break}}if(p)for(var b=H(p).children("th, td").map(function(e){return{idx:re(t,e),width:H(this).outerWidth()}}),m=0;m<b.length;m++){var y=t.aoColumns[b[m].idx].colEl[0];y.style.width.replace("px","")!==b[m].width&&(y.style.width=b[m].width+"px",e.sX)&&(y.style.minWidth=b[m].width+"px")}}a.find("colgroup").remove(),a.append(t.colgroup.clone()),d&&(s.find("colgroup").remove(),s.append(t.colgroup.clone())),H("th, td",h).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),d&&H("th, td",D).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var u=Math.floor(c.height())>o.clientHeight||"scroll"==i.css("overflow-y"),h="padding"+(f.bScrollbarLeft?"Left":"Right"),D=c.outerWidth();a.css("width",L(D)),r.css("width",L(D)).css(h,u?n+"px":"0px"),d&&(s.css("width",L(D)),l.css("width",L(D)).css(h,u?n+"px":"0px")),c.children("colgroup").prependTo(c),i.trigger("scroll"),!t.bSorted&&!t.bFiltered||t._drawHold||(o.scrollTop=0)}}function ze(e){return H(e.nTableWrapper).is(":visible")?H(e.nTableWrapper).width():0}function L(e){return null===e?"0px":"number"==typeof e?e<0?"0px":e+"px":e.match(/\d$/)?e+"px":e}function $e(e){var t=e.aoColumns;for(e.colgroup.empty(),l=0;l<t.length;l++)t[l].bVisible&&e.colgroup.append(t[l].colEl)}function Ye(o,e,t,i,l){nt(e,t,function(e){var t=!1,n=void 0===i?de(e.target):"function"==typeof i?i():Array.isArray(i)?i:[i];if(n.length){for(var r=0,a=n.length;r<a;r++)if(!1!==function(e,t,n,r){function a(e,t){var n=e._idx;return(n=void 0===n?s.indexOf(e[1]):n)+1<s.length?n+1:t?null:0}var o,i=e.aoColumns[t],l=e.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=e.aaSorting=[l]);(r||n)&&e.oFeatures.bSortMulti?-1!==(i=b(l,"0").indexOf(t))?null===(o=null===(o=a(l[i],!0))&&1===l.length?0:o)||""===s[o]?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(r?l.push([t,s[0],0]):l.push([t,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==t?(o=a(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([t,s[0]]),l[0]._idx=0)}(o,n[r],r,e.shiftKey)&&(t=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;t&&Be(o,!0,function(){Ze(o),Ge(o,o.aiDisplay),Ce(o,!1,!1),l&&l()})}})}function Ge(e,t){if(!(t.length<2)){for(var n=e.aiDisplayMaster,r={},a={},o=0;o<n.length;o++)r[n[o]]=o;for(o=0;o<t.length;o++)a[t[o]]=r[t[o]];t.sort(function(e,t){return a[e]-a[t]})}}function g(n,r,e){function t(e){var t;H.isPlainObject(e)?void 0!==e.idx?r.push([e.idx,e.dir]):e.name&&-1!==(t=b(n.aoColumns,"sName").indexOf(e.name))&&r.push([t,e.dir]):r.push(e)}if(H.isPlainObject(e))t(e);else if(e.length&&"number"==typeof e[0])t(e);else if(e.length)for(var a=0;a<e.length;a++)t(e[a])}function Je(e){var t,n,r,a,o,i,l,s=[],u=V.ext.type.order,c=e.aoColumns,d=e.aaSortingFixed,f=H.isPlainObject(d),h=[];if(e.oFeatures.bSort)for(Array.isArray(d)&&g(e,h,d),f&&d.pre&&g(e,h,d.pre),g(e,h,e.aaSorting),f&&d.post&&g(e,h,d.post),t=0;t<h.length;t++)if(c[l=h[t][0]])for(n=0,r=(a=c[l].aDataSort).length;n<r;n++)i=c[o=a[n]].sType||"string",void 0===h[t]._idx&&(h[t]._idx=c[o].asSorting.indexOf(h[t][1])),h[t][1]&&s.push({src:l,col:o,dir:h[t][1],index:h[t]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[t][1]]});return s}function Ze(e,t,n){var r,a,o,i,c,d=[],l=V.ext.type.order,f=e.aoData,s=e.aiDisplayMaster;for(se(e),void 0!==t?(i=e.aoColumns[t],c=[{src:t,col:t,dir:n,index:0,type:i.sType,formatter:l[i.sType+"-pre"],sorter:l[i.sType+"-"+n]}],s=s.slice()):c=Je(e),r=0,a=c.length;r<a;r++){o=c[r],x=D=y=p=h=u=b=v=m=g=void 0;var u,h,p,g=e,m=o.col,v=g.aoColumns[m],b=V.ext.order[v.sSortDataType];b&&(u=b.call(g.oInstance,g,m,ae(g,m)));for(var y=V.ext.type.order[v.sType+"-pre"],D=g.aoData,x=0;x<D.length;x++)D[x]&&((h=D[x])._aSortData||(h._aSortData=[]),h._aSortData[m]&&!b||(p=b?u[x]:q(g,x,m,"sort"),h._aSortData[m]=y?y(p,g):p))}if("ssp"!=J(e)&&0!==c.length){for(r=0,a=s.length;r<a;r++)d[r]=r;c.length&&"desc"===c[0].dir&&e.orderDescReverse&&d.reverse(),s.sort(function(e,t){for(var n,r,a,o,i=c.length,l=f[e]._aSortData,s=f[t]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],r=s[o.col],o.sorter){if(0!==(a=o.sorter(n,r)))return a}else if(0!==(a=n<r?-1:r<n?1:0))return"asc"===o.dir?a:-a;return(n=d[e])<(r=d[t])?-1:r<n?1:0})}else 0===c.length&&s.sort(function(e,t){return e<t?-1:t<e?1:0});return void 0===t&&(e.bSorted=!0,e.sortDetails=c,G(e,null,"order",[e,c])),s}function Qe(e){var t,n,r,a=e.aLastSort,o=e.oClasses.order.position,i=Je(e),l=e.oFeatures;if(l.bSort&&l.bSortClasses){for(t=0,n=a.length;t<n;t++)r=a[t].src,H(b(e.aoData,"anCells",r)).removeClass(o+(t<2?t+1:3));for(t=0,n=i.length;t<n;t++)r=i[t].src,H(b(e.aoData,"anCells",r)).addClass(o+(t<2?t+1:3))}e.aLastSort=i}function Ke(n){var t,e;n._bLoadingState||(g(n,e=[],n.aaSorting),t=n.aoColumns,e={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:e.map(function(e){return t[e[0]]&&t[e[0]].sName?[t[e[0]].sName,e[1]]:e.slice()}),search:H.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(e,t){return{name:e.sName,visible:e.bVisible,search:H.extend({},n.aoPreSearchCols[t])}})},n.oSavedState=e,G(n,"aoStateSaveParams","stateSaveParams",[n,e]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,e))}function et(r,e,t){var n,a,o=r.aoColumns,i=b(r.aoColumns,"sName"),l=(r._bLoadingState=!0,r._bInitComplete?new V.Api(r):null);if(e&&e.time){var s=r.iStateDuration;if(0<s&&e.time<+new Date-1e3*s)r._bLoadingState=!1;else if(-1!==G(r,"aoStateLoadParams","stateLoadParams",[r,e]).indexOf(!1))r._bLoadingState=!1;else{if(r.oLoadedState=H.extend(!0,{},e),G(r,null,"stateLoadInit",[r,e],!0),void 0!==e.length&&(l?l.page.len(e.length):r._iDisplayLength=e.length),void 0!==e.start&&(null===l?(r._iDisplayStart=e.start,r.iInitDisplayStart=e.start):Ve(r,e.start/r._iDisplayLength)),void 0!==e.order&&(r.aaSorting=[],H.each(e.order,function(e,t){var n=[t[0],t[1]];if("string"==typeof t[0]){t=i.indexOf(t[0]);if(t<0)return;n[0]=t}else if(n[0]>=o.length)return;r.aaSorting.push(n)})),void 0!==e.search&&H.extend(r.oPreviousSearch,e.search),e.columns){var u,c=e.columns,d=b(e.columns,"name");if(d.join("").length&&d.join("")!==i.join(""))for(c=[],n=0;n<i.length;n++)""!=i[n]&&0<=(u=d.indexOf(i[n]))?c.push(e.columns[u]):c.push({});if(c.length===o.length){for(n=0,a=c.length;n<a;n++){var f=c[n];void 0!==f.visible&&(l?l.column(n).visible(f.visible,!1):o[n].bVisible=f.visible),void 0!==f.search&&H.extend(r.aoPreSearchCols[n],f.search)}l&&l.one("draw",function(){l.columns.adjust()})}}r._bLoadingState=!1,G(r,"aoStateLoaded","stateLoaded",[r,e])}}else r._bLoadingState=!1;t()}function z(e,t,n,r){if(n="DataTables warning: "+(e?"table id="+e.sTableId+" - ":"")+n,r&&(n+=". For more information about this error, please see https://datatables.net/tn/"+r),t)W.console&&console.log&&console.log(n);else{t=V.ext,t=t.sErrMode||t.errMode;if(e&&G(e,null,"dt-error",[e,r,n],!0),"alert"==t)alert(n);else{if("throw"==t)throw new Error(n);"function"==typeof t&&t(e,r,n)}}}function $(n,r,e,t){Array.isArray(e)?H.each(e,function(e,t){Array.isArray(t)?$(n,r,t[0],t[1]):$(n,r,t)}):(void 0===t&&(t=e),void 0!==r[e]&&(n[t]=r[e]))}function tt(e,t,n){var r,a;for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(r=t[a],H.isPlainObject(r)?(H.isPlainObject(e[a])||(e[a]={}),H.extend(!0,e[a],r)):n&&"data"!==a&&"aaData"!==a&&Array.isArray(r)?e[a]=r.slice():e[a]=r);return e}function nt(e,t,n){H(e).on("click.DT",t,function(e){n(e)}).on("keypress.DT",t,function(e){13===e.which&&(e.preventDefault(),n(e))}).on("selectstart.DT",t,function(){return!1})}function Y(e,t,n){n&&e[t].push(n)}function G(t,e,n,r,a){var o=[];return e&&(o=t[e].slice().reverse().map(function(e){return e.apply(t.oInstance,r)})),null!==n&&(e=H.Event(n+".dt"),n=H(t.nTable),e.dt=t.api,n[a?"trigger":"triggerHandler"](e,r),a&&0===n.parents("body").length&&H("body").trigger(e,r),o.push(e.result)),o}function rt(e){var t=e._iDisplayStart,n=e.fnDisplayEnd(),r=e._iDisplayLength;n<=t&&(t=n-r),t-=t%r,e._iDisplayStart=t=-1===r||t<0?0:t}function at(e,t){var e=e.renderer,n=V.ext.renderer[t];return H.isPlainObject(e)&&e[t]?n[e[t]]||n._:"string"==typeof e&&n[e]||n._}function J(e){return e.oFeatures.bServerSide?"ssp":e.ajax?"ajax":"dom"}function ot(e,t,n){var r=e.fnFormatNumber,a=e._iDisplayStart+1,o=e._iDisplayLength,i=e.fnRecordsDisplay(),l=e.fnRecordsTotal(),s=-1===o;return t.replace(/_START_/g,r.call(e,a)).replace(/_END_/g,r.call(e,e.fnDisplayEnd())).replace(/_MAX_/g,r.call(e,l)).replace(/_TOTAL_/g,r.call(e,i)).replace(/_PAGE_/g,r.call(e,s?1:Math.ceil(a/o))).replace(/_PAGES_/g,r.call(e,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,e.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,e.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,e.api.i18n("entries","",i))}function it(e,t){if(t)if(t.length<1e4)e.push.apply(e,t);else for(l=0;l<t.length;l++)e.push(t[l])}function lt(e,t,n){for(Array.isArray(n)||(n=[n]),l=0;l<n.length;l++)e.on(t+".dt",n[l])}function st(n){return V.ext.escape.attributes&&H.each(n,function(e,t){n[e]=u(t)}),n}var ut=[],t=Array.prototype;X=function(e,t){if(!(this instanceof X))return new X(e,t);function n(e){e=e,t=V.settings,r=b(t,"nTable");var n,t,r,a=e?e.nTable&&e.oFeatures?[e]:e.nodeName&&"table"===e.nodeName.toLowerCase()?-1!==(a=r.indexOf(e))?[t[a]]:null:e&&"function"==typeof e.settings?e.settings().toArray():("string"==typeof e?n=H(e).get():e instanceof H&&(n=e.get()),n?t.filter(function(e,t){return n.includes(r[t])}):void 0):[];a&&o.push.apply(o,a)}var r,o=[];if(Array.isArray(e))for(r=0;r<e.length;r++)n(e[r]);else n(e);this.context=1<o.length?C(o):o,it(this,t),this.selector={rows:null,cols:null,opts:null},X.extend(this,this,ut)},V.Api=X,H.extend(X.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(e){for(var t=0,n=this.length;t<n;t++)e.call(this,this[t],t,this);return this},eq:function(e){var t=this.context;return t.length>e?new X(t[e],this[e]):null},filter:function(e){e=t.filter.call(this,e,this);return new X(this.context,e)},flatten:function(){var e=[];return new X(this.context,e.concat.apply(e,this.toArray()))},get:function(e){return this[e]},join:t.join,includes:function(e){return-1!==this.indexOf(e)},indexOf:t.indexOf,iterator:function(e,t,n,r){var a,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof e&&(r=n,n=t,t=e,e=!1),o=0,i=h.length;o<i;o++){var g=new X(h[o]);if("table"===t)void 0!==(a=n.call(g,h[o],o))&&f.push(a);else if("columns"===t||"rows"===t)void 0!==(a=n.call(g,h[o],this[o],o))&&f.push(a);else if("every"===t||"column"===t||"column-rows"===t||"row"===t||"cell"===t)for(c=this[o],"column-rows"===t&&(u=xt(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(a="cell"===t?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(a)}return f.length||r?((e=(r=new X(h,e?f.concat.apply([],f):f)).selector).rows=p.rows,e.cols=p.cols,e.opts=p.opts,r):this},lastIndexOf:t.lastIndexOf,length:0,map:function(e){e=t.map.call(this,e,this);return new X(this.context,e)},pluck:function(e){var t=V.util.get(e);return this.map(function(e){return t(e)})},pop:t.pop,push:t.push,reduce:t.reduce,reduceRight:t.reduceRight,reverse:t.reverse,selector:null,shift:t.shift,slice:function(){return new X(this.context,this)},sort:t.sort,splice:t.splice,toArray:function(){return t.slice.call(this)},to$:function(){return H(this)},toJQuery:function(){return H(this)},unique:function(){return new X(this.context,C(this.toArray()))},unshift:t.unshift}),W.__apiStruct=ut,X.extend=function(e,t,n){if(n.length&&t&&(t instanceof X||t.__dt_wrapper))for(var r,a=0,o=n.length;a<o;a++)"__proto__"!==(r=n[a]).name&&(t[r.name]="function"===r.type?function(t,n,r){return function(){var e=n.apply(t||this,arguments);return X.extend(e,e,r.methodExt),e}}(e,r.val,r):"object"===r.type?{}:r.val,t[r.name].__dt_wrapper=!0,X.extend(e,t[r.name],r.propExt))},X.register=r=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)X.register(e[n],t);else for(var a=e.split("."),o=ut,i=0,l=a.length;i<l;i++){var s,u,c=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n].name===t)return e[n];return null}(o,u=(s=-1!==a[i].indexOf("()"))?a[i].replace("()",""):a[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=t,c.type="function"==typeof t?"function":H.isPlainObject(t)?"object":"other"):o=s?c.methodExt:c.propExt}},X.registerPlural=e=function(e,t,n){X.register(e,n),X.register(t,function(){var e=n.apply(this,arguments);return e===this?this:e instanceof X?e.length?Array.isArray(e[0])?new X(e.context,e[0]):e[0]:void 0:e})};function ct(e,t){var n,r;return Array.isArray(e)?(n=[],e.forEach(function(e){e=ct(e,t);it(n,e)}),n.filter(function(e){return e})):"number"==typeof e?[t[e]]:(r=t.map(function(e){return e.nTable}),H(r).filter(e).map(function(){var e=r.indexOf(this);return t[e]}).toArray())}function dt(a,o,e){var t,n;e&&(t=new X(a)).one("draw",function(){e(t.ajax.json())}),"ssp"==J(a)?Ce(a,o):(I(a,!0),(n=a.jqXHR)&&4!==n.readyState&&n.abort(),Fe(a,{},function(e){ve(a);for(var t=Oe(a,e),n=0,r=t.length;n<r;n++)D(a,t[n]);Ce(a,o),We(a),I(a,!1)}))}function ft(e,t,n,r,a){for(var o,i=[],l=typeof t,s=0,u=(t=t&&"string"!=l&&"function"!=l&&void 0!==t.length?t:[t]).length;s<u;s++)(o=(o=n("string"==typeof t[s]?t[s].trim():t[s])).filter(function(e){return null!=e}))&&o.length&&(i=i.concat(o));var c=T.selector[e];if(c.length)for(s=0,u=c.length;s<u;s++)i=c[s](r,a,i);return C(i)}function ht(e){return(e=e||{}).filter&&void 0===e.search&&(e.search=e.filter),H.extend({columnOrder:"implied",search:"none",order:"current",page:"all"},e)}function pt(e){var t=new X(e.context[0]);return e.length&&t.push(e[0]),t.selector=e.selector,t.length&&1<t[0].length&&t[0].splice(1),t}r("tables()",function(e){return null!=e?new X(ct(e,this.context)):this}),r("table()",function(e){var e=this.tables(e),t=e.context;return t.length?new X(t[0]):e}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(t){e("tables()."+t[0]+"()","table()."+t[1]+"()",function(){return this.iterator("table",function(e){return e[t[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(t){r("table()."+t[0]+".structure()",function(e){var n=this.columns(e).indexes().flatten().toArray(),e=this.context[0],e=Te(e,e[t[1]],n),r=n.slice().sort(function(e,t){return e-t});return e.map(function(t){return n.map(function(e){return t[r.indexOf(e)]})})})}),e("tables().containers()","table().container()",function(){return this.iterator("table",function(e){return e.nTableWrapper},1)}),r("tables().every()",function(n){var r=this;return this.iterator("table",function(e,t){n.call(r.table(t),t)})}),r("caption()",function(a,o){var e,t=this.context;return void 0===a?(e=t[0].captionNode)&&t.length?e.innerHTML:null:this.iterator("table",function(e){var t=H(e.nTable),n=H(e.captionNode),r=H(e.nTableWrapper);n.length||(n=H("<caption/>").html(a),e.captionNode=n[0],o)||(t.prepend(n),o=n.css("caption-side")),n.html(a),o&&(n.css("caption-side",o),n[0]._captionSide=o),(r.find("div.dataTables_scroll").length?(e="top"===o?"Head":"Foot",r.find("div.dataTables_scroll"+e+" table")):t).prepend(n)},1)}),r("caption.node()",function(){var e=this.context;return e.length?e[0].captionNode:null}),r("draw()",function(t){return this.iterator("table",function(e){"page"===t?x(e):Ce(e,!1===(t="string"==typeof t?"full-hold"!==t:t))})}),r("page()",function(t){return void 0===t?this.page.info().page:this.iterator("table",function(e){Ve(e,t)})}),r("page.info()",function(){var e,t,n,r,a;if(0!==this.context.length)return t=(e=this.context[0])._iDisplayStart,n=e.oFeatures.bPaginate?e._iDisplayLength:-1,r=e.fnRecordsDisplay(),{page:(a=-1===n)?0:Math.floor(t/n),pages:a?1:Math.ceil(r/n),start:t,end:e.fnDisplayEnd(),length:n,recordsTotal:e.fnRecordsTotal(),recordsDisplay:r,serverSide:"ssp"===J(e)}}),r("page.len()",function(t){return void 0===t?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(e){Xe(e,t)})}),r("ajax.json()",function(){var e=this.context;if(0<e.length)return e[0].json}),r("ajax.params()",function(){var e=this.context;if(0<e.length)return e[0].oAjaxData}),r("ajax.reload()",function(t,n){return this.iterator("table",function(e){dt(e,!1===n,t)})}),r("ajax.url()",function(t){var e=this.context;return void 0===t?0===e.length?void 0:(e=e[0],H.isPlainObject(e.ajax)?e.ajax.url:e.ajax):this.iterator("table",function(e){H.isPlainObject(e.ajax)?e.ajax.url=t:e.ajax=t})}),r("ajax.url().load()",function(t,n){return this.iterator("table",function(e){dt(e,!1===n,t)})});function gt(o,i,e,t){function l(e,t){var n;if(Array.isArray(e)||e instanceof H)for(var r=0,a=e.length;r<a;r++)l(e[r],t);else e.nodeName&&"tr"===e.nodeName.toLowerCase()?(e.setAttribute("data-dt-row",i.idx),s.push(e)):(n=H("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(t),H("td",n).addClass(t).html(e)[0].colSpan=oe(o),s.push(n[0]))}var s=[];l(e,t),i._details&&i._details.detach(),i._details=H(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function mt(e,t){var n=e.context;if(n.length&&e.length){var r=n[0].aoData[e[0]];if(r._details){(r._detailsShow=t)?(r._details.insertAfter(r.nTr),H(r.nTr).addClass("dt-hasChild")):(r._details.detach(),H(r.nTr).removeClass("dt-hasChild")),G(n[0],null,"childRow",[t,e.row(e[0])]);var i=n[0],a=new X(i),r=".dt.DT_details",t="draw"+r,e="column-sizing"+r,r="destroy"+r,l=i.aoData;if(a.off(t+" "+e+" "+r),b(l,"_details").length>0){a.on(t,function(e,t){if(i!==t)return;a.rows({page:"current"}).eq(0).each(function(e){var t=l[e];if(t._detailsShow)t._details.insertAfter(t.nTr)})});a.on(e,function(e,t){if(i!==t)return;var n,r=oe(t);for(var a=0,o=l.length;a<o;a++){n=l[a];if(n&&n._details)n._details.each(function(){var e=H(this).children("td");if(e.length==1)e.attr("colspan",r)})}});a.on(r,function(e,t){if(i!==t)return;for(var n=0,r=l.length;n<r;n++)if(l[n]&&l[n]._details)Tt(a,n)})}wt(n)}}}function vt(e,t,n,r,a,o){for(var i=[],l=0,s=a.length;l<s;l++)i.push(q(e,a[l],t,o));return i}function bt(e,t,n){var r=e.aoHeader,e=e.titleRow,a=null;if(void 0!==n)a=n;else if(!0===e)a=0;else if(!1===e)a=r.length-1;else if(null!==e)a=e;else{for(var o=0;o<r.length;o++)r[o][t].unique&&H("span.dt-column-title",r[o][t].cell).text()&&(a=o);null===a&&(a=0)}return r[a][t].cell}var yt,Dt,xt=function(e,t){var n,r=[],a=e.aiDisplay,o=e.aiDisplayMaster,i=t.search,l=t.order,t=t.page;if("ssp"==J(e))return"removed"===i?[]:h(0,o.length);if("current"==t)for(u=e._iDisplayStart,c=e.fnDisplayEnd();u<c;u++)r.push(a[u]);else if("current"==l||"applied"==l){if("none"==i)r=o.slice();else if("applied"==i)r=a.slice();else if("removed"==i){for(var s={},u=0,c=a.length;u<c;u++)s[a[u]]=null;o.forEach(function(e){Object.prototype.hasOwnProperty.call(s,e)||r.push(e)})}}else if("index"==l||"original"==l)for(u=0,c=e.aoData.length;u<c;u++)e.aoData[u]&&("none"==i||-1===(n=a.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&r.push(u);else if("number"==typeof l){var d=Ze(e,l,"asc");if("none"===i)r=d;else for(u=0;u<d.length;u++)(-1===(n=a.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&r.push(d[u])}return r},St=(r("rows()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=ht(r);var e=this.iterator("table",function(e){return t=ft("row",t=n,function(n){var e=f(n),r=a.aoData;if(null!==e&&!o)return[e];if(i=i||xt(a,o),null!==e&&-1!==i.indexOf(e))return[e];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(e){var t=r[e];return n(e,t._aData,t.nTr)?e:null});if(n.nodeName)return e=n._DT_RowIndex,t=n._DT_CellIndex,void 0!==e?r[e]&&r[e].nTr===n?[e]:[]:t?r[t.row]&&r[t.row].nTr===n.parentNode?[t.row]:[]:(e=H(n).closest("*[data-dt-row]")).length?[e.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var t=a.aIds[n.replace(/^#/,"")];if(void 0!==t)return[t.idx]}e=A(v(a.aoData,i,"nTr"));return H(e).filter(n).map(function(){return this._DT_RowIndex}).toArray()},a=e,o=r),"current"!==o.order&&"applied"!==o.order||Ge(a,t),t;var a,t,o,i},1);return e.selector.rows=n,e.selector.opts=r,e}),r("rows().nodes()",function(){return this.iterator("row",function(e,t){return e.aoData[t].nTr||void 0},1)}),r("rows().data()",function(){return this.iterator(!0,"rows",function(e,t){return v(e.aoData,t,"_aData")},1)}),e("rows().cache()","row().cache()",function(n){return this.iterator("row",function(e,t){e=e.aoData[t];return"search"===n?e._aFilterData:e._aSortData},1)}),e("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(e,t){be(e,t,n)})}),e("rows().indexes()","row().index()",function(){return this.iterator("row",function(e,t){return t},1)}),e("rows().ids()","row().id()",function(e){for(var t=[],n=this.context,r=0,a=n.length;r<a;r++)for(var o=0,i=this[r].length;o<i;o++){var l=n[r].rowIdFn(n[r].aoData[this[r][o]]._aData);t.push((!0===e?"#":"")+l)}return new X(n,t)}),e("rows().remove()","row().remove()",function(){return this.iterator("row",function(e,t){var n=e.aoData,r=n[t],a=e.aiDisplayMaster.indexOf(t),a=(-1!==a&&e.aiDisplayMaster.splice(a,1),0<e._iRecordsDisplay&&e._iRecordsDisplay--,rt(e),e.rowIdFn(r._aData));void 0!==a&&delete e.aIds[a],n[t]=null}),this}),r("rows.add()",function(o){var e=this.iterator("table",function(e){for(var t,n=[],r=0,a=o.length;r<a;r++)(t=o[r]).nodeName&&"TR"===t.nodeName.toUpperCase()?n.push(fe(e,t)[0]):n.push(D(e,t));return n},1),t=this.rows(-1);return t.pop(),it(t,e),t}),r("row()",function(e,t){return pt(this.rows(e,t))}),r("row().data()",function(e){var t,n=this.context;return void 0===e?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((t=n[0].aoData[this[0]])._aData=e,Array.isArray(e)&&t.nTr&&t.nTr.id&&m(n[0].rowId)(e,t.nTr.id),be(n[0],this[0],"data"),this)}),r("row().node()",function(){var e=this.context;if(e.length&&this.length&&this[0].length){e=e[0].aoData[this[0]];if(e&&e.nTr)return e.nTr}return null}),r("row.add()",function(t){t instanceof H&&t.length&&(t=t[0]);var e=this.iterator("table",function(e){return t.nodeName&&"TR"===t.nodeName.toUpperCase()?fe(e,t)[0]:D(e,t)});return this.row(e[0])}),H(S).on("plugin-init.dt",function(e,t){var r=new X(t);r.on("stateSaveParams.DT",function(e,t,n){for(var r=t.rowIdFn,a=t.aiDisplayMaster,o=[],i=0;i<a.length;i++){var l=a[i],l=t.aoData[l];l._detailsShow&&o.push("#"+r(l._aData))}n.childRows=o}),r.on("stateLoaded.DT",function(e,t,n){St(r,n)}),St(r,r.state.loaded())}),function(e,t){t&&t.childRows&&e.rows(t.childRows.map(function(e){return e.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){G(e.settings()[0],null,"requestChild",[this])})}),wt=V.util.throttle(function(e){Ke(e[0])},500),Tt=function(e,t){var n=e.context;n.length&&(t=n[0].aoData[void 0!==t?t:e[0]])&&t._details&&(t._details.detach(),t._detailsShow=void 0,t._details=void 0,H(t.nTr).removeClass("dt-hasChild"),wt(n))},_t="row().child",Ct=_t+"()",It=(r(Ct,function(e,t){var n=this.context;return void 0===e?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===e?this.child.show():!1===e?Tt(this):n.length&&this.length&&gt(n[0],n[0].aoData[this[0]],e,t),this)}),r([_t+".show()",Ct+".show()"],function(){return mt(this,!0),this}),r([_t+".hide()",Ct+".hide()"],function(){return mt(this,!1),this}),r([_t+".remove()",Ct+".remove()"],function(){return Tt(this),this}),r(_t+".isShown()",function(){var e=this.context;return e.length&&this.length&&e[0].aoData[this[0]]&&e[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+)?:(name|title|visIdx|visible)$/);r("columns()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=ht(r);var e=this.iterator("table",function(e){return t=n,l=r,c=(i=e).aoColumns,d=function(e){for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e[n].length;r++){var a=e[n][r].cell;t.includes(a)||t.push(a)}return t}(i.aoHeader),t=ft("column",t,function(n){var r,e=f(n);if(""===n)return h(c.length);if(null!==e)return[0<=e?e:c.length+e];if("function"==typeof n)return r=xt(i,l),c.map(function(e,t){return n(t,vt(i,t,0,0,r),bt(i,t))?t:null});var t,a,o="string"==typeof n?n.match(It):"";if(o)switch(o[2]){case"visIdx":case"visible":return o[1]&&o[1].match(/^\d+$/)?(t=parseInt(o[1],10))<0?[(a=c.map(function(e,t){return e.bVisible?t:null}))[a.length+t]]:[re(i,t)]:c.map(function(e,t){return e.bVisible&&(!o[1]||0<H(d[t]).filter(o[1]).length)?t:null});case"name":return(s=s||b(c,"sName")).map(function(e,t){return e===o[1]?t:null});case"title":return(u=u||b(c,"sTitle")).map(function(e,t){return e===o[1]?t:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(e=H(d).filter(n).map(function(){return de(this)}).toArray().sort(function(e,t){return e-t})).length||!n.nodeName?e:(e=H(n).closest("*[data-dt-column]")).length?[e.data("dt-column")]:[]},i,l),l.columnOrder&&"index"===l.columnOrder?t.sort(function(e,t){return e-t}):t;var i,t,l,s,u,c,d},1);return e.selector.cols=n,e.selector.opts=r,e}),e("columns().header()","column().header()",function(n){return this.iterator("column",function(e,t){return bt(e,t,n)},1)}),e("columns().footer()","column().footer()",function(n){return this.iterator("column",function(e,t){return e.aoFooter.length?e.aoFooter[void 0!==n?n:0][t].cell:null},1)}),e("columns().data()","column().data()",function(){return this.iterator("column-rows",vt,1)}),e("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return vt(e,t,0,0,a,o)},1)}),e("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].mData},1)}),e("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"search"===o?"_aFilterData":"_aSortData",t)},1)}),e("columns().init()","column().init()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t]},1)}),e("columns().names()","column().name()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].sName},1)}),e("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"anCells",t)},1)}),e("columns().titles()","column().title()",function(n,r){return this.iterator("column",function(e,t){"number"==typeof n&&(r=n,n=void 0);t=H("span.dt-column-title",this.column(t).header(r));return void 0!==n?(t.html(n),this):t.html()},1)}),e("columns().types()","column().type()",function(){return this.iterator("column",function(e,t){t=e.aoColumns[t].sType;return t||se(e),t},1)}),e("columns().visible()","column().visible()",function(n,r){var t=this,a=[],e=this.iterator("column",function(e,t){if(void 0===n)return e.aoColumns[t].bVisible;!function(e,t,n){var r,a,o=e.aoColumns,i=o[t],l=e.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=b(o,"bVisible").indexOf(!0,t+1),u=0,c=l.length;u<c;u++)l[u]&&(a=l[u].nTr,r=l[u].anCells,a)&&a.insertBefore(r[t],r[s]||null);else H(b(e.aoData,"anCells",t)).detach();return i.bVisible=n,$e(e),!0}(e,t,n)||a.push(t)});return void 0!==n&&this.iterator("table",function(e){_e(e,e.aoHeader),_e(e,e.aoFooter),e.aiDisplay.length||H(e.nTBody).find("td[colspan]").attr("colspan",oe(e)),Ke(e),t.iterator("column",function(e,t){a.includes(t)&&G(e,null,"column-visibility",[e,t,n,r])}),a.length&&(void 0===r||r)&&t.columns.adjust()}),e}),e("columns().widths()","column().width()",function(){var e=this.columns(":visible").count(),e=H("<tr>").html("<td>"+Array(e).join("</td><td>")+"</td>"),n=(H(this.table().body()).append(e),e.children().map(function(){return H(this).outerWidth()}));return e.remove(),this.iterator("column",function(e,t){e=ae(e,t);return null!==e?n[e]:0},1)}),e("columns().indexes()","column().index()",function(n){return this.iterator("column",function(e,t){return"visible"===n?ae(e,t):t},1)}),r("columns.adjust()",function(){return this.iterator("table",function(e){e.containerWidth=-1,ne(e)},1)}),r("column.index()",function(e,t){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===e||"toData"===e?re(n,t):"fromData"===e||"toVisible"===e?ae(n,t):void 0}),r("column()",function(e,t){return pt(this.columns(e,t))});function Lt(e,t){H(e).find("span.dt-column-order").remove(),H(e).find("span.dt-column-title").each(function(){var e=H(this).html();H(this).parent().parent().append(e),H(this).remove()}),H(e).find("div.dt-column-"+t).remove(),H("th, td",e).removeAttr("data-dt-column")}r("cells()",function(g,e,m){var r,a,o,i,l,s,t;return H.isPlainObject(g)&&(void 0===g.row?(m=g,g=null):(m=e,e=null)),H.isPlainObject(e)&&(m=e,e=null),null==e?this.iterator("table",function(e){return r=e,e=g,t=ht(m),d=r.aoData,f=xt(r,t),n=A(v(d,f,"anCells")),h=H(M([],n)),p=r.aoColumns.length,ft("cell",e,function(e){var t,n="function"==typeof e;if(null==e||n){for(o=[],i=0,l=f.length;i<l;i++)for(a=f[i],s=0;s<p;s++)u={row:a,column:s},(!n||(c=d[a],e(u,q(r,a,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return H.isPlainObject(e)?void 0!==e.column&&void 0!==e.row&&-1!==f.indexOf(e.row)?[e]:[]:(t=h.filter(e).map(function(e,t){return{row:t._DT_CellIndex.row,column:t._DT_CellIndex.column}}).toArray()).length||!e.nodeName?t:(c=H(e).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},r,t);var r,t,a,o,i,l,s,u,c,d,f,n,h,p}):(t=m?{page:m.page,order:m.order,search:m.search}:{},r=this.columns(e,t),a=this.rows(g,t),t=this.iterator("table",function(e,t){var n=[];for(o=0,i=a[t].length;o<i;o++)for(l=0,s=r[t].length;l<s;l++)n.push({row:a[t][o],column:r[t][l]});return n},1),t=m&&m.selected?this.cells(t,m):t,H.extend(t.selector,{cols:e,rows:g,opts:m}),t)}),e("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(e,t,n){e=e.aoData[t];return e&&e.anCells?e.anCells[n]:void 0},1)}),r("cells().data()",function(){return this.iterator("cell",function(e,t,n){return q(e,t,n)},1)}),e("cells().cache()","cell().cache()",function(r){return r="search"===r?"_aFilterData":"_aSortData",this.iterator("cell",function(e,t,n){return e.aoData[t][r][n]},1)}),e("cells().render()","cell().render()",function(r){return this.iterator("cell",function(e,t,n){return q(e,t,n,r)},1)}),e("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(e,t,n){return{row:t,column:n,columnVisible:ae(e,n)}},1)}),e("cells().invalidate()","cell().invalidate()",function(r){return this.iterator("cell",function(e,t,n){be(e,t,r,n)})}),r("cell()",function(e,t,n){return pt(this.cells(e,t,n))}),r("cell().data()",function(e){var t,n,r,a,o,i=this.context,l=this[0];return void 0===e?i.length&&l.length?q(i[0],l[0].row,l[0].column):void 0:(t=i[0],n=l[0].row,r=l[0].column,a=t.aoColumns[r],o=t.aoData[n]._aData,a.fnSetData(o,e,{settings:t,row:n,col:r}),be(i[0],l[0].row,"data",l[0].column),this)}),r("order()",function(n,e){var t=this.context,r=Array.prototype.slice.call(arguments);return void 0===n?0!==t.length?t[0].aaSorting:void 0:("number"==typeof n?n=[[n,e]]:1<r.length&&(n=r),this.iterator("table",function(e){var t=[];g(e,t,n),e.aaSorting=t}))}),r("order.listener()",function(t,n,r){return this.iterator("table",function(e){Ye(e,t,{},n,r)})}),r("order.fixed()",function(t){var e;return t?this.iterator("table",function(e){e.aaSortingFixed=H.extend(!0,{},t)}):(e=(e=this.context).length?e[0].aaSortingFixed:void 0,Array.isArray(e)?{pre:e}:e)}),r(["columns().order()","column().order()"],function(n){var r=this;return n?this.iterator("table",function(e,t){e.aaSorting=r[t].map(function(e){return[e,n]})}):this.iterator("column",function(e,t){for(var n=Je(e),r=0,a=n.length;r<a;r++)if(n[r].col===t)return n[r].dir;return null},1)}),e("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(e,t){e=e.aoColumns[t];return n?e.asSorting:e.bSortable},1)}),r("processing()",function(t){return this.iterator("table",function(e){I(e,t)})}),r("search()",function(t,n,r,a){var e=this.context;return void 0===t?0!==e.length?e[0].oPreviousSearch.search:void 0:this.iterator("table",function(e){e.oFeatures.bFilter&&Re(e,"object"==typeof n?H.extend(e.oPreviousSearch,n,{search:t}):H.extend(e.oPreviousSearch,{search:t,regex:null!==n&&n,smart:null===r||r,caseInsensitive:null===a||a}))})}),r("search.fixed()",function(t,n){var e=this.iterator(!0,"table",function(e){e=e.searchFixed;return t?void 0===n?e[t]:(null===n?delete e[t]:e[t]=n,this):Object.keys(e)});return void 0!==t&&void 0===n?e[0]:e}),e("columns().search()","column().search()",function(r,a,o,i){return this.iterator("column",function(e,t){var n=e.aoPreSearchCols;if(void 0===r)return n[t].search;e.oFeatures.bFilter&&("object"==typeof a?H.extend(n[t],a,{search:r}):H.extend(n[t],{search:r,regex:null!==a&&a,smart:null===o||o,caseInsensitive:null===i||i}),Re(e,e.oPreviousSearch))})}),r(["columns().search.fixed()","column().search.fixed()"],function(n,r){var e=this.iterator(!0,"column",function(e,t){e=e.aoColumns[t].searchFixed;return n?void 0===r?e[n]||null:(null===r?delete e[n]:e[n]=r,this):Object.keys(e)});return void 0!==n&&void 0===r?e[0]:e}),r("state()",function(e,t){var n;return e?(n=H.extend(!0,{},e),this.iterator("table",function(e){!1!==t&&(n.time=+new Date+100),et(e,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),r("state.clear()",function(){return this.iterator("table",function(e){e.fnStateSaveCallback.call(e.oInstance,e,{})})}),r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),r("state.save()",function(){return this.iterator("table",function(e){Ke(e)})}),V.use=function(e,t){var n="string"==typeof e?t:e,t="string"==typeof t?t:e;if(void 0===n&&"string"==typeof t)switch(t){case"lib":case"jq":return H;case"win":return W;case"datetime":return V.DateTime;case"luxon":return o;case"moment":return i;case"bootstrap":return yt||W.bootstrap;case"foundation":return Dt||W.Foundation;default:return null}"lib"===t||"jq"===t||n&&n.fn&&n.fn.jquery?H=n:"win"===t||n&&n.document?S=(W=n).document:"datetime"===t||n&&"DateTime"===n.type?V.DateTime=n:"luxon"===t||n&&n.FixedOffsetZone?o=n:"moment"===t||n&&n.isMoment?i=n:"bootstrap"===t||n&&n.Modal&&"modal"===n.Modal.NAME?yt=n:("foundation"===t||n&&n.Reveal)&&(Dt=n)},V.factory=function(e,t){var n=!1;return e&&e.document&&(S=(W=e).document),t&&t.fn&&t.fn.jquery&&(H=t,n=!0),n},V.versionCheck=function(e,t){for(var n,r,a=(t||V.version).split("."),o=e.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(a[i],10)||0)!==(r=parseInt(o[i],10)||0))return r<n;return!0},V.isDataTable=function(e){var a=H(e).get(0),o=!1;return e instanceof V.Api||(H.each(V.settings,function(e,t){var n=t.nScrollHead?H("table",t.nScrollHead)[0]:null,r=t.nScrollFoot?H("table",t.nScrollFoot)[0]:null;t.nTable!==a&&n!==a&&r!==a||(o=!0)}),o)},V.tables=function(t){var e=!1,n=(H.isPlainObject(t)&&(e=t.api,t=t.visible),V.settings.filter(function(e){return!(t&&!H(e.nTable).is(":visible"))}).map(function(e){return e.nTable}));return e?new X(n):n},V.camelToHungarian=B,r("$()",function(e,t){t=this.rows(t).nodes(),t=H(t);return H([].concat(t.filter(e).toArray(),t.find(e).toArray()))}),H.each(["on","one","off"],function(e,n){r(n+"()",function(){var e=Array.prototype.slice.call(arguments),t=(e[0]=e[0].split(/\s/).map(function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" "),H(this.tables().nodes()));return t[n].apply(t,e),this})}),r("clear()",function(){return this.iterator("table",function(e){ve(e)})}),r("error()",function(t){return this.iterator("table",function(e){z(e,0,t)})}),r("settings()",function(){return new X(this.context,this.context)}),r("init()",function(){var e=this.context;return e.length?e[0].oInit:null}),r("data()",function(){return this.iterator("table",function(e){return b(e.aoData,"_aData")}).flatten()}),r("trigger()",function(t,n,r){return this.iterator("table",function(e){return G(e,null,t,n,r)}).flatten()}),r("ready()",function(t){var e=this.context;return t?this.tables().every(function(){var e=this;this.context[0]._bInitComplete?t.call(e):this.on("init.dt.DT",function(){t.call(e)})}):e.length?e[0]._bInitComplete||!1:null}),r("destroy()",function(c){return c=c||!1,this.iterator("table",function(e){var t=e.oClasses,n=e.nTable,r=e.nTBody,a=e.nTHead,o=e.nTFoot,i=H(n),r=H(r),l=H(e.nTableWrapper),s=e.aoData.map(function(e){return e?e.nTr:null}),u=t.order,o=(e.bDestroying=!0,G(e,"aoDestroyCallback","destroy",[e],!0),c||new X(e).columns().visible(!0),e.resizeObserver&&e.resizeObserver.disconnect(),l.off(".DT").find(":not(tbody *)").off(".DT"),H(W).off(".DT-"+e.sInstance),n!=a.parentNode&&(i.children("thead").detach(),i.append(a)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),Lt(a,"header"),Lt(o,"footer"),e.colgroup.remove(),e.aaSorting=[],e.aaSortingFixed=[],Qe(e),H(i).find("th, td").removeClass(H.map(V.ext.type.className,function(e){return e}).join(" ")),H("th, td",a).removeClass(u.none+" "+u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width","").removeAttr("aria-sort"),r.children().detach(),r.append(s),e.nTableWrapper.parentNode),a=e.nTableWrapper.nextSibling,u=c?"remove":"detach",r=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,a),i.css("width",e.sDestroyWidth).removeClass(t.table)),V.settings.indexOf(e));-1!==r&&V.settings.splice(r,1)})}),H.each(["column","row","cell"],function(e,s){r(s+"s().every()",function(r){var a,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(e,t,n){a=i[s](t,o),"cell"===s?r.call(a,a[0][0].row,a[0][0].column,n,l):r.call(a,t,n,l),l++})})}),r("i18n()",function(e,t,n){var r=this.context[0],e=U(e)(r.oLanguage);return"string"==typeof(e=H.isPlainObject(e=void 0===e?t:e)?void 0!==n&&void 0!==e[n]?e[n]:!1===n?e:e._:e)?e.replace("%d",n):e}),V.version="2.3.4",V.settings=[],V.models={},V.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},V.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},V.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,maxLenString:null,searchFixed:null},V.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,titleRow:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(e){try{return JSON.parse((-1===e.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+e.sInstance+"_"+location.pathname))}catch(e){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(e,t){try{(-1===e.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+e.sInstance+"_"+location.pathname,JSON.stringify(t))}catch(e){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous",number:""}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},lengthLabels:{"-1":"All"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},orderDescReverse:!0,oSearch:H.extend({},V.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null,iDeferLoading:null,on:null},Z(V.defaults),V.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},Z(V.defaults.column),V.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==J(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==J(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var e=this._iDisplayLength,t=this._iDisplayStart,n=t+e,r=this.aiDisplay.length,a=this.oFeatures,o=a.bPaginate;return a.bServerSide?!1===o||-1===e?t+r:Math.min(t+e,this._iRecordsDisplay):!o||r<n||-1===e?r:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null,deferLoading:null,typeDetect:!0,resizeObserver:null,containerWidth:-1,orderDescReverse:null,orderIndicators:!0,orderHandler:!0,titleRow:null};function At(t,n){return function(e){return _(e)||"string"!=typeof e||(e=e.replace(N," "),t&&(e=w(e)),n&&(e=k(e,!1))),e}}Ct=V.ext.pager;H.extend(Ct,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:qt,numbers_length:7}),H.extend(!0,V.ext.renderer,{pagingButton:{_:function(e,t,n,r,a){var e=e.oClasses.paging,o=[e.button];return r&&o.push(e.active),a&&o.push(e.disabled),{display:r="ellipsis"===t?H('<span class="ellipsis"></span>').html(n)[0]:H("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:r}}},pagingContainer:{_:function(e,t){return t}}});function Nt(e,t,n,r,a){return i?e[t](a):o?e[n](a):r?e[r](a):e}var o,i,Ft=!1;function Ot(e,t,n){var r;if(W.luxon&&!o&&(o=W.luxon),i=W.moment&&!i?W.moment:i){if(!(r=i.utc(e,t,n,!0)).isValid())return null}else if(o){if(!(r=t&&"string"==typeof e?o.DateTime.fromFormat(e,t):o.DateTime.fromISO(e)).isValid)return null;r=r.setLocale(n)}else t?(Ft||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),Ft=!0):r=new Date(e);return r}function jt(s){return function(r,a,o,i){0===arguments.length?(o="en",r=a=null):1===arguments.length?(o="en",a=r,r=null):2===arguments.length&&(o=a,a=r,r=null);var l="datetime"+(a?"-"+a:"");return V.ext.type.order[l+"-pre"]||V.type(l,{detect:function(e){return e===l&&l},order:{pre:function(e){return e.valueOf()}},className:"dt-right"}),function(e,t){var n;return null==e&&(e="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===t?l:""===e?"sort"!==t?"":Ot("0000-01-01 00:00:00",null,o):!(null===a||r!==a||"sort"===t||"type"===t||e instanceof Date)||null===(n=Ot(e,r,o))?e:"sort"===t?n:(e=null===a?Nt(n,"toDate","toJSDate","")[s](navigator.language,{timeZone:"UTC"}):Nt(n,"format","toFormat","toISOString",a),"display"===t?u(e):e)}}}var Rt=",",Pt=".";if(void 0!==W.Intl)try{for(var Et=(new Intl.NumberFormat).formatToParts(100000.1),l=0;l<Et.length;l++)"group"===Et[l].type?Rt=Et[l].value:"decimal"===Et[l].type&&(Pt=Et[l].value)}catch(e){}V.datetime=function(n,r){var a="datetime-"+n;r=r||"en",V.ext.type.order[a]||V.type(a,{detect:function(e){var t=Ot(e,n,r);return!(""!==e&&!t)&&a},order:{pre:function(e){return Ot(e,n,r)||0}},className:"dt-right"})},V.render={date:jt("toLocaleDateString"),datetime:jt("toLocaleString"),time:jt("toLocaleTimeString"),number:function(a,o,i,l,s){return null==a&&(a=Rt),null==o&&(o=Pt),{display:function(e){if("number"!=typeof e&&"string"!=typeof e)return e;if(""===e||null===e)return e;var t=e<0?"-":"",n=parseFloat(e),r=Math.abs(n);if(1e11<=r||r<1e-4&&0!==r)return(r=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+r[1]+"</sup>";if(isNaN(n))return u(e);n=n.toFixed(i),e=Math.abs(n);r=parseInt(e,10),n=i?o+(e-r).toFixed(i).substring(2):"";return(t=0===r&&0===parseFloat(n)?"":t)+(l||"")+r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};function kt(e,t){return e=null!=e?e.toString().toLowerCase():"",t=null!=t?t.toString().toLowerCase():"",e.localeCompare(t,navigator.languages[0]||navigator.language,{numeric:!0,ignorePunctuation:!0})}function Mt(e,t){return e=w(e),t=w(t),kt(e,t)}var s=V.ext.type,Ht=(V.type=function(n,e,t){if(!e)return{className:s.className[n],detect:s.detect.find(function(e){return e._name===n}),order:{pre:s.order[n+"-pre"],asc:s.order[n+"-asc"],desc:s.order[n+"-desc"]},render:s.render[n],search:s.search[n]};function r(e,t){s[e][n]=t}function a(e){Object.defineProperty(e,"_name",{value:n});var t=s.detect.findIndex(function(e){return e._name===n});-1===t?s.detect.unshift(e):s.detect.splice(t,1,e)}function o(e){s.order[n+"-pre"]=e.pre,s.order[n+"-asc"]=e.asc,s.order[n+"-desc"]=e.desc}void 0===t&&(t=e,e=null),"className"===e?r("className",t):"detect"===e?a(t):"order"===e?o(t):"render"===e?r("render",t):"search"===e?r("search",t):e||(t.className&&r("className",t.className),void 0!==t.detect&&a(t.detect),t.order&&o(t.order),void 0!==t.render&&r("render",t.render),void 0!==t.search&&r("search",t.search))},V.types=function(){return s.detect.map(function(e){return e._name})},V.type("string",{detect:function(){return"string"},order:{pre:function(e){return _(e)&&"boolean"!=typeof e?"":"string"==typeof e?e.toLowerCase():e.toString?e.toString():""}},search:At(!1,!0)}),V.type("string-utf8",{detect:{allOf:function(e){return!0},oneOf:function(e){return!_(e)&&navigator.languages&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:kt,desc:function(e,t){return-1*kt(e,t)}},search:At(!1,!0)}),V.type("html",{detect:{allOf:function(e){return _(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return!_(e)&&"string"==typeof e&&-1!==e.indexOf("<")}},order:{pre:function(e){return _(e)?"":e.replace?w(e).trim().toLowerCase():e+""}},search:At(!0,!0)}),V.type("html-utf8",{detect:{allOf:function(e){return _(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return navigator.languages&&!_(e)&&"string"==typeof e&&-1!==e.indexOf("<")&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Mt,desc:function(e,t){return-1*Mt(e,t)}},search:At(!0,!0)}),V.type("date",{className:"dt-type-date",detect:{allOf:function(e){var t;return!e||e instanceof Date||j.test(e)?null!==(t=Date.parse(e))&&!isNaN(t)||_(e):null},oneOf:function(e){return e instanceof Date||"string"==typeof e&&j.test(e)}},order:{pre:function(e){e=Date.parse(e);return isNaN(e)?-1/0:e}}}),V.type("html-num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,F,P)}},search:At(!0,!0)}),V.type("html-num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,F)}},search:At(!0,!0)}),V.type("num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t,P)}}}),V.type("num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Ht(e,t)}}}),function(e,t,n,r){var a;return 0===e||e&&"-"!==e?"number"==(a=typeof e)||"bigint"==a?e:+(e=(e=t?E(e,t):e).replace&&(n&&(e=e.replace(n,"")),r)?e.replace(r,""):e):-1/0});function Wt(e,t,n){n&&(e[t]=n)}H.extend(!0,V.ext.renderer,{footer:{_:function(e,t,n){t.addClass(n.tfoot.cell)}},header:{_:function(g,m,v){m.addClass(v.thead.cell),g.oFeatures.bSort||m.addClass(v.order.none);var e=g.titleRow,t=m.closest("thead").find("tr"),n=m.parent().index();"disable"===m.attr("data-dt-order")||"disable"===m.parent().attr("data-dt-order")||!0===e&&0!==n||!1===e&&n!==t.length-1||"number"==typeof e&&n!==e||H(g.nTable).on("order.dt.DT column-visibility.dt.DT",function(e,t,n){if(g===t){var r=t.sortDetails;if(r){var a=b(r,"col");if("column-visibility"!==e.type||a.includes(n)){for(var e=v.order,n=t.api.columns(m),o=g.aoColumns[n.flatten()[0]],i=n.orderable().includes(!0),l="",s=n.indexes(),u=n.orderable(!0).flatten(),c=g.iTabIndex,d=t.orderHandler&&i,f=(m.removeClass(e.isAsc+" "+e.isDesc).toggleClass(e.none,!i).toggleClass(e.canAsc,d&&u.includes("asc")).toggleClass(e.canDesc,d&&u.includes("desc")),!0),h=0;h<s.length;h++)a.includes(s[h])||(f=!1);f&&(d=n.order(),m.addClass(d.includes("asc")?e.isAsc:""+d.includes("desc")?e.isDesc:""));var p=-1;for(h=0;h<a.length;h++)if(g.aoColumns[a[h]].bVisible){p=a[h];break}s[0]==p?(u=r[0],n=o.asSorting,m.attr("aria-sort","asc"===u.dir?"ascending":"descending"),l=n[u.index+1]?"Reverse":"Remove"):m.removeAttr("aria-sort"),i&&((d=m.find(".dt-column-order")).attr("role","button").attr("aria-label",i?o.ariaTitle+t.api.i18n("oAria.orderable"+l):o.ariaTitle),-1!==c)&&d.attr("tabindex",c)}}}})}},layout:{_:function(e,t,n){var r=e.oClasses.layout,a=H("<div/>").attr("id",n.id||null).addClass(n.className||r.row).appendTo(t);V.ext.renderer.layout._forLayoutRow(n,function(e,t){var n;"id"!==e&&"className"!==e&&(n="",t.table&&(a.addClass(r.tableRow),n+=r.tableCell+" "),n+="start"===e?r.start:"end"===e?r.end:r.full,H("<div/>").attr({id:t.id||null,class:t.className||r.cell+" "+n}).append(t.contents).appendTo(a))})},_forLayoutRow:function(t,n){function r(e){switch(e){case"":return 0;case"start":return 1;case"end":return 2;default:return 3}}Object.keys(t).sort(function(e,t){return r(e)-r(t)}).forEach(function(e){n(e,t[e])})}}}),V.feature={},V.feature.register=function(e,t,n){V.ext.features[e]=t,n&&T.feature.push({cFeature:n,fnInit:t})},V.feature.register("div",function(e,t){var n=H("<div>")[0];return t&&(Wt(n,"className",t.className),Wt(n,"id",t.id),Wt(n,"innerHTML",t.html),Wt(n,"textContent",t.text)),n}),V.feature.register("info",function(e,s){var t,n,u;return e.oFeatures.bInfo?(t=e.oLanguage,n=e.sTableId,u=H("<div/>",{class:e.oClasses.info.container}),s=H.extend({callback:t.fnInfoCallback,empty:t.sInfoEmpty,postfix:t.sInfoPostFix,search:t.sInfoFiltered,text:t.sInfo},s),e.aoDrawCallback.push(function(e){var t=s,n=u,r=e._iDisplayStart+1,a=e.fnDisplayEnd(),o=e.fnRecordsTotal(),i=e.fnRecordsDisplay(),l=i?t.text:t.empty;i!==o&&(l+=" "+t.search),l+=t.postfix,l=ot(e,l),t.callback&&(l=t.callback.call(e.oInstance,e,r,a,o,i,l)),n.html(l),G(e,null,"info",[e,n[0],l])}),e._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),H(e.nTable).attr("aria-describedby",n+"_info"),e._infoEl=u),u):null},"i");var Xt=0;function Vt(e){var t=[];return e.numbers&&t.push("numbers"),e.previousNext&&(t.unshift("previous"),t.push("next")),e.firstLast&&(t.unshift("first"),t.push("last")),t}function Bt(e,t,n,r){var a=e.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(t){case"ellipsis":o.display="&#x2026;";break;case"first":o.display=a.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=a.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=a.sNext,0!==r&&n!==r-1||(o.disabled=!0);break;case"last":o.display=a.sLast,0!==r&&n!==r-1||(o.disabled=!0);break;default:"number"==typeof t&&(o.display=e.fnFormatNumber(t+1),n===t)&&(o.active=!0)}return o}function qt(e,t,n,r){var a=[],o=Math.floor(n/2),i=r?2:1,l=r?1:0;return t<=n?a=h(0,t):1===n?a=[e]:3===n?e<=1?a=[0,1,"ellipsis"]:t-2<=e?(a=h(t-2,t)).unshift("ellipsis"):a=["ellipsis",e,"ellipsis"]:e<=o?((a=h(0,n-i)).push("ellipsis"),r&&a.push(t-1)):t-1-o<=e?((a=h(t-(n-i),t)).unshift("ellipsis"),r&&a.unshift(0)):((a=h(e-o+i,e+o-l)).push("ellipsis"),a.unshift("ellipsis"),r&&(a.push(t-1),a.unshift(0))),a}V.feature.register("search",function(n,r){var e,t,a,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(e=n.oClasses.search,t=n.sTableId,c=n.oLanguage,a=n.oPreviousSearch,o='<input type="search" class="'+e.input+'"/>',-1===(r=H.extend({placeholder:c.sSearchPlaceholder,processing:!1,text:c.sSearch},r)).text.indexOf("_INPUT_")&&(r.text+="_INPUT_"),r.text=ot(n,r.text),c=r.text.match(/_INPUT_$/),s=r.text.match(/^_INPUT_/),i=r.text.replace(/_INPUT_/,""),l="<label>"+r.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=H("<div>").addClass(e.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Xt),s.find("input").attr("id","dt-search-"+Xt),Xt++,u=function(e){var t=this.value;a.return&&"Enter"!==e.key||t!=a.search&&Be(n,r.processing,function(){a.search=t,Re(n,a),n._iDisplayStart=0,x(n)})},c=null!==n.searchDelay?n.searchDelay:0,d=H("input",s).val(a.search).attr("placeholder",r.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?V.util.debounce(u,c):u).on("mouseup.DT",function(e){setTimeout(function(){u.call(d[0],e)},10)}).on("keypress.DT",function(e){if(13==e.keyCode)return!1}).attr("aria-controls",t),H(n.nTable).on("search.dt.DT",function(e,t){n===t&&d[0]!==S.activeElement&&d.val("function"!=typeof a.search?a.search:"")}),s):null},"f"),V.feature.register("paging",function(e,t){if(!e.oFeatures.bPaginate)return null;t=H.extend({buttons:V.ext.pager.numbers_length,type:e.sPaginationType,boundaryNumbers:!0,firstLast:!0,previousNext:!0,numbers:!0},t);function n(){!function e(t,n,r){if(!t._bInitComplete)return;var a=r.type?V.ext.pager[r.type]:Vt,o=t.oLanguage.oAria.paginate||{},i=t._iDisplayStart,l=t._iDisplayLength,s=t.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=[],h=[],i=a(r).map(function(e){return"numbers"===e?qt(c,d,r.buttons,r.boundaryNumbers):e});f=f.concat.apply(f,i);for(var p=0;p<f.length;p++){var g=f[p],m=Bt(t,g,c,d),v=at(t,"pagingButton")(t,g,m.display,m.active,m.disabled),b="string"==typeof g?o[g]:o.number?o.number+(g+1):null;H(v.clicker).attr({"aria-controls":t.sTableId,"aria-disabled":m.disabled?"true":null,"aria-current":m.active?"page":null,"aria-label":b,"data-dt-idx":g,tabIndex:m.disabled?-1:t.iTabIndex&&"span"!==v.clicker[0].nodeName.toLowerCase()?t.iTabIndex:null}),"number"!=typeof g&&H(v.clicker).addClass(g),nt(v.clicker,{action:g},function(e){e.preventDefault(),Ve(t,e.data.action,!0)}),h.push(v.display)}u=at(t,"pagingContainer")(t,h);s=n.find(S.activeElement).data("dt-idx");n.empty().append(u);void 0!==s&&n.find("[data-dt-idx="+s+"]").trigger("focus");h.length&&(l=H(h[0]).outerHeight(),1<r.buttons)&&0<l&&H(n).height()>=2*l-10&&e(t,n,H.extend({},r,{buttons:r.buttons-2}))}(e,r.children(),t)}var r=H("<div/>").addClass(e.oClasses.paging.container+(t.type?" paging_"+t.type:"")).append(H("<nav>").attr("aria-label","pagination").addClass(e.oClasses.paging.nav));return e.aoDrawCallback.push(n),H(e.nTable).on("column-sizing.dt.DT",n),r},"p");var Ut=0;return V.feature.register("pageLength",function(r,e){var t=r.oFeatures;if(!t.bPaginate||!t.bLengthChange)return null;e=H.extend({menu:r.aLengthMenu,text:r.oLanguage.sLengthMenu},e);var t=r.oClasses.length,n=r.sTableId,a=e.menu,o=[],i=[];if(Array.isArray(a[0]))o=a[0],i=a[1];else for(p=0;p<a.length;p++)H.isPlainObject(a[p])?(o.push(a[p].value),i.push(a[p].label)):(o.push(a[p]),i.push(a[p]));for(var l=e.text.match(/_MENU_$/),s=e.text.match(/^_MENU_/),u=e.text.replace(/_MENU_/,""),e="<label>"+e.text+"</label>",s=(s?e="_MENU_<label>"+u+"</label>":l&&(e="<label>"+u+"</label>_MENU_"),"tmp-"+ +new Date),c=H("<div/>").addClass(t.container).append(e.replace("_MENU_",'<span id="'+s+'"></span>')),d=[],f=(Array.prototype.slice.call(c.find("label")[0].childNodes).forEach(function(e){e.nodeType===Node.TEXT_NODE&&d.push({el:e,text:e.textContent})}),function(t){d.forEach(function(e){e.el.textContent=ot(r,e.text,t)})}),h=H("<select/>",{"aria-controls":n,class:t.select}),p=0;p<o.length;p++){var g=r.api.i18n("lengthLabels."+o[p],null);null===g&&(g="number"==typeof i[p]?r.fnFormatNumber(i[p]):i[p]),h[0][p]=new Option(g,o[p])}return c.find("label").attr("for","dt-length-"+Ut),h.attr("id","dt-length-"+Ut),Ut++,c.find("#"+s).replaceWith(h),H("select",c).val(r._iDisplayLength).on("change.DT",function(){Xe(r,H(this).val()),x(r)}),H(r.nTable).on("length.dt.DT",function(e,t,n){r===t&&(H("select",c).val(n),f(n))}),f(r._iDisplayLength),c},"l"),((H.fn.dataTable=V).$=H).fn.dataTableSettings=V.settings,H.fn.dataTableExt=V.ext,H.fn.DataTable=function(e){return H(this).dataTable(e).api()},H.each(V,function(e,t){H.fn.DataTable[e]=t}),V});
41
(n=>{var r;"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e,window,document)}):"object"==typeof exports?(r=require("jquery"),"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||r(e),n(t,e,e.document)}:module.exports=n(r,window,window.document)):window.DataTable=n(jQuery,window,document)})(function(H,W,_){function f(e){var t=parseInt(e,10);return!isNaN(t)&&isFinite(e)?t:null}function c(e,t,n,r){var a=typeof e,o="string"==a;return"number"==a||"bigint"==a||!(!r||!T(e))||(t&&o&&(e=k(e,t)),n&&o&&(e=e.replace(E,"")),!isNaN(parseFloat(e))&&isFinite(e))}function n(e,t,n,r){var a;return!(!r||!T(e))||("string"!=typeof e||!e.match(/<(input|select)/i))&&(T(a=e)||"string"==typeof a)&&!!c(I(e),t,n,r)||null}function v(e,t,n,r){var a=[],o=0,i=t.length;if(void 0!==r)for(;o<i;o++)e[t[o]]&&e[t[o]][n]&&a.push(e[t[o]][n][r]);else for(;o<i;o++)e[t[o]]&&a.push(e[t[o]][n]);return a}function h(e,t){var n,r=[];void 0===t?(t=0,n=e):(n=t,t=e);for(var a=t;a<n;a++)r.push(a);return r}function L(e){for(var t=[],n=0,r=e.length;n<r;n++)e[n]&&t.push(e[n]);return t}function d(e){if(!(e.length<2))for(var t=e.slice().sort(),n=t[0],r=1,a=t.length;r<a;r++){if(t[r]===n)return;n=t[r]}return 1}var C,X,r,e,V=function(e,P){var E,k,M;return V.factory(e,P)?V:this instanceof V?H(e).DataTable(P):(k=void 0===(P=e),M=(E=this).length,k&&(P={}),this.api=function(){return new X(this)},this.each(function(){var t=1<M?nt({},P,!0):P,e=0,n=this.getAttribute("id"),r=V.defaults,a=H(this);if("table"!=this.nodeName.toLowerCase())z(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{t.on&&t.on.options&&st(a,"options",t.on.options),a.trigger("options.dt",t),K(r),ee(r.column),B(r,r,!0),B(r.column,r.column,!0),B(r,H.extend(t,ut(a.data())),!0);var o=V.settings;for(e=0,j=o.length;e<j;e++){var i=o[e];if(i.nTable==this||i.nTHead&&i.nTHead.parentNode==this||i.nTFoot&&i.nTFoot.parentNode==this){var l=(void 0!==t.bRetrieve?t:r).bRetrieve,s=(void 0!==t.bDestroy?t:r).bDestroy;if(k||l)return i.oInstance;if(s){new V.Api(i).destroy();break}return void z(i,0,"Cannot reinitialise DataTable",3)}if(i.sTableId==this.id){o.splice(e,1);break}}null!==n&&""!==n||(n="DataTables_Table_"+V.ext._unique++,this.id=n),a.children("colgroup").remove();var u,c=H.extend(!0,{},V.models.oSettings,{sDestroyWidth:a[0].style.width,sInstance:n,sTableId:n,colgroup:H("<colgroup>"),fastData:function(e,t,n){return q(c,e,t,n)}}),n=(c.nTable=this,c.oInit=t,o.push(c),c.api=new X(c),c.oInstance=1===E.length?E:a.dataTable(),K(t),t.aLengthMenu&&!t.iDisplayLength&&(t.iDisplayLength=Array.isArray(t.aLengthMenu[0])?t.aLengthMenu[0][0]:H.isPlainObject(t.aLengthMenu[0])?t.aLengthMenu[0].value:t.aLengthMenu[0]),t=nt(H.extend(!0,{},r),t),$(c.oFeatures,t,["bPaginate","bLengthChange","bFilter","bSort","bSortMulti","bInfo","bProcessing","bAutoWidth","bSortClasses","bServerSide","bDeferRender"]),$(c,t,["ajax","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","iStateDuration","bSortCellsTop","iTabIndex","sDom","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId","caption","layout","orderDescReverse","orderIndicators","orderHandler","titleRow","typeDetect","columnTitleTag",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]),$(c.oScroll,t,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]),$(c.oLanguage,t,"fnInfoCallback"),Y(c,"aoDrawCallback",t.fnDrawCallback),Y(c,"aoStateSaveParams",t.fnStateSaveParams),Y(c,"aoStateLoadParams",t.fnStateLoadParams),Y(c,"aoStateLoaded",t.fnStateLoaded),Y(c,"aoRowCallback",t.fnRowCallback),Y(c,"aoRowCreatedCallback",t.fnCreatedRow),Y(c,"aoHeaderCallback",t.fnHeaderCallback),Y(c,"aoFooterCallback",t.fnFooterCallback),Y(c,"aoInitComplete",t.fnInitComplete),Y(c,"aoPreDrawCallback",t.fnPreDrawCallback),c.rowIdFn=U(t.rowId),t.on&&Object.keys(t.on).forEach(function(e){st(a,e,t.on[e])}),c),d=(V.__browser||(f={},V.__browser=f,p=H("<div/>").css({position:"fixed",top:0,left:-1*W.pageXOffset,height:1,width:1,overflow:"hidden"}).append(H("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(H("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=p.children(),u=d.children(),f.barWidth=d[0].offsetWidth-d[0].clientWidth,f.bScrollbarLeft=1!==Math.round(u.offset().left),p.remove()),H.extend(n.oBrowser,V.__browser),n.oScroll.iBarWidth=V.__browser.barWidth,c.oClasses),f=(H.extend(d,V.ext.classes,t.oClasses),a.addClass(d.table),c.oFeatures.bPaginate||(t.iDisplayStart=0),void 0===c.iInitDisplayStart&&(c.iInitDisplayStart=t.iDisplayStart,c._iDisplayStart=t.iDisplayStart),t.iDeferLoading),h=(null!==f&&(c.deferLoading=!0,u=Array.isArray(f),c._iRecordsDisplay=u?f[0]:f,c._iRecordsTotal=u?f[1]:f),[]),p=this.getElementsByTagName("thead"),n=Fe(c,p[0]);if(t.aoColumns)h=t.aoColumns;else if(n.length)for(j=n[e=0].length;e<j;e++)h.push(null);for(e=0,j=h.length;e<j;e++)te(c);var g,m,v,b,y,D,x,S=c,w=t.aoColumnDefs,T=h,_=n,C=function(e,t){ne(c,e,t)},I=S.aoColumns;if(T)for(g=0,m=T.length;g<m;g++)T[g]&&T[g].name&&(I[g].sName=T[g].name);if(w)for(g=w.length-1;0<=g;g--){var A=void 0!==(x=w[g]).target?x.target:void 0!==x.targets?x.targets:x.aTargets;for(Array.isArray(A)||(A=[A]),v=0,b=A.length;v<b;v++){var L=A[v];if("number"==typeof L&&0<=L){for(;I.length<=L;)te(S);C(L,x)}else if("number"==typeof L&&L<0)C(I.length+L,x);else if("string"==typeof L)for(y=0,D=I.length;y<D;y++)"_all"===L?C(y,x):-1!==L.indexOf(":name")?I[y].sName===L.replace(":name","")&&C(y,x):_.forEach(function(e){e[y]&&(e=H(e[y].cell),L.match(/^[a-z][\w-]*$/i)&&(L="."+L),e.is(L))&&C(y,x)})}}if(T)for(g=0,m=T.length;g<m;g++)C(g,T[g]);var N,n=a.children("tbody").find("tr:first-child").eq(0),F=(n.length&&(N=function(e,t){return null!==e.getAttribute("data-"+t)?t:null},H(n[0]).children("th, td").each(function(e,t){var n,r=c.aoColumns[e];r||z(c,0,"Incorrect column count",18),r.mData===e&&(n=N(t,"sort")||N(t,"order"),t=N(t,"filter")||N(t,"search"),null===n&&null===t||(r.mData={_:e+".display",sort:null!==n?e+".@data-"+n:void 0,type:null!==n?e+".@data-"+n:void 0,filter:null!==t?e+".@data-"+t:void 0},r._isArrayHost=!0,ne(c,e)))})),Y(c,"aoDrawCallback",et),c.oFeatures);if(t.bStateSave&&(F.bStateSave=!0),void 0===t.aaSorting)for(var O=c.aaSorting,e=0,j=O.length;e<j;e++)O[e][1]=c.aoColumns[e].asSorting[0];Ke(c),Y(c,"aoDrawCallback",function(){(c.bSorted||"ssp"===J(c)||F.bDeferRender)&&Ke(c)});var n=a.children("caption"),n=(c.caption&&(n=0===n.length?H("<caption/>").prependTo(a):n).html(c.caption),n.length&&(n[0]._captionSide=n.css("caption-side"),c.captionNode=n[0]),n.length?c.colgroup.insertAfter(n):c.colgroup.prependTo(c.nTable),0===p.length&&(p=H("<thead/>").appendTo(a)),c.nTHead=p[0],a.children("tbody")),n=(0===n.length&&(n=H("<tbody/>").insertAfter(p)),c.nTBody=n[0],a.children("tfoot")),R=(0===n.length&&(n=H("<tfoot/>").appendTo(a)),c.nTFoot=n[0],c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,R,t.oLanguage),R.sUrl?H.ajax({dataType:"json",url:R.sUrl,success:function(e){B(r.oLanguage,e),H.extend(!0,R,e,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),We(c)},error:function(){z(c,0,"i18n file loading error",21),We(c)}}):(G(c,null,"i18n",[c],!0),We(c))}}),E=null,this)},N=(V.ext=C={builder:"dt/jszip-3.10.1/pdfmake-0.2.7/dt-2.3.7/b-3.2.6/b-colvis-3.2.6/b-html5-3.2.6/b-print-3.2.6/fh-4.0.6/r-3.0.8/rg-1.6.0/rr-1.5.1",buttons:{},ccContent:{},classes:{},errMode:"alert",escape:{attributes:!1},feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oStdClasses:C.classes,oPagination:C.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),F=/[\r\n\u2028]/g,O=/<([^>]*>)/g,j=Math.pow(2,28),R=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,P=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),E=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,T=function(e){return!e||!0===e||"-"===e},k=function(e,t){return N[t]||(N[t]=new RegExp(ke(t),"g")),"string"==typeof e&&"."!==t?e.replace(/\./g,"").replace(N[t],"."):e},b=function(e,t,n){var r=[],a=0,o=e.length;if(void 0!==n)for(;a<o;a++)e[a]&&e[a][t]&&r.push(e[a][t][n]);else for(;a<o;a++)e[a]&&r.push(e[a][t]);return r},I=function(e,t){if(!e||"string"!=typeof e)return e;if(e.length>j)throw new Error("Exceeded max str len");var n;for(e=e.replace(O,t||"");(e=(n=e).replace(/<script/i,""))!==n;);return n},u=function(e){return"string"==typeof(e=Array.isArray(e)?e.join(","):e)?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):e},M=function(e,t){var n;return"string"!=typeof e?e:(n=e.normalize?e.normalize("NFD"):e).length!==e.length?(!0===t?e+" ":"")+n.replace(/[\u0300-\u036f]/g,""):n},w=function(e){if(Array.from&&Set)return Array.from(new Set(e));if(d(e))return e.slice();var t,n,r,a=[],o=e.length,i=0;e:for(n=0;n<o;n++){for(t=e[n],r=0;r<i;r++)if(a[r]===t)continue e;a.push(t),i++}return a},Z=function(e,t){if(Array.isArray(t))for(var n=0;n<t.length;n++)Z(e,t[n]);else e.push(t);return e};function y(t,e){e&&e.split(" ").forEach(function(e){e&&t.classList.add(e)})}function Q(t){var n,r,a={};H.each(t,function(e){(n=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(n[1]+" ")&&(r=e.replace(n[0],n[2].toLowerCase()),a[r]=e,"o"===n[1])&&Q(t[e])}),t._hungarianMap=a}function B(t,n,r){var a;t._hungarianMap||Q(t),H.each(n,function(e){void 0===(a=t._hungarianMap[e])||!r&&void 0!==n[a]||("o"===a.charAt(0)?(n[a]||(n[a]={}),H.extend(!0,n[a],n[e]),B(t[a],n[a],r)):n[a]=n[e])})}V.util={diacritics:function(e,t){if("function"!=typeof e)return M(e,t);M=e},debounce:function(n,r){var a;return function(){var e=this,t=arguments;clearTimeout(a),a=setTimeout(function(){n.apply(e,t)},r||250)}},throttle:function(r,e){var a,o,i=void 0!==e?e:200;return function(){var e=this,t=+new Date,n=arguments;a&&t<a+i?(clearTimeout(o),o=setTimeout(function(){a=void 0,r.apply(e,n)},i)):(a=t,r.apply(e,n))}},escapeRegex:function(e){return e.replace(P,"\\$1")},set:function(r){var f;return H.isPlainObject(r)?V.util.set(r._):null===r?function(){}:"function"==typeof r?function(e,t,n){r(e,"set",t,n)}:"string"!=typeof r||-1===r.indexOf(".")&&-1===r.indexOf("[")&&-1===r.indexOf("(")?function(e,t){e[r]=t}:(f=function(e,t,n){for(var r,a,o,i,l=me(n),n=l[l.length-1],s=0,u=l.length-1;s<u;s++){if("__proto__"===l[s]||"constructor"===l[s])throw new Error("Cannot set prototype values");if(r=l[s].match(ge),a=l[s].match(p),r){if(l[s]=l[s].replace(ge,""),e[l[s]]=[],(r=l.slice()).splice(0,s+1),i=r.join("."),Array.isArray(t))for(var c=0,d=t.length;c<d;c++)f(o={},t[c],i),e[l[s]].push(o);else e[l[s]]=t;return}a&&(l[s]=l[s].replace(p,""),e=e[l[s]](t)),null==e[l[s]]&&(e[l[s]]={}),e=e[l[s]]}n.match(p)?e[n.replace(p,"")](t):e[n.replace(ge,"")]=t},function(e,t){return f(e,t,r)})},get:function(a){var o,f;return H.isPlainObject(a)?(o={},H.each(a,function(e,t){t&&(o[e]=V.util.get(t))}),function(e,t,n,r){var a=o[t]||o._;return void 0!==a?a(e,t,n,r):e}):null===a?function(e){return e}:"function"==typeof a?function(e,t,n,r){return a(e,t,n,r)}:"string"!=typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("(")?function(e){return e[a]}:(f=function(e,t,n){var r,a,o;if(""!==n)for(var i=me(n),l=0,s=i.length;l<s;l++){if(d=i[l].match(ge),r=i[l].match(p),d){if(i[l]=i[l].replace(ge,""),""!==i[l]&&(e=e[i[l]]),a=[],i.splice(0,l+1),o=i.join("."),Array.isArray(e))for(var u=0,c=e.length;u<c;u++)a.push(f(e[u],t,o));var d=d[0].substring(1,d[0].length-1);e=""===d?a:a.join(d);break}if(r)i[l]=i[l].replace(p,""),e=e[i[l]]();else{if(null===e||null===e[i[l]])return null;if(void 0===e||void 0===e[i[l]])return;e=e[i[l]]}}return e},function(e,t){return f(e,t,a)})},stripHtml:function(e,t){var n=typeof e;if("function"!=n)return"string"==n?I(e,t):e;I=e},escapeHtml:function(e){var t=typeof e;if("function"!=t)return"string"==t||Array.isArray(e)?u(e):e;u=e},unique:w};var a=function(e,t,n){void 0!==e[t]&&(e[n]=e[t])};function K(e){a(e,"ordering","bSort"),a(e,"orderMulti","bSortMulti"),a(e,"orderClasses","bSortClasses"),a(e,"orderCellsTop","bSortCellsTop"),a(e,"order","aaSorting"),a(e,"orderFixed","aaSortingFixed"),a(e,"paging","bPaginate"),a(e,"pagingType","sPaginationType"),a(e,"pageLength","iDisplayLength"),a(e,"searching","bFilter"),"boolean"==typeof e.sScrollX&&(e.sScrollX=e.sScrollX?"100%":""),"boolean"==typeof e.scrollX&&(e.scrollX=e.scrollX?"100%":""),"object"==typeof e.bSort?(e.orderIndicators=void 0===e.bSort.indicators||e.bSort.indicators,e.orderHandler=void 0===e.bSort.handler||e.bSort.handler,e.bSort=!0):!1===e.bSort?(e.orderIndicators=!1,e.orderHandler=!1):!0===e.bSort&&(e.orderIndicators=!0,e.orderHandler=!0),"boolean"==typeof e.bSortCellsTop&&(e.titleRow=e.bSortCellsTop);var t=e.aoSearchCols;if(t)for(var n=0,r=t.length;n<r;n++)t[n]&&B(V.models.oSearch,t[n]);e.serverSide&&!e.searchDelay&&(e.searchDelay=400)}function ee(e){a(e,"orderable","bSortable"),a(e,"orderData","aDataSort"),a(e,"orderSequence","asSorting"),a(e,"orderDataType","sortDataType");var t=e.aDataSort;"number"!=typeof t||Array.isArray(t)||(e.aDataSort=[t])}function te(e){var t=V.defaults.column,n=e.aoColumns.length,t=H.extend({},V.models.oColumn,t,{aDataSort:t.aDataSort||[n],mData:t.mData||n,idx:n,searchFixed:{},colEl:H("<col>").attr("data-dt-column",n)}),t=(e.aoColumns.push(t),e.aoPreSearchCols);t[n]=H.extend({},V.models.oSearch,t[n])}function ne(e,t,n){function r(e){return"string"==typeof e&&-1!==e.indexOf("@")}var a=e.aoColumns[t],o=(null!=n&&(ee(n),B(V.defaults.column,n,!0),void 0===n.mDataProp||n.mData||(n.mData=n.mDataProp),n.sType&&(a._sManualType=n.sType),n.className&&!n.sClass&&(n.sClass=n.className),t=a.sClass,H.extend(a,n),$(a,n,"sWidth","sWidthOrig"),t!==a.sClass&&(a.sClass=t+" "+a.sClass),void 0!==n.iDataSort&&(a.aDataSort=[n.iDataSort]),$(a,n,"aDataSort")),a.mData),i=U(o);a.mRender&&Array.isArray(a.mRender)&&(n=(t=a.mRender.slice()).shift(),a.mRender=V.render[n].apply(W,t)),a._render=a.mRender?U(a.mRender):null;a._bAttrSrc=H.isPlainObject(o)&&(r(o.sort)||r(o.type)||r(o.filter)),a._setter=null,a.fnGetData=function(e,t,n){var r=i(e,t,void 0,n);return a._render&&t?a._render(r,t,e,n):r},a.fnSetData=function(e,t,n){return m(o)(e,t,n)},"number"==typeof o||a._isArrayHost||(e._rowReadObject=!0),e.oFeatures.bSort||(a.bSortable=!1)}function re(e){(t=>{if(t.oFeatures.bAutoWidth){var e,n,r,a=t.nTable,o=t.aoColumns,i=t.oScroll,l=i.sY,s=i.sX,i=i.sXInner,u=le(t,"bVisible"),c=a.getAttribute("width"),d=a.parentNode,f=a.style.width,h=$e(t);if(h===t.containerWidth)return;t.containerWidth=h,f||c||(a.style.width="100%",f="100%"),f&&-1!==f.indexOf("%")&&(c=f),G(t,null,"column-calc",{visible:u},!1);var p=H(a.cloneNode()).css("visibility","hidden").css("margin",0).removeAttr("id"),g=(p.append("<tbody/>"),p.append(H(t.nTHead).clone()).append(H(t.nTFoot).clone()),p.find("tfoot th, tfoot td").css("width",""),p.find("thead th, thead td").each(function(){var e=de(t,this,!0,!1);e?(this.style.width=e,s&&(this.style.minWidth=e,H(this).append(H("<div/>").css({width:e,margin:0,padding:0,border:0,height:1})))):this.style.width=""}),[]);for(e=0;e<u.length;e++)g.push(((e,t)=>{var n=e.aoColumns[t];if(!n.wideStrings){for(var r=[],a=[],o=0,i=e.aiDisplayMaster.length;o<i;o++){var l=e.aiDisplayMaster[o],l=xe(e,l)[t],l=l&&"object"==typeof l&&l.nodeType?l.innerHTML:l+"",s=(l=(l=l.replace(/id=".*?"/g,"").replace(/name=".*?"/g,"")).replace(/<script.*?<\/script>/gi," "),I(l," ").replace(/&nbsp;/g," "));a.push({str:l,len:s.length}),r.push(s)}a.sort(function(e,t){return t.len-e.len}).splice(3),n.wideStrings=a.map(function(e){return e.str});var u=r.join(" ").split(" ");u.sort(function(e,t){return t.length-e.length}),u.length&&n.wideStrings.push(u[0]),1<u.length&&n.wideStrings.push(u[1]),2<u.length&&n.wideStrings.push(u[3])}return n.wideStrings})(t,u[e]));if(g.length)for(e=0;e<g[0].length;e++){var m=H("<tr/>").appendTo(p.find("tbody"));for(n=0;n<u.length;n++){r=u[n],r=o[r];var v=g[n][e]||"",b=C.type.className[r.sType],y=v+(r.sContentPadding||(s?"-":"")),v=-1===v.indexOf("<")&&-1===v.indexOf("&")?_.createTextNode(y):y;H("<td/>").addClass(b).addClass(r.sClass).append(v).appendTo(m)}}H("[name]",p).removeAttr("name");var D,x,h=H("<div/>").css(s||l?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(p).appendTo(d),S=(s&&i?p.width(i):s?(p.css("width","auto"),p.removeAttr("width"),p.outerWidth()<d.clientWidth&&c&&p.outerWidth(d.clientWidth)):l?p.outerWidth(d.clientWidth):c&&p.outerWidth(c),0),w=p.find("tbody tr").eq(0).children();for(e=0;e<u.length;e++){var T=w[e].getBoundingClientRect().width;S+=T,o[u[e]].sWidth=A(T)}a.style.width=A(S),h.remove(),c&&(a.style.width=A(c)),!c&&!s||t._reszEvt||(D=V.util.throttle(function(){var e=$e(t);t.bDestroying||0===e||re(t)}),W.ResizeObserver?(x=H(t.nTableWrapper).is(":visible"),f=H("<div>").css({width:"100%",height:0}).addClass("dt-autosize").appendTo(t.nTableWrapper),t.resizeObserver=new ResizeObserver(function(e){x?x=!1:D()}),t.resizeObserver.observe(f[0])):H(W).on("resize.DT-"+t.sInstance,D),t._reszEvt=!0)}})(e);for(var t=e,n=t.aoColumns,r=0;r<n.length;r++){var a=de(t,[r],!1,!1);n[r].colEl.css("width",a),t.oScroll.sX&&n[r].colEl.css("min-width",a)}var o=e.oScroll;""===o.sY&&""===o.sX||ze(e),G(e,null,"column-sizing",[e])}function ae(e,t){e=le(e,"bVisible");return"number"==typeof e[t]?e[t]:null}function oe(e,t){e=le(e,"bVisible").indexOf(t);return-1!==e?e:null}function ie(e){var t=e.aoHeader,n=e.aoColumns,r=0;if(t.length)for(var a=0,o=t[0].length;a<o;a++)n[a].bVisible&&"none"!==H(t[0][a].cell).css("display")&&r++;return r}function le(e,n){var r=[];return e.aoColumns.map(function(e,t){e[n]&&r.push(t)}),r}function se(e,t){return!0===t?e._name:t}function ue(e){for(var t,n,r,a,o,i,l=e.aoColumns,s=e.aoData,u=V.ext.type.detect,c=0,d=l.length;c<d;c++){if(i=[],!(o=l[c]).sType&&o._sManualType)o.sType=o._sManualType;else if(!o.sType){if(!e.typeDetect)return;for(t=0,n=u.length;t<n;t++){var f=u[t],h=f.oneOf,p=f.allOf||f,g=f.init,m=!1,v=null;if(g&&(v=se(f,g(e,o,c)))){o.sType=v;break}for(r=0,a=s.length;r<a;r++)if(s[r]){if(void 0===i[r]&&(i[r]=q(e,r,c,"type")),h&&!m&&(m=se(f,h(i[r],e))),!(v=se(f,p(i[r],e)))&&t!==u.length-3)break;if("html"===v&&!T(i[r]))break}if(h&&m&&v||!h&&v){o.sType=v;break}}o.sType||(o.sType="string")}var b=C.type.className[o.sType],b=(b&&(ce(e.aoHeader,c,b),ce(e.aoFooter,c,b)),C.type.render[o.sType]);if(b&&!o._render){o._render=V.util.get(b),y=w=S=x=D=void 0;for(var y,D=e,x=c,S=D.aoData,w=0;w<S.length;w++)S[w].nTr&&(y=q(D,w,x,"display"),S[w].displayData[x]=y,pe(S[w].anCells[x],y))}}}function ce(e,t,n){e.forEach(function(e){e[t]&&e[t].unique&&y(e[t].cell,n)})}function de(e,t,n,r){Array.isArray(t)||(t=fe(t));for(var a,o=0,i=e.aoColumns,l=0,s=t.length;l<s;l++){var u=i[t[l]],c=n?u.sWidthOrig:u.sWidth;if(r||!1!==u.bVisible){if(null==c)return null;"number"==typeof c?(a="px",o+=c):(u=c.match(/([\d\.]+)([^\d]*)/))&&(o+=+u[1],a=3===u.length?u[2]:"px")}}return o+a}function fe(e){e=H(e).closest("[data-dt-column]").attr("data-dt-column");return e?e.split(",").map(function(e){return+e}):[]}function D(e,t,n,r){for(var a=e.aoData.length,o=H.extend(!0,{},V.models.oRow,{src:n?"dom":"data",idx:a}),i=(o._aData=t,e.aoData.push(o),e.aoColumns),l=0,s=i.length;l<s;l++)i[l].sType=null;e.aiDisplayMaster.push(a);t=e.rowIdFn(t);return void 0!==t&&(e.aIds[t]=o),!n&&e.oFeatures.bDeferRender||Se(e,a,n,r),a}function he(n,e){var r;return(e=e instanceof H?e:H(e)).map(function(e,t){return r=De(n,t),D(n,r.data,t,r.cells)})}function q(e,t,n,r){"search"===r?r="filter":"order"===r&&(r="sort");var a=e.aoData[t];if(a){var o=e.iDraw,i=e.aoColumns[n],a=a._aData,l=i.sDefaultContent,s=i.fnGetData(a,r,{settings:e,row:t,col:n});if(void 0===(s="display"!==r&&s&&"object"==typeof s&&s.nodeName?s.innerHTML:s))return e.iDrawError!=o&&null===l&&(z(e,0,"Requested unknown parameter "+("function"==typeof i.mData?"{function}":"'"+i.mData+"'")+" for row "+t+", column "+n,4),e.iDrawError=o),l;if(s!==a&&null!==s||null===l||void 0===r){if("function"==typeof s)return s.call(a)}else s=l;return null===s&&"display"===r?"":s="filter"===r&&(t=V.ext.type.search)[i.sType]?t[i.sType](s):s}}function pe(e,t){t&&"object"==typeof t&&t.nodeName?H(e).empty().append(t):e.innerHTML=t}var ge=/\[.*?\]$/,p=/\(\)$/;function me(e){return(e.match(/(\\.|[^.])+/g)||[""]).map(function(e){return e.replace(/\\\./g,".")})}var U=V.util.get,m=V.util.set;function ve(e){return b(e.aoData,"_aData")}function be(e){e.aoData.length=0,e.aiDisplayMaster.length=0,e.aiDisplay.length=0,e.aIds={}}function ye(e,t,n,r){var a,o,i=e.aoData[t];if(i._aSortData=null,i._aFilterData=null,i.displayData=null,"dom"!==n&&(n&&"auto"!==n||"dom"!==i.src)){var l=i.anCells,s=xe(e,t);if(l)if(void 0!==r)pe(l[r],s[r]);else for(a=0,o=l.length;a<o;a++)pe(l[a],s[a])}else i._aData=De(e,i,r,void 0===r?void 0:i._aData).data;var u=e.aoColumns;if(void 0!==r)u[r].sType=null,u[r].wideStrings=null;else{for(a=0,o=u.length;a<o;a++)u[a].sType=null,u[a].wideStrings=null;we(e,i)}}function De(e,t,n,r){function a(e,t){var n;"string"==typeof e&&-1!==(n=e.indexOf("@"))&&(n=e.substring(n+1),m(e)(r,t.getAttribute(n)))}function o(e){void 0!==n&&n!==d||(l=f[d],s=e.innerHTML.trim(),l&&l._bAttrSrc?(m(l.mData._)(r,s),a(l.mData.sort,e),a(l.mData.type,e),a(l.mData.filter,e)):h?(l._setter||(l._setter=m(l.mData)),l._setter(r,s)):r[d]=s),d++}var i,l,s,u=[],c=t.firstChild,d=0,f=e.aoColumns,h=e._rowReadObject;r=void 0!==r?r:h?{}:[];if(c)for(;c;)"TD"!=(i=c.nodeName.toUpperCase())&&"TH"!=i||(o(c),u.push(c)),c=c.nextSibling;else for(var p=0,g=(u=t.anCells).length;p<g;p++)o(u[p]);var t=t.firstChild?t:t.nTr;return t&&(t=t.getAttribute("id"))&&m(e.rowId)(r,t),{data:r,cells:u}}function xe(e,t){var n=e.aoData[t],r=e.aoColumns;if(!n.displayData){n.displayData=[];for(var a=0,o=r.length;a<o;a++)n.displayData.push(q(e,t,a,"display"))}return n.displayData}function Se(e,t,n,r){var a,o,i,l,s,u,c=e.aoData[t],d=c._aData,f=[],h=e.oClasses.tbody.row;if(null===c.nTr){for(a=n||_.createElement("tr"),c.nTr=a,c.anCells=f,y(a,h),a._DT_RowIndex=t,we(e,c),l=0,s=e.aoColumns.length;l<s;l++){i=e.aoColumns[l],(o=(u=!n||!r[l])?_.createElement(i.sCellType):r[l])||z(e,0,"Incorrect column count",18),o._DT_CellIndex={row:t,column:l},f.push(o);var p=xe(e,t);!u&&(!i.mRender&&i.mData===l||H.isPlainObject(i.mData)&&i.mData._===l+".display")||pe(o,p[l]),y(o,i.sClass),i.bVisible&&u?a.appendChild(o):i.bVisible||u||o.parentNode.removeChild(o),i.fnCreatedCell&&i.fnCreatedCell.call(e.oInstance,o,q(e,t,l),d,t,l)}G(e,"aoRowCreatedCallback","row-created",[a,d,t,f])}else y(c.nTr,h)}function we(e,t){var n=t.nTr,r=t._aData;n&&((e=e.rowIdFn(r))&&(n.id=e),r.DT_RowClass&&(e=r.DT_RowClass.split(" "),t.__rowc=t.__rowc?w(t.__rowc.concat(e)):e,H(n).removeClass(t.__rowc.join(" ")).addClass(r.DT_RowClass)),r.DT_RowAttr&&H(n).attr(r.DT_RowAttr),r.DT_RowData)&&H(n).data(r.DT_RowData)}function Te(e,t){var n,r,a,o=e.oClasses,i=e.aoColumns,l="header"===t?e.nTHead:e.nTFoot,s="header"===t?"sTitle":t;if(l){if(("header"===t||b(e.aoColumns,s).join(""))&&1===(a=(a=H("tr",l)).length?a:H("<tr/>").appendTo(l)).length){var u=0;for(H("td, th",a).each(function(){u+=this.colSpan}),n=u,r=i.length;n<r;n++)H("<th/>").html(i[n][s]||"").appendTo(a)}var c=Fe(e,l,!0);"header"===t?(e.aoHeader=c,H("tr",l).addClass(o.thead.row)):(e.aoFooter=c,H("tr",l).addClass(o.tfoot.row)),H(l).children("tr").children("th, td").each(function(){ot(e,t)(e,H(this),o)})}}function _e(e,t,n){var r,a,o,i,l,s=[],u=[],c=e.aoColumns,e=c.length;if(t){for(n=n||h(e).filter(function(e){return c[e].bVisible}),r=0;r<t.length;r++)s[r]=t[r].slice().filter(function(e,t){return n.includes(t)}),u.push([]);for(r=0;r<s.length;r++)for(a=0;a<s[r].length;a++)if(l=i=1,void 0===u[r][a]){for(o=s[r][a].cell;void 0!==s[r+i]&&s[r][a].cell==s[r+i][a].cell;)u[r+i][a]=null,i++;for(;void 0!==s[r][a+l]&&s[r][a].cell==s[r][a+l].cell;){for(var d=0;d<i;d++)u[r+d][a+l]=null;l++}var f=H(".dt-column-title",o);u[r][a]={cell:o,colspan:l,rowspan:i,title:(f.length?f:H(o)).html()}}return u}}function Ce(e,t){for(var n,r,a=_e(e,t),o=0;o<t.length;o++){if(n=t[o].row)for(;r=n.firstChild;)n.removeChild(r);for(var i=0;i<a[o].length;i++){var l=a[o][i];l&&H(l.cell).appendTo(n).attr("rowspan",l.rowspan).attr("colspan",l.colspan)}}}function x(e,t){if(a="ssp"==J(s=e),void 0!==(i=s.iInitDisplayStart)&&-1!==i&&(s._iDisplayStart=!a&&i>=s.fnRecordsDisplay()?0:i,s.iInitDisplayStart=-1),-1!==G(e,"aoPreDrawCallback","preDraw",[e]).indexOf(!1))S(e,!1);else{var l,n=[],r=0,a="ssp"==J(e),o=e.aiDisplay,i=e._iDisplayStart,s=e.fnDisplayEnd(),u=e.aoColumns,c=H(e.nTBody);if(e.bDrawing=!0,e.deferLoading)e.deferLoading=!1,e.iDraw++,S(e,!1);else if(a){if(!e.bDestroying&&!t)return 0===e.iDraw&&c.empty().append(Ae(e)),(l=e).iDraw++,S(l,!0),void Oe(l,(t=>{function n(e,t){return"function"==typeof r[e][t]?"function":r[e][t]}var r=t.aoColumns,e=t.oFeatures,a=t.oPreviousSearch,o=t.aoPreSearchCols;return{draw:t.iDraw,columns:r.map(function(t,e){return{data:n(e,"mData"),name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:o[e].search,regex:o[e].regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}}),order:Ze(t).map(function(e){return{column:e.col,dir:e.dir,name:n(e.col,"sName")}}),start:t._iDisplayStart,length:e.bPaginate?t._iDisplayLength:-1,search:{value:a.search,regex:a.regex,fixed:Object.keys(t.searchFixed).map(function(e){return{name:e,term:"function"!=typeof t.searchFixed[e]?t.searchFixed[e].toString():"function"}})}}})(l),function(e){var t=l,n=je(t,e=e),r=Re(t,"draw",e),a=Re(t,"recordsTotal",e),e=Re(t,"recordsFiltered",e);if(void 0!==r){if(+r<t.iDraw)return;t.iDraw=+r}n=n||[],be(t),t._iRecordsTotal=parseInt(a,10),t._iRecordsDisplay=parseInt(e,10);for(var o=0,i=n.length;o<i;o++)D(t,n[o]);t.aiDisplay=t.aiDisplayMaster.slice(),ue(t),x(t,!0),Xe(t),S(t,!1)})}else e.iDraw++;if(0!==o.length)for(var d=a?e.aoData.length:s,f=a?0:i;f<d;f++){var h=o[f],p=e.aoData[h];if(null!==p){null===p.nTr&&Se(e,h);for(var g=p.nTr,m=0;m<u.length;m++){var v=u[m],b=p.anCells[m];y(b,C.type.className[v.sType]),y(b,e.oClasses.tbody.cell)}G(e,"aoRowCallback",null,[g,p._aData,r,f,h]),n.push(g),r++}}else n[0]=Ae(e);G(e,"aoHeaderCallback","header",[H(e.nTHead).children("tr")[0],ve(e),i,s,o]),G(e,"aoFooterCallback","footer",[H(e.nTFoot).children("tr")[0],ve(e),i,s,o]),c[0].replaceChildren?c[0].replaceChildren.apply(c[0],n):(c.children().detach(),c.append(H(n))),H(e.nTableWrapper).toggleClass("dt-empty-footer",0===H("tr",e.nTFoot).length),G(e,"aoDrawCallback","draw",[e],!0),e.bSorted=!1,e.bFiltered=!1,e.bDrawing=!1}}function Ie(e,t,n){var r=e.oFeatures,a=r.bSort,r=r.bFilter;void 0!==n&&!0!==n||(ue(e),a&&Qe(e),r?Pe(e,e.oPreviousSearch):e.aiDisplay=e.aiDisplayMaster.slice()),!0!==t&&(e._iDisplayStart=0),e._drawHold=t,x(e),e.api.one("draw",function(){e._drawHold=!1})}function Ae(e){var t=e.oLanguage,n=t.sZeroRecords,r=J(e);return"ssp"!==r&&"ajax"!==r||e.json?t.sEmptyTable&&0===e.fnRecordsTotal()&&(n=t.sEmptyTable):n=t.sLoadingRecords,H("<tr/>").append(H("<td />",{colSpan:ie(e),class:e.oClasses.empty.row}).html(n))[0]}function Le(e,t,a){var o=[];H.each(t,function(e,t){var n,r;null!==t&&(n=(e=e.match(/^([a-z]+)([0-9]*)([A-Za-z]*)$/))[2]?+e[2]:0,r=e[3]?e[3].toLowerCase():"full",e[1]===a)&&function e(t,n,r){if(Array.isArray(r))for(var a=0;a<r.length;a++)e(t,n,r[a]);else{var o=t[n];H.isPlainObject(r)?r.features?(r.rowId&&(t.id=r.rowId),r.rowClass&&(t.className=r.rowClass),o.id=r.id,o.className=r.className,e(t,n,r.features)):Object.keys(r).map(function(e){o.contents.push({feature:e,opts:r[e]})}):o.contents.push(r)}}(((e,t,n)=>{for(var r,a=0;a<e.length;a++)if((r=e[a]).rowNum===t&&("full"===n&&r.full||("start"===n||"end"===n)&&(r.start||r.end)))return r[n]||(r[n]={contents:[]}),r;return(r={rowNum:t})[n]={contents:[]},e.push(r),r})(o,n,r),r,t)}),o.sort(function(e,t){var n=e.rowNum,r=t.rowNum;return n===r?(e=e.full&&!t.full?-1:1,"bottom"===a?-1*e:e):r-n}),"bottom"===a&&o.reverse();for(var n=0;n<o.length;n++)delete o[n].rowNum,((o,i)=>{function l(e,t){return C.features[e]||z(o,0,"Unknown feature: "+e),C.features[e].apply(this,[o,t])}function e(e){if(i[e])for(var t,n=i[e].contents,r=0,a=n.length;r<a;r++)n[r]&&("string"==typeof n[r]?n[r]=l(n[r],null):H.isPlainObject(n[r])?n[r]=l(n[r].feature,n[r].opts):"function"==typeof n[r].node?n[r]=n[r].node(o):"function"==typeof n[r]&&(t=n[r](o),n[r]="function"==typeof t.node?t.node():t))}e("start"),e("end"),e("full")})(e,o[n]);return o}function Ne(t){var e=t.oClasses,n=H(t.nTable),r=H("<div/>").attr({id:t.sTableId+"_wrapper",class:e.container}).insertBefore(n);if(t.nTableWrapper=r[0],t.sDom)for(var a,o,i,l,s,u,c=t,e=t.sDom,d=r,f=e.match(/(".*?")|('.*?')|./g),h=0;h<f.length;h++)a=null,"<"==(o=f[h])?(i=H("<div/>"),"'"!=(l=f[h+1])[0]&&'"'!=l[0]||(l=l.replace(/['"]/g,""),s="",-1!=l.indexOf(".")?(u=l.split("."),s=u[0],u=u[1]):"#"==l[0]?s=l:u=l,i.attr("id",s.substring(1)).addClass(u),h++),d.append(i),d=i):">"==o?d=d.parent():"t"==o?a=Ue(c):V.ext.feature.forEach(function(e){o==e.cFeature&&(a=e.fnInit(c))}),a&&d.append(a);else{var n=Le(t,t.layout,"top"),e=Le(t,t.layout,"bottom"),p=ot(t,"layout");n.forEach(function(e){p(t,r,e)}),p(t,r,{full:{table:!0,contents:[Ue(t)]}}),e.forEach(function(e){p(t,r,e)})}var g,n=t,e=n.nTable,m=""!==n.oScroll.sX||""!==n.oScroll.sY;n.oFeatures.bProcessing&&(g=H("<div/>",{id:n.sTableId+"_processing",class:n.oClasses.processing.container,role:"status"}).html(n.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>"),m?g.prependTo(H("div.dt-scroll",n.nTableWrapper)):g.insertBefore(e),H(e).on("processing.dt.DT",function(e,t,n){g.css("display",n?"block":"none")}))}function Fe(e,t,n){for(var r,a,o,i,l,s,u=e.aoColumns,c=H(t).children("tr"),d=e.titleRow,f=t&&"thead"===t.nodeName.toLowerCase(),h=[],p=0,g=c.length;p<g;p++)h.push([]);for(p=0,g=c.length;p<g;p++)for(a=(r=c[p]).firstChild;a;){if("TD"==a.nodeName.toUpperCase()||"TH"==a.nodeName.toUpperCase()){var m,v,b,y,D,x=[],S=H(a);for(y=(y=+a.getAttribute("colspan"))&&0!=y&&1!=y?y:1,D=(D=+a.getAttribute("rowspan"))&&0!=D&&1!=D?D:1,l=((e,t,n)=>{for(var r=e[t];r[n];)n++;return n})(h,p,0),s=1==y,n&&(s&&(ne(e,l,ut(S.data())),m=u[l],v=a.getAttribute("width")||null,(b=a.style.width.match(/width:\s*(\d+[pxem%]+)/))&&(v=b[1]),m.sWidthOrig=m.sWidth||v,f?(null===m.sTitle||m.autoTitle||(!0===d&&0===p||!1===d&&p===c.length-1||d===p||null===d)&&(a.innerHTML=m.sTitle),!m.sTitle&&s&&(m.sTitle=I(a.innerHTML),m.autoTitle=!0)):m.footer&&(a.innerHTML=m.footer),m.ariaTitle||(m.ariaTitle=S.attr("aria-label")||m.sTitle),m.className)&&S.addClass(m.className),0===H(".dt-column-title",a).length&&H(_.createElement(e.columnTitleTag)).addClass("dt-column-title").append(a.childNodes).appendTo(a),e.orderIndicators&&f&&0!==S.filter(":not([data-dt-order=disable])").length&&0!==S.parent(":not([data-dt-order=disable])").length&&0===H(".dt-column-order",a).length&&H(_.createElement(e.columnTitleTag)).addClass("dt-column-order").appendTo(a),0===H("div.dt-column-"+(b=f?"header":"footer"),a).length)&&H("<div>").addClass("dt-column-"+b).append(a.childNodes).appendTo(a),i=0;i<y;i++){for(o=0;o<D;o++)h[p+o][l+i]={cell:a,unique:s},h[p+o].row=r;x.push(l+i)}a.setAttribute("data-dt-column",w(x).join(","))}a=a.nextSibling}return h}function Oe(n,e,r){function t(e){var t=n.jqXHR?n.jqXHR.status:null;if((null===e||"number"==typeof t&&204==t)&&je(n,e={},[]),(t=e.error||e.sError)&&z(n,0,t),e.d&&"string"==typeof e.d)try{e=JSON.parse(e.d)}catch(e){}n.json=e,G(n,null,"xhr",[n,e,n.jqXHR],!0),r(e)}var a,o=n.ajax,i=n.oInstance,l=(H.isPlainObject(o)&&o.data&&(l="function"==typeof(a=o.data)?a(e,n):a,e="function"==typeof a&&l?l:H.extend(!0,e,l),delete o.data),{url:"string"==typeof o?o:"",data:e,success:t,dataType:"json",cache:!1,type:n.sServerMethod,error:function(e,t){-1===G(n,null,"xhr",[n,null,n.jqXHR],!0).indexOf(!0)&&("parsererror"==t?z(n,0,"Invalid JSON response",1):4===e.readyState&&z(n,0,"Ajax error",7)),S(n,!1)}});H.isPlainObject(o)&&H.extend(l,o),n.oAjaxData=e,G(n,null,"preXhr",[n,e,l],!0),"json"===l.submitAs&&"object"==typeof e&&(l.data=JSON.stringify(e),l.contentType||(l.contentType="application/json; charset=utf-8")),"function"==typeof o?n.jqXHR=o.call(i,e,t,n):""===o.url?(je(n,i={},[]),t(i)):n.jqXHR=H.ajax(l),a&&(o.data=a)}function je(e,t,n){var r="data";if(H.isPlainObject(e.ajax)&&void 0!==e.ajax.dataSrc&&("string"==typeof(e=e.ajax.dataSrc)||"function"==typeof e?r=e:void 0!==e.data&&(r=e.data)),!n)return"data"===r?t.aaData||t[r]:""!==r?U(r)(t):t;m(r)(t,n)}function Re(e,t,n){var e=H.isPlainObject(e.ajax)?e.ajax.dataSrc:null;return e&&e[t]?U(e[t])(n):(e="","draw"===t?e="sEcho":"recordsTotal"===t?e="iTotalRecords":"recordsFiltered"===t&&(e="iTotalDisplayRecords"),void 0!==n[e]?n[e]:n[t])}function Pe(n,e){var t=n.aoPreSearchCols;if("ssp"!=J(n)){for(var r,a,o,i,l,s=n,u=s.aoColumns,c=s.aoData,d=0;d<c.length;d++)if(c[d]&&!(l=c[d])._aFilterData){for(o=[],r=0,a=u.length;r<a;r++)u[r].bSearchable?"string"!=typeof(i=null===(i=q(s,d,r,"filter"))?"":i)&&i.toString&&(i=i.toString()):i="",i.indexOf&&-1!==i.indexOf("&")&&(Me.innerHTML=i,i=He?Me.textContent:Me.innerText),i.replace&&(i=i.replace(/[\r\n\u2028]/g,"")),o.push(i);l._aFilterData=o,l._sFilterRow=o.join("  "),0}n.aiDisplay=n.aiDisplayMaster.slice(),Ee(n.aiDisplay,n,e.search,e),H.each(n.searchFixed,function(e,t){Ee(n.aiDisplay,n,t,{})});for(var f=0;f<t.length;f++){var h=t[f];Ee(n.aiDisplay,n,h.search,h,f),H.each(n.aoColumns[f].searchFixed,function(e,t){Ee(n.aiDisplay,n,t,{},f)})}for(var p,g,m=n,v=V.ext.search,b=m.aiDisplay,y=0,D=v.length;y<D;y++){for(var x=[],S=0,w=b.length;S<w;S++)g=b[S],p=m.aoData[g],v[y](m,p._aFilterData,g,p._aData,S)&&x.push(g);b.length=0,lt(b,x)}}n.bFiltered=!0,G(n,null,"search",[n])}function Ee(e,t,n,r,a){if(""!==n){for(var o=0,i=[],l="function"==typeof n?n:null,s=n instanceof RegExp?n:l?null:((e,t)=>{var n,r,a,o=[],t=H.extend({},{boundary:!1,caseInsensitive:!0,exact:!1,regex:!1,smart:!0},t);return"string"!=typeof e&&(e=e.toString()),e=M(e),t.exact?new RegExp("^"+ke(e)+"$",t.caseInsensitive?"i":""):(e=t.regex?e:ke(e),t.smart&&(n=(e.match(/!?["\u201C][^"\u201D]+["\u201D]|[^ ]+/g)||[""]).map(function(e){var t,n=!1;return"!"===e.charAt(0)&&(n=!0,e=e.substring(1)),'"'===e.charAt(0)?e=(t=e.match(/^"(.*)"$/))?t[1]:e:"“"===e.charAt(0)&&(e=(t=e.match(/^\u201C(.*)\u201D$/))?t[1]:e),n&&(1<e.length&&o.push("(?!"+e+")"),e=""),e.replace(/"/g,"")}),r=o.length?o.join(""):"",a=t.boundary?"\\b":"",e="^(?=.*?"+a+n.join(")(?=.*?"+a)+")("+r+".)*$"),new RegExp(e,t.caseInsensitive?"i":""))})(n,r),o=0;o<e.length;o++){var u=t.aoData[e[o]],c=void 0===a?u._sFilterRow:u._aFilterData[a];(l&&l(c,u._aData,e[o],a)||s&&s.test(c))&&i.push(e[o])}for(e.length=i.length,o=0;o<i.length;o++)e[o]=i[o]}}var ke=V.util.escapeRegex,Me=H("<div>")[0],He=void 0!==Me.textContent;function We(i){var l,t,n,e,s=i.oInit,u=i.deferLoading,c=J(i);i.bInitialised?(Te(i,"header"),Te(i,"footer"),n=function(){Ce(i,i.aoHeader),Ce(i,i.aoFooter);var n=i.iInitDisplayStart;if(s.aaData)for(l=0;l<s.aaData.length;l++)D(i,s.aaData[l]);else!u&&"dom"!=c||he(i,H(i.nTBody).children("tr"));i.aiDisplay=i.aiDisplayMaster.slice(),Ne(i);var e=i,t=e.nTHead,r=t.querySelectorAll("tr"),a=e.titleRow,o=':not([data-dt-order="disable"]):not([data-dt-order="icon-only"])';!0===a?t=r[0]:!1===a?t=r[r.length-1]:null!==a&&(t=r[a]),e.orderHandler&&Ge(e,t,t===e.nTHead?"tr"+o+" th"+o+", tr"+o+" td"+o:"th"+o+", td"+o),g(e,r=[],e.aaSorting),e.aaSorting=r,Ye(i),S(i,!0),G(i,null,"preInit",[i],!0),Ie(i),"ssp"==c&&!u||("ajax"==c?Oe(i,{},function(e){var t=je(i,e);for(l=0;l<t.length;l++)D(i,t[l]);i.iInitDisplayStart=n,Ie(i),S(i,!1),Xe(i)}):(Xe(i),S(i,!1)))},(t=i).oFeatures.bStateSave?void 0!==(e=t.fnStateLoadCallback.call(t.oInstance,t,function(e){tt(t,e,n)}))&&tt(t,e,n):n()):setTimeout(function(){We(i)},200)}function Xe(e){var t;e._bInitComplete||(t=[e,e.json],e._bInitComplete=!0,re(e),G(e,null,"plugin-init",t,!0),G(e,"aoInitComplete","init",t,!0))}function Ve(e,t){t=parseInt(t,10);e._iDisplayLength=t,at(e),G(e,null,"length",[e,t])}function Be(e,t,n){var r=e._iDisplayStart,a=e._iDisplayLength,o=e.fnRecordsDisplay();if(0===o||-1===a)r=0;else if("number"==typeof t)o<(r=t*a)&&(r=0);else if("first"==t)r=0;else if("previous"==t)(r=0<=a?r-a:0)<0&&(r=0);else if("next"==t)r+a<o&&(r+=a);else if("last"==t)r=Math.floor((o-1)/a)*a;else{if("ellipsis"===t)return;z(e,0,"Unknown paging action: "+t,5)}o=e._iDisplayStart!==r;e._iDisplayStart=r,G(e,null,o?"page":"page-nc",[e]),o&&n&&x(e)}function S(e,t){e.bDrawing&&!1===t||G(e,null,"processing",[e,t])}function qe(e,t,n){t?(S(e,!0),setTimeout(function(){n(),S(e,!1)},0)):n()}function Ue(e){var t,n,r,a,o,i,l,s,u,c,d,f,h,p=H(e.nTable),g=e.oScroll;return""===g.sX&&""===g.sY?e.nTable:(t=g.sX,n=g.sY,r=e.oClasses.scrolling,o=(a=e.captionNode)?a._captionSide:null,u=H(p[0].cloneNode(!1)),i=H(p[0].cloneNode(!1)),c=function(e){return e?A(e):null},(l=p.children("tfoot")).length||(l=null),u=H(s="<div/>",{class:r.container}).append(H(s,{class:r.header.self}).css({overflow:"hidden",position:"relative",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.header.inner}).css({"box-sizing":"content-box",width:g.sXInner||"100%"}).append(u.removeAttr("id").css("margin-left",0).append("top"===o?a:null).append(p.children("thead"))))).append(H(s,{class:r.body}).css({position:"relative",overflow:"auto",width:c(t)}).append(p)),l&&u.append(H(s,{class:r.footer.self}).css({overflow:"hidden",border:0,width:t?c(t):"100%"}).append(H(s,{class:r.footer.inner}).append(i.removeAttr("id").css("margin-left",0).append("bottom"===o?a:null).append(p.children("tfoot"))))),c=u.children(),d=c[0],f=c[1],h=l?c[2]:null,H(f).on("scroll.DT",function(){var e=this.scrollLeft;d.scrollLeft=e,l&&(h.scrollLeft=e)}),H("th, td",d).on("focus",function(){var e=d.scrollLeft;f.scrollLeft=e,l&&(f.scrollLeft=e)}),H(f).css("max-height",n),g.bCollapse||H(f).css("height",n),e.nScrollHead=d,e.nScrollBody=f,e.nScrollFoot=h,e.aoDrawCallback.push(ze),u[0])}function ze(t){var e=t.oScroll,n=e.iBarWidth,r=H(t.nScrollHead).children("div"),a=r.children("table"),o=t.nScrollBody,i=H(o),l=H(t.nScrollFoot).children("div"),s=l.children("table"),u=H(t.nTHead),c=H(t.nTable),d=t.nTFoot&&H("th, td",t.nTFoot).length?H(t.nTFoot):null,f=t.oBrowser,h=o.scrollHeight>o.clientHeight;if(t.scrollBarVis!==h&&void 0!==t.scrollBarVis)t.scrollBarVis=h,re(t);else{if(t.scrollBarVis=h,c.children("thead, tfoot").remove(),(h=u.clone().prependTo(c)).find("th, td").removeAttr("tabindex"),h.find("[id]").removeAttr("id"),d&&(D=d.clone().prependTo(c)).find("[id]").removeAttr("id"),t.aiDisplay.length){for(var p=null,g="ssp"!==J(t)?t._iDisplayStart:0,m=g;m<g+t.aiDisplay.length;m++){var v=t.aiDisplay[m],v=t.aoData[v].nTr;if(v){p=v;break}}if(p)for(var b=H(p).children("th, td").map(function(e){return{idx:ae(t,e),width:H(this).outerWidth()}}),m=0;m<b.length;m++){var y=t.aoColumns[b[m].idx].colEl[0];y.style.width.replace("px","")!==b[m].width&&(y.style.width=b[m].width+"px",e.sX)&&(y.style.minWidth=b[m].width+"px")}}a.find("colgroup").remove(),a.append(t.colgroup.clone()),d&&(s.find("colgroup").remove(),s.append(t.colgroup.clone())),H("th, td",h).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')}),d&&H("th, td",D).each(function(){H(this.childNodes).wrapAll('<div class="dt-scroll-sizing">')});var u=Math.floor(c.height())>o.clientHeight||"scroll"==i.css("overflow-y"),h="padding"+(f.bScrollbarLeft?"Left":"Right"),D=c.outerWidth();a.css("width",A(D)),r.css("width",A(D)).css(h,u?n+"px":"0px"),d&&(s.css("width",A(D)),l.css("width",A(D)).css(h,u?n+"px":"0px")),c.children("colgroup").prependTo(c),i.trigger("scroll"),!t.bSorted&&!t.bFiltered||t._drawHold||(o.scrollTop=0)}}function $e(e){return H(e.nTableWrapper).is(":visible")?H(e.nTableWrapper).width():0}function A(e){return null===e?"0px":"number"==typeof e?e<0?"0px":e+"px":e.match(/\d$/)?e+"px":e}function Ye(e){var t=e.aoColumns;for(e.colgroup.empty(),l=0;l<t.length;l++)t[l].bVisible&&e.colgroup.append(t[l].colEl)}function Ge(o,e,t,i,l){rt(e,t,function(e){var t=!1,n=void 0===i?fe(e.target):"function"==typeof i?i():Array.isArray(i)?i:[i];if(n.length){for(var r=0,a=n.length;r<a;r++)if(!1!==((e,t,n,r)=>{function a(e,t){var n=e._idx;return(n=void 0===n?s.indexOf(e[1]):n)+1<s.length?n+1:t?null:0}var o,i=e.aoColumns[t],l=e.aaSorting,s=i.asSorting;if(!i.bSortable)return!1;"number"==typeof l[0]&&(l=e.aaSorting=[l]),(r||n)&&e.oFeatures.bSortMulti?-1!==(i=b(l,"0").indexOf(t))?null===(o=null===(o=a(l[i],!0))&&1===l.length?0:o)||""===s[o]?l.splice(i,1):(l[i][1]=s[o],l[i]._idx=o):(r?l.push([t,s[0],0]):l.push([t,l[0][1],0]),l[l.length-1]._idx=0):l.length&&l[0][0]==t?(o=a(l[0]),l.length=1,l[0][1]=s[o],l[0]._idx=o):(l.length=0,l.push([t,s[0]]),l[0]._idx=0)})(o,n[r],r,e.shiftKey)&&(t=!0),1===o.aaSorting.length&&""===o.aaSorting[0][1])break;t&&qe(o,!0,function(){Qe(o),Je(o,o.aiDisplay),Ie(o,!1,!1),l&&l()})}})}function Je(e,t){if(!(t.length<2)){for(var n=e.aiDisplayMaster,r={},a={},o=0;o<n.length;o++)r[n[o]]=o;for(o=0;o<t.length;o++)a[t[o]]=r[t[o]];t.sort(function(e,t){return a[e]-a[t]})}}function g(n,r,e){function t(e){var t;H.isPlainObject(e)?void 0!==e.idx?r.push([e.idx,e.dir]):e.name&&-1!==(t=b(n.aoColumns,"sName").indexOf(e.name))&&r.push([t,e.dir]):r.push(e)}if(H.isPlainObject(e))t(e);else if(e.length&&"number"==typeof e[0])t(e);else if(e.length)for(var a=0;a<e.length;a++)t(e[a])}function Ze(e){var t,n,r,a,o,i,l,s=[],u=V.ext.type.order,c=e.aoColumns,d=e.aaSortingFixed,f=H.isPlainObject(d),h=[];if(e.oFeatures.bSort)for(Array.isArray(d)&&g(e,h,d),f&&d.pre&&g(e,h,d.pre),g(e,h,e.aaSorting),f&&d.post&&g(e,h,d.post),t=0;t<h.length;t++)if(c[l=h[t][0]])for(n=0,r=(a=c[l].aDataSort).length;n<r;n++)i=c[o=a[n]].sType||"string",void 0===h[t]._idx&&(h[t]._idx=c[o].asSorting.indexOf(h[t][1])),h[t][1]&&s.push({src:l,col:o,dir:h[t][1],index:h[t]._idx,type:i,formatter:u[i+"-pre"],sorter:u[i+"-"+h[t][1]]});return s}function Qe(e,t,n){var r,a,o,i,c,d=[],l=V.ext.type.order,f=e.aoData,s=e.aiDisplayMaster;for(ue(e),void 0!==t?(i=e.aoColumns[t],c=[{src:t,col:t,dir:n,index:0,type:i.sType,formatter:l[i.sType+"-pre"],sorter:l[i.sType+"-"+n]}],s=s.slice()):c=Ze(e),r=0,a=c.length;r<a;r++){o=c[r],x=D=y=p=h=u=b=v=m=g=void 0;var u,h,p,g=e,m=o.col,v=g.aoColumns[m],b=V.ext.order[v.sSortDataType];b&&(u=b.call(g.oInstance,g,m,oe(g,m)));for(var y=V.ext.type.order[v.sType+"-pre"],D=g.aoData,x=0;x<D.length;x++)D[x]&&((h=D[x])._aSortData||(h._aSortData=[]),h._aSortData[m]&&!b||(p=b?u[x]:q(g,x,m,"sort"),h._aSortData[m]=y?y(p,g):p))}if("ssp"!=J(e)&&0!==c.length){for(r=0,a=s.length;r<a;r++)d[r]=r;c.length&&"desc"===c[0].dir&&e.orderDescReverse&&d.reverse(),s.sort(function(e,t){for(var n,r,a,o,i=c.length,l=f[e]._aSortData,s=f[t]._aSortData,u=0;u<i;u++)if(n=l[(o=c[u]).col],r=s[o.col],o.sorter){if(0!==(a=o.sorter(n,r)))return a}else if(0!==(a=n<r?-1:r<n?1:0))return"asc"===o.dir?a:-a;return(n=d[e])<(r=d[t])?-1:r<n?1:0})}else 0===c.length&&s.sort(function(e,t){return e<t?-1:t<e?1:0});return void 0===t&&(e.bSorted=!0,e.sortDetails=c,G(e,null,"order",[e,c])),s}function Ke(e){var t,n,r,a=e.aLastSort,o=e.oClasses.order.position,i=Ze(e),l=e.oFeatures;if(l.bSort&&l.bSortClasses){for(t=0,n=a.length;t<n;t++)r=a[t].src,H(b(e.aoData,"anCells",r)).removeClass(o+(t<2?t+1:3));for(t=0,n=i.length;t<n;t++)r=i[t].src,H(b(e.aoData,"anCells",r)).addClass(o+(t<2?t+1:3))}e.aLastSort=i}function et(n){var t,e;n._bLoadingState||(g(n,e=[],n.aaSorting),t=n.aoColumns,e={time:+new Date,start:n._iDisplayStart,length:n._iDisplayLength,order:e.map(function(e){return t[e[0]]&&t[e[0]].sName?[t[e[0]].sName,e[1]]:e.slice()}),search:H.extend({},n.oPreviousSearch),columns:n.aoColumns.map(function(e,t){return{name:e.sName,visible:e.bVisible,search:H.extend({},n.aoPreSearchCols[t])}})},n.oSavedState=e,G(n,"aoStateSaveParams","stateSaveParams",[n,e]),n.oFeatures.bStateSave&&!n.bDestroying&&n.fnStateSaveCallback.call(n.oInstance,n,e))}function tt(r,e,t){var n,a,o=r.aoColumns,i=b(r.aoColumns,"sName"),l=(r._bLoadingState=!0,r._bInitComplete?new V.Api(r):null);if(e&&e.time){var s=r.iStateDuration;if(0<s&&e.time<+new Date-1e3*s)r._bLoadingState=!1;else if(-1!==G(r,"aoStateLoadParams","stateLoadParams",[r,e]).indexOf(!1))r._bLoadingState=!1;else{if(r.oLoadedState=H.extend(!0,{},e),G(r,null,"stateLoadInit",[r,e],!0),void 0!==e.length&&(l?l.page.len(e.length):r._iDisplayLength=e.length),void 0!==e.start&&(null===l?(r._iDisplayStart=e.start,r.iInitDisplayStart=e.start):Be(r,e.start/r._iDisplayLength)),void 0!==e.order&&(r.aaSorting=[],H.each(e.order,function(e,t){var n=[t[0],t[1]];if("string"==typeof t[0]){t=i.indexOf(t[0]);if(t<0)return;n[0]=t}else if(n[0]>=o.length)return;r.aaSorting.push(n)})),void 0!==e.search&&H.extend(r.oPreviousSearch,e.search),e.columns){var u,c=e.columns,d=b(e.columns,"name");if(d.join("").length&&d.join("")!==i.join(""))for(c=[],n=0;n<i.length;n++)""!=i[n]&&0<=(u=d.indexOf(i[n]))?c.push(e.columns[u]):c.push({});if(c.length===o.length){for(n=0,a=c.length;n<a;n++){var f=c[n];void 0!==f.visible&&(l?l.column(n).visible(f.visible,!1):o[n].bVisible=f.visible),void 0!==f.search&&H.extend(r.aoPreSearchCols[n],f.search)}l&&l.one("draw",function(){l.columns.adjust()})}}r._bLoadingState=!1,G(r,"aoStateLoaded","stateLoaded",[r,e])}}else r._bLoadingState=!1;t()}function z(e,t,n,r){if(n="DataTables warning: "+(e?"table id="+e.sTableId+" - ":"")+n,r&&(n+=". For more information about this error, please see https://datatables.net/tn/"+r),t)W.console&&console.log&&console.log(n);else{t=V.ext,t=t.sErrMode||t.errMode;if(e&&G(e,null,"dt-error",[e,r,n],!0),"alert"==t)alert(n);else{if("throw"==t)throw new Error(n);"function"==typeof t&&t(e,r,n)}}}function $(n,r,e,t){Array.isArray(e)?H.each(e,function(e,t){Array.isArray(t)?$(n,r,t[0],t[1]):$(n,r,t)}):(void 0===t&&(t=e),void 0!==r[e]&&(n[t]=r[e]))}function nt(e,t,n){var r,a;for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(r=t[a],H.isPlainObject(r)?(H.isPlainObject(e[a])||(e[a]={}),H.extend(!0,e[a],r)):n&&"data"!==a&&"aaData"!==a&&Array.isArray(r)?e[a]=r.slice():e[a]=r);return e}function rt(e,t,n){H(e).on("click.DT",t,function(e){n(e)}).on("keypress.DT",t,function(e){13===e.which&&(e.preventDefault(),n(e))}).on("selectstart.DT",t,function(){return!1})}function Y(e,t,n){n&&e[t].push(n)}function G(t,e,n,r,a){var o=[];return e&&(o=t[e].slice().reverse().map(function(e){return e.apply(t.oInstance,r)})),null!==n&&(e=H.Event(n+".dt"),n=H(t.nTable),e.dt=t.api,n[a?"trigger":"triggerHandler"](e,r),a&&0===n.parents("body").length&&H("body").trigger(e,r),o.push(e.result)),o}function at(e){var t=e._iDisplayStart,n=e.fnDisplayEnd(),r=e._iDisplayLength;n<=t&&(t=n-r),t-=t%r,e._iDisplayStart=t=-1===r||t<0?0:t}function ot(e,t){var e=e.renderer,n=V.ext.renderer[t];return H.isPlainObject(e)&&e[t]?n[e[t]]||n._:"string"==typeof e&&n[e]||n._}function J(e){return e.oFeatures.bServerSide?"ssp":e.ajax?"ajax":"dom"}function it(e,t,n){var r=e.fnFormatNumber,a=e._iDisplayStart+1,o=e._iDisplayLength,i=e.fnRecordsDisplay(),l=e.fnRecordsTotal(),s=-1===o;return t.replace(/_START_/g,r.call(e,a)).replace(/_END_/g,r.call(e,e.fnDisplayEnd())).replace(/_MAX_/g,r.call(e,l)).replace(/_TOTAL_/g,r.call(e,i)).replace(/_PAGE_/g,r.call(e,s?1:Math.ceil(a/o))).replace(/_PAGES_/g,r.call(e,s?1:Math.ceil(i/o))).replace(/_ENTRIES_/g,e.api.i18n("entries","",n)).replace(/_ENTRIES-MAX_/g,e.api.i18n("entries","",l)).replace(/_ENTRIES-TOTAL_/g,e.api.i18n("entries","",i))}function lt(e,t){if(t)if(t.length<1e4)e.push.apply(e,t);else for(l=0;l<t.length;l++)e.push(t[l])}function st(e,t,n){for(Array.isArray(n)||(n=[n]),l=0;l<n.length;l++)e.on(t+".dt",n[l])}function ut(n){return V.ext.escape.attributes&&H.each(n,function(e,t){n[e]=u(t)}),n}var ct=[],t=Array.prototype;X=function(e,t){if(!(this instanceof X))return new X(e,t);function n(e){e=e,t=V.settings,r=b(t,"nTable");var n,t,r,a=e?e.nTable&&e.oFeatures?[e]:e.nodeName&&"table"===e.nodeName.toLowerCase()?-1!==(a=r.indexOf(e))?[t[a]]:null:e&&"function"==typeof e.settings?e.settings().toArray():("string"==typeof e?n=H(e).get():e instanceof H&&(n=e.get()),n?t.filter(function(e,t){return n.includes(r[t])}):void 0):[];a&&o.push.apply(o,a)}var r,o=[];if(Array.isArray(e))for(r=0;r<e.length;r++)n(e[r]);else n(e);this.context=1<o.length?w(o):o,lt(this,t),this.selector={rows:null,cols:null,opts:null},X.extend(this,this,ct)},V.Api=X,H.extend(X.prototype,{any:function(){return 0!==this.count()},context:[],count:function(){return this.flatten().length},each:function(e){for(var t=0,n=this.length;t<n;t++)e.call(this,this[t],t,this);return this},eq:function(e){var t=this.context;return t.length>e?new X(t[e],this[e]):null},filter:function(e){e=t.filter.call(this,e,this);return new X(this.context,e)},flatten:function(){var e=[];return new X(this.context,e.concat.apply(e,this.toArray()))},get:function(e){return this[e]},join:t.join,includes:function(e){return-1!==this.indexOf(e)},indexOf:t.indexOf,iterator:function(e,t,n,r){var a,o,i,l,s,u,c,d,f=[],h=this.context,p=this.selector;for("string"==typeof e&&(r=n,n=t,t=e,e=!1),o=0,i=h.length;o<i;o++){var g=new X(h[o]);if("table"===t)void 0!==(a=n.call(g,h[o],o))&&f.push(a);else if("columns"===t||"rows"===t)void 0!==(a=n.call(g,h[o],this[o],o))&&f.push(a);else if("every"===t||"column"===t||"column-rows"===t||"row"===t||"cell"===t)for(c=this[o],"column-rows"===t&&(u=wt(h[o],p.opts)),l=0,s=c.length;l<s;l++)d=c[l],void 0!==(a="cell"===t?n.call(g,h[o],d.row,d.column,o,l):n.call(g,h[o],d,o,l,u))&&f.push(a)}return f.length||r?((e=(r=new X(h,e?f.concat.apply([],f):f)).selector).rows=p.rows,e.cols=p.cols,e.opts=p.opts,r):this},lastIndexOf:t.lastIndexOf,length:0,map:function(e){e=t.map.call(this,e,this);return new X(this.context,e)},pluck:function(e){var t=V.util.get(e);return this.map(function(e){return t(e)})},pop:t.pop,push:t.push,reduce:t.reduce,reduceRight:t.reduceRight,reverse:t.reverse,selector:null,shift:t.shift,slice:function(){return new X(this.context,this)},sort:t.sort,splice:t.splice,toArray:function(){return t.slice.call(this)},to$:function(){return H(this)},toJQuery:function(){return H(this)},unique:function(){return new X(this.context,w(this.toArray()))},unshift:t.unshift}),W.__apiStruct=ct,X.extend=function(e,t,n){if(n.length&&t&&(t instanceof X||t.__dt_wrapper))for(var r,a=0,o=n.length;a<o;a++)"__proto__"!==(r=n[a]).name&&(t[r.name]="function"===r.type?((t,n,r)=>function(){var e=n.apply(t||this,arguments);return X.extend(e,e,r.methodExt),e})(e,r.val,r):"object"===r.type?{}:r.val,t[r.name].__dt_wrapper=!0,X.extend(e,t[r.name],r.propExt))},X.register=r=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)X.register(e[n],t);else for(var a=e.split("."),o=ct,i=0,l=a.length;i<l;i++){var s,u,c=((e,t)=>{for(var n=0,r=e.length;n<r;n++)if(e[n].name===t)return e[n];return null})(o,u=(s=-1!==a[i].indexOf("()"))?a[i].replace("()",""):a[i]);c||o.push(c={name:u,val:{},methodExt:[],propExt:[],type:"object"}),i===l-1?(c.val=t,c.type="function"==typeof t?"function":H.isPlainObject(t)?"object":"other"):o=s?c.methodExt:c.propExt}},X.registerPlural=e=function(e,t,n){X.register(e,n),X.register(t,function(){var e=n.apply(this,arguments);return e===this?this:e instanceof X?e.length?Array.isArray(e[0])?new X(e.context,e[0]):e[0]:void 0:e})};function dt(e,t){var n,r;return Array.isArray(e)?(n=[],e.forEach(function(e){e=dt(e,t);lt(n,e)}),n.filter(function(e){return e})):"number"==typeof e?[t[e]]:(r=t.map(function(e){return e.nTable}),H(r).filter(e).map(function(){var e=r.indexOf(this);return t[e]}).toArray())}function ft(a,o,e){var t,n;e&&(t=new X(a)).one("draw",function(){e(t.ajax.json())}),"ssp"==J(a)?Ie(a,o):(S(a,!0),(n=a.jqXHR)&&4!==n.readyState&&n.abort(),Oe(a,{},function(e){be(a);for(var t=je(a,e),n=0,r=t.length;n<r;n++)D(a,t[n]);Ie(a,o),Xe(a),S(a,!1)}))}function ht(e,t,n,r,a){for(var o,i=[],l=typeof t,s=0,u=(t=t&&"string"!=l&&"function"!=l&&void 0!==t.length?t:[t]).length;s<u;s++)(o=(o=n("string"==typeof t[s]?t[s].trim():t[s])).filter(function(e){return null!=e}))&&o.length&&(i=i.concat(o));var c=C.selector[e];if(c.length)for(s=0,u=c.length;s<u;s++)i=c[s](r,a,i);return w(i)}function pt(e){return(e=e||{}).filter&&void 0===e.search&&(e.search=e.filter),H.extend({columnOrder:"implied",search:"none",order:"current",page:"all"},e)}function gt(e){var t=new X(e.context[0]);return e.length&&t.push(e[0]),t.selector=e.selector,t.length&&1<t[0].length&&t[0].splice(1),t}r("tables()",function(e){return null!=e?new X(dt(e,this.context)):this}),r("table()",function(e){var e=this.tables(e),t=e.context;return t.length?new X(t[0]):e}),[["nodes","node","nTable"],["body","body","nTBody"],["header","header","nTHead"],["footer","footer","nTFoot"]].forEach(function(t){e("tables()."+t[0]+"()","table()."+t[1]+"()",function(){return this.iterator("table",function(e){return e[t[2]]},1)})}),[["header","aoHeader"],["footer","aoFooter"]].forEach(function(t){r("table()."+t[0]+".structure()",function(e){var n=this.columns(e).indexes().flatten().toArray(),e=this.context[0],e=_e(e,e[t[1]],n),r=n.slice().sort(function(e,t){return e-t});return e.map(function(t){return n.map(function(e){return t[r.indexOf(e)]})})})}),e("tables().containers()","table().container()",function(){return this.iterator("table",function(e){return e.nTableWrapper},1)}),r("tables().every()",function(n){var r=this;return this.iterator("table",function(e,t){n.call(r.table(t),t)})}),r("caption()",function(a,o){var e,t=this.context;return void 0===a?(e=t[0].captionNode)&&t.length?e.innerHTML:null:this.iterator("table",function(e){var t=H(e.nTable),n=H(e.captionNode),r=H(e.nTableWrapper);n.length||(n=H("<caption/>").html(a),e.captionNode=n[0],o)||(t.prepend(n),o=n.css("caption-side")),n.html(a),o&&(n.css("caption-side",o),n[0]._captionSide=o),(r.find("div.dataTables_scroll").length?(e="top"===o?"Head":"Foot",r.find("div.dataTables_scroll"+e+" table")):t).prepend(n)},1)}),r("caption.node()",function(){var e=this.context;return e.length?e[0].captionNode:null}),r("draw()",function(t){return this.iterator("table",function(e){"page"===t?x(e):Ie(e,!1===(t="string"==typeof t?"full-hold"!==t:t))})}),r("page()",function(t){return void 0===t?this.page.info().page:this.iterator("table",function(e){Be(e,t)})}),r("page.info()",function(){var e,t,n,r,a;if(0!==this.context.length)return t=(e=this.context[0])._iDisplayStart,n=e.oFeatures.bPaginate?e._iDisplayLength:-1,r=e.fnRecordsDisplay(),{page:(a=-1===n)?0:Math.floor(t/n),pages:a?1:Math.ceil(r/n),start:t,end:e.fnDisplayEnd(),length:n,recordsTotal:e.fnRecordsTotal(),recordsDisplay:r,serverSide:"ssp"===J(e)}}),r("page.len()",function(t){return void 0===t?0!==this.context.length?this.context[0]._iDisplayLength:void 0:this.iterator("table",function(e){Ve(e,t)})}),r("ajax.json()",function(){var e=this.context;if(0<e.length)return e[0].json}),r("ajax.params()",function(){var e=this.context;if(0<e.length)return e[0].oAjaxData}),r("ajax.reload()",function(t,n){return this.iterator("table",function(e){ft(e,!1===n,t)})}),r("ajax.url()",function(t){var e=this.context;return void 0===t?0===e.length?void 0:(e=e[0],H.isPlainObject(e.ajax)?e.ajax.url:e.ajax):this.iterator("table",function(e){H.isPlainObject(e.ajax)?e.ajax.url=t:e.ajax=t})}),r("ajax.url().load()",function(t,n){return this.iterator("table",function(e){ft(e,!1===n,t)})});function mt(o,i,e,t){function l(e,t){var n;if(Array.isArray(e)||e instanceof H)for(var r=0,a=e.length;r<a;r++)l(e[r],t);else e.nodeName&&"tr"===e.nodeName.toLowerCase()?(e.setAttribute("data-dt-row",i.idx),s.push(e)):(n=H("<tr><td></td></tr>").attr("data-dt-row",i.idx).addClass(t),H("td",n).addClass(t).html(e)[0].colSpan=ie(o),s.push(n[0]))}var s=[];l(e,t),i._details&&i._details.detach(),i._details=H(s),i._detailsShow&&i._details.insertAfter(i.nTr)}function vt(e,t){var i,a,n,l,r=e.context;r.length&&e.length&&(n=r[0].aoData[e[0]])._details&&((n._detailsShow=t)?(n._details.insertAfter(n.nTr),H(n.nTr).addClass("dt-hasChild")):(n._details.detach(),H(n.nTr).removeClass("dt-hasChild")),G(r[0],null,"childRow",[t,e.row(e[0])]),i=r[0],a=new X(i),t="draw"+(n=".dt.DT_details"),e="column-sizing"+n,n="destroy"+n,l=i.aoData,a.off(t+" "+e+" "+n),0<b(l,"_details").length&&(a.on(t,function(e,t){i===t&&a.rows({page:"current"}).eq(0).each(function(e){e=l[e];e._detailsShow&&e._details.insertAfter(e.nTr)})}),a.on(e,function(e,t){if(i===t)for(var n,r=ie(t),a=0,o=l.length;a<o;a++)(n=l[a])&&n._details&&n._details.each(function(){var e=H(this).children("td");1==e.length&&e.attr("colspan",r)})}),a.on(n,function(e,t){if(i===t)for(var n=0,r=l.length;n<r;n++)l[n]&&l[n]._details&&Ct(a,n)})),_t(r))}function bt(e,t,n,r,a,o){for(var i=[],l=0,s=a.length;l<s;l++)i.push(q(e,a[l],t,o));return i}function yt(e,t,n){var r=e.aoHeader,e=e.titleRow,a=null;if(void 0!==n)a=n;else if(!0===e)a=0;else if(!1===e)a=r.length-1;else if(null!==e)a=e;else{for(var o=0;o<r.length;o++)r[o][t].unique&&H(".dt-column-title",r[o][t].cell).text()&&(a=o);null===a&&(a=0)}return r[a][t].cell}function Dt(i,e,l){var s,u,c=i.aoColumns,d=(e=>{for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e[n].length;r++){var a=e[n][r].cell;t.includes(a)||t.push(a)}return t})(i.aoHeader),e=ht("column",e,function(n){var r,e=f(n);if(""===n)return h(c.length);if(null!==e)return[0<=e?e:c.length+e];if("function"==typeof n)return r=wt(i,l),c.map(function(e,t){return n(t,bt(i,t,0,0,r),yt(i,t))?t:null});var t,a,o="string"==typeof n?n.match(Lt):"";if(o)switch(o[2]){case"visIdx":case"visible":return o[1]&&o[1].match(/^\d+$/)?(t=parseInt(o[1],10))<0?[(a=c.map(function(e,t){return e.bVisible?t:null}))[a.length+t]]:[ae(i,t)]:c.map(function(e,t){return e.bVisible&&!1!==e.responsiveVisible&&(!o[1]||0<H(d[t]).filter(o[1]).length)?t:null});case"name":return(s=s||b(c,"sName")).map(function(e,t){return e===o[1]?t:null});case"title":return(u=u||b(c,"sTitle")).map(function(e,t){return e===o[1]?t:null});default:return[]}return n.nodeName&&n._DT_CellIndex?[n._DT_CellIndex.column]:(e=H(d).filter(n).map(function(){return fe(this)}).toArray().sort(function(e,t){return e-t})).length||!n.nodeName?e:(e=H(n).closest("*[data-dt-column]")).length?[e.data("dt-column")]:[]},i,l);return l.columnOrder&&"index"===l.columnOrder?e.sort(function(e,t){return e-t}):e}var xt,St,wt=function(e,t){var n,r=[],a=e.aiDisplay,o=e.aiDisplayMaster,i=t.search,l=t.order,t=t.page;if("ssp"==J(e))return"removed"===i?[]:h(0,o.length);if("current"==t)for(u=e._iDisplayStart,c=e.fnDisplayEnd();u<c;u++)r.push(a[u]);else if("current"==l||"applied"==l){if("none"==i)r=o.slice();else if("applied"==i)r=a.slice();else if("removed"==i){for(var s={},u=0,c=a.length;u<c;u++)s[a[u]]=null;o.forEach(function(e){Object.prototype.hasOwnProperty.call(s,e)||r.push(e)})}}else if("index"==l||"original"==l)for(u=0,c=e.aoData.length;u<c;u++)e.aoData[u]&&("none"==i||-1===(n=a.indexOf(u))&&"removed"==i||0<=n&&"applied"==i)&&r.push(u);else if("number"==typeof l){var d=Qe(e,l,"asc");if("none"===i)r=d;else for(u=0;u<d.length;u++)(-1===(n=a.indexOf(d[u]))&&"removed"==i||0<=n&&"applied"==i)&&r.push(d[u])}return r},Tt=(r("rows()",function(n,r){void 0===n?n="":H.isPlainObject(n)&&(r=n,n=""),r=pt(r);var e=this.iterator("table",function(e){return t=ht("row",t=n,function(n){var e=f(n),r=a.aoData;if(null!==e&&!o)return[e];if(i=i||wt(a,o),null!==e&&-1!==i.indexOf(e))return[e];if(null==n||""===n)return i;if("function"==typeof n)return i.map(function(e){var t=r[e];return n(e,t._aData,t.nTr)?e:null});if(n.nodeName)return e=n._DT_RowIndex,t=n._DT_CellIndex,void 0!==e?r[e]&&r[e].nTr===n?[e]:[]:t?r[t.row]&&r[t.row].nTr===n.parentNode?[t.row]:[]:(e=H(n).closest("*[data-dt-row]")).length?[e.data("dt-row")]:[];if("string"==typeof n&&"#"===n.charAt(0)){var t=a.aIds[n.replace(/^#/,"")];if(void 0!==t)return[t.idx]}e=L(v(a.aoData,i,"nTr"));return H(e).filter(n).map(function(){return this._DT_RowIndex}).toArray()},a=e,o=r),"current"!==o.order&&"applied"!==o.order||Je(a,t),t;var a,t,o,i},1);return e.selector.rows=n,e.selector.opts=r,e}),r("rows().nodes()",function(){return this.iterator("row",function(e,t){return e.aoData[t].nTr||void 0},1)}),r("rows().data()",function(){return this.iterator(!0,"rows",function(e,t){return v(e.aoData,t,"_aData")},1)}),e("rows().cache()","row().cache()",function(n){return this.iterator("row",function(e,t){e=e.aoData[t];return"search"===n?e._aFilterData:e._aSortData},1)}),e("rows().invalidate()","row().invalidate()",function(n){return this.iterator("row",function(e,t){ye(e,t,n)})}),e("rows().indexes()","row().index()",function(){return this.iterator("row",function(e,t){return t},1)}),e("rows().ids()","row().id()",function(e){for(var t=[],n=this.context,r=0,a=n.length;r<a;r++)for(var o=0,i=this[r].length;o<i;o++){var l=n[r].rowIdFn(n[r].aoData[this[r][o]]._aData);t.push((!0===e?"#":"")+l)}return new X(n,t)}),e("rows().remove()","row().remove()",function(){return this.iterator("row",function(e,t){var n=e.aoData,r=n[t],a=e.aiDisplayMaster.indexOf(t),a=(-1!==a&&e.aiDisplayMaster.splice(a,1),0<e._iRecordsDisplay&&e._iRecordsDisplay--,at(e),e.rowIdFn(r._aData));void 0!==a&&delete e.aIds[a],n[t]=null}),this}),r("rows.add()",function(o){var e=this.iterator("table",function(e){for(var t,n=[],r=0,a=o.length;r<a;r++)(t=o[r]).nodeName&&"TR"===t.nodeName.toUpperCase()?n.push(he(e,t)[0]):n.push(D(e,t));return n},1),t=this.rows(-1);return t.pop(),lt(t,e),t}),r("row()",function(e,t){return gt(this.rows(e,t))}),r("row().data()",function(e){var t,n=this.context;return void 0===e?n.length&&this.length&&this[0].length?n[0].aoData[this[0]]._aData:void 0:((t=n[0].aoData[this[0]])._aData=e,Array.isArray(e)&&t.nTr&&t.nTr.id&&m(n[0].rowId)(e,t.nTr.id),ye(n[0],this[0],"data"),this)}),r("row().node()",function(){var e=this.context;if(e.length&&this.length&&this[0].length){e=e[0].aoData[this[0]];if(e&&e.nTr)return e.nTr}return null}),r("row.add()",function(t){t instanceof H&&t.length&&(t=t[0]);var e=this.iterator("table",function(e){return t.nodeName&&"TR"===t.nodeName.toUpperCase()?he(e,t)[0]:D(e,t)});return this.row(e[0])}),H(_).on("plugin-init.dt",function(e,t){var r=new X(t);r.on("stateSaveParams.DT",function(e,t,n){for(var r=t.rowIdFn,a=t.aiDisplayMaster,o=[],i=0;i<a.length;i++){var l=a[i],l=t.aoData[l];l._detailsShow&&o.push("#"+r(l._aData))}n.childRows=o}),r.on("stateLoaded.DT",function(e,t,n){Tt(r,n)}),Tt(r,r.state.loaded())}),function(e,t){t&&t.childRows&&e.rows(t.childRows.map(function(e){return e.replace(/([^:\\]*(?:\\.[^:\\]*)*):/g,"$1\\:")})).every(function(){G(e.settings()[0],null,"requestChild",[this])})}),_t=V.util.throttle(function(e){et(e[0])},500),Ct=function(e,t){var n=e.context;n.length&&(t=n[0].aoData[void 0!==t?t:e[0]])&&t._details&&(t._details.detach(),t._detailsShow=void 0,t._details=void 0,H(t.nTr).removeClass("dt-hasChild"),_t(n))},It="row().child",At=It+"()",Lt=(r(At,function(e,t){var n=this.context;return void 0===e?n.length&&this.length&&n[0].aoData[this[0]]?n[0].aoData[this[0]]._details:void 0:(!0===e?this.child.show():!1===e?Ct(this):n.length&&this.length&&mt(n[0],n[0].aoData[this[0]],e,t),this)}),r([It+".show()",At+".show()"],function(){return vt(this,!0),this}),r([It+".hide()",At+".hide()"],function(){return vt(this,!1),this}),r([It+".remove()",At+".remove()"],function(){return Ct(this),this}),r(It+".isShown()",function(){var e=this.context;return e.length&&this.length&&e[0].aoData[this[0]]&&e[0].aoData[this[0]]._detailsShow||!1}),/^([^:]+)?:(name|title|visIdx|visible)$/);r("columns()",function(t,n){void 0===t?t="":H.isPlainObject(t)&&(n=t,t=""),n=pt(n);var e=this.iterator("table",function(e){return Dt(e,t,n)},1);return e.selector.cols=t,e.selector.opts=n,e}),e("columns().header()","column().header()",function(n){return this.iterator("column",function(e,t){return yt(e,t,n)},1)}),e("columns().footer()","column().footer()",function(n){return this.iterator("column",function(e,t){return e.aoFooter.length?e.aoFooter[void 0!==n?n:0][t].cell:null},1)}),e("columns().data()","column().data()",function(){return this.iterator("column-rows",bt,1)}),e("columns().render()","column().render()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return bt(e,t,0,0,a,o)},1)}),e("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].mData},1)}),e("columns().cache()","column().cache()",function(o){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"search"===o?"_aFilterData":"_aSortData",t)},1)}),e("columns().init()","column().init()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t]},1)}),e("columns().names()","column().name()",function(){return this.iterator("column",function(e,t){return e.aoColumns[t].sName},1)}),e("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(e,t,n,r,a){return v(e.aoData,a,"anCells",t)},1)}),e("columns().titles()","column().title()",function(n,r){return this.iterator("column",function(e,t){"number"==typeof n&&(r=n,n=void 0);t=H(".dt-column-title",this.column(t).header(r));return void 0!==n?(t.html(n),this):t.html()},1)}),e("columns().types()","column().type()",function(){return this.iterator("column",function(e,t){var t=e.aoColumns[t],n=t.sType;return n||(ue(e),n=t.sType),n},1)}),e("columns().visible()","column().visible()",function(n,r){var t=this,a=[],e=this.iterator("column",function(e,t){if(void 0===n)return e.aoColumns[t].bVisible;((e,t,n)=>{var r,a,o=e.aoColumns,i=o[t],l=e.aoData;if(void 0===n)return i.bVisible;if(i.bVisible===n)return!1;if(n)for(var s=b(o,"bVisible").indexOf(!0,t+1),u=0,c=l.length;u<c;u++)l[u]&&(a=l[u].nTr,r=l[u].anCells,a)&&a.insertBefore(r[t],r[s]||null);else H(b(e.aoData,"anCells",t)).detach();return i.bVisible=n,Ye(e),!0})(e,t,n)&&a.push(t)});return void 0!==n&&this.iterator("table",function(e){Ce(e,e.aoHeader),Ce(e,e.aoFooter),e.aiDisplay.length||H(e.nTBody).find("td[colspan]").attr("colspan",ie(e)),et(e),t.iterator("column",function(e,t){a.includes(t)&&G(e,null,"column-visibility",[e,t,n,r])}),a.length&&(void 0===r||r)&&t.columns.adjust()}),e}),e("columns().widths()","column().width()",function(){var e=this.columns(":visible").count(),e=H("<tr>").html("<td>"+Array(e).join("</td><td>")+"</td>"),n=(H(this.table().body()).append(e),e.children().map(function(){return H(this).outerWidth()}));return e.remove(),this.iterator("column",function(e,t){e=oe(e,t);return null!==e?n[e]:0},1)}),e("columns().indexes()","column().index()",function(n){return this.iterator("column",function(e,t){return"visible"===n?oe(e,t):t},1)}),r("columns.adjust()",function(){return this.iterator("table",function(e){e.containerWidth=-1,re(e)},1)}),r("column.index()",function(e,t){var n;if(0!==this.context.length)return n=this.context[0],"fromVisible"===e||"toData"===e?ae(n,t):"fromData"===e||"toVisible"===e?oe(n,t):void 0}),r("column()",function(e,t){return gt(this.columns(e,t))});function Nt(e,t){H(e).find(".dt-column-order").remove(),H(e).find(".dt-column-title").each(function(){var e=H(this).html();H(this).parent().parent().append(e),H(this).remove()}),H(e).find("div.dt-column-"+t).remove(),H("th, td",e).removeAttr("data-dt-column")}r("cells()",function(g,e,m){var r,a,o,i,l,s,t;return H.isPlainObject(g)&&(void 0===g.row?(m=g,g=null):(m=e,e=null)),H.isPlainObject(e)&&(m=e,e=null),null==e?this.iterator("table",function(e){return r=e,e=g,t=pt(m),d=r.aoData,f=wt(r,t),n=L(v(d,f,"anCells")),h=H(Z([],n)),p=r.aoColumns.length,ht("cell",e,function(e){var t,n="function"==typeof e;if(null==e||n){for(o=[],i=0,l=f.length;i<l;i++)for(a=f[i],s=0;s<p;s++)u={row:a,column:s},(!n||(c=d[a],e(u,q(r,a,s),c.anCells?c.anCells[s]:null)))&&o.push(u);return o}return H.isPlainObject(e)?void 0!==e.column&&void 0!==e.row&&-1!==f.indexOf(e.row)?[e]:[]:(t=h.filter(e).map(function(e,t){return{row:t._DT_CellIndex.row,column:t._DT_CellIndex.column}}).toArray()).length||!e.nodeName?t:(c=H(e).closest("*[data-dt-row]")).length?[{row:c.data("dt-row"),column:c.data("dt-column")}]:[]},r,t);var r,t,a,o,i,l,s,u,c,d,f,n,h,p}):(t=m?{page:m.page,order:m.order,search:m.search}:{},r=this.columns(e,t),a=this.rows(g,t),t=this.iterator("table",function(e,t){var n=[];for(o=0,i=a[t].length;o<i;o++)for(l=0,s=r[t].length;l<s;l++)n.push({row:a[t][o],column:r[t][l]});return n},1),t=m&&m.selected?this.cells(t,m):t,H.extend(t.selector,{cols:e,rows:g,opts:m}),t)}),e("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(e,t,n){e=e.aoData[t];return e&&e.anCells?e.anCells[n]:void 0},1)}),r("cells().data()",function(){return this.iterator("cell",function(e,t,n){return q(e,t,n)},1)}),e("cells().cache()","cell().cache()",function(r){return r="search"===r?"_aFilterData":"_aSortData",this.iterator("cell",function(e,t,n){return e.aoData[t][r][n]},1)}),e("cells().render()","cell().render()",function(r){return this.iterator("cell",function(e,t,n){return q(e,t,n,r)},1)}),e("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(e,t,n){return{row:t,column:n,columnVisible:oe(e,n)}},1)}),e("cells().invalidate()","cell().invalidate()",function(r){return this.iterator("cell",function(e,t,n){ye(e,t,r,n)})}),r("cell()",function(e,t,n){return gt(this.cells(e,t,n))}),r("cell().data()",function(e){var t,n,r,a,o,i=this.context,l=this[0];return void 0===e?i.length&&l.length?q(i[0],l[0].row,l[0].column):void 0:(t=i[0],n=l[0].row,r=l[0].column,a=t.aoColumns[r],o=t.aoData[n]._aData,a.fnSetData(o,e,{settings:t,row:n,col:r}),ye(i[0],l[0].row,"data",l[0].column),this)}),r("order()",function(n,e){var t=this.context,r=Array.prototype.slice.call(arguments);return void 0===n?0!==t.length?t[0].aaSorting:void 0:("number"==typeof n?n=[[n,e]]:1<r.length&&(n=r),this.iterator("table",function(e){var t=[];g(e,t,n),e.aaSorting=t}))}),r("order.listener()",function(t,n,r){return this.iterator("table",function(e){Ge(e,t,{},n,r)})}),r("order.fixed()",function(t){var e;return t?this.iterator("table",function(e){e.aaSortingFixed=H.extend(!0,{},t)}):(e=(e=this.context).length?e[0].aaSortingFixed:void 0,Array.isArray(e)?{pre:e}:e)}),r(["columns().order()","column().order()"],function(n){var r=this;return n?this.iterator("table",function(e,t){e.aaSorting=r[t].map(function(e){return[e,n]})}):this.iterator("column",function(e,t){for(var n=Ze(e),r=0,a=n.length;r<a;r++)if(n[r].col===t)return n[r].dir;return null},1)}),e("columns().orderable()","column().orderable()",function(n){return this.iterator("column",function(e,t){e=e.aoColumns[t];return n?e.asSorting:e.bSortable},1)}),r("processing()",function(t){return this.iterator("table",function(e){S(e,t)})}),r("search()",function(t,n,r,a){var e=this.context;return void 0===t?0!==e.length?e[0].oPreviousSearch.search:void 0:this.iterator("table",function(e){e.oFeatures.bFilter&&Pe(e,"object"==typeof n?H.extend(e.oPreviousSearch,n,{search:t}):H.extend(e.oPreviousSearch,{search:t,regex:null!==n&&n,smart:null===r||r,caseInsensitive:null===a||a}))})}),r("search.fixed()",function(t,n){var e=this.iterator(!0,"table",function(e){e=e.searchFixed;return t?void 0===n?e[t]:(null===n?delete e[t]:e[t]=n,this):Object.keys(e)});return void 0!==t&&void 0===n?e[0]:e}),e("columns().search()","column().search()",function(r,a,o,i){return this.iterator("column",function(e,t){var n=e.aoPreSearchCols;if(void 0===r)return n[t].search;e.oFeatures.bFilter&&("object"==typeof a?H.extend(n[t],a,{search:r}):H.extend(n[t],{search:r,regex:null!==a&&a,smart:null===o||o,caseInsensitive:null===i||i}),Pe(e,e.oPreviousSearch))})}),r(["columns().search.fixed()","column().search.fixed()"],function(n,r){var e=this.iterator(!0,"column",function(e,t){e=e.aoColumns[t].searchFixed;return n?void 0===r?e[n]||null:(null===r?delete e[n]:e[n]=r,this):Object.keys(e)});return void 0!==n&&void 0===r?e[0]:e}),r("state()",function(e,t){var n;return e?(n=H.extend(!0,{},e),this.iterator("table",function(e){!1!==t&&(n.time=+new Date+100),tt(e,n,function(){})})):this.context.length?this.context[0].oSavedState:null}),r("state.clear()",function(){return this.iterator("table",function(e){e.fnStateSaveCallback.call(e.oInstance,e,{})})}),r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null}),r("state.save()",function(){return this.iterator("table",function(e){et(e)})}),V.use=function(e,t){var n="string"==typeof e?t:e,t="string"==typeof t?t:e;if(void 0===n&&"string"==typeof t)switch(t){case"lib":case"jq":return H;case"win":return W;case"datetime":return V.DateTime;case"luxon":return o;case"moment":return i;case"bootstrap":return xt||W.bootstrap;case"foundation":return St||W.Foundation;default:return null}"lib"===t||"jq"===t||n&&n.fn&&n.fn.jquery?H=n:"win"===t||n&&n.document?_=(W=n).document:"datetime"===t||n&&"DateTime"===n.type?V.DateTime=n:"luxon"===t||n&&n.FixedOffsetZone?o=n:"moment"===t||n&&n.isMoment?i=n:"bootstrap"===t||n&&n.Modal&&"modal"===n.Modal.NAME?xt=n:("foundation"===t||n&&n.Reveal)&&(St=n)},V.factory=function(e,t){var n=!1;return e&&e.document&&(_=(W=e).document),t&&t.fn&&t.fn.jquery&&(H=t,n=!0),n},V.versionCheck=function(e,t){for(var n,r,a=(t||V.version).split("."),o=e.split("."),i=0,l=o.length;i<l;i++)if((n=parseInt(a[i],10)||0)!==(r=parseInt(o[i],10)||0))return r<n;return!0},V.isDataTable=function(e){var a=H(e).get(0),o=!1;return e instanceof V.Api||(H.each(V.settings,function(e,t){var n=t.nScrollHead?H("table",t.nScrollHead)[0]:null,r=t.nScrollFoot?H("table",t.nScrollFoot)[0]:null;t.nTable!==a&&n!==a&&r!==a||(o=!0)}),o)},V.tables=function(t){var e=!1,n=(H.isPlainObject(t)&&(e=t.api,t=t.visible),V.settings.filter(function(e){return!(t&&!H(e.nTable).is(":visible"))}).map(function(e){return e.nTable}));return e?new X(n):n},V.camelToHungarian=B,r("$()",function(e,t){t=this.rows(t).nodes(),t=H(t);return H([].concat(t.filter(e).toArray(),t.find(e).toArray()))}),H.each(["on","one","off"],function(e,n){r(n+"()",function(){var e=Array.prototype.slice.call(arguments),t=(e[0]=e[0].split(/\s/).map(function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" "),H(this.tables().nodes()));return t[n].apply(t,e),this})}),r("clear()",function(){return this.iterator("table",function(e){be(e)})}),r("error()",function(t){return this.iterator("table",function(e){z(e,0,t)})}),r("settings()",function(){return new X(this.context,this.context)}),r("init()",function(){var e=this.context;return e.length?e[0].oInit:null}),r("data()",function(){return this.iterator("table",function(e){return b(e.aoData,"_aData")}).flatten()}),r("trigger()",function(t,n,r){return this.iterator("table",function(e){return G(e,null,t,n,r)}).flatten()}),r("ready()",function(t){var e=this.context;return t?this.tables().every(function(){var e=this;this.context[0]._bInitComplete?t.call(e):this.on("init.dt.DT",function(){t.call(e)})}):e.length?e[0]._bInitComplete||!1:null}),r("destroy()",function(c){return c=c||!1,this.iterator("table",function(e){var t=e.oClasses,n=e.nTable,r=e.nTBody,a=e.nTHead,o=e.nTFoot,i=H(n),r=H(r),l=H(e.nTableWrapper),s=e.aoData.map(function(e){return e?e.nTr:null}),u=t.order,o=(e.bDestroying=!0,G(e,"aoDestroyCallback","destroy",[e],!0),c||new X(e).columns().visible(!0),e.resizeObserver&&e.resizeObserver.disconnect(),l.off(".DT").find(":not(tbody *)").off(".DT"),H(W).off(".DT-"+e.sInstance),n!=a.parentNode&&(i.children("thead").detach(),i.append(a)),o&&n!=o.parentNode&&(i.children("tfoot").detach(),i.append(o)),Nt(a,"header"),Nt(o,"footer"),e.colgroup.remove(),e.aaSorting=[],e.aaSortingFixed=[],Ke(e),H(i).find("th, td").removeClass(H.map(V.ext.type.className,function(e){return e}).join(" ")),H("th, td",a).removeClass(u.none+" "+u.canAsc+" "+u.canDesc+" "+u.isAsc+" "+u.isDesc).css("width","").removeAttr("aria-sort"),r.children().detach(),r.append(s),e.nTableWrapper.parentNode),a=e.nTableWrapper.nextSibling,u=c?"remove":"detach",r=(i[u](),l[u](),!c&&o&&(o.insertBefore(n,a),i.css("width",e.sDestroyWidth).removeClass(t.table)),V.settings.indexOf(e));-1!==r&&V.settings.splice(r,1)})}),H.each(["column","row","cell"],function(e,s){r(s+"s().every()",function(r){var a,o=this.selector.opts,i=this,l=0;return this.iterator("every",function(e,t,n){a=i[s](t,o),"cell"===s?r.call(a,a[0][0].row,a[0][0].column,n,l):r.call(a,t,n,l),l++})})}),r("i18n()",function(e,t,n){var r=this.context[0],e=U(e)(r.oLanguage);return"string"==typeof(e=H.isPlainObject(e=void 0===e?t:e)?void 0!==n&&void 0!==e[n]?e[n]:!1===n?e:e._:e)?e.replace("%d",n):e}),V.version="2.3.7",V.settings=[],V.models={},V.models.oSearch={caseInsensitive:!0,search:"",regex:!1,smart:!0,return:!1},V.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,src:null,idx:-1,displayData:null},V.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null,wideStrings:null,searchFixed:null},V.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],bAutoWidth:!0,bDeferRender:!0,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:null,titleRow:null,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnStateLoadCallback:function(e){try{return JSON.parse((-1===e.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+e.sInstance+"_"+location.pathname))}catch(e){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(e,t){try{(-1===e.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+e.sInstance+"_"+location.pathname,JSON.stringify(t))}catch(e){}},fnStateSaveParams:null,iStateDuration:7200,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{orderable:": Activate to sort",orderableReverse:": Activate to invert sorting",orderableRemove:": Activate to remove sorting",paginate:{first:"First",last:"Last",next:"Next",previous:"Previous",number:""}},oPaginate:{sFirst:"«",sLast:"»",sNext:"›",sPrevious:"‹"},entries:{_:"entries",1:"entry"},lengthLabels:{"-1":"All"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ _ENTRIES-TOTAL_",sInfoEmpty:"Showing 0 to 0 of 0 _ENTRIES-TOTAL_",sInfoFiltered:"(filtered from _MAX_ total _ENTRIES-MAX_)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"_MENU_ _ENTRIES_ per page",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},orderDescReverse:!0,oSearch:H.extend({},V.models.oSearch),layout:{topStart:"pageLength",topEnd:"search",bottomStart:"info",bottomEnd:"paging"},sDom:null,searchDelay:null,sPaginationType:"",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId",caption:null,iDeferLoading:null,on:null,columnTitleTag:"span"},Q(V.defaults),V.defaults.column={aDataSort:null,iDataSort:-1,ariaTitle:"",asSorting:["asc","desc",""],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null},Q(V.defaults.column),V.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:!0,bLengthChange:!0,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollbarLeft:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},searchFixed:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",pagingControls:0,iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,bAjaxDataGet:!0,jqXHR:null,json:void 0,oAjaxData:void 0,sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==J(this)?+this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==J(this)?+this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var e=this._iDisplayLength,t=this._iDisplayStart,n=t+e,r=this.aiDisplay.length,a=this.oFeatures,o=a.bPaginate;return a.bServerSide?!1===o||-1===e?t+r:Math.min(t+e,this._iRecordsDisplay):!o||r<n||-1===e?r:n},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null,caption:"",captionNode:null,colgroup:null,deferLoading:null,typeDetect:!0,resizeObserver:null,containerWidth:-1,orderDescReverse:null,orderIndicators:!0,orderHandler:!0,titleRow:null,columnTitleTag:"span"};function Ft(t,n){return function(e){return T(e)||"string"!=typeof e||(e=e.replace(F," "),t&&(e=I(e)),n&&(e=M(e,!1))),e}}At=V.ext.pager;H.extend(At,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(){return["numbers"]},simple_numbers:function(){return["previous","numbers","next"]},full_numbers:function(){return["first","previous","numbers","next","last"]},first_last:function(){return["first","last"]},first_last_numbers:function(){return["first","numbers","last"]},_numbers:zt,numbers_length:7}),H.extend(!0,V.ext.renderer,{pagingButton:{_:function(e,t,n,r,a){var e=e.oClasses.paging,o=[e.button];return r&&o.push(e.active),a&&o.push(e.disabled),{display:r="ellipsis"===t?H('<span class="ellipsis"></span>').html(n)[0]:H("<button>",{class:o.join(" "),role:"link",type:"button"}).html(n),clicker:r}}},pagingContainer:{_:function(e,t){return t}}});function Ot(e,t,n,r,a){return i?e[t](a):o?e[n](a):r?e[r](a):e}var o,i,jt=!1;function Rt(e,t,n){var r;if(W.luxon&&!o&&(o=W.luxon),i=W.moment&&!i?W.moment:i){if(!(r=i.utc(e,t,n,!0)).isValid())return null}else if(o){if(!(r=t&&"string"==typeof e?o.DateTime.fromFormat(e,t):o.DateTime.fromISO(e)).isValid)return null;r=r.setLocale(n)}else t?(jt||alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),jt=!0):r=new Date(e);return r}function Pt(s){return function(r,a,o,i){0===arguments.length?(o="en",r=a=null):1===arguments.length?(o="en",a=r,r=null):2===arguments.length&&(o=a,a=r,r=null);var l="datetime"+(a?"-"+a:"");return V.ext.type.order[l+"-pre"]||V.type(l,{detect:function(e){return e===l&&l},order:{pre:function(e){return e.valueOf()}},className:"dt-right"}),function(e,t){var n;return null==e&&(e="--now"===i?(n=new Date,new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()))):""),"type"===t?l:""===e?"sort"!==t?"":Rt("0000-01-01 00:00:00",null,o):!(null===a||r!==a||"sort"===t||"type"===t||e instanceof Date)||null===(n=Rt(e,r,o))?e:"sort"===t?n:(e=null===a?Ot(n,"toDate","toJSDate","")[s](navigator.language,{timeZone:"UTC"}):Ot(n,"format","toFormat","toISOString",a),"display"===t?u(e):e)}}}var Et=",",kt=".";if(void 0!==W.Intl)try{for(var Mt=(new Intl.NumberFormat).formatToParts(100000.1),l=0;l<Mt.length;l++)"group"===Mt[l].type?Et=Mt[l].value:"decimal"===Mt[l].type&&(kt=Mt[l].value)}catch(e){}V.datetime=function(n,r){var a="datetime-"+n;r=r||"en",V.ext.type.order[a]||V.type(a,{detect:function(e){var t=Rt(e,n,r);return!(""!==e&&!t)&&a},order:{pre:function(e){return Rt(e,n,r)||0}},className:"dt-right"})},V.render={date:Pt("toLocaleDateString"),datetime:Pt("toLocaleString"),time:Pt("toLocaleTimeString"),number:function(a,o,i,l,s){return null==a&&(a=Et),null==o&&(o=kt),{display:function(e){if("number"!=typeof e&&"string"!=typeof e)return e;if(""===e||null===e)return e;var t=e<0?"-":"",n=parseFloat(e),r=Math.abs(n);if(1e11<=r||r<1e-4&&0!==r)return(r=n.toExponential(i).split(/e\+?/))[0]+" x 10<sup>"+r[1]+"</sup>";if(isNaN(n))return u(e);n=n.toFixed(i),e=Math.abs(n);r=parseInt(e,10),n=i?o+(e-r).toFixed(i).substring(2):"";return(t=0===r&&0===parseFloat(n)?"":t)+(l||"")+r.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+n+(s||"")}}},text:function(){return{display:u,filter:u}}};function Ht(e,t){return e=null!=e?e.toString().toLowerCase():"",t=null!=t?t.toString().toLowerCase():"",e.localeCompare(t,navigator.languages[0]||navigator.language,{numeric:!0,ignorePunctuation:!0})}function Wt(e,t){return e=I(e),t=I(t),Ht(e,t)}var s=V.ext.type,Xt=(V.type=function(n,e,t){if(!e)return{className:s.className[n],detect:s.detect.find(function(e){return e._name===n}),order:{pre:s.order[n+"-pre"],asc:s.order[n+"-asc"],desc:s.order[n+"-desc"]},render:s.render[n],search:s.search[n]};function r(e,t){s[e][n]=t}function a(e){Object.defineProperty(e,"_name",{value:n});var t=s.detect.findIndex(function(e){return e._name===n});-1===t?s.detect.unshift(e):s.detect.splice(t,1,e)}function o(e){s.order[n+"-pre"]=e.pre,s.order[n+"-asc"]=e.asc,s.order[n+"-desc"]=e.desc}void 0===t&&(t=e,e=null),"className"===e?r("className",t):"detect"===e?a(t):"order"===e?o(t):"render"===e?r("render",t):"search"===e?r("search",t):e||(t.className&&r("className",t.className),void 0!==t.detect&&a(t.detect),t.order&&o(t.order),void 0!==t.render&&r("render",t.render),void 0!==t.search&&r("search",t.search))},V.types=function(){return s.detect.map(function(e){return e._name})},V.type("string",{detect:function(){return"string"},order:{pre:function(e){return T(e)&&"boolean"!=typeof e?"":"string"==typeof e?e.toLowerCase():e.toString?e.toString():""}},search:Ft(!1,!0)}),V.type("string-utf8",{detect:{allOf:function(e){return!0},oneOf:function(e){return!T(e)&&navigator.languages&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Ht,desc:function(e,t){return-1*Ht(e,t)}},search:Ft(!1,!0)}),V.type("html",{detect:{allOf:function(e){return T(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return!T(e)&&"string"==typeof e&&-1!==e.indexOf("<")}},order:{pre:function(e){return T(e)?"":e.replace?I(e).trim().toLowerCase():e+""}},search:Ft(!0,!0)}),V.type("html-utf8",{detect:{allOf:function(e){return T(e)||"string"==typeof e&&-1!==e.indexOf("<")},oneOf:function(e){return navigator.languages&&!T(e)&&"string"==typeof e&&-1!==e.indexOf("<")&&"string"==typeof e&&e.match(/[^\x00-\x7F]/)}},order:{asc:Wt,desc:function(e,t){return-1*Wt(e,t)}},search:Ft(!0,!0)}),V.type("date",{className:"dt-type-date",detect:{allOf:function(e){var t;return!e||e instanceof Date||R.test(e)?null!==(t=Date.parse(e))&&!isNaN(t)||T(e):null},oneOf:function(e){return e instanceof Date||"string"==typeof e&&R.test(e)}},order:{pre:function(e){e=Date.parse(e);return isNaN(e)?-1/0:e}}}),V.type("html-num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t,O,E)}},search:Ft(!0,!0)}),V.type("html-num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return n(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t,O)}},search:Ft(!0,!0)}),V.type("num-fmt",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!0,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t,E)}}}),V.type("num",{className:"dt-type-numeric",detect:{allOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!0)},oneOf:function(e,t){t=t.oLanguage.sDecimal;return c(e,t,!1,!1)}},order:{pre:function(e,t){t=t.oLanguage.sDecimal;return Xt(e,t)}}}),function(e,t,n,r){var a;return 0===e||e&&"-"!==e?"number"==(a=typeof e)||"bigint"==a?e:+(e=(e=t?k(e,t):e).replace&&(n&&(e=e.replace(n,"")),r)?e.replace(r,""):e):-1/0});function Vt(e,t,n){n&&(e[t]=n)}H.extend(!0,V.ext.renderer,{footer:{_:function(e,t,n){t.addClass(n.tfoot.cell)}},header:{_:function(g,m,v){m.addClass(v.thead.cell),g.oFeatures.bSort||m.addClass(v.order.none);var e=g.titleRow,t=m.closest("thead").find("tr"),n=m.parent().index();"disable"===m.attr("data-dt-order")||"disable"===m.parent().attr("data-dt-order")||!0===e&&0!==n||!1===e&&n!==t.length-1||"number"==typeof e&&n!==e||H(g.nTable).on("order.dt.DT column-visibility.dt.DT",function(e,t,n){if(g===t){var r=t.sortDetails;if(r){var a=b(r,"col");if("column-visibility"!==e.type||a.includes(n)){for(var e=v.order,n=t.api.columns(m),o=g.aoColumns[n.flatten()[0]],i=n.orderable().includes(!0),l="",s=n.indexes(),u=n.orderable(!0).flatten(),c=g.iTabIndex,d=t.orderHandler&&i,f=(m.removeClass(e.isAsc+" "+e.isDesc).toggleClass(e.none,!i).toggleClass(e.canAsc,d&&u.includes("asc")).toggleClass(e.canDesc,d&&u.includes("desc")),!0),h=0;h<s.length;h++)a.includes(s[h])||(f=!1);f&&(d=n.order(),m.addClass(d.includes("asc")?e.isAsc:""+d.includes("desc")?e.isDesc:""));var p=-1;for(h=0;h<a.length;h++)if(g.aoColumns[a[h]].bVisible){p=a[h];break}s[0]==p?(u=r[0],n=o.asSorting,m.attr("aria-sort","asc"===u.dir?"ascending":"descending"),l=n[u.index+1]?"Reverse":"Remove"):m.removeAttr("aria-sort"),i&&((d=m.find(".dt-column-order")).attr("role","button").attr("aria-label",i?o.ariaTitle+t.api.i18n("oAria.orderable"+l):o.ariaTitle),-1!==c)&&d.attr("tabindex",c)}}}})}},layout:{_:function(e,t,n){var r=e.oClasses.layout,a=H("<div/>").attr("id",n.id||null).addClass(n.className||r.row).appendTo(t);V.ext.renderer.layout._forLayoutRow(n,function(e,t){var n;"id"!==e&&"className"!==e&&(n="",t.table&&(a.addClass(r.tableRow),n+=r.tableCell+" "),n+="start"===e?r.start:"end"===e?r.end:r.full,H("<div/>").attr({id:t.id||null,class:t.className||r.cell+" "+n}).append(t.contents).appendTo(a))})},_forLayoutRow:function(t,n){function r(e){switch(e){case"":return 0;case"start":return 1;case"end":return 2;default:return 3}}Object.keys(t).sort(function(e,t){return r(e)-r(t)}).forEach(function(e){n(e,t[e])})}}}),V.feature={},V.feature.register=function(e,t,n){V.ext.features[e]=t,n&&C.feature.push({cFeature:n,fnInit:t})},V.feature.register("div",function(e,t){var n=H("<div>")[0];return t&&(Vt(n,"className",t.className),Vt(n,"id",t.id),Vt(n,"innerHTML",t.html),Vt(n,"textContent",t.text)),n}),V.feature.register("info",function(e,s){var t,n,u;return e.oFeatures.bInfo?(t=e.oLanguage,n=e.sTableId,u=H("<div/>",{class:e.oClasses.info.container}),s=H.extend({callback:t.fnInfoCallback,empty:t.sInfoEmpty,postfix:t.sInfoPostFix,search:t.sInfoFiltered,text:t.sInfo},s),e.aoDrawCallback.push(function(e){var t=s,n=u,r=e._iDisplayStart+1,a=e.fnDisplayEnd(),o=e.fnRecordsTotal(),i=e.fnRecordsDisplay(),l=i?t.text:t.empty;i!==o&&(l+=" "+t.search),l+=t.postfix,l=it(e,l),t.callback&&(l=t.callback.call(e.oInstance,e,r,a,o,i,l)),n.html(l),G(e,null,"info",[e,n[0],l])}),e._infoEl||(u.attr({"aria-live":"polite",id:n+"_info",role:"status"}),H(e.nTable).attr("aria-describedby",n+"_info"),e._infoEl=u),u):null},"i");var Bt=0;function qt(e){var t=[];return e.numbers&&t.push("numbers"),e.previousNext&&(t.unshift("previous"),t.push("next")),e.firstLast&&(t.unshift("first"),t.push("last")),t}function Ut(e,t,n,r){var a=e.oLanguage.oPaginate,o={display:"",active:!1,disabled:!1};switch(t){case"ellipsis":o.display="&#x2026;";break;case"first":o.display=a.sFirst,0===n&&(o.disabled=!0);break;case"previous":o.display=a.sPrevious,0===n&&(o.disabled=!0);break;case"next":o.display=a.sNext,0!==r&&n!==r-1||(o.disabled=!0);break;case"last":o.display=a.sLast,0!==r&&n!==r-1||(o.disabled=!0);break;default:"number"==typeof t&&(o.display=e.fnFormatNumber(t+1),n===t)&&(o.active=!0)}return o}function zt(e,t,n,r){var a=[],o=Math.floor(n/2),i=r?2:1,l=r?1:0;return t<=n?a=h(0,t):1===n?a=[e]:3===n?e<=1?a=[0,1,"ellipsis"]:t-2<=e?(a=h(t-2,t)).unshift("ellipsis"):a=["ellipsis",e,"ellipsis"]:e<=o?((a=h(0,n-i)).push("ellipsis"),r&&a.push(t-1)):t-1-o<=e?((a=h(t-(n-i),t)).unshift("ellipsis"),r&&a.unshift(0)):((a=h(e-o+i,e+o-l)).push("ellipsis"),a.unshift("ellipsis"),r&&(a.push(t-1),a.unshift(0))),a}V.feature.register("search",function(n,r){var e,t,a,o,i,l,s,u,c,d;return n.oFeatures.bFilter?(e=n.oClasses.search,t=n.sTableId,a=n.oPreviousSearch,o='<input type="search" class="'+e.input+'"/>',-1===(r=H.extend({placeholder:(c=n.oLanguage).sSearchPlaceholder,processing:!1,text:c.sSearch},r)).text.indexOf("_INPUT_")&&(r.text+="_INPUT_"),r.text=it(n,r.text),c=r.text.match(/_INPUT_$/),s=r.text.match(/^_INPUT_/),i=r.text.replace(/_INPUT_/,""),l="<label>"+r.text+"</label>",s?l="_INPUT_<label>"+i+"</label>":c&&(l="<label>"+i+"</label>_INPUT_"),(s=H("<div>").addClass(e.container).append(l.replace(/_INPUT_/,o))).find("label").attr("for","dt-search-"+Bt),s.find("input").attr("id","dt-search-"+Bt),Bt++,u=function(e){var t=this.value;a.return&&"Enter"!==e.key||t!=a.search&&qe(n,r.processing,function(){a.search=t,Pe(n,a),n._iDisplayStart=0,x(n)})},c=null!==n.searchDelay?n.searchDelay:0,d=H("input",s).val(a.search).attr("placeholder",r.placeholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",c?V.util.debounce(u,c):u).on("mouseup.DT",function(e){setTimeout(function(){u.call(d[0],e)},10)}).on("keypress.DT",function(e){if(13==e.keyCode)return!1}).attr("aria-controls",t),H(n.nTable).on("search.dt.DT",function(e,t){n===t&&d[0]!==_.activeElement&&d.val("function"!=typeof a.search?a.search:"")}),s):null},"f"),V.feature.register("paging",function(e,t){if(!e.oFeatures.bPaginate)return null;t=H.extend({buttons:V.ext.pager.numbers_length,type:e.sPaginationType,boundaryNumbers:!0,firstLast:!0,previousNext:!0,numbers:!0},t);function n(){!function e(t,n,r){if(!t._bInitComplete)return;var a=r.type?V.ext.pager[r.type]:qt,o=t.oLanguage.oAria.paginate||{},i=t._iDisplayStart,l=t._iDisplayLength,s=t.fnRecordsDisplay(),u=-1===l,c=u?0:Math.ceil(i/l),d=u?1:Math.ceil(s/l),f=[],h=[],i=a(r).map(function(e){return"numbers"===e?zt(c,d,r.buttons,r.boundaryNumbers):e});f=f.concat.apply(f,i);for(var p=0;p<f.length;p++){var g=f[p],m=Ut(t,g,c,d),v=ot(t,"pagingButton")(t,g,m.display,m.active,m.disabled),b="string"==typeof g?o[g]:o.number?o.number+(g+1):null;H(v.clicker).attr({"aria-controls":t.sTableId,"aria-disabled":m.disabled?"true":null,"aria-current":m.active?"page":null,"aria-label":b,"data-dt-idx":g,tabIndex:m.disabled?-1:t.iTabIndex&&"span"!==v.clicker[0].nodeName.toLowerCase()?t.iTabIndex:null}),"number"!=typeof g&&H(v.clicker).addClass(g),rt(v.clicker,{action:g},function(e){e.preventDefault(),Be(t,e.data.action,!0)}),h.push(v.display)}u=ot(t,"pagingContainer")(t,h);s=n.find(_.activeElement).data("dt-idx");n.empty().append(u);void 0!==s&&n.find("[data-dt-idx="+s+"]").trigger("focus");h.length&&(l=H(h[0]).outerHeight(),1<r.buttons)&&0<l&&H(n).height()>=2*l-10&&e(t,n,H.extend({},r,{buttons:r.buttons-2}))}(e,r.children(),t)}var r=H("<div/>").addClass(e.oClasses.paging.container+(t.type?" paging_"+t.type:"")).append(H("<nav>").attr("aria-label","pagination").addClass(e.oClasses.paging.nav));return e.aoDrawCallback.push(n),H(e.nTable).on("column-sizing.dt.DT",n),r},"p");var $t=0;return V.feature.register("pageLength",function(r,e){var t=r.oFeatures;if(!t.bPaginate||!t.bLengthChange)return null;e=H.extend({menu:r.aLengthMenu,text:r.oLanguage.sLengthMenu},e);var t=r.oClasses.length,n=r.sTableId,a=e.menu,o=[],i=[];if(Array.isArray(a[0]))o=a[0],i=a[1];else for(p=0;p<a.length;p++)H.isPlainObject(a[p])?(o.push(a[p].value),i.push(a[p].label)):(o.push(a[p]),i.push(a[p]));for(var l=e.text.match(/_MENU_$/),s=e.text.match(/^_MENU_/),u=e.text.replace(/_MENU_/,""),e="<label>"+e.text+"</label>",s=(s?e="_MENU_<label>"+u+"</label>":l&&(e="<label>"+u+"</label>_MENU_"),"tmp-"+ +new Date),c=H("<div/>").addClass(t.container).append(e.replace("_MENU_",'<span id="'+s+'"></span>')),d=[],f=(Array.prototype.slice.call(c.find("label")[0].childNodes).forEach(function(e){e.nodeType===Node.TEXT_NODE&&d.push({el:e,text:e.textContent})}),function(t){d.forEach(function(e){e.el.textContent=it(r,e.text,t)})}),h=H("<select/>",{"aria-controls":n,class:t.select}),p=0;p<o.length;p++){var g=r.api.i18n("lengthLabels."+o[p],null);null===g&&(g="number"==typeof i[p]?r.fnFormatNumber(i[p]):i[p]),h[0][p]=new Option(g,o[p])}return c.find("label").attr("for","dt-length-"+$t),h.attr("id","dt-length-"+$t),$t++,c.find("#"+s).replaceWith(h),H("select",c).val(r._iDisplayLength).on("change.DT",function(){Ve(r,H(this).val()),x(r)}),H(r.nTable).on("length.dt.DT",function(e,t,n){r===t&&(H("select",c).val(n),f(n))}),f(r._iDisplayLength),c},"l"),((H.fn.dataTable=V).$=H).fn.dataTableSettings=V.settings,H.fn.dataTableExt=V.ext,H.fn.DataTable=function(e){return H(this).dataTable(e).api()},H.each(V,function(e,t){H.fn.DataTable[e]=t}),V});
17
42
18
/*! DataTables styling integration
43
/*! DataTables styling integration
19
 * © SpryMedia Ltd - datatables.net/license
44
 * © SpryMedia Ltd - datatables.net/license
20
 */
45
 */
21
!function(t){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t){"use strict";return e.fn.dataTable});
46
(t=>{var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"==typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)})(function(e,n,t){return e.fn.dataTable});
22
47
23
/*! Buttons for DataTables 3.2.5
48
/*! Buttons for DataTables 3.2.6
24
 * © SpryMedia Ltd - datatables.net/license
49
 * © SpryMedia Ltd - datatables.net/license
25
 */
50
 */
26
!function(e){var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,t,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)}(function(x,m,v){"use strict";var e=x.fn.dataTable,o=0,C=0,_=e.ext.buttons,i=null;function y(t,n,e){x.fn.animate?t.stop().fadeIn(n,e):(t.css("display","block"),e&&e.call(t))}function w(t,n,e){x.fn.animate?t.stop().fadeOut(n,e):(t.css("display","none"),e&&e.call(t))}function A(n,t){if(!e.versionCheck("2"))throw"Warning: Buttons requires DataTables 2 or newer";if(!(this instanceof A))return function(t){return new A(t,n).container()};!0===(t=void 0===t?{}:t)&&(t={}),Array.isArray(t)&&(t={buttons:t}),this.c=x.extend(!0,{},A.defaults,t),t.buttons&&(this.c.buttons=t.buttons),this.s={dt:new e.Api(n),buttons:[],listenKeys:"",namespace:"dtb"+o++},this.dom={container:x("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)},this._constructor()}x.extend(A.prototype,{action:function(t,n){t=this._nodeToButton(t);return void 0===n?t.conf.action:(t.conf.action=n,this)},active:function(t,n){var t=this._nodeToButton(t),e=this.c.dom.button.active,o=x(t.node);return t.inCollection&&this.c.dom.collection.button&&void 0!==this.c.dom.collection.button.active&&(e=this.c.dom.collection.button.active),void 0===n?o.hasClass(e):(o.toggleClass(e,void 0===n||n),this)},add:function(t,n,e){var o=this.s.buttons;if("string"==typeof n){for(var i=n.split("-"),s=this.s,r=0,a=i.length-1;r<a;r++)s=s.buttons[+i[r]];o=s.buttons,n=+i[i.length-1]}o=this._expandButton(o,t,void 0!==t?t.split:void 0,(void 0===t||void 0===t.split||0===t.split.length)&&void 0!==s,!1,n);return void 0!==e&&!0!==e||this._draw(),o},collectionRebuild:function(t,n){var e=this._nodeToButton(t);if(void 0!==n){for(var o=e.buttons.length-1;0<=o;o--)this.remove(e.buttons[o].node);for(e.conf.prefixButtons&&n.unshift.apply(n,e.conf.prefixButtons),e.conf.postfixButtons&&n.push.apply(n,e.conf.postfixButtons),o=0;o<n.length;o++){var i=n[o];this._expandButton(e.buttons,i,void 0!==i&&void 0!==i.config&&void 0!==i.config.split,!0,void 0!==i.parentConf&&void 0!==i.parentConf.split,null,i.parentConf)}}this._draw(e.collection,e.buttons)},container:function(){return this.dom.container},disable:function(t){t=this._nodeToButton(t);return(t.isSplit?x(t.node.childNodes[0]):x(t.node)).addClass(this.c.dom.button.disabled).prop("disabled",!0),t.disabled=!0,this._checkSplitEnable(),this},destroy:function(){x("body").off("keyup."+this.s.namespace);for(var t=this.s.buttons.slice(),n=0,e=t.length;n<e;n++)this.remove(t[n].node);this.dom.container.remove();var o=this.s.dt.settings()[0];for(n=0,e=o.length;n<e;n++)if(o.inst===this){o.splice(n,1);break}return this},enable:function(t,n){return!1===n?this.disable(t):(((n=this._nodeToButton(t)).isSplit?x(n.node.childNodes[0]):x(n.node)).removeClass(this.c.dom.button.disabled).prop("disabled",!1),n.disabled=!1,this._checkSplitEnable(),this)},index:function(t,n,e){n||(n="",e=this.s.buttons);for(var o=0,i=e.length;o<i;o++){var s=e[o].buttons;if(e[o].node===t)return n+o;if(s&&s.length){s=this.index(t,o+"-",s);if(null!==s)return s}}return null},name:function(){return this.c.name},node:function(t){return t?(t=this._nodeToButton(t),x(t.node)):this.dom.container},processing:function(t,n){var e=this.s.dt,o=this._nodeToButton(t);return void 0===n?x(o.node).hasClass("processing"):(x(o.node).toggleClass("processing",n),x(e.table().node()).triggerHandler("buttons-processing.dt",[n,e.button(t),e,x(t),o.conf]),this)},remove:function(t){var n=this._nodeToButton(t),e=this._nodeToHost(t),o=this.s.dt;if(n.buttons.length)for(var i=n.buttons.length-1;0<=i;i--)this.remove(n.buttons[i].node);n.conf.destroying=!0,n.conf.destroy&&n.conf.destroy.call(o.button(t),o,x(t),n.conf),this._removeKey(n.conf),x(n.node).remove(),n.inserter&&x(n.inserter).remove();o=x.inArray(n,e);return e.splice(o,1),this},text:function(t,n){function e(t){return"function"==typeof t?t(i,s,o.conf):t}var o=this._nodeToButton(t),t=o.textNode,i=this.s.dt,s=x(o.node);return void 0===n?e(o.conf.text):(o.conf.text=n,t.html(e(n)),this)},_constructor:function(){var e=this,t=this.s.dt,o=t.settings()[0],n=this.c.buttons;o._buttons||(o._buttons=[]),o._buttons.push({inst:this,name:this.c.name});for(var i=0,s=n.length;i<s;i++)this.add(n[i]);t.on("destroy",function(t,n){n===o&&e.destroy()}),x("body").on("keyup."+this.s.namespace,function(t){var n;v.activeElement&&v.activeElement!==v.body||(n=String.fromCharCode(t.keyCode).toLowerCase(),-1!==e.s.listenKeys.toLowerCase().indexOf(n)&&e._keypress(n,t))})},_addKey:function(t){t.key&&(this.s.listenKeys+=(x.isPlainObject(t.key)?t.key:t).key)},_draw:function(t,n){t||(t=this.dom.container,n=this.s.buttons),t.children().detach();for(var e=0,o=n.length;e<o;e++)t.append(n[e].inserter),t.append(" "),n[e].buttons&&n[e].buttons.length&&this._draw(n[e].collection,n[e].buttons)},_expandButton:function(t,n,e,o,i,s,r){for(var a,l,c=this.s.dt,u=this.c.dom.collection,d=Array.isArray(n)?n:[n],f=0,p=(d=void 0===n?Array.isArray(e)?e:[e]:d).length;f<p;f++){var h=this._resolveExtends(d[f]);if(h)if(a=!(!h.config||!h.config.split),Array.isArray(h))this._expandButton(t,h,void 0!==b&&void 0!==b.conf?b.conf.split:void 0,o,void 0!==r&&void 0!==r.split,s,r);else{var b=this._buildButton(h,o,void 0!==h.split||void 0!==h.config&&void 0!==h.config.split,i);if(b){if(null!=s?(t.splice(s,0,b),s++):t.push(b),b.conf.dropIcon&&!b.conf.split&&x(b.node).addClass(this.c.dom.button.dropClass).append(this.c.dom.button.dropHtml),b.conf.buttons&&(b.collection=x("<"+u.container.content.tag+"/>"),b.conf._collection=b.collection,this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)),b.conf.split){b.collection=x("<"+u.container.tag+"/>"),b.conf._collection=b.collection;for(var g=0;g<b.conf.split.length;g++){var m=b.conf.split[g];"object"==typeof m&&(m.parent=r,void 0===m.collectionLayout&&(m.collectionLayout=b.conf.collectionLayout),void 0===m.dropup&&(m.dropup=b.conf.dropup),void 0===m.fade)&&(m.fade=b.conf.fade)}this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)}b.conf.parent=r,h.init&&h.init.call(c.button(b.node),c,x(b.node),h),l=b.node}}}return l},_buildButton:function(n,t,e,o){function i(t){return"function"==typeof t?t(f,c,n):t}var s,r,a,l,c,u=this,d=this.c.dom,f=this.s.dt,p=!1,h=x.extend(!0,{},d.button);if(t&&e&&d.collection.split?x.extend(!0,h,d.collection.split.action):o||t?x.extend(!0,h,d.collection.button):e&&x.extend(!0,h,d.split.button),n.spacer)return d=x("<"+h.spacer.tag+"/>").addClass("dt-button-spacer "+n.style+" "+h.spacer.className).html(i(n.text)),{conf:n,node:d,nodeChild:null,inserter:d,buttons:[],inCollection:t,isSplit:e,collection:null,textNode:d};if(n.available&&!n.available(f,n)&&!n.html)return!1;n.html?c=x(n.html):(s=function(t,n,e,o,i){o.action.call(n.button(e),t,n,e,o,i),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o])},r=function(t,n,e,o){o.async?(u.processing(e[0],!0),setTimeout(function(){s(t,n,e,o,function(){u.processing(e[0],!1)})},o.async)):s(t,n,e,o,function(){})},d=n.tag||h.tag,a=void 0===n.clickBlurs||n.clickBlurs,c=x("<"+d+"/>").addClass(h.className).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(t){t.preventDefault(),!c.hasClass(h.disabled)&&n.action&&r(t,f,c,n),a&&c.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),!c.hasClass(h.disabled))&&n.action&&r(t,f,c,n)}),"a"===d.toLowerCase()&&c.attr("href","#"),"button"===d.toLowerCase()&&c.attr("type","button"),l=h.liner.tag?(d=h.liner.tag.toLowerCase(),l=x("<"+d+"/>").html(i(n.text)).addClass(h.liner.className),"a"===d&&l.attr("href","#"),"a"!==d&&"button"!==d||(l.attr("tabindex",this.s.dt.settings()[0].iTabIndex),p=!0),c.append(l),l):(c.html(i(n.text)),c),p||c.attr("tabindex",this.s.dt.settings()[0].iTabIndex),!1===n.enabled&&c.addClass(h.disabled),n.className&&c.addClass(n.className),n.titleAttr&&c.attr("title",i(n.titleAttr)),n.attr&&c.attr(n.attr),n.namespace||(n.namespace=".dt-button-"+C++),void 0!==n.config&&n.config.split&&(n.split=n.config.split));var b,g,m,v,d=this.c.dom.buttonContainer,p=d&&d.tag?x("<"+d.tag+"/>").addClass(d.className).append(c):c,y=(this._addKey(n),this.c.buttonCreated&&(p=this.c.buttonCreated(n,p)),e&&(y=(d=t?x.extend(!0,this.c.dom.split,this.c.dom.collection.split):this.c.dom.split).wrapper,b=x("<"+y.tag+"/>").addClass(y.className).append(c),g=x.extend(n,{autoClose:!0,align:d.dropdown.align,attr:{"aria-haspopup":"dialog","aria-expanded":!1},className:d.dropdown.className,closeButton:!1,splitAlignClass:d.dropdown.splitAlignClass,text:d.dropdown.text}),this._addKey(g),m=function(t,n,e,o){_.split.action.call(n.button(b),t,n,e,o),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o]),e.attr("aria-expanded",!0)},v=x('<button class="'+d.dropdown.className+' dt-button"></button>').html(this.c.dom.button.dropHtml).addClass(this.c.dom.button.dropClass).on("click.dtb",function(t){t.preventDefault(),t.stopPropagation(),v.hasClass(h.disabled)||m(t,f,v,g),a&&v.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),v.hasClass(h.disabled)||m(t,f,v,g))}),0===n.split.length&&v.addClass("dtb-hide-drop"),b.append(v).attr(g.attr)),(e?b:c).get(0));return{conf:n,node:y,nodeChild:y&&y.children&&y.children.length?y.children[0]:null,inserter:e?b:p,buttons:[],inCollection:t,isSplit:e,inSplit:o,collection:null,textNode:l}},_checkSplitEnable:function(t){t=t||this.s.buttons;for(var n=0;n<t.length;n++){var e,o=t[n];o.isSplit?(e=o.node.childNodes[1],(this._checkAnyEnabled(o.buttons)?x(e).removeClass(this.c.dom.button.disabled):x(e).addClass(this.c.dom.button.disabled)).prop("disabled",!1)):o.isCollection&&this._checkSplitEnable(o.buttons)}},_checkAnyEnabled:function(t){for(var n=0;n<t.length;n++)if(!t[n].disabled)return!0;return!1},_nodeToButton:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t||n[e].nodeChild===t)return n[e];if(n[e].buttons.length){var i=this._nodeToButton(t,n[e].buttons);if(i)return i}}},_nodeToHost:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n;if(n[e].buttons.length){var i=this._nodeToHost(t,n[e].buttons);if(i)return i}}},_keypress:function(s,r){var a;r._buttonsHandled||(a=function(t){for(var n,e,o=0,i=t.length;o<i;o++)n=t[o].conf,e=t[o].node,!n.key||n.key!==s&&(!x.isPlainObject(n.key)||n.key.key!==s||n.key.shiftKey&&!r.shiftKey||n.key.altKey&&!r.altKey||n.key.ctrlKey&&!r.ctrlKey||n.key.metaKey&&!r.metaKey)||(r._buttonsHandled=!0,x(e).click()),t[o].buttons.length&&a(t[o].buttons)})(this.s.buttons)},_removeKey:function(t){var n;t.key&&(t=(x.isPlainObject(t.key)?t.key:t).key,n=this.s.listenKeys.split(""),t=x.inArray(t,n),n.splice(t,1),this.s.listenKeys=n.join(""))},_resolveExtends:function(e){function t(t){for(var n=0;!x.isPlainObject(t)&&!Array.isArray(t);){if(void 0===t)return;if("function"==typeof t){if(!(t=t.call(i,s,e)))return!1}else if("string"==typeof t){if(!_[t])return{html:t};t=_[t]}if(30<++n)throw"Buttons: Too many iterations"}return Array.isArray(t)?t:x.extend({},t)}var n,o,i=this,s=this.s.dt;for(e=t(e);e&&e.extend;){if(!_[e.extend])throw"Cannot extend unknown button type: "+e.extend;var r=t(_[e.extend]);if(Array.isArray(r))return r;if(!r)return!1;var a=r.className;void 0!==e.config&&void 0!==r.config&&(e.config=x.extend({},r.config,e.config)),e=x.extend({},r,e),a&&e.className!==a&&(e.className=a+" "+e.className),e.extend=r.extend}var l=e.postfixButtons;if(l)for(e.buttons||(e.buttons=[]),n=0,o=l.length;n<o;n++)e.buttons.push(l[n]);var c=e.prefixButtons;if(c)for(e.buttons||(e.buttons=[]),n=0,o=c.length;n<o;n++)e.buttons.splice(n,0,c[n]);return e},_popover:function(o,t,n){function i(){p=!0,w(x(b),h.fade,function(){x(this).detach()}),x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()).attr("aria-expanded","false"),x("div.dt-button-background").off("click.dtb-collection"),A.background(!1,h.backgroundClassName,h.fade,g),x(m).off("resize.resize.dtb-collection"),x("body").off(".dtb-collection"),d.off("buttons-action.b-internal"),d.off("destroy"),x("body").trigger("buttons-popover-hide.dt")}var e,s,r,a,l,c,u,d=t,f=this.c,p=!1,h=x.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",closeButton:!0,containerClassName:f.dom.collection.container.className,contentClassName:f.dom.collection.container.content.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,popoverTitle:"",rightAlignClassName:"dt-button-right",tag:f.dom.collection.container.tag},n),b=h.tag+"."+h.containerClassName.replace(/ /g,"."),f=t.node(),g=h.collectionLayout.includes("fixed")?x("body"):t.node();!1===o?i():((n=x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes())).length&&(g.closest(b).length&&(g=n.eq(0)),i()),h.sort&&((n=x("button",o).map(function(t,n){return{text:x(n).text(),el:n}}).toArray()).sort(function(t,n){return t.text.localeCompare(n.text)}),x(o).append(n.map(function(t){return t.el}))),n=x(".dt-button",o).length,a="",3===n?a="dtb-b3":2===n?a="dtb-b2":1===n&&(a="dtb-b1"),e=x("<"+h.tag+"/>").addClass(h.containerClassName).addClass(h.collectionLayout).addClass(h.splitAlignClass).addClass(a).css("display","none").attr({"aria-modal":!0,role:"dialog"}),o=x(o).addClass(h.contentClassName).attr("role","menu").appendTo(e),f.attr("aria-expanded","true"),g.parents("body")[0]!==v.body&&(g=x(v.body).children("div, section, p").last()),h.popoverTitle?e.prepend('<div class="dt-button-collection-title">'+h.popoverTitle+"</div>"):h.collectionTitle&&e.prepend('<div class="dt-button-collection-title">'+h.collectionTitle+"</div>"),h.closeButton&&e.prepend('<div class="dtb-popover-close">&times;</div>').addClass("dtb-collection-closeable"),y(e.insertAfter(g),h.fade),n=x(t.table().container()),a=e.css("position"),"container"!==h.span&&"dt-container"!==h.align||(g=g.parent(),e.css("width",n.width())),"absolute"===a?(f=x(g[0].offsetParent),t=g.position(),n=g.offset(),a=f.offset(),s=f.position(),r=m.getComputedStyle(f[0]),a.height=f.outerHeight(),a.width=f.width()+parseFloat(r.paddingLeft),a.right=a.left+a.width,a.bottom=a.top+a.height,a=t.top+g.outerHeight(),l=t.left,e.css({top:a,left:l}),r=m.getComputedStyle(e[0]),(c=e.offset()).height=e.outerHeight(),c.width=e.outerWidth(),c.right=c.left+c.width,c.bottom=c.top+c.height,c.marginTop=parseFloat(r.marginTop),c.marginBottom=parseFloat(r.marginBottom),h.dropup&&(a=t.top-c.height-c.marginTop-c.marginBottom),"button-right"!==h.align&&!e.hasClass(h.rightAlignClassName)||(l=t.left-c.width+g.outerWidth()),"dt-container"!==h.align&&"container"!==h.align||l<t.left&&(l=-t.left),s.left+l+c.width>x(m).width()&&(l=x(m).width()-c.width-s.left),n.left+l<0&&(l=-n.left),s.top+a+c.height>x(m).height()+x(m).scrollTop()&&(a=t.top-c.height-c.marginTop-c.marginBottom),f.offset().top+a<x(m).scrollTop()&&(a=t.top+g.outerHeight()),e.css({top:a,left:l})):((u=function(){var t=x(m).height()/2,n=e.height()/2;e.css("marginTop",-1*(n=t<n?t:n))})(),x(m).on("resize.dtb-collection",function(){u()})),h.background&&A.background(!0,h.backgroundClassName,h.fade,h.backgroundHost||g),x("div.dt-button-background").on("click.dtb-collection",function(){}),h.autoClose&&setTimeout(function(){d.on("buttons-action.b-internal",function(t,n,e,o){o[0]!==g[0]&&i()})},0),x(e).trigger("buttons-popover.dt"),d.on("destroy",i),setTimeout(function(){p=!1,x("body").on("click.dtb-collection",function(t){var n,e;!p&&(n=x.fn.addBack?"addBack":"andSelf",e=x(t.target).parent()[0],!x(t.target).parents()[n]().filter(o).length&&!x(e).hasClass("dt-buttons")||x(t.target).hasClass("dt-button-background"))&&i()}).on("keyup.dtb-collection",function(t){27===t.keyCode&&i()}).on("keydown.dtb-collection",function(t){var n=x("a, button",o),e=v.activeElement;9===t.keyCode&&(-1===n.index(e)?(n.first().focus(),t.preventDefault()):t.shiftKey?e===n[0]&&(n.last().focus(),t.preventDefault()):e===n.last()[0]&&(n.first().focus(),t.preventDefault()))})},0))}}),A.background=function(t,n,e,o){void 0===e&&(e=400),o=o||v.body,t?y(x("<div/>").addClass(n).css("display","none").insertAfter(o),e):w(x("div."+n),e,function(){x(this).removeClass(n).remove()})},A.instanceSelector=function(t,s){var r,a,l;return null==t?x.map(s,function(t){return t.inst}):(r=[],a=x.map(s,function(t){return t.name}),(l=function(t){var n;if(Array.isArray(t))for(var e=0,o=t.length;e<o;e++)l(t[e]);else if("string"==typeof t)-1!==t.indexOf(",")?l(t.split(",")):-1!==(n=x.inArray(t.trim(),a))&&r.push(s[n].inst);else if("number"==typeof t)r.push(s[t].inst);else if("object"==typeof t&&t.nodeName)for(var i=0;i<s.length;i++)s[i].inst.dom.container[0]===t&&r.push(s[i].inst);else"object"==typeof t&&r.push(t)})(t),r)},A.buttonSelector=function(t,n){for(var c=[],u=function(t,n,e){for(var o,i,s=0,r=n.length;s<r;s++)(o=n[s])&&(t.push({node:o.node,name:o.conf.name,idx:i=void 0!==e?e+s:s+""}),o.buttons)&&u(t,o.buttons,i+"-")},d=function(t,n){var e=[],o=(u(e,n.s.buttons),x.map(e,function(t){return t.node}));if(Array.isArray(t)||t instanceof x)for(s=0,r=t.length;s<r;s++)d(t[s],n);else if(null==t||"*"===t)for(s=0,r=e.length;s<r;s++)c.push({inst:n,node:e[s].node});else if("number"==typeof t)n.s.buttons[t]&&c.push({inst:n,node:n.s.buttons[t].node});else if("string"==typeof t)if(-1!==t.indexOf(","))for(var i=t.split(","),s=0,r=i.length;s<r;s++)d(i[s].trim(),n);else if(t.match(/^\d+(\-\d+)*$/)){var a=x.map(e,function(t){return t.idx});c.push({inst:n,node:e[x.inArray(t,a)].node})}else if(-1!==t.indexOf(":name")){var l=t.replace(":name","");for(s=0,r=e.length;s<r;s++)e[s].name===l&&c.push({inst:n,node:e[s].node})}else x(o).filter(t).each(function(){c.push({inst:n,node:this})});else"object"==typeof t&&t.nodeName&&-1!==(a=x.inArray(t,o))&&c.push({inst:n,node:o[a]})},e=0,o=t.length;e<o;e++){var i=t[e];d(n,i)}return c},A.stripData=function(t,n){return t="string"==typeof(t=null!==t&&"object"==typeof t&&t.nodeName&&t.nodeType?t.innerHTML:t)&&(t=A.stripHtmlScript(t),t=A.stripHtmlComments(t),n&&!n.stripHtml||(t=e.util.stripHtml(t)),n&&!n.trim||(t=t.trim()),n&&!n.stripNewlines||(t=t.replace(/\n/g," ")),n&&!n.decodeEntities||(t=i?i(t):(c.innerHTML=t,c.value)),!n||n.escapeExcelFormula)&&t.match(/^[=@\t\r]/)?"'"+t:t},A.entityDecoder=function(t){i=t},A.stripHtmlComments=function(t){for(var n;(t=(n=t).replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g,""))!==n;);return t},A.stripHtmlScript=function(t){for(var n;(t=(n=t).replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi,""))!==n;);return t},A.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{container:{className:"dt-button-collection",content:{className:"",tag:"div"},tag:"div"}},button:{tag:"button",className:"dt-button",active:"dt-button-active",disabled:"disabled",spacer:{className:"dt-button-spacer",tag:"span"},liner:{tag:"span",className:""},dropClass:"",dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>'},split:{action:{className:"dt-button-split-drop-button dt-button",tag:"button"},dropdown:{align:"split-right",className:"dt-button-split-drop",splitAlignClass:"dt-button-split-left",tag:"button"},wrapper:{className:"dt-button-split",tag:"div"}}}},x.extend(_,{collection:{text:function(t){return t.i18n("buttons.collection","Collection")},className:"buttons-collection",closeButton:!(A.version="3.2.5"),dropIcon:!0,init:function(t,n){n.attr("aria-expanded",!1)},action:function(t,n,e,o){o._collection.parents("body").length?this.popover(!1,o):this.popover(o._collection,o),"keypress"===t.type&&x("a, button",o._collection).eq(0).focus()},attr:{"aria-haspopup":"dialog"}},split:{text:function(t){return t.i18n("buttons.split","Split")},className:"buttons-split",closeButton:!1,init:function(t,n){return n.attr("aria-expanded",!1)},action:function(t,n,e,o){this.popover(o._collection,o)},attr:{"aria-haspopup":"dialog"}},copy:function(){if(_.copyHtml5)return"copyHtml5"},csv:function(t,n){if(_.csvHtml5&&_.csvHtml5.available(t,n))return"csvHtml5"},excel:function(t,n){if(_.excelHtml5&&_.excelHtml5.available(t,n))return"excelHtml5"},pdf:function(t,n){if(_.pdfHtml5&&_.pdfHtml5.available(t,n))return"pdfHtml5"},pageLength:function(t){var n=t.settings()[0].aLengthMenu,e=[],o=[];if(Array.isArray(n[0]))e=n[0],o=n[1];else for(var i=0;i<n.length;i++){var s=n[i];x.isPlainObject(s)?(e.push(s.value),o.push(s.label)):(e.push(s),o.push(s))}return{extend:"collection",text:function(t){return t.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},t.page.len())},className:"buttons-page-length",autoClose:!0,buttons:x.map(e,function(s,t){return{text:o[t],className:"button-page-length",action:function(t,n){n.page.len(s).draw()},init:function(t,n,e){function o(){i.active(t.page.len()===s)}var i=this;t.on("length.dt"+e.namespace,o),o()},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}}),init:function(t,n,e){var o=this;t.on("length.dt"+e.namespace,function(){o.text(e.text)})},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}},spacer:{style:"empty",spacer:!0,text:function(t){return t.i18n("buttons.spacer","")}}}),e.Api.register("buttons()",function(n,e){void 0===e&&(e=n,n=void 0),this.selector.buttonGroup=n;var t=this.iterator(!0,"table",function(t){if(t._buttons)return A.buttonSelector(A.instanceSelector(n,t._buttons),e)},!0);return t._groupSelector=n,t}),e.Api.register("button()",function(t,n){t=this.buttons(t,n);return 1<t.length&&t.splice(1,t.length),t}),e.Api.registerPlural("buttons().active()","button().active()",function(n){return void 0===n?this.map(function(t){return t.inst.active(t.node)}):this.each(function(t){t.inst.active(t.node,n)})}),e.Api.registerPlural("buttons().action()","button().action()",function(n){return void 0===n?this.map(function(t){return t.inst.action(t.node)}):this.each(function(t){t.inst.action(t.node,n)})}),e.Api.registerPlural("buttons().collectionRebuild()","button().collectionRebuild()",function(e){return this.each(function(t){for(var n=0;n<e.length;n++)"object"==typeof e[n]&&(e[n].parentConf=t);t.inst.collectionRebuild(t.node,e)})}),e.Api.register(["buttons().enable()","button().enable()"],function(n){return this.each(function(t){t.inst.enable(t.node,n)})}),e.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(t){t.inst.disable(t.node)})}),e.Api.register("button().index()",function(){var n=null;return this.each(function(t){t=t.inst.index(t.node);null!==t&&(n=t)}),n}),e.Api.registerPlural("buttons().nodes()","button().node()",function(){var n=x();return x(this.each(function(t){n=n.add(t.inst.node(t.node))})),n}),e.Api.registerPlural("buttons().processing()","button().processing()",function(n){return void 0===n?this.map(function(t){return t.inst.processing(t.node)}):this.each(function(t){t.inst.processing(t.node,n)})}),e.Api.registerPlural("buttons().text()","button().text()",function(n){return void 0===n?this.map(function(t){return t.inst.text(t.node)}):this.each(function(t){t.inst.text(t.node,n)})}),e.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(t){t.inst.node(t.node).trigger("click")})}),e.Api.register("button().popover()",function(n,e){return this.map(function(t){return t.inst._popover(n,this.button(this[0].node),e)})}),e.Api.register("buttons().containers()",function(){var i=x(),s=this._groupSelector;return this.iterator(!0,"table",function(t){if(t._buttons)for(var n=A.instanceSelector(s,t._buttons),e=0,o=n.length;e<o;e++)i=i.add(n[e].container())}),i}),e.Api.register("buttons().container()",function(){return this.containers().eq(0)}),e.Api.register("button().add()",function(t,n,e){var o,i=this.context;return(o=i.length&&(i=A.instanceSelector(this._groupSelector,i[0]._buttons)).length?i[0].add(n,t,e):o)?this.button(this._groupSelector,o):this}),e.Api.register("buttons().destroy()",function(){return this.pluck("inst").unique().each(function(t){t.destroy()}),this}),e.Api.registerPlural("buttons().remove()","buttons().remove()",function(){return this.each(function(t){t.inst.remove(t.node)}),this}),e.Api.register("buttons.info()",function(t,n,e){var o=this;return!1===t?(this.off("destroy.btn-info"),w(x("#datatables_buttons_info"),400,function(){x(this).remove()}),clearTimeout(s),s=null):(s&&clearTimeout(s),x("#datatables_buttons_info").length&&x("#datatables_buttons_info").remove(),t=t?"<h2>"+t+"</h2>":"",y(x('<div id="datatables_buttons_info" class="dt-button-info"/>').html(t).append(x("<div/>")["string"==typeof n?"html":"append"](n)).css("display","none").appendTo("body")),void 0!==e&&0!==e&&(s=setTimeout(function(){o.buttons.info(!1)},e)),this.on("destroy.btn-info",function(){o.buttons.info(!1)})),this}),e.Api.register("buttons.exportData()",function(t){if(this.context.length)return u(new e.Api(this.context[0]),t)}),e.Api.register("buttons.exportInfo()",function(t){return{filename:n(t=t||{},this),title:a(t,this),messageTop:l(this,t,t.message||t.messageTop,"top"),messageBottom:l(this,t,t.messageBottom,"bottom")}});var s,n=function(t,n){var e;return null==(e="function"==typeof(e="*"===t.filename&&"*"!==t.title&&void 0!==t.title&&null!==t.title&&""!==t.title?t.title:t.filename)?e(t,n):e)?null:(e=(e=-1!==e.indexOf("*")?e.replace(/\*/g,x("head > title").text()).trim():e).replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""))+(r(t.extension,t,n)||"")},r=function(t,n,e){return null==t?null:"function"==typeof t?t(n,e):t},a=function(t,n){t=r(t.title,t,n);return null===t?null:-1!==t.indexOf("*")?t.replace(/\*/g,x("head > title").text()||"Exported data"):t},l=function(t,n,e,o){e=r(e,n,t);return null===e?null:(n=x("caption",t.table().container()).eq(0),"*"===e?n.css("caption-side")!==o?null:n.length?n.text():"":e)},c=x("<textarea/>")[0],u=function(i,t){for(var s=x.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,escapeExcelFormula:!1,trim:!0,format:{header:function(t){return A.stripData(t,s)},footer:function(t){return A.stripData(t,s)},body:function(t){return A.stripData(t,s)}},customizeData:null,customizeZip:null},t),t=i.columns(s.columns).indexes().map(function(t){var n=i.column(t);return s.format.header(n.title(),t,n.header())}).toArray(),n=i.table().footer()?i.columns(s.columns).indexes().map(function(t){var n,e=i.column(t).footer(),o="";return e&&(o=((n=x(".dt-column-title",e)).length?n:x(e)).html()),s.format.footer(o,t,e)}).toArray():null,e=x.extend({},s.modifier),o=(i.select&&"function"==typeof i.select.info&&void 0===e.selected&&i.rows(s.rows,x.extend({selected:!0},e)).any()&&x.extend(e,{selected:!0}),i.rows(s.rows,e).indexes().toArray()),o=i.cells(o,s.columns,{order:e.order}),r=o.render(s.orthogonal).toArray(),a=o.nodes().toArray(),l=o.indexes().toArray(),c=i.columns(s.columns).count(),u=[],d=0,f=0,p=0<c?r.length/c:0;f<p;f++){for(var h=[c],b=0;b<c;b++)h[b]=s.format.body(r[d],l[d].row,l[d].column,a[d]),d++;u[f]=h}e={header:t,headerStructure:g(s.format.header,i.table().header.structure(s.columns)),footer:n,footerStructure:g(s.format.footer,i.table().footer.structure(s.columns)),body:u};return s.customizeData&&s.customizeData(e),e};function g(t,n){for(var e=0;e<n.length;e++)for(var o=0;o<n[e].length;o++){var i=n[e][o];i&&(i.title=t(i.title,o,i.cell))}return n}function t(t,n){t=new e.Api(t),n=n||t.init().buttons||e.defaults.buttons;return new A(t,n).container()}return x.fn.dataTable.Buttons=A,x.fn.DataTable.Buttons=A,x(v).on("init.dt plugin-init.dt",function(t,n){"dt"===t.namespace&&(t=n.oInit.buttons||e.defaults.buttons)&&!n._buttons&&new A(n,t).container()}),e.ext.feature.push({fnInit:t,cFeature:"B"}),e.feature&&e.feature.register("buttons",t),e});
51
(e=>{var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,t,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)})(function(x,m,v){var e=x.fn.dataTable,o=0,C=0,_=e.ext.buttons,i=null;function y(t,n,e){x.fn.animate?t.stop().fadeIn(n,e):(t.css("display","block"),e&&e.call(t))}function w(t,n,e){x.fn.animate?t.stop().fadeOut(n,e):(t.css("display","none"),e&&e.call(t))}function A(n,t){if(!e.versionCheck("2"))throw"Warning: Buttons requires DataTables 2 or newer";if(!(this instanceof A))return function(t){return new A(t,n).container()};!0===(t=void 0===t?{}:t)&&(t={}),Array.isArray(t)&&(t={buttons:t}),this.c=x.extend(!0,{},A.defaults,t),t.buttons&&(this.c.buttons=t.buttons),this.s={dt:new e.Api(n),buttons:[],listenKeys:"",namespace:"dtb"+o++},this.dom={container:x("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)},this._constructor()}x.extend(A.prototype,{action:function(t,n){t=this._nodeToButton(t);return void 0===n?t.conf.action:(t.conf.action=n,this)},active:function(t,n){var t=this._nodeToButton(t),e=this.c.dom.button.active,o=x(t.node);return t.inCollection&&this.c.dom.collection.button&&void 0!==this.c.dom.collection.button.active&&(e=this.c.dom.collection.button.active),void 0===n?o.hasClass(e):(o.toggleClass(e,void 0===n||n),this)},add:function(t,n,e){var o=this.s.buttons;if("string"==typeof n){for(var i=n.split("-"),s=this.s,r=0,a=i.length-1;r<a;r++)s=s.buttons[+i[r]];o=s.buttons,n=+i[i.length-1]}o=this._expandButton(o,t,void 0!==t?t.split:void 0,(void 0===t||void 0===t.split||0===t.split.length)&&void 0!==s,!1,n);return void 0!==e&&!0!==e||this._draw(),o},collectionRebuild:function(t,n){var e=this._nodeToButton(t);if(void 0!==n){for(var o=e.buttons.length-1;0<=o;o--)this.remove(e.buttons[o].node);for(e.conf.prefixButtons&&n.unshift.apply(n,e.conf.prefixButtons),e.conf.postfixButtons&&n.push.apply(n,e.conf.postfixButtons),o=0;o<n.length;o++){var i=n[o];this._expandButton(e.buttons,i,void 0!==i&&void 0!==i.config&&void 0!==i.config.split,!0,void 0!==i.parentConf&&void 0!==i.parentConf.split,null,i.parentConf)}}this._draw(e.collection,e.buttons)},container:function(){return this.dom.container},disable:function(t){t=this._nodeToButton(t);return(t.isSplit?x(t.node.childNodes[0]):x(t.node)).addClass(this.c.dom.button.disabled).prop("disabled",!0),t.disabled=!0,this._checkSplitEnable(),this},destroy:function(){x("body").off("keyup."+this.s.namespace);for(var t=this.s.buttons.slice(),n=0,e=t.length;n<e;n++)this.remove(t[n].node);this.dom.container.remove();var o=this.s.dt.settings()[0];for(n=0,e=o.length;n<e;n++)if(o.inst===this){o.splice(n,1);break}return this},enable:function(t,n){return!1===n?this.disable(t):(((n=this._nodeToButton(t)).isSplit?x(n.node.childNodes[0]):x(n.node)).removeClass(this.c.dom.button.disabled).prop("disabled",!1),n.disabled=!1,this._checkSplitEnable(),this)},index:function(t,n,e){n||(n="",e=this.s.buttons);for(var o=0,i=e.length;o<i;o++){var s=e[o].buttons;if(e[o].node===t)return n+o;if(s&&s.length){s=this.index(t,o+"-",s);if(null!==s)return s}}return null},name:function(){return this.c.name},node:function(t){return t?(t=this._nodeToButton(t),x(t.node)):this.dom.container},processing:function(t,n){var e=this.s.dt,o=this._nodeToButton(t);return void 0===n?x(o.node).hasClass("processing"):(x(o.node).toggleClass("processing",n),x(e.table().node()).triggerHandler("buttons-processing.dt",[n,e.button(t),e,x(t),o.conf]),this)},remove:function(t){var n=this._nodeToButton(t),e=this._nodeToHost(t),o=this.s.dt;if(n.buttons.length)for(var i=n.buttons.length-1;0<=i;i--)this.remove(n.buttons[i].node);n.conf.destroying=!0,n.conf.destroy&&n.conf.destroy.call(o.button(t),o,x(t),n.conf),this._removeKey(n.conf),x(n.node).remove(),n.inserter&&x(n.inserter).remove();o=x.inArray(n,e);return e.splice(o,1),this},text:function(t,n){function e(t){return"function"==typeof t?t(i,s,o.conf):t}var o=this._nodeToButton(t),t=o.textNode,i=this.s.dt,s=x(o.node);return void 0===n?e(o.conf.text):(o.conf.text=n,t.html(e(n)),this)},_constructor:function(){var e=this,t=this.s.dt,o=t.settings()[0],n=this.c.buttons;o._buttons||(o._buttons=[]),o._buttons.push({inst:this,name:this.c.name});for(var i=0,s=n.length;i<s;i++)this.add(n[i]);t.on("destroy",function(t,n){n===o&&e.destroy()}),x("body").on("keyup."+this.s.namespace,function(t){var n;v.activeElement&&v.activeElement!==v.body||(n=String.fromCharCode(t.keyCode).toLowerCase(),-1!==e.s.listenKeys.toLowerCase().indexOf(n)&&e._keypress(n,t))})},_addKey:function(t){t.key&&(this.s.listenKeys+=(x.isPlainObject(t.key)?t.key:t).key)},_draw:function(t,n){t||(t=this.dom.container,n=this.s.buttons),t.children().detach();for(var e=0,o=n.length;e<o;e++)t.append(n[e].inserter),t.append(" "),n[e].buttons&&n[e].buttons.length&&this._draw(n[e].collection,n[e].buttons)},_expandButton:function(t,n,e,o,i,s,r){for(var a,l,c=this.s.dt,u=this.c.dom.collection,d=Array.isArray(n)?n:[n],f=0,p=(d=void 0===n?Array.isArray(e)?e:[e]:d).length;f<p;f++){var h=this._resolveExtends(d[f]);if(h)if(a=!(!h.config||!h.config.split),Array.isArray(h))this._expandButton(t,h,void 0!==b&&void 0!==b.conf?b.conf.split:void 0,o,void 0!==r&&void 0!==r.split,s,r);else{var b=this._buildButton(h,o,void 0!==h.split||void 0!==h.config&&void 0!==h.config.split,i);if(b){if(null!=s?(t.splice(s,0,b),s++):t.push(b),b.conf.dropIcon&&!b.conf.split&&x(b.node).addClass(this.c.dom.button.dropClass).append(this.c.dom.button.dropHtml),b.conf.buttons&&(b.collection=x("<"+u.container.content.tag+"/>"),b.conf._collection=b.collection,this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)),b.conf.split){b.collection=x("<"+u.container.tag+"/>"),b.conf._collection=b.collection;for(var g=0;g<b.conf.split.length;g++){var m=b.conf.split[g];"object"==typeof m&&(m.parent=r,void 0===m.collectionLayout&&(m.collectionLayout=b.conf.collectionLayout),void 0===m.dropup&&(m.dropup=b.conf.dropup),void 0===m.fade)&&(m.fade=b.conf.fade)}this._expandButton(b.buttons,b.conf.buttons,b.conf.split,!a,a,s,b.conf)}b.conf.parent=r,h.init&&h.init.call(c.button(b.node),c,x(b.node),h),l=b.node}}}return l},_buildButton:function(n,t,e,o){function i(t){return"function"==typeof t?t(f,c,n):t}var s,r,a,l,c,u=this,d=this.c.dom,f=this.s.dt,p=!1,h=x.extend(!0,{},d.button);if(t&&e&&d.collection.split?x.extend(!0,h,d.collection.split.action):o||t?x.extend(!0,h,d.collection.button):e&&x.extend(!0,h,d.split.button),n.spacer)return d=x("<"+h.spacer.tag+"/>").addClass("dt-button-spacer "+n.style+" "+h.spacer.className).html(i(n.text)),{conf:n,node:d,nodeChild:null,inserter:d,buttons:[],inCollection:t,isSplit:e,collection:null,textNode:d};if(n.available&&!n.available(f,n)&&!n.html)return!1;n.html?c=x(n.html):(s=function(t,n,e,o,i){o.action.call(n.button(e),t,n,e,o,i),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o])},r=function(t,n,e,o){o.async?(u.processing(e[0],!0),setTimeout(function(){s(t,n,e,o,function(){u.processing(e[0],!1)})},o.async)):s(t,n,e,o,function(){})},d=n.tag||h.tag,a=void 0===n.clickBlurs||n.clickBlurs,c=x("<"+d+"/>").addClass(h.className).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(t){t.preventDefault(),!c.hasClass(h.disabled)&&n.action&&r(t,f,c,n),a&&c.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),!c.hasClass(h.disabled))&&n.action&&r(t,f,c,n)}),"a"===d.toLowerCase()&&c.attr("href","#"),"button"===d.toLowerCase()&&c.attr("type","button"),l=h.liner.tag?(d=h.liner.tag.toLowerCase(),l=x("<"+d+"/>").html(i(n.text)).addClass(h.liner.className),"a"===d&&l.attr("href","#"),"a"!==d&&"button"!==d||(l.attr("tabindex",this.s.dt.settings()[0].iTabIndex),p=!0),c.append(l),l):(c.html(i(n.text)),c),p||c.attr("tabindex",this.s.dt.settings()[0].iTabIndex),!1===n.enabled&&c.addClass(h.disabled),n.className&&c.addClass(n.className),n.titleAttr&&c.attr("title",i(n.titleAttr)),n.attr&&c.attr(n.attr),n.namespace||(n.namespace=".dt-button-"+C++),void 0!==n.config&&n.config.split&&(n.split=n.config.split));var b,g,m,v,d=this.c.dom.buttonContainer,p=d&&d.tag?x("<"+d.tag+"/>").addClass(d.className).append(c):c,y=(this._addKey(n),this.c.buttonCreated&&(p=this.c.buttonCreated(n,p)),e&&(y=(d=t?x.extend(!0,this.c.dom.split,this.c.dom.collection.split):this.c.dom.split).wrapper,b=x("<"+y.tag+"/>").addClass(y.className).append(c),g=x.extend(n,{autoClose:!0,align:d.dropdown.align,attr:{"aria-haspopup":"dialog","aria-expanded":!1},className:d.dropdown.className,closeButton:!1,splitAlignClass:d.dropdown.splitAlignClass,text:d.dropdown.text}),this._addKey(g),m=function(t,n,e,o){_.split.action.call(n.button(b),t,n,e,o),x(n.table().node()).triggerHandler("buttons-action.dt",[n.button(e),n,e,o]),e.attr("aria-expanded",!0)},v=x('<button class="'+d.dropdown.className+' dt-button"></button>').html(this.c.dom.button.dropHtml).addClass(this.c.dom.button.dropClass).on("click.dtb",function(t){t.preventDefault(),t.stopPropagation(),v.hasClass(h.disabled)||m(t,f,v,g),a&&v.trigger("blur")}).on("keypress.dtb",function(t){13===t.keyCode&&(t.preventDefault(),v.hasClass(h.disabled)||m(t,f,v,g))}),0===n.split.length&&v.addClass("dtb-hide-drop"),b.append(v).attr(g.attr)),(e?b:c).get(0));return{conf:n,node:y,nodeChild:y&&y.children&&y.children.length?y.children[0]:null,inserter:e?b:p,buttons:[],inCollection:t,isSplit:e,inSplit:o,collection:null,textNode:l}},_checkSplitEnable:function(t){t=t||this.s.buttons;for(var n=0;n<t.length;n++){var e,o=t[n];o.isSplit?(e=o.node.childNodes[1],(this._checkAnyEnabled(o.buttons)?x(e).removeClass(this.c.dom.button.disabled):x(e).addClass(this.c.dom.button.disabled)).prop("disabled",!1)):o.isCollection&&this._checkSplitEnable(o.buttons)}},_checkAnyEnabled:function(t){for(var n=0;n<t.length;n++)if(!t[n].disabled)return!0;return!1},_nodeToButton:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t||n[e].nodeChild===t)return n[e];if(n[e].buttons.length){var i=this._nodeToButton(t,n[e].buttons);if(i)return i}}},_nodeToHost:function(t,n){for(var e=0,o=(n=n||this.s.buttons).length;e<o;e++){if(n[e].node===t)return n;if(n[e].buttons.length){var i=this._nodeToHost(t,n[e].buttons);if(i)return i}}},_keypress:function(s,r){var a;r._buttonsHandled||(a=function(t){for(var n,e,o=0,i=t.length;o<i;o++)n=t[o].conf,e=t[o].node,!n.key||n.key!==s&&(!x.isPlainObject(n.key)||n.key.key!==s||n.key.shiftKey&&!r.shiftKey||n.key.altKey&&!r.altKey||n.key.ctrlKey&&!r.ctrlKey||n.key.metaKey&&!r.metaKey)||(r._buttonsHandled=!0,x(e).click()),t[o].buttons.length&&a(t[o].buttons)})(this.s.buttons)},_removeKey:function(t){var n;t.key&&(t=(x.isPlainObject(t.key)?t.key:t).key,n=this.s.listenKeys.split(""),t=x.inArray(t,n),n.splice(t,1),this.s.listenKeys=n.join(""))},_resolveExtends:function(e){function t(t){for(var n=0;!x.isPlainObject(t)&&!Array.isArray(t);){if(void 0===t)return;if("function"==typeof t){if(!(t=t.call(i,s,e)))return!1}else if("string"==typeof t){if(!_[t])return{html:t};t=_[t]}if(30<++n)throw"Buttons: Too many iterations"}return Array.isArray(t)?t:x.extend({},t)}var n,o,i=this,s=this.s.dt;for(e=t(e);e&&e.extend;){if(!_[e.extend])throw"Cannot extend unknown button type: "+e.extend;var r=t(_[e.extend]);if(Array.isArray(r))return r;if(!r)return!1;var a=r.className;void 0!==e.config&&void 0!==r.config&&(e.config=x.extend({},r.config,e.config)),e=x.extend({},r,e),a&&e.className!==a&&(e.className=a+" "+e.className),e.extend=r.extend}var l=e.postfixButtons;if(l)for(e.buttons||(e.buttons=[]),n=0,o=l.length;n<o;n++)e.buttons.push(l[n]);var c=e.prefixButtons;if(c)for(e.buttons||(e.buttons=[]),n=0,o=c.length;n<o;n++)e.buttons.splice(n,0,c[n]);return e},_popover:function(o,t,n){function i(){p=!0,w(x(b),h.fade,function(){x(this).detach()}),x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes()).attr("aria-expanded","false"),x("div.dt-button-background").off("click.dtb-collection"),A.background(!1,h.backgroundClassName,h.fade,g),x(m).off("resize.resize.dtb-collection"),x("body").off(".dtb-collection"),d.off("buttons-action.b-internal"),d.off("destroy.dtb-popover"),x("body").trigger("buttons-popover-hide.dt")}var e,s,r,a,l,c,u,d=t,f=this.c,p=!1,h=x.extend({align:"button-left",autoClose:!1,background:!0,backgroundClassName:"dt-button-background",closeButton:!0,containerClassName:f.dom.collection.container.className,contentClassName:f.dom.collection.container.content.className,collectionLayout:"",collectionTitle:"",dropup:!1,fade:400,popoverTitle:"",rightAlignClassName:"dt-button-right",tag:f.dom.collection.container.tag},n),b=h.tag+"."+h.containerClassName.replace(/ /g,"."),f=t.node(),g=h.collectionLayout.includes("fixed")?x("body"):t.node();!1===o?i():((n=x(d.buttons('[aria-haspopup="dialog"][aria-expanded="true"]').nodes())).length&&(g.closest(b).length&&(g=n.eq(0)),i()),h.sort&&((n=x("button",o).map(function(t,n){return{text:x(n).text(),el:n}}).toArray()).sort(function(t,n){return t.text.localeCompare(n.text)}),x(o).append(n.map(function(t){return t.el}))),n=x(".dt-button",o).length,a="",3===n?a="dtb-b3":2===n?a="dtb-b2":1===n&&(a="dtb-b1"),e=x("<"+h.tag+"/>").addClass(h.containerClassName).addClass(h.collectionLayout).addClass(h.splitAlignClass).addClass(a).css("display","none").attr({"aria-modal":!0,role:"dialog"}),o=x(o).addClass(h.contentClassName).attr("role","menu").appendTo(e),f.attr("aria-expanded","true"),g.parents("body")[0]!==v.body&&(g=x(v.body).children("div, section, p").last()),h.popoverTitle?e.prepend('<div class="dt-button-collection-title">'+h.popoverTitle+"</div>"):h.collectionTitle&&e.prepend('<div class="dt-button-collection-title">'+h.collectionTitle+"</div>"),h.closeButton&&e.prepend('<div class="dtb-popover-close">&times;</div>').addClass("dtb-collection-closeable"),y(e.insertAfter(g),h.fade),n=x(t.table().container()),a=e.css("position"),"container"!==h.span&&"dt-container"!==h.align||(g=g.parent(),e.css("width",n.width())),"absolute"===a?(f=x(g[0].offsetParent),t=g.position(),n=g.offset(),a=f.offset(),s=f.position(),r=m.getComputedStyle(f[0]),a.height=f.outerHeight(),a.width=f.width()+parseFloat(r.paddingLeft),a.right=a.left+a.width,a.bottom=a.top+a.height,a=t.top+g.outerHeight(),l=t.left,e.css({top:a,left:l}),r=m.getComputedStyle(e[0]),(c=e.offset()).height=e.outerHeight(),c.width=e.outerWidth(),c.right=c.left+c.width,c.bottom=c.top+c.height,c.marginTop=parseFloat(r.marginTop),c.marginBottom=parseFloat(r.marginBottom),h.dropup&&(a=t.top-c.height-c.marginTop-c.marginBottom),"button-right"!==h.align&&!e.hasClass(h.rightAlignClassName)||(l=t.left-c.width+g.outerWidth()),"dt-container"!==h.align&&"container"!==h.align||l<t.left&&(l=-t.left),s.left+l+c.width>x(m).width()&&(l=x(m).width()-c.width-s.left),n.left+l<0&&(l=-n.left),s.top+a+c.height>x(m).height()+x(m).scrollTop()&&(a=t.top-c.height-c.marginTop-c.marginBottom),f.offset().top+a<x(m).scrollTop()&&(a=t.top+g.outerHeight()),e.css({top:a,left:l})):((u=function(){var t=x(m).height()/2,n=e.height()/2;e.css("marginTop",-1*(n=t<n?t:n))})(),x(m).on("resize.dtb-collection",function(){u()})),h.background&&A.background(!0,h.backgroundClassName,h.fade,h.backgroundHost||g),x("div.dt-button-background").on("click.dtb-collection",function(){}),h.autoClose&&setTimeout(function(){d.on("buttons-action.b-internal",function(t,n,e,o){o[0]!==g[0]&&i()})},0),x(e).trigger("buttons-popover.dt"),d.on("destroy.dtb-popover",i),setTimeout(function(){p=!1,x("body").on("click.dtb-collection",function(t){var n,e;!p&&(n=x.fn.addBack?"addBack":"andSelf",e=x(t.target).parent()[0],!x(t.target).parents()[n]().filter(o).length&&!x(e).hasClass("dt-buttons")||x(t.target).hasClass("dt-button-background"))&&i()}).on("keyup.dtb-collection",function(t){27===t.keyCode&&i()}).on("keydown.dtb-collection",function(t){var n=x("a, button",o),e=v.activeElement;9===t.keyCode&&(-1===n.index(e)?(n.first().focus(),t.preventDefault()):t.shiftKey?e===n[0]&&(n.last().focus(),t.preventDefault()):e===n.last()[0]&&(n.first().focus(),t.preventDefault()))})},0))}}),A.background=function(t,n,e,o){void 0===e&&(e=400),o=o||v.body,t?y(x("<div/>").addClass(n).css("display","none").insertAfter(o),e):w(x("div."+n),e,function(){x(this).removeClass(n).remove()})},A.instanceSelector=function(t,s){var r,a,l;return null==t?x.map(s,function(t){return t.inst}):(r=[],a=x.map(s,function(t){return t.name}),(l=function(t){var n;if(Array.isArray(t))for(var e=0,o=t.length;e<o;e++)l(t[e]);else if("string"==typeof t)-1!==t.indexOf(",")?l(t.split(",")):-1!==(n=x.inArray(t.trim(),a))&&r.push(s[n].inst);else if("number"==typeof t)r.push(s[t].inst);else if("object"==typeof t&&t.nodeName)for(var i=0;i<s.length;i++)s[i].inst.dom.container[0]===t&&r.push(s[i].inst);else"object"==typeof t&&r.push(t)})(t),r)},A.buttonSelector=function(t,n){for(var c=[],u=function(t,n,e){for(var o,i,s=0,r=n.length;s<r;s++)(o=n[s])&&(t.push({node:o.node,name:o.conf.name,idx:i=void 0!==e?e+s:s+""}),o.buttons)&&u(t,o.buttons,i+"-")},d=function(t,n){var e=[],o=(u(e,n.s.buttons),x.map(e,function(t){return t.node}));if(Array.isArray(t)||t instanceof x)for(s=0,r=t.length;s<r;s++)d(t[s],n);else if(null==t||"*"===t)for(s=0,r=e.length;s<r;s++)c.push({inst:n,node:e[s].node});else if("number"==typeof t)n.s.buttons[t]&&c.push({inst:n,node:n.s.buttons[t].node});else if("string"==typeof t)if(-1!==t.indexOf(","))for(var i=t.split(","),s=0,r=i.length;s<r;s++)d(i[s].trim(),n);else if(t.match(/^\d+(\-\d+)*$/)){var a=x.map(e,function(t){return t.idx});c.push({inst:n,node:e[x.inArray(t,a)].node})}else if(-1!==t.indexOf(":name")){var l=t.replace(":name","");for(s=0,r=e.length;s<r;s++)e[s].name===l&&c.push({inst:n,node:e[s].node})}else x(o).filter(t).each(function(){c.push({inst:n,node:this})});else"object"==typeof t&&t.nodeName&&-1!==(a=x.inArray(t,o))&&c.push({inst:n,node:o[a]})},e=0,o=t.length;e<o;e++){var i=t[e];d(n,i)}return c},A.stripData=function(t,n){return t="string"==typeof(t=null!==t&&"object"==typeof t&&t.nodeName&&t.nodeType?t.innerHTML:t)&&(t=A.stripHtmlScript(t),t=A.stripHtmlComments(t),n&&!n.stripHtml||(t=e.util.stripHtml(t)),n&&!n.trim||(t=t.trim()),n&&!n.stripNewlines||(t=t.replace(/\n/g," ")),n&&!n.decodeEntities||(t=i?i(t):(c.innerHTML=t,c.value)),!n||n.escapeExcelFormula)&&t.match(/^[=@\t\r]/)?"'"+t:t},A.entityDecoder=function(t){i=t},A.stripHtmlComments=function(t){for(var n;(t=(n=t).replace(/(<!--.*?--!?>)|(<!--[\S\s]+?--!?>)|(<!--[\S\s]*?$)/g,""))!==n;);return t},A.stripHtmlScript=function(t){for(var n;(t=(n=t).replace(/<script\b[^<]*(?:(?!<\/script[^>]*>)<[^<]*)*<\/script[^>]*>/gi,""))!==n;);return t},A.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{container:{className:"dt-button-collection",content:{className:"",tag:"div"},tag:"div"}},button:{tag:"button",className:"dt-button",active:"dt-button-active",disabled:"disabled",spacer:{className:"dt-button-spacer",tag:"span"},liner:{tag:"span",className:""},dropClass:"",dropHtml:'<span class="dt-button-down-arrow">&#x25BC;</span>'},split:{action:{className:"dt-button-split-drop-button dt-button",tag:"button"},dropdown:{align:"split-right",className:"dt-button-split-drop",splitAlignClass:"dt-button-split-left",tag:"button"},wrapper:{className:"dt-button-split",tag:"div"}}}},x.extend(_,{collection:{text:function(t){return t.i18n("buttons.collection","Collection")},className:"buttons-collection",closeButton:!(A.version="3.2.6"),dropIcon:!0,init:function(t,n){n.attr("aria-expanded",!1)},action:function(t,n,e,o){o._collection.parents("body").length?this.popover(!1,o):this.popover(o._collection,o),"keypress"===t.type&&x("a, button",o._collection).eq(0).focus()},attr:{"aria-haspopup":"dialog"}},split:{text:function(t){return t.i18n("buttons.split","Split")},className:"buttons-split",closeButton:!1,init:function(t,n){return n.attr("aria-expanded",!1)},action:function(t,n,e,o){this.popover(o._collection,o)},attr:{"aria-haspopup":"dialog"}},copy:function(){if(_.copyHtml5)return"copyHtml5"},csv:function(t,n){if(_.csvHtml5&&_.csvHtml5.available(t,n))return"csvHtml5"},excel:function(t,n){if(_.excelHtml5&&_.excelHtml5.available(t,n))return"excelHtml5"},pdf:function(t,n){if(_.pdfHtml5&&_.pdfHtml5.available(t,n))return"pdfHtml5"},pageLength:function(t){var n=t.settings()[0].aLengthMenu,e=[],o=[];if(Array.isArray(n[0]))e=n[0],o=n[1];else for(var i=0;i<n.length;i++){var s=n[i];x.isPlainObject(s)?(e.push(s.value),o.push(s.label)):(e.push(s),o.push(s))}return{extend:"collection",text:function(t){return t.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},t.page.len())},className:"buttons-page-length",autoClose:!0,buttons:x.map(e,function(s,t){return{text:o[t],className:"button-page-length",action:function(t,n){n.page.len(s).draw()},init:function(t,n,e){function o(){i.active(t.page.len()===s)}var i=this;t.on("length.dt"+e.namespace,o),o()},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}}),init:function(t,n,e){var o=this;t.on("length.dt"+e.namespace,function(){o.text(e.text)})},destroy:function(t,n,e){t.off("length.dt"+e.namespace)}}},spacer:{style:"empty",spacer:!0,text:function(t){return t.i18n("buttons.spacer","")}}}),e.Api.register("buttons()",function(n,e){void 0===e&&(e=n,n=void 0),this.selector.buttonGroup=n;var t=this.iterator(!0,"table",function(t){if(t._buttons)return A.buttonSelector(A.instanceSelector(n,t._buttons),e)},!0);return t._groupSelector=n,t}),e.Api.register("button()",function(t,n){t=this.buttons(t,n);return 1<t.length&&t.splice(1,t.length),t}),e.Api.registerPlural("buttons().active()","button().active()",function(n){return void 0===n?this.map(function(t){return t.inst.active(t.node)}):this.each(function(t){t.inst.active(t.node,n)})}),e.Api.registerPlural("buttons().action()","button().action()",function(n){return void 0===n?this.map(function(t){return t.inst.action(t.node)}):this.each(function(t){t.inst.action(t.node,n)})}),e.Api.registerPlural("buttons().collectionRebuild()","button().collectionRebuild()",function(e){return this.each(function(t){for(var n=0;n<e.length;n++)"object"==typeof e[n]&&(e[n].parentConf=t);t.inst.collectionRebuild(t.node,e)})}),e.Api.register(["buttons().enable()","button().enable()"],function(n){return this.each(function(t){t.inst.enable(t.node,n)})}),e.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(t){t.inst.disable(t.node)})}),e.Api.register("button().index()",function(){var n=null;return this.each(function(t){t=t.inst.index(t.node);null!==t&&(n=t)}),n}),e.Api.registerPlural("buttons().nodes()","button().node()",function(){var n=x();return x(this.each(function(t){n=n.add(t.inst.node(t.node))})),n}),e.Api.registerPlural("buttons().processing()","button().processing()",function(n){return void 0===n?this.map(function(t){return t.inst.processing(t.node)}):this.each(function(t){t.inst.processing(t.node,n)})}),e.Api.registerPlural("buttons().text()","button().text()",function(n){return void 0===n?this.map(function(t){return t.inst.text(t.node)}):this.each(function(t){t.inst.text(t.node,n)})}),e.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(t){t.inst.node(t.node).trigger("click")})}),e.Api.register("button().popover()",function(n,e){return this.map(function(t){return t.inst._popover(n,this.button(this[0].node),e)})}),e.Api.register("buttons().containers()",function(){var i=x(),s=this._groupSelector;return this.iterator(!0,"table",function(t){if(t._buttons)for(var n=A.instanceSelector(s,t._buttons),e=0,o=n.length;e<o;e++)i=i.add(n[e].container())}),i}),e.Api.register("buttons().container()",function(){return this.containers().eq(0)}),e.Api.register("button().add()",function(t,n,e){var o,i=this.context;return(o=i.length&&(i=A.instanceSelector(this._groupSelector,i[0]._buttons)).length?i[0].add(n,t,e):o)?this.button(this._groupSelector,o):this}),e.Api.register("buttons().destroy()",function(){return this.pluck("inst").unique().each(function(t){t.destroy()}),this}),e.Api.registerPlural("buttons().remove()","buttons().remove()",function(){return this.each(function(t){t.inst.remove(t.node)}),this}),e.Api.register("buttons.info()",function(t,n,e){var o=this;return!1===t?(this.off("destroy.btn-info"),w(x("#datatables_buttons_info"),400,function(){x(this).remove()}),clearTimeout(s),s=null):(s&&clearTimeout(s),x("#datatables_buttons_info").length&&x("#datatables_buttons_info").remove(),t=t?"<h2>"+t+"</h2>":"",y(x('<div id="datatables_buttons_info" class="dt-button-info"/>').html(t).append(x("<div/>")["string"==typeof n?"html":"append"](n)).css("display","none").appendTo("body")),void 0!==e&&0!==e&&(s=setTimeout(function(){o.buttons.info(!1)},e)),this.on("destroy.btn-info",function(){o.buttons.info(!1)})),this}),e.Api.register("buttons.exportData()",function(t){if(this.context.length)return u(new e.Api(this.context[0]),t)}),e.Api.register("buttons.exportInfo()",function(t){return{filename:n(t=t||{},this),title:a(t,this),messageTop:l(this,t,t.message||t.messageTop,"top"),messageBottom:l(this,t,t.messageBottom,"bottom")}});var s,n=function(t,n){var e;return null==(e="function"==typeof(e="*"===t.filename&&"*"!==t.title&&null!=t.title&&""!==t.title?t.title:t.filename)?e(t,n):e)?null:(e=(e=-1!==e.indexOf("*")?e.replace(/\*/g,x("head > title").text()).trim():e).replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""))+(r(t.extension,t,n)||"")},r=function(t,n,e){return null==t?null:"function"==typeof t?t(n,e):t},a=function(t,n){t=r(t.title,t,n);return null===t?null:-1!==t.indexOf("*")?t.replace(/\*/g,x("head > title").text()||"Exported data"):t},l=function(t,n,e,o){e=r(e,n,t);return null===e?null:(n=x("caption",t.table().container()).eq(0),"*"===e?n.css("caption-side")!==o?null:n.length?n.text():"":e)},c=x("<textarea/>")[0],u=function(i,t){for(var s=x.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,escapeExcelFormula:!1,trim:!0,format:{header:function(t){return A.stripData(t,s)},footer:function(t){return A.stripData(t,s)},body:function(t){return A.stripData(t,s)}},customizeData:null,customizeZip:null},t),t=i.columns(s.columns).indexes().map(function(t){var n=i.column(t);return s.format.header(n.title(),t,n.header())}).toArray(),n=i.table().footer()?i.columns(s.columns).indexes().map(function(t){var n,e=i.column(t).footer(),o="";return e&&(o=((n=x(".dt-column-title",e)).length?n:x(e)).html()),s.format.footer(o,t,e)}).toArray():null,e=x.extend({},s.modifier),o=(i.select&&"function"==typeof i.select.info&&void 0===e.selected&&i.rows(s.rows,x.extend({selected:!0},e)).any()&&x.extend(e,{selected:!0}),i.rows(s.rows,e).indexes().toArray()),o=i.cells(o,s.columns,{order:e.order}),r=o.render(s.orthogonal).toArray(),a=o.nodes().toArray(),l=o.indexes().toArray(),c=i.columns(s.columns).count(),u=[],d=0,f=0,p=0<c?r.length/c:0;f<p;f++){for(var h=[c],b=0;b<c;b++)h[b]=s.format.body(r[d],l[d].row,l[d].column,a[d]),d++;u[f]=h}e={header:t,headerStructure:g(s.format.header,i.table().header.structure(s.columns)),footer:n,footerStructure:g(s.format.footer,i.table().footer.structure(s.columns)),body:u};return s.customizeData&&s.customizeData(e),e};function g(t,n){for(var e=0;e<n.length;e++)for(var o=0;o<n[e].length;o++){var i=n[e][o];i&&(i.title=t(i.title,o,i.cell))}return n}function t(t,n){t=new e.Api(t),n=n||t.init().buttons||e.defaults.buttons;return new A(t,n).container()}return x.fn.dataTable.Buttons=A,x.fn.DataTable.Buttons=A,x(v).on("init.dt plugin-init.dt",function(t,n){"dt"===t.namespace&&(t=n.oInit.buttons||e.defaults.buttons)&&!n._buttons&&new A(n,t).container()}),e.ext.feature.push({fnInit:t,cFeature:"B"}),e.feature&&e.feature.register("buttons",t),e});
27
52
28
/*! DataTables styling wrapper for Buttons
53
/*! DataTables styling wrapper for Buttons
29
 * © SpryMedia Ltd - datatables.net/license
54
 * © SpryMedia Ltd - datatables.net/license
30
 */
55
 */
31
!function(n){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-buttons"],function(e){return n(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),d(e,t),n(t,0,e.document)}:(d(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(e,t,n){"use strict";return e.fn.dataTable});
56
(n=>{var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-buttons"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)})(function(e,t,n){return e.fn.dataTable});
32
57
33
/*!
58
/*!
34
 * Column visibility buttons for Buttons and DataTables.
59
 * Column visibility buttons for Buttons and DataTables.
35
 * © SpryMedia Ltd - datatables.net/license
60
 * © SpryMedia Ltd - datatables.net/license
36
 */
61
 */
37
!function(i){var o,e;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return i(n,window,document)}):"object"==typeof exports?(o=require("jquery"),e=function(n,t){t.fn.dataTable||require("datatables.net")(n,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(n,t)},"undefined"==typeof window?module.exports=function(n,t){return n=n||window,t=t||o(n),e(n,t),i(t,0,n.document)}:(e(window,o),module.exports=i(o,window,window.document))):i(jQuery,window,document)}(function(n,t,i){"use strict";var e=n.fn.dataTable;return n.extend(e.ext.buttons,{colvis:function(n,t){var i=null,o={extend:"collection",init:function(n,t){i=t},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}]};return n.on("column-reorder.dt"+t.namespace,function(){n.button(null,n.button(null,i).node()).collectionRebuild([{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}])}),o},columnsToggle:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:t.columnText}}).toArray()},columnToggle:function(n,t){return{extend:"columnVisibility",columns:t.columns,columnText:t.columnText}},columnsVisibility:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:t.visibility,columnText:t.columnText}}).toArray()},columnVisibility:{columns:void 0,text:function(n,t,i){return i._columnText(n,i)},className:"buttons-columnVisibility",action:function(n,t,i,o){var t=t.columns(o.columns),e=t.visible();t.visible(void 0!==o.visibility?o.visibility:!(e.length&&e[0]))},init:function(e,n,t){var u=this,l=e.column(t.columns);n.attr("data-cv-idx",t.columns),e.on("column-visibility.dt"+t.namespace,function(n,t,i,o){l.index()!==i||t.bDestroying||t.nTable!=e.settings()[0].nTable||u.active(o)}).on("column-reorder.dt"+t.namespace,function(){t.destroying||1===e.columns(t.columns).count()&&(l=e.column(t.columns),u.text(t._columnText(e,t)),u.active(l.visible()))}),this.active(l.visible())},destroy:function(n,t,i){n.off("column-visibility.dt"+i.namespace).off("column-reorder.dt"+i.namespace)},_columnText:function(n,t){var i,o;return"string"==typeof t.text?t.text:(o=n.column(t.columns).title(),i=n.column(t.columns).index(),o=o.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select\s*>/gi,""),o=e.Buttons.stripHtmlComments(o),o=e.util.stripHtml(o).trim(),t.columnText?t.columnText(n,i,o):o)}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(n,t,i){n.columns().every(function(){var n=this.init();void 0===n.__visOriginal&&(n.__visOriginal=this.visible())})},action:function(n,t,i,o){t.columns().every(function(n){var t=this.init();this.visible(t.__visOriginal)})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,t,i,o){t.columns(o.show).visible(!0,!1),t.columns(o.hide).visible(!1,!1),t.columns.adjust()},show:[],hide:[]}}),e});
62
(i=>{var o,e;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return i(n,window,document)}):"object"==typeof exports?(o=require("jquery"),e=function(n,t){t.fn.dataTable||require("datatables.net")(n,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(n,t)},"undefined"==typeof window?module.exports=function(n,t){return n=n||window,t=t||o(n),e(n,t),i(t,0,n.document)}:(e(window,o),module.exports=i(o,window,window.document))):i(jQuery,window,document)})(function(n,t,i){var e=n.fn.dataTable;return n.extend(e.ext.buttons,{colvis:function(n,t){var i=null,o={extend:"collection",init:function(n,t){i=t},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}]};return n.on("column-reorder.dt"+t.namespace,function(){n.button(null,n.button(null,i).node()).collectionRebuild([{extend:"columnsToggle",columns:t.columns,columnText:t.columnText}])}),o},columnsToggle:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:t.columnText}}).toArray()},columnToggle:function(n,t){return{extend:"columnVisibility",columns:t.columns,columnText:t.columnText}},columnsVisibility:function(n,t){return n.columns(t.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:t.visibility,columnText:t.columnText}}).toArray()},columnVisibility:{columns:void 0,text:function(n,t,i){return i._columnText(n,i)},className:"buttons-columnVisibility",action:function(n,t,i,o){var t=t.columns(o.columns),e=t.visible();t.visible(void 0!==o.visibility?o.visibility:!(e.length&&e[0]))},init:function(e,n,t){var u=this,l=e.column(t.columns);n.attr("data-cv-idx",t.columns),e.on("column-visibility.dt"+t.namespace,function(n,t,i,o){l.index()!==i||t.bDestroying||t.nTable!=e.settings()[0].nTable||u.active(o)}).on("column-reorder.dt"+t.namespace,function(){t.destroying||1===e.columns(t.columns).count()&&(l=e.column(t.columns),u.text(t._columnText(e,t)),u.active(l.visible()))}),this.active(l.visible())},destroy:function(n,t,i){n.off("column-visibility.dt"+i.namespace).off("column-reorder.dt"+i.namespace)},_columnText:function(n,t){var i,o;return"string"==typeof t.text?t.text:(o=n.column(t.columns).title(),i=n.column(t.columns).index(),o=o.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select\s*>/gi,""),o=e.Buttons.stripHtmlComments(o),o=e.util.stripHtml(o).trim(),t.columnText?t.columnText(n,i,o):o)}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(n,t,i){n.columns().every(function(){var n=this.init();void 0===n.__visOriginal&&(n.__visOriginal=this.visible())})},action:function(n,t,i,o){t.columns().every(function(n){var t=this.init();this.visible(t.__visOriginal)})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,t,i,o){t.columns(o.show).visible(!0,!1),t.columns(o.hide).visible(!1,!1),t.columns.adjust()},show:[],hide:[]}}),e});
38
63
39
/*!
64
/*!
40
 * HTML5 export buttons for Buttons and DataTables.
65
 * HTML5 export buttons for Buttons and DataTables.
Lines 43-60 Link Here
43
 * FileSaver.js (1.3.3) - MIT license
68
 * FileSaver.js (1.3.3) - MIT license
44
 * Copyright © 2016 Eli Grey - http://eligrey.com
69
 * Copyright © 2016 Eli Grey - http://eligrey.com
45
 */
70
 */
46
!function(o){var l,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(l=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||l(t),n(t,e),o(e,t,t.document)}:(n(window,l),module.exports=o(l,window,window.document))):o(jQuery,window,document)}(function(S,C,u){"use strict";var e,o,t=S.fn.dataTable;function T(){return e||C.JSZip}function s(){return o||C.pdfMake}t.Buttons.pdfMake=function(t){if(!t)return s();o=t},t.Buttons.jszip=function(t){if(!t)return T();e=t};function k(t){var e="Sheet1";return e=t.sheetName?t.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""):e}function c(t,e){function o(t){for(var e="",o=0,l=t.length;o<l;o++)0<o&&(e+=a),e+=r?r+(""+t[o]).replace(d,p+r)+r:t[o];return e}var l=y(e),n=t.buttons.exportData(e.exportOptions),r=e.fieldBoundary,a=e.fieldSeparator,d=new RegExp(r,"g"),p=void 0!==e.escapeChar?e.escapeChar:"\\",t="",i="",f=[];e.header&&(t=n.headerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l),e.footer&&n.footer&&(i=n.footerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l);for(var s=0,m=n.body.length;s<m;s++)f.push(o(n.body[s]));return{str:t+f.join(l)+l+i,rows:f.length}}function m(){var t;return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")&&!!((t=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/))&&1<t.length&&+t[1]<603.1)}var N=function(d){var p,i,f,s,m,u,e,c,y,l,t;if(!(void 0===d||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent)))return t=d.document,p=function(){return d.URL||d.webkitURL||d},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in i,s=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(d.setImmediate||d.setTimeout)(function(){throw t},0)},e=4e4,c=function(t){setTimeout(function(){"string"==typeof t?p().revokeObjectURL(t):t.remove()},e)},y=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},t=(l=function(t,o,e){e||(t=y(t));var l,n,r=this,e="application/octet-stream"===t.type,a=function(){for(var t=r,e="writestart progress write writeend".split(" "),o=void 0,l=(e=[].concat(e)).length;l--;){var n=t["on"+e[l]];if("function"==typeof n)try{n.call(t,o||t)}catch(t){u(t)}}};r.readyState=r.INIT,f?(l=p().createObjectURL(t),setTimeout(function(){var t,e;i.href=l,i.download=o,t=i,e=new MouseEvent("click"),t.dispatchEvent(e),a(),c(l),r.readyState=r.DONE})):(m||e&&s)&&d.FileReader?((n=new FileReader).onloadend=function(){var t=m?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");d.open(t,"_blank")||(d.location.href=t),r.readyState=r.DONE,a()},n.readAsDataURL(t),r.readyState=r.INIT):(l=l||p().createObjectURL(t),!e&&d.open(l,"_blank")||(d.location.href=l),r.readyState=r.DONE,a(),c(l))}).prototype,"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,o){return e=e||t.name||"download",o||(t=y(t)),navigator.msSaveOrOpenBlob(t,e)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,function(t,e,o){return new l(t,e||t.name||"download",o)})}("undefined"!=typeof self&&self||void 0!==C&&C||this.content),y=(t.fileSave=N,function(t){return t.newline||(navigator.userAgent.match(/Windows/)?"\r\n":"\n")});function O(t){for(var e="A".charCodeAt(0),o="Z".charCodeAt(0)-e+1,l="";0<=t;)l=String.fromCharCode(t%o+e)+l,t=Math.floor(t/o)-1;return l}try{var z,E=new XMLSerializer}catch(t){}function A(t,e,o){var l=t.createElement(e);return o&&(o.attr&&S(l).attr(o.attr),o.children&&S.each(o.children,function(t,e){l.appendChild(e)}),null!==o.text)&&void 0!==o.text&&l.appendChild(t.createTextNode(o.text)),l}function D(t,e,o,l,n){var r=S("mergeCells",t);r[0].appendChild(A(t,"mergeCell",{attr:{ref:O(o)+e+":"+O(o+n-1)+(e+l-1)}})),r.attr("count",parseFloat(r.attr("count"))+1)}var R={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="68"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},$=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(t){return t/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(t){return t/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},{match:/^\-?[\d,]+\.\d{2}$/,style:64},{match:/^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,style:67,fmt:function(t){return Math.round(25569+Date.parse(t)/864e5)}}];return t.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(t){return t.i18n("buttons.copy","Copy")},action:function(t,e,o,l,n){var r=c(e,l),a=e.buttons.exportInfo(l),d=y(l),p=r.str,i=S("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),d=(a.title&&(p=a.title+d+d+p),a.messageTop&&(p=a.messageTop+d+d+p),a.messageBottom&&(p=p+d+d+a.messageBottom),l.customize&&(p=l.customize(p,l,e)),S("<textarea readonly/>").val(p).appendTo(i));if(u.queryCommandSupported("copy")){i.appendTo(e.table().container()),d[0].focus(),d[0].select();try{var f=u.execCommand("copy");if(i.remove(),f)return l.copySuccess&&e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),e.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},r.rows),2e3),void n()}catch(t){}}function s(){m.off("click.buttons-copy"),S(u).off(".buttons-copy"),e.buttons.info(!1)}var a=S("<span>"+e.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(i),m=(e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),a,0),d[0].focus(),d[0].select(),S(a).closest(".dt-button-info"));m.on("click.buttons-copy",function(){s(),n()}),S(u).on("keydown.buttons-copy",function(t){27===t.keyCode&&(s(),n())}).on("copy.buttons-copy cut.buttons-copy",function(){s(),n()})},async:100,copySuccess:!0,exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*"},t.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return void 0!==C.FileReader&&C.Blob},text:function(t){return t.i18n("buttons.csv","CSV")},action:function(t,e,o,l,n){var r=c(e,l).str,a=e.buttons.exportInfo(l),d=l.charset;l.customize&&(r=l.customize(r,l,e)),d=!1!==d?(d=d||u.characterSet||u.charset)&&";charset="+d:"",l.bom&&(r=String.fromCharCode(65279)+r),N(new Blob([r],{type:"text/csv"+d}),a.filename,!0),n()},async:100,filename:"*",extension:".csv",exportOptions:{escapeExcelFormula:!0},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!0},t.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return void 0!==C.FileReader&&void 0!==T()&&!m()&&E},text:function(t){return t.i18n("buttons.excel","Excel")},action:function(t,e,o,f,l){function n(t){return t=R[t],S.parseXML(t)}function r(t){m=A(c,"row",{attr:{r:s=u+1}});for(var e=0,o=t.length;e<o;e++){var l=O(e)+""+s,n=null;if(null===t[e]||void 0===t[e]||""===t[e]){if(!0!==f.createEmptyCells)continue;t[e]=""}var r=t[e];t[e]="function"==typeof t[e].trim?t[e].trim():t[e];for(var a=0,d=$.length;a<d;a++){var p=$[a];if(t[e].match&&!t[e].match(/^0\d+/)&&t[e].match(p.match)){var i=t[e].replace(/[^\d\.\-]/g,"");p.fmt&&(i=p.fmt(i)),n=A(c,"c",{attr:{r:l,s:p.style},children:[A(c,"v",{text:i})]});break}}n=n||("number"==typeof t[e]||t[e].match&&t[e].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/)&&!t[e].match(/^0\d+/)?A(c,"c",{attr:{t:"n",r:l},children:[A(c,"v",{text:t[e]})]}):(r=r.replace?r.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):r,A(c,"c",{attr:{t:"inlineStr",r:l},children:{row:A(c,"is",{children:{row:A(c,"t",{text:r,attr:{"xml:space":"preserve"}})}})}}))),m.appendChild(n)}y.appendChild(m),u++}function a(t){t.forEach(function(t){r(t.map(function(t){return t?t.title:""})),S("row:last c",c).attr("s","2"),t.forEach(function(t,e){t&&(1<t.colSpan||1<t.rowSpan)&&D(c,u,e,t.rowSpan,t.colSpan)})})}var d,s,m,u=0,c=n("xl/worksheets/sheet1.xml"),y=c.getElementsByTagName("sheetData")[0],p={_rels:{".rels":n("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":n("xl/_rels/workbook.xml.rels")},"workbook.xml":n("xl/workbook.xml"),"styles.xml":n("xl/styles.xml"),worksheets:{"sheet1.xml":c}},"[Content_Types].xml":n("[Content_Types].xml")},i=e.buttons.exportData(f.exportOptions),I=e.buttons.exportInfo(f);I.title&&(r([I.title]),D(c,u,0,1,i.header.length),S("row:last c",c).attr("s","51")),I.messageTop&&(r([I.messageTop]),D(c,u,0,1,i.header.length)),f.header&&a(i.headerStructure);for(var F=u,x=0,h=i.body.length;x<h;x++)r(i.body[x]);d=u,f.footer&&i.footer&&a(i.footerStructure),I.messageBottom&&(r([I.messageBottom]),D(c,u,0,1,i.header.length));var b=A(c,"cols");S("worksheet",c).prepend(b);for(var g=0,v=i.header.length;g<v;g++)b.appendChild(A(c,"col",{attr:{min:g+1,max:g+1,width:function(t,e){var o=t.header[e].length;t.footer&&t.footer[e]&&t.footer[e].length>o&&(o=t.footer[e].length);for(var l=0,n=t.body.length;l<n;l++){var r,a=t.body[l][e];if(40<(o=o<(r=(-1!==(a=null!=a?a.toString():"").indexOf("\n")?((r=a.split("\n")).sort(function(t,e){return e.length-t.length}),r[0]):a).length)?r:o))return 54}return 6<(o*=1.35)?o:6}(i,g),customWidth:1}}));var w=p.xl["workbook.xml"];S("sheets sheet",w).attr("name",k(f)),f.autoFilter&&(S("mergeCells",c).before(A(c,"autoFilter",{attr:{ref:"A"+F+":"+O(i.header.length-1)+d}})),S("definedNames",w).append(A(w,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:"'"+k(f).replace(/'/g,"''")+"'!$A$"+F+":$"+O(i.header.length-1)+"$"+d}))),f.customize&&f.customize(p,f,e),0===S("mergeCells",c).children().length&&S("mergeCells",c).remove();var w=new(T()),F={compression:"DEFLATE",type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},B=(!function f(s,t){void 0===z&&(z=-1===E.serializeToString((new C.DOMParser).parseFromString(R["xl/worksheets/sheet1.xml"],"text/xml")).indexOf("xmlns:r")),S.each(t,function(t,e){if(S.isPlainObject(e))f(s.folder(t),e);else{if(z){for(var o,l=e.childNodes[0],n=[],r=l.attributes.length-1;0<=r;r--){var a=l.attributes[r].nodeName,d=l.attributes[r].nodeValue;-1!==a.indexOf(":")&&(n.push({name:a,value:d}),l.removeAttribute(a))}for(r=0,o=n.length;r<o;r++){var p=e.createAttribute(n[r].name.replace(":","_dt_b_namespace_token_"));p.value=n[r].value,l.setAttributeNode(p)}}var i=E.serializeToString(e),i=(i=z?(i=(i=-1===i.indexOf("<?xml")?'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i:i).replace(/_dt_b_namespace_token_/g,":")).replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""):i).replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");s.file(t,i)}})}(w,p),I.filename);175<B&&(B=B.substr(0,175)),f.customizeZip&&f.customizeZip(w,i,B),w.generateAsync?w.generateAsync(F).then(function(t){N(t,B),l()}):(N(w.generate(F),B),l())},async:100,filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""},t.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return void 0!==C.FileReader&&s()},text:function(t){return t.i18n("buttons.pdf","PDF")},action:function(t,e,o,l,n){var r=e.buttons.exportData(l.exportOptions),a=e.buttons.exportInfo(l),d=[];l.header&&r.headerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});for(var p=0,i=r.body.length;p<i;p++)d.push(r.body[p].map(function(t){return{text:null==t?"":"string"==typeof t?t:t.toString()}}));l.footer&&r.footerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableFooter"}:{}}))});var f={pageSize:l.pageSize,pageOrientation:l.orientation,content:[{style:"table",table:{headerRows:l.header?r.headerStructure.length:0,footerRows:l.footer?r.footerStructure.length:0,body:d},layout:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:.5},vLineWidth:function(){return 0},hLineColor:function(t,e){return t===e.table.headerRows||t===e.table.body.length-e.table.footerRows?"#333":"#ddd"},fillColor:function(t){return t<r.headerStructure.length?"#fff":t%2==0?"#f3f3f3":null},paddingTop:function(){return 5},paddingBottom:function(){return 5}}}],styles:{tableHeader:{bold:!0,fontSize:11,alignment:"center"},tableFooter:{bold:!0,fontSize:11,alignment:"center"},table:{margin:[0,5,0,5]},title:{alignment:"center",fontSize:13},message:{}},defaultStyle:{fontSize:10}},e=(a.messageTop&&f.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]}),a.messageBottom&&f.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]}),a.title&&f.content.unshift({text:a.title,style:"title",margin:[0,0,0,12]}),l.customize&&l.customize(f,l,e),s().createPdf(f));"open"!==l.download||m()?e.download(a.filename):e.open(),n()},async:100,title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"en-US"===navigator.language||"en-CA"===navigator.language?"LETTER":"A4",header:!0,footer:!0,messageTop:"*",messageBottom:"*",customize:null,download:"download"},t});
71
(o=>{var l,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(l=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||l(t),n(t,e),o(e,t,t.document)}:(n(window,l),module.exports=o(l,window,window.document))):o(jQuery,window,document)})(function(S,C,u){var e,o,t=S.fn.dataTable;function T(){return e||C.JSZip}function m(){return o||C.pdfMake}t.Buttons.pdfMake=function(t){if(!t)return m();o=t},t.Buttons.jszip=function(t){if(!t)return T();e=t};function k(t){var e="Sheet1";return e=t.sheetName?t.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""):e}function c(t,e){function o(t){for(var e="",o=0,l=t.length;o<l;o++)0<o&&(e+=a),e+=r?r+(""+t[o]).replace(d,p+r)+r:t[o];return e}var l=y(e),n=t.buttons.exportData(e.exportOptions),r=e.fieldBoundary,a=e.fieldSeparator,d=new RegExp(r,"g"),p=void 0!==e.escapeChar?e.escapeChar:"\\",t="",i="",f=[];e.header&&(t=n.headerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l),e.footer&&n.footer&&(i=n.footerStructure.map(function(t){return o(t.map(function(t){return t?t.title:""}))}).join(l)+l);for(var m=0,s=n.body.length;m<s;m++)f.push(o(n.body[m]));return{str:t+f.join(l)+l+i,rows:f.length}}function s(){var t;return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")&&!!((t=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/))&&1<t.length&&+t[1]<603.1)}var N=(d=>{var p,i,f,m,s,u,e,c,y,l,t;if(!(void 0===d||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent)))return t=d.document,p=function(){return d.URL||d.webkitURL||d},i=t.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in i,m=/constructor/i.test(d.HTMLElement)||d.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(d.setImmediate||d.setTimeout)(function(){throw t},0)},e=4e4,c=function(t){setTimeout(function(){"string"==typeof t?p().revokeObjectURL(t):t.remove()},e)},y=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},t=(l=function(t,o,e){e||(t=y(t));var l,n,r=this,e="application/octet-stream"===t.type,a=function(){for(var t=r,e="writestart progress write writeend".split(" "),o=void 0,l=(e=[].concat(e)).length;l--;){var n=t["on"+e[l]];if("function"==typeof n)try{n.call(t,o||t)}catch(t){u(t)}}};r.readyState=r.INIT,f?(l=p().createObjectURL(t),setTimeout(function(){var t,e;i.href=l,i.download=o,t=i,e=new MouseEvent("click"),t.dispatchEvent(e),a(),c(l),r.readyState=r.DONE})):(s||e&&m)&&d.FileReader?((n=new FileReader).onloadend=function(){var t=s?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");d.open(t,"_blank")||(d.location.href=t),r.readyState=r.DONE,a()},n.readAsDataURL(t),r.readyState=r.INIT):(l=l||p().createObjectURL(t),!e&&d.open(l,"_blank")||(d.location.href=l),r.readyState=r.DONE,a(),c(l))}).prototype,"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,o){return e=e||t.name||"download",o||(t=y(t)),navigator.msSaveOrOpenBlob(t,e)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,function(t,e,o){return new l(t,e||t.name||"download",o)})})("undefined"!=typeof self&&self||void 0!==C&&C||this.content),y=(t.fileSave=N,function(t){return t.newline||(navigator.userAgent.match(/Windows/)?"\r\n":"\n")});function O(t){for(var e="A".charCodeAt(0),o="Z".charCodeAt(0)-e+1,l="";0<=t;)l=String.fromCharCode(t%o+e)+l,t=Math.floor(t/o)-1;return l}try{var z,E=new XMLSerializer}catch(t){}function A(t,e,o){var l=t.createElement(e);return o&&(o.attr&&S(l).attr(o.attr),o.children&&S.each(o.children,function(t,e){l.appendChild(e)}),null!=o.text)&&l.appendChild(t.createTextNode(o.text)),l}function D(t,e,o,l,n){var r=S("mergeCells",t);r[0].appendChild(A(t,"mergeCell",{attr:{ref:O(o)+e+":"+O(o+n-1)+(e+l-1)}})),r.attr("count",parseFloat(r.attr("count"))+1)}var R={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>',"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames/></workbook>',"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="[$$-409]#,##0.00;-[$$-409]#,##0.00"/><numFmt numFmtId="165" formatCode="&quot;£&quot;#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="68"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9"   fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'},$=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(t){return t/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(t){return t/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(t){return-1*t.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63},{match:/^\-?[\d,]+\.\d{2}$/,style:64},{match:/^(19\d\d|[2-9]\d\d\d)\-(0\d|1[012])\-[0123][\d]$/,style:67,fmt:function(t){return Math.round(25569+Date.parse(t)/864e5)}}];return t.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(t){return t.i18n("buttons.copy","Copy")},action:function(t,e,o,l,n){var r=c(e,l),a=e.buttons.exportInfo(l),d=y(l),p=r.str,i=S("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),d=(a.title&&(p=a.title+d+d+p),a.messageTop&&(p=a.messageTop+d+d+p),a.messageBottom&&(p=p+d+d+a.messageBottom),l.customize&&(p=l.customize(p,l,e)),S("<textarea readonly/>").val(p).appendTo(i));if(u.queryCommandSupported("copy")){i.appendTo(e.table().container()),d[0].focus(),d[0].select();try{var f=u.execCommand("copy");if(i.remove(),f)return l.copySuccess&&e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),e.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},r.rows),2e3),void n()}catch(t){}}function m(){s.off("click.buttons-copy"),S(u).off(".buttons-copy"),e.buttons.info(!1)}var a=S("<span>"+e.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(i),s=(e.buttons.info(e.i18n("buttons.copyTitle","Copy to clipboard"),a,0),d[0].focus(),d[0].select(),S(a).closest(".dt-button-info"));s.on("click.buttons-copy",function(){m(),n()}),S(u).on("keydown.buttons-copy",function(t){27===t.keyCode&&(m(),n())}).on("copy.buttons-copy cut.buttons-copy",function(){m(),n()})},async:100,copySuccess:!0,exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*"},t.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return void 0!==C.FileReader&&C.Blob},text:function(t){return t.i18n("buttons.csv","CSV")},action:function(t,e,o,l,n){var r=c(e,l).str,a=e.buttons.exportInfo(l),d=l.charset;l.customize&&(r=l.customize(r,l,e)),d=!1!==d?(d=d||u.characterSet||u.charset)&&";charset="+d:"",l.bom&&(r=String.fromCharCode(65279)+r),N(new Blob([r],{type:"text/csv"+d}),a.filename,!0),n()},async:100,filename:"*",extension:".csv",exportOptions:{escapeExcelFormula:!0},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!0},t.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return void 0!==C.FileReader&&void 0!==T()&&!s()&&E},text:function(t){return t.i18n("buttons.excel","Excel")},action:function(t,e,o,f,l){function n(t){return t=R[t],S.parseXML(t)}function r(t){s=A(c,"row",{attr:{r:m=u+1}});for(var e=0,o=t.length;e<o;e++){var l=O(e)+""+m,n=null;if(null==t[e]||""===t[e]){if(!0!==f.createEmptyCells)continue;t[e]=""}var r=t[e];t[e]="function"==typeof t[e].trim?t[e].trim():t[e];for(var a=0,d=$.length;a<d;a++){var p=$[a];if(t[e].match&&!t[e].match(/^0\d+/)&&t[e].match(p.match)){var i=t[e].replace(/[^\d\.\-]/g,"");p.fmt&&(i=p.fmt(i)),n=A(c,"c",{attr:{r:l,s:p.style},children:[A(c,"v",{text:i})]});break}}n=n||("number"==typeof t[e]||t[e].match&&t[e].match(/^-?\d+(\.\d+)?([eE]\-?\d+)?$/)&&!t[e].match(/^0\d+/)?A(c,"c",{attr:{t:"n",r:l},children:[A(c,"v",{text:t[e]})]}):(r=r.replace?r.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""):r,A(c,"c",{attr:{t:"inlineStr",r:l},children:{row:A(c,"is",{children:{row:A(c,"t",{text:r,attr:{"xml:space":"preserve"}})}})}}))),s.appendChild(n)}y.appendChild(s),u++}function a(t){t.forEach(function(t){r(t.map(function(t){return t?t.title:""})),S("row:last c",c).attr("s","2"),t.forEach(function(t,e){t&&(1<t.colSpan||1<t.rowSpan)&&D(c,u,e,t.rowSpan,t.colSpan)})})}var d,m,s,u=0,c=n("xl/worksheets/sheet1.xml"),y=c.getElementsByTagName("sheetData")[0],p={_rels:{".rels":n("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":n("xl/_rels/workbook.xml.rels")},"workbook.xml":n("xl/workbook.xml"),"styles.xml":n("xl/styles.xml"),worksheets:{"sheet1.xml":c}},"[Content_Types].xml":n("[Content_Types].xml")},i=e.buttons.exportData(f.exportOptions),I=e.buttons.exportInfo(f);I.title&&(r([I.title]),D(c,u,0,1,i.header.length),S("row:last c",c).attr("s","51")),I.messageTop&&(r([I.messageTop]),D(c,u,0,1,i.header.length)),f.header&&a(i.headerStructure);for(var F=u,x=0,h=i.body.length;x<h;x++)r(i.body[x]);d=u,f.footer&&i.footer&&a(i.footerStructure),I.messageBottom&&(r([I.messageBottom]),D(c,u,0,1,i.header.length));var b=A(c,"cols");S("worksheet",c).prepend(b);for(var g=0,v=i.header.length;g<v;g++)b.appendChild(A(c,"col",{attr:{min:g+1,max:g+1,width:((t,e)=>{var o=t.header[e].length;t.footer&&t.footer[e]&&t.footer[e].length>o&&(o=t.footer[e].length);for(var l=0,n=t.body.length;l<n;l++){var r,a=t.body[l][e];if(40<(o=o<(r=(-1!==(a=null!=a?a.toString():"").indexOf("\n")?((r=a.split("\n")).sort(function(t,e){return e.length-t.length}),r[0]):a).length)?r:o))return 54}return 6<(o*=1.35)?o:6})(i,g),customWidth:1}}));var w=p.xl["workbook.xml"];S("sheets sheet",w).attr("name",k(f)),f.autoFilter&&(S("mergeCells",c).before(A(c,"autoFilter",{attr:{ref:"A"+F+":"+O(i.header.length-1)+d}})),S("definedNames",w).append(A(w,"definedName",{attr:{name:"_xlnm._FilterDatabase",localSheetId:"0",hidden:1},text:"'"+k(f).replace(/'/g,"''")+"'!$A$"+F+":$"+O(i.header.length-1)+"$"+d}))),f.customize&&f.customize(p,f,e),0===S("mergeCells",c).children().length&&S("mergeCells",c).remove();var w=new(T()),F={compression:"DEFLATE",type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},B=(!function f(m,t){void 0===z&&(z=-1===E.serializeToString((new C.DOMParser).parseFromString(R["xl/worksheets/sheet1.xml"],"text/xml")).indexOf("xmlns:r")),S.each(t,function(t,e){if(S.isPlainObject(e))f(m.folder(t),e);else{if(z){for(var o,l=e.childNodes[0],n=[],r=l.attributes.length-1;0<=r;r--){var a=l.attributes[r].nodeName,d=l.attributes[r].nodeValue;-1!==a.indexOf(":")&&(n.push({name:a,value:d}),l.removeAttribute(a))}for(r=0,o=n.length;r<o;r++){var p=e.createAttribute(n[r].name.replace(":","_dt_b_namespace_token_"));p.value=n[r].value,l.setAttributeNode(p)}}var i=E.serializeToString(e),i=(i=z?(i=(i=-1===i.indexOf("<?xml")?'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+i:i).replace(/_dt_b_namespace_token_/g,":")).replace(/xmlns:NS[\d]+="" NS[\d]+:/g,""):i).replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");m.file(t,i)}})}(w,p),I.filename);175<B&&(B=B.substr(0,175)),f.customizeZip&&f.customizeZip(w,i,B),w.generateAsync?w.generateAsync(F).then(function(t){N(t,B),l()}):(N(w.generate(F),B),l())},async:100,filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!0,title:"*",messageTop:"*",messageBottom:"*",createEmptyCells:!1,autoFilter:!1,sheetName:""},t.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return void 0!==C.FileReader&&m()},text:function(t){return t.i18n("buttons.pdf","PDF")},action:function(t,e,o,l,n){var r=e.buttons.exportData(l.exportOptions),a=e.buttons.exportInfo(l),d=[];l.header&&r.headerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableHeader"}:{}}))});for(var p=0,i=r.body.length;p<i;p++)d.push(r.body[p].map(function(t){return{text:null==t?"":"string"==typeof t?t:t.toString()}}));l.footer&&r.footerStructure.forEach(function(t){d.push(t.map(function(t){return t?{text:t.title,colSpan:t.colspan,rowSpan:t.rowspan,style:"tableFooter"}:{}}))});var f={pageSize:l.pageSize,pageOrientation:l.orientation,content:[{style:"table",table:{headerRows:l.header?r.headerStructure.length:0,footerRows:l.footer?r.footerStructure.length:0,body:d},layout:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:.5},vLineWidth:function(){return 0},hLineColor:function(t,e){return t===e.table.headerRows||t===e.table.body.length-e.table.footerRows?"#333":"#ddd"},fillColor:function(t){return t<r.headerStructure.length?"#fff":t%2==0?"#f3f3f3":null},paddingTop:function(){return 5},paddingBottom:function(){return 5}}}],styles:{tableHeader:{bold:!0,fontSize:11,alignment:"center"},tableFooter:{bold:!0,fontSize:11,alignment:"center"},table:{margin:[0,5,0,5]},title:{alignment:"center",fontSize:13},message:{}},defaultStyle:{fontSize:10}},e=(a.messageTop&&f.content.unshift({text:a.messageTop,style:"message",margin:[0,0,0,12]}),a.messageBottom&&f.content.push({text:a.messageBottom,style:"message",margin:[0,0,0,12]}),a.title&&f.content.unshift({text:a.title,style:"title",margin:[0,0,0,12]}),l.customize&&l.customize(f,l,e),m().createPdf(f));"open"!==l.download||s()?e.download(a.filename):e.open(),n()},async:100,title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"en-US"===navigator.language||"en-CA"===navigator.language?"LETTER":"A4",header:!0,footer:!0,messageTop:"*",messageBottom:"*",customize:null,download:"download"},t});
47
72
48
/*!
73
/*!
49
 * Print button for Buttons and DataTables.
74
 * Print button for Buttons and DataTables.
50
 * © SpryMedia Ltd - datatables.net/license
75
 * © SpryMedia Ltd - datatables.net/license
51
 */
76
 */
52
!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(p,f,t){"use strict";function m(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=p.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o,r){var a=e.buttons.exportData(p.extend({decodeEntities:!1},o.exportOptions)),i=e.buttons.exportInfo(o),s=e.columns(o.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),u='<table class="'+e.table().node().className+'">';o.header&&(u+="<thead>"+a.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),u+="<tbody>";for(var c=0,d=a.body.length;c<d;c++)u+=function(t,e){for(var n="<tr>",o=0,r=t.length;o<r;o++){var a=null===t[o]||void 0===t[o]?"":t[o];n+="<"+e+" "+(s[o]?'class="'+s[o]+'"':"")+">"+a+"</"+e+">"}return n+"</tr>"}(a.body[c],"td");u+="</tbody>",o.footer&&a.footer&&(u+="<tfoot>"+a.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),u+="</table>";var l=f.open("","");l?(l.document.close(),l.document.title=i.title,p('style, link[rel="stylesheet"]').each(function(){var t=this.cloneNode(!0);"link"===t.tagName.toLowerCase()&&(t.href=m(t.href)),l.document.head.appendChild(t)}),o.customScripts&&o.customScripts.forEach(function(t){var e=l.document.createElement("script");e.src=t,l.document.getElementsByTagName("head")[0].appendChild(e)}),l.document.body.innerHTML="<h1>"+i.title+"</h1><div>"+(i.messageTop||"")+"</div>"+u+"<div>"+(i.messageBottom||"")+"</div>",p(l.document.body).addClass("dt-print-view"),p("img",l.document.body).each(function(t,e){e.setAttribute("src",m(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e),l.setTimeout(function(){o.autoPrint&&(l.print(),l.close())},1e3),r()):e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null},e});
77
(n=>{var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)})(function(p,m,t){function f(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=p.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o,r){var a=e.buttons.exportData(p.extend({decodeEntities:!1},o.exportOptions)),i=e.buttons.exportInfo(o),s=e.columns(o.exportOptions.columns).nodes().map(function(t){return t.className}).toArray(),u='<table class="'+e.table().node().className+'">';o.header&&(u+="<thead>"+a.headerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</thead>"),u+="<tbody>";for(var d=0,c=a.body.length;d<c;d++)u+=((t,e)=>{for(var n="<tr>",o=0,r=t.length;o<r;o++){var a=null==t[o]?"":t[o];n+="<"+e+" "+(s[o]?'class="'+s[o]+'"':"")+">"+a+"</"+e+">"}return n+"</tr>"})(a.body[d],"td");u+="</tbody>",o.footer&&a.footer&&(u+="<tfoot>"+a.footerStructure.map(function(t){return"<tr>"+t.map(function(t){return t?'<th colspan="'+t.colspan+'" rowspan="'+t.rowspan+'">'+t.title+"</th>":""}).join("")+"</tr>"}).join("")+"</tfoot>"),u+="</table>";var l=m.open("","");l?(l.document.close(),l.document.title=i.title,p('style, link[rel="stylesheet"]').each(function(){var t=this.cloneNode(!0);"link"===t.tagName.toLowerCase()&&(t.href=f(t.href)),l.document.head.appendChild(t)}),o.customScripts&&o.customScripts.forEach(function(t){var e=l.document.createElement("script");e.src=t,l.document.getElementsByTagName("head")[0].appendChild(e)}),l.document.body.innerHTML="<h1>"+i.title+"</h1><div>"+(i.messageTop||"")+"</div>"+u+"<div>"+(i.messageBottom||"")+"</div>",p(l.document.body).addClass("dt-print-view"),p("img",l.document.body).each(function(t,e){e.setAttribute("src",f(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e),l.setTimeout(function(){o.autoPrint&&(l.print(),l.close())},1e3),r()):e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},async:100,title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!0,autoPrint:!0,customize:null},e});
53
78
54
/*! Responsive 3.0.7
79
/*! FixedHeader 4.0.6
55
 * © SpryMedia Ltd - datatables.net/license
80
 * © SpryMedia Ltd - datatables.net/license
56
 */
81
 */
57
!function(n){var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)}(function(b,y,d){function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var o=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(o._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,o.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===o.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(o.s.current,function(e,t){!1===t&&o._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:t.width<e.width?-1:0}),this._classLogic(),this.c.details);!1!==e.type&&(o._detailsInit(),r.on("column-visibility.dtr",function(){o._timer&&clearTimeout(o._timer),o._timer=setTimeout(function(){o._timer=null,o._classLogic(),o._resizeAuto(),o._resize(!0),o._redrawChildren()},100)}),r.on("draw.dtr",function(){o._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-calc.dt",function(e,t){for(var n=o.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){o._resizeAuto(),o._resize(),r.rows(e).every(function(){o._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){r.page.info().serverSide&&(o.s.childNodeStore={}),o._controlClass()}).ready(function(){o._resizeAuto(),o._resize(),r.on("column-sizing.dtr",function(){o._resizeAuto(),o._resize()})}),r.on("column-reorder.dtr",function(e,t,n){o._classLogic(),o._resizeAuto(),o._resize(!0)})},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],o=e.cell(t,n).node().childNodes,s=0,d=o.length;s<d;s++)r.push(o[s]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var o=e[0].parentNode.childNodes,s=[],d=0,a=o.length;d<a;d++)s.push(o[d]);for(var l=0,c=s.length;l<c;l++)r.appendChild(s[l])}this.s.childNodeStore[i]=void 0}},_columnsVisibility:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),o=0,s=0,d=r.length;s<d;s++)!0===r[s]&&(o+=e[s].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-o;for(s=0,d=r.length;s<d;s++)e[s].control&&(l-=e[s].minWidth);var c=!1;for(s=0,d=t.length;s<d;s++){var u=t[s].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(s=0,d=e.length;s<d;s++)if(!e[s].control&&!e[s].never&&!1===r[s]){h=!0;break}for(s=0,d=e.length;s<d;s++)e[s].control&&(r[s]=h),"not-visible"===r[s]&&(r[s]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,o,s;if(n){if("max-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width<=r&&u(e,l[o].name);else if("min-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width>=r&&u(e,l[o].name);else if("not-"===n)for(o=0,s=l.length;o<s;o++)-1===l[o].name.indexOf(i)&&u(e,l[o].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),o=!1,n=0,i=t.length;n<i;n++){var s=t[n].trim();if("all"===s||"dtr-all"===s)return o=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===s||"dtr-none"===s||e.never)return void(o=!0);if("control"===s||"dtr-control"===s)return o=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=s.match(i);i&&(o=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}o||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),0<=n)&&e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"),this._tabIndexes()},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(o.table().node()).triggerHandler("responsive-display.dt",[o,t,e,n])}var i,r=this,o=this.s.dt,s=this.c.details;s&&!1!==s.type&&(i="string"==typeof s.renderer?a.renderer[s.renderer]():s.renderer,"boolean"==typeof(s=s.display(t,n,function(){return i.call(r,o,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(s)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),b(i.table().body()).on("keyup.dtr","td, th",function(e){var t=d.activeElement.nodeName.toLowerCase();13!==e.keyCode||!b(this).data("dtr-keyboard")||"td"!==t&&"th"!==t||b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt,o=[];let s=r.settings()[0];return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return e=s.aoColumns[t],o[t]||(o[t]=r.column(t)),{className:e.sClass,columnIndex:t,data:s.fastData(n,t,i.c.orthogonal),hidden:o[t].visible()&&!i.s.current[t],rowIndex:n,title:o[t].title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),o=this.c.breakpoints,s=o[0].name,d=this.s.columns,a=this.s.current.slice(),l=o.length-1;0<=l;l--)if(t<=o[l].width){s=o[l].name;break}var c=this._columnsVisibility(s),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,o=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),s=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<o.count();l++)a.append("<td/>");this.c.details.renderer._responsiveMovesNodes?t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,o).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}):b(d).append(b(t.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display",""),d.find("th, td").css("display",""),t.table().footer.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(s)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,o){var r=this,s=i?"":"none";o.forEach(function(e,t){for(var n=0;n<e.length;n++)if(e[n]&&1<e[n].rowspan)for(var i=e[n].rowspan,r=1;r<i;r++)o[t+r][n]={}}),o.forEach(function(e){if(e[n]&&e[n].cell)b(e[n].cell).css("display",s).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]&&e[t].cell){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():("td:first-child, th:first-child"===i&&(i=">td:first-child, >th:first-child"),t=e.rows({page:"current"}).nodes(),"tr"===i?b(t):b(i,t))).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(s){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(o=b("div.dtr-modal-content")).length||e.index()!==o.data("dtr-row-idx"))return null;o.empty().append(n)}else{var r=function(){o.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},o=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return s&&s.header&&b("div.dtr-modal-content").prepend("<h2>"+s.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){function e(n,e,t){var i=this,r=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),o=!1;return b.each(t,function(e,t){t.hidden&&(b("<li "+(t.className?'class="'+t.className+'"':"")+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(i._childNodes(n,t.rowIndex,t.columnIndex))).appendTo(r),o=!0)}),!!o&&r}return e._responsiveMovesNodes=!0,e},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+(""!==e.title?e.title+":":"")+"</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.7",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
82
(o=>{var i,s;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return o(t,window,document)}):"object"==typeof exports?(i=require("jquery"),s=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||i(t),s(t,e),o(e,t,t.document)}:(s(window,i),module.exports=o(i,window,window.document))):o(jQuery,window,document)})(function(m,v,H){function s(t,e){if(!d.versionCheck("2"))throw"Warning: FixedHeader requires DataTables 2 or newer";if(!(this instanceof s))throw"FixedHeader must be initialised with the 'new' keyword.";if(!0===e&&(e={}),t=new d.Api(t),this.c=m.extend(!0,{},s.defaults,e),this.s={dt:t,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:m(v).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:t.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+o++,scrollLeft:{header:-1,footer:-1},enable:!0,autoDisable:!1},this.dom={floatingHeader:null,thead:m(t.table().header()),tbody:m(t.table().body()),tfoot:m(t.table().footer()),header:{host:null,scrollAdjust:null,floating:null,floatingParent:m('<div class="dtfh-floatingparent"><div class="dtfh-floating-limiter"><div></div></div></div>'),limiter:null,placeholder:null},footer:{host:null,scrollAdjust:null,floating:null,floatingParent:m('<div class="dtfh-floatingparent"><div class="dtfh-floating-limiter"><div></div></div></div>'),limiter:null,placeholder:null}},(e=this.dom).header.host=e.thead.parent(),e.header.limiter=e.header.floatingParent.children(),e.header.scrollAdjust=e.header.limiter.children(),e.footer.host=e.tfoot.parent(),e.footer.limiter=e.footer.floatingParent.children(),e.footer.scrollAdjust=e.footer.limiter.children(),(e=t.settings()[0])._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;(e._fixedHeader=this)._constructor()}var d=m.fn.dataTable,o=0;return m.extend(s.prototype,{destroy:function(){var t=this.dom;this.s.dt.off(".dtfc"),m("body").off(".dtfc"),m(v).off(this.s.namespace),t.header.rightBlocker&&t.header.rightBlocker.remove(),t.header.leftBlocker&&t.header.leftBlocker.remove(),t.footer.rightBlocker&&t.footer.rightBlocker.remove(),t.footer.leftBlocker&&t.footer.leftBlocker.remove(),this.c.header&&this._modeChange("in-place","header",!0),this.c.footer&&t.tfoot.length&&this._modeChange("in-place","footer",!0)},enable:function(t,e,o){this.s.enable=t,this.s.enableType=o,!e&&void 0!==e||(this._positions(),this._scroll(!0))},enabled:function(){return this.s.enable},headerOffset:function(t){return void 0!==t&&(this.c.headerOffset=t,this.update()),this.c.headerOffset},footerOffset:function(t){return void 0!==t&&(this.c.footerOffset=t,this.update()),this.c.footerOffset},update:function(t){var e=this.s.dt.table().node();(this.s.enable||this.s.autoDisable)&&(m(e).is(":visible")?(this.s.autoDisable=!1,this.enable(!0,!1)):(this.s.autoDisable=!0,this.enable(!1,!1)),0!==m(e).children("thead").length)&&(this._positions(),this._scroll(void 0===t||t),this._widths(this.dom.header),this._widths(this.dom.footer))},_constructor:function(){var o=this,i=this.s.dt,t=(m(v).on("scroll"+this.s.namespace,function(){o._scroll()}).on("resize"+this.s.namespace,d.util.throttle(function(){o.s.position.windowHeight=m(v).height(),o.update()},50)),m(".fh-fixedHeader")),t=(!this.c.headerOffset&&t.length&&(this.c.headerOffset=t.outerHeight()),m(".fh-fixedFooter"));!this.c.footerOffset&&t.length&&(this.c.footerOffset=t.outerHeight()),i.on("column-reorder.dt.dtfc column-visibility.dt.dtfc column-sizing.dt.dtfc responsive-display.dt.dtfc",function(t,e){o.update()}),m("body").on("draw.dt.dtfc",function(t,e){o.update(e!==i.settings()[0])}),i.on("destroy.dtfc",function(){o.destroy()}),this._positions(),this._scroll()},_clone:function(t,e){var o,i,s=this,d=this.s.dt,r=this.dom[t],n="header"===t?this.dom.thead:this.dom.tfoot;if("footer"!==t||!this._scrollEnabled())return e||!r.floating?(r.floating&&(null!==r.placeholder&&r.placeholder.detach(),r.floating.detach()),e=m(d.table().node()),o=m(e.parent()),i=this._scrollEnabled(),r.floating=m(d.table().node().cloneNode(!1)).attr("aria-hidden","true").css({top:0,left:0}).removeAttr("id"),r.floatingParent.css({width:o[0].offsetWidth,position:"fixed",left:i?e.offset().left+o.scrollLeft():0}).css("header"===t?{top:this.c.headerOffset,bottom:""}:{top:"",bottom:this.c.footerOffset}).addClass("footer"===t?"dtfh-floatingparent-foot":"dtfh-floatingparent-head").appendTo("body").children().eq(0),r.limiter.css({width:"100%",overflow:"hidden",height:"fit-content"}),r.scrollAdjust.append(r.floating),this._stickyPosition(r.floating,"-"),(i=function(){var t=o.scrollLeft();s.s.scrollLeft={footer:t,header:t},r.limiter.scrollLeft(s.s.scrollLeft.header)})(),o.off("scroll.dtfh").on("scroll.dtfh",i),r.scrollAdjust.css({width:"fit-content",paddingRight:s.s.dt.settings()[0].oBrowser.barWidth}),(e=m("footer"===t?"div.dtfc-bottom-blocker":"div.dtfc-top-blocker",d.table().container())).length&&e.clone().appendTo(r.floatingParent).css({position:"fixed",right:e.width()}),r.placeholder=n.clone(!1),r.placeholder.find("*[id]").removeAttr("id"),m(r.placeholder).insertAfter(m("header"===t?"colgroup":"tbody",r.host)),r.floating.append(n),this._widths(r),i):void r.floating.removeClass("fixedHeader-floating fixedHeader-locked")},_stickyPosition:function(t,e){var i;this._scrollEnabled()&&(i="rtl"===m(this.s.dt.table().node()).css("direction"),t.find("th").each(function(){var t,e,o;"sticky"===m(this).css("position")&&(t=m(this).css("right"),e=m(this).css("left"),"auto"===t||i?"auto"!==e&&i&&(o=+e.replace(/px/g,""),m(this).css("left",0<o?o:0)):(o=+t.replace(/px/g,""),m(this).css("right",0<o?o:0)))}))},_horizontal:function(t,e){var o,i=this.dom[t],s=this.s.scrollLeft;i.floating&&s[t]!==e&&(this._scrollEnabled()&&(o=m(m(this.s.dt.table().node()).parent()).scrollLeft(),i.floating.scrollLeft(o),i.floatingParent.scrollLeft(o)),s[t]=e)},_modeChange:function(t,e,o){var i,s,d,r,n,l,a,f,h=this.s.dt,c=this.dom[e],g=this.s.position,p=this._scrollEnabled();"footer"===e&&p||(i=function(t){c.floating[0].style.setProperty("width",t+"px","important"),p||c.floatingParent[0].style.setProperty("width",t+"px","important")},d=this.dom["footer"===e?"tfoot":"thead"],s=m.contains(d[0],H.activeElement)?H.activeElement:null,l=m(m(this.s.dt.table().node()).parent()),"in-place"===t?(c.placeholder&&(c.placeholder.remove(),c.placeholder=null),m.contains(c.host[0],d[0])||("header"===e?d.insertAfter(m("colgroup",c.host)):c.host.append(d)),c.floating&&(c.floating.remove(),c.floating=null,this._stickyPosition(c.host,"+")),c.floatingParent&&(c.floatingParent.find("div.dtfc-top-blocker").remove(),c.floatingParent.remove()),m(m(c.host.parent()).parent()).scrollLeft(l.scrollLeft())):"in"===t?(d=this._clone(e,o),n=l.offset(),f=(r=m(H).scrollTop())+m(v).height(),a=p?n.top:g.tbodyTop,n=p?n.top+l.outerHeight():g.tfootTop,l="footer"===e?f<a?g.tfootHeight:a+g.tfootHeight-f:r+this.c.headerOffset+g.theadHeight-n,a="header"===e?"top":"bottom",f=this.c[e+"Offset"]-(0<l?l:0),c.floating.addClass("fixedHeader-floating"),c.floatingParent.css(a,f).css({left:g.left,"z-index":3}),i(g.width),d&&d(),"footer"===e&&c.floating.css("top","")):"below"===t?(this._clone(e,o),c.floating.addClass("fixedHeader-locked"),c.floatingParent.css({position:"absolute",top:g.tfootTop-g.theadHeight,left:g.left+"px"}),i(g.width)):"above"===t&&(this._clone(e,o),c.floating.addClass("fixedHeader-locked"),c.floatingParent.css({position:"absolute",top:g.tbodyTop,left:g.left+"px"}),i(g.width)),s&&s!==H.activeElement&&setTimeout(function(){s.focus()},10),this.s.scrollLeft.header=-1,this.s.scrollLeft.footer=-1,this.s[e+"Mode"]=t,h.trigger("fixedheader-mode",[t,e]))},_positions:function(){var t=this.s.dt,e=t.table(),o=this.s.position,i=this.dom,e=m(e.node()),s=this._scrollEnabled(),d=m(t.table().header()),t=m(t.table().footer()),i=i.tbody,r=e.parent();o.visible=e.is(":visible"),o.width=e.outerWidth(),o.left=e.offset().left,o.theadTop=d.offset().top,o.tbodyTop=(s?r:i).offset().top,o.tbodyHeight=(s?r:i).outerHeight(),o.theadHeight=d.outerHeight(),o.theadBottom=o.theadTop+o.theadHeight,o.tfootTop=o.tbodyTop+o.tbodyHeight,t.length?(o.tfootBottom=o.tfootTop+t.outerHeight(),o.tfootHeight=t.outerHeight()):(o.tfootBottom=o.tfootTop,o.tfootHeight=0)},_scroll:function(t){var e,o,i,s,d,r,n,l,a,f,h,c,g,p,u,b;this.s.dt.settings()[0].bDestroying||(e=this._scrollEnabled(),i=(o=m(this.s.dt.table().node()).parent()).offset(),c=o.outerHeight(),s=m(H).scrollLeft(),d=m(H).scrollTop(),r=m(v).height()+d,g=this.s.position,b=e?i.top:g.tbodyTop,l=(e?i:g).left,c=e?i.top+c:g.tfootTop,a=e?o.outerWidth():g.tbodyWidth,this.c.header&&(!this.s.enable||!g.visible||d+this.c.headerOffset+g.theadHeight<=b?f="in-place":d+this.c.headerOffset+g.theadHeight>b&&d+this.c.headerOffset+g.theadHeight<c?(f="in",d+this.c.headerOffset+g.theadHeight>c||void 0===this.dom.header.floatingParent?t=!0:0===(h=this.dom.header.floatingParent.css({top:this.c.headerOffset,position:"fixed"}).children().eq(0)).find(this.dom.header.floating).length&&h.append(this.dom.header.floating)):f="below",!t&&f===this.s.headerMode||this._modeChange(f,"header",t),this._horizontal("header",s)),p={offset:{top:0,left:0},height:0},u={offset:{top:0,left:0},height:0},this.c.footer&&this.dom.tfoot.length&&this.dom.tfoot.find("th, td").length&&(!this.s.enable||!g.visible||g.tfootBottom+this.c.footerOffset<=r?n="in-place":c+g.tfootHeight+this.c.footerOffset>r&&b+this.c.footerOffset<r?(n="in",t=!0):n="above",!t&&n===this.s.footerMode||this._modeChange(n,"footer",t),this._horizontal("footer",s),h=function(t){return{offset:t.offset(),height:t.outerHeight()}},p=this.dom.header.floating?h(this.dom.header.floating):h(this.dom.thead),u=this.dom.footer.floating?h(this.dom.footer.floating):h(this.dom.tfoot),e)&&u.offset.top>d&&(g=r+((c=d-i.top)>-p.height?c:0)-(p.offset.top+(c<-p.height?p.height:0)+u.height),o.outerHeight(g=g<0?0:g),Math.round(o.outerHeight())>=Math.round(g)?m(this.dom.tfoot.parent()).addClass("fixedHeader-floating"):m(this.dom.tfoot.parent()).removeClass("fixedHeader-floating")),this.dom.header.floating&&this.dom.header.floatingParent.css("left",l-s),this.dom.footer.floating&&this.dom.footer.floatingParent.css("left",l-s),void 0!==this.s.dt.settings()[0]._fixedColumns&&(this.dom.header.rightBlocker=(b=function(t,e,o){var i;return null!==(o=void 0===o?0===(i=m("div.dtfc-"+t+"-"+e+"-blocker")).length?null:i.clone().css("z-index",1):o)&&("in"===f||"below"===f?o.appendTo("body").css({top:("top"===e?p:u).offset.top,left:"right"===t?l+a-o.width():l}):o.detach()),o})("right","top",this.dom.header.rightBlocker),this.dom.header.leftBlocker=b("left","top",this.dom.header.leftBlocker),this.dom.footer.rightBlocker=b("right","bottom",this.dom.footer.rightBlocker),this.dom.footer.leftBlocker=b("left","bottom",this.dom.footer.leftBlocker)))},_scrollEnabled:function(){var t=this.s.dt.settings()[0].oScroll;return""!==t.sY||""!==t.sX},_widths:function(t){if(t&&t.placeholder)for(var e=m(this.s.dt.table().node()),o=m(e.parent()),i=(t.floatingParent.css("width",o[0].offsetWidth),t.floating.css("width",e[0].offsetWidth),m("colgroup",t.floating).remove(),t.placeholder.parent().find("colgroup").clone().appendTo(t.floating).find("col")),s=this.s.dt.columns(":visible").widths(),d=0;d<s.length;d++)i.eq(d).css("width",s[d])}}),s.version="4.0.6",s.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0},m.fn.dataTable.FixedHeader=s,m.fn.DataTable.FixedHeader=s,m(H).on("init.dt.dtfh",function(t,e,o){var i;"dt"===t.namespace&&(t=e.oInit.fixedHeader,i=d.defaults.fixedHeader,t||i)&&!e._fixedHeader&&(i=m.extend({},i,t),!1!==t)&&new s(e,i)}),d.Api.register("fixedHeader()",function(){}),d.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(t){t=t._fixedHeader;t&&t.update()})}),d.Api.register("fixedHeader.enable()",function(e){return this.iterator("table",function(t){t=t._fixedHeader;e=void 0===e||e,t&&e!==t.enabled()&&t.enable(e)})}),d.Api.register("fixedHeader.enabled()",function(){if(this.context.length){var t=this.context[0]._fixedHeader;if(t)return t.enabled()}return!1}),d.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(t){t=t._fixedHeader;t&&t.enabled()&&t.enable(!1)})}),m.each(["header","footer"],function(t,o){d.Api.register("fixedHeader."+o+"Offset()",function(e){var t=this.context;return void 0===e?t.length&&t[0]._fixedHeader?t[0]._fixedHeader[o+"Offset"]():void 0:this.iterator("table",function(t){t=t._fixedHeader;t&&t[o+"Offset"](e)})})}),d});
83
84
/*! Responsive 3.0.8
85
 * © SpryMedia Ltd - datatables.net/license
86
 */
87
(n=>{var i,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return n(e,window,document)}):"object"==typeof exports?(i=require("jquery"),r=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||i(e),r(e,t),n(t,e,e.document)}:(r(window,i),module.exports=n(i,window,window.document))):n(jQuery,window,document)})(function(b,y,d){function a(e,t){if(!i.versionCheck||!i.versionCheck("2"))throw"DataTables Responsive requires DataTables 2 or newer";this.s={childNodeStore:{},columns:[],current:[],dt:new i.Api(e)},this.s.dt.settings()[0].responsive||(t&&"string"==typeof t.details?t.details={type:t.details}:t&&!1===t.details?t.details={type:!1}:t&&!0===t.details&&(t.details={type:"inline"}),this.c=b.extend(!0,{},a.defaults,i.defaults.responsive,t),(e.responsive=this)._constructor())}var i=b.fn.dataTable,e=(b.extend(a.prototype,{_constructor:function(){var o=this,r=this.s.dt,t=b(y).innerWidth(),e=(r.settings()[0]._responsive=this,b(y).on("orientationchange.dtr",i.util.throttle(function(){var e=b(y).innerWidth();e!==t&&(o._resize(),t=e)})),r.on("row-created.dtr",function(e,t,n,i){-1!==b.inArray(!1,o.s.current)&&b(">td, >th",t).each(function(e){e=r.column.index("toData",e);!1===o.s.current[e]&&b(this).css("display","none").addClass("dtr-hidden")})}),r.on("destroy.dtr",function(){r.off(".dtr"),b(r.table().body()).off(".dtr"),b(y).off("resize.dtr orientationchange.dtr"),r.cells(".dtr-control").nodes().to$().removeClass("dtr-control"),b(r.table().node()).removeClass("dtr-inline collapsed"),b.each(o.s.current,function(e,t){!1===t&&o._setColumnVis(e,!0)})}),this.c.breakpoints.sort(function(e,t){return e.width<t.width?1:e.width>t.width?-1:0}),this._classLogic(),this.c.details);!1!==e.type&&(o._detailsInit(),r.on("column-visibility.dtr",function(){o._timer&&clearTimeout(o._timer),o._timer=setTimeout(function(){o._timer=null,o._classLogic(),o._resizeAuto(),o._resize(!0),o._redrawChildren()},100)}),r.on("draw.dtr",function(){o._redrawChildren()}),b(r.table().node()).addClass("dtr-"+e.type)),r.on("column-calc.dt",function(e,t){for(var n=o.s.current,i=0;i<n.length;i++){var r=t.visible.indexOf(i);!1===n[i]&&0<=r&&t.visible.splice(r,1)}}),r.on("preXhr.dtr",function(){var e=[];r.rows().every(function(){this.child.isShown()&&e.push(this.id(!0))}),r.one("draw.dtr",function(){o._resizeAuto(),o._resize(),r.rows(e).every(function(){o._detailsDisplay(this,!1)})})}),r.on("draw.dtr",function(){r.page.info().serverSide&&(o.s.childNodeStore={}),o._controlClass()}).ready(function(){o._resizeAuto(),o._resize(),r.on("column-sizing.dtr",function(){o._resizeAuto(),o._resize()})}),r.on("column-reorder.dtr",function(e,t,n){o._classLogic(),o._resizeAuto(),o._resize(!0)})},_colGroupAttach:function(e,t,n){var i=null;if(t[n].get(0).parentNode!==e[0]){for(var r=n+1;r<t.length;r++)if(e[0]===t[r].get(0).parentNode){i=r;break}null!==i?t[n].insertBefore(t[i][0]):e.append(t[n])}},_childNodes:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i])return this.s.childNodeStore[i];for(var r=[],o=e.cell(t,n).node().childNodes,s=0,d=o.length;s<d;s++)r.push(o[s]);return this.s.childNodeStore[i]=r},_childNodesRestore:function(e,t,n){var i=t+"-"+n;if(this.s.childNodeStore[i]){var r=e.cell(t,n).node(),e=this.s.childNodeStore[i];if(0<e.length){for(var o=e[0].parentNode.childNodes,s=[],d=0,a=o.length;d<a;d++)s.push(o[d]);for(var l=0,c=s.length;l<c;l++)r.appendChild(s[l])}this.s.childNodeStore[i]=void 0}},_columnsVisibility:function(n){for(var i=this.s.dt,e=this.s.columns,t=e.map(function(e,t){return{columnIdx:t,priority:e.priority}}).sort(function(e,t){return e.priority!==t.priority?e.priority-t.priority:e.columnIdx-t.columnIdx}),r=b.map(e,function(e,t){return!1===i.column(t).visible()?"not-visible":(!e.auto||null!==e.minWidth)&&(!0===e.auto?"-":-1!==b.inArray(n,e.includeIn))}),o=0,s=0,d=r.length;s<d;s++)!0===r[s]&&(o+=e[s].minWidth);var a=i.settings()[0].oScroll,a=a.sY||a.sX?a.iBarWidth:0,l=i.table().container().offsetWidth-a-o;for(s=0,d=r.length;s<d;s++)e[s].control&&(l-=e[s].minWidth);var c=!1;for(s=0,d=t.length;s<d;s++){var u=t[s].columnIdx;"-"===r[u]&&!e[u].control&&e[u].minWidth&&(c||l-e[u].minWidth<0?r[u]=!(c=!0):r[u]=!0,l-=e[u].minWidth)}var h=!1;for(s=0,d=e.length;s<d;s++)if(!e[s].control&&!e[s].never&&!1===r[s]){h=!0;break}for(s=0,d=e.length;s<d;s++)e[s].control&&(r[s]=h),"not-visible"===r[s]&&(r[s]=!1);return-1===b.inArray(!0,r)&&(r[0]=!0),r},_classLogic:function(){function d(e,t,n,i){var r,o,s;if(n){if("max-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width<=r&&u(e,l[o].name);else if("min-"===n)for(r=a._find(t).width,o=0,s=l.length;o<s;o++)l[o].width>=r&&u(e,l[o].name);else if("not-"===n)for(o=0,s=l.length;o<s;o++)-1===l[o].name.indexOf(i)&&u(e,l[o].name)}else c[e].includeIn.push(t)}var a=this,l=this.c.breakpoints,c=this.s.dt.columns().eq(0).map(function(e){var e=this.column(e),t=e.header().className,n=e.init().responsivePriority,e=e.header().getAttribute("data-priority");return void 0===n&&(n=null==e?1e4:+e),{className:t,includeIn:[],auto:!1,control:!1,never:!!t.match(/\b(dtr\-)?never\b/),priority:n}}),u=function(e,t){e=c[e].includeIn;-1===b.inArray(t,e)&&e.push(t)};c.each(function(e,r){for(var t=e.className.split(" "),o=!1,n=0,i=t.length;n<i;n++){var s=t[n].trim();if("all"===s||"dtr-all"===s)return o=!0,void(e.includeIn=b.map(l,function(e){return e.name}));if("none"===s||"dtr-none"===s||e.never)return void(o=!0);if("control"===s||"dtr-control"===s)return o=!0,void(e.control=!0);b.each(l,function(e,t){var n=t.name.split("-"),i=new RegExp("(min\\-|max\\-|not\\-)?("+n[0]+")(\\-[_a-zA-Z0-9])?"),i=s.match(i);i&&(o=!0,i[2]===n[0]&&i[3]==="-"+n[1]?d(r,t.name,i[1],i[2]+i[3]):i[2]!==n[0]||i[3]||d(r,t.name,i[1],i[2]))})}o||(e.auto=!0)}),this.s.columns=c},_controlClass:function(){var e,t,n;"inline"===this.c.details.type&&(e=this.s.dt,t=this.s.current,n=b.inArray(!0,t),e.cells(null,function(e){return e!==n},{page:"current"}).nodes().to$().filter(".dtr-control").removeClass("dtr-control"),0<=n)&&e.cells(null,n,{page:"current"}).nodes().to$().addClass("dtr-control"),this._tabIndexes()},_detailsDisplay:function(t,n){function e(e){b(t.node()).toggleClass("dtr-expanded",!1!==e),b(o.table().node()).triggerHandler("responsive-display.dt",[o,t,e,n])}var i,r=this,o=this.s.dt,s=this.c.details;s&&!1!==s.type&&(i="string"==typeof s.renderer?a.renderer[s.renderer]():s.renderer,"boolean"==typeof(s=s.display(t,n,function(){return i.call(r,o,t[0][0],r._detailsObj(t[0]))},function(){e(!1)})))&&e(s)},_detailsInit:function(){var n=this,i=this.s.dt,e=this.c.details,r=("inline"===e.type&&(e.target="td.dtr-control, th.dtr-control"),b(i.table().body()).on("keyup.dtr","td, th",function(e){var t=d.activeElement.nodeName.toLowerCase();13!==e.keyCode||!b(this).data("dtr-keyboard")||"td"!==t&&"th"!==t||b(this).click()}),e.target),e="string"==typeof r?r:"td, th";void 0===r&&null===r||b(i.table().body()).on("click.dtr mousedown.dtr mouseup.dtr",e,function(e){if(b(i.table().node()).hasClass("collapsed")&&-1!==b.inArray(b(this).closest("tr").get(0),i.rows().nodes().toArray())){if("number"==typeof r){var t=r<0?i.columns().eq(0).length+r:r;if(i.cell(this).index().column!==t)return}t=i.row(b(this).closest("tr"));"click"===e.type?n._detailsDisplay(t,!1):"mousedown"===e.type?b(this).css("outline","none"):"mouseup"===e.type&&b(this).trigger("blur").css("outline","")}})},_detailsObj:function(n){var i=this,r=this.s.dt,o=[];let s=r.settings()[0];return b.map(this.s.columns,function(e,t){if(!e.never&&!e.control)return e=s.aoColumns[t],o[t]||(o[t]=r.column(t)),{className:e.sClass,columnIndex:t,data:s.fastData(n,t,i.c.orthogonal),hidden:o[t].visible()&&!i.s.current[t],rowIndex:n,title:o[t].title()}})},_find:function(e){for(var t=this.c.breakpoints,n=0,i=t.length;n<i;n++)if(t[n].name===e)return t[n]},_redrawChildren:function(){var n=this,i=this.s.dt;i.rows({page:"current"}).iterator("row",function(e,t){n._detailsDisplay(i.row(t),!0)})},_resize:function(n){for(var e,i=this,r=this.s.dt,t=b(y).innerWidth(),o=this.c.breakpoints,s=o[0].name,d=this.s.columns,a=this.s.current.slice(),l=o.length-1;0<=l;l--)if(t<=o[l].width){s=o[l].name;break}var c=this._columnsVisibility(s),u=(this.s.current=c,!1);for(l=0,e=d.length;l<e;l++)if(!1===c[l]&&!d[l].never&&!d[l].control&&!1==!r.column(l).visible()){u=!0;break}b(r.table().node()).toggleClass("collapsed",u);var h=!1,p=0,f=r.settings()[0],m=b(r.table().node()).children("colgroup"),v=f.aoColumns.map(function(e){return e.colEl});r.columns().eq(0).each(function(e,t){r.column(e).visible()&&(!0===c[t]&&p++,!n&&c[t]===a[t]||(h=!0,i._setColumnVis(e,c[t])),c[t]?i._colGroupAttach(m,v,t):v[t].detach())}),h&&(r.columns.adjust(),this._redrawChildren(),b(r.table().node()).trigger("responsive-resize.dt",[r,this._responsiveOnlyHidden()]),0===r.page.info().recordsDisplay)&&b("td",r.table().body()).eq(0).attr("colspan",p),i._controlClass()},_resizeAuto:function(){var t=this.s.dt,n=this.s.columns,r=this,o=t.columns().indexes().filter(function(e){return t.column(e).visible()});if(this.c.auto&&-1!==b.inArray(!0,b.map(n,function(e){return e.auto}))){for(var e=t.table().node().cloneNode(!1),i=b(t.table().header().cloneNode(!1)).appendTo(e),s=b(t.table().footer().cloneNode(!1)).appendTo(e),d=b(t.table().body()).clone(!1,!1).empty().appendTo(e),a=(e.style.width="auto",t.table().header.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(i)}),b("<tr/>").appendTo(d)),l=0;l<o.count();l++)a.append("<td/>");this.c.details.renderer._responsiveMovesNodes?t.rows({page:"current"}).every(function(n){var i,e=this.node();e&&(i=e.cloneNode(!1),t.cells(n,o).every(function(e,t){t=r.s.childNodeStore[n+"-"+t];(t?b(this.node().cloneNode(!1)).append(b(t).clone()):b(this.node()).clone(!1)).appendTo(i)}),d.append(i))}):b(d).append(b(t.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display",""),d.find("th, td").css("display",""),t.table().footer.structure(o).forEach(e=>{e=e.filter(function(e){return!!e}).map(function(e){return b(e.cell).clone(!1).css("display","table-cell").css("width","auto").css("min-width",0)});b("<tr/>").append(e).appendTo(s)}),"inline"===this.c.details.type&&b(e).addClass("dtr-inline collapsed"),b(e).find("[name]").removeAttr("name"),b(e).css("position","relative");e=b("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(e);e.insertBefore(t.table().node()),a.children().each(function(e){e=t.column.index("fromVisible",e);n[e].minWidth=this.offsetWidth||0}),e.remove()}},_responsiveOnlyHidden:function(){var n=this.s.dt;return b.map(this.s.current,function(e,t){return!1===n.column(t).visible()||e})},_setColumnVis:function(e,t){var n=this,i=this.s.dt,r=t?"":"none";this._setHeaderVis(e,t,i.table().header.structure()),this._setHeaderVis(e,t,i.table().footer.structure()),i.column(e).nodes().to$().css("display",r).toggleClass("dtr-hidden",!t),i.settings()[0].aoColumns[e].responsiveVisible=t,b.isEmptyObject(this.s.childNodeStore)||i.cells(null,e).indexes().each(function(e){n._childNodesRestore(i,e.row,e.column)})},_setHeaderVis:function(n,i,o){var r=this,s=i?"":"none";o.forEach(function(e,t){for(var n=0;n<e.length;n++)if(e[n]&&1<e[n].rowspan)for(var i=e[n].rowspan,r=1;r<i;r++)o[t+r][n]={}}),o.forEach(function(e){if(e[n]&&e[n].cell)b(e[n].cell).css("display",s).toggleClass("dtr-hidden",!i);else for(var t=n;0<=t;){if(e[t]&&e[t].cell){e[t].cell.colSpan=r._colspan(e,t);break}t--}})},_colspan:function(e,t){for(var n=1,i=t+1;i<e.length;i++)if(null===e[i]&&this.s.current[i])n++;else if(e[i])break;return n},_tabIndexes:function(){var e=this.s.dt,t=e.cells({page:"current"}).nodes().to$(),n=e.settings()[0],i=this.c.details.target;t.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"),("number"==typeof i?e.cells(null,i,{page:"current"}).nodes().to$():("td:first-child, th:first-child"===i&&(i=">td:first-child, >th:first-child"),t=e.rows({page:"current"}).nodes(),"tr"===i?b(t):b(i,t))).attr("tabIndex",n.iTabIndex).data("dtr-keyboard",1)}}),a.defaults={breakpoints:a.breakpoints=[{name:"desktop",width:1/0},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}],auto:!0,details:{display:(a.display={childRow:function(e,t,n){var i=b(e.node());return t?i.hasClass("dtr-expanded")?(e.child(n(),"child").show(),!0):void 0:i.hasClass("dtr-expanded")?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},childRowImmediate:function(e,t,n){var i=b(e.node());return!t&&i.hasClass("dtr-expanded")||!e.responsive.hasHidden()?(e.child(!1),!1):!1!==(t=n())&&(e.child(t,"child").show(),!0)},modal:function(s){return function(e,t,n,i){n=n();if(!1===n)return!1;if(t){if(!(o=b("div.dtr-modal-content")).length||e.index()!==o.data("dtr-row-idx"))return null;o.empty().append(n)}else{var r=function(){o.remove(),b(d).off("keypress.dtr"),b(e.node()).removeClass("dtr-expanded"),i()},o=b('<div class="dtr-modal"/>').append(b('<div class="dtr-modal-display"/>').append(b('<div class="dtr-modal-content"/>').data("dtr-row-idx",e.index()).append(n)).append(b('<div class="dtr-modal-close">&times;</div>').click(function(){r()}))).append(b('<div class="dtr-modal-background"/>').click(function(){r()})).appendTo("body");b(e.node()).addClass("dtr-expanded"),b(d).on("keyup.dtr",function(e){27===e.keyCode&&(e.stopPropagation(),r())})}return s&&s.header&&b("div.dtr-modal-content").prepend("<h2>"+s.header(e)+"</h2>"),!0}}}).childRow,renderer:(a.renderer={listHiddenNodes:function(){function e(i,e,t){var r=this,o=b('<ul data-dtr-index="'+e+'" class="dtr-details"/>'),s=!1;return b.each(t,function(e,t){var n;t.hidden&&(n=t.className?'class="'+t.className+'"':"",b("<li "+n+' data-dtr-index="'+t.columnIndex+'" data-dt-row="'+t.rowIndex+'" data-dt-column="'+t.columnIndex+'"><span class="dtr-title">'+t.title+"</span> </li>").append(b('<span class="dtr-data"/>').append(r._childNodes(i,t.rowIndex,t.columnIndex))).appendTo(o),s=!0)}),!!s&&o}return e._responsiveMovesNodes=!0,e},listHidden:function(){return function(e,t,n){n=b.map(n,function(e){var t=e.className?'class="'+e.className+'"':"";return e.hidden?"<li "+t+' data-dtr-index="'+e.columnIndex+'" data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><span class="dtr-title">'+e.title+'</span> <span class="dtr-data">'+e.data+"</span></li>":""}).join("");return!!n&&b('<ul data-dtr-index="'+t+'" class="dtr-details"/>').append(n)}},tableAll:function(i){return i=b.extend({tableClass:""},i),function(e,t,n){n=b.map(n,function(e){return"<tr "+(e.className?'class="'+e.className+'"':"")+' data-dt-row="'+e.rowIndex+'" data-dt-column="'+e.columnIndex+'"><td>'+(""!==e.title?e.title+":":"")+"</td> <td>"+e.data+"</td></tr>"}).join("");return b('<table class="'+i.tableClass+' dtr-details" width="100%"/>').append(n)}}}).listHidden(),target:0,type:"inline"},orthogonal:"display"},b.fn.dataTable.Api);return e.register("responsive()",function(){return this}),e.register("responsive.index()",function(e){return{column:(e=b(e)).data("dtr-index"),row:e.parent().data("dtr-index")}}),e.register("responsive.rebuild()",function(){return this.iterator("table",function(e){e._responsive&&e._responsive._classLogic()})}),e.register("responsive.recalc()",function(){return this.iterator("table",function(e){e._responsive&&(e._responsive._resizeAuto(),e._responsive._resize())})}),e.register("responsive.hasHidden()",function(){var e=this.context[0];return!!e._responsive&&-1!==b.inArray(!1,e._responsive._responsiveOnlyHidden())}),e.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(e,t){return!!e._responsive&&e._responsive._responsiveOnlyHidden()[t]},1)}),a.version="3.0.8",b.fn.dataTable.Responsive=a,b.fn.DataTable.Responsive=a,b(d).on("preInit.dt.dtr",function(e,t,n){"dt"===e.namespace&&(b(t.nTable).hasClass("responsive")||b(t.nTable).hasClass("dt-responsive")||t.oInit.responsive||i.defaults.responsive)&&!1!==(e=t.oInit.responsive)&&new a(t,b.isPlainObject(e)?e:{})}),i});
58
88
59
/*! DataTables styling wrapper for Responsive
89
/*! DataTables styling wrapper for Responsive
60
 * © SpryMedia Ltd - datatables.net/license
90
 * © SpryMedia Ltd - datatables.net/license
Lines 116-118 return DataTable; Link Here
116
}));
146
}));
117
147
118
148
119
- 
149
/*! RowGroup 1.6.0
150
 * © SpryMedia Ltd - datatables.net/license
151
 */
152
!function(e){var n,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(n=require("jquery"),o=function(t,r){r.fn.dataTable||require("datatables.net")(t,r)},"undefined"==typeof window?module.exports=function(t,r){return t=t||window,r=r||n(t),o(t,r),e(r,0,t.document)}:(o(window,n),module.exports=e(n,window,window.document))):e(jQuery,window,document)}(function(i,t,r){"use strict";function a(t,r){if(!l.versionCheck||!l.versionCheck("2"))throw new Error("RowGroup requires DataTables 2 or newer");if(this.c=i.extend(!0,{},l.defaults.rowGroup,a.defaults,r),this.s={dt:new l.Api(t)},this.dom={},r=this.s.dt.settings()[0],t=r.rowGroup)return t;(r.rowGroup=this)._constructor()}var l=i.fn.dataTable;return i.extend(a.prototype,{dataSrc:function(t){var r;return void 0===t?this.c.dataSrc:(r=this.s.dt,this.c.dataSrc=t,i(r.table().node()).triggerHandler("rowgroup-datasrc.dt",[r,t]),this)},disable:function(){return this.c.enable=!1,this},enable:function(t){return!1===t?this.disable():(this.c.enable=!0,this)},enabled:function(){return this.c.enable},_constructor:function(){var e=this,t=this.s.dt,n=t.settings()[0],o=i("div.dt-scroll-body",t.table().container()),a=(t.on("draw.dtrg",function(t,r){e.c.enable&&n===r&&(e._draw(),a)&&o.scrollTop()&&(o.scrollTop(a),a=null)}),t.on("column-visibility.dt.dtrg responsive-resize.dt.dtrg",function(){e._adjustColspan()}),t.on("destroy",function(){t.off(".dtrg")}),null);o.length&&t.on("preDraw",function(){a=o.scrollTop()})},_adjustColspan:function(){var t=i("tr."+this.c.className,this.s.dt.table().body()).find("th:visible, td:visible");1===t.length&&t.attr("colspan",this._colspan())},_colspan:function(){return this.s.dt.columns().visible().reduce(function(t,r){return t+r},0)},_draw:function(){var t=this.s.dt;null===this.c.dataSrc||Array.isArray(this.c.dataSrc)&&0===this.c.dataSrc.length||(t=this._group(0,t.rows({page:"current"}).indexes()),this._groupDisplay(0,t))},_group:function(t,r){for(var e,n=Array.isArray(this.c.dataSrc)?this.c.dataSrc:[this.c.dataSrc],o=l.util.get(n[t]),a=this.s.dt,i=[],s=0,d=r.length;s<d;s++){var u,c=r[s];null==(u=o(a.row(c).data(),t))&&(u=this.c.emptyDataGroup),void 0!==e&&u===e||(i.push({dataPoint:u,rows:[]}),e=u),i[i.length-1].rows.push(c)}if(void 0!==n[t+1])for(s=0,d=i.length;s<d;s++)i[s].children=this._group(t+1,i[s].rows);return i},_groupDisplay:function(t,r){for(var e,n=this.s.dt,o=0,a=r.length;o<a;o++){var i,s=r[o],d=s.dataPoint,u=s.rows;this.c.startRender&&(e=this.c.startRender.call(this,n.rows(u),d,t),i=this._rowWrap(e,this.c.startClassName,t))&&i.insertBefore(n.row(u[0]).node()),this.c.endRender&&(e=this.c.endRender.call(this,n.rows(u),d,t),i=this._rowWrap(e,this.c.endClassName,t))&&i.insertAfter(n.row(u[u.length-1]).node()),s.children&&this._groupDisplay(t+1,s.children)}},_rowWrap:function(t,r,e){return null==(t=null!==t&&""!==t?t:this.c.emptyDataGroup)?null:("object"==typeof t&&t.nodeName&&"tr"===t.nodeName.toLowerCase()?i(t):t instanceof i&&t.length&&"tr"===t[0].nodeName.toLowerCase()?t:i("<tr/>").append(i("<th/>").attr("colspan",this._colspan()).attr("scope","row").append(t))).addClass(this.c.className).addClass(r).addClass("dtrg-level-"+e)}}),a.defaults={className:"dtrg-group",dataSrc:0,emptyDataGroup:"No group",enable:!0,endClassName:"dtrg-end",endRender:null,startClassName:"dtrg-start",startRender:function(t,r){return r}},a.version="1.6.0",i.fn.dataTable.RowGroup=a,i.fn.DataTable.RowGroup=a,l.Api.register("rowGroup()",function(){return this}),l.Api.register("rowGroup().disable()",function(){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(!1)})}),l.Api.register("rowGroup().enable()",function(r){return this.iterator("table",function(t){t.rowGroup&&t.rowGroup.enable(void 0===r||r)})}),l.Api.register("rowGroup().enabled()",function(){var t=this.context;return!(!t.length||!t[0].rowGroup)&&t[0].rowGroup.enabled()}),l.Api.register("rowGroup().dataSrc()",function(r){var t;return void 0===r?(t=this.context[0].rowGroup)?t.dataSrc():[]:this.iterator("table",function(t){t.rowGroup||new a(this.context[0]),t.rowGroup.dataSrc(r)})}),i(r).on("preInit.dt.dtrg",function(t,r,e){var n,o;"dt"===t.namespace&&(t=r.oInit.rowGroup,n=l.defaults.rowGroup,t||n)&&(o=i.extend({},n,t),!1!==t)&&new a(r,o)}),l});
153
154
/*! RowReorder 1.5.1
155
 * © SpryMedia Ltd - datatables.net/license
156
 */
157
(o=>{var r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(){return o(window,document)}):"object"==typeof exports?(r=function(t){t.DataTable||require("datatables.net")(t)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,r(t),o(t,t.document)}:(r(window),module.exports=o(window,window.document))):o(window,document)})(function(d,l){function s(t,e){if(!i.versionCheck||!i.versionCheck("1.11"))throw"DataTables RowReorder requires DataTables 1.11 or newer";if(this.c=$.extend(!0,{},i.defaults.rowReorder,s.defaults,e),this.s={bodyTop:null,dt:new i.Api(t),getDataFn:i.util.get(this.c.dataSrc),middles:null,scroll:{},scrollInterval:null,setDataFn:i.util.set(this.c.dataSrc),start:{top:0,left:0,offsetTop:0,offsetLeft:0,nodes:[],rowIndex:0},windowHeight:0,documentOuterHeight:0,domCloneOuterHeight:0,dropAllowed:!0},this.dom={clone:null,cloneParent:null,dtScroll:$("div.dataTables_scrollBody, div.dt-scroll-body",this.s.dt.table().container())},e=this.s.dt.settings()[0],t=e.rowreorder)return t;this.dom.dtScroll.length||(this.dom.dtScroll=$(this.s.dt.table().container(),"tbody")),(e.rowreorder=this)._constructor()}var i=d.DataTable,t=($.extend(s.prototype,{_constructor:function(){var r=this,n=this.s.dt,t=$(n.table().node());"static"===t.css("position")&&t.css("position","relative"),$(n.table().container()).on("mousedown.rowReorder touchstart.rowReorder",this.c.selector,function(t){var e,o;if(r.c.enable)return!!$(t.target).is(r.c.excludedChildren)||(e=$(this).closest("tr"),(o=n.row(e)).any()?(r._emitEvent("pre-row-reorder",{node:o.node(),index:o.index()}),r._mouseDown(t,e),!1):void 0)}),n.on("destroy.rowReorder",function(){$(n.table().container()).off(".rowReorder"),n.off(".rowReorder")}),this._keyup=this._keyup.bind(this)},_cachePositions:function(){var t=this.s.dt,r=$(t.table().node()).find("thead").outerHeight(),e=$.uniqueSort(t.rows({page:"current"}).nodes().toArray()),e=$.map(e,function(t,e){var o=$(t).position().top-r;return(o+o+$(t).outerHeight())/2});this.s.middles=e,this.s.bodyTop=$(t.table().body()).offset().top,this.s.windowHeight=$(d).height(),this.s.documentOuterHeight=$(l).outerHeight(),this.s.bodyArea=this._calcBodyArea()},_clone:function(t){var e=this.s.dt,e=$(e.table().node().cloneNode(!1)).addClass("dt-rowReorder-float").append("<tbody/>").append(t.clone(!1)),o=t.outerWidth(),r=t.outerHeight(),n=$($(this.s.dt.table().node()).parent()),s=n.width(),n=n.scrollLeft(),i=t.children().map(function(){return $(this).width()}),t=(e.width(o).height(r).find("tr").children().each(function(t){this.style.width=i[t]+"px"}),$("<div>").addClass("dt-rowReorder-float-parent").width(s).append(e).appendTo("body").scrollLeft(n));this.dom.clone=e,this.dom.cloneParent=t,this.s.domCloneOuterHeight=e.outerHeight()},_clonePosition:function(t){var e=this.s.start,o=this._eventToPage(t,"Y")-e.top,t=this._eventToPage(t,"X")-e.left,r=this.c.snapX,o=o+e.offsetTop,r=!0===r?e.offsetLeft:"number"==typeof r?e.offsetLeft+r:t+e.offsetLeft+this.dom.cloneParent.scrollLeft();o<0?o=0:o+this.s.domCloneOuterHeight>this.s.documentOuterHeight&&(o=this.s.documentOuterHeight-this.s.domCloneOuterHeight),this.dom.cloneParent.css({top:o,left:r})},_emitEvent:function(o,r){var n;return this.s.dt.iterator("table",function(t,e){t=$(t.nTable).triggerHandler(o+".dt",r);void 0!==t&&(n=t)}),n},_eventToPage:function(t,e){return(-1!==t.type.indexOf("touch")?t.originalEvent.touches[0]:t)["page"+e]},_mouseDown:function(t,e){var o=this,r=this.s.dt,n=this.s.start,s=this.c.cancelable,i=e.offset(),i=(n.top=this._eventToPage(t,"Y"),n.left=this._eventToPage(t,"X"),n.offsetTop=i.top,n.offsetLeft=i.left,n.nodes=$.uniqueSort(r.rows({page:"current"}).nodes().toArray()),this._cachePositions(),this._clone(e),this._clonePosition(t),this._eventToPage(t,"Y")-this.s.bodyTop),r=(n.rowIndex=this._calcRowIndexByPos(i),(this.dom.target=e).addClass("dt-rowReorder-moving"),$(l).on("mouseup.rowReorder touchend.rowReorder",function(t){o._mouseUp(t)}).on("mousemove.rowReorder touchmove.rowReorder",function(t){o._mouseMove(t)}),$(d).width()===$(l).width()&&$(l.body).addClass("dt-rowReorder-noOverflow"),this.dom.dtScroll);this.s.scroll={windowHeight:$(d).height(),windowWidth:$(d).width(),dtTop:r.length?r.offset().top:null,dtLeft:r.length?r.offset().left:null,dtHeight:r.length?r.outerHeight():null,dtWidth:r.length?r.outerWidth():null},s&&$(l).on("keyup",this._keyup)},_mouseMove:function(t){this._clonePosition(t);for(var e,o,r=this.s.start,n=this.c.cancelable,s=(n&&(e=this.s.bodyArea,o=this._calcCloneParentArea(),this.s.dropAllowed=this._rectanglesIntersect(e,o),$(this.dom.cloneParent).toggleClass("drop-not-allowed",!this.s.dropAllowed)),this._eventToPage(t,"Y")-this.s.bodyTop),i=this.s.middles,d=null,l=0,a=i.length;l<a;l++)if(s<i[l]){d=l;break}null===d&&(d=i.length),n&&(this.s.dropAllowed||(d=r.rowIndex>this.s.lastInsert?r.rowIndex+1:r.rowIndex),this.dom.target.toggleClass("dt-rowReorder-moving",this.s.dropAllowed)),this._moveTargetIntoPosition(d),this._shiftScroll(t)},_mouseUp:function(t){var e=this,o=this.s.dt,r=this.c.dataSrc;if(this.s.dropAllowed){for(var n,s,i,d=this.s.start.nodes,l=$.uniqueSort(o.rows({page:"current"}).nodes().toArray()),a={},c=[],h=[],u=this.s.getDataFn,f=this.s.setDataFn,w=0,p=d.length;w<p;w++)d[w]!==l[w]&&(n=o.row(l[w]).id(),s=o.row(l[w]).data(),i=o.row(d[w]).data(),n&&(a[n]=u(i)),c.push({node:l[w],oldData:u(s),newData:u(i),newPosition:w,oldPosition:$.inArray(l[w],d)}),h.push(l[w]));var g,m=[c,{dataSrc:r,nodes:h,values:a,triggerRow:o.row(this.dom.target),originalEvent:t}];!1===this._emitEvent("row-reorder",m)?e._cancel():(this._cleanupDragging(),g=function(){if(e.c.update){for(w=0,p=c.length;w<p;w++){var t=o.row(c[w].node).data();f(t,c[w].newData),o.columns().every(function(){this.dataSrc()===r&&o.cell(c[w].node,this.index()).invalidate("data")})}e._emitEvent("row-reordered",m),o.draw(!1)}},this.c.editor?(this.c.enable=!1,this.c.editor.edit(h,!1,$.extend({submit:"changed"},this.c.formOptions)).multiSet(r,a).one("preSubmitCancelled.rowReorder",function(){e.c.enable=!0,e.c.editor.off(".rowReorder"),o.draw(!1)}).one("submitUnsuccessful.rowReorder",function(){o.draw(!1)}).one("submitSuccess.rowReorder",function(){g()}).one("submitComplete",function(){e.c.enable=!0,e.c.editor.off(".rowReorder")}).submit()):g())}else e._cancel()},_moveTargetIntoPosition:function(t){var e,o,r=this.s.dt;null!==this.s.lastInsert&&this.s.lastInsert===t||(e=$.uniqueSort(r.rows({page:"current"}).nodes().toArray()),o="",o=t>this.s.lastInsert?(this.dom.target.insertAfter(e[t-1]),"after"):(this.dom.target.insertBefore(e[t]),"before"),this._cachePositions(),this.s.lastInsert=t,this._emitEvent("row-reorder-changed",{insertPlacement:o,insertPoint:t,row:r.row(this.dom.target)}))},_cleanupDragging:function(){var t=this.c.cancelable;this.dom.clone.remove(),this.dom.cloneParent.remove(),this.dom.clone=null,this.dom.cloneParent=null,this.dom.target.removeClass("dt-rowReorder-moving"),$(l).off(".rowReorder"),$(l.body).removeClass("dt-rowReorder-noOverflow"),clearInterval(this.s.scrollInterval),this.s.scrollInterval=null,t&&$(l).off("keyup",this._keyup)},_shiftScroll:function(t){var e,o,r=this,n=this.s.scroll,s=!1,i=t.pageY-l.body.scrollTop;i<$(d).scrollTop()+65?e=-5:i>n.windowHeight+$(d).scrollTop()-65&&(e=5),null!==n.dtTop&&t.pageY<n.dtTop+65?o=-5:null!==n.dtTop&&t.pageY>n.dtTop+n.dtHeight-65&&(o=5),e||o?(n.windowVert=e,n.dtVert=o,s=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null),!this.s.scrollInterval&&s&&(this.s.scrollInterval=setInterval(function(){var t;n.windowVert&&(t=$(l).scrollTop(),$(l).scrollTop(t+n.windowVert),t!==$(l).scrollTop())&&(t=parseFloat(r.dom.cloneParent.css("top")),r.dom.cloneParent.css("top",t+n.windowVert)),n.dtVert&&(t=r.dom.dtScroll[0],n.dtVert)&&(t.scrollTop+=n.dtVert)},20))},_calcBodyArea:function(t){var e=this.s.dt,o=$(e.table().body()).offset();return{left:o.left,top:o.top,right:o.left+$(e.table().body()).width(),bottom:o.top+$(e.table().body()).height()}},_calcCloneParentArea:function(t){var e=$(this.dom.cloneParent).offset();return{left:e.left,top:e.top,right:e.left+$(this.dom.cloneParent).width(),bottom:e.top+$(this.dom.cloneParent).height()}},_rectanglesIntersect:function(t,e){return!(t.left>=e.right||e.left>=t.right||t.top>=e.bottom||e.top>=t.bottom)},_calcRowIndexByPos:function(r){var t=this.s.dt,e=$.uniqueSort(t.rows({page:"current"}).nodes().toArray()),n=-1,s=$(t.table().node()).find("thead").outerHeight();return $.each(e,function(t,e){var o=$(e).position().top-s,e=o+$(e).outerHeight();o<=r&&r<=e&&(n=t)}),n},_keyup:function(t){this.c.cancelable&&27===t.which&&(t.preventDefault(),this._cancel())},_cancel:function(){var t=this.s.start,t=t.rowIndex>this.s.lastInsert?t.rowIndex+1:t.rowIndex;this._moveTargetIntoPosition(t),this._cleanupDragging(),this._emitEvent("row-reorder-canceled",[this.s.start.rowIndex])}}),s.defaults={dataSrc:0,editor:null,enable:!0,formOptions:{},selector:"td:first-child",snapX:!1,update:!0,excludedChildren:"a",cancelable:!1},$.fn.dataTable.Api);return t.register("rowReorder()",function(){return this}),t.register("rowReorder.enable()",function(e){return void 0===e&&(e=!0),this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=e)})}),t.register("rowReorder.disable()",function(){return this.iterator("table",function(t){t.rowreorder&&(t.rowreorder.c.enable=!1)})}),s.version="1.5.1",$.fn.dataTable.RowReorder=s,$.fn.DataTable.RowReorder=s,$(l).on("init.dt.dtr",function(t,e,o){var r,n;"dt"===t.namespace&&(t=e.oInit.rowReorder,r=i.defaults.rowReorder,t||r)&&(n=$.extend({},t,r),!1!==t)&&new s(e,n)}),i});

Return to bug 42003