@senior-gestao-empresarial/erpx-components 3.3.2 → 3.3.3

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.
@@ -761,7 +761,8 @@ let ErpTributosComponent = class ErpTributosComponent {
761
761
  { campo: EnumCampoTributo.Valor }
762
762
  ], EnumTipoTributo.FCP)), Object.assign({ name: EnumTipoTributo.ICMS_DESONERADO, label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado' }, this.montaCampos([
763
763
  { campo: EnumCampoTributo.MotivoDesoneracaoIcms },
764
- { campo: EnumCampoTributo.Valor }
764
+ { campo: EnumCampoTributo.Valor },
765
+ { campo: EnumCampoTributo.PercentualSuspensaoParcial }
765
766
  ], EnumTipoTributo.ICMS_DESONERADO)), Object.assign({ name: EnumTipoTributo.ICMS_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_icms_diferido' }, this.montaCampos([
766
767
  { campo: EnumCampoTributo.BaseCalculo },
767
768
  { campo: EnumCampoTributo.PercentualDiferimento },
@@ -838,7 +839,8 @@ let ErpTributosComponent = class ErpTributosComponent {
838
839
  { campo: EnumCampoTributo.Valor }
839
840
  ], EnumTipoTributo.FCP)), Object.assign({ name: EnumTipoTributo.ICMS_DESONERADO, label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado' }, this.montaCampos([
840
841
  { campo: EnumCampoTributo.MotivoDesoneracaoIcms },
841
- { campo: EnumCampoTributo.Valor }
842
+ { campo: EnumCampoTributo.Valor },
843
+ { campo: EnumCampoTributo.PercentualSuspensaoParcial }
842
844
  ], EnumTipoTributo.ICMS_DESONERADO)), Object.assign({ name: EnumTipoTributo.ICMS_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_icms_diferido' }, this.montaCampos([
843
845
  { campo: EnumCampoTributo.BaseCalculo },
844
846
  { campo: EnumCampoTributo.PercentualDiferimento },
@@ -905,7 +907,8 @@ let ErpTributosComponent = class ErpTributosComponent {
905
907
  { campo: EnumCampoTributo.Valor }
906
908
  ], EnumTipoTributo.FCP)), Object.assign({ name: EnumTipoTributo.ICMS_DESONERADO, label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado' }, this.montaCampos([
907
909
  { campo: EnumCampoTributo.MotivoDesoneracaoIcms },
908
- { campo: EnumCampoTributo.Valor }
910
+ { campo: EnumCampoTributo.Valor },
911
+ { campo: EnumCampoTributo.PercentualSuspensaoParcial }
909
912
  ], EnumTipoTributo.ICMS_DESONERADO)), Object.assign({ name: EnumTipoTributo.ICMS_DIFERIDO, label: 'erpx.tributos.enum_tipo_tributo_icms_diferido' }, this.montaCampos([
910
913
  { campo: EnumCampoTributo.BaseCalculo },
911
914
  { campo: EnumCampoTributo.PercentualDiferimento },
@@ -2937,6 +2940,27 @@ let ErpTributosComponent = class ErpTributosComponent {
2937
2940
  required: () => false
2938
2941
  }));
2939
2942
  }
2943
+ else if (it.campo == EnumCampoTributo.PercentualSuspensaoParcial) {
2944
+ formGroup = Object.assign(Object.assign({}, formGroup), { percentualSuspensaoParcial: [{ value: null, disabled: false }, Validators.compose([Validators.max(100)])] });
2945
+ formField.push(new FormField({
2946
+ id: tributo + 'percentualSuspensaoParcial',
2947
+ name: 'percentualSuspensaoParcial',
2948
+ label: this.translate.instant('erpx.tributos.fields_percentual_suspensao_parcial_label'),
2949
+ type: FieldType.Money,
2950
+ precision: 7,
2951
+ scale: 4,
2952
+ numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },
2953
+ size: { sm: 12, md: 4, lg: 4, xl: 3 },
2954
+ onBlur: () => {
2955
+ this.backValue();
2956
+ this.setValidators(tributo);
2957
+ },
2958
+ errorMessages: () => ({
2959
+ max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 })
2960
+ }),
2961
+ required: () => this.setVariableRequired(tributo)
2962
+ }));
2963
+ }
2940
2964
  });
2941
2965
  if (this.sugestoes) {
2942
2966
  this.sugestoes
@@ -3107,4 +3131,4 @@ ErpTributosComponent = __decorate([
3107
3131
  })
3108
3132
  ], ErpTributosComponent);
3109
3133
  export { ErpTributosComponent };
3110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCw2Q0FBNkMsRUFDN0MsYUFBYSxFQUNiLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUN4QixNQUFNLCtDQUErQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9B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Q0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDckMsT0FBTyxFQUFFO3dCQUNMLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMs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QUFFLFNBQVMsMENBQUUsT0FBTyxHQUFBLEVBQUU7SUFDakUsQ0FBQztDQUNKLENBQUE7O1lBN2hJNEIsV0FBVztZQUNSLGlCQUFpQjtZQUN0QixnQkFBZ0I7WUFDWixhQUFhO1lBQ2IsYUFBYTtZQUNMLDZDQUE2QztZQUN2RCxxQkFBcUI7WUFDaEIsY0FBYztZQUNaLGtCQUFrQjtZQUNoQyxXQUFXO1lBQ2Msb0JBQW9COztBQWhDdEQ7SUFBUixLQUFLLEVBQUU7dURBQXdCO0FBQ3ZCO0lBQVIsS0FBSyxFQUFFOzhEQUEwQjtBQUN6QjtJQUFSLEtBQUssRUFBRTt1REFBbUI7QUFDbEI7SUFBUixLQUFLLEVBQUU7dURBQThCO0FBQzdCO0lBQVIsS0FBSyxFQUFFO3NEQUF3QjtBQUN2QjtJQUFSLEtBQUssRUFBRTsrREFBMkI7QUFDekI7SUFBVCxNQUFNLEVBQUU7NERBQTBDO0FBRW5EO0lBREMsS0FBSyxFQUFFO29EQUdQO0FBQ1E7SUFBUixLQUFLLEVBQUU7cURBQWtCO0FBQ2pCO0lBQVIsS0FBSyxFQUFFO3FEQUFrQjtBQUNqQjtJQUFSLEtBQUssRUFBRTttRUFBc0c7QUFDckc7SUFBUixLQUFLLEVBQUU7b0VBQXFMO0FBQ3BMO0lBQVIsS0FBSyxFQUFFO3NFQUFvQztBQXJGbkMsb0JBQW9CO0lBSmhDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLG0zREFBNEM7S0FDL0MsQ0FBQztHQUNXLG9CQUFvQixDQXluSWhDO1NBem5JWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZGVudGlmaWVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICBFMDI3RXFpTG9va3VwLFxuICAgIEUwMjdTdHJMb29rdXAsXG4gICAgRW51bUxvZ2ljYWxPcGVyYXRvcixcbiAgICBMb29rdXBSZXF1ZXN0VmFsaWRhdG9yLFxuICAgIExvb2t1cFZhbGlkYXRpb25VdGlsc1xufSBmcm9tICdAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtRmllbGQsIExvb2t1cEZpZWxkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFcnBUcmlidXRvc1NlcnZpY2UgfSBmcm9tICcuL2VycC10cmlidXRvcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3BsYXRmb3JtLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgR1RhZ1NlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBDYW1wb1RyaWJ1dG8sXG4gICAgRW51bUNhbXBvVHJpYnV0byxcbiAgICBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLFxuICAgIEVudW1HcnVwb1RyaWJ1dG8sXG4gICAgRW51bU1vZEJjLFxuICAgIEVudW1Nb3REZXMsXG4gICAgRW51bU9yaU1lcixcbiAgICBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyxcbiAgICBlbnVtVGlwQ3JlZFJlY3VwLFxuICAgIEVudW1UaXBJbXBDc3QsXG4gICAgRW51bVRpcG9Eb2N1bWVudG8sXG4gICAgRW51bVRpcG9JdGVtLFxuICAgIEVudW1UaXBPcGUsXG4gICAgRW51bVRpcG9UcmlidXRvLFxuICAgIEl0ZW0sXG4gICAgU3VnZXN0YW9cbn0gZnJvbSAnLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VycC10cmlidXRvcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VycC10cmlidXRvcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRXJwVHJpYnV0b3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICAgIHB1YmxpYyBncnVwb3M6IGFueVtdID0gW107XG4gICAgcHVibGljIHRyaWJ1dG9zVmFsdWU6IGFueVtdID0gW107XG4gICAgcHVibGljIHJlbG9hZCA9IHRydWU7XG4gICAgcHVibGljIGluZGV4QWNjb3JkaW9uOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBwcmVmaXhMYWJlbDogc3RyaW5nO1xuXG4gICAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNvZmlucyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUltcG9ydGFjb2VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Jc3MgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwU3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ29maW5zRmF0dXJlbWVudG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc1VmRGVzdGlubyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWREaWZhbERldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRmF0dXJhbWVudG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSW1wb3N0b05hb1JlY3VwZXJhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkYmFzZUNhbGN1bG9DcmVkaXRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkUGVyY2VudHVhbFJlZHVjYW8gPSB0cnVlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgQElucHV0KCkgc3VnZXN0b2VzITogU3VnZXN0YW9bXTtcbiAgICBASW5wdXQoKSBjYW1wb3NCbG9xdWVhZG9zID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGV2b2x2aWRvID0gZmFsc2U7XG4gICAgQElucHV0KCkgZG9jdW1lbnRvOiBFbnVtVGlwb0RvY3VtZW50bztcbiAgICBASW5wdXQoKSB0aXBvSXRlbTogRW51bVRpcG9JdGVtO1xuICAgIEBJbnB1dCgpIGhhYmlsaXRhT3BjYW9DaWRlID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIHRyaWJ1dG9zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQElucHV0KClcbiAgICBnZXQgdHJpYnV0b3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyaWJ1dG9zVmFsdWU7XG4gICAgfVxuICAgIEBJbnB1dCgpIGRvbWluaW8/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vydmljbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXJyZW5jeUxvY2FsZU9wdGlvbnM/OiBhbnkgPSB7IGN1cnJlbmN5U3ltYm9sOiAnJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9O1xuICAgIEBJbnB1dCgpIGlkc1RheGVzTWVtb3JpYUNhbGN1bG8/OiBbeyBpZFBhcmFtZXRybzogc3RyaW5nLCBpZFBhcmFtZXRyb0VzdGFkbzogc3RyaW5nLCBpZFBlcmZpbFRyaWJ1dGFyaW86IHN0cmluZywgdGlwb1RyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgZnJvbVNjcmVlbj86IHN0cmluZywgaWRQYXJhbWV0cm9TdDogc3RyaW5nIH1dO1xuICAgIEBJbnB1dCgpIHBlcm1pc3Npb25NZW1vcmlhQ2FsY3Vsbz86IGJvb2xlYW47XG5cbiAgICBzZXQgdHJpYnV0b3ModmFsKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlMDI3U3RyTG9va3VwOiBFMDI3U3RyTG9va3VwLFxuICAgICAgICBwcml2YXRlIGUwMjdlcWlMb29rdXA6IEUwMjdFcWlMb29rdXAsXG4gICAgICAgIHByaXZhdGUgbmF0dXJlemFSZWNlaXRhTG9va3VwOiBDcGxUcmlOb3RhU2FpZGFOYXR1cmV6YVJlY2VpdGFQaXNDb2ZpbnNMb29rdXAsXG4gICAgICAgIHByaXZhdGUgbG9va3VwVXRpbHM6IExvb2t1cFZhbGlkYXRpb25VdGlscyxcbiAgICAgICAgcHJvdGVjdGVkIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlcnBUcmlidXRvc1NlcnZpY2U6IEVycFRyaWJ1dG9zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBndGFnOiBHVGFnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlVG9nZ2xlU2VydmljZTogRmVhdHVyZVRvZ2dsZVNlcnZpY2VcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MgPSBbXTtcbiAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmRvbWluaW8gPSB0aGlzLmRvbWluaW8gPyB0aGlzLmRvbWluaW8gOiAnZXJweF9jcGxfaW1wJztcbiAgICAgICAgdGhpcy5zZXJ2aWNvID0gdGhpcy5zZXJ2aWNvID8gdGhpcy5zZXJ2aWNvIDogJ2NhZGFzdHJvcyc7XG5cbiAgICAgICAgdGhpcy5wcmVmaXhMYWJlbCA9IGAke3RoaXMuZG9taW5pb30uJHt0aGlzLnNlcnZpY299YFxuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMgPSB7IGN1cnJlbmN5U3ltYm9sOiAnJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9O1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgdmFyaWF2ZWlzQWx0ZXJhZGFzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG4gICAgICAgIGlmICghdmFyaWF2ZWlzQWx0ZXJhZGFzLmluY2x1ZGVzKCdzdWdlc3RvZXMnKSB8fCB2YXJpYXZlaXNBbHRlcmFkYXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclZhcmlhYmxlcygpO1xuICAgICAgICAgICAgdGhpcy5nZXRBY3Rpb25zKCk7XG4gICAgICAgICAgICBpZiAoKHRoaXMudHJpYnV0b3NWYWx1ZSA9PSB1bmRlZmluZWQpIHx8ICh0aGlzLnRyaWJ1dG9zVmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncnVwb3MgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVHJpYnV0b3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRyaWJ1dG9zKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY2FtcG9zQmxvcXVlYWRvcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkT25seVRyaWJ1dG9zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubG9va3VwVXRpbHMucmVzZXRTdG9yZWRLZXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG1lbW9yaWFDYWxjdWxvKGltcG9zdG86IGFueSkge1xuICAgICAgICBsZXQgdHJpYnV0byA9IHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50OiBhbnkpID0+IHsgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaW1wb3N0by5uYW1lIH0pO1xuICAgICAgICB0aGlzLmFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0byk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlVXJsV2luZG93KHBhcmFtczogSWRlbnRpZmllcnMsIHRyaWJ1dG8/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5lcnBUcmlidXRvc1NlcnZpY2UuZ2V0RnJvbnRlbmQocGFyYW1zKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3Jlc3BvbnNlLmZyb250ZW5kc1swXS5lbWJlZGRlZFVSTH1gLCAnX2JsYW5rJyk7XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5ndGFnLnNlbmRCdXR0b25DbGljaygnQm90w6NvIGFjZXNzYXIgcGFyYW1ldHJpemHDp8OjbycgLCB7aW1wb3N0b3M6IHRyaWJ1dG8udGlwb1RyaWJ1dG99KVxuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlZEJ1dHRvbihpbXBvc3RvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3VsbyA9PSB1bmRlZmluZWQgfHwgIXRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpcG9UcmlidXRvID09IGltcG9zdG8gJiYgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlQnV0dG9uKGltcG9zdG86IGFueSkge1xuICAgICAgICBzd2l0Y2ggKGltcG9zdG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWJyaXJXaW5kb3dVcmxNZW1vcmlhQ2FsY3Vsbyh0cmlidXRvOiBhbnkpIHtcbiAgICAgICAgaWYgKCF0cmlidXRvPy5pZFBlcmZpbFRyaWJ1dGFyaW8gJiYgIXRyaWJ1dG8/LmlkUGFyYW1ldHJvKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJyb3JfbWVtb3JpYV9jYWxjdWxvX21lc3NhZ2VfdGl0bGUnKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX2NvbnRlbnQnKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXJzOiBbe1xuICAgICAgICAgICAgICAgIFwiZG9tYWluTmFtZVwiOiBcImVycHhfY3BsX2ltcFwiLFxuICAgICAgICAgICAgICAgIFwic2VydmljZU5hbWVcIjogXCJpbXBvc3Rvc1wiLFxuICAgICAgICAgICAgICAgIFwiYXBwTmFtZVwiOiBcImVycHgtY3BsLWltcC1pbXBvc3Rvc1wiLFxuICAgICAgICAgICAgICAgIFwicm91dGVcIjogYCR7dGhpcy52YWxpZGFUZWxhKHRyaWJ1dG8pfWBcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tYWtlVXJsV2luZG93KHBhcmFtcywgdHJpYnV0byk7XG4gICAgfVxuXG4gICAgdmFsaWRhVGVsYSh0YXhlczogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RUYXhlcyh0YXhlcy50aXBvVHJpYnV0bykpIHtcbiAgICAgICAgICAgIGlmKHRheGVzLmlkUGFyYW1ldHJvRXN0YWRvKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gYGljbXNzdC8ke3RheGVzLmlkUGFyYW1ldHJvU3R9L2ljbXNzdC1wYXJhbWV0cm9zLyR7dGF4ZXMuaWRQYXJhbWV0cm9Fc3RhZG99P3BlcmZpbFRyaWJ1dGFyaW9JZD0ke3RheGVzLmlkUGVyZmlsVHJpYnV0YXJpb30mcGFyYW1ldHJvSW1wb3N0b3NJZD0ke3RheGVzLmlkUGFyYW1ldHJvfWBcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb30vaWNtc3N0LXBhcmFtZXRyb3MvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYHBlcmZpbC10cmlidXRhcmlvLyR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfS9wYXJhbWV0cml6YWNhby1pbXBvc3Rvcy8ke3RoaXMuZ2V0VHJpYnV0b1BhaSh0YXhlcy50aXBvVHJpYnV0byl9LyR7dGF4ZXMuaWRQYXJhbWV0cm99YFxuICAgIH1cblxuICAgIHByaXZhdGUgaXNTdFRheGVzKHRheGVzOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoICh0YXhlcykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyaWJ1dG9QYWkodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaXMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjb2ZpbnMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lwaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1M6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaXNzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lpJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklSUkY6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQ6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgIHJldHVybiAncmV0ZW5jb2VzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5POlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNtcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjaWRlJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyVmFyaWFibGVzKCkge1xuICAgICAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbLTFdO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNvZmlucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJpYnV0b3MoKSB7XG5cbiAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLm1hcChpdCA9PiB7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoaXQudGlwb0ltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUGlzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDb2ZpbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJcGkoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJc3MoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJbXBvcnRhY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXNGdW5ydXJhbCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZE9ubHlUcmlidXRvcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zICYmIHRoaXMuZ3J1cG9zICE9IHVuZGVmaW5lZCAmJiB0aGlzLmdydXBvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoZ3J1cG8gPT4gZ3J1cG8uaXRlbS5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRyaWJ1dG9zKCkge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3MgJiYgdGhpcy5ncnVwb3MgIT0gdW5kZWZpbmVkICYmIHRoaXMuZ3J1cG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcChncnVwbyA9PiBncnVwby5pdGVtLm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKGl0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUgPT09IGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAucGF0Y2hWYWx1ZShpdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKGl0LnRpcG9JbXBvc3RvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VWYWx1ZXNPbkxvb2t1cFZhbGlkYXRvcihpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcChncnVwbyA9PiBncnVwby5pdGVtLm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3VicyhpdGVtKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsaWRhdG9ycyh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zICYmIHRoaXMuZ3J1cG9zICE9IHVuZGVmaW5lZCAmJiB0aGlzLmdydXBvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoXG4gICAgICAgICAgICAgICAgZ3J1cG8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBncnVwby5pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdDogYW55KSA9PiBpdC5uYW1lID09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChpdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0gIT0gJ2ltcG9zdG9NYW51YWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCAmJiBpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0gPT0gJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBWYWxpZGF0b3JzLm1heCgxMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICd2YWxvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ29ic2VydmFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg1KV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdjb2RpZ29UcmlidXRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmFzZUNhbGN1bG9DcmVkaXRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSAhPT0gJ2ltcG9zdG9NYW51YWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXRlbSAhPT0gJ25hdHVyZXphUmVjZWl0YSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpdGVtICE9PSAndmFsb3JEZWR1Y2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGl0ZW0gIT09ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0gPT0gJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwMCldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ3ZhbG9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdvYnNlcnZhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg2KV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnaW5kaWNhdGl2b0FxdWlzaWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW10pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQWxsRm9ybUZpZWxkcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCkge1xuICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoY29udHJvbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZUFsbEZpZWxkc1RyaWJ1dG9zKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgdmFsdWVWYWxpZCA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcyAmJiB0aGlzLmdydXBvcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5ncnVwb3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKFxuICAgICAgICAgICAgICAgIGdydXBvID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBpdC5mb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkgY29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB0aGlzLnZhbGlkYXRlQWxsRmllbGRzVHJpYnV0b3MoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVWYWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJhY2tWYWx1ZSgpIHtcbiAgICAgICAgY29uc3QgYXJySXRlbnM6IGFueSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncnVwb3MgJiYgdGhpcy5ncnVwb3MgIT0gdW5kZWZpbmVkICYmIHRoaXMuZ3J1cG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcChcbiAgICAgICAgICAgICAgICBncnVwbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGl0ZW0uZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV1TWF0aCA9IHRoaXMudHJpYnV0b3NWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih0cmlidXRvID0+IHRyaWJ1dG8udGlwb0ltcG9zdG8gPT0gaXRlbS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodHJpYnV0bzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udHJpYnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldU1hdGggJiYgZGV1TWF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goZGV1TWF0aFswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKHsgJ3RpcG9JbXBvc3RvJzogaXRlbS5uYW1lLCAuLi5pdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaCh7ICd0aXBvSW1wb3N0byc6IGl0ZW0ubmFtZSwgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJpYnV0b3NDaGFuZ2UuZW1pdChhcnJJdGVucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZTogYW55LCBzaW5nbGVDaGFuZ2U/OiBib29sZWFuKSB7XG4gICAgICAgIHZhbHVlLmZvcm1GaWVsZC5mb3JFYWNoKChmaWVsZDogRm9ybUZpZWxkKSA9PiBmaWVsZC5vbkJsdXI/LmNhbGwodGhpcykpO1xuICAgICAgICB2YWx1ZS5mb3JtR3JvdXAuY29udHJvbHMuaW1wb3N0b01hbnVhbC5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgICBpZiAoIXNpbmdsZUNoYW5nZSkgeyB0aGlzLnNldFN1YnModmFsdWUpOyB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGlvbnMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IG1lbnU6IE1lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jYW9GdW5ydXJhbCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNhb19mdW5ydXJhbF9sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAncGlzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX3Bpc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUGlzLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVBpcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIGlkOiAnY29maW5zJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY29maW5zX2xhYmVsJyksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNvZmlucyxcbiAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ29maW5zKCkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pLCB0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGlkOiAnaXBpJyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXBpX2xhYmVsJyksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlwaSxcbiAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXBpKCkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pLCB0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGlkOiAnaWNtcycsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2ljbXNfbGFiZWwnKSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSWNtcyxcbiAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRvICE9IEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19WRU5EQSkge1xuICAgICAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdpbXBvcnRhY29lcycsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaW1wb3J0YWNvZXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUltcG9ydGFjb2VzKCkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGlwb0l0ZW0gPT0gRW51bVRpcG9JdGVtLlNlcnZpY28gfHwgdGhpcy5kb2N1bWVudG8gPT0gRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQV9DT05UUk9MQURPUklBKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ2lzcycsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXNzX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSXNzLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXNzKCkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdyZXRlbmNvZXMnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX3JldGVuY29lc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lcyxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aXBvSXRlbSA9PSBFbnVtVGlwb0l0ZW0uU2VydmljbyAmJiB0aGlzLmhhYmlsaXRhT3BjYW9DaWRlKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ2NpZGUnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2NpZGVfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUNpZGUoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2lkZSgpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jaWRlX3RlY25vbG9naWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBICsgJ19sYWJlbCd9YCwgaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSWNtcygpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkRJRkFMKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyogRElGQUwgREVWT0xWSURPICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX0NPTVBSQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVMpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1ApXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5ESUZBTClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNUylcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETylcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkRJRkFMKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTylcbiAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZWZldGl2bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0VGRVRJVk8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTylcbiAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PcmlnZW0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1ApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5ESUZBTClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHsgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TICsgJ19sYWJlbCd9YCwgaXRlbSB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lcygpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IGFueVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DU0xMKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklSUkYpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DU0xMKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklSUkYpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNTTEwpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVJSRilcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTlNTKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNTTEwpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVJSRilcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTlNTKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DU0xMKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVJSRilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTlNTKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DU0xMKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVJSRilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTlNTKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUkVURU5DT0VTICsgJ19sYWJlbCd9YCwgaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogYW55W10gPSBbXTtcblxuICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9pbnNzJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1NcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFULFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfcmF0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUixcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3NlbmFyJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfdG90YWwnLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMICsgJ19sYWJlbCd9YCwgaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmdW5ydXJhbFRvdGFsID0gaXRlbS5maW5kKGl0ZW0gPT4gaXRlbS5uYW1lID09PSBcIkZVTlJVUkFMX1RPVEFMXCIpO1xuICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUltcG9ydGFjb2VzKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IGFueVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX1NBSURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMgKyAnX2xhYmVsJ31gLCBpdGVtXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJc3MoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlzcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlzcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19DT01QUkE6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19WRU5EQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JU1MpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX1NBSURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklTUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklTUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoeyBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTUyArICdfbGFiZWwnfWAsIGl0ZW0gfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFQaXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVBpcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVBpcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUilcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3BpcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJUylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19mYXR1cmFtZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7IGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUElTICsgJ19sYWJlbCd9YCwgaXRlbSB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNvZmlucygpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ29maW5zID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ29maW5zID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IGFueVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZG9jdW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19DT01QUkE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX1NBSURBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19WRU5EQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DT0ZJTlMgKyAnX2xhYmVsJ31gLCBpdGVtXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlwaSgpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXBpID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXBpID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IGFueVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZG9jdW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSSlcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfb3V0cmFzX2Rlc3Blc2FzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19DT01QUkE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSSlcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGV2b2x2aWRvKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX3ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSSlcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHsgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JUEkgKyAnX2xhYmVsJ31gLCBpdGVtIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3M7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWw7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfRkFUVVJBTUVOVE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW1wb3N0b0NhbGN1bGFkbyhpbXBvc3RvOiBFbnVtVGlwb1RyaWJ1dG8pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByb3VuZEltcG9zdG8obnVtYmVyOiBhbnksIGRlY2ltYWxzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucG93KDEwLCBOdW1iZXIoZGVjaW1hbHMpICsgMSk7XG4gICAgICAgIHJldHVybiAoTnVtYmVyKG51bWJlcikgKyAoMSAvIHgpKS50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGFyVmFsb3IodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcyAmJiB0aGlzLmdydXBvcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5ncnVwb3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKFxuICAgICAgICAgICAgICAgIGdydXBvID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQ6IGFueSkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5mb3JtR3JvdXAudmFsdWVbaXRlbV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSAmJiB0aGlzLmltcG9zdG9DYWxjdWxhZG8odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG8gIT0gdW5kZWZpbmVkKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YSAhPSB1bmRlZmluZWQpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnNpdHVhY2FvVHJpYnV0YXJpYSA9PSB1bmRlZmluZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnNpdHVhY2FvVHJpYnV0YXJpYS52YWx1ZSA9PSB1bmRlZmluZWQpKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG8udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID0gaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYmFzZSAhPSB1bmRlZmluZWQpICYmIChhbGlxdW90YSAhPSB1bmRlZmluZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUodGhpcy5yb3VuZEltcG9zdG8oKChiYXNlICogYWxpcXVvdGEpIC8gMTAwKSwgMikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWEudmFsdWUuY29kU3RyICE9ICc1MScpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9IGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsby52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPSBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGEudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiYXNlICE9IHVuZGVmaW5lZCkgJiYgKGFsaXF1b3RhICE9IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZSh0aGlzLnJvdW5kSW1wb3N0bygoKGJhc2UgKiBhbGlxdW90YSkgLyAxMDApLCAyKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID0gaXQuZm9ybUdyb3VwLmdldChcImJhc2VDYWxjdWxvXCIpLnZhbHVlID8/IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID0gaXQuZm9ybUdyb3VwLmdldChcImFsaXF1b3RhXCIpLnZhbHVlID8/IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoTWF0aC5mbG9vcigoYmFzZSAqIGFsaXF1b3RhKSkgLyAxMDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0cmlidXRvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG8udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID0gaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYmFzZSAhPSB1bmRlZmluZWQpICYmIChhbGlxdW90YSAhPSB1bmRlZmluZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUodGhpcy5yb3VuZEltcG9zdG8oKChiYXNlICogYWxpcXVvdGEpIC8gMTAwKSwgMikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3N0b3MgPSBbJ0ZVTlJVUkFMX0lOU1MnLCAnRlVOUlVSQUxfUkFUJywgJ0ZVTlJVUkFMX1NFTkFSJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRyb2xlRnVucnVyYWwgPSB0aGlzLmNhbGN1bGFyRnVucnVyYWxUb3RhbChpbXBvc3RvcywgZ3J1cG8pXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbGVGdW5ydXJhbC5iYXNlRGlmZXJlbnRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiBcIndhcm5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlcnB4LnRyaWJ1dG9zLmVycm9yX2Jhc2VfZnVucnVyYWxfZGlmZXJlbnRlX3N1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfZGV0YWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBncnVwby5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IFwiRlVOUlVSQUxfVE9UQUxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5ydXJhbFRvdGFsLmZvcm1Hcm91cC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG86IGNvbnRyb2xlRnVucnVyYWwuZnVuQmFzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbG9yOiBjb250cm9sZUZ1bnJ1cmFsLmZ1blZhbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGFyRnVucnVyYWxUb3RhbChpbXBvc3RvczogYW55LCBncnVwbykge1xuICAgICAgICBsZXQgdmFsb3JlcyA9IHtcbiAgICAgICAgICAgIGZ1bkJhc2U6IDAsXG4gICAgICAgICAgICBmdW5WYWxvcjogMCxcbiAgICAgICAgICAgIGJhc2VEaWZlcmVudGU6IGZhbHNlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpbXBvc3Rvcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsSW1wb3N0byA9IGdydXBvLml0ZW0uZmluZChpdGVtID0+IGl0ZW0ubmFtZSA9PT0gaW1wb3N0b3NbaW5kZXhdKTtcblxuICAgICAgICAgICAgaWYgKGZ1bnJ1cmFsSW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbG9yZXMuZnVuQmFzZSA+IDAgJiYgdmFsb3Jlcy5mdW5CYXNlICE9IGZ1bnJ1cmFsSW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlRGlmZXJlbnRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWxvcmVzLmZ1bkJhc2UgPSBmdW5ydXJhbEltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvID4gdmFsb3Jlcy5mdW5CYXNlID8gZnVucnVyYWxJbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3VsbyA6IHZhbG9yZXMuZnVuQmFzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZ1bnJ1cmFsSW1wb3N0by5mb3JtR3JvdXAudmFsdWUudmFsb3IgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFsb3Jlcy5mdW5WYWxvciA9IE51bWJlcih0aGlzLnJvdW5kSW1wb3N0byhOdW1iZXIodmFsb3Jlcy5mdW5WYWxvcikgKyBOdW1iZXIoZnVucnVyYWxJbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS52YWxvciksIDIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxvcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDYW1wb3MoY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSwgdHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGNvbnN0IHJldG9ybm86IGFueSA9IHt9O1xuICAgICAgICBjb25zdCBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdID0gW107XG4gICAgICAgIGxldCBmb3JtR3JvdXA6IGFueSA9IHt9O1xuICAgICAgICBsZXQgbW92aW1lbnRvID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRvID09IEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREEgfHxcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRvID09IEVudW1UaXBvRG9jdW1lbnRvLlBFRElET19DT01QUkEgfHxcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRvID09IEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREFfQ09OVFJPTEFET1JJQSlcbiAgICAgICAgICAgIG1vdmltZW50byA9ICdWRU5UUkFEQSc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1vdmltZW50byA9ICdWU0FJREEnO1xuXG4gICAgICAgIGNhbXBvcy5tYXAoaXQgPT4ge1xuXG4gICAgICAgICAgICBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3Vsbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBiYXNlQ2FsY3VsbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSldXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3VsbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWxBbGlxdW90YSh0cmlidXRvKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogeyBjdXJyZW5jeVN5bWJvbDogJyUnLCBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUludGVybmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhSW50ZXJuYURlc3Rpbm86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YUludGVybmFEZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9pbnRlcm5hX2Rlc3Rpbm9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogeyBjdXJyZW5jeVN5bWJvbDogJyUnLCBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5jYWxjdWxhclZhbG9yKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvcklzZW50YXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJc2VudGFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2lzZW50YXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yT3V0cmFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvck91dHJhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3Jfb3V0cmFzX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgc2l0dWFjYW9UcmlidXRhcmlhOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWFyY2hHcmlkRmllbGRzITogRm9ybUZpZWxkW107XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRvID09PSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQV9DT05UUk9MQURPUklBKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyaWRGaWVsZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZFN0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNTdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfcGlzX2NvZmlucycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuUElTX0NPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXBpJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2ljbXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2lzcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3Zfc2FpZGEnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZTQUlEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9lbnRyYWRhJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WRU5UUkFEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9hbWJvcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkFNQk9TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW3sgZmllbGQ6ICdleGNsdWlkbycsIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLCB2YWx1ZXM6IFsnZmFsc2UnXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICd0aXBJbXAnLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbdGhpcy5maWx0ZXJCeUltcG9zdG8odHJpYnV0byldIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ3RpcE9wZScsIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLCB2YWx1ZXM6IFttb3ZpbWVudG8sICdWQU1CT1MnXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICdzaXR1YWNhbycsIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLCB2YWx1ZXM6IFsnVkFUSVZPJ10gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnU2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19zaXR1YWNhb190cmlidXRhcmlhX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHsgLi4uZm9ybUdyb3VwLCBlbnF1YWRyYW1lbnRvSXBpOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN2VxaUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnZTAyN2VxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnZW5xdWFkcmFtZW50b0lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW3sgZmllbGQ6ICdzaXR1YWNhbycsIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLCB2YWx1ZXM6IFsnVkFUSVZPJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGZpZWxkOiAnZXhjbHVpZG8nLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbJ2ZhbHNlJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2VucXVhZHJhbWVudG9faXBpX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFJlZHVjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfcmVkdWNhb19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB7IGN1cnJlbmN5U3ltYm9sOiAnJScsIGRlY2ltYWxTZXBhcmF0b3I6ICcsJywgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsIHsgdmFsdWU6IDEwMCB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfbXZhX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJywgeyB2YWx1ZTogMTAwMCB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIGRlc29uZXJhY2FvSWNtczogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdNb3Rpdm9EZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rlc29uZXJhY2FvSWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfZGVzb25lcmFjYW9faWNtc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMCcpLCB2YWx1ZTogRW51bU1vdERlcy5WMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMScpLCB2YWx1ZTogRW51bU1vdERlcy5WMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMicpLCB2YWx1ZTogRW51bU1vdERlcy5WMiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMycpLCB2YWx1ZTogRW51bU1vdERlcy5WMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNCcpLCB2YWx1ZTogRW51bU1vdERlcy5WNCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNScpLCB2YWx1ZTogRW51bU1vdERlcy5WNSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNicpLCB2YWx1ZTogRW51bU1vdERlcy5WNiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNycpLCB2YWx1ZTogRW51bU1vdERlcy5WNyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOCcpLCB2YWx1ZTogRW51bU1vdERlcy5WOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOScpLCB2YWx1ZTogRW51bU1vdERlcy5WOSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTAnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjEwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMScpLCB2YWx1ZTogRW51bU1vdERlcy5WMTEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEyJyksIHZhbHVlOiBFbnVtTW90RGVzLlYxMiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTYnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjE2IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl85MCcpLCB2YWx1ZTogRW51bU1vdERlcy5WOTAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfZGVzb25lcmFjYW9faWNtc19wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5PcmlnZW0pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgb3JpZ2VtOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMCcpLCB2YWx1ZTogRW51bU9yaU1lci5WMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMScpLCB2YWx1ZTogRW51bU9yaU1lci5WMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMicpLCB2YWx1ZTogRW51bU9yaU1lci5WMiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMycpLCB2YWx1ZTogRW51bU9yaU1lci5WMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNCcpLCB2YWx1ZTogRW51bU9yaU1lci5WNCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNScpLCB2YWx1ZTogRW51bU9yaU1lci5WNSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNicpLCB2YWx1ZTogRW51bU9yaU1lci5WNiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNycpLCB2YWx1ZTogRW51bU9yaU1lci5WNyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfOCcpLCB2YWx1ZTogRW51bU9yaU1lci5WOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgYWxpcXVvdGE6IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKV0gfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxEaWZlcmltZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfZGlmZXJpbWVudG9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogeyBjdXJyZW5jeVN5bWJvbDogJyUnLCBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLCB7IHZhbHVlOiAxMDAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfc3Vwb3J0YWRvX2NvbnN1bWlkb3JfZmluYWxfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogeyBjdXJyZW5jeVN5bWJvbDogJyUnLCBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLCB7IHZhbHVlOiAxMDAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JSZWNvbGhpZG9JY21zU3Q6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JSZWNvbGhpZG9JY21zU3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX3JlY29saGlkb19wZWxvX3N1YnN0aXR1dG9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySWNtc1N0UmV0aWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvckljbXNTdFJldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2ljbXNfc3RfcmV0aWRvX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDEzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb2RhbGlkYWRlQkMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgbW9kYWxpZGFkZUJDOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vZGFsaWRhZGVCYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbW9kYWxpZGFkZUJDJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMCcpLCB2YWx1ZTogRW51bU1vZEJjLlYwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8xJyksIHZhbHVlOiBFbnVtTW9kQmMuVjEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzInKSwgdmFsdWU6IEVudW1Nb2RCYy5WMiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMycpLCB2YWx1ZTogRW51bU1vZEJjLlYzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbW9kYWxpZGFkZV9iY19wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21vZGFsaWRhZGVfYmNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgbmF0dXJlemFSZWNlaXRhOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubmF0dXJlemFSZWNlaXRhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICduYXR1cmV6YVJlY2VpdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdOYXR1cmV6YVJlY2VpdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX25hdHVyZXphX3JlY2VpdGFfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsIG9ic2VydmFjYW86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKVxuICAgICAgICAgICAgICAgICAgICBdKV1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnT2JzZXJ2YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb2JzZXJ2YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfb2JzZXJ2YWNhb19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCwgdmFsb3JEZWR1Y2FvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgIF0pXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yRGVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfZGVkdWNhb19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aXZvQXF1aXNpY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbmRpY2F0aXZvQXF1aXNpY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRpY2F0aXZvQXF1aXNpY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19pbmRpY2F0aXZvX2FxdWlzaWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCwgY29kaWdvQXJyZWNhZGFjYW86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNilcbiAgICAgICAgICAgICAgICAgICAgXSldXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NvZGlnb0FycmVjYWRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX2FycmVjYWRhY2FvX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsIGNvZGlnb1RyaWJ1dGFjYW86IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSlcbiAgICAgICAgICAgICAgICAgICAgXSldXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NvZGlnb1RyaWJ1dGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZGlnb1RyaWJ1dGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb190cmlidXRhY2FvX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIEltcG9zdG9OYW9SZWN1cGVyYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfaW1wb3N0b19uYW9fcmVjdXBlcmFkbycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgYmFzZUNhbGN1bG9DcmVkaXRvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfV0gfTtcbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvQ3JlZGl0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xJyksIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMicpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzMnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl80JyksIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNScpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzYnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjYgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl83JyksIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY3IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfOCcpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzknKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMCcpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMScpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMicpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMycpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNCcpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNScpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNicpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTYgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNycpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xOCcpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fcGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2NhbGN1bG9fY3JlZGl0b19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHsgLi4uZm9ybUdyb3VwLCByZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19jdW11bGF0aXZvJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucy5DVU1VTEFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX25hb19jdW11bGF0aXZvJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucy5OQU9fQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVnaW1lX3RyaWJ1dGFyaW9fcGlzX2NvZmluc19wbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnN1Z2VzdG9lcykge1xuICAgICAgICAgICAgdGhpcy5zdWdlc3RvZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHN1Z2VzdGFvID0+IHN1Z2VzdGFvLnRpcG9UcmlidXRvID09PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKHN1Z2VzdGFvID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAuZW50cmllcyhzdWdlc3RhbylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoYXRyaWJ1dG9zID0+IGF0cmlidXRvc1swXSAhPT0gJ3RpcG9UcmlidXRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGF0cmlidXRvcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwW2F0cmlidXRvc1swXV1bMF0udmFsdWUgPSBhdHJpYnV0b3NbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1Hcm91cCA9IHsgLi4uZm9ybUdyb3VwLCBpbXBvc3RvTWFudWFsOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0gfTtcbiAgICAgICAgcmV0b3Juby5mb3JtRmllbGQgPSBmb3JtRmllbGQ7XG4gICAgICAgIHJldG9ybm8uZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAuLi5mb3JtR3JvdXBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJldG9ybm87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdWJzKGl0ZW06IEl0ZW0pIHtcbiAgICAgICAgT2JqZWN0XG4gICAgICAgICAgICAuZW50cmllcyhpdGVtLmZvcm1Hcm91cC5jb250cm9scylcbiAgICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtjb250cm9sTmFtZSwgY29udHJvbE9iamVjdF0gPSBjb250cm9sO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sTmFtZSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmICFpdGVtLmZvcm1Hcm91cC5jb250cm9scy5pbXBvc3RvTWFudWFsLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gY29udHJvbE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb250cm9sT2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodmFsID0+IHRoaXMuZ2V0Rm9ybUNvbnRyb2xTdWJzY3JpcHRpb25WYWx1ZSh2YWwsIGZvcm1GaWVsZCBpbnN0YW5jZW9mIExvb2t1cEZpZWxkLCBgJHtpdGVtLm5hbWV9XyR7Zm9ybUZpZWxkLm5hbWV9YCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWw6IExvb2t1cFJlcXVlc3RWYWxpZGF0b3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbC5jYW5jZWxTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuY29udHJvbHMuaW1wb3N0b01hbnVhbC5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEltcG9zdG9NYW51YWxHcm91cCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xTdWJzY3JpcHRpb25WYWx1ZShmaWVsZFZhbHVlOiBhbnksIGlzRmllbGRMb29rdXA6IGJvb2xlYW4sIGZpZWxkSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb29rdXBSZXF1ZXN0VmFsaWRhdG9yPiB7XG4gICAgICAgIGlmIChpc0ZpZWxkTG9va3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBVdGlscy5nZXRWYWxpZGF0ZWRSZXBlYXRlZExvb2t1cFZhbHVlcyhmaWVsZFZhbHVlLCBmaWVsZElkZW50aWZpZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZih7XG4gICAgICAgICAgICBjYW5jZWxTdWJzY3JpcHRpb246IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGZpZWxkVmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9yYWdlVmFsdWVzT25Mb29rdXBWYWxpZGF0b3IoaXRlbTogSXRlbSk6IHZvaWQge1xuICAgICAgICBPYmplY3RcbiAgICAgICAgICAgIC5lbnRyaWVzKGl0ZW0uZm9ybUdyb3VwLmNvbnRyb2xzKVxuICAgICAgICAgICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2NvbnRyb2xOYW1lLCBjb250cm9sT2JqZWN0XSA9IGNvbnRyb2w7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUZpZWxkID0gaXRlbS5mb3JtRmllbGQuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSBjb250cm9sTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sU3Vic2NyaXB0aW9uVmFsdWUoY29udHJvbE9iamVjdC52YWx1ZSwgZm9ybUZpZWxkIGluc3RhbmNlb2YgTG9va3VwRmllbGQsIGAke2l0ZW0ubmFtZX1fJHtmb3JtRmllbGQubmFtZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEltcG9zdG9NYW51YWxHcm91cCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zICYmIHRoaXMuZ3J1cG9zICE9IHVuZGVmaW5lZCAmJiB0aGlzLmdydXBvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0OiBhbnkpID0+IChpdC5ncnVwbyA9PSAnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUNNUyArICdfbGFiZWwnKVxuICAgICAgICAgICAgICAgICAgICB8fCAoaXQuZ3J1cG8gPT0gJ2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklDTVNfU1QgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5QSVMgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DT0ZJTlMgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5SRVRFTkNPRVMgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5GVU5SVVJBTCArICdfbGFiZWwnKVxuICAgICAgICAgICAgICAgICAgICB8fCAoaXQuZ3J1cG8gPT0gJ2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTUyArICdfbGFiZWwnKVxuICAgICAgICAgICAgICAgICAgICB8fCAoaXQuZ3J1cG8gPT0gJ2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnKVxuICAgICAgICAgICAgICAgICAgICB8fCAoaXQuZ3J1cG8gPT0gJ2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklQSSArICdfbGFiZWwnKSlcbiAgICAgICAgICAgICAgICAubWFwKGdydXBvID0+IGdydXBvLml0ZW0ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5mb3JtR3JvdXAuY29udHJvbHMuaW1wb3N0b01hbnVhbC52YWx1ZSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG8uaXRlbS5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuaW1wb3N0b01hbnVhbC5wYXRjaFZhbHVlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJCeUltcG9zdG8oaW1wb3N0bzogRW51bVRpcG9UcmlidXRvKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGltcG9zdG8pIHtcbiAgICAgICAgICAgIHN3aXRjaCAoaW1wb3N0bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQSVNfQ09GSU5TJztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSVBJJztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0lDTVMnO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQSVNfQ09GSU5TJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1BJU19DT0ZJTlMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAodHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PIHx8IHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJlc3RhZHVhbF9sYWJlbCcpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9sYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUcmFuc2xhdGVCdXR0b24odmFsdWU6IGFueSkge1xuICAgICAgICBsZXQgdHJhbnNsYXRlID0gJy5idXR0b25fbWVtb3JpYV9jYWxjdWxvX2VtcHR5X2xhYmVsJztcbiAgICAgICAgaWYgKHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50OiBhbnkpID0+IHsgcmV0dXJuIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gdmFsdWUgJiYgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWQgfSkpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXhMYWJlbCArIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW52YWxpZChncm91cDoge1xuICAgICAgICBncnVwbzogc3RyaW5nO1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lml0ZW0/LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LmZvcm1Hcm91cD8uaW52YWxpZCk7XG4gICAgfVxufVxuIl19
3134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCw2Q0FBNkMsRUFDN0MsYUFBYSxFQUNiLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUN4QixNQUFNLCtDQUErQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9B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QixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUM7b0JBQzVFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtvQkFDcEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDckMsT0FBTyxFQUFFO3dCQUNMLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQzNGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQzNGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQzNGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQzNGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7cUJBQzlGO29CQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtREFBbUQsQ0FBQztvQkFDeEYsU0FBUyxFQUFFLElBQUk7b0JBQ2YsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsUUFBUSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxLQUFLOzRCQUNOLE9BQU87d0JBQ1gsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMseUNBQXlDLENBQUM7cUJBQzlFLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7aUJBQ3BELENBQUMsQ0FDTCxDQUFDO2FBQ0w7aUJBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtnQkFDNUMsU0FBUyxtQ0FBUSxTQUFTLEtBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztnQkFFdEcsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLFFBQVE7b0JBQ3RCLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtvQkFDcEIsT0FBTyxFQUFFO3dCQUNMLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3pGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7cUJBQzVGO29CQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztvQkFDbkYsU0FBUyxFQUFFLElBQUk7b0JBQ2YsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDO29CQUN2RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO29CQUNyQyxRQUFRLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLEtBQUs7NEJBQ04sT0FBTzt3QkFDWCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQztxQkFDOUUsQ0FBQztvQkFDRixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztpQkFDcEQsQ0FBQyxDQUNMLENBQUM7YUFDTDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMscUJBQXFCLEVBQUU7Z0JBQzNELFNBQVMsbUNBQVEsU0FBUyxLQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQztnQkFFM0gsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLHVCQUF1QjtvQkFDckMsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtREFBbUQsQ0FBQztvQkFDbEYsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLO29CQUNyQixTQUFTLEVBQUUsQ0FBQztvQkFDWixLQUFLLEVBQUUsQ0FBQztvQkFDUixtQkFBbUIsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtvQkFDNUYsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzt3QkFDakYsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO3FCQUM5RSxDQUFDO29CQUNGLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2lCQUNwRCxDQUFDLENBQ0wsQ0FBQzthQUNMO2lCQUFNLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxrQ0FBa0MsRUFBRTtnQkFDeEUsU0FBUyxtQ0FDRixTQUFTLEtBQ1osa0NBQWtDLEVBQUU7d0JBQ2hDOzRCQUNJLEtBQUssRUFBRSxTQUFTOzRCQUNoQixRQUFRLEVBQUUsS0FBSzt5QkFDbEIsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUMvQyxHQUNKLENBQUM7Z0JBRUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLG9DQUFvQztvQkFDbEQsSUFBSSxFQUFFLG9DQUFvQztvQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtFQUFrRSxDQUFDO29CQUNqRyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUs7b0JBQ3JCLFNBQVMsRUFBRSxDQUFDO29CQUNaLEtBQUssRUFBRSxDQUFDO29CQUNSLG1CQUFtQixFQUFFLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO29CQUM1RixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO29CQUNyQyxNQUFNLEVBQUUsR0FBRyxFQUFFO3dCQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztvQkFDRCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzt3QkFDbEIsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dCQUNqRixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMseUNBQXlDLENBQUM7cUJBQzlFLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7aUJBQ3BELENBQUMsQ0FDTCxDQUFDO2FBQ0w7aUJBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLGdCQUFnQixDQUFDLDRCQUE0QixFQUFFO2dCQUNsRSxTQUFTLG1DQUNGLFNBQVMsS0FDWixvQkFBb0IsRUFBRTt3QkFDbEI7NEJBQ0ksS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxLQUFLO3lCQUNsQixFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztxQkFDNUQsR0FDSixDQUFDO2dCQUVGLFNBQVMsQ0FBQyxJQUFJLENBQ1YsSUFBSSxTQUFTLENBQUM7b0JBQ1YsRUFBRSxFQUFFLE9BQU8sR0FBRyw4QkFBOEI7b0JBQzVDLElBQUksRUFBRSxzQkFBc0I7b0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0REFBNEQsQ0FBQztvQkFDM0YsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLO29CQUNyQixTQUFTLEVBQUUsRUFBRTtvQkFDYixLQUFLLEVBQUUsQ0FBQztvQkFDUixtQkFBbUIsRUFBRSxJQUFJLENBQUMscUJBQXFCO29CQUMvQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO29CQUNyQyxNQUFNLEVBQUUsR0FBRyxFQUFFO3dCQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztvQkFDRCxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzt3QkFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO3FCQUM5RSxDQUFDO29CQUNGLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2lCQUNwRCxDQUFDLENBQ0wsQ0FBQzthQUNMO2lCQUFNLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDdkQsU0FBUyxtQ0FDRixTQUFTLEtBQ1osaUJBQWlCLEVBQUU7d0JBQ2Y7NEJBQ0ksS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxLQUFLO3lCQUNsQixFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7cUJBQzFELEdBQ0osQ0FBQztnQkFFRixTQUFTLENBQUMsSUFBSSxDQUNWLElBQUksU0FBUyxDQUFDO29CQUNWLEVBQUUsRUFBRSxPQUFPLEdBQUcsbUJBQW1CO29CQUNqQyxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaURBQWlELENBQUM7b0JBQ2hGLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSztvQkFDckIsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtvQkFDL0MsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQztxQkFDOUUsQ0FBQztvQkFDRixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztpQkFDcEQsQ0FBQyxDQUNMLENBQUM7YUFDTDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMsWUFBWSxFQUFFO2dCQUNsRCxTQUFTLG1DQUFRLFNBQVMsS0FBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDO2dCQUU1RyxTQUFTLENBQUMsSUFBSSxDQUNWLElBQUksU0FBUyxDQUFDO29CQUNWLEVBQUUsRUFBRSxPQUFPLEdBQUcsY0FBYztvQkFDNUIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtvQkFDcEIsT0FBTyxFQUFFO3dCQUNMLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlGLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7cUJBQ2pHO29CQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnREFBZ0QsQ0FBQztvQkFDckYsU0FBUyxFQUFFLElBQUk7b0JBQ2YsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDO29CQUN6RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO29CQUNyQyxRQUFRLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLEtBQUs7NEJBQ04sT0FBTzt3QkFDWCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQztxQkFDOUUsQ0FBQztvQkFDRixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztpQkFDcEQsQ0FBQyxDQUNMLENBQUM7YUFDTDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsZUFBZSxFQUFFO2dCQUN0RCxTQUFTLG1DQUFRLFNBQVMsS0FBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRSxDQUFDO2dCQUUvRyxTQUFTLENBQUMsSUFBSSxDQUNWLElBQUksU0FBUyxpQ0FDTixJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDO29CQUN2QyxRQUFRLEVBQUUsS0FBSztvQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsU0FBUyxFQUFFLGlCQUFpQjtvQkFDNUIsVUFBVSxFQUFFO3dCQUNSLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO3FCQUNoQztvQkFDRCxVQUFVLEVBQUU7d0JBQ1IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7cUJBQ2hDO2lCQUNKLENBQUMsS0FDRixNQUFNLEVBQUUsR0FBRyxFQUFFO3dCQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQyxFQUNELEVBQUUsRUFBRSxPQUFPLEdBQUcsaUJBQWlCLEVBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxFQUM1RSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQ3JDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQ3ZCLENBQ0wsQ0FBQzthQUNMO2lCQUFNLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pELFNBQVMsbUNBQ0YsU0FBUyxLQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQzs0QkFDakYsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7eUJBQzVCLENBQUMsQ0FBQyxHQUNOLENBQUM7Z0JBRUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLFlBQVk7b0JBQzFCLElBQUksRUFBRSxZQUFZO29CQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUM7b0JBQ3RFLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTTtvQkFDdEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQztxQkFDakYsQ0FBQztvQkFDRixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztpQkFDeEIsQ0FBQyxDQUNMLENBQUM7YUFDTDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsWUFBWSxFQUFFO2dCQUNuRCxTQUFTLG1DQUNGLFNBQVMsS0FBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUM7NEJBQ25GLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7eUJBQ25DLENBQUMsQ0FBQyxHQUNOLENBQUM7Z0JBRUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLGNBQWM7b0JBQzVCLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUM7b0JBQ3pFLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSztvQkFDckIsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtvQkFDL0MsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUs7aUJBQ3hCLENBQUMsQ0FDTCxDQUFDO2FBQ0w7aUJBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFO2dCQUMxRCxTQUFTLG1DQUNGLFNBQVMsS0FDWixtQkFBbUIsRUFBRTt3QkFDakIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQ2hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3FCQUN6QixHQUNKLENBQUM7Z0JBRUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLHFCQUFxQjtvQkFDbkMsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN6QixpREFBaUQsQ0FDcEQ7b0JBQ0QsU0FBUyxFQUFFLElBQUk7b0JBQ2YsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO29CQUNwQixPQUFPLEVBQUU7d0JBQ0w7NEJBQ0ksS0FBSyxFQUFFLCtCQUErQixDQUFDLEVBQUU7NEJBQ3pDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDekIscURBQXFELENBQ3hEO3lCQUNKO3dCQUNEOzRCQUNJLEtBQUssRUFBRSwrQkFBK0IsQ0FBQyxFQUFFOzRCQUN6QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3pCLHFEQUFxRCxDQUN4RDt5QkFDSjt3QkFDRDs0QkFDSSxLQUFLLEVBQUUsK0JBQStCLENBQUMsRUFBRTs0QkFDekMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN6QixxREFBcUQsQ0FDeEQ7eUJBQ0o7d0JBQ0Q7NEJBQ0ksS0FBSyxFQUFFLCtCQUErQixDQUFDLEVBQUU7NEJBQ3pDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDekIscURBQXFELENBQ3hEO3lCQUNKO3dCQUNEOzRCQUNJLEtBQUssRUFBRSwrQkFBK0IsQ0FBQyxFQUFFOzRCQUN6QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3pCLHFEQUFxRCxDQUN4RDt5QkFDSjt3QkFDRDs0QkFDSSxLQUFLLEVBQUUsK0JBQStCLENBQUMsRUFBRTs0QkFDekMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN6QixxREFBcUQsQ0FDeEQ7eUJBQ0o7d0JBQ0Q7NEJBQ0ksS0FBSyxFQUFFLCtCQUErQixDQUFDLEVBQUU7NEJBQ3pDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDekIscURBQXFELENBQ3hEO3lCQUNKO3FCQUNKO29CQUNELElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ3JDLFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ1gsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxDQUFDO2lCQUNKLENBQUMsQ0FDTCxDQUFDO2FBQ0w7aUJBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFO2dCQUN4RCxTQUFTLG1DQUNGLFNBQVMsS0FBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQzs0QkFDeEYsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7eUJBQzFCLENBQUMsQ0FBQyxHQUNOLENBQUM7Z0JBRUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLG1CQUFtQjtvQkFDakMsSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLCtDQUErQyxDQUFDO29CQUM5RSxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07b0JBQ3RCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ3JDLE1BQU0sRUFBRSxHQUFHLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUM7cUJBQ2pGLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUs7aUJBQ3hCLENBQUMsQ0FDTCxDQUFDO2FBQ0w7aUJBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFO2dCQUN2RCxTQUFTLG1DQUNGLFNBQVMsS0FBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQzs0QkFDdkYsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7eUJBQzFCLENBQUMsQ0FBQyxHQUNOLENBQUM7Z0JBRUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLGtCQUFrQjtvQkFDaEMsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDhDQUE4QyxDQUFDO29CQUM3RSxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07b0JBQ3RCLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ3JDLE1BQU0sRUFBRSxHQUFHLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUM7cUJBQ2pGLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUs7aUJBQ3hCLENBQUMsQ0FDTCxDQUFDO2FBQ0w7aUJBQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFO2dCQUMxRCxTQUFTLG1DQUNGLFNBQVMsS0FDWixvQkFBb0IsRUFBRTt3QkFDbEI7NEJBQ0ksS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxLQUFLO3lCQUNsQixFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztxQkFDNUQsR0FDSixDQUFDO2dCQUVGLFNBQVMsQ0FBQyxJQUFJLENBQ1YsSUFBSSxTQUFTLENBQUM7b0JBQ1YsRUFBRSxFQUFFLE9BQU8sR0FBRyxzQkFBc0I7b0JBQ3BDLElBQUksRUFBRSxzQkFBc0I7b0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQztvQkFDNUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLO29CQUNyQixTQUFTLEVBQUUsRUFBRTtvQkFDYixLQUFLLEVBQUUsQ0FBQztvQkFDUixtQkFBbUIsRUFBRSxJQUFJLENBQUMscUJBQXFCO29CQUMvQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO29CQUNyQyxNQUFNLEVBQUUsR0FBRyxFQUFFO3dCQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztpQkFDSixDQUFDLENBQ0wsQ0FBQzthQUNMO2lCQUFNLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDeEQsU0FBUyxtQ0FBUSxTQUFTLEtBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUUsQ0FBQztnQkFDMUYsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLG9CQUFvQjtvQkFDbEMsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO29CQUNwQixPQUFPLEVBQUU7d0JBQ0wsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFO3dCQUN0RyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRTt3QkFDdEcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFO3dCQUN0RyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRTt3QkFDdEcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFO3dCQUN0RyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRTt3QkFDdEcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO3dCQUN4RyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7d0JBQ3hHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRTt3QkFDeEcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO3dCQUN4RyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7d0JBQ3hHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRTt3QkFDeEcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO3dCQUN4RyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7d0JBQ3hHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtxQkFDM0c7b0JBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxDQUFDO29CQUM1RixTQUFTLEVBQUUsSUFBSTtvQkFDZixRQUFRLEVBQUUsS0FBSztvQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaURBQWlELENBQUM7b0JBQ2hGLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ3JDLFFBQVEsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO3dCQUNyQixJQUFJLENBQUMsS0FBSzs0QkFDTixPQUFPO3dCQUNYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztvQkFDRCxRQUFRLEVBQUUsS0FBSztpQkFDbEIsQ0FBQyxDQUNMLENBQUM7YUFDTDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMseUJBQXlCLEVBQUU7Z0JBQ2hFLFNBQVMsbUNBQVEsU0FBUyxLQUFFLHlCQUF5QixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUUsQ0FBQztnQkFFekgsU0FBUyxDQUFDLElBQUksQ0FDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixFQUFFLEVBQUUsT0FBTyxHQUFHLDJCQUEyQjtvQkFDekMsSUFBSSxFQUFFLDJCQUEyQjtvQkFDakMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO29CQUNwQixPQUFPLEVBQUU7d0JBQ0w7NEJBQ0ksS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFEQUFxRCxDQUFDOzRCQUNwRixLQUFLLEVBQUUsNkJBQTZCLENBQUMsVUFBVTt5QkFDbEQ7d0JBQ0Q7NEJBQ0ksS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHlEQUF5RCxDQUFDOzRCQUN4RixLQUFLLEVBQUUsNkJBQTZCLENBQUMsY0FBYzt5QkFDdEQ7cUJBQ0o7b0JBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLCtEQUErRCxDQUFDO29CQUNwRyxTQUFTLEVBQUUsSUFBSTtvQkFDZixRQUFRLEVBQUUsS0FBSztvQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMseURBQXlELENBQUM7b0JBQ3hGLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ3JDLFFBQVEsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO3dCQUNyQixJQUFJLENBQUMsS0FBSzs0QkFDTixPQUFPO3dCQUNYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztvQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztpQkFDeEIsQ0FBQyxDQUNMLENBQUM7YUFDTDtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMsMEJBQTBCLEVBQUU7Z0JBQ2hFLFNBQVMsbUNBQVEsU0FBUyxLQUFFLDBCQUEwQixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDO2dCQUV4SSxTQUFTLENBQUMsSUFBSSxDQUNWLElBQUksU0FBUyxDQUFDO29CQUNWLEVBQUUsRUFBRSxPQUFPLEdBQUcsNEJBQTRCO29CQUMxQyxJQUFJLEVBQUUsNEJBQTRCO29CQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMseURBQXlELENBQUM7b0JBQ3hGLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSztvQkFDckIsU0FBUyxFQUFFLENBQUM7b0JBQ1osS0FBSyxFQUFFLENBQUM7b0JBQ1IsbUJBQW1CLEVBQUUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7b0JBQzVGLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ3JDLE1BQU0sRUFBRSxHQUFHLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUNsQixHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7cUJBQ3BGLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7aUJBQ3BELENBQUMsQ0FDTCxDQUFDO2FBQ0w7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUztpQkFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQztpQkFDcEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNoQixNQUFNO3FCQUNELE9BQU8sQ0FBQyxRQUFRLENBQUM7cUJBQ2pCLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFhLENBQUM7cUJBQ25ELE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDakIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7U0FDVjtRQUVELFNBQVMsbUNBQVEsU0FBUyxLQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFFLENBQUM7UUFDN0csT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDOUIsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssbUJBQ25DLFNBQVMsRUFDZCxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFVO1FBQ3RCLE1BQU07YUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7YUFDaEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2YsTUFBTSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDN0MsSUFBSSxXQUFXLEtBQUssZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtnQkFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO2dCQUMzRSxhQUFhO3FCQUNSLFlBQVk7cUJBQ1osSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxZQUFZLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFDL0gsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FDaEM7cUJBQ0EsU0FBUyxDQUFDLENBQUMsR0FBMkIsRUFBRSxFQUFFO29CQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFO3dCQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN2RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztxQkFDaEM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDVjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLCtCQUErQixDQUFDLFVBQWUsRUFBRSxhQUFzQixFQUFFLGVBQXVCO1FBQ3BHLElBQUksYUFBYSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN6RjtRQUNELE9BQU8sRUFBRSxDQUFDO1lBQ04sa0JBQWtCLEVBQUUsS0FBSztZQUN6QixLQUFLLEVBQUUsVUFBVTtTQUNwQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sOEJBQThCLENBQUMsSUFBVTtRQUM3QyxNQUFNO2FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO2FBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNmLE1BQU0sQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztZQUMzRSxJQUFJLFNBQVMsRUFBRTtnQkFDWCxJQUFJLENBQUMsK0JBQStCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLFlBQVksV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNqSTtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxNQUFNO2lCQUNOLE1BQU0sQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLG1DQUFtQyxHQUFHLGdCQUFnQixDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7bUJBQ2xHLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxtQ0FBbUMsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO21CQUN2RixDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksbUNBQW1DLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQzttQkFDbkYsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLG1DQUFtQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7bUJBQ3RGLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxtQ0FBbUMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO21CQUN6RixDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksbUNBQW1DLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzttQkFDeEYsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLG1DQUFtQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7bUJBQ25GLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxtQ0FBbUMsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO21CQUMvRixDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksbUNBQW1DLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2lCQUMxRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDeEIsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDVixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO29CQUNyRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDVixDQUFDLEVBQU8sRUFBRSxFQUFFO3dCQUNSLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pELENBQUMsQ0FDSixDQUFDO2lCQUNMO1lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNUO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUF3QjtRQUM1QyxJQUFJLE9BQU8sRUFBRTtZQUNULFFBQVEsT0FBTyxFQUFFO2dCQUNiLEtBQUssZUFBZSxDQUFDLEdBQUc7b0JBQ3BCLE9BQU8sWUFBWSxDQUFDO2dCQUN4QixLQUFLLGVBQWUsQ0FBQyxHQUFHO29CQUNwQixPQUFPLEtBQUssQ0FBQztnQkFDakIsS0FBSyxlQUFlLENBQUMsSUFBSTtvQkFDckIsT0FBTyxNQUFNLENBQUM7Z0JBQ2xCLEtBQUssZUFBZSxDQUFDLE1BQU07b0JBQ3ZCLE9BQU8sWUFBWSxDQUFDO2dCQUN4QjtvQkFDSSxPQUFPLFlBQVksQ0FBQzthQUMzQjtTQUNKO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQXdCO1FBQzdDLElBQUksT0FBTyxJQUFJLGVBQWUsQ0FBQyxlQUFlLElBQUksT0FBTyxJQUFJLGVBQWUsQ0FBQyx5QkFBeUI7WUFDbEcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBRXZGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBVTtRQUNoQyxJQUFJLFNBQVMsR0FBRyxxQ0FBcUMsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxHQUFHLE9BQU8sT0FBTyxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqSSxTQUFTLEdBQUcsK0JBQStCLENBQUM7U0FDL0M7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FRZDs7UUFDRyxhQUFPLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLDBDQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLHdCQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxTQUFTLDBDQUFFLE9BQU8sR0FBQSxFQUFFO0lBQ2pFLENBQUM7Q0FDSixDQUFBOztZQXZqSTRCLFdBQVc7WUFDUixpQkFBaUI7WUFDdEIsZ0JBQWdCO1lBQ1osYUFBYTtZQUNiLGFBQWE7WUFDTCw2Q0FBNkM7WUFDdkQscUJBQXFCO1lBQ2hCLGNBQWM7WUFDWixrQkFBa0I7WUFDaEMsV0FBVztZQUNjLG9CQUFvQjs7QUFoQ3REO0lBQVIsS0FBSyxFQUFFO3VEQUF3QjtBQUN2QjtJQUFSLEtBQUssRUFBRTs4REFBMEI7QUFDekI7SUFBUixLQUFLLEVBQUU7dURBQW1CO0FBQ2xCO0lBQVIsS0FBSyxFQUFFO3VEQUE4QjtBQUM3QjtJQUFSLEtBQUssRUFBRTtzREFBd0I7QUFDdkI7SUFBUixLQUFLLEVBQUU7K0RBQTJCO0FBQ3pCO0lBQVQsTUFBTSxFQUFFOzREQUEwQztBQUVuRDtJQURDLEtBQUssRUFBRTtvREFHUDtBQUNRO0lBQVIsS0FBSyxFQUFFO3FEQUFrQjtBQUNqQjtJQUFSLEtBQUssRUFBRTtxREFBa0I7QUFDakI7SUFBUixLQUFLLEVBQUU7bUVBQXNHO0FBQ3JHO0lBQVIsS0FBSyxFQUFFO29FQUFxTDtBQUNwTDtJQUFSLEtBQUssRUFBRTtzRUFBb0M7QUFyRm5DLG9CQUFvQjtJQUpoQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsY0FBYztRQUN4QixtM0RBQTRDO0tBQy9DLENBQUM7R0FDVyxvQkFBb0IsQ0FtcEloQztTQW5wSVksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRlbnRpZmllcnMgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDcGxUcmlOb3RhU2FpZGFOYXR1cmV6YVJlY2VpdGFQaXNDb2ZpbnNMb29rdXAsXG4gICAgRTAyN0VxaUxvb2t1cCxcbiAgICBFMDI3U3RyTG9va3VwLFxuICAgIEVudW1Mb2dpY2FsT3BlcmF0b3IsXG4gICAgTG9va3VwUmVxdWVzdFZhbGlkYXRvcixcbiAgICBMb29rdXBWYWxpZGF0aW9uVXRpbHNcbn0gZnJvbSAnQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybUZpZWxkLCBMb29rdXBGaWVsZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRXJwVHJpYnV0b3NTZXJ2aWNlIH0gZnJvbSAnLi9lcnAtdHJpYnV0b3Muc2VydmljZSc7XG5pbXBvcnQgeyBGZWF0dXJlVG9nZ2xlU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9wbGF0Zm9ybS1jb21wb25lbnRzJztcbmltcG9ydCB7IEdUYWdTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3BsYXRmb3JtLXV0aWxzJztcbmltcG9ydCB7XG4gICAgQ2FtcG9UcmlidXRvLFxuICAgIEVudW1DYW1wb1RyaWJ1dG8sXG4gICAgRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhbyxcbiAgICBFbnVtR3J1cG9UcmlidXRvLFxuICAgIEVudW1Nb2RCYyxcbiAgICBFbnVtTW90RGVzLFxuICAgIEVudW1PcmlNZXIsXG4gICAgRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMsXG4gICAgZW51bVRpcENyZWRSZWN1cCxcbiAgICBFbnVtVGlwSW1wQ3N0LFxuICAgIEVudW1UaXBvRG9jdW1lbnRvLFxuICAgIEVudW1UaXBvSXRlbSxcbiAgICBFbnVtVGlwT3BlLFxuICAgIEVudW1UaXBvVHJpYnV0byxcbiAgICBJdGVtLFxuICAgIFN1Z2VzdGFvXG59IGZyb20gJy4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcnAtdHJpYnV0b3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lcnAtdHJpYnV0b3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEVycFRyaWJ1dG9zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgZ3J1cG9zOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyB0cmlidXRvc1ZhbHVlOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyByZWxvYWQgPSB0cnVlO1xuICAgIHB1YmxpYyBpbmRleEFjY29yZGlvbjogbnVtYmVyW10gPSBbXTtcbiAgICBwdWJsaWMgcHJlZml4TGFiZWw6IHN0cmluZztcblxuICAgIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBtZW51SXRlbVBpcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSXBpID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1SZXRlbmNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW5zc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zU3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcFN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3AgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNGdXR1cm8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1NpbXBsZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0byA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIEBJbnB1dCgpIHN1Z2VzdG9lcyE6IFN1Z2VzdGFvW107XG4gICAgQElucHV0KCkgY2FtcG9zQmxvcXVlYWRvcyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRldm9sdmlkbyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRvY3VtZW50bzogRW51bVRpcG9Eb2N1bWVudG87XG4gICAgQElucHV0KCkgdGlwb0l0ZW06IEVudW1UaXBvSXRlbTtcbiAgICBASW5wdXQoKSBoYWJpbGl0YU9wY2FvQ2lkZSA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSB0cmlidXRvc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRyaWJ1dG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmlidXRvc1ZhbHVlO1xuICAgIH1cbiAgICBASW5wdXQoKSBkb21pbmlvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNlcnZpY28/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY3VycmVuY3lMb2NhbGVPcHRpb25zPzogYW55ID0geyBjdXJyZW5jeVN5bWJvbDogJycsIGRlY2ltYWxTZXBhcmF0b3I6ICcsJywgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLicgfTtcbiAgICBASW5wdXQoKSBpZHNUYXhlc01lbW9yaWFDYWxjdWxvPzogW3sgaWRQYXJhbWV0cm86IHN0cmluZywgaWRQYXJhbWV0cm9Fc3RhZG86IHN0cmluZywgaWRQZXJmaWxUcmlidXRhcmlvOiBzdHJpbmcsIHRpcG9UcmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8sIGZyb21TY3JlZW4/OiBzdHJpbmcsIGlkUGFyYW1ldHJvU3Q6IHN0cmluZyB9XTtcbiAgICBASW5wdXQoKSBwZXJtaXNzaW9uTWVtb3JpYUNhbGN1bG8/OiBib29sZWFuO1xuXG4gICAgc2V0IHRyaWJ1dG9zKHZhbCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPSB2YWw7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZTAyN1N0ckxvb2t1cDogRTAyN1N0ckxvb2t1cCxcbiAgICAgICAgcHJpdmF0ZSBlMDI3ZXFpTG9va3VwOiBFMDI3RXFpTG9va3VwLFxuICAgICAgICBwcml2YXRlIG5hdHVyZXphUmVjZWl0YUxvb2t1cDogQ3BsVHJpTm90YVNhaWRhTmF0dXJlemFSZWNlaXRhUGlzQ29maW5zTG9va3VwLFxuICAgICAgICBwcml2YXRlIGxvb2t1cFV0aWxzOiBMb29rdXBWYWxpZGF0aW9uVXRpbHMsXG4gICAgICAgIHByb3RlY3RlZCBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZXJwVHJpYnV0b3NTZXJ2aWNlOiBFcnBUcmlidXRvc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3RhZzogR1RhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZVRvZ2dsZVNlcnZpY2U6IEZlYXR1cmVUb2dnbGVTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNvZmlucyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5kb21pbmlvID0gdGhpcy5kb21pbmlvID8gdGhpcy5kb21pbmlvIDogJ2VycHhfY3BsX2ltcCc7XG4gICAgICAgIHRoaXMuc2VydmljbyA9IHRoaXMuc2VydmljbyA/IHRoaXMuc2VydmljbyA6ICdjYWRhc3Ryb3MnO1xuXG4gICAgICAgIHRoaXMucHJlZml4TGFiZWwgPSBgJHt0aGlzLmRvbWluaW99LiR7dGhpcy5zZXJ2aWNvfWBcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zKS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zID0geyBjdXJyZW5jeVN5bWJvbDogJycsIGRlY2ltYWxTZXBhcmF0b3I6ICcsJywgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLicgfTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhdmVpc0FsdGVyYWRhcyA9IE9iamVjdC5rZXlzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXZhcmlhdmVpc0FsdGVyYWRhcy5pbmNsdWRlcygnc3VnZXN0b2VzJykgfHwgdmFyaWF2ZWlzQWx0ZXJhZGFzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0QWN0aW9ucygpO1xuICAgICAgICAgICAgaWYgKCh0aGlzLnRyaWJ1dG9zVmFsdWUgPT0gdW5kZWZpbmVkKSB8fCAodGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA9PSAwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlID0gW107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncnVwb3MgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRyaWJ1dG9zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUcmlidXRvcygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNhbXBvc0Jsb3F1ZWFkb3MgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZE9ubHlUcmlidXRvcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmxvb2t1cFV0aWxzLnJlc2V0U3RvcmVkS2V5cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtZW1vcmlhQ2FsY3VsbyhpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgbGV0IHRyaWJ1dG8gPSB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7IHJldHVybiBlbGVtZW50LnRpcG9UcmlidXRvID09IGltcG9zdG8ubmFtZSB9KTtcbiAgICAgICAgdGhpcy5hYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZVVybFdpbmRvdyhwYXJhbXM6IElkZW50aWZpZXJzLCB0cmlidXRvPzogYW55KSB7XG4gICAgICAgIHRoaXMuZXJwVHJpYnV0b3NTZXJ2aWNlLmdldEZyb250ZW5kKHBhcmFtcykuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cub3BlbihgJHtyZXNwb25zZS5mcm9udGVuZHNbMF0uZW1iZWRkZWRVUkx9YCwgJ19ibGFuaycpO1xuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuZ3RhZy5zZW5kQnV0dG9uQ2xpY2soJ0JvdMOjbyBhY2Vzc2FyIHBhcmFtZXRyaXphw6fDo28nICwge2ltcG9zdG9zOiB0cmlidXRvLnRpcG9UcmlidXRvfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzYWJsZWRCdXR0b24oaW1wb3N0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8gPT0gdW5kZWZpbmVkIHx8ICF0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC50aXBvVHJpYnV0byA9PSBpbXBvc3RvICYmIGVsZW1lbnQuaWRQYXJhbWV0cm8gIT0gdW5kZWZpbmVkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZUJ1dHRvbihpbXBvc3RvOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFicmlyV2luZG93VXJsTWVtb3JpYUNhbGN1bG8odHJpYnV0bzogYW55KSB7XG4gICAgICAgIGlmICghdHJpYnV0bz8uaWRQZXJmaWxUcmlidXRhcmlvICYmICF0cmlidXRvPy5pZFBhcmFtZXRybykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2Vycm9yX21lbW9yaWFfY2FsY3Vsb19tZXNzYWdlX3RpdGxlJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV9jb250ZW50JylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBpZGVudGlmaWVyczogW3tcbiAgICAgICAgICAgICAgICBcImRvbWFpbk5hbWVcIjogXCJlcnB4X2NwbF9pbXBcIixcbiAgICAgICAgICAgICAgICBcInNlcnZpY2VOYW1lXCI6IFwiaW1wb3N0b3NcIixcbiAgICAgICAgICAgICAgICBcImFwcE5hbWVcIjogXCJlcnB4LWNwbC1pbXAtaW1wb3N0b3NcIixcbiAgICAgICAgICAgICAgICBcInJvdXRlXCI6IGAke3RoaXMudmFsaWRhVGVsYSh0cmlidXRvKX1gXG4gICAgICAgICAgICB9XVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubWFrZVVybFdpbmRvdyhwYXJhbXMsIHRyaWJ1dG8pO1xuICAgIH1cblxuICAgIHZhbGlkYVRlbGEodGF4ZXM6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5pc1N0VGF4ZXModGF4ZXMudGlwb1RyaWJ1dG8pKSB7XG4gICAgICAgICAgICBpZih0YXhlcy5pZFBhcmFtZXRyb0VzdGFkbyl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fS9pY21zc3QtcGFyYW1ldHJvcy8ke3RheGVzLmlkUGFyYW1ldHJvRXN0YWRvfT9wZXJmaWxUcmlidXRhcmlvSWQ9JHt0YXhlcy5pZFBlcmZpbFRyaWJ1dGFyaW99JnBhcmFtZXRyb0ltcG9zdG9zSWQ9JHt0YXhlcy5pZFBhcmFtZXRyb31gXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBgaWNtc3N0LyR7dGF4ZXMuaWRQYXJhbWV0cm99L2ljbXNzdC1wYXJhbWV0cm9zLyR7dGF4ZXMuaWRQYXJhbWV0cm9TdH1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBwZXJmaWwtdHJpYnV0YXJpby8ke3RheGVzLmlkUGVyZmlsVHJpYnV0YXJpb30vcGFyYW1ldHJpemFjYW8taW1wb3N0b3MvJHt0aGlzLmdldFRyaWJ1dG9QYWkodGF4ZXMudGlwb1RyaWJ1dG8pfS8ke3RheGVzLmlkUGFyYW1ldHJvfWBcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU3RUYXhlcyh0YXhlczogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodGF4ZXMpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmlidXRvUGFpKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGlzJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY29maW5zJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcGknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2lzcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpaSc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JldGVuY29lcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ljbXMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOlxuICAgICAgICAgICAgICAgIHJldHVybiAnY2lkZSc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclZhcmlhYmxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMucmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4QWNjb3JkaW9uID0gWy0xXTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXNzUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNzbGxSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NQYXRyb25hbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zU3QgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwU3QgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3AgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNGYXR1cmVtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNGdXR1cm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRyaWJ1dG9zKCkge1xuXG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZS5tYXAoaXQgPT4ge1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGl0LnRpcG9JbXBvc3RvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVBpcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhQ29maW5zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXBpKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSXNzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSW1wb3J0YWNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSWNtcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRPbmx5VHJpYnV0b3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcyAmJiB0aGlzLmdydXBvcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5ncnVwb3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKGdydXBvID0+IGdydXBvLml0ZW0ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUcmlidXRvcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zICYmIHRoaXMuZ3J1cG9zICE9IHVuZGVmaW5lZCAmJiB0aGlzLmdydXBvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoZ3J1cG8gPT4gZ3J1cG8uaXRlbS5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLm1hcChpdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lID09PSBpdC50aXBvSW1wb3N0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLnBhdGNoVmFsdWUoaXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyhpdC50aXBvSW1wb3N0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlVmFsdWVzT25Mb29rdXBWYWxpZGF0b3IoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoZ3J1cG8gPT4gZ3J1cG8uaXRlbS5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN1YnMoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnModHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcyAmJiB0aGlzLmdydXBvcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5ncnVwb3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKFxuICAgICAgICAgICAgICAgIGdydXBvID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG8uaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQ6IGFueSkgPT4gaXQubmFtZSA9PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtICE9ICdpbXBvc3RvTWFudWFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmZvcm1Hcm91cC52YWx1ZVtpdGVtXSAhPSB1bmRlZmluZWQgJiYgaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtID09ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdvYnNlcnZhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdpbmRpY2F0aXZvQXF1aXNpY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW10pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvVHJpYnV0YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2Jhc2VDYWxjdWxvQ3JlZGl0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gIT09ICdpbXBvc3RvTWFudWFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGl0ZW0gIT09ICduYXR1cmV6YVJlY2VpdGEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXRlbSAhPT0gJ3ZhbG9yRGVkdWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpdGVtICE9PSAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaXRlbSA9PSAncGVyY2VudHVhbFJlZHVjYW8nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtID09ICdwZXJjZW50dWFsRGlmZXJpbWVudG8nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtID09ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMDApXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICd2YWxvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb0FycmVjYWRhY2FvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnSW1wb3N0b05hb1JlY3VwZXJhZG8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwOiBGb3JtR3JvdXApIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGNvbnRyb2wpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVBbGxGaWVsZHNUcmlidXRvcygpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHZhbHVlVmFsaWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5ncnVwb3MgJiYgdGhpcy5ncnVwb3MgIT0gdW5kZWZpbmVkICYmIHRoaXMuZ3J1cG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcChcbiAgICAgICAgICAgICAgICBncnVwbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gaXQuZm9ybUdyb3VwLmdldChmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkgdGhpcy52YWxpZGF0ZUFsbEZpZWxkc1RyaWJ1dG9zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlVmFsaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiYWNrVmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IGFyckl0ZW5zOiBhbnkgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zICYmIHRoaXMuZ3J1cG9zICE9IHVuZGVmaW5lZCAmJiB0aGlzLmdydXBvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoXG4gICAgICAgICAgICAgICAgZ3J1cG8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhpdGVtLmZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpYnV0b3NWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldU1hdGggPSB0aGlzLnRyaWJ1dG9zVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIodHJpYnV0byA9PiB0cmlidXRvLnRpcG9JbXBvc3RvID09IGl0ZW0ubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHRyaWJ1dG86IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXVNYXRoICYmIGRldU1hdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJJdGVucy5wdXNoKGRldU1hdGhbMF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaCh7ICd0aXBvSW1wb3N0byc6IGl0ZW0ubmFtZSwgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goeyAndGlwb0ltcG9zdG8nOiBpdGVtLm5hbWUsIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbG9hZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRyaWJ1dG9zQ2hhbmdlLmVtaXQoYXJySXRlbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm92b0ltcG9zdG9NYW51YWwodmFsdWU6IGFueSwgc2luZ2xlQ2hhbmdlPzogYm9vbGVhbikge1xuICAgICAgICB2YWx1ZS5mb3JtRmllbGQuZm9yRWFjaCgoZmllbGQ6IEZvcm1GaWVsZCkgPT4gZmllbGQub25CbHVyPy5jYWxsKHRoaXMpKTtcbiAgICAgICAgdmFsdWUuZm9ybUdyb3VwLmNvbnRyb2xzLmltcG9zdG9NYW51YWwucGF0Y2hWYWx1ZSh0cnVlKTtcbiAgICAgICAgaWYgKCFzaW5nbGVDaGFuZ2UpIHsgdGhpcy5zZXRTdWJzKHZhbHVlKTsgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3Rpb25zKCk6IE1lbnVJdGVtW10ge1xuICAgICAgICBjb25zdCBtZW51OiBNZW51SXRlbVtdID0gW107XG4gICAgICAgIG1lbnUucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3JldGVuY2FvRnVucnVyYWwnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcmV0ZW5jYW9fZnVucnVyYWxfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lc0Z1bnJ1cmFsKCkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ3BpcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19waXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVBpcyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFQaXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBpZDogJ2NvZmlucycsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2NvZmluc19sYWJlbCcpLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1Db2ZpbnMsXG4gICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb250YUNvZmlucygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBpZDogJ2lwaScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2lwaV9sYWJlbCcpLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JcGksXG4gICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb250YUlwaSgpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBpZDogJ2ljbXMnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2xhYmVsJyksXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUljbXMsXG4gICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb250YUljbXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSksIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50byAhPSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREEpIHtcbiAgICAgICAgICAgIG1lbnUucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnaW1wb3J0YWNvZXMnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2ltcG9ydGFjb2VzX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJbXBvcnRhY29lcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRpcG9JdGVtID09IEVudW1UaXBvSXRlbS5TZXJ2aWNvIHx8IHRoaXMuZG9jdW1lbnRvID09IEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREFfQ09OVFJPTEFET1JJQSkge1xuICAgICAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdpc3MnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5hY3Rpb25zX2lzc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlzcyxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlzcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jb2VzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNvZXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1SZXRlbmNvZXMsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFSZXRlbmNvZXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGlwb0l0ZW0gPT0gRW51bVRpcG9JdGVtLlNlcnZpY28gJiYgdGhpcy5oYWJpbGl0YU9wY2FvQ2lkZSkge1xuICAgICAgICAgICAgbWVudS5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdjaWRlJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jaWRlX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDaWRlKCkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5pbmRleEFjY29yZGlvbiA9IFswXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNpZGUoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX0NPTVBSQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnfWAsIGl0ZW1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUljbXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IGFueVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZG9jdW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVMpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdGFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19mdXR1cm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1ApXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRElGQUwpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiogQElDTVNfU1QgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfU1QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBESUZBTCBERVZPTFZJRE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5ESUZBTClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNUylcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5ESUZBTClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8pXG4gICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2VmZXRpdm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX1ZFTkRBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVSTylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1ApXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxEaWZlcmltZW50byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8pXG4gICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVMpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkRJRkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19kaWZhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRElGQUwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkZDUF9TVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmFEZXN0aW5vIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlub19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7IGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUNNUyArICdfbGFiZWwnfWAsIGl0ZW0gfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFSZXRlbmNvZXMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZG9jdW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ1NMTClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUlJGKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklOU1MpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX0NPTVBSQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ1NMTClcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUlJGKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklOU1MpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DU0xMKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklSUkYpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TUylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX1ZFTkRBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DU0xMKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklSUkYpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TUylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX1NBSURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ1NMTClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklSUkYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ1NMTClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklSUkYpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU5TUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcGF0cm9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyArICdfbGFiZWwnfWAsIGl0ZW1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lc0Z1bnJ1cmFsKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IGFueVtdID0gW107XG5cbiAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfaW5zcycsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3JhdCcsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVIsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mdW5ydXJhbF9zZW5hcicsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3RvdGFsJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5GVU5SVVJBTCArICdfbGFiZWwnfWAsIGl0ZW1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZnVucnVyYWxUb3RhbCA9IGl0ZW0uZmluZChpdGVtID0+IGl0ZW0ubmFtZSA9PT0gXCJGVU5SVVJBTF9UT1RBTFwiKTtcbiAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJbXBvcnRhY29lcygpOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZG9jdW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmVjdXBlcmFyX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTICsgJ19sYWJlbCd9YCwgaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSXNzKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1Jc3MgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1Jc3MgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREE6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREE6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVNTKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JU1MpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JU1MpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHsgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJ31gLCBpdGVtIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUGlzKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1QaXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX0NPTVBSQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3BpcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVMpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX1ZFTkRBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVMpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX1NBSURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZmF0dXJhbWVudG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX0VOVFJBREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoeyBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlBJUyArICdfbGFiZWwnfWAsIGl0ZW0gfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDb2ZpbnMoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNvZmlucyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNvZmlucyA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0byB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUilcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5ORl9TQUlEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOUylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fVkVOREE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOUylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREFfQ09OVFJPTEFET1JJQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOUylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TICsgJ19sYWJlbCd9YCwgaXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJcGkoKTogYW55W10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlwaSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlwaSA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQTpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUEkpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETylcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX291dHJhc19kZXNwZXNhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVMpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUEkpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPKVxuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREE6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRldm9sdmlkbylcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8pXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUEkpXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLCBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uUEVESURPX1ZFTkRBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUEkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvRG9jdW1lbnRvLk5GX1NBSURBX0NPTlRST0xBRE9SSUE6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUEkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9Eb2N1bWVudG8uTkZfRU5UUkFEQV9DT05UUk9MQURPUklBOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUEkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7IGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSVBJICsgJ19sYWJlbCd9YCwgaXRlbSB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBzd2l0Y2ggKHRyaWJ1dG8pIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhcjtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXNzO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNTTEw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklSUkY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXJyZlJldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSW5zc1JldGlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zU3Q7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwU3Q7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3A7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50bztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNGYXR1cmVtZW50bztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRGlmYWxEZXZvbHZpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19GQVRVUkFNRU5UTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50bztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fTkFPX1JFQ1VQRVJBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJbXBvc3RvTmFvUmVjdXBlcmFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkJBU0VfQ0FMQ1VMT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkYmFzZUNhbGN1bG9DcmVkaXRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUEVSQ0VOVFVBTF9SRURVQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkUGVyY2VudHVhbFJlZHVjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRmNwU3RSZWRpdG9BbnQ7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSZXF1aXJlZCh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8sIHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHN3aXRjaCAodHJpYnV0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zRGV2b2x2aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlQcmVzdW1pZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JU1NfUkVUSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zU3QgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwU3QgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVEFETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0VmZXRpdmFtZW50ZUNyZWRpdGFkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3AgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGVzb25lcmFkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmVtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNGYXR1cmVtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9zdG9DYWxjdWxhZG8oaW1wb3N0bzogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5ESUZBTCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZDUF9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMO1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmRJbXBvc3RvKG51bWJlcjogYW55LCBkZWNpbWFsczogYW55KSB7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLnBvdygxMCwgTnVtYmVyKGRlY2ltYWxzKSArIDEpO1xuICAgICAgICByZXR1cm4gKE51bWJlcihudW1iZXIpICsgKDEgLyB4KSkudG9GaXhlZChkZWNpbWFscyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhclZhbG9yKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3MgJiYgdGhpcy5ncnVwb3MgIT0gdW5kZWZpbmVkICYmIHRoaXMuZ3J1cG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcChcbiAgICAgICAgICAgICAgICBncnVwbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0OiBhbnkpID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpdC5mb3JtR3JvdXAudmFsdWUpLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXQuZm9ybUdyb3VwLnZhbHVlW2l0ZW1dICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUgJiYgdGhpcy5pbXBvc3RvQ2FsY3VsYWRvKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvICE9IHVuZGVmaW5lZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGEgIT0gdW5kZWZpbmVkKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWEgPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWEudmFsdWUgPT0gdW5kZWZpbmVkKSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID0gaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9IGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YS52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGJhc2UgIT0gdW5kZWZpbmVkKSAmJiAoYWxpcXVvdGEgIT0gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKHRoaXMucm91bmRJbXBvc3RvKCgoYmFzZSAqIGFsaXF1b3RhKSAvIDEwMCksIDIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdC5mb3JtR3JvdXAuY29udHJvbHMuc2l0dWFjYW9UcmlidXRhcmlhLnZhbHVlLmNvZFN0ciAhPSAnNTEnKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG8udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID0gaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYmFzZSAhPSB1bmRlZmluZWQpICYmIChhbGlxdW90YSAhPSB1bmRlZmluZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUodGhpcy5yb3VuZEltcG9zdG8oKChiYXNlICogYWxpcXVvdGEpIC8gMTAwKSwgMikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9IGl0LmZvcm1Hcm91cC5nZXQoXCJiYXNlQ2FsY3Vsb1wiKS52YWx1ZSA/PyBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9IGl0LmZvcm1Hcm91cC5nZXQoXCJhbGlxdW90YVwiKS52YWx1ZSA/PyBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKE1hdGguZmxvb3IoKGJhc2UgKiBhbGlxdW90YSkpIC8gMTAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNUykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID0gaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9IGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YS52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGJhc2UgIT0gdW5kZWZpbmVkKSAmJiAoYWxpcXVvdGEgIT0gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy52YWxvci5wYXRjaFZhbHVlKHRoaXMucm91bmRJbXBvc3RvKCgoYmFzZSAqIGFsaXF1b3RhKSAvIDEwMCksIDIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltcG9zdG9zID0gWydGVU5SVVJBTF9JTlNTJywgJ0ZVTlJVUkFMX1JBVCcsICdGVU5SVVJBTF9TRU5BUiddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250cm9sZUZ1bnJ1cmFsID0gdGhpcy5jYWxjdWxhckZ1bnJ1cmFsVG90YWwoaW1wb3N0b3MsIGdydXBvKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xlRnVucnVyYWwuYmFzZURpZmVyZW50ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJ3YXJuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZXJweC50cmlidXRvcy5lcnJvcl9iYXNlX2Z1bnJ1cmFsX2RpZmVyZW50ZV9zdW1tYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlcnB4LnRyaWJ1dG9zLmVycm9yX2Jhc2VfZnVucnVyYWxfZGlmZXJlbnRlX2RldGFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5ydXJhbFRvdGFsID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBcIkZVTlJVUkFMX1RPVEFMXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVucnVyYWxUb3RhbC5mb3JtR3JvdXAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBjb250cm9sZUZ1bnJ1cmFsLmZ1bkJhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxvcjogY29udHJvbGVGdW5ydXJhbC5mdW5WYWxvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9NYW51YWw6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhckZ1bnJ1cmFsVG90YWwoaW1wb3N0b3M6IGFueSwgZ3J1cG8pIHtcbiAgICAgICAgbGV0IHZhbG9yZXMgPSB7XG4gICAgICAgICAgICBmdW5CYXNlOiAwLFxuICAgICAgICAgICAgZnVuVmFsb3I6IDAsXG4gICAgICAgICAgICBiYXNlRGlmZXJlbnRlOiBmYWxzZSxcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaW1wb3N0b3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBmdW5ydXJhbEltcG9zdG8gPSBncnVwby5pdGVtLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IGltcG9zdG9zW2luZGV4XSk7XG5cbiAgICAgICAgICAgIGlmIChmdW5ydXJhbEltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICh2YWxvcmVzLmZ1bkJhc2UgPiAwICYmIHZhbG9yZXMuZnVuQmFzZSAhPSBmdW5ydXJhbEltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbG9yZXMuYmFzZURpZmVyZW50ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsb3Jlcy5mdW5CYXNlID0gZnVucnVyYWxJbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3VsbyA+IHZhbG9yZXMuZnVuQmFzZSA/IGZ1bnJ1cmFsSW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG8gOiB2YWxvcmVzLmZ1bkJhc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmdW5ydXJhbEltcG9zdG8uZm9ybUdyb3VwLnZhbHVlLnZhbG9yICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhbG9yZXMuZnVuVmFsb3IgPSBOdW1iZXIodGhpcy5yb3VuZEltcG9zdG8oTnVtYmVyKHZhbG9yZXMuZnVuVmFsb3IpICsgTnVtYmVyKGZ1bnJ1cmFsSW1wb3N0by5mb3JtR3JvdXAudmFsdWUudmFsb3IpLCAyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsb3JlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2FtcG9zKGNhbXBvczogQ2FtcG9UcmlidXRvW10sIHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBjb25zdCByZXRvcm5vOiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgZm9ybUZpZWxkOiBGb3JtRmllbGRbXSA9IFtdO1xuICAgICAgICBsZXQgZm9ybUdyb3VwOiBhbnkgPSB7fTtcbiAgICAgICAgbGV0IG1vdmltZW50byA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50byA9PSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBIHx8XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50byA9PSBFbnVtVGlwb0RvY3VtZW50by5QRURJRE9fQ09NUFJBIHx8XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50byA9PSBFbnVtVGlwb0RvY3VtZW50by5ORl9FTlRSQURBX0NPTlRST0xBRE9SSUEpXG4gICAgICAgICAgICBtb3ZpbWVudG8gPSAnVkVOVFJBREEnO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBtb3ZpbWVudG8gPSAnVlNBSURBJztcblxuICAgICAgICBjYW1wb3MubWFwKGl0ID0+IHtcblxuICAgICAgICAgICAgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdCYXNlQ2FsY3VsbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsQWxpcXVvdGEodHJpYnV0byksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFJbnRlcm5hOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJuYV9sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB7IGN1cnJlbmN5U3ltYm9sOiAnJScsIGRlY2ltYWxTZXBhcmF0b3I6ICcsJywgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmNhbGN1bGFyVmFsb3IodHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlubykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUludGVybmFEZXN0aW5vOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFJbnRlcm5hRGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hRGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJuYV9kZXN0aW5vX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcikge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JJc2VudGFzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9ySXNlbnRhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JJc2VudGFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pc2VudGFzX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvck91dHJhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvck91dHJhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JPdXRyYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX291dHJhc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIHNpdHVhY2FvVHJpYnV0YXJpYTogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VhcmNoR3JpZEZpZWxkcyE6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvY3VtZW50byA9PT0gRW51bVRpcG9Eb2N1bWVudG8uTkZfU0FJREFfQ09OVFJPTEFET1JJQSkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RTdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzU3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX3Bpc19jb2ZpbnMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LlBJU19DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2lwaScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pY21zJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9pc3MnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X3NhaWRhJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcE9wZS5WU0FJREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfZW50cmFkYScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBPcGUuVkVOVFJBREFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bS50aXBfb3BlX3ZfYW1ib3MnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN1N0ckxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JpZEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFt7IGZpZWxkOiAnZXhjbHVpZG8nLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbJ2ZhbHNlJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGZpZWxkOiAndGlwSW1wJywgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsIHZhbHVlczogW3RoaXMuZmlsdGVyQnlJbXBvc3RvKHRyaWJ1dG8pXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICd0aXBPcGUnLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbbW92aW1lbnRvLCAnVkFNQk9TJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGZpZWxkOiAnc2l0dWFjYW8nLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbJ1ZBVElWTyddIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgZW5xdWFkcmFtZW50b0lwaTogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmUwMjdlcWlMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ2UwMjdlcWknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFt7IGZpZWxkOiAnc2l0dWFjYW8nLCBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSwgdmFsdWVzOiBbJ1ZBVElWTyddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBmaWVsZDogJ2V4Y2x1aWRvJywgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsIHZhbHVlczogWydmYWxzZSddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdFbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19lbnF1YWRyYW1lbnRvX2lwaV9sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxSZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxSZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3JlZHVjYW9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogeyBjdXJyZW5jeVN5bWJvbDogJyUnLCBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLCB7IHZhbHVlOiAxMDAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX212YV9sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB7IGN1cnJlbmN5U3ltYm9sOiAnJScsIGRlY2ltYWxTZXBhcmF0b3I6ICcsJywgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsIHsgdmFsdWU6IDEwMDAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtcykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHsgLi4uZm9ybUdyb3VwLCBkZXNvbmVyYWNhb0ljbXM6IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW90aXZvRGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzAnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzInKSwgdmFsdWU6IEVudW1Nb3REZXMuVjIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzMnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzQnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzUnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzYnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjYgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzcnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzgnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzknKSwgdmFsdWU6IEVudW1Nb3REZXMuVjkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEwJyksIHZhbHVlOiBFbnVtTW90RGVzLlYxMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTEnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjExIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMicpLCB2YWx1ZTogRW51bU1vdERlcy5WMTIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzE2JyksIHZhbHVlOiBFbnVtTW90RGVzLlYxNiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOTAnKSwgdmFsdWU6IEVudW1Nb3REZXMuVjkwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfcGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIG9yaWdlbTogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdPcmlnZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzAnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzEnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzInKSwgdmFsdWU6IEVudW1PcmlNZXIuVjIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzMnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzQnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzUnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzYnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjYgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzcnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzgnKSwgdmFsdWU6IEVudW1PcmlNZXIuVjggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfb3JpZ2VtX2ljbXNfcGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIGFsaXF1b3RhOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsRGlmZXJpbWVudG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX2RpZmVyaW1lbnRvX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJywgeyB2YWx1ZTogMTAwIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3N1cG9ydGFkb19jb25zdW1pZG9yX2ZpbmFsX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJywgeyB2YWx1ZTogMTAwIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yUmVjb2xoaWRvSWNtc1N0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yUmVjb2xoaWRvSWNtc1N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9yZWNvbGhpZG9fcGVsb19zdWJzdGl0dXRvX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvckljbXNTdFJldGlkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9pY21zX3N0X3JldGlkb19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uTW9kYWxpZGFkZUJDKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIG1vZGFsaWRhZGVCQzogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdNb2RhbGlkYWRlQmMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ21vZGFsaWRhZGVCQycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzAnKSwgdmFsdWU6IEVudW1Nb2RCYy5WMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMScpLCB2YWx1ZTogRW51bU1vZEJjLlYxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8yJyksIHZhbHVlOiBFbnVtTW9kQmMuVjIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzMnKSwgdmFsdWU6IEVudW1Nb2RCYy5WMyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21vZGFsaWRhZGVfYmNfcGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tb2RhbGlkYWRlX2JjX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIG5hdHVyZXphUmVjZWl0YTogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm5hdHVyZXphUmVjZWl0YUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnbmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBTb3J0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19uYXR1cmV6YV9yZWNlaXRhX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLCBvYnNlcnZhY2FvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMClcbiAgICAgICAgICAgICAgICAgICAgXSldXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ09ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29ic2VydmFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX29ic2VydmFjYW9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF9sZW5ndGhfdmFsaWRhdG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsIHZhbG9yRGVkdWNhbzogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICBdKV1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2RlZHVjYW9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGl2b0FxdWlzaWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnSW5kaWNhdGl2b0FxdWlzaWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kaWNhdGl2b0FxdWlzaWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfaW5kaWNhdGl2b19hcXVpc2ljYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsIGNvZGlnb0FycmVjYWRhY2FvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDYpXG4gICAgICAgICAgICAgICAgICAgIF0pXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb19hcnJlY2FkYWNhb19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLCBjb2RpZ29UcmlidXRhY2FvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXG4gICAgICAgICAgICAgICAgICAgIF0pXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29UcmlidXRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RpZ29UcmlidXRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jb2RpZ29fdHJpYnV0YWNhb19sYWJlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhY2tWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBJbXBvc3RvTmFvUmVjdXBlcmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2ltcG9zdG9fbmFvX3JlY3VwZXJhZG8nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIGJhc2VDYWxjdWxvQ3JlZGl0bzogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH1dIH07XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMScpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzInKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8zJyksIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNCcpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzUnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl82JyksIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY2IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNycpLCB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WNyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzgnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl85JyksIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTAnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTEnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjExIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTInKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEyIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTMnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTQnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTUnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE1IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTYnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE2IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTcnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE3IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTgnKSwgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX3BsYWNlaG9sZGVyJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fbGFiZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgcmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluczogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdyZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZW51bV9yZWdfdHJpYnV0X3Bpc19jb2ZpbnNfY3VtdWxhdGl2bycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19uYW9fY3VtdWxhdGl2bycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMuTkFPX0NVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZ2ltZV90cmlidXRhcmlvX3Bpc19jb2ZpbnNfcGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWdpbWVfdHJpYnV0YXJpb19waXNfY29maW5zX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0geyAuLi5mb3JtR3JvdXAsIHBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsOiBbeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXSB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3N1c3BlbnNhb19wYXJjaWFsX2xhYmVsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHsgY3VycmVuY3lTeW1ib2w6ICclJywgZGVjaW1hbFNlcGFyYXRvcjogJywnLCB0aG91c2FuZHNTZXBhcmF0b3I6ICcuJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja1ZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJywgeyB2YWx1ZTogMTAwIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5zdWdlc3RvZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc3VnZXN0b2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihzdWdlc3RhbyA9PiBzdWdlc3Rhby50aXBvVHJpYnV0byA9PT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChzdWdlc3RhbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgLmVudHJpZXMoc3VnZXN0YW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGF0cmlidXRvcyA9PiBhdHJpYnV0b3NbMF0gIT09ICd0aXBvVHJpYnV0bycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChhdHJpYnV0b3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFthdHJpYnV0b3NbMF1dWzBdLnZhbHVlID0gYXRyaWJ1dG9zWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtR3JvdXAgPSB7IC4uLmZvcm1Hcm91cCwgaW1wb3N0b01hbnVhbDogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldIH07XG4gICAgICAgIHJldG9ybm8uZm9ybUZpZWxkID0gZm9ybUZpZWxkO1xuICAgICAgICByZXRvcm5vLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgLi4uZm9ybUdyb3VwXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXRvcm5vO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U3VicyhpdGVtOiBJdGVtKSB7XG4gICAgICAgIE9iamVjdFxuICAgICAgICAgICAgLmVudHJpZXMoaXRlbS5mb3JtR3JvdXAuY29udHJvbHMpXG4gICAgICAgICAgICAuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbY29udHJvbE5hbWUsIGNvbnRyb2xPYmplY3RdID0gY29udHJvbDtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbE5hbWUgIT09ICdpbXBvc3RvTWFudWFsJyAmJiAhaXRlbS5mb3JtR3JvdXAuY29udHJvbHMuaW1wb3N0b01hbnVhbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSBpdGVtLmZvcm1GaWVsZC5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09IGNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbE9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKHZhbCA9PiB0aGlzLmdldEZvcm1Db250cm9sU3Vic2NyaXB0aW9uVmFsdWUodmFsLCBmb3JtRmllbGQgaW5zdGFuY2VvZiBMb29rdXBGaWVsZCwgYCR7aXRlbS5uYW1lfV8ke2Zvcm1GaWVsZC5uYW1lfWApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsOiBMb29rdXBSZXF1ZXN0VmFsaWRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWwuY2FuY2VsU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwLmNvbnRyb2xzLmltcG9zdG9NYW51YWwucGF0Y2hWYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJbXBvc3RvTWFudWFsR3JvdXAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1Db250cm9sU3Vic2NyaXB0aW9uVmFsdWUoZmllbGRWYWx1ZTogYW55LCBpc0ZpZWxkTG9va3VwOiBib29sZWFuLCBmaWVsZElkZW50aWZpZXI6IHN0cmluZyk6IE9ic2VydmFibGU8TG9va3VwUmVxdWVzdFZhbGlkYXRvcj4ge1xuICAgICAgICBpZiAoaXNGaWVsZExvb2t1cCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9va3VwVXRpbHMuZ2V0VmFsaWRhdGVkUmVwZWF0ZWRMb29rdXBWYWx1ZXMoZmllbGRWYWx1ZSwgZmllbGRJZGVudGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgICAgY2FuY2VsU3Vic2NyaXB0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWVsZFZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmFnZVZhbHVlc09uTG9va3VwVmFsaWRhdG9yKGl0ZW06IEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0XG4gICAgICAgICAgICAuZW50cmllcyhpdGVtLmZvcm1Hcm91cC5jb250cm9scylcbiAgICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtjb250cm9sTmFtZSwgY29udHJvbE9iamVjdF0gPSBjb250cm9sO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gY29udHJvbE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbFN1YnNjcmlwdGlvblZhbHVlKGNvbnRyb2xPYmplY3QudmFsdWUsIGZvcm1GaWVsZCBpbnN0YW5jZW9mIExvb2t1cEZpZWxkLCBgJHtpdGVtLm5hbWV9XyR7Zm9ybUZpZWxkLm5hbWV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbXBvc3RvTWFudWFsR3JvdXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcyAmJiB0aGlzLmdydXBvcyAhPSB1bmRlZmluZWQgJiYgdGhpcy5ncnVwb3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3NcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdDogYW55KSA9PiAoaXQuZ3J1cG8gPT0gJ2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklDTVMgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TX1NUICsgJ19sYWJlbCcpXG4gICAgICAgICAgICAgICAgICAgIHx8IChpdC5ncnVwbyA9PSAnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUElTICsgJ19sYWJlbCcpXG4gICAgICAgICAgICAgICAgICAgIHx8IChpdC5ncnVwbyA9PSAnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ09GSU5TICsgJ19sYWJlbCcpXG4gICAgICAgICAgICAgICAgICAgIHx8IChpdC5ncnVwbyA9PSAnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uUkVURU5DT0VTICsgJ19sYWJlbCcpXG4gICAgICAgICAgICAgICAgICAgIHx8IChpdC5ncnVwbyA9PSAnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEgKyAnX2xhYmVsJylcbiAgICAgICAgICAgICAgICAgICAgfHwgKGl0LmdydXBvID09ICdlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JUEkgKyAnX2xhYmVsJykpXG4gICAgICAgICAgICAgICAgLm1hcChncnVwbyA9PiBncnVwby5pdGVtLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uZm9ybUdyb3VwLmNvbnRyb2xzLmltcG9zdG9NYW51YWwudmFsdWUgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvLml0ZW0ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmltcG9zdG9NYW51YWwucGF0Y2hWYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyQnlJbXBvc3RvKGltcG9zdG86IEVudW1UaXBvVHJpYnV0byk6IHN0cmluZyB7XG4gICAgICAgIGlmIChpbXBvc3RvKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUElTX0NPRklOUyc7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0lQSSc7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdJQ01TJztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnUElTX0NPRklOUyc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQSVNfQ09GSU5TJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFiZWxBbGlxdW90YSh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgaWYgKHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyB8fCB0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVyZXN0YWR1YWxfbGFiZWwnKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfbGFiZWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VHJhbnNsYXRlQnV0dG9uKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgbGV0IHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19lbXB0eV9sYWJlbCc7XG4gICAgICAgIGlmICh0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7IHJldHVybiBlbGVtZW50LnRpcG9UcmlidXRvID09IHZhbHVlICYmIGVsZW1lbnQuaWRQYXJhbWV0cm8gIT0gdW5kZWZpbmVkIH0pKSB7XG4gICAgICAgICAgICB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fbGFiZWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4TGFiZWwgKyB0cmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaXNHcm91cEludmFsaWQoZ3JvdXA6IHtcbiAgICAgICAgZ3J1cG86IHN0cmluZztcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgZm9ybUZpZWxkOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfVtdO1xuICAgIH0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwPy5pdGVtPy5zb21lKChpdGVtKSA9PiBpdGVtPy5mb3JtR3JvdXA/LmludmFsaWQpO1xuICAgIH1cbn1cbiJdfQ==