@hitsoft/abp.kadooglu 1.0.9 → 1.0.10

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.
@@ -100,7 +100,7 @@ export class HitEntryWeighingFormComponent {
100
100
  this.isScaleReconnecting = false;
101
101
  this.scaleConnectionFailed = false;
102
102
  this.scaleSub = null;
103
- this.scaleApiUrl = 'http://192.168.10.95:8080';
103
+ this.scaleApiUrl = 'http://192.168.10.95:5100';
104
104
  this.scaleId = 'KANTAR-01';
105
105
  }
106
106
  /** SAP response camelCase/PascalCase farkını handle eder */
@@ -659,4 +659,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
659
659
  type: Component,
660
660
  args: [{ selector: 'lib-hit-entry-weighing-form', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col\">\r\n <h3 class=\"page-title\">\r\n {{ 'Kadooglu::EntryWeighingTitle' | abpLocalization }}\r\n <span *ngIf=\"weighingMode\" class=\"badge ms-2 fs-6\"\r\n [ngClass]=\"{\r\n 'bg-warning text-dark': weighingMode === 'first',\r\n 'bg-primary': weighingMode === 'last'\r\n }\">\r\n {{ weighingModeLabel }}\r\n </span>\r\n <span *ngIf=\"!weighingMode\" class=\"badge ms-2 fs-6\"\r\n [ngClass]=\"{\r\n 'bg-secondary': weighingStep === 1,\r\n 'bg-info': weighingStep === 2,\r\n 'bg-success': weighingStep === 3\r\n }\">\r\n {{ (weighingStep === 1 ? 'Kadooglu::RecordStep' : weighingStep === 2 ? 'Kadooglu::FirstWeighing' : 'Kadooglu::Completed') | abpLocalization }}\r\n </span>\r\n </h3>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <!-- Step Indicator -->\r\n <div class=\"card mb-3\">\r\n <div class=\"card-body py-3\">\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n\r\n <!-- Step 1: Ara\u00E7 & Belge -->\r\n <div class=\"d-flex flex-column align-items-center\">\r\n <div class=\"rounded-circle d-flex align-items-center justify-content-center fw-bold text-white\"\r\n style=\"width:40px; height:40px; font-size:1rem;\"\r\n [style.background-color]=\"formPhase > 1 || isFullyCompleted ? '#198754' : (formPhase === 1 ? '#0d6efd' : '#6c757d')\">\r\n <i *ngIf=\"formPhase > 1 || isFullyCompleted\" class=\"fa fa-check\"></i>\r\n <span *ngIf=\"formPhase <= 1 && !isFullyCompleted\">1</span>\r\n </div>\r\n <small class=\"mt-1 fw-semibold\" [class.text-success]=\"formPhase > 1 || isFullyCompleted\" [class.text-primary]=\"formPhase === 1 && !isFullyCompleted\">{{ 'Kadooglu::VehicleAndDocument' | abpLocalization }}</small>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 mx-2\" style=\"height:3px; max-width:120px;\"\r\n [style.background-color]=\"formPhase > 1 ? '#198754' : '#dee2e6'\"></div>\r\n\r\n <!-- Step 2: Tart\u0131m -->\r\n <div class=\"d-flex flex-column align-items-center\">\r\n <div class=\"rounded-circle d-flex align-items-center justify-content-center fw-bold text-white\"\r\n style=\"width:40px; height:40px; font-size:1rem;\"\r\n [style.background-color]=\"weighingStep === 3 ? '#198754' : (formPhase === 2 ? '#0d6efd' : '#6c757d')\">\r\n <i *ngIf=\"weighingStep === 3\" class=\"fa fa-check\"></i>\r\n <span *ngIf=\"weighingStep < 3\">2</span>\r\n </div>\r\n <small class=\"mt-1 fw-semibold\" [class.text-success]=\"weighingStep === 3\" [class.text-primary]=\"formPhase === 2 && weighingStep < 3\" [class.text-muted]=\"formPhase < 2 && weighingStep < 3\">{{ 'Kadooglu::WeighingStep' | abpLocalization }}</small>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 mx-2\" style=\"height:3px; max-width:120px;\"\r\n [style.background-color]=\"weighingStep === 3 ? '#198754' : '#dee2e6'\"></div>\r\n\r\n <!-- Step 3: Tamamland\u0131 -->\r\n <div class=\"d-flex flex-column align-items-center\">\r\n <div class=\"rounded-circle d-flex align-items-center justify-content-center fw-bold text-white\"\r\n style=\"width:40px; height:40px; font-size:1rem;\"\r\n [style.background-color]=\"weighingStep === 3 ? '#198754' : '#6c757d'\">\r\n <i *ngIf=\"weighingStep === 3\" class=\"fa fa-check\"></i>\r\n <span *ngIf=\"weighingStep < 3\">3</span>\r\n </div>\r\n <small class=\"mt-1 fw-semibold\" [class.text-success]=\"weighingStep === 3\" [class.text-muted]=\"weighingStep < 3\">{{ 'Kadooglu::Completed' | abpLocalization }}</small>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- ========== PHASE 1: Ara\u00E7 & Belge ========== -->\r\n <div *ngIf=\"formPhase === 1 && !isFullyCompleted\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n\r\n <!-- Sol s\u00FCtun: Giri\u015F/\u00C7\u0131k\u0131\u015F + Ara\u00E7 & S\u00FCr\u00FCc\u00FC -->\r\n <div class=\"col-md-6\">\r\n\r\n <!-- Grup 1: Giri\u015F / \u00C7\u0131k\u0131\u015F Bilgileri -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-sign-in-alt me-2\"></i>{{ 'Kadooglu::EntryExitInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::GateSelection' | abpLocalization }}</label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadGates\"\r\n [columns]=\"gateColumns\"\r\n displayName=\"name\"\r\n [editingData]=\"gateName\"\r\n [readOnly]=\"isUpdateMode\"\r\n (selected)=\"onGateSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">Ara\u00E7 Hareket T\u00FCr\u00FC</label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadVehicleTypes\"\r\n [columns]=\"vehicleTypeColumns\"\r\n displayName=\"name\"\r\n [editingData]=\"entryTypeName\"\r\n [readOnly]=\"isUpdateMode\"\r\n (selected)=\"onVehicleTypeSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::EntryDate' | abpLocalization }}</label>\r\n <dx-date-box\r\n [value]=\"entryDateTime\"\r\n type=\"datetime\"\r\n displayFormat=\"dd.MM.yyyy HH:mm\"\r\n [readOnly]=\"isUpdateMode\"\r\n width=\"100%\">\r\n </dx-date-box>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::ExitDate' | abpLocalization }}</label>\r\n <dx-date-box\r\n [value]=\"exitDateTime\"\r\n type=\"datetime\"\r\n displayFormat=\"dd.MM.yyyy HH:mm\"\r\n [readOnly]=\"isUpdateMode\"\r\n width=\"100%\">\r\n </dx-date-box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Grup 2: Ara\u00E7 & S\u00FCr\u00FCc\u00FC Bilgileri -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-truck me-2\"></i>{{ 'Kadooglu::VehicleDriverInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">\r\n {{ 'Kadooglu::TruckPlate' | abpLocalization }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadTruckPlates\"\r\n [columns]=\"truckPlateColumns\"\r\n displayName=\"plateNo\"\r\n [editingData]=\"truckPlateNo\"\r\n [readOnly]=\"isFormLocked\"\r\n (selected)=\"onTruckPlateSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\" *ngIf=\"trailerPlateNo\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::TrailerPlate' | abpLocalization }}</label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadTrailerPlates\"\r\n [columns]=\"trailerPlateColumns\"\r\n displayName=\"plateNo\"\r\n [editingData]=\"trailerPlateNo\"\r\n [readOnly]=\"isFormLocked\"\r\n (selected)=\"onTrailerPlateSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::DriverName' | abpLocalization }}</label>\r\n <dx-text-box\r\n [(value)]=\"driverFullName\"\r\n [placeholder]=\"'Kadooglu::EnterDriverName' | abpLocalization\"\r\n [readOnly]=\"true\"\r\n width=\"100%\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <div class=\"d-flex align-items-center gap-2 mb-1\">\r\n <label class=\"form-label mb-0 small fw-semibold text-muted\">{{ isTcCitizen ? ('Kadooglu::TcIdentityNo' | abpLocalization) : 'Kimlik No' }}</label>\r\n <dx-check-box [(value)]=\"isTcCitizen\" [readOnly]=\"isUpdateMode\" text=\"T.C. Vatanda\u015F\u0131\"></dx-check-box>\r\n </div>\r\n <dx-text-box\r\n [(value)]=\"tcNo\"\r\n [placeholder]=\"isTcCitizen ? ('Kadooglu::TcIdentityNo' | abpLocalization) : 'Kimlik No'\"\r\n [readOnly]=\"true\"\r\n width=\"100%\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Sa\u011F s\u00FCtun: Belge & Y\u00FCk -->\r\n <div class=\"col-md-6\">\r\n\r\n <!-- Grup 3: Belge & Y\u00FCk Bilgileri -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-file-alt me-2\"></i>{{ 'Kadooglu::DocumentCargoInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::BusinessPartner' | abpLocalization }}</label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadAccounts\"\r\n [columns]=\"accountColumns\"\r\n displayName=\"title\"\r\n [editingData]=\"accountTitle\"\r\n [readOnly]=\"isFormLocked\"\r\n (selected)=\"onAccountSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::WaybillNumber' | abpLocalization }}</label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadWaybills\"\r\n [columns]=\"waybillColumns\"\r\n displayName=\"docNum\"\r\n keyExpr=\"docEntry\"\r\n [editingData]=\"waybillNo\"\r\n [showDateFilter]=\"true\"\r\n [defaultDateFrom]=\"waybillDefaultDateFrom\"\r\n [defaultDateTo]=\"waybillDefaultDateTo\"\r\n (selected)=\"onWaybillSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::ItemCode' | abpLocalization }}</label>\r\n <hit-lookup-select\r\n [loadFn]=\"loadStockItems\"\r\n [columns]=\"stockItemColumns\"\r\n displayName=\"name\"\r\n [editingData]=\"stockName\"\r\n (selected)=\"onStockItemSelected($event)\">\r\n </hit-lookup-select>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::ContainerNo' | abpLocalization }}</label>\r\n <dx-text-box\r\n [(value)]=\"containerNo\"\r\n [placeholder]=\"'Kadooglu::ManualEntry' | abpLocalization\"\r\n [readOnly]=\"isFormLocked\"\r\n width=\"100%\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::DeparturePlace' | abpLocalization }}</label>\r\n <dx-text-box\r\n [(value)]=\"departureLocation\"\r\n [disabled]=\"true\"\r\n [placeholder]=\"'Kadooglu::AutoFilledFromWaybill' | abpLocalization\"\r\n width=\"100%\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::ArrivalPlace' | abpLocalization }}</label>\r\n <dx-text-box\r\n [(value)]=\"arrivalLocation\"\r\n [disabled]=\"true\"\r\n width=\"100%\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-12 mb-3\">\r\n <label class=\"form-label mb-1 small fw-semibold text-muted\">{{ 'Kadooglu::Description' | abpLocalization }}</label>\r\n <dx-text-area\r\n [(value)]=\"description\"\r\n [height]=\"70\"\r\n [readOnly]=\"isFormLocked\"\r\n width=\"100%\">\r\n </dx-text-area>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <!-- Phase 1 Alt Butonlar -->\r\n <div class=\"d-flex justify-content-between mt-3 mb-3\">\r\n <button class=\"btn btn-secondary\" (click)=\"goBack()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i> {{ 'Kadooglu::Back' | abpLocalization }}\r\n </button>\r\n <div class=\"d-flex gap-2\">\r\n <abp-button\r\n *ngIf=\"!weighingMode && !isFormLocked\"\r\n iconClass=\"fa fa-save\"\r\n buttonType=\"button\"\r\n [loading]=\"isSaving\"\r\n (click)=\"save()\">\r\n {{ 'Kadooglu::Save' | abpLocalization }}\r\n </abp-button>\r\n <button class=\"btn btn-primary\" (click)=\"ileriGit()\">\r\n {{ 'Kadooglu::Next' | abpLocalization }} <i class=\"fa fa-arrow-right ms-1\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- ========== PHASE 2: Tart\u0131m Paneli ========== -->\r\n <div *ngIf=\"formPhase === 2 && !isFullyCompleted\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n\r\n <!-- Grup 1: Terazi -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary d-flex align-items-center justify-content-between\">\r\n <span>\r\n <i class=\"fa fa-balance-scale me-2\"></i>{{ 'Kadooglu::WeighingPanel' | abpLocalization }}\r\n </span>\r\n <span *ngIf=\"weighingMode\" class=\"badge\"\r\n [ngClass]=\"weighingMode === 'first' ? 'bg-warning text-dark' : 'bg-primary'\">\r\n {{ weighingModeLabel }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"row g-3 align-items-stretch\">\r\n\r\n <!-- Sol: Canl\u0131 Tart\u0131m -->\r\n <div class=\"col-md-5\" style=\"display: grid;\">\r\n <div class=\"card bg-light h-100\">\r\n <div class=\"card-body text-center py-4\">\r\n <div class=\"text-muted small mb-1 fw-semibold text-uppercase\">\r\n {{ 'Kadooglu::LiveWeighing' | abpLocalization }}\r\n </div>\r\n <div *ngIf=\"isScaleConnecting || isScaleReconnecting\" class=\"my-2\">\r\n <div class=\"spinner-border text-secondary\" role=\"status\">\r\n <span class=\"visually-hidden\">{{ (isScaleReconnecting ? 'Kadooglu::Reconnecting' : 'Kadooglu::Connecting') | abpLocalization }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isScaleConnecting && !isScaleReconnecting && !scaleConnectionFailed\" style=\"font-size: 2.5rem; font-weight: bold; letter-spacing: 0.05em;\">\r\n {{ currentScaleValue != null ? (currentScaleValue | number:'1.0-0') + ' kg' : '\u2014 kg' }}\r\n </div>\r\n <div *ngIf=\"scaleConnectionFailed\" class=\"text-center py-1\">\r\n <i class=\"fa fa-chain-broken fa-2x text-secondary mb-2 d-block\"></i>\r\n <span class=\"text-secondary fw-semibold d-block\" style=\"font-size: 0.95rem; line-height: 1.5;\">\r\n {{ 'Kadooglu::ScaleConnectionFailedInline' | abpLocalization }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Orta: Ak\u0131\u015F oku -->\r\n <div class=\"col-md-2 d-flex align-items-center justify-content-center\">\r\n <i class=\"fa fa-arrow-right fa-2x text-muted\"></i>\r\n </div>\r\n\r\n <!-- Sa\u011F: Sabitlenmi\u015F De\u011Fer + Sabitle butonu -->\r\n <div class=\"col-md-5\" style=\"display: grid;\">\r\n <div class=\"card h-100\"\r\n [ngClass]=\"fixedScaleValue != null ? 'border-success' : 'bg-light'\"\r\n [style.background-color]=\"fixedScaleValue != null ? 'rgba(25,135,84,0.08)' : ''\">\r\n <div class=\"card-body text-center py-4\">\r\n <div class=\"small mb-1 fw-semibold text-uppercase\"\r\n [ngClass]=\"fixedScaleValue != null ? 'text-success' : 'text-muted'\">\r\n {{ 'Kadooglu::FixedValue' | abpLocalization }}\r\n </div>\r\n <div style=\"font-size: 2.5rem; font-weight: bold; letter-spacing: 0.05em;\"\r\n [ngClass]=\"fixedScaleValue != null ? 'text-success' : ''\">\r\n {{ fixedScaleValue != null ? (fixedScaleValue | number:'1.0-0') + ' kg' : '\u2014 kg' }}\r\n </div>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"!isFullyCompleted\"\r\n class=\"btn btn-success btn-lg w-100 mt-2\"\r\n [disabled]=\"currentScaleValue == null\"\r\n (click)=\"sabitle()\">\r\n <i class=\"fa fa-lock me-2\"></i>\r\n {{ 'Kadooglu::Fix' | abpLocalization }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Grup 2: Tart\u0131m Kay\u0131tlar\u0131 -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-history me-2\"></i>{{ 'Kadooglu::WeighingRecords' | abpLocalization }}\r\n </div>\r\n\r\n <div class=\"row g-3\">\r\n\r\n <!-- \u0130lk Tart\u0131m -->\r\n <div class=\"col-md-4\">\r\n <div class=\"h-100 rounded py-3 px-4\" style=\"border-left: 4px solid #0d6efd; background: #fff;\">\r\n <div class=\"text-uppercase text-muted small fw-semibold mb-1\">\r\n {{ 'Kadooglu::FirstWeighing' | abpLocalization }}\r\n </div>\r\n <div *ngIf=\"firstWeighingValue != null; else noFirstWeighing\">\r\n <div class=\"fw-bold\" style=\"font-size: 1.75rem; letter-spacing: 0.02em;\">\r\n {{ firstWeighingValue | number:'1.0-0' }} kg\r\n </div>\r\n <div class=\"text-muted small mt-1\">\r\n {{ 'Kadooglu::Operator' | abpLocalization }}: {{ firstOperatorCode }}\r\n </div>\r\n </div>\r\n <ng-template #noFirstWeighing>\r\n <div class=\"text-muted fst-italic mt-2\">{{ 'Kadooglu::NotYetDone' | abpLocalization }}</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Son Tart\u0131m -->\r\n <div class=\"col-md-4\">\r\n <div class=\"h-100 rounded py-3 px-4\" style=\"border-left: 4px solid #6f42c1; background: #fff;\">\r\n <div class=\"text-uppercase text-muted small fw-semibold mb-1\">\r\n {{ 'Kadooglu::LastWeighing' | abpLocalization }}\r\n </div>\r\n <div *ngIf=\"lastWeighingValue != null; else noLastWeighing\">\r\n <div class=\"fw-bold\" style=\"font-size: 1.75rem; letter-spacing: 0.02em;\">\r\n {{ lastWeighingValue | number:'1.0-0' }} kg\r\n </div>\r\n <div class=\"text-muted small mt-1\">\r\n {{ 'Kadooglu::Operator' | abpLocalization }}: {{ lastOperatorCode }}\r\n </div>\r\n </div>\r\n <ng-template #noLastWeighing>\r\n <div class=\"text-muted fst-italic mt-2\">{{ 'Kadooglu::NotYetDone' | abpLocalization }}</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Net Y\u00FCk (sadece weighingStep===3'te) -->\r\n <div class=\"col-md-4\" *ngIf=\"weighingStep === 3 && netWeight != null\">\r\n <div class=\"h-100 rounded py-3 px-4\" style=\"border-left: 4px solid #198754; background: rgba(25,135,84,0.06);\">\r\n <div class=\"text-uppercase text-muted small fw-semibold mb-1\">\r\n {{ 'Kadooglu::NetWeight' | abpLocalization }}\r\n </div>\r\n <div class=\"fw-bold\" style=\"font-size: 1.75rem; letter-spacing: 0.02em; color: #198754;\">\r\n {{ netWeight | number:'1.0-0' }} kg\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Phase 2 Alt Butonlar -->\r\n <div class=\"d-flex justify-content-between mt-3 mb-3\">\r\n <button class=\"btn btn-secondary\" (click)=\"geriGitPhase()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i> {{ 'Kadooglu::Back' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n *ngIf=\"!isFullyCompleted\"\r\n iconClass=\"fa fa-save\"\r\n buttonType=\"button\"\r\n [loading]=\"isSaving\"\r\n (click)=\"save()\">\r\n {{ 'Kadooglu::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n\r\n <!-- ========== SUMMARY: Tamamland\u0131 G\u00F6r\u00FCn\u00FCm\u00FC ========== -->\r\n <div *ngIf=\"isFullyCompleted\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n\r\n <!-- Tam geni\u015Flik: Tart\u0131m Sonu\u00E7lar\u0131 -->\r\n <div class=\"col-12\">\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-balance-scale me-2\"></i>{{ 'Kadooglu::WeighingResults' | abpLocalization }}\r\n </div>\r\n <div class=\"row g-3\">\r\n\r\n <!-- \u0130lk Tart\u0131m -->\r\n <div class=\"col-md-4\">\r\n <div class=\"bg-white shadow-sm rounded py-3 px-4 h-100\" style=\"border-left: 4px solid #0d6efd;\">\r\n <div class=\"text-uppercase text-muted small fw-semibold mb-1\">{{ 'Kadooglu::FirstWeighing' | abpLocalization }}</div>\r\n <div class=\"fw-bold\" style=\"font-size: 1.75rem; letter-spacing: 0.02em;\">\r\n {{ firstWeighingValue != null ? (firstWeighingValue | number:'1.0-0') + ' kg' : '\u2014 kg' }}\r\n </div>\r\n <div class=\"text-muted small mt-1\">{{ 'Kadooglu::Operator' | abpLocalization }}: {{ firstOperatorCode || '\u2014' }}</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Son Tart\u0131m -->\r\n <div class=\"col-md-4\">\r\n <div class=\"bg-white shadow-sm rounded py-3 px-4 h-100\" style=\"border-left: 4px solid #6f42c1;\">\r\n <div class=\"text-uppercase text-muted small fw-semibold mb-1\">{{ 'Kadooglu::LastWeighing' | abpLocalization }}</div>\r\n <div class=\"fw-bold\" style=\"font-size: 1.75rem; letter-spacing: 0.02em;\">\r\n {{ lastWeighingValue != null ? (lastWeighingValue | number:'1.0-0') + ' kg' : '\u2014 kg' }}\r\n </div>\r\n <div class=\"text-muted small mt-1\">{{ 'Kadooglu::Operator' | abpLocalization }}: {{ lastOperatorCode || '\u2014' }}</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Net Y\u00FCk -->\r\n <div class=\"col-md-4\">\r\n <div class=\"shadow-sm rounded py-3 px-4 h-100\" style=\"border-left: 4px solid #198754; background: rgba(25,135,84,0.06);\">\r\n <div class=\"text-uppercase text-muted small fw-semibold mb-1\">{{ 'Kadooglu::NetWeight' | abpLocalization }}</div>\r\n <div class=\"fw-bold\" style=\"font-size: 1.75rem; letter-spacing: 0.02em; color: #198754;\">\r\n {{ netWeight != null ? (netWeight | number:'1.0-0') + ' kg' : '\u2014 kg' }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Sol s\u00FCtun: Giri\u015F/\u00C7\u0131k\u0131\u015F + Ara\u00E7 & S\u00FCr\u00FCc\u00FC -->\r\n <div class=\"col-md-6\">\r\n\r\n <!-- Grup: Giri\u015F / \u00C7\u0131k\u0131\u015F Bilgileri -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-sign-in-alt me-2\"></i>{{ 'Kadooglu::EntryExitInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::Gate' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ gateName || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">Ara\u00E7 Hareket T\u00FCr\u00FC</div>\r\n <div class=\"col-7 fw-medium\">{{ entryTypeName || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::EntryDate' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ entryDate ? (entryDate | date:'dd.MM.yyyy') : '\u2014' }} {{ entryTime || '' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::ExitDate' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ exitDate ? (exitDate | date:'dd.MM.yyyy') : '\u2014' }} {{ exitTime || '' }}</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Grup: Ara\u00E7 & S\u00FCr\u00FCc\u00FC Bilgileri -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-truck me-2\"></i>{{ 'Kadooglu::VehicleDriverInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::TruckPlate' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ truckPlateNo || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::TrailerPlate' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ trailerPlateNo || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::DriverName' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ driverFullName || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::TcIdentityNo' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ tcNo || '\u2014' }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Sa\u011F s\u00FCtun: Belge & Y\u00FCk -->\r\n <div class=\"col-md-6\">\r\n\r\n <!-- Grup: Belge & Y\u00FCk Bilgileri -->\r\n <div class=\"border rounded p-3 mb-3\">\r\n <div class=\"border-bottom pb-2 mb-3 fw-bold text-secondary\">\r\n <i class=\"fa fa-file-alt me-2\"></i>{{ 'Kadooglu::DocumentCargoInfo' | abpLocalization }}\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::DriverCode' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ driverName || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::BusinessPartner' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ accountTitle || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::WaybillNumber' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ waybillNo || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::ScaleCode' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ scaleName || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::ItemCode' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ stockName || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::ContainerNo' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ containerNo || '\u2014' }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\" style=\"border-bottom: 1px solid #f0f0f0;\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::DepartureToArrival' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ (departureLocation || '\u2014') + ' \u2192 ' + (arrivalLocation || '\u2014') }}</div>\r\n </div>\r\n <div class=\"row mb-2 py-1\">\r\n <div class=\"col-5 text-muted small fw-semibold\">{{ 'Kadooglu::Description' | abpLocalization }}</div>\r\n <div class=\"col-7 fw-medium\">{{ description || '\u2014' }}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Alt Butonlar -->\r\n <div class=\"d-flex justify-content-between mt-3 mb-3\">\r\n <button class=\"btn btn-secondary\" (click)=\"goBack()\">\r\n <i class=\"fa fa-arrow-left me-1\"></i> {{ 'Kadooglu::BackToList' | abpLocalization }}\r\n </button>\r\n <button\r\n *ngIf=\"entryTypeMalGC && record?.u_Status === '2'\"\r\n class=\"btn btn-warning\"\r\n type=\"button\"\r\n [disabled]=\"isDoingGoodsMovement\"\r\n (click)=\"doGoodsMovement()\">\r\n <i [class]=\"isDoingGoodsMovement ? 'fa fa-spinner fa-spin me-1' : 'fa fa-exchange me-1'\" aria-hidden=\"true\"></i>\r\n {{ 'Kadooglu::MalGcYap' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</abp-page>\r\n" }]
661
661
  }], ctorParameters: function () { return [{ type: i1.HitEntryWeighingService }, { type: i2.HitStockTransferService }, { type: i3.ConfirmationService }, { type: i3.ToasterService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i5.LocalizationService }, { type: i6.ScaleSignalRService }]; } });
662
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9oaXQtY29tcG9uZW50cy9oaXQtZW50cnktd2VpZ2hpbmcvaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0vaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9oaXQtY29tcG9uZW50cy9oaXQtZW50cnktd2VpZ2hpbmcvaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0vaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJN0QsT0FBTyxFQUE0QixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUF1QjNDLE1BQU0sT0FBTyw2QkFBNkI7SUFnR3hDLFlBQ1UsT0FBZ0MsRUFDaEMsb0JBQTZDLEVBQzdDLFlBQWlDLEVBQ2pDLE9BQXVCLEVBQ3ZCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDeEMsbUJBQXdDO1FBUHhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF2R2xE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QU8sS0FBSyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEYsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNELE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDOzswSEF4cUJVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG1FQzVCMUMsa3ppQ0F3bkJBOzJGRDVsQmEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNjYWxlU2lnbmFsUlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zY2FsZS1zaWduYWxyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRFbnRyeVdlaWdoaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtZW50cnktd2VpZ2hpbmcvaGl0LWVudHJ5LXdlaWdoaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRTdG9ja1RyYW5zZmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtc3RvY2stdHJhbnNmZXIvaGl0LXN0b2NrLXRyYW5zZmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9ja1RyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1zdG9jay10cmFuc2Zlci9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIEVudHJ5V2VpZ2hpbmcsXHJcbiAgRW50cnlXZWlnaGluZ0FjY291bnQsXHJcbiAgRW50cnlXZWlnaGluZ0RvY3VtZW50LFxyXG4gIEVudHJ5V2VpZ2hpbmdEcml2ZXIsXHJcbiAgRW50cnlXZWlnaGluZ0dhdGUsXHJcbiAgRW50cnlXZWlnaGluZ1NjYWxlLFxyXG4gIEVudHJ5V2VpZ2hpbmdTdG9ja0l0ZW0sXHJcbiAgRW50cnlXZWlnaGluZ1RyYWlsZXJQbGF0ZSxcclxuICBFbnRyeVdlaWdoaW5nVHJ1Y2tQbGF0ZSxcclxuICBFbnRyeVdlaWdoaW5nVmVoaWNsZVR5cGUsXHJcbiAgU2F2ZUVudHJ5V2VpZ2hpbmdEdG8sXHJcbn0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1lbnRyeS13ZWlnaGluZy9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtZW50cnktd2VpZ2hpbmctZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRFbnRyeVdlaWdoaW5nRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWNvcmQ6IEVudHJ5V2VpZ2hpbmcgfCBudWxsID0gbnVsbDtcclxuICBpc1VwZGF0ZU1vZGUgPSBmYWxzZTtcclxuXHJcbiAgLy8gV2l6YXJkIHBoYXNlOiAxID0gQXJhw6cgJiBCZWxnZSwgMiA9IFRhcnTEsW0gUGFuZWxpXHJcbiAgZm9ybVBoYXNlOiAxIHwgMiA9IDE7XHJcbiAgLy8gV2VpZ2hpbmcgbW9kZSBmcm9tIHF1ZXJ5IHBhcmFtOiAnZmlyc3QnIHwgJ2xhc3QnIHwgbnVsbCAobnVsbCA9IG5vcm1hbCBuZXcvZWRpdClcclxuICB3ZWlnaGluZ01vZGU6ICdmaXJzdCcgfCAnbGFzdCcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gTG9va3VwIGxvYWRlciBmdW5jdGlvbnMgKGNhbGxlZCBsYXppbHkgd2hlbiBtb2RhbCBvcGVucylcclxuICBsb2FkRG9jdW1lbnRzID0gKCkgPT4gdGhpcy5zZXJ2aWNlLmdldERvY3VtZW50cygpO1xyXG4gIGxvYWRTY2FsZXMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0U2NhbGVzKCk7XHJcbiAgbG9hZFRydWNrUGxhdGVzID0gKCkgPT4gdGhpcy5zZXJ2aWNlLmdldFRydWNrUGxhdGVzKCk7XHJcbiAgbG9hZFRyYWlsZXJQbGF0ZXMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0VHJhaWxlclBsYXRlcygpO1xyXG4gIGxvYWREcml2ZXJzID0gKCkgPT4gdGhpcy5zZXJ2aWNlLmdldERyaXZlcnMoKTtcclxuICBsb2FkQWNjb3VudHMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0QWNjb3VudHMoKTtcclxuICBsb2FkU3RvY2tJdGVtcyA9ICgpID0+IHRoaXMuc2VydmljZS5nZXRTdG9ja0l0ZW1zKCk7XHJcbiAgd2F5YmlsbERlZmF1bHREYXRlRnJvbTogRGF0ZSA9ICgoKSA9PiB7IGNvbnN0IGQgPSBuZXcgRGF0ZSgpOyBkLnNldERhdGUoZC5nZXREYXRlKCkgLSAzKTsgcmV0dXJuIGQ7IH0pKCk7XHJcbiAgd2F5YmlsbERlZmF1bHREYXRlVG86IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIGxvYWRXYXliaWxscyA9IChwYXJhbXM/OiBhbnkpID0+IHRoaXMuc3RvY2tUcmFuc2ZlclNlcnZpY2UuZ2V0TGlzdChwYXJhbXMpO1xyXG4gIGxvYWRHYXRlcyA9ICgpID0+IHRoaXMuc2VydmljZS5nZXRHYXRlcygpO1xyXG4gIGxvYWRWZWhpY2xlVHlwZXMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0VmVoaWNsZVR5cGVzKCk7XHJcblxyXG4gIC8vIENvbHVtbiBjb25maWdzXHJcbiAgZG9jdW1lbnRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIHNjYWxlQ29sdW1uczogYW55W10gPSBbXTtcclxuICB0cnVja1BsYXRlQ29sdW1uczogYW55W10gPSBbXTtcclxuICB0cmFpbGVyUGxhdGVDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGRyaXZlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgYWNjb3VudENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgc3RvY2tJdGVtQ29sdW1uczogYW55W10gPSBbXTtcclxuICB3YXliaWxsQ29sdW1uczogYW55W10gPSBbXTtcclxuICBnYXRlQ29sdW1uczogYW55W10gPSBbXTtcclxuICB2ZWhpY2xlVHlwZUNvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gIC8vIEZvcm0gZmllbGRzXHJcbiAgZG9jdW1lbnRDb2RlID0gJyc7XHJcbiAgZG9jdW1lbnROYW1lID0gJyc7XHJcbiAgc2NhbGVDb2RlID0gJzEnO1xyXG4gIHNjYWxlTmFtZSA9ICdLYW50YXIgMSc7XHJcbiAgYWNjb3VudENvZGUgPSAnJztcclxuICBhY2NvdW50VGl0bGUgPSAnJztcclxuICB0cnVja1BsYXRlQ29kZSA9ICcnO1xyXG4gIHRydWNrUGxhdGVObyA9ICcnO1xyXG4gIHRyYWlsZXJQbGF0ZUNvZGUgPSAnJztcclxuICB0cmFpbGVyUGxhdGVObyA9ICcnO1xyXG4gIGRyaXZlckNvZGUgPSAnJztcclxuICBkcml2ZXJOYW1lID0gJyc7XHJcbiAgc3RvY2tDb2RlID0gJyc7XHJcbiAgc3RvY2tOYW1lID0gJyc7XHJcbiAgY29udGFpbmVyTm8gPSAnJztcclxuICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gIHdheWJpbGxObyA9ICcnO1xyXG4gIGRlcGFydHVyZUxvY2F0aW9uID0gJyc7XHJcbiAgYXJyaXZhbExvY2F0aW9uID0gJ0ZhYnJpa2EnO1xyXG5cclxuICAvLyBaWlpfVEVTVDIgeWVuaSBhbGFubGFyXHJcbiAgZ2F0ZUNvZGUgPSAnJztcclxuICBnYXRlTmFtZSA9ICcnO1xyXG4gIGVudHJ5RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZW50cnlUaW1lID0gJyc7XHJcbiAgZXhpdERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGV4aXRUaW1lID0gJyc7XHJcbiAgZW50cnlUeXBlQ29kZSA9ICcnO1xyXG4gIGVudHJ5VHlwZU5hbWUgPSAnJztcclxuICBkcml2ZXJGdWxsTmFtZSA9ICcnO1xyXG4gIHRjTm8gPSAnJztcclxuICBpc1RjQ2l0aXplbiA9IHRydWU7XHJcblxyXG4gIC8vIFRhcnTEsW0gYmlsZ2lsZXJpIChyZWFkb25seSlcclxuICBmaXJzdE9wZXJhdG9yQ29kZSA9ICcnO1xyXG4gIGZpcnN0V2VpZ2hpbmdWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgbGFzdE9wZXJhdG9yQ29kZSA9ICcnO1xyXG4gIGxhc3RXZWlnaGluZ1ZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBjdXJyZW50U2NhbGVWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgZml4ZWRTY2FsZVZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaXNTYXZpbmcgPSBmYWxzZTtcclxuICBpc1dlaWdoaW5nID0gZmFsc2U7XHJcbiAgZW50cnlUeXBlVHJ0bVlwaWxjayA9IGZhbHNlO1xyXG4gIGVudHJ5VHlwZU1hbEdDID0gZmFsc2U7XHJcbiAgaXNEb2luZ0dvb2RzTW92ZW1lbnQgPSBmYWxzZTtcclxuXHJcbiAgaXNTY2FsZUNvbm5lY3RpbmcgPSBmYWxzZTtcclxuICBpc1NjYWxlUmVjb25uZWN0aW5nID0gZmFsc2U7XHJcbiAgc2NhbGVDb25uZWN0aW9uRmFpbGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzY2FsZVN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY2FsZUFwaVVybCA9ICdodHRwOi8vMTkyLjE2OC4xMC45NTo4MDgwJztcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjYWxlSWQgPSAnS0FOVEFSLTAxJztcclxuXHJcbiAgLyoqIFNBUCByZXNwb25zZSBjYW1lbENhc2UvUGFzY2FsQ2FzZSBmYXJrxLFuxLEgaGFuZGxlIGVkZXIgKi9cclxuICBwcml2YXRlIGdldERvY0VudHJ5KHJlYzogRW50cnlXZWlnaGluZyB8IG51bGwpOiBudW1iZXIgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFyZWMpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gcmVjLmRvY0VudHJ5ID8/IChyZWMgYXMgYW55KS5kb2NFbnRyeTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBIaXRFbnRyeVdlaWdoaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvY2tUcmFuc2ZlclNlcnZpY2U6IEhpdFN0b2NrVHJhbnNmZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzY2FsZVNpZ25hbFJTZXJ2aWNlOiBTY2FsZVNpZ25hbFJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGwgPSAoa2V5OiBzdHJpbmcpID0+IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6JyArIGtleSk7XHJcbiAgICB0aGlzLmRvY3VtZW50Q29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnRG9jdW1lbnRObycpLCB3aWR0aDogMTIwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnbmFtZScsIGNhcHRpb246IGwoJ0NhcmROYW1lJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnNjYWxlQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogODAgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICduYW1lJywgY2FwdGlvbjogbCgnU2NhbGVOYW1lJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnRydWNrUGxhdGVDb2x1bW5zID0gW1xyXG4gICAgICB7IGRhdGFGaWVsZDogJ2NvZGUnLCBjYXB0aW9uOiBsKCdDb2RlJyksIHdpZHRoOiAxMDAgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICdwbGF0ZU5vJywgY2FwdGlvbjogbCgnUGxhdGUnKSB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMudHJhaWxlclBsYXRlQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogMTAwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAncGxhdGVObycsIGNhcHRpb246IGwoJ1BsYXRlJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLmRyaXZlckNvbHVtbnMgPSBbXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnY29kZScsIGNhcHRpb246IGwoJ0NvZGUnKSwgd2lkdGg6IDEwMCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ25hbWUnLCBjYXB0aW9uOiBsKCdGdWxsTmFtZScpIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy5hY2NvdW50Q29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogMTAwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAndGl0bGUnLCBjYXB0aW9uOiBsKCdBY2NvdW50VGl0bGUnKSB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMuc3RvY2tJdGVtQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogMTAwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnbmFtZScsIGNhcHRpb246IGwoJ1N0b2NrTmFtZScpIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy53YXliaWxsQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdkb2NOdW0nLCBjYXB0aW9uOiBsKCdEb2N1bWVudE5vJyksIHdpZHRoOiAxMDAgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICdVX0VGQVROTycsIGNhcHRpb246IGwoJ1dheWJpbGxObycpLCB3aWR0aDogMTIwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnY2FyZE5hbWUnLCBjYXB0aW9uOiBsKCdDYXJkTmFtZScpIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnZnJvbVdhcmVob3VzZScsIGNhcHRpb246IGwoJ0V4aXRXYXJlaG91c2UnKSwgd2lkdGg6IDE0MCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ1VfQXJhY1BsYWthc2knLCBjYXB0aW9uOiBsKCdWZWhpY2xlUGxhdGUnKSwgd2lkdGg6IDExMCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ1VfU29mb3JBZCcsIGNhcHRpb246IGwoJ0RyaXZlck5hbWUnKSB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ1VfU29mb3JTb3lhZGknLCBjYXB0aW9uOiBsKCdEcml2ZXJTdXJuYW1lJykgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb21tZW50cycsIGNhcHRpb246IGwoJ0Rlc2NyaXB0aW9uJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLmdhdGVDb2x1bW5zID0gW1xyXG4gICAgICB7IGRhdGFGaWVsZDogJ2NvZGUnLCBjYXB0aW9uOiBsKCdDb2RlJyksIHdpZHRoOiA4MCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ25hbWUnLCBjYXB0aW9uOiBsKCdHYXRlTmFtZScpIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy52ZWhpY2xlVHlwZUNvbHVtbnMgPSBbXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnY29kZScsIGNhcHRpb246IGwoJ0NvZGUnKSwgd2lkdGg6IDgwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnbmFtZScsIGNhcHRpb246IGwoJ0VudHJ5VHlwZU5hbWUnKSB9LFxyXG4gICAgXTtcclxuXHJcbiAgICAvLyBSZWFkIHdlaWdoaW5nIG1vZGUgZnJvbSBxdWVyeSBwYXJhbXNcclxuICAgIGNvbnN0IG1vZGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdtb2RlJyk7XHJcbiAgICBpZiAobW9kZSA9PT0gJ2ZpcnN0JyB8fCBtb2RlID09PSAnbGFzdCcpIHtcclxuICAgICAgdGhpcy53ZWlnaGluZ01vZGUgPSBtb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIMOWbmNlIHJvdXRlciBzdGF0ZSdkZW4gc2F0xLFyIHZlcmlzaW5pIG9rdSAobGlzdGUgZWtyYW7EsW5kYW4gYWt0YXLEsWxhbilcclxuICAgIGNvbnN0IHN0YXRlRGF0YSA9IGhpc3Rvcnkuc3RhdGU/LnJvd0RhdGE7XHJcbiAgICBjb25zdCBpZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpO1xyXG5cclxuICAgIGlmIChzdGF0ZURhdGEpIHtcclxuICAgICAgLy8gU3RhdGUnZGVuIGdlbGVuIHZlcml5aSBrdWxsYW4gKEFQSSDDp2HEn3LEsXPEsSBvbG1hZGFuKVxyXG4gICAgICB0aGlzLmlzVXBkYXRlTW9kZSA9IHRydWU7XHJcbiAgICAgIHRoaXMucmVjb3JkID0gc3RhdGVEYXRhO1xyXG4gICAgICB0aGlzLmluaXRGb3JtKCk7XHJcbiAgICAgIC8vIFNvbiB0YXJ0xLFtIG1vZHVuZGF5c2EgZGlyZWt0IHRhcnTEsW0gcGFuZWxpbmkgYcOnXHJcbiAgICAgIGlmICh0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2xhc3QnKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGhhc2UgPSAyO1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0U2NhbGUoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChpZCkge1xyXG4gICAgICAvLyBGYWxsYmFjazogc3RhdGUgeW9rc2EgQVBJJ2RlbiB5w7xrbGVcclxuICAgICAgdGhpcy5pc1VwZGF0ZU1vZGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuZ2V0KCtpZCkuc3Vic2NyaWJlKHJlY29yZCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmQgPSByZWNvcmQ7XHJcbiAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgICAgIC8vIFNvbiB0YXJ0xLFtIG1vZHVuZGF5c2EgZGlyZWt0IHRhcnTEsW0gcGFuZWxpbmkgYcOnXHJcbiAgICAgICAgaWYgKHRoaXMud2VpZ2hpbmdNb2RlID09PSAnbGFzdCcpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVBoYXNlID0gMjtcclxuICAgICAgICAgIHRoaXMuX3N0YXJ0U2NhbGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHdlaWdoaW5nU3RlcCgpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RhdHVzID0gKHRoaXMucmVjb3JkIGFzIGFueSk/LnVfU3RhdHVzO1xyXG4gICAgaWYgKHRoaXMubGFzdFdlaWdoaW5nVmFsdWUgIT09IG51bGwgfHwgc3RhdHVzID09PSAnMicgfHwgc3RhdHVzID09PSAnMycgfHwgc3RhdHVzID09PSAnNCcpIHJldHVybiAzO1xyXG4gICAgaWYgKHRoaXMuZmlyc3RXZWlnaGluZ1ZhbHVlICE9PSBudWxsIHx8IHN0YXR1cyA9PT0gJzEnKSByZXR1cm4gMjtcclxuICAgIHJldHVybiAxO1xyXG4gIH1cclxuXHJcbiAgLyoqIMSwbGsgdGFydMSxbSB5YXDEsWxkxLF5c2EgKHN0ZXAgPj0gMikgZGV0YXkgYWxhbmxhcsSxbsSxIGtpbGl0bGUgKi9cclxuICBnZXQgaXNGb3JtTG9ja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2VpZ2hpbmdTdGVwID49IDI7XHJcbiAgfVxyXG5cclxuICAvKiogSGVyIGlraSB0YXJ0xLFtIGRhIHRhbWFtbGFuZMSxeXNhIChzdGVwID09PSAzKSB0w7xtIGVrcmFuxLEga2lsaXRsZSAqL1xyXG4gIGdldCBpc0Z1bGx5Q29tcGxldGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2VpZ2hpbmdTdGVwID09PSAzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVudHJ5RGF0ZVRpbWUoKTogRGF0ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuYnVpbGREYXRlVGltZSh0aGlzLmVudHJ5RGF0ZSwgdGhpcy5lbnRyeVRpbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGV4aXREYXRlVGltZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5idWlsZERhdGVUaW1lKHRoaXMuZXhpdERhdGUsIHRoaXMuZXhpdFRpbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRhcmloIHN0cmluZyArIHNhecSxc2FsIHNhYXQgKMO2ci4gODMwID0gMDg6MzApIGRlxJ9lcmluZGVuIERhdGUgb2x1xZ90dXJ1ciAqL1xyXG4gIHByaXZhdGUgYnVpbGREYXRlVGltZShkYXRlU3RyOiBzdHJpbmcgfCBudWxsLCB0aW1lVmFsOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlU3RyKTtcclxuICAgIGlmIChpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgdCA9IE51bWJlcih0aW1lVmFsKTtcclxuICAgIGlmICghaXNOYU4odCkpIHtcclxuICAgICAgZC5zZXRIb3VycyhNYXRoLmZsb29yKHQgLyAxMDApLCB0ICUgMTAwLCAwLCAwKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5ldFdlaWdodCgpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSAhPT0gbnVsbCAmJiB0aGlzLmxhc3RXZWlnaGluZ1ZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSAtIHRoaXMubGFzdFdlaWdoaW5nVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgd2VpZ2hpbmdNb2RlTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0J1xyXG4gICAgICA/IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6Rmlyc3RXZWlnaGluZycpXHJcbiAgICAgIDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpMYXN0V2VpZ2hpbmcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmQpIHtcclxuICAgICAgY29uc3QgciA9IHRoaXMucmVjb3JkIGFzIGFueTsgLy8gU0FQIGNhbWVsQ2FzZSBmYWxsYmFja1xyXG4gICAgICB0aGlzLnNjYWxlQ29kZSA9IHIudV9TY2FsZUNvZGUgPz8gci51X1NjYWxlQ29kZSA/PyAnJztcclxuICAgICAgdGhpcy5hY2NvdW50Q29kZSA9IHIudV9DYXJkQ29kZSA/PyByLnVfQ2FyZENvZGUgPz8gJyc7XHJcbiAgICAgIHRoaXMudHJ1Y2tQbGF0ZUNvZGUgPSByLnVfUGxhdGUgPz8gci51X1BsYXRlID8/ICcnO1xyXG4gICAgICB0aGlzLnRydWNrUGxhdGVObyA9IHIudV9QbGF0ZSA/PyByLnVfUGxhdGUgPz8gJyc7XHJcbiAgICAgIHRoaXMudHJhaWxlclBsYXRlQ29kZSA9IHIudV9Eb3JzZVBsYXRlID8/ICcnO1xyXG4gICAgICB0aGlzLnRyYWlsZXJQbGF0ZU5vID0gci51X0RvcnNlUGxhdGUgPz8gJyc7XHJcbiAgICAgIHRoaXMuZHJpdmVyQ29kZSA9IHIudV9Ecml2ZXJDb2RlID8/IHIudV9Ecml2ZXJDb2RlID8/ICcnO1xyXG4gICAgICB0aGlzLnN0b2NrQ29kZSA9IHIudV9JdGVtQ29kZSA/PyByLnVfSXRlbUNvZGUgPz8gJyc7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyTm8gPSByLnVfQ29udGFpbmVyTm8gPz8gci51X0NvbnRhaW5lck5vID8/ICcnO1xyXG4gICAgICB0aGlzLndheWJpbGxObyA9IHIudV9EZXNwYXRjaEFkdmljZU5vID8/IHIudV9EZXNwYXRjaEFkdmljZU5vID8/ICcnO1xyXG4gICAgICB0aGlzLmRlcGFydHVyZUxvY2F0aW9uID0gci51X1NoaXBQbGFjZSA/PyByLnVfU2hpcFBsYWNlID8/ICcnO1xyXG4gICAgICB0aGlzLmFycml2YWxMb2NhdGlvbiA9IHIudV9TaGlwVG8gPz8gci51X1NoaXBUbyA/PyAnRmFicmlrYSc7XHJcbiAgICAgIHRoaXMuZmlyc3RPcGVyYXRvckNvZGUgPSByLnVfRmlyc3RPcHQgPz8gci51X0ZpcnN0T3B0ID8/ICcnO1xyXG4gICAgICB0aGlzLmxhc3RPcGVyYXRvckNvZGUgPSByLnVfTGFzdE9wdCA/PyByLnVfTGFzdE9wdCA/PyAnJztcclxuICAgICAgY29uc3QgcmF3Rmlyc3QgPSByLnVfRmlyc3RXZWlnaGluZyA/PyByLnVfRmlyc3RXZWlnaGluZyA/PyBudWxsO1xyXG4gICAgICB0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSA9IChyYXdGaXJzdCAhPSBudWxsICYmIHJhd0ZpcnN0ICE9PSAwKSA/IHJhd0ZpcnN0IDogbnVsbDtcclxuICAgICAgY29uc3QgcmF3TGFzdCA9IHIudV9MYXN0V2VpZ2hpbmcgPz8gci51X0xhc3RXZWlnaGluZyA/PyBudWxsO1xyXG4gICAgICB0aGlzLmxhc3RXZWlnaGluZ1ZhbHVlID0gKHJhd0xhc3QgIT0gbnVsbCAmJiByYXdMYXN0ICE9PSAwKSA/IHJhd0xhc3QgOiBudWxsO1xyXG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gci51X0Rlc2NyaXB0aW9uID8/IHIudV9EZXNjcmlwdGlvbiA/PyAnJztcclxuXHJcbiAgICAgIC8vIFpaWl9URVNUMiB5ZW5pIGFsYW5sYXJcclxuICAgICAgdGhpcy5nYXRlQ29kZSA9IHIudV9HYXRlQ29kZSA/PyByLnVfR2F0ZUNvZGUgPz8gJyc7XHJcbiAgICAgIHRoaXMuZW50cnlEYXRlID0gci51X0VudHJ5RGF0ZSA/PyByLnVfRW50cnlEYXRlID8/IG51bGw7XHJcbiAgICAgIHRoaXMuZW50cnlUaW1lID0gci51X0VudHJ5VGltZSA/PyByLnVfRW50cnlUaW1lID8/ICcnO1xyXG4gICAgICB0aGlzLmV4aXREYXRlID0gci51X0V4aXREYXRlID8/IHIudV9FeGl0RGF0ZSA/PyBudWxsO1xyXG4gICAgICB0aGlzLmV4aXRUaW1lID0gci51X0V4aXRUaW1lID8/IHIudV9FeGl0VGltZSA/PyAnJztcclxuICAgICAgdGhpcy5lbnRyeVR5cGVDb2RlID0gci51X0VudHJ5VHlwZSA/PyByLnVfRW50cnlUeXBlID8/ICcnO1xyXG4gICAgICB0aGlzLmRyaXZlckZ1bGxOYW1lID0gci51X0RyaXZlciA/PyByLnVfRHJpdmVyID8/ICcnO1xyXG4gICAgICB0aGlzLnRjTm8gPSByLnVfVGNObyA/PyByLnVfVGNObyA/PyAnJztcclxuICAgICAgdGhpcy5pc1RjQ2l0aXplbiA9IHRydWU7XHJcblxyXG4gICAgICAvLyBMb29rdXAgYWxhbmxhcsSxbsSxbiBnw7Zyw7xuZW4gaXNpbWxlcmluaSDDp8O2esO8bWxlXHJcbiAgICAgIHRoaXMucmVzb2x2ZURpc3BsYXlOYW1lcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEthecSxdHRha2kga29kIGFsYW5sYXLEsW5hIGthcsWfxLFsxLFrIGdlbGVuIGfDtnLDvG5lbiBpc2ltbGVyaSBsb29rdXAgc2VydmlzbGVyaW5kZW4gw6fDtnrDvG1sZXIgKi9cclxuICBwcml2YXRlIHJlc29sdmVEaXNwbGF5TmFtZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb29rdXBzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcblxyXG4gICAgaWYgKHRoaXMuZ2F0ZUNvZGUpIHtcclxuICAgICAgbG9va3Vwc1snZ2F0ZXMnXSA9IHRoaXMubG9hZEdhdGVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbnRyeVR5cGVDb2RlKSB7XHJcbiAgICAgIGxvb2t1cHNbJ3ZlaGljbGVUeXBlcyddID0gdGhpcy5sb2FkVmVoaWNsZVR5cGVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zY2FsZUNvZGUpIHtcclxuICAgICAgbG9va3Vwc1snc2NhbGVzJ10gPSB0aGlzLmxvYWRTY2FsZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFjY291bnRDb2RlKSB7XHJcbiAgICAgIGxvb2t1cHNbJ2FjY291bnRzJ10gPSB0aGlzLmxvYWRBY2NvdW50cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJpdmVyQ29kZSkge1xyXG4gICAgICBsb29rdXBzWydkcml2ZXJzJ10gPSB0aGlzLmxvYWREcml2ZXJzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdG9ja0NvZGUpIHtcclxuICAgICAgbG9va3Vwc1snc3RvY2tJdGVtcyddID0gdGhpcy5sb2FkU3RvY2tJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsb29rdXBzKTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGZvcmtKb2luKGxvb2t1cHMpLnN1YnNjcmliZSgocmVzdWx0czogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHRzLmdhdGVzKSB7XHJcbiAgICAgICAgY29uc3QgZ2F0ZSA9IHJlc3VsdHMuZ2F0ZXMuZmluZCgoZzogYW55KSA9PiBnLmNvZGUgPT09IHRoaXMuZ2F0ZUNvZGUpO1xyXG4gICAgICAgIGlmIChnYXRlKSB0aGlzLmdhdGVOYW1lID0gZ2F0ZS5uYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHRzLnZlaGljbGVUeXBlcykge1xyXG4gICAgICAgIGNvbnN0IHZ0ID0gcmVzdWx0cy52ZWhpY2xlVHlwZXMuZmluZCgodDogYW55KSA9PiB0LmNvZGUgPT09IHRoaXMuZW50cnlUeXBlQ29kZSk7XHJcbiAgICAgICAgaWYgKHZ0KSB7XHJcbiAgICAgICAgICB0aGlzLmVudHJ5VHlwZU5hbWUgPSB2dC5uYW1lO1xyXG4gICAgICAgICAgdGhpcy5lbnRyeVR5cGVUcnRtWXBpbGNrID0gdnQudV9UcnRtWXBpbGNrID09PSAnWSc7XHJcbiAgICAgICAgICB0aGlzLmVudHJ5VHlwZU1hbEdDID0gdnQudV9NYWxHQyA9PT0gJ1knO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0cy5zY2FsZXMpIHtcclxuICAgICAgICBjb25zdCBzY2FsZSA9IHJlc3VsdHMuc2NhbGVzLmZpbmQoKHM6IGFueSkgPT4gcy5jb2RlID09PSB0aGlzLnNjYWxlQ29kZSk7XHJcbiAgICAgICAgaWYgKHNjYWxlKSB0aGlzLnNjYWxlTmFtZSA9IHNjYWxlLm5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdHMuYWNjb3VudHMpIHtcclxuICAgICAgICBjb25zdCBhY2NvdW50ID0gcmVzdWx0cy5hY2NvdW50cy5maW5kKChhOiBhbnkpID0+IGEuY29kZSA9PT0gdGhpcy5hY2NvdW50Q29kZSk7XHJcbiAgICAgICAgaWYgKGFjY291bnQpIHRoaXMuYWNjb3VudFRpdGxlID0gYWNjb3VudC50aXRsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0cy5kcml2ZXJzKSB7XHJcbiAgICAgICAgY29uc3QgZHJpdmVyID0gcmVzdWx0cy5kcml2ZXJzLmZpbmQoKGQ6IGFueSkgPT4gZC5jb2RlID09PSB0aGlzLmRyaXZlckNvZGUpO1xyXG4gICAgICAgIGlmIChkcml2ZXIpIHRoaXMuZHJpdmVyTmFtZSA9IGRyaXZlci5uYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHRzLnN0b2NrSXRlbXMpIHtcclxuICAgICAgICBjb25zdCBpdGVtID0gcmVzdWx0cy5zdG9ja0l0ZW1zLmZpbmQoKGk6IGFueSkgPT4gaS5jb2RlID09PSB0aGlzLnN0b2NrQ29kZSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHRoaXMuc3RvY2tOYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRG9jdW1lbnRTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kb2N1bWVudENvZGUgPSBlLmNvZGU7XHJcbiAgICB0aGlzLmRvY3VtZW50TmFtZSA9IGUubmFtZTtcclxuICB9XHJcblxyXG4gIG9uU2NhbGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nU2NhbGUpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zY2FsZUNvZGUgPSBlLmNvZGU7XHJcbiAgICB0aGlzLnNjYWxlTmFtZSA9IGUubmFtZTtcclxuICB9XHJcblxyXG4gIG9uQWNjb3VudFNlbGVjdGVkKGU6IEVudHJ5V2VpZ2hpbmdBY2NvdW50KTogdm9pZCB7XHJcbiAgICBpZiAoIWUpIHJldHVybjtcclxuICAgIHRoaXMuYWNjb3VudENvZGUgPSBlLmNvZGU7XHJcbiAgICB0aGlzLmFjY291bnRUaXRsZSA9IGUudGl0bGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25UcnVja1BsYXRlU2VsZWN0ZWQoZTogRW50cnlXZWlnaGluZ1RydWNrUGxhdGUpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy50cnVja1BsYXRlQ29kZSA9IGUuY29kZTtcclxuICAgIHRoaXMudHJ1Y2tQbGF0ZU5vID0gZS5wbGF0ZU5vO1xyXG4gIH1cclxuXHJcbiAgb25UcmFpbGVyUGxhdGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nVHJhaWxlclBsYXRlKTogdm9pZCB7XHJcbiAgICBpZiAoIWUpIHJldHVybjtcclxuICAgIHRoaXMudHJhaWxlclBsYXRlQ29kZSA9IGUuY29kZTtcclxuICAgIHRoaXMudHJhaWxlclBsYXRlTm8gPSBlLnBsYXRlTm87XHJcbiAgfVxyXG5cclxuICBvbkRyaXZlclNlbGVjdGVkKGU6IEVudHJ5V2VpZ2hpbmdEcml2ZXIpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kcml2ZXJDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5kcml2ZXJOYW1lID0gZS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgb25TdG9ja0l0ZW1TZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nU3RvY2tJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAoIWUpIHJldHVybjtcclxuICAgIHRoaXMuc3RvY2tDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5zdG9ja05hbWUgPSBlLm5hbWU7XHJcbiAgfVxyXG5cclxuICBvbkdhdGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nR2F0ZSk6IHZvaWQge1xyXG4gICAgaWYgKCFlKSByZXR1cm47XHJcbiAgICB0aGlzLmdhdGVDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5nYXRlTmFtZSA9IGUubmFtZTtcclxuICB9XHJcblxyXG4gIG9uVmVoaWNsZVR5cGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nVmVoaWNsZVR5cGUpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lbnRyeVR5cGVDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5lbnRyeVR5cGVOYW1lID0gZS5uYW1lO1xyXG4gICAgdGhpcy5lbnRyeVR5cGVUcnRtWXBpbGNrID0gZS51X1RydG1ZcGlsY2sgPT09ICdZJztcclxuICAgIHRoaXMuZW50cnlUeXBlTWFsR0MgPSBlLnVfTWFsR0MgPT09ICdZJztcclxuICB9XHJcblxyXG4gIG9uV2F5YmlsbFNlbGVjdGVkKGU6IFN0b2NrVHJhbnNmZXIpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy53YXliaWxsTm8gPSBlLmRvY051bS50b1N0cmluZygpO1xyXG4gICAgaWYgKGUuY2FyZENvZGUpIHsgdGhpcy5hY2NvdW50Q29kZSA9IGUuY2FyZENvZGU7IHRoaXMuYWNjb3VudFRpdGxlID0gZS5jYXJkTmFtZTsgfVxyXG4gICAgaWYgKGUuZnJvbVdhcmVob3VzZSkgeyB0aGlzLmRlcGFydHVyZUxvY2F0aW9uID0gZS5mcm9tV2FyZWhvdXNlOyB9XHJcbiAgICBpZiAoZS5jb21tZW50cykgeyB0aGlzLmRlc2NyaXB0aW9uID0gZS5jb21tZW50czsgfVxyXG5cclxuICAgIGNvbnN0IGxpbmVzID0gZS5zdG9ja1RyYW5zZmVyTGluZXMgPz8gW107XHJcbiAgICBjb25zdCB1bmlxdWVDb2RlcyA9IFsuLi5uZXcgU2V0KGxpbmVzLm1hcChsID0+IGwuaXRlbUNvZGUpLmZpbHRlcihjID0+ICEhYykpXTtcclxuICAgIGlmICh1bmlxdWVDb2Rlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5zdG9ja0NvZGUgPSB1bmlxdWVDb2Rlc1swXTtcclxuICAgICAgdGhpcy5zdG9ja05hbWUgPSBsaW5lcy5maW5kKGwgPT4gbC5pdGVtQ29kZSA9PT0gdW5pcXVlQ29kZXNbMF0pPy5pdGVtRGVzY3JpcHRpb24gPz8gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b2NrQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLnN0b2NrTmFtZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFBoYXNlIDEg4oaSIFBoYXNlIDIgZ2XDp2nFn2kgKi9cclxuICBpbGVyaUdpdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50cnVja1BsYXRlQ29kZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6U2VsZWN0VHJ1Y2tQbGF0ZScpLCAnJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpDYW5jZWwnKSxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbnRyeVR5cGVUcnRtWXBpbGNrICYmICF0aGlzLnN0b2NrQ29kZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6U3RvY2tDb2RlUmVxdWlyZWQnKSwgJycsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6Q2FuY2VsJyksXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtUGhhc2UgPSAyO1xyXG4gICAgdGhpcy5fc3RhcnRTY2FsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBoYXNlIDIg4oaSIFBoYXNlIDEgZ2VyaSBkw7ZuICovXHJcbiAgZ2VyaUdpdFBoYXNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcFNjYWxlKCk7XHJcbiAgICB0aGlzLmZvcm1QaGFzZSA9IDE7XHJcbiAgfVxyXG5cclxuICBzYXZlKCk6IHZvaWQge1xyXG4gICAgLy8gVGFydMSxbSBtb2R1bmRheXNhIGRvV2VpZ2hpbmcgQVBJIMOnYcSfxLFyXHJcbiAgICBjb25zdCBkb2NFbnRyeSA9IHRoaXMuZ2V0RG9jRW50cnkodGhpcy5yZWNvcmQpO1xyXG4gICAgaWYgKHRoaXMud2VpZ2hpbmdNb2RlICYmIGRvY0VudHJ5KSB7XHJcbiAgICAgIGlmICh0aGlzLmZpeGVkU2NhbGVWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24ud2Fybih0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkRvRml4Rmlyc3QnKSwgJycsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkNhbmNlbCcpLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZG9XZWlnaCQgPSB0aGlzLnNlcnZpY2UuZG9XZWlnaGluZyhkb2NFbnRyeSwge1xyXG4gICAgICAgIHdlaWdoaW5nVmFsdWU6IHRoaXMuZml4ZWRTY2FsZVZhbHVlISxcclxuICAgICAgICBvcGVyYXRvckNvZGU6ICcnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gxLBMSyB0YXJ0xLFtZGEgZm9ybSBhbGFubGFyxLFuxLEgKHN0b2sga29kdSwgaXJzYWxpeWUgdmIuKSDDtm5jZSBrYXlkZXQsIHNvbnJhIHRhcnTEsW0geWFwLlxyXG4gICAgICAvLyBTT04gdGFydMSxbWRhIHNhZGVjZSB0YXJ0xLFtIHlhcCDigJQgZGnEn2VyIGFsYW5sYXIgaWxrIHRhcnTEsW1kYW4gc29ucmEgZGXEn2nFn3RpcmlsZW1lei5cclxuICAgICAgbGV0IG9icyQ6IE9ic2VydmFibGU8RW50cnlXZWlnaGluZz47XHJcbiAgICAgIGlmICh0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0Jykge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBub3cudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbm93LnRvVGltZVN0cmluZygpLnNwbGl0KCcgJylbMF07XHJcbiAgICAgICAgY29uc3QgZHRvOiBTYXZlRW50cnlXZWlnaGluZ0R0byA9IHtcclxuICAgICAgICAgIHVfR2F0ZUNvZGU6IHRoaXMuZ2F0ZUNvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9FbnRyeURhdGU6IHRoaXMuZW50cnlEYXRlIHx8IGN1cnJlbnREYXRlLFxyXG4gICAgICAgICAgdV9FbnRyeVRpbWU6IHRoaXMuZW50cnlUaW1lIHx8IGN1cnJlbnRUaW1lLFxyXG4gICAgICAgICAgdV9FeGl0RGF0ZTogdGhpcy5leGl0RGF0ZSB8fCBudWxsLFxyXG4gICAgICAgICAgdV9FeGl0VGltZTogdGhpcy5leGl0VGltZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICB1X1BsYXRlOiB0aGlzLnRydWNrUGxhdGVDb2RlLFxyXG4gICAgICAgICAgdV9Eb3JzZVBsYXRlOiB0aGlzLnRyYWlsZXJQbGF0ZUNvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9FbnRyeVR5cGU6IHRoaXMuZW50cnlUeXBlQ29kZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICB1X0Rlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfRHJpdmVyOiB0aGlzLmRyaXZlckZ1bGxOYW1lIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfRHJpdmVyQ29kZTogdGhpcy5kcml2ZXJDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfVGNObzogdGhpcy50Y05vIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfQ2FyZENvZGU6IHRoaXMuYWNjb3VudENvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9TY2FsZUNvZGU6IHRoaXMuc2NhbGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfSXRlbUNvZGU6IHRoaXMuc3RvY2tDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfRGVzcGF0Y2hBZHZpY2VObzogdGhpcy53YXliaWxsTm8gfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9EZXNwYXRjaEV4aXN0OiAnTicsXHJcbiAgICAgICAgICB1X1NoaXBUbzogdGhpcy5hcnJpdmFsTG9jYXRpb24gfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9Db250YWluZXJObzogdGhpcy5jb250YWluZXJObyB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICB1X1NoaXBQbGFjZTogdGhpcy5kZXBhcnR1cmVMb2NhdGlvbiB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBvYnMkID0gdGhpcy5zZXJ2aWNlLnVwZGF0ZShkb2NFbnRyeSwgZHRvKS5waXBlKHN3aXRjaE1hcCgoKSA9PiBkb1dlaWdoJCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9icyQgPSBkb1dlaWdoJDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIG9icyQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAvLyBUYXJ0xLFtIGRlxJ9lcmxlcmluaSB3ZWlnaGluZ01vZGUnYSBnw7ZyZSBnw7xuY2VsbGVcclxuICAgICAgICAgIGlmICh0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0Jykge1xyXG4gICAgICAgICAgICB0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSA9IHRoaXMuZml4ZWRTY2FsZVZhbHVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sYXN0V2VpZ2hpbmdWYWx1ZSA9IHRoaXMuZml4ZWRTY2FsZVZhbHVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKFxyXG4gICAgICAgICAgICB0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0J1xyXG4gICAgICAgICAgICAgID8gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpGaXJzdFdlaWdoaW5nU2F2ZWQnKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpMYXN0V2VpZ2hpbmdTYXZlZCcpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8vIEvEsXNhIGJpciBnZWNpa21lIGlsZSBsaXN0ZXllIGTDtm4gKGt1bGxhbsSxY8SxIHByb2dyZXNzIGJhciBkZcSfacWfaW1pbmkgZ8O2cnPDvG4pXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycva2Fkb29nbHUvZW50cnktd2VpZ2hpbmcnXSk7XHJcbiAgICAgICAgICB9LCB0aGlzLndlaWdoaW5nTW9kZSA9PSAnbGFzdCcgPyA4MDAwIDogMTUwMCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyLmVycm9yKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6V2VpZ2hpbmdSZWNvcmRFcnJvcicpKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5vcm1hbCBrYXnEsXQgbW9kdSAoeWVuaSBrYXnEsXQgdmV5YSBkw7x6ZW5sZW1lKVxyXG4gICAgaWYgKCF0aGlzLnRydWNrUGxhdGVDb2RlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4odGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTZWxlY3RUcnVja1BsYXRlJyksICcnLCB7XHJcbiAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkNhbmNlbCcpLFxyXG4gICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBub3cudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBub3cudG9UaW1lU3RyaW5nKCkuc3BsaXQoJyAnKVswXTsgLy8gSEg6bW06c3NcclxuXHJcbiAgICBjb25zdCBkdG86IFNhdmVFbnRyeVdlaWdoaW5nRHRvID0ge1xyXG4gICAgICB1X0dhdGVDb2RlOiB0aGlzLmdhdGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9FbnRyeURhdGU6IHRoaXMuZW50cnlEYXRlIHx8IGN1cnJlbnREYXRlLFxyXG4gICAgICB1X0VudHJ5VGltZTogdGhpcy5lbnRyeVRpbWUgfHwgY3VycmVudFRpbWUsXHJcbiAgICAgIHVfRXhpdERhdGU6IHRoaXMuZXhpdERhdGUgfHwgbnVsbCxcclxuICAgICAgdV9FeGl0VGltZTogdGhpcy5leGl0VGltZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfUGxhdGU6IHRoaXMudHJ1Y2tQbGF0ZUNvZGUsXHJcbiAgICAgIHVfRG9yc2VQbGF0ZTogdGhpcy50cmFpbGVyUGxhdGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9FbnRyeVR5cGU6IHRoaXMuZW50cnlUeXBlQ29kZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfRGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X0RyaXZlcjogdGhpcy5kcml2ZXJGdWxsTmFtZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfRHJpdmVyQ29kZTogdGhpcy5kcml2ZXJDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9UY05vOiB0aGlzLnRjTm8gfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X0NhcmRDb2RlOiB0aGlzLmFjY291bnRDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9TY2FsZUNvZGU6IHRoaXMuc2NhbGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9JdGVtQ29kZTogdGhpcy5zdG9ja0NvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X0Rlc3BhdGNoQWR2aWNlTm86IHRoaXMud2F5YmlsbE5vIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9EZXNwYXRjaEV4aXN0OiAnTicsXHJcbiAgICAgIHVfU2hpcFRvOiB0aGlzLmFycml2YWxMb2NhdGlvbiB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfQ29udGFpbmVyTm86IHRoaXMuY29udGFpbmVyTm8gfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X1NoaXBQbGFjZTogdGhpcy5kZXBhcnR1cmVMb2NhdGlvbiB8fCB1bmRlZmluZWQsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9icyQgPSBkb2NFbnRyeVxyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoZG9jRW50cnksIGR0bylcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKGR0byk7XHJcblxyXG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICBvYnMkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpSZWNvcmRTYXZlZFN1Y2Nlc3MnKSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycva2Fkb29nbHUvZW50cnktd2VpZ2hpbmcnXSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcih0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlJlY29yZFNhdmVFcnJvcicpKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZG9Hb29kc01vdmVtZW50KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZG9jRW50cnkgPSB0aGlzLmdldERvY0VudHJ5KHRoaXMucmVjb3JkKTtcclxuICAgIGlmICghZG9jRW50cnkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAud2FybihcclxuICAgICAgICB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6Ok1hbEdjQ29uZmlybU1lc3NhZ2UnLCBTdHJpbmcodGhpcy5yZWNvcmQ/LnVfUGxhdGUgfHwgZG9jRW50cnkpKSxcclxuICAgICAgICAnJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB5ZXNUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlllcycpLFxyXG4gICAgICAgICAgY2FuY2VsVGV4dDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpObycpLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ2NvbmZpcm0nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5pc0RvaW5nR29vZHNNb3ZlbWVudCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRvR29vZHNNb3ZlbWVudChkb2NFbnRyeSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IHVwZGF0ZWQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlY29yZCA9IHVwZGF0ZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEb2luZ0dvb2RzTW92ZW1lbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpHb29kc01vdmVtZW50U3VjY2VzcycpKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRG9pbmdHb29kc01vdmVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhYml0bGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpeGVkU2NhbGVWYWx1ZSA9IHRoaXMuY3VycmVudFNjYWxlVmFsdWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3BTY2FsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RhcnRTY2FsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTY2FsZUNvbm5lY3RpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zY2FsZUNvbm5lY3Rpb25GYWlsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2NhbGVTdWIgPSB0aGlzLnNjYWxlU2lnbmFsUlNlcnZpY2Uud2VpZ2h0JC5zdWJzY3JpYmUodyA9PiB7XHJcbiAgICAgIGlmICh3ICE9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5pc1NjYWxlUmVjb25uZWN0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U2NhbGVWYWx1ZSA9IHc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zY2FsZVN1Yi5hZGQoXHJcbiAgICAgIHRoaXMuc2NhbGVTaWduYWxSU2VydmljZS5yZWNvbm5lY3RpbmckLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NjYWxlUmVjb25uZWN0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTY2FsZVZhbHVlID0gbnVsbDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnNjYWxlU3ViLmFkZChcclxuICAgICAgdGhpcy5zY2FsZVNpZ25hbFJTZXJ2aWNlLmNvbm5lY3Rpb25Mb3N0JC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTY2FsZUNvbm5lY3RpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2NhbGVSZWNvbm5lY3RpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNjYWxlQ29ubmVjdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlNjYWxlQ29ubmVjdGlvbkZhaWxlZCcpLFxyXG4gICAgICAgICAgdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTY2FsZUNvbm5lY3Rpb25GYWlsZWRUaXRsZScpLFxyXG4gICAgICAgICAgeyBoaWRlWWVzQnRuOiB0cnVlLCBjYW5jZWxUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkNhbmNlbCcpIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2NhbGVTaWduYWxSU2VydmljZS5zdGFydCh0aGlzLnNjYWxlQXBpVXJsLCB0aGlzLnNjYWxlSWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHsgdGhpcy5pc1NjYWxlQ29ubmVjdGluZyA9IGZhbHNlOyB9KVxyXG4gICAgICAuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NjYWxlQ29ubmVjdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChlPy5tZXNzYWdlID09PSAnU2NhbGVDb25uZWN0aW9uTWF4UmV0cmllc1JlYWNoZWQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNjYWxlQ29ubmVjdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcihcclxuICAgICAgICAgICAgdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTY2FsZUNvbm5lY3Rpb25GYWlsZWQnKSxcclxuICAgICAgICAgICAgdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTY2FsZUNvbm5lY3Rpb25GYWlsZWRUaXRsZScpLFxyXG4gICAgICAgICAgICB7IGhpZGVZZXNCdG46IHRydWUsIGNhbmNlbFRleHQ6IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6Q2FuY2VsJykgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignU2lnbmFsUiBiYcSfbGFudMSxIGhhdGFzxLE6JywgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0b3BTY2FsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2NhbGVTdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnNjYWxlU3ViID0gbnVsbDtcclxuICAgIHRoaXMuc2NhbGVTaWduYWxSU2VydmljZS5zdG9wKHRoaXMuc2NhbGVJZClcclxuICAgICAgLmNhdGNoKGUgPT4gY29uc29sZS5lcnJvcignU2lnbmFsUiBrYXBhdG1hIGhhdGFzxLE6JywgZSkpO1xyXG4gIH1cclxuXHJcbiAgZ29CYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycva2Fkb29nbHUvZW50cnktd2VpZ2hpbmcnXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlVENLTih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0YyA9IHZhbHVlPy50cmltKCk7XHJcbiAgICBpZiAoIXRjIHx8IHRjLmxlbmd0aCAhPT0gMTEpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICghL15cXGR7MTF9JC8udGVzdCh0YykpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh0Y1swXSA9PT0gJzAnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBkID0gdGMuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xyXG4gICAgY29uc3QgZDEwID0gKChkWzBdICsgZFsyXSArIGRbNF0gKyBkWzZdICsgZFs4XSkgKiA3IC0gKGRbMV0gKyBkWzNdICsgZFs1XSArIGRbN10pKSAlIDEwO1xyXG4gICAgaWYgKGQxMCAhPT0gZFs5XSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZDExID0gZC5zbGljZSgwLCAxMCkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgJSAxMDtcclxuICAgIHJldHVybiBkMTEgPT09IGRbMTBdO1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLXBhZ2UgW2JyZWFkY3J1bWJdPVwiZmFsc2VcIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyAnS2Fkb29nbHU6OkVudHJ5V2VpZ2hpbmdUaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2VpZ2hpbmdNb2RlXCIgY2xhc3M9XCJiYWRnZSBtcy0yIGZzLTZcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2JnLXdhcm5pbmcgdGV4dC1kYXJrJzogd2VpZ2hpbmdNb2RlID09PSAnZmlyc3QnLFxyXG4gICAgICAgICAgICAgICdiZy1wcmltYXJ5Jzogd2VpZ2hpbmdNb2RlID09PSAnbGFzdCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICB7eyB3ZWlnaGluZ01vZGVMYWJlbCB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhd2VpZ2hpbmdNb2RlXCIgY2xhc3M9XCJiYWRnZSBtcy0yIGZzLTZcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2JnLXNlY29uZGFyeSc6IHdlaWdoaW5nU3RlcCA9PT0gMSxcclxuICAgICAgICAgICAgICAnYmctaW5mbyc6IHdlaWdoaW5nU3RlcCA9PT0gMixcclxuICAgICAgICAgICAgICAnYmctc3VjY2Vzcyc6IHdlaWdoaW5nU3RlcCA9PT0gM1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIHt7ICh3ZWlnaGluZ1N0ZXAgPT09IDEgPyAnS2Fkb29nbHU6OlJlY29yZFN0ZXAnIDogd2VpZ2hpbmdTdGVwID09PSAyID8gJ0thZG9vZ2x1OjpGaXJzdFdlaWdoaW5nJyA6ICdLYWRvb2dsdTo6Q29tcGxldGVkJykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gU3RlcCBJbmRpY2F0b3IgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgbWItM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgPCEtLSBTdGVwIDE6IEFyYcOnICYgQmVsZ2UgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZnctYm9sZCB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo0MHB4OyBoZWlnaHQ6NDBweDsgZm9udC1zaXplOjFyZW07XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZm9ybVBoYXNlID4gMSB8fCBpc0Z1bGx5Q29tcGxldGVkID8gJyMxOTg3NTQnIDogKGZvcm1QaGFzZSA9PT0gMSA/ICcjMGQ2ZWZkJyA6ICcjNmM3NTdkJylcIj5cclxuICAgICAgICAgICAgPGkgKm5nSWY9XCJmb3JtUGhhc2UgPiAxIHx8IGlzRnVsbHlDb21wbGV0ZWRcIiBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZvcm1QaGFzZSA8PSAxICYmICFpc0Z1bGx5Q29tcGxldGVkXCI+MTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXQtMSBmdy1zZW1pYm9sZFwiIFtjbGFzcy50ZXh0LXN1Y2Nlc3NdPVwiZm9ybVBoYXNlID4gMSB8fCBpc0Z1bGx5Q29tcGxldGVkXCIgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJmb3JtUGhhc2UgPT09IDEgJiYgIWlzRnVsbHlDb21wbGV0ZWRcIj57eyAnS2Fkb29nbHU6OlZlaGljbGVBbmREb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NtYWxsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgbXgtMlwiIHN0eWxlPVwiaGVpZ2h0OjNweDsgbWF4LXdpZHRoOjEyMHB4O1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJmb3JtUGhhc2UgPiAxID8gJyMxOTg3NTQnIDogJyNkZWUyZTYnXCI+PC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gU3RlcCAyOiBUYXJ0xLFtIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZ3LWJvbGQgdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6NDBweDsgaGVpZ2h0OjQwcHg7IGZvbnQtc2l6ZToxcmVtO1wiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndlaWdoaW5nU3RlcCA9PT0gMyA/ICcjMTk4NzU0JyA6IChmb3JtUGhhc2UgPT09IDIgPyAnIzBkNmVmZCcgOiAnIzZjNzU3ZCcpXCI+XHJcbiAgICAgICAgICAgIDxpICpuZ0lmPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3ZWlnaGluZ1N0ZXAgPCAzXCI+Mjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXQtMSBmdy1zZW1pYm9sZFwiIFtjbGFzcy50ZXh0LXN1Y2Nlc3NdPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJmb3JtUGhhc2UgPT09IDIgJiYgd2VpZ2hpbmdTdGVwIDwgM1wiIFtjbGFzcy50ZXh0LW11dGVkXT1cImZvcm1QaGFzZSA8IDIgJiYgd2VpZ2hpbmdTdGVwIDwgM1wiPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdTdGVwJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBteC0yXCIgc3R5bGU9XCJoZWlnaHQ6M3B4OyBtYXgtd2lkdGg6MTIwcHg7XCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndlaWdoaW5nU3RlcCA9PT0gMyA/ICcjMTk4NzU0JyA6ICcjZGVlMmU2J1wiPjwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFN0ZXAgMzogVGFtYW1sYW5kxLEgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZnctYm9sZCB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo0MHB4OyBoZWlnaHQ6NDBweDsgZm9udC1zaXplOjFyZW07XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid2VpZ2hpbmdTdGVwID09PSAzID8gJyMxOTg3NTQnIDogJyM2Yzc1N2QnXCI+XHJcbiAgICAgICAgICAgIDxpICpuZ0lmPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3ZWlnaGluZ1N0ZXAgPCAzXCI+Mzwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXQtMSBmdy1zZW1pYm9sZFwiIFtjbGFzcy50ZXh0LXN1Y2Nlc3NdPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgW2NsYXNzLnRleHQtbXV0ZWRdPVwid2VpZ2hpbmdTdGVwIDwgM1wiPnt7ICdLYWRvb2dsdTo6Q29tcGxldGVkJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tID09PT09PT09PT0gUEhBU0UgMTogQXJhw6cgJiBCZWxnZSA9PT09PT09PT09IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJmb3JtUGhhc2UgPT09IDEgJiYgIWlzRnVsbHlDb21wbGV0ZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgIDwhLS0gU29sIHPDvHR1bjogR2lyacWfL8OHxLFrxLHFnyArIEFyYcOnICYgU8O8csO8Y8O8IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuXHJcbiAgICAgICAgPCEtLSBHcnVwIDE6IEdpcmnFnyAvIMOHxLFrxLHFnyBCaWxnaWxlcmkgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBwYi0yIG1iLTMgZnctYm9sZCB0ZXh0LXNlY29uZGFyeVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24taW4tYWx0IG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpFbnRyeUV4aXRJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkdhdGVTZWxlY3Rpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aGl0LWxvb2t1cC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtsb2FkRm5dPVwibG9hZEdhdGVzXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImdhdGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdGluZ0RhdGFdPVwiZ2F0ZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzVXBkYXRlTW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25HYXRlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvaGl0LWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+QXJhw6cgSGFyZWtldCBUw7xyw7w8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxoaXQtbG9va3VwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2xvYWRGbl09XCJsb2FkVmVoaWNsZVR5cGVzXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInZlaGljbGVUeXBlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW2VkaXRpbmdEYXRhXT1cImVudHJ5VHlwZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzVXBkYXRlTW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25WZWhpY2xlVHlwZVNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2hpdC1sb29rdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6RW50cnlEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZW50cnlEYXRlVGltZVwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWVcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cImRkLk1NLnl5eXkgSEg6bW1cIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzVXBkYXRlTW9kZVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6RXhpdERhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJleGl0RGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lXCJcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJkZC5NTS55eXl5IEhIOm1tXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc1VwZGF0ZU1vZGVcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBHcnVwIDI6IEFyYcOnICYgU8O8csO8Y8O8IEJpbGdpbGVyaSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIG1iLTNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJ1Y2sgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OlZlaGljbGVEcml2ZXJJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6VHJ1Y2tQbGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGhpdC1sb29rdXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbbG9hZEZuXT1cImxvYWRUcnVja1BsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uc109XCJ0cnVja1BsYXRlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT1cInBsYXRlTm9cIlxyXG4gICAgICAgICAgICAgICAgW2VkaXRpbmdEYXRhXT1cInRydWNrUGxhdGVOb1wiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaXNGb3JtTG9ja2VkXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvblRydWNrUGxhdGVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9oaXQtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCIgKm5nSWY9XCJ0cmFpbGVyUGxhdGVOb1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpUcmFpbGVyUGxhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aGl0LWxvb2t1cC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtsb2FkRm5dPVwibG9hZFRyYWlsZXJQbGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwidHJhaWxlclBsYXRlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT1cInBsYXRlTm9cIlxyXG4gICAgICAgICAgICAgICAgW2VkaXRpbmdEYXRhXT1cInRyYWlsZXJQbGF0ZU5vXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0Zvcm1Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uVHJhaWxlclBsYXRlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvaGl0LWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpEcml2ZXJOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYm94XHJcbiAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkcml2ZXJGdWxsTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0thZG9vZ2x1OjpFbnRlckRyaXZlck5hbWUnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMCBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgaXNUY0NpdGl6ZW4gPyAoJ0thZG9vZ2x1OjpUY0lkZW50aXR5Tm8nIHwgYWJwTG9jYWxpemF0aW9uKSA6ICdLaW1saWsgTm8nIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyh2YWx1ZSldPVwiaXNUY0NpdGl6ZW5cIiBbcmVhZE9ubHldPVwiaXNVcGRhdGVNb2RlXCIgdGV4dD1cIlQuQy4gVmF0YW5kYcWfxLFcIj48L2R4LWNoZWNrLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3hcclxuICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInRjTm9cIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzVGNDaXRpemVuID8gKCdLYWRvb2dsdTo6VGNJZGVudGl0eU5vJyB8IGFicExvY2FsaXphdGlvbikgOiAnS2ltbGlrIE5vJ1wiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFNhxJ8gc8O8dHVuOiBCZWxnZSAmIFnDvGsgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG5cclxuICAgICAgICA8IS0tIEdydXAgMzogQmVsZ2UgJiBZw7xrIEJpbGdpbGVyaSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIG1iLTNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZS1hbHQgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OkRvY3VtZW50Q2FyZ29JbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxoaXQtbG9va3VwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2xvYWRGbl09XCJsb2FkQWNjb3VudHNcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiYWNjb3VudENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdGluZ0RhdGFdPVwiYWNjb3VudFRpdGxlXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0Zvcm1Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uQWNjb3VudFNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2hpdC1sb29rdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6V2F5YmlsbE51bWJlcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxoaXQtbG9va3VwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2xvYWRGbl09XCJsb2FkV2F5YmlsbHNcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwid2F5YmlsbENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU9XCJkb2NOdW1cIlxyXG4gICAgICAgICAgICAgICAga2V5RXhwcj1cImRvY0VudHJ5XCJcclxuICAgICAgICAgICAgICAgIFtlZGl0aW5nRGF0YV09XCJ3YXliaWxsTm9cIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dEYXRlRmlsdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2RlZmF1bHREYXRlRnJvbV09XCJ3YXliaWxsRGVmYXVsdERhdGVGcm9tXCJcclxuICAgICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZVRvXT1cIndheWJpbGxEZWZhdWx0RGF0ZVRvXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvbldheWJpbGxTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9oaXQtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6Okl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGhpdC1sb29rdXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbbG9hZEZuXT1cImxvYWRTdG9ja0l0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInN0b2NrSXRlbUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgIFtlZGl0aW5nRGF0YV09XCJzdG9ja05hbWVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uU3RvY2tJdGVtU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvaGl0LWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpDb250YWluZXJObycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkeC10ZXh0LWJveFxyXG4gICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiY29udGFpbmVyTm9cIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLYWRvb2dsdTo6TWFudWFsRW50cnknIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0Zvcm1Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkRlcGFydHVyZVBsYWNlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYm94XHJcbiAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkZXBhcnR1cmVMb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0thZG9vZ2x1OjpBdXRvRmlsbGVkRnJvbVdheWJpbGwnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpBcnJpdmFsUGxhY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3hcclxuICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImFycml2YWxMb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYXJlYVxyXG4gICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCI3MFwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaXNGb3JtTG9ja2VkXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgIDwvZHgtdGV4dC1hcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gUGhhc2UgMSBBbHQgQnV0b25sYXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTMgbWItM1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWxlZnQgbWUtMVwiPjwvaT4ge3sgJ0thZG9vZ2x1OjpCYWNrJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIiF3ZWlnaGluZ01vZGUgJiYgIWlzRm9ybUxvY2tlZFwiXHJcbiAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1zYXZlXCJcclxuICAgICAgICAgIGJ1dHRvblR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgW2xvYWRpbmddPVwiaXNTYXZpbmdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiPlxyXG4gICAgICAgICAge3sgJ0thZG9vZ2x1OjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImlsZXJpR2l0KClcIj5cclxuICAgICAgICAgIHt7ICdLYWRvb2dsdTo6TmV4dCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1yaWdodCBtcy0xXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tID09PT09PT09PT0gUEhBU0UgMjogVGFydMSxbSBQYW5lbGkgPT09PT09PT09PSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwiZm9ybVBoYXNlID09PSAyICYmICFpc0Z1bGx5Q29tcGxldGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBHcnVwIDE6IFRlcmF6aSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFsYW5jZS1zY2FsZSBtZS0yXCI+PC9pPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdQYW5lbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2VpZ2hpbmdNb2RlXCIgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0JyA/ICdiZy13YXJuaW5nIHRleHQtZGFyaycgOiAnYmctcHJpbWFyeSdcIj5cclxuICAgICAgICAgICAgICAgICAge3sgd2VpZ2hpbmdNb2RlTGFiZWwgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTMgYWxpZ24taXRlbXMtc3RyZXRjaFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU29sOiBDYW5sxLEgVGFydMSxbSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiIHN0eWxlPVwiZGlzcGxheTogZ3JpZDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHQgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtY2VudGVyIHB5LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG1iLTEgZnctc2VtaWJvbGQgdGV4dC11cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0thZG9vZ2x1OjpMaXZlV2VpZ2hpbmcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1NjYWxlQ29ubmVjdGluZyB8fCBpc1NjYWxlUmVjb25uZWN0aW5nXCIgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXNlY29uZGFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7IChpc1NjYWxlUmVjb25uZWN0aW5nID8gJ0thZG9vZ2x1OjpSZWNvbm5lY3RpbmcnIDogJ0thZG9vZ2x1OjpDb25uZWN0aW5nJykgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzU2NhbGVDb25uZWN0aW5nICYmICFpc1NjYWxlUmVjb25uZWN0aW5nICYmICFzY2FsZUNvbm5lY3Rpb25GYWlsZWRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMi41cmVtOyBmb250LXdlaWdodDogYm9sZDsgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFNjYWxlVmFsdWUgIT0gbnVsbCA/IChjdXJyZW50U2NhbGVWYWx1ZSB8IG51bWJlcjonMS4wLTAnKSArICcga2cnIDogJ+KAlCBrZycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNjYWxlQ29ubmVjdGlvbkZhaWxlZFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoYWluLWJyb2tlbiBmYS0yeCB0ZXh0LXNlY29uZGFyeSBtYi0yIGQtYmxvY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgZnctc2VtaWJvbGQgZC1ibG9ja1wiIHN0eWxlPVwiZm9udC1zaXplOiAwLjk1cmVtOyBsaW5lLWhlaWdodDogMS41O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6U2NhbGVDb25uZWN0aW9uRmFpbGVkSW5saW5lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE9ydGE6IEFrxLHFnyBva3UgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHQgZmEtMnggdGV4dC1tdXRlZFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU2HEnzogU2FiaXRsZW5tacWfIERlxJ9lciArIFNhYml0bGUgYnV0b251IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCIgc3R5bGU9XCJkaXNwbGF5OiBncmlkO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAnYm9yZGVyLXN1Y2Nlc3MnIDogJ2JnLWxpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAncmdiYSgyNSwxMzUsODQsMC4wOCknIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtY2VudGVyIHB5LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBtYi0xIGZ3LXNlbWlib2xkIHRleHQtdXBwZXJjYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAndGV4dC1zdWNjZXNzJyA6ICd0ZXh0LW11dGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnS2Fkb29nbHU6OkZpeGVkVmFsdWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDIuNXJlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAndGV4dC1zdWNjZXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpeGVkU2NhbGVWYWx1ZSAhPSBudWxsID8gKGZpeGVkU2NhbGVWYWx1ZSB8IG51bWJlcjonMS4wLTAnKSArICcga2cnIDogJ+KAlCBrZycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzRnVsbHlDb21wbGV0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1sZyB3LTEwMCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFNjYWxlVmFsdWUgPT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhYml0bGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbG9jayBtZS0yXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6Rml4JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXAgMjogVGFydMSxbSBLYXnEsXRsYXLEsSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaGlzdG9yeSBtZS0yXCI+PC9pPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdSZWNvcmRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gxLBsayBUYXJ0xLFtIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCByb3VuZGVkIHB5LTMgcHgtNFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMGQ2ZWZkOyBiYWNrZ3JvdW5kOiAjZmZmO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6Rmlyc3RXZWlnaGluZycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlyc3RXZWlnaGluZ1ZhbHVlICE9IG51bGw7IGVsc2Ugbm9GaXJzdFdlaWdoaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiIHN0eWxlPVwiZm9udC1zaXplOiAxLjc1cmVtOyBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaXJzdFdlaWdoaW5nVmFsdWUgfCBudW1iZXI6JzEuMC0wJyB9fSBrZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6T3BlcmF0b3InIHwgYWJwTG9jYWxpemF0aW9uIH19OiB7eyBmaXJzdE9wZXJhdG9yQ29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ZpcnN0V2VpZ2hpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmc3QtaXRhbGljIG10LTJcIj57eyAnS2Fkb29nbHU6Ok5vdFlldERvbmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFNvbiBUYXJ0xLFtIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCByb3VuZGVkIHB5LTMgcHgtNFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjNmY0MmMxOyBiYWNrZ3JvdW5kOiAjZmZmO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6TGFzdFdlaWdoaW5nJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsYXN0V2VpZ2hpbmdWYWx1ZSAhPSBudWxsOyBlbHNlIG5vTGFzdFdlaWdoaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiIHN0eWxlPVwiZm9udC1zaXplOiAxLjc1cmVtOyBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsYXN0V2VpZ2hpbmdWYWx1ZSB8IG51bWJlcjonMS4wLTAnIH19IGtnXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0thZG9vZ2x1OjpPcGVyYXRvcicgfCBhYnBMb2NhbGl6YXRpb24gfX06IHt7IGxhc3RPcGVyYXRvckNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9MYXN0V2VpZ2hpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmc3QtaXRhbGljIG10LTJcIj57eyAnS2Fkb29nbHU6Ok5vdFlldERvbmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE5ldCBZw7xrIChzYWRlY2Ugd2VpZ2hpbmdTdGVwPT09Myd0ZSkgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIiAqbmdJZj1cIndlaWdoaW5nU3RlcCA9PT0gMyAmJiBuZXRXZWlnaHQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgcm91bmRlZCBweS0zIHB4LTRcIiBzdHlsZT1cImJvcmRlci1sZWZ0OiA0cHggc29saWQgIzE5ODc1NDsgYmFja2dyb3VuZDogcmdiYSgyNSwxMzUsODQsMC4wNik7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGQgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0thZG9vZ2x1OjpOZXRXZWlnaHQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgY29sb3I6ICMxOTg3NTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBuZXRXZWlnaHQgfCBudW1iZXI6JzEuMC0wJyB9fSBrZ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQaGFzZSAyIEFsdCBCdXRvbmxhciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBtYi0zXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJnZXJpR2l0UGhhc2UoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdCBtZS0xXCI+PC9pPiB7eyAnS2Fkb29nbHU6OkJhY2snIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YWJwLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiIWlzRnVsbHlDb21wbGV0ZWRcIlxyXG4gICAgICAgIGljb25DbGFzcz1cImZhIGZhLXNhdmVcIlxyXG4gICAgICAgIGJ1dHRvblR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cImlzU2F2aW5nXCJcclxuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCI+XHJcbiAgICAgICAge3sgJ0thZG9vZ2x1OjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2FicC1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSA9PT09PT09PT09IFNVTU1BUlk6IFRhbWFtbGFuZMSxIEfDtnLDvG7DvG3DvCA9PT09PT09PT09IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0Z1bGx5Q29tcGxldGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICAgIDwhLS0gVGFtIGdlbmnFn2xpazogVGFydMSxbSBTb251w6dsYXLEsSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFsYW5jZS1zY2FsZSBtZS0yXCI+PC9pPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdSZXN1bHRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSDEsGxrIFRhcnTEsW0gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHNoYWRvdy1zbSByb3VuZGVkIHB5LTMgcHgtNCBoLTEwMFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMGQ2ZWZkO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkIG1iLTFcIj57eyAnS2Fkb29nbHU6OkZpcnN0V2VpZ2hpbmcnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZpcnN0V2VpZ2hpbmdWYWx1ZSAhPSBudWxsID8gKGZpcnN0V2VpZ2hpbmdWYWx1ZSB8IG51bWJlcjonMS4wLTAnKSArICcga2cnIDogJ+KAlCBrZycgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCI+e3sgJ0thZG9vZ2x1OjpPcGVyYXRvcicgfCBhYnBMb2NhbGl6YXRpb24gfX06IHt7IGZpcnN0T3BlcmF0b3JDb2RlIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBTb24gVGFydMSxbSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgc2hhZG93LXNtIHJvdW5kZWQgcHktMyBweC00IGgtMTAwXCIgc3R5bGU9XCJib3JkZXItbGVmdDogNHB4IHNvbGlkICM2ZjQyYzE7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGQgbWItMVwiPnt7ICdLYWRvb2dsdTo6TGFzdFdlaWdoaW5nJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCIgc3R5bGU9XCJmb250LXNpemU6IDEuNzVyZW07IGxldHRlci1zcGFjaW5nOiAwLjAyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBsYXN0V2VpZ2hpbmdWYWx1ZSAhPSBudWxsID8gKGxhc3RXZWlnaGluZ1ZhbHVlIHwgbnVtYmVyOicxLjAtMCcpICsgJyBrZycgOiAn4oCUIGtnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj57eyAnS2Fkb29nbHU6Ok9wZXJhdG9yJyB8IGFicExvY2FsaXphdGlvbiB9fToge3sgbGFzdE9wZXJhdG9yQ29kZSB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTmV0IFnDvGsgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoYWRvdy1zbSByb3VuZGVkIHB5LTMgcHgtNCBoLTEwMFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMTk4NzU0OyBiYWNrZ3JvdW5kOiByZ2JhKDI1LDEzNSw4NCwwLjA2KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC11cHBlcmNhc2UgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZCBtYi0xXCI+e3sgJ0thZG9vZ2x1OjpOZXRXZWlnaHQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgY29sb3I6ICMxOTg3NTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBuZXRXZWlnaHQgIT0gbnVsbCA/IChuZXRXZWlnaHQgfCBudW1iZXI6JzEuMC0wJykgKyAnIGtnJyA6ICfigJQga2cnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gU29sIHPDvHR1bjogR2lyacWfL8OHxLFrxLHFnyArIEFyYcOnICYgU8O8csO8Y8O8IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXA6IEdpcmnFnyAvIMOHxLFrxLHFnyBCaWxnaWxlcmkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24taW4tYWx0IG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpFbnRyeUV4aXRJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpHYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGdhdGVOYW1lIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yIHB5LTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBmMGYwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj5BcmHDpyBIYXJla2V0IFTDvHLDvDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGVudHJ5VHlwZU5hbWUgfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RW50cnlEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGVudHJ5RGF0ZSA/IChlbnRyeURhdGUgfCBkYXRlOidkZC5NTS55eXl5JykgOiAn4oCUJyB9fSB7eyBlbnRyeVRpbWUgfHwgJycgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj57eyAnS2Fkb29nbHU6OkV4aXREYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGV4aXREYXRlID8gKGV4aXREYXRlIHwgZGF0ZTonZGQuTU0ueXl5eScpIDogJ+KAlCcgfX0ge3sgZXhpdFRpbWUgfHwgJycgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXA6IEFyYcOnICYgU8O8csO8Y8O8IEJpbGdpbGVyaSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJ1Y2sgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OlZlaGljbGVEcml2ZXJJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpUcnVja1BsYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IHRydWNrUGxhdGVObyB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpUcmFpbGVyUGxhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTcgZnctbWVkaXVtXCI+e3sgdHJhaWxlclBsYXRlTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RHJpdmVyTmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBkcml2ZXJGdWxsTmFtZSB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6VGNJZGVudGl0eU5vJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IHRjTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBTYcSfIHPDvHR1bjogQmVsZ2UgJiBZw7xrIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXA6IEJlbGdlICYgWcO8ayBCaWxnaWxlcmkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGUtYWx0IG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpEb2N1bWVudENhcmdvSW5mbycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RHJpdmVyQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBkcml2ZXJOYW1lIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yIHB5LTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBmMGYwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj57eyAnS2Fkb29nbHU6OkJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBhY2NvdW50VGl0bGUgfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6V2F5YmlsbE51bWJlcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyB3YXliaWxsTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6U2NhbGVDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IHNjYWxlTmFtZSB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpJdGVtQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBzdG9ja05hbWUgfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6Q29udGFpbmVyTm8nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTcgZnctbWVkaXVtXCI+e3sgY29udGFpbmVyTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RGVwYXJ0dXJlVG9BcnJpdmFsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IChkZXBhcnR1cmVMb2NhdGlvbiB8fCAn4oCUJykgKyAnIOKGkiAnICsgKGFycml2YWxMb2NhdGlvbiB8fCAn4oCUJykgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj57eyAnS2Fkb29nbHU6OkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGRlc2NyaXB0aW9uIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFsdCBCdXRvbmxhciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBtYi0zXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJnb0JhY2soKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdCBtZS0xXCI+PC9pPiB7eyAnS2Fkb29nbHU6OkJhY2tUb0xpc3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJlbnRyeVR5cGVNYWxHQyAmJiByZWNvcmQ/LnVfU3RhdHVzID09PSAnMidcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEb2luZ0dvb2RzTW92ZW1lbnRcIlxyXG4gICAgICAgIChjbGljayk9XCJkb0dvb2RzTW92ZW1lbnQoKVwiPlxyXG4gICAgICAgIDxpIFtjbGFzc109XCJpc0RvaW5nR29vZHNNb3ZlbWVudCA/ICdmYSBmYS1zcGlubmVyIGZhLXNwaW4gbWUtMScgOiAnZmEgZmEtZXhjaGFuZ2UgbWUtMSdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ0thZG9vZ2x1OjpNYWxHY1lhcCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==
662
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9oaXQtY29tcG9uZW50cy9oaXQtZW50cnktd2VpZ2hpbmcvaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0vaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9oaXQtY29tcG9uZW50cy9oaXQtZW50cnktd2VpZ2hpbmcvaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0vaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJN0QsT0FBTyxFQUE0QixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUF1QjNDLE1BQU0sT0FBTyw2QkFBNkI7SUFnR3hDLFlBQ1UsT0FBZ0MsRUFDaEMsb0JBQTZDLEVBQzdDLFlBQWlDLEVBQ2pDLE9BQXVCLEVBQ3ZCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDeEMsbUJBQXdDO1FBUHhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF2R2xELFdBQU0sR0FBeUIsSUFBSSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG9EQUFvRDtRQUNwRCxjQUFTLEdBQVUsQ0FBQyxDQUFDO1FBQ3JCLG1GQUFtRjtRQUNuRixpQkFBWSxHQUE0QixJQUFJLENBQUM7UUFFN0MsMkRBQTJEO1FBQzNELGtCQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxlQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxvQkFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEQsc0JBQWlCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFELGdCQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BELDJCQUFzQixHQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pHLHlCQUFvQixHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEMsaUJBQVksR0FBRyxDQUFDLE1BQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRSxjQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQyxxQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhELGlCQUFpQjtRQUNqQixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6QixzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFDOUIsd0JBQW1CLEdBQVUsRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUN4Qix1QkFBa0IsR0FBVSxFQUFFLENBQUM7UUFFL0IsY0FBYztRQUNkLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFDaEIsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQUN2QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QixvQkFBZSxHQUFHLFNBQVMsQ0FBQztRQUU1Qix5QkFBeUI7UUFDekIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQiw4QkFBOEI7UUFDOUIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFDekMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDeEMsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQUN4QyxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFFdEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFN0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDdEIsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBRywyQkFBMkIsQ0FBQztRQUMxQyxZQUFPLEdBQUcsV0FBVyxDQUFDO0lBaUJwQyxDQUFDO0lBZkosNERBQTREO0lBQ3BELFdBQVcsQ0FBQyxHQUF5QjtRQUMzQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDLFFBQVEsSUFBSyxHQUFXLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7SUFhRCxRQUFRO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMzRCxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtTQUM5QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BELEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1NBQy9DLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtTQUM5QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHO1lBQ3pCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDckQsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUU7U0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtTQUM5QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ3JELEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1NBQ25ELENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRTtTQUMvQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzdELEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDOUQsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakQsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUN2RSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ3RFLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3BELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQzNELEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1NBQ3JELENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEQsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUU7U0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsR0FBRztZQUN4QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BELEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1NBQ25ELENBQUM7UUFFRix1Q0FBdUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELHdFQUF3RTtRQUN4RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUN6QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxELElBQUksU0FBUyxFQUFFO1lBQ2Isc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixrREFBa0Q7WUFDbEQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtTQUNGO2FBQU0sSUFBSSxFQUFFLEVBQUU7WUFDYixzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLGtEQUFrRDtnQkFDbEQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDcEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxNQUFjLEVBQUUsUUFBUSxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUc7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLEdBQUc7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxpRUFBaUU7SUFDakUsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCw4RUFBOEU7SUFDdEUsYUFBYSxDQUFDLE9BQXNCLEVBQUUsT0FBK0I7UUFDM0UsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUMxQixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBRTtZQUN2RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU87WUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUM7WUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFhLENBQUMsQ0FBQyx5QkFBeUI7WUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDO1lBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1lBQ3pELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUM7WUFDaEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2pGLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzdFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztZQUU1RCx5QkFBeUI7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUV4QixnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsOEZBQThGO0lBQ3RGLG1CQUFtQjtRQUN6QixNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUNuRDtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0M7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQy9DO1FBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQzNDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDakIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLElBQUk7b0JBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3JDO1lBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO2dCQUN4QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2hGLElBQUksRUFBRSxFQUFFO29CQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxZQUFZLEtBQUssR0FBRyxDQUFDO29CQUNuRCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDO2lCQUMxQzthQUNGO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNsQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksS0FBSztvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDeEM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxPQUFPO29CQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUNoRDtZQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDbkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLE1BQU07b0JBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQzNDO1lBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUN0QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVFLElBQUksSUFBSTtvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxDQUF3QjtRQUN6QyxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBcUI7UUFDbkMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsQ0FBdUI7UUFDdkMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBR0Qsb0JBQW9CLENBQUMsQ0FBMEI7UUFDN0MsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsQ0FBNEI7UUFDakQsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFzQjtRQUNyQyxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxDQUF5QjtRQUMzQyxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBb0I7UUFDakMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQscUJBQXFCLENBQUMsQ0FBMkI7UUFDL0MsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLFlBQVksS0FBSyxHQUFHLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsQ0FBZ0I7UUFDaEMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztTQUFFO1FBQ2xGLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtZQUFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1NBQUU7UUFDbEUsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO1NBQUU7UUFFbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLElBQUksRUFBRSxDQUFDO1NBQ3hGO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQ3pGLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDaEUsV0FBVyxFQUFFLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQzFGLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDaEUsV0FBVyxFQUFFLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSTtRQUNGLHlDQUF5QztRQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksUUFBUSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQ25GLFVBQVUsRUFBRSxJQUFJO29CQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztvQkFDaEUsV0FBVyxFQUFFLEtBQUs7aUJBQ25CLENBQUMsQ0FBQztnQkFDSCxPQUFPO2FBQ1I7WUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pELGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZ0I7Z0JBQ3BDLFlBQVksRUFBRSxFQUFFO2FBQ2pCLENBQUMsQ0FBQztZQUVILHdGQUF3RjtZQUN4RixxRkFBcUY7WUFDckYsSUFBSSxJQUErQixDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUU7Z0JBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sR0FBRyxHQUF5QjtvQkFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUztvQkFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVztvQkFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVztvQkFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtvQkFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUztvQkFDdEMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjO29CQUM1QixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLFNBQVM7b0JBQ2hELFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVM7b0JBQzVDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVM7b0JBQzVDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLFNBQVM7b0JBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVM7b0JBQzFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVM7b0JBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVM7b0JBQ3pDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7b0JBQ3hDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7b0JBQ3ZDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUztvQkFDL0MsZUFBZSxFQUFFLEdBQUc7b0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLFNBQVM7b0JBQzNDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVM7b0JBQzVDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLElBQUksU0FBUztpQkFDakQsQ0FBQztnQkFDRixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUMzRTtpQkFBTTtnQkFDTCxJQUFJLEdBQUcsUUFBUSxDQUFDO2FBQ2pCO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDYixJQUFJLEVBQUUsR0FBRyxFQUFFO29CQUNULGtEQUFrRDtvQkFDbEQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTt3QkFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7cUJBQ2hEO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO3FCQUMvQztvQkFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2xCLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTzt3QkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUM7d0JBQ2xFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQ3BFLENBQUM7b0JBRUYsOEVBQThFO29CQUM5RSxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO29CQUNyRCxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELENBQUM7Z0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hGLENBQUM7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDekYsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO2dCQUNoRSxXQUFXLEVBQUUsS0FBSzthQUNuQixDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFFakUsTUFBTSxHQUFHLEdBQXlCO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVM7WUFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVztZQUMxQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxXQUFXO1lBQzFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUk7WUFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUztZQUN0QyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDNUIsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTO1lBQ2hELFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVM7WUFDNUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUztZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsSUFBSSxTQUFTO1lBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVM7WUFDMUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUztZQUM5QixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTO1lBQ3pDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDeEMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUztZQUN2QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDL0MsZUFBZSxFQUFFLEdBQUc7WUFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksU0FBUztZQUMzQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTO1lBQzVDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLElBQUksU0FBUztTQUNqRCxDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQUcsUUFBUTtZQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO2dCQUN2RixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7WUFDcEYsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRXRCLElBQUksQ0FBQyxZQUFZO2FBQ2QsSUFBSSxDQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsK0JBQStCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQzNHLEVBQUUsRUFDRjtZQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxRCxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDN0QsQ0FDRjthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLE1BQU0sS0FBSyxTQUFTO2dCQUFFLE9BQU87WUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQy9DLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztvQkFDdEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztvQkFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7Z0JBQzNGLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2dCQUNwQyxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdELElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDZCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsRUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxFQUN4RSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzNELElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9DLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLEVBQUUsT0FBTyxLQUFLLGtDQUFrQyxFQUFFO2dCQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxFQUNuRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLEVBQ3hFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzlDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN4QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWE7UUFDaEMsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEYsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNELE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDOzswSEF4cUJVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG1FQzVCMUMsa3ppQ0F3bkJBOzJGRDVsQmEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNjYWxlU2lnbmFsUlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zY2FsZS1zaWduYWxyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRFbnRyeVdlaWdoaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtZW50cnktd2VpZ2hpbmcvaGl0LWVudHJ5LXdlaWdoaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaXRTdG9ja1RyYW5zZmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtc3RvY2stdHJhbnNmZXIvaGl0LXN0b2NrLXRyYW5zZmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9ja1RyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1zdG9jay10cmFuc2Zlci9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIEVudHJ5V2VpZ2hpbmcsXHJcbiAgRW50cnlXZWlnaGluZ0FjY291bnQsXHJcbiAgRW50cnlXZWlnaGluZ0RvY3VtZW50LFxyXG4gIEVudHJ5V2VpZ2hpbmdEcml2ZXIsXHJcbiAgRW50cnlXZWlnaGluZ0dhdGUsXHJcbiAgRW50cnlXZWlnaGluZ1NjYWxlLFxyXG4gIEVudHJ5V2VpZ2hpbmdTdG9ja0l0ZW0sXHJcbiAgRW50cnlXZWlnaGluZ1RyYWlsZXJQbGF0ZSxcclxuICBFbnRyeVdlaWdoaW5nVHJ1Y2tQbGF0ZSxcclxuICBFbnRyeVdlaWdoaW5nVmVoaWNsZVR5cGUsXHJcbiAgU2F2ZUVudHJ5V2VpZ2hpbmdEdG8sXHJcbn0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1lbnRyeS13ZWlnaGluZy9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWVudHJ5LXdlaWdoaW5nLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtZW50cnktd2VpZ2hpbmctZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRFbnRyeVdlaWdoaW5nRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWNvcmQ6IEVudHJ5V2VpZ2hpbmcgfCBudWxsID0gbnVsbDtcclxuICBpc1VwZGF0ZU1vZGUgPSBmYWxzZTtcclxuXHJcbiAgLy8gV2l6YXJkIHBoYXNlOiAxID0gQXJhw6cgJiBCZWxnZSwgMiA9IFRhcnTEsW0gUGFuZWxpXHJcbiAgZm9ybVBoYXNlOiAxIHwgMiA9IDE7XHJcbiAgLy8gV2VpZ2hpbmcgbW9kZSBmcm9tIHF1ZXJ5IHBhcmFtOiAnZmlyc3QnIHwgJ2xhc3QnIHwgbnVsbCAobnVsbCA9IG5vcm1hbCBuZXcvZWRpdClcclxuICB3ZWlnaGluZ01vZGU6ICdmaXJzdCcgfCAnbGFzdCcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gTG9va3VwIGxvYWRlciBmdW5jdGlvbnMgKGNhbGxlZCBsYXppbHkgd2hlbiBtb2RhbCBvcGVucylcclxuICBsb2FkRG9jdW1lbnRzID0gKCkgPT4gdGhpcy5zZXJ2aWNlLmdldERvY3VtZW50cygpO1xyXG4gIGxvYWRTY2FsZXMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0U2NhbGVzKCk7XHJcbiAgbG9hZFRydWNrUGxhdGVzID0gKCkgPT4gdGhpcy5zZXJ2aWNlLmdldFRydWNrUGxhdGVzKCk7XHJcbiAgbG9hZFRyYWlsZXJQbGF0ZXMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0VHJhaWxlclBsYXRlcygpO1xyXG4gIGxvYWREcml2ZXJzID0gKCkgPT4gdGhpcy5zZXJ2aWNlLmdldERyaXZlcnMoKTtcclxuICBsb2FkQWNjb3VudHMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0QWNjb3VudHMoKTtcclxuICBsb2FkU3RvY2tJdGVtcyA9ICgpID0+IHRoaXMuc2VydmljZS5nZXRTdG9ja0l0ZW1zKCk7XHJcbiAgd2F5YmlsbERlZmF1bHREYXRlRnJvbTogRGF0ZSA9ICgoKSA9PiB7IGNvbnN0IGQgPSBuZXcgRGF0ZSgpOyBkLnNldERhdGUoZC5nZXREYXRlKCkgLSAzKTsgcmV0dXJuIGQ7IH0pKCk7XHJcbiAgd2F5YmlsbERlZmF1bHREYXRlVG86IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIGxvYWRXYXliaWxscyA9IChwYXJhbXM/OiBhbnkpID0+IHRoaXMuc3RvY2tUcmFuc2ZlclNlcnZpY2UuZ2V0TGlzdChwYXJhbXMpO1xyXG4gIGxvYWRHYXRlcyA9ICgpID0+IHRoaXMuc2VydmljZS5nZXRHYXRlcygpO1xyXG4gIGxvYWRWZWhpY2xlVHlwZXMgPSAoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0VmVoaWNsZVR5cGVzKCk7XHJcblxyXG4gIC8vIENvbHVtbiBjb25maWdzXHJcbiAgZG9jdW1lbnRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIHNjYWxlQ29sdW1uczogYW55W10gPSBbXTtcclxuICB0cnVja1BsYXRlQ29sdW1uczogYW55W10gPSBbXTtcclxuICB0cmFpbGVyUGxhdGVDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGRyaXZlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgYWNjb3VudENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgc3RvY2tJdGVtQ29sdW1uczogYW55W10gPSBbXTtcclxuICB3YXliaWxsQ29sdW1uczogYW55W10gPSBbXTtcclxuICBnYXRlQ29sdW1uczogYW55W10gPSBbXTtcclxuICB2ZWhpY2xlVHlwZUNvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gIC8vIEZvcm0gZmllbGRzXHJcbiAgZG9jdW1lbnRDb2RlID0gJyc7XHJcbiAgZG9jdW1lbnROYW1lID0gJyc7XHJcbiAgc2NhbGVDb2RlID0gJzEnO1xyXG4gIHNjYWxlTmFtZSA9ICdLYW50YXIgMSc7XHJcbiAgYWNjb3VudENvZGUgPSAnJztcclxuICBhY2NvdW50VGl0bGUgPSAnJztcclxuICB0cnVja1BsYXRlQ29kZSA9ICcnO1xyXG4gIHRydWNrUGxhdGVObyA9ICcnO1xyXG4gIHRyYWlsZXJQbGF0ZUNvZGUgPSAnJztcclxuICB0cmFpbGVyUGxhdGVObyA9ICcnO1xyXG4gIGRyaXZlckNvZGUgPSAnJztcclxuICBkcml2ZXJOYW1lID0gJyc7XHJcbiAgc3RvY2tDb2RlID0gJyc7XHJcbiAgc3RvY2tOYW1lID0gJyc7XHJcbiAgY29udGFpbmVyTm8gPSAnJztcclxuICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gIHdheWJpbGxObyA9ICcnO1xyXG4gIGRlcGFydHVyZUxvY2F0aW9uID0gJyc7XHJcbiAgYXJyaXZhbExvY2F0aW9uID0gJ0ZhYnJpa2EnO1xyXG5cclxuICAvLyBaWlpfVEVTVDIgeWVuaSBhbGFubGFyXHJcbiAgZ2F0ZUNvZGUgPSAnJztcclxuICBnYXRlTmFtZSA9ICcnO1xyXG4gIGVudHJ5RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZW50cnlUaW1lID0gJyc7XHJcbiAgZXhpdERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGV4aXRUaW1lID0gJyc7XHJcbiAgZW50cnlUeXBlQ29kZSA9ICcnO1xyXG4gIGVudHJ5VHlwZU5hbWUgPSAnJztcclxuICBkcml2ZXJGdWxsTmFtZSA9ICcnO1xyXG4gIHRjTm8gPSAnJztcclxuICBpc1RjQ2l0aXplbiA9IHRydWU7XHJcblxyXG4gIC8vIFRhcnTEsW0gYmlsZ2lsZXJpIChyZWFkb25seSlcclxuICBmaXJzdE9wZXJhdG9yQ29kZSA9ICcnO1xyXG4gIGZpcnN0V2VpZ2hpbmdWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgbGFzdE9wZXJhdG9yQ29kZSA9ICcnO1xyXG4gIGxhc3RXZWlnaGluZ1ZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBjdXJyZW50U2NhbGVWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgZml4ZWRTY2FsZVZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaXNTYXZpbmcgPSBmYWxzZTtcclxuICBpc1dlaWdoaW5nID0gZmFsc2U7XHJcbiAgZW50cnlUeXBlVHJ0bVlwaWxjayA9IGZhbHNlO1xyXG4gIGVudHJ5VHlwZU1hbEdDID0gZmFsc2U7XHJcbiAgaXNEb2luZ0dvb2RzTW92ZW1lbnQgPSBmYWxzZTtcclxuXHJcbiAgaXNTY2FsZUNvbm5lY3RpbmcgPSBmYWxzZTtcclxuICBpc1NjYWxlUmVjb25uZWN0aW5nID0gZmFsc2U7XHJcbiAgc2NhbGVDb25uZWN0aW9uRmFpbGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzY2FsZVN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY2FsZUFwaVVybCA9ICdodHRwOi8vMTkyLjE2OC4xMC45NTo1MTAwJztcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjYWxlSWQgPSAnS0FOVEFSLTAxJztcclxuXHJcbiAgLyoqIFNBUCByZXNwb25zZSBjYW1lbENhc2UvUGFzY2FsQ2FzZSBmYXJrxLFuxLEgaGFuZGxlIGVkZXIgKi9cclxuICBwcml2YXRlIGdldERvY0VudHJ5KHJlYzogRW50cnlXZWlnaGluZyB8IG51bGwpOiBudW1iZXIgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFyZWMpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gcmVjLmRvY0VudHJ5ID8/IChyZWMgYXMgYW55KS5kb2NFbnRyeTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBIaXRFbnRyeVdlaWdoaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvY2tUcmFuc2ZlclNlcnZpY2U6IEhpdFN0b2NrVHJhbnNmZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzY2FsZVNpZ25hbFJTZXJ2aWNlOiBTY2FsZVNpZ25hbFJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGwgPSAoa2V5OiBzdHJpbmcpID0+IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6JyArIGtleSk7XHJcbiAgICB0aGlzLmRvY3VtZW50Q29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnRG9jdW1lbnRObycpLCB3aWR0aDogMTIwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnbmFtZScsIGNhcHRpb246IGwoJ0NhcmROYW1lJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnNjYWxlQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogODAgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICduYW1lJywgY2FwdGlvbjogbCgnU2NhbGVOYW1lJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnRydWNrUGxhdGVDb2x1bW5zID0gW1xyXG4gICAgICB7IGRhdGFGaWVsZDogJ2NvZGUnLCBjYXB0aW9uOiBsKCdDb2RlJyksIHdpZHRoOiAxMDAgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICdwbGF0ZU5vJywgY2FwdGlvbjogbCgnUGxhdGUnKSB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMudHJhaWxlclBsYXRlQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogMTAwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAncGxhdGVObycsIGNhcHRpb246IGwoJ1BsYXRlJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLmRyaXZlckNvbHVtbnMgPSBbXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnY29kZScsIGNhcHRpb246IGwoJ0NvZGUnKSwgd2lkdGg6IDEwMCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ25hbWUnLCBjYXB0aW9uOiBsKCdGdWxsTmFtZScpIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy5hY2NvdW50Q29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogMTAwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAndGl0bGUnLCBjYXB0aW9uOiBsKCdBY2NvdW50VGl0bGUnKSB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMuc3RvY2tJdGVtQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb2RlJywgY2FwdGlvbjogbCgnQ29kZScpLCB3aWR0aDogMTAwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnbmFtZScsIGNhcHRpb246IGwoJ1N0b2NrTmFtZScpIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy53YXliaWxsQ29sdW1ucyA9IFtcclxuICAgICAgeyBkYXRhRmllbGQ6ICdkb2NOdW0nLCBjYXB0aW9uOiBsKCdEb2N1bWVudE5vJyksIHdpZHRoOiAxMDAgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICdVX0VGQVROTycsIGNhcHRpb246IGwoJ1dheWJpbGxObycpLCB3aWR0aDogMTIwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnY2FyZE5hbWUnLCBjYXB0aW9uOiBsKCdDYXJkTmFtZScpIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnZnJvbVdhcmVob3VzZScsIGNhcHRpb246IGwoJ0V4aXRXYXJlaG91c2UnKSwgd2lkdGg6IDE0MCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ1VfQXJhY1BsYWthc2knLCBjYXB0aW9uOiBsKCdWZWhpY2xlUGxhdGUnKSwgd2lkdGg6IDExMCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ1VfU29mb3JBZCcsIGNhcHRpb246IGwoJ0RyaXZlck5hbWUnKSB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ1VfU29mb3JTb3lhZGknLCBjYXB0aW9uOiBsKCdEcml2ZXJTdXJuYW1lJykgfSxcclxuICAgICAgeyBkYXRhRmllbGQ6ICdjb21tZW50cycsIGNhcHRpb246IGwoJ0Rlc2NyaXB0aW9uJykgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLmdhdGVDb2x1bW5zID0gW1xyXG4gICAgICB7IGRhdGFGaWVsZDogJ2NvZGUnLCBjYXB0aW9uOiBsKCdDb2RlJyksIHdpZHRoOiA4MCB9LFxyXG4gICAgICB7IGRhdGFGaWVsZDogJ25hbWUnLCBjYXB0aW9uOiBsKCdHYXRlTmFtZScpIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy52ZWhpY2xlVHlwZUNvbHVtbnMgPSBbXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnY29kZScsIGNhcHRpb246IGwoJ0NvZGUnKSwgd2lkdGg6IDgwIH0sXHJcbiAgICAgIHsgZGF0YUZpZWxkOiAnbmFtZScsIGNhcHRpb246IGwoJ0VudHJ5VHlwZU5hbWUnKSB9LFxyXG4gICAgXTtcclxuXHJcbiAgICAvLyBSZWFkIHdlaWdoaW5nIG1vZGUgZnJvbSBxdWVyeSBwYXJhbXNcclxuICAgIGNvbnN0IG1vZGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdtb2RlJyk7XHJcbiAgICBpZiAobW9kZSA9PT0gJ2ZpcnN0JyB8fCBtb2RlID09PSAnbGFzdCcpIHtcclxuICAgICAgdGhpcy53ZWlnaGluZ01vZGUgPSBtb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIMOWbmNlIHJvdXRlciBzdGF0ZSdkZW4gc2F0xLFyIHZlcmlzaW5pIG9rdSAobGlzdGUgZWtyYW7EsW5kYW4gYWt0YXLEsWxhbilcclxuICAgIGNvbnN0IHN0YXRlRGF0YSA9IGhpc3Rvcnkuc3RhdGU/LnJvd0RhdGE7XHJcbiAgICBjb25zdCBpZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpO1xyXG5cclxuICAgIGlmIChzdGF0ZURhdGEpIHtcclxuICAgICAgLy8gU3RhdGUnZGVuIGdlbGVuIHZlcml5aSBrdWxsYW4gKEFQSSDDp2HEn3LEsXPEsSBvbG1hZGFuKVxyXG4gICAgICB0aGlzLmlzVXBkYXRlTW9kZSA9IHRydWU7XHJcbiAgICAgIHRoaXMucmVjb3JkID0gc3RhdGVEYXRhO1xyXG4gICAgICB0aGlzLmluaXRGb3JtKCk7XHJcbiAgICAgIC8vIFNvbiB0YXJ0xLFtIG1vZHVuZGF5c2EgZGlyZWt0IHRhcnTEsW0gcGFuZWxpbmkgYcOnXHJcbiAgICAgIGlmICh0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2xhc3QnKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGhhc2UgPSAyO1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0U2NhbGUoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChpZCkge1xyXG4gICAgICAvLyBGYWxsYmFjazogc3RhdGUgeW9rc2EgQVBJJ2RlbiB5w7xrbGVcclxuICAgICAgdGhpcy5pc1VwZGF0ZU1vZGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuZ2V0KCtpZCkuc3Vic2NyaWJlKHJlY29yZCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmQgPSByZWNvcmQ7XHJcbiAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xyXG4gICAgICAgIC8vIFNvbiB0YXJ0xLFtIG1vZHVuZGF5c2EgZGlyZWt0IHRhcnTEsW0gcGFuZWxpbmkgYcOnXHJcbiAgICAgICAgaWYgKHRoaXMud2VpZ2hpbmdNb2RlID09PSAnbGFzdCcpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVBoYXNlID0gMjtcclxuICAgICAgICAgIHRoaXMuX3N0YXJ0U2NhbGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHdlaWdoaW5nU3RlcCgpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RhdHVzID0gKHRoaXMucmVjb3JkIGFzIGFueSk/LnVfU3RhdHVzO1xyXG4gICAgaWYgKHRoaXMubGFzdFdlaWdoaW5nVmFsdWUgIT09IG51bGwgfHwgc3RhdHVzID09PSAnMicgfHwgc3RhdHVzID09PSAnMycgfHwgc3RhdHVzID09PSAnNCcpIHJldHVybiAzO1xyXG4gICAgaWYgKHRoaXMuZmlyc3RXZWlnaGluZ1ZhbHVlICE9PSBudWxsIHx8IHN0YXR1cyA9PT0gJzEnKSByZXR1cm4gMjtcclxuICAgIHJldHVybiAxO1xyXG4gIH1cclxuXHJcbiAgLyoqIMSwbGsgdGFydMSxbSB5YXDEsWxkxLF5c2EgKHN0ZXAgPj0gMikgZGV0YXkgYWxhbmxhcsSxbsSxIGtpbGl0bGUgKi9cclxuICBnZXQgaXNGb3JtTG9ja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2VpZ2hpbmdTdGVwID49IDI7XHJcbiAgfVxyXG5cclxuICAvKiogSGVyIGlraSB0YXJ0xLFtIGRhIHRhbWFtbGFuZMSxeXNhIChzdGVwID09PSAzKSB0w7xtIGVrcmFuxLEga2lsaXRsZSAqL1xyXG4gIGdldCBpc0Z1bGx5Q29tcGxldGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2VpZ2hpbmdTdGVwID09PSAzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVudHJ5RGF0ZVRpbWUoKTogRGF0ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuYnVpbGREYXRlVGltZSh0aGlzLmVudHJ5RGF0ZSwgdGhpcy5lbnRyeVRpbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGV4aXREYXRlVGltZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5idWlsZERhdGVUaW1lKHRoaXMuZXhpdERhdGUsIHRoaXMuZXhpdFRpbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRhcmloIHN0cmluZyArIHNhecSxc2FsIHNhYXQgKMO2ci4gODMwID0gMDg6MzApIGRlxJ9lcmluZGVuIERhdGUgb2x1xZ90dXJ1ciAqL1xyXG4gIHByaXZhdGUgYnVpbGREYXRlVGltZShkYXRlU3RyOiBzdHJpbmcgfCBudWxsLCB0aW1lVmFsOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlU3RyKTtcclxuICAgIGlmIChpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgdCA9IE51bWJlcih0aW1lVmFsKTtcclxuICAgIGlmICghaXNOYU4odCkpIHtcclxuICAgICAgZC5zZXRIb3VycyhNYXRoLmZsb29yKHQgLyAxMDApLCB0ICUgMTAwLCAwLCAwKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5ldFdlaWdodCgpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSAhPT0gbnVsbCAmJiB0aGlzLmxhc3RXZWlnaGluZ1ZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSAtIHRoaXMubGFzdFdlaWdoaW5nVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgd2VpZ2hpbmdNb2RlTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0J1xyXG4gICAgICA/IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6Rmlyc3RXZWlnaGluZycpXHJcbiAgICAgIDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpMYXN0V2VpZ2hpbmcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmQpIHtcclxuICAgICAgY29uc3QgciA9IHRoaXMucmVjb3JkIGFzIGFueTsgLy8gU0FQIGNhbWVsQ2FzZSBmYWxsYmFja1xyXG4gICAgICB0aGlzLnNjYWxlQ29kZSA9IHIudV9TY2FsZUNvZGUgPz8gci51X1NjYWxlQ29kZSA/PyAnJztcclxuICAgICAgdGhpcy5hY2NvdW50Q29kZSA9IHIudV9DYXJkQ29kZSA/PyByLnVfQ2FyZENvZGUgPz8gJyc7XHJcbiAgICAgIHRoaXMudHJ1Y2tQbGF0ZUNvZGUgPSByLnVfUGxhdGUgPz8gci51X1BsYXRlID8/ICcnO1xyXG4gICAgICB0aGlzLnRydWNrUGxhdGVObyA9IHIudV9QbGF0ZSA/PyByLnVfUGxhdGUgPz8gJyc7XHJcbiAgICAgIHRoaXMudHJhaWxlclBsYXRlQ29kZSA9IHIudV9Eb3JzZVBsYXRlID8/ICcnO1xyXG4gICAgICB0aGlzLnRyYWlsZXJQbGF0ZU5vID0gci51X0RvcnNlUGxhdGUgPz8gJyc7XHJcbiAgICAgIHRoaXMuZHJpdmVyQ29kZSA9IHIudV9Ecml2ZXJDb2RlID8/IHIudV9Ecml2ZXJDb2RlID8/ICcnO1xyXG4gICAgICB0aGlzLnN0b2NrQ29kZSA9IHIudV9JdGVtQ29kZSA/PyByLnVfSXRlbUNvZGUgPz8gJyc7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyTm8gPSByLnVfQ29udGFpbmVyTm8gPz8gci51X0NvbnRhaW5lck5vID8/ICcnO1xyXG4gICAgICB0aGlzLndheWJpbGxObyA9IHIudV9EZXNwYXRjaEFkdmljZU5vID8/IHIudV9EZXNwYXRjaEFkdmljZU5vID8/ICcnO1xyXG4gICAgICB0aGlzLmRlcGFydHVyZUxvY2F0aW9uID0gci51X1NoaXBQbGFjZSA/PyByLnVfU2hpcFBsYWNlID8/ICcnO1xyXG4gICAgICB0aGlzLmFycml2YWxMb2NhdGlvbiA9IHIudV9TaGlwVG8gPz8gci51X1NoaXBUbyA/PyAnRmFicmlrYSc7XHJcbiAgICAgIHRoaXMuZmlyc3RPcGVyYXRvckNvZGUgPSByLnVfRmlyc3RPcHQgPz8gci51X0ZpcnN0T3B0ID8/ICcnO1xyXG4gICAgICB0aGlzLmxhc3RPcGVyYXRvckNvZGUgPSByLnVfTGFzdE9wdCA/PyByLnVfTGFzdE9wdCA/PyAnJztcclxuICAgICAgY29uc3QgcmF3Rmlyc3QgPSByLnVfRmlyc3RXZWlnaGluZyA/PyByLnVfRmlyc3RXZWlnaGluZyA/PyBudWxsO1xyXG4gICAgICB0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSA9IChyYXdGaXJzdCAhPSBudWxsICYmIHJhd0ZpcnN0ICE9PSAwKSA/IHJhd0ZpcnN0IDogbnVsbDtcclxuICAgICAgY29uc3QgcmF3TGFzdCA9IHIudV9MYXN0V2VpZ2hpbmcgPz8gci51X0xhc3RXZWlnaGluZyA/PyBudWxsO1xyXG4gICAgICB0aGlzLmxhc3RXZWlnaGluZ1ZhbHVlID0gKHJhd0xhc3QgIT0gbnVsbCAmJiByYXdMYXN0ICE9PSAwKSA/IHJhd0xhc3QgOiBudWxsO1xyXG4gICAgICB0aGlzLmRlc2NyaXB0aW9uID0gci51X0Rlc2NyaXB0aW9uID8/IHIudV9EZXNjcmlwdGlvbiA/PyAnJztcclxuXHJcbiAgICAgIC8vIFpaWl9URVNUMiB5ZW5pIGFsYW5sYXJcclxuICAgICAgdGhpcy5nYXRlQ29kZSA9IHIudV9HYXRlQ29kZSA/PyByLnVfR2F0ZUNvZGUgPz8gJyc7XHJcbiAgICAgIHRoaXMuZW50cnlEYXRlID0gci51X0VudHJ5RGF0ZSA/PyByLnVfRW50cnlEYXRlID8/IG51bGw7XHJcbiAgICAgIHRoaXMuZW50cnlUaW1lID0gci51X0VudHJ5VGltZSA/PyByLnVfRW50cnlUaW1lID8/ICcnO1xyXG4gICAgICB0aGlzLmV4aXREYXRlID0gci51X0V4aXREYXRlID8/IHIudV9FeGl0RGF0ZSA/PyBudWxsO1xyXG4gICAgICB0aGlzLmV4aXRUaW1lID0gci51X0V4aXRUaW1lID8/IHIudV9FeGl0VGltZSA/PyAnJztcclxuICAgICAgdGhpcy5lbnRyeVR5cGVDb2RlID0gci51X0VudHJ5VHlwZSA/PyByLnVfRW50cnlUeXBlID8/ICcnO1xyXG4gICAgICB0aGlzLmRyaXZlckZ1bGxOYW1lID0gci51X0RyaXZlciA/PyByLnVfRHJpdmVyID8/ICcnO1xyXG4gICAgICB0aGlzLnRjTm8gPSByLnVfVGNObyA/PyByLnVfVGNObyA/PyAnJztcclxuICAgICAgdGhpcy5pc1RjQ2l0aXplbiA9IHRydWU7XHJcblxyXG4gICAgICAvLyBMb29rdXAgYWxhbmxhcsSxbsSxbiBnw7Zyw7xuZW4gaXNpbWxlcmluaSDDp8O2esO8bWxlXHJcbiAgICAgIHRoaXMucmVzb2x2ZURpc3BsYXlOYW1lcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEthecSxdHRha2kga29kIGFsYW5sYXLEsW5hIGthcsWfxLFsxLFrIGdlbGVuIGfDtnLDvG5lbiBpc2ltbGVyaSBsb29rdXAgc2VydmlzbGVyaW5kZW4gw6fDtnrDvG1sZXIgKi9cclxuICBwcml2YXRlIHJlc29sdmVEaXNwbGF5TmFtZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb29rdXBzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcblxyXG4gICAgaWYgKHRoaXMuZ2F0ZUNvZGUpIHtcclxuICAgICAgbG9va3Vwc1snZ2F0ZXMnXSA9IHRoaXMubG9hZEdhdGVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbnRyeVR5cGVDb2RlKSB7XHJcbiAgICAgIGxvb2t1cHNbJ3ZlaGljbGVUeXBlcyddID0gdGhpcy5sb2FkVmVoaWNsZVR5cGVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zY2FsZUNvZGUpIHtcclxuICAgICAgbG9va3Vwc1snc2NhbGVzJ10gPSB0aGlzLmxvYWRTY2FsZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFjY291bnRDb2RlKSB7XHJcbiAgICAgIGxvb2t1cHNbJ2FjY291bnRzJ10gPSB0aGlzLmxvYWRBY2NvdW50cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJpdmVyQ29kZSkge1xyXG4gICAgICBsb29rdXBzWydkcml2ZXJzJ10gPSB0aGlzLmxvYWREcml2ZXJzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdG9ja0NvZGUpIHtcclxuICAgICAgbG9va3Vwc1snc3RvY2tJdGVtcyddID0gdGhpcy5sb2FkU3RvY2tJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsb29rdXBzKTtcclxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGZvcmtKb2luKGxvb2t1cHMpLnN1YnNjcmliZSgocmVzdWx0czogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHRzLmdhdGVzKSB7XHJcbiAgICAgICAgY29uc3QgZ2F0ZSA9IHJlc3VsdHMuZ2F0ZXMuZmluZCgoZzogYW55KSA9PiBnLmNvZGUgPT09IHRoaXMuZ2F0ZUNvZGUpO1xyXG4gICAgICAgIGlmIChnYXRlKSB0aGlzLmdhdGVOYW1lID0gZ2F0ZS5uYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHRzLnZlaGljbGVUeXBlcykge1xyXG4gICAgICAgIGNvbnN0IHZ0ID0gcmVzdWx0cy52ZWhpY2xlVHlwZXMuZmluZCgodDogYW55KSA9PiB0LmNvZGUgPT09IHRoaXMuZW50cnlUeXBlQ29kZSk7XHJcbiAgICAgICAgaWYgKHZ0KSB7XHJcbiAgICAgICAgICB0aGlzLmVudHJ5VHlwZU5hbWUgPSB2dC5uYW1lO1xyXG4gICAgICAgICAgdGhpcy5lbnRyeVR5cGVUcnRtWXBpbGNrID0gdnQudV9UcnRtWXBpbGNrID09PSAnWSc7XHJcbiAgICAgICAgICB0aGlzLmVudHJ5VHlwZU1hbEdDID0gdnQudV9NYWxHQyA9PT0gJ1knO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0cy5zY2FsZXMpIHtcclxuICAgICAgICBjb25zdCBzY2FsZSA9IHJlc3VsdHMuc2NhbGVzLmZpbmQoKHM6IGFueSkgPT4gcy5jb2RlID09PSB0aGlzLnNjYWxlQ29kZSk7XHJcbiAgICAgICAgaWYgKHNjYWxlKSB0aGlzLnNjYWxlTmFtZSA9IHNjYWxlLm5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdHMuYWNjb3VudHMpIHtcclxuICAgICAgICBjb25zdCBhY2NvdW50ID0gcmVzdWx0cy5hY2NvdW50cy5maW5kKChhOiBhbnkpID0+IGEuY29kZSA9PT0gdGhpcy5hY2NvdW50Q29kZSk7XHJcbiAgICAgICAgaWYgKGFjY291bnQpIHRoaXMuYWNjb3VudFRpdGxlID0gYWNjb3VudC50aXRsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0cy5kcml2ZXJzKSB7XHJcbiAgICAgICAgY29uc3QgZHJpdmVyID0gcmVzdWx0cy5kcml2ZXJzLmZpbmQoKGQ6IGFueSkgPT4gZC5jb2RlID09PSB0aGlzLmRyaXZlckNvZGUpO1xyXG4gICAgICAgIGlmIChkcml2ZXIpIHRoaXMuZHJpdmVyTmFtZSA9IGRyaXZlci5uYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHRzLnN0b2NrSXRlbXMpIHtcclxuICAgICAgICBjb25zdCBpdGVtID0gcmVzdWx0cy5zdG9ja0l0ZW1zLmZpbmQoKGk6IGFueSkgPT4gaS5jb2RlID09PSB0aGlzLnN0b2NrQ29kZSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHRoaXMuc3RvY2tOYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRG9jdW1lbnRTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kb2N1bWVudENvZGUgPSBlLmNvZGU7XHJcbiAgICB0aGlzLmRvY3VtZW50TmFtZSA9IGUubmFtZTtcclxuICB9XHJcblxyXG4gIG9uU2NhbGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nU2NhbGUpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zY2FsZUNvZGUgPSBlLmNvZGU7XHJcbiAgICB0aGlzLnNjYWxlTmFtZSA9IGUubmFtZTtcclxuICB9XHJcblxyXG4gIG9uQWNjb3VudFNlbGVjdGVkKGU6IEVudHJ5V2VpZ2hpbmdBY2NvdW50KTogdm9pZCB7XHJcbiAgICBpZiAoIWUpIHJldHVybjtcclxuICAgIHRoaXMuYWNjb3VudENvZGUgPSBlLmNvZGU7XHJcbiAgICB0aGlzLmFjY291bnRUaXRsZSA9IGUudGl0bGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25UcnVja1BsYXRlU2VsZWN0ZWQoZTogRW50cnlXZWlnaGluZ1RydWNrUGxhdGUpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy50cnVja1BsYXRlQ29kZSA9IGUuY29kZTtcclxuICAgIHRoaXMudHJ1Y2tQbGF0ZU5vID0gZS5wbGF0ZU5vO1xyXG4gIH1cclxuXHJcbiAgb25UcmFpbGVyUGxhdGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nVHJhaWxlclBsYXRlKTogdm9pZCB7XHJcbiAgICBpZiAoIWUpIHJldHVybjtcclxuICAgIHRoaXMudHJhaWxlclBsYXRlQ29kZSA9IGUuY29kZTtcclxuICAgIHRoaXMudHJhaWxlclBsYXRlTm8gPSBlLnBsYXRlTm87XHJcbiAgfVxyXG5cclxuICBvbkRyaXZlclNlbGVjdGVkKGU6IEVudHJ5V2VpZ2hpbmdEcml2ZXIpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kcml2ZXJDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5kcml2ZXJOYW1lID0gZS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgb25TdG9ja0l0ZW1TZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nU3RvY2tJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAoIWUpIHJldHVybjtcclxuICAgIHRoaXMuc3RvY2tDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5zdG9ja05hbWUgPSBlLm5hbWU7XHJcbiAgfVxyXG5cclxuICBvbkdhdGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nR2F0ZSk6IHZvaWQge1xyXG4gICAgaWYgKCFlKSByZXR1cm47XHJcbiAgICB0aGlzLmdhdGVDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5nYXRlTmFtZSA9IGUubmFtZTtcclxuICB9XHJcblxyXG4gIG9uVmVoaWNsZVR5cGVTZWxlY3RlZChlOiBFbnRyeVdlaWdoaW5nVmVoaWNsZVR5cGUpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lbnRyeVR5cGVDb2RlID0gZS5jb2RlO1xyXG4gICAgdGhpcy5lbnRyeVR5cGVOYW1lID0gZS5uYW1lO1xyXG4gICAgdGhpcy5lbnRyeVR5cGVUcnRtWXBpbGNrID0gZS51X1RydG1ZcGlsY2sgPT09ICdZJztcclxuICAgIHRoaXMuZW50cnlUeXBlTWFsR0MgPSBlLnVfTWFsR0MgPT09ICdZJztcclxuICB9XHJcblxyXG4gIG9uV2F5YmlsbFNlbGVjdGVkKGU6IFN0b2NrVHJhbnNmZXIpOiB2b2lkIHtcclxuICAgIGlmICghZSkgcmV0dXJuO1xyXG4gICAgdGhpcy53YXliaWxsTm8gPSBlLmRvY051bS50b1N0cmluZygpO1xyXG4gICAgaWYgKGUuY2FyZENvZGUpIHsgdGhpcy5hY2NvdW50Q29kZSA9IGUuY2FyZENvZGU7IHRoaXMuYWNjb3VudFRpdGxlID0gZS5jYXJkTmFtZTsgfVxyXG4gICAgaWYgKGUuZnJvbVdhcmVob3VzZSkgeyB0aGlzLmRlcGFydHVyZUxvY2F0aW9uID0gZS5mcm9tV2FyZWhvdXNlOyB9XHJcbiAgICBpZiAoZS5jb21tZW50cykgeyB0aGlzLmRlc2NyaXB0aW9uID0gZS5jb21tZW50czsgfVxyXG5cclxuICAgIGNvbnN0IGxpbmVzID0gZS5zdG9ja1RyYW5zZmVyTGluZXMgPz8gW107XHJcbiAgICBjb25zdCB1bmlxdWVDb2RlcyA9IFsuLi5uZXcgU2V0KGxpbmVzLm1hcChsID0+IGwuaXRlbUNvZGUpLmZpbHRlcihjID0+ICEhYykpXTtcclxuICAgIGlmICh1bmlxdWVDb2Rlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5zdG9ja0NvZGUgPSB1bmlxdWVDb2Rlc1swXTtcclxuICAgICAgdGhpcy5zdG9ja05hbWUgPSBsaW5lcy5maW5kKGwgPT4gbC5pdGVtQ29kZSA9PT0gdW5pcXVlQ29kZXNbMF0pPy5pdGVtRGVzY3JpcHRpb24gPz8gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b2NrQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLnN0b2NrTmFtZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFBoYXNlIDEg4oaSIFBoYXNlIDIgZ2XDp2nFn2kgKi9cclxuICBpbGVyaUdpdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50cnVja1BsYXRlQ29kZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6U2VsZWN0VHJ1Y2tQbGF0ZScpLCAnJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpDYW5jZWwnKSxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbnRyeVR5cGVUcnRtWXBpbGNrICYmICF0aGlzLnN0b2NrQ29kZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6U3RvY2tDb2RlUmVxdWlyZWQnKSwgJycsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6Q2FuY2VsJyksXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtUGhhc2UgPSAyO1xyXG4gICAgdGhpcy5fc3RhcnRTY2FsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBoYXNlIDIg4oaSIFBoYXNlIDEgZ2VyaSBkw7ZuICovXHJcbiAgZ2VyaUdpdFBoYXNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcFNjYWxlKCk7XHJcbiAgICB0aGlzLmZvcm1QaGFzZSA9IDE7XHJcbiAgfVxyXG5cclxuICBzYXZlKCk6IHZvaWQge1xyXG4gICAgLy8gVGFydMSxbSBtb2R1bmRheXNhIGRvV2VpZ2hpbmcgQVBJIMOnYcSfxLFyXHJcbiAgICBjb25zdCBkb2NFbnRyeSA9IHRoaXMuZ2V0RG9jRW50cnkodGhpcy5yZWNvcmQpO1xyXG4gICAgaWYgKHRoaXMud2VpZ2hpbmdNb2RlICYmIGRvY0VudHJ5KSB7XHJcbiAgICAgIGlmICh0aGlzLmZpeGVkU2NhbGVWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24ud2Fybih0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkRvRml4Rmlyc3QnKSwgJycsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkNhbmNlbCcpLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZG9XZWlnaCQgPSB0aGlzLnNlcnZpY2UuZG9XZWlnaGluZyhkb2NFbnRyeSwge1xyXG4gICAgICAgIHdlaWdoaW5nVmFsdWU6IHRoaXMuZml4ZWRTY2FsZVZhbHVlISxcclxuICAgICAgICBvcGVyYXRvckNvZGU6ICcnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gxLBMSyB0YXJ0xLFtZGEgZm9ybSBhbGFubGFyxLFuxLEgKHN0b2sga29kdSwgaXJzYWxpeWUgdmIuKSDDtm5jZSBrYXlkZXQsIHNvbnJhIHRhcnTEsW0geWFwLlxyXG4gICAgICAvLyBTT04gdGFydMSxbWRhIHNhZGVjZSB0YXJ0xLFtIHlhcCDigJQgZGnEn2VyIGFsYW5sYXIgaWxrIHRhcnTEsW1kYW4gc29ucmEgZGXEn2nFn3RpcmlsZW1lei5cclxuICAgICAgbGV0IG9icyQ6IE9ic2VydmFibGU8RW50cnlXZWlnaGluZz47XHJcbiAgICAgIGlmICh0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0Jykge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBub3cudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbm93LnRvVGltZVN0cmluZygpLnNwbGl0KCcgJylbMF07XHJcbiAgICAgICAgY29uc3QgZHRvOiBTYXZlRW50cnlXZWlnaGluZ0R0byA9IHtcclxuICAgICAgICAgIHVfR2F0ZUNvZGU6IHRoaXMuZ2F0ZUNvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9FbnRyeURhdGU6IHRoaXMuZW50cnlEYXRlIHx8IGN1cnJlbnREYXRlLFxyXG4gICAgICAgICAgdV9FbnRyeVRpbWU6IHRoaXMuZW50cnlUaW1lIHx8IGN1cnJlbnRUaW1lLFxyXG4gICAgICAgICAgdV9FeGl0RGF0ZTogdGhpcy5leGl0RGF0ZSB8fCBudWxsLFxyXG4gICAgICAgICAgdV9FeGl0VGltZTogdGhpcy5leGl0VGltZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICB1X1BsYXRlOiB0aGlzLnRydWNrUGxhdGVDb2RlLFxyXG4gICAgICAgICAgdV9Eb3JzZVBsYXRlOiB0aGlzLnRyYWlsZXJQbGF0ZUNvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9FbnRyeVR5cGU6IHRoaXMuZW50cnlUeXBlQ29kZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICB1X0Rlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfRHJpdmVyOiB0aGlzLmRyaXZlckZ1bGxOYW1lIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfRHJpdmVyQ29kZTogdGhpcy5kcml2ZXJDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfVGNObzogdGhpcy50Y05vIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfQ2FyZENvZGU6IHRoaXMuYWNjb3VudENvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9TY2FsZUNvZGU6IHRoaXMuc2NhbGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfSXRlbUNvZGU6IHRoaXMuc3RvY2tDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHVfRGVzcGF0Y2hBZHZpY2VObzogdGhpcy53YXliaWxsTm8gfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9EZXNwYXRjaEV4aXN0OiAnTicsXHJcbiAgICAgICAgICB1X1NoaXBUbzogdGhpcy5hcnJpdmFsTG9jYXRpb24gfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdV9Db250YWluZXJObzogdGhpcy5jb250YWluZXJObyB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICB1X1NoaXBQbGFjZTogdGhpcy5kZXBhcnR1cmVMb2NhdGlvbiB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBvYnMkID0gdGhpcy5zZXJ2aWNlLnVwZGF0ZShkb2NFbnRyeSwgZHRvKS5waXBlKHN3aXRjaE1hcCgoKSA9PiBkb1dlaWdoJCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9icyQgPSBkb1dlaWdoJDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIG9icyQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAvLyBUYXJ0xLFtIGRlxJ9lcmxlcmluaSB3ZWlnaGluZ01vZGUnYSBnw7ZyZSBnw7xuY2VsbGVcclxuICAgICAgICAgIGlmICh0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0Jykge1xyXG4gICAgICAgICAgICB0aGlzLmZpcnN0V2VpZ2hpbmdWYWx1ZSA9IHRoaXMuZml4ZWRTY2FsZVZhbHVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sYXN0V2VpZ2hpbmdWYWx1ZSA9IHRoaXMuZml4ZWRTY2FsZVZhbHVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKFxyXG4gICAgICAgICAgICB0aGlzLndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0J1xyXG4gICAgICAgICAgICAgID8gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpGaXJzdFdlaWdoaW5nU2F2ZWQnKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpMYXN0V2VpZ2hpbmdTYXZlZCcpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8vIEvEsXNhIGJpciBnZWNpa21lIGlsZSBsaXN0ZXllIGTDtm4gKGt1bGxhbsSxY8SxIHByb2dyZXNzIGJhciBkZcSfacWfaW1pbmkgZ8O2cnPDvG4pXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycva2Fkb29nbHUvZW50cnktd2VpZ2hpbmcnXSk7XHJcbiAgICAgICAgICB9LCB0aGlzLndlaWdoaW5nTW9kZSA9PSAnbGFzdCcgPyA4MDAwIDogMTUwMCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyLmVycm9yKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6V2VpZ2hpbmdSZWNvcmRFcnJvcicpKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5vcm1hbCBrYXnEsXQgbW9kdSAoeWVuaSBrYXnEsXQgdmV5YSBkw7x6ZW5sZW1lKVxyXG4gICAgaWYgKCF0aGlzLnRydWNrUGxhdGVDb2RlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4odGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTZWxlY3RUcnVja1BsYXRlJyksICcnLCB7XHJcbiAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkNhbmNlbCcpLFxyXG4gICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBub3cudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBub3cudG9UaW1lU3RyaW5nKCkuc3BsaXQoJyAnKVswXTsgLy8gSEg6bW06c3NcclxuXHJcbiAgICBjb25zdCBkdG86IFNhdmVFbnRyeVdlaWdoaW5nRHRvID0ge1xyXG4gICAgICB1X0dhdGVDb2RlOiB0aGlzLmdhdGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9FbnRyeURhdGU6IHRoaXMuZW50cnlEYXRlIHx8IGN1cnJlbnREYXRlLFxyXG4gICAgICB1X0VudHJ5VGltZTogdGhpcy5lbnRyeVRpbWUgfHwgY3VycmVudFRpbWUsXHJcbiAgICAgIHVfRXhpdERhdGU6IHRoaXMuZXhpdERhdGUgfHwgbnVsbCxcclxuICAgICAgdV9FeGl0VGltZTogdGhpcy5leGl0VGltZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfUGxhdGU6IHRoaXMudHJ1Y2tQbGF0ZUNvZGUsXHJcbiAgICAgIHVfRG9yc2VQbGF0ZTogdGhpcy50cmFpbGVyUGxhdGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9FbnRyeVR5cGU6IHRoaXMuZW50cnlUeXBlQ29kZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfRGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X0RyaXZlcjogdGhpcy5kcml2ZXJGdWxsTmFtZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfRHJpdmVyQ29kZTogdGhpcy5kcml2ZXJDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9UY05vOiB0aGlzLnRjTm8gfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X0NhcmRDb2RlOiB0aGlzLmFjY291bnRDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9TY2FsZUNvZGU6IHRoaXMuc2NhbGVDb2RlIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9JdGVtQ29kZTogdGhpcy5zdG9ja0NvZGUgfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X0Rlc3BhdGNoQWR2aWNlTm86IHRoaXMud2F5YmlsbE5vIHx8IHVuZGVmaW5lZCxcclxuICAgICAgdV9EZXNwYXRjaEV4aXN0OiAnTicsXHJcbiAgICAgIHVfU2hpcFRvOiB0aGlzLmFycml2YWxMb2NhdGlvbiB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHVfQ29udGFpbmVyTm86IHRoaXMuY29udGFpbmVyTm8gfHwgdW5kZWZpbmVkLFxyXG4gICAgICB1X1NoaXBQbGFjZTogdGhpcy5kZXBhcnR1cmVMb2NhdGlvbiB8fCB1bmRlZmluZWQsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9icyQgPSBkb2NFbnRyeVxyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoZG9jRW50cnksIGR0bylcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKGR0byk7XHJcblxyXG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICBvYnMkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpSZWNvcmRTYXZlZFN1Y2Nlc3MnKSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycva2Fkb29nbHUvZW50cnktd2VpZ2hpbmcnXSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcih0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlJlY29yZFNhdmVFcnJvcicpKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZG9Hb29kc01vdmVtZW50KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZG9jRW50cnkgPSB0aGlzLmdldERvY0VudHJ5KHRoaXMucmVjb3JkKTtcclxuICAgIGlmICghZG9jRW50cnkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblxyXG4gICAgICAud2FybihcclxuICAgICAgICB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6Ok1hbEdjQ29uZmlybU1lc3NhZ2UnLCBTdHJpbmcodGhpcy5yZWNvcmQ/LnVfUGxhdGUgfHwgZG9jRW50cnkpKSxcclxuICAgICAgICAnJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB5ZXNUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlllcycpLFxyXG4gICAgICAgICAgY2FuY2VsVGV4dDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpObycpLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ2NvbmZpcm0nKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5pc0RvaW5nR29vZHNNb3ZlbWVudCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRvR29vZHNNb3ZlbWVudChkb2NFbnRyeSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IHVwZGF0ZWQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlY29yZCA9IHVwZGF0ZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEb2luZ0dvb2RzTW92ZW1lbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpHb29kc01vdmVtZW50U3VjY2VzcycpKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzRG9pbmdHb29kc01vdmVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhYml0bGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpeGVkU2NhbGVWYWx1ZSA9IHRoaXMuY3VycmVudFNjYWxlVmFsdWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b3BTY2FsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RhcnRTY2FsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTY2FsZUNvbm5lY3RpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zY2FsZUNvbm5lY3Rpb25GYWlsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2NhbGVTdWIgPSB0aGlzLnNjYWxlU2lnbmFsUlNlcnZpY2Uud2VpZ2h0JC5zdWJzY3JpYmUodyA9PiB7XHJcbiAgICAgIGlmICh3ICE9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5pc1NjYWxlUmVjb25uZWN0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U2NhbGVWYWx1ZSA9IHc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zY2FsZVN1Yi5hZGQoXHJcbiAgICAgIHRoaXMuc2NhbGVTaWduYWxSU2VydmljZS5yZWNvbm5lY3RpbmckLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NjYWxlUmVjb25uZWN0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTY2FsZVZhbHVlID0gbnVsbDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnNjYWxlU3ViLmFkZChcclxuICAgICAgdGhpcy5zY2FsZVNpZ25hbFJTZXJ2aWNlLmNvbm5lY3Rpb25Mb3N0JC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTY2FsZUNvbm5lY3RpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2NhbGVSZWNvbm5lY3RpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNjYWxlQ29ubmVjdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlNjYWxlQ29ubmVjdGlvbkZhaWxlZCcpLFxyXG4gICAgICAgICAgdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTY2FsZUNvbm5lY3Rpb25GYWlsZWRUaXRsZScpLFxyXG4gICAgICAgICAgeyBoaWRlWWVzQnRuOiB0cnVlLCBjYW5jZWxUZXh0OiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkNhbmNlbCcpIH1cclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2NhbGVTaWduYWxSU2VydmljZS5zdGFydCh0aGlzLnNjYWxlQXBpVXJsLCB0aGlzLnNjYWxlSWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHsgdGhpcy5pc1NjYWxlQ29ubmVjdGluZyA9IGZhbHNlOyB9KVxyXG4gICAgICAuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NjYWxlQ29ubmVjdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChlPy5tZXNzYWdlID09PSAnU2NhbGVDb25uZWN0aW9uTWF4UmV0cmllc1JlYWNoZWQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNjYWxlQ29ubmVjdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcihcclxuICAgICAgICAgICAgdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTY2FsZUNvbm5lY3Rpb25GYWlsZWQnKSxcclxuICAgICAgICAgICAgdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpTY2FsZUNvbm5lY3Rpb25GYWlsZWRUaXRsZScpLFxyXG4gICAgICAgICAgICB7IGhpZGVZZXNCdG46IHRydWUsIGNhbmNlbFRleHQ6IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdLYWRvb2dsdTo6Q2FuY2VsJykgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignU2lnbmFsUiBiYcSfbGFudMSxIGhhdGFzxLE6JywgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0b3BTY2FsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2NhbGVTdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnNjYWxlU3ViID0gbnVsbDtcclxuICAgIHRoaXMuc2NhbGVTaWduYWxSU2VydmljZS5zdG9wKHRoaXMuc2NhbGVJZClcclxuICAgICAgLmNhdGNoKGUgPT4gY29uc29sZS5lcnJvcignU2lnbmFsUiBrYXBhdG1hIGhhdGFzxLE6JywgZSkpO1xyXG4gIH1cclxuXHJcbiAgZ29CYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycva2Fkb29nbHUvZW50cnktd2VpZ2hpbmcnXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlVENLTih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0YyA9IHZhbHVlPy50cmltKCk7XHJcbiAgICBpZiAoIXRjIHx8IHRjLmxlbmd0aCAhPT0gMTEpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICghL15cXGR7MTF9JC8udGVzdCh0YykpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh0Y1swXSA9PT0gJzAnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBkID0gdGMuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xyXG4gICAgY29uc3QgZDEwID0gKChkWzBdICsgZFsyXSArIGRbNF0gKyBkWzZdICsgZFs4XSkgKiA3IC0gKGRbMV0gKyBkWzNdICsgZFs1XSArIGRbN10pKSAlIDEwO1xyXG4gICAgaWYgKGQxMCAhPT0gZFs5XSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZDExID0gZC5zbGljZSgwLCAxMCkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgJSAxMDtcclxuICAgIHJldHVybiBkMTEgPT09IGRbMTBdO1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLXBhZ2UgW2JyZWFkY3J1bWJdPVwiZmFsc2VcIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAgICB7eyAnS2Fkb29nbHU6OkVudHJ5V2VpZ2hpbmdUaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2VpZ2hpbmdNb2RlXCIgY2xhc3M9XCJiYWRnZSBtcy0yIGZzLTZcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2JnLXdhcm5pbmcgdGV4dC1kYXJrJzogd2VpZ2hpbmdNb2RlID09PSAnZmlyc3QnLFxyXG4gICAgICAgICAgICAgICdiZy1wcmltYXJ5Jzogd2VpZ2hpbmdNb2RlID09PSAnbGFzdCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICB7eyB3ZWlnaGluZ01vZGVMYWJlbCB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhd2VpZ2hpbmdNb2RlXCIgY2xhc3M9XCJiYWRnZSBtcy0yIGZzLTZcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2JnLXNlY29uZGFyeSc6IHdlaWdoaW5nU3RlcCA9PT0gMSxcclxuICAgICAgICAgICAgICAnYmctaW5mbyc6IHdlaWdoaW5nU3RlcCA9PT0gMixcclxuICAgICAgICAgICAgICAnYmctc3VjY2Vzcyc6IHdlaWdoaW5nU3RlcCA9PT0gM1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIHt7ICh3ZWlnaGluZ1N0ZXAgPT09IDEgPyAnS2Fkb29nbHU6OlJlY29yZFN0ZXAnIDogd2VpZ2hpbmdTdGVwID09PSAyID8gJ0thZG9vZ2x1OjpGaXJzdFdlaWdoaW5nJyA6ICdLYWRvb2dsdTo6Q29tcGxldGVkJykgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gU3RlcCBJbmRpY2F0b3IgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgbWItM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgPCEtLSBTdGVwIDE6IEFyYcOnICYgQmVsZ2UgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZnctYm9sZCB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo0MHB4OyBoZWlnaHQ6NDBweDsgZm9udC1zaXplOjFyZW07XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZm9ybVBoYXNlID4gMSB8fCBpc0Z1bGx5Q29tcGxldGVkID8gJyMxOTg3NTQnIDogKGZvcm1QaGFzZSA9PT0gMSA/ICcjMGQ2ZWZkJyA6ICcjNmM3NTdkJylcIj5cclxuICAgICAgICAgICAgPGkgKm5nSWY9XCJmb3JtUGhhc2UgPiAxIHx8IGlzRnVsbHlDb21wbGV0ZWRcIiBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZvcm1QaGFzZSA8PSAxICYmICFpc0Z1bGx5Q29tcGxldGVkXCI+MTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXQtMSBmdy1zZW1pYm9sZFwiIFtjbGFzcy50ZXh0LXN1Y2Nlc3NdPVwiZm9ybVBoYXNlID4gMSB8fCBpc0Z1bGx5Q29tcGxldGVkXCIgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJmb3JtUGhhc2UgPT09IDEgJiYgIWlzRnVsbHlDb21wbGV0ZWRcIj57eyAnS2Fkb29nbHU6OlZlaGljbGVBbmREb2N1bWVudCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NtYWxsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgbXgtMlwiIHN0eWxlPVwiaGVpZ2h0OjNweDsgbWF4LXdpZHRoOjEyMHB4O1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJmb3JtUGhhc2UgPiAxID8gJyMxOTg3NTQnIDogJyNkZWUyZTYnXCI+PC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gU3RlcCAyOiBUYXJ0xLFtIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZ3LWJvbGQgdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6NDBweDsgaGVpZ2h0OjQwcHg7IGZvbnQtc2l6ZToxcmVtO1wiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndlaWdoaW5nU3RlcCA9PT0gMyA/ICcjMTk4NzU0JyA6IChmb3JtUGhhc2UgPT09IDIgPyAnIzBkNmVmZCcgOiAnIzZjNzU3ZCcpXCI+XHJcbiAgICAgICAgICAgIDxpICpuZ0lmPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3ZWlnaGluZ1N0ZXAgPCAzXCI+Mjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXQtMSBmdy1zZW1pYm9sZFwiIFtjbGFzcy50ZXh0LXN1Y2Nlc3NdPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgW2NsYXNzLnRleHQtcHJpbWFyeV09XCJmb3JtUGhhc2UgPT09IDIgJiYgd2VpZ2hpbmdTdGVwIDwgM1wiIFtjbGFzcy50ZXh0LW11dGVkXT1cImZvcm1QaGFzZSA8IDIgJiYgd2VpZ2hpbmdTdGVwIDwgM1wiPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdTdGVwJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBteC0yXCIgc3R5bGU9XCJoZWlnaHQ6M3B4OyBtYXgtd2lkdGg6MTIwcHg7XCJcclxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIndlaWdoaW5nU3RlcCA9PT0gMyA/ICcjMTk4NzU0JyA6ICcjZGVlMmU2J1wiPjwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFN0ZXAgMzogVGFtYW1sYW5kxLEgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZnctYm9sZCB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo0MHB4OyBoZWlnaHQ6NDBweDsgZm9udC1zaXplOjFyZW07XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid2VpZ2hpbmdTdGVwID09PSAzID8gJyMxOTg3NTQnIDogJyM2Yzc1N2QnXCI+XHJcbiAgICAgICAgICAgIDxpICpuZ0lmPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3ZWlnaGluZ1N0ZXAgPCAzXCI+Mzwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwibXQtMSBmdy1zZW1pYm9sZFwiIFtjbGFzcy50ZXh0LXN1Y2Nlc3NdPVwid2VpZ2hpbmdTdGVwID09PSAzXCIgW2NsYXNzLnRleHQtbXV0ZWRdPVwid2VpZ2hpbmdTdGVwIDwgM1wiPnt7ICdLYWRvb2dsdTo6Q29tcGxldGVkJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tID09PT09PT09PT0gUEhBU0UgMTogQXJhw6cgJiBCZWxnZSA9PT09PT09PT09IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJmb3JtUGhhc2UgPT09IDEgJiYgIWlzRnVsbHlDb21wbGV0ZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgIDwhLS0gU29sIHPDvHR1bjogR2lyacWfL8OHxLFrxLHFnyArIEFyYcOnICYgU8O8csO8Y8O8IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuXHJcbiAgICAgICAgPCEtLSBHcnVwIDE6IEdpcmnFnyAvIMOHxLFrxLHFnyBCaWxnaWxlcmkgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWJvdHRvbSBwYi0yIG1iLTMgZnctYm9sZCB0ZXh0LXNlY29uZGFyeVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24taW4tYWx0IG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpFbnRyeUV4aXRJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkdhdGVTZWxlY3Rpb24nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aGl0LWxvb2t1cC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtsb2FkRm5dPVwibG9hZEdhdGVzXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImdhdGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdGluZ0RhdGFdPVwiZ2F0ZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzVXBkYXRlTW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25HYXRlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvaGl0LWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+QXJhw6cgSGFyZWtldCBUw7xyw7w8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxoaXQtbG9va3VwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2xvYWRGbl09XCJsb2FkVmVoaWNsZVR5cGVzXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInZlaGljbGVUeXBlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW2VkaXRpbmdEYXRhXT1cImVudHJ5VHlwZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzVXBkYXRlTW9kZVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25WZWhpY2xlVHlwZVNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2hpdC1sb29rdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6RW50cnlEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZW50cnlEYXRlVGltZVwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWVcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cImRkLk1NLnl5eXkgSEg6bW1cIlxyXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzVXBkYXRlTW9kZVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6RXhpdERhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJleGl0RGF0ZVRpbWVcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lXCJcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJkZC5NTS55eXl5IEhIOm1tXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc1VwZGF0ZU1vZGVcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBHcnVwIDI6IEFyYcOnICYgU8O8csO8Y8O8IEJpbGdpbGVyaSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIG1iLTNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJ1Y2sgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OlZlaGljbGVEcml2ZXJJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6VHJ1Y2tQbGF0ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGhpdC1sb29rdXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbbG9hZEZuXT1cImxvYWRUcnVja1BsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uc109XCJ0cnVja1BsYXRlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT1cInBsYXRlTm9cIlxyXG4gICAgICAgICAgICAgICAgW2VkaXRpbmdEYXRhXT1cInRydWNrUGxhdGVOb1wiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaXNGb3JtTG9ja2VkXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvblRydWNrUGxhdGVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9oaXQtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCIgKm5nSWY9XCJ0cmFpbGVyUGxhdGVOb1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpUcmFpbGVyUGxhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aGl0LWxvb2t1cC1zZWxlY3RcclxuICAgICAgICAgICAgICAgIFtsb2FkRm5dPVwibG9hZFRyYWlsZXJQbGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwidHJhaWxlclBsYXRlQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZT1cInBsYXRlTm9cIlxyXG4gICAgICAgICAgICAgICAgW2VkaXRpbmdEYXRhXT1cInRyYWlsZXJQbGF0ZU5vXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0Zvcm1Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uVHJhaWxlclBsYXRlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvaGl0LWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpEcml2ZXJOYW1lJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYm94XHJcbiAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkcml2ZXJGdWxsTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0thZG9vZ2x1OjpFbnRlckRyaXZlck5hbWUnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMCBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgaXNUY0NpdGl6ZW4gPyAoJ0thZG9vZ2x1OjpUY0lkZW50aXR5Tm8nIHwgYWJwTG9jYWxpemF0aW9uKSA6ICdLaW1saWsgTm8nIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyh2YWx1ZSldPVwiaXNUY0NpdGl6ZW5cIiBbcmVhZE9ubHldPVwiaXNVcGRhdGVNb2RlXCIgdGV4dD1cIlQuQy4gVmF0YW5kYcWfxLFcIj48L2R4LWNoZWNrLWJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3hcclxuICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInRjTm9cIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzVGNDaXRpemVuID8gKCdLYWRvb2dsdTo6VGNJZGVudGl0eU5vJyB8IGFicExvY2FsaXphdGlvbikgOiAnS2ltbGlrIE5vJ1wiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFNhxJ8gc8O8dHVuOiBCZWxnZSAmIFnDvGsgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG5cclxuICAgICAgICA8IS0tIEdydXAgMzogQmVsZ2UgJiBZw7xrIEJpbGdpbGVyaSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIG1iLTNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZS1hbHQgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OkRvY3VtZW50Q2FyZ29JbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxoaXQtbG9va3VwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2xvYWRGbl09XCJsb2FkQWNjb3VudHNcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiYWNjb3VudENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICBbZWRpdGluZ0RhdGFdPVwiYWNjb3VudFRpdGxlXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0Zvcm1Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uQWNjb3VudFNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L2hpdC1sb29rdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTEgc21hbGwgZnctc2VtaWJvbGQgdGV4dC1tdXRlZFwiPnt7ICdLYWRvb2dsdTo6V2F5YmlsbE51bWJlcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxoaXQtbG9va3VwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW2xvYWRGbl09XCJsb2FkV2F5YmlsbHNcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwid2F5YmlsbENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU9XCJkb2NOdW1cIlxyXG4gICAgICAgICAgICAgICAga2V5RXhwcj1cImRvY0VudHJ5XCJcclxuICAgICAgICAgICAgICAgIFtlZGl0aW5nRGF0YV09XCJ3YXliaWxsTm9cIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dEYXRlRmlsdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2RlZmF1bHREYXRlRnJvbV09XCJ3YXliaWxsRGVmYXVsdERhdGVGcm9tXCJcclxuICAgICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZVRvXT1cIndheWJpbGxEZWZhdWx0RGF0ZVRvXCJcclxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvbldheWJpbGxTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9oaXQtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6Okl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGhpdC1sb29rdXAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbbG9hZEZuXT1cImxvYWRTdG9ja0l0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInN0b2NrSXRlbUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgIFtlZGl0aW5nRGF0YV09XCJzdG9ja05hbWVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uU3RvY2tJdGVtU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvaGl0LWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpDb250YWluZXJObycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkeC10ZXh0LWJveFxyXG4gICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiY29udGFpbmVyTm9cIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidLYWRvb2dsdTo6TWFudWFsRW50cnknIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0Zvcm1Mb2NrZWRcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkRlcGFydHVyZVBsYWNlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYm94XHJcbiAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkZXBhcnR1cmVMb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0thZG9vZ2x1OjpBdXRvRmlsbGVkRnJvbVdheWJpbGwnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgbWItMSBzbWFsbCBmdy1zZW1pYm9sZCB0ZXh0LW11dGVkXCI+e3sgJ0thZG9vZ2x1OjpBcnJpdmFsUGxhY2UnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3hcclxuICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImFycml2YWxMb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0xIHNtYWxsIGZ3LXNlbWlib2xkIHRleHQtbXV0ZWRcIj57eyAnS2Fkb29nbHU6OkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGR4LXRleHQtYXJlYVxyXG4gICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCI3MFwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaXNGb3JtTG9ja2VkXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgIDwvZHgtdGV4dC1hcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gUGhhc2UgMSBBbHQgQnV0b25sYXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTMgbWItM1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWxlZnQgbWUtMVwiPjwvaT4ge3sgJ0thZG9vZ2x1OjpCYWNrJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgIDxhYnAtYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIiF3ZWlnaGluZ01vZGUgJiYgIWlzRm9ybUxvY2tlZFwiXHJcbiAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1zYXZlXCJcclxuICAgICAgICAgIGJ1dHRvblR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgW2xvYWRpbmddPVwiaXNTYXZpbmdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiPlxyXG4gICAgICAgICAge3sgJ0thZG9vZ2x1OjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImlsZXJpR2l0KClcIj5cclxuICAgICAgICAgIHt7ICdLYWRvb2dsdTo6TmV4dCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1yaWdodCBtcy0xXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tID09PT09PT09PT0gUEhBU0UgMjogVGFydMSxbSBQYW5lbGkgPT09PT09PT09PSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwiZm9ybVBoYXNlID09PSAyICYmICFpc0Z1bGx5Q29tcGxldGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBHcnVwIDE6IFRlcmF6aSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFsYW5jZS1zY2FsZSBtZS0yXCI+PC9pPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdQYW5lbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwid2VpZ2hpbmdNb2RlXCIgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndlaWdoaW5nTW9kZSA9PT0gJ2ZpcnN0JyA/ICdiZy13YXJuaW5nIHRleHQtZGFyaycgOiAnYmctcHJpbWFyeSdcIj5cclxuICAgICAgICAgICAgICAgICAge3sgd2VpZ2hpbmdNb2RlTGFiZWwgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTMgYWxpZ24taXRlbXMtc3RyZXRjaFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU29sOiBDYW5sxLEgVGFydMSxbSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiIHN0eWxlPVwiZGlzcGxheTogZ3JpZDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHQgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtY2VudGVyIHB5LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG1iLTEgZnctc2VtaWJvbGQgdGV4dC11cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0thZG9vZ2x1OjpMaXZlV2VpZ2hpbmcnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1NjYWxlQ29ubmVjdGluZyB8fCBpc1NjYWxlUmVjb25uZWN0aW5nXCIgY2xhc3M9XCJteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXNlY29uZGFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7IChpc1NjYWxlUmVjb25uZWN0aW5nID8gJ0thZG9vZ2x1OjpSZWNvbm5lY3RpbmcnIDogJ0thZG9vZ2x1OjpDb25uZWN0aW5nJykgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzU2NhbGVDb25uZWN0aW5nICYmICFpc1NjYWxlUmVjb25uZWN0aW5nICYmICFzY2FsZUNvbm5lY3Rpb25GYWlsZWRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMi41cmVtOyBmb250LXdlaWdodDogYm9sZDsgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFNjYWxlVmFsdWUgIT0gbnVsbCA/IChjdXJyZW50U2NhbGVWYWx1ZSB8IG51bWJlcjonMS4wLTAnKSArICcga2cnIDogJ+KAlCBrZycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNjYWxlQ29ubmVjdGlvbkZhaWxlZFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoYWluLWJyb2tlbiBmYS0yeCB0ZXh0LXNlY29uZGFyeSBtYi0yIGQtYmxvY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgZnctc2VtaWJvbGQgZC1ibG9ja1wiIHN0eWxlPVwiZm9udC1zaXplOiAwLjk1cmVtOyBsaW5lLWhlaWdodDogMS41O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6U2NhbGVDb25uZWN0aW9uRmFpbGVkSW5saW5lJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE9ydGE6IEFrxLHFnyBva3UgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHQgZmEtMnggdGV4dC1tdXRlZFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gU2HEnzogU2FiaXRsZW5tacWfIERlxJ9lciArIFNhYml0bGUgYnV0b251IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCIgc3R5bGU9XCJkaXNwbGF5OiBncmlkO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAnYm9yZGVyLXN1Y2Nlc3MnIDogJ2JnLWxpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAncmdiYSgyNSwxMzUsODQsMC4wOCknIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtY2VudGVyIHB5LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBtYi0xIGZ3LXNlbWlib2xkIHRleHQtdXBwZXJjYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAndGV4dC1zdWNjZXNzJyA6ICd0ZXh0LW11dGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnS2Fkb29nbHU6OkZpeGVkVmFsdWUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6IDIuNXJlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZml4ZWRTY2FsZVZhbHVlICE9IG51bGwgPyAndGV4dC1zdWNjZXNzJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpeGVkU2NhbGVWYWx1ZSAhPSBudWxsID8gKGZpeGVkU2NhbGVWYWx1ZSB8IG51bWJlcjonMS4wLTAnKSArICcga2cnIDogJ+KAlCBrZycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzRnVsbHlDb21wbGV0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1sZyB3LTEwMCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFNjYWxlVmFsdWUgPT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhYml0bGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbG9jayBtZS0yXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6Rml4JyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXAgMjogVGFydMSxbSBLYXnEsXRsYXLEsSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaGlzdG9yeSBtZS0yXCI+PC9pPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdSZWNvcmRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gxLBsayBUYXJ0xLFtIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCByb3VuZGVkIHB5LTMgcHgtNFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMGQ2ZWZkOyBiYWNrZ3JvdW5kOiAjZmZmO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6Rmlyc3RXZWlnaGluZycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlyc3RXZWlnaGluZ1ZhbHVlICE9IG51bGw7IGVsc2Ugbm9GaXJzdFdlaWdoaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiIHN0eWxlPVwiZm9udC1zaXplOiAxLjc1cmVtOyBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaXJzdFdlaWdoaW5nVmFsdWUgfCBudW1iZXI6JzEuMC0wJyB9fSBrZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6T3BlcmF0b3InIHwgYWJwTG9jYWxpemF0aW9uIH19OiB7eyBmaXJzdE9wZXJhdG9yQ29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0ZpcnN0V2VpZ2hpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmc3QtaXRhbGljIG10LTJcIj57eyAnS2Fkb29nbHU6Ok5vdFlldERvbmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFNvbiBUYXJ0xLFtIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCByb3VuZGVkIHB5LTMgcHgtNFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjNmY0MmMxOyBiYWNrZ3JvdW5kOiAjZmZmO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6TGFzdFdlaWdoaW5nJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsYXN0V2VpZ2hpbmdWYWx1ZSAhPSBudWxsOyBlbHNlIG5vTGFzdFdlaWdoaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiIHN0eWxlPVwiZm9udC1zaXplOiAxLjc1cmVtOyBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsYXN0V2VpZ2hpbmdWYWx1ZSB8IG51bWJlcjonMS4wLTAnIH19IGtnXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0thZG9vZ2x1OjpPcGVyYXRvcicgfCBhYnBMb2NhbGl6YXRpb24gfX06IHt7IGxhc3RPcGVyYXRvckNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9MYXN0V2VpZ2hpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBmc3QtaXRhbGljIG10LTJcIj57eyAnS2Fkb29nbHU6Ok5vdFlldERvbmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE5ldCBZw7xrIChzYWRlY2Ugd2VpZ2hpbmdTdGVwPT09Myd0ZSkgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIiAqbmdJZj1cIndlaWdoaW5nU3RlcCA9PT0gMyAmJiBuZXRXZWlnaHQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgcm91bmRlZCBweS0zIHB4LTRcIiBzdHlsZT1cImJvcmRlci1sZWZ0OiA0cHggc29saWQgIzE5ODc1NDsgYmFja2dyb3VuZDogcmdiYSgyNSwxMzUsODQsMC4wNik7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGQgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0thZG9vZ2x1OjpOZXRXZWlnaHQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgY29sb3I6ICMxOTg3NTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBuZXRXZWlnaHQgfCBudW1iZXI6JzEuMC0wJyB9fSBrZ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQaGFzZSAyIEFsdCBCdXRvbmxhciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBtYi0zXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJnZXJpR2l0UGhhc2UoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdCBtZS0xXCI+PC9pPiB7eyAnS2Fkb29nbHU6OkJhY2snIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YWJwLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiIWlzRnVsbHlDb21wbGV0ZWRcIlxyXG4gICAgICAgIGljb25DbGFzcz1cImZhIGZhLXNhdmVcIlxyXG4gICAgICAgIGJ1dHRvblR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cImlzU2F2aW5nXCJcclxuICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCI+XHJcbiAgICAgICAge3sgJ0thZG9vZ2x1OjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2FicC1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSA9PT09PT09PT09IFNVTU1BUlk6IFRhbWFtbGFuZMSxIEfDtnLDvG7DvG3DvCA9PT09PT09PT09IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0Z1bGx5Q29tcGxldGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICAgIDwhLS0gVGFtIGdlbmnFn2xpazogVGFydMSxbSBTb251w6dsYXLEsSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFsYW5jZS1zY2FsZSBtZS0yXCI+PC9pPnt7ICdLYWRvb2dsdTo6V2VpZ2hpbmdSZXN1bHRzJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSDEsGxrIFRhcnTEsW0gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHNoYWRvdy1zbSByb3VuZGVkIHB5LTMgcHgtNCBoLTEwMFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMGQ2ZWZkO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXVwcGVyY2FzZSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkIG1iLTFcIj57eyAnS2Fkb29nbHU6OkZpcnN0V2VpZ2hpbmcnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGZpcnN0V2VpZ2hpbmdWYWx1ZSAhPSBudWxsID8gKGZpcnN0V2VpZ2hpbmdWYWx1ZSB8IG51bWJlcjonMS4wLTAnKSArICcga2cnIDogJ+KAlCBrZycgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCI+e3sgJ0thZG9vZ2x1OjpPcGVyYXRvcicgfCBhYnBMb2NhbGl6YXRpb24gfX06IHt7IGZpcnN0T3BlcmF0b3JDb2RlIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBTb24gVGFydMSxbSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgc2hhZG93LXNtIHJvdW5kZWQgcHktMyBweC00IGgtMTAwXCIgc3R5bGU9XCJib3JkZXItbGVmdDogNHB4IHNvbGlkICM2ZjQyYzE7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdXBwZXJjYXNlIHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGQgbWItMVwiPnt7ICdLYWRvb2dsdTo6TGFzdFdlaWdoaW5nJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCIgc3R5bGU9XCJmb250LXNpemU6IDEuNzVyZW07IGxldHRlci1zcGFjaW5nOiAwLjAyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBsYXN0V2VpZ2hpbmdWYWx1ZSAhPSBudWxsID8gKGxhc3RXZWlnaGluZ1ZhbHVlIHwgbnVtYmVyOicxLjAtMCcpICsgJyBrZycgOiAn4oCUIGtnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj57eyAnS2Fkb29nbHU6Ok9wZXJhdG9yJyB8IGFicExvY2FsaXphdGlvbiB9fToge3sgbGFzdE9wZXJhdG9yQ29kZSB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTmV0IFnDvGsgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoYWRvdy1zbSByb3VuZGVkIHB5LTMgcHgtNCBoLTEwMFwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjMTk4NzU0OyBiYWNrZ3JvdW5kOiByZ2JhKDI1LDEzNSw4NCwwLjA2KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC11cHBlcmNhc2UgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZCBtYi0xXCI+e3sgJ0thZG9vZ2x1OjpOZXRXZWlnaHQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIiBzdHlsZT1cImZvbnQtc2l6ZTogMS43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgY29sb3I6ICMxOTg3NTQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBuZXRXZWlnaHQgIT0gbnVsbCA/IChuZXRXZWlnaHQgfCBudW1iZXI6JzEuMC0wJykgKyAnIGtnJyA6ICfigJQga2cnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gU29sIHPDvHR1bjogR2lyacWfL8OHxLFrxLHFnyArIEFyYcOnICYgU8O8csO8Y8O8IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXA6IEdpcmnFnyAvIMOHxLFrxLHFnyBCaWxnaWxlcmkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24taW4tYWx0IG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpFbnRyeUV4aXRJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpHYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGdhdGVOYW1lIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yIHB5LTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBmMGYwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj5BcmHDpyBIYXJla2V0IFTDvHLDvDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGVudHJ5VHlwZU5hbWUgfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RW50cnlEYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGVudHJ5RGF0ZSA/IChlbnRyeURhdGUgfCBkYXRlOidkZC5NTS55eXl5JykgOiAn4oCUJyB9fSB7eyBlbnRyeVRpbWUgfHwgJycgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj57eyAnS2Fkb29nbHU6OkV4aXREYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGV4aXREYXRlID8gKGV4aXREYXRlIHwgZGF0ZTonZGQuTU0ueXl5eScpIDogJ+KAlCcgfX0ge3sgZXhpdFRpbWUgfHwgJycgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXA6IEFyYcOnICYgU8O8csO8Y8O8IEJpbGdpbGVyaSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1ib3R0b20gcGItMiBtYi0zIGZ3LWJvbGQgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJ1Y2sgbWUtMlwiPjwvaT57eyAnS2Fkb29nbHU6OlZlaGljbGVEcml2ZXJJbmZvJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpUcnVja1BsYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IHRydWNrUGxhdGVObyB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpUcmFpbGVyUGxhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTcgZnctbWVkaXVtXCI+e3sgdHJhaWxlclBsYXRlTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RHJpdmVyTmFtZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBkcml2ZXJGdWxsTmFtZSB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6VGNJZGVudGl0eU5vJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IHRjTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBTYcSfIHPDvHR1bjogQmVsZ2UgJiBZw7xrIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEdydXA6IEJlbGdlICYgWcO8ayBCaWxnaWxlcmkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItYm90dG9tIHBiLTIgbWItMyBmdy1ib2xkIHRleHQtc2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGUtYWx0IG1lLTJcIj48L2k+e3sgJ0thZG9vZ2x1OjpEb2N1bWVudENhcmdvSW5mbycgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RHJpdmVyQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBkcml2ZXJOYW1lIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yIHB5LTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBmMGYwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj57eyAnS2Fkb29nbHU6OkJ1c2luZXNzUGFydG5lcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBhY2NvdW50VGl0bGUgfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6V2F5YmlsbE51bWJlcicgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyB3YXliaWxsTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6U2NhbGVDb2RlJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IHNjYWxlTmFtZSB8fCAn4oCUJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMiBweS0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSB0ZXh0LW11dGVkIHNtYWxsIGZ3LXNlbWlib2xkXCI+e3sgJ0thZG9vZ2x1OjpJdGVtQ29kZScgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNyBmdy1tZWRpdW1cIj57eyBzdG9ja05hbWUgfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6Q29udGFpbmVyTm8nIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTcgZnctbWVkaXVtXCI+e3sgY29udGFpbmVyTm8gfHwgJ+KAlCcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgdGV4dC1tdXRlZCBzbWFsbCBmdy1zZW1pYm9sZFwiPnt7ICdLYWRvb2dsdTo6RGVwYXJ0dXJlVG9BcnJpdmFsJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IChkZXBhcnR1cmVMb2NhdGlvbiB8fCAn4oCUJykgKyAnIOKGkiAnICsgKGFycml2YWxMb2NhdGlvbiB8fCAn4oCUJykgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTIgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IHRleHQtbXV0ZWQgc21hbGwgZnctc2VtaWJvbGRcIj57eyAnS2Fkb29nbHU6OkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGZ3LW1lZGl1bVwiPnt7IGRlc2NyaXB0aW9uIHx8ICfigJQnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEFsdCBCdXRvbmxhciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBtYi0zXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJnb0JhY2soKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdCBtZS0xXCI+PC9pPiB7eyAnS2Fkb29nbHU6OkJhY2tUb0xpc3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJlbnRyeVR5cGVNYWxHQyAmJiByZWNvcmQ/LnVfU3RhdHVzID09PSAnMidcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEb2luZ0dvb2RzTW92ZW1lbnRcIlxyXG4gICAgICAgIChjbGljayk9XCJkb0dvb2RzTW92ZW1lbnQoKVwiPlxyXG4gICAgICAgIDxpIFtjbGFzc109XCJpc0RvaW5nR29vZHNNb3ZlbWVudCA/ICdmYSBmYS1zcGlubmVyIGZhLXNwaW4gbWUtMScgOiAnZmEgZmEtZXhjaGFuZ2UgbWUtMSdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAge3sgJ0thZG9vZ2x1OjpNYWxHY1lhcCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==