@magic-xpa/gui 4.1100.0-dev4110.252 → 4.1100.0-dev4110.256

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.
Files changed (47) hide show
  1. package/esm2022/src/Commands.mjs +1 -1
  2. package/esm2022/src/Events.mjs +1 -1
  3. package/esm2022/src/EventsProcessor.mjs +1 -1
  4. package/esm2022/src/FocusManager.mjs +1 -1
  5. package/esm2022/src/Manager.mjs +1 -1
  6. package/esm2022/src/UIBridge.mjs +1 -1
  7. package/esm2022/src/gui/GuiMgControl.mjs +1 -1
  8. package/esm2022/src/gui/KeyboardItem.mjs +1 -1
  9. package/esm2022/src/gui/low/GuiCommand.mjs +1 -1
  10. package/esm2022/src/gui/low/GuiCommandQueue.mjs +1 -1
  11. package/esm2022/src/gui/low/GuiInteractive.mjs +1 -1
  12. package/esm2022/src/management/RuntimeContextBase.mjs +1 -1
  13. package/esm2022/src/management/data/BlobType.mjs +1 -1
  14. package/esm2022/src/management/data/DcValues.mjs +1 -1
  15. package/esm2022/src/management/data/DcValuesBuilderBase.mjs +1 -1
  16. package/esm2022/src/management/data/FieldDef.mjs +1 -1
  17. package/esm2022/src/management/data/FieldsTable.mjs +1 -1
  18. package/esm2022/src/management/data/GuiDataViewBase.mjs +1 -1
  19. package/esm2022/src/management/data/GuiFieldBase.mjs +1 -1
  20. package/esm2022/src/management/data/NUM_TYPE.mjs +1 -1
  21. package/esm2022/src/management/data/ObjectReferenceBase.mjs +1 -1
  22. package/esm2022/src/management/data/ObjectReferencesCollection.mjs +1 -1
  23. package/esm2022/src/management/data/RecordUtils.mjs +1 -1
  24. package/esm2022/src/management/data/VectorType.mjs +1 -1
  25. package/esm2022/src/management/data/VectorTypeBase.mjs +1 -1
  26. package/esm2022/src/management/exp/GuiExpressionEvaluator.mjs +1 -1
  27. package/esm2022/src/management/gui/ControlTable.mjs +1 -1
  28. package/esm2022/src/management/gui/DisplayConvertor.mjs +1 -1
  29. package/esm2022/src/management/gui/FieldValidator.mjs +1 -1
  30. package/esm2022/src/management/gui/HebrewDate.mjs +1 -1
  31. package/esm2022/src/management/gui/Helps.mjs +1 -1
  32. package/esm2022/src/management/gui/MgControlBase.mjs +1 -1
  33. package/esm2022/src/management/gui/MgFormBase.mjs +1 -1
  34. package/esm2022/src/management/gui/PIC.mjs +1 -1
  35. package/esm2022/src/management/gui/PropDefaults.mjs +1 -1
  36. package/esm2022/src/management/gui/PropTable.mjs +1 -1
  37. package/esm2022/src/management/gui/Property.mjs +1 -1
  38. package/esm2022/src/management/gui/ValidationDetails.mjs +1 -1
  39. package/esm2022/src/management/gui/ValidationDetailsBase.mjs +1 -1
  40. package/esm2022/src/management/gui/WrongFormatException.mjs +1 -1
  41. package/esm2022/src/management/tasks/GuiTaskBase.mjs +1 -1
  42. package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +1 -1
  43. package/esm2022/src/util/MemoryUtil.mjs +1 -1
  44. package/esm2022/src/util/ObjectReference.mjs +1 -1
  45. package/esm2022/src/util/UsernamePasswordCredentials.mjs +1 -1
  46. package/fesm2022/magic-xpa-gui.mjs.map +1 -1
  47. package/package.json +2 -2
@@ -275,4 +275,4 @@ export class HebrewDate {
275
275
  return Math.max(days_from_creation - HebrewDate.DAYS_TIL_JESUS, 0);
276
276
  }
277
277
  }
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVicmV3RGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9ndWkvSGVicmV3RGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFVBQVU7SUFDYixNQUFNLENBQUMsY0FBYyxHQUFXLElBQUksQ0FBQztJQUNyQyxNQUFNLENBQUMsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDL0IsTUFBTSxDQUFDLGlCQUFpQixHQUFXLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUUsTUFBTSxDQUFDLGVBQWUsR0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuSCxNQUFNLENBQUMsb0JBQW9CLEdBQVcsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBVyxFQUFFLENBQUM7SUFDekMsTUFBTSxDQUFDLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUN6QyxNQUFNLENBQUMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxlQUFlLEdBQVcsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckcs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dGVudCI6WyJpbXBvcnQgeyBFdmVudHMgfSBmcm9tICcuLi8uLi9FdmVudHMnO1xyXG5pbXBvcnQgeyBNc2dJbnRlcmZhY2UgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgUmVmUGFyYW19IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTWVtb3J5VXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvTWVtb3J5VXRpbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgSGVicmV3RGF0ZSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEFSVFNfUEVSX0hPVVI6IG51bWJlciA9IDEwODA7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgSE9VUlNfUEVSX0RBWTogbnVtYmVyID0gMjQ7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEFSVFNfUEVSX0RBWTogbnVtYmVyID0gKEhlYnJld0RhdGUuSE9VUlNfUEVSX0RBWSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIpO1xyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIX0RBWVM6IG51bWJlciA9IDI5O1xyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIX0VYVFJBX1BBUlRTOiBudW1iZXIgPSAoMTIgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9IT1VSICsgNzkzKTtcclxuICBwcml2YXRlIHN0YXRpYyBQQVJUU19QRVJfTU9OVEg6IG51bWJlciA9IChIZWJyZXdEYXRlLk1PTlRIX0RBWVMgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9EQVkgKyBIZWJyZXdEYXRlLk1PTlRIX0VYVFJBX1BBUlRTKTtcclxuICBwcml2YXRlIHN0YXRpYyBNT05USFNfUEVSX05PUk1fWUVBUjogbnVtYmVyID0gMTI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhTX1BFUl9MRUFQX1lFQVI6IG51bWJlciA9IDEzO1xyXG4gIHByaXZhdGUgc3RhdGljIE5PUk1fWUVBUlNfUEVSX0NZQ0xFOiBudW1iZXIgPSAxMjtcclxuICBwcml2YXRlIHN0YXRpYyBMRUFQX1lFQVJTX1BFUl9DWUNMRTogbnVtYmVyID0gNztcclxuICBwcml2YXRlIHN0YXRpYyBZRUFSU19QRVJfQ1lDTEU6IG51bWJlciA9IChIZWJyZXdEYXRlLk5PUk1fWUVBUlNfUEVSX0NZQ0xFICsgSGVicmV3RGF0ZS5MRUFQX1lFQVJTX1BFUl9DWUNMRSk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhTX1BFUl9DWUNMRTogbnVtYmVyID0gKEhlYnJld0RhdGUuTk9STV9ZRUFSU19QRVJfQ1lDTEUgKiBIZWJyZXdEYXRlLk1PTlRIU19QRVJfTk9STV9ZRUFSICsgSGVicmV3RGF0ZS5MRUFQX1lFQVJTX1BFUl9DWUNMRSAqIEhlYnJld0RhdGUuTU9OVEhTX1BFUl9MRUFQX1lFQVIpO1xyXG4gIHByaXZhdGUgc3RhdGljIFBBUlRTX1BFUl9MRUFQX1lFQVI6IG51bWJlciA9IChIZWJyZXdEYXRlLk1PTlRIU19QRVJfTEVBUF9ZRUFSICogSGVicmV3RGF0ZS5QQVJUU19QRVJfTU9OVEgpO1xyXG4gIHByaXZhdGUgc3RhdGljIERBWVNfUEVSX0xFQVBfWUVBUjogbnVtYmVyID0gTWF0aC5mbG9vcihIZWJyZXdEYXRlLlBBUlRTX1BFUl9MRUFQX1lFQVIgLyBIZWJyZXdEYXRlLlBBUlRTX1BFUl9EQVkpO1xyXG4gIHByaXZhdGUgc3RhdGljIFBBUlRTX1BFUl9DWUNMRTogbnVtYmVyID0gKEhlYnJld0RhdGUuTU9OVEhTX1BFUl9DWUNMRSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX01PTlRIKTtcclxuICBwcml2YXRlIHN0YXRpYyBEQVlTX1BFUl9DWUNMRTogbnVtYmVyID0gTWF0aC5mbG9vcihIZWJyZXdEYXRlLlBBUlRTX1BFUl9DWUNMRSAvIEhlYnJld0RhdGUuUEFSVFNfUEVSX0RBWSk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQ1JFQVRJT05fRE9XOiBudW1iZXIgPSAyO1xyXG4gIHByaXZhdGUgc3RhdGljIENSRUFUSU9OX1BBUlRTOiBudW1iZXIgPSAoNSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIgKyAyMDQpO1xyXG4gIHByaXZhdGUgc3RhdGljIERBWVNfVElMX0pFU1VTOiBudW1iZXIgPSAxMzczNDI4O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBIRVNIVkFOOiBudW1iZXIgPSAyO1xyXG4gIHByaXZhdGUgc3RhdGljIEtJU0xFVjogbnVtYmVyID0gMztcclxuICBwcml2YXRlIHN0YXRpYyBBREFSOiBudW1iZXIgPSA2O1xyXG4gIHByaXZhdGUgc3RhdGljIEFEQVJfQjogbnVtYmVyID0gMTM7XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIC8qIEhlYnJldyBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIGVhY2ggSGVicmV3IGxldHRlciAqL1xyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbGV0dGVyczogbnVtYmVyW10gPSBbXHJcbiAgICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMjAsIDIwLCAzMCwgNDAsIDQwLCA1MCwgNTAsIDYwLCA3MCxcclxuICAgIDgwLCA4MCwgOTAsIDkwLCAxMDAsIDIwMCwgMzAwLCA0MDBcclxuICBdO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBBTEVGOiBzdHJpbmcgPSAn15AnO1xyXG4gIHByaXZhdGUgc3RhdGljIFRBVjogc3RyaW5nID0gJ9eqJztcclxuXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgLyogTiBvZiBNb250aHMgZnJvbSBiZWdpbm5pbmcgb2YgMTkgeWVhcnMgY3ljbGUsIHRvICovXHJcbiAgLyogdGhlIGJlZ2lubmluZyBvZiBhIHllYXIgKGluIHRoZSByYW5nZSAwIC0gMTgpICAgICovXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgREFURUhFQl9tb250aHNfbjogbnVtYmVyW10gPSBbXHJcbiAgICAwLCAxMiwgMjQsIDM3LCA0OSwgNjEsIDc0LCA4NiwgOTksIDExMSwgMTIzLCAxMzYsIDE0OCwgMTYwLCAxNzMsIDE4NSwgMTk3LCAyMTAsIDIyMixcclxuICAgIDIzNVxyXG4gIF07XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIC8qIE4gb2YgZGF5cyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSB5ZWFyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBtb250aCAqL1xyXG4gIC8qIFRpc2hyZWksIEhlc2h2YW4sIEtpc2xldiwgVGV2ZXQsIFNodmF0LCBBZGFyLCAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gIC8qIE5pc2FuLCAgIEl5YXIsICAgIFNpdmFuLCAgVGFtdXosIEF2LCAgICBFbHVsICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbm9ybV9kYXlzX2luX21vbnRoOiBudW1iZXJbXSA9IFtcclxuICAgIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDBcclxuICBdO1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbGVhcF9kYXlzX2luX21vbnRoOiBudW1iZXJbXSA9IFtcclxuICAgIDMwLCAyOSwgMzAsIDI5LCAzMCwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5XHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhfTEVOOiBudW1iZXIgPSA1O1xyXG4gIHByaXZhdGUgc3RhdGljIF9sb2NhbE1vbnRoczogc3RyaW5nW10gPSBuZXcgQXJyYXk8c3RyaW5nPigxNSk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRE9XX0xFTjogbnVtYmVyID0gNTtcclxuICBwcml2YXRlIHN0YXRpYyBfbG9jYWxEb3dzOiBzdHJpbmdbXSA9IG5ldyBBcnJheTxzdHJpbmc+KDgpO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNhbGN1bGF0ZSBpZiB5ZWFyIGlzIGxlYXBcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInllYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZWhlYl95ZWFyX2lzX2xlYXAoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICB5ZWFyID0geWVhciAlIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFO1xyXG4gICAgcmV0dXJuIChIZWJyZXdEYXRlLkRBVEVIRUJfbW9udGhzX25bKHllYXIgKyAxKV0gLSBIZWJyZXdEYXRlLkRBVEVIRUJfbW9udGhzX25beWVhcl0gPT09IDEzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2FsY3VsYXRlIGRheXMgaW4gbW9udGhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1vbnRoXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZWFwXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXlzX2luX3llYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZWhlYl9kYXlzX2luX21vbnRoKG1vbnRoOiBudW1iZXIsIGxlYXA6IGJvb2xlYW4sIGRheXNfaW5feWVhcjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBkYXlzX2luX21vbnRoOiBudW1iZXIgPSBsZWFwID8gSGVicmV3RGF0ZS5EQVRFSEVCX2xlYXBfZGF5c19pbl9tb250aFttb250aCAtIDFdIDogSGVicmV3RGF0ZS5EQVRFSEVCX25vcm1fZGF5c19pbl9tb250aFttb250aCAtIDFdO1xyXG5cclxuICAgIGlmIChsZWFwKVxyXG4gICAgICBkYXlzX2luX3llYXIgPSBkYXlzX2luX3llYXIgLSAzMDtcclxuXHJcbiAgICBzd2l0Y2ggKGRheXNfaW5feWVhcikge1xyXG4gICAgICBjYXNlIDM1MzpcclxuICAgICAgICBpZiAobW9udGggPT09IEhlYnJld0RhdGUuS0lTTEVWKVxyXG4gICAgICAgICAgZGF5c19pbl9tb250aCA9IDI5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM1NTpcclxuICAgICAgICBpZiAobW9udGggPT09IEhlYnJld0RhdGUuSEVTSFZBTilcclxuICAgICAgICAgIGRheXNfaW5fbW9udGggPSAzMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXlzX2luX21vbnRoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjYWxjdWxhdGUgZGF5cyBmcm9tIGNyZWF0aW9uIHRpbGwgc3RhcnQgb2YgdGhlIHllYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInllYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZWhlYl95ZWFyX3N0YXJ0KHllYXI6IG51bWJlcik6IG51bWJlciB7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogY2FsY3VsYXRlIFwibW9sYWRcIiBvZiB5ZWFyICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICB5ZWFyID0geWVhciAtIDE7XHJcbiAgICBsZXQgY3ljbGU6IG51bWJlciA9IE1hdGguZmxvb3IoeWVhciAvIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFKTtcclxuICAgIHllYXIgPSB5ZWFyICUgSGVicmV3RGF0ZS5ZRUFSU19QRVJfQ1lDTEU7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogSG93IG1hbnkgbW9udGhzIHBhc3NlZCBzaW5jZSBjcmVhdGlvbiAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IG1vbnRoczogbnVtYmVyID0gY3ljbGUgKiBIZWJyZXdEYXRlLk1PTlRIU19QRVJfQ1lDTEUgKyBIZWJyZXdEYXRlLkRBVEVIRUJfbW9udGhzX25beWVhcl07XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEhvdyBtYW55IGRheXMgcGFzc2VkIHNpbmNlIGNyZWF0aW9uICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGRheXM6IG51bWJlciA9IG1vbnRocyAqIEhlYnJld0RhdGUuTU9OVEhfREFZUztcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEhvdyBtYW55IGV4dHJhIHBhcnRzIHBhc3NlZCBzaW5jZSBjcmVhdGlvbiAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgcGFydHM6IG51bWJlciA9IG1vbnRocyAqIEhlYnJld0RhdGUuTU9OVEhfRVhUUkFfUEFSVFMgKyBIZWJyZXdEYXRlLkNSRUFUSU9OX1BBUlRTO1xyXG5cclxuICAgIGRheXMgPSBkYXlzICsgTWF0aC5mbG9vcihwYXJ0cyAvIEhlYnJld0RhdGUuUEFSVFNfUEVSX0RBWSk7XHJcbiAgICBwYXJ0cyA9IHBhcnRzICUgSGVicmV3RGF0ZS5QQVJUU19QRVJfREFZO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIFJlbWluZGVyID4gMy80IG9mIGEgZGF5ID8gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGlmICg8bnVtYmVyPnBhcnRzID49IE1hdGguZmxvb3IoSGVicmV3RGF0ZS5QQVJUU19QRVJfREFZICogMyAvIDQpKSB7XHJcbiAgICAgIHBhcnRzID0gMDtcclxuICAgICAgZGF5cyA9IGRheXMgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogdmVyaWZ5IGRheS1vZi13ZWVrIG5vdCBTdW5kYXksIFdlZG5lc2RheSwgRnJpZGF5ICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBkb3c6IG51bWJlciA9IChkYXlzIC0gMSArIEhlYnJld0RhdGUuQ1JFQVRJT05fRE9XKSAlIDcgKyAxO1xyXG4gICAgaWYgKChkb3cgPT09IDEpIHx8IChkb3cgPT09IDQpIHx8IChkb3cgPT09IDYpKSB7XHJcbiAgICAgIHBhcnRzID0gMDtcclxuICAgICAgZGF5cyA9IGRheXMgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiB2ZXJpZnkgaWYgeWVhciB0b28gbG9uZy9sb25nICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgaWYgKCFIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9pc19sZWFwKDxudW1iZXI+eWVhcikpIHtcclxuICAgICAgaWYgKGRvdyA9PT0gMyAmJiA8bnVtYmVyPnBhcnRzID49ICg5ICogSGVicmV3RGF0ZS5QQVJUU19QRVJfSE9VUiArIDIwNCkpXHJcbiAgICAgICAgZGF5cyA9IGRheXMgKyAyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9pc19sZWFwKDxudW1iZXI+eWVhciArIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFIC0gMSkpIHtcclxuICAgICAgaWYgKGRvdyA9PT0gMiAmJiA8bnVtYmVyPnBhcnRzID49ICgxNSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIgKyA1ODkpKVxyXG4gICAgICAgIGRheXMgPSBkYXlzICsgMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF5cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ29udmVydCBhIE1hZ2ljIGludGVybmFsIERhdGUgdG8gYSBIZWJyZXcgZGF0ZSAoeWVhciwgbW9udGgsIGRheSlcclxuICAvLy8gTm90ZSB0aGF0IEFEQVJfQiBpcyByZXByZXNlbnRlZCBieSBtb250aCA9IDEzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZGF5XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJobW9udGhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImh5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+VFJVRSBpZiBsZWFwIHllYXI8L3JldHVybnM+XHJcbiAgc3RhdGljIGRhdGVoZWJfNF9kKGRhdGU6IG51bWJlciwgZGF5OiBSZWZQYXJhbTxudW1iZXI+LCBtb250aDogUmVmUGFyYW08bnVtYmVyPiwgeWVhcjogUmVmUGFyYW08bnVtYmVyPik6IGJvb2xlYW4ge1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBEYXlzIGZyb20gY3JlYXRpb24gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgZGF0ZSA9IGRhdGUgKyBIZWJyZXdEYXRlLkRBWVNfVElMX0pFU1VTO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogR3Vlc3MgYSB5ZWFyICg8PSBjb3JyZWN0IHllYXIpICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBjeWNsZTogbnVtYmVyID0gTWF0aC5mbG9vcihkYXRlIC8gKEhlYnJld0RhdGUuREFZU19QRVJfQ1lDTEUgKyAxKSk7XHJcbiAgICBsZXQgZGF5czogbnVtYmVyID0gZGF0ZSAlIChIZWJyZXdEYXRlLkRBWVNfUEVSX0NZQ0xFICsgMSk7XHJcbiAgICB5ZWFyLnZhbHVlID0gY3ljbGUgKiBIZWJyZXdEYXRlLllFQVJTX1BFUl9DWUNMRTtcclxuICAgIHllYXIudmFsdWUgPSB5ZWFyLnZhbHVlICsgTWF0aC5mbG9vcihkYXlzIC8gKEhlYnJld0RhdGUuREFZU19QRVJfTEVBUF9ZRUFSICsgMSkpO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBBZHZhbmNlIHllYXIgdW50aWwgY29ycmVjdCAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBuZXh0X3llYXJfc3RhcnQ6IG51bWJlcjtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgIG5leHRfeWVhcl9zdGFydCA9IEhlYnJld0RhdGUuZGF0ZWhlYl95ZWFyX3N0YXJ0KHllYXIudmFsdWUgKyAxKTtcclxuICAgICAgaWYgKG5leHRfeWVhcl9zdGFydCA+PSBkYXRlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB5ZWFyLnZhbHVlID0geWVhci52YWx1ZSArIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgY3Vycl95ZWFyX3N0YXJ0OiBudW1iZXIgPSBIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9zdGFydCh5ZWFyLnZhbHVlKTtcclxuICAgIGRheS52YWx1ZSA9IGRhdGUgLSBjdXJyX3llYXJfc3RhcnQ7XHJcbiAgICBsZXQgZGF5c19pbl95ZWFyOiBudW1iZXIgPSBuZXh0X3llYXJfc3RhcnQgLSBjdXJyX3llYXJfc3RhcnQ7XHJcbiAgICBsZXQgbGVhcDogYm9vbGVhbiA9IGRheXNfaW5feWVhciA+IDM1NTtcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBGaW5kIE1vbnRoICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgZm9yIChpID0gMTsgaSA8IDEzOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGRheXNfaW5fbW9udGg6IG51bWJlciA9IEhlYnJld0RhdGUuZGF0ZWhlYl9kYXlzX2luX21vbnRoKGksIGxlYXAsIGRheXNfaW5feWVhcik7XHJcbiAgICAgIGlmIChkYXkudmFsdWUgPD0gZGF5c19pbl9tb250aClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGF5LnZhbHVlID0gZGF5LnZhbHVlIC0gZGF5c19pbl9tb250aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWxlYXAgfHwgaSA8PSBIZWJyZXdEYXRlLkFEQVIpXHJcbiAgICAgIG1vbnRoLnZhbHVlID0gaTtcclxuICAgIGVsc2UgaWYgKGkgPT09IEhlYnJld0RhdGUuQURBUiArIDEpXHJcbiAgICAgIG1vbnRoLnZhbHVlID0gSGVicmV3RGF0ZS5BREFSX0I7XHJcbiAgICBlbHNlXHJcbiAgICAgIG1vbnRoLnZhbHVlID0gaSAtIDE7XHJcblxyXG4gICAgcmV0dXJuIGxlYXA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbXB1dGUgYSBIZWJyZXcgbGV0dGVyIHRvIGFkZCB0byBzdHJpbmcsIHJlcHJlc2VudGluZyBhIG51bWVyaWMgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJQb3NcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInVzZV9lbmRpbmdcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInF1b3RlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBkYXRlaGViX2lfMl9oKHZhbDogbnVtYmVyLCBzdHI6IHN0cmluZ1tdLCBzdHJQb3M6IG51bWJlciwgdXNlX2VuZGluZzogYm9vbGVhbiwgcXVvdGU6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgbGV0IGxldF9pZHg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbGVuOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHdoaWxlICh2YWwgPiAwKSB7XHJcbiAgICAgIGZvciAobGV0X2lkeCA9IEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzLmxlbmd0aDsgbGV0X2lkeCA+IDA7IGxldF9pZHggPSBsZXRfaWR4IC0gMSkge1xyXG4gICAgICAgIGxldCBsZXR0ZXI6IG51bWJlciA9IEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzW2xldF9pZHggLSAxXTtcclxuICAgICAgICBpZiAodmFsID49IGxldHRlcikge1xyXG4gICAgICAgICAgdmFsID0gdmFsIC0gbGV0dGVyO1xyXG4gICAgICAgICAgc3RyW3N0clBvcysrXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoSGVicmV3RGF0ZS5BTEVGLmNoYXJDb2RlQXQoMCkgKyBsZXRfaWR4IC0gMSk7XHJcbiAgICAgICAgICBsZW4gPSBsZW4gKyAxO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxlbiA+IDApIHtcclxuICAgICAgaWYgKGxlbiA+PSAyKSB7XHJcbiAgICAgICAgaWYgKHN0cltzdHJQb3MgLSAyXSA9PT0gJ9eZJylcclxuICAgICAgICAgIGlmIChzdHJbc3RyUG9zIC0gMV0gPT09ICfXlCcgfHwgc3RyW3N0clBvcyAtIDFdID09PSAn15UnKSB7XHJcbiAgICAgICAgICAgIHN0cltzdHJQb3MgLSAyXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoc3RyW3N0clBvcyAtIDJdLmNoYXJDb2RlQXQoMCkgLSAxKTtcclxuICAgICAgICAgICAgc3RyW3N0clBvcyAtIDFdID0gc3RyW3N0clBvcyAtIDFdICsgJ1xcdTAwMDEnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGaW5hbCBsZXR0ZXJzOiBvbmx5IGZyb20gJ9eeJy5cclxuICAgICAgaWYgKGxldF9pZHggPiAxMCAmJiB1c2VfZW5kaW5nKSB7XHJcbiAgICAgICAgaWYgKEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzW2xldF9pZHggLSAxXSA9PT0gSGVicmV3RGF0ZS5EQVRFSEVCX2xldHRlcnNbbGV0X2lkeCAtIDJdKSB7XHJcbiAgICAgICAgICBzdHJbc3RyUG9zIC0gMV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHN0cltzdHJQb3MgLSAxXS5jaGFyQ29kZUF0KDApIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocXVvdGUpIHtcclxuICAgICAgICBpZiAobGVuID09PSAxKVxyXG4gICAgICAgICAgc3RyW3N0clBvc10gPSAnXFwnJztcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHN0cltzdHJQb3NdID0gc3RyW3N0clBvcyAtIDFdO1xyXG4gICAgICAgICAgc3RyW3N0clBvcyAtIDFdID0gJ1wiJztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGVuID0gbGVuICsgMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ29udmVydCBIZWJyZXcgeWVhci9kYXkgdG8gYSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm91dFN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmdWxsX2xlblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaHllYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRyaW1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInVzZV9lbmRpbmdcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5sZW5ndGg8L3JldHVybnM+XHJcbiAgc3RhdGljIGRhdGVoZWJfMl9zdHIob3V0U3RyOiBzdHJpbmdbXSwgc3RyUG9zOiBudW1iZXIsIGxlbjogbnVtYmVyLCBvdXRfbGVuOiBSZWZQYXJhbTxudW1iZXI+LCBmdWxsX2xlbjogbnVtYmVyLCBoeWVhcjogbnVtYmVyLCB0cmltOiBib29sZWFuLCB1c2VfZW5kaW5nOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIGxldCBxdW90ZTogYm9vbGVhbiA9IGxlbiA+IGZ1bGxfbGVuICYmIG91dFN0cltzdHJQb3MgKyBmdWxsX2xlbl0gPT09IG91dFN0cltzdHJQb3NdO1xyXG4gICAgaWYgKHF1b3RlKVxyXG4gICAgICBmdWxsX2xlbiA9IGZ1bGxfbGVuICsgMTtcclxuICAgIGxldCBoZWJfbGVuOiBudW1iZXIgPSBIZWJyZXdEYXRlLmRhdGVoZWJfaV8yX2goaHllYXIgJSAxMDAwLCBvdXRTdHIsIHN0clBvcywgdXNlX2VuZGluZywgcXVvdGUpO1xyXG5cclxuICAgIGxldCByZW1fbGVuOiBudW1iZXIgPSBmdWxsX2xlbiAtIGhlYl9sZW47XHJcbiAgICBpZiAocmVtX2xlbiA+IDApIHtcclxuICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICBvdXRfbGVuLnZhbHVlID0gb3V0X2xlbi52YWx1ZSAtIHJlbV9sZW47XHJcbiAgICAgICAgbGV0IHRtcF9vdXRfbGVuOiBudW1iZXIgPSBsZW4gLSBmdWxsX2xlbjtcclxuICAgICAgICBpZiAodG1wX291dF9sZW4gPiAwKVxyXG4gICAgICAgICAgTWVtb3J5VXRpbC5jaGFyX21lbWNweShvdXRTdHIsIHN0clBvcyArIGhlYl9sZW4sIG91dFN0ciwgc3RyUG9zICsgZnVsbF9sZW4sIHRtcF9vdXRfbGVuKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBoZWJfbGVuID0gZnVsbF9sZW47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRG8gbm90IG92ZXIgdGhlIHN0cmluZyBsZW5ndGguIEl0IG1heSBiZSB3aGVuIFlZWVkgaW4gdGhlIGVuZC4gKERERCBNTU1NTSBZWVlZKVxyXG4gICAgICAgIGlmIChyZW1fbGVuID4gb3V0U3RyLmxlbmd0aCAtIHN0clBvcyAtIGhlYl9sZW4pXHJcbiAgICAgICAgICByZW1fbGVuID0gb3V0U3RyLmxlbmd0aCAtIHN0clBvcyAtIGhlYl9sZW47XHJcbiAgICAgICAgTWVtb3J5VXRpbC5jaGFyX21lbXNldChvdXRTdHIsIHN0clBvcyArIGhlYl9sZW4sICcgJywgLyonICcqL3JlbV9sZW4pO1xyXG4gICAgICAgIGhlYl9sZW4gPSBmdWxsX2xlbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhlYl9sZW47XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEN1dCB0aGUgbW9udGggc3RyaW5nIGZyb20gJ2NvbnN0JyBpbnRvIHNlcGFyYXRlIHZhbHVlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0TG9jYWxNb250aHMoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IG1vbnRoTGVuOiBudW1iZXIgPSBIZWJyZXdEYXRlLk1PTlRIX0xFTjtcclxuXHJcbiAgICBpZiAoSGVicmV3RGF0ZS5fbG9jYWxNb250aHNbMF0gPT09IG51bGwpIHtcclxuICAgICAgbGV0IG1vbnRoU3RyOiBzdHJpbmcgPSBFdmVudHMuR2V0TWVzc2FnZVN0cmluZyhNc2dJbnRlcmZhY2UuREFURUhFQl9NT05USF9TVFIpO1xyXG4gICAgICBpZiAobW9udGhTdHIgIT09IG51bGwpIHtcclxuICAgICAgICBIZWJyZXdEYXRlLl9sb2NhbE1vbnRoc1swXSA9IFwiICAgICAgIFwiO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPCBIZWJyZXdEYXRlLl9sb2NhbE1vbnRocy5sZW5ndGg7IGkgPSBpICsgMSlcclxuICAgICAgICAgIEhlYnJld0RhdGUuX2xvY2FsTW9udGhzW2ldID0gbW9udGhTdHIuc3Vic3RyKChpIC0gMSkgKiBtb250aExlbiwgaSAqIG1vbnRoTGVuIC0gKGkgLSAxKSAqIG1vbnRoTGVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIEhlYnJld0RhdGUuX2xvY2FsTW9udGhzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDdXQgdGhlIGRheSBvZiB3ZWVrIHN0cmluZyBmcm9tICdjb25zdCcgaW50byBzZXBhcmF0ZSB2YWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldExvY2FsRG93cygpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgZG93TGVuOiBudW1iZXIgPSBIZWJyZXdEYXRlLkRPV19MRU47XHJcblxyXG4gICAgaWYgKEhlYnJld0RhdGUuX2xvY2FsRG93c1swXSA9PT0gbnVsbCkge1xyXG4gICAgICBsZXQgZG93c1N0cjogc3RyaW5nID0gRXZlbnRzLkdldE1lc3NhZ2VTdHJpbmcoTXNnSW50ZXJmYWNlLkRBVEVIRUJfRE9XX1NUUik7XHJcbiAgICAgIGlmIChkb3dzU3RyICE9PSBudWxsKSB7XHJcbiAgICAgICAgSGVicmV3RGF0ZS5fbG9jYWxEb3dzWzBdID0gXCIgICAgIFwiO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPCBIZWJyZXdEYXRlLl9sb2NhbERvd3MubGVuZ3RoOyBpID0gaSArIDEpXHJcbiAgICAgICAgICBIZWJyZXdEYXRlLl9sb2NhbERvd3NbaV0gPSBkb3dzU3RyLnN1YnN0cigoaSAtIDEpICogZG93TGVuLCBpICogZG93TGVuIC0gKGkgLSAxKSAqIGRvd0xlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBIZWJyZXdEYXRlLl9sb2NhbERvd3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbnZlcnQgYSBoZWJyZXcgc3RyaW5nIC0+IGludGVnZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwb3NcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5jb252ZXJ0ZWQgdG8gaW50ZWdlcjwvcmV0dXJucz5cclxuICBzdGF0aWMgZGF0ZWhlYl9oXzJfaShzdHI6IHN0cmluZ1tdLCBsZW46IG51bWJlciwgcG9zOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IHZhbDogbnVtYmVyO1xyXG4gICAgbGV0IGhhc18xX3RvXzk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBoYXNfMTBfdG9fOTA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBoYXNfMTAwX3RvXzMwMDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IGNudF80MDA6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbGFzdF92YWw6IG51bWJlciA9IDEwMDA7XHJcbiAgICBsZXQgbGV0X3ZhbDogbnVtYmVyO1xyXG5cclxuICAgIGZvciAodmFsID0gMDsgbGVuID4gMCAmJiBwb3MgPCBzdHIubGVuZ3RoOyBwb3MrKywgbGVuLS0pXHJcbiAgICAgIGlmIChzdHJbcG9zXSA+PSBIZWJyZXdEYXRlLkFMRUYgJiYgc3RyW3Bvc10gPD0gSGVicmV3RGF0ZS5UQVYpIHtcclxuICAgICAgICBsZXRfdmFsID0gSGVicmV3RGF0ZS5EQVRFSEVCX2xldHRlcnNbPG51bWJlcj4oc3RyW3Bvc10uY2hhckNvZGVBdCgwKSAtIEhlYnJld0RhdGUuQUxFRi5jaGFyQ29kZUF0KDApKV07XHJcbiAgICAgICAgaWYgKGxldF92YWwgPiBsYXN0X3ZhbClcclxuICAgICAgICAgIHJldHVybiAwO1xyXG5cclxuICAgICAgICBpZiAobGV0X3ZhbCA9PT0gNDAwKSB7XHJcbiAgICAgICAgICBpZiAoY250XzQwMCA9PT0gMilcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICBjbnRfNDAwID0gY250XzQwMCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxldF92YWwgPj0gMTAwKSB7XHJcbiAgICAgICAgICBpZiAoaGFzXzEwMF90b18zMDApXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgaGFzXzEwMF90b18zMDAgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobGV0X3ZhbCA+PSAxMCkge1xyXG4gICAgICAgICAgaWYgKGhhc18xMF90b185MClcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICBoYXNfMTBfdG9fOTAgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChoYXNfMV90b185KSB7XHJcbiAgICAgICAgICAgIGlmIChoYXNfMTBfdG9fOTAgfHwgbGFzdF92YWwgIT09IDkpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIGlmIChsZXRfdmFsICE9PSA2ICYmIGxldF92YWwgIT09IDcpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBoYXNfMV90b185ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsID0gdmFsICsgbGV0X3ZhbDtcclxuICAgICAgICBsYXN0X3ZhbCA9IGxldF92YWw7XHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ29udmVydCBhIEhlYnJldyBkYXRlICh5ZWFyLCBtb250aCwgZGF5KSB0byBNYWdpYyBpbnRlcm5hbCBkYXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtb250aFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF5XCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBkYXRlaGViXzJfZCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogbnVtYmVyIHtcclxuXHJcbiAgICBpZiAoZGF5ID09PSAwICYmIG1vbnRoID09PSAwICYmIHllYXIgPT09IDApXHJcbiAgICAgIHJldHVybiAwO1xyXG5cclxuICAgIGlmIChkYXkgPT09IDAgfHwgbW9udGggPT09IDAgfHwgeWVhciA9PT0gMClcclxuICAgICAgcmV0dXJuIDEwMDAwMDAwMDA7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBIb3cgbWFueSBkYXlzIGZyb20gY3JlYXRpb24sIHRvIGJlZ2luaW5nIG9mIHRoZSB5ZWFyID8gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGRheXNfZnJvbV9jcmVhdGlvbjogbnVtYmVyID0gSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfc3RhcnQoeWVhcik7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogSG93IGRheXMgaW4gdGhlIHllYXIgPyAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGRheXNfaW5feWVhcjogbnVtYmVyID0gSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfc3RhcnQoeWVhciArIDEpIC0gZGF5c19mcm9tX2NyZWF0aW9uO1xyXG4gICAgbGV0IGxlYXA6IGJvb2xlYW4gPSBkYXlzX2luX3llYXIgPiAzNTU7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBBZGQgbW9udGggKyBkYXkgKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgaWYgKGxlYXAgJiYgbW9udGggPiBIZWJyZXdEYXRlLkFEQVIpXHJcbiAgICAgIGlmIChtb250aCA9PT0gSGVicmV3RGF0ZS5BREFSX0IpXHJcbiAgICAgICAgbW9udGggPSBIZWJyZXdEYXRlLkFEQVIgKyAxO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgbW9udGggPSBtb250aCArIDE7XHJcblxyXG4gICAgaWYgKGRheSA+IEhlYnJld0RhdGUuZGF0ZWhlYl9kYXlzX2luX21vbnRoKG1vbnRoLCBsZWFwLCBkYXlzX2luX3llYXIpKVxyXG4gICAgICByZXR1cm4gMTAwMDAwMDAwMDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDwgbW9udGg7IGkgPSBpICsgMSlcclxuICAgICAgZGF5c19mcm9tX2NyZWF0aW9uID0gZGF5c19mcm9tX2NyZWF0aW9uICsgSGVicmV3RGF0ZS5kYXRlaGViX2RheXNfaW5fbW9udGgoaSwgbGVhcCwgZGF5c19pbl95ZWFyKTtcclxuICAgIGRheXNfZnJvbV9jcmVhdGlvbiA9IGRheXNfZnJvbV9jcmVhdGlvbiArIGRheTtcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogQ29udmVydCB0byBDaHJpc3RpYW4gY2FsZW5kZXIgKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICByZXR1cm4gTWF0aC5tYXgoZGF5c19mcm9tX2NyZWF0aW9uIC0gSGVicmV3RGF0ZS5EQVlTX1RJTF9KRVNVUywgMCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVicmV3RGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9ndWkvSGVicmV3RGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFVBQVU7SUFDYixNQUFNLENBQUMsY0FBYyxHQUFXLElBQUksQ0FBQztJQUNyQyxNQUFNLENBQUMsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDL0IsTUFBTSxDQUFDLGlCQUFpQixHQUFXLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUUsTUFBTSxDQUFDLGVBQWUsR0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuSCxNQUFNLENBQUMsb0JBQW9CLEdBQVcsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBVyxFQUFFLENBQUM7SUFDekMsTUFBTSxDQUFDLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUN6QyxNQUFNLENBQUMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxlQUFlLEdBQVcsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckcs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QUksR0FBWSxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBS3ZDLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSTtZQUNqQyxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTTtnQkFDN0IsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDOztnQkFFNUIsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFdEIsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO1lBQ25FLE9BQU8sVUFBVSxDQUFDO1FBRXBCLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQzFDLGtCQUFrQixHQUFHLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BHLGtCQUFrQixHQUFHLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztRQUs5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSAnLi4vLi4vRXZlbnRzJztcclxuaW1wb3J0IHsgTXNnSW50ZXJmYWNlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IFJlZlBhcmFtfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IE1lbW9yeVV0aWwgfSBmcm9tICcuLi8uLi91dGlsL01lbW9yeVV0aWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEhlYnJld0RhdGUge1xyXG4gIHByaXZhdGUgc3RhdGljIFBBUlRTX1BFUl9IT1VSOiBudW1iZXIgPSAxMDgwO1xyXG4gIHByaXZhdGUgc3RhdGljIEhPVVJTX1BFUl9EQVk6IG51bWJlciA9IDI0O1xyXG4gIHByaXZhdGUgc3RhdGljIFBBUlRTX1BFUl9EQVk6IG51bWJlciA9IChIZWJyZXdEYXRlLkhPVVJTX1BFUl9EQVkgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9IT1VSKTtcclxuICBwcml2YXRlIHN0YXRpYyBNT05USF9EQVlTOiBudW1iZXIgPSAyOTtcclxuICBwcml2YXRlIHN0YXRpYyBNT05USF9FWFRSQV9QQVJUUzogbnVtYmVyID0gKDEyICogSGVicmV3RGF0ZS5QQVJUU19QRVJfSE9VUiArIDc5Myk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEFSVFNfUEVSX01PTlRIOiBudW1iZXIgPSAoSGVicmV3RGF0ZS5NT05USF9EQVlTICogSGVicmV3RGF0ZS5QQVJUU19QRVJfREFZICsgSGVicmV3RGF0ZS5NT05USF9FWFRSQV9QQVJUUyk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhTX1BFUl9OT1JNX1lFQVI6IG51bWJlciA9IDEyO1xyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIU19QRVJfTEVBUF9ZRUFSOiBudW1iZXIgPSAxMztcclxuICBwcml2YXRlIHN0YXRpYyBOT1JNX1lFQVJTX1BFUl9DWUNMRTogbnVtYmVyID0gMTI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTEVBUF9ZRUFSU19QRVJfQ1lDTEU6IG51bWJlciA9IDc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgWUVBUlNfUEVSX0NZQ0xFOiBudW1iZXIgPSAoSGVicmV3RGF0ZS5OT1JNX1lFQVJTX1BFUl9DWUNMRSArIEhlYnJld0RhdGUuTEVBUF9ZRUFSU19QRVJfQ1lDTEUpO1xyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIU19QRVJfQ1lDTEU6IG51bWJlciA9IChIZWJyZXdEYXRlLk5PUk1fWUVBUlNfUEVSX0NZQ0xFICogSGVicmV3RGF0ZS5NT05USFNfUEVSX05PUk1fWUVBUiArIEhlYnJld0RhdGUuTEVBUF9ZRUFSU19QRVJfQ1lDTEUgKiBIZWJyZXdEYXRlLk1PTlRIU19QRVJfTEVBUF9ZRUFSKTtcclxuICBwcml2YXRlIHN0YXRpYyBQQVJUU19QRVJfTEVBUF9ZRUFSOiBudW1iZXIgPSAoSGVicmV3RGF0ZS5NT05USFNfUEVSX0xFQVBfWUVBUiAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX01PTlRIKTtcclxuICBwcml2YXRlIHN0YXRpYyBEQVlTX1BFUl9MRUFQX1lFQVI6IG51bWJlciA9IE1hdGguZmxvb3IoSGVicmV3RGF0ZS5QQVJUU19QRVJfTEVBUF9ZRUFSIC8gSGVicmV3RGF0ZS5QQVJUU19QRVJfREFZKTtcclxuICBwcml2YXRlIHN0YXRpYyBQQVJUU19QRVJfQ1lDTEU6IG51bWJlciA9IChIZWJyZXdEYXRlLk1PTlRIU19QRVJfQ1lDTEUgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9NT05USCk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgREFZU19QRVJfQ1lDTEU6IG51bWJlciA9IE1hdGguZmxvb3IoSGVicmV3RGF0ZS5QQVJUU19QRVJfQ1lDTEUgLyBIZWJyZXdEYXRlLlBBUlRTX1BFUl9EQVkpO1xyXG4gIHByaXZhdGUgc3RhdGljIENSRUFUSU9OX0RPVzogbnVtYmVyID0gMjtcclxuICBwcml2YXRlIHN0YXRpYyBDUkVBVElPTl9QQVJUUzogbnVtYmVyID0gKDUgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9IT1VSICsgMjA0KTtcclxuICBwcml2YXRlIHN0YXRpYyBEQVlTX1RJTF9KRVNVUzogbnVtYmVyID0gMTM3MzQyODtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgSEVTSFZBTjogbnVtYmVyID0gMjtcclxuICBwcml2YXRlIHN0YXRpYyBLSVNMRVY6IG51bWJlciA9IDM7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQURBUjogbnVtYmVyID0gNjtcclxuICBwcml2YXRlIHN0YXRpYyBBREFSX0I6IG51bWJlciA9IDEzO1xyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAvKiBIZWJyZXcgbnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiBlYWNoIEhlYnJldyBsZXR0ZXIgKi9cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICBwcml2YXRlIHN0YXRpYyBEQVRFSEVCX2xldHRlcnM6IG51bWJlcltdID0gW1xyXG4gICAgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDIwLCAyMCwgMzAsIDQwLCA0MCwgNTAsIDUwLCA2MCwgNzAsXHJcbiAgICA4MCwgODAsIDkwLCA5MCwgMTAwLCAyMDAsIDMwMCwgNDAwXHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUxFRjogc3RyaW5nID0gJ9eQJztcclxuICBwcml2YXRlIHN0YXRpYyBUQVY6IHN0cmluZyA9ICfXqic7XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIC8qIE4gb2YgTW9udGhzIGZyb20gYmVnaW5uaW5nIG9mIDE5IHllYXJzIGN5Y2xlLCB0byAqL1xyXG4gIC8qIHRoZSBiZWdpbm5pbmcgb2YgYSB5ZWFyIChpbiB0aGUgcmFuZ2UgMCAtIDE4KSAgICAqL1xyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbW9udGhzX246IG51bWJlcltdID0gW1xyXG4gICAgMCwgMTIsIDI0LCAzNywgNDksIDYxLCA3NCwgODYsIDk5LCAxMTEsIDEyMywgMTM2LCAxNDgsIDE2MCwgMTczLCAxODUsIDE5NywgMjEwLCAyMjIsXHJcbiAgICAyMzVcclxuICBdO1xyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAvKiBOIG9mIGRheXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGEgeWVhciB0byB0aGUgYmVnaW5uaW5nIG9mIGEgbW9udGggKi9cclxuICAvKiBUaXNocmVpLCBIZXNodmFuLCBLaXNsZXYsIFRldmV0LCBTaHZhdCwgQWRhciwgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAvKiBOaXNhbiwgICBJeWFyLCAgICBTaXZhbiwgIFRhbXV6LCBBdiwgICAgRWx1bCAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICBwcml2YXRlIHN0YXRpYyBEQVRFSEVCX25vcm1fZGF5c19pbl9tb250aDogbnVtYmVyW10gPSBbXHJcbiAgICAzMCwgMjksIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5LCAwXHJcbiAgXTtcclxuICBwcml2YXRlIHN0YXRpYyBEQVRFSEVCX2xlYXBfZGF5c19pbl9tb250aDogbnVtYmVyW10gPSBbXHJcbiAgICAzMCwgMjksIDMwLCAyOSwgMzAsIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOVxyXG4gIF07XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIX0xFTjogbnVtYmVyID0gNTtcclxuICBwcml2YXRlIHN0YXRpYyBfbG9jYWxNb250aHM6IHN0cmluZ1tdID0gbmV3IEFycmF5PHN0cmluZz4oMTUpO1xyXG4gIHByaXZhdGUgc3RhdGljIERPV19MRU46IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvY2FsRG93czogc3RyaW5nW10gPSBuZXcgQXJyYXk8c3RyaW5nPig4KTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjYWxjdWxhdGUgaWYgeWVhciBpcyBsZWFwXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRhdGVoZWJfeWVhcl9pc19sZWFwKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgeWVhciA9IHllYXIgJSBIZWJyZXdEYXRlLllFQVJTX1BFUl9DWUNMRTtcclxuICAgIHJldHVybiAoSGVicmV3RGF0ZS5EQVRFSEVCX21vbnRoc19uWyh5ZWFyICsgMSldIC0gSGVicmV3RGF0ZS5EQVRFSEVCX21vbnRoc19uW3llYXJdID09PSAxMyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNhbGN1bGF0ZSBkYXlzIGluIG1vbnRoXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtb250aFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVhcFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF5c19pbl95ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRhdGVoZWJfZGF5c19pbl9tb250aChtb250aDogbnVtYmVyLCBsZWFwOiBib29sZWFuLCBkYXlzX2luX3llYXI6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgZGF5c19pbl9tb250aDogbnVtYmVyID0gbGVhcCA/IEhlYnJld0RhdGUuREFURUhFQl9sZWFwX2RheXNfaW5fbW9udGhbbW9udGggLSAxXSA6IEhlYnJld0RhdGUuREFURUhFQl9ub3JtX2RheXNfaW5fbW9udGhbbW9udGggLSAxXTtcclxuXHJcbiAgICBpZiAobGVhcClcclxuICAgICAgZGF5c19pbl95ZWFyID0gZGF5c19pbl95ZWFyIC0gMzA7XHJcblxyXG4gICAgc3dpdGNoIChkYXlzX2luX3llYXIpIHtcclxuICAgICAgY2FzZSAzNTM6XHJcbiAgICAgICAgaWYgKG1vbnRoID09PSBIZWJyZXdEYXRlLktJU0xFVilcclxuICAgICAgICAgIGRheXNfaW5fbW9udGggPSAyOTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzNTU6XHJcbiAgICAgICAgaWYgKG1vbnRoID09PSBIZWJyZXdEYXRlLkhFU0hWQU4pXHJcbiAgICAgICAgICBkYXlzX2luX21vbnRoID0gMzA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF5c19pbl9tb250aDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2FsY3VsYXRlIGRheXMgZnJvbSBjcmVhdGlvbiB0aWxsIHN0YXJ0IG9mIHRoZSB5ZWFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRhdGVoZWJfeWVhcl9zdGFydCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIGNhbGN1bGF0ZSBcIm1vbGFkXCIgb2YgeWVhciAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgeWVhciA9IHllYXIgLSAxO1xyXG4gICAgbGV0IGN5Y2xlOiBudW1iZXIgPSBNYXRoLmZsb29yKHllYXIgLyBIZWJyZXdEYXRlLllFQVJTX1BFUl9DWUNMRSk7XHJcbiAgICB5ZWFyID0geWVhciAlIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEhvdyBtYW55IG1vbnRocyBwYXNzZWQgc2luY2UgY3JlYXRpb24gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBtb250aHM6IG51bWJlciA9IGN5Y2xlICogSGVicmV3RGF0ZS5NT05USFNfUEVSX0NZQ0xFICsgSGVicmV3RGF0ZS5EQVRFSEVCX21vbnRoc19uW3llYXJdO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBIb3cgbWFueSBkYXlzIHBhc3NlZCBzaW5jZSBjcmVhdGlvbiAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBkYXlzOiBudW1iZXIgPSBtb250aHMgKiBIZWJyZXdEYXRlLk1PTlRIX0RBWVM7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBIb3cgbWFueSBleHRyYSBwYXJ0cyBwYXNzZWQgc2luY2UgY3JlYXRpb24gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IHBhcnRzOiBudW1iZXIgPSBtb250aHMgKiBIZWJyZXdEYXRlLk1PTlRIX0VYVFJBX1BBUlRTICsgSGVicmV3RGF0ZS5DUkVBVElPTl9QQVJUUztcclxuXHJcbiAgICBkYXlzID0gZGF5cyArIE1hdGguZmxvb3IocGFydHMgLyBIZWJyZXdEYXRlLlBBUlRTX1BFUl9EQVkpO1xyXG4gICAgcGFydHMgPSBwYXJ0cyAlIEhlYnJld0RhdGUuUEFSVFNfUEVSX0RBWTtcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBSZW1pbmRlciA+IDMvNCBvZiBhIGRheSA/ICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICBpZiAoPG51bWJlcj5wYXJ0cyA+PSBNYXRoLmZsb29yKEhlYnJld0RhdGUuUEFSVFNfUEVSX0RBWSAqIDMgLyA0KSkge1xyXG4gICAgICBwYXJ0cyA9IDA7XHJcbiAgICAgIGRheXMgPSBkYXlzICsgMTtcclxuICAgIH1cclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIHZlcmlmeSBkYXktb2Ytd2VlayBub3QgU3VuZGF5LCBXZWRuZXNkYXksIEZyaWRheSAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgZG93OiBudW1iZXIgPSAoZGF5cyAtIDEgKyBIZWJyZXdEYXRlLkNSRUFUSU9OX0RPVykgJSA3ICsgMTtcclxuICAgIGlmICgoZG93ID09PSAxKSB8fCAoZG93ID09PSA0KSB8fCAoZG93ID09PSA2KSkge1xyXG4gICAgICBwYXJ0cyA9IDA7XHJcbiAgICAgIGRheXMgPSBkYXlzICsgMTtcclxuICAgIH1cclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogdmVyaWZ5IGlmIHllYXIgdG9vIGxvbmcvbG9uZyAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGlmICghSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfaXNfbGVhcCg8bnVtYmVyPnllYXIpKSB7XHJcbiAgICAgIGlmIChkb3cgPT09IDMgJiYgPG51bWJlcj5wYXJ0cyA+PSAoOSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIgKyAyMDQpKVxyXG4gICAgICAgIGRheXMgPSBkYXlzICsgMjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfaXNfbGVhcCg8bnVtYmVyPnllYXIgKyBIZWJyZXdEYXRlLllFQVJTX1BFUl9DWUNMRSAtIDEpKSB7XHJcbiAgICAgIGlmIChkb3cgPT09IDIgJiYgPG51bWJlcj5wYXJ0cyA+PSAoMTUgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9IT1VSICsgNTg5KSlcclxuICAgICAgICBkYXlzID0gZGF5cyArIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRheXM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbnZlcnQgYSBNYWdpYyBpbnRlcm5hbCBEYXRlIHRvIGEgSGVicmV3IGRhdGUgKHllYXIsIG1vbnRoLCBkYXkpXHJcbiAgLy8vIE5vdGUgdGhhdCBBREFSX0IgaXMgcmVwcmVzZW50ZWQgYnkgbW9udGggPSAxM1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF0ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGRheVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaG1vbnRoXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoeWVhclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRSVUUgaWYgbGVhcCB5ZWFyPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBkYXRlaGViXzRfZChkYXRlOiBudW1iZXIsIGRheTogUmVmUGFyYW08bnVtYmVyPiwgbW9udGg6IFJlZlBhcmFtPG51bWJlcj4sIHllYXI6IFJlZlBhcmFtPG51bWJlcj4pOiBib29sZWFuIHtcclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogRGF5cyBmcm9tIGNyZWF0aW9uICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGRhdGUgPSBkYXRlICsgSGVicmV3RGF0ZS5EQVlTX1RJTF9KRVNVUztcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEd1ZXNzIGEgeWVhciAoPD0gY29ycmVjdCB5ZWFyKSAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgY3ljbGU6IG51bWJlciA9IE1hdGguZmxvb3IoZGF0ZSAvIChIZWJyZXdEYXRlLkRBWVNfUEVSX0NZQ0xFICsgMSkpO1xyXG4gICAgbGV0IGRheXM6IG51bWJlciA9IGRhdGUgJSAoSGVicmV3RGF0ZS5EQVlTX1BFUl9DWUNMRSArIDEpO1xyXG4gICAgeWVhci52YWx1ZSA9IGN5Y2xlICogSGVicmV3RGF0ZS5ZRUFSU19QRVJfQ1lDTEU7XHJcbiAgICB5ZWFyLnZhbHVlID0geWVhci52YWx1ZSArIE1hdGguZmxvb3IoZGF5cyAvIChIZWJyZXdEYXRlLkRBWVNfUEVSX0xFQVBfWUVBUiArIDEpKTtcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogQWR2YW5jZSB5ZWFyIHVudGlsIGNvcnJlY3QgKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgbmV4dF95ZWFyX3N0YXJ0OiBudW1iZXI7XHJcbiAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICBuZXh0X3llYXJfc3RhcnQgPSBIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9zdGFydCh5ZWFyLnZhbHVlICsgMSk7XHJcbiAgICAgIGlmIChuZXh0X3llYXJfc3RhcnQgPj0gZGF0ZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgeWVhci52YWx1ZSA9IHllYXIudmFsdWUgKyAxO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJfeWVhcl9zdGFydDogbnVtYmVyID0gSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfc3RhcnQoeWVhci52YWx1ZSk7XHJcbiAgICBkYXkudmFsdWUgPSBkYXRlIC0gY3Vycl95ZWFyX3N0YXJ0O1xyXG4gICAgbGV0IGRheXNfaW5feWVhcjogbnVtYmVyID0gbmV4dF95ZWFyX3N0YXJ0IC0gY3Vycl95ZWFyX3N0YXJ0O1xyXG4gICAgbGV0IGxlYXA6IGJvb2xlYW4gPSBkYXlzX2luX3llYXIgPiAzNTU7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogRmluZCBNb250aCAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuICAgIGZvciAoaSA9IDE7IGkgPCAxMzsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBkYXlzX2luX21vbnRoOiBudW1iZXIgPSBIZWJyZXdEYXRlLmRhdGVoZWJfZGF5c19pbl9tb250aChpLCBsZWFwLCBkYXlzX2luX3llYXIpO1xyXG4gICAgICBpZiAoZGF5LnZhbHVlIDw9IGRheXNfaW5fbW9udGgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRheS52YWx1ZSA9IGRheS52YWx1ZSAtIGRheXNfaW5fbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFsZWFwIHx8IGkgPD0gSGVicmV3RGF0ZS5BREFSKVxyXG4gICAgICBtb250aC52YWx1ZSA9IGk7XHJcbiAgICBlbHNlIGlmIChpID09PSBIZWJyZXdEYXRlLkFEQVIgKyAxKVxyXG4gICAgICBtb250aC52YWx1ZSA9IEhlYnJld0RhdGUuQURBUl9CO1xyXG4gICAgZWxzZVxyXG4gICAgICBtb250aC52YWx1ZSA9IGkgLSAxO1xyXG5cclxuICAgIHJldHVybiBsZWFwO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDb21wdXRlIGEgSGVicmV3IGxldHRlciB0byBhZGQgdG8gc3RyaW5nLCByZXByZXNlbnRpbmcgYSBudW1lcmljIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyUG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ1c2VfZW5kaW5nXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJxdW90ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZGF0ZWhlYl9pXzJfaCh2YWw6IG51bWJlciwgc3RyOiBzdHJpbmdbXSwgc3RyUG9zOiBudW1iZXIsIHVzZV9lbmRpbmc6IGJvb2xlYW4sIHF1b3RlOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIGxldCBsZXRfaWR4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGxlbjogbnVtYmVyID0gMDtcclxuXHJcbiAgICB3aGlsZSAodmFsID4gMCkge1xyXG4gICAgICBmb3IgKGxldF9pZHggPSBIZWJyZXdEYXRlLkRBVEVIRUJfbGV0dGVycy5sZW5ndGg7IGxldF9pZHggPiAwOyBsZXRfaWR4ID0gbGV0X2lkeCAtIDEpIHtcclxuICAgICAgICBsZXQgbGV0dGVyOiBudW1iZXIgPSBIZWJyZXdEYXRlLkRBVEVIRUJfbGV0dGVyc1tsZXRfaWR4IC0gMV07XHJcbiAgICAgICAgaWYgKHZhbCA+PSBsZXR0ZXIpIHtcclxuICAgICAgICAgIHZhbCA9IHZhbCAtIGxldHRlcjtcclxuICAgICAgICAgIHN0cltzdHJQb3MrK10gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKEhlYnJld0RhdGUuQUxFRi5jaGFyQ29kZUF0KDApICsgbGV0X2lkeCAtIDEpO1xyXG4gICAgICAgICAgbGVuID0gbGVuICsgMTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChsZW4gPiAwKSB7XHJcbiAgICAgIGlmIChsZW4gPj0gMikge1xyXG4gICAgICAgIGlmIChzdHJbc3RyUG9zIC0gMl0gPT09ICfXmScpXHJcbiAgICAgICAgICBpZiAoc3RyW3N0clBvcyAtIDFdID09PSAn15QnIHx8IHN0cltzdHJQb3MgLSAxXSA9PT0gJ9eVJykge1xyXG4gICAgICAgICAgICBzdHJbc3RyUG9zIC0gMl0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHN0cltzdHJQb3MgLSAyXS5jaGFyQ29kZUF0KDApIC0gMSk7XHJcbiAgICAgICAgICAgIHN0cltzdHJQb3MgLSAxXSA9IHN0cltzdHJQb3MgLSAxXSArICdcXHUwMDAxJztcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRmluYWwgbGV0dGVyczogb25seSBmcm9tICfXnicuXHJcbiAgICAgIGlmIChsZXRfaWR4ID4gMTAgJiYgdXNlX2VuZGluZykge1xyXG4gICAgICAgIGlmIChIZWJyZXdEYXRlLkRBVEVIRUJfbGV0dGVyc1tsZXRfaWR4IC0gMV0gPT09IEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzW2xldF9pZHggLSAyXSkge1xyXG4gICAgICAgICAgc3RyW3N0clBvcyAtIDFdID0gU3RyaW5nLmZyb21DaGFyQ29kZShzdHJbc3RyUG9zIC0gMV0uY2hhckNvZGVBdCgwKSAtIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHF1b3RlKSB7XHJcbiAgICAgICAgaWYgKGxlbiA9PT0gMSlcclxuICAgICAgICAgIHN0cltzdHJQb3NdID0gJ1xcJyc7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzdHJbc3RyUG9zXSA9IHN0cltzdHJQb3MgLSAxXTtcclxuICAgICAgICAgIHN0cltzdHJQb3MgLSAxXSA9ICdcIic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxlbiA9IGxlbiArIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsZW47XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbnZlcnQgSGVicmV3IHllYXIvZGF5IHRvIGEgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvdXRTdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZnVsbF9sZW5cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImh5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0cmltXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ1c2VfZW5kaW5nXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+bGVuZ3RoPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBkYXRlaGViXzJfc3RyKG91dFN0cjogc3RyaW5nW10sIHN0clBvczogbnVtYmVyLCBsZW46IG51bWJlciwgb3V0X2xlbjogUmVmUGFyYW08bnVtYmVyPiwgZnVsbF9sZW46IG51bWJlciwgaHllYXI6IG51bWJlciwgdHJpbTogYm9vbGVhbiwgdXNlX2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICBsZXQgcXVvdGU6IGJvb2xlYW4gPSBsZW4gPiBmdWxsX2xlbiAmJiBvdXRTdHJbc3RyUG9zICsgZnVsbF9sZW5dID09PSBvdXRTdHJbc3RyUG9zXTtcclxuICAgIGlmIChxdW90ZSlcclxuICAgICAgZnVsbF9sZW4gPSBmdWxsX2xlbiArIDE7XHJcbiAgICBsZXQgaGViX2xlbjogbnVtYmVyID0gSGVicmV3RGF0ZS5kYXRlaGViX2lfMl9oKGh5ZWFyICUgMTAwMCwgb3V0U3RyLCBzdHJQb3MsIHVzZV9lbmRpbmcsIHF1b3RlKTtcclxuXHJcbiAgICBsZXQgcmVtX2xlbjogbnVtYmVyID0gZnVsbF9sZW4gLSBoZWJfbGVuO1xyXG4gICAgaWYgKHJlbV9sZW4gPiAwKSB7XHJcbiAgICAgIGlmICh0cmltKSB7XHJcbiAgICAgICAgb3V0X2xlbi52YWx1ZSA9IG91dF9sZW4udmFsdWUgLSByZW1fbGVuO1xyXG4gICAgICAgIGxldCB0bXBfb3V0X2xlbjogbnVtYmVyID0gbGVuIC0gZnVsbF9sZW47XHJcbiAgICAgICAgaWYgKHRtcF9vdXRfbGVuID4gMClcclxuICAgICAgICAgIE1lbW9yeVV0aWwuY2hhcl9tZW1jcHkob3V0U3RyLCBzdHJQb3MgKyBoZWJfbGVuLCBvdXRTdHIsIHN0clBvcyArIGZ1bGxfbGVuLCB0bXBfb3V0X2xlbik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgaGViX2xlbiA9IGZ1bGxfbGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIERvIG5vdCBvdmVyIHRoZSBzdHJpbmcgbGVuZ3RoLiBJdCBtYXkgYmUgd2hlbiBZWVlZIGluIHRoZSBlbmQuIChEREQgTU1NTU0gWVlZWSlcclxuICAgICAgICBpZiAocmVtX2xlbiA+IG91dFN0ci5sZW5ndGggLSBzdHJQb3MgLSBoZWJfbGVuKVxyXG4gICAgICAgICAgcmVtX2xlbiA9IG91dFN0ci5sZW5ndGggLSBzdHJQb3MgLSBoZWJfbGVuO1xyXG4gICAgICAgIE1lbW9yeVV0aWwuY2hhcl9tZW1zZXQob3V0U3RyLCBzdHJQb3MgKyBoZWJfbGVuLCAnICcsIC8qJyAnKi9yZW1fbGVuKTtcclxuICAgICAgICBoZWJfbGVuID0gZnVsbF9sZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBoZWJfbGVuO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDdXQgdGhlIG1vbnRoIHN0cmluZyBmcm9tICdjb25zdCcgaW50byBzZXBhcmF0ZSB2YWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldExvY2FsTW9udGhzKCk6IHN0cmluZ1tdIHtcclxuICAgIGxldCBtb250aExlbjogbnVtYmVyID0gSGVicmV3RGF0ZS5NT05USF9MRU47XHJcblxyXG4gICAgaWYgKEhlYnJld0RhdGUuX2xvY2FsTW9udGhzWzBdID09PSBudWxsKSB7XHJcbiAgICAgIGxldCBtb250aFN0cjogc3RyaW5nID0gRXZlbnRzLkdldE1lc3NhZ2VTdHJpbmcoTXNnSW50ZXJmYWNlLkRBVEVIRUJfTU9OVEhfU1RSKTtcclxuICAgICAgaWYgKG1vbnRoU3RyICE9PSBudWxsKSB7XHJcbiAgICAgICAgSGVicmV3RGF0ZS5fbG9jYWxNb250aHNbMF0gPSBcIiAgICAgICBcIjtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDwgSGVicmV3RGF0ZS5fbG9jYWxNb250aHMubGVuZ3RoOyBpID0gaSArIDEpXHJcbiAgICAgICAgICBIZWJyZXdEYXRlLl9sb2NhbE1vbnRoc1tpXSA9IG1vbnRoU3RyLnN1YnN0cigoaSAtIDEpICogbW9udGhMZW4sIGkgKiBtb250aExlbiAtIChpIC0gMSkgKiBtb250aExlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBIZWJyZXdEYXRlLl9sb2NhbE1vbnRocztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ3V0IHRoZSBkYXkgb2Ygd2VlayBzdHJpbmcgZnJvbSAnY29uc3QnIGludG8gc2VwYXJhdGUgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRMb2NhbERvd3MoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGRvd0xlbjogbnVtYmVyID0gSGVicmV3RGF0ZS5ET1dfTEVOO1xyXG5cclxuICAgIGlmIChIZWJyZXdEYXRlLl9sb2NhbERvd3NbMF0gPT09IG51bGwpIHtcclxuICAgICAgbGV0IGRvd3NTdHI6IHN0cmluZyA9IEV2ZW50cy5HZXRNZXNzYWdlU3RyaW5nKE1zZ0ludGVyZmFjZS5EQVRFSEVCX0RPV19TVFIpO1xyXG4gICAgICBpZiAoZG93c1N0ciAhPT0gbnVsbCkge1xyXG4gICAgICAgIEhlYnJld0RhdGUuX2xvY2FsRG93c1swXSA9IFwiICAgICBcIjtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDwgSGVicmV3RGF0ZS5fbG9jYWxEb3dzLmxlbmd0aDsgaSA9IGkgKyAxKVxyXG4gICAgICAgICAgSGVicmV3RGF0ZS5fbG9jYWxEb3dzW2ldID0gZG93c1N0ci5zdWJzdHIoKGkgLSAxKSAqIGRvd0xlbiwgaSAqIGRvd0xlbiAtIChpIC0gMSkgKiBkb3dMZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSGVicmV3RGF0ZS5fbG9jYWxEb3dzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDb252ZXJ0IGEgaGVicmV3IHN0cmluZyAtPiBpbnRlZ2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+Y29udmVydGVkIHRvIGludGVnZXI8L3JldHVybnM+XHJcbiAgc3RhdGljIGRhdGVoZWJfaF8yX2koc3RyOiBzdHJpbmdbXSwgbGVuOiBudW1iZXIsIHBvczogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCB2YWw6IG51bWJlcjtcclxuICAgIGxldCBoYXNfMV90b185OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzXzEwX3RvXzkwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgaGFzXzEwMF90b18zMDA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBjbnRfNDAwOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGxhc3RfdmFsOiBudW1iZXIgPSAxMDAwO1xyXG4gICAgbGV0IGxldF92YWw6IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKHZhbCA9IDA7IGxlbiA+IDAgJiYgcG9zIDwgc3RyLmxlbmd0aDsgcG9zKyssIGxlbi0tKVxyXG4gICAgICBpZiAoc3RyW3Bvc10gPj0gSGVicmV3RGF0ZS5BTEVGICYmIHN0cltwb3NdIDw9IEhlYnJld0RhdGUuVEFWKSB7XHJcbiAgICAgICAgbGV0X3ZhbCA9IEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzWzxudW1iZXI+KHN0cltwb3NdLmNoYXJDb2RlQXQoMCkgLSBIZWJyZXdEYXRlLkFMRUYuY2hhckNvZGVBdCgwKSldO1xyXG4gICAgICAgIGlmIChsZXRfdmFsID4gbGFzdF92YWwpXHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuXHJcbiAgICAgICAgaWYgKGxldF92YWwgPT09IDQwMCkge1xyXG4gICAgICAgICAgaWYgKGNudF80MDAgPT09IDIpXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgY250XzQwMCA9IGNudF80MDAgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChsZXRfdmFsID49IDEwMCkge1xyXG4gICAgICAgICAgaWYgKGhhc18xMDBfdG9fMzAwKVxyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIGhhc18xMDBfdG9fMzAwID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGxldF92YWwgPj0gMTApIHtcclxuICAgICAgICAgIGlmIChoYXNfMTBfdG9fOTApXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgaGFzXzEwX3RvXzkwID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaGFzXzFfdG9fOSkge1xyXG4gICAgICAgICAgICBpZiAoaGFzXzEwX3RvXzkwIHx8IGxhc3RfdmFsICE9PSA5KVxyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICBpZiAobGV0X3ZhbCAhPT0gNiAmJiBsZXRfdmFsICE9PSA3KVxyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaGFzXzFfdG9fOSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbCA9IHZhbCArIGxldF92YWw7XHJcbiAgICAgICAgbGFzdF92YWwgPSBsZXRfdmFsO1xyXG4gICAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbnZlcnQgYSBIZWJyZXcgZGF0ZSAoeWVhciwgbW9udGgsIGRheSkgdG8gTWFnaWMgaW50ZXJuYWwgZGF0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwieWVhclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9udGhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRheVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZGF0ZWhlYl8yX2QoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IG51bWJlciB7XHJcblxyXG4gICAgaWYgKGRheSA9PT0gMCAmJiBtb250aCA9PT0gMCAmJiB5ZWFyID09PSAwKVxyXG4gICAgICByZXR1cm4gMDtcclxuXHJcbiAgICBpZiAoZGF5ID09PSAwIHx8IG1vbnRoID09PSAwIHx8IHllYXIgPT09IDApXHJcbiAgICAgIHJldHVybiAxMDAwMDAwMDAwO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogSG93IG1hbnkgZGF5cyBmcm9tIGNyZWF0aW9uLCB0byBiZWdpbmluZyBvZiB0aGUgeWVhciA/ICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBkYXlzX2Zyb21fY3JlYXRpb246IG51bWJlciA9IEhlYnJld0RhdGUuZGF0ZWhlYl95ZWFyX3N0YXJ0KHllYXIpO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEhvdyBkYXlzIGluIHRoZSB5ZWFyID8gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBkYXlzX2luX3llYXI6IG51bWJlciA9IEhlYnJld0RhdGUuZGF0ZWhlYl95ZWFyX3N0YXJ0KHllYXIgKyAxKSAtIGRheXNfZnJvbV9jcmVhdGlvbjtcclxuICAgIGxldCBsZWFwOiBib29sZWFuID0gZGF5c19pbl95ZWFyID4gMzU1O1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogQWRkIG1vbnRoICsgZGF5ICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGlmIChsZWFwICYmIG1vbnRoID4gSGVicmV3RGF0ZS5BREFSKVxyXG4gICAgICBpZiAobW9udGggPT09IEhlYnJld0RhdGUuQURBUl9CKVxyXG4gICAgICAgIG1vbnRoID0gSGVicmV3RGF0ZS5BREFSICsgMTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG1vbnRoID0gbW9udGggKyAxO1xyXG5cclxuICAgIGlmIChkYXkgPiBIZWJyZXdEYXRlLmRhdGVoZWJfZGF5c19pbl9tb250aChtb250aCwgbGVhcCwgZGF5c19pbl95ZWFyKSlcclxuICAgICAgcmV0dXJuIDEwMDAwMDAwMDA7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMTsgaSA8IG1vbnRoOyBpID0gaSArIDEpXHJcbiAgICAgIGRheXNfZnJvbV9jcmVhdGlvbiA9IGRheXNfZnJvbV9jcmVhdGlvbiArIEhlYnJld0RhdGUuZGF0ZWhlYl9kYXlzX2luX21vbnRoKGksIGxlYXAsIGRheXNfaW5feWVhcik7XHJcbiAgICBkYXlzX2Zyb21fY3JlYXRpb24gPSBkYXlzX2Zyb21fY3JlYXRpb24gKyBkYXk7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIENvbnZlcnQgdG8gQ2hyaXN0aWFuIGNhbGVuZGVyICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KGRheXNfZnJvbV9jcmVhdGlvbiAtIEhlYnJld0RhdGUuREFZU19USUxfSkVTVVMsIDApO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -234,4 +234,4 @@ export class Helps {
234
234
  return result;
235
235
  }
236
236
  }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL0hlbHBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUtwQyxNQUFNLE9BQWdCLFNBQVM7Q0FFOUI7QUFLRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFDekMsR0FBRyxHQUFXLElBQUksQ0FBQztJQUNuQixJQUFJLEdBQVcsSUFBSSxDQUFDO0lBQ3BCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQVcsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sR0FBVyxDQUFDLENBQUM7SUFDcEIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sR0FBVyxDQUFDLENBQUM7SUFDcEIsT0FBTyxHQUFXLENBQUMsQ0FBQztJQUNwQixXQUFXLEdBQVcsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBVyxDQUFDLENBQUM7SUFDckIsY0FBYyxHQUFXLENBQUMsQ0FBQztJQUUzQixXQUFXO1FBQ1QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGO0FBS0QsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUFTO0lBQ3hDLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFFOUIsV0FBVztRQUNULE9BQU8sUUFB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RSxDQUFDO3lCQUNJLElBQUksU0FBUyxLQUFLLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO3dCQUM3RCxjQUFjLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ25FLENBQUM7O3dCQUVDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdHQUFnRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVKLENBQUM7Z0JBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLElBQUksSUFBSSxHQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3pELElBQUksTUFBaUIsQ0FBQztRQUN0QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQ0ksQ0FBQztZQUNKLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZTY0LCBIZWxwQ29tbWFuZCwgSGVscFR5cGUsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtFbmNvZGluZywgTk51bWJlciwgTGlzdCwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tIFwiLi4vLi4vRXZlbnRzXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBCYXNlIGNsYXNzIGZvciBhbGwgdGhlIGhlbHAgdHlwZXMgc3VwcG9ydGVkIGluIG1hZ2ljLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWFnaWNIZWxwIHtcclxuICBhYnN0cmFjdCBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZTtcclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gZHJhdyB0aGUgaW50ZXJuYWwgaGVscCB3aW5kb3cuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbEhlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIHZhbDogc3RyaW5nID0gbnVsbDtcclxuICBOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIEZyYW1lWDogbnVtYmVyID0gMDtcclxuICBGcmFtZVk6IG51bWJlciA9IDA7XHJcbiAgRnJhbWVEeDogbnVtYmVyID0gMDtcclxuICBGcmFtZUR5OiBudW1iZXIgPSAwO1xyXG4gIFNpemVkWDogbnVtYmVyID0gMDtcclxuICBTaXplZFk6IG51bWJlciA9IDA7XHJcbiAgRmFjdG9yWDogbnVtYmVyID0gMDtcclxuICBGYWN0b3JZOiBudW1iZXIgPSAwO1xyXG4gIEJvcmRlcnN0eWxlOiBudW1iZXIgPSAwO1xyXG4gIFRpdGxlQmFyOiBudW1iZXIgPSAwO1xyXG4gIEZvbnRUYWJsZUluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuSW50ZXJuYWw7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBzaG93IHByb21wdCBoZWxwLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgUHJvbXB0cEhlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIFByb21wdEhlbHBUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuUHJvbXB0O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyB0b29sIHRpcCBoZWxwLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVG9vbFRpcEhlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIHRvb2x0aXBIZWxwVGV4dDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLlRvb2x0aXA7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBzaG93IFVSTCBoZWxwLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVVJMSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgdXJsSGVscFRleHQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5VUkw7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBzaG93IHdpbmRvd3MgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFdpbmRvd3NIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICBGaWxlUGF0aDogc3RyaW5nID0gbnVsbDtcclxuICBIZWxwQ29tbWFuZDogSGVscENvbW1hbmQ7XHJcbiAgSGVscEtleTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLldpbmRvd3M7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBkYXRhIGZvciA8aGVscHRhYmxlPiA8aGVscGl0ZW0gdmFsdWUgPSBcInN0cmluZ1wiPiAuLi4gPC9oZWxwdGFibGU+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBIZWxwcyB7XHJcbiAgcHJpdmF0ZSBfaGVscHM6IExpc3Q8TWFnaWNIZWxwPiA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9oZWxwcyA9IG5ldyBMaXN0PE1hZ2ljSGVscD4oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVG8gcGFyc2UgdGhlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBkYXRhIGZpZWxkIChoZWxwcykgaW4gdGhlIGNsYXNzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUbyBpbml0aWFsIGlubmVyIG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5vZiBmb3VuZC9jdXJyZW50IHRhZzwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IFhNTENvbnN0YW50cy5NR19UQUdfSEVMUFRBQkxFKSB7XHJcblxyXG4gICAgICAgIGxldCBjdXJycmVudEluZGV4ID0gcGFyc2VyLmdldEN1cnJJbmRleCgpOyAvLyBnZXQgdGhlIGN1cnJlbnRJbmRleCBvZiBIZWxwIHRhZ1xyXG4gICAgICAgIGxldCBlbmNvZGVkID0gcGFyc2VyLlJlYWRDb250ZW50T2ZDdXJyZW50RWxlbWVudCgpLnRyaW0oKTsgLy8gZ2V0IHZhbHVlIG9mIGVuY29kZWQgdmFsdWUgb2YgSGVscFxyXG4gICAgICAgIGxldCBkZWNvZGVkID0gQmFzZTY0LmRlY29kZShlbmNvZGVkLnN1YnN0cigwLCBlbmNvZGVkLmxlbmd0aCkudHJpbSgpLCBFbmNvZGluZy5VVEY4KTsgLy9kZWNvZGUgdGhlIHZhbHVlIG9mIEhlbHBcclxuXHJcbiAgICAgICAgbGV0IG5ld1htbERhdGEgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLnJlcGxhY2UoZW5jb2RlZC50cmltKCksIGRlY29kZWQpOyAvLyByZXBsYWNlIHRoZSBlbmNvZGVkIHZhbHVlIHdpdGggZGVjb2RlZCB2YWx1ZVxyXG4gICAgICAgIHBhcnNlci5zZXRYTUxkYXRhKG5ld1htbERhdGEpOyAvL2NyZWF0ZSBhIHBhcnNlciB3aXRoIG5ld1hNTFxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoY3VycnJlbnRJbmRleCk7IC8vIHNldCB0aGUgY3VycmVudCBpbmRleCBvZiBwYXJzZXIgdG8gSGVscCB0YWdcclxuXHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArXHJcbiAgICAgICAgICAxKTsgLy9lbmQgb2Ygb3V0ZXIgdGFkIGFuZCBpdHMgXCI+XCJcclxuICAgIH1cclxuICAgIC8vIGVuZCBvZiBvdXRlciB0YWQgYW5kIGl0cyBcIj5cIlxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0hFTFBJVEVNKSB7XHJcbiAgICAgIGxldCBlbmRDb250ZXh0ID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfVEVSTSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIGxhc3QgcG9zaXRpb24gb2YgaXRzIHRhZ1xyXG4gICAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQSVRFTSkgK1xyXG4gICAgICAgICAgWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQSVRFTS5sZW5ndGgpO1xyXG4gICAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgICB0aGlzLmZpbGxIZWxwSXRlbSh0b2tlbnNWZWN0b3IpO1xyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3VuZFRhZ05hbWUgPT09IFwiL1wiICsgWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQVEFCTEUpIHtcclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coXCJpbiBDb21tYW5kLkZpbGxEYXRhKCkgb3V0IG9mIHN0cmluZyBib3VuZHNcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBGaWxsIG1lbWJlciBlbGVtZW50IGhlbHBzIGJ5IDxoZWxwaXRlbT4gdGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPmF0dHJpYnV0ZS92YWx1ZS8uLi5hdHRyaWJ1dGUvdmFsdWUvIHZlY3RvcjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBmaWxsSGVscEl0ZW0odG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4pOiB2b2lkIHtcclxuICAgIC8vIFNpbmNlIHRoZSBmaXJzdCBhdHRyaWJ1dGUgaXMgdHlwZSBvZiBoZWxwLiBFeHRyYWN0IHRoaXMgYXR0cmlidXRlIHRvIGNoZWNrIHR5cGUuXHJcbiAgICBsZXQgajogbnVtYmVyID0gMDtcclxuICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgIGxldCBobHBUeXBlOiBzdHJpbmcgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgc3dpdGNoIChobHBUeXBlKSB7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9UT09MVElQOlxyXG4gICAgICAgIGxldCB0b29sVGlwSGVscDogVG9vbFRpcEhlbHAgPSBuZXcgVG9vbFRpcEhlbHAoKTtcclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiA9IGogKyAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRSkge1xyXG4gICAgICAgICAgICAvLyAjOTMyMDg2OiBTcGVjaWFsIGNoYXJhY3RlcnMgaW4gaGVscHMgdGV4dCBhcmUgZXNjYXBlZCB3aGlsZSBzZXJpYWxpemluZyxcclxuICAgICAgICAgICAgLy8gc28gdW5lc2NhcGUgdGhlIGVzY2FwZWQgY2hhcmFjdGVycy5cclxuICAgICAgICAgICAgdG9vbFRpcEhlbHAudG9vbHRpcEhlbHBUZXh0ID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2godG9vbFRpcEhlbHApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1BST01QVDpcclxuICAgICAgICBsZXQgcHJvbXB0cEhlbHA6IFByb21wdHBIZWxwID0gbmV3IFByb21wdHBIZWxwKCk7XHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpIHtcclxuICAgICAgICAgICAgLy8gIzkzMjA4NjogU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGhlbHBzIHRleHQgYXJlIGVzY2FwZWQgd2hpbGUgc2VyaWFsaXppbmcsXHJcbiAgICAgICAgICAgIC8vIHNvIHVuZXNjYXBlIHRoZSBlc2NhcGVkIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgICAgIHByb21wdHBIZWxwLlByb21wdEhlbHBUZXh0ID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2gocHJvbXB0cEhlbHApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1VSTDpcclxuICAgICAgICBsZXQgdXJsSGVscDogVVJMSGVscCA9IG5ldyBVUkxIZWxwKCk7XHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpXHJcbiAgICAgICAgICAgIHVybEhlbHAudXJsSGVscFRleHQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHVybEhlbHApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX0lOVEVSTkFMOlxyXG4gICAgICAgIGxldCBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzOiBJbnRlcm5hbEhlbHAgPSBuZXcgSW50ZXJuYWxIZWxwKCk7XHJcbiAgICAgICAgLy8gSW5pdCBJbnRlcm5hbCBIZWxwIFdpbmRvdyBEZXRhaWxzLlxyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuXHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLnZhbCA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9OQU1FKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuTmFtZSA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRVgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZVggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZyYW1lWSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVEWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZyYW1lRHggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FRFkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZUR5ID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9TSVpFRFgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5TaXplZFggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NJWkVEWSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLlNpemVkWSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRkFDVE9SWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZhY3RvclggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZBQ1RPUlkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GYWN0b3JZID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9CT1JERVJTVFlMRSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkJvcmRlcnN0eWxlID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfVElUTEVfQkFSKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuVGl0bGVCYXIgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NZU1RFTV9NRU5VKSB7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZPTlRfVEFCTEVfSU5ERVgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5Gb250VGFibGVJbmRleCA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFkZCBoZWxwIG9iamVjdCB0byBjb2xsZWN0aW9uLlxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2goaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfV0lORE9XUzpcclxuICAgICAgICBsZXQgd25kSGVscERldGFpbHM6IFdpbmRvd3NIZWxwID0gbmV3IFdpbmRvd3NIZWxwKCk7XHJcblxyXG4gICAgICAgIC8vIEluaXQgV2luZG93cyBIZWxwIERldGFpbHMuXHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfV0lORE9XU19IRUxQX0ZJTEUpIHtcclxuICAgICAgICAgICAgd25kSGVscERldGFpbHMuRmlsZVBhdGggPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfV0lORE9XU19IRUxQX0NPTU1BTkQpIHtcclxuICAgICAgICAgICAgICB3bmRIZWxwRGV0YWlscy5IZWxwQ29tbWFuZCA9IDxIZWxwQ29tbWFuZD5OTnVtYmVyLlBhcnNlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfV0lORE9XU19IRUxQX0tFWSkge1xyXG4gICAgICAgICAgICB3bmRIZWxwRGV0YWlscy5IZWxwS2V5ID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEFkZCBoZWxwIG9iamVjdCB0byBjb2xsZWN0aW9uLlxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2god25kSGVscERldGFpbHMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SGVscChpZHg6IG51bWJlcik6IE1hZ2ljSGVscCB7XHJcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuX2hlbHBzLmxlbmd0aDtcclxuICAgIGxldCByZXN1bHQ6IE1hZ2ljSGVscDtcclxuICAgIGlmIChmbGFnKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gdGhpcy5faGVscHMuZ2V0X0l0ZW0oaWR4KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL0hlbHBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUtwQyxNQUFNLE9BQWdCLFNBQVM7Q0FFOUI7QUFLRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFDekMsR0FBRyxHQUFXLElBQUksQ0FBQztJQUNuQixJQUFJLEdBQVcsSUFBSSxDQUFDO0lBQ3BCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQVcsQ0FBQyxDQUFDO0lBQ3BCLE9BQU8sR0FBVyxDQUFDLENBQUM7SUFDcEIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sR0FBVyxDQUFDLENBQUM7SUFDcEIsT0FBTyxHQUFXLENBQUMsQ0FBQztJQUNwQixXQUFXLEdBQVcsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBVyxDQUFDLENBQUM7SUFDckIsY0FBYyxHQUFXLENBQUMsQ0FBQztJQUUzQixXQUFXO1FBQ1QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztDQUNGO0FBS0QsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUFTO0lBQ3hDLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFFOUIsV0FBVztRQUNULE9BQU8sUUFB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QUNILENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNqQixJQUFJLElBQUksR0FBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN6RCxJQUFJLE1BQWlCLENBQUM7UUFDdEIsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2Y7YUFDSTtZQUNILE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2U2NCwgSGVscENvbW1hbmQsIEhlbHBUeXBlLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlciB9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RW5jb2RpbmcsIE5OdW1iZXIsIExpc3QsIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gQmFzZSBjbGFzcyBmb3IgYWxsIHRoZSBoZWxwIHR5cGVzIHN1cHBvcnRlZCBpbiBtYWdpYy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hZ2ljSGVscCB7XHJcbiAgYWJzdHJhY3QgR2V0SGVscFR5cGUoKTogSGVscFR5cGU7XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIGRyYXcgdGhlIGludGVybmFsIGhlbHAgd2luZG93LlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICB2YWw6IHN0cmluZyA9IG51bGw7XHJcbiAgTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBGcmFtZVg6IG51bWJlciA9IDA7XHJcbiAgRnJhbWVZOiBudW1iZXIgPSAwO1xyXG4gIEZyYW1lRHg6IG51bWJlciA9IDA7XHJcbiAgRnJhbWVEeTogbnVtYmVyID0gMDtcclxuICBTaXplZFg6IG51bWJlciA9IDA7XHJcbiAgU2l6ZWRZOiBudW1iZXIgPSAwO1xyXG4gIEZhY3Rvclg6IG51bWJlciA9IDA7XHJcbiAgRmFjdG9yWTogbnVtYmVyID0gMDtcclxuICBCb3JkZXJzdHlsZTogbnVtYmVyID0gMDtcclxuICBUaXRsZUJhcjogbnVtYmVyID0gMDtcclxuICBGb250VGFibGVJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLkludGVybmFsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyBwcm9tcHQgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFByb21wdHBIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICBQcm9tcHRIZWxwVGV4dDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLlByb21wdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgdG9vbCB0aXAgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFRvb2xUaXBIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICB0b29sdGlwSGVscFRleHQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5Ub29sdGlwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyBVUkwgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFVSTEhlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIHVybEhlbHBUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuVVJMO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyB3aW5kb3dzIGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBXaW5kb3dzSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgRmlsZVBhdGg6IHN0cmluZyA9IG51bGw7XHJcbiAgSGVscENvbW1hbmQ6IEhlbHBDb21tYW5kO1xyXG4gIEhlbHBLZXk6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5XaW5kb3dzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gZGF0YSBmb3IgPGhlbHB0YWJsZT4gPGhlbHBpdGVtIHZhbHVlID0gXCJzdHJpbmdcIj4gLi4uIDwvaGVscHRhYmxlPlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgSGVscHMge1xyXG4gIHByaXZhdGUgX2hlbHBzOiBMaXN0PE1hZ2ljSGVscD4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5faGVscHMgPSBuZXcgTGlzdDxNYWdpY0hlbHA+KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRvIHBhcnNlIHRoZSBpbnB1dCBzdHJpbmcgYW5kIGZpbGwgZGF0YSBmaWVsZCAoaGVscHMpIGluIHRoZSBjbGFzcy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVG8gaW5pdGlhbCBpbm5lciBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRUYWdOYW1lXCI+b2YgZm91bmQvY3VycmVudCB0YWc8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhmb3VuZFRhZ05hbWU6IHN0cmluZywgcGFyc2VyOiBYbWxQYXJzZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0hFTFBUQUJMRSkge1xyXG5cclxuICAgICAgICBsZXQgY3VycnJlbnRJbmRleCA9IHBhcnNlci5nZXRDdXJySW5kZXgoKTsgLy8gZ2V0IHRoZSBjdXJyZW50SW5kZXggb2YgSGVscCB0YWdcclxuICAgICAgICBsZXQgZW5jb2RlZCA9IHBhcnNlci5SZWFkQ29udGVudE9mQ3VycmVudEVsZW1lbnQoKS50cmltKCk7IC8vIGdldCB2YWx1ZSBvZiBlbmNvZGVkIHZhbHVlIG9mIEhlbHBcclxuICAgICAgICBsZXQgZGVjb2RlZCA9IEJhc2U2NC5kZWNvZGUoZW5jb2RlZC5zdWJzdHIoMCwgZW5jb2RlZC5sZW5ndGgpLnRyaW0oKSwgRW5jb2RpbmcuVVRGOCk7IC8vZGVjb2RlIHRoZSB2YWx1ZSBvZiBIZWxwXHJcblxyXG4gICAgICAgIGxldCBuZXdYbWxEYXRhID0gcGFyc2VyLmdldFhNTGRhdGEoKS5yZXBsYWNlKGVuY29kZWQudHJpbSgpLCBkZWNvZGVkKTsgLy8gcmVwbGFjZSB0aGUgZW5jb2RlZCB2YWx1ZSB3aXRoIGRlY29kZWQgdmFsdWVcclxuICAgICAgICBwYXJzZXIuc2V0WE1MZGF0YShuZXdYbWxEYXRhKTsgLy9jcmVhdGUgYSBwYXJzZXIgd2l0aCBuZXdYTUxcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGN1cnJyZW50SW5kZXgpOyAvLyBzZXQgdGhlIGN1cnJlbnQgaW5kZXggb2YgcGFyc2VyIHRvIEhlbHAgdGFnXHJcblxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgK1xyXG4gICAgICAgICAgMSk7IC8vZW5kIG9mIG91dGVyIHRhZCBhbmQgaXRzIFwiPlwiXHJcbiAgICB9XHJcbiAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFkIGFuZCBpdHMgXCI+XCJcclxuICAgIGVsc2UgaWYgKGZvdW5kVGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQSVRFTSkge1xyXG4gICAgICBsZXQgZW5kQ29udGV4dCA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX1RFUk0sIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgICBsZXQgdGFnOiBzdHJpbmcgPSBwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpO1xyXG4gICAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKFhNTENvbnN0YW50cy5NR19UQUdfSEVMUElURU0pICtcclxuICAgICAgICAgIFhNTENvbnN0YW50cy5NR19UQUdfSEVMUElURU0ubGVuZ3RoKTtcclxuICAgICAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcbiAgICAgICAgdGhpcy5maWxsSGVscEl0ZW0odG9rZW5zVmVjdG9yKTtcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSBcIi9cIiArIFhNTENvbnN0YW50cy5NR19UQUdfSEVMUFRBQkxFKSB7XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKFwiaW4gQ29tbWFuZC5GaWxsRGF0YSgpIG91dCBvZiBzdHJpbmcgYm91bmRzXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gRmlsbCBtZW1iZXIgZWxlbWVudCBoZWxwcyBieSA8aGVscGl0ZW0+IHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0b2tlbnNWZWN0b3JcIj5hdHRyaWJ1dGUvdmFsdWUvLi4uYXR0cmlidXRlL3ZhbHVlLyB2ZWN0b3I8L3BhcmFtPlxyXG4gIHByaXZhdGUgZmlsbEhlbHBJdGVtKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICAvLyBTaW5jZSB0aGUgZmlyc3QgYXR0cmlidXRlIGlzIHR5cGUgb2YgaGVscC4gRXh0cmFjdCB0aGlzIGF0dHJpYnV0ZSB0byBjaGVjayB0eXBlLlxyXG4gICAgbGV0IGo6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICBsZXQgdmFsdWVTdHI6IHN0cmluZyA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICBsZXQgaGxwVHlwZTogc3RyaW5nID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG5cclxuICAgIHN3aXRjaCAoaGxwVHlwZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfVE9PTFRJUDpcclxuICAgICAgICBsZXQgdG9vbFRpcEhlbHA6IFRvb2xUaXBIZWxwID0gbmV3IFRvb2xUaXBIZWxwKCk7XHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpIHtcclxuICAgICAgICAgICAgLy8gIzkzMjA4NjogU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGhlbHBzIHRleHQgYXJlIGVzY2FwZWQgd2hpbGUgc2VyaWFsaXppbmcsXHJcbiAgICAgICAgICAgIC8vIHNvIHVuZXNjYXBlIHRoZSBlc2NhcGVkIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgICAgIHRvb2xUaXBIZWxwLnRvb2x0aXBIZWxwVGV4dCA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHRvb2xUaXBIZWxwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9QUk9NUFQ6XHJcbiAgICAgICAgbGV0IHByb21wdHBIZWxwOiBQcm9tcHRwSGVscCA9IG5ldyBQcm9tcHRwSGVscCgpO1xyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFKSB7XHJcbiAgICAgICAgICAgIC8vICM5MzIwODY6IFNwZWNpYWwgY2hhcmFjdGVycyBpbiBoZWxwcyB0ZXh0IGFyZSBlc2NhcGVkIHdoaWxlIHNlcmlhbGl6aW5nLFxyXG4gICAgICAgICAgICAvLyBzbyB1bmVzY2FwZSB0aGUgZXNjYXBlZCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICBwcm9tcHRwSGVscC5Qcm9tcHRIZWxwVGV4dCA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHByb21wdHBIZWxwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9VUkw6XHJcbiAgICAgICAgbGV0IHVybEhlbHA6IFVSTEhlbHAgPSBuZXcgVVJMSGVscCgpO1xyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFKVxyXG4gICAgICAgICAgICB1cmxIZWxwLnVybEhlbHBUZXh0ID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faGVscHMucHVzaCh1cmxIZWxwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9JTlRFUk5BTDpcclxuICAgICAgICBsZXQgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlsczogSW50ZXJuYWxIZWxwID0gbmV3IEludGVybmFsSGVscCgpO1xyXG4gICAgICAgIC8vIEluaXQgSW50ZXJuYWwgSGVscCBXaW5kb3cgRGV0YWlscy5cclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiArPSAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy52YWwgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfTkFNRSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLk5hbWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRnJhbWVYID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRVkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZVkgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FRFgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZUR4ID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRURZKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRnJhbWVEeSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuU2l6ZWRYID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9TSVpFRFkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5TaXplZFkgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZBQ1RPUlgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GYWN0b3JYID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GQUNUT1JZKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRmFjdG9yWSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfQk9SREVSU1RZTEUpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5Cb3JkZXJzdHlsZSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX1RJVExFX0JBUikge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLlRpdGxlQmFyID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9TWVNURU1fTUVOVSkge1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GT05UX1RBQkxFX0lOREVYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRm9udFRhYmxlSW5kZXggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgaGVscCBvYmplY3QgdG8gY29sbGVjdGlvbi5cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKGludGVybmFsSGVscFdpbmRvd0RldGFpbHMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1dJTkRPV1M6XHJcbiAgICAgICAgbGV0IHduZEhlbHBEZXRhaWxzOiBXaW5kb3dzSGVscCA9IG5ldyBXaW5kb3dzSGVscCgpO1xyXG5cclxuICAgICAgICAvLyBJbml0IFdpbmRvd3MgSGVscCBEZXRhaWxzLlxyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1dJTkRPV1NfSEVMUF9GSUxFKSB7XHJcbiAgICAgICAgICAgIHduZEhlbHBEZXRhaWxzLkZpbGVQYXRoID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1dJTkRPV1NfSEVMUF9DT01NQU5EKSB7XHJcbiAgICAgICAgICAgICAgd25kSGVscERldGFpbHMuSGVscENvbW1hbmQgPSA8SGVscENvbW1hbmQ+Tk51bWJlci5QYXJzZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1dJTkRPV1NfSEVMUF9LRVkpIHtcclxuICAgICAgICAgICAgd25kSGVscERldGFpbHMuSGVscEtleSA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBBZGQgaGVscCBvYmplY3QgdG8gY29sbGVjdGlvbi5cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHduZEhlbHBEZXRhaWxzKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEhlbHAoaWR4OiBudW1iZXIpOiBNYWdpY0hlbHAge1xyXG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBpZHggPCAwIHx8IGlkeCA+PSB0aGlzLl9oZWxwcy5sZW5ndGg7XHJcbiAgICBsZXQgcmVzdWx0OiBNYWdpY0hlbHA7XHJcbiAgICBpZiAoZmxhZykge1xyXG4gICAgICByZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2hlbHBzLmdldF9JdGVtKGlkeCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=