@gravitee/ui-components 3.17.0 → 3.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +18 -24
- package/src/atoms/gv-autocomplete.js +6 -5
- package/src/atoms/gv-button.js +4 -4
- package/src/atoms/gv-checkbox.js +3 -3
- package/src/atoms/gv-date-picker-calendar.js +5 -4
- package/src/atoms/gv-date-picker-cell.js +4 -4
- package/src/atoms/gv-date-picker.js +5 -4
- package/src/atoms/gv-file-upload.js +5 -4
- package/src/atoms/gv-icon.js +7 -15
- package/src/atoms/gv-image.js +4 -4
- package/src/atoms/gv-input-message.js +3 -2
- package/src/atoms/gv-input.js +3 -3
- package/src/atoms/gv-link.js +6 -6
- package/src/atoms/gv-message.js +3 -3
- package/src/atoms/gv-metric.js +3 -3
- package/src/atoms/gv-relative-time.js +4 -6
- package/src/atoms/gv-select.js +5 -5
- package/src/atoms/gv-spinner.js +2 -2
- package/src/atoms/gv-state.js +3 -3
- package/src/atoms/gv-switch.js +4 -4
- package/src/atoms/gv-tag.js +3 -3
- package/src/atoms/gv-text.js +4 -4
- package/src/charts/gv-chart-bar.js +2 -2
- package/src/charts/gv-chart-gauge.js +2 -2
- package/src/charts/gv-chart-histogram.js +2 -2
- package/src/charts/gv-chart-line.js +2 -2
- package/src/charts/gv-chart-map.js +2 -2
- package/src/charts/gv-chart-pie.js +2 -2
- package/src/lib/item.js +2 -2
- package/src/lib/studio.js +3 -3
- package/src/mixins/chart-element.js +4 -3
- package/src/mixins/input-element.js +3 -3
- package/src/mixins/item-resource.js +3 -3
- package/src/mixins/with-skeleton-attribute.js +2 -2
- package/src/molecules/gv-card-full.js +3 -3
- package/src/molecules/gv-card-list.js +4 -3
- package/src/molecules/gv-card.js +3 -3
- package/src/molecules/gv-category-list.js +3 -2
- package/src/molecules/gv-category.js +3 -3
- package/src/molecules/gv-code-hint.js +2 -2
- package/src/molecules/gv-code.js +3 -3
- package/src/molecules/gv-confirm.js +3 -2
- package/src/molecules/gv-cron-editor.js +3 -3
- package/src/molecules/gv-dropdown-menu.js +3 -2
- package/src/molecules/gv-expandable.js +3 -3
- package/src/molecules/gv-expression-language.js +3 -2
- package/src/molecules/gv-identity-picture.js +4 -3
- package/src/molecules/gv-list.js +4 -4
- package/src/molecules/gv-metrics.js +4 -4
- package/src/molecules/gv-modal.js +2 -2
- package/src/molecules/gv-nav.js +5 -5
- package/src/molecules/gv-option.js +6 -6
- package/src/molecules/gv-plans.js +6 -5
- package/src/molecules/gv-popover.js +4 -3
- package/src/molecules/gv-promote.js +3 -3
- package/src/molecules/gv-rating-list.js +5 -4
- package/src/molecules/gv-rating.js +4 -4
- package/src/molecules/gv-row-expandable.js +2 -2
- package/src/molecules/gv-row.js +3 -3
- package/src/molecules/gv-stats.js +4 -4
- package/src/molecules/gv-stepper.js +4 -4
- package/src/molecules/gv-table.js +8 -7
- package/src/molecules/gv-tree.js +4 -4
- package/src/organisms/gv-documentation.js +2 -2
- package/src/organisms/gv-header.js +6 -6
- package/src/organisms/gv-http-client.js +2 -2
- package/src/organisms/gv-menu.js +3 -3
- package/src/organisms/gv-newsletter-subscription.js +2 -2
- package/src/organisms/gv-pagination.js +2 -2
- package/src/organisms/gv-properties.js +3 -3
- package/src/organisms/gv-resizable-views.js +4 -3
- package/src/organisms/gv-resources.js +2 -2
- package/src/organisms/gv-schema-form-array.js +3 -3
- package/src/organisms/gv-schema-form-control-object.js +3 -3
- package/src/organisms/gv-schema-form-control.js +3 -2
- package/src/organisms/gv-schema-form.js +3 -3
- package/src/organisms/gv-tabs.js +3 -2
- package/src/organisms/gv-user-menu.js +4 -4
- package/src/organisms/gv-vertical-menu.js +2 -2
- package/src/policy-studio/gv-flow-step.js +3 -3
- package/src/policy-studio/gv-flow.js +3 -3
- package/src/policy-studio/gv-policy-studio-menu.js +4 -4
- package/src/policy-studio/gv-policy-studio.js +3 -3
- package/src/styles/empty.js +2 -2
- package/src/styles/input.js +2 -2
- package/src/styles/link.js +2 -2
- package/src/styles/skeleton.js +2 -2
- package/src/styles/zoom.js +2 -2
- package/src/theme/gv-theme.js +2 -2
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { css, html, LitElement } from 'lit';
|
|
16
|
+
import { css, html, LitElement } from 'lit-element';
|
|
17
17
|
import { methods } from '../lib/studio';
|
|
18
18
|
import { dispatchCustomEvent } from '../lib/events';
|
|
19
19
|
import '../atoms/gv-button';
|
|
@@ -29,7 +29,7 @@ import './gv-flow';
|
|
|
29
29
|
import './gv-flow-step';
|
|
30
30
|
import './gv-policy-studio-menu';
|
|
31
31
|
import { empty } from '../styles/empty';
|
|
32
|
-
import { cache } from 'lit/directives/cache';
|
|
32
|
+
import { cache } from 'lit-html/directives/cache';
|
|
33
33
|
import { deepClone, deepEqual } from '../lib/utils';
|
|
34
34
|
import { KeyboardElement, KEYS } from '../mixins/keyboard-element';
|
|
35
35
|
const FLOW_STEP_FORM_ID = 'flow-step-form';
|
|
@@ -1752,4 +1752,4 @@ export class GvPolicyStudio extends KeyboardElement(LitElement) {
|
|
|
1752
1752
|
|
|
1753
1753
|
}
|
|
1754
1754
|
window.customElements.define('gv-policy-studio', GvPolicyStudio);
|
|
1755
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL3BvbGljeS1zdHVkaW8vZ3YtcG9saWN5LXN0dWRpby5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsIm1ldGhvZHMiLCJkaXNwYXRjaEN1c3RvbUV2ZW50IiwiZW1wdHkiLCJjYWNoZSIsImRlZXBDbG9uZSIsImRlZXBFcXVhbCIsIktleWJvYXJkRWxlbWVudCIsIktFWVMiLCJGTE9XX1NURVBfRk9STV9JRCIsIkd2UG9saWN5U3R1ZGlvIiwicHJvcGVydGllcyIsInBvbGljaWVzIiwidHlwZSIsIkFycmF5Iiwic2VydmljZXMiLCJPYmplY3QiLCJyZXNvdXJjZVR5cGVzIiwiYXR0cmlidXRlIiwicHJvcGVydHlQcm92aWRlcnMiLCJkeW5hbWljUHJvcGVydHlTY2hlbWEiLCJ0YWJJZCIsIlN0cmluZyIsIl90YWJJZCIsImRlZmluaXRpb24iLCJfZGVmaW5pdGlvbiIsImRvY3VtZW50YXRpb24iLCJmbG93U2NoZW1hIiwiY29uZmlndXJhdGlvblNjaGVtYSIsIl9jb25maWd1cmF0aW9uU2NoZW1hIiwiY29uZmlndXJhdGlvbkluZm9ybWF0aW9uIiwiaXNEaXJ0eSIsIkJvb2xlYW4iLCJyZWZsZWN0IiwiX2RyYWdQb2xpY3kiLCJfZHJvcFBvbGljeSIsInNlbGVjdGVkRmxvd3NJZCIsIl9zZWxlY3RlZEZsb3dzSWQiLCJfY3VycmVudFBvbGljeUlkIiwiX3NlYXJjaFBvbGljeVF1ZXJ5IiwiX3NlYXJjaEZsb3dRdWVyeSIsIl9mbG93U3RlcFNjaGVtYSIsIl9jdXJyZW50Rmxvd1N0ZXAiLCJfcG9saWN5RmlsdGVyIiwiX2Zsb3dGaWx0ZXIiLCJfY3VycmVudEFza0NvbmZpcm1hdGlvbiIsImhhc1Byb3BlcnRpZXMiLCJfaGFzUHJvcGVydGllcyIsImhhc1Jlc291cmNlcyIsImhhc1BvbGljeUZpbHRlciIsImZsb3dzVGl0bGUiLCJzb3J0YWJsZSIsImNhbkFkZCIsInJlYWRvbmx5IiwicmVhZG9ubHlQbGFucyIsImNhbkRlYnVnIiwiX2NhbkRlYnVnIiwiZGVidWdSZXNwb25zZSIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiZmxvd3MiLCJfdGFicyIsImlkIiwidGl0bGUiLCJpY29uIiwidmFsdWUiLCJ0aGVuIiwicmVxdWVzdFVwZGF0ZSIsIl9mbG93RmlsdGVyT3B0aW9ucyIsImRlZmluZWRQbGFucyIsImxlbmd0aCIsIl9wb2xpY3lGaWx0ZXJPcHRpb25zIiwic3BsaWNlIiwib25LZXlib2FyZCIsImlzUHJlc3NlZCIsIlNoaWZ0IiwiQ3RybCIsIlNwYWNlIiwic2VhcmNoIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJmb2N1cyIsIkVzYyIsIl9jbG9zZUZsb3dTdGVwRm9ybSIsIl9vbkNsb3NlRG9jdW1lbnRhdGlvbiIsImluY2x1ZGVzIiwiX2dlbmVyYXRlRmxvd3NJZCIsInJlc291cmNlcyIsIl9nZW5lcmF0ZUlkIiwicGxhbnMiLCJtYXAiLCJwbGFuIiwiX2dlbmVyYXRlUGxhbkZsb3dzSWQiLCJfaW5pdGlhbERlZmluaXRpb24iLCJfc2VsZWN0Rmlyc3RGbG93IiwiaXNBcnJheSIsImZpbHRlciIsIl9maW5kRmxvd0J5SWQiLCJfdXBkYXRlU2VsZWN0ZWRGbG93cyIsImRpc3BhdGNoIiwiY2FuZGlkYXRlIiwiZGVmaW5lZEZsb3dzIiwiX2lkIiwiZmluZCIsIl9nZXRGbG93RWxlbWVudCIsImZsb3dJZCIsIl9vbkRyYWdFbmRQb2xpY3kiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImUiLCJvbkRyYWdFbmQiLCJfb25Ecm9wUG9saWN5IiwiZGV0YWlsIiwiX2Fza1RvVmFsaWRhdGVGb3JtcyIsInBvbGljeSIsInRhcmdldEZsb3ciLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb25maWd1cmF0aW9uIiwiX25ldyIsImZsb3dTdGVwIiwiX2dlbmVyYXRlRmxvd1N0ZXBJZCIsImZsb3dLZXkiLCJwb3NpdGlvbiIsImVuYWJsZWQiLCJzb3VyY2VGbG93Iiwic291cmNlRmxvd0lkIiwic291cmNlUG9zaXRpb24iLCJzb3VyY2VGbG93S2V5Iiwic3RlcCIsImdyb3VwIiwic2NoZW1hIiwiYnVpbGRTY2hlbWEiLCJfc2V0Q3VycmVudEZsb3dTdGVwIiwiY3VycmVudEZsb3dGb3JtIiwiX2dldEZsb3dTdGVwRm9ybSIsImRpcnR5IiwiY2FuY2VsRWRpdCIsInNldFRpbWVvdXQiLCJfZWRpdEZsb3dTdGVwIiwiZmxvdyIsInVwZGF0ZUNvbXBsZXRlIiwiZmxvd0VsZW1lbnQiLCJzZWxlY3RlZFN0ZXBJZCIsIl9kaXJ0eSIsImd2RmxvdyIsInJlbW92ZUNhbmRpZGF0ZSIsIl9vbkRlbGV0ZVBvbGljeSIsInRhcmdldCIsImVkaXRpbmciLCJfb25EZXNpZ24iLCJfY2hhbmdlVGFiIiwiX3NwbGl0TWFpblZpZXdzIiwianNvblNjaGVtYSIsIkpTT04iLCJwYXJzZSIsImN1cnJlbnRGbG93U3RlcCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJfb25PcGVuRG9jdW1lbnRhdGlvbiIsIl9tYXhpbWl6ZVRvcFZpZXciLCJfb25FZGl0Rmxvd1N0ZXAiLCJfZ2V0UmVzaXphYmxlVmlld3MiLCJtYXhpbWl6ZVRvcCIsIl9tYXhpbWl6ZUJvdHRvbVZpZXciLCJtYXhpbWl6ZUJvdHRvbSIsInNwbGl0IiwiX29uQ2hhbmdlRmxvd1N0ZXBTdGF0ZSIsIl9vbkNsb3NlRmxvd1N0ZXBGb3JtIiwiZXJyIiwiZm9yY2UiLCJQcm9taXNlIiwiYWxsIiwiX3N1Ym1pdE9yQ29uZmlybUZvcm1zIiwiZm9ybXMiLCJyIiwiX2J1aWxkRGVmaW5pdGlvblRvU2F2ZSIsImdldENoaWxkcmVuIiwiX2NoZWNrQ3VycmVudEZsb3dTdGVwIiwiRXJyb3IiLCJmbG93U3RlcFNjaGVtYSIsIl9pbml0aWFsVmFsdWVzIiwic2NvcGUiLCJfZW51bSIsImVudW0iLCJmaWx0ZXJlZCIsImRlZmF1bHQiLCJfdmFsdWVzIiwiX3JlZnJlc2giLCJjbG9zZVN0ZXBGb3JtIiwiX29uU2VsZWN0Rmxvd3MiLCJfb25PcGVuRG9jdW1lbnRhdGlvbkZyb21NZW51IiwiZ2V0U2VsZWN0ZWRGbG93IiwiX2ZldGNoRG9jdW1lbnRhdGlvbiIsIl9vbk9wZW5Eb2N1bWVudGF0aW9uRnJvbUZvcm0iLCJyZW1vdmVJdGVtIiwiX2ZpbmRGbG93Q29sbGVjdGlvbiIsInBsYW5zRmxvd3MiLCJyZWR1Y2UiLCJhY2MiLCJ2YWwiLCJjb25jYXQiLCJpbmRleCIsInNlbGVjdGVkRmxvd0lkIiwiX29uVGFyZ2V0UG9saWN5IiwiX29uQ2hhbmdlRmxvd1N0ZXAiLCJ2YWx1ZXMiLCJfd3JpdGVGbG93U3RlcCIsImZpbmRJbmRleCIsIl9vblN1Ym1pdEZsb3dTdGVwIiwiYyIsIl9vbkNhbmNlbEZsb3ciLCJfb25TdWJtaXRGbG93Iiwic2VsZWN0ZWRGbG93IiwiYXNzaWduIiwiX2NyZWF0ZUZsb3dGcm9tU2NoZW1hIiwic2VsZWN0ZWRGbG93VXBkYXRlZCIsIl9vbkNhbmNlbEZsb3dNb2RlIiwiX29uU3VibWl0Rmxvd01vZGUiLCJfb25DaGFuZ2VUYWIiLCJfY2hhbmdlVGFiVmFsaWRhdG9yIiwiZnJvbSIsInRvIiwiY29tcG9uZW50IiwiY29uZmlybSIsInJlc29sdmUiLCJfb25EcmFnU3RhcnRGbG93U3RlcCIsIl9yZW5kZXJGbG93RW1wdHlTdGF0ZSIsInJlYWRvbmx5TW9kZSIsIl9vbkFkZEZsb3ciLCJfcmVuZGVyRmxvdyIsImhhc0VtcHR5U3RhdGUiLCJiaW5kIiwiX29uRmV0Y2hSZXNvdXJjZXMiLCJldmVudCIsImN1cnJlbnRUYXJnZXQiLCJyZWdleFR5cGVzIiwib3B0aW9ucyIsImRlZmluZWRSZXNvdXJjZXMiLCJyZXNvdXJjZSIsIlJlZ0V4cCIsInRlc3QiLCJyZXNvdXJjZVR5cGUiLCJyb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJwaWN0dXJlIiwiaXRlbSIsImVsZW1lbnQiLCJfcmVuZGVyUG9saWN5IiwiX3JlbmRlckZsb3dTdGVwRm9ybSIsImNvbnRlbnQiLCJpbWFnZSIsIl9vblJlc2V0Rmxvd1N0ZXAiLCJyZXNldCIsImxpc3QiLCJwcmVmaXgiLCJpc0Zsb3ciLCJwcmUiLCJzdGVwSW5kZXgiLCJwb3N0IiwiX2dldFVwZGF0ZUNvbXBsZXRlIiwic2hvdWxkVXBkYXRlIiwiY2hhbmdlZFByb3BlcnRpZXMiLCJoYXMiLCJkcmFnUG9saWN5IiwiZHJvcFBvbGljeSIsInVwZGF0ZWQiLCJwcm9wcyIsInNldEl0ZW0iLCJfb25EZWxldGVGbG93IiwiX2RlbGV0ZUZsb3ciLCJkZWZpbmVkUHJvcGVydGllcyIsIl9vbkR1cGxpY2F0ZUZsb3ciLCJfYWRkRmxvdyIsInBsYW5JbmRleCIsInAiLCJpIiwiX29uQ2hhbmdlRmxvd1N0YXRlIiwiX29uQWRkRmxvd1BsYW4iLCJjb2xsZWN0aW9uIiwiZHVwbGljYXRlIiwicHVzaCIsIm5ld0Zsb3ciLCJfaW5zdGFudGlhdGUiLCJwcm9wZXJ0aWVzRGVmaW5pdGlvbiIsImluaXRpYXRvciIsInByb3BlcnR5Iiwia2V5Iiwia2V5cyIsImVudHJ5IiwidW5kZWZpbmVkIiwiaW5kZXhPZiIsInNlbGVjdGVkRmxvd3MiLCJfZmluZEZsb3dJbmRleCIsImYiLCJfb25SZW9yZGVyRmxvd3MiLCJuZXdPcmRlciIsIl9vblNlYXJjaFBvbGljeSIsIl9vbkNsZWFyUG9saWN5IiwiX29uU2VhcmNoRmxvd3MiLCJfb25DbGVhckZsb3dzIiwiX29uUmVzZXRBbGwiLCJfZmlsdGVyTm90VmFsaWRTdGVwIiwiX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzIiwibyIsImNvcHkiLCJzdGFydHNXaXRoIiwiZm9ybSIsImlzVmFsaWQiLCJzdWJtaXQiLCJnZXRQcm9wZXJ0aWVzRWxlbWVudCIsImNsb3NlUHJvbWlzZXMiLCJjdXJyZW50U3RlcCIsInNhdmVkIiwiX2RlZmluaXRpb25TYXZlZCIsIl9idWlsZERlZmluaXRpb25Ub1NlbmQiLCJkZWZpbml0aW9uVG9TYXZlIiwiX29uU2F2ZUFsbCIsImNhdGNoIiwiY29uc29sZSIsImVycm9yIiwiX29uRGVidWciLCJyZXF1ZXN0RXZlbnQiLCJyZXF1ZXN0IiwiZmlsdGVyZWRGbG93cyIsImZpbHRlcmVkUGxhbnMiLCJfb25GaWx0ZXJGbG93cyIsIl9nZXRGaWx0ZXJlZFBvbGljaWVzIiwib25SZXF1ZXN0Iiwib25SZXNwb25zZSIsIl9vbkZpbHRlclBvbGljaWVzIiwiX3JlbmRlckRlc2lnbiIsIl9yZW5kZXJGbG93Rm9ybSIsIl9yZW5kZXJEZWJ1ZyIsInJlc3BvbnNlIiwiaXNMb2FkaW5nIiwicGF0aCIsIm1ldGhvZCIsIl9yZW5kZXJDb25maWd1cmF0aW9uRm9ybSIsIl9vblJlc291cmNlc0NoYW5nZSIsIl9vblByb3BlcnRpZXNDaGFuZ2UiLCJfb25TYXZlUHJvdmlkZXIiLCJwcm92aWRlciIsIl9vblN3aXRjaEVuY3J5cHRlZFByb3BlcnR5IiwicmVuZGVyIiwiX2dldFJlYWRvbmx5TW9kZUZvckRlc2lnbiIsImZsb3dQbGFuIiwiY29tcGFyZWRGbG93IiwiY29tcGFyZWRGbG93UGxhbiIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLElBQWQsRUFBb0JDLFVBQXBCLFFBQXNDLEtBQXRDO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixlQUF4QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sa0JBQVA7QUFDQSxPQUFPLHdCQUFQO0FBQ0EsT0FBTywrQkFBUDtBQUNBLE9BQU8saUNBQVA7QUFDQSxPQUFPLDZCQUFQO0FBQ0EsT0FBTyw2QkFBUDtBQUNBLE9BQU8sc0JBQVA7QUFDQSxPQUFPLHFCQUFQO0FBQ0EsT0FBTyxXQUFQO0FBQ0EsT0FBTyxnQkFBUDtBQUNBLE9BQU8seUJBQVA7QUFDQSxTQUFTQyxLQUFULFFBQXNCLGlCQUF0QjtBQUNBLFNBQVNDLEtBQVQsUUFBc0Isc0JBQXRCO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsU0FBcEIsUUFBcUMsY0FBckM7QUFDQSxTQUFTQyxlQUFULEVBQTBCQyxJQUExQixRQUFzQyw0QkFBdEM7QUFFQSxNQUFNQyxpQkFBaUIsR0FBRyxnQkFBMUI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxjQUFOLFNBQTZCSCxlQUFlLENBQUNQLFVBQUQsQ0FBNUMsQ0FBeUQ7QUFDekMsYUFBVlcsVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEsUUFBUSxFQUFFO0FBQUVDLFFBQUFBLElBQUksRUFBRUM7QUFBUixPQURMO0FBRUxDLE1BQUFBLFFBQVEsRUFBRTtBQUFFRixRQUFBQSxJQUFJLEVBQUVHO0FBQVIsT0FGTDtBQUdMQyxNQUFBQSxhQUFhLEVBQUU7QUFBRUosUUFBQUEsSUFBSSxFQUFFQyxLQUFSO0FBQWVJLFFBQUFBLFNBQVMsRUFBRTtBQUExQixPQUhWO0FBSUxDLE1BQUFBLGlCQUFpQixFQUFFO0FBQUVOLFFBQUFBLElBQUksRUFBRUMsS0FBUjtBQUFlSSxRQUFBQSxTQUFTLEVBQUU7QUFBMUIsT0FKZDtBQUtMRSxNQUFBQSxxQkFBcUIsRUFBRTtBQUFFUCxRQUFBQSxJQUFJLEVBQUVHLE1BQVI7QUFBZ0JFLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQUxsQjtBQU1MRyxNQUFBQSxLQUFLLEVBQUU7QUFBRVIsUUFBQUEsSUFBSSxFQUFFUyxNQUFSO0FBQWdCSixRQUFBQSxTQUFTLEVBQUU7QUFBM0IsT0FORjtBQU9MSyxNQUFBQSxNQUFNLEVBQUU7QUFBRVYsUUFBQUEsSUFBSSxFQUFFUyxNQUFSO0FBQWdCSixRQUFBQSxTQUFTLEVBQUU7QUFBM0IsT0FQSDtBQVFMTSxNQUFBQSxVQUFVLEVBQUU7QUFBRVgsUUFBQUEsSUFBSSxFQUFFRztBQUFSLE9BUlA7QUFTTFMsTUFBQUEsV0FBVyxFQUFFO0FBQUVaLFFBQUFBLElBQUksRUFBRUcsTUFBUjtBQUFnQkUsUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BVFI7QUFVTFEsTUFBQUEsYUFBYSxFQUFFO0FBQUViLFFBQUFBLElBQUksRUFBRUc7QUFBUixPQVZWO0FBV0xXLE1BQUFBLFVBQVUsRUFBRTtBQUFFZCxRQUFBQSxJQUFJLEVBQUVHLE1BQVI7QUFBZ0JFLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQVhQO0FBWUxVLE1BQUFBLG1CQUFtQixFQUFFO0FBQUVmLFFBQUFBLElBQUksRUFBRUcsTUFBUjtBQUFnQkUsUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BWmhCO0FBYUxXLE1BQUFBLG9CQUFvQixFQUFFO0FBQUVoQixRQUFBQSxJQUFJLEVBQUVHLE1BQVI7QUFBZ0JFLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQWJqQjtBQWNMWSxNQUFBQSx3QkFBd0IsRUFBRTtBQUFFakIsUUFBQUEsSUFBSSxFQUFFUyxNQUFSO0FBQWdCSixRQUFBQSxTQUFTLEVBQUU7QUFBM0IsT0FkckI7QUFlTGEsTUFBQUEsT0FBTyxFQUFFO0FBQUVsQixRQUFBQSxJQUFJLEVBQUVtQixPQUFSO0FBQWlCZCxRQUFBQSxTQUFTLEVBQUUsT0FBNUI7QUFBcUNlLFFBQUFBLE9BQU8sRUFBRTtBQUE5QyxPQWZKO0FBZ0JMQyxNQUFBQSxXQUFXLEVBQUU7QUFBRXJCLFFBQUFBLElBQUksRUFBRUcsTUFBUjtBQUFnQkUsUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BaEJSO0FBaUJMaUIsTUFBQUEsV0FBVyxFQUFFO0FBQUV0QixRQUFBQSxJQUFJLEVBQUVHLE1BQVI7QUFBZ0JFLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQWpCUjtBQWtCTGtCLE1BQUFBLGVBQWUsRUFBRTtBQUFFdkIsUUFBQUEsSUFBSSxFQUFFQyxLQUFSO0FBQWVJLFFBQUFBLFNBQVMsRUFBRTtBQUExQixPQWxCWjtBQW1CTG1CLE1BQUFBLGdCQUFnQixFQUFFO0FBQUV4QixRQUFBQSxJQUFJLEVBQUVDLEtBQVI7QUFBZUksUUFBQUEsU0FBUyxFQUFFO0FBQTFCLE9BbkJiO0FBb0JMb0IsTUFBQUEsZ0JBQWdCLEVBQUU7QUFBRXpCLFFBQUFBLElBQUksRUFBRVMsTUFBUjtBQUFnQkosUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BcEJiO0FBcUJMcUIsTUFBQUEsa0JBQWtCLEVBQUU7QUFBRTFCLFFBQUFBLElBQUksRUFBRVMsTUFBUjtBQUFnQkosUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BckJmO0FBc0JMc0IsTUFBQUEsZ0JBQWdCLEVBQUU7QUFBRTNCLFFBQUFBLElBQUksRUFBRVMsTUFBUjtBQUFnQkosUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BdEJiO0FBdUJMdUIsTUFBQUEsZUFBZSxFQUFFO0FBQUU1QixRQUFBQSxJQUFJLEVBQUVHLE1BQVI7QUFBZ0JFLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQXZCWjtBQXdCTHdCLE1BQUFBLGdCQUFnQixFQUFFO0FBQUU3QixRQUFBQSxJQUFJLEVBQUVHLE1BQVI7QUFBZ0JFLFFBQUFBLFNBQVMsRUFBRTtBQUEzQixPQXhCYjtBQXlCTHlCLE1BQUFBLGFBQWEsRUFBRTtBQUFFOUIsUUFBQUEsSUFBSSxFQUFFQyxLQUFSO0FBQWVJLFFBQUFBLFNBQVMsRUFBRTtBQUExQixPQXpCVjtBQTBCTDBCLE1BQUFBLFdBQVcsRUFBRTtBQUFFL0IsUUFBQUEsSUFBSSxFQUFFQyxLQUFSO0FBQWVJLFFBQUFBLFNBQVMsRUFBRTtBQUExQixPQTFCUjtBQTJCTDJCLE1BQUFBLHVCQUF1QixFQUFFO0FBQUVoQyxRQUFBQSxJQUFJLEVBQUVtQixPQUFSO0FBQWlCZCxRQUFBQSxTQUFTLEVBQUU7QUFBNUIsT0EzQnBCO0FBNEJMNEIsTUFBQUEsYUFBYSxFQUFFO0FBQUVqQyxRQUFBQSxJQUFJLEVBQUVtQixPQUFSO0FBQWlCZCxRQUFBQSxTQUFTLEVBQUU7QUFBNUIsT0E1QlY7QUE2Qkw2QixNQUFBQSxjQUFjLEVBQUU7QUFBRWxDLFFBQUFBLElBQUksRUFBRW1CLE9BQVI7QUFBaUJkLFFBQUFBLFNBQVMsRUFBRTtBQUE1QixPQTdCWDtBQThCTDhCLE1BQUFBLFlBQVksRUFBRTtBQUFFbkMsUUFBQUEsSUFBSSxFQUFFbUIsT0FBUjtBQUFpQmQsUUFBQUEsU0FBUyxFQUFFO0FBQTVCLE9BOUJUO0FBK0JMK0IsTUFBQUEsZUFBZSxFQUFFO0FBQUVwQyxRQUFBQSxJQUFJLEVBQUVtQixPQUFSO0FBQWlCZCxRQUFBQSxTQUFTLEVBQUU7QUFBNUIsT0EvQlo7QUFnQ0xnQyxNQUFBQSxVQUFVLEVBQUU7QUFBRXJDLFFBQUFBLElBQUksRUFBRVMsTUFBUjtBQUFnQkosUUFBQUEsU0FBUyxFQUFFO0FBQTNCLE9BaENQO0FBaUNMaUMsTUFBQUEsUUFBUSxFQUFFO0FBQUV0QyxRQUFBQSxJQUFJLEVBQUVtQjtBQUFSLE9BakNMO0FBa0NMb0IsTUFBQUEsTUFBTSxFQUFFO0FBQUV2QyxRQUFBQSxJQUFJLEVBQUVtQixPQUFSO0FBQWlCZCxRQUFBQSxTQUFTLEVBQUU7QUFBNUIsT0FsQ0g7QUFtQ0xtQyxNQUFBQSxRQUFRLEVBQUU7QUFBRXhDLFFBQUFBLElBQUksRUFBRW1CO0FBQVIsT0FuQ0w7QUFvQ0xzQixNQUFBQSxhQUFhLEVBQUU7QUFBRXpDLFFBQUFBLElBQUksRUFBRW1CLE9BQVI7QUFBaUJkLFFBQUFBLFNBQVMsRUFBRTtBQUE1QixPQXBDVjtBQXFDTHFDLE1BQUFBLFFBQVEsRUFBRTtBQUFFMUMsUUFBQUEsSUFBSSxFQUFFbUIsT0FBUjtBQUFpQmQsUUFBQUEsU0FBUyxFQUFFO0FBQTVCLE9BckNMO0FBc0NMc0MsTUFBQUEsU0FBUyxFQUFFO0FBQUUzQyxRQUFBQSxJQUFJLEVBQUVtQixPQUFSO0FBQWlCZCxRQUFBQSxTQUFTLEVBQUU7QUFBNUIsT0F0Q047QUF1Q0x1QyxNQUFBQSxhQUFhLEVBQUU7QUFBRTVDLFFBQUFBLElBQUksRUFBRUcsTUFBUjtBQUFnQkUsUUFBQUEsU0FBUyxFQUFFO0FBQTNCO0FBdkNWLEtBQVA7QUF5Q0Q7O0FBRWdCLGFBQU53QyxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMdkQsS0FESyxFQUVMRixPQUZLLEVBR0w7QUFDQUgsSUFBQUEsR0FBRyx3aUZBSkUsQ0FBUDtBQTZORDs7QUFFRDZELEVBQUFBLFdBQVcsR0FBRztBQUNaO0FBQ0EsU0FBSzVCLE9BQUwsR0FBZSxLQUFmO0FBQ0EsU0FBS25CLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQSxTQUFLSyxhQUFMLEdBQXFCLEVBQXJCO0FBQ0EsU0FBS0ksS0FBTCxHQUFhLFFBQWI7QUFDQSxTQUFLZSxlQUFMLEdBQXVCLEVBQXZCO0FBQ0EsU0FBS2MsVUFBTCxHQUFrQixPQUFsQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBaEI7QUFDQSxTQUFLcEMsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUtVLFdBQUwsR0FBbUI7QUFDakJtQyxNQUFBQSxLQUFLLEVBQUU7QUFEVSxLQUFuQjtBQUdBLFNBQUtDLEtBQUwsR0FBYSxDQUFDO0FBQUVDLE1BQUFBLEVBQUUsRUFBRSxRQUFOO0FBQWdCQyxNQUFBQSxLQUFLLEVBQUUsUUFBdkI7QUFBaUNDLE1BQUFBLElBQUksRUFBRTtBQUF2QyxLQUFELENBQWI7QUFDQSxTQUFLckIsYUFBTCxHQUFxQixFQUFyQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDRDs7QUFFZ0IsTUFBYkUsYUFBYSxDQUFDbUIsS0FBRCxFQUFRO0FBQ3ZCLFFBQUlBLEtBQUosRUFBVztBQUNULGFBQU8sNEJBQVAsRUFBcUNDLElBQXJDLENBQTBDLE1BQU07QUFDOUMsYUFBS0wsS0FBTCxHQUFhLENBQUMsR0FBRyxLQUFLQSxLQUFULEVBQWdCO0FBQUVDLFVBQUFBLEVBQUUsRUFBRSxZQUFOO0FBQW9CQyxVQUFBQSxLQUFLLEVBQUUsWUFBM0I7QUFBeUNDLFVBQUFBLElBQUksRUFBRTtBQUEvQyxTQUFoQixDQUFiO0FBQ0EsYUFBS0csYUFBTDtBQUNELE9BSEQ7QUFJRDs7QUFDRCxTQUFLcEIsY0FBTCxHQUFzQmtCLEtBQXRCO0FBQ0Q7O0FBRWdCLE1BQWJuQixhQUFhLEdBQUc7QUFDbEIsV0FBTyxLQUFLQyxjQUFaO0FBQ0Q7O0FBRWUsTUFBWkMsWUFBWSxDQUFDaUIsS0FBRCxFQUFRO0FBQ3RCLFFBQUlBLEtBQUosRUFBVztBQUNULGFBQU8sMkJBQVAsRUFBb0NDLElBQXBDLENBQXlDLE1BQU07QUFDN0MsYUFBS0wsS0FBTCxHQUFhLENBQUMsR0FBRyxLQUFLQSxLQUFULEVBQWdCO0FBQUVDLFVBQUFBLEVBQUUsRUFBRSxXQUFOO0FBQW1CQyxVQUFBQSxLQUFLLEVBQUUsV0FBMUI7QUFBdUNDLFVBQUFBLElBQUksRUFBRTtBQUE3QyxTQUFoQixDQUFiO0FBQ0EsYUFBS0csYUFBTDtBQUNELE9BSEQ7QUFJRDtBQUNGOztBQUVXLE1BQVJaLFFBQVEsQ0FBQ1UsS0FBRCxFQUFRO0FBQ2xCLFFBQUlBLEtBQUosRUFBVztBQUNULFdBQUtKLEtBQUwsR0FBYSxDQUFDLEdBQUcsS0FBS0EsS0FBVCxFQUFnQjtBQUFFQyxRQUFBQSxFQUFFLEVBQUUsT0FBTjtBQUFlQyxRQUFBQSxLQUFLLEVBQUUsUUFBdEI7QUFBZ0NDLFFBQUFBLElBQUksRUFBRTtBQUF0QyxPQUFoQixDQUFiO0FBQ0Q7QUFDRjs7QUFFcUIsTUFBbEJJLGtCQUFrQixHQUFHO0FBQ3ZCLFFBQUksS0FBS0MsWUFBTCxDQUFrQkMsTUFBbEIsR0FBMkIsQ0FBL0IsRUFBa0M7QUFDaEMsYUFBTyxDQUNMO0FBQUVSLFFBQUFBLEVBQUUsRUFBRSxLQUFOO0FBQWFDLFFBQUFBLEtBQUssRUFBRSxLQUFwQjtBQUEyQkMsUUFBQUEsSUFBSSxFQUFFO0FBQWpDLE9BREssRUFFTDtBQUFFRixRQUFBQSxFQUFFLEVBQUUsTUFBTjtBQUFjQyxRQUFBQSxLQUFLLEVBQUUsT0FBckI7QUFBOEJDLFFBQUFBLElBQUksRUFBRTtBQUFwQyxPQUZLLENBQVA7QUFJRDtBQUNGOztBQUVrQixNQUFmZixlQUFlLENBQUNnQixLQUFELEVBQVE7QUFDekIsUUFBSUEsS0FBSixFQUFXO0FBQ1QsV0FBS00sb0JBQUwsR0FBNEIsQ0FDMUI7QUFBRVQsUUFBQUEsRUFBRSxFQUFFLFdBQU47QUFBbUJDLFFBQUFBLEtBQUssRUFBRSxTQUExQjtBQUFxQ0MsUUFBQUEsSUFBSSxFQUFFO0FBQTNDLE9BRDBCLEVBRTFCO0FBQUVGLFFBQUFBLEVBQUUsRUFBRSxZQUFOO0FBQW9CQyxRQUFBQSxLQUFLLEVBQUUsVUFBM0I7QUFBdUNDLFFBQUFBLElBQUksRUFBRTtBQUE3QyxPQUYwQixDQUE1QjtBQUlEO0FBQ0Y7O0FBRXNCLE1BQW5CcEMsbUJBQW1CLENBQUNxQyxLQUFELEVBQVE7QUFDN0IsUUFBSUEsS0FBSixFQUFXO0FBQ1QsV0FBS0osS0FBTCxDQUFXVyxNQUFYLENBQWtCLENBQWxCLEVBQXFCLENBQXJCLEVBQXdCO0FBQUVWLFFBQUFBLEVBQUUsRUFBRSxVQUFOO0FBQWtCQyxRQUFBQSxLQUFLLEVBQUUsZUFBekI7QUFBMENDLFFBQUFBLElBQUksRUFBRTtBQUFoRCxPQUF4QjtBQUNEOztBQUVELFNBQUtuQyxvQkFBTCxHQUE0Qm9DLEtBQTVCO0FBQ0Q7O0FBRXNCLE1BQW5CckMsbUJBQW1CLEdBQUc7QUFDeEIsV0FBTyxLQUFLQyxvQkFBWjtBQUNEOztBQUVENEMsRUFBQUEsVUFBVSxHQUFHO0FBQ1gsUUFBSSxLQUFLNUIsdUJBQUwsSUFBZ0MsSUFBcEMsRUFBMEM7QUFDeEMsVUFBSSxLQUFLNkIsU0FBTCxDQUFlbEUsSUFBSSxDQUFDbUUsS0FBcEIsRUFBMkJuRSxJQUFJLENBQUNvRSxJQUFoQyxFQUFzQ3BFLElBQUksQ0FBQ3FFLEtBQTNDLENBQUosRUFBdUQ7QUFDckQsY0FBTUMsTUFBTSxHQUFHLEtBQUtDLFVBQUwsQ0FBZ0JDLGFBQWhCLENBQThCLGdCQUE5QixDQUFmOztBQUNBLFlBQUlGLE1BQUosRUFBWTtBQUNWQSxVQUFBQSxNQUFNLENBQUNHLEtBQVA7QUFDRDtBQUNGLE9BTEQsTUFLTyxJQUFJLEtBQUtQLFNBQUwsQ0FBZWxFLElBQUksQ0FBQ29FLElBQXBCLEVBQTBCcEUsSUFBSSxDQUFDcUUsS0FBL0IsQ0FBSixFQUEyQztBQUNoRCxjQUFNQyxNQUFNLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsY0FBOUIsQ0FBZjs7QUFDQSxZQUFJRixNQUFKLEVBQVk7QUFDVkEsVUFBQUEsTUFBTSxDQUFDRyxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxVQUFJLEtBQUtQLFNBQUwsQ0FBZWxFLElBQUksQ0FBQzBFLEdBQXBCLENBQUosRUFBOEI7QUFDNUIsYUFBS0Msa0JBQUw7O0FBQ0EsYUFBS0MscUJBQUw7QUFDRDtBQUNGO0FBQ0Y7O0FBRVEsTUFBTC9ELEtBQUssQ0FBQ0EsS0FBRCxFQUFRO0FBQ2YsUUFBSUEsS0FBSyxJQUFJLElBQVQsSUFBaUIsQ0FBQyxRQUFELEVBQVcsVUFBWCxFQUF1QixZQUF2QixFQUFxQyxXQUFyQyxFQUFrRCxPQUFsRCxFQUEyRGdFLFFBQTNELENBQW9FaEUsS0FBcEUsQ0FBckIsRUFBaUc7QUFDL0YsV0FBS0UsTUFBTCxHQUFjRixLQUFkO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS0UsTUFBTCxHQUFjLFFBQWQ7QUFDRDtBQUNGOztBQUVRLE1BQUxGLEtBQUssR0FBRztBQUNWLFdBQU8sS0FBS0UsTUFBWjtBQUNEOztBQUVhLE1BQVZDLFVBQVUsQ0FBQ0EsVUFBRCxFQUFhO0FBQ3pCLFFBQUlBLFVBQUosRUFBZ0I7QUFDZCxZQUFNb0MsS0FBSyxHQUFHLEtBQUswQixnQkFBTCxDQUFzQjlELFVBQVUsQ0FBQ29DLEtBQWpDLENBQWQ7O0FBQ0EsWUFBTTJCLFNBQVMsR0FBRyxLQUFLQyxXQUFMLENBQWlCLFdBQWpCLEVBQThCaEUsVUFBVSxDQUFDK0QsU0FBekMsQ0FBbEI7O0FBQ0EsWUFBTUUsS0FBSyxHQUNUakUsVUFBVSxDQUFDaUUsS0FBWCxJQUFvQixJQUFwQixHQUNJLEVBREosR0FFSWpFLFVBQVUsQ0FBQ2lFLEtBQVgsQ0FBaUJDLEdBQWpCLENBQXNCQyxJQUFELElBQVU7QUFDN0IsZUFBTyxFQUFFLEdBQUdBLElBQUw7QUFBVy9CLFVBQUFBLEtBQUssRUFBRSxLQUFLZ0Msb0JBQUwsQ0FBMEJELElBQTFCO0FBQWxCLFNBQVA7QUFDRCxPQUZELENBSE47QUFNQSxXQUFLRSxrQkFBTCxHQUEwQixFQUFFLEdBQUdyRSxVQUFMO0FBQWlCb0MsUUFBQUEsS0FBakI7QUFBd0IyQixRQUFBQSxTQUF4QjtBQUFtQ0UsUUFBQUE7QUFBbkMsT0FBMUI7QUFDQSxXQUFLaEUsV0FBTCxHQUFtQnBCLFNBQVMsQ0FBQyxLQUFLd0Ysa0JBQU4sQ0FBNUI7QUFDQSxXQUFLOUQsT0FBTCxHQUFlLEtBQWY7O0FBQ0EsV0FBSytELGdCQUFMO0FBQ0Q7QUFDRjs7QUFFYSxNQUFWdEUsVUFBVSxHQUFHO0FBQ2YsV0FBTyxLQUFLQyxXQUFaO0FBQ0Q7O0FBRWtCLE1BQWZXLGVBQWUsQ0FBQ0EsZUFBRCxFQUFrQjtBQUNuQyxRQUFJQSxlQUFlLElBQUksSUFBbkIsSUFBMkJ0QixLQUFLLENBQUNpRixPQUFOLENBQWMzRCxlQUFkLENBQS9CLEVBQStEO0FBQzdELFdBQUtDLGdCQUFMLEdBQXdCRCxlQUFlLENBQUM0RCxNQUFoQixDQUF3QmxDLEVBQUQsSUFBUSxLQUFLbUMsYUFBTCxDQUFtQm5DLEVBQW5CLEtBQTBCLElBQXpELENBQXhCOztBQUNBLFVBQUkxQixlQUFlLENBQUNrQyxNQUFoQixLQUEyQixLQUFLakMsZ0JBQUwsQ0FBc0JpQyxNQUFyRCxFQUE2RDtBQUMzRCxhQUFLd0IsZ0JBQUwsQ0FBc0IsSUFBdEI7QUFDRDtBQUNGO0FBQ0Y7O0FBRWtCLE1BQWYxRCxlQUFlLEdBQUc7QUFDcEIsV0FBTyxLQUFLQyxnQkFBTCxDQUFzQjJELE1BQXRCLENBQThCbEMsRUFBRCxJQUFRLEtBQUttQyxhQUFMLENBQW1CbkMsRUFBbkIsS0FBMEIsSUFBL0QsQ0FBUDtBQUNEOztBQUVEb0MsRUFBQUEsb0JBQW9CLENBQUM5RCxlQUFELEVBQWtCO0FBQ3BDLFNBQUtBLGVBQUwsR0FBdUJBLGVBQXZCO0FBQ0FsQyxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sY0FBUCxFQUF1QjtBQUFFMEQsTUFBQUEsS0FBSyxFQUFFLEtBQUt4QjtBQUFkLEtBQXZCLENBQW5CO0FBQ0Q7O0FBRUQwRCxFQUFBQSxnQkFBZ0IsQ0FBQ0ssUUFBUSxHQUFHLEtBQVosRUFBbUI7QUFDakMsUUFBSSxLQUFLL0QsZUFBTCxDQUFxQmtDLE1BQXJCLEtBQWdDLENBQXBDLEVBQXVDO0FBQ3JDLFVBQUk4QixTQUFTLEdBQUcsSUFBaEI7O0FBQ0EsVUFBSSxLQUFLQyxZQUFMLENBQWtCL0IsTUFBbEIsR0FBMkIsQ0FBM0IsSUFBZ0MsS0FBSytCLFlBQUwsQ0FBa0IsQ0FBbEIsRUFBcUJDLEdBQXJCLElBQTRCLElBQWhFLEVBQXNFO0FBQ3BFRixRQUFBQSxTQUFTLEdBQUcsS0FBS0MsWUFBTCxDQUFrQixDQUFsQixDQUFaO0FBQ0QsT0FGRCxNQUVPLElBQUksS0FBS2hDLFlBQUwsQ0FBa0JDLE1BQWxCLEdBQTJCLENBQS9CLEVBQWtDO0FBQ3ZDLGNBQU1xQixJQUFJLEdBQUcsS0FBS3RCLFlBQUwsQ0FBa0JrQyxJQUFsQixDQUF3QlosSUFBRCxJQUFVQSxJQUFJLENBQUMvQixLQUFMLElBQWMsSUFBZCxJQUFzQitCLElBQUksQ0FBQy9CLEtBQUwsQ0FBV1UsTUFBWCxHQUFvQixDQUExQyxJQUErQ3FCLElBQUksQ0FBQy9CLEtBQUwsQ0FBVyxDQUFYLEVBQWMwQyxHQUFkLElBQXFCLElBQXJHLENBQWI7O0FBQ0EsWUFBSVgsSUFBSixFQUFVO0FBQ1JTLFVBQUFBLFNBQVMsR0FBR1QsSUFBSSxDQUFDL0IsS0FBTCxDQUFXLENBQVgsQ0FBWjtBQUNEO0FBQ0Y7O0FBQ0QsVUFBSXdDLFNBQVMsSUFBSSxJQUFqQixFQUF1QjtBQUNyQixZQUFJRCxRQUFKLEVBQWM7QUFDWixlQUFLRCxvQkFBTCxDQUEwQixDQUFDRSxTQUFTLENBQUNFLEdBQVgsQ0FBMUI7QUFDRCxTQUZELE1BRU87QUFDTCxlQUFLbEUsZUFBTCxHQUF1QixDQUFDZ0UsU0FBUyxDQUFDRSxHQUFYLENBQXZCO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBRURFLEVBQUFBLGVBQWUsQ0FBQ0MsTUFBRCxFQUFTO0FBQ3RCLFdBQU8sS0FBSzFCLFVBQUwsQ0FBZ0JDLGFBQWhCLENBQStCLFFBQU95QixNQUFPLElBQTdDLENBQVA7QUFDRDs7QUFFREMsRUFBQUEsZ0JBQWdCLEdBQUc7QUFDakIsU0FBSzNCLFVBQUwsQ0FBZ0I0QixnQkFBaEIsQ0FBaUMsU0FBakMsRUFBNENDLE9BQTVDLENBQXFEQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsU0FBRixFQUEzRDtBQUNEOztBQUVrQixRQUFiQyxhQUFhLENBQUM7QUFBRUMsSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDOUIsUUFBSTtBQUNGLFlBQU0sS0FBS0MsbUJBQUwsRUFBTjtBQUVBLFlBQU1DLE1BQU0sR0FBR0YsTUFBTSxDQUFDRSxNQUF0Qjs7QUFDQSxZQUFNQyxVQUFVLEdBQUcsS0FBS2xCLGFBQUwsQ0FBbUJlLE1BQU0sQ0FBQ1AsTUFBMUIsQ0FBbkI7O0FBRUEsVUFBSVcsSUFBSSxHQUFHRixNQUFNLENBQUNFLElBQWxCO0FBQ0EsVUFBSUMsV0FBVyxHQUFHLEVBQWxCO0FBQ0EsVUFBSUMsYUFBYSxHQUFHLEVBQXBCOztBQUNBLFVBQUloQixHQUFKOztBQUNBLFVBQUlpQixJQUFJLEdBQUcsS0FBWDs7QUFDQSxVQUFJUCxNQUFNLENBQUNRLFFBQVgsRUFBcUI7QUFDbkJsQixRQUFBQSxHQUFHLEdBQUdVLE1BQU0sQ0FBQ1EsUUFBUCxDQUFnQmxCLEdBQXRCO0FBQ0FjLFFBQUFBLElBQUksR0FBR0osTUFBTSxDQUFDUSxRQUFQLENBQWdCSixJQUF2QjtBQUNBQyxRQUFBQSxXQUFXLEdBQUdMLE1BQU0sQ0FBQ1EsUUFBUCxDQUFnQkgsV0FBaEIsSUFBK0IsRUFBN0M7QUFDQUMsUUFBQUEsYUFBYSxHQUFHTixNQUFNLENBQUNRLFFBQVAsQ0FBZ0JGLGFBQWhDO0FBQ0QsT0FMRCxNQUtPO0FBQ0xoQixRQUFBQSxHQUFHLEdBQUcsS0FBS21CLG1CQUFMLENBQXlCTixVQUFVLENBQUNiLEdBQXBDLEVBQXlDVSxNQUFNLENBQUNVLE9BQWhELEVBQXlEVixNQUFNLENBQUNXLFFBQWhFLENBQU47QUFDQUosUUFBQUEsSUFBSSxHQUFHLElBQVA7QUFDRDs7QUFFRCxZQUFNQyxRQUFRLEdBQUc7QUFBRWxCLFFBQUFBLEdBQUY7QUFBT2lCLFFBQUFBLElBQVA7QUFBYUgsUUFBQUEsSUFBYjtBQUFtQkYsUUFBQUEsTUFBTSxFQUFFQSxNQUFNLENBQUNwRCxFQUFsQztBQUFzQ3VELFFBQUFBLFdBQXRDO0FBQW1ETyxRQUFBQSxPQUFPLEVBQUUsSUFBNUQ7QUFBa0VOLFFBQUFBO0FBQWxFLE9BQWpCO0FBQ0EsWUFBTU8sVUFBVSxHQUFHYixNQUFNLENBQUNjLFlBQVAsSUFBdUIsSUFBdkIsR0FBOEIsS0FBSzdCLGFBQUwsQ0FBbUJlLE1BQU0sQ0FBQ2MsWUFBMUIsQ0FBOUIsR0FBd0VYLFVBQTNGOztBQUVBLFVBQUlILE1BQU0sQ0FBQ2UsY0FBUCxJQUF5QixJQUE3QixFQUFtQztBQUNqQyxZQUFJZixNQUFNLENBQUNnQixhQUFQLElBQXdCaEIsTUFBTSxDQUFDZ0IsYUFBUCxLQUF5QmhCLE1BQU0sQ0FBQ1UsT0FBNUQsRUFBcUU7QUFDbkVHLFVBQUFBLFVBQVUsQ0FBQ2IsTUFBTSxDQUFDZ0IsYUFBUixDQUFWLENBQWlDeEQsTUFBakMsQ0FBd0N3QyxNQUFNLENBQUNlLGNBQS9DLEVBQStELENBQS9EO0FBQ0FaLFVBQUFBLFVBQVUsQ0FBQ0gsTUFBTSxDQUFDVSxPQUFSLENBQVYsQ0FBMkJsRCxNQUEzQixDQUFrQ3dDLE1BQU0sQ0FBQ1csUUFBekMsRUFBbUQsQ0FBbkQsRUFBc0RILFFBQXREOztBQUNBLGNBQUksS0FBSzlFLGdCQUFMLElBQXlCLElBQXpCLElBQWlDLEtBQUtBLGdCQUFMLENBQXNCdUYsSUFBdEIsQ0FBMkIzQixHQUEzQixLQUFtQ0EsR0FBeEUsRUFBNkU7QUFDM0UsaUJBQUs1RCxnQkFBTCxDQUFzQndGLEtBQXRCLEdBQThCbEIsTUFBTSxDQUFDVSxPQUFyQyxDQUQyRSxDQUUzRTs7QUFDQSxrQkFBTVMsTUFBTSxHQUFHLEtBQUtDLFdBQUwsQ0FBaUIsS0FBSzFGLGdCQUFMLENBQXNCd0UsTUFBdkMsQ0FBZjtBQUNBLGtCQUFNLEtBQUttQixtQkFBTCxDQUF5QixLQUFLM0YsZ0JBQTlCLEVBQWdEeUYsTUFBaEQsRUFBd0QsSUFBeEQsQ0FBTjs7QUFDQSxpQkFBSzNCLGVBQUwsQ0FBcUJXLFVBQVUsQ0FBQ2IsR0FBaEMsRUFBcUNuQyxhQUFyQztBQUNEO0FBQ0YsU0FWRCxNQVVPO0FBQ0wsY0FBSTZDLE1BQU0sQ0FBQ1csUUFBUCxHQUFrQlgsTUFBTSxDQUFDZSxjQUE3QixFQUE2QztBQUMzQ1osWUFBQUEsVUFBVSxDQUFDSCxNQUFNLENBQUNVLE9BQVIsQ0FBVixDQUEyQmxELE1BQTNCLENBQWtDd0MsTUFBTSxDQUFDVyxRQUF6QyxFQUFtRCxDQUFuRCxFQUFzREgsUUFBdEQ7QUFDQUssWUFBQUEsVUFBVSxDQUFDYixNQUFNLENBQUNVLE9BQVIsQ0FBVixDQUEyQmxELE1BQTNCLENBQWtDd0MsTUFBTSxDQUFDZSxjQUF6QyxFQUF5RCxDQUF6RDtBQUNELFdBSEQsTUFHTztBQUNMRixZQUFBQSxVQUFVLENBQUNiLE1BQU0sQ0FBQ1UsT0FBUixDQUFWLENBQTJCbEQsTUFBM0IsQ0FBa0N3QyxNQUFNLENBQUNlLGNBQXpDLEVBQXlELENBQXpEO0FBQ0FaLFlBQUFBLFVBQVUsQ0FBQ0gsTUFBTSxDQUFDVSxPQUFSLENBQVYsQ0FBMkJsRCxNQUEzQixDQUFrQ3dDLE1BQU0sQ0FBQ1csUUFBekMsRUFBbUQsQ0FBbkQsRUFBc0RILFFBQXREO0FBQ0Q7QUFDRixTQW5CZ0MsQ0FvQmpDOzs7QUFDQSxZQUFJTCxVQUFVLENBQUNiLEdBQVgsS0FBbUJ1QixVQUFVLENBQUN2QixHQUFsQyxFQUF1QztBQUNyQyxlQUFLRSxlQUFMLENBQXFCVyxVQUFVLENBQUNiLEdBQWhDLEVBQXFDbkMsYUFBckM7QUFDRDtBQUNGLE9BeEJELE1Bd0JPO0FBQ0xnRCxRQUFBQSxVQUFVLENBQUNILE1BQU0sQ0FBQ1UsT0FBUixDQUFWLENBQTJCbEQsTUFBM0IsQ0FBa0N3QyxNQUFNLENBQUNXLFFBQXpDLEVBQW1ELENBQW5ELEVBQXNESCxRQUF0RDs7QUFDQSxjQUFNYyxlQUFlLEdBQUcsS0FBS0MsZ0JBQUwsRUFBeEI7O0FBQ0EsWUFBSUQsZUFBZSxJQUFJLElBQW5CLElBQTJCQSxlQUFlLENBQUNFLEtBQWhCLEtBQTBCLElBQXpELEVBQStEO0FBQzdELGNBQUlQLElBQUksR0FBR2QsVUFBVSxDQUFDSCxNQUFNLENBQUNVLE9BQVIsQ0FBVixDQUEyQlYsTUFBTSxDQUFDVyxRQUFsQyxDQUFYOztBQUNBLGNBQUlNLElBQUksSUFBSSxJQUFaLEVBQWtCO0FBQ2hCO0FBQ0FBLFlBQUFBLElBQUksR0FBR2QsVUFBVSxDQUFDSCxNQUFNLENBQUNVLE9BQVIsQ0FBVixDQUEyQlYsTUFBTSxDQUFDVyxRQUFQLEdBQWtCLENBQTdDLENBQVA7QUFDRDs7QUFFRCxjQUFJWCxNQUFNLENBQUN5QixVQUFQLEtBQXNCLElBQTFCLEVBQWdDO0FBQzlCQyxZQUFBQSxVQUFVLENBQUMsWUFBWTtBQUNyQixvQkFBTSxLQUFLQyxhQUFMLENBQW1CO0FBQUVWLGdCQUFBQSxJQUFGO0FBQVFmLGdCQUFBQSxNQUFSO0FBQWdCMEIsZ0JBQUFBLElBQUksRUFBRXpCLFVBQXRCO0FBQWtDZSxnQkFBQUEsS0FBSyxFQUFFbEIsTUFBTSxDQUFDVTtBQUFoRCxlQUFuQixDQUFOO0FBQ0EsbUJBQUttQixjQUFMLENBQW9CM0UsSUFBcEIsQ0FBeUIsTUFBTTtBQUM3QixzQkFBTTRFLFdBQVcsR0FBRyxLQUFLdEMsZUFBTCxDQUFxQlcsVUFBVSxDQUFDYixHQUFoQyxDQUFwQjs7QUFDQXdDLGdCQUFBQSxXQUFXLENBQUNDLGNBQVosR0FBNkJkLElBQUksQ0FBQzNCLEdBQWxDO0FBQ0F3QyxnQkFBQUEsV0FBVyxDQUFDM0UsYUFBWjtBQUNELGVBSkQ7QUFLRCxhQVBTLENBQVY7QUFRRDtBQUNGO0FBQ0Y7O0FBQ0RnRCxNQUFBQSxVQUFVLENBQUM2QixNQUFYLEdBQW9CLElBQXBCO0FBQ0FuQixNQUFBQSxVQUFVLENBQUNtQixNQUFYLEdBQW9CLElBQXBCO0FBQ0EsV0FBS2pILE9BQUwsR0FBZSxJQUFmO0FBQ0EsV0FBS2dELFVBQUwsQ0FBZ0I0QixnQkFBaEIsQ0FBaUMsU0FBakMsRUFBNENDLE9BQTVDLENBQXFEcUMsTUFBRCxJQUFZQSxNQUFNLENBQUNDLGVBQVAsRUFBaEU7QUFDQVIsTUFBQUEsVUFBVSxDQUFDLE1BQU07QUFDZixhQUFLeEcsV0FBTCxHQUFtQixJQUFuQjtBQUNBLGFBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDRCxPQUhTLEVBR1AsQ0FITyxDQUFWO0FBSUQsS0E5RUQsQ0E4RUUsT0FBTzBFLENBQVAsRUFBVTtBQUNWLFdBQUtoRSx1QkFBTCxHQUErQixJQUEvQjtBQUNEO0FBQ0Y7O0FBRURzRyxFQUFBQSxlQUFlLENBQUM7QUFBRW5DLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQzFCLFVBQU1HLFVBQVUsR0FBRyxLQUFLbEIsYUFBTCxDQUFtQmUsTUFBTSxDQUFDUCxNQUExQixDQUFuQjs7QUFDQVUsSUFBQUEsVUFBVSxDQUFDSCxNQUFNLENBQUNVLE9BQVIsQ0FBVixDQUEyQmxELE1BQTNCLENBQWtDd0MsTUFBTSxDQUFDVyxRQUF6QyxFQUFtRCxDQUFuRDtBQUNBUixJQUFBQSxVQUFVLENBQUM2QixNQUFYLEdBQW9CLElBQXBCO0FBQ0EsU0FBS2pILE9BQUwsR0FBZSxJQUFmOztBQUNBLFFBQUlpRixNQUFNLENBQUNvQyxNQUFQLENBQWNDLE9BQWxCLEVBQTJCO0FBQ3pCLFdBQUtsRSxrQkFBTCxDQUF3QixJQUF4QjtBQUNEOztBQUNELFNBQUtxQixlQUFMLENBQXFCUSxNQUFNLENBQUNQLE1BQTVCLEVBQW9DdEMsYUFBcEM7QUFDRDs7QUFFRG1GLEVBQUFBLFNBQVMsR0FBRztBQUNWLFNBQUtDLFVBQUwsQ0FBZ0IsUUFBaEI7O0FBQ0EsU0FBS0MsZUFBTDtBQUNEOztBQUVEcEIsRUFBQUEsV0FBVyxDQUFDO0FBQUVELElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQ3RCLFVBQU1kLFdBQVcsR0FBRztBQUNsQnRELE1BQUFBLEtBQUssRUFBRSxhQURXO0FBRWxCc0QsTUFBQUEsV0FBVyxFQUFFLDBCQUZLO0FBR2xCeEcsTUFBQUEsSUFBSSxFQUFFO0FBSFksS0FBcEI7O0FBS0EsUUFBSXNILE1BQUosRUFBWTtBQUNWLFlBQU1zQixVQUFVLEdBQUcsT0FBT3RCLE1BQVAsS0FBa0IsUUFBbEIsR0FBNkJ1QixJQUFJLENBQUNDLEtBQUwsQ0FBV3hCLE1BQVgsQ0FBN0IsR0FBa0RBLE1BQXJFO0FBQ0EsWUFBTXhILFVBQVUsR0FBRztBQUFFMEcsUUFBQUEsV0FBRjtBQUFlLFdBQUdvQyxVQUFVLENBQUM5STtBQUE3QixPQUFuQjtBQUNBLGFBQU8sRUFBRSxHQUFHOEksVUFBTDtBQUFpQjlJLFFBQUFBO0FBQWpCLE9BQVA7QUFDRDs7QUFDRCxXQUFPO0FBQUVBLE1BQUFBLFVBQVUsRUFBRTtBQUFFMEcsUUFBQUE7QUFBRjtBQUFkLEtBQVA7QUFDRDs7QUFFa0IsUUFBYnNCLGFBQWEsQ0FBQztBQUFFVixJQUFBQSxJQUFGO0FBQVFXLElBQUFBLElBQVI7QUFBYzFCLElBQUFBLE1BQWQ7QUFBc0JnQixJQUFBQTtBQUF0QixHQUFELEVBQWdDO0FBQ2pELFFBQUlELElBQUosRUFBVTtBQUNSLFdBQUszRixnQkFBTCxHQUF3QjRFLE1BQU0sQ0FBQ3BELEVBQS9CO0FBQ0EsWUFBTThGLGVBQWUsR0FBRztBQUFFaEIsUUFBQUEsSUFBRjtBQUFRWCxRQUFBQSxJQUFSO0FBQWNmLFFBQUFBLE1BQWQ7QUFBc0JnQixRQUFBQTtBQUF0QixPQUF4QjtBQUNBLFlBQU1DLE1BQU0sR0FBRyxLQUFLQyxXQUFMLENBQWlCbEIsTUFBakIsQ0FBZjs7QUFDQSxVQUFJO0FBQ0YsY0FBTSxLQUFLbUIsbUJBQUwsQ0FBeUJ1QixlQUF6QixFQUEwQ3pCLE1BQTFDLENBQU47O0FBQ0EsYUFBS2pDLG9CQUFMLENBQTBCLENBQUMwQyxJQUFJLENBQUN0QyxHQUFOLENBQTFCOztBQUNBLGFBQUtrRCxlQUFMOztBQUNBLFlBQUlLLFlBQVksQ0FBQ0MsT0FBYixDQUFxQiwyQ0FBckIsS0FBcUUsSUFBekUsRUFBK0U7QUFDN0UsZUFBS0Msb0JBQUw7QUFDRDtBQUNGLE9BUEQsQ0FPRSxPQUFPbEQsQ0FBUCxFQUFVO0FBQ1YsYUFBS2hFLHVCQUFMLEdBQStCLElBQS9CO0FBQ0Q7QUFDRixLQWRELE1BY087QUFDTCxZQUFNLEtBQUtzQyxrQkFBTCxFQUFOOztBQUNBLFdBQUs2RSxnQkFBTDtBQUNEO0FBQ0Y7O0FBRW9CLFFBQWZDLGVBQWUsQ0FBQztBQUFFakQsSUFBQUEsTUFBTSxFQUFFO0FBQUVpQixNQUFBQSxJQUFGO0FBQVFXLE1BQUFBLElBQVI7QUFBYzFCLE1BQUFBLE1BQWQ7QUFBc0JnQixNQUFBQTtBQUF0QjtBQUFWLEdBQUQsRUFBNEM7QUFDL0QsV0FBTyxLQUFLUyxhQUFMLENBQW1CO0FBQUVWLE1BQUFBLElBQUY7QUFBUVcsTUFBQUEsSUFBUjtBQUFjMUIsTUFBQUEsTUFBZDtBQUFzQmdCLE1BQUFBO0FBQXRCLEtBQW5CLENBQVA7QUFDRDs7QUFFRGdDLEVBQUFBLGtCQUFrQixHQUFHO0FBQ25CLFdBQU8sS0FBS25GLFVBQUwsQ0FBZ0JDLGFBQWhCLENBQThCLG9CQUE5QixDQUFQO0FBQ0Q7O0FBRURnRixFQUFBQSxnQkFBZ0IsR0FBRztBQUNqQixRQUFJLEtBQUs1SCxlQUFMLENBQXFCa0MsTUFBckIsSUFBK0IsQ0FBbkMsRUFBc0M7QUFDcEMsV0FBSzRGLGtCQUFMLEdBQTBCQyxXQUExQjtBQUNEO0FBQ0Y7O0FBRURDLEVBQUFBLG1CQUFtQixHQUFHO0FBQ3BCLFNBQUtGLGtCQUFMLEdBQTBCRyxjQUExQjtBQUNEOztBQUVEYixFQUFBQSxlQUFlLEdBQUc7QUFDaEIsU0FBS1Usa0JBQUwsR0FBMEJJLEtBQTFCO0FBQ0Q7O0FBRURDLEVBQUFBLHNCQUFzQixDQUFDO0FBQUV2RCxJQUFBQTtBQUFGLEdBQUQsRUFBYTtBQUNqQyxVQUFNRyxVQUFVLEdBQUcsS0FBS2xCLGFBQUwsQ0FBbUJlLE1BQU0sQ0FBQ1AsTUFBMUIsQ0FBbkI7O0FBQ0EsVUFBTXdCLElBQUksR0FBR2QsVUFBVSxDQUFDSCxNQUFNLENBQUNVLE9BQVIsQ0FBVixDQUEyQlYsTUFBTSxDQUFDVyxRQUFsQyxDQUFiO0FBQ0FNLElBQUFBLElBQUksQ0FBQ0wsT0FBTCxHQUFlWixNQUFNLENBQUNZLE9BQXRCO0FBQ0FULElBQUFBLFVBQVUsQ0FBQzZCLE1BQVgsR0FBb0IsSUFBcEI7QUFDQSxTQUFLakgsT0FBTCxHQUFlLElBQWY7QUFDRDs7QUFFeUIsUUFBcEJ5SSxvQkFBb0IsR0FBRztBQUMzQixRQUFJO0FBQ0YsWUFBTSxLQUFLckYsa0JBQUwsRUFBTjtBQUNELEtBRkQsQ0FFRSxPQUFPc0YsR0FBUCxFQUFZO0FBQ1osV0FBSzVILHVCQUFMLEdBQStCLElBQS9CO0FBQ0Q7QUFDRjs7QUFFdUIsUUFBbEJzQyxrQkFBa0IsQ0FBQ3VGLEtBQUssR0FBRyxLQUFULEVBQWdCO0FBQ3RDLFVBQU0sS0FBS3JDLG1CQUFMLENBQXlCLElBQXpCLEVBQStCLElBQS9CLEVBQXFDcUMsS0FBckMsQ0FBTjtBQUNEOztBQUV3QixRQUFuQnpELG1CQUFtQixHQUFHO0FBQzFCLFFBQUksS0FBS3BFLHVCQUFMLElBQWdDLElBQXBDLEVBQTBDO0FBQ3hDLFdBQUtBLHVCQUFMLEdBQStCLElBQS9CO0FBQ0EsYUFBTzhILE9BQU8sQ0FBQ0MsR0FBUixDQUFZLEtBQUtDLHFCQUFMLEVBQVosRUFBMEMzRyxJQUExQyxDQUFnRDRHLEtBQUQsSUFBVztBQUMvRCxZQUFJQSxLQUFLLENBQUM5RSxNQUFOLENBQWMrRSxDQUFELElBQU9BLENBQUMsSUFBSSxJQUF6QixFQUErQnpHLE1BQS9CLEdBQXdDLENBQTVDLEVBQStDO0FBQzdDLGVBQUs3QyxXQUFMLEdBQW1CLEtBQUt1SixzQkFBTCxFQUFuQjtBQUNBLGVBQUtDLFdBQUwsR0FBbUJyRSxPQUFuQixDQUE0QkMsQ0FBRCxJQUFPQSxDQUFDLENBQUMxQyxhQUFGLEVBQWxDLEVBRjZDLENBRzdDOztBQUNBLGlCQUFPLEtBQUsrRyxxQkFBTCxHQUE2QmhILElBQTdCLENBQWtDLE1BQU07QUFDN0MsaUJBQUsrRyxXQUFMLEdBQW1CckUsT0FBbkIsQ0FBNEJDLENBQUQsSUFBT0EsQ0FBQyxDQUFDMUMsYUFBRixFQUFsQztBQUNBLG1CQUFPLEtBQUswRSxjQUFMLENBQW9CM0UsSUFBcEIsQ0FBeUIsTUFBTTtBQUNwQyxtQkFBS3JCLHVCQUFMLEdBQStCLElBQS9CO0FBQ0EscUJBQU9pSSxLQUFQO0FBQ0QsYUFITSxDQUFQO0FBSUQsV0FOTSxDQUFQO0FBT0QsU0FYRCxNQVdPO0FBQ0wsZUFBS2pJLHVCQUFMLEdBQStCLElBQS9CO0FBQ0EsaUJBQU9pSSxLQUFQO0FBQ0Q7QUFDRixPQWhCTSxDQUFQO0FBaUJEOztBQUNELFVBQU0sSUFBSUssS0FBSixDQUFVLHFCQUFWLENBQU47QUFDRDs7QUFFd0IsUUFBbkI5QyxtQkFBbUIsQ0FBQ3VCLGVBQUQsRUFBa0J3QixjQUFsQixFQUFrQ1YsS0FBSyxHQUFHLEtBQTFDLEVBQWlEO0FBQ3hFLFFBQUksQ0FBQ0EsS0FBTCxFQUFZO0FBQ1YsWUFBTSxLQUFLekQsbUJBQUwsRUFBTjtBQUNEOztBQUVELFVBQU1rQixNQUFNLEdBQUc5SCxTQUFTLENBQUMrSyxjQUFELENBQXhCOztBQUNBLFFBQUl4QixlQUFlLElBQUksSUFBdkIsRUFBNkI7QUFDM0IsWUFBTXRDLGFBQWEsR0FDakIsT0FBT3NDLGVBQWUsQ0FBQzNCLElBQWhCLENBQXFCWCxhQUE1QixLQUE4QyxRQUE5QyxHQUNJb0MsSUFBSSxDQUFDQyxLQUFMLENBQVdDLGVBQWUsQ0FBQzNCLElBQWhCLENBQXFCWCxhQUFoQyxDQURKLEdBRUlzQyxlQUFlLENBQUMzQixJQUFoQixDQUFxQlgsYUFIM0I7QUFJQSxZQUFNVyxJQUFJLEdBQUcsRUFBRSxHQUFHMkIsZUFBZSxDQUFDM0IsSUFBckI7QUFBMkJYLFFBQUFBO0FBQTNCLE9BQWI7QUFFQSxZQUFNK0QsY0FBYyxHQUFHLEVBQUUsR0FBR3BELElBQUksQ0FBQ1gsYUFBVjtBQUF5QkQsUUFBQUEsV0FBVyxFQUFFWSxJQUFJLENBQUNaO0FBQTNDLE9BQXZCO0FBQ0EsV0FBSzNFLGdCQUFMLEdBQXdCLEVBQUUsR0FBR2tILGVBQUw7QUFBc0IzQixRQUFBQSxJQUF0QjtBQUE0Qm9ELFFBQUFBO0FBQTVCLE9BQXhCOztBQUVBLFVBQUlELGNBQWMsSUFBSUEsY0FBYyxDQUFDekssVUFBZixDQUEwQjJLLEtBQWhELEVBQXVEO0FBQ3JELGNBQU1DLEtBQUssR0FBR3BELE1BQU0sQ0FBQ3hILFVBQVAsQ0FBa0IySyxLQUFsQixDQUF3QkUsSUFBdEM7O0FBQ0EsWUFBSUQsS0FBSyxDQUFDaEYsSUFBTixDQUFZK0UsS0FBRCxJQUFXLENBQUMsU0FBRCxFQUFZLGlCQUFaLEVBQStCLFVBQS9CLEVBQTJDLGtCQUEzQyxFQUErRGpHLFFBQS9ELENBQXdFaUcsS0FBeEUsQ0FBdEIsS0FBeUcsSUFBN0csRUFBbUg7QUFDakgsZ0JBQU1HLFFBQVEsR0FBRyxLQUFLL0ksZ0JBQUwsQ0FBc0J3RixLQUF0QixLQUFnQyxLQUFoQyxHQUF3QyxDQUFDLFNBQUQsRUFBWSxpQkFBWixDQUF4QyxHQUF5RSxDQUFDLFVBQUQsRUFBYSxrQkFBYixDQUExRjtBQUNBQyxVQUFBQSxNQUFNLENBQUN4SCxVQUFQLENBQWtCMkssS0FBbEIsQ0FBd0JFLElBQXhCLEdBQStCRCxLQUFLLENBQUN2RixNQUFOLENBQWNzRixLQUFELElBQVdHLFFBQVEsQ0FBQ3BHLFFBQVQsQ0FBa0JpRyxLQUFsQixDQUF4QixDQUEvQjtBQUNBLGdCQUFNQSxLQUFLLEdBQUcsS0FBSzVJLGdCQUFMLENBQXNCdUYsSUFBdEIsQ0FBMkJYLGFBQTNCLENBQXlDZ0UsS0FBdkQ7O0FBQ0EsY0FBSUEsS0FBSyxJQUFJLElBQVQsSUFBaUIsQ0FBQ25ELE1BQU0sQ0FBQ3hILFVBQVAsQ0FBa0IySyxLQUFsQixDQUF3QkUsSUFBeEIsQ0FBNkJuRyxRQUE3QixDQUFzQ2lHLEtBQXRDLENBQXRCLEVBQW9FO0FBQ2xFbkQsWUFBQUEsTUFBTSxDQUFDeEgsVUFBUCxDQUFrQjJLLEtBQWxCLENBQXdCSSxPQUF4QixHQUFrQ3ZELE1BQU0sQ0FBQ3hILFVBQVAsQ0FBa0IySyxLQUFsQixDQUF3QkUsSUFBeEIsQ0FBNkIsQ0FBN0IsQ0FBbEM7QUFDQSxpQkFBSzlJLGdCQUFMLENBQXNCdUYsSUFBdEIsQ0FBMkJYLGFBQTNCLENBQXlDZ0UsS0FBekMsR0FBaURuRCxNQUFNLENBQUN4SCxVQUFQLENBQWtCMkssS0FBbEIsQ0FBd0JFLElBQXhCLENBQTZCLENBQTdCLENBQWpEO0FBQ0EsaUJBQUs5SSxnQkFBTCxDQUFzQjJJLGNBQXRCLENBQXFDQyxLQUFyQyxHQUE2Q25ELE1BQU0sQ0FBQ3hILFVBQVAsQ0FBa0IySyxLQUFsQixDQUF3QkUsSUFBeEIsQ0FBNkIsQ0FBN0IsQ0FBN0M7O0FBQ0EsZ0JBQUksS0FBSzlJLGdCQUFMLENBQXNCaUosT0FBMUIsRUFBbUM7QUFDakMsbUJBQUtqSixnQkFBTCxDQUFzQmlKLE9BQXRCLENBQThCTCxLQUE5QixHQUFzQ25ELE1BQU0sQ0FBQ3hILFVBQVAsQ0FBa0IySyxLQUFsQixDQUF3QkUsSUFBeEIsQ0FBNkIsQ0FBN0IsQ0FBdEM7QUFDRDtBQUNGO0FBQ0Y7QUFDRjtBQUNGLEtBMUJELE1BMEJPO0FBQ0wsV0FBSzlJLGdCQUFMLEdBQXdCLElBQXhCO0FBQ0Q7O0FBRUQsU0FBS0QsZUFBTCxHQUF1QjBGLE1BQXZCO0FBQ0Q7O0FBRUR5RCxFQUFBQSxRQUFRLENBQUNDLGFBQWEsR0FBRyxJQUFqQixFQUF1QjtBQUM3QixRQUFJQSxhQUFKLEVBQW1CO0FBQ2pCLFdBQUsxRyxrQkFBTCxDQUF3QixJQUF4QjtBQUNEOztBQUNELFNBQUsxRCxXQUFMLEdBQW1CcEIsU0FBUyxDQUFDLEtBQUtvQixXQUFOLENBQTVCO0FBQ0Q7O0FBRW1CLFFBQWRxSyxjQUFjLENBQUM7QUFBRTlFLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQy9CLFFBQUk7QUFDRixZQUFNLEtBQUs3QixrQkFBTCxFQUFOOztBQUNBLFdBQUtDLHFCQUFMOztBQUNBLFdBQUtjLG9CQUFMLENBQTBCYyxNQUFNLENBQUNwRCxLQUFqQzs7QUFDQSxXQUFLMEYsU0FBTDtBQUNELEtBTEQsQ0FLRSxPQUFPekMsQ0FBUCxFQUFVO0FBQ1YsV0FBS2hFLHVCQUFMLEdBQStCLElBQS9CO0FBQ0Q7QUFDRjs7QUFFaUMsUUFBNUJrSiw0QkFBNEIsQ0FBQztBQUFFL0UsSUFBQUEsTUFBTSxFQUFFO0FBQUVFLE1BQUFBO0FBQUY7QUFBVixHQUFELEVBQXlCO0FBQ3pELFFBQUk7QUFDRixVQUFJLEtBQUt4RixhQUFMLElBQXNCLElBQXRCLElBQThCLEtBQUtBLGFBQUwsQ0FBbUJvQyxFQUFuQixLQUEwQm9ELE1BQU0sQ0FBQ3BELEVBQW5FLEVBQXVFO0FBQ3JFLGNBQU0sS0FBS3FCLGtCQUFMLEVBQU47QUFDQSxhQUFLN0MsZ0JBQUwsR0FBd0I0RSxNQUFNLENBQUNwRCxFQUEvQjs7QUFDQSxZQUFJLEtBQUtrSSxlQUFMLEVBQUosRUFBNEI7QUFDMUIsZUFBS3hDLGVBQUw7QUFDRCxTQUZELE1BRU87QUFDTCxlQUFLWSxtQkFBTDtBQUNEOztBQUNEbEssUUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLHFCQUFQLEVBQThCO0FBQUVnSCxVQUFBQTtBQUFGLFNBQTlCLENBQW5CO0FBQ0Q7QUFDRixLQVhELENBV0UsT0FBT0wsQ0FBUCxFQUFVLENBQUU7QUFDZjs7QUFFRG9GLEVBQUFBLG1CQUFtQixDQUFDL0UsTUFBRCxFQUFTO0FBQzFCLFFBQUksS0FBS3hGLGFBQUwsSUFBc0IsSUFBdEIsSUFBOEIsS0FBS0EsYUFBTCxDQUFtQm9DLEVBQW5CLEtBQTBCb0QsTUFBTSxDQUFDcEQsRUFBbkUsRUFBdUU7QUFDckU1RCxNQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8scUJBQVAsRUFBOEI7QUFBRWdILFFBQUFBO0FBQUYsT0FBOUIsQ0FBbkI7QUFDRDtBQUNGOztBQUVENkMsRUFBQUEsb0JBQW9CLEdBQUc7QUFDckIsUUFBSSxLQUFLckgsZ0JBQUwsSUFBeUIsS0FBS0EsZ0JBQUwsQ0FBc0J3RSxNQUFuRCxFQUEyRDtBQUN6RCxXQUFLK0UsbUJBQUwsQ0FBeUIsS0FBS3ZKLGdCQUFMLENBQXNCd0UsTUFBL0M7QUFDRDtBQUNGOztBQUVEZ0YsRUFBQUEsNEJBQTRCLEdBQUc7QUFDN0JyQyxJQUFBQSxZQUFZLENBQUNzQyxVQUFiLENBQXdCLDJDQUF4Qjs7QUFDQSxTQUFLcEMsb0JBQUw7QUFDRDs7QUFFRHFDLEVBQUFBLG1CQUFtQixDQUFDM0YsTUFBRCxFQUFTO0FBQzFCLFVBQU1kLElBQUksR0FBRyxLQUFLdEIsWUFBTCxDQUFrQmtDLElBQWxCLENBQXdCWixJQUFELElBQVVBLElBQUksQ0FBQy9CLEtBQUwsQ0FBVzJDLElBQVgsQ0FBaUJxQyxJQUFELElBQVVBLElBQUksQ0FBQ3RDLEdBQUwsS0FBYUcsTUFBdkMsS0FBa0QsSUFBbkYsQ0FBYjtBQUNBLFdBQU87QUFBRWQsTUFBQUEsSUFBRjtBQUFRL0IsTUFBQUEsS0FBSyxFQUFFK0IsSUFBSSxJQUFJLElBQVIsR0FBZUEsSUFBSSxDQUFDL0IsS0FBcEIsR0FBNEIsS0FBS3lDO0FBQWhELEtBQVA7QUFDRDs7QUFFREosRUFBQUEsYUFBYSxDQUFDUSxNQUFELEVBQVM7QUFDcEIsUUFBSW1DLElBQUksR0FBRyxLQUFLdkMsWUFBTCxDQUFrQkUsSUFBbEIsQ0FBd0JxQyxJQUFELElBQVVBLElBQUksQ0FBQ3RDLEdBQUwsS0FBYUcsTUFBOUMsQ0FBWDs7QUFDQSxRQUFJbUMsSUFBSSxJQUFJLElBQVosRUFBa0I7QUFDaEIsWUFBTXlELFVBQVUsR0FBRyxLQUFLaEksWUFBTCxDQUFrQnFCLEdBQWxCLENBQXVCQyxJQUFELElBQVVBLElBQUksQ0FBQy9CLEtBQXJDLEVBQTRDMEksTUFBNUMsQ0FBbUQsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWNELEdBQUcsQ0FBQ0UsTUFBSixDQUFXRCxHQUFYLENBQWpFLEVBQWtGLEVBQWxGLENBQW5CO0FBQ0E1RCxNQUFBQSxJQUFJLEdBQUd5RCxVQUFVLENBQUM5RixJQUFYLENBQWlCcUMsSUFBRCxJQUFVQSxJQUFJLENBQUN0QyxHQUFMLEtBQWFHLE1BQXZDLENBQVA7QUFDRDs7QUFDRCxXQUFPbUMsSUFBUDtBQUNEOztBQUVEb0QsRUFBQUEsZUFBZSxDQUFDVSxLQUFLLEdBQUcsQ0FBVCxFQUFZO0FBQ3pCLFVBQU1DLGNBQWMsR0FBRyxLQUFLdkssZUFBTCxDQUFxQnNLLEtBQXJCLENBQXZCO0FBQ0EsV0FBTyxLQUFLekcsYUFBTCxDQUFtQjBHLGNBQW5CLENBQVA7QUFDRDs7QUFFREMsRUFBQUEsZUFBZSxDQUFDO0FBQUU1RixJQUFBQTtBQUFGLEdBQUQsRUFBYTtBQUMxQixRQUFJLEtBQUtuRSx1QkFBTCxJQUFnQyxJQUFwQyxFQUEwQztBQUN4QyxXQUFLWCxXQUFMLEdBQW1COEUsTUFBbkI7QUFDRDtBQUNGOztBQUVENkYsRUFBQUEsaUJBQWlCLENBQUM7QUFBRTdGLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQzVCLFNBQUt0RSxnQkFBTCxDQUFzQmlKLE9BQXRCLEdBQWdDM0UsTUFBTSxDQUFDOEYsTUFBdkM7QUFDRDs7QUFFREMsRUFBQUEsY0FBYyxDQUFDRCxNQUFELEVBQVM7QUFDckIsVUFBTTtBQUFFekYsTUFBQUEsV0FBRjtBQUFlLFNBQUdDO0FBQWxCLFFBQW9Dd0YsTUFBMUM7O0FBQ0EsUUFDRSxLQUFLcEssZ0JBQUwsQ0FBc0J1RixJQUF0QixDQUEyQlYsSUFBM0IsSUFDQSxLQUFLN0UsZ0JBQUwsQ0FBc0J1RixJQUF0QixDQUEyQlosV0FBM0IsS0FBMkNBLFdBRDNDLElBRUEsQ0FBQy9HLFNBQVMsQ0FBQyxLQUFLb0MsZ0JBQUwsQ0FBc0J1RixJQUF0QixDQUEyQlgsYUFBNUIsRUFBMkNBLGFBQTNDLENBSFosRUFJRTtBQUNBLFlBQU1zQixJQUFJLEdBQUcsS0FBSzNDLGFBQUwsQ0FBbUIsS0FBS3ZELGdCQUFMLENBQXNCa0csSUFBdEIsQ0FBMkJ0QyxHQUE5QyxDQUFiOztBQUNBLFlBQU1xQixRQUFRLEdBQUdpQixJQUFJLENBQUMsS0FBS2xHLGdCQUFMLENBQXNCd0YsS0FBdkIsQ0FBSixDQUFrQzhFLFNBQWxDLENBQTZDL0UsSUFBRCxJQUFVQSxJQUFJLENBQUMzQixHQUFMLEtBQWEsS0FBSzVELGdCQUFMLENBQXNCdUYsSUFBdEIsQ0FBMkIzQixHQUE5RixDQUFqQjs7QUFFQXNDLE1BQUFBLElBQUksQ0FBQyxLQUFLbEcsZ0JBQUwsQ0FBc0J3RixLQUF2QixDQUFKLENBQWtDUCxRQUFsQyxFQUE0Q04sV0FBNUMsR0FBMERBLFdBQTFEO0FBQ0F1QixNQUFBQSxJQUFJLENBQUMsS0FBS2xHLGdCQUFMLENBQXNCd0YsS0FBdkIsQ0FBSixDQUFrQ1AsUUFBbEMsRUFBNENMLGFBQTVDLEdBQTREakgsU0FBUyxDQUFDaUgsYUFBRCxDQUFyRTtBQUNBLGFBQU9zQixJQUFJLENBQUMsS0FBS2xHLGdCQUFMLENBQXNCd0YsS0FBdkIsQ0FBSixDQUFrQ1AsUUFBbEMsRUFBNENKLElBQW5EO0FBQ0FxQixNQUFBQSxJQUFJLENBQUMsS0FBS2xHLGdCQUFMLENBQXNCd0YsS0FBdkIsQ0FBSixDQUFrQ1AsUUFBbEMsRUFBNENxQixNQUE1QyxHQUFxRCxJQUFyRDtBQUNBSixNQUFBQSxJQUFJLENBQUNJLE1BQUwsR0FBYyxJQUFkO0FBQ0EsV0FBS2pILE9BQUwsR0FBZSxJQUFmO0FBQ0EsV0FBS1csZ0JBQUwsQ0FBc0JrRyxJQUF0QixHQUE2QkEsSUFBN0I7QUFDQSxXQUFLbEcsZ0JBQUwsQ0FBc0J1RixJQUF0QixHQUE2QlcsSUFBSSxDQUFDLEtBQUtsRyxnQkFBTCxDQUFzQndGLEtBQXZCLENBQUosQ0FBa0NQLFFBQWxDLENBQTdCO0FBQ0Q7QUFDRjs7QUFFc0IsUUFBakJzRixpQkFBaUIsQ0FBQztBQUFFakcsSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDbEMsU0FBSytGLGNBQUwsQ0FBb0IvRixNQUFNLENBQUM4RixNQUEzQjs7QUFDQSxVQUFNLEtBQUszSSxhQUFMLENBQW1CLGFBQW5CLENBQU47QUFDQSxTQUFLOEcsV0FBTCxHQUFtQnJFLE9BQW5CLENBQTRCc0csQ0FBRCxJQUFPQSxDQUFDLENBQUMvSSxhQUFGLEVBQWxDO0FBQ0Q7O0FBRURnSixFQUFBQSxhQUFhLEdBQUc7QUFDZCxTQUFLN0QsU0FBTDtBQUNEOztBQUVEOEQsRUFBQUEsYUFBYSxDQUFDO0FBQUVwRyxJQUFBQSxNQUFNLEVBQUU7QUFBRThGLE1BQUFBO0FBQUY7QUFBVixHQUFELEVBQXlCO0FBQ3BDLFVBQU1PLFlBQVksR0FBRyxLQUFLckIsZUFBTCxFQUFyQjs7QUFDQSxVQUFNTCxPQUFPLEdBQUczSyxNQUFNLENBQUNzTSxNQUFQLENBQWMsRUFBZCxFQUFrQixLQUFLQyxxQkFBTCxFQUFsQixFQUFnRFQsTUFBaEQsQ0FBaEI7O0FBQ0EsVUFBTVUsbUJBQW1CLEdBQUd4TSxNQUFNLENBQUNzTSxNQUFQLENBQWMsRUFBZCxFQUFrQkQsWUFBbEIsRUFBZ0MxQixPQUFoQyxDQUE1Qjs7QUFDQSxRQUFJLENBQUNyTCxTQUFTLENBQUMrTSxZQUFELEVBQWVHLG1CQUFmLENBQWQsRUFBbUQ7QUFDakR4TSxNQUFBQSxNQUFNLENBQUNzTSxNQUFQLENBQWNELFlBQWQsRUFBNEJHLG1CQUE1QixFQUFpRDtBQUFFeEUsUUFBQUEsTUFBTSxFQUFFO0FBQVYsT0FBakQ7QUFDQSxXQUFLakgsT0FBTCxHQUFlLElBQWY7O0FBQ0EsV0FBSzZKLFFBQUw7QUFDRDtBQUNGOztBQUVENkIsRUFBQUEsaUJBQWlCLEdBQUc7QUFDbEIsU0FBS25FLFNBQUw7QUFDRDs7QUFFRG9FLEVBQUFBLGlCQUFpQixDQUFDO0FBQUUxRyxJQUFBQSxNQUFNLEVBQUU7QUFBRThGLE1BQUFBO0FBQUY7QUFBVixHQUFELEVBQXlCO0FBQ3hDLFNBQUtyTCxXQUFMLENBQWlCLFdBQWpCLElBQWdDcUwsTUFBTSxDQUFDLFdBQUQsQ0FBTixJQUF1QixTQUF2RDtBQUNBLFNBQUsvSyxPQUFMLEdBQWUsSUFBZjs7QUFDQSxTQUFLNkosUUFBTDtBQUNEOztBQUVEK0IsRUFBQUEsWUFBWSxDQUFDO0FBQUUzRyxJQUFBQTtBQUFGLEdBQUQsRUFBYTtBQUN2QixTQUFLdUMsVUFBTCxDQUFnQnZDLE1BQU0sQ0FBQy9DLEtBQXZCO0FBQ0Q7O0FBRXdCLFFBQW5CMkosbUJBQW1CLENBQUM7QUFBRUMsSUFBQUEsSUFBRjtBQUFRQyxJQUFBQTtBQUFSLEdBQUQsRUFBZTtBQUN0QyxRQUFJRCxJQUFJLEtBQUssWUFBYixFQUEyQjtBQUN6QixZQUFNRSxTQUFTLEdBQUcsS0FBS2hKLFVBQUwsQ0FBZ0JDLGFBQWhCLENBQThCLGVBQTlCLENBQWxCOztBQUNBLFVBQUkrSSxTQUFTLENBQUN2RixLQUFkLEVBQXFCO0FBQ25CLGVBQU91RixTQUFTLENBQUNDLE9BQVYsRUFBUDtBQUNEO0FBQ0YsS0FMRCxNQUtPLElBQUlILElBQUksS0FBSyxXQUFiLEVBQTBCO0FBQy9CLFlBQU1FLFNBQVMsR0FBRyxLQUFLaEosVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsY0FBOUIsQ0FBbEI7O0FBQ0EsVUFBSStJLFNBQVMsQ0FBQ3ZGLEtBQWQsRUFBcUI7QUFDbkIsZUFBT3VGLFNBQVMsQ0FBQ0MsT0FBVixFQUFQO0FBQ0Q7QUFDRixLQUxNLE1BS0E7QUFDTCxVQUFJO0FBQ0YsZUFBTyxNQUFNLEtBQUsvRyxtQkFBTCxFQUFiO0FBQ0QsT0FGRCxDQUVFLE9BQU9KLENBQVAsRUFBVTtBQUNWLGFBQUtoRSx1QkFBTCxHQUErQixJQUEvQjtBQUNBLGNBQU1nRSxDQUFOO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPOEQsT0FBTyxDQUFDc0QsT0FBUixFQUFQO0FBQ0Q7O0FBRUQxRSxFQUFBQSxVQUFVLENBQUNsSSxLQUFELEVBQVE7QUFDaEIsUUFBSSxLQUFLd0IsdUJBQUwsSUFBZ0MsSUFBcEMsRUFBMEM7QUFDeEMsV0FBS3hCLEtBQUwsR0FBYUEsS0FBYjtBQUNBbkIsTUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLFlBQVAsRUFBcUIsS0FBS21CLEtBQTFCLENBQW5CO0FBQ0Q7QUFDRjs7QUFFRDZNLEVBQUFBLG9CQUFvQixDQUFDdEYsSUFBRCxFQUFPO0FBQUU1QixJQUFBQTtBQUFGLEdBQVAsRUFBbUI7QUFDckMsUUFBSSxLQUFLbkUsdUJBQUwsSUFBZ0MsSUFBcEMsRUFBMEM7QUFDeEMsV0FBS1YsV0FBTCxHQUFtQjZFLE1BQW5CO0FBQ0EsV0FBSzlFLFdBQUwsR0FBbUI4RSxNQUFuQjtBQUNEO0FBQ0Y7O0FBRURtSCxFQUFBQSxxQkFBcUIsQ0FBQ0MsWUFBRCxFQUFlO0FBQ2xDLFdBQU9yTyxJQUFJLDBEQUdMcU8sWUFBWSxLQUFLLElBQWpCLEdBQ0VyTyxJQUFJLG1DQUFtQyxLQUFLc08sVUFBeEMsOERBRE4sR0FFRSxFQUxHLGdCQUFYO0FBUUQ7O0FBRURDLEVBQUFBLFdBQVcsQ0FBQzVCLEtBQUssR0FBRyxDQUFULEVBQVk2QixhQUFhLEdBQUcsSUFBNUIsRUFBa0NILFlBQWxDLEVBQWdEO0FBQ3pELFVBQU14RixJQUFJLEdBQUcsS0FBS29ELGVBQUwsQ0FBcUJVLEtBQXJCLENBQWI7O0FBQ0EsUUFBSTlELElBQUosRUFBVTtBQUNSLFlBQU07QUFBRWpELFFBQUFBO0FBQUYsVUFBVyxLQUFLeUcsbUJBQUwsQ0FBeUJ4RCxJQUFJLENBQUN0QyxHQUE5QixDQUFqQjs7QUFDQSxZQUFNeUMsY0FBYyxHQUFHLEtBQUtyRyxnQkFBTCxHQUF3QixLQUFLQSxnQkFBTCxDQUFzQnVGLElBQXRCLENBQTJCM0IsR0FBbkQsR0FBeUQsSUFBaEY7QUFDQSxhQUFPdkcsSUFBSSxzQ0FFRjZJLElBQUksQ0FBQ3RDLEdBRkgsWUFHQXNDLElBSEEsWUFJQWpELElBSkEsZ0JBS0ksS0FBSy9FLFFBTFQsK0JBT0ksS0FBS2lDLHVCQVBULGtCQVFNLEtBQUtYLFdBUlgsa0JBU00sS0FBS0MsV0FUWCxzQkFVVTRHLGNBVlYsZ0JBV0lxRixZQVhKLHlCQVlhLEtBQUs3SixvQkFBTCxJQUE2QixJQVoxQyxrQkFhTSxLQUFLckIsVUFiWCwwQkFjYyxLQUFLZ0wsb0JBQUwsQ0FBMEJNLElBQTFCLENBQStCLElBQS9CLEVBQXFDNUYsSUFBckMsQ0FkZCxvQkFlUSxLQUFLcUIsZUFmYiw0QkFnQmdCLEtBQUtNLHNCQWhCckIsb0JBaUJRLEtBQUt4RCxhQWpCYixzQkFrQlUsS0FBS29DLGVBbEJmLGNBQVg7QUFvQkQsS0F2QkQsTUF1Qk8sSUFBSW9GLGFBQUosRUFBbUI7QUFDeEIsYUFBTyxLQUFLSixxQkFBTCxDQUEyQkMsWUFBM0IsQ0FBUDtBQUNEOztBQUNELFdBQU9yTyxJQUFJLEVBQVg7QUFDRDs7QUFFRDBPLEVBQUFBLGlCQUFpQixDQUFDQyxLQUFELEVBQVE7QUFDdkIsVUFBTTtBQUFFQyxNQUFBQSxhQUFGO0FBQWlCQyxNQUFBQTtBQUFqQixRQUFnQ0YsS0FBSyxDQUFDMUgsTUFBNUM7QUFDQSxVQUFNNkgsT0FBTyxHQUFHLEtBQUtDLGdCQUFMLENBQ2I5SSxNQURhLENBQ0wrSSxRQUFELElBQWNILFVBQVUsSUFBSSxJQUFkLElBQXNCLElBQUlJLE1BQUosQ0FBV0osVUFBWCxFQUF1QkssSUFBdkIsQ0FBNEJGLFFBQVEsQ0FBQ2xPLElBQXJDLENBRDlCLEVBRWI2RSxHQUZhLENBRVQsQ0FBQ3FKLFFBQUQsRUFBV3JDLEtBQVgsS0FBcUI7QUFDeEIsWUFBTXdDLFlBQVksR0FBRyxLQUFLak8sYUFBTCxDQUFtQnNGLElBQW5CLENBQXlCMUYsSUFBRCxJQUFVQSxJQUFJLENBQUNpRCxFQUFMLEtBQVlpTCxRQUFRLENBQUNsTyxJQUF2RCxDQUFyQjtBQUNBLFlBQU1zTyxHQUFHLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixRQUF2QixDQUFaO0FBQ0EsWUFBTUMsT0FBTyxHQUFHSixZQUFZLENBQUNsTCxJQUFiLEdBQW9Ca0wsWUFBWSxDQUFDbEwsSUFBakMsR0FBd0MsSUFBeEQ7QUFDQW1MLE1BQUFBLEdBQUcsQ0FBQ0ksSUFBSixHQUFXO0FBQUVELFFBQUFBLE9BQUY7QUFBV2xJLFFBQUFBLElBQUksRUFBRTJILFFBQVEsQ0FBQzNIO0FBQTFCLE9BQVg7QUFDQSxhQUFPO0FBQ0xvSSxRQUFBQSxPQUFPLEVBQUVMLEdBREo7QUFFTGxMLFFBQUFBLEtBQUssRUFBRThLLFFBQVEsQ0FBQzNILElBRlg7QUFHTHRELFFBQUFBLEVBQUUsRUFBRWlMLFFBQVEsQ0FBQ2xPO0FBSFIsT0FBUDtBQUtELEtBWmEsQ0FBaEI7QUFhQThOLElBQUFBLGFBQWEsQ0FBQ0UsT0FBZCxHQUF3QkEsT0FBeEI7QUFDRDs7QUFFRFksRUFBQUEsYUFBYSxDQUFDckIsWUFBRCxFQUFlO0FBQzFCLFFBQUksS0FBSzNMLGVBQUwsSUFBd0IsS0FBS2YsYUFBakMsRUFBZ0Q7QUFDOUMsYUFBTzNCLElBQUksMkVBQ1MsS0FBSzJQLG1CQUFMLENBQXlCdEIsWUFBekIsQ0FEVCx1REFJSSxLQUFLMU0sYUFBTCxDQUFtQmlPLE9BSnZCLGFBS0ssS0FBS2pPLGFBQUwsQ0FBbUJrTyxLQUx4QixnQkFNUSxLQUFLL00sdUJBTmIsOEJBT3NCLEtBQUt1QyxxQkFQM0Isb0RBQVg7QUFXRCxLQVpELE1BWU8sSUFBSSxLQUFLMUQsYUFBVCxFQUF3QjtBQUM3QixhQUFPM0IsSUFBSSw0QkFDQSxLQUFLMkIsYUFBTCxDQUFtQmlPLE9BRG5CLGFBRUMsS0FBS2pPLGFBQUwsQ0FBbUJrTyxLQUZwQixnQkFHSSxLQUFLL00sdUJBSFQsOEJBSWtCLEtBQUt1QyxxQkFKdkIsdUJBQVg7QUFNRCxLQVBNLE1BT0EsSUFBSSxLQUFLM0MsZUFBVCxFQUEwQjtBQUMvQixhQUFPLEtBQUtpTixtQkFBTCxDQUF5QnRCLFlBQXpCLENBQVA7QUFDRDs7QUFDRCxXQUFPck8sSUFBSSxFQUFYO0FBQ0Q7O0FBRUR3SSxFQUFBQSxnQkFBZ0IsR0FBRztBQUNqQixXQUFPLEtBQUt4RCxVQUFMLENBQWdCQyxhQUFoQixDQUErQixJQUFHdkUsaUJBQWtCLEVBQXBELENBQVA7QUFDRDs7QUFFRG9QLEVBQUFBLGdCQUFnQixHQUFHO0FBQ2pCLFFBQUksS0FBS25OLGdCQUFULEVBQTJCO0FBQ3pCLGFBQU8sS0FBS0EsZ0JBQUwsQ0FBc0JpSixPQUE3Qjs7QUFDQSxXQUFLcEQsZ0JBQUwsR0FBd0J1SCxLQUF4QjtBQUNEO0FBQ0Y7O0FBRUR4SyxFQUFBQSxnQkFBZ0IsQ0FBQ3lLLElBQUQsRUFBT3JGLEtBQUssR0FBRyxLQUFmLEVBQXNCO0FBQ3BDLFdBQU8sS0FBS2xGLFdBQUwsQ0FBaUIsR0FBakIsRUFBc0J1SyxJQUF0QixFQUE0QnJGLEtBQTVCLEVBQW1DLElBQW5DLENBQVA7QUFDRDs7QUFFRDlFLEVBQUFBLG9CQUFvQixDQUFDRCxJQUFELEVBQU8rRSxLQUFLLEdBQUcsS0FBZixFQUFzQjtBQUN4QyxXQUFPLEtBQUtsRixXQUFMLENBQWlCRyxJQUFJLENBQUM3QixFQUF0QixFQUEwQjZCLElBQUksQ0FBQy9CLEtBQS9CLEVBQXNDOEcsS0FBdEMsRUFBNkMsSUFBN0MsQ0FBUDtBQUNEOztBQUVEakQsRUFBQUEsbUJBQW1CLENBQUNoQixNQUFELEVBQVNpQixPQUFULEVBQWtCQyxRQUFsQixFQUE0QjtBQUM3QyxXQUFRLEdBQUVsQixNQUFPLElBQUdpQixPQUFRLElBQUdDLFFBQVMsRUFBeEM7QUFDRDs7QUFFRG5DLEVBQUFBLFdBQVcsQ0FBQ3dLLE1BQUQsRUFBU0QsSUFBVCxFQUFlckYsS0FBSyxHQUFHLEtBQXZCLEVBQThCdUYsTUFBTSxHQUFHLEtBQXZDLEVBQThDO0FBQ3ZELFFBQUlGLElBQUosRUFBVTtBQUNSLGFBQU9BLElBQUksQ0FBQ3JLLEdBQUwsQ0FBUyxDQUFDbUIsQ0FBRCxFQUFJNkYsS0FBSixLQUFjO0FBQzVCLGNBQU1wRyxHQUFHLEdBQUksR0FBRTBKLE1BQU8sSUFBR3RELEtBQU0sRUFBL0I7O0FBQ0EsWUFBSXVELE1BQUosRUFBWTtBQUNWLGNBQUlwSixDQUFDLENBQUNxSixHQUFOLEVBQVc7QUFDVHJKLFlBQUFBLENBQUMsQ0FBQ3FKLEdBQUYsQ0FBTXRKLE9BQU4sQ0FBYyxDQUFDcUIsSUFBRCxFQUFPa0ksU0FBUCxLQUFzQmxJLElBQUksQ0FBQzNCLEdBQUwsR0FBVyxLQUFLbUIsbUJBQUwsQ0FBeUJuQixHQUF6QixFQUE4QixLQUE5QixFQUFxQzZKLFNBQXJDLENBQS9DO0FBQ0Q7O0FBQ0QsY0FBSXRKLENBQUMsQ0FBQ3VKLElBQU4sRUFBWTtBQUNWdkosWUFBQUEsQ0FBQyxDQUFDdUosSUFBRixDQUFPeEosT0FBUCxDQUFlLENBQUNxQixJQUFELEVBQU9rSSxTQUFQLEtBQXNCbEksSUFBSSxDQUFDM0IsR0FBTCxHQUFXLEtBQUttQixtQkFBTCxDQUF5Qm5CLEdBQXpCLEVBQThCLE1BQTlCLEVBQXNDNkosU0FBdEMsQ0FBaEQ7QUFDRDtBQUNGOztBQUNELFlBQUl6RixLQUFLLElBQUk3RCxDQUFDLENBQUNQLEdBQUYsSUFBUyxJQUF0QixFQUE0QjtBQUMxQixpQkFBTyxFQUFFLEdBQUdPLENBQUw7QUFBUVAsWUFBQUE7QUFBUixXQUFQO0FBQ0Q7O0FBQ0QsZUFBT08sQ0FBUDtBQUNELE9BZE0sQ0FBUDtBQWVEOztBQUNELFdBQU9rSixJQUFQO0FBQ0Q7O0FBRUQ5RSxFQUFBQSxXQUFXLEdBQUc7QUFDWixXQUFPLENBQ0wsR0FBR25LLEtBQUssQ0FBQytNLElBQU4sQ0FBVyxLQUFLOUksVUFBTCxDQUFnQjRCLGdCQUFoQixDQUFpQyxTQUFqQyxDQUFYLENBREUsRUFFTCxHQUFHN0YsS0FBSyxDQUFDK00sSUFBTixDQUFXLEtBQUs5SSxVQUFMLENBQWdCNEIsZ0JBQWhCLENBQWlDLG9CQUFqQyxDQUFYLENBRkUsQ0FBUDtBQUlEOztBQUV1QixRQUFsQjBKLGtCQUFrQixHQUFHO0FBQ3pCLFVBQU0sTUFBTUEsa0JBQU4sRUFBTjtBQUNBLFVBQU0xRixPQUFPLENBQUNDLEdBQVIsQ0FBWSxLQUFLSyxXQUFMLEdBQW1CdkYsR0FBbkIsQ0FBd0JtQixDQUFELElBQU9BLENBQUMsQ0FBQ2dDLGNBQWhDLENBQVosQ0FBTjtBQUNEOztBQUVEeUgsRUFBQUEsWUFBWSxDQUFDQyxpQkFBRCxFQUFvQjtBQUM5QjtBQUNBLFFBQUlBLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixhQUF0QixDQUFKLEVBQTBDO0FBQ3hDLFdBQUt6TCxVQUFMLENBQWdCNEIsZ0JBQWhCLENBQWlDLFNBQWpDLEVBQTRDQyxPQUE1QyxDQUFxRGdDLElBQUQsSUFBV0EsSUFBSSxDQUFDNkgsVUFBTCxHQUFrQixLQUFLdk8sV0FBdEY7QUFDQSxhQUFPLEtBQVA7QUFDRDs7QUFDRCxRQUFJcU8saUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLGFBQXRCLENBQUosRUFBMEM7QUFDeEMsV0FBS3pMLFVBQUwsQ0FBZ0I0QixnQkFBaEIsQ0FBaUMsU0FBakMsRUFBNENDLE9BQTVDLENBQXFEZ0MsSUFBRCxJQUFXQSxJQUFJLENBQUM4SCxVQUFMLEdBQWtCLEtBQUt2TyxXQUF0RjtBQUNBLGFBQU8sS0FBUDtBQUNEOztBQUNELFdBQU8sTUFBTW1PLFlBQU4sQ0FBbUJDLGlCQUFuQixDQUFQO0FBQ0Q7O0FBRURJLEVBQUFBLE9BQU8sQ0FBQ0MsS0FBRCxFQUFRO0FBQ2IsUUFBSUEsS0FBSyxDQUFDSixHQUFOLENBQVUsZUFBVixLQUE4QixLQUFLOU8sYUFBTCxJQUFzQixJQUFwRCxJQUE0RCxLQUFLVSxlQUFMLENBQXFCa0MsTUFBckIsR0FBOEIsQ0FBOUYsRUFBaUc7QUFDL0YsV0FBSzRCLG9CQUFMLENBQTBCLENBQUMsS0FBSzlELGVBQUwsQ0FBcUIsQ0FBckIsQ0FBRCxDQUExQjtBQUNEO0FBQ0Y7O0FBRURzTixFQUFBQSxtQkFBbUIsQ0FBQ3RCLFlBQUQsRUFBZTtBQUNoQyxVQUFNdEIsTUFBTSxHQUFHLEtBQUtwSyxnQkFBTCxDQUFzQmlKLE9BQXRCLElBQWlDLEtBQUtqSixnQkFBTCxDQUFzQjJJLGNBQXRFO0FBQ0EsV0FBT3RMLElBQUksR0FBR0ssS0FBSyxDQUNqQixLQUFLcUMsZUFBTCxJQUF3QixLQUFLQyxnQkFBN0IsR0FDSTNDLElBQUkseUZBR1NVLGlCQUhULGNBSWEsS0FBS2dDLGVBSmxCLGdFQVFhcUssTUFSYixhQVNZLEtBQUtwSyxnQkFBTCxDQUFzQmlKLE9BQXRCLElBQWlDLElBVDdDLGdCQVVleUMsWUFWZix3Q0FZNEIsS0FBS3ZCLGlCQVpqQyw0QkFhMkIsS0FBS2dELGdCQWJoQyxzQ0FjcUMsS0FBS3BCLGlCQWQxQyw2QkFlNEIsS0FBS3hCLGlCQWZqQyxzREFpQm9ELEtBQUt2SyxnQkFBTCxDQUFzQnVGLElBQXRCLENBQTJCYixJQWpCL0UsOEZBdUJ3QixLQUFLb0Qsb0JBdkI3QixnR0E2QmlCLEtBQUs5SSxhQUFMLElBQXNCLElBN0J2QyxzQ0FnQ3dCLEtBQUt3Syw0QkFoQzdCLDJFQURSLEdBdUNJLEVBeENhLENBQVIsRUFBWDtBQTBDRDs7QUFFRDlHLEVBQUFBLHFCQUFxQixHQUFHO0FBQ3RCLFNBQUsxRCxhQUFMLEdBQXFCLElBQXJCOztBQUNBLFFBQUksS0FBS2dCLGdCQUFMLElBQXlCLElBQTdCLEVBQW1DO0FBQ2pDLFdBQUtzSCxnQkFBTDtBQUNELEtBRkQsTUFFTztBQUNMSCxNQUFBQSxZQUFZLENBQUNnSCxPQUFiLENBQXFCLDJDQUFyQixFQUFrRSxJQUFsRTtBQUNEO0FBQ0Y7O0FBRURDLEVBQUFBLGFBQWEsQ0FBQztBQUFFOUosSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDeEIsVUFBTVAsTUFBTSxHQUFHTyxNQUFNLENBQUMySSxPQUFQLENBQWVySixHQUE5Qjs7QUFDQSxVQUFNO0FBQUUxQyxNQUFBQTtBQUFGLFFBQVksS0FBS3dJLG1CQUFMLENBQXlCM0YsTUFBekIsQ0FBbEI7O0FBQ0EsVUFBTW1DLElBQUksR0FBR2hGLEtBQUssQ0FBQzJDLElBQU4sQ0FBWXFDLElBQUQsSUFBVUEsSUFBSSxDQUFDdEMsR0FBTCxLQUFhRyxNQUFsQyxDQUFiOztBQUNBLFNBQUtzSyxXQUFMLENBQWlCbk4sS0FBakIsRUFBd0JnRixJQUF4QjtBQUNEOztBQUVlLE1BQVp2QyxZQUFZLEdBQUc7QUFDakIsV0FBTyxLQUFLNUUsV0FBTCxJQUFvQixLQUFLQSxXQUFMLENBQWlCbUMsS0FBckMsR0FBNkMsS0FBS25DLFdBQUwsQ0FBaUJtQyxLQUE5RCxHQUFzRSxFQUE3RTtBQUNEOztBQUVlLE1BQVpTLFlBQVksR0FBRztBQUNqQixXQUFPLEtBQUs1QyxXQUFMLElBQW9CLEtBQUtBLFdBQUwsQ0FBaUJnRSxLQUFyQyxHQUE2QyxLQUFLaEUsV0FBTCxDQUFpQmdFLEtBQTlELEdBQXNFLEVBQTdFO0FBQ0Q7O0FBRW1CLE1BQWhCcUosZ0JBQWdCLEdBQUc7QUFDckIsV0FBTyxLQUFLck4sV0FBTCxJQUFvQixLQUFLQSxXQUFMLENBQWlCOEQsU0FBckMsR0FBaUQsS0FBSzlELFdBQUwsQ0FBaUI4RCxTQUFsRSxHQUE4RSxFQUFyRjtBQUNEOztBQUVvQixNQUFqQnlMLGlCQUFpQixHQUFHO0FBQ3RCLFdBQU8sS0FBS3ZQLFdBQUwsSUFBb0IsS0FBS0EsV0FBTCxDQUFpQmQsVUFBckMsR0FBa0QsS0FBS2MsV0FBTCxDQUFpQmQsVUFBbkUsR0FBZ0YsRUFBdkY7QUFDRDs7QUFFcUIsUUFBaEJzUSxnQkFBZ0IsQ0FBQztBQUFFakssSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDakMsUUFBSTtBQUNGLFlBQU0sS0FBS0MsbUJBQUwsRUFBTjtBQUVBLFlBQU1SLE1BQU0sR0FBR08sTUFBTSxDQUFDMkksT0FBUCxDQUFlckosR0FBOUI7O0FBQ0EsWUFBTTtBQUFFWCxRQUFBQSxJQUFGO0FBQVEvQixRQUFBQTtBQUFSLFVBQWtCLEtBQUt3SSxtQkFBTCxDQUF5QjNGLE1BQXpCLENBQXhCOztBQUNBLFdBQUt5SyxRQUFMLENBQWN0TixLQUFkLEVBQXFCLEtBQUtxQyxhQUFMLENBQW1CUSxNQUFuQixDQUFyQjs7QUFDQSxVQUFJZCxJQUFJLElBQUksSUFBWixFQUFrQjtBQUNoQixZQUFJd0wsU0FBUyxHQUFHLElBQWhCO0FBQ0EsYUFBSzlNLFlBQUwsQ0FBa0JrQyxJQUFsQixDQUF1QixDQUFDNkssQ0FBRCxFQUFJQyxDQUFKLEtBQVU7QUFDL0IsY0FBSUQsQ0FBQyxDQUFDdE4sRUFBRixLQUFTNkIsSUFBSSxDQUFDN0IsRUFBbEIsRUFBc0I7QUFDcEJxTixZQUFBQSxTQUFTLEdBQUdFLENBQVo7QUFDQSxtQkFBTyxJQUFQO0FBQ0Q7O0FBQ0QsaUJBQU8sS0FBUDtBQUNELFNBTkQ7QUFPQTFMLFFBQUFBLElBQUksQ0FBQy9CLEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUtTLFlBQUwsQ0FBa0I4TSxTQUFsQixFQUE2QnZOLEtBQTdCLEdBQXFDLEtBQUtnQyxvQkFBTCxDQUEwQkQsSUFBMUIsRUFBZ0MsSUFBaEMsQ0FBckM7O0FBQ0EsYUFBS08sb0JBQUwsQ0FBMEIsQ0FBQyxLQUFLN0IsWUFBTCxDQUFrQjhNLFNBQWxCLEVBQTZCdk4sS0FBN0IsQ0FBbUNBLEtBQUssQ0FBQ1UsTUFBTixHQUFlLENBQWxELEVBQXFEZ0MsR0FBdEQsQ0FBMUI7QUFDRCxPQVpELE1BWU87QUFDTCxhQUFLN0UsV0FBTCxDQUFpQm1DLEtBQWpCLEdBQXlCLEtBQUswQixnQkFBTCxDQUFzQixLQUFLN0QsV0FBTCxDQUFpQm1DLEtBQXZDLENBQXpCOztBQUNBLGFBQUtzQyxvQkFBTCxDQUEwQixDQUFDLEtBQUt6RSxXQUFMLENBQWlCbUMsS0FBakIsQ0FBdUIsS0FBS25DLFdBQUwsQ0FBaUJtQyxLQUFqQixDQUF1QlUsTUFBdkIsR0FBZ0MsQ0FBdkQsRUFBMERnQyxHQUEzRCxDQUExQjtBQUNEO0FBQ0YsS0F0QkQsQ0FzQkUsT0FBT21FLEdBQVAsRUFBWTtBQUNaLFdBQUs1SCx1QkFBTCxHQUErQixJQUEvQjtBQUNEO0FBQ0Y7O0FBRUR5TyxFQUFBQSxrQkFBa0IsQ0FBQztBQUFFdEssSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDN0IsVUFBTTRCLElBQUksR0FBRyxLQUFLM0MsYUFBTCxDQUFtQmUsTUFBTSxDQUFDMkksT0FBUCxDQUFlckosR0FBbEMsQ0FBYjs7QUFDQXNDLElBQUFBLElBQUksQ0FBQ2hCLE9BQUwsR0FBZVosTUFBTSxDQUFDWSxPQUF0QjtBQUNBZ0IsSUFBQUEsSUFBSSxDQUFDSSxNQUFMLEdBQWMsSUFBZDtBQUNBLFNBQUtqSCxPQUFMLEdBQWUsSUFBZjtBQUNEOztBQUVtQixRQUFkd1AsY0FBYyxDQUFDO0FBQUV2SyxJQUFBQTtBQUFGLEdBQUQsRUFBYTtBQUMvQixRQUFJO0FBQ0YsWUFBTSxLQUFLQyxtQkFBTCxFQUFOOztBQUNBLFdBQUtpSyxRQUFMLENBQWMsS0FBSzdNLFlBQUwsQ0FBa0IyQyxNQUFNLENBQUNtSyxTQUF6QixFQUFvQ3ZOLEtBQWxEOztBQUNBLFdBQUtTLFlBQUwsQ0FBa0IyQyxNQUFNLENBQUNtSyxTQUF6QixFQUFvQ3ZOLEtBQXBDLEdBQTRDLEtBQUtnQyxvQkFBTCxDQUEwQixLQUFLdkIsWUFBTCxDQUFrQjJDLE1BQU0sQ0FBQ21LLFNBQXpCLENBQTFCLENBQTVDOztBQUNBLFdBQUtqTCxvQkFBTCxDQUEwQixDQUFDLEtBQUs3QixZQUFMLENBQWtCMkMsTUFBTSxDQUFDbUssU0FBekIsRUFBb0N2TixLQUFwQyxDQUEwQyxLQUFLUyxZQUFMLENBQWtCMkMsTUFBTSxDQUFDbUssU0FBekIsRUFBb0N2TixLQUFwQyxDQUEwQ1UsTUFBMUMsR0FBbUQsQ0FBN0YsRUFBZ0dnQyxHQUFqRyxDQUExQjtBQUNELEtBTEQsQ0FLRSxPQUFPbUUsR0FBUCxFQUFZO0FBQ1osV0FBSzVILHVCQUFMLEdBQStCLElBQS9CO0FBQ0Q7QUFDRjs7QUFFZSxRQUFWd0wsVUFBVSxHQUFHO0FBQ2pCLFFBQUk7QUFDRixZQUFNLEtBQUtwSCxtQkFBTCxFQUFOOztBQUVBLFdBQUtpSyxRQUFMLENBQWMsS0FBS3pQLFdBQUwsQ0FBaUJtQyxLQUEvQjs7QUFDQSxXQUFLbkMsV0FBTCxDQUFpQm1DLEtBQWpCLEdBQXlCLEtBQUswQixnQkFBTCxDQUFzQixLQUFLN0QsV0FBTCxDQUFpQm1DLEtBQXZDLENBQXpCOztBQUNBLFdBQUtzQyxvQkFBTCxDQUEwQixDQUFDLEtBQUt6RSxXQUFMLENBQWlCbUMsS0FBakIsQ0FBdUIsS0FBS25DLFdBQUwsQ0FBaUJtQyxLQUFqQixDQUF1QlUsTUFBdkIsR0FBZ0MsQ0FBdkQsRUFBMERnQyxHQUEzRCxDQUExQjtBQUNELEtBTkQsQ0FNRSxPQUFPbUUsR0FBUCxFQUFZO0FBQ1osV0FBSzVILHVCQUFMLEdBQStCLElBQS9CO0FBQ0Q7QUFDRjs7QUFFRHFPLEVBQUFBLFFBQVEsQ0FBQ00sVUFBRCxFQUFhQyxTQUFTLEdBQUcsSUFBekIsRUFBK0I7QUFDckMsVUFBTTdJLElBQUksR0FDUjZJLFNBQVMsSUFBSSxJQUFiLEdBQ0ksS0FBS2xFLHFCQUFMLEVBREosR0FFSSxFQUNFLEdBQUdrRSxTQURMO0FBRUVuTCxNQUFBQSxHQUFHLEVBQUUsSUFGUDtBQUdFO0FBQ0F4QyxNQUFBQSxFQUFFLEVBQUUsSUFKTjtBQUtFa0YsTUFBQUEsTUFBTSxFQUFFO0FBTFYsS0FITjtBQVdBd0ksSUFBQUEsVUFBVSxDQUFDRSxJQUFYLENBQWdCOUksSUFBaEI7QUFDQSxTQUFLN0csT0FBTCxHQUFlLElBQWY7QUFDQSxXQUFPeVAsVUFBUDtBQUNEOztBQUVEakUsRUFBQUEscUJBQXFCLEdBQUc7QUFDdEIsVUFBTW9FLE9BQU8sR0FBRztBQUNkdkssTUFBQUEsSUFBSSxFQUFFLEVBRFE7QUFFZDhJLE1BQUFBLEdBQUcsRUFBRSxFQUZTO0FBR2RFLE1BQUFBLElBQUksRUFBRSxFQUhRO0FBSWRwSCxNQUFBQSxNQUFNLEVBQUU7QUFKTSxLQUFoQjtBQU9BLFdBQU8sS0FBSzRJLFlBQUwsQ0FBa0IsS0FBS2pRLFVBQUwsQ0FBZ0JoQixVQUFsQyxFQUE4Q2dSLE9BQTlDLENBQVA7QUFDRDs7QUFFREMsRUFBQUEsWUFBWSxDQUFDQyxvQkFBRCxFQUF1QkMsU0FBUyxHQUFHLEVBQW5DLEVBQXVDO0FBQ2pELFVBQU1DLFFBQVEsR0FBRyxFQUFFLEdBQUdEO0FBQUwsS0FBakI7O0FBRUEsUUFBSUQsb0JBQUosRUFBMEI7QUFDeEIsV0FBSyxNQUFNRyxHQUFYLElBQWtCaFIsTUFBTSxDQUFDaVIsSUFBUCxDQUFZSixvQkFBWixDQUFsQixFQUFxRDtBQUNuRCxjQUFNSyxLQUFLLEdBQUdMLG9CQUFvQixDQUFDRyxHQUFELENBQWxDOztBQUVBLFlBQUlFLEtBQUssQ0FBQ3JSLElBQU4sS0FBZSxRQUFuQixFQUE2QjtBQUMzQmtSLFVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxDQUFSLEdBQWdCLEtBQUtKLFlBQUwsQ0FBa0JNLEtBQUssQ0FBQ3ZSLFVBQXhCLEVBQXFDbVIsU0FBUyxHQUFHLEVBQWpELENBQWhCO0FBQ0Q7O0FBQ0QsWUFBSUksS0FBSyxDQUFDeEcsT0FBTixLQUFrQnlHLFNBQXRCLEVBQWlDO0FBQy9CSixVQUFBQSxRQUFRLENBQUNDLEdBQUQsQ0FBUixHQUFnQkUsS0FBSyxDQUFDeEcsT0FBdEI7QUFDRCxTQUZELE1BRU8sSUFBSXdHLEtBQUssQ0FBQ3JSLElBQU4sS0FBZSxRQUFuQixFQUE2QjtBQUNsQ2tSLFVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxDQUFSLEdBQWdCLEVBQWhCO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFdBQU9ELFFBQVA7QUFDRDs7QUFFRGhCLEVBQUFBLFdBQVcsQ0FBQ1MsVUFBRCxFQUFhNUksSUFBYixFQUFtQjtBQUM1QixVQUFNOEQsS0FBSyxHQUFHOEUsVUFBVSxDQUFDWSxPQUFYLENBQW1CeEosSUFBbkIsQ0FBZDtBQUNBNEksSUFBQUEsVUFBVSxDQUFDaE4sTUFBWCxDQUFrQmtJLEtBQWxCLEVBQXlCLENBQXpCO0FBQ0EsVUFBTTJGLGFBQWEsR0FBRyxLQUFLalEsZUFBTCxDQUFxQjRELE1BQXJCLENBQTZCUyxNQUFELElBQVlBLE1BQU0sS0FBS21DLElBQUksQ0FBQ3RDLEdBQXhELENBQXRCOztBQUNBLFFBQUkrTCxhQUFhLENBQUMvTixNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCLFdBQUs0QixvQkFBTCxDQUEwQm1NLGFBQTFCO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS3ZNLGdCQUFMLENBQXNCLElBQXRCO0FBQ0Q7O0FBQ0QsU0FBS3lELFVBQUwsQ0FBZ0IsUUFBaEI7O0FBQ0EsU0FBS3FDLFFBQUw7O0FBQ0EsU0FBSzdKLE9BQUwsR0FBZSxJQUFmO0FBQ0Q7O0FBRUR1USxFQUFBQSxjQUFjLENBQUN2QyxJQUFELEVBQU9qTSxFQUFQLEVBQVc7QUFDdkIsUUFBSTRJLEtBQUssR0FBRyxJQUFaO0FBQ0FxRCxJQUFBQSxJQUFJLENBQUN4SixJQUFMLENBQVUsQ0FBQ2dNLENBQUQsRUFBSWxCLENBQUosS0FBVTtBQUNsQixVQUFJa0IsQ0FBQyxDQUFDak0sR0FBRixLQUFVeEMsRUFBZCxFQUFrQjtBQUNoQjRJLFFBQUFBLEtBQUssR0FBRzJFLENBQVI7QUFDQSxlQUFPLElBQVA7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDRCxLQU5EO0FBT0EsV0FBTzNFLEtBQVA7QUFDRDs7QUFFb0IsUUFBZjhGLGVBQWUsQ0FBQztBQUFFeEwsSUFBQUEsTUFBTSxFQUFFO0FBQUVyQixNQUFBQTtBQUFGO0FBQVYsR0FBRCxFQUF1QjtBQUMxQyxRQUFJO0FBQ0YsWUFBTSxLQUFLc0IsbUJBQUwsRUFBTjtBQUNBLFdBQUtsRixPQUFMLEdBQWUsSUFBZjs7QUFDQSxVQUFJNEQsSUFBSSxJQUFJLElBQVosRUFBa0I7QUFDaEIsY0FBTThNLFFBQVEsR0FBRyxLQUFLN00sb0JBQUwsQ0FBMEJELElBQTFCLEVBQWdDLElBQWhDLENBQWpCOztBQUNBLFlBQUksS0FBS3ZELGVBQVQsRUFBMEI7QUFDeEIsZUFBSzhELG9CQUFMLENBQ0UsS0FBSzlELGVBQUwsQ0FBcUJzRCxHQUFyQixDQUEwQmUsTUFBRCxJQUFZO0FBQ25DLGtCQUFNaUcsS0FBSyxHQUFHLEtBQUs0RixjQUFMLENBQW9CM00sSUFBSSxDQUFDL0IsS0FBekIsRUFBZ0M2QyxNQUFoQyxDQUFkOztBQUNBLG1CQUFPaUcsS0FBSyxJQUFJLElBQVQsR0FBZ0IrRixRQUFRLENBQUMvRixLQUFELENBQVIsQ0FBZ0JwRyxHQUFoQyxHQUFzQ0csTUFBN0M7QUFDRCxXQUhELENBREY7QUFNRDs7QUFDRGQsUUFBQUEsSUFBSSxDQUFDL0IsS0FBTCxHQUFhNk8sUUFBYjtBQUNELE9BWEQsTUFXTztBQUNMLGNBQU1BLFFBQVEsR0FBRyxLQUFLbk4sZ0JBQUwsQ0FBc0IsS0FBSzdELFdBQUwsQ0FBaUJtQyxLQUF2QyxFQUE4QyxJQUE5QyxDQUFqQjs7QUFDQSxZQUFJLEtBQUt4QixlQUFULEVBQTBCO0FBQ3hCLGVBQUs4RCxvQkFBTCxDQUNFLEtBQUs5RCxlQUFMLENBQXFCc0QsR0FBckIsQ0FBMEJlLE1BQUQsSUFBWTtBQUNuQyxrQkFBTWlHLEtBQUssR0FBRyxLQUFLNEYsY0FBTCxDQUFvQixLQUFLN1EsV0FBTCxDQUFpQm1DLEtBQXJDLEVBQTRDNkMsTUFBNUMsQ0FBZDs7QUFDQSxtQkFBT2lHLEtBQUssSUFBSSxJQUFULEdBQWdCK0YsUUFBUSxDQUFDL0YsS0FBRCxDQUFSLENBQWdCcEcsR0FBaEMsR0FBc0NHLE1BQTdDO0FBQ0QsV0FIRCxDQURGO0FBTUQ7O0FBQ0QsYUFBS2hGLFdBQUwsQ0FBaUJtQyxLQUFqQixHQUF5QjZPLFFBQXpCO0FBQ0Q7QUFDRixLQTFCRCxDQTBCRSxPQUFPaEksR0FBUCxFQUFZO0FBQ1osV0FBSzVILHVCQUFMLEdBQStCLEtBQS9CO0FBQ0Q7QUFDRjs7QUFFRDZQLEVBQUFBLGVBQWUsQ0FBQztBQUFFMUwsSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDMUIsU0FBS3pFLGtCQUFMLEdBQTBCeUUsTUFBMUI7QUFDRDs7QUFFRDJMLEVBQUFBLGNBQWMsR0FBRztBQUNmLFNBQUtwUSxrQkFBTCxHQUEwQixJQUExQjtBQUNEOztBQUVEcVEsRUFBQUEsY0FBYyxDQUFDO0FBQUU1TCxJQUFBQTtBQUFGLEdBQUQsRUFBYTtBQUN6QixTQUFLeEUsZ0JBQUwsR0FBd0J3RSxNQUF4QjtBQUNEOztBQUVENkwsRUFBQUEsYUFBYSxHQUFHO0FBQ2QsU0FBS3JRLGdCQUFMLEdBQXdCLElBQXhCO0FBQ0Q7O0FBRWdCLFFBQVhzUSxXQUFXLEdBQUc7QUFDbEIsUUFBSTtBQUNGLFlBQU0sS0FBSzNOLGtCQUFMLEVBQU47QUFDQSxXQUFLM0QsVUFBTCxHQUFrQm5CLFNBQVMsQ0FBQyxLQUFLd0Ysa0JBQU4sQ0FBM0I7QUFDRCxLQUhELENBR0UsT0FBT2dCLENBQVAsRUFBVTtBQUNWLFdBQUtoRSx1QkFBTCxHQUErQixJQUEvQjtBQUNEO0FBQ0Y7O0FBRURrUSxFQUFBQSxtQkFBbUIsQ0FBQzlLLElBQUQsRUFBTztBQUN4QixXQUFPQSxJQUFJLENBQUNWLElBQUwsS0FBYyxJQUFyQjtBQUNEOztBQUVEeUwsRUFBQUEsd0JBQXdCLENBQUNDLENBQUQsRUFBSTtBQUMxQixVQUFNQyxJQUFJLEdBQUcsRUFBRSxHQUFHRDtBQUFMLEtBQWI7QUFDQWpTLElBQUFBLE1BQU0sQ0FBQ2lSLElBQVAsQ0FBWWdCLENBQVosRUFDR2pOLE1BREgsQ0FDV2dNLEdBQUQsSUFBU0EsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FEbkIsRUFFR3ZNLE9BRkgsQ0FFWW9MLEdBQUQsSUFBUztBQUNoQixhQUFPa0IsSUFBSSxDQUFDbEIsR0FBRCxDQUFYO0FBQ0QsS0FKSDtBQUtBLFdBQU9rQixJQUFQO0FBQ0Q7O0FBRURySSxFQUFBQSxxQkFBcUIsR0FBRztBQUN0QixXQUFPLENBQUMsR0FBRyxLQUFLOUYsVUFBTCxDQUFnQjRCLGdCQUFoQixDQUFpQyxnQkFBakMsQ0FBSixFQUNKWCxNQURJLENBQ0lvTixJQUFELElBQVU7QUFDaEIsWUFBTUMsT0FBTyxHQUFHRCxJQUFJLENBQUNDLE9BQUwsRUFBaEI7O0FBQ0EsVUFBSUEsT0FBSixFQUFhO0FBQ1gsWUFBSUQsSUFBSSxDQUFDNUssS0FBVCxFQUFnQjtBQUNkNEssVUFBQUEsSUFBSSxDQUFDRSxNQUFMO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLENBQUNELE9BQVI7QUFDRCxLQVRJLEVBVUozTixHQVZJLENBVUMwTixJQUFELElBQVVBLElBQUksQ0FBQ3BGLE9BQUwsRUFWVixDQUFQO0FBV0Q7O0FBRUR1RixFQUFBQSxvQkFBb0IsR0FBRztBQUNyQixXQUFPLEtBQUt4TyxVQUFMLENBQWdCQyxhQUFoQixDQUE4QixlQUE5QixDQUFQO0FBQ0Q7O0FBRTBCLFFBQXJCa0cscUJBQXFCLEdBQUc7QUFDNUIsUUFBSSxLQUFLeEksZ0JBQUwsSUFBeUIsS0FBS04sZUFBbEMsRUFBbUQ7QUFDakQsWUFBTW9SLGFBQWEsR0FBRyxLQUFLcFIsZUFBTCxDQUNuQnNELEdBRG1CLENBQ2RlLE1BQUQsSUFBWTtBQUNmLGNBQU1tQyxJQUFJLEdBQUcsS0FBSzNDLGFBQUwsQ0FBbUJRLE1BQW5CLENBQWI7O0FBQ0EsY0FBTWdOLFdBQVcsR0FBRyxDQUFDLEdBQUc3SyxJQUFJLENBQUNzSCxHQUFULEVBQWMsR0FBR3RILElBQUksQ0FBQ3dILElBQXRCLEVBQTRCN0osSUFBNUIsQ0FBa0MwQixJQUFELElBQVVBLElBQUksQ0FBQzNCLEdBQUwsS0FBYSxLQUFLNUQsZ0JBQUwsQ0FBc0J1RixJQUF0QixDQUEyQjNCLEdBQW5GLENBQXBCOztBQUNBLFlBQUltTixXQUFXLElBQUksSUFBbkIsRUFBeUI7QUFDdkIsaUJBQU8sS0FBS3RPLGtCQUFMLENBQXdCLElBQXhCLENBQVA7QUFDRDs7QUFDRCxlQUFPLElBQVA7QUFDRCxPQVJtQixFQVNuQmEsTUFUbUIsQ0FTWG9MLENBQUQsSUFBT0EsQ0FBQyxLQUFLLElBVEQsQ0FBdEI7QUFVQSxhQUFPekcsT0FBTyxDQUFDQyxHQUFSLENBQVk0SSxhQUFaLENBQVA7QUFDRDs7QUFDRCxXQUFPN0ksT0FBTyxDQUFDc0QsT0FBUixFQUFQO0FBQ0Q7O0FBRUR5RixFQUFBQSxLQUFLLEdBQUc7QUFDTixRQUFJLEtBQUszUixPQUFULEVBQWtCO0FBQ2hCLFdBQUs4RCxrQkFBTCxHQUEwQnhGLFNBQVMsQ0FBQyxLQUFLc1QsZ0JBQU4sQ0FBbkM7QUFDQSxXQUFLbFMsV0FBTCxHQUFtQnBCLFNBQVMsQ0FBQyxLQUFLc1QsZ0JBQU4sQ0FBNUI7QUFDQSxXQUFLQSxnQkFBTCxHQUF3QixJQUF4QjtBQUNBLFdBQUs1UixPQUFMLEdBQWUsS0FBZjs7QUFDQSxXQUFLbUoscUJBQUw7O0FBQ0EsV0FBSzdHLFlBQUwsQ0FBa0J1QyxPQUFsQixDQUEyQmpCLElBQUQsSUFBVTtBQUNsQ0EsUUFBQUEsSUFBSSxDQUFDL0IsS0FBTCxDQUFXZ0QsT0FBWCxDQUFvQmdDLElBQUQsSUFBV0EsSUFBSSxDQUFDSSxNQUFMLEdBQWMsS0FBNUM7QUFDRCxPQUZEO0FBR0EsV0FBSzNDLFlBQUwsQ0FBa0JPLE9BQWxCLENBQTJCZ0MsSUFBRCxJQUFXQSxJQUFJLENBQUNJLE1BQUwsR0FBYyxLQUFuRDtBQUNBLFdBQUtpQyxXQUFMLEdBQW1CckUsT0FBbkIsQ0FBNEJDLENBQUQsSUFBT0EsQ0FBQyxDQUFDMUMsYUFBRixFQUFsQztBQUNEO0FBQ0Y7O0FBRUQ2RyxFQUFBQSxzQkFBc0IsR0FBRztBQUN2QjtBQUNBO0FBQ0EsVUFBTXBILEtBQUssR0FBRyxLQUFLbkMsV0FBTCxDQUFpQm1DLEtBQWpCLENBQXVCOEIsR0FBdkIsQ0FBNEJrRCxJQUFELElBQVU7QUFDakRBLE1BQUFBLElBQUksQ0FBQ3NILEdBQUwsR0FBV3RILElBQUksQ0FBQ3NILEdBQUwsQ0FBU2xLLE1BQVQsQ0FBZ0IsS0FBSytNLG1CQUFyQixDQUFYO0FBQ0FuSyxNQUFBQSxJQUFJLENBQUN3SCxJQUFMLEdBQVl4SCxJQUFJLENBQUN3SCxJQUFMLENBQVVwSyxNQUFWLENBQWlCLEtBQUsrTSxtQkFBdEIsQ0FBWjtBQUNBLGFBQU9uSyxJQUFQO0FBQ0QsS0FKYSxDQUFkOztBQU1BLFFBQUlwSCxVQUFVLEdBQUcsRUFBRSxHQUFHLEtBQUtDLFdBQVY7QUFBdUJtQyxNQUFBQTtBQUF2QixLQUFqQjs7QUFFQSxRQUFJLEtBQUtuQyxXQUFMLENBQWlCZ0UsS0FBakIsSUFBMEIsSUFBOUIsRUFBb0M7QUFDbEMsWUFBTUEsS0FBSyxHQUFHLEtBQUtoRSxXQUFMLENBQWlCZ0UsS0FBakIsQ0FBdUJDLEdBQXZCLENBQTRCQyxJQUFELElBQVU7QUFDakQsY0FBTS9CLEtBQUssR0FBRytCLElBQUksQ0FBQy9CLEtBQUwsQ0FBVzhCLEdBQVgsQ0FBZ0JrRCxJQUFELElBQVU7QUFDckNBLFVBQUFBLElBQUksQ0FBQ3NILEdBQUwsR0FBV3RILElBQUksQ0FBQ3NILEdBQUwsQ0FBU2xLLE1BQVQsQ0FBZ0IsS0FBSytNLG1CQUFyQixDQUFYO0FBQ0FuSyxVQUFBQSxJQUFJLENBQUN3SCxJQUFMLEdBQVl4SCxJQUFJLENBQUN3SCxJQUFMLENBQVVwSyxNQUFWLENBQWlCLEtBQUsrTSxtQkFBdEIsQ0FBWjtBQUNBLGlCQUFPbkssSUFBUDtBQUNELFNBSmEsQ0FBZDtBQUtBLGVBQU8sRUFBRSxHQUFHakQsSUFBTDtBQUFXL0IsVUFBQUE7QUFBWCxTQUFQO0FBQ0QsT0FQYSxDQUFkOztBQVFBcEMsTUFBQUEsVUFBVSxHQUFHLEVBQUUsR0FBR0EsVUFBTDtBQUFpQmlFLFFBQUFBO0FBQWpCLE9BQWI7QUFDRDs7QUFDRCxXQUFPakUsVUFBUDtBQUNEOztBQUVEb1MsRUFBQUEsc0JBQXNCLENBQUNDLGdCQUFELEVBQW1CO0FBQ3ZDO0FBQ0EsVUFBTWpRLEtBQUssR0FBR2lRLGdCQUFnQixDQUFDalEsS0FBakIsQ0FBdUI4QixHQUF2QixDQUE0QjZNLENBQUQsSUFBTztBQUM5QyxZQUFNM0osSUFBSSxHQUFHLEtBQUtvSyx3QkFBTCxDQUE4QlQsQ0FBOUIsQ0FBYjs7QUFDQTNKLE1BQUFBLElBQUksQ0FBQ3NILEdBQUwsR0FBV3RILElBQUksQ0FBQ3NILEdBQUwsQ0FBU3hLLEdBQVQsQ0FBYSxLQUFLc04sd0JBQWxCLENBQVg7QUFDQXBLLE1BQUFBLElBQUksQ0FBQ3dILElBQUwsR0FBWXhILElBQUksQ0FBQ3dILElBQUwsQ0FBVTFLLEdBQVYsQ0FBYyxLQUFLc04sd0JBQW5CLENBQVo7QUFDQSxhQUFPcEssSUFBUDtBQUNELEtBTGEsQ0FBZDtBQU9BLFFBQUlwSCxVQUFVLEdBQUcsRUFBRSxHQUFHLEtBQUtDLFdBQVY7QUFBdUJtQyxNQUFBQTtBQUF2QixLQUFqQjs7QUFDQSxRQUFJLEtBQUtuQyxXQUFMLENBQWlCZ0UsS0FBakIsSUFBMEIsSUFBOUIsRUFBb0M7QUFDbEMsWUFBTUEsS0FBSyxHQUFHb08sZ0JBQWdCLENBQUNwTyxLQUFqQixDQUF1QkMsR0FBdkIsQ0FBNEJDLElBQUQsSUFBVTtBQUNqRCxjQUFNL0IsS0FBSyxHQUFHK0IsSUFBSSxDQUFDL0IsS0FBTCxDQUFXOEIsR0FBWCxDQUFnQjZNLENBQUQsSUFBTztBQUNsQyxnQkFBTTNKLElBQUksR0FBRyxLQUFLb0ssd0JBQUwsQ0FBOEJULENBQTlCLENBQWI7O0FBQ0EzSixVQUFBQSxJQUFJLENBQUNzSCxHQUFMLEdBQVd0SCxJQUFJLENBQUNzSCxHQUFMLENBQVN4SyxHQUFULENBQWEsS0FBS3NOLHdCQUFsQixDQUFYO0FBQ0FwSyxVQUFBQSxJQUFJLENBQUN3SCxJQUFMLEdBQVl4SCxJQUFJLENBQUN3SCxJQUFMLENBQVUxSyxHQUFWLENBQWMsS0FBS3NOLHdCQUFuQixDQUFaO0FBQ0EsaUJBQU9wSyxJQUFQO0FBQ0QsU0FMYSxDQUFkO0FBTUEsZUFBTyxFQUFFLEdBQUdqRCxJQUFMO0FBQVcvQixVQUFBQTtBQUFYLFNBQVA7QUFDRCxPQVJhLENBQWQ7QUFTQXBDLE1BQUFBLFVBQVUsR0FBRyxFQUFFLEdBQUdBLFVBQUw7QUFBaUJpRSxRQUFBQTtBQUFqQixPQUFiO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLaEUsV0FBTCxDQUFpQmQsVUFBakIsSUFBK0IsSUFBbkMsRUFBeUM7QUFDdkMsWUFBTUEsVUFBVSxHQUFHLEtBQUtjLFdBQUwsQ0FBaUJkLFVBQWpCLENBQTRCK0UsR0FBNUIsQ0FBZ0MsS0FBS3NOLHdCQUFyQyxDQUFuQjs7QUFDQXhSLE1BQUFBLFVBQVUsR0FBRyxFQUFFLEdBQUdBLFVBQUw7QUFBaUJiLFFBQUFBO0FBQWpCLE9BQWI7QUFDRDs7QUFFRCxRQUFJLEtBQUtjLFdBQUwsQ0FBaUI4RCxTQUFqQixJQUE4QixJQUFsQyxFQUF3QztBQUN0QyxZQUFNQSxTQUFTLEdBQUcsS0FBSzlELFdBQUwsQ0FBaUI4RCxTQUFqQixDQUEyQkcsR0FBM0IsQ0FBK0IsS0FBS3NOLHdCQUFwQyxDQUFsQjs7QUFDQXhSLE1BQUFBLFVBQVUsR0FBRyxFQUFFLEdBQUdBLFVBQUw7QUFBaUIrRCxRQUFBQTtBQUFqQixPQUFiO0FBQ0Q7O0FBRUQsV0FBTy9ELFVBQVA7QUFDRDs7QUFFRHNTLEVBQUFBLFVBQVUsR0FBRztBQUNYLFFBQUksS0FBS2hSLGFBQVQsRUFBd0I7QUFDdEIsV0FBS3lRLG9CQUFMLEdBQTRCRCxNQUE1QjtBQUNEOztBQUVEM0ksSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksS0FBS0MscUJBQUwsRUFBWixFQUNHM0csSUFESCxDQUNRLE1BQU07QUFDVixXQUFLeVAsZ0JBQUwsR0FBd0IsS0FBSzNJLHNCQUFMLEVBQXhCOztBQUNBLFlBQU14SixVQUFVLEdBQUcsS0FBS29TLHNCQUFMLENBQTRCLEtBQUtELGdCQUFqQyxDQUFuQjs7QUFDQXpULE1BQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxNQUFQLEVBQWU7QUFBRXNCLFFBQUFBLFVBQUY7QUFBY1QsUUFBQUEsUUFBUSxFQUFFLEtBQUtBO0FBQTdCLE9BQWYsQ0FBbkI7QUFDRCxLQUxILEVBTUdnVCxLQU5ILENBTVV0SixHQUFELElBQVM7QUFDZHVKLE1BQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFlLCtCQUFmLEVBQStDeEosR0FBL0M7QUFDRCxLQVJIO0FBU0Q7O0FBRUR5SixFQUFBQSxRQUFRLENBQUNDLFlBQUQsRUFBZTtBQUNyQixRQUFJLEtBQUtyUixhQUFULEVBQXdCO0FBQ3RCLFdBQUt5USxvQkFBTCxHQUE0QkQsTUFBNUI7QUFDRDs7QUFFRDNJLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLEtBQUtDLHFCQUFMLEVBQVosRUFDRzNHLElBREgsQ0FDUSxNQUFNO0FBQ1YsWUFBTTFDLFVBQVUsR0FBRyxLQUFLb1Msc0JBQUwsQ0FBNEIsS0FBSzVJLHNCQUFMLEVBQTVCLENBQW5COztBQUNBOUssTUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLE9BQVAsRUFBZ0I7QUFBRXNCLFFBQUFBLFVBQUY7QUFBY1QsUUFBQUEsUUFBUSxFQUFFLEtBQUtBLFFBQTdCO0FBQXVDcVQsUUFBQUEsT0FBTyxFQUFFRCxZQUFZLENBQUNuTixNQUFiLENBQW9Cb047QUFBcEUsT0FBaEIsQ0FBbkI7QUFDRCxLQUpILEVBS0dMLEtBTEgsQ0FLVXRKLEdBQUQsSUFBUztBQUNkdUosTUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWUsZ0NBQWYsRUFBZ0R4SixHQUFoRDtBQUNELEtBUEg7QUFRRDs7QUFFZ0IsTUFBYjRKLGFBQWEsR0FBRztBQUNsQixRQUFJLEtBQUt6UixXQUFMLENBQWlCMEIsTUFBakIsS0FBNEIsQ0FBNUIsSUFBaUMsS0FBSzFCLFdBQUwsQ0FBaUJ5QyxRQUFqQixDQUEwQixLQUExQixDQUFyQyxFQUF1RTtBQUNyRSxhQUFPLEtBQUtnQixZQUFaO0FBQ0Q7O0FBQ0QsV0FBTyxJQUFQO0FBQ0Q7O0FBRWdCLE1BQWJpTyxhQUFhLEdBQUc7QUFDbEIsUUFBSSxLQUFLMVIsV0FBTCxDQUFpQjBCLE1BQWpCLEtBQTRCLENBQTVCLElBQWlDLEtBQUsxQixXQUFMLENBQWlCeUMsUUFBakIsQ0FBMEIsTUFBMUIsQ0FBckMsRUFBd0U7QUFDdEUsYUFBTyxLQUFLaEIsWUFBWjtBQUNEOztBQUNELFdBQU8sSUFBUDtBQUNEOztBQUVEa1EsRUFBQUEsY0FBYyxDQUFDO0FBQUV2TixJQUFBQTtBQUFGLEdBQUQsRUFBYTtBQUN6QixRQUFJLEtBQUtwRSxXQUFMLENBQWlCeUMsUUFBakIsQ0FBMEIyQixNQUFNLENBQUNsRCxFQUFqQyxDQUFKLEVBQTBDO0FBQ3hDLFdBQUtsQixXQUFMLEdBQW1CLEVBQW5CO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS0EsV0FBTCxHQUFtQixDQUFDb0UsTUFBTSxDQUFDbEQsRUFBUixDQUFuQjtBQUNEO0FBQ0Y7O0FBRUQwUSxFQUFBQSxvQkFBb0IsR0FBRztBQUNyQixRQUFJLEtBQUs3UixhQUFMLENBQW1CMkIsTUFBbkIsR0FBNEIsQ0FBaEMsRUFBbUM7QUFDakMsYUFBTyxLQUFLMUQsUUFBTCxDQUFjb0YsTUFBZCxDQUFzQmtCLE1BQUQsSUFBWTtBQUN0QyxlQUNHQSxNQUFNLENBQUN1TixTQUFQLElBQW9CLEtBQUs5UixhQUFMLENBQW1CMEMsUUFBbkIsQ0FBNEIsV0FBNUIsQ0FBckIsSUFBbUU2QixNQUFNLENBQUN3TixVQUFQLElBQXFCLEtBQUsvUixhQUFMLENBQW1CMEMsUUFBbkIsQ0FBNEIsWUFBNUIsQ0FEMUY7QUFHRCxPQUpNLENBQVA7QUFLRDs7QUFDRCxXQUFPLEtBQUt6RSxRQUFaO0FBQ0Q7O0FBRUQrVCxFQUFBQSxpQkFBaUIsQ0FBQztBQUFFM04sSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDNUIsUUFBSSxLQUFLckUsYUFBTCxDQUFtQjBDLFFBQW5CLENBQTRCMkIsTUFBTSxDQUFDbEQsRUFBbkMsQ0FBSixFQUE0QztBQUMxQyxXQUFLbkIsYUFBTCxHQUFxQixFQUFyQjtBQUNELEtBRkQsTUFFTztBQUNMLFdBQUtBLGFBQUwsR0FBcUIsQ0FBQ3FFLE1BQU0sQ0FBQ2xELEVBQVIsQ0FBckI7QUFDRDtBQUNGOztBQUVEOFEsRUFBQUEsYUFBYSxDQUFDeEcsWUFBRCxFQUFlO0FBQzFCLFdBQU9yTyxJQUFJLHFHQUVXLEtBQUt1TyxXQUFMLENBQWlCLENBQWpCLEVBQW9CLElBQXBCLEVBQTBCRixZQUExQixDQUZYLDhCQUtILEtBQUtFLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0IsS0FBcEIsRUFBMkJGLFlBQTNCLENBTEcsSUFLeUMsS0FBS3FCLGFBQUwsQ0FBbUJyQixZQUFuQixDQUx6QyxJQUs2RSxLQUFLeUcsZUFBTCxDQUFxQnpHLFlBQXJCLENBTDdFLGlDQVFQQSxZQUFZLEtBQUssSUFBakIsR0FDRXJPLElBQUksd0RBRVcsS0FBSzhDLHVCQUZoQixnQkFHVyxLQUFLMlIsb0JBQUwsRUFIWCxtQkFJYyxDQUFDLEtBQUtsUyxnQkFBTixDQUpkLGFBS1EsS0FBS0Msa0JBTGIseUJBTW9CLEtBQUtnQyxvQkFBTCxJQUE2QixJQU5qRCxnQkFPVzZKLFlBUFgsMkNBUXNDLEtBQUt4QixlQVIzQyxpREFTNEMsS0FBS2IsNEJBVGpELDRDQVV1QyxLQUFLckYsZ0JBVjVDLGtEQWFFLEtBQUtuQyxvQkFBTCxJQUE2QixJQUE3QixHQUNFeEUsSUFBSSx5QkFDVyxLQUFLOEMsdUJBRGhCLGVBRVUsS0FBSzBCLG9CQUZmLDBDQUtRLEtBQUs1QixhQUxiLDhCQU9tQixLQUFLZ1MsaUJBUHhCLGdCQUROLEdBVUUsRUF2QkosNENBMEJlLEtBQUs5Uix1QkExQnBCLCtGQThCcUIsS0FBSzZQLGVBOUIxQixzQkErQnFCLEtBQUtDLGNBL0IxQiwrQ0FETixHQW9DRSxFQTVDSyxTQUFYO0FBOENEOztBQUVEbUMsRUFBQUEsWUFBWSxHQUFHO0FBQ2IsVUFBTUMsUUFBUSxHQUFHLEtBQUt0UixhQUFMLEdBQXFCLEtBQUtBLGFBQUwsQ0FBbUJzUixRQUF4QyxHQUFtRDVDLFNBQXBFO0FBQ0EsVUFBTTZDLFNBQVMsR0FBRyxLQUFLdlIsYUFBTCxHQUFxQixLQUFLQSxhQUFMLENBQW1CdVIsU0FBeEMsR0FBb0Q3QyxTQUF0RTtBQUNBLFVBQU04QyxJQUFJLEdBQUcsS0FBS3hSLGFBQUwsSUFBc0IsS0FBS0EsYUFBTCxDQUFtQjJRLE9BQXpDLEdBQW1ELEtBQUszUSxhQUFMLENBQW1CMlEsT0FBbkIsQ0FBMkJhLElBQTlFLEdBQXFGOUMsU0FBbEc7QUFDQSxVQUFNK0MsTUFBTSxHQUFHLEtBQUt6UixhQUFMLElBQXNCLEtBQUtBLGFBQUwsQ0FBbUIyUSxPQUF6QyxHQUFtRCxLQUFLM1EsYUFBTCxDQUFtQjJRLE9BQW5CLENBQTJCYyxNQUE5RSxHQUF1Ri9DLFNBQXRHO0FBQ0EsV0FBT3BTLElBQUksaUZBSWUsS0FBS21VLFFBSnBCLGdCQUtJYSxRQUxKLFlBTUFFLElBTkEsY0FPRUMsTUFQRixlQVFHRixTQVJILHNCQUFYO0FBV0Q7O0FBRURHLEVBQUFBLHdCQUF3QixDQUFDL0csWUFBRCxFQUFlO0FBQ3JDLFFBQUksS0FBS3hNLG1CQUFULEVBQThCO0FBQzVCLFlBQU1rTCxNQUFNLEdBQUd6TSxTQUFTLENBQUMsS0FBS29CLFdBQU4sQ0FBeEI7QUFDQSxhQUFPMUIsSUFBSSxzRUFBc0UsS0FBS3VKLFNBQTNFLCtCQUVJLEtBQUsxSCxtQkFGVCxxQ0FJSWtMLE1BSkosaURBUU1zQixZQVJOLDZCQVNtQixLQUFLWCxpQkFUeEIsNkJBVW1CLEtBQUtDLGlCQVZ4QixNQVlMLENBQUMsS0FBSzVMLHdCQUFOLEdBQ0UsRUFERixHQUVFL0IsSUFBSSwyTUFHMkQsS0FBSytCLHdCQUhoRSx1QkFkRCwyQkFBWDtBQXNCRDs7QUFDRCxXQUFPL0IsSUFBSSxFQUFYO0FBQ0Q7O0FBRUQ4VSxFQUFBQSxlQUFlLENBQUN6RyxZQUFELEVBQWU7QUFDNUIsUUFBSSxLQUFLek0sVUFBTCxJQUFtQixLQUFLYyxlQUFMLElBQXdCLElBQTNDLElBQW1ELEtBQUtmLGFBQUwsSUFBc0IsSUFBekUsSUFBaUYsS0FBS1UsZUFBTCxDQUFxQmtDLE1BQXJCLEtBQWdDLENBQXJILEVBQXdIO0FBQ3RILFlBQU1zRSxJQUFJLEdBQUcsS0FBS29ELGVBQUwsRUFBYjs7QUFDQSxVQUFJcEQsSUFBSixFQUFVO0FBQ1IsY0FBTWtFLE1BQU0sR0FBR3pNLFNBQVMsQ0FBQ3VJLElBQUQsQ0FBeEI7QUFDQSxlQUFPN0ksSUFBSSx1RUFFSSxLQUFLNEIsVUFGVCxpQ0FJSW1MLE1BSkosc0NBT01zQixZQVBOLDZCQVFtQixLQUFLakIsYUFSeEIsNkJBU21CLEtBQUtDLGFBVHhCLHNHQUFYO0FBY0Q7QUFDRjtBQUNGOztBQUVEZ0ksRUFBQUEsa0JBQWtCLENBQUM7QUFBRXBPLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQzdCLFNBQUt4RixVQUFMLENBQWdCK0QsU0FBaEIsR0FBNEJ5QixNQUFNLENBQUN6QixTQUFuQztBQUNBLFNBQUt4RCxPQUFMLEdBQWUsSUFBZjtBQUNEOztBQUVEc1QsRUFBQUEsbUJBQW1CLENBQUM7QUFBRXJPLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQzlCLFNBQUt4RixVQUFMLENBQWdCYixVQUFoQixHQUE2QnFHLE1BQU0sQ0FBQ3JHLFVBQXBDO0FBQ0EsU0FBS29CLE9BQUwsR0FBZSxJQUFmO0FBQ0Q7O0FBRUR1VCxFQUFBQSxlQUFlLENBQUM7QUFBRXRPLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQzFCLFNBQUtqRyxRQUFMLENBQWMsa0JBQWQsSUFBb0NpRyxNQUFNLENBQUN1TyxRQUEzQztBQUNBLFNBQUt4VCxPQUFMLEdBQWUsSUFBZjtBQUNEOztBQUVEeVQsRUFBQUEsMEJBQTBCLENBQUM7QUFBRXhPLElBQUFBO0FBQUYsR0FBRCxFQUFhO0FBQ3JDLFNBQUtqRixPQUFMLEdBQWUsSUFBZjtBQUNEOztBQUVEMFQsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsVUFBTXJILFlBQVksR0FBRyxLQUFLc0gseUJBQUwsRUFBckI7O0FBRUEsV0FBTzNWLElBQUkseUVBR00sS0FBSzBCLFdBQUwsQ0FBaUIyRixJQUh2QixhQUlHLEtBQUtpTixhQUpSLGFBS0csS0FBS0MsYUFMUixtQkFNUyxLQUFLbFMsZUFOZCxnQkFPTSxLQUFLUyx1QkFQWCxnQkFRTSxLQUFLTSxRQUFMLElBQWlCLEtBQUtFLFFBQUwsS0FBa0IsSUFSekMsZ0JBU00sS0FBS0EsUUFUWCxxQkFVVyxLQUFLQyxhQVZoQixrQkFXUSxLQUFLSixVQVhiLGFBWUcsS0FBS1YsZ0JBWlIsZUFhSyxLQUFLWSxNQUFMLElBQWUsQ0FBQyxLQUFLQyxRQWIxQiwyQ0FjaUMsS0FBS21QLGVBZHRDLCtDQWVxQyxLQUFLbEIsa0JBZjFDLHNDQWdCNEIsS0FBS2pELFVBaEJqQywyQ0FpQmlDLEtBQUtrRCxjQWpCdEMseUNBa0IrQixLQUFLVCxhQWxCcEMsNENBbUJrQyxLQUFLRyxnQkFuQnZDLDBDQW9CZ0MsS0FBS25GLGNBcEJyQyxvRUF1QmdCLEtBQUtySyxXQUFMLENBQWlCMkYsSUF2QmpDLFVBd0JILEtBQUtoRCxrQkFBTCxJQUEyQixJQUEzQixHQUNFckUsSUFBSSx5QkFDVyxLQUFLOEMsdUJBRGhCLGVBRVUsS0FBS3VCLGtCQUZmLDBDQUtRLEtBQUt4QixXQUxiLDhCQU9tQixLQUFLMlIsY0FQeEIsZ0JBRE4sR0FVRSxFQWxDQyx5QkFvQ1UsS0FBSzFSLHVCQXBDZixxR0F5Q2dCLEtBQUsrUCxjQXpDckIsc0JBMENnQixLQUFLQyxhQTFDckIsd0JBOENMLEtBQUt4UCxRQUFMLEtBQWtCLElBQWxCLEdBQ0V0RCxJQUFJLHVGQUdhLENBQUMsS0FBS2dDLE9BQU4sSUFBaUIsS0FBS2MsdUJBSG5DLHVCQUlvQixLQUFLaVIsVUFKekIsaURBTzJCLENBQUMsS0FBSy9SLE9BQU4sSUFBaUIsS0FBS2MsdUJBUGpELHVCQU8rRixLQUFLaVEsV0FQcEcsNEJBRE4sR0FZRSxFQTFERyw4Q0E4REcsS0FBS3pSLEtBOURSLGVBK0RLLEtBQUt3QyxLQS9EVixnQkFnRU0sS0FBS2hCLHVCQWhFWCxzQkFpRVksS0FBSzhLLFlBakVqQixpQkFrRU8sS0FBS0MsbUJBQUwsQ0FBeUJZLElBQXpCLENBQThCLElBQTlCLENBbEVQLE1Bb0VMLEtBQUtvRyxhQUFMLENBQW1CeEcsWUFBbkIsQ0FwRUssSUFvRStCLEtBQUsrRyx3QkFBTCxDQUE4Qi9HLFlBQTlCLENBcEUvQixJQW9FOEUsS0FBSzBHLFlBQUwsRUFwRTlFLGdGQXlFUSxLQUFLL1QsUUFBTCxDQUFjLGtCQUFkLENBekVSLDRCQTBFb0IsS0FBS3NVLG1CQTFFekIsbUNBMkUyQixLQUFLQyxlQTNFaEMsc0NBNEU4QixLQUFLRSwwQkE1RW5DLGdCQTZFUXBILFlBN0VSLHFDQStFVSxLQUFLNEMsaUJBL0VmLGlCQWdGUyxLQUFLN1AsaUJBaEZkLDZCQWlGcUIsS0FBS0MscUJBakYxQiwwR0F1Rm1CLEtBQUtnVSxrQkF2RnhCLGdCQXdGUWhILFlBeEZSLGlCQXlGUyxLQUFLVSxnQkF6RmQsYUEwRkssS0FBSzdOLGFBMUZWLHFDQUFYO0FBOEZEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0V5VSxFQUFBQSx5QkFBeUIsR0FBRztBQUMxQixRQUFJLEtBQUtyUyxRQUFULEVBQW1CO0FBQ2pCLGFBQU8sSUFBUDtBQUNEOztBQUVELFVBQU11RixJQUFJLEdBQUcsS0FBS29ELGVBQUwsQ0FBcUIsQ0FBckIsQ0FBYjs7QUFDQSxRQUFJLENBQUNwRCxJQUFMLEVBQVc7QUFDVCxhQUFPLEtBQVA7QUFDRDs7QUFFRCxVQUFNO0FBQUVqRCxNQUFBQSxJQUFJLEVBQUVnUTtBQUFSLFFBQXFCLEtBQUt2SixtQkFBTCxDQUF5QnhELElBQUksQ0FBQ3RDLEdBQTlCLENBQTNCOztBQUNBLFVBQU04SCxZQUFZLEdBQUd1SCxRQUFRLElBQUksS0FBS3JTLGFBQXRDOztBQUNBLFFBQUk4SyxZQUFKLEVBQWtCO0FBQ2hCLGFBQU8sSUFBUDtBQUNEOztBQUVELFVBQU13SCxZQUFZLEdBQUcsS0FBSzVKLGVBQUwsQ0FBcUIsQ0FBckIsQ0FBckI7O0FBQ0EsUUFBSSxDQUFDNEosWUFBTCxFQUFtQjtBQUNqQixhQUFPLEtBQVA7QUFDRDs7QUFFRCxVQUFNO0FBQUVqUSxNQUFBQSxJQUFJLEVBQUVrUTtBQUFSLFFBQTZCLEtBQUt6SixtQkFBTCxDQUF5QndKLFlBQVksQ0FBQ3RQLEdBQXRDLENBQW5DOztBQUNBLFdBQU91UCxnQkFBZ0IsSUFBSSxLQUFLdlMsYUFBaEM7QUFDRDs7QUExdEQ2RDtBQTZ0RGhFd1MsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixrQkFBN0IsRUFBaUR0VixjQUFqRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBjc3MsIGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgbWV0aG9kcyB9IGZyb20gJy4uL2xpYi9zdHVkaW8nO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1idXR0b24nO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pY29uJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LW9wdGlvbic7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1kb2N1bWVudGF0aW9uJztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXJlc2l6YWJsZS12aWV3cyc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybSc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1odHRwLWNsaWVudCc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi10YWJzJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LXJvdyc7XG5pbXBvcnQgJy4vZ3YtZmxvdyc7XG5pbXBvcnQgJy4vZ3YtZmxvdy1zdGVwJztcbmltcG9ydCAnLi9ndi1wb2xpY3ktc3R1ZGlvLW1lbnUnO1xuaW1wb3J0IHsgZW1wdHkgfSBmcm9tICcuLi9zdHlsZXMvZW1wdHknO1xuaW1wb3J0IHsgY2FjaGUgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jYWNoZSc7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBFcXVhbCB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBLZXlib2FyZEVsZW1lbnQsIEtFWVMgfSBmcm9tICcuLi9taXhpbnMva2V5Ym9hcmQtZWxlbWVudCc7XG5cbmNvbnN0IEZMT1dfU1RFUF9GT1JNX0lEID0gJ2Zsb3ctc3RlcC1mb3JtJztcblxuLyoqXG4gKiAgU3R1ZGlvIFBvbGljeSBjb21wb25lbnRcbiAqXG4gKiDimqDvuI8gVGhpcyBjb21wb25lbnQgaXMgYmFzZWQgb24gYGFzY2lpZG9jdG9yYCwgYGhpZ2hsaWdodC5qc2AgYW5kIGBhc2NpaWRvY3Rvci1oaWdobGlnaHQuanNgLlxuICogVG8gdXNlIHRoaXMgY29tcG9uZW50IGluIHlvdXIgcHJvamVjdCBiZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGluc3RhbGxlZCBvclxuICogaW5zdGFsbCB0aGVtIHdpdGg6IGBucG0gaW5zdGFsbCBhc2NpaWRvY3RvciBoaWdobGlnaHQuanMgYXNjaWlkb2N0b3ItaGlnaGxpZ2h0LmpzIC0tc2F2ZWBcbiAqXG4gKiBAZmlyZXMgZ3YtcG9saWN5LXN0dWRpbzpzZWxlY3QtcG9saWN5IC0gU2VsZWN0IHBvbGljeSBldmVudFxuICogQGZpcmVzIGd2LXBvbGljeS1zdHVkaW86c2F2ZSAtIEV2ZW50IHNlbnQgd2hlbiBcIlNhdmVcIiBidXR0b24gaXMgY2xpY2tlZCwgaXQgY29udGFpbnMgdGhlIHdob2xlIGRlZmluaXRpb24gb2YgdGhlIEFQSVxuICogQGZpcmVzIGd2LXBvbGljeS1zdHVkaW86ZGVidWcgLSBFdmVudCBzZW50IHdoZW4gdmFsaWRhdGlvbiBidXR0b24gb2YgdGhlICdUcnkgaXQnIHRhYiBpcyBjbGlja2VkLCBpdCBjb250YWlucyB0aGUgd2hvbGUgZGVmaW5pdGlvbiBvZiB0aGUgQVBJIGFuZCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRyeSBpdCByZXF1ZXN0LlxuICpcbiAqIEBhdHRyIHtBcnJheX0gcG9saWNpZXMgLSBQb2xpY2llcyBhdmFpbGFibGVcbiAqIEBhdHRyIHtBcnJheX0gc2VydmljZXMgLSBTZXJ2aWNlcyBhdmFpbGFibGVcbiAqIEBhdHRyIHtBcnJheX0gcmVzb3VyY2VUeXBlcyAtIFJlc291cmNlcyB0eXBlcyBhdmFpbGFibGVcbiAqIEBhdHRyIHtBcnJheX0gcHJvcGVydHlQcm92aWRlcnMgLSBQcm92aWRlcnMgb2YgcHJvcGVydGllc1xuICogQGF0dHIge0FycmF5fSBkeW5hbWljUHJvcGVydHlTY2hlbWEgLSBTY2hlbWEgZm9yIHRoZSBkeW5hbWljIHByb3BlcnR5IGZvcm1cbiAqIEBhdHRyIHtTdHJpbmd9IHRhYklkIC0gQ3VycmVudCB0YWJJZCB0byBkaXNwbGF5IChkZXNpZ24sIHNldHRpbmdzLCBwcm9wZXJ0aWVzIG9yIHJlc291cmNlcylcbiAqIEBhdHRyIHtPYmplY3R9IGRlZmluaXRpb24gLSBUaGUgZGVmaW5pdGlvbiBvZiBmbG93c1xuICogQGF0dHIge09iamVjdH0gZG9jdW1lbnRhdGlvbiAtIFRoZSBkb2N1bWVudGF0aW9uIHRvIGRpc3BsYXlcbiAqIEBhdHRyIHtPYmplY3R9IGZsb3dTY2hlbWEgLSBUaGUgZmxvdyBmb3JtIGNvbmZpZ3VyYXRpb24gdG8gZGlzcGxheSBpbiBndi1zY2hlbWEtZm9ybSBjb21wb25lbnRcbiAqIEBhdHRyIHtPYmplY3R9IGNvbmZpZ3VyYXRpb25TY2hlbWEgLSBUaGUgZm9ybSBjb25maWd1cmF0aW9uIHRvIGRpc3BsYXkgaW4gZ3Ytc2NoZW1hLWZvcm0gY29tcG9uZW50XG4gKiBAYXR0ciB7T2JqZWN0fSBjb25maWd1cmF0aW9uSW5mb3JtYXRpb24gLSBUaGUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBhcGkgY29uZmlndXJhdGlvbiB0YWJcbiAqIEBhdHRyIHtCb29sZWFufSBpc0RpcnR5IC0gdHJ1ZSBpZiBjb21wb25lbnQgaXMgZGlydHlcbiAqIEBhdHRyIHtBcnJheX0gc2VsZWN0ZWRGbG93c0lkIC0gVGhlIHNlbGVjdGVkIGZsb3dzIGlkXG4gKiBAYXR0ciB7Qm9vbGVhbn0gc29ydGFibGUgLSB0cnVlIGlmIGZsb3dzIGFyZSBzb3J0YWJsZVxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5IC0gdHJ1ZSBpZiByZWFkb25seVxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5LXBsYW5zIC0gdHJ1ZSBpZiBwbGFucycgZmxvd3MgY2FuJ3QgYmUgbW9kaWZpZWRcbiAqIEBhdHRyIHtCb29sZWFufSBjYW4tYWRkIC0gdHJ1ZSBpZiB1c2VyIGNhbiBhZGQgZmxvd1xuICogQGF0dHIge1N0cmluZ30gZmxvd3NUaXRsZSAtIGZsb3dzIG1lbnUgdGl0bGVcbiAqIEBhdHRyIHtCb29sZWFufSBoYXMtcG9saWN5LWZpbHRlciAtIHRydWUgaWYgcG9saWNpZXMgaGF2ZSBvblJlcXVlc3Qvb25SZXNwb25zZSBwcm9wZXJ0aWVzXG4gKiBAYXR0ciB7Qm9vbGVhbn0gY2FuLWRlYnVnIC0gdHJ1ZSBpZiBkZWJ1ZyB0YWIgc2hvdWxkIGJlIGRpc3BsYXllZFxuICogQGF0dHIge09iamVjdH0gZGVidWdSZXNwb25zZSAtIHRydWUgaWYgZGVidWcgdGFiIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEd2UG9saWN5U3R1ZGlvIGV4dGVuZHMgS2V5Ym9hcmRFbGVtZW50KExpdEVsZW1lbnQpIHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb2xpY2llczogeyB0eXBlOiBBcnJheSB9LFxuICAgICAgc2VydmljZXM6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICByZXNvdXJjZVR5cGVzOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6ICdyZXNvdXJjZS10eXBlcycgfSxcbiAgICAgIHByb3BlcnR5UHJvdmlkZXJzOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6ICdwcm9wZXJ0eS1wcm92aWRlcnMnIH0sXG4gICAgICBkeW5hbWljUHJvcGVydHlTY2hlbWE6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6ICdkeW5hbWljLXByb3BlcnR5LXNjaGVtYScgfSxcbiAgICAgIHRhYklkOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAndGFiLWlkJyB9LFxuICAgICAgX3RhYklkOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZGVmaW5pdGlvbjogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIF9kZWZpbml0aW9uOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZG9jdW1lbnRhdGlvbjogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIGZsb3dTY2hlbWE6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6ICdmbG93LXNjaGVtYScgfSxcbiAgICAgIGNvbmZpZ3VyYXRpb25TY2hlbWE6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6ICdjb25maWd1cmF0aW9uLXNjaGVtYScgfSxcbiAgICAgIF9jb25maWd1cmF0aW9uU2NoZW1hOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgY29uZmlndXJhdGlvbkluZm9ybWF0aW9uOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnY29uZmlndXJhdGlvbi1pbmZvcm1hdGlvbicgfSxcbiAgICAgIGlzRGlydHk6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnZGlydHknLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBfZHJhZ1BvbGljeTogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9kcm9wUG9saWN5OiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgc2VsZWN0ZWRGbG93c0lkOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6ICdzZWxlY3RlZC1mbG93cy1pZCcgfSxcbiAgICAgIF9zZWxlY3RlZEZsb3dzSWQ6IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9jdXJyZW50UG9saWN5SWQ6IHsgdHlwZTogU3RyaW5nLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfc2VhcmNoUG9saWN5UXVlcnk6IHsgdHlwZTogU3RyaW5nLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfc2VhcmNoRmxvd1F1ZXJ5OiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX2Zsb3dTdGVwU2NoZW1hOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX2N1cnJlbnRGbG93U3RlcDogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9wb2xpY3lGaWx0ZXI6IHsgdHlwZTogQXJyYXksIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9mbG93RmlsdGVyOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfY3VycmVudEFza0NvbmZpcm1hdGlvbjogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBoYXNQcm9wZXJ0aWVzOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hhcy1wcm9wZXJ0aWVzJyB9LFxuICAgICAgX2hhc1Byb3BlcnRpZXM6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgaGFzUmVzb3VyY2VzOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hhcy1yZXNvdXJjZXMnIH0sXG4gICAgICBoYXNQb2xpY3lGaWx0ZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGFzLXBvbGljeS1maWx0ZXInIH0sXG4gICAgICBmbG93c1RpdGxlOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnZmxvd3MtdGl0bGUnIH0sXG4gICAgICBzb3J0YWJsZTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICBjYW5BZGQ6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnY2FuLWFkZCcgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICAgIHJlYWRvbmx5UGxhbnM6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAncmVhZG9ubHktcGxhbnMnIH0sXG4gICAgICBjYW5EZWJ1ZzogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdjYW4tZGVidWcnIH0sXG4gICAgICBfY2FuRGVidWc6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgZGVidWdSZXNwb25zZTogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogJ2RlYnVnLXJlc3BvbnNlJyB9LFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgZW1wdHksXG4gICAgICBtZXRob2RzLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIC0taGVpZ2h0OiB2YXIoLS1ndi1wb2xpY3ktc3R1ZGlvLS1oLCBjYWxjKDEwMHZoIC0gMzJweCkpO1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0KTtcbiAgICAgICAgICAtLWhlaWdodC1pbi10YWJzOiBjYWxjKHZhcigtLWhlaWdodCkgLSAyNXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gge1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0KTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmRlc2lnbixcbiAgICAgICAgLnByb3BlcnRpZXMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIH1cblxuICAgICAgICBndi1yZXNpemFibGUtdmlld3Mge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmVkaXRhYmxlLW5hbWUge1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5lZGl0YWJsZS1uYW1lIHNwYW4ge1xuICAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWlucHV0IHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mbG93LW5hbWUge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mbG93LW5hbWUuZGlydHkge1xuICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIH1cblxuICAgICAgICAuZmxvdy1uYW1lIGd2LWljb24ge1xuICAgICAgICAgIC0tZ3YtaWNvbi0tczogMjRweDtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mbG93LXBhdGgge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAudGl0bGVfbWV0aG9kcyB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50d28tY29scyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAudHdvLWNvbHMgPiAqIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxlZnQtbWVudSB7XG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LWluLXRhYnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJpZ2h0LW1lbnUge1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQtaW4tdGFicyk7XG4gICAgICAgIH1cblxuICAgICAgICAudHdvLWNvbHMgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZsb3ctc3RlcF9fY29udGFpbmVyIHtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogOTklO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZsb3ctc3RlcF9fZm9ybSB7XG4gICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07XG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuZmxvdy1zdGVwX19mb3JtLXRpdGxlIHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICBndi10YWJzIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtcmVzaXphYmxlLXZpZXdzLFxuICAgICAgICBndi1wcm9wZXJ0aWVzLFxuICAgICAgICBndi1yZXNvdXJjZXMge1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LWluLXRhYnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtcHJvcGVydGllcyxcbiAgICAgICAgZ3YtcmVzb3VyY2VzIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXByb3BlcnRpZXMucHJvcGVydGllcyB7XG4gICAgICAgICAgLS1ndi1wcm9wZXJ0aWVzLXRhYmxlLS1jb2xtZzogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcGktc2V0dGluZ3Mge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNiZmJmYmY7XG4gICAgICAgICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQtaW4tdGFicyk7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVidWcge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNiZmJmYmY7XG4gICAgICAgICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQtaW4tdGFicyk7XG4gICAgICAgIH1cblxuICAgICAgICAuYXBpLXNldHRpbmdzLWluZm9ybWF0aW9uIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuYXBpLXNldHRpbmdzLWluZm9ybWF0aW9uX19pY29uIHtcbiAgICAgICAgICAtLWd2LWljb24tLWM6IHZhcigtLWd2LXRoZW1lLWNvbG9yLCAjNWE3Njg0KTtcbiAgICAgICAgICAtLWd2LWljb24tb3BhY2l0eS0tYzogdmFyKC0tZ3YtdGhlbWUtY29sb3ItaW5mby1saWdodCwgIzY0YjVmNik7XG4gICAgICAgIH1cblxuICAgICAgICAuYXBpLXNldHRpbmdzLWluZm9ybWF0aW9uX19ibG9ja3F1b3RlLFxuICAgICAgICAuZGVidWctaW5mb3JtYXRpb25fX2Jsb2NrcXVvdGUge1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tZ3YtdGhlbWUtY29sb3IsICM1YTc2ODQpO1xuICAgICAgICAgIG1hcmdpbjogMTVweDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZsb3ctc2V0dGluZ3MgZ3Ytc2NoZW1hLWZvcm0ge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICBndi1pbnB1dCB7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW0gMDtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXItYWN0aW9ucyxcbiAgICAgICAgLnNlYXJjaC1wb2xpY2llcyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgbWFyZ2luOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLXBvbGljaWVzIHtcbiAgICAgICAgICBtYXJnaW46IDEuNXJlbSAwLjVyZW0gMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvb3Rlci1hY3Rpb25zID4gZ3YtYnV0dG9uLmJ0bi1sYXJnZSxcbiAgICAgICAgLmZvb3Rlci1hY3Rpb25zID4gZ3Ytb3B0aW9uIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXItYWN0aW9ucyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgcGFkZGluZzogMC41cmVtIDA7XG4gICAgICAgICAgbWFyZ2luOiAwLjVyZW0gMTVweDtcbiAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2JmYmZiZjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXItYWN0aW9ucyAudGl0bGUge1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNyZW07XG4gICAgICAgICAgY29sb3I6ICNiZmJmYmY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICB3aWR0aDogMjQwcHg7XG4gICAgICAgICAgbWluLWhlaWdodDogMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXItYWN0aW9ucyA+ICosXG4gICAgICAgIC5zZWFyY2gtcG9saWNpZXMgPiAqIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaXNEaXJ0eSA9IGZhbHNlO1xuICAgIHRoaXMucG9saWNpZXMgPSBbXTtcbiAgICB0aGlzLnJlc291cmNlVHlwZXMgPSBbXTtcbiAgICB0aGlzLnRhYklkID0gJ2Rlc2lnbic7XG4gICAgdGhpcy5zZWxlY3RlZEZsb3dzSWQgPSBbXTtcbiAgICB0aGlzLmZsb3dzVGl0bGUgPSAnRmxvd3MnO1xuICAgIHRoaXMuc29ydGFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnNlcnZpY2VzID0ge307XG4gICAgdGhpcy5fZGVmaW5pdGlvbiA9IHtcbiAgICAgIGZsb3dzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMuX3RhYnMgPSBbeyBpZDogJ2Rlc2lnbicsIHRpdGxlOiAnRGVzaWduJywgaWNvbjogJ25hdmlnYXRpb246ZXhjaGFuZ2UnIH1dO1xuICAgIHRoaXMuX3BvbGljeUZpbHRlciA9IFtdO1xuICAgIHRoaXMuX2Zsb3dGaWx0ZXIgPSBbXTtcbiAgfVxuXG4gIHNldCBoYXNQcm9wZXJ0aWVzKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpbXBvcnQoJy4uL29yZ2FuaXNtcy9ndi1wcm9wZXJ0aWVzJykudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3RhYnMgPSBbLi4udGhpcy5fdGFicywgeyBpZDogJ3Byb3BlcnRpZXMnLCB0aXRsZTogJ1Byb3BlcnRpZXMnLCBpY29uOiAnZ2VuZXJhbDpzZXR0aW5ncyMxJyB9XTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5faGFzUHJvcGVydGllcyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGhhc1Byb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1Byb3BlcnRpZXM7XG4gIH1cblxuICBzZXQgaGFzUmVzb3VyY2VzKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpbXBvcnQoJy4uL29yZ2FuaXNtcy9ndi1yZXNvdXJjZXMnKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fdGFicyA9IFsuLi50aGlzLl90YWJzLCB7IGlkOiAncmVzb3VyY2VzJywgdGl0bGU6ICdSZXNvdXJjZXMnLCBpY29uOiAnZ2VuZXJhbDpzZXR0aW5ncyM1JyB9XTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXQgY2FuRGVidWcodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3RhYnMgPSBbLi4udGhpcy5fdGFicywgeyBpZDogJ2RlYnVnJywgdGl0bGU6ICdUcnkgaXQnLCBpY29uOiAnY29udGVudDpzZW5kJyB9XTtcbiAgICB9XG4gIH1cblxuICBnZXQgX2Zsb3dGaWx0ZXJPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLmRlZmluZWRQbGFucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7IGlkOiAnYXBpJywgdGl0bGU6ICdBcGknLCBpY29uOiAnc2hvcHBpbmc6Ym94IzMnIH0sXG4gICAgICAgIHsgaWQ6ICdwbGFuJywgdGl0bGU6ICdQbGFucycsIGljb246ICdzaG9wcGluZzpzYWxlIzInIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHNldCBoYXNQb2xpY3lGaWx0ZXIodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3BvbGljeUZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgIHsgaWQ6ICdvblJlcXVlc3QnLCB0aXRsZTogJ1JlcXVlc3QnLCBpY29uOiAnbmF2aWdhdGlvbjphcnJvdy1mcm9tLWxlZnQnIH0sXG4gICAgICAgIHsgaWQ6ICdvblJlc3BvbnNlJywgdGl0bGU6ICdSZXNwb25zZScsIGljb246ICduYXZpZ2F0aW9uOmFycm93LWZyb20tcmlnaHQnIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHNldCBjb25maWd1cmF0aW9uU2NoZW1hKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJzLnNwbGljZSgxLCAwLCB7IGlkOiAnc2V0dGluZ3MnLCB0aXRsZTogJ0NvbmZpZ3VyYXRpb24nLCBpY29uOiAnZ2VuZXJhbDpzZXR0aW5ncyMyJyB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWd1cmF0aW9uU2NoZW1hID0gdmFsdWU7XG4gIH1cblxuICBnZXQgY29uZmlndXJhdGlvblNjaGVtYSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdGlvblNjaGVtYTtcbiAgfVxuXG4gIG9uS2V5Ym9hcmQoKSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuaXNQcmVzc2VkKEtFWVMuU2hpZnQsIEtFWVMuQ3RybCwgS0VZUy5TcGFjZSkpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJyNzZWFyY2gtcG9saWN5Jyk7XG4gICAgICAgIGlmIChzZWFyY2gpIHtcbiAgICAgICAgICBzZWFyY2guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUHJlc3NlZChLRVlTLkN0cmwsIEtFWVMuU3BhY2UpKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoLWZsb3cnKTtcbiAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgIHNlYXJjaC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1ByZXNzZWQoS0VZUy5Fc2MpKSB7XG4gICAgICAgIHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKCk7XG4gICAgICAgIHRoaXMuX29uQ2xvc2VEb2N1bWVudGF0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IHRhYklkKHRhYklkKSB7XG4gICAgaWYgKHRhYklkICE9IG51bGwgJiYgWydkZXNpZ24nLCAnc2V0dGluZ3MnLCAncHJvcGVydGllcycsICdyZXNvdXJjZXMnLCAnZGVidWcnXS5pbmNsdWRlcyh0YWJJZCkpIHtcbiAgICAgIHRoaXMuX3RhYklkID0gdGFiSWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RhYklkID0gJ2Rlc2lnbic7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhYklkKCkge1xuICAgIHJldHVybiB0aGlzLl90YWJJZDtcbiAgfVxuXG4gIHNldCBkZWZpbml0aW9uKGRlZmluaXRpb24pIHtcbiAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgZmxvd3MgPSB0aGlzLl9nZW5lcmF0ZUZsb3dzSWQoZGVmaW5pdGlvbi5mbG93cyk7XG4gICAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLl9nZW5lcmF0ZUlkKCdyZXNvdXJjZS0nLCBkZWZpbml0aW9uLnJlc291cmNlcyk7XG4gICAgICBjb25zdCBwbGFucyA9XG4gICAgICAgIGRlZmluaXRpb24ucGxhbnMgPT0gbnVsbFxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IGRlZmluaXRpb24ucGxhbnMubWFwKChwbGFuKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLnBsYW4sIGZsb3dzOiB0aGlzLl9nZW5lcmF0ZVBsYW5GbG93c0lkKHBsYW4pIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgIHRoaXMuX2luaXRpYWxEZWZpbml0aW9uID0geyAuLi5kZWZpbml0aW9uLCBmbG93cywgcmVzb3VyY2VzLCBwbGFucyB9O1xuICAgICAgdGhpcy5fZGVmaW5pdGlvbiA9IGRlZXBDbG9uZSh0aGlzLl9pbml0aWFsRGVmaW5pdGlvbik7XG4gICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3NlbGVjdEZpcnN0RmxvdygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uO1xuICB9XG5cbiAgc2V0IHNlbGVjdGVkRmxvd3NJZChzZWxlY3RlZEZsb3dzSWQpIHtcbiAgICBpZiAoc2VsZWN0ZWRGbG93c0lkICE9IG51bGwgJiYgQXJyYXkuaXNBcnJheShzZWxlY3RlZEZsb3dzSWQpKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZEZsb3dzSWQgPSBzZWxlY3RlZEZsb3dzSWQuZmlsdGVyKChpZCkgPT4gdGhpcy5fZmluZEZsb3dCeUlkKGlkKSAhPSBudWxsKTtcbiAgICAgIGlmIChzZWxlY3RlZEZsb3dzSWQubGVuZ3RoICE9PSB0aGlzLl9zZWxlY3RlZEZsb3dzSWQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdEZpcnN0Rmxvdyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRGbG93c0lkKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEZsb3dzSWQuZmlsdGVyKChpZCkgPT4gdGhpcy5fZmluZEZsb3dCeUlkKGlkKSAhPSBudWxsKTtcbiAgfVxuXG4gIF91cGRhdGVTZWxlY3RlZEZsb3dzKHNlbGVjdGVkRmxvd3NJZCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGbG93c0lkID0gc2VsZWN0ZWRGbG93c0lkO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3NlbGVjdC1mbG93cycsIHsgZmxvd3M6IHRoaXMuc2VsZWN0ZWRGbG93c0lkIH0pO1xuICB9XG5cbiAgX3NlbGVjdEZpcnN0RmxvdyhkaXNwYXRjaCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG93c0lkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbGV0IGNhbmRpZGF0ZSA9IG51bGw7XG4gICAgICBpZiAodGhpcy5kZWZpbmVkRmxvd3MubGVuZ3RoID4gMCAmJiB0aGlzLmRlZmluZWRGbG93c1swXS5faWQgIT0gbnVsbCkge1xuICAgICAgICBjYW5kaWRhdGUgPSB0aGlzLmRlZmluZWRGbG93c1swXTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kZWZpbmVkUGxhbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBwbGFuID0gdGhpcy5kZWZpbmVkUGxhbnMuZmluZCgocGxhbikgPT4gcGxhbi5mbG93cyAhPSBudWxsICYmIHBsYW4uZmxvd3MubGVuZ3RoID4gMCAmJiBwbGFuLmZsb3dzWzBdLl9pZCAhPSBudWxsKTtcbiAgICAgICAgaWYgKHBsYW4pIHtcbiAgICAgICAgICBjYW5kaWRhdGUgPSBwbGFuLmZsb3dzWzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FuZGlkYXRlICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGRpc3BhdGNoKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRGbG93cyhbY2FuZGlkYXRlLl9pZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGbG93c0lkID0gW2NhbmRpZGF0ZS5faWRdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2dldEZsb3dFbGVtZW50KGZsb3dJZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtmbG93SWR9XCJdYCk7XG4gIH1cblxuICBfb25EcmFnRW5kUG9saWN5KCkge1xuICAgIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1mbG93JykuZm9yRWFjaCgoZSkgPT4gZS5vbkRyYWdFbmQoKSk7XG4gIH1cblxuICBhc3luYyBfb25Ecm9wUG9saWN5KHsgZGV0YWlsIH0pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fYXNrVG9WYWxpZGF0ZUZvcm1zKCk7XG5cbiAgICAgIGNvbnN0IHBvbGljeSA9IGRldGFpbC5wb2xpY3k7XG4gICAgICBjb25zdCB0YXJnZXRGbG93ID0gdGhpcy5fZmluZEZsb3dCeUlkKGRldGFpbC5mbG93SWQpO1xuXG4gICAgICBsZXQgbmFtZSA9IHBvbGljeS5uYW1lO1xuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gJyc7XG4gICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHt9O1xuICAgICAgbGV0IF9pZDtcbiAgICAgIGxldCBfbmV3ID0gZmFsc2U7XG4gICAgICBpZiAoZGV0YWlsLmZsb3dTdGVwKSB7XG4gICAgICAgIF9pZCA9IGRldGFpbC5mbG93U3RlcC5faWQ7XG4gICAgICAgIG5hbWUgPSBkZXRhaWwuZmxvd1N0ZXAubmFtZTtcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXRhaWwuZmxvd1N0ZXAuZGVzY3JpcHRpb24gfHwgJyc7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBkZXRhaWwuZmxvd1N0ZXAuY29uZmlndXJhdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9pZCA9IHRoaXMuX2dlbmVyYXRlRmxvd1N0ZXBJZCh0YXJnZXRGbG93Ll9pZCwgZGV0YWlsLmZsb3dLZXksIGRldGFpbC5wb3NpdGlvbik7XG4gICAgICAgIF9uZXcgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmbG93U3RlcCA9IHsgX2lkLCBfbmV3LCBuYW1lLCBwb2xpY3k6IHBvbGljeS5pZCwgZGVzY3JpcHRpb24sIGVuYWJsZWQ6IHRydWUsIGNvbmZpZ3VyYXRpb24gfTtcbiAgICAgIGNvbnN0IHNvdXJjZUZsb3cgPSBkZXRhaWwuc291cmNlRmxvd0lkICE9IG51bGwgPyB0aGlzLl9maW5kRmxvd0J5SWQoZGV0YWlsLnNvdXJjZUZsb3dJZCkgOiB0YXJnZXRGbG93O1xuXG4gICAgICBpZiAoZGV0YWlsLnNvdXJjZVBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGRldGFpbC5zb3VyY2VGbG93S2V5ICYmIGRldGFpbC5zb3VyY2VGbG93S2V5ICE9PSBkZXRhaWwuZmxvd0tleSkge1xuICAgICAgICAgIHNvdXJjZUZsb3dbZGV0YWlsLnNvdXJjZUZsb3dLZXldLnNwbGljZShkZXRhaWwuc291cmNlUG9zaXRpb24sIDEpO1xuICAgICAgICAgIHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwucG9zaXRpb24sIDAsIGZsb3dTdGVwKTtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudEZsb3dTdGVwICE9IG51bGwgJiYgdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuX2lkID09PSBfaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5ncm91cCA9IGRldGFpbC5mbG93S2V5O1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciB1cGRhdGUgc2NoZW1hIGFmdGVyIGNoYW5nZSByZXF1ZXN0IHRvIHJlc3BvbnNlIG9yIGludmVyc2VcbiAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuYnVpbGRTY2hlbWEodGhpcy5fY3VycmVudEZsb3dTdGVwLnBvbGljeSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXRDdXJyZW50Rmxvd1N0ZXAodGhpcy5fY3VycmVudEZsb3dTdGVwLCBzY2hlbWEsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fZ2V0Rmxvd0VsZW1lbnQodGFyZ2V0Rmxvdy5faWQpLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGRldGFpbC5wb3NpdGlvbiA+IGRldGFpbC5zb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgICAgdGFyZ2V0Rmxvd1tkZXRhaWwuZmxvd0tleV0uc3BsaWNlKGRldGFpbC5wb3NpdGlvbiwgMCwgZmxvd1N0ZXApO1xuICAgICAgICAgICAgc291cmNlRmxvd1tkZXRhaWwuZmxvd0tleV0uc3BsaWNlKGRldGFpbC5zb3VyY2VQb3NpdGlvbiwgMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNvdXJjZUZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwuc291cmNlUG9zaXRpb24sIDEpO1xuICAgICAgICAgICAgdGFyZ2V0Rmxvd1tkZXRhaWwuZmxvd0tleV0uc3BsaWNlKGRldGFpbC5wb3NpdGlvbiwgMCwgZmxvd1N0ZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGb3JjZSBSZWZyZXNoIHNvdXJjZSBmbG93IGVsZW1lbnQgd2hlbiBtb3ZlIHRvIG90aGVyIGZsb3dcbiAgICAgICAgaWYgKHRhcmdldEZsb3cuX2lkICE9PSBzb3VyY2VGbG93Ll9pZCkge1xuICAgICAgICAgIHRoaXMuX2dldEZsb3dFbGVtZW50KHRhcmdldEZsb3cuX2lkKS5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwucG9zaXRpb24sIDAsIGZsb3dTdGVwKTtcbiAgICAgICAgY29uc3QgY3VycmVudEZsb3dGb3JtID0gdGhpcy5fZ2V0Rmxvd1N0ZXBGb3JtKCk7XG4gICAgICAgIGlmIChjdXJyZW50Rmxvd0Zvcm0gPT0gbnVsbCB8fCBjdXJyZW50Rmxvd0Zvcm0uZGlydHkgIT09IHRydWUpIHtcbiAgICAgICAgICBsZXQgc3RlcCA9IHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldW2RldGFpbC5wb3NpdGlvbl07XG4gICAgICAgICAgaWYgKHN0ZXAgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gV2hlbiBjb25maXJtIGxvc2UgY2hhbmdlIGFmdGVyIGRyb3AgcG9saWN5XG4gICAgICAgICAgICBzdGVwID0gdGFyZ2V0Rmxvd1tkZXRhaWwuZmxvd0tleV1bZGV0YWlsLnBvc2l0aW9uIC0gMV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRldGFpbC5jYW5jZWxFZGl0ICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZWRpdEZsb3dTdGVwKHsgc3RlcCwgcG9saWN5LCBmbG93OiB0YXJnZXRGbG93LCBncm91cDogZGV0YWlsLmZsb3dLZXkgfSk7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmxvd0VsZW1lbnQgPSB0aGlzLl9nZXRGbG93RWxlbWVudCh0YXJnZXRGbG93Ll9pZCk7XG4gICAgICAgICAgICAgICAgZmxvd0VsZW1lbnQuc2VsZWN0ZWRTdGVwSWQgPSBzdGVwLl9pZDtcbiAgICAgICAgICAgICAgICBmbG93RWxlbWVudC5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0YXJnZXRGbG93Ll9kaXJ0eSA9IHRydWU7XG4gICAgICBzb3VyY2VGbG93Ll9kaXJ0eSA9IHRydWU7XG4gICAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3cnKS5mb3JFYWNoKChndkZsb3cpID0+IGd2Rmxvdy5yZW1vdmVDYW5kaWRhdGUoKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fZHJhZ1BvbGljeSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2Ryb3BQb2xpY3kgPSBudWxsO1xuICAgICAgfSwgMCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgX29uRGVsZXRlUG9saWN5KHsgZGV0YWlsIH0pIHtcbiAgICBjb25zdCB0YXJnZXRGbG93ID0gdGhpcy5fZmluZEZsb3dCeUlkKGRldGFpbC5mbG93SWQpO1xuICAgIHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwucG9zaXRpb24sIDEpO1xuICAgIHRhcmdldEZsb3cuX2RpcnR5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgIGlmIChkZXRhaWwudGFyZ2V0LmVkaXRpbmcpIHtcbiAgICAgIHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKHRydWUpO1xuICAgIH1cbiAgICB0aGlzLl9nZXRGbG93RWxlbWVudChkZXRhaWwuZmxvd0lkKS5yZXF1ZXN0VXBkYXRlKCk7XG4gIH1cblxuICBfb25EZXNpZ24oKSB7XG4gICAgdGhpcy5fY2hhbmdlVGFiKCdkZXNpZ24nKTtcbiAgICB0aGlzLl9zcGxpdE1haW5WaWV3cygpO1xuICB9XG5cbiAgYnVpbGRTY2hlbWEoeyBzY2hlbWEgfSkge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0ge1xuICAgICAgdGl0bGU6ICdEZXNjcmlwdGlvbicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIG9mIGZsb3cgc3RlcCcsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9O1xuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIGNvbnN0IGpzb25TY2hlbWEgPSB0eXBlb2Ygc2NoZW1hID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2Uoc2NoZW1hKSA6IHNjaGVtYTtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7IGRlc2NyaXB0aW9uLCAuLi5qc29uU2NoZW1hLnByb3BlcnRpZXMgfTtcbiAgICAgIHJldHVybiB7IC4uLmpzb25TY2hlbWEsIHByb3BlcnRpZXMgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcHJvcGVydGllczogeyBkZXNjcmlwdGlvbiB9IH07XG4gIH1cblxuICBhc3luYyBfZWRpdEZsb3dTdGVwKHsgc3RlcCwgZmxvdywgcG9saWN5LCBncm91cCB9KSB7XG4gICAgaWYgKHN0ZXApIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRQb2xpY3lJZCA9IHBvbGljeS5pZDtcbiAgICAgIGNvbnN0IGN1cnJlbnRGbG93U3RlcCA9IHsgZmxvdywgc3RlcCwgcG9saWN5LCBncm91cCB9O1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5idWlsZFNjaGVtYShwb2xpY3kpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2V0Q3VycmVudEZsb3dTdGVwKGN1cnJlbnRGbG93U3RlcCwgc2NoZW1hKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRGbG93cyhbZmxvdy5faWRdKTtcbiAgICAgICAgdGhpcy5fc3BsaXRNYWluVmlld3MoKTtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdndi1wb2xpY3ktc3R1ZGlvOmtlZXAtZG9jdW1lbnRhdGlvbi1jbG9zZScpID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLl9vbk9wZW5Eb2N1bWVudGF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKCk7XG4gICAgICB0aGlzLl9tYXhpbWl6ZVRvcFZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBfb25FZGl0Rmxvd1N0ZXAoeyBkZXRhaWw6IHsgc3RlcCwgZmxvdywgcG9saWN5LCBncm91cCB9IH0pIHtcbiAgICByZXR1cm4gdGhpcy5fZWRpdEZsb3dTdGVwKHsgc3RlcCwgZmxvdywgcG9saWN5LCBncm91cCB9KTtcbiAgfVxuXG4gIF9nZXRSZXNpemFibGVWaWV3cygpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LXJlc2l6YWJsZS12aWV3cycpO1xuICB9XG5cbiAgX21heGltaXplVG9wVmlldygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb3dzSWQubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHRoaXMuX2dldFJlc2l6YWJsZVZpZXdzKCkubWF4aW1pemVUb3AoKTtcbiAgICB9XG4gIH1cblxuICBfbWF4aW1pemVCb3R0b21WaWV3KCkge1xuICAgIHRoaXMuX2dldFJlc2l6YWJsZVZpZXdzKCkubWF4aW1pemVCb3R0b20oKTtcbiAgfVxuXG4gIF9zcGxpdE1haW5WaWV3cygpIHtcbiAgICB0aGlzLl9nZXRSZXNpemFibGVWaWV3cygpLnNwbGl0KCk7XG4gIH1cblxuICBfb25DaGFuZ2VGbG93U3RlcFN0YXRlKHsgZGV0YWlsIH0pIHtcbiAgICBjb25zdCB0YXJnZXRGbG93ID0gdGhpcy5fZmluZEZsb3dCeUlkKGRldGFpbC5mbG93SWQpO1xuICAgIGNvbnN0IHN0ZXAgPSB0YXJnZXRGbG93W2RldGFpbC5mbG93S2V5XVtkZXRhaWwucG9zaXRpb25dO1xuICAgIHN0ZXAuZW5hYmxlZCA9IGRldGFpbC5lbmFibGVkO1xuICAgIHRhcmdldEZsb3cuX2RpcnR5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgYXN5bmMgX29uQ2xvc2VGbG93U3RlcEZvcm0oKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBfY2xvc2VGbG93U3RlcEZvcm0oZm9yY2UgPSBmYWxzZSkge1xuICAgIGF3YWl0IHRoaXMuX3NldEN1cnJlbnRGbG93U3RlcChudWxsLCBudWxsLCBmb3JjZSk7XG4gIH1cblxuICBhc3luYyBfYXNrVG9WYWxpZGF0ZUZvcm1zKCkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID09IG51bGwpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHRoaXMuX3N1Ym1pdE9yQ29uZmlybUZvcm1zKCkpLnRoZW4oKGZvcm1zKSA9PiB7XG4gICAgICAgIGlmIChmb3Jtcy5maWx0ZXIoKHIpID0+IHIgIT0gbnVsbCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuX2RlZmluaXRpb24gPSB0aGlzLl9idWlsZERlZmluaXRpb25Ub1NhdmUoKTtcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuKCkuZm9yRWFjaCgoZSkgPT4gZS5yZXF1ZXN0VXBkYXRlKCkpO1xuICAgICAgICAgIC8vIFJlZnJlc2ggaWYgbG9zZSBjaGFuZ2VzIGxvc3QgY3VycmVudCBzdGVwIHNlbGVjdGlvblxuICAgICAgICAgIHJldHVybiB0aGlzLl9jaGVja0N1cnJlbnRGbG93U3RlcCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbigpLmZvckVhY2goKGUpID0+IGUucmVxdWVzdFVwZGF0ZSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1zO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGZvcm1zO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhc2sgYWxyZWFkeSB3YWl0aW5nJyk7XG4gIH1cblxuICBhc3luYyBfc2V0Q3VycmVudEZsb3dTdGVwKGN1cnJlbnRGbG93U3RlcCwgZmxvd1N0ZXBTY2hlbWEsIGZvcmNlID0gZmFsc2UpIHtcbiAgICBpZiAoIWZvcmNlKSB7XG4gICAgICBhd2FpdCB0aGlzLl9hc2tUb1ZhbGlkYXRlRm9ybXMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlbWEgPSBkZWVwQ2xvbmUoZmxvd1N0ZXBTY2hlbWEpO1xuICAgIGlmIChjdXJyZW50Rmxvd1N0ZXAgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9XG4gICAgICAgIHR5cGVvZiBjdXJyZW50Rmxvd1N0ZXAuc3RlcC5jb25maWd1cmF0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gSlNPTi5wYXJzZShjdXJyZW50Rmxvd1N0ZXAuc3RlcC5jb25maWd1cmF0aW9uKVxuICAgICAgICAgIDogY3VycmVudEZsb3dTdGVwLnN0ZXAuY29uZmlndXJhdGlvbjtcbiAgICAgIGNvbnN0IHN0ZXAgPSB7IC4uLmN1cnJlbnRGbG93U3RlcC5zdGVwLCBjb25maWd1cmF0aW9uIH07XG5cbiAgICAgIGNvbnN0IF9pbml0aWFsVmFsdWVzID0geyAuLi5zdGVwLmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0aW9uOiBzdGVwLmRlc2NyaXB0aW9uIH07XG4gICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAgPSB7IC4uLmN1cnJlbnRGbG93U3RlcCwgc3RlcCwgX2luaXRpYWxWYWx1ZXMgfTtcblxuICAgICAgaWYgKGZsb3dTdGVwU2NoZW1hICYmIGZsb3dTdGVwU2NoZW1hLnByb3BlcnRpZXMuc2NvcGUpIHtcbiAgICAgICAgY29uc3QgX2VudW0gPSBzY2hlbWEucHJvcGVydGllcy5zY29wZS5lbnVtO1xuICAgICAgICBpZiAoX2VudW0uZmluZCgoc2NvcGUpID0+IFsnUkVRVUVTVCcsICdSRVFVRVNUX0NPTlRFTlQnLCAnUkVTUE9OU0UnLCAnUkVTUE9OU0VfQ09OVEVOVCddLmluY2x1ZGVzKHNjb3BlKSkgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5fY3VycmVudEZsb3dTdGVwLmdyb3VwID09PSAncHJlJyA/IFsnUkVRVUVTVCcsICdSRVFVRVNUX0NPTlRFTlQnXSA6IFsnUkVTUE9OU0UnLCAnUkVTUE9OU0VfQ09OVEVOVCddO1xuICAgICAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzLnNjb3BlLmVudW0gPSBfZW51bS5maWx0ZXIoKHNjb3BlKSA9PiBmaWx0ZXJlZC5pbmNsdWRlcyhzY29wZSkpO1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuY29uZmlndXJhdGlvbi5zY29wZTtcbiAgICAgICAgICBpZiAoc2NvcGUgPT0gbnVsbCB8fCAhc2NoZW1hLnByb3BlcnRpZXMuc2NvcGUuZW51bS5pbmNsdWRlcyhzY29wZSkpIHtcbiAgICAgICAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzLnNjb3BlLmRlZmF1bHQgPSBzY2hlbWEucHJvcGVydGllcy5zY29wZS5lbnVtWzBdO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuY29uZmlndXJhdGlvbi5zY29wZSA9IHNjaGVtYS5wcm9wZXJ0aWVzLnNjb3BlLmVudW1bMF07XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX2luaXRpYWxWYWx1ZXMuc2NvcGUgPSBzY2hlbWEucHJvcGVydGllcy5zY29wZS5lbnVtWzBdO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGbG93U3RlcC5fdmFsdWVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5fdmFsdWVzLnNjb3BlID0gc2NoZW1hLnByb3BlcnRpZXMuc2NvcGUuZW51bVswXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY3VycmVudEZsb3dTdGVwID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9mbG93U3RlcFNjaGVtYSA9IHNjaGVtYTtcbiAgfVxuXG4gIF9yZWZyZXNoKGNsb3NlU3RlcEZvcm0gPSB0cnVlKSB7XG4gICAgaWYgKGNsb3NlU3RlcEZvcm0pIHtcbiAgICAgIHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKHRydWUpO1xuICAgIH1cbiAgICB0aGlzLl9kZWZpbml0aW9uID0gZGVlcENsb25lKHRoaXMuX2RlZmluaXRpb24pO1xuICB9XG5cbiAgYXN5bmMgX29uU2VsZWN0Rmxvd3MoeyBkZXRhaWwgfSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSgpO1xuICAgICAgdGhpcy5fb25DbG9zZURvY3VtZW50YXRpb24oKTtcbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoZGV0YWlsLmZsb3dzKTtcbiAgICAgIHRoaXMuX29uRGVzaWduKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX29uT3BlbkRvY3VtZW50YXRpb25Gcm9tTWVudSh7IGRldGFpbDogeyBwb2xpY3kgfSB9KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50YXRpb24gPT0gbnVsbCB8fCB0aGlzLmRvY3VtZW50YXRpb24uaWQgIT09IHBvbGljeS5pZCkge1xuICAgICAgICBhd2FpdCB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSgpO1xuICAgICAgICB0aGlzLl9jdXJyZW50UG9saWN5SWQgPSBwb2xpY3kuaWQ7XG4gICAgICAgIGlmICh0aGlzLmdldFNlbGVjdGVkRmxvdygpKSB7XG4gICAgICAgICAgdGhpcy5fc3BsaXRNYWluVmlld3MoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9tYXhpbWl6ZUJvdHRvbVZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdmZXRjaC1kb2N1bWVudGF0aW9uJywgeyBwb2xpY3kgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIF9mZXRjaERvY3VtZW50YXRpb24ocG9saWN5KSB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRhdGlvbiA9PSBudWxsIHx8IHRoaXMuZG9jdW1lbnRhdGlvbi5pZCAhPT0gcG9saWN5LmlkKSB7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdmZXRjaC1kb2N1bWVudGF0aW9uJywgeyBwb2xpY3kgfSk7XG4gICAgfVxuICB9XG5cbiAgX29uT3BlbkRvY3VtZW50YXRpb24oKSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRGbG93U3RlcCAmJiB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAucG9saWN5KSB7XG4gICAgICB0aGlzLl9mZXRjaERvY3VtZW50YXRpb24odGhpcy5fY3VycmVudEZsb3dTdGVwLnBvbGljeSk7XG4gICAgfVxuICB9XG5cbiAgX29uT3BlbkRvY3VtZW50YXRpb25Gcm9tRm9ybSgpIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZ3YtcG9saWN5LXN0dWRpbzprZWVwLWRvY3VtZW50YXRpb24tY2xvc2UnKTtcbiAgICB0aGlzLl9vbk9wZW5Eb2N1bWVudGF0aW9uKCk7XG4gIH1cblxuICBfZmluZEZsb3dDb2xsZWN0aW9uKGZsb3dJZCkge1xuICAgIGNvbnN0IHBsYW4gPSB0aGlzLmRlZmluZWRQbGFucy5maW5kKChwbGFuKSA9PiBwbGFuLmZsb3dzLmZpbmQoKGZsb3cpID0+IGZsb3cuX2lkID09PSBmbG93SWQpICE9IG51bGwpO1xuICAgIHJldHVybiB7IHBsYW4sIGZsb3dzOiBwbGFuICE9IG51bGwgPyBwbGFuLmZsb3dzIDogdGhpcy5kZWZpbmVkRmxvd3MgfTtcbiAgfVxuXG4gIF9maW5kRmxvd0J5SWQoZmxvd0lkKSB7XG4gICAgbGV0IGZsb3cgPSB0aGlzLmRlZmluZWRGbG93cy5maW5kKChmbG93KSA9PiBmbG93Ll9pZCA9PT0gZmxvd0lkKTtcbiAgICBpZiAoZmxvdyA9PSBudWxsKSB7XG4gICAgICBjb25zdCBwbGFuc0Zsb3dzID0gdGhpcy5kZWZpbmVkUGxhbnMubWFwKChwbGFuKSA9PiBwbGFuLmZsb3dzKS5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MuY29uY2F0KHZhbCksIFtdKTtcbiAgICAgIGZsb3cgPSBwbGFuc0Zsb3dzLmZpbmQoKGZsb3cpID0+IGZsb3cuX2lkID09PSBmbG93SWQpO1xuICAgIH1cbiAgICByZXR1cm4gZmxvdztcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmxvdyhpbmRleCA9IDApIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsb3dJZCA9IHRoaXMuc2VsZWN0ZWRGbG93c0lkW2luZGV4XTtcbiAgICByZXR1cm4gdGhpcy5fZmluZEZsb3dCeUlkKHNlbGVjdGVkRmxvd0lkKTtcbiAgfVxuXG4gIF9vblRhcmdldFBvbGljeSh7IGRldGFpbCB9KSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPT0gbnVsbCkge1xuICAgICAgdGhpcy5fZHJhZ1BvbGljeSA9IGRldGFpbDtcbiAgICB9XG4gIH1cblxuICBfb25DaGFuZ2VGbG93U3RlcCh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fY3VycmVudEZsb3dTdGVwLl92YWx1ZXMgPSBkZXRhaWwudmFsdWVzO1xuICB9XG5cbiAgX3dyaXRlRmxvd1N0ZXAodmFsdWVzKSB7XG4gICAgY29uc3QgeyBkZXNjcmlwdGlvbiwgLi4uY29uZmlndXJhdGlvbiB9ID0gdmFsdWVzO1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLl9uZXcgfHxcbiAgICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLmRlc2NyaXB0aW9uICE9PSBkZXNjcmlwdGlvbiB8fFxuICAgICAgIWRlZXBFcXVhbCh0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuc3RlcC5jb25maWd1cmF0aW9uLCBjb25maWd1cmF0aW9uKVxuICAgICkge1xuICAgICAgY29uc3QgZmxvdyA9IHRoaXMuX2ZpbmRGbG93QnlJZCh0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuZmxvdy5faWQpO1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBmbG93W3RoaXMuX2N1cnJlbnRGbG93U3RlcC5ncm91cF0uZmluZEluZGV4KChzdGVwKSA9PiBzdGVwLl9pZCA9PT0gdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuX2lkKTtcblxuICAgICAgZmxvd1t0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuZ3JvdXBdW3Bvc2l0aW9uXS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgZmxvd1t0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuZ3JvdXBdW3Bvc2l0aW9uXS5jb25maWd1cmF0aW9uID0gZGVlcENsb25lKGNvbmZpZ3VyYXRpb24pO1xuICAgICAgZGVsZXRlIGZsb3dbdGhpcy5fY3VycmVudEZsb3dTdGVwLmdyb3VwXVtwb3NpdGlvbl0uX25ldztcbiAgICAgIGZsb3dbdGhpcy5fY3VycmVudEZsb3dTdGVwLmdyb3VwXVtwb3NpdGlvbl0uX2RpcnR5ID0gdHJ1ZTtcbiAgICAgIGZsb3cuX2RpcnR5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuZmxvdyA9IGZsb3c7XG4gICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuc3RlcCA9IGZsb3dbdGhpcy5fY3VycmVudEZsb3dTdGVwLmdyb3VwXVtwb3NpdGlvbl07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX29uU3VibWl0Rmxvd1N0ZXAoeyBkZXRhaWwgfSkge1xuICAgIHRoaXMuX3dyaXRlRmxvd1N0ZXAoZGV0YWlsLnZhbHVlcyk7XG4gICAgYXdhaXQgdGhpcy5yZXF1ZXN0VXBkYXRlKCdfZGVmaW5pdGlvbicpO1xuICAgIHRoaXMuZ2V0Q2hpbGRyZW4oKS5mb3JFYWNoKChjKSA9PiBjLnJlcXVlc3RVcGRhdGUoKSk7XG4gIH1cblxuICBfb25DYW5jZWxGbG93KCkge1xuICAgIHRoaXMuX29uRGVzaWduKCk7XG4gIH1cblxuICBfb25TdWJtaXRGbG93KHsgZGV0YWlsOiB7IHZhbHVlcyB9IH0pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsb3cgPSB0aGlzLmdldFNlbGVjdGVkRmxvdygpO1xuICAgIGNvbnN0IF92YWx1ZXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9jcmVhdGVGbG93RnJvbVNjaGVtYSgpLCB2YWx1ZXMpO1xuICAgIGNvbnN0IHNlbGVjdGVkRmxvd1VwZGF0ZWQgPSBPYmplY3QuYXNzaWduKHt9LCBzZWxlY3RlZEZsb3csIF92YWx1ZXMpO1xuICAgIGlmICghZGVlcEVxdWFsKHNlbGVjdGVkRmxvdywgc2VsZWN0ZWRGbG93VXBkYXRlZCkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oc2VsZWN0ZWRGbG93LCBzZWxlY3RlZEZsb3dVcGRhdGVkLCB7IF9kaXJ0eTogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgX29uQ2FuY2VsRmxvd01vZGUoKSB7XG4gICAgdGhpcy5fb25EZXNpZ24oKTtcbiAgfVxuXG4gIF9vblN1Ym1pdEZsb3dNb2RlKHsgZGV0YWlsOiB7IHZhbHVlcyB9IH0pIHtcbiAgICB0aGlzLl9kZWZpbml0aW9uWydmbG93LW1vZGUnXSA9IHZhbHVlc1snZmxvdy1tb2RlJ10gfHwgJ0RFRkFVTFQnO1xuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5fcmVmcmVzaCgpO1xuICB9XG5cbiAgX29uQ2hhbmdlVGFiKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl9jaGFuZ2VUYWIoZGV0YWlsLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIF9jaGFuZ2VUYWJWYWxpZGF0b3IoeyBmcm9tLCB0byB9KSB7XG4gICAgaWYgKGZyb20gPT09ICdwcm9wZXJ0aWVzJykge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LXByb3BlcnRpZXMnKTtcbiAgICAgIGlmIChjb21wb25lbnQuZGlydHkpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5jb25maXJtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmcm9tID09PSAncmVzb3VyY2VzJykge1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LXJlc291cmNlcycpO1xuICAgICAgaWYgKGNvbXBvbmVudC5kaXJ0eSkge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50LmNvbmZpcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Fza1RvVmFsaWRhdGVGb3JtcygpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID0gbnVsbDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgX2NoYW5nZVRhYih0YWJJZCkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID09IG51bGwpIHtcbiAgICAgIHRoaXMudGFiSWQgPSB0YWJJZDtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZS10YWInLCB0aGlzLnRhYklkKTtcbiAgICB9XG4gIH1cblxuICBfb25EcmFnU3RhcnRGbG93U3RlcChmbG93LCB7IGRldGFpbCB9KSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPT0gbnVsbCkge1xuICAgICAgdGhpcy5fZHJvcFBvbGljeSA9IGRldGFpbDtcbiAgICAgIHRoaXMuX2RyYWdQb2xpY3kgPSBkZXRhaWw7XG4gICAgfVxuICB9XG5cbiAgX3JlbmRlckZsb3dFbXB0eVN0YXRlKHJlYWRvbmx5TW9kZSkge1xuICAgIHJldHVybiBodG1sYDxkaXYgc2xvdD1cImNvbnRlbnRcIiBjbGFzcz1cImVtcHR5XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICBTZWxlY3QgYSBmbG93XG4gICAgICAgICR7cmVhZG9ubHlNb2RlICE9PSB0cnVlXG4gICAgICAgICAgPyBodG1sYG9yIDxndi1idXR0b24gQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25BZGRGbG93fVwiIG91dGxpbmVkIGljb249XCJjb2RlOnBsdXNcIiBsYXJnZT5kZXNpZ24gbmV3IG9uZTwvZ3YtYnV0dG9uPmBcbiAgICAgICAgICA6ICcnfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+YDtcbiAgfVxuXG4gIF9yZW5kZXJGbG93KGluZGV4ID0gMCwgaGFzRW1wdHlTdGF0ZSA9IHRydWUsIHJlYWRvbmx5TW9kZSkge1xuICAgIGNvbnN0IGZsb3cgPSB0aGlzLmdldFNlbGVjdGVkRmxvdyhpbmRleCk7XG4gICAgaWYgKGZsb3cpIHtcbiAgICAgIGNvbnN0IHsgcGxhbiB9ID0gdGhpcy5fZmluZEZsb3dDb2xsZWN0aW9uKGZsb3cuX2lkKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkU3RlcElkID0gdGhpcy5fY3VycmVudEZsb3dTdGVwID8gdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuX2lkIDogbnVsbDtcbiAgICAgIHJldHVybiBodG1sYCA8Z3YtZmxvd1xuICAgICAgICBzdHlsZT1cImhlaWdodDogMTAwJVwiXG4gICAgICAgIC5pZD1cIiR7Zmxvdy5faWR9XCJcbiAgICAgICAgLmZsb3c9XCIke2Zsb3d9XCJcbiAgICAgICAgLnBsYW49XCIke3BsYW59XCJcbiAgICAgICAgLnBvbGljaWVzPVwiJHt0aGlzLnBvbGljaWVzfVwiXG4gICAgICAgIHNsb3Q9XCJjb250ZW50XCJcbiAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgIC5kcmFnUG9saWN5PVwiJHt0aGlzLl9kcmFnUG9saWN5fVwiXG4gICAgICAgIC5kcm9wUG9saWN5PVwiJHt0aGlzLl9kcm9wUG9saWN5fVwiXG4gICAgICAgIC5zZWxlY3RlZFN0ZXBJZD1cIiR7c2VsZWN0ZWRTdGVwSWR9XCJcbiAgICAgICAgP3JlYWRvbmx5PVwiJHtyZWFkb25seU1vZGV9XCJcbiAgICAgICAgP2hhcy1wb2xpY3ktZmlsdGVyPVwiJHt0aGlzLl9wb2xpY3lGaWx0ZXJPcHRpb25zICE9IG51bGx9XCJcbiAgICAgICAgZmxvd3MtdGl0bGU9XCIke3RoaXMuZmxvd3NUaXRsZX1cIlxuICAgICAgICBAZ3YtZmxvdzpkcmFnLXN0YXJ0PVwiJHt0aGlzLl9vbkRyYWdTdGFydEZsb3dTdGVwLmJpbmQodGhpcywgZmxvdyl9XCJcbiAgICAgICAgQGd2LWZsb3c6ZWRpdD1cIiR7dGhpcy5fb25FZGl0Rmxvd1N0ZXB9XCJcbiAgICAgICAgQGd2LWZsb3c6Y2hhbmdlLXN0YXRlPVwiJHt0aGlzLl9vbkNoYW5nZUZsb3dTdGVwU3RhdGV9XCJcbiAgICAgICAgQGd2LWZsb3c6ZHJvcD1cIiR7dGhpcy5fb25Ecm9wUG9saWN5fVwiXG4gICAgICAgIEBndi1mbG93OmRlbGV0ZT1cIiR7dGhpcy5fb25EZWxldGVQb2xpY3l9XCJcbiAgICAgID48L2d2LWZsb3c+YDtcbiAgICB9IGVsc2UgaWYgKGhhc0VtcHR5U3RhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJGbG93RW1wdHlTdGF0ZShyZWFkb25seU1vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG5cbiAgX29uRmV0Y2hSZXNvdXJjZXMoZXZlbnQpIHtcbiAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlZ2V4VHlwZXMgfSA9IGV2ZW50LmRldGFpbDtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5kZWZpbmVkUmVzb3VyY2VzXG4gICAgICAuZmlsdGVyKChyZXNvdXJjZSkgPT4gcmVnZXhUeXBlcyA9PSBudWxsIHx8IG5ldyBSZWdFeHAocmVnZXhUeXBlcykudGVzdChyZXNvdXJjZS50eXBlKSlcbiAgICAgIC5tYXAoKHJlc291cmNlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnJlc291cmNlVHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gcmVzb3VyY2UudHlwZSk7XG4gICAgICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2d2LXJvdycpO1xuICAgICAgICBjb25zdCBwaWN0dXJlID0gcmVzb3VyY2VUeXBlLmljb24gPyByZXNvdXJjZVR5cGUuaWNvbiA6IG51bGw7XG4gICAgICAgIHJvdy5pdGVtID0geyBwaWN0dXJlLCBuYW1lOiByZXNvdXJjZS5uYW1lIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZWxlbWVudDogcm93LFxuICAgICAgICAgIHZhbHVlOiByZXNvdXJjZS5uYW1lLFxuICAgICAgICAgIGlkOiByZXNvdXJjZS50eXBlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgY3VycmVudFRhcmdldC5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIF9yZW5kZXJQb2xpY3kocmVhZG9ubHlNb2RlKSB7XG4gICAgaWYgKHRoaXMuX2Zsb3dTdGVwU2NoZW1hICYmIHRoaXMuZG9jdW1lbnRhdGlvbikge1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LXJlc2l6YWJsZS12aWV3cyBkaXJlY3Rpb249XCJob3Jpem9udGFsXCIgbm8tb3ZlcmZsb3c+XG4gICAgICAgIDxkaXYgc2xvdD1cInRvcFwiPiR7dGhpcy5fcmVuZGVyRmxvd1N0ZXBGb3JtKHJlYWRvbmx5TW9kZSl9PC9kaXY+XG4gICAgICAgIDxkaXYgc2xvdD1cImJvdHRvbVwiPlxuICAgICAgICAgIDxndi1kb2N1bWVudGF0aW9uXG4gICAgICAgICAgICAudGV4dD1cIiR7dGhpcy5kb2N1bWVudGF0aW9uLmNvbnRlbnR9XCJcbiAgICAgICAgICAgIC5pbWFnZT1cIiR7dGhpcy5kb2N1bWVudGF0aW9uLmltYWdlfVwiXG4gICAgICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCJcbiAgICAgICAgICAgIEBndi1kb2N1bWVudGF0aW9uOmNsb3NlPVwiJHt0aGlzLl9vbkNsb3NlRG9jdW1lbnRhdGlvbn1cIlxuICAgICAgICAgID48L2d2LWRvY3VtZW50YXRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9ndi1yZXNpemFibGUtdmlld3M+YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZG9jdW1lbnRhdGlvbikge1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LWRvY3VtZW50YXRpb25cbiAgICAgICAgLnRleHQ9XCIke3RoaXMuZG9jdW1lbnRhdGlvbi5jb250ZW50fVwiXG4gICAgICAgIC5pbWFnZT1cIiR7dGhpcy5kb2N1bWVudGF0aW9uLmltYWdlfVwiXG4gICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICBAZ3YtZG9jdW1lbnRhdGlvbjpjbG9zZT1cIiR7dGhpcy5fb25DbG9zZURvY3VtZW50YXRpb259XCJcbiAgICAgID48L2d2LWRvY3VtZW50YXRpb24+YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zsb3dTdGVwU2NoZW1hKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyRmxvd1N0ZXBGb3JtKHJlYWRvbmx5TW9kZSk7XG4gICAgfVxuICAgIHJldHVybiBodG1sYGA7XG4gIH1cblxuICBfZ2V0Rmxvd1N0ZXBGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgIyR7RkxPV19TVEVQX0ZPUk1fSUR9YCk7XG4gIH1cblxuICBfb25SZXNldEZsb3dTdGVwKCkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50Rmxvd1N0ZXApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX3ZhbHVlcztcbiAgICAgIHRoaXMuX2dldEZsb3dTdGVwRm9ybSgpLnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgX2dlbmVyYXRlRmxvd3NJZChsaXN0LCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dlbmVyYXRlSWQoJ2YnLCBsaXN0LCBmb3JjZSwgdHJ1ZSk7XG4gIH1cblxuICBfZ2VuZXJhdGVQbGFuRmxvd3NJZChwbGFuLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dlbmVyYXRlSWQocGxhbi5pZCwgcGxhbi5mbG93cywgZm9yY2UsIHRydWUpO1xuICB9XG5cbiAgX2dlbmVyYXRlRmxvd1N0ZXBJZChmbG93SWQsIGZsb3dLZXksIHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIGAke2Zsb3dJZH1fJHtmbG93S2V5fV8ke3Bvc2l0aW9ufWA7XG4gIH1cblxuICBfZ2VuZXJhdGVJZChwcmVmaXgsIGxpc3QsIGZvcmNlID0gZmFsc2UsIGlzRmxvdyA9IGZhbHNlKSB7XG4gICAgaWYgKGxpc3QpIHtcbiAgICAgIHJldHVybiBsaXN0Lm1hcCgoZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgX2lkID0gYCR7cHJlZml4fV8ke2luZGV4fWA7XG4gICAgICAgIGlmIChpc0Zsb3cpIHtcbiAgICAgICAgICBpZiAoZS5wcmUpIHtcbiAgICAgICAgICAgIGUucHJlLmZvckVhY2goKHN0ZXAsIHN0ZXBJbmRleCkgPT4gKHN0ZXAuX2lkID0gdGhpcy5fZ2VuZXJhdGVGbG93U3RlcElkKF9pZCwgJ3ByZScsIHN0ZXBJbmRleCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUucG9zdCkge1xuICAgICAgICAgICAgZS5wb3N0LmZvckVhY2goKHN0ZXAsIHN0ZXBJbmRleCkgPT4gKHN0ZXAuX2lkID0gdGhpcy5fZ2VuZXJhdGVGbG93U3RlcElkKF9pZCwgJ3Bvc3QnLCBzdGVwSW5kZXgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JjZSB8fCBlLl9pZCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uZSwgX2lkIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICBnZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3YtZmxvdycpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXJlc2l6YWJsZS12aWV3cycpKSxcbiAgICBdO1xuICB9XG5cbiAgYXN5bmMgX2dldFVwZGF0ZUNvbXBsZXRlKCkge1xuICAgIGF3YWl0IHN1cGVyLl9nZXRVcGRhdGVDb21wbGV0ZSgpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZ2V0Q2hpbGRyZW4oKS5tYXAoKGUpID0+IGUudXBkYXRlQ29tcGxldGUpKTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIC8vIEp1c3QgcmVmcmVzaCBndi1mbG93IGNvbXBvbmVudHNcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdfZHJhZ1BvbGljeScpKSB7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3YtZmxvdycpLmZvckVhY2goKGZsb3cpID0+IChmbG93LmRyYWdQb2xpY3kgPSB0aGlzLl9kcmFnUG9saWN5KSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ19kcm9wUG9saWN5JykpIHtcbiAgICAgIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1mbG93JykuZm9yRWFjaCgoZmxvdykgPT4gKGZsb3cuZHJvcFBvbGljeSA9IHRoaXMuX2Ryb3BQb2xpY3kpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gIH1cblxuICB1cGRhdGVkKHByb3BzKSB7XG4gICAgaWYgKHByb3BzLmhhcygnZG9jdW1lbnRhdGlvbicpICYmIHRoaXMuZG9jdW1lbnRhdGlvbiAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRGbG93c0lkLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW3RoaXMuc2VsZWN0ZWRGbG93c0lkWzBdXSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbmRlckZsb3dTdGVwRm9ybShyZWFkb25seU1vZGUpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX3ZhbHVlcyB8fCB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX2luaXRpYWxWYWx1ZXM7XG4gICAgcmV0dXJuIGh0bWxgJHtjYWNoZShcbiAgICAgIHRoaXMuX2Zsb3dTdGVwU2NoZW1hICYmIHRoaXMuX2N1cnJlbnRGbG93U3RlcFxuICAgICAgICA/IGh0bWxgPGRpdiBjbGFzcz1cImZsb3ctc3RlcF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvdy1zdGVwX19mb3JtXCI+XG4gICAgICAgICAgICAgIDxndi1zY2hlbWEtZm9ybVxuICAgICAgICAgICAgICAgIC5pZD1cIiR7RkxPV19TVEVQX0ZPUk1fSUR9XCJcbiAgICAgICAgICAgICAgICAuc2NoZW1hPVwiJHt0aGlzLl9mbG93U3RlcFNjaGVtYX1cIlxuICAgICAgICAgICAgICAgIC5pY29uPVwiZGVzaWduOmVkaXRcIlxuICAgICAgICAgICAgICAgIGhhcy1oZWFkZXJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZS1vbi1yZW5kZXJcbiAgICAgICAgICAgICAgICAudmFsdWVzPVwiJHt2YWx1ZXN9XCJcbiAgICAgICAgICAgICAgICAuZGlydHk9XCIke3RoaXMuX2N1cnJlbnRGbG93U3RlcC5fdmFsdWVzICE9IG51bGx9XCJcbiAgICAgICAgICAgICAgICA/cmVhZG9ubHk9XCIke3JlYWRvbmx5TW9kZX1cIlxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVcbiAgICAgICAgICAgICAgICBAZ3Ytc2NoZW1hLWZvcm06Y2hhbmdlPVwiJHt0aGlzLl9vbkNoYW5nZUZsb3dTdGVwfVwiXG4gICAgICAgICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOnJlc2V0PVwiJHt0aGlzLl9vblJlc2V0Rmxvd1N0ZXB9XCJcbiAgICAgICAgICAgICAgICBAZ3Ytc2NoZW1hLWZvcm06ZmV0Y2gtcmVzb3VyY2VzPVwiJHt0aGlzLl9vbkZldGNoUmVzb3VyY2VzfVwiXG4gICAgICAgICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOnN1Ym1pdD1cIiR7dGhpcy5fb25TdWJtaXRGbG93U3RlcH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBzbG90PVwidGl0bGVcIiBjbGFzcz1cImZsb3ctc3RlcF9fZm9ybS10aXRsZVwiPiR7dGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8Z3YtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBzbG90PVwiaGVhZGVyLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cImdlbmVyYWw6Y2xvc2VcIlxuICAgICAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNsb3NlRmxvd1N0ZXBGb3JtfVwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIkNsb3NlIChlc2MpXCJcbiAgICAgICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgc2xvdD1cImhlYWRlci1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJob21lOmJvb2tcIlxuICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLmRvY3VtZW50YXRpb24gIT0gbnVsbH1cIlxuICAgICAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbk9wZW5Eb2N1bWVudGF0aW9uRnJvbUZvcm19XCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiT3BlbiBkb2N1bWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgICA+PC9ndi1idXR0b24+XG4gICAgICAgICAgICAgIDwvZ3Ytc2NoZW1hLWZvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgIDogJycsXG4gICAgKX1gO1xuICB9XG5cbiAgX29uQ2xvc2VEb2N1bWVudGF0aW9uKCkge1xuICAgIHRoaXMuZG9jdW1lbnRhdGlvbiA9IG51bGw7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRGbG93U3RlcCA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9tYXhpbWl6ZVRvcFZpZXcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2d2LXBvbGljeS1zdHVkaW86a2VlcC1kb2N1bWVudGF0aW9uLWNsb3NlJywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgX29uRGVsZXRlRmxvdyh7IGRldGFpbCB9KSB7XG4gICAgY29uc3QgZmxvd0lkID0gZGV0YWlsLmNvbnRlbnQuX2lkO1xuICAgIGNvbnN0IHsgZmxvd3MgfSA9IHRoaXMuX2ZpbmRGbG93Q29sbGVjdGlvbihmbG93SWQpO1xuICAgIGNvbnN0IGZsb3cgPSBmbG93cy5maW5kKChmbG93KSA9PiBmbG93Ll9pZCA9PT0gZmxvd0lkKTtcbiAgICB0aGlzLl9kZWxldGVGbG93KGZsb3dzLCBmbG93KTtcbiAgfVxuXG4gIGdldCBkZWZpbmVkRmxvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmluaXRpb24gJiYgdGhpcy5fZGVmaW5pdGlvbi5mbG93cyA/IHRoaXMuX2RlZmluaXRpb24uZmxvd3MgOiBbXTtcbiAgfVxuXG4gIGdldCBkZWZpbmVkUGxhbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmluaXRpb24gJiYgdGhpcy5fZGVmaW5pdGlvbi5wbGFucyA/IHRoaXMuX2RlZmluaXRpb24ucGxhbnMgOiBbXTtcbiAgfVxuXG4gIGdldCBkZWZpbmVkUmVzb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uICYmIHRoaXMuX2RlZmluaXRpb24ucmVzb3VyY2VzID8gdGhpcy5fZGVmaW5pdGlvbi5yZXNvdXJjZXMgOiBbXTtcbiAgfVxuXG4gIGdldCBkZWZpbmVkUHJvcGVydGllcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmaW5pdGlvbiAmJiB0aGlzLl9kZWZpbml0aW9uLnByb3BlcnRpZXMgPyB0aGlzLl9kZWZpbml0aW9uLnByb3BlcnRpZXMgOiBbXTtcbiAgfVxuXG4gIGFzeW5jIF9vbkR1cGxpY2F0ZUZsb3coeyBkZXRhaWwgfSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9hc2tUb1ZhbGlkYXRlRm9ybXMoKTtcblxuICAgICAgY29uc3QgZmxvd0lkID0gZGV0YWlsLmNvbnRlbnQuX2lkO1xuICAgICAgY29uc3QgeyBwbGFuLCBmbG93cyB9ID0gdGhpcy5fZmluZEZsb3dDb2xsZWN0aW9uKGZsb3dJZCk7XG4gICAgICB0aGlzLl9hZGRGbG93KGZsb3dzLCB0aGlzLl9maW5kRmxvd0J5SWQoZmxvd0lkKSk7XG4gICAgICBpZiAocGxhbiAhPSBudWxsKSB7XG4gICAgICAgIGxldCBwbGFuSW5kZXggPSBudWxsO1xuICAgICAgICB0aGlzLmRlZmluZWRQbGFucy5maW5kKChwLCBpKSA9PiB7XG4gICAgICAgICAgaWYgKHAuaWQgPT09IHBsYW4uaWQpIHtcbiAgICAgICAgICAgIHBsYW5JbmRleCA9IGk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgcGxhbi5mbG93cyA9IGZsb3dzO1xuICAgICAgICB0aGlzLmRlZmluZWRQbGFuc1twbGFuSW5kZXhdLmZsb3dzID0gdGhpcy5fZ2VuZXJhdGVQbGFuRmxvd3NJZChwbGFuLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRGbG93cyhbdGhpcy5kZWZpbmVkUGxhbnNbcGxhbkluZGV4XS5mbG93c1tmbG93cy5sZW5ndGggLSAxXS5faWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2RlZmluaXRpb24uZmxvd3MgPSB0aGlzLl9nZW5lcmF0ZUZsb3dzSWQodGhpcy5fZGVmaW5pdGlvbi5mbG93cyk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW3RoaXMuX2RlZmluaXRpb24uZmxvd3NbdGhpcy5fZGVmaW5pdGlvbi5mbG93cy5sZW5ndGggLSAxXS5faWRdKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9vbkNoYW5nZUZsb3dTdGF0ZSh7IGRldGFpbCB9KSB7XG4gICAgY29uc3QgZmxvdyA9IHRoaXMuX2ZpbmRGbG93QnlJZChkZXRhaWwuY29udGVudC5faWQpO1xuICAgIGZsb3cuZW5hYmxlZCA9IGRldGFpbC5lbmFibGVkO1xuICAgIGZsb3cuX2RpcnR5ID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgYXN5bmMgX29uQWRkRmxvd1BsYW4oeyBkZXRhaWwgfSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9hc2tUb1ZhbGlkYXRlRm9ybXMoKTtcbiAgICAgIHRoaXMuX2FkZEZsb3codGhpcy5kZWZpbmVkUGxhbnNbZGV0YWlsLnBsYW5JbmRleF0uZmxvd3MpO1xuICAgICAgdGhpcy5kZWZpbmVkUGxhbnNbZGV0YWlsLnBsYW5JbmRleF0uZmxvd3MgPSB0aGlzLl9nZW5lcmF0ZVBsYW5GbG93c0lkKHRoaXMuZGVmaW5lZFBsYW5zW2RldGFpbC5wbGFuSW5kZXhdKTtcbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW3RoaXMuZGVmaW5lZFBsYW5zW2RldGFpbC5wbGFuSW5kZXhdLmZsb3dzW3RoaXMuZGVmaW5lZFBsYW5zW2RldGFpbC5wbGFuSW5kZXhdLmZsb3dzLmxlbmd0aCAtIDFdLl9pZF0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX29uQWRkRmxvdygpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fYXNrVG9WYWxpZGF0ZUZvcm1zKCk7XG5cbiAgICAgIHRoaXMuX2FkZEZsb3codGhpcy5fZGVmaW5pdGlvbi5mbG93cyk7XG4gICAgICB0aGlzLl9kZWZpbml0aW9uLmZsb3dzID0gdGhpcy5fZ2VuZXJhdGVGbG93c0lkKHRoaXMuX2RlZmluaXRpb24uZmxvd3MpO1xuICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRGbG93cyhbdGhpcy5fZGVmaW5pdGlvbi5mbG93c1t0aGlzLl9kZWZpbml0aW9uLmZsb3dzLmxlbmd0aCAtIDFdLl9pZF0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgX2FkZEZsb3coY29sbGVjdGlvbiwgZHVwbGljYXRlID0gbnVsbCkge1xuICAgIGNvbnN0IGZsb3cgPVxuICAgICAgZHVwbGljYXRlID09IG51bGxcbiAgICAgICAgPyB0aGlzLl9jcmVhdGVGbG93RnJvbVNjaGVtYSgpXG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4uZHVwbGljYXRlLFxuICAgICAgICAgICAgX2lkOiBudWxsLFxuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIGlkIHRvIGF2b2lkIGlzc3VlIHdpdGggQU0gdGhhdCBwZXJzaXN0cyB0aGUgSURcbiAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgX2RpcnR5OiB0cnVlLFxuICAgICAgICAgIH07XG5cbiAgICBjb2xsZWN0aW9uLnB1c2goZmxvdyk7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgfVxuXG4gIF9jcmVhdGVGbG93RnJvbVNjaGVtYSgpIHtcbiAgICBjb25zdCBuZXdGbG93ID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBwcmU6IFtdLFxuICAgICAgcG9zdDogW10sXG4gICAgICBfZGlydHk6IHRydWUsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl9pbnN0YW50aWF0ZSh0aGlzLmZsb3dTY2hlbWEucHJvcGVydGllcywgbmV3Rmxvdyk7XG4gIH1cblxuICBfaW5zdGFudGlhdGUocHJvcGVydGllc0RlZmluaXRpb24sIGluaXRpYXRvciA9IHt9KSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSB7IC4uLmluaXRpYXRvciB9O1xuXG4gICAgaWYgKHByb3BlcnRpZXNEZWZpbml0aW9uKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSBwcm9wZXJ0aWVzRGVmaW5pdGlvbltrZXldO1xuXG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHByb3BlcnR5W2tleV0gPSB0aGlzLl9pbnN0YW50aWF0ZShlbnRyeS5wcm9wZXJ0aWVzLCAoaW5pdGlhdG9yID0ge30pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnkuZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcHJvcGVydHlba2V5XSA9IGVudHJ5LmRlZmF1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAoZW50cnkudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBwcm9wZXJ0eVtrZXldID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH1cblxuICBfZGVsZXRlRmxvdyhjb2xsZWN0aW9uLCBmbG93KSB7XG4gICAgY29uc3QgaW5kZXggPSBjb2xsZWN0aW9uLmluZGV4T2YoZmxvdyk7XG4gICAgY29sbGVjdGlvbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGNvbnN0IHNlbGVjdGVkRmxvd3MgPSB0aGlzLnNlbGVjdGVkRmxvd3NJZC5maWx0ZXIoKGZsb3dJZCkgPT4gZmxvd0lkICE9PSBmbG93Ll9pZCk7XG4gICAgaWYgKHNlbGVjdGVkRmxvd3MubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKHNlbGVjdGVkRmxvd3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3RGaXJzdEZsb3codHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2NoYW5nZVRhYignZGVzaWduJyk7XG4gICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gIH1cblxuICBfZmluZEZsb3dJbmRleChsaXN0LCBpZCkge1xuICAgIGxldCBpbmRleCA9IG51bGw7XG4gICAgbGlzdC5maW5kKChmLCBpKSA9PiB7XG4gICAgICBpZiAoZi5faWQgPT09IGlkKSB7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYXN5bmMgX29uUmVvcmRlckZsb3dzKHsgZGV0YWlsOiB7IHBsYW4gfSB9KSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2Fza1RvVmFsaWRhdGVGb3JtcygpO1xuICAgICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICAgIGlmIChwbGFuICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgbmV3T3JkZXIgPSB0aGlzLl9nZW5lcmF0ZVBsYW5GbG93c0lkKHBsYW4sIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZsb3dzSWQpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZsb3dzSWQubWFwKChmbG93SWQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9maW5kRmxvd0luZGV4KHBsYW4uZmxvd3MsIGZsb3dJZCk7XG4gICAgICAgICAgICAgIHJldHVybiBpbmRleCAhPSBudWxsID8gbmV3T3JkZXJbaW5kZXhdLl9pZCA6IGZsb3dJZDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcGxhbi5mbG93cyA9IG5ld09yZGVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV3T3JkZXIgPSB0aGlzLl9nZW5lcmF0ZUZsb3dzSWQodGhpcy5fZGVmaW5pdGlvbi5mbG93cywgdHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvd3NJZCkge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmxvd3NJZC5tYXAoKGZsb3dJZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZpbmRGbG93SW5kZXgodGhpcy5fZGVmaW5pdGlvbi5mbG93cywgZmxvd0lkKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGluZGV4ICE9IG51bGwgPyBuZXdPcmRlcltpbmRleF0uX2lkIDogZmxvd0lkO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZWZpbml0aW9uLmZsb3dzID0gbmV3T3JkZXI7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgX29uU2VhcmNoUG9saWN5KHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl9zZWFyY2hQb2xpY3lRdWVyeSA9IGRldGFpbDtcbiAgfVxuXG4gIF9vbkNsZWFyUG9saWN5KCkge1xuICAgIHRoaXMuX3NlYXJjaFBvbGljeVF1ZXJ5ID0gbnVsbDtcbiAgfVxuXG4gIF9vblNlYXJjaEZsb3dzKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl9zZWFyY2hGbG93UXVlcnkgPSBkZXRhaWw7XG4gIH1cblxuICBfb25DbGVhckZsb3dzKCkge1xuICAgIHRoaXMuX3NlYXJjaEZsb3dRdWVyeSA9IG51bGw7XG4gIH1cblxuICBhc3luYyBfb25SZXNldEFsbCgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fY2xvc2VGbG93U3RlcEZvcm0oKTtcbiAgICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZXBDbG9uZSh0aGlzLl9pbml0aWFsRGVmaW5pdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgX2ZpbHRlck5vdFZhbGlkU3RlcChzdGVwKSB7XG4gICAgcmV0dXJuIHN0ZXAuX25ldyAhPT0gdHJ1ZTtcbiAgfVxuXG4gIF9yZW1vdmVQcml2YXRlUHJvcGVydGllcyhvKSB7XG4gICAgY29uc3QgY29weSA9IHsgLi4ubyB9O1xuICAgIE9iamVjdC5rZXlzKG8pXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5zdGFydHNXaXRoKCdfJykpXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGRlbGV0ZSBjb3B5W2tleV07XG4gICAgICB9KTtcbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIF9zdWJtaXRPckNvbmZpcm1Gb3JtcygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybScpXVxuICAgICAgLmZpbHRlcigoZm9ybSkgPT4ge1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gZm9ybS5pc1ZhbGlkKCk7XG4gICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgaWYgKGZvcm0uZGlydHkpIHtcbiAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNWYWxpZDtcbiAgICAgIH0pXG4gICAgICAubWFwKChmb3JtKSA9PiBmb3JtLmNvbmZpcm0oKSk7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzRWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LXByb3BlcnRpZXMnKTtcbiAgfVxuXG4gIGFzeW5jIF9jaGVja0N1cnJlbnRGbG93U3RlcCgpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEZsb3dTdGVwICYmIHRoaXMuc2VsZWN0ZWRGbG93c0lkKSB7XG4gICAgICBjb25zdCBjbG9zZVByb21pc2VzID0gdGhpcy5zZWxlY3RlZEZsb3dzSWRcbiAgICAgICAgLm1hcCgoZmxvd0lkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmxvdyA9IHRoaXMuX2ZpbmRGbG93QnlJZChmbG93SWQpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gWy4uLmZsb3cucHJlLCAuLi5mbG93LnBvc3RdLmZpbmQoKHN0ZXApID0+IHN0ZXAuX2lkID09PSB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuc3RlcC5faWQpO1xuICAgICAgICAgIGlmIChjdXJyZW50U3RlcCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2xvc2VGbG93U3RlcEZvcm0odHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChwKSA9PiBwICE9PSBudWxsKTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChjbG9zZVByb21pc2VzKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgc2F2ZWQoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXJ0eSkge1xuICAgICAgdGhpcy5faW5pdGlhbERlZmluaXRpb24gPSBkZWVwQ2xvbmUodGhpcy5fZGVmaW5pdGlvblNhdmVkKTtcbiAgICAgIHRoaXMuX2RlZmluaXRpb24gPSBkZWVwQ2xvbmUodGhpcy5fZGVmaW5pdGlvblNhdmVkKTtcbiAgICAgIHRoaXMuX2RlZmluaXRpb25TYXZlZCA9IG51bGw7XG4gICAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoZWNrQ3VycmVudEZsb3dTdGVwKCk7XG4gICAgICB0aGlzLmRlZmluZWRQbGFucy5mb3JFYWNoKChwbGFuKSA9PiB7XG4gICAgICAgIHBsYW4uZmxvd3MuZm9yRWFjaCgoZmxvdykgPT4gKGZsb3cuX2RpcnR5ID0gZmFsc2UpKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZWZpbmVkRmxvd3MuZm9yRWFjaCgoZmxvdykgPT4gKGZsb3cuX2RpcnR5ID0gZmFsc2UpKTtcbiAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4oKS5mb3JFYWNoKChlKSA9PiBlLnJlcXVlc3RVcGRhdGUoKSk7XG4gICAgfVxuICB9XG5cbiAgX2J1aWxkRGVmaW5pdGlvblRvU2F2ZSgpIHtcbiAgICAvLyBDb3B5IGRlZmluaXRpb24gYW5kIHJlbW92ZSBpbnZhbGlkIHN0ZXBcbiAgICAvLyBLZWVwIHByaXZhdGUgcHJvcGVydGllcyBsaWtlIF9pZCBhbmQgb3RoZXJzIHN0dWZmIHVzZWZ1bCBmb3IgcmVuZGVyXG4gICAgY29uc3QgZmxvd3MgPSB0aGlzLl9kZWZpbml0aW9uLmZsb3dzLm1hcCgoZmxvdykgPT4ge1xuICAgICAgZmxvdy5wcmUgPSBmbG93LnByZS5maWx0ZXIodGhpcy5fZmlsdGVyTm90VmFsaWRTdGVwKTtcbiAgICAgIGZsb3cucG9zdCA9IGZsb3cucG9zdC5maWx0ZXIodGhpcy5fZmlsdGVyTm90VmFsaWRTdGVwKTtcbiAgICAgIHJldHVybiBmbG93O1xuICAgIH0pO1xuXG4gICAgbGV0IGRlZmluaXRpb24gPSB7IC4uLnRoaXMuX2RlZmluaXRpb24sIGZsb3dzIH07XG5cbiAgICBpZiAodGhpcy5fZGVmaW5pdGlvbi5wbGFucyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBwbGFucyA9IHRoaXMuX2RlZmluaXRpb24ucGxhbnMubWFwKChwbGFuKSA9PiB7XG4gICAgICAgIGNvbnN0IGZsb3dzID0gcGxhbi5mbG93cy5tYXAoKGZsb3cpID0+IHtcbiAgICAgICAgICBmbG93LnByZSA9IGZsb3cucHJlLmZpbHRlcih0aGlzLl9maWx0ZXJOb3RWYWxpZFN0ZXApO1xuICAgICAgICAgIGZsb3cucG9zdCA9IGZsb3cucG9zdC5maWx0ZXIodGhpcy5fZmlsdGVyTm90VmFsaWRTdGVwKTtcbiAgICAgICAgICByZXR1cm4gZmxvdztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IC4uLnBsYW4sIGZsb3dzIH07XG4gICAgICB9KTtcbiAgICAgIGRlZmluaXRpb24gPSB7IC4uLmRlZmluaXRpb24sIHBsYW5zIH07XG4gICAgfVxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgX2J1aWxkRGVmaW5pdGlvblRvU2VuZChkZWZpbml0aW9uVG9TYXZlKSB7XG4gICAgLy8gQ29weSBkZWZpbml0aW9uIGFuZCByZW1vdmUgYWxsIHByaXZhdGUgcHJvcGVydGllc1xuICAgIGNvbnN0IGZsb3dzID0gZGVmaW5pdGlvblRvU2F2ZS5mbG93cy5tYXAoKGYpID0+IHtcbiAgICAgIGNvbnN0IGZsb3cgPSB0aGlzLl9yZW1vdmVQcml2YXRlUHJvcGVydGllcyhmKTtcbiAgICAgIGZsb3cucHJlID0gZmxvdy5wcmUubWFwKHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKTtcbiAgICAgIGZsb3cucG9zdCA9IGZsb3cucG9zdC5tYXAodGhpcy5fcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXMpO1xuICAgICAgcmV0dXJuIGZsb3c7XG4gICAgfSk7XG5cbiAgICBsZXQgZGVmaW5pdGlvbiA9IHsgLi4udGhpcy5fZGVmaW5pdGlvbiwgZmxvd3MgfTtcbiAgICBpZiAodGhpcy5fZGVmaW5pdGlvbi5wbGFucyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBwbGFucyA9IGRlZmluaXRpb25Ub1NhdmUucGxhbnMubWFwKChwbGFuKSA9PiB7XG4gICAgICAgIGNvbnN0IGZsb3dzID0gcGxhbi5mbG93cy5tYXAoKGYpID0+IHtcbiAgICAgICAgICBjb25zdCBmbG93ID0gdGhpcy5fcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXMoZik7XG4gICAgICAgICAgZmxvdy5wcmUgPSBmbG93LnByZS5tYXAodGhpcy5fcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXMpO1xuICAgICAgICAgIGZsb3cucG9zdCA9IGZsb3cucG9zdC5tYXAodGhpcy5fcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXMpO1xuICAgICAgICAgIHJldHVybiBmbG93O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgLi4ucGxhbiwgZmxvd3MgfTtcbiAgICAgIH0pO1xuICAgICAgZGVmaW5pdGlvbiA9IHsgLi4uZGVmaW5pdGlvbiwgcGxhbnMgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZGVmaW5pdGlvbi5wcm9wZXJ0aWVzICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLl9kZWZpbml0aW9uLnByb3BlcnRpZXMubWFwKHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKTtcbiAgICAgIGRlZmluaXRpb24gPSB7IC4uLmRlZmluaXRpb24sIHByb3BlcnRpZXMgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZGVmaW5pdGlvbi5yZXNvdXJjZXMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5fZGVmaW5pdGlvbi5yZXNvdXJjZXMubWFwKHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKTtcbiAgICAgIGRlZmluaXRpb24gPSB7IC4uLmRlZmluaXRpb24sIHJlc291cmNlcyB9O1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbml0aW9uO1xuICB9XG5cbiAgX29uU2F2ZUFsbCgpIHtcbiAgICBpZiAodGhpcy5oYXNQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmdldFByb3BlcnRpZXNFbGVtZW50KCkuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgUHJvbWlzZS5hbGwodGhpcy5fc3VibWl0T3JDb25maXJtRm9ybXMoKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGVmaW5pdGlvblNhdmVkID0gdGhpcy5fYnVpbGREZWZpbml0aW9uVG9TYXZlKCk7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzLl9idWlsZERlZmluaXRpb25Ub1NlbmQodGhpcy5fZGVmaW5pdGlvblNhdmVkKTtcbiAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnc2F2ZScsIHsgZGVmaW5pdGlvbiwgc2VydmljZXM6IHRoaXMuc2VydmljZXMgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW3BvbGljeS1zdHVkaW9dIEVycm9yIG9uIHNhdmVgLCBlcnIpO1xuICAgICAgfSk7XG4gIH1cblxuICBfb25EZWJ1ZyhyZXF1ZXN0RXZlbnQpIHtcbiAgICBpZiAodGhpcy5oYXNQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmdldFByb3BlcnRpZXNFbGVtZW50KCkuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgUHJvbWlzZS5hbGwodGhpcy5fc3VibWl0T3JDb25maXJtRm9ybXMoKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXMuX2J1aWxkRGVmaW5pdGlvblRvU2VuZCh0aGlzLl9idWlsZERlZmluaXRpb25Ub1NhdmUoKSk7XG4gICAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2RlYnVnJywgeyBkZWZpbml0aW9uLCBzZXJ2aWNlczogdGhpcy5zZXJ2aWNlcywgcmVxdWVzdDogcmVxdWVzdEV2ZW50LmRldGFpbC5yZXF1ZXN0IH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtwb2xpY3ktc3R1ZGlvXSBFcnJvciBvbiBkZWJ1Z2AsIGVycik7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZEZsb3dzKCkge1xuICAgIGlmICh0aGlzLl9mbG93RmlsdGVyLmxlbmd0aCA9PT0gMCB8fCB0aGlzLl9mbG93RmlsdGVyLmluY2x1ZGVzKCdhcGknKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmaW5lZEZsb3dzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZFBsYW5zKCkge1xuICAgIGlmICh0aGlzLl9mbG93RmlsdGVyLmxlbmd0aCA9PT0gMCB8fCB0aGlzLl9mbG93RmlsdGVyLmluY2x1ZGVzKCdwbGFuJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmluZWRQbGFucztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBfb25GaWx0ZXJGbG93cyh7IGRldGFpbCB9KSB7XG4gICAgaWYgKHRoaXMuX2Zsb3dGaWx0ZXIuaW5jbHVkZXMoZGV0YWlsLmlkKSkge1xuICAgICAgdGhpcy5fZmxvd0ZpbHRlciA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9mbG93RmlsdGVyID0gW2RldGFpbC5pZF07XG4gICAgfVxuICB9XG5cbiAgX2dldEZpbHRlcmVkUG9saWNpZXMoKSB7XG4gICAgaWYgKHRoaXMuX3BvbGljeUZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb2xpY2llcy5maWx0ZXIoKHBvbGljeSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChwb2xpY3kub25SZXF1ZXN0ICYmIHRoaXMuX3BvbGljeUZpbHRlci5pbmNsdWRlcygnb25SZXF1ZXN0JykpIHx8IChwb2xpY3kub25SZXNwb25zZSAmJiB0aGlzLl9wb2xpY3lGaWx0ZXIuaW5jbHVkZXMoJ29uUmVzcG9uc2UnKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wb2xpY2llcztcbiAgfVxuXG4gIF9vbkZpbHRlclBvbGljaWVzKHsgZGV0YWlsIH0pIHtcbiAgICBpZiAodGhpcy5fcG9saWN5RmlsdGVyLmluY2x1ZGVzKGRldGFpbC5pZCkpIHtcbiAgICAgIHRoaXMuX3BvbGljeUZpbHRlciA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wb2xpY3lGaWx0ZXIgPSBbZGV0YWlsLmlkXTtcbiAgICB9XG4gIH1cblxuICBfcmVuZGVyRGVzaWduKHJlYWRvbmx5TW9kZSkge1xuICAgIHJldHVybiBodG1sYCA8ZGl2IGlkPVwiZGVzaWduXCIgc2xvdD1cImNvbnRlbnRcIiBjbGFzcz1cImRlc2lnblwiPlxuICAgICAgPGd2LXJlc2l6YWJsZS12aWV3cyBuby1vdmVyZmxvdz5cbiAgICAgICAgPGRpdiBzbG90PVwidG9wXCI+JHt0aGlzLl9yZW5kZXJGbG93KDAsIHRydWUsIHJlYWRvbmx5TW9kZSl9PC9kaXY+XG5cbiAgICAgICAgPGRpdiBzbG90PVwiYm90dG9tXCI+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJGbG93KDEsIGZhbHNlLCByZWFkb25seU1vZGUpfSAke3RoaXMuX3JlbmRlclBvbGljeShyZWFkb25seU1vZGUpfSAke3RoaXMuX3JlbmRlckZsb3dGb3JtKHJlYWRvbmx5TW9kZSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9ndi1yZXNpemFibGUtdmlld3M+XG4gICAgICAke3JlYWRvbmx5TW9kZSAhPT0gdHJ1ZVxuICAgICAgICA/IGh0bWxgPGd2LXBvbGljeS1zdHVkaW8tbWVudVxuICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1tZW51XCJcbiAgICAgICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICAgICAgLnBvbGljaWVzPVwiJHt0aGlzLl9nZXRGaWx0ZXJlZFBvbGljaWVzKCl9XCJcbiAgICAgICAgICAgIC5zZWxlY3RlZElkcz1cIiR7W3RoaXMuX2N1cnJlbnRQb2xpY3lJZF19XCJcbiAgICAgICAgICAgIC5xdWVyeT1cIiR7dGhpcy5fc2VhcmNoUG9saWN5UXVlcnl9XCJcbiAgICAgICAgICAgID9oYXMtcG9saWN5LWZpbHRlcj1cIiR7dGhpcy5fcG9saWN5RmlsdGVyT3B0aW9ucyAhPSBudWxsfVwiXG4gICAgICAgICAgICA/cmVhZG9ubHk9XCIke3JlYWRvbmx5TW9kZX1cIlxuICAgICAgICAgICAgQGd2LXBvbGljeS1zdHVkaW8tbWVudTp0YXJnZXQtcG9saWN5PVwiJHt0aGlzLl9vblRhcmdldFBvbGljeX1cIlxuICAgICAgICAgICAgQGd2LXBvbGljeS1zdHVkaW8tbWVudTpmZXRjaC1kb2N1bWVudGF0aW9uPVwiJHt0aGlzLl9vbk9wZW5Eb2N1bWVudGF0aW9uRnJvbU1lbnV9XCJcbiAgICAgICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6ZHJhZ2VuZC1wb2xpY3k9XCIke3RoaXMuX29uRHJhZ0VuZFBvbGljeX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgc2xvdD1cImhlYWRlclwiIGNsYXNzPVwic2VhcmNoLXBvbGljaWVzXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5fcG9saWN5RmlsdGVyT3B0aW9ucyAhPSBudWxsXG4gICAgICAgICAgICAgICAgPyBodG1sYDxndi1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgICAgICAgICAgICAgIC5vcHRpb25zPVwiJHt0aGlzLl9wb2xpY3lGaWx0ZXJPcHRpb25zfVwiXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZT1cIiR7dGhpcy5fcG9saWN5RmlsdGVyfVwiXG4gICAgICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgICAgIEBndi1vcHRpb246c2VsZWN0PVwiJHt0aGlzLl9vbkZpbHRlclBvbGljaWVzfVwiXG4gICAgICAgICAgICAgICAgICA+PC9ndi1vcHRpb24+YFxuICAgICAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgICAgIDxndi1pbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwic2VhcmNoLXBvbGljeVwiXG4gICAgICAgICAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgcG9saWNpZXMgKFNoaWZ0ICsgQ3RybCArIFNwYWNlKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgICAgICBAZ3YtaW5wdXQ6aW5wdXQ9XCIke3RoaXMuX29uU2VhcmNoUG9saWN5fVwiXG4gICAgICAgICAgICAgICAgQGd2LWlucHV0OmNsZWFyPVwiJHt0aGlzLl9vbkNsZWFyUG9saWN5fVwiXG4gICAgICAgICAgICAgID48L2d2LWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9ndi1wb2xpY3ktc3R1ZGlvLW1lbnU+YFxuICAgICAgICA6ICcnfVxuICAgIDwvZGl2PmA7XG4gIH1cblxuICBfcmVuZGVyRGVidWcoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmRlYnVnUmVzcG9uc2UgPyB0aGlzLmRlYnVnUmVzcG9uc2UucmVzcG9uc2UgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaXNMb2FkaW5nID0gdGhpcy5kZWJ1Z1Jlc3BvbnNlID8gdGhpcy5kZWJ1Z1Jlc3BvbnNlLmlzTG9hZGluZyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5kZWJ1Z1Jlc3BvbnNlICYmIHRoaXMuZGVidWdSZXNwb25zZS5yZXF1ZXN0ID8gdGhpcy5kZWJ1Z1Jlc3BvbnNlLnJlcXVlc3QucGF0aCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmRlYnVnUmVzcG9uc2UgJiYgdGhpcy5kZWJ1Z1Jlc3BvbnNlLnJlcXVlc3QgPyB0aGlzLmRlYnVnUmVzcG9uc2UucmVxdWVzdC5tZXRob2QgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGh0bWxgPGd2LWh0dHAtY2xpZW50XG4gICAgICBpZD1cImRlYnVnXCJcbiAgICAgIHNsb3Q9XCJjb250ZW50XCJcbiAgICAgIGNsYXNzPVwiZGVidWdcIlxuICAgICAgQGd2LWh0dHAtY2xpZW50OnNlbmQ9XCIke3RoaXMuX29uRGVidWd9XCJcbiAgICAgIC5yZXNwb25zZT1cIiR7cmVzcG9uc2V9XCJcbiAgICAgIC5wYXRoPVwiJHtwYXRofVwiXG4gICAgICAubWV0aG9kPVwiJHttZXRob2R9XCJcbiAgICAgID9sb2FkaW5nPVwiJHtpc0xvYWRpbmd9XCJcbiAgICA+XG4gICAgPC9ndi1odHRwLWNsaWVudD5gO1xuICB9XG5cbiAgX3JlbmRlckNvbmZpZ3VyYXRpb25Gb3JtKHJlYWRvbmx5TW9kZSkge1xuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25TY2hlbWEpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGRlZXBDbG9uZSh0aGlzLl9kZWZpbml0aW9uKTtcbiAgICAgIHJldHVybiBodG1sYCA8ZGl2IGlkPVwic2V0dGluZ3NcIiBzbG90PVwiY29udGVudFwiIGNsYXNzPVwiYXBpLXNldHRpbmdzXCIgQGRyYWdvdmVyPVwiJHt0aGlzLl9vbkRlc2lnbn1cIj5cbiAgICAgICAgPGd2LXNjaGVtYS1mb3JtXG4gICAgICAgICAgLnNjaGVtYT1cIiR7dGhpcy5jb25maWd1cmF0aW9uU2NoZW1hfVwiXG4gICAgICAgICAgaWQ9XCJhcGktc2V0dGluZ3MtZm9ybVwiXG4gICAgICAgICAgLnZhbHVlcz1cIiR7dmFsdWVzfVwiXG4gICAgICAgICAgaGFzLWhlYWRlclxuICAgICAgICAgIGhhcy1mb290ZXJcbiAgICAgICAgICBzY3JvbGxhYmxlXG4gICAgICAgICAgP3JlYWRvbmx5PVwiJHtyZWFkb25seU1vZGV9XCJcbiAgICAgICAgICBAZ3Ytc2NoZW1hLWZvcm06Y2FuY2VsPVwiJHt0aGlzLl9vbkNhbmNlbEZsb3dNb2RlfVwiXG4gICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOnN1Ym1pdD1cIiR7dGhpcy5fb25TdWJtaXRGbG93TW9kZX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHshdGhpcy5jb25maWd1cmF0aW9uSW5mb3JtYXRpb25cbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogaHRtbGBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpLXNldHRpbmdzLWluZm9ybWF0aW9uXCIgc2xvdD1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8Z3YtaWNvbiBjbGFzcz1cImFwaS1zZXR0aW5ncy1pbmZvcm1hdGlvbl9faWNvblwiIHRpdGxlPVwiSW5mb1wiIHNoYXBlPVwiY29kZTppbmZvXCI+PC9ndi1pY29uPlxuICAgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGUgY2xhc3M9XCJhcGktc2V0dGluZ3MtaW5mb3JtYXRpb25fX2Jsb2NrcXVvdGVcIj4ke3RoaXMuY29uZmlndXJhdGlvbkluZm9ybWF0aW9ufTwvYmxvY2txdW90ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgPC9ndi1zY2hlbWEtZm9ybT5cbiAgICAgIDwvZGl2PmA7XG4gICAgfVxuICAgIHJldHVybiBodG1sYGA7XG4gIH1cblxuICBfcmVuZGVyRmxvd0Zvcm0ocmVhZG9ubHlNb2RlKSB7XG4gICAgaWYgKHRoaXMuZmxvd1NjaGVtYSAmJiB0aGlzLl9mbG93U3RlcFNjaGVtYSA9PSBudWxsICYmIHRoaXMuZG9jdW1lbnRhdGlvbiA9PSBudWxsICYmIHRoaXMuc2VsZWN0ZWRGbG93c0lkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmxvdyA9IHRoaXMuZ2V0U2VsZWN0ZWRGbG93KCk7XG4gICAgICBpZiAoZmxvdykge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBkZWVwQ2xvbmUoZmxvdyk7XG4gICAgICAgIHJldHVybiBodG1sYDxkaXYgc2xvdD1cImNvbnRlbnRcIiBjbGFzcz1cImZsb3ctc2V0dGluZ3NcIj5cbiAgICAgICAgICA8Z3Ytc2NoZW1hLWZvcm1cbiAgICAgICAgICAgIC5zY2hlbWE9XCIke3RoaXMuZmxvd1NjaGVtYX1cIlxuICAgICAgICAgICAgaWQ9XCJzZXR0aW5ncy1mb3JtXCJcbiAgICAgICAgICAgIC52YWx1ZXM9XCIke3ZhbHVlc31cIlxuICAgICAgICAgICAgaGFzLWhlYWRlclxuICAgICAgICAgICAgc2Nyb2xsYWJsZVxuICAgICAgICAgICAgP3JlYWRvbmx5PVwiJHtyZWFkb25seU1vZGV9XCJcbiAgICAgICAgICAgIEBndi1zY2hlbWEtZm9ybTpjYW5jZWw9XCIke3RoaXMuX29uQ2FuY2VsRmxvd31cIlxuICAgICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOnN1Ym1pdD1cIiR7dGhpcy5fb25TdWJtaXRGbG93fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBzbG90PVwidGl0bGVcIiBjbGFzcz1cImZsb3ctc3RlcF9fZm9ybS10aXRsZVwiPkZsb3cgY29uZmlndXJhdGlvbjwvZGl2PlxuICAgICAgICAgIDwvZ3Ytc2NoZW1hLWZvcm0+XG4gICAgICAgIDwvZGl2PmA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX29uUmVzb3VyY2VzQ2hhbmdlKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLmRlZmluaXRpb24ucmVzb3VyY2VzID0gZGV0YWlsLnJlc291cmNlcztcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgX29uUHJvcGVydGllc0NoYW5nZSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5kZWZpbml0aW9uLnByb3BlcnRpZXMgPSBkZXRhaWwucHJvcGVydGllcztcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgX29uU2F2ZVByb3ZpZGVyKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLnNlcnZpY2VzWydkeW5hbWljLXByb3BlcnR5J10gPSBkZXRhaWwucHJvdmlkZXI7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIF9vblN3aXRjaEVuY3J5cHRlZFByb3BlcnR5KHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHJlYWRvbmx5TW9kZSA9IHRoaXMuX2dldFJlYWRvbmx5TW9kZUZvckRlc2lnbigpO1xuXG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGd2LXBvbGljeS1zdHVkaW8tbWVudVxuICAgICAgICBjbGFzcz1cImxlZnQtbWVudVwiXG4gICAgICAgIC5hcGktbmFtZT1cIiR7dGhpcy5fZGVmaW5pdGlvbi5uYW1lfVwiXG4gICAgICAgIC5mbG93cz1cIiR7dGhpcy5maWx0ZXJlZEZsb3dzfVwiXG4gICAgICAgIC5wbGFucz1cIiR7dGhpcy5maWx0ZXJlZFBsYW5zfVwiXG4gICAgICAgIC5zZWxlY3RlZElkcz1cIiR7dGhpcy5zZWxlY3RlZEZsb3dzSWR9XCJcbiAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgID9zb3J0YWJsZT1cIiR7dGhpcy5zb3J0YWJsZSAmJiB0aGlzLnJlYWRvbmx5ICE9PSB0cnVlfVwiXG4gICAgICAgID9yZWFkb25seT1cIiR7dGhpcy5yZWFkb25seX1cIlxuICAgICAgICA/cmVhZG9ubHlQbGFucz1cIiR7dGhpcy5yZWFkb25seVBsYW5zfVwiXG4gICAgICAgIGZsb3dzLXRpdGxlPVwiJHt0aGlzLmZsb3dzVGl0bGV9XCJcbiAgICAgICAgLnF1ZXJ5PVwiJHt0aGlzLl9zZWFyY2hGbG93UXVlcnl9XCJcbiAgICAgICAgP2Nhbi1hZGQ9XCIke3RoaXMuY2FuQWRkICYmICF0aGlzLnJlYWRvbmx5fVwiXG4gICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6cmVvcmRlci1mbG93cz1cIiR7dGhpcy5fb25SZW9yZGVyRmxvd3N9XCJcbiAgICAgICAgQGd2LXBvbGljeS1zdHVkaW8tbWVudTpjaGFuZ2UtZmxvdy1zdGF0ZT1cIiR7dGhpcy5fb25DaGFuZ2VGbG93U3RhdGV9XCJcbiAgICAgICAgQGd2LXBvbGljeS1zdHVkaW8tbWVudTphZGQtZmxvdz1cIiR7dGhpcy5fb25BZGRGbG93fVwiXG4gICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6YWRkLWZsb3ctcGxhbj1cIiR7dGhpcy5fb25BZGRGbG93UGxhbn1cIlxuICAgICAgICBAZ3YtcG9saWN5LXN0dWRpby1tZW51OmRlbGV0ZS1mbG93PVwiJHt0aGlzLl9vbkRlbGV0ZUZsb3d9XCJcbiAgICAgICAgQGd2LXBvbGljeS1zdHVkaW8tbWVudTpkdXBsaWNhdGUtZmxvdz1cIiR7dGhpcy5fb25EdXBsaWNhdGVGbG93fVwiXG4gICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6c2VsZWN0LWZsb3dzPVwiJHt0aGlzLl9vblNlbGVjdEZsb3dzfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc2xvdD1cImhlYWRlclwiIGNsYXNzPVwiaGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke3RoaXMuX2RlZmluaXRpb24ubmFtZX08L2Rpdj5cbiAgICAgICAgICAke3RoaXMuX2Zsb3dGaWx0ZXJPcHRpb25zICE9IG51bGxcbiAgICAgICAgICAgID8gaHRtbGA8Z3Ytb3B0aW9uXG4gICAgICAgICAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgICAgICAgICAgLm9wdGlvbnM9XCIke3RoaXMuX2Zsb3dGaWx0ZXJPcHRpb25zfVwiXG4gICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICBvdXRsaW5lZFxuICAgICAgICAgICAgICAgIC52YWx1ZT1cIiR7dGhpcy5fZmxvd0ZpbHRlcn1cIlxuICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgQGd2LW9wdGlvbjpzZWxlY3Q9XCIke3RoaXMuX29uRmlsdGVyRmxvd3N9XCJcbiAgICAgICAgICAgICAgPjwvZ3Ytb3B0aW9uPmBcbiAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgPGd2LWlucHV0XG4gICAgICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCJcbiAgICAgICAgICAgIGlkPVwic2VhcmNoLWZsb3dcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgZmxvd3MgKEN0cmwgKyBTcGFjZSlcIlxuICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgQGd2LWlucHV0OmlucHV0PVwiJHt0aGlzLl9vblNlYXJjaEZsb3dzfVwiXG4gICAgICAgICAgICBAZ3YtaW5wdXQ6Y2xlYXI9XCIke3RoaXMuX29uQ2xlYXJGbG93c31cIlxuICAgICAgICAgID48L2d2LWlucHV0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICAke3RoaXMucmVhZG9ubHkgIT09IHRydWVcbiAgICAgICAgICA/IGh0bWxgIDxkaXYgc2xvdD1cImZvb3RlclwiIGNsYXNzPVwiZm9vdGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWxhcmdlXCJcbiAgICAgICAgICAgICAgICAuZGlzYWJsZWQ9XCIkeyF0aGlzLmlzRGlydHkgfHwgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICAgICAgICAgIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uU2F2ZUFsbH1cIlxuICAgICAgICAgICAgICAgID5TYXZlPC9ndi1idXR0b25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Z3YtYnV0dG9uIGxpbmsgLmRpc2FibGVkPVwiJHshdGhpcy5pc0RpcnR5IHx8IHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCIgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25SZXNldEFsbH1cIlxuICAgICAgICAgICAgICAgID5SZXNldDwvZ3YtYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICA6ICcnfVxuICAgICAgPC9ndi1wb2xpY3ktc3R1ZGlvLW1lbnU+XG5cbiAgICAgIDxndi10YWJzXG4gICAgICAgIC52YWx1ZT1cIiR7dGhpcy50YWJJZH1cIlxuICAgICAgICAub3B0aW9ucz1cIiR7dGhpcy5fdGFic31cIlxuICAgICAgICAuZGlzYWJsZWQ9XCIke3RoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCJcbiAgICAgICAgQGd2LXRhYnM6Y2hhbmdlPVwiJHt0aGlzLl9vbkNoYW5nZVRhYn1cIlxuICAgICAgICAudmFsaWRhdG9yPVwiJHt0aGlzLl9jaGFuZ2VUYWJWYWxpZGF0b3IuYmluZCh0aGlzKX1cIlxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckRlc2lnbihyZWFkb25seU1vZGUpfSAke3RoaXMuX3JlbmRlckNvbmZpZ3VyYXRpb25Gb3JtKHJlYWRvbmx5TW9kZSl9ICR7dGhpcy5fcmVuZGVyRGVidWcoKX1cbiAgICAgICAgPGd2LXByb3BlcnRpZXNcbiAgICAgICAgICBpZD1cInByb3BlcnRpZXNcIlxuICAgICAgICAgIHNsb3Q9XCJjb250ZW50XCJcbiAgICAgICAgICBjbGFzcz1cInByb3BlcnRpZXNcIlxuICAgICAgICAgIC5wcm92aWRlcj1cIiR7dGhpcy5zZXJ2aWNlc1snZHluYW1pYy1wcm9wZXJ0eSddfVwiXG4gICAgICAgICAgQGd2LXByb3BlcnRpZXM6Y2hhbmdlPVwiJHt0aGlzLl9vblByb3BlcnRpZXNDaGFuZ2V9XCJcbiAgICAgICAgICBAZ3YtcHJvcGVydGllczpzYXZlLXByb3ZpZGVyPVwiJHt0aGlzLl9vblNhdmVQcm92aWRlcn1cIlxuICAgICAgICAgIEBndi1wcm9wZXJ0aWVzOnN3aXRjaC1lbmNyeXB0ZWQ9XCIke3RoaXMuX29uU3dpdGNoRW5jcnlwdGVkUHJvcGVydHl9XCJcbiAgICAgICAgICA/cmVhZG9ubHk9XCIke3JlYWRvbmx5TW9kZX1cIlxuICAgICAgICAgIGVuY3J5cHRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgLnByb3BlcnRpZXM9XCIke3RoaXMuZGVmaW5lZFByb3BlcnRpZXN9XCJcbiAgICAgICAgICAucHJvdmlkZXJzPVwiJHt0aGlzLnByb3BlcnR5UHJvdmlkZXJzfVwiXG4gICAgICAgICAgLmR5bmFtaWNQcm9wZXJ0eVNjaGVtYT1cIiR7dGhpcy5keW5hbWljUHJvcGVydHlTY2hlbWF9XCJcbiAgICAgICAgPjwvZ3YtcHJvcGVydGllcz5cbiAgICAgICAgPGd2LXJlc291cmNlc1xuICAgICAgICAgIGlkPVwicmVzb3VyY2VzXCJcbiAgICAgICAgICBzbG90PVwiY29udGVudFwiXG4gICAgICAgICAgY2xhc3M9XCJyZXNvdXJjZXNcIlxuICAgICAgICAgIEBndi1yZXNvdXJjZXM6Y2hhbmdlPVwiJHt0aGlzLl9vblJlc291cmNlc0NoYW5nZX1cIlxuICAgICAgICAgID9yZWFkb25seT1cIiR7cmVhZG9ubHlNb2RlfVwiXG4gICAgICAgICAgLnJlc291cmNlcz1cIiR7dGhpcy5kZWZpbmVkUmVzb3VyY2VzfVwiXG4gICAgICAgICAgLnR5cGVzPVwiJHt0aGlzLnJlc291cmNlVHlwZXN9XCJcbiAgICAgICAgPjwvZ3YtcmVzb3VyY2VzPlxuICAgICAgPC9ndi10YWJzPlxuICAgIDwvZGl2PmA7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBkZXNpZ24gdmlldyBzaG91bGQgYmUgaW4gcmVhZG9ubHkgbW9kZSBvciBub3RcbiAgICogSXQgaXMgaW4gcmVhZG9ubHkgbW9kZSBpZjpcbiAgICogIHRoZSByZWFkb25seSBhdHRyaWJ1dGUgaXMgc2V0IHRvIHRydWVcbiAgICogIE9SXG4gICAqICB0aGUgbWFpbiBzZWxlY3RlZCBmbG93IGJlbG9uZ3MgdG8gYSBwbGFuIGFuZCB0aGUgcmVhZG9ubHktcGxhbnMgYXR0cmlidXRlIGlzIHNldCB0byB0cnVlXG4gICAqICBPUlxuICAgKiAgdGhlIHNlY29uZCBmbG93IGZvciBjb21wYXJpc29uIGJlbG9uZ3MgdG8gYSBwbGFuIGFuZCB0aGUgcmVhZG9ubHktcGxhbnMgYXR0cmlidXRlIGlzIHNldCB0byB0cnVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufCp8e3R5cGU6IEJvb2xlYW5Db25zdHJ1Y3Rvcn18e2F0dHJpYnV0ZTogc3RyaW5nLCB0eXBlOiBCb29sZWFuQ29uc3RydWN0b3J9fHt0eXBlOiAqfXx7YXR0cmlidXRlOiBzdHJpbmcsIHR5cGU6ICp9fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2dldFJlYWRvbmx5TW9kZUZvckRlc2lnbigpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZmxvdyA9IHRoaXMuZ2V0U2VsZWN0ZWRGbG93KDApO1xuICAgIGlmICghZmxvdykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGxhbjogZmxvd1BsYW4gfSA9IHRoaXMuX2ZpbmRGbG93Q29sbGVjdGlvbihmbG93Ll9pZCk7XG4gICAgY29uc3QgcmVhZG9ubHlNb2RlID0gZmxvd1BsYW4gJiYgdGhpcy5yZWFkb25seVBsYW5zO1xuICAgIGlmIChyZWFkb25seU1vZGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBhcmVkRmxvdyA9IHRoaXMuZ2V0U2VsZWN0ZWRGbG93KDEpO1xuICAgIGlmICghY29tcGFyZWRGbG93KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgeyBwbGFuOiBjb21wYXJlZEZsb3dQbGFuIH0gPSB0aGlzLl9maW5kRmxvd0NvbGxlY3Rpb24oY29tcGFyZWRGbG93Ll9pZCk7XG4gICAgcmV0dXJuIGNvbXBhcmVkRmxvd1BsYW4gJiYgdGhpcy5yZWFkb25seVBsYW5zO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXBvbGljeS1zdHVkaW8nLCBHdlBvbGljeVN0dWRpbyk7XG4iXX0=
|
|
1755
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL3BvbGljeS1zdHVkaW8vZ3YtcG9saWN5LXN0dWRpby5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsIm1ldGhvZHMiLCJkaXNwYXRjaEN1c3RvbUV2ZW50IiwiZW1wdHkiLCJjYWNoZSIsImRlZXBDbG9uZSIsImRlZXBFcXVhbCIsIktleWJvYXJkRWxlbWVudCIsIktFWVMiLCJGTE9XX1NURVBfRk9STV9JRCIsIkd2UG9saWN5U3R1ZGlvIiwicHJvcGVydGllcyIsInBvbGljaWVzIiwidHlwZSIsIkFycmF5Iiwic2VydmljZXMiLCJPYmplY3QiLCJyZXNvdXJjZVR5cGVzIiwiYXR0cmlidXRlIiwicHJvcGVydHlQcm92aWRlcnMiLCJkeW5hbWljUHJvcGVydHlTY2hlbWEiLCJ0YWJJZCIsIlN0cmluZyIsIl90YWJJZCIsImRlZmluaXRpb24iLCJfZGVmaW5pdGlvbiIsImRvY3VtZW50YXRpb24iLCJmbG93U2NoZW1hIiwiY29uZmlndXJhdGlvblNjaGVtYSIsIl9jb25maWd1cmF0aW9uU2NoZW1hIiwiY29uZmlndXJhdGlvbkluZm9ybWF0aW9uIiwiaXNEaXJ0eSIsIkJvb2xlYW4iLCJyZWZsZWN0IiwiX2RyYWdQb2xpY3kiLCJfZHJvcFBvbGljeSIsInNlbGVjdGVkRmxvd3NJZCIsIl9zZWxlY3RlZEZsb3dzSWQiLCJfY3VycmVudFBvbGljeUlkIiwiX3NlYXJjaFBvbGljeVF1ZXJ5IiwiX3NlYXJjaEZsb3dRdWVyeSIsIl9mbG93U3RlcFNjaGVtYSIsIl9jdXJyZW50Rmxvd1N0ZXAiLCJfcG9saWN5RmlsdGVyIiwiX2Zsb3dGaWx0ZXIiLCJfY3VycmVudEFza0NvbmZpcm1hdGlvbiIsImhhc1Byb3BlcnRpZXMiLCJfaGFzUHJvcGVydGllcyIsImhhc1Jlc291cmNlcyIsImhhc1BvbGljeUZpbHRlciIsImZsb3dzVGl0bGUiLCJzb3J0YWJsZSIsImNhbkFkZCIsInJlYWRvbmx5IiwicmVhZG9ubHlQbGFucyIsImNhbkRlYnVnIiwiX2NhbkRlYnVnIiwiZGVidWdSZXNwb25zZSIsInN0eWxlcyIsImNvbnN0cnVjdG9yIiwiZmxvd3MiLCJfdGFicyIsImlkIiwidGl0bGUiLCJpY29uIiwidmFsdWUiLCJ0aGVuIiwicmVxdWVzdFVwZGF0ZSIsIl9mbG93RmlsdGVyT3B0aW9ucyIsImRlZmluZWRQbGFucyIsImxlbmd0aCIsIl9wb2xpY3lGaWx0ZXJPcHRpb25zIiwic3BsaWNlIiwib25LZXlib2FyZCIsImlzUHJlc3NlZCIsIlNoaWZ0IiwiQ3RybCIsIlNwYWNlIiwic2VhcmNoIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJmb2N1cyIsIkVzYyIsIl9jbG9zZUZsb3dTdGVwRm9ybSIsIl9vbkNsb3NlRG9jdW1lbnRhdGlvbiIsImluY2x1ZGVzIiwiX2dlbmVyYXRlRmxvd3NJZCIsInJlc291cmNlcyIsIl9nZW5lcmF0ZUlkIiwicGxhbnMiLCJtYXAiLCJwbGFuIiwiX2dlbmVyYXRlUGxhbkZsb3dzSWQiLCJfaW5pdGlhbERlZmluaXRpb24iLCJfc2VsZWN0Rmlyc3RGbG93IiwiaXNBcnJheSIsImZpbHRlciIsIl9maW5kRmxvd0J5SWQiLCJfdXBkYXRlU2VsZWN0ZWRGbG93cyIsImRpc3BhdGNoIiwiY2FuZGlkYXRlIiwiZGVmaW5lZEZsb3dzIiwiX2lkIiwiZmluZCIsIl9nZXRGbG93RWxlbWVudCIsImZsb3dJZCIsIl9vbkRyYWdFbmRQb2xpY3kiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImUiLCJvbkRyYWdFbmQiLCJfb25Ecm9wUG9saWN5IiwiZGV0YWlsIiwiX2Fza1RvVmFsaWRhdGVGb3JtcyIsInBvbGljeSIsInRhcmdldEZsb3ciLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb25maWd1cmF0aW9uIiwiX25ldyIsImZsb3dTdGVwIiwiX2dlbmVyYXRlRmxvd1N0ZXBJZCIsImZsb3dLZXkiLCJwb3NpdGlvbiIsImVuYWJsZWQiLCJzb3VyY2VGbG93Iiwic291cmNlRmxvd0lkIiwic291cmNlUG9zaXRpb24iLCJzb3VyY2VGbG93S2V5Iiwic3RlcCIsImdyb3VwIiwic2NoZW1hIiwiYnVpbGRTY2hlbWEiLCJfc2V0Q3VycmVudEZsb3dTdGVwIiwiY3VycmVudEZsb3dGb3JtIiwiX2dldEZsb3dTdGVwRm9ybSIsImRpcnR5IiwiY2FuY2VsRWRpdCIsInNldFRpbWVvdXQiLCJfZWRpdEZsb3dTdGVwIiwiZmxvdyIsInVwZGF0ZUNvbXBsZXRlIiwiZmxvd0VsZW1lbnQiLCJzZWxlY3RlZFN0ZXBJZCIsIl9kaXJ0eSIsImd2RmxvdyIsInJlbW92ZUNhbmRpZGF0ZSIsIl9vbkRlbGV0ZVBvbGljeSIsInRhcmdldCIsImVkaXRpbmciLCJfb25EZXNpZ24iLCJfY2hhbmdlVGFiIiwiX3NwbGl0TWFpblZpZXdzIiwianNvblNjaGVtYSIsIkpTT04iLCJwYXJzZSIsImN1cnJlbnRGbG93U3RlcCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJfb25PcGVuRG9jdW1lbnRhdGlvbiIsIl9tYXhpbWl6ZVRvcFZpZXciLCJfb25FZGl0Rmxvd1N0ZXAiLCJfZ2V0UmVzaXphYmxlVmlld3MiLCJtYXhpbWl6ZVRvcCIsIl9tYXhpbWl6ZUJvdHRvbVZpZXciLCJtYXhpbWl6ZUJvdHRvbSIsInNwbGl0IiwiX29uQ2hhbmdlRmxvd1N0ZXBTdGF0ZSIsIl9vbkNsb3NlRmxvd1N0ZXBGb3JtIiwiZXJyIiwiZm9yY2UiLCJQcm9taXNlIiwiYWxsIiwiX3N1Ym1pdE9yQ29uZmlybUZvcm1zIiwiZm9ybXMiLCJyIiwiX2J1aWxkRGVmaW5pdGlvblRvU2F2ZSIsImdldENoaWxkcmVuIiwiX2NoZWNrQ3VycmVudEZsb3dTdGVwIiwiRXJyb3IiLCJmbG93U3RlcFNjaGVtYSIsIl9pbml0aWFsVmFsdWVzIiwic2NvcGUiLCJfZW51bSIsImVudW0iLCJmaWx0ZXJlZCIsImRlZmF1bHQiLCJfdmFsdWVzIiwiX3JlZnJlc2giLCJjbG9zZVN0ZXBGb3JtIiwiX29uU2VsZWN0Rmxvd3MiLCJfb25PcGVuRG9jdW1lbnRhdGlvbkZyb21NZW51IiwiZ2V0U2VsZWN0ZWRGbG93IiwiX2ZldGNoRG9jdW1lbnRhdGlvbiIsIl9vbk9wZW5Eb2N1bWVudGF0aW9uRnJvbUZvcm0iLCJyZW1vdmVJdGVtIiwiX2ZpbmRGbG93Q29sbGVjdGlvbiIsInBsYW5zRmxvd3MiLCJyZWR1Y2UiLCJhY2MiLCJ2YWwiLCJjb25jYXQiLCJpbmRleCIsInNlbGVjdGVkRmxvd0lkIiwiX29uVGFyZ2V0UG9saWN5IiwiX29uQ2hhbmdlRmxvd1N0ZXAiLCJ2YWx1ZXMiLCJfd3JpdGVGbG93U3RlcCIsImZpbmRJbmRleCIsIl9vblN1Ym1pdEZsb3dTdGVwIiwiYyIsIl9vbkNhbmNlbEZsb3ciLCJfb25TdWJtaXRGbG93Iiwic2VsZWN0ZWRGbG93IiwiYXNzaWduIiwiX2NyZWF0ZUZsb3dGcm9tU2NoZW1hIiwic2VsZWN0ZWRGbG93VXBkYXRlZCIsIl9vbkNhbmNlbEZsb3dNb2RlIiwiX29uU3VibWl0Rmxvd01vZGUiLCJfb25DaGFuZ2VUYWIiLCJfY2hhbmdlVGFiVmFsaWRhdG9yIiwiZnJvbSIsInRvIiwiY29tcG9uZW50IiwiY29uZmlybSIsInJlc29sdmUiLCJfb25EcmFnU3RhcnRGbG93U3RlcCIsIl9yZW5kZXJGbG93RW1wdHlTdGF0ZSIsInJlYWRvbmx5TW9kZSIsIl9vbkFkZEZsb3ciLCJfcmVuZGVyRmxvdyIsImhhc0VtcHR5U3RhdGUiLCJiaW5kIiwiX29uRmV0Y2hSZXNvdXJjZXMiLCJldmVudCIsImN1cnJlbnRUYXJnZXQiLCJyZWdleFR5cGVzIiwib3B0aW9ucyIsImRlZmluZWRSZXNvdXJjZXMiLCJyZXNvdXJjZSIsIlJlZ0V4cCIsInRlc3QiLCJyZXNvdXJjZVR5cGUiLCJyb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJwaWN0dXJlIiwiaXRlbSIsImVsZW1lbnQiLCJfcmVuZGVyUG9saWN5IiwiX3JlbmRlckZsb3dTdGVwRm9ybSIsImNvbnRlbnQiLCJpbWFnZSIsIl9vblJlc2V0Rmxvd1N0ZXAiLCJyZXNldCIsImxpc3QiLCJwcmVmaXgiLCJpc0Zsb3ciLCJwcmUiLCJzdGVwSW5kZXgiLCJwb3N0IiwiX2dldFVwZGF0ZUNvbXBsZXRlIiwic2hvdWxkVXBkYXRlIiwiY2hhbmdlZFByb3BlcnRpZXMiLCJoYXMiLCJkcmFnUG9saWN5IiwiZHJvcFBvbGljeSIsInVwZGF0ZWQiLCJwcm9wcyIsInNldEl0ZW0iLCJfb25EZWxldGVGbG93IiwiX2RlbGV0ZUZsb3ciLCJkZWZpbmVkUHJvcGVydGllcyIsIl9vbkR1cGxpY2F0ZUZsb3ciLCJfYWRkRmxvdyIsInBsYW5JbmRleCIsInAiLCJpIiwiX29uQ2hhbmdlRmxvd1N0YXRlIiwiX29uQWRkRmxvd1BsYW4iLCJjb2xsZWN0aW9uIiwiZHVwbGljYXRlIiwicHVzaCIsIm5ld0Zsb3ciLCJfaW5zdGFudGlhdGUiLCJwcm9wZXJ0aWVzRGVmaW5pdGlvbiIsImluaXRpYXRvciIsInByb3BlcnR5Iiwia2V5Iiwia2V5cyIsImVudHJ5IiwidW5kZWZpbmVkIiwiaW5kZXhPZiIsInNlbGVjdGVkRmxvd3MiLCJfZmluZEZsb3dJbmRleCIsImYiLCJfb25SZW9yZGVyRmxvd3MiLCJuZXdPcmRlciIsIl9vblNlYXJjaFBvbGljeSIsIl9vbkNsZWFyUG9saWN5IiwiX29uU2VhcmNoRmxvd3MiLCJfb25DbGVhckZsb3dzIiwiX29uUmVzZXRBbGwiLCJfZmlsdGVyTm90VmFsaWRTdGVwIiwiX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzIiwibyIsImNvcHkiLCJzdGFydHNXaXRoIiwiZm9ybSIsImlzVmFsaWQiLCJzdWJtaXQiLCJnZXRQcm9wZXJ0aWVzRWxlbWVudCIsImNsb3NlUHJvbWlzZXMiLCJjdXJyZW50U3RlcCIsInNhdmVkIiwiX2RlZmluaXRpb25TYXZlZCIsIl9idWlsZERlZmluaXRpb25Ub1NlbmQiLCJkZWZpbml0aW9uVG9TYXZlIiwiX29uU2F2ZUFsbCIsImNhdGNoIiwiY29uc29sZSIsImVycm9yIiwiX29uRGVidWciLCJyZXF1ZXN0RXZlbnQiLCJyZXF1ZXN0IiwiZmlsdGVyZWRGbG93cyIsImZpbHRlcmVkUGxhbnMiLCJfb25GaWx0ZXJGbG93cyIsIl9nZXRGaWx0ZXJlZFBvbGljaWVzIiwib25SZXF1ZXN0Iiwib25SZXNwb25zZSIsIl9vbkZpbHRlclBvbGljaWVzIiwiX3JlbmRlckRlc2lnbiIsIl9yZW5kZXJGbG93Rm9ybSIsIl9yZW5kZXJEZWJ1ZyIsInJlc3BvbnNlIiwiaXNMb2FkaW5nIiwicGF0aCIsIm1ldGhvZCIsIl9yZW5kZXJDb25maWd1cmF0aW9uRm9ybSIsIl9vblJlc291cmNlc0NoYW5nZSIsIl9vblByb3BlcnRpZXNDaGFuZ2UiLCJfb25TYXZlUHJvdmlkZXIiLCJwcm92aWRlciIsIl9vblN3aXRjaEVuY3J5cHRlZFByb3BlcnR5IiwicmVuZGVyIiwiX2dldFJlYWRvbmx5TW9kZUZvckRlc2lnbiIsImZsb3dQbGFuIiwiY29tcGFyZWRGbG93IiwiY29tcGFyZWRGbG93UGxhbiIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxHQUFULEVBQWNDLElBQWQsRUFBb0JDLFVBQXBCLFFBQXNDLGFBQXRDO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixlQUF4QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sa0JBQVA7QUFDQSxPQUFPLHdCQUFQO0FBQ0EsT0FBTywrQkFBUDtBQUNBLE9BQU8saUNBQVA7QUFDQSxPQUFPLDZCQUFQO0FBQ0EsT0FBTyw2QkFBUDtBQUNBLE9BQU8sc0JBQVA7QUFDQSxPQUFPLHFCQUFQO0FBQ0EsT0FBTyxXQUFQO0FBQ0EsT0FBTyxnQkFBUDtBQUNBLE9BQU8seUJBQVA7QUFDQSxTQUFTQyxLQUFULFFBQXNCLGlCQUF0QjtBQUNBLFNBQVNDLEtBQVQsUUFBc0Is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QUk4SyxZQUFKLEVBQWtCO0FBQ2hCLGFBQU8sSUFBUDtBQUNEOztBQUVELFVBQU13SCxZQUFZLEdBQUcsS0FBSzVKLGVBQUwsQ0FBcUIsQ0FBckIsQ0FBckI7O0FBQ0EsUUFBSSxDQUFDNEosWUFBTCxFQUFtQjtBQUNqQixhQUFPLEtBQVA7QUFDRDs7QUFFRCxVQUFNO0FBQUVqUSxNQUFBQSxJQUFJLEVBQUVrUTtBQUFSLFFBQTZCLEtBQUt6SixtQkFBTCxDQUF5QndKLFlBQVksQ0FBQ3RQLEdBQXRDLENBQW5DOztBQUNBLFdBQU91UCxnQkFBZ0IsSUFBSSxLQUFLdlMsYUFBaEM7QUFDRDs7QUExdEQ2RDtBQTZ0RGhFd1MsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QixrQkFBN0IsRUFBaUR0VixjQUFqRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBjc3MsIGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQtZWxlbWVudCc7XG5pbXBvcnQgeyBtZXRob2RzIH0gZnJvbSAnLi4vbGliL3N0dWRpbyc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWJ1dHRvbic7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWljb24nO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3Ytb3B0aW9uJztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LWRvY3VtZW50YXRpb24nO1xuaW1wb3J0ICcuLi9vcmdhbmlzbXMvZ3YtcmVzaXphYmxlLXZpZXdzJztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXNjaGVtYS1mb3JtJztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LWh0dHAtY2xpZW50JztcbmltcG9ydCAnLi4vb3JnYW5pc21zL2d2LXRhYnMnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3Ytcm93JztcbmltcG9ydCAnLi9ndi1mbG93JztcbmltcG9ydCAnLi9ndi1mbG93LXN0ZXAnO1xuaW1wb3J0ICcuL2d2LXBvbGljeS1zdHVkaW8tbWVudSc7XG5pbXBvcnQgeyBlbXB0eSB9IGZyb20gJy4uL3N0eWxlcy9lbXB0eSc7XG5pbXBvcnQgeyBjYWNoZSB9IGZyb20gJ2xpdC1odG1sL2RpcmVjdGl2ZXMvY2FjaGUnO1xuaW1wb3J0IHsgZGVlcENsb25lLCBkZWVwRXF1YWwgfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRFbGVtZW50LCBLRVlTIH0gZnJvbSAnLi4vbWl4aW5zL2tleWJvYXJkLWVsZW1lbnQnO1xuXG5jb25zdCBGTE9XX1NURVBfRk9STV9JRCA9ICdmbG93LXN0ZXAtZm9ybSc7XG5cbi8qKlxuICogIFN0dWRpbyBQb2xpY3kgY29tcG9uZW50XG4gKlxuICog4pqg77iPIFRoaXMgY29tcG9uZW50IGlzIGJhc2VkIG9uIGBhc2NpaWRvY3RvcmAsIGBoaWdobGlnaHQuanNgIGFuZCBgYXNjaWlkb2N0b3ItaGlnaGxpZ2h0LmpzYC5cbiAqIFRvIHVzZSB0aGlzIGNvbXBvbmVudCBpbiB5b3VyIHByb2plY3QgYmUgc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBpbnN0YWxsZWQgb3JcbiAqIGluc3RhbGwgdGhlbSB3aXRoOiBgbnBtIGluc3RhbGwgYXNjaWlkb2N0b3IgaGlnaGxpZ2h0LmpzIGFzY2lpZG9jdG9yLWhpZ2hsaWdodC5qcyAtLXNhdmVgXG4gKlxuICogQGZpcmVzIGd2LXBvbGljeS1zdHVkaW86c2VsZWN0LXBvbGljeSAtIFNlbGVjdCBwb2xpY3kgZXZlbnRcbiAqIEBmaXJlcyBndi1wb2xpY3ktc3R1ZGlvOnNhdmUgLSBFdmVudCBzZW50IHdoZW4gXCJTYXZlXCIgYnV0dG9uIGlzIGNsaWNrZWQsIGl0IGNvbnRhaW5zIHRoZSB3aG9sZSBkZWZpbml0aW9uIG9mIHRoZSBBUElcbiAqIEBmaXJlcyBndi1wb2xpY3ktc3R1ZGlvOmRlYnVnIC0gRXZlbnQgc2VudCB3aGVuIHZhbGlkYXRpb24gYnV0dG9uIG9mIHRoZSAnVHJ5IGl0JyB0YWIgaXMgY2xpY2tlZCwgaXQgY29udGFpbnMgdGhlIHdob2xlIGRlZmluaXRpb24gb2YgdGhlIEFQSSBhbmQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cnkgaXQgcmVxdWVzdC5cbiAqXG4gKiBAYXR0ciB7QXJyYXl9IHBvbGljaWVzIC0gUG9saWNpZXMgYXZhaWxhYmxlXG4gKiBAYXR0ciB7QXJyYXl9IHNlcnZpY2VzIC0gU2VydmljZXMgYXZhaWxhYmxlXG4gKiBAYXR0ciB7QXJyYXl9IHJlc291cmNlVHlwZXMgLSBSZXNvdXJjZXMgdHlwZXMgYXZhaWxhYmxlXG4gKiBAYXR0ciB7QXJyYXl9IHByb3BlcnR5UHJvdmlkZXJzIC0gUHJvdmlkZXJzIG9mIHByb3BlcnRpZXNcbiAqIEBhdHRyIHtBcnJheX0gZHluYW1pY1Byb3BlcnR5U2NoZW1hIC0gU2NoZW1hIGZvciB0aGUgZHluYW1pYyBwcm9wZXJ0eSBmb3JtXG4gKiBAYXR0ciB7U3RyaW5nfSB0YWJJZCAtIEN1cnJlbnQgdGFiSWQgdG8gZGlzcGxheSAoZGVzaWduLCBzZXR0aW5ncywgcHJvcGVydGllcyBvciByZXNvdXJjZXMpXG4gKiBAYXR0ciB7T2JqZWN0fSBkZWZpbml0aW9uIC0gVGhlIGRlZmluaXRpb24gb2YgZmxvd3NcbiAqIEBhdHRyIHtPYmplY3R9IGRvY3VtZW50YXRpb24gLSBUaGUgZG9jdW1lbnRhdGlvbiB0byBkaXNwbGF5XG4gKiBAYXR0ciB7T2JqZWN0fSBmbG93U2NoZW1hIC0gVGhlIGZsb3cgZm9ybSBjb25maWd1cmF0aW9uIHRvIGRpc3BsYXkgaW4gZ3Ytc2NoZW1hLWZvcm0gY29tcG9uZW50XG4gKiBAYXR0ciB7T2JqZWN0fSBjb25maWd1cmF0aW9uU2NoZW1hIC0gVGhlIGZvcm0gY29uZmlndXJhdGlvbiB0byBkaXNwbGF5IGluIGd2LXNjaGVtYS1mb3JtIGNvbXBvbmVudFxuICogQGF0dHIge09iamVjdH0gY29uZmlndXJhdGlvbkluZm9ybWF0aW9uIC0gVGhlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYXBpIGNvbmZpZ3VyYXRpb24gdGFiXG4gKiBAYXR0ciB7Qm9vbGVhbn0gaXNEaXJ0eSAtIHRydWUgaWYgY29tcG9uZW50IGlzIGRpcnR5XG4gKiBAYXR0ciB7QXJyYXl9IHNlbGVjdGVkRmxvd3NJZCAtIFRoZSBzZWxlY3RlZCBmbG93cyBpZFxuICogQGF0dHIge0Jvb2xlYW59IHNvcnRhYmxlIC0gdHJ1ZSBpZiBmbG93cyBhcmUgc29ydGFibGVcbiAqIEBhdHRyIHtCb29sZWFufSByZWFkb25seSAtIHRydWUgaWYgcmVhZG9ubHlcbiAqIEBhdHRyIHtCb29sZWFufSByZWFkb25seS1wbGFucyAtIHRydWUgaWYgcGxhbnMnIGZsb3dzIGNhbid0IGJlIG1vZGlmaWVkXG4gKiBAYXR0ciB7Qm9vbGVhbn0gY2FuLWFkZCAtIHRydWUgaWYgdXNlciBjYW4gYWRkIGZsb3dcbiAqIEBhdHRyIHtTdHJpbmd9IGZsb3dzVGl0bGUgLSBmbG93cyBtZW51IHRpdGxlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gaGFzLXBvbGljeS1maWx0ZXIgLSB0cnVlIGlmIHBvbGljaWVzIGhhdmUgb25SZXF1ZXN0L29uUmVzcG9uc2UgcHJvcGVydGllc1xuICogQGF0dHIge0Jvb2xlYW59IGNhbi1kZWJ1ZyAtIHRydWUgaWYgZGVidWcgdGFiIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAqIEBhdHRyIHtPYmplY3R9IGRlYnVnUmVzcG9uc2UgLSB0cnVlIGlmIGRlYnVnIHRhYiBzaG91bGQgYmUgZGlzcGxheWVkXG4gKi9cbmV4cG9ydCBjbGFzcyBHdlBvbGljeVN0dWRpbyBleHRlbmRzIEtleWJvYXJkRWxlbWVudChMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9saWNpZXM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIHNlcnZpY2VzOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgcmVzb3VyY2VUeXBlczogeyB0eXBlOiBBcnJheSwgYXR0cmlidXRlOiAncmVzb3VyY2UtdHlwZXMnIH0sXG4gICAgICBwcm9wZXJ0eVByb3ZpZGVyczogeyB0eXBlOiBBcnJheSwgYXR0cmlidXRlOiAncHJvcGVydHktcHJvdmlkZXJzJyB9LFxuICAgICAgZHluYW1pY1Byb3BlcnR5U2NoZW1hOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiAnZHluYW1pYy1wcm9wZXJ0eS1zY2hlbWEnIH0sXG4gICAgICB0YWJJZDogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ3RhYi1pZCcgfSxcbiAgICAgIF90YWJJZDogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIGRlZmluaXRpb246IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBfZGVmaW5pdGlvbjogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIGRvY3VtZW50YXRpb246IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBmbG93U2NoZW1hOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiAnZmxvdy1zY2hlbWEnIH0sXG4gICAgICBjb25maWd1cmF0aW9uU2NoZW1hOiB7IHR5cGU6IE9iamVjdCwgYXR0cmlidXRlOiAnY29uZmlndXJhdGlvbi1zY2hlbWEnIH0sXG4gICAgICBfY29uZmlndXJhdGlvblNjaGVtYTogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIGNvbmZpZ3VyYXRpb25JbmZvcm1hdGlvbjogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ2NvbmZpZ3VyYXRpb24taW5mb3JtYXRpb24nIH0sXG4gICAgICBpc0RpcnR5OiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2RpcnR5JywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgX2RyYWdQb2xpY3k6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfZHJvcFBvbGljeTogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIHNlbGVjdGVkRmxvd3NJZDogeyB0eXBlOiBBcnJheSwgYXR0cmlidXRlOiAnc2VsZWN0ZWQtZmxvd3MtaWQnIH0sXG4gICAgICBfc2VsZWN0ZWRGbG93c0lkOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfY3VycmVudFBvbGljeUlkOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX3NlYXJjaFBvbGljeVF1ZXJ5OiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX3NlYXJjaEZsb3dRdWVyeTogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9mbG93U3RlcFNjaGVtYTogeyB0eXBlOiBPYmplY3QsIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9jdXJyZW50Rmxvd1N0ZXA6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfcG9saWN5RmlsdGVyOiB7IHR5cGU6IEFycmF5LCBhdHRyaWJ1dGU6IGZhbHNlIH0sXG4gICAgICBfZmxvd0ZpbHRlcjogeyB0eXBlOiBBcnJheSwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX2N1cnJlbnRBc2tDb25maXJtYXRpb246IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgaGFzUHJvcGVydGllczogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoYXMtcHJvcGVydGllcycgfSxcbiAgICAgIF9oYXNQcm9wZXJ0aWVzOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIGhhc1Jlc291cmNlczogeyB0eXBlOiBCb29sZWFuLCBhdHRyaWJ1dGU6ICdoYXMtcmVzb3VyY2VzJyB9LFxuICAgICAgaGFzUG9saWN5RmlsdGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hhcy1wb2xpY3ktZmlsdGVyJyB9LFxuICAgICAgZmxvd3NUaXRsZTogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ2Zsb3dzLXRpdGxlJyB9LFxuICAgICAgc29ydGFibGU6IHsgdHlwZTogQm9vbGVhbiB9LFxuICAgICAgY2FuQWRkOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2Nhbi1hZGQnIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgICByZWFkb25seVBsYW5zOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ3JlYWRvbmx5LXBsYW5zJyB9LFxuICAgICAgY2FuRGVidWc6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnY2FuLWRlYnVnJyB9LFxuICAgICAgX2NhbkRlYnVnOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIGRlYnVnUmVzcG9uc2U6IHsgdHlwZTogT2JqZWN0LCBhdHRyaWJ1dGU6ICdkZWJ1Zy1yZXNwb25zZScgfSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGVtcHR5LFxuICAgICAgbWV0aG9kcyxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAtLWhlaWdodDogdmFyKC0tZ3YtcG9saWN5LXN0dWRpby0taCwgY2FsYygxMDB2aCAtIDMycHgpKTtcbiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWhlaWdodCk7XG4gICAgICAgICAgLS1oZWlnaHQtaW4tdGFiczogY2FsYyh2YXIoLS1oZWlnaHQpIC0gMjVweCk7XG4gICAgICAgIH1cblxuICAgICAgICAuYm94IHtcbiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWhlaWdodCk7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNpZ24sXG4gICAgICAgIC5wcm9wZXJ0aWVzIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtcmVzaXphYmxlLXZpZXdzIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5lZGl0YWJsZS1uYW1lIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZWRpdGFibGUtbmFtZSBzcGFuIHtcbiAgICAgICAgICBjb2xvcjogI2JmYmZiZjtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbCB7XG4gICAgICAgICAgbWFyZ2luOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBndi1pbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZmxvdy1uYW1lIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuZmxvdy1uYW1lLmRpcnR5IHtcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZsb3ctbmFtZSBndi1pY29uIHtcbiAgICAgICAgICAtLWd2LWljb24tLXM6IDI0cHg7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuZmxvdy1wYXRoIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRpdGxlX21ldGhvZHMge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAudHdvLWNvbHMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnR3by1jb2xzID4gKiB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5sZWZ0LW1lbnUge1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWhlaWdodC1pbi10YWJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yaWdodC1tZW51IHtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LWluLXRhYnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnR3by1jb2xzID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mbG93LXN0ZXBfX2NvbnRhaW5lciB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICBoZWlnaHQ6IDk5JTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mbG93LXN0ZXBfX2Zvcm0ge1xuICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtO1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZsb3ctc3RlcF9fZm9ybS10aXRsZSB7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4ycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtdGFicyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXJlc2l6YWJsZS12aWV3cyxcbiAgICAgICAgZ3YtcHJvcGVydGllcyxcbiAgICAgICAgZ3YtcmVzb3VyY2VzIHtcbiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWhlaWdodC1pbi10YWJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LXByb3BlcnRpZXMsXG4gICAgICAgIGd2LXJlc291cmNlcyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1wcm9wZXJ0aWVzLnByb3BlcnRpZXMge1xuICAgICAgICAgIC0tZ3YtcHJvcGVydGllcy10YWJsZS0tY29sbWc6IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYXBpLXNldHRpbmdzIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYmZiZmJmO1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LWluLXRhYnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRlYnVnIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjYmZiZmJmO1xuICAgICAgICAgIGhlaWdodDogdmFyKC0taGVpZ2h0LWluLXRhYnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFwaS1zZXR0aW5ncy1pbmZvcm1hdGlvbiB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFwaS1zZXR0aW5ncy1pbmZvcm1hdGlvbl9faWNvbiB7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiB2YXIoLS1ndi10aGVtZS1jb2xvciwgIzVhNzY4NCk7XG4gICAgICAgICAgLS1ndi1pY29uLW9wYWNpdHktLWM6IHZhcigtLWd2LXRoZW1lLWNvbG9yLWluZm8tbGlnaHQsICM2NGI1ZjYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFwaS1zZXR0aW5ncy1pbmZvcm1hdGlvbl9fYmxvY2txdW90ZSxcbiAgICAgICAgLmRlYnVnLWluZm9ybWF0aW9uX19ibG9ja3F1b3RlIHtcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWd2LXRoZW1lLWNvbG9yLCAjNWE3Njg0KTtcbiAgICAgICAgICBtYXJnaW46IDE1cHg7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mbG93LXNldHRpbmdzIGd2LXNjaGVtYS1mb3JtIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtaW5wdXQge1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLWFjdGlvbnMsXG4gICAgICAgIC5zZWFyY2gtcG9saWNpZXMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIG1hcmdpbjogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1wb2xpY2llcyB7XG4gICAgICAgICAgbWFyZ2luOiAxLjVyZW0gMC41cmVtIDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXItYWN0aW9ucyA+IGd2LWJ1dHRvbi5idG4tbGFyZ2UsXG4gICAgICAgIC5mb290ZXItYWN0aW9ucyA+IGd2LW9wdGlvbiB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyLWFjdGlvbnMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwO1xuICAgICAgICAgIG1hcmdpbjogMC41cmVtIDE1cHg7XG4gICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiZmJmYmY7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLWFjdGlvbnMgLnRpdGxlIHtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zcmVtO1xuICAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgd2lkdGg6IDI0MHB4O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDI1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLWFjdGlvbnMgPiAqLFxuICAgICAgICAuc2VhcmNoLXBvbGljaWVzID4gKiB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLnBvbGljaWVzID0gW107XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gW107XG4gICAgdGhpcy50YWJJZCA9ICdkZXNpZ24nO1xuICAgIHRoaXMuc2VsZWN0ZWRGbG93c0lkID0gW107XG4gICAgdGhpcy5mbG93c1RpdGxlID0gJ0Zsb3dzJztcbiAgICB0aGlzLnNvcnRhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5zZXJ2aWNlcyA9IHt9O1xuICAgIHRoaXMuX2RlZmluaXRpb24gPSB7XG4gICAgICBmbG93czogW10sXG4gICAgfTtcbiAgICB0aGlzLl90YWJzID0gW3sgaWQ6ICdkZXNpZ24nLCB0aXRsZTogJ0Rlc2lnbicsIGljb246ICduYXZpZ2F0aW9uOmV4Y2hhbmdlJyB9XTtcbiAgICB0aGlzLl9wb2xpY3lGaWx0ZXIgPSBbXTtcbiAgICB0aGlzLl9mbG93RmlsdGVyID0gW107XG4gIH1cblxuICBzZXQgaGFzUHJvcGVydGllcyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaW1wb3J0KCcuLi9vcmdhbmlzbXMvZ3YtcHJvcGVydGllcycpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl90YWJzID0gWy4uLnRoaXMuX3RhYnMsIHsgaWQ6ICdwcm9wZXJ0aWVzJywgdGl0bGU6ICdQcm9wZXJ0aWVzJywgaWNvbjogJ2dlbmVyYWw6c2V0dGluZ3MjMScgfV07XG4gICAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuX2hhc1Byb3BlcnRpZXMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNQcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNQcm9wZXJ0aWVzO1xuICB9XG5cbiAgc2V0IGhhc1Jlc291cmNlcyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaW1wb3J0KCcuLi9vcmdhbmlzbXMvZ3YtcmVzb3VyY2VzJykudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3RhYnMgPSBbLi4udGhpcy5fdGFicywgeyBpZDogJ3Jlc291cmNlcycsIHRpdGxlOiAnUmVzb3VyY2VzJywgaWNvbjogJ2dlbmVyYWw6c2V0dGluZ3MjNScgfV07XG4gICAgICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGNhbkRlYnVnKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJzID0gWy4uLnRoaXMuX3RhYnMsIHsgaWQ6ICdkZWJ1ZycsIHRpdGxlOiAnVHJ5IGl0JywgaWNvbjogJ2NvbnRlbnQ6c2VuZCcgfV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IF9mbG93RmlsdGVyT3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5kZWZpbmVkUGxhbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgeyBpZDogJ2FwaScsIHRpdGxlOiAnQXBpJywgaWNvbjogJ3Nob3BwaW5nOmJveCMzJyB9LFxuICAgICAgICB7IGlkOiAncGxhbicsIHRpdGxlOiAnUGxhbnMnLCBpY29uOiAnc2hvcHBpbmc6c2FsZSMyJyB9LFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBzZXQgaGFzUG9saWN5RmlsdGVyKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9wb2xpY3lGaWx0ZXJPcHRpb25zID0gW1xuICAgICAgICB7IGlkOiAnb25SZXF1ZXN0JywgdGl0bGU6ICdSZXF1ZXN0JywgaWNvbjogJ25hdmlnYXRpb246YXJyb3ctZnJvbS1sZWZ0JyB9LFxuICAgICAgICB7IGlkOiAnb25SZXNwb25zZScsIHRpdGxlOiAnUmVzcG9uc2UnLCBpY29uOiAnbmF2aWdhdGlvbjphcnJvdy1mcm9tLXJpZ2h0JyB9LFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBzZXQgY29uZmlndXJhdGlvblNjaGVtYSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fdGFicy5zcGxpY2UoMSwgMCwgeyBpZDogJ3NldHRpbmdzJywgdGl0bGU6ICdDb25maWd1cmF0aW9uJywgaWNvbjogJ2dlbmVyYWw6c2V0dGluZ3MjMicgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlndXJhdGlvblNjaGVtYSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbmZpZ3VyYXRpb25TY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb25TY2hlbWE7XG4gIH1cblxuICBvbktleWJvYXJkKCkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmlzUHJlc3NlZChLRVlTLlNoaWZ0LCBLRVlTLkN0cmwsIEtFWVMuU3BhY2UpKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoLXBvbGljeScpO1xuICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgc2VhcmNoLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1ByZXNzZWQoS0VZUy5DdHJsLCBLRVlTLlNwYWNlKSkge1xuICAgICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignI3NlYXJjaC1mbG93Jyk7XG4gICAgICAgIGlmIChzZWFyY2gpIHtcbiAgICAgICAgICBzZWFyY2guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNQcmVzc2VkKEtFWVMuRXNjKSkge1xuICAgICAgICB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSgpO1xuICAgICAgICB0aGlzLl9vbkNsb3NlRG9jdW1lbnRhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldCB0YWJJZCh0YWJJZCkge1xuICAgIGlmICh0YWJJZCAhPSBudWxsICYmIFsnZGVzaWduJywgJ3NldHRpbmdzJywgJ3Byb3BlcnRpZXMnLCAncmVzb3VyY2VzJywgJ2RlYnVnJ10uaW5jbHVkZXModGFiSWQpKSB7XG4gICAgICB0aGlzLl90YWJJZCA9IHRhYklkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWJJZCA9ICdkZXNpZ24nO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiSWQ7XG4gIH1cblxuICBzZXQgZGVmaW5pdGlvbihkZWZpbml0aW9uKSB7XG4gICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgIGNvbnN0IGZsb3dzID0gdGhpcy5fZ2VuZXJhdGVGbG93c0lkKGRlZmluaXRpb24uZmxvd3MpO1xuICAgICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5fZ2VuZXJhdGVJZCgncmVzb3VyY2UtJywgZGVmaW5pdGlvbi5yZXNvdXJjZXMpO1xuICAgICAgY29uc3QgcGxhbnMgPVxuICAgICAgICBkZWZpbml0aW9uLnBsYW5zID09IG51bGxcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBkZWZpbml0aW9uLnBsYW5zLm1hcCgocGxhbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyAuLi5wbGFuLCBmbG93czogdGhpcy5fZ2VuZXJhdGVQbGFuRmxvd3NJZChwbGFuKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICB0aGlzLl9pbml0aWFsRGVmaW5pdGlvbiA9IHsgLi4uZGVmaW5pdGlvbiwgZmxvd3MsIHJlc291cmNlcywgcGxhbnMgfTtcbiAgICAgIHRoaXMuX2RlZmluaXRpb24gPSBkZWVwQ2xvbmUodGhpcy5faW5pdGlhbERlZmluaXRpb24pO1xuICAgICAgdGhpcy5pc0RpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLl9zZWxlY3RGaXJzdEZsb3coKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGVmaW5pdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmaW5pdGlvbjtcbiAgfVxuXG4gIHNldCBzZWxlY3RlZEZsb3dzSWQoc2VsZWN0ZWRGbG93c0lkKSB7XG4gICAgaWYgKHNlbGVjdGVkRmxvd3NJZCAhPSBudWxsICYmIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRGbG93c0lkKSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRGbG93c0lkID0gc2VsZWN0ZWRGbG93c0lkLmZpbHRlcigoaWQpID0+IHRoaXMuX2ZpbmRGbG93QnlJZChpZCkgIT0gbnVsbCk7XG4gICAgICBpZiAoc2VsZWN0ZWRGbG93c0lkLmxlbmd0aCAhPT0gdGhpcy5fc2VsZWN0ZWRGbG93c0lkLmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9zZWxlY3RGaXJzdEZsb3codHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkRmxvd3NJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRGbG93c0lkLmZpbHRlcigoaWQpID0+IHRoaXMuX2ZpbmRGbG93QnlJZChpZCkgIT0gbnVsbCk7XG4gIH1cblxuICBfdXBkYXRlU2VsZWN0ZWRGbG93cyhzZWxlY3RlZEZsb3dzSWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkRmxvd3NJZCA9IHNlbGVjdGVkRmxvd3NJZDtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdzZWxlY3QtZmxvd3MnLCB7IGZsb3dzOiB0aGlzLnNlbGVjdGVkRmxvd3NJZCB9KTtcbiAgfVxuXG4gIF9zZWxlY3RGaXJzdEZsb3coZGlzcGF0Y2ggPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvd3NJZC5sZW5ndGggPT09IDApIHtcbiAgICAgIGxldCBjYW5kaWRhdGUgPSBudWxsO1xuICAgICAgaWYgKHRoaXMuZGVmaW5lZEZsb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5kZWZpbmVkRmxvd3NbMF0uX2lkICE9IG51bGwpIHtcbiAgICAgICAgY2FuZGlkYXRlID0gdGhpcy5kZWZpbmVkRmxvd3NbMF07XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGVmaW5lZFBsYW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgcGxhbiA9IHRoaXMuZGVmaW5lZFBsYW5zLmZpbmQoKHBsYW4pID0+IHBsYW4uZmxvd3MgIT0gbnVsbCAmJiBwbGFuLmZsb3dzLmxlbmd0aCA+IDAgJiYgcGxhbi5mbG93c1swXS5faWQgIT0gbnVsbCk7XG4gICAgICAgIGlmIChwbGFuKSB7XG4gICAgICAgICAgY2FuZGlkYXRlID0gcGxhbi5mbG93c1swXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhbmRpZGF0ZSAhPSBudWxsKSB7XG4gICAgICAgIGlmIChkaXNwYXRjaCkge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW2NhbmRpZGF0ZS5faWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmxvd3NJZCA9IFtjYW5kaWRhdGUuX2lkXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9nZXRGbG93RWxlbWVudChmbG93SWQpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7Zmxvd0lkfVwiXWApO1xuICB9XG5cbiAgX29uRHJhZ0VuZFBvbGljeSgpIHtcbiAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3YtZmxvdycpLmZvckVhY2goKGUpID0+IGUub25EcmFnRW5kKCkpO1xuICB9XG5cbiAgYXN5bmMgX29uRHJvcFBvbGljeSh7IGRldGFpbCB9KSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2Fza1RvVmFsaWRhdGVGb3JtcygpO1xuXG4gICAgICBjb25zdCBwb2xpY3kgPSBkZXRhaWwucG9saWN5O1xuICAgICAgY29uc3QgdGFyZ2V0RmxvdyA9IHRoaXMuX2ZpbmRGbG93QnlJZChkZXRhaWwuZmxvd0lkKTtcblxuICAgICAgbGV0IG5hbWUgPSBwb2xpY3kubmFtZTtcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9ICcnO1xuICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICAgIGxldCBfaWQ7XG4gICAgICBsZXQgX25ldyA9IGZhbHNlO1xuICAgICAgaWYgKGRldGFpbC5mbG93U3RlcCkge1xuICAgICAgICBfaWQgPSBkZXRhaWwuZmxvd1N0ZXAuX2lkO1xuICAgICAgICBuYW1lID0gZGV0YWlsLmZsb3dTdGVwLm5hbWU7XG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGV0YWlsLmZsb3dTdGVwLmRlc2NyaXB0aW9uIHx8ICcnO1xuICAgICAgICBjb25maWd1cmF0aW9uID0gZGV0YWlsLmZsb3dTdGVwLmNvbmZpZ3VyYXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfaWQgPSB0aGlzLl9nZW5lcmF0ZUZsb3dTdGVwSWQodGFyZ2V0Rmxvdy5faWQsIGRldGFpbC5mbG93S2V5LCBkZXRhaWwucG9zaXRpb24pO1xuICAgICAgICBfbmV3ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmxvd1N0ZXAgPSB7IF9pZCwgX25ldywgbmFtZSwgcG9saWN5OiBwb2xpY3kuaWQsIGRlc2NyaXB0aW9uLCBlbmFibGVkOiB0cnVlLCBjb25maWd1cmF0aW9uIH07XG4gICAgICBjb25zdCBzb3VyY2VGbG93ID0gZGV0YWlsLnNvdXJjZUZsb3dJZCAhPSBudWxsID8gdGhpcy5fZmluZEZsb3dCeUlkKGRldGFpbC5zb3VyY2VGbG93SWQpIDogdGFyZ2V0RmxvdztcblxuICAgICAgaWYgKGRldGFpbC5zb3VyY2VQb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIGlmIChkZXRhaWwuc291cmNlRmxvd0tleSAmJiBkZXRhaWwuc291cmNlRmxvd0tleSAhPT0gZGV0YWlsLmZsb3dLZXkpIHtcbiAgICAgICAgICBzb3VyY2VGbG93W2RldGFpbC5zb3VyY2VGbG93S2V5XS5zcGxpY2UoZGV0YWlsLnNvdXJjZVBvc2l0aW9uLCAxKTtcbiAgICAgICAgICB0YXJnZXRGbG93W2RldGFpbC5mbG93S2V5XS5zcGxpY2UoZGV0YWlsLnBvc2l0aW9uLCAwLCBmbG93U3RlcCk7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGbG93U3RlcCAhPSBudWxsICYmIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLl9pZCA9PT0gX2lkKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuZ3JvdXAgPSBkZXRhaWwuZmxvd0tleTtcbiAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdXBkYXRlIHNjaGVtYSBhZnRlciBjaGFuZ2UgcmVxdWVzdCB0byByZXNwb25zZSBvciBpbnZlcnNlXG4gICAgICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLmJ1aWxkU2NoZW1hKHRoaXMuX2N1cnJlbnRGbG93U3RlcC5wb2xpY3kpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2V0Q3VycmVudEZsb3dTdGVwKHRoaXMuX2N1cnJlbnRGbG93U3RlcCwgc2NoZW1hLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2dldEZsb3dFbGVtZW50KHRhcmdldEZsb3cuX2lkKS5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChkZXRhaWwucG9zaXRpb24gPiBkZXRhaWwuc291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwucG9zaXRpb24sIDAsIGZsb3dTdGVwKTtcbiAgICAgICAgICAgIHNvdXJjZUZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwuc291cmNlUG9zaXRpb24sIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3VyY2VGbG93W2RldGFpbC5mbG93S2V5XS5zcGxpY2UoZGV0YWlsLnNvdXJjZVBvc2l0aW9uLCAxKTtcbiAgICAgICAgICAgIHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldLnNwbGljZShkZXRhaWwucG9zaXRpb24sIDAsIGZsb3dTdGVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yY2UgUmVmcmVzaCBzb3VyY2UgZmxvdyBlbGVtZW50IHdoZW4gbW92ZSB0byBvdGhlciBmbG93XG4gICAgICAgIGlmICh0YXJnZXRGbG93Ll9pZCAhPT0gc291cmNlRmxvdy5faWQpIHtcbiAgICAgICAgICB0aGlzLl9nZXRGbG93RWxlbWVudCh0YXJnZXRGbG93Ll9pZCkucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRGbG93W2RldGFpbC5mbG93S2V5XS5zcGxpY2UoZGV0YWlsLnBvc2l0aW9uLCAwLCBmbG93U3RlcCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGbG93Rm9ybSA9IHRoaXMuX2dldEZsb3dTdGVwRm9ybSgpO1xuICAgICAgICBpZiAoY3VycmVudEZsb3dGb3JtID09IG51bGwgfHwgY3VycmVudEZsb3dGb3JtLmRpcnR5ICE9PSB0cnVlKSB7XG4gICAgICAgICAgbGV0IHN0ZXAgPSB0YXJnZXRGbG93W2RldGFpbC5mbG93S2V5XVtkZXRhaWwucG9zaXRpb25dO1xuICAgICAgICAgIGlmIChzdGVwID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gY29uZmlybSBsb3NlIGNoYW5nZSBhZnRlciBkcm9wIHBvbGljeVxuICAgICAgICAgICAgc3RlcCA9IHRhcmdldEZsb3dbZGV0YWlsLmZsb3dLZXldW2RldGFpbC5wb3NpdGlvbiAtIDFdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkZXRhaWwuY2FuY2VsRWRpdCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2VkaXRGbG93U3RlcCh7IHN0ZXAsIHBvbGljeSwgZmxvdzogdGFyZ2V0RmxvdywgZ3JvdXA6IGRldGFpbC5mbG93S2V5IH0pO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsb3dFbGVtZW50ID0gdGhpcy5fZ2V0Rmxvd0VsZW1lbnQodGFyZ2V0Rmxvdy5faWQpO1xuICAgICAgICAgICAgICAgIGZsb3dFbGVtZW50LnNlbGVjdGVkU3RlcElkID0gc3RlcC5faWQ7XG4gICAgICAgICAgICAgICAgZmxvd0VsZW1lbnQucmVxdWVzdFVwZGF0ZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGFyZ2V0Rmxvdy5fZGlydHkgPSB0cnVlO1xuICAgICAgc291cmNlRmxvdy5fZGlydHkgPSB0cnVlO1xuICAgICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1mbG93JykuZm9yRWFjaCgoZ3ZGbG93KSA9PiBndkZsb3cucmVtb3ZlQ2FuZGlkYXRlKCkpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2RyYWdQb2xpY3kgPSBudWxsO1xuICAgICAgICB0aGlzLl9kcm9wUG9saWN5ID0gbnVsbDtcbiAgICAgIH0sIDApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9vbkRlbGV0ZVBvbGljeSh7IGRldGFpbCB9KSB7XG4gICAgY29uc3QgdGFyZ2V0RmxvdyA9IHRoaXMuX2ZpbmRGbG93QnlJZChkZXRhaWwuZmxvd0lkKTtcbiAgICB0YXJnZXRGbG93W2RldGFpbC5mbG93S2V5XS5zcGxpY2UoZGV0YWlsLnBvc2l0aW9uLCAxKTtcbiAgICB0YXJnZXRGbG93Ll9kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgICBpZiAoZGV0YWlsLnRhcmdldC5lZGl0aW5nKSB7XG4gICAgICB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fZ2V0Rmxvd0VsZW1lbnQoZGV0YWlsLmZsb3dJZCkucmVxdWVzdFVwZGF0ZSgpO1xuICB9XG5cbiAgX29uRGVzaWduKCkge1xuICAgIHRoaXMuX2NoYW5nZVRhYignZGVzaWduJyk7XG4gICAgdGhpcy5fc3BsaXRNYWluVmlld3MoKTtcbiAgfVxuXG4gIGJ1aWxkU2NoZW1hKHsgc2NoZW1hIH0pIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHtcbiAgICAgIHRpdGxlOiAnRGVzY3JpcHRpb24nLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbiBvZiBmbG93IHN0ZXAnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfTtcbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICBjb25zdCBqc29uU2NoZW1hID0gdHlwZW9mIHNjaGVtYSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHNjaGVtYSkgOiBzY2hlbWE7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0geyBkZXNjcmlwdGlvbiwgLi4uanNvblNjaGVtYS5wcm9wZXJ0aWVzIH07XG4gICAgICByZXR1cm4geyAuLi5qc29uU2NoZW1hLCBwcm9wZXJ0aWVzIH07XG4gICAgfVxuICAgIHJldHVybiB7IHByb3BlcnRpZXM6IHsgZGVzY3JpcHRpb24gfSB9O1xuICB9XG5cbiAgYXN5bmMgX2VkaXRGbG93U3RlcCh7IHN0ZXAsIGZsb3csIHBvbGljeSwgZ3JvdXAgfSkge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICB0aGlzLl9jdXJyZW50UG9saWN5SWQgPSBwb2xpY3kuaWQ7XG4gICAgICBjb25zdCBjdXJyZW50Rmxvd1N0ZXAgPSB7IGZsb3csIHN0ZXAsIHBvbGljeSwgZ3JvdXAgfTtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuYnVpbGRTY2hlbWEocG9saWN5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3NldEN1cnJlbnRGbG93U3RlcChjdXJyZW50Rmxvd1N0ZXAsIHNjaGVtYSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW2Zsb3cuX2lkXSk7XG4gICAgICAgIHRoaXMuX3NwbGl0TWFpblZpZXdzKCk7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZ3YtcG9saWN5LXN0dWRpbzprZWVwLWRvY3VtZW50YXRpb24tY2xvc2UnKSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5fb25PcGVuRG9jdW1lbnRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSgpO1xuICAgICAgdGhpcy5fbWF4aW1pemVUb3BWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX29uRWRpdEZsb3dTdGVwKHsgZGV0YWlsOiB7IHN0ZXAsIGZsb3csIHBvbGljeSwgZ3JvdXAgfSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRGbG93U3RlcCh7IHN0ZXAsIGZsb3csIHBvbGljeSwgZ3JvdXAgfSk7XG4gIH1cblxuICBfZ2V0UmVzaXphYmxlVmlld3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1yZXNpemFibGUtdmlld3MnKTtcbiAgfVxuXG4gIF9tYXhpbWl6ZVRvcFZpZXcoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG93c0lkLmxlbmd0aCA8PSAxKSB7XG4gICAgICB0aGlzLl9nZXRSZXNpemFibGVWaWV3cygpLm1heGltaXplVG9wKCk7XG4gICAgfVxuICB9XG5cbiAgX21heGltaXplQm90dG9tVmlldygpIHtcbiAgICB0aGlzLl9nZXRSZXNpemFibGVWaWV3cygpLm1heGltaXplQm90dG9tKCk7XG4gIH1cblxuICBfc3BsaXRNYWluVmlld3MoKSB7XG4gICAgdGhpcy5fZ2V0UmVzaXphYmxlVmlld3MoKS5zcGxpdCgpO1xuICB9XG5cbiAgX29uQ2hhbmdlRmxvd1N0ZXBTdGF0ZSh7IGRldGFpbCB9KSB7XG4gICAgY29uc3QgdGFyZ2V0RmxvdyA9IHRoaXMuX2ZpbmRGbG93QnlJZChkZXRhaWwuZmxvd0lkKTtcbiAgICBjb25zdCBzdGVwID0gdGFyZ2V0Rmxvd1tkZXRhaWwuZmxvd0tleV1bZGV0YWlsLnBvc2l0aW9uXTtcbiAgICBzdGVwLmVuYWJsZWQgPSBkZXRhaWwuZW5hYmxlZDtcbiAgICB0YXJnZXRGbG93Ll9kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIF9vbkNsb3NlRmxvd1N0ZXBGb3JtKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX2Nsb3NlRmxvd1N0ZXBGb3JtKGZvcmNlID0gZmFsc2UpIHtcbiAgICBhd2FpdCB0aGlzLl9zZXRDdXJyZW50Rmxvd1N0ZXAobnVsbCwgbnVsbCwgZm9yY2UpO1xuICB9XG5cbiAgYXN5bmMgX2Fza1RvVmFsaWRhdGVGb3JtcygpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzLl9zdWJtaXRPckNvbmZpcm1Gb3JtcygpKS50aGVuKChmb3JtcykgPT4ge1xuICAgICAgICBpZiAoZm9ybXMuZmlsdGVyKChyKSA9PiByICE9IG51bGwpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLl9kZWZpbml0aW9uID0gdGhpcy5fYnVpbGREZWZpbml0aW9uVG9TYXZlKCk7XG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbigpLmZvckVhY2goKGUpID0+IGUucmVxdWVzdFVwZGF0ZSgpKTtcbiAgICAgICAgICAvLyBSZWZyZXNoIGlmIGxvc2UgY2hhbmdlcyBsb3N0IGN1cnJlbnQgc3RlcCBzZWxlY3Rpb25cbiAgICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tDdXJyZW50Rmxvd1N0ZXAoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4oKS5mb3JFYWNoKChlKSA9PiBlLnJlcXVlc3RVcGRhdGUoKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgIHJldHVybiBmb3JtcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgICAgICAgIHJldHVybiBmb3JtcztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignYXNrIGFscmVhZHkgd2FpdGluZycpO1xuICB9XG5cbiAgYXN5bmMgX3NldEN1cnJlbnRGbG93U3RlcChjdXJyZW50Rmxvd1N0ZXAsIGZsb3dTdGVwU2NoZW1hLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgaWYgKCFmb3JjZSkge1xuICAgICAgYXdhaXQgdGhpcy5fYXNrVG9WYWxpZGF0ZUZvcm1zKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gZGVlcENsb25lKGZsb3dTdGVwU2NoZW1hKTtcbiAgICBpZiAoY3VycmVudEZsb3dTdGVwICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPVxuICAgICAgICB0eXBlb2YgY3VycmVudEZsb3dTdGVwLnN0ZXAuY29uZmlndXJhdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IEpTT04ucGFyc2UoY3VycmVudEZsb3dTdGVwLnN0ZXAuY29uZmlndXJhdGlvbilcbiAgICAgICAgICA6IGN1cnJlbnRGbG93U3RlcC5zdGVwLmNvbmZpZ3VyYXRpb247XG4gICAgICBjb25zdCBzdGVwID0geyAuLi5jdXJyZW50Rmxvd1N0ZXAuc3RlcCwgY29uZmlndXJhdGlvbiB9O1xuXG4gICAgICBjb25zdCBfaW5pdGlhbFZhbHVlcyA9IHsgLi4uc3RlcC5jb25maWd1cmF0aW9uLCBkZXNjcmlwdGlvbjogc3RlcC5kZXNjcmlwdGlvbiB9O1xuICAgICAgdGhpcy5fY3VycmVudEZsb3dTdGVwID0geyAuLi5jdXJyZW50Rmxvd1N0ZXAsIHN0ZXAsIF9pbml0aWFsVmFsdWVzIH07XG5cbiAgICAgIGlmIChmbG93U3RlcFNjaGVtYSAmJiBmbG93U3RlcFNjaGVtYS5wcm9wZXJ0aWVzLnNjb3BlKSB7XG4gICAgICAgIGNvbnN0IF9lbnVtID0gc2NoZW1hLnByb3BlcnRpZXMuc2NvcGUuZW51bTtcbiAgICAgICAgaWYgKF9lbnVtLmZpbmQoKHNjb3BlKSA9PiBbJ1JFUVVFU1QnLCAnUkVRVUVTVF9DT05URU5UJywgJ1JFU1BPTlNFJywgJ1JFU1BPTlNFX0NPTlRFTlQnXS5pbmNsdWRlcyhzY29wZSkpICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuX2N1cnJlbnRGbG93U3RlcC5ncm91cCA9PT0gJ3ByZScgPyBbJ1JFUVVFU1QnLCAnUkVRVUVTVF9DT05URU5UJ10gOiBbJ1JFU1BPTlNFJywgJ1JFU1BPTlNFX0NPTlRFTlQnXTtcbiAgICAgICAgICBzY2hlbWEucHJvcGVydGllcy5zY29wZS5lbnVtID0gX2VudW0uZmlsdGVyKChzY29wZSkgPT4gZmlsdGVyZWQuaW5jbHVkZXMoc2NvcGUpKTtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLmNvbmZpZ3VyYXRpb24uc2NvcGU7XG4gICAgICAgICAgaWYgKHNjb3BlID09IG51bGwgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzLnNjb3BlLmVudW0uaW5jbHVkZXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBzY2hlbWEucHJvcGVydGllcy5zY29wZS5kZWZhdWx0ID0gc2NoZW1hLnByb3BlcnRpZXMuc2NvcGUuZW51bVswXTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLmNvbmZpZ3VyYXRpb24uc2NvcGUgPSBzY2hlbWEucHJvcGVydGllcy5zY29wZS5lbnVtWzBdO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudEZsb3dTdGVwLl9pbml0aWFsVmFsdWVzLnNjb3BlID0gc2NoZW1hLnByb3BlcnRpZXMuc2NvcGUuZW51bVswXTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX3ZhbHVlcykge1xuICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX3ZhbHVlcy5zY29wZSA9IHNjaGVtYS5wcm9wZXJ0aWVzLnNjb3BlLmVudW1bMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fZmxvd1N0ZXBTY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICBfcmVmcmVzaChjbG9zZVN0ZXBGb3JtID0gdHJ1ZSkge1xuICAgIGlmIChjbG9zZVN0ZXBGb3JtKSB7XG4gICAgICB0aGlzLl9jbG9zZUZsb3dTdGVwRm9ybSh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fZGVmaW5pdGlvbiA9IGRlZXBDbG9uZSh0aGlzLl9kZWZpbml0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIF9vblNlbGVjdEZsb3dzKHsgZGV0YWlsIH0pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fY2xvc2VGbG93U3RlcEZvcm0oKTtcbiAgICAgIHRoaXMuX29uQ2xvc2VEb2N1bWVudGF0aW9uKCk7XG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKGRldGFpbC5mbG93cyk7XG4gICAgICB0aGlzLl9vbkRlc2lnbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9vbk9wZW5Eb2N1bWVudGF0aW9uRnJvbU1lbnUoeyBkZXRhaWw6IHsgcG9saWN5IH0gfSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5kb2N1bWVudGF0aW9uID09IG51bGwgfHwgdGhpcy5kb2N1bWVudGF0aW9uLmlkICE9PSBwb2xpY3kuaWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fY2xvc2VGbG93U3RlcEZvcm0oKTtcbiAgICAgICAgdGhpcy5fY3VycmVudFBvbGljeUlkID0gcG9saWN5LmlkO1xuICAgICAgICBpZiAodGhpcy5nZXRTZWxlY3RlZEZsb3coKSkge1xuICAgICAgICAgIHRoaXMuX3NwbGl0TWFpblZpZXdzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fbWF4aW1pemVCb3R0b21WaWV3KCk7XG4gICAgICAgIH1cbiAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZmV0Y2gtZG9jdW1lbnRhdGlvbicsIHsgcG9saWN5IH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cblxuICBfZmV0Y2hEb2N1bWVudGF0aW9uKHBvbGljeSkge1xuICAgIGlmICh0aGlzLmRvY3VtZW50YXRpb24gPT0gbnVsbCB8fCB0aGlzLmRvY3VtZW50YXRpb24uaWQgIT09IHBvbGljeS5pZCkge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZmV0Y2gtZG9jdW1lbnRhdGlvbicsIHsgcG9saWN5IH0pO1xuICAgIH1cbiAgfVxuXG4gIF9vbk9wZW5Eb2N1bWVudGF0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50Rmxvd1N0ZXAgJiYgdGhpcy5fY3VycmVudEZsb3dTdGVwLnBvbGljeSkge1xuICAgICAgdGhpcy5fZmV0Y2hEb2N1bWVudGF0aW9uKHRoaXMuX2N1cnJlbnRGbG93U3RlcC5wb2xpY3kpO1xuICAgIH1cbiAgfVxuXG4gIF9vbk9wZW5Eb2N1bWVudGF0aW9uRnJvbUZvcm0oKSB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2d2LXBvbGljeS1zdHVkaW86a2VlcC1kb2N1bWVudGF0aW9uLWNsb3NlJyk7XG4gICAgdGhpcy5fb25PcGVuRG9jdW1lbnRhdGlvbigpO1xuICB9XG5cbiAgX2ZpbmRGbG93Q29sbGVjdGlvbihmbG93SWQpIHtcbiAgICBjb25zdCBwbGFuID0gdGhpcy5kZWZpbmVkUGxhbnMuZmluZCgocGxhbikgPT4gcGxhbi5mbG93cy5maW5kKChmbG93KSA9PiBmbG93Ll9pZCA9PT0gZmxvd0lkKSAhPSBudWxsKTtcbiAgICByZXR1cm4geyBwbGFuLCBmbG93czogcGxhbiAhPSBudWxsID8gcGxhbi5mbG93cyA6IHRoaXMuZGVmaW5lZEZsb3dzIH07XG4gIH1cblxuICBfZmluZEZsb3dCeUlkKGZsb3dJZCkge1xuICAgIGxldCBmbG93ID0gdGhpcy5kZWZpbmVkRmxvd3MuZmluZCgoZmxvdykgPT4gZmxvdy5faWQgPT09IGZsb3dJZCk7XG4gICAgaWYgKGZsb3cgPT0gbnVsbCkge1xuICAgICAgY29uc3QgcGxhbnNGbG93cyA9IHRoaXMuZGVmaW5lZFBsYW5zLm1hcCgocGxhbikgPT4gcGxhbi5mbG93cykucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjLmNvbmNhdCh2YWwpLCBbXSk7XG4gICAgICBmbG93ID0gcGxhbnNGbG93cy5maW5kKChmbG93KSA9PiBmbG93Ll9pZCA9PT0gZmxvd0lkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZsb3c7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZsb3coaW5kZXggPSAwKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGbG93SWQgPSB0aGlzLnNlbGVjdGVkRmxvd3NJZFtpbmRleF07XG4gICAgcmV0dXJuIHRoaXMuX2ZpbmRGbG93QnlJZChzZWxlY3RlZEZsb3dJZCk7XG4gIH1cblxuICBfb25UYXJnZXRQb2xpY3koeyBkZXRhaWwgfSkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID09IG51bGwpIHtcbiAgICAgIHRoaXMuX2RyYWdQb2xpY3kgPSBkZXRhaWw7XG4gICAgfVxuICB9XG5cbiAgX29uQ2hhbmdlRmxvd1N0ZXAoeyBkZXRhaWwgfSkge1xuICAgIHRoaXMuX2N1cnJlbnRGbG93U3RlcC5fdmFsdWVzID0gZGV0YWlsLnZhbHVlcztcbiAgfVxuXG4gIF93cml0ZUZsb3dTdGVwKHZhbHVlcykge1xuICAgIGNvbnN0IHsgZGVzY3JpcHRpb24sIC4uLmNvbmZpZ3VyYXRpb24gfSA9IHZhbHVlcztcbiAgICBpZiAoXG4gICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuc3RlcC5fbmV3IHx8XG4gICAgICB0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuc3RlcC5kZXNjcmlwdGlvbiAhPT0gZGVzY3JpcHRpb24gfHxcbiAgICAgICFkZWVwRXF1YWwodGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuY29uZmlndXJhdGlvbiwgY29uZmlndXJhdGlvbilcbiAgICApIHtcbiAgICAgIGNvbnN0IGZsb3cgPSB0aGlzLl9maW5kRmxvd0J5SWQodGhpcy5fY3VycmVudEZsb3dTdGVwLmZsb3cuX2lkKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gZmxvd1t0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuZ3JvdXBdLmZpbmRJbmRleCgoc3RlcCkgPT4gc3RlcC5faWQgPT09IHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLl9pZCk7XG5cbiAgICAgIGZsb3dbdGhpcy5fY3VycmVudEZsb3dTdGVwLmdyb3VwXVtwb3NpdGlvbl0uZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgIGZsb3dbdGhpcy5fY3VycmVudEZsb3dTdGVwLmdyb3VwXVtwb3NpdGlvbl0uY29uZmlndXJhdGlvbiA9IGRlZXBDbG9uZShjb25maWd1cmF0aW9uKTtcbiAgICAgIGRlbGV0ZSBmbG93W3RoaXMuX2N1cnJlbnRGbG93U3RlcC5ncm91cF1bcG9zaXRpb25dLl9uZXc7XG4gICAgICBmbG93W3RoaXMuX2N1cnJlbnRGbG93U3RlcC5ncm91cF1bcG9zaXRpb25dLl9kaXJ0eSA9IHRydWU7XG4gICAgICBmbG93Ll9kaXJ0eSA9IHRydWU7XG4gICAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgICAgdGhpcy5fY3VycmVudEZsb3dTdGVwLmZsb3cgPSBmbG93O1xuICAgICAgdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAgPSBmbG93W3RoaXMuX2N1cnJlbnRGbG93U3RlcC5ncm91cF1bcG9zaXRpb25dO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9vblN1Ym1pdEZsb3dTdGVwKHsgZGV0YWlsIH0pIHtcbiAgICB0aGlzLl93cml0ZUZsb3dTdGVwKGRldGFpbC52YWx1ZXMpO1xuICAgIGF3YWl0IHRoaXMucmVxdWVzdFVwZGF0ZSgnX2RlZmluaXRpb24nKTtcbiAgICB0aGlzLmdldENoaWxkcmVuKCkuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlKCkpO1xuICB9XG5cbiAgX29uQ2FuY2VsRmxvdygpIHtcbiAgICB0aGlzLl9vbkRlc2lnbigpO1xuICB9XG5cbiAgX29uU3VibWl0Rmxvdyh7IGRldGFpbDogeyB2YWx1ZXMgfSB9KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGbG93ID0gdGhpcy5nZXRTZWxlY3RlZEZsb3coKTtcbiAgICBjb25zdCBfdmFsdWVzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY3JlYXRlRmxvd0Zyb21TY2hlbWEoKSwgdmFsdWVzKTtcbiAgICBjb25zdCBzZWxlY3RlZEZsb3dVcGRhdGVkID0gT2JqZWN0LmFzc2lnbih7fSwgc2VsZWN0ZWRGbG93LCBfdmFsdWVzKTtcbiAgICBpZiAoIWRlZXBFcXVhbChzZWxlY3RlZEZsb3csIHNlbGVjdGVkRmxvd1VwZGF0ZWQpKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHNlbGVjdGVkRmxvdywgc2VsZWN0ZWRGbG93VXBkYXRlZCwgeyBfZGlydHk6IHRydWUgfSk7XG4gICAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIF9vbkNhbmNlbEZsb3dNb2RlKCkge1xuICAgIHRoaXMuX29uRGVzaWduKCk7XG4gIH1cblxuICBfb25TdWJtaXRGbG93TW9kZSh7IGRldGFpbDogeyB2YWx1ZXMgfSB9KSB7XG4gICAgdGhpcy5fZGVmaW5pdGlvblsnZmxvdy1tb2RlJ10gPSB2YWx1ZXNbJ2Zsb3ctbW9kZSddIHx8ICdERUZBVUxUJztcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgfVxuXG4gIF9vbkNoYW5nZVRhYih7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fY2hhbmdlVGFiKGRldGFpbC52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBfY2hhbmdlVGFiVmFsaWRhdG9yKHsgZnJvbSwgdG8gfSkge1xuICAgIGlmIChmcm9tID09PSAncHJvcGVydGllcycpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1wcm9wZXJ0aWVzJyk7XG4gICAgICBpZiAoY29tcG9uZW50LmRpcnR5KSB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQuY29uZmlybSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZnJvbSA9PT0gJ3Jlc291cmNlcycpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1yZXNvdXJjZXMnKTtcbiAgICAgIGlmIChjb21wb25lbnQuZGlydHkpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5jb25maXJtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9hc2tUb1ZhbGlkYXRlRm9ybXMoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IG51bGw7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIF9jaGFuZ2VUYWIodGFiSWQpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9PSBudWxsKSB7XG4gICAgICB0aGlzLnRhYklkID0gdGFiSWQ7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2UtdGFiJywgdGhpcy50YWJJZCk7XG4gICAgfVxuICB9XG5cbiAgX29uRHJhZ1N0YXJ0Rmxvd1N0ZXAoZmxvdywgeyBkZXRhaWwgfSkge1xuICAgIGlmICh0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID09IG51bGwpIHtcbiAgICAgIHRoaXMuX2Ryb3BQb2xpY3kgPSBkZXRhaWw7XG4gICAgICB0aGlzLl9kcmFnUG9saWN5ID0gZGV0YWlsO1xuICAgIH1cbiAgfVxuXG4gIF9yZW5kZXJGbG93RW1wdHlTdGF0ZShyZWFkb25seU1vZGUpIHtcbiAgICByZXR1cm4gaHRtbGA8ZGl2IHNsb3Q9XCJjb250ZW50XCIgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgU2VsZWN0IGEgZmxvd1xuICAgICAgICAke3JlYWRvbmx5TW9kZSAhPT0gdHJ1ZVxuICAgICAgICAgID8gaHRtbGBvciA8Z3YtYnV0dG9uIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQWRkRmxvd31cIiBvdXRsaW5lZCBpY29uPVwiY29kZTpwbHVzXCIgbGFyZ2U+ZGVzaWduIG5ldyBvbmU8L2d2LWJ1dHRvbj5gXG4gICAgICAgICAgOiAnJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PmA7XG4gIH1cblxuICBfcmVuZGVyRmxvdyhpbmRleCA9IDAsIGhhc0VtcHR5U3RhdGUgPSB0cnVlLCByZWFkb25seU1vZGUpIHtcbiAgICBjb25zdCBmbG93ID0gdGhpcy5nZXRTZWxlY3RlZEZsb3coaW5kZXgpO1xuICAgIGlmIChmbG93KSB7XG4gICAgICBjb25zdCB7IHBsYW4gfSA9IHRoaXMuX2ZpbmRGbG93Q29sbGVjdGlvbihmbG93Ll9pZCk7XG4gICAgICBjb25zdCBzZWxlY3RlZFN0ZXBJZCA9IHRoaXMuX2N1cnJlbnRGbG93U3RlcCA/IHRoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLl9pZCA6IG51bGw7XG4gICAgICByZXR1cm4gaHRtbGAgPGd2LWZsb3dcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEwMCVcIlxuICAgICAgICAuaWQ9XCIke2Zsb3cuX2lkfVwiXG4gICAgICAgIC5mbG93PVwiJHtmbG93fVwiXG4gICAgICAgIC5wbGFuPVwiJHtwbGFufVwiXG4gICAgICAgIC5wb2xpY2llcz1cIiR7dGhpcy5wb2xpY2llc31cIlxuICAgICAgICBzbG90PVwiY29udGVudFwiXG4gICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICAuZHJhZ1BvbGljeT1cIiR7dGhpcy5fZHJhZ1BvbGljeX1cIlxuICAgICAgICAuZHJvcFBvbGljeT1cIiR7dGhpcy5fZHJvcFBvbGljeX1cIlxuICAgICAgICAuc2VsZWN0ZWRTdGVwSWQ9XCIke3NlbGVjdGVkU3RlcElkfVwiXG4gICAgICAgID9yZWFkb25seT1cIiR7cmVhZG9ubHlNb2RlfVwiXG4gICAgICAgID9oYXMtcG9saWN5LWZpbHRlcj1cIiR7dGhpcy5fcG9saWN5RmlsdGVyT3B0aW9ucyAhPSBudWxsfVwiXG4gICAgICAgIGZsb3dzLXRpdGxlPVwiJHt0aGlzLmZsb3dzVGl0bGV9XCJcbiAgICAgICAgQGd2LWZsb3c6ZHJhZy1zdGFydD1cIiR7dGhpcy5fb25EcmFnU3RhcnRGbG93U3RlcC5iaW5kKHRoaXMsIGZsb3cpfVwiXG4gICAgICAgIEBndi1mbG93OmVkaXQ9XCIke3RoaXMuX29uRWRpdEZsb3dTdGVwfVwiXG4gICAgICAgIEBndi1mbG93OmNoYW5nZS1zdGF0ZT1cIiR7dGhpcy5fb25DaGFuZ2VGbG93U3RlcFN0YXRlfVwiXG4gICAgICAgIEBndi1mbG93OmRyb3A9XCIke3RoaXMuX29uRHJvcFBvbGljeX1cIlxuICAgICAgICBAZ3YtZmxvdzpkZWxldGU9XCIke3RoaXMuX29uRGVsZXRlUG9saWN5fVwiXG4gICAgICA+PC9ndi1mbG93PmA7XG4gICAgfSBlbHNlIGlmIChoYXNFbXB0eVN0YXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyRmxvd0VtcHR5U3RhdGUocmVhZG9ubHlNb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgYDtcbiAgfVxuXG4gIF9vbkZldGNoUmVzb3VyY2VzKGV2ZW50KSB7XG4gICAgY29uc3QgeyBjdXJyZW50VGFyZ2V0LCByZWdleFR5cGVzIH0gPSBldmVudC5kZXRhaWw7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZGVmaW5lZFJlc291cmNlc1xuICAgICAgLmZpbHRlcigocmVzb3VyY2UpID0+IHJlZ2V4VHlwZXMgPT0gbnVsbCB8fCBuZXcgUmVnRXhwKHJlZ2V4VHlwZXMpLnRlc3QocmVzb3VyY2UudHlwZSkpXG4gICAgICAubWFwKChyZXNvdXJjZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy5yZXNvdXJjZVR5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHJlc291cmNlLnR5cGUpO1xuICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdndi1yb3cnKTtcbiAgICAgICAgY29uc3QgcGljdHVyZSA9IHJlc291cmNlVHlwZS5pY29uID8gcmVzb3VyY2VUeXBlLmljb24gOiBudWxsO1xuICAgICAgICByb3cuaXRlbSA9IHsgcGljdHVyZSwgbmFtZTogcmVzb3VyY2UubmFtZSB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVsZW1lbnQ6IHJvdyxcbiAgICAgICAgICB2YWx1ZTogcmVzb3VyY2UubmFtZSxcbiAgICAgICAgICBpZDogcmVzb3VyY2UudHlwZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIGN1cnJlbnRUYXJnZXQub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBfcmVuZGVyUG9saWN5KHJlYWRvbmx5TW9kZSkge1xuICAgIGlmICh0aGlzLl9mbG93U3RlcFNjaGVtYSAmJiB0aGlzLmRvY3VtZW50YXRpb24pIHtcbiAgICAgIHJldHVybiBodG1sYDxndi1yZXNpemFibGUtdmlld3MgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiIG5vLW92ZXJmbG93PlxuICAgICAgICA8ZGl2IHNsb3Q9XCJ0b3BcIj4ke3RoaXMuX3JlbmRlckZsb3dTdGVwRm9ybShyZWFkb25seU1vZGUpfTwvZGl2PlxuICAgICAgICA8ZGl2IHNsb3Q9XCJib3R0b21cIj5cbiAgICAgICAgICA8Z3YtZG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgLnRleHQ9XCIke3RoaXMuZG9jdW1lbnRhdGlvbi5jb250ZW50fVwiXG4gICAgICAgICAgICAuaW1hZ2U9XCIke3RoaXMuZG9jdW1lbnRhdGlvbi5pbWFnZX1cIlxuICAgICAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgICAgICBAZ3YtZG9jdW1lbnRhdGlvbjpjbG9zZT1cIiR7dGhpcy5fb25DbG9zZURvY3VtZW50YXRpb259XCJcbiAgICAgICAgICA+PC9ndi1kb2N1bWVudGF0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZ3YtcmVzaXphYmxlLXZpZXdzPmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRvY3VtZW50YXRpb24pIHtcbiAgICAgIHJldHVybiBodG1sYDxndi1kb2N1bWVudGF0aW9uXG4gICAgICAgIC50ZXh0PVwiJHt0aGlzLmRvY3VtZW50YXRpb24uY29udGVudH1cIlxuICAgICAgICAuaW1hZ2U9XCIke3RoaXMuZG9jdW1lbnRhdGlvbi5pbWFnZX1cIlxuICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCJcbiAgICAgICAgQGd2LWRvY3VtZW50YXRpb246Y2xvc2U9XCIke3RoaXMuX29uQ2xvc2VEb2N1bWVudGF0aW9ufVwiXG4gICAgICA+PC9ndi1kb2N1bWVudGF0aW9uPmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9mbG93U3RlcFNjaGVtYSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckZsb3dTdGVwRm9ybShyZWFkb25seU1vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG5cbiAgX2dldEZsb3dTdGVwRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYCMke0ZMT1dfU1RFUF9GT1JNX0lEfWApO1xuICB9XG5cbiAgX29uUmVzZXRGbG93U3RlcCgpIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEZsb3dTdGVwKSB7XG4gICAgICBkZWxldGUgdGhpcy5fY3VycmVudEZsb3dTdGVwLl92YWx1ZXM7XG4gICAgICB0aGlzLl9nZXRGbG93U3RlcEZvcm0oKS5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIF9nZW5lcmF0ZUZsb3dzSWQobGlzdCwgZm9yY2UgPSBmYWxzZSkge1xuICAgIHJldHVybiB0aGlzLl9nZW5lcmF0ZUlkKCdmJywgbGlzdCwgZm9yY2UsIHRydWUpO1xuICB9XG5cbiAgX2dlbmVyYXRlUGxhbkZsb3dzSWQocGxhbiwgZm9yY2UgPSBmYWxzZSkge1xuICAgIHJldHVybiB0aGlzLl9nZW5lcmF0ZUlkKHBsYW4uaWQsIHBsYW4uZmxvd3MsIGZvcmNlLCB0cnVlKTtcbiAgfVxuXG4gIF9nZW5lcmF0ZUZsb3dTdGVwSWQoZmxvd0lkLCBmbG93S2V5LCBwb3NpdGlvbikge1xuICAgIHJldHVybiBgJHtmbG93SWR9XyR7Zmxvd0tleX1fJHtwb3NpdGlvbn1gO1xuICB9XG5cbiAgX2dlbmVyYXRlSWQocHJlZml4LCBsaXN0LCBmb3JjZSA9IGZhbHNlLCBpc0Zsb3cgPSBmYWxzZSkge1xuICAgIGlmIChsaXN0KSB7XG4gICAgICByZXR1cm4gbGlzdC5tYXAoKGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IF9pZCA9IGAke3ByZWZpeH1fJHtpbmRleH1gO1xuICAgICAgICBpZiAoaXNGbG93KSB7XG4gICAgICAgICAgaWYgKGUucHJlKSB7XG4gICAgICAgICAgICBlLnByZS5mb3JFYWNoKChzdGVwLCBzdGVwSW5kZXgpID0+IChzdGVwLl9pZCA9IHRoaXMuX2dlbmVyYXRlRmxvd1N0ZXBJZChfaWQsICdwcmUnLCBzdGVwSW5kZXgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlLnBvc3QpIHtcbiAgICAgICAgICAgIGUucG9zdC5mb3JFYWNoKChzdGVwLCBzdGVwSW5kZXgpID0+IChzdGVwLl9pZCA9IHRoaXMuX2dlbmVyYXRlRmxvd1N0ZXBJZChfaWQsICdwb3N0Jywgc3RlcEluZGV4KSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9yY2UgfHwgZS5faWQgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmUsIF9pZCB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3cnKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1yZXNpemFibGUtdmlld3MnKSksXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENoaWxkcmVuKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICAvLyBKdXN0IHJlZnJlc2ggZ3YtZmxvdyBjb21wb25lbnRzXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnX2RyYWdQb2xpY3knKSkge1xuICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3cnKS5mb3JFYWNoKChmbG93KSA9PiAoZmxvdy5kcmFnUG9saWN5ID0gdGhpcy5fZHJhZ1BvbGljeSkpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdfZHJvcFBvbGljeScpKSB7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3YtZmxvdycpLmZvckVhY2goKGZsb3cpID0+IChmbG93LmRyb3BQb2xpY3kgPSB0aGlzLl9kcm9wUG9saWN5KSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgdXBkYXRlZChwcm9wcykge1xuICAgIGlmIChwcm9wcy5oYXMoJ2RvY3VtZW50YXRpb24nKSAmJiB0aGlzLmRvY3VtZW50YXRpb24gIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkRmxvd3NJZC5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKFt0aGlzLnNlbGVjdGVkRmxvd3NJZFswXV0pO1xuICAgIH1cbiAgfVxuXG4gIF9yZW5kZXJGbG93U3RlcEZvcm0ocmVhZG9ubHlNb2RlKSB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5fY3VycmVudEZsb3dTdGVwLl92YWx1ZXMgfHwgdGhpcy5fY3VycmVudEZsb3dTdGVwLl9pbml0aWFsVmFsdWVzO1xuICAgIHJldHVybiBodG1sYCR7Y2FjaGUoXG4gICAgICB0aGlzLl9mbG93U3RlcFNjaGVtYSAmJiB0aGlzLl9jdXJyZW50Rmxvd1N0ZXBcbiAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJmbG93LXN0ZXBfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsb3ctc3RlcF9fZm9ybVwiPlxuICAgICAgICAgICAgICA8Z3Ytc2NoZW1hLWZvcm1cbiAgICAgICAgICAgICAgICAuaWQ9XCIke0ZMT1dfU1RFUF9GT1JNX0lEfVwiXG4gICAgICAgICAgICAgICAgLnNjaGVtYT1cIiR7dGhpcy5fZmxvd1N0ZXBTY2hlbWF9XCJcbiAgICAgICAgICAgICAgICAuaWNvbj1cImRlc2lnbjplZGl0XCJcbiAgICAgICAgICAgICAgICBoYXMtaGVhZGVyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGUtb24tcmVuZGVyXG4gICAgICAgICAgICAgICAgLnZhbHVlcz1cIiR7dmFsdWVzfVwiXG4gICAgICAgICAgICAgICAgLmRpcnR5PVwiJHt0aGlzLl9jdXJyZW50Rmxvd1N0ZXAuX3ZhbHVlcyAhPSBudWxsfVwiXG4gICAgICAgICAgICAgICAgP3JlYWRvbmx5PVwiJHtyZWFkb25seU1vZGV9XCJcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlXG4gICAgICAgICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOmNoYW5nZT1cIiR7dGhpcy5fb25DaGFuZ2VGbG93U3RlcH1cIlxuICAgICAgICAgICAgICAgIEBndi1zY2hlbWEtZm9ybTpyZXNldD1cIiR7dGhpcy5fb25SZXNldEZsb3dTdGVwfVwiXG4gICAgICAgICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOmZldGNoLXJlc291cmNlcz1cIiR7dGhpcy5fb25GZXRjaFJlc291cmNlc31cIlxuICAgICAgICAgICAgICAgIEBndi1zY2hlbWEtZm9ybTpzdWJtaXQ9XCIke3RoaXMuX29uU3VibWl0Rmxvd1N0ZXB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgc2xvdD1cInRpdGxlXCIgY2xhc3M9XCJmbG93LXN0ZXBfX2Zvcm0tdGl0bGVcIj4ke3RoaXMuX2N1cnJlbnRGbG93U3RlcC5zdGVwLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGd2LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgc2xvdD1cImhlYWRlci1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGljb249XCJnZW5lcmFsOmNsb3NlXCJcbiAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25DbG9zZUZsb3dTdGVwRm9ybX1cIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJDbG9zZSAoZXNjKVwiXG4gICAgICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgICAgIHNsb3Q9XCJoZWFkZXItbGVmdFwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwiaG9tZTpib29rXCJcbiAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5kb2N1bWVudGF0aW9uICE9IG51bGx9XCJcbiAgICAgICAgICAgICAgICAgIG91dGxpbmVkXG4gICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25PcGVuRG9jdW1lbnRhdGlvbkZyb21Gb3JtfVwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIk9wZW4gZG9jdW1lbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvZ3YtYnV0dG9uPlxuICAgICAgICAgICAgICA8L2d2LXNjaGVtYS1mb3JtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+YFxuICAgICAgICA6ICcnLFxuICAgICl9YDtcbiAgfVxuXG4gIF9vbkNsb3NlRG9jdW1lbnRhdGlvbigpIHtcbiAgICB0aGlzLmRvY3VtZW50YXRpb24gPSBudWxsO1xuICAgIGlmICh0aGlzLl9jdXJyZW50Rmxvd1N0ZXAgPT0gbnVsbCkge1xuICAgICAgdGhpcy5fbWF4aW1pemVUb3BWaWV3KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdndi1wb2xpY3ktc3R1ZGlvOmtlZXAtZG9jdW1lbnRhdGlvbi1jbG9zZScsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIF9vbkRlbGV0ZUZsb3coeyBkZXRhaWwgfSkge1xuICAgIGNvbnN0IGZsb3dJZCA9IGRldGFpbC5jb250ZW50Ll9pZDtcbiAgICBjb25zdCB7IGZsb3dzIH0gPSB0aGlzLl9maW5kRmxvd0NvbGxlY3Rpb24oZmxvd0lkKTtcbiAgICBjb25zdCBmbG93ID0gZmxvd3MuZmluZCgoZmxvdykgPT4gZmxvdy5faWQgPT09IGZsb3dJZCk7XG4gICAgdGhpcy5fZGVsZXRlRmxvdyhmbG93cywgZmxvdyk7XG4gIH1cblxuICBnZXQgZGVmaW5lZEZsb3dzKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uICYmIHRoaXMuX2RlZmluaXRpb24uZmxvd3MgPyB0aGlzLl9kZWZpbml0aW9uLmZsb3dzIDogW107XG4gIH1cblxuICBnZXQgZGVmaW5lZFBsYW5zKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uICYmIHRoaXMuX2RlZmluaXRpb24ucGxhbnMgPyB0aGlzLl9kZWZpbml0aW9uLnBsYW5zIDogW107XG4gIH1cblxuICBnZXQgZGVmaW5lZFJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmaW5pdGlvbiAmJiB0aGlzLl9kZWZpbml0aW9uLnJlc291cmNlcyA/IHRoaXMuX2RlZmluaXRpb24ucmVzb3VyY2VzIDogW107XG4gIH1cblxuICBnZXQgZGVmaW5lZFByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmluaXRpb24gJiYgdGhpcy5fZGVmaW5pdGlvbi5wcm9wZXJ0aWVzID8gdGhpcy5fZGVmaW5pdGlvbi5wcm9wZXJ0aWVzIDogW107XG4gIH1cblxuICBhc3luYyBfb25EdXBsaWNhdGVGbG93KHsgZGV0YWlsIH0pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fYXNrVG9WYWxpZGF0ZUZvcm1zKCk7XG5cbiAgICAgIGNvbnN0IGZsb3dJZCA9IGRldGFpbC5jb250ZW50Ll9pZDtcbiAgICAgIGNvbnN0IHsgcGxhbiwgZmxvd3MgfSA9IHRoaXMuX2ZpbmRGbG93Q29sbGVjdGlvbihmbG93SWQpO1xuICAgICAgdGhpcy5fYWRkRmxvdyhmbG93cywgdGhpcy5fZmluZEZsb3dCeUlkKGZsb3dJZCkpO1xuICAgICAgaWYgKHBsYW4gIT0gbnVsbCkge1xuICAgICAgICBsZXQgcGxhbkluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5kZWZpbmVkUGxhbnMuZmluZCgocCwgaSkgPT4ge1xuICAgICAgICAgIGlmIChwLmlkID09PSBwbGFuLmlkKSB7XG4gICAgICAgICAgICBwbGFuSW5kZXggPSBpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHBsYW4uZmxvd3MgPSBmbG93cztcbiAgICAgICAgdGhpcy5kZWZpbmVkUGxhbnNbcGxhbkluZGV4XS5mbG93cyA9IHRoaXMuX2dlbmVyYXRlUGxhbkZsb3dzSWQocGxhbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW3RoaXMuZGVmaW5lZFBsYW5zW3BsYW5JbmRleF0uZmxvd3NbZmxvd3MubGVuZ3RoIC0gMV0uX2lkXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9kZWZpbml0aW9uLmZsb3dzID0gdGhpcy5fZ2VuZXJhdGVGbG93c0lkKHRoaXMuX2RlZmluaXRpb24uZmxvd3MpO1xuICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKFt0aGlzLl9kZWZpbml0aW9uLmZsb3dzW3RoaXMuX2RlZmluaXRpb24uZmxvd3MubGVuZ3RoIC0gMV0uX2lkXSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfb25DaGFuZ2VGbG93U3RhdGUoeyBkZXRhaWwgfSkge1xuICAgIGNvbnN0IGZsb3cgPSB0aGlzLl9maW5kRmxvd0J5SWQoZGV0YWlsLmNvbnRlbnQuX2lkKTtcbiAgICBmbG93LmVuYWJsZWQgPSBkZXRhaWwuZW5hYmxlZDtcbiAgICBmbG93Ll9kaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIF9vbkFkZEZsb3dQbGFuKHsgZGV0YWlsIH0pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fYXNrVG9WYWxpZGF0ZUZvcm1zKCk7XG4gICAgICB0aGlzLl9hZGRGbG93KHRoaXMuZGVmaW5lZFBsYW5zW2RldGFpbC5wbGFuSW5kZXhdLmZsb3dzKTtcbiAgICAgIHRoaXMuZGVmaW5lZFBsYW5zW2RldGFpbC5wbGFuSW5kZXhdLmZsb3dzID0gdGhpcy5fZ2VuZXJhdGVQbGFuRmxvd3NJZCh0aGlzLmRlZmluZWRQbGFuc1tkZXRhaWwucGxhbkluZGV4XSk7XG4gICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKFt0aGlzLmRlZmluZWRQbGFuc1tkZXRhaWwucGxhbkluZGV4XS5mbG93c1t0aGlzLmRlZmluZWRQbGFuc1tkZXRhaWwucGxhbkluZGV4XS5mbG93cy5sZW5ndGggLSAxXS5faWRdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9vbkFkZEZsb3coKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2Fza1RvVmFsaWRhdGVGb3JtcygpO1xuXG4gICAgICB0aGlzLl9hZGRGbG93KHRoaXMuX2RlZmluaXRpb24uZmxvd3MpO1xuICAgICAgdGhpcy5fZGVmaW5pdGlvbi5mbG93cyA9IHRoaXMuX2dlbmVyYXRlRmxvd3NJZCh0aGlzLl9kZWZpbml0aW9uLmZsb3dzKTtcbiAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGVkRmxvd3MoW3RoaXMuX2RlZmluaXRpb24uZmxvd3NbdGhpcy5fZGVmaW5pdGlvbi5mbG93cy5sZW5ndGggLSAxXS5faWRdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9hZGRGbG93KGNvbGxlY3Rpb24sIGR1cGxpY2F0ZSA9IG51bGwpIHtcbiAgICBjb25zdCBmbG93ID1cbiAgICAgIGR1cGxpY2F0ZSA9PSBudWxsXG4gICAgICAgID8gdGhpcy5fY3JlYXRlRmxvd0Zyb21TY2hlbWEoKVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLmR1cGxpY2F0ZSxcbiAgICAgICAgICAgIF9pZDogbnVsbCxcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBpZCB0byBhdm9pZCBpc3N1ZSB3aXRoIEFNIHRoYXQgcGVyc2lzdHMgdGhlIElEXG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIF9kaXJ0eTogdHJ1ZSxcbiAgICAgICAgICB9O1xuXG4gICAgY29sbGVjdGlvbi5wdXNoKGZsb3cpO1xuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH1cblxuICBfY3JlYXRlRmxvd0Zyb21TY2hlbWEoKSB7XG4gICAgY29uc3QgbmV3RmxvdyA9IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgcHJlOiBbXSxcbiAgICAgIHBvc3Q6IFtdLFxuICAgICAgX2RpcnR5OiB0cnVlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5faW5zdGFudGlhdGUodGhpcy5mbG93U2NoZW1hLnByb3BlcnRpZXMsIG5ld0Zsb3cpO1xuICB9XG5cbiAgX2luc3RhbnRpYXRlKHByb3BlcnRpZXNEZWZpbml0aW9uLCBpbml0aWF0b3IgPSB7fSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0geyAuLi5pbml0aWF0b3IgfTtcblxuICAgIGlmIChwcm9wZXJ0aWVzRGVmaW5pdGlvbikge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocHJvcGVydGllc0RlZmluaXRpb24pKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcHJvcGVydGllc0RlZmluaXRpb25ba2V5XTtcblxuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBwcm9wZXJ0eVtrZXldID0gdGhpcy5faW5zdGFudGlhdGUoZW50cnkucHJvcGVydGllcywgKGluaXRpYXRvciA9IHt9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5LmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BlcnR5W2tleV0gPSBlbnRyeS5kZWZhdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcHJvcGVydHlba2V5XSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9XG5cbiAgX2RlbGV0ZUZsb3coY29sbGVjdGlvbiwgZmxvdykge1xuICAgIGNvbnN0IGluZGV4ID0gY29sbGVjdGlvbi5pbmRleE9mKGZsb3cpO1xuICAgIGNvbGxlY3Rpb24uc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb25zdCBzZWxlY3RlZEZsb3dzID0gdGhpcy5zZWxlY3RlZEZsb3dzSWQuZmlsdGVyKChmbG93SWQpID0+IGZsb3dJZCAhPT0gZmxvdy5faWQpO1xuICAgIGlmIChzZWxlY3RlZEZsb3dzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRGbG93cyhzZWxlY3RlZEZsb3dzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RGbG93KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLl9jaGFuZ2VUYWIoJ2Rlc2lnbicpO1xuICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICB0aGlzLmlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgX2ZpbmRGbG93SW5kZXgobGlzdCwgaWQpIHtcbiAgICBsZXQgaW5kZXggPSBudWxsO1xuICAgIGxpc3QuZmluZCgoZiwgaSkgPT4ge1xuICAgICAgaWYgKGYuX2lkID09PSBpZCkge1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFzeW5jIF9vblJlb3JkZXJGbG93cyh7IGRldGFpbDogeyBwbGFuIH0gfSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9hc2tUb1ZhbGlkYXRlRm9ybXMoKTtcbiAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gICAgICBpZiAocGxhbiAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5ld09yZGVyID0gdGhpcy5fZ2VuZXJhdGVQbGFuRmxvd3NJZChwbGFuLCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG93c0lkKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0ZWRGbG93cyhcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGbG93c0lkLm1hcCgoZmxvd0lkKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZmluZEZsb3dJbmRleChwbGFuLmZsb3dzLCBmbG93SWQpO1xuICAgICAgICAgICAgICByZXR1cm4gaW5kZXggIT0gbnVsbCA/IG5ld09yZGVyW2luZGV4XS5faWQgOiBmbG93SWQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHBsYW4uZmxvd3MgPSBuZXdPcmRlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld09yZGVyID0gdGhpcy5fZ2VuZXJhdGVGbG93c0lkKHRoaXMuX2RlZmluaXRpb24uZmxvd3MsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZsb3dzSWQpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3RlZEZsb3dzKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZsb3dzSWQubWFwKChmbG93SWQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9maW5kRmxvd0luZGV4KHRoaXMuX2RlZmluaXRpb24uZmxvd3MsIGZsb3dJZCk7XG4gICAgICAgICAgICAgIHJldHVybiBpbmRleCAhPSBudWxsID8gbmV3T3JkZXJbaW5kZXhdLl9pZCA6IGZsb3dJZDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGVmaW5pdGlvbi5mbG93cyA9IG5ld09yZGVyO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIF9vblNlYXJjaFBvbGljeSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fc2VhcmNoUG9saWN5UXVlcnkgPSBkZXRhaWw7XG4gIH1cblxuICBfb25DbGVhclBvbGljeSgpIHtcbiAgICB0aGlzLl9zZWFyY2hQb2xpY3lRdWVyeSA9IG51bGw7XG4gIH1cblxuICBfb25TZWFyY2hGbG93cyh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5fc2VhcmNoRmxvd1F1ZXJ5ID0gZGV0YWlsO1xuICB9XG5cbiAgX29uQ2xlYXJGbG93cygpIHtcbiAgICB0aGlzLl9zZWFyY2hGbG93UXVlcnkgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgX29uUmVzZXRBbGwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKCk7XG4gICAgICB0aGlzLmRlZmluaXRpb24gPSBkZWVwQ2xvbmUodGhpcy5faW5pdGlhbERlZmluaXRpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9maWx0ZXJOb3RWYWxpZFN0ZXAoc3RlcCkge1xuICAgIHJldHVybiBzdGVwLl9uZXcgIT09IHRydWU7XG4gIH1cblxuICBfcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXMobykge1xuICAgIGNvbnN0IGNvcHkgPSB7IC4uLm8gfTtcbiAgICBPYmplY3Qua2V5cyhvKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkuc3RhcnRzV2l0aCgnXycpKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkZWxldGUgY29weVtrZXldO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICBfc3VibWl0T3JDb25maXJtRm9ybXMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0nKV1cbiAgICAgIC5maWx0ZXIoKGZvcm0pID0+IHtcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGZvcm0uaXNWYWxpZCgpO1xuICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgIGlmIChmb3JtLmRpcnR5KSB7XG4gICAgICAgICAgICBmb3JtLnN1Ym1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzVmFsaWQ7XG4gICAgICB9KVxuICAgICAgLm1hcCgoZm9ybSkgPT4gZm9ybS5jb25maXJtKCkpO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllc0VsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1wcm9wZXJ0aWVzJyk7XG4gIH1cblxuICBhc3luYyBfY2hlY2tDdXJyZW50Rmxvd1N0ZXAoKSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRGbG93U3RlcCAmJiB0aGlzLnNlbGVjdGVkRmxvd3NJZCkge1xuICAgICAgY29uc3QgY2xvc2VQcm9taXNlcyA9IHRoaXMuc2VsZWN0ZWRGbG93c0lkXG4gICAgICAgIC5tYXAoKGZsb3dJZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZsb3cgPSB0aGlzLl9maW5kRmxvd0J5SWQoZmxvd0lkKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IFsuLi5mbG93LnByZSwgLi4uZmxvdy5wb3N0XS5maW5kKChzdGVwKSA9PiBzdGVwLl9pZCA9PT0gdGhpcy5fY3VycmVudEZsb3dTdGVwLnN0ZXAuX2lkKTtcbiAgICAgICAgICBpZiAoY3VycmVudFN0ZXAgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlRmxvd1N0ZXBGb3JtKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigocCkgPT4gcCAhPT0gbnVsbCk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoY2xvc2VQcm9taXNlcyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHNhdmVkKCkge1xuICAgIGlmICh0aGlzLmlzRGlydHkpIHtcbiAgICAgIHRoaXMuX2luaXRpYWxEZWZpbml0aW9uID0gZGVlcENsb25lKHRoaXMuX2RlZmluaXRpb25TYXZlZCk7XG4gICAgICB0aGlzLl9kZWZpbml0aW9uID0gZGVlcENsb25lKHRoaXMuX2RlZmluaXRpb25TYXZlZCk7XG4gICAgICB0aGlzLl9kZWZpbml0aW9uU2F2ZWQgPSBudWxsO1xuICAgICAgdGhpcy5pc0RpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGVja0N1cnJlbnRGbG93U3RlcCgpO1xuICAgICAgdGhpcy5kZWZpbmVkUGxhbnMuZm9yRWFjaCgocGxhbikgPT4ge1xuICAgICAgICBwbGFuLmZsb3dzLmZvckVhY2goKGZsb3cpID0+IChmbG93Ll9kaXJ0eSA9IGZhbHNlKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVmaW5lZEZsb3dzLmZvckVhY2goKGZsb3cpID0+IChmbG93Ll9kaXJ0eSA9IGZhbHNlKSk7XG4gICAgICB0aGlzLmdldENoaWxkcmVuKCkuZm9yRWFjaCgoZSkgPT4gZS5yZXF1ZXN0VXBkYXRlKCkpO1xuICAgIH1cbiAgfVxuXG4gIF9idWlsZERlZmluaXRpb25Ub1NhdmUoKSB7XG4gICAgLy8gQ29weSBkZWZpbml0aW9uIGFuZCByZW1vdmUgaW52YWxpZCBzdGVwXG4gICAgLy8gS2VlcCBwcml2YXRlIHByb3BlcnRpZXMgbGlrZSBfaWQgYW5kIG90aGVycyBzdHVmZiB1c2VmdWwgZm9yIHJlbmRlclxuICAgIGNvbnN0IGZsb3dzID0gdGhpcy5fZGVmaW5pdGlvbi5mbG93cy5tYXAoKGZsb3cpID0+IHtcbiAgICAgIGZsb3cucHJlID0gZmxvdy5wcmUuZmlsdGVyKHRoaXMuX2ZpbHRlck5vdFZhbGlkU3RlcCk7XG4gICAgICBmbG93LnBvc3QgPSBmbG93LnBvc3QuZmlsdGVyKHRoaXMuX2ZpbHRlck5vdFZhbGlkU3RlcCk7XG4gICAgICByZXR1cm4gZmxvdztcbiAgICB9KTtcblxuICAgIGxldCBkZWZpbml0aW9uID0geyAuLi50aGlzLl9kZWZpbml0aW9uLCBmbG93cyB9O1xuXG4gICAgaWYgKHRoaXMuX2RlZmluaXRpb24ucGxhbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgcGxhbnMgPSB0aGlzLl9kZWZpbml0aW9uLnBsYW5zLm1hcCgocGxhbikgPT4ge1xuICAgICAgICBjb25zdCBmbG93cyA9IHBsYW4uZmxvd3MubWFwKChmbG93KSA9PiB7XG4gICAgICAgICAgZmxvdy5wcmUgPSBmbG93LnByZS5maWx0ZXIodGhpcy5fZmlsdGVyTm90VmFsaWRTdGVwKTtcbiAgICAgICAgICBmbG93LnBvc3QgPSBmbG93LnBvc3QuZmlsdGVyKHRoaXMuX2ZpbHRlck5vdFZhbGlkU3RlcCk7XG4gICAgICAgICAgcmV0dXJuIGZsb3c7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyAuLi5wbGFuLCBmbG93cyB9O1xuICAgICAgfSk7XG4gICAgICBkZWZpbml0aW9uID0geyAuLi5kZWZpbml0aW9uLCBwbGFucyB9O1xuICAgIH1cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIF9idWlsZERlZmluaXRpb25Ub1NlbmQoZGVmaW5pdGlvblRvU2F2ZSkge1xuICAgIC8vIENvcHkgZGVmaW5pdGlvbiBhbmQgcmVtb3ZlIGFsbCBwcml2YXRlIHByb3BlcnRpZXNcbiAgICBjb25zdCBmbG93cyA9IGRlZmluaXRpb25Ub1NhdmUuZmxvd3MubWFwKChmKSA9PiB7XG4gICAgICBjb25zdCBmbG93ID0gdGhpcy5fcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXMoZik7XG4gICAgICBmbG93LnByZSA9IGZsb3cucHJlLm1hcCh0aGlzLl9yZW1vdmVQcml2YXRlUHJvcGVydGllcyk7XG4gICAgICBmbG93LnBvc3QgPSBmbG93LnBvc3QubWFwKHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKTtcbiAgICAgIHJldHVybiBmbG93O1xuICAgIH0pO1xuXG4gICAgbGV0IGRlZmluaXRpb24gPSB7IC4uLnRoaXMuX2RlZmluaXRpb24sIGZsb3dzIH07XG4gICAgaWYgKHRoaXMuX2RlZmluaXRpb24ucGxhbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgcGxhbnMgPSBkZWZpbml0aW9uVG9TYXZlLnBsYW5zLm1hcCgocGxhbikgPT4ge1xuICAgICAgICBjb25zdCBmbG93cyA9IHBsYW4uZmxvd3MubWFwKChmKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmxvdyA9IHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKGYpO1xuICAgICAgICAgIGZsb3cucHJlID0gZmxvdy5wcmUubWFwKHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKTtcbiAgICAgICAgICBmbG93LnBvc3QgPSBmbG93LnBvc3QubWFwKHRoaXMuX3JlbW92ZVByaXZhdGVQcm9wZXJ0aWVzKTtcbiAgICAgICAgICByZXR1cm4gZmxvdztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IC4uLnBsYW4sIGZsb3dzIH07XG4gICAgICB9KTtcbiAgICAgIGRlZmluaXRpb24gPSB7IC4uLmRlZmluaXRpb24sIHBsYW5zIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RlZmluaXRpb24ucHJvcGVydGllcyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5fZGVmaW5pdGlvbi5wcm9wZXJ0aWVzLm1hcCh0aGlzLl9yZW1vdmVQcml2YXRlUHJvcGVydGllcyk7XG4gICAgICBkZWZpbml0aW9uID0geyAuLi5kZWZpbml0aW9uLCBwcm9wZXJ0aWVzIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RlZmluaXRpb24ucmVzb3VyY2VzICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuX2RlZmluaXRpb24ucmVzb3VyY2VzLm1hcCh0aGlzLl9yZW1vdmVQcml2YXRlUHJvcGVydGllcyk7XG4gICAgICBkZWZpbml0aW9uID0geyAuLi5kZWZpbml0aW9uLCByZXNvdXJjZXMgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxuXG4gIF9vblNhdmVBbGwoKSB7XG4gICAgaWYgKHRoaXMuaGFzUHJvcGVydGllcykge1xuICAgICAgdGhpcy5nZXRQcm9wZXJ0aWVzRWxlbWVudCgpLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIFByb21pc2UuYWxsKHRoaXMuX3N1Ym1pdE9yQ29uZmlybUZvcm1zKCkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX2RlZmluaXRpb25TYXZlZCA9IHRoaXMuX2J1aWxkRGVmaW5pdGlvblRvU2F2ZSgpO1xuICAgICAgICBjb25zdCBkZWZpbml0aW9uID0gdGhpcy5fYnVpbGREZWZpbml0aW9uVG9TZW5kKHRoaXMuX2RlZmluaXRpb25TYXZlZCk7XG4gICAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ3NhdmUnLCB7IGRlZmluaXRpb24sIHNlcnZpY2VzOiB0aGlzLnNlcnZpY2VzIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtwb2xpY3ktc3R1ZGlvXSBFcnJvciBvbiBzYXZlYCwgZXJyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgX29uRGVidWcocmVxdWVzdEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaGFzUHJvcGVydGllcykge1xuICAgICAgdGhpcy5nZXRQcm9wZXJ0aWVzRWxlbWVudCgpLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIFByb21pc2UuYWxsKHRoaXMuX3N1Ym1pdE9yQ29uZmlybUZvcm1zKCkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzLl9idWlsZERlZmluaXRpb25Ub1NlbmQodGhpcy5fYnVpbGREZWZpbml0aW9uVG9TYXZlKCkpO1xuICAgICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkZWJ1ZycsIHsgZGVmaW5pdGlvbiwgc2VydmljZXM6IHRoaXMuc2VydmljZXMsIHJlcXVlc3Q6IHJlcXVlc3RFdmVudC5kZXRhaWwucmVxdWVzdCB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbcG9saWN5LXN0dWRpb10gRXJyb3Igb24gZGVidWdgLCBlcnIpO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRGbG93cygpIHtcbiAgICBpZiAodGhpcy5fZmxvd0ZpbHRlci5sZW5ndGggPT09IDAgfHwgdGhpcy5fZmxvd0ZpbHRlci5pbmNsdWRlcygnYXBpJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmluZWRGbG93cztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRQbGFucygpIHtcbiAgICBpZiAodGhpcy5fZmxvd0ZpbHRlci5sZW5ndGggPT09IDAgfHwgdGhpcy5fZmxvd0ZpbHRlci5pbmNsdWRlcygncGxhbicpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWZpbmVkUGxhbnM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgX29uRmlsdGVyRmxvd3MoeyBkZXRhaWwgfSkge1xuICAgIGlmICh0aGlzLl9mbG93RmlsdGVyLmluY2x1ZGVzKGRldGFpbC5pZCkpIHtcbiAgICAgIHRoaXMuX2Zsb3dGaWx0ZXIgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZmxvd0ZpbHRlciA9IFtkZXRhaWwuaWRdO1xuICAgIH1cbiAgfVxuXG4gIF9nZXRGaWx0ZXJlZFBvbGljaWVzKCkge1xuICAgIGlmICh0aGlzLl9wb2xpY3lGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9saWNpZXMuZmlsdGVyKChwb2xpY3kpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAocG9saWN5Lm9uUmVxdWVzdCAmJiB0aGlzLl9wb2xpY3lGaWx0ZXIuaW5jbHVkZXMoJ29uUmVxdWVzdCcpKSB8fCAocG9saWN5Lm9uUmVzcG9uc2UgJiYgdGhpcy5fcG9saWN5RmlsdGVyLmluY2x1ZGVzKCdvblJlc3BvbnNlJykpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucG9saWNpZXM7XG4gIH1cblxuICBfb25GaWx0ZXJQb2xpY2llcyh7IGRldGFpbCB9KSB7XG4gICAgaWYgKHRoaXMuX3BvbGljeUZpbHRlci5pbmNsdWRlcyhkZXRhaWwuaWQpKSB7XG4gICAgICB0aGlzLl9wb2xpY3lGaWx0ZXIgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcG9saWN5RmlsdGVyID0gW2RldGFpbC5pZF07XG4gICAgfVxuICB9XG5cbiAgX3JlbmRlckRlc2lnbihyZWFkb25seU1vZGUpIHtcbiAgICByZXR1cm4gaHRtbGAgPGRpdiBpZD1cImRlc2lnblwiIHNsb3Q9XCJjb250ZW50XCIgY2xhc3M9XCJkZXNpZ25cIj5cbiAgICAgIDxndi1yZXNpemFibGUtdmlld3Mgbm8tb3ZlcmZsb3c+XG4gICAgICAgIDxkaXYgc2xvdD1cInRvcFwiPiR7dGhpcy5fcmVuZGVyRmxvdygwLCB0cnVlLCByZWFkb25seU1vZGUpfTwvZGl2PlxuXG4gICAgICAgIDxkaXYgc2xvdD1cImJvdHRvbVwiPlxuICAgICAgICAgICR7dGhpcy5fcmVuZGVyRmxvdygxLCBmYWxzZSwgcmVhZG9ubHlNb2RlKX0gJHt0aGlzLl9yZW5kZXJQb2xpY3kocmVhZG9ubHlNb2RlKX0gJHt0aGlzLl9yZW5kZXJGbG93Rm9ybShyZWFkb25seU1vZGUpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZ3YtcmVzaXphYmxlLXZpZXdzPlxuICAgICAgJHtyZWFkb25seU1vZGUgIT09IHRydWVcbiAgICAgICAgPyBodG1sYDxndi1wb2xpY3ktc3R1ZGlvLW1lbnVcbiAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtbWVudVwiXG4gICAgICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCJcbiAgICAgICAgICAgIC5wb2xpY2llcz1cIiR7dGhpcy5fZ2V0RmlsdGVyZWRQb2xpY2llcygpfVwiXG4gICAgICAgICAgICAuc2VsZWN0ZWRJZHM9XCIke1t0aGlzLl9jdXJyZW50UG9saWN5SWRdfVwiXG4gICAgICAgICAgICAucXVlcnk9XCIke3RoaXMuX3NlYXJjaFBvbGljeVF1ZXJ5fVwiXG4gICAgICAgICAgICA/aGFzLXBvbGljeS1maWx0ZXI9XCIke3RoaXMuX3BvbGljeUZpbHRlck9wdGlvbnMgIT0gbnVsbH1cIlxuICAgICAgICAgICAgP3JlYWRvbmx5PVwiJHtyZWFkb25seU1vZGV9XCJcbiAgICAgICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6dGFyZ2V0LXBvbGljeT1cIiR7dGhpcy5fb25UYXJnZXRQb2xpY3l9XCJcbiAgICAgICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6ZmV0Y2gtZG9jdW1lbnRhdGlvbj1cIiR7dGhpcy5fb25PcGVuRG9jdW1lbnRhdGlvbkZyb21NZW51fVwiXG4gICAgICAgICAgICBAZ3YtcG9saWN5LXN0dWRpby1tZW51OmRyYWdlbmQtcG9saWN5PVwiJHt0aGlzLl9vbkRyYWdFbmRQb2xpY3l9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IHNsb3Q9XCJoZWFkZXJcIiBjbGFzcz1cInNlYXJjaC1wb2xpY2llc1wiPlxuICAgICAgICAgICAgICAke3RoaXMuX3BvbGljeUZpbHRlck9wdGlvbnMgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gaHRtbGA8Z3Ytb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICAgICAgICAgICAgICAub3B0aW9ucz1cIiR7dGhpcy5fcG9saWN5RmlsdGVyT3B0aW9uc31cIlxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICBvdXRsaW5lZFxuICAgICAgICAgICAgICAgICAgICAudmFsdWU9XCIke3RoaXMuX3BvbGljeUZpbHRlcn1cIlxuICAgICAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgICAgICBAZ3Ytb3B0aW9uOnNlbGVjdD1cIiR7dGhpcy5fb25GaWx0ZXJQb2xpY2llc31cIlxuICAgICAgICAgICAgICAgICAgPjwvZ3Ytb3B0aW9uPmBcbiAgICAgICAgICAgICAgICA6ICcnfVxuICAgICAgICAgICAgICA8Z3YtaW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1wb2xpY3lcIlxuICAgICAgICAgICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHBvbGljaWVzIChTaGlmdCArIEN0cmwgKyBTcGFjZSlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgQGd2LWlucHV0OmlucHV0PVwiJHt0aGlzLl9vblNlYXJjaFBvbGljeX1cIlxuICAgICAgICAgICAgICAgIEBndi1pbnB1dDpjbGVhcj1cIiR7dGhpcy5fb25DbGVhclBvbGljeX1cIlxuICAgICAgICAgICAgICA+PC9ndi1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZ3YtcG9saWN5LXN0dWRpby1tZW51PmBcbiAgICAgICAgOiAnJ31cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgX3JlbmRlckRlYnVnKCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5kZWJ1Z1Jlc3BvbnNlID8gdGhpcy5kZWJ1Z1Jlc3BvbnNlLnJlc3BvbnNlIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IHRoaXMuZGVidWdSZXNwb25zZSA/IHRoaXMuZGVidWdSZXNwb25zZS5pc0xvYWRpbmcgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZGVidWdSZXNwb25zZSAmJiB0aGlzLmRlYnVnUmVzcG9uc2UucmVxdWVzdCA/IHRoaXMuZGVidWdSZXNwb25zZS5yZXF1ZXN0LnBhdGggOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5kZWJ1Z1Jlc3BvbnNlICYmIHRoaXMuZGVidWdSZXNwb25zZS5yZXF1ZXN0ID8gdGhpcy5kZWJ1Z1Jlc3BvbnNlLnJlcXVlc3QubWV0aG9kIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBodG1sYDxndi1odHRwLWNsaWVudFxuICAgICAgaWQ9XCJkZWJ1Z1wiXG4gICAgICBzbG90PVwiY29udGVudFwiXG4gICAgICBjbGFzcz1cImRlYnVnXCJcbiAgICAgIEBndi1odHRwLWNsaWVudDpzZW5kPVwiJHt0aGlzLl9vbkRlYnVnfVwiXG4gICAgICAucmVzcG9uc2U9XCIke3Jlc3BvbnNlfVwiXG4gICAgICAucGF0aD1cIiR7cGF0aH1cIlxuICAgICAgLm1ldGhvZD1cIiR7bWV0aG9kfVwiXG4gICAgICA/bG9hZGluZz1cIiR7aXNMb2FkaW5nfVwiXG4gICAgPlxuICAgIDwvZ3YtaHR0cC1jbGllbnQ+YDtcbiAgfVxuXG4gIF9yZW5kZXJDb25maWd1cmF0aW9uRm9ybShyZWFkb25seU1vZGUpIHtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uU2NoZW1hKSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBkZWVwQ2xvbmUodGhpcy5fZGVmaW5pdGlvbik7XG4gICAgICByZXR1cm4gaHRtbGAgPGRpdiBpZD1cInNldHRpbmdzXCIgc2xvdD1cImNvbnRlbnRcIiBjbGFzcz1cImFwaS1zZXR0aW5nc1wiIEBkcmFnb3Zlcj1cIiR7dGhpcy5fb25EZXNpZ259XCI+XG4gICAgICAgIDxndi1zY2hlbWEtZm9ybVxuICAgICAgICAgIC5zY2hlbWE9XCIke3RoaXMuY29uZmlndXJhdGlvblNjaGVtYX1cIlxuICAgICAgICAgIGlkPVwiYXBpLXNldHRpbmdzLWZvcm1cIlxuICAgICAgICAgIC52YWx1ZXM9XCIke3ZhbHVlc31cIlxuICAgICAgICAgIGhhcy1oZWFkZXJcbiAgICAgICAgICBoYXMtZm9vdGVyXG4gICAgICAgICAgc2Nyb2xsYWJsZVxuICAgICAgICAgID9yZWFkb25seT1cIiR7cmVhZG9ubHlNb2RlfVwiXG4gICAgICAgICAgQGd2LXNjaGVtYS1mb3JtOmNhbmNlbD1cIiR7dGhpcy5fb25DYW5jZWxGbG93TW9kZX1cIlxuICAgICAgICAgIEBndi1zY2hlbWEtZm9ybTpzdWJtaXQ9XCIke3RoaXMuX29uU3VibWl0Rmxvd01vZGV9XCJcbiAgICAgICAgPlxuICAgICAgICAgICR7IXRoaXMuY29uZmlndXJhdGlvbkluZm9ybWF0aW9uXG4gICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICA6IGh0bWxgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwaS1zZXR0aW5ncy1pbmZvcm1hdGlvblwiIHNsb3Q9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPGd2LWljb24gY2xhc3M9XCJhcGktc2V0dGluZ3MtaW5mb3JtYXRpb25fX2ljb25cIiB0aXRsZT1cIkluZm9cIiBzaGFwZT1cImNvZGU6aW5mb1wiPjwvZ3YtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlIGNsYXNzPVwiYXBpLXNldHRpbmdzLWluZm9ybWF0aW9uX19ibG9ja3F1b3RlXCI+JHt0aGlzLmNvbmZpZ3VyYXRpb25JbmZvcm1hdGlvbn08L2Jsb2NrcXVvdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgIDwvZ3Ytc2NoZW1hLWZvcm0+XG4gICAgICA8L2Rpdj5gO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbGBgO1xuICB9XG5cbiAgX3JlbmRlckZsb3dGb3JtKHJlYWRvbmx5TW9kZSkge1xuICAgIGlmICh0aGlzLmZsb3dTY2hlbWEgJiYgdGhpcy5fZmxvd1N0ZXBTY2hlbWEgPT0gbnVsbCAmJiB0aGlzLmRvY3VtZW50YXRpb24gPT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkRmxvd3NJZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZsb3cgPSB0aGlzLmdldFNlbGVjdGVkRmxvdygpO1xuICAgICAgaWYgKGZsb3cpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gZGVlcENsb25lKGZsb3cpO1xuICAgICAgICByZXR1cm4gaHRtbGA8ZGl2IHNsb3Q9XCJjb250ZW50XCIgY2xhc3M9XCJmbG93LXNldHRpbmdzXCI+XG4gICAgICAgICAgPGd2LXNjaGVtYS1mb3JtXG4gICAgICAgICAgICAuc2NoZW1hPVwiJHt0aGlzLmZsb3dTY2hlbWF9XCJcbiAgICAgICAgICAgIGlkPVwic2V0dGluZ3MtZm9ybVwiXG4gICAgICAgICAgICAudmFsdWVzPVwiJHt2YWx1ZXN9XCJcbiAgICAgICAgICAgIGhhcy1oZWFkZXJcbiAgICAgICAgICAgIHNjcm9sbGFibGVcbiAgICAgICAgICAgID9yZWFkb25seT1cIiR7cmVhZG9ubHlNb2RlfVwiXG4gICAgICAgICAgICBAZ3Ytc2NoZW1hLWZvcm06Y2FuY2VsPVwiJHt0aGlzLl9vbkNhbmNlbEZsb3d9XCJcbiAgICAgICAgICAgIEBndi1zY2hlbWEtZm9ybTpzdWJtaXQ9XCIke3RoaXMuX29uU3VibWl0Rmxvd31cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgc2xvdD1cInRpdGxlXCIgY2xhc3M9XCJmbG93LXN0ZXBfX2Zvcm0tdGl0bGVcIj5GbG93IGNvbmZpZ3VyYXRpb248L2Rpdj5cbiAgICAgICAgICA8L2d2LXNjaGVtYS1mb3JtPlxuICAgICAgICA8L2Rpdj5gO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vblJlc291cmNlc0NoYW5nZSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5kZWZpbml0aW9uLnJlc291cmNlcyA9IGRldGFpbC5yZXNvdXJjZXM7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIF9vblByb3BlcnRpZXNDaGFuZ2UoeyBkZXRhaWwgfSkge1xuICAgIHRoaXMuZGVmaW5pdGlvbi5wcm9wZXJ0aWVzID0gZGV0YWlsLnByb3BlcnRpZXM7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIF9vblNhdmVQcm92aWRlcih7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5zZXJ2aWNlc1snZHluYW1pYy1wcm9wZXJ0eSddID0gZGV0YWlsLnByb3ZpZGVyO1xuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG4gIH1cblxuICBfb25Td2l0Y2hFbmNyeXB0ZWRQcm9wZXJ0eSh7IGRldGFpbCB9KSB7XG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCByZWFkb25seU1vZGUgPSB0aGlzLl9nZXRSZWFkb25seU1vZGVGb3JEZXNpZ24oKTtcblxuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgIDxndi1wb2xpY3ktc3R1ZGlvLW1lbnVcbiAgICAgICAgY2xhc3M9XCJsZWZ0LW1lbnVcIlxuICAgICAgICAuYXBpLW5hbWU9XCIke3RoaXMuX2RlZmluaXRpb24ubmFtZX1cIlxuICAgICAgICAuZmxvd3M9XCIke3RoaXMuZmlsdGVyZWRGbG93c31cIlxuICAgICAgICAucGxhbnM9XCIke3RoaXMuZmlsdGVyZWRQbGFuc31cIlxuICAgICAgICAuc2VsZWN0ZWRJZHM9XCIke3RoaXMuc2VsZWN0ZWRGbG93c0lkfVwiXG4gICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICA/c29ydGFibGU9XCIke3RoaXMuc29ydGFibGUgJiYgdGhpcy5yZWFkb25seSAhPT0gdHJ1ZX1cIlxuICAgICAgICA/cmVhZG9ubHk9XCIke3RoaXMucmVhZG9ubHl9XCJcbiAgICAgICAgP3JlYWRvbmx5UGxhbnM9XCIke3RoaXMucmVhZG9ubHlQbGFuc31cIlxuICAgICAgICBmbG93cy10aXRsZT1cIiR7dGhpcy5mbG93c1RpdGxlfVwiXG4gICAgICAgIC5xdWVyeT1cIiR7dGhpcy5fc2VhcmNoRmxvd1F1ZXJ5fVwiXG4gICAgICAgID9jYW4tYWRkPVwiJHt0aGlzLmNhbkFkZCAmJiAhdGhpcy5yZWFkb25seX1cIlxuICAgICAgICBAZ3YtcG9saWN5LXN0dWRpby1tZW51OnJlb3JkZXItZmxvd3M9XCIke3RoaXMuX29uUmVvcmRlckZsb3dzfVwiXG4gICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6Y2hhbmdlLWZsb3ctc3RhdGU9XCIke3RoaXMuX29uQ2hhbmdlRmxvd1N0YXRlfVwiXG4gICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6YWRkLWZsb3c9XCIke3RoaXMuX29uQWRkRmxvd31cIlxuICAgICAgICBAZ3YtcG9saWN5LXN0dWRpby1tZW51OmFkZC1mbG93LXBsYW49XCIke3RoaXMuX29uQWRkRmxvd1BsYW59XCJcbiAgICAgICAgQGd2LXBvbGljeS1zdHVkaW8tbWVudTpkZWxldGUtZmxvdz1cIiR7dGhpcy5fb25EZWxldGVGbG93fVwiXG4gICAgICAgIEBndi1wb2xpY3ktc3R1ZGlvLW1lbnU6ZHVwbGljYXRlLWZsb3c9XCIke3RoaXMuX29uRHVwbGljYXRlRmxvd31cIlxuICAgICAgICBAZ3YtcG9saWN5LXN0dWRpby1tZW51OnNlbGVjdC1mbG93cz1cIiR7dGhpcy5fb25TZWxlY3RGbG93c31cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IHNsb3Q9XCJoZWFkZXJcIiBjbGFzcz1cImhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHt0aGlzLl9kZWZpbml0aW9uLm5hbWV9PC9kaXY+XG4gICAgICAgICAgJHt0aGlzLl9mbG93RmlsdGVyT3B0aW9ucyAhPSBudWxsXG4gICAgICAgICAgICA/IGh0bWxgPGd2LW9wdGlvblxuICAgICAgICAgICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5fY3VycmVudEFza0NvbmZpcm1hdGlvbn1cIlxuICAgICAgICAgICAgICAgIC5vcHRpb25zPVwiJHt0aGlzLl9mbG93RmlsdGVyT3B0aW9uc31cIlxuICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgb3V0bGluZWRcbiAgICAgICAgICAgICAgICAudmFsdWU9XCIke3RoaXMuX2Zsb3dGaWx0ZXJ9XCJcbiAgICAgICAgICAgICAgICBzbWFsbFxuICAgICAgICAgICAgICAgIEBndi1vcHRpb246c2VsZWN0PVwiJHt0aGlzLl9vbkZpbHRlckZsb3dzfVwiXG4gICAgICAgICAgICAgID48L2d2LW9wdGlvbj5gXG4gICAgICAgICAgICA6ICcnfVxuICAgICAgICAgIDxndi1pbnB1dFxuICAgICAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgICAgICBpZD1cInNlYXJjaC1mbG93XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGZsb3dzIChDdHJsICsgU3BhY2UpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgc21hbGxcbiAgICAgICAgICAgIEBndi1pbnB1dDppbnB1dD1cIiR7dGhpcy5fb25TZWFyY2hGbG93c31cIlxuICAgICAgICAgICAgQGd2LWlucHV0OmNsZWFyPVwiJHt0aGlzLl9vbkNsZWFyRmxvd3N9XCJcbiAgICAgICAgICA+PC9ndi1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgJHt0aGlzLnJlYWRvbmx5ICE9PSB0cnVlXG4gICAgICAgICAgPyBodG1sYCA8ZGl2IHNsb3Q9XCJmb290ZXJcIiBjbGFzcz1cImZvb3Rlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxndi1idXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1sYXJnZVwiXG4gICAgICAgICAgICAgICAgLmRpc2FibGVkPVwiJHshdGhpcy5pc0RpcnR5IHx8IHRoaXMuX2N1cnJlbnRBc2tDb25maXJtYXRpb259XCJcbiAgICAgICAgICAgICAgICBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vblNhdmVBbGx9XCJcbiAgICAgICAgICAgICAgICA+U2F2ZTwvZ3YtYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGd2LWJ1dHRvbiBsaW5rIC5kaXNhYmxlZD1cIiR7IXRoaXMuaXNEaXJ0eSB8fCB0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uUmVzZXRBbGx9XCJcbiAgICAgICAgICAgICAgICA+UmVzZXQ8L2d2LWJ1dHRvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgICAgOiAnJ31cbiAgICAgIDwvZ3YtcG9saWN5LXN0dWRpby1tZW51PlxuXG4gICAgICA8Z3YtdGFic1xuICAgICAgICAudmFsdWU9XCIke3RoaXMudGFiSWR9XCJcbiAgICAgICAgLm9wdGlvbnM9XCIke3RoaXMuX3RhYnN9XCJcbiAgICAgICAgLmRpc2FibGVkPVwiJHt0aGlzLl9jdXJyZW50QXNrQ29uZmlybWF0aW9ufVwiXG4gICAgICAgIEBndi10YWJzOmNoYW5nZT1cIiR7dGhpcy5fb25DaGFuZ2VUYWJ9XCJcbiAgICAgICAgLnZhbGlkYXRvcj1cIiR7dGhpcy5fY2hhbmdlVGFiVmFsaWRhdG9yLmJpbmQodGhpcyl9XCJcbiAgICAgID5cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJEZXNpZ24ocmVhZG9ubHlNb2RlKX0gJHt0aGlzLl9yZW5kZXJDb25maWd1cmF0aW9uRm9ybShyZWFkb25seU1vZGUpfSAke3RoaXMuX3JlbmRlckRlYnVnKCl9XG4gICAgICAgIDxndi1wcm9wZXJ0aWVzXG4gICAgICAgICAgaWQ9XCJwcm9wZXJ0aWVzXCJcbiAgICAgICAgICBzbG90PVwiY29udGVudFwiXG4gICAgICAgICAgY2xhc3M9XCJwcm9wZXJ0aWVzXCJcbiAgICAgICAgICAucHJvdmlkZXI9XCIke3RoaXMuc2VydmljZXNbJ2R5bmFtaWMtcHJvcGVydHknXX1cIlxuICAgICAgICAgIEBndi1wcm9wZXJ0aWVzOmNoYW5nZT1cIiR7dGhpcy5fb25Qcm9wZXJ0aWVzQ2hhbmdlfVwiXG4gICAgICAgICAgQGd2LXByb3BlcnRpZXM6c2F2ZS1wcm92aWRlcj1cIiR7dGhpcy5fb25TYXZlUHJvdmlkZXJ9XCJcbiAgICAgICAgICBAZ3YtcHJvcGVydGllczpzd2l0Y2gtZW5jcnlwdGVkPVwiJHt0aGlzLl9vblN3aXRjaEVuY3J5cHRlZFByb3BlcnR5fVwiXG4gICAgICAgICAgP3JlYWRvbmx5PVwiJHtyZWFkb25seU1vZGV9XCJcbiAgICAgICAgICBlbmNyeXB0YWJsZT1cInRydWVcIlxuICAgICAgICAgIC5wcm9wZXJ0aWVzPVwiJHt0aGlzLmRlZmluZWRQcm9wZXJ0aWVzfVwiXG4gICAgICAgICAgLnByb3ZpZGVycz1cIiR7dGhpcy5wcm9wZXJ0eVByb3ZpZGVyc31cIlxuICAgICAgICAgIC5keW5hbWljUHJvcGVydHlTY2hlbWE9XCIke3RoaXMuZHluYW1pY1Byb3BlcnR5U2NoZW1hfVwiXG4gICAgICAgID48L2d2LXByb3BlcnRpZXM+XG4gICAgICAgIDxndi1yZXNvdXJjZXNcbiAgICAgICAgICBpZD1cInJlc291cmNlc1wiXG4gICAgICAgICAgc2xvdD1cImNvbnRlbnRcIlxuICAgICAgICAgIGNsYXNzPVwicmVzb3VyY2VzXCJcbiAgICAgICAgICBAZ3YtcmVzb3VyY2VzOmNoYW5nZT1cIiR7dGhpcy5fb25SZXNvdXJjZXNDaGFuZ2V9XCJcbiAgICAgICAgICA/cmVhZG9ubHk9XCIke3JlYWRvbmx5TW9kZX1cIlxuICAgICAgICAgIC5yZXNvdXJjZXM9XCIke3RoaXMuZGVmaW5lZFJlc291cmNlc31cIlxuICAgICAgICAgIC50eXBlcz1cIiR7dGhpcy5yZXNvdXJjZVR5cGVzfVwiXG4gICAgICAgID48L2d2LXJlc291cmNlcz5cbiAgICAgIDwvZ3YtdGFicz5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiB0aGUgZGVzaWduIHZpZXcgc2hvdWxkIGJlIGluIHJlYWRvbmx5IG1vZGUgb3Igbm90XG4gICAqIEl0IGlzIGluIHJlYWRvbmx5IG1vZGUgaWY6XG4gICAqICB0aGUgcmVhZG9ubHkgYXR0cmlidXRlIGlzIHNldCB0byB0cnVlXG4gICAqICBPUlxuICAgKiAgdGhlIG1haW4gc2VsZWN0ZWQgZmxvdyBiZWxvbmdzIHRvIGEgcGxhbiBhbmQgdGhlIHJlYWRvbmx5LXBsYW5zIGF0dHJpYnV0ZSBpcyBzZXQgdG8gdHJ1ZVxuICAgKiAgT1JcbiAgICogIHRoZSBzZWNvbmQgZmxvdyBmb3IgY29tcGFyaXNvbiBiZWxvbmdzIHRvIGEgcGxhbiBhbmQgdGhlIHJlYWRvbmx5LXBsYW5zIGF0dHJpYnV0ZSBpcyBzZXQgdG8gdHJ1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbnwqfHt0eXBlOiBCb29sZWFuQ29uc3RydWN0b3J9fHthdHRyaWJ1dGU6IHN0cmluZywgdHlwZTogQm9vbGVhbkNvbnN0cnVjdG9yfXx7dHlwZTogKn18e2F0dHJpYnV0ZTogc3RyaW5nLCB0eXBlOiAqfX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRSZWFkb25seU1vZGVGb3JEZXNpZ24oKSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZsb3cgPSB0aGlzLmdldFNlbGVjdGVkRmxvdygwKTtcbiAgICBpZiAoIWZsb3cpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBsYW46IGZsb3dQbGFuIH0gPSB0aGlzLl9maW5kRmxvd0NvbGxlY3Rpb24oZmxvdy5faWQpO1xuICAgIGNvbnN0IHJlYWRvbmx5TW9kZSA9IGZsb3dQbGFuICYmIHRoaXMucmVhZG9ubHlQbGFucztcbiAgICBpZiAocmVhZG9ubHlNb2RlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wYXJlZEZsb3cgPSB0aGlzLmdldFNlbGVjdGVkRmxvdygxKTtcbiAgICBpZiAoIWNvbXBhcmVkRmxvdykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGxhbjogY29tcGFyZWRGbG93UGxhbiB9ID0gdGhpcy5fZmluZEZsb3dDb2xsZWN0aW9uKGNvbXBhcmVkRmxvdy5faWQpO1xuICAgIHJldHVybiBjb21wYXJlZEZsb3dQbGFuICYmIHRoaXMucmVhZG9ubHlQbGFucztcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1wb2xpY3ktc3R1ZGlvJywgR3ZQb2xpY3lTdHVkaW8pO1xuIl19
|