@decaf-ts/db-decorators 0.6.11 → 0.6.13

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 (169) hide show
  1. package/README.md +23 -3
  2. package/dist/db-decorators.cjs +2 -2989
  3. package/dist/db-decorators.cjs.map +1 -0
  4. package/dist/db-decorators.js +2 -0
  5. package/dist/db-decorators.js.map +1 -0
  6. package/lib/esm/identity/decorators.js +1 -1
  7. package/lib/esm/identity/decorators.js.map +1 -0
  8. package/lib/esm/identity/index.js +1 -1
  9. package/lib/esm/identity/index.js.map +1 -0
  10. package/lib/esm/identity/utils.js +1 -1
  11. package/lib/esm/identity/utils.js.map +1 -0
  12. package/lib/esm/index.d.ts +1 -1
  13. package/lib/esm/index.js +2 -2
  14. package/lib/esm/index.js.map +1 -0
  15. package/lib/esm/interfaces/BulkCrudOperator.js +1 -1
  16. package/lib/esm/interfaces/BulkCrudOperator.js.map +1 -0
  17. package/lib/esm/interfaces/Contextual.js +1 -1
  18. package/lib/esm/interfaces/Contextual.js.map +1 -0
  19. package/lib/esm/interfaces/CrudOperator.js +1 -1
  20. package/lib/esm/interfaces/CrudOperator.js.map +1 -0
  21. package/lib/esm/interfaces/IRepository.js +1 -1
  22. package/lib/esm/interfaces/IRepository.js.map +1 -0
  23. package/lib/esm/interfaces/index.js +1 -1
  24. package/lib/esm/interfaces/index.js.map +1 -0
  25. package/lib/esm/model/constants.js +1 -1
  26. package/lib/esm/model/constants.js.map +1 -0
  27. package/lib/esm/model/decorators.js +1 -1
  28. package/lib/esm/model/decorators.js.map +1 -0
  29. package/lib/esm/model/index.js +1 -1
  30. package/lib/esm/model/index.js.map +1 -0
  31. package/lib/esm/model/model.js +1 -1
  32. package/lib/esm/model/model.js.map +1 -0
  33. package/lib/esm/model/overrides.js +1 -1
  34. package/lib/esm/model/overrides.js.map +1 -0
  35. package/lib/esm/model/utils.js +1 -1
  36. package/lib/esm/model/utils.js.map +1 -0
  37. package/lib/esm/model/validation.js +1 -1
  38. package/lib/esm/model/validation.js.map +1 -0
  39. package/lib/esm/operations/Operations.js +1 -1
  40. package/lib/esm/operations/Operations.js.map +1 -0
  41. package/lib/esm/operations/OperationsRegistry.js +1 -1
  42. package/lib/esm/operations/OperationsRegistry.js.map +1 -0
  43. package/lib/esm/operations/constants.d.ts +2 -1
  44. package/lib/esm/operations/constants.js +2 -1
  45. package/lib/esm/operations/constants.js.map +1 -0
  46. package/lib/esm/operations/decorators.d.ts +66 -1
  47. package/lib/esm/operations/decorators.js +73 -1
  48. package/lib/esm/operations/decorators.js.map +1 -0
  49. package/lib/esm/operations/index.js +1 -1
  50. package/lib/esm/operations/index.js.map +1 -0
  51. package/lib/esm/operations/types.js +1 -1
  52. package/lib/esm/operations/types.js.map +1 -0
  53. package/lib/esm/repository/BaseRepository.js +1 -1
  54. package/lib/esm/repository/BaseRepository.js.map +1 -0
  55. package/lib/esm/repository/Context.js +1 -1
  56. package/lib/esm/repository/Context.js.map +1 -0
  57. package/lib/esm/repository/Repository.js +1 -1
  58. package/lib/esm/repository/Repository.js.map +1 -0
  59. package/lib/esm/repository/constants.js +1 -1
  60. package/lib/esm/repository/constants.js.map +1 -0
  61. package/lib/esm/repository/errors.js +1 -1
  62. package/lib/esm/repository/errors.js.map +1 -0
  63. package/lib/esm/repository/index.js +1 -1
  64. package/lib/esm/repository/index.js.map +1 -0
  65. package/lib/esm/repository/types.js +1 -1
  66. package/lib/esm/repository/types.js.map +1 -0
  67. package/lib/esm/repository/utils.js +1 -1
  68. package/lib/esm/repository/utils.js.map +1 -0
  69. package/lib/esm/repository/wrappers.js +1 -1
  70. package/lib/esm/repository/wrappers.js.map +1 -0
  71. package/lib/esm/validation/constants.js +1 -1
  72. package/lib/esm/validation/constants.js.map +1 -0
  73. package/lib/esm/validation/decorators.js +1 -1
  74. package/lib/esm/validation/decorators.js.map +1 -0
  75. package/lib/esm/validation/index.js +1 -1
  76. package/lib/esm/validation/index.js.map +1 -0
  77. package/lib/esm/validation/validation.js +1 -1
  78. package/lib/esm/validation/validation.js.map +1 -0
  79. package/lib/esm/validation/validators/ReadOnlyValidator.js +1 -1
  80. package/lib/esm/validation/validators/ReadOnlyValidator.js.map +1 -0
  81. package/lib/esm/validation/validators/TimestampValidator.js +1 -1
  82. package/lib/esm/validation/validators/TimestampValidator.js.map +1 -0
  83. package/lib/esm/validation/validators/UpdateValidator.js +1 -1
  84. package/lib/esm/validation/validators/UpdateValidator.js.map +1 -0
  85. package/lib/esm/validation/validators/index.js +1 -1
  86. package/lib/esm/validation/validators/index.js.map +1 -0
  87. package/lib/identity/decorators.cjs +1 -1
  88. package/lib/identity/decorators.js.map +1 -0
  89. package/lib/identity/index.cjs +1 -1
  90. package/lib/identity/index.js.map +1 -0
  91. package/lib/identity/utils.cjs +1 -1
  92. package/lib/identity/utils.js.map +1 -0
  93. package/lib/index.cjs +2 -2
  94. package/lib/index.d.ts +1 -1
  95. package/lib/index.js.map +1 -0
  96. package/lib/interfaces/BulkCrudOperator.cjs +1 -1
  97. package/lib/interfaces/BulkCrudOperator.js.map +1 -0
  98. package/lib/interfaces/Contextual.cjs +1 -1
  99. package/lib/interfaces/Contextual.js.map +1 -0
  100. package/lib/interfaces/CrudOperator.cjs +1 -1
  101. package/lib/interfaces/CrudOperator.js.map +1 -0
  102. package/lib/interfaces/IRepository.cjs +1 -1
  103. package/lib/interfaces/IRepository.js.map +1 -0
  104. package/lib/interfaces/index.cjs +1 -1
  105. package/lib/interfaces/index.js.map +1 -0
  106. package/lib/model/constants.cjs +1 -1
  107. package/lib/model/constants.js.map +1 -0
  108. package/lib/model/decorators.cjs +1 -1
  109. package/lib/model/decorators.js.map +1 -0
  110. package/lib/model/index.cjs +1 -1
  111. package/lib/model/index.js.map +1 -0
  112. package/lib/model/model.cjs +1 -1
  113. package/lib/model/model.js.map +1 -0
  114. package/lib/model/overrides.cjs +1 -1
  115. package/lib/model/overrides.js.map +1 -0
  116. package/lib/model/utils.cjs +1 -1
  117. package/lib/model/utils.js.map +1 -0
  118. package/lib/model/validation.cjs +1 -1
  119. package/lib/model/validation.js.map +1 -0
  120. package/lib/operations/Operations.cjs +1 -1
  121. package/lib/operations/Operations.js.map +1 -0
  122. package/lib/operations/OperationsRegistry.cjs +1 -1
  123. package/lib/operations/OperationsRegistry.js.map +1 -0
  124. package/lib/operations/constants.cjs +2 -1
  125. package/lib/operations/constants.d.ts +2 -1
  126. package/lib/operations/constants.js.map +1 -0
  127. package/lib/operations/decorators.cjs +76 -1
  128. package/lib/operations/decorators.d.ts +66 -1
  129. package/lib/operations/decorators.js.map +1 -0
  130. package/lib/operations/index.cjs +1 -1
  131. package/lib/operations/index.js.map +1 -0
  132. package/lib/operations/types.cjs +1 -1
  133. package/lib/operations/types.js.map +1 -0
  134. package/lib/repository/BaseRepository.cjs +1 -1
  135. package/lib/repository/BaseRepository.js.map +1 -0
  136. package/lib/repository/Context.cjs +1 -1
  137. package/lib/repository/Context.js.map +1 -0
  138. package/lib/repository/Repository.cjs +1 -1
  139. package/lib/repository/Repository.js.map +1 -0
  140. package/lib/repository/constants.cjs +1 -1
  141. package/lib/repository/constants.js.map +1 -0
  142. package/lib/repository/errors.cjs +1 -1
  143. package/lib/repository/errors.js.map +1 -0
  144. package/lib/repository/index.cjs +1 -1
  145. package/lib/repository/index.js.map +1 -0
  146. package/lib/repository/types.cjs +1 -1
  147. package/lib/repository/types.js.map +1 -0
  148. package/lib/repository/utils.cjs +1 -1
  149. package/lib/repository/utils.js.map +1 -0
  150. package/lib/repository/wrappers.cjs +1 -1
  151. package/lib/repository/wrappers.js.map +1 -0
  152. package/lib/validation/constants.cjs +1 -1
  153. package/lib/validation/constants.js.map +1 -0
  154. package/lib/validation/decorators.cjs +1 -1
  155. package/lib/validation/decorators.js.map +1 -0
  156. package/lib/validation/index.cjs +1 -1
  157. package/lib/validation/index.js.map +1 -0
  158. package/lib/validation/validation.cjs +1 -1
  159. package/lib/validation/validation.js.map +1 -0
  160. package/lib/validation/validators/ReadOnlyValidator.cjs +1 -1
  161. package/lib/validation/validators/ReadOnlyValidator.js.map +1 -0
  162. package/lib/validation/validators/TimestampValidator.cjs +1 -1
  163. package/lib/validation/validators/TimestampValidator.js.map +1 -0
  164. package/lib/validation/validators/UpdateValidator.cjs +1 -1
  165. package/lib/validation/validators/UpdateValidator.js.map +1 -0
  166. package/lib/validation/validators/index.cjs +1 -1
  167. package/lib/validation/validators/index.js.map +1 -0
  168. package/package.json +12 -50
  169. package/dist/db-decorators.esm.cjs +0 -2917
@@ -265,4 +265,4 @@ export function validateCompare(oldModel, newModel, async, ...exceptions) {
265
265
  : undefined;
266
266
  });
267
267
  }
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC92YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLG9CQUFvQixFQUVwQixTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixjQUFjLEdBRWYsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFtQixpQ0FBc0I7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSwrQkFBb0I7QUFFMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxLQUFRLEVBQ1IsYUFBdUI7SUFFdkIsTUFBTSxtQkFBbUIsR0FBNEMsRUFBRSxDQUFDO0lBQ3hFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFDRSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUNqRCxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQzdCLENBQUM7WUFDRCxNQUFNLDRCQUE0QixHQUFHLHVCQUF1QixDQUMxRCxLQUFLLEVBQ0wsSUFBSSxFQUNKLG9CQUFvQixDQUFDLE9BQU8sQ0FDN0IsQ0FBQztZQUVGLE1BQU0sYUFBYSxHQUFHLHVCQUF1QixDQUMzQyxLQUFLLEVBQ0wsSUFBSSxDQUNMLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUQsSUFBSSxhQUFhO2dCQUNmLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENB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LENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksbUJBQW1CLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQyxDQUFDLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7WUFDbEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixDQUFDLENBQVEsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25kaXRpb25hbEFzeW5jLFxuICBEZWNvcmF0b3JNZXRhZGF0YUFzeW5jLFxuICBnZXRWYWxpZGF0aW9uRGVjb3JhdG9ycyxcbiAgTW9kZWwsXG4gIE1vZGVsQ29uZGl0aW9uYWxBc3luYyxcbiAgTW9kZWxFcnJvckRlZmluaXRpb24sXG4gIE1vZGVsRXJyb3JzLFxuICBNb2RlbEtleXMsXG4gIHRvQ29uZGl0aW9uYWxQcm9taXNlLFxuICBWYWxpZGF0aW9uLFxuICBWYWxpZGF0aW9uS2V5cyxcbiAgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVmbGVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgVXBkYXRlVmFsaWRhdGlvbktleXMsIFVwZGF0ZVZhbGlkYXRvciB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBmaW5kTW9kZWxJZCB9IGZyb20gXCIuLi9pZGVudGl0eVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0cmlldmVzIHZhbGlkYXRpb24gZGVjb3JhdG9yIGRlZmluaXRpb25zIGZyb20gYSBtb2RlbCBmb3IgdXBkYXRlIG9wZXJhdGlvbnMsIGluY2x1ZGluZ1xuICogc3VwcG9ydCBmb3Igc3BlY2lhbCBoYW5kbGluZyBvZiBsaXN0IGRlY29yYXRvcnMuXG4gKlxuICogQHN1bW1hcnlcbiAqIEl0ZXJhdGVzIG92ZXIgdGhlIG1vZGVsJ3Mgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBhbmQgZmlsdGVycyBvdXQgdGhvc2Ugc3BlY2lmaWVkIGluIHRoZVxuICogYHByb3BzVG9JZ25vcmVgIGFycmF5LiBGb3IgZWFjaCByZW1haW5pbmcgcHJvcGVydHksIHJldHJpZXZlcyB2YWxpZGF0aW9uIGRlY29yYXRvcnMgc3BlY2lmaWNcbiAqIHRvIHVwZGF0ZSBvcGVyYXRpb25zIHVzaW5nIHRoZSBgVXBkYXRlVmFsaWRhdGlvbktleXMuUkVGTEVDVGAga2V5LiBBZGRpdGlvbmFsbHksIGl0IGV4cGxpY2l0bHlcbiAqIGNoZWNrcyBmb3IgYW5kIGFwcGVuZHMgYW55IGBMSVNUYCB0eXBlIGRlY29yYXRvcnMgdG8gZW5zdXJlIHByb3BlciB2YWxpZGF0aW9uIG9mIGNvbGxlY3Rpb24gdHlwZXMuXG4gKlxuICogQHRlbXBsYXRlIE0gLSBBIGdlbmVyaWMgcGFyYW1ldGVyIGV4dGVuZGluZyB0aGUgYE1vZGVsYCBjbGFzcywgcmVwcmVzZW50aW5nIHRoZSBtb2RlbCB0eXBlIGJlaW5nIGluc3BlY3RlZC5cbiAqXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHdob3NlIHByb3BlcnRpZXMgYXJlIGJlaW5nIGluc3BlY3RlZCBmb3IgdXBkYXRlLXJlbGF0ZWQgdmFsaWRhdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wc1RvSWdub3JlIC0gQSBsaXN0IG9mIHByb3BlcnR5IG5hbWVzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgdmFsaWRhdGlvbiBkZWNvcmF0b3IgcmV0cmlldmFsIHByb2Nlc3MuXG4gKlxuICogQHJldHVybiB7VmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbltdfSBBbiBhcnJheSBvZiB2YWxpZGF0aW9uIGRlY29yYXRvciBkZWZpbml0aW9ucywgaW5jbHVkaW5nIGJvdGhcbiAqIHVwZGF0ZS1zcGVjaWZpYyBhbmQgbGlzdC10eXBlIGRlY29yYXRvcnMsIGV4Y2x1ZGluZyB0aG9zZSBmb3IgaWdub3JlZCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBmdW5jdGlvbiBnZXRWYWxpZGF0YWJsZVVwZGF0ZVByb3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0YWJsZVVwZGF0ZVByb3BzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBNLFxuICBwcm9wc1RvSWdub3JlOiBzdHJpbmdbXVxuKTogVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbltdIHtcbiAgY29uc3QgZGVjb3JhdGVkUHJvcGVydGllczogVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbltdID0gW107XG4gIGZvciAoY29uc3QgcHJvcCBpbiBtb2RlbCkge1xuICAgIGlmIChcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2RlbCwgcHJvcCkgJiZcbiAgICAgICFwcm9wc1RvSWdub3JlLmluY2x1ZGVzKHByb3ApXG4gICAgKSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUHJvcGVydHlEZWZpbml0aW9uID0gZ2V0VmFsaWRhdGlvbkRlY29yYXRvcnMoXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBwcm9wLFxuICAgICAgICBVcGRhdGVWYWxpZGF0aW9uS2V5cy5SRUZMRUNUXG4gICAgICApO1xuXG4gICAgICBjb25zdCBsaXN0RGVjb3JhdG9yID0gZ2V0VmFsaWRhdGlvbkRlY29yYXRvcnMoXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBwcm9wXG4gICAgICApLmRlY29yYXRvcnMuZmluZCgoeyBrZXkgfSkgPT4ga2V5ID09PSBWYWxpZGF0aW9uS2V5cy5MSVNUKTtcblxuICAgICAgaWYgKGxpc3REZWNvcmF0b3IpXG4gICAgICAgIHZhbGlkYXRpb25Qcm9wZXJ0eURlZmluaXRpb24uZGVjb3JhdG9ycy5wdXNoKGxpc3REZWNvcmF0b3IpO1xuXG4gICAgICBkZWNvcmF0ZWRQcm9wZXJ0aWVzLnB1c2godmFsaWRhdGlvblByb3BlcnR5RGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlY29yYXRlZFByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURlY29yYXRvcjxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBBc3luYyBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZSxcbj4oXG4gIG5ld01vZGVsOiBNLFxuICBvbGRNb2RlbDogTSxcbiAgcHJvcDogc3RyaW5nLFxuICBkZWNvcmF0b3I6IERlY29yYXRvck1ldGFkYXRhQXN5bmMsXG4gIGFzeW5jPzogQXN5bmNcbik6IENvbmRpdGlvbmFsQXN5bmM8QXN5bmMsIHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB2YWxpZGF0b3I6IFVwZGF0ZVZhbGlkYXRvciA9IFZhbGlkYXRpb24uZ2V0KFxuICAgIGRlY29yYXRvci5rZXlcbiAgKSBhcyBVcGRhdGVWYWxpZGF0b3I7XG5cbiAgaWYgKCF2YWxpZGF0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgdmFsaWRhdG9yIGZvciAke2RlY29yYXRvci5rZXl9YCk7XG4gIH1cblxuICAvLyBTa2lwIHZhbGlkYXRvcnMgdGhhdCBhcmVuJ3QgVXBkYXRlVmFsaWRhdG9yc1xuICBpZiAoIXZhbGlkYXRvci51cGRhdGVIYXNFcnJvcnMpIHJldHVybiB0b0NvbmRpdGlvbmFsUHJvbWlzZSh1bmRlZmluZWQsIGFzeW5jKTtcblxuICAvLyBza2lwIGFzeW5jIGRlY29yYXRvcnMgaWYgdmFsaWRhdGVEZWNvcmF0b3JzIGlzIGNhbGxlZCBzeW5jaHJvbm91c2x5IChhc3luYyA9IGZhbHNlKVxuICBpZiAoIWFzeW5jICYmIGRlY29yYXRvci5wcm9wcy5hc3luYylcbiAgICByZXR1cm4gdG9Db25kaXRpb25hbFByb21pc2UodW5kZWZpbmVkLCBhc3luYyk7XG5cbiAgY29uc3QgZGVjb3JhdG9yUHJvcHMgPSBPYmplY3QudmFsdWVzKGRlY29yYXRvci5wcm9wcykgfHwge307XG5cbiAgLy8gY29uc3QgY29udGV4dCA9IFBhdGhQcm94eUVuZ2luZS5jcmVhdGUob2JqLCB7XG4gIC8vICAgaWdub3JlVW5kZWZpbmVkOiB0cnVlLFxuICAvLyAgIGlnbm9yZU51bGw6IHRydWUsXG4gIC8vIH0pO1xuXG4gIGNvbnN0IG1heWJlRXJyb3IgPSB2YWxpZGF0b3IudXBkYXRlSGFzRXJyb3JzKFxuICAgIChuZXdNb2RlbCBhcyBhbnkpW3Byb3BdLFxuICAgIChvbGRNb2RlbCBhcyBhbnkpW3Byb3BdLFxuICAgIC4uLmRlY29yYXRvclByb3BzXG4gICk7XG5cbiAgcmV0dXJuIHRvQ29uZGl0aW9uYWxQcm9taXNlKG1heWJlRXJyb3IsIGFzeW5jKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGVjb3JhdG9yczxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBBc3luYyBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZSxcbj4oXG4gIG5ld01vZGVsOiBNLFxuICBvbGRNb2RlbDogTSxcbiAgcHJvcDogc3RyaW5nLFxuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JNZXRhZGF0YUFzeW5jW10sXG4gIGFzeW5jPzogQXN5bmNcbik6IENvbmRpdGlvbmFsQXN5bmM8QXN5bmMsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4+ID0ge307XG5cbiAgZm9yIChjb25zdCBkZWNvcmF0b3Igb2YgZGVjb3JhdG9ycykge1xuICAgIC8vIHNraXAgYXN5bmMgZGVjb3JhdG9ycyBpZiB2YWxpZGF0ZURlY29yYXRvcnMgaXMgY2FsbGVkIHN5bmNocm9ub3VzbHkgKGFzeW5jID0gZmFsc2UpXG4gICAgaWYgKCFhc3luYyAmJiBkZWNvcmF0b3IucHJvcHMuYXN5bmMpIGNvbnRpbnVlO1xuXG4gICAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZURlY29yYXRvcihcbiAgICAgIG5ld01vZGVsLFxuICAgICAgb2xkTW9kZWwsXG4gICAgICBwcm9wLFxuICAgICAgZGVjb3JhdG9yLFxuICAgICAgYXN5bmNcbiAgICApO1xuXG4gICAgLypcbiAgICBJZiB0aGUgZGVjb3JhdG9yIGlzIGEgbGlzdCwgZWFjaCBlbGVtZW50IG11c3QgYmUgY2hlY2tlZC5cbiAgICBXaGVuICdhc3luYycgaXMgdHJ1ZSwgdGhlICdlcnInIHdpbGwgYWx3YXlzIGJlIGEgcGVuZGluZyBwcm9taXNlIGluaXRpYWxseSxcbiAgICBzbyB0aGUgJyFlcnInIGNoZWNrIHdpbGwgZXZhbHVhdGUgdG8gZmFsc2UgKGV2ZW4gaWYgdGhlIHByb21pc2UgbGF0ZXIgcmVzb2x2ZXMgd2l0aCBubyBlcnJvcnMpXG4gICAgKi9cbiAgICBpZiAoZGVjb3JhdG9yLmtleSA9PT0gVmFsaWRhdGlvbktleXMuTElTVCAmJiAoIXZhbGlkYXRpb25FcnJvcnMgfHwgYXN5bmMpKSB7XG4gICAgICBjb25zdCBuZXdQcm9wVmFsdWUgPSAobmV3TW9kZWwgYXMgYW55KVtwcm9wXTtcbiAgICAgIGNvbnN0IG9sZFByb3BWYWx1ZSA9IChvbGRNb2RlbCBhcyBhbnkpW3Byb3BdO1xuXG4gICAgICBjb25zdCBuZXdWYWx1ZXMgPVxuICAgICAgICBuZXdQcm9wVmFsdWUgaW5zdGFuY2VvZiBTZXQgPyBbLi4ubmV3UHJvcFZhbHVlXSA6IG5ld1Byb3BWYWx1ZTtcbiAgICAgIGNvbnN0IG9sZFZhbHVlcyA9XG4gICAgICAgIG9sZFByb3BWYWx1ZSBpbnN0YW5jZW9mIFNldCA/IFsuLi5vbGRQcm9wVmFsdWVdIDogb2xkUHJvcFZhbHVlO1xuXG4gICAgICBpZiAobmV3VmFsdWVzICYmIG5ld1ZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICBkZWNvcmF0b3IucHJvcHMuY2xhc3MgfHxcbiAgICAgICAgICBkZWNvcmF0b3IucHJvcHMuY2xhenogfHxcbiAgICAgICAgICBkZWNvcmF0b3IucHJvcHMuY3VzdG9tVHlwZXM7XG5cbiAgICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gW3R5cGVzXS5mbGF0KCkubWFwKCh0KSA9PiB7XG4gICAgICAgICAgdCA9IHR5cGVvZiB0ID09PSBcImZ1bmN0aW9uXCIgJiYgIXQubmFtZSA/IHQoKSA6IHQ7XG4gICAgICAgICAgdCA9ICh0IGFzIGFueSkubmFtZSA/ICh0IGFzIGFueSkubmFtZSA6IHQ7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh0KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBlcnJzID0gbmV3VmFsdWVzLm1hcCgoY2hpbGRWYWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gZmluZCBieSBpZCBzbyB0aGUgbGlzdCBlbGVtZW50cyBvcmRlciBkb2Vzbid0IG1hdHRlclxuICAgICAgICAgIGNvbnN0IGlkID0gZmluZE1vZGVsSWQoY2hpbGRWYWx1ZSBhcyBhbnksIHRydWUpO1xuICAgICAgICAgIGlmICghaWQpIHJldHVybiBcIkZhaWxlZCB0byBmaW5kIG1vZGVsIGlkXCI7XG5cbiAgICAgICAgICBjb25zdCBvbGRNb2RlbCA9IG9sZFZhbHVlcy5maW5kKFxuICAgICAgICAgICAgKGVsOiBhbnkpID0+IGlkID09PSBmaW5kTW9kZWxJZChlbCwgdHJ1ZSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKE1vZGVsLmlzTW9kZWwoY2hpbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZFZhbHVlLmhhc0Vycm9ycyhvbGRNb2RlbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFsbG93ZWRUeXBlcy5pbmNsdWRlcyh0eXBlb2YgY2hpbGRWYWx1ZSlcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IFwiVmFsdWUgaGFzIG5vIHZhbGlkYXRhYmxlIHR5cGVcIjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFzeW5jKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9ycyA9IFByb21pc2UuYWxsKGVycnMpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWxsRW1wdHkgPSByZXN1bHQuZXZlcnkoKHIpID0+ICFyKTtcbiAgICAgICAgICAgIHJldHVybiBhbGxFbXB0eSA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgICAgICB9KSBhcyBhbnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYWxsRW1wdHkgPSBlcnJzLmV2ZXJ5KChyOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+ICFyKTtcbiAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzID0gZXJycy5sZW5ndGggPiAwICYmICFhbGxFbXB0eSA/IGVycnMgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvbkVycm9ycykgKHJlc3VsdCBhcyBhbnkpW2RlY29yYXRvci5rZXldID0gdmFsaWRhdGlvbkVycm9ycztcbiAgfVxuXG4gIGlmICghYXN5bmMpXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3VsdCkubGVuZ3RoID4gMCA/IChyZXN1bHQgYXMgYW55KSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzdWx0KTtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3QudmFsdWVzKHJlc3VsdCkgYXMgUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+W107XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigocmVzb2x2ZWRWYWx1ZXMpID0+IHtcbiAgICBjb25zdCByZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB2YWwgPSByZXNvbHZlZFZhbHVlc1tpXTtcbiAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXNba2V5c1tpXV0gPSB2YWw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZXMpLmxlbmd0aCA+IDAgPyByZXMgOiB1bmRlZmluZWQ7XG4gIH0pIGFzIGFueTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdGVzIGNoYW5nZXMgYmV0d2VlbiB0d28gbW9kZWwgdmVyc2lvbnNcbiAqIEBzdW1tYXJ5IENvbXBhcmVzIGFuIG9sZCBhbmQgbmV3IG1vZGVsIHZlcnNpb24gdG8gdmFsaWRhdGUgdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEBwYXJhbSB7TX0gb2xkTW9kZWwgLSBUaGUgb3JpZ2luYWwgbW9kZWwgdmVyc2lvblxuICogQHBhcmFtIHtNfSBuZXdNb2RlbCAtIFRoZSB1cGRhdGVkIG1vZGVsIHZlcnNpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYXN5bmMgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHZhbGlkYXRpb24gc2hvdWxkIGJlIGFzeW5jaHJvbm91cy5cbiAqIEBwYXJhbSB7Li4uc3RyaW5nW119IGV4Y2VwdGlvbnMgLSBQcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUgZnJvbSB2YWxpZGF0aW9uXG4gKiBAcmV0dXJuIHtNb2RlbEVycm9yRGVmaW5pdGlvbnx1bmRlZmluZWR9IEVycm9yIGRlZmluaXRpb24gaWYgdmFsaWRhdGlvbiBmYWlscywgdW5kZWZpbmVkIG90aGVyd2lzZVxuICogQGZ1bmN0aW9uIHZhbGlkYXRlQ29tcGFyZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCB2YWxpZGF0ZUNvbXBhcmVcbiAqICAgcGFydGljaXBhbnQgUmVmbGVjdGlvblxuICogICBwYXJ0aWNpcGFudCBWYWxpZGF0aW9uXG4gKlxuICogICBDYWxsZXItPj52YWxpZGF0ZUNvbXBhcmU6IG9sZE1vZGVsLCBuZXdNb2RlbCwgZXhjZXB0aW9uc1xuICogICB2YWxpZGF0ZUNvbXBhcmUtPj5SZWZsZWN0aW9uOiBnZXQgZGVjb3JhdGVkIHByb3BlcnRpZXNcbiAqICAgUmVmbGVjdGlvbi0tPj52YWxpZGF0ZUNvbXBhcmU6IHByb3BlcnR5IGRlY29yYXRvcnNcbiAqICAgbG9vcCBGb3IgZWFjaCBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqICAgICB2YWxpZGF0ZUNvbXBhcmUtPj5WYWxpZGF0aW9uOiBnZXQgdmFsaWRhdG9yXG4gKiAgICAgVmFsaWRhdGlvbi0tPj52YWxpZGF0ZUNvbXBhcmU6IHZhbGlkYXRvclxuICogICAgIHZhbGlkYXRlQ29tcGFyZS0+PnZhbGlkYXRlQ29tcGFyZTogdmFsaWRhdGUgcHJvcGVydHkgdXBkYXRlXG4gKiAgIGVuZFxuICogICBsb29wIEZvciBuZXN0ZWQgbW9kZWxzXG4gKiAgICAgdmFsaWRhdGVDb21wYXJlLT4+dmFsaWRhdGVDb21wYXJlOiB2YWxpZGF0ZSBuZXN0ZWQgbW9kZWxzXG4gKiAgIGVuZFxuICogICB2YWxpZGF0ZUNvbXBhcmUtLT4+Q2FsbGVyOiB2YWxpZGF0aW9uIGVycm9ycyBvciB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ29tcGFyZTxNIGV4dGVuZHMgTW9kZWw8YW55Pj4oXG4gIG9sZE1vZGVsOiBNLFxuICBuZXdNb2RlbDogTSxcbiAgYXN5bmM6IGJvb2xlYW4sXG4gIC4uLmV4Y2VwdGlvbnM6IHN0cmluZ1tdXG4pOiBNb2RlbENvbmRpdGlvbmFsQXN5bmM8TT4ge1xuICBjb25zdCBkZWNvcmF0ZWRQcm9wZXJ0aWVzOiBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uW10gPVxuICAgIGdldFZhbGlkYXRhYmxlVXBkYXRlUHJvcHMobmV3TW9kZWwsIGV4Y2VwdGlvbnMpO1xuXG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIGNvbnN0IG5lc3RlZEVycm9yczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IHsgcHJvcCwgZGVjb3JhdG9ycyB9IG9mIGRlY29yYXRlZFByb3BlcnRpZXMpIHtcbiAgICBjb25zdCBwcm9wS2V5ID0gU3RyaW5nKHByb3ApO1xuICAgIGxldCBwcm9wVmFsdWUgPSAobmV3TW9kZWwgYXMgYW55KVtwcm9wXTtcblxuICAgIGlmICghZGVjb3JhdG9ycz8ubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIC8vIEdldCB0aGUgZGVmYXVsdCB0eXBlIHZhbGlkYXRvclxuICAgIGNvbnN0IGRlc2lnblR5cGVEZWMgPSBkZWNvcmF0b3JzLmZpbmQoKGQpID0+XG4gICAgICBbTW9kZWxLZXlzLlRZUEUsIFZhbGlkYXRpb25LZXlzLlRZUEVdLmluY2x1ZGVzKGQua2V5IGFzIGFueSlcbiAgICApO1xuICAgIGlmICghZGVzaWduVHlwZURlYykgY29udGludWU7XG5cbiAgICBjb25zdCBkZXNpZ25UeXBlID0gZGVzaWduVHlwZURlYy5wcm9wcy5uYW1lO1xuXG4gICAgLy8gSGFuZGxlIGFycmF5IG9yIFNldCB0eXBlcyBhbmQgZW5mb3JjZSB0aGUgcHJlc2VuY2Ugb2YgQGxpc3QgZGVjb3JhdG9yXG4gICAgaWYgKFtBcnJheS5uYW1lLCBTZXQubmFtZV0uaW5jbHVkZXMoZGVzaWduVHlwZSkpIHtcbiAgICAgIGNvbnN0IHsgZGVjb3JhdG9ycyB9ID0gUmVmbGVjdGlvbi5nZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICAgIG5ld01vZGVsLFxuICAgICAgICBwcm9wS2V5XG4gICAgICApIGFzIHVua25vd24gYXMgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbjtcblxuICAgICAgaWYgKCFkZWNvcmF0b3JzLnNvbWUoKGQpID0+IGQua2V5ID09PSBWYWxpZGF0aW9uS2V5cy5MSVNUKSkge1xuICAgICAgICByZXN1bHRbcHJvcEtleV0gPSB7XG4gICAgICAgICAgW1ZhbGlkYXRpb25LZXlzLlRZUEVdOiBgQXJyYXkgb3IgU2V0IHByb3BlcnR5ICcke3Byb3BLZXl9JyByZXF1aXJlcyBhIEBsaXN0IGRlY29yYXRvcmAsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHByb3BWYWx1ZSAmJlxuICAgICAgICAhKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSB8fCBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTZXQpXG4gICAgICApIHtcbiAgICAgICAgcmVzdWx0W3Byb3BLZXldID0ge1xuICAgICAgICAgIFtWYWxpZGF0aW9uS2V5cy5UWVBFXTogYFByb3BlcnR5ICcke1N0cmluZyhwcm9wKX0nIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgU2V0YCxcbiAgICAgICAgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBkZXNpZ246dHlwZSBkZWNvcmF0b3IsIHNpbmNlIEBsaXN0IGRlY29yYXRvciBhbHJlYWR5IGVuc3VyZXMgdHlwZVxuICAgICAgZm9yIChsZXQgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKGRlY29yYXRvcnNbaV0ua2V5ID09PSBNb2RlbEtleXMuVFlQRSkge1xuICAgICAgICAgIGRlY29yYXRvcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwcm9wVmFsdWUgPSBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTZXQgPyBbLi4ucHJvcFZhbHVlXSA6IHByb3BWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wRXJyb3JzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID1cbiAgICAgIHZhbGlkYXRlRGVjb3JhdG9ycyhuZXdNb2RlbCwgb2xkTW9kZWwsIHByb3BLZXksIGRlY29yYXRvcnMsIGFzeW5jKSB8fCB7fTtcblxuICAgIC8vIENoZWNrIGZvciBuZXN0ZWQgcHJvcGVydGllcy5cbiAgICAvLyBUbyBwcmV2ZW50IHVubmVjZXNzYXJ5IHByb2Nlc3NpbmcsIFwicHJvcFZhbHVlXCIgbXVzdCBiZSBkZWZpbmVkIGFuZCB2YWxpZGF0YWJsZVxuICAgIGNvbnN0IGlzQ29uc3RyID0gTW9kZWwuaXNQcm9wZXJ0eU1vZGVsKG5ld01vZGVsLCBwcm9wS2V5KTtcbiAgICAvLyBpZiBwcm9wVmFsdWUgIT09IHVuZGVmaW5lZCwgbnVsbFxuICAgIGlmIChwcm9wVmFsdWUgJiYgaXNDb25zdHIpIHtcbiAgICAgIGNvbnN0IGluc3RhbmNlOiBNb2RlbCA9IHByb3BWYWx1ZTtcbiAgICAgIGNvbnN0IGlzSW52YWxpZE1vZGVsID1cbiAgICAgICAgdHlwZW9mIGluc3RhbmNlICE9PSBcIm9iamVjdFwiIHx8XG4gICAgICAgICFpbnN0YW5jZS5oYXNFcnJvcnMgfHxcbiAgICAgICAgdHlwZW9mIGluc3RhbmNlLmhhc0Vycm9ycyAhPT0gXCJmdW5jdGlvblwiO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkTW9kZWwpIHtcbiAgICAgICAgLy8gcHJvcEVycm9yc1tWYWxpZGF0aW9uS2V5cy5UWVBFXSA9XG4gICAgICAgIC8vICAgXCJNb2RlbCBzaG91bGQgYmUgdmFsaWRhdGFibGUgYnV0IGl0J3Mgbm90LlwiO1xuICAgICAgICBjb25zb2xlLndhcm4oXCJNb2RlbCBzaG91bGQgYmUgdmFsaWRhdGFibGUgYnV0IGl0J3Mgbm90LlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5lc3RlZEVycm9yc1twcm9wS2V5XSA9IGluc3RhbmNlLmhhc0Vycm9ycygob2xkTW9kZWwgYXMgYW55KVtwcm9wXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHRvIHRoZSByZXN1bHQgaWYgd2UgaGF2ZSBhbnkgZXJyb3JzXG4gICAgLy8gQXN5bmMgbW9kZSByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHVuZGVmaW5lZCB3aGVuIG5vIGVycm9ycyBleGlzdFxuICAgIGlmIChPYmplY3Qua2V5cyhwcm9wRXJyb3JzKS5sZW5ndGggPiAwIHx8IGFzeW5jKVxuICAgICAgcmVzdWx0W3Byb3BLZXldID0gcHJvcEVycm9ycztcblxuICAgIC8vIFRoZW4gbWVyZ2UgYW55IG5lc3RlZCBlcnJvcnNcbiAgICBpZiAoIWFzeW5jKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhuZXN0ZWRFcnJvcnNbcHJvcEtleV0gfHwge30pLmZvckVhY2goKFtrZXksIGVycm9yXSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc3VsdFtgJHtwcm9wS2V5fS4ke2tleX1gXSA9IGVycm9yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTeW5jaHJvbm91cyByZXR1cm5cbiAgaWYgKCFhc3luYykge1xuICAgIHJldHVybiAoXG4gICAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmxlbmd0aCA+IDBcbiAgICAgICAgPyBuZXcgTW9kZWxFcnJvckRlZmluaXRpb24ocmVzdWx0KVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICkgYXMgYW55O1xuICB9XG5cbiAgY29uc3QgbWVyZ2VkOiBhbnkgPSByZXN1bHQ7IC8vIFRPRE86IGFwcGx5IGZpbHRlcmluZ1xuXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhtZXJnZWQpO1xuICBjb25zdCBwcm9taXNlcyA9IE9iamVjdC52YWx1ZXMobWVyZ2VkKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChwcm9taXNlcykudGhlbihhc3luYyAocmVzdWx0cykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogTW9kZWxFcnJvcnMgPSB7fTtcblxuICAgIGZvciAoY29uc3QgW3BhcmVudFByb3AsIG5lc3RlZEVyclByb21pc2VdIG9mIE9iamVjdC5lbnRyaWVzKG5lc3RlZEVycm9ycykpIHtcbiAgICAgIGNvbnN0IG5lc3RlZFByb3BEZWNFcnJvcnMgPSAoYXdhaXQgbmVzdGVkRXJyUHJvbWlzZSkgYXMgUmVjb3JkPFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGFueVxuICAgICAgPjtcblxuICAgICAgaWYgKG5lc3RlZFByb3BEZWNFcnJvcnMpXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG5lc3RlZFByb3BEZWNFcnJvcnMpLmZvckVhY2goXG4gICAgICAgICAgKFtuZXN0ZWRQcm9wLCBuZXN0ZWRQcm9wRGVjRXJyb3JdKSA9PiB7XG4gICAgICAgICAgICBpZiAobmVzdGVkUHJvcERlY0Vycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gW3BhcmVudFByb3AsIG5lc3RlZFByb3BdLmpvaW4oXCIuXCIpO1xuICAgICAgICAgICAgICByZXN1bHRbbmVzdGVkS2V5XSA9IG5lc3RlZFByb3BEZWNFcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgY29uc3QgcmVzID0gcmVzdWx0c1tpXTtcblxuICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IFwiZnVsZmlsbGVkXCIgJiYgcmVzLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgKHJlc3VsdCBhcyBhbnkpW2tleV0gPSByZXMudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICAocmVzdWx0IGFzIGFueSlba2V5XSA9XG4gICAgICAgICAgcmVzLnJlYXNvbiBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/IHJlcy5yZWFzb24ubWVzc2FnZVxuICAgICAgICAgICAgOiBTdHJpbmcocmVzLnJlYXNvbiB8fCBcIlZhbGlkYXRpb24gZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZXN1bHQpLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IE1vZGVsRXJyb3JEZWZpbml0aW9uKHJlc3VsdClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9KSBhcyBhbnk7XG59XG4iXX0=
268
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/model/validation.ts"],"names":[],"mappings":"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"}
@@ -93,4 +93,4 @@ export class Operations {
93
93
  Operations.getOpRegistry().register(handler, operation, target, propKey);
94
94
  }
95
95
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVyYXRpb25zL09wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBUyxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQ0FBNkI7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSx1QkFBb0I7QUFLNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBR3JCLGdCQUF1QixDQUFDO0lBRXhCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFrRDtRQUN0RSxJQUFJLE9BQU8sQ0FBQyxJQUFJO1lBQUUsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRXRDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsdUhBQXVILENBQ3hILENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sYUFBYSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBT1IsVUFBd0MsRUFDeEMsT0FBZSxFQUNmLFNBQWlCO1FBRWpCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQzVCLFVBQVUsRUFDVixPQUFPLEVBQ1AsU0FBUyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsYUFBYTtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVE7WUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUN6RSxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQ2IsT0FBc0MsRUFDdEMsU0FBd0IsRUFDeEIsTUFBUyxFQUNULE9BQXdCO1FBRXhCLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQ2pDLE9BQWMsRUFDZCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFzaGluZywgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25IYW5kbGVyIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE9wZXJhdGlvbnNSZWdpc3RyeSB9IGZyb20gXCIuL09wZXJhdGlvbnNSZWdpc3RyeVwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSVJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGF0aWMgdXRpbGl0eSBjbGFzcyBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uIG1hbmFnZW1lbnRcbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIHJlZ2lzdGVyaW5nLCByZXRyaWV2aW5nLCBhbmQgbWFuYWdpbmcgZGF0YWJhc2Ugb3BlcmF0aW9uIGhhbmRsZXJzXG4gKiBAY2xhc3MgT3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIE0gLSBNb2RlbCB0eXBlXG4gKiBAdGVtcGxhdGUgUiAtIFJlcG9zaXRvcnkgdHlwZVxuICogQHRlbXBsYXRlIFYgLSBNZXRhZGF0YSB0eXBlXG4gKiBAdGVtcGxhdGUgRiAtIFJlcG9zaXRvcnkgZmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gQ29udGV4dCB0eXBlXG4gKiBAZXhhbXBsZVxuICogLy8gUmVnaXN0ZXIgYSBoYW5kbGVyIGZvciBhIGNyZWF0ZSBvcGVyYXRpb25cbiAqIE9wZXJhdGlvbnMucmVnaXN0ZXIobXlIYW5kbGVyLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgdGFyZ2V0TW9kZWwsICdwcm9wZXJ0eU5hbWUnKTtcbiAqIFxuICogLy8gR2V0IGhhbmRsZXJzIGZvciBhIHNwZWNpZmljIG9wZXJhdGlvblxuICogY29uc3QgaGFuZGxlcnMgPSBPcGVyYXRpb25zLmdldCh0YXJnZXRNb2RlbC5jb25zdHJ1Y3Rvci5uYW1lLCAncHJvcGVydHlOYW1lJywgJ29uQ3JlYXRlJyk7XG4gKiBcbiAqIEBtZXJtYWlkXG4gKiBjbGFzc0RpYWdyYW1cbiAqICAgY2xhc3MgT3BlcmF0aW9ucyB7XG4gKiAgICAgLXJlZ2lzdHJ5OiBPcGVyYXRpb25zUmVnaXN0cnlcbiAqICAgICArZ2V0SGFuZGxlck5hbWUoaGFuZGxlcilcbiAqICAgICAra2V5KHN0cilcbiAqICAgICArZ2V0KHRhcmdldE5hbWUsIHByb3BLZXksIG9wZXJhdGlvbilcbiAqICAgICAtZ2V0T3BSZWdpc3RyeSgpXG4gKiAgICAgK3JlZ2lzdGVyKGhhbmRsZXIsIG9wZXJhdGlvbiwgdGFyZ2V0LCBwcm9wS2V5KVxuICogICB9XG4gKiAgIE9wZXJhdGlvbnMgLS0+IE9wZXJhdGlvbnNSZWdpc3RyeSA6IHVzZXNcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbnMge1xuICBwcml2YXRlIHN0YXRpYyByZWdpc3RyeTogT3BlcmF0aW9uc1JlZ2lzdHJ5O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyBhIHVuaXF1ZSBuYW1lIGZvciBhbiBvcGVyYXRpb24gaGFuZGxlclxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIG9yIGdlbmVyYXRlcyBhIGhhc2ggaWYgbmFtZSBpcyBub3QgYXZhaWxhYmxlXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgYW55LCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgaGFuZGxlciBmdW5jdGlvbiB0byBnZXQgdGhlIG5hbWUgZm9yXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIGhhbmRsZXIgb3IgYSBnZW5lcmF0ZWQgaGFzaFxuICAgKi9cbiAgc3RhdGljIGdldEhhbmRsZXJOYW1lKGhhbmRsZXI6IE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIGFueSwgYW55LCBhbnk+KSB7XG4gICAgaWYgKGhhbmRsZXIubmFtZSkgcmV0dXJuIGhhbmRsZXIubmFtZTtcblxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiSGFuZGxlciBuYW1lIG5vdCBkZWZpbmVkLiBBIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQsIGJ1dCB0aGlzIGlzIG5vdCBkZXNpcmFibGUuIHBsZWFzZSBhdm9pZCB1c2luZyBhbm9ueW1vdXMgZnVuY3Rpb25zXCJcbiAgICApO1xuICAgIHJldHVybiBIYXNoaW5nLmhhc2goaGFuZGxlci50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgcmVmbGVjdGlvbiBtZXRhZGF0YSBrZXlcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIGZ1bGx5IHF1YWxpZmllZCBtZXRhZGF0YSBrZXkgYnkgcHJlZml4aW5nIHdpdGggdGhlIHJlZmxlY3Rpb24gbmFtZXNwYWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgb3BlcmF0aW9uIGtleSBzdHJpbmcgdG8gcHJlZml4XG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZ1bGx5IHF1YWxpZmllZCBtZXRhZGF0YSBrZXlcbiAgICovXG4gIHN0YXRpYyBrZXkoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5SRUZMRUNUICsgc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgb3BlcmF0aW9uIGhhbmRsZXJzIGZvciBhIHNwZWNpZmljIHRhcmdldCBhbmQgb3BlcmF0aW9uXG4gICAqIEBzdW1tYXJ5IEdldHMgcmVnaXN0ZXJlZCBoYW5kbGVycyBmcm9tIHRoZSBvcGVyYXRpb25zIHJlZ2lzdHJ5IGZvciBhIGdpdmVuIHRhcmdldCwgcHJvcGVydHksIGFuZCBvcGVyYXRpb25cbiAgICogQHRlbXBsYXRlIE0gLSBNb2RlbCB0eXBlIGV4dGVuZGluZyBNb2RlbFxuICAgKiBAdGVtcGxhdGUgUiAtIFJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAgICogQHRlbXBsYXRlIFYgLSBNZXRhZGF0YSB0eXBlLCBkZWZhdWx0cyB0byBvYmplY3RcbiAgICogQHRlbXBsYXRlIEYgLSBSZXBvc2l0b3J5IGZsYWdzIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3NcbiAgICogQHRlbXBsYXRlIEMgLSBDb250ZXh0IHR5cGUgZXh0ZW5kaW5nIENvbnRleHQ8Rj5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0YXJnZXROYW1lIC0gVGhlIHRhcmdldCBjbGFzcyBuYW1lIG9yIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcEtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gZ2V0IGhhbmRsZXJzIGZvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBrZXkgdG8gZ2V0IGhhbmRsZXJzIGZvclxuICAgKiBAcmV0dXJuIHthbnl9IFRoZSByZWdpc3RlcmVkIGhhbmRsZXJzIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCwgcHJvcGVydHksIGFuZCBvcGVyYXRpb25cbiAgICovXG4gIHN0YXRpYyBnZXQ8XG4gICAgTSBleHRlbmRzIE1vZGVsLFxuICAgIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgICBWID0gb2JqZWN0LFxuICAgIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gICAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuICA+KFxuICAgIHRhcmdldE5hbWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcHJvcEtleTogc3RyaW5nLFxuICAgIG9wZXJhdGlvbjogc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBPcGVyYXRpb25zLnJlZ2lzdHJ5LmdldDxNLCBSLCBWLCBGLCBDPihcbiAgICAgIHRhcmdldE5hbWUsXG4gICAgICBwcm9wS2V5LFxuICAgICAgb3BlcmF0aW9uXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyBvciBpbml0aWFsaXplcyB0aGUgb3BlcmF0aW9ucyByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBleGlzdGluZyByZWdpc3RyeSBvciBjcmVhdGVzIGEgbmV3IG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqIEByZXR1cm4ge09wZXJhdGlvbnNSZWdpc3RyeX0gVGhlIG9wZXJhdGlvbnMgcmVnaXN0cnkgaW5zdGFuY2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldE9wUmVnaXN0cnkoKSB7XG4gICAgaWYgKCFPcGVyYXRpb25zLnJlZ2lzdHJ5KSBPcGVyYXRpb25zLnJlZ2lzdHJ5ID0gbmV3IE9wZXJhdGlvbnNSZWdpc3RyeSgpO1xuICAgIHJldHVybiBPcGVyYXRpb25zLnJlZ2lzdHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgYW4gb3BlcmF0aW9uIGhhbmRsZXIgZm9yIGEgc3BlY2lmaWMgdGFyZ2V0IGFuZCBvcGVyYXRpb25cbiAgICogQHN1bW1hcnkgQWRkcyBhIGhhbmRsZXIgdG8gdGhlIG9wZXJhdGlvbnMgcmVnaXN0cnkgZm9yIGEgZ2l2ZW4gdGFyZ2V0LCBwcm9wZXJ0eSwgYW5kIG9wZXJhdGlvblxuICAgKiBAdGVtcGxhdGUgViAtIE1vZGVsIHR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uSGFuZGxlcjxWLCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgaGFuZGxlciBmdW5jdGlvbiB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN9IG9wZXJhdGlvbiAtIFRoZSBvcGVyYXRpb24ga2V5IHRvIHJlZ2lzdGVyIHRoZSBoYW5kbGVyIGZvclxuICAgKiBAcGFyYW0ge1Z9IHRhcmdldCAtIFRoZSB0YXJnZXQgbW9kZWwgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3BLZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHJlZ2lzdGVyIHRoZSBoYW5kbGVyIGZvclxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyPFYgZXh0ZW5kcyBNb2RlbD4oXG4gICAgaGFuZGxlcjogT3BlcmF0aW9uSGFuZGxlcjxWLCBhbnksIGFueT4sXG4gICAgb3BlcmF0aW9uOiBPcGVyYXRpb25LZXlzLFxuICAgIHRhcmdldDogVixcbiAgICBwcm9wS2V5OiBzdHJpbmcgfCBzeW1ib2xcbiAgKSB7XG4gICAgT3BlcmF0aW9ucy5nZXRPcFJlZ2lzdHJ5KCkucmVnaXN0ZXIoXG4gICAgICBoYW5kbGVyIGFzIGFueSxcbiAgICAgIG9wZXJhdGlvbixcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BLZXlcbiAgICApO1xuICB9XG59XG4iXX0=
96
+ //# sourceMappingURL=Operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Operations.js","sourceRoot":"","sources":["../../../src/operations/Operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,OAAO,EAAE,aAAa,EAAE,uBAAoB;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,UAAU;IAGrB,gBAAuB,CAAC;IAExB;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,OAAkD;QACtE,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC;QAEtC,OAAO,CAAC,IAAI,CACV,uHAAuH,CACxH,CAAC;QACF,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,CAOR,UAAwC,EACxC,OAAe,EACf,SAAiB;QAEjB,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAC5B,UAAU,EACV,OAAO,EACP,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,aAAa;QAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ;YAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACzE,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CACb,OAAsC,EACtC,SAAwB,EACxB,MAAS,EACT,OAAwB;QAExB,UAAU,CAAC,aAAa,EAAE,CAAC,QAAQ,CACjC,OAAc,EACd,SAAS,EACT,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
@@ -89,4 +89,4 @@ export class OperationsRegistry {
89
89
  this.cache[name][propKey][operation][handlerName] = handler;
90
90
  }
91
91
  }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uc1JlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZXJhdGlvbnMvT3BlcmF0aW9uc1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsd0JBQXFCO0FBSzFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQS9CO1FBQ21CLFVBQUssR0FNbEIsRUFBRSxDQUFDO0lBdUZULENBQUM7SUFyRkM7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILEdBQUcsQ0FPRCxNQUFvQyxFQUNwQyxPQUFlLEVBQ2YsU0FBaUIsRUFDakIsS0FBeUM7UUFFekMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3JFLEtBQUssQ0FBQyxPQUFPLENBQ1gsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQzdELENBQUM7WUFDRiw2REFBNkQ7UUFDL0QsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsSUFDRSxPQUFPLE1BQU0sS0FBSyxRQUFRO2dCQUMxQixNQUFNLEtBQUssTUFBTSxDQUFDLFNBQVM7Z0JBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssTUFBTSxDQUFDLFNBQVM7Z0JBRWxELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSTtZQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBZ0IsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxRQUFRLENBT04sT0FBd0MsRUFDeEMsU0FBd0IsRUFDeEIsTUFBUyxFQUNULE9BQXdCO1FBRXhCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQzlELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbkhhbmRsZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSVJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgT3BlcmF0aW9ucyB9IGZyb20gXCIuL09wZXJhdGlvbnNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWdpc3RyeSBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uIGhhbmRsZXJzXG4gKiBAc3VtbWFyeSBNYW5hZ2VzIGFuZCBzdG9yZXMgb3BlcmF0aW9uIGhhbmRsZXJzIGZvciBkaWZmZXJlbnQgbW9kZWwgcHJvcGVydGllcyBhbmQgb3BlcmF0aW9uc1xuICogQGNsYXNzIE9wZXJhdGlvbnNSZWdpc3RyeVxuICogQHRlbXBsYXRlIE0gLSBNb2RlbCB0eXBlXG4gKiBAdGVtcGxhdGUgUiAtIFJlcG9zaXRvcnkgdHlwZVxuICogQHRlbXBsYXRlIFYgLSBNZXRhZGF0YSB0eXBlXG4gKiBAdGVtcGxhdGUgRiAtIFJlcG9zaXRvcnkgZmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gQ29udGV4dCB0eXBlXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGEgcmVnaXN0cnkgYW5kIHJlZ2lzdGVyIGEgaGFuZGxlclxuICogY29uc3QgcmVnaXN0cnkgPSBuZXcgT3BlcmF0aW9uc1JlZ2lzdHJ5KCk7XG4gKiByZWdpc3RyeS5yZWdpc3RlcihteUhhbmRsZXIsIE9wZXJhdGlvbktleXMuQ1JFQVRFLCB0YXJnZXRNb2RlbCwgJ3Byb3BlcnR5TmFtZScpO1xuICpcbiAqIC8vIEdldCBoYW5kbGVycyBmb3IgYSBzcGVjaWZpYyBvcGVyYXRpb25cbiAqIGNvbnN0IGhhbmRsZXJzID0gcmVnaXN0cnkuZ2V0KHRhcmdldE1vZGVsLmNvbnN0cnVjdG9yLm5hbWUsICdwcm9wZXJ0eU5hbWUnLCAnb25DcmVhdGUnKTtcbiAqXG4gKiBAbWVybWFpZFxuICogY2xhc3NEaWFncmFtXG4gKiAgIGNsYXNzIE9wZXJhdGlvbnNSZWdpc3RyeSB7XG4gKiAgICAgLWNhY2hlOiBSZWNvcmR+c3RyaW5nLCBSZWNvcmR+c3RyaW5nfHN5bWJvbCwgUmVjb3JkfnN0cmluZywgUmVjb3JkfnN0cmluZywgT3BlcmF0aW9uSGFuZGxlcn5+fn5cbiAqICAgICArZ2V0KHRhcmdldCwgcHJvcEtleSwgb3BlcmF0aW9uLCBhY2N1bSlcbiAqICAgICArcmVnaXN0ZXIoaGFuZGxlciwgb3BlcmF0aW9uLCB0YXJnZXQsIHByb3BLZXkpXG4gKiAgIH1cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbnNSZWdpc3RyeSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGU6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgUmVjb3JkPFxuICAgICAgc3RyaW5nIHwgc3ltYm9sLFxuICAgICAgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgYW55LCBhbnksIGFueT4+PlxuICAgID5cbiAgPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIG9wZXJhdGlvbiBoYW5kbGVycyBmb3IgYSBzcGVjaWZpYyB0YXJnZXQgYW5kIG9wZXJhdGlvblxuICAgKiBAc3VtbWFyeSBGaW5kcyBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVycyBmb3IgYSBnaXZlbiB0YXJnZXQsIHByb3BlcnR5LCBhbmQgb3BlcmF0aW9uLCBpbmNsdWRpbmcgZnJvbSBwYXJlbnQgY2xhc3Nlc1xuICAgKiBAdGVtcGxhdGUgTSAtIE1vZGVsIHR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBSIC0gUmVwb3NpdG9yeSB0eXBlIGV4dGVuZGluZyBJUmVwb3NpdG9yeVxuICAgKiBAdGVtcGxhdGUgViAtIE1ldGFkYXRhIHR5cGVcbiAgICogQHRlbXBsYXRlIEYgLSBSZXBvc2l0b3J5IGZsYWdzIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3NcbiAgICogQHRlbXBsYXRlIEMgLSBDb250ZXh0IHR5cGUgZXh0ZW5kaW5nIENvbnRleHQ8Rj5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0YXJnZXQgLSBUaGUgdGFyZ2V0IGNsYXNzIG5hbWUgb3Igb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wS2V5IC0gVGhlIHByb3BlcnR5IGtleSB0byBnZXQgaGFuZGxlcnMgZm9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIGtleSB0byBnZXQgaGFuZGxlcnMgZm9yXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uSGFuZGxlcltdfSBbYWNjdW1dIC0gQWNjdW11bGF0b3IgZm9yIHJlY3Vyc2l2ZSBjYWxsc1xuICAgKiBAcmV0dXJuIHtPcGVyYXRpb25IYW5kbGVyW10gfCB1bmRlZmluZWR9IEFycmF5IG9mIGhhbmRsZXJzIG9yIHVuZGVmaW5lZCBpZiBub25lIGZvdW5kXG4gICAqL1xuICBnZXQ8XG4gICAgTSBleHRlbmRzIE1vZGVsLFxuICAgIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgICBWLFxuICAgIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MsXG4gICAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4gID4oXG4gICAgdGFyZ2V0OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHByb3BLZXk6IHN0cmluZyxcbiAgICBvcGVyYXRpb246IHN0cmluZyxcbiAgICBhY2N1bT86IE9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz5bXVxuICApOiBPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+W10gfCB1bmRlZmluZWQge1xuICAgIGFjY3VtID0gYWNjdW0gfHwgW107XG4gICAgbGV0IG5hbWU7XG4gICAgdHJ5IHtcbiAgICAgIG5hbWUgPSB0eXBlb2YgdGFyZ2V0ID09PSBcInN0cmluZ1wiID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICBhY2N1bS51bnNoaWZ0KFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKHRoaXMuY2FjaGVbbmFtZV1bcHJvcEtleV1bb3BlcmF0aW9uXSB8fCBbXSlcbiAgICAgICk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgdGFyZ2V0ID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgIHRhcmdldCA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fFxuICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSA9PT0gT2JqZWN0LnByb3RvdHlwZVxuICAgICAgKVxuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgfVxuXG4gICAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7XG4gICAgaWYgKHByb3RvLmNvbnN0cnVjdG9yLm5hbWUgPT09IG5hbWUpIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcblxuICAgIHJldHVybiB0aGlzLmdldDxNLCBSLCBWLCBGLCBDPihwcm90bywgcHJvcEtleSwgb3BlcmF0aW9uLCBhY2N1bSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhbiBvcGVyYXRpb24gaGFuZGxlciBmb3IgYSBzcGVjaWZpYyB0YXJnZXQgYW5kIG9wZXJhdGlvblxuICAgKiBAc3VtbWFyeSBTdG9yZXMgYSBoYW5kbGVyIGluIHRoZSByZWdpc3RyeSBmb3IgYSBnaXZlbiB0YXJnZXQsIHByb3BlcnR5LCBhbmQgb3BlcmF0aW9uXG4gICAqIEB0ZW1wbGF0ZSBNIC0gTW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICogQHRlbXBsYXRlIFIgLSBSZXBvc2l0b3J5IHR5cGUgZXh0ZW5kaW5nIElSZXBvc2l0b3J5XG4gICAqIEB0ZW1wbGF0ZSBWIC0gTWV0YWRhdGEgdHlwZVxuICAgKiBAdGVtcGxhdGUgRiAtIFJlcG9zaXRvcnkgZmxhZ3MgZXh0ZW5kaW5nIFJlcG9zaXRvcnlGbGFnc1xuICAgKiBAdGVtcGxhdGUgQyAtIENvbnRleHQgdHlwZSBleHRlbmRpbmcgQ29udGV4dDxGPlxuICAgKiBAcGFyYW0ge09wZXJhdGlvbkhhbmRsZXJ9IGhhbmRsZXIgLSBUaGUgaGFuZGxlciBmdW5jdGlvbiB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN9IG9wZXJhdGlvbiAtIFRoZSBvcGVyYXRpb24ga2V5IHRvIHJlZ2lzdGVyIHRoZSBoYW5kbGVyIGZvclxuICAgKiBAcGFyYW0ge019IHRhcmdldCAtIFRoZSB0YXJnZXQgbW9kZWwgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3BLZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHJlZ2lzdGVyIHRoZSBoYW5kbGVyIGZvclxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcmVnaXN0ZXI8XG4gICAgTSBleHRlbmRzIE1vZGVsLFxuICAgIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgICBWLFxuICAgIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MsXG4gICAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4gID4oXG4gICAgaGFuZGxlcjogT3BlcmF0aW9uSGFuZGxlcjxNLCBSLCBWLCBGLCBDPixcbiAgICBvcGVyYXRpb246IE9wZXJhdGlvbktleXMsXG4gICAgdGFyZ2V0OiBNLFxuICAgIHByb3BLZXk6IHN0cmluZyB8IHN5bWJvbFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgY29uc3QgaGFuZGxlck5hbWUgPSBPcGVyYXRpb25zLmdldEhhbmRsZXJOYW1lKGhhbmRsZXIpO1xuXG4gICAgaWYgKCF0aGlzLmNhY2hlW25hbWVdKSB0aGlzLmNhY2hlW25hbWVdID0ge307XG4gICAgaWYgKCF0aGlzLmNhY2hlW25hbWVdW3Byb3BLZXldKSB0aGlzLmNhY2hlW25hbWVdW3Byb3BLZXldID0ge307XG4gICAgaWYgKCF0aGlzLmNhY2hlW25hbWVdW3Byb3BLZXldW29wZXJhdGlvbl0pXG4gICAgICB0aGlzLmNhY2hlW25hbWVdW3Byb3BLZXldW29wZXJhdGlvbl0gPSB7fTtcbiAgICBpZiAodGhpcy5jYWNoZVtuYW1lXVtwcm9wS2V5XVtvcGVyYXRpb25dW2hhbmRsZXJOYW1lXSkgcmV0dXJuO1xuICAgIHRoaXMuY2FjaGVbbmFtZV1bcHJvcEtleV1bb3BlcmF0aW9uXVtoYW5kbGVyTmFtZV0gPSBoYW5kbGVyO1xuICB9XG59XG4iXX0=
92
+ //# sourceMappingURL=OperationsRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationsRegistry.js","sourceRoot":"","sources":["../../../src/operations/OperationsRegistry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAK1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACmB,UAAK,GAMlB,EAAE,CAAC;IAuFT,CAAC;IArFC;;;;;;;;;;;;;OAaG;IACH,GAAG,CAOD,MAAoC,EACpC,OAAe,EACf,SAAiB,EACjB,KAAyC;QAEzC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;YACrE,KAAK,CAAC,OAAO,CACX,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAC7D,CAAC;YACF,6DAA6D;QAC/D,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IACE,OAAO,MAAM,KAAK,QAAQ;gBAC1B,MAAM,KAAK,MAAM,CAAC,SAAS;gBAC3B,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,SAAS;gBAElD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI;YAAE,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE1E,OAAO,IAAI,CAAC,GAAG,CAAgB,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAON,OAAwC,EACxC,SAAwB,EACxB,MAAS,EACT,OAAwB;QAExB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACrC,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC;YAAE,OAAO;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IAC9D,CAAC;CACF"}
@@ -12,7 +12,8 @@ export declare enum OperationKeys {
12
12
  UPDATE = "update",
13
13
  DELETE = "delete",
14
14
  ON = "on.",
15
- AFTER = "after."
15
+ AFTER = "after.",
16
+ BLOCK = "block"
16
17
  }
17
18
  /**
18
19
  * @description Type for basic CRUD operations
@@ -14,6 +14,7 @@ export var OperationKeys;
14
14
  OperationKeys["DELETE"] = "delete";
15
15
  OperationKeys["ON"] = "on.";
16
16
  OperationKeys["AFTER"] = "after.";
17
+ OperationKeys["BLOCK"] = "block";
17
18
  })(OperationKeys || (OperationKeys = {}));
18
19
  /**
19
20
  * @description Bulk database operation key constants
@@ -49,4 +50,4 @@ export const DBOperations = {
49
50
  OperationKeys.DELETE,
50
51
  ],
51
52
  };
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZXJhdGlvbnMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBUVg7QUFSRCxXQUFZLGFBQWE7SUFDdkIsdURBQXNDLENBQUE7SUFDdEMsa0NBQWlCLENBQUE7SUFDakIsOEJBQWEsQ0FBQTtJQUNiLGtDQUFpQixDQUFBO0lBQ2pCLGtDQUFpQixDQUFBO0lBQ2pCLDJCQUFVLENBQUE7SUFDVixpQ0FBZ0IsQ0FBQTtBQUNsQixDQUFDLEVBUlcsYUFBYSxLQUFiLGFBQWEsUUFReEI7QUFjRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQU4sSUFBWSxxQkFLWDtBQUxELFdBQVkscUJBQXFCO0lBQy9CLGlEQUF3QixDQUFBO0lBQ3hCLDZDQUFvQixDQUFBO0lBQ3BCLGlEQUF3QixDQUFBO0lBQ3hCLGlEQUF3QixDQUFBO0FBQzFCLENBQUMsRUFMVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBS2hDO0FBY0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXFDO0lBQzVELE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztJQUMxQixNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDOUIsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzNELFdBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUN2RCxHQUFHLEVBQUU7UUFDSCxhQUFhLENBQUMsTUFBTTtRQUNwQixhQUFhLENBQUMsSUFBSTtRQUNsQixhQUFhLENBQUMsTUFBTTtRQUNwQixhQUFhLENBQUMsTUFBTTtLQUNyQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBEYXRhYmFzZSBvcGVyYXRpb24ga2V5IGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyBDUlVEIG9wZXJhdGlvbnMgYW5kIHRoZWlyIGxpZmVjeWNsZSBwaGFzZXNcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgZW51bSBPcGVyYXRpb25LZXlzIHtcbiAgUkVGTEVDVCA9IFwiZGVjYWYubW9kZWwuZGIub3BlcmF0aW9ucy5cIixcbiAgQ1JFQVRFID0gXCJjcmVhdGVcIixcbiAgUkVBRCA9IFwicmVhZFwiLFxuICBVUERBVEUgPSBcInVwZGF0ZVwiLFxuICBERUxFVEUgPSBcImRlbGV0ZVwiLFxuICBPTiA9IFwib24uXCIsXG4gIEFGVEVSID0gXCJhZnRlci5cIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBmb3IgYmFzaWMgQ1JVRCBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBVbmlvbiB0eXBlIG9mIHRoZSBmb3VyIGJhc2ljIGRhdGFiYXNlIG9wZXJhdGlvbnM6IGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBkZWxldGVcbiAqIEB0eXBlZGVmIHtzdHJpbmd9IENydWRPcGVyYXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZE9wZXJhdGlvbnMgPVxuICB8IE9wZXJhdGlvbktleXMuQ1JFQVRFXG4gIHwgT3BlcmF0aW9uS2V5cy5SRUFEXG4gIHwgT3BlcmF0aW9uS2V5cy5VUERBVEVcbiAgfCBPcGVyYXRpb25LZXlzLkRFTEVURTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQnVsayBkYXRhYmFzZSBvcGVyYXRpb24ga2V5IGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyBidWxrIENSVUQgb3BlcmF0aW9ucyBmb3IgaGFuZGxpbmcgbXVsdGlwbGUgcmVjb3JkcyBhdCBvbmNlXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGVudW0gQnVsa0NydWRPcGVyYXRpb25LZXlzIHtcbiAgQ1JFQVRFX0FMTCA9IFwiY3JlYXRlQWxsXCIsXG4gIFJFQURfQUxMID0gXCJyZWFkQWxsXCIsXG4gIFVQREFURV9BTEwgPSBcInVwZGF0ZUFsbFwiLFxuICBERUxFVEVfQUxMID0gXCJkZWxldGVBbGxcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBmb3IgYnVsayBDUlVEIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IFVuaW9uIHR5cGUgb2YgdGhlIGZvdXIgYnVsayBkYXRhYmFzZSBvcGVyYXRpb25zIGZvciBoYW5kbGluZyBtdWx0aXBsZSByZWNvcmRzIGF0IG9uY2VcbiAqIEB0eXBlZGVmIHtzdHJpbmd9IEJ1bGtDcnVkT3BlcmF0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIEJ1bGtDcnVkT3BlcmF0aW9ucyA9XG4gIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzLkNSRUFURV9BTExcbiAgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuUkVBRF9BTExcbiAgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTFxuICB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5ERUxFVEVfQUxMO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHcm91cGVkIENSVUQgb3BlcmF0aW9ucyBmb3IgZGVjb3JhdG9yIG1hcHBpbmdcbiAqIEBzdW1tYXJ5IE1hcHMgb3V0IGdyb3VwcyBvZiBDUlVEIG9wZXJhdGlvbnMgZm9yIGVhc2llciBtYXBwaW5nIG9mIGRlY29yYXRvcnNcbiAqIEBjb25zdCBEQk9wZXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgREJPcGVyYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBDcnVkT3BlcmF0aW9uc1tdPiA9IHtcbiAgQ1JFQVRFOiBbT3BlcmF0aW9uS2V5cy5DUkVBVEVdLFxuICBSRUFEOiBbT3BlcmF0aW9uS2V5cy5SRUFEXSxcbiAgVVBEQVRFOiBbT3BlcmF0aW9uS2V5cy5VUERBVEVdLFxuICBERUxFVEU6IFtPcGVyYXRpb25LZXlzLkRFTEVURV0sXG4gIENSRUFURV9VUERBVEU6IFtPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5VUERBVEVdLFxuICBSRUFEX0NSRUFURTogW09wZXJhdGlvbktleXMuUkVBRCwgT3BlcmF0aW9uS2V5cy5DUkVBVEVdLFxuICBBTEw6IFtcbiAgICBPcGVyYXRpb25LZXlzLkNSRUFURSxcbiAgICBPcGVyYXRpb25LZXlzLlJFQUQsXG4gICAgT3BlcmF0aW9uS2V5cy5VUERBVEUsXG4gICAgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gIF0sXG59O1xuIl19
53
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/operations/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,uDAAsC,CAAA;IACtC,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,2BAAU,CAAA;IACV,iCAAgB,CAAA;IAChB,gCAAe,CAAA;AACjB,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAcD;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;IACxB,6CAAoB,CAAA;IACpB,iDAAwB,CAAA;IACxB,iDAAwB,CAAA;AAC1B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqC;IAC5D,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IACvD,GAAG,EAAE;QACH,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,MAAM;KACrB;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { GeneralOperationHandler, GeneralUpdateOperationHandler, IdOperationHandler, OperationHandler, StandardOperationHandler, UpdateOperationHandler } from "./types";
2
- import { OperationKeys } from "./constants";
2
+ import { CrudOperations, OperationKeys } from "./constants";
3
3
  import { Model } from "@decaf-ts/decorator-validation";
4
4
  import { IRepository } from "../interfaces";
5
5
  import { RepositoryFlags } from "../repository/types";
@@ -263,3 +263,68 @@ export declare function after<V = object>(op: OperationKeys[] | undefined, handl
263
263
  * Operations-->>Client: Return final result
264
264
  */
265
265
  export declare function operation<V = object>(baseOp: OperationKeys.ON | OperationKeys.AFTER, operation: OperationKeys[] | undefined, handler: OperationHandler<any, any, V, any, any>, dataToAdd?: V, groupsort?: GroupSort): (target: any, propertyKey?: any) => void;
266
+ /**
267
+ * @description
268
+ * Creates a higher-order function that attaches a metadata entry containing a handler
269
+ * and its execution parameters, to be conditionally evaluated later.
270
+ *
271
+ * @summary
272
+ * The `executeIf` function is a decorator factory designed to wrap a handler function
273
+ * and associate it with a specific metadata key. When invoked, it stores both the
274
+ * parameters passed and the handler reference inside the metadata system for deferred
275
+ * or conditional evaluation. This is particularly useful for dynamically applying logic
276
+ * or decorators only when certain conditions are met.
277
+ *
278
+ * @template P - Represents a tuple of any parameter types that the handler function accepts.
279
+ *
280
+ * @param {string} key - The metadata key used to store and later retrieve the handler and its parameters.
281
+ * @param {(...params: P) => boolean} handler - A predicate or handler function that receives the same parameters as the decorator
282
+ * and determines whether the associated logic should execute.
283
+ *
284
+ * @return {(...params: P) => ReturnType<typeof metadata>}
285
+ * Returns a function that, when invoked with the given parameters, stores a metadata object containing
286
+ * both the parameters and the handler reference under the provided key.
287
+ *
288
+ * @function storeHandlerMetadata
289
+ *
290
+ * @mermaid
291
+ * sequenceDiagram
292
+ * participant Dev as Developer
293
+ * participant executeIf as executeIf()
294
+ * participant ReturnedFn as Returned Function
295
+ * participant Metadata as metadata()
296
+ *
297
+ * Dev->>executeIf: Calls executeIf(key, handler)
298
+ * executeIf->>ReturnedFn: Returns function(...params)
299
+ * Dev->>ReturnedFn: Invokes returned function with (...params)
300
+ * ReturnedFn->>Metadata: Calls metadata(key, { args: params, handler })
301
+ * Metadata-->>ReturnedFn: Returns stored metadata reference
302
+ * ReturnedFn-->>Dev: Returns metadata response
303
+ *
304
+ */
305
+ export declare function storeHandlerMetadata<P extends any[]>(key: string, handler: (...params: P) => boolean): (...params: Partial<P>) => (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
306
+ /**
307
+ * @description
308
+ * Decorator factory that conditionally blocks specific CRUD operations
309
+ * from being executed on a model or controller.
310
+ *
311
+ * @summary
312
+ * The `BlockOperations` decorator integrates with the `executeIf` mechanism to
313
+ * associate metadata that defines which CRUD operations should be restricted.
314
+ * When applied, it registers a conditional handler that evaluates whether a given
315
+ * operation is included in the list of blocked operations. This enables dynamic,
316
+ * metadata-driven control over allowed operations in CRUD-based systems.
317
+ *
318
+ * @template CrudOperations - Enum or type representing valid CRUD operations.
319
+ *
320
+ * @param {CrudOperations[]} operations - An array of CRUD operations that should be blocked.
321
+ * The handler will later check if the requested operation is part of this list.
322
+ *
323
+ * Returns a decorator that stores metadata indicating which operations are blocked.
324
+ * The metadata can be inspected or enforced later within the application's lifecycle.
325
+ *
326
+ * @function BlockOperations
327
+
328
+ * @category decorators
329
+ */
330
+ export declare const BlockOperations: (operations: CrudOperations[]) => (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
@@ -4,6 +4,7 @@ import { apply } from "@decaf-ts/reflection";
4
4
  import { propMetadata } from "@decaf-ts/decorator-validation";
5
5
  import { InternalError } from "./../repository/errors.js";
6
6
  import { getHandlerArgs } from "./../repository/utils.js";
7
+ import { metadata } from "@decaf-ts/decoration";
7
8
  const defaultPriority = 50;
8
9
  const DefaultGroupSort = { priority: defaultPriority };
9
10
  /**
@@ -380,4 +381,75 @@ export function operation(baseOp, operation = DBOperations.ALL, handler, dataToA
380
381
  return apply(...decorators)(target, propertyKey);
381
382
  };
382
383
  }
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVyYXRpb25zL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsdUJBQW9CO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsd0JBQXFCO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQVMsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQ0FBNkI7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQ0FBNEI7QUFpQnJELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUUzQixNQUFNLGdCQUFnQixHQUFjLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDO0FBaUJsRTs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsTUFBTSxDQUNiLEVBQWlCLEVBQ2pCLE9BQWtEO0lBRWxELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBRSxFQUFFO1FBQzFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQU9uQyxLQUFZLEVBQ1osVUFBK0MsRUFDL0MsTUFBYztJQUVkLE1BQU0sS0FBSyxHQUFzQixFQUFFLENBQUM7SUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBd0IsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxH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QUFDLElBQUksRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUc7b0JBQzdDLElBQUksRUFBRSxTQUFTO2lCQUNoQixDQUFDO2dCQUVGLEtBQUssQ0FBQyxJQUFJLENBQ1IsTUFBTSxDQUFDLFdBQTRCLEVBQUUsT0FBTyxDQUFDLEVBQzdDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUNoRCxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEdlbmVyYWxPcGVyYXRpb25IYW5kbGVyLFxuICBHZW5lcmFsVXBkYXRlT3BlcmF0aW9uSGFuZGxlcixcbiAgSWRPcGVyYXRpb25IYW5kbGVyLFxuICBPcGVyYXRpb25IYW5kbGVyLFxuICBTdGFuZGFyZE9wZXJhdGlvbkhhbmRsZXIsXG4gIFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXIsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBEQk9wZXJhdGlvbnMsIE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE9wZXJhdGlvbnMgfSBmcm9tIFwiLi9PcGVyYXRpb25zXCI7XG5pbXBvcnQgeyBhcHBseSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgTW9kZWwsIHByb3BNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IElSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnlGbGFncyB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L3R5cGVzXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvQ29udGV4dFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuaW1wb3J0IHsgZ2V0SGFuZGxlckFyZ3MgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHNvcnRpbmcgcGFyYW1ldGVycyBmb3IgZ3JvdXBpbmcgZGVjb3JhdG9yc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBzcGVjaWZ5aW5nIGdyb3VwIHNvcnRpbmcgb3B0aW9uc1xuICogQHR5cGVkZWYge09iamVjdH0gR3JvdXBTb3J0XG4gKiBAcHJvcGVydHkge251bWJlcn0gcHJpb3JpdHkgLSBUaGUgcHJpb3JpdHkgb2YgdGhlIHNvcnRpbmcgb3BlcmF0aW9uLCBsb3dlciBudW1iZXJzIHJlcHJlc2VudCBoaWdoZXIgcHJpb3JpdHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZ3JvdXBdIC0gT3B0aW9uYWwgcHJvcGVydHkgdG8gZ3JvdXAgZGVjb3JhdG9ycywgdXNlZCBmb3IgZ3JvdXBpbmcgcmVsYXRlZCBvcGVyYXRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2dyb3VwUHJpb3JpdHldIC0gT3B0aW9uYWwgcHJvcGVydHkgdG8gc3BlY2lmeSB0aGUgcHJpb3JpdHkgd2l0aGluIGEgZ3JvdXAsIGxvd2VyIG51bWJlcnMgcmVwcmVzZW50IGhpZ2hlciBwcmlvcml0eSB3aXRoaW4gdGhlIGdyb3VwXG4gKiBAY2F0ZWdvcnkgVHlwZSBEZWZpbml0aW9uc1xuICovXG5leHBvcnQgdHlwZSBHcm91cFNvcnQgPSB7XG4gIHByaW9yaXR5OiBudW1iZXI7XG4gIGdyb3VwPzogc3RyaW5nO1xuICBncm91cFByaW9yaXR5PzogbnVtYmVyO1xufTtcblxuY29uc3QgZGVmYXVsdFByaW9yaXR5ID0gNTA7XG5cbmNvbnN0IERlZmF1bHRHcm91cFNvcnQ6IEdyb3VwU29ydCA9IHsgcHJpb3JpdHk6IGRlZmF1bHRQcmlvcml0eSB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3JPYmplY3QgdHlwZSBkZWZpbml0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgYW4gb2JqZWN0IHVzZWQgdG8gcmVwcmVzZW50IGEgZGVjb3JhdG9yIGluIHRoZSBjb250ZXh0IG9mIGRhdGFiYXNlIG9wZXJhdGlvbnMuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZWNvcmF0b3JPYmplY3RcbiAqIEBwcm9wZXJ0eSB7T3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgYW55LCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgaGFuZGxlciBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBkdXJpbmcgdGhlIG9wZXJhdGlvblxuICogQHByb3BlcnR5IHtvYmplY3R9IGRhdGEgLSBPcHRpb25hbCBtZXRhZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9wIC0gVGhlIHByb3BlcnR5IGtleSB0byB3aGljaCB0aGUgZGVjb3JhdG9yIGlzIGFwcGxpZWRcbiAqIEBjYXRlZ29yeSBUeXBlIERlZmluaXRpb25zXG4gKi9cbmV4cG9ydCB0eXBlIERlY29yYXRvck9iamVjdCA9IHtcbiAgaGFuZGxlcjogT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgYW55LCBhbnksIGFueT47XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5bXTtcbiAgcHJvcDogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcm5hbCBmdW5jdGlvbiB0byByZWdpc3RlciBvcGVyYXRpb24gaGFuZGxlcnNcbiAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhbiBvcGVyYXRpb24gaGFuZGxlciBmb3IgYSBzcGVjaWZpYyBvcGVyYXRpb24ga2V5IG9uIGEgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcGFyYW0ge09wZXJhdGlvbktleXN9IG9wIC0gVGhlIG9wZXJhdGlvbiBrZXkgdG8gaGFuZGxlXG4gKiBAcGFyYW0ge09wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIGFueSwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIGhhbmRsZXIgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IHJlZ2lzdGVycyB0aGUgaGFuZGxlclxuICogQGZ1bmN0aW9uIGhhbmRsZVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZnVuY3Rpb24gaGFuZGxlKFxuICBvcDogT3BlcmF0aW9uS2V5cyxcbiAgaGFuZGxlcjogT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgYW55LCBhbnksIGFueT5cbikge1xuICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XG4gICAgT3BlcmF0aW9ucy5yZWdpc3RlcihoYW5kbGVyLCBvcCwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBkZWNvcmF0b3Igb2JqZWN0cyBmb3IgaGFuZGxpbmcgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgUmV0cmlldmVzIGEgbGlzdCBvZiBkZWNvcmF0b3Igb2JqZWN0cyByZXByZXNlbnRpbmcgb3BlcmF0aW9uIGhhbmRsZXJzIGZvciBhIGdpdmVuIG1vZGVsIGFuZCBkZWNvcmF0b3JzXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZm9yIHRoZSBtb2RlbCwgZGVmYXVsdHMgdG8gTW9kZWw8dHJ1ZSB8IGZhbHNlPlxuICogQHRlbXBsYXRlIFIgLSBUeXBlIGZvciB0aGUgcmVwb3NpdG9yeSwgZGVmYXVsdHMgdG8gSVJlcG9zaXRvcnk8TSwgRiwgQz5cbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHRlbXBsYXRlIEYgLSBUeXBlIGZvciByZXBvc2l0b3J5IGZsYWdzLCBkZWZhdWx0cyB0byBSZXBvc2l0b3J5RmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gVHlwZSBmb3IgY29udGV4dCwgZGVmYXVsdHMgdG8gQ29udGV4dDxGPlxuICogQHBhcmFtIHtNb2RlbH0gbW9kZWwgLSBUaGUgbW9kZWwgZm9yIHdoaWNoIHRvIHJldHJpZXZlIGRlY29yYXRvciBvYmplY3RzXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhW10+fSBkZWNvcmF0b3JzIC0gVGhlIGRlY29yYXRvcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBtb2RlbCBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IC0gVGhlIG9wZXJhdGlvbiBwcmVmaXggKGUuZy4sICdvbicsICdhZnRlcicpXG4gKiBAcmV0dXJuIHtEZWNvcmF0b3JPYmplY3RbXX0gQW4gYXJyYXkgb2YgZGVjb3JhdG9yIG9iamVjdHMgcmVwcmVzZW50aW5nIG9wZXJhdGlvbiBoYW5kbGVyc1xuICogQGZ1bmN0aW9uIGdldEhhbmRsZXJzRGVjb3JhdG9yc1xuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVyc0RlY29yYXRvcnM8XG4gIE0gZXh0ZW5kcyBNb2RlbDx0cnVlIHwgZmFsc2U+LFxuICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gIFYgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3QsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4oXG4gIG1vZGVsOiBNb2RlbCxcbiAgZGVjb3JhdG9yczogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4sXG4gIHByZWZpeDogc3RyaW5nXG4pOiBEZWNvcmF0b3JPYmplY3RbXSB7XG4gIGNvbnN0IGFjY3VtOiBEZWNvcmF0b3JPYmplY3RbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHByb3AgaW4gZGVjb3JhdG9ycykge1xuICAgIGNvbnN0IGRlY3M6IERlY29yYXRvck1ldGFkYXRhW10gPSBkZWNvcmF0b3JzW3Byb3BdO1xuICAgIGZvciAoY29uc3QgZGVjIG9mIGRlY3MpIHtcbiAgICAgIGNvbnN0IHsga2V5IH0gPSBkZWMhO1xuICAgICAgY29uc3QgaGFuZGxlcnM6IE9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz5bXSB8IHVuZGVmaW5lZCA9XG4gICAgICAgIE9wZXJhdGlvbnMuZ2V0PE0sIFIsIFYsIEYsIEM+KG1vZGVsLCBwcm9wLCBwcmVmaXggKyBrZXkpO1xuICAgICAgaWYgKCFoYW5kbGVycyB8fCAhaGFuZGxlcnMubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgQ291bGQgbm90IGZpbmQgcmVnaXN0ZXJlZCBoYW5kbGVyIGZvciB0aGUgb3BlcmF0aW9uICR7cHJlZml4ICsga2V5fSB1bmRlciBwcm9wZXJ0eSAke3Byb3B9YFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBoYW5kbGVyQXJncyA9IGdldEhhbmRsZXJBcmdzKGRlYywgcHJvcCwgbW9kZWwgYXMgYW55KTtcblxuICAgICAgaWYgKCFoYW5kbGVyQXJncyB8fCBPYmplY3QudmFsdWVzKGhhbmRsZXJBcmdzKS5sZW5ndGggIT09IGhhbmRsZXJzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJBcmdzIGFuZCBoYW5kbGVycyBsZW5ndGggZG8gbm90IG1hdGNoXCIpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSAoaGFuZGxlckFyZ3NbaGFuZGxlcnNbaV0ubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgYW55PilcbiAgICAgICAgICAuZGF0YTtcbiAgICAgICAgYWNjdW0ucHVzaCh7XG4gICAgICAgICAgaGFuZGxlcjogaGFuZGxlcnNbaV0sXG4gICAgICAgICAgZGF0YTogW2RhdGFdLFxuICAgICAgICAgIHByb3A6IFtwcm9wXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2N1bTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR3JvdXBzIGRlY29yYXRvcnMgYmFzZWQgb24gdGhlaXIgZ3JvdXAgcHJvcGVydHlcbiAqIEBzdW1tYXJ5IEdyb3VwcyBkZWNvcmF0b3Igb2JqZWN0cyBieSB0aGVpciBncm91cCBwcm9wZXJ0eSwgY29tYmluaW5nIGRhdGEgYW5kIHByb3BlcnRpZXMgd2l0aGluIGVhY2ggZ3JvdXBcbiAqIEBwYXJhbSB7RGVjb3JhdG9yT2JqZWN0W119IGRlY29yYXRvcnMgLSBUaGUgYXJyYXkgb2YgZGVjb3JhdG9yIG9iamVjdHMgdG8gZ3JvdXBcbiAqIEByZXR1cm4ge0RlY29yYXRvck9iamVjdFtdfSBBbiBhcnJheSBvZiBncm91cGVkIGRlY29yYXRvciBvYmplY3RzXG4gKiBAZnVuY3Rpb24gZ3JvdXBEZWNvcmF0b3JzXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwRGVjb3JhdG9ycyhcbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yT2JqZWN0W11cbik6IERlY29yYXRvck9iamVjdFtdIHtcbiAgY29uc3QgZ3JvdXBlZCA9IGRlY29yYXRvcnMucmVkdWNlPE1hcDxzdHJpbmcgfCBzeW1ib2wsIERlY29yYXRvck9iamVjdD4+KFxuICAgIChhY2MsIGRlYykgPT4ge1xuICAgICAgaWYgKCFkZWMgfHwgIWRlYy5kYXRhIHx8ICFkZWMucHJvcClcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNzaW5nIGRlY29yYXRvciBwcm9wZXJ0aWVzIG9yIGRhdGFcIik7XG5cbiAgICAgIC8vIElmIGRlY29yYXRvciBoYXZlIG5vIGdyb3VwXG4gICAgICBpZiAoIWRlYy5kYXRhWzBdLmdyb3VwKSB7XG4gICAgICAgIGFjYy5zZXQoU3ltYm9sKCksIGRlYyk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyb3VwS2V5ID0gZGVjLmRhdGFbMF0uZ3JvdXA7XG5cbiAgICAgIGlmICghYWNjLmhhcyhncm91cEtleSkpIHtcbiAgICAgICAgLy8gZmlyc3QgaGFuZGxlciBpcyBzYXZlZCBpbiB0aGUgZ3JvdXBcbiAgICAgICAgYWNjLnNldChncm91cEtleSwgeyAuLi5kZWMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGFjYy5nZXQoZ3JvdXBLZXkpITtcblxuICAgICAgICBhY2Muc2V0KGdyb3VwS2V5LCB7XG4gICAgICAgICAgaGFuZGxlcjogZXhpc3RpbmcuaGFuZGxlcixcbiAgICAgICAgICBkYXRhOiBbLi4uZXhpc3RpbmcuZGF0YSwgLi4uZGVjLmRhdGFdLFxuICAgICAgICAgIHByb3A6IFsuLi5leGlzdGluZy5wcm9wLCAuLi5kZWMucHJvcF0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAgbmV3IE1hcCgpXG4gICk7XG5cbiAgY29uc3QgZ3JvdXBzID0gQXJyYXkuZnJvbShncm91cGVkLnZhbHVlcygpKTtcblxuICAvLyBTb3J0IGluc2lkZSBlYWNoIGdyb3VwIGJ5IHByaW9yaXR5XG4gIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmVkID0gZ3JvdXAuZGF0YS5tYXAoKGQsIGkpID0+ICh7XG4gICAgICBkYXRhOiBkLFxuICAgICAgcHJvcDogZ3JvdXAucHJvcFtpXSxcbiAgICB9KSk7XG5cbiAgICBjb21iaW5lZC5zb3J0KFxuICAgICAgKGEsIGIpID0+IChhLmRhdGEuZ3JvdXBQcmlvcml0eSA/PyA1MCkgLSAoYi5kYXRhLmdyb3VwUHJpb3JpdHkgPz8gNTApXG4gICAgKTtcblxuICAgIGdyb3VwLmRhdGEgPSBjb21iaW5lZC5tYXAoKGMpID0+IGMuZGF0YSk7XG4gICAgZ3JvdXAucHJvcCA9IGNvbWJpbmVkLm1hcCgoYykgPT4gYy5wcm9wKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU29ydHMgZGVjb3JhdG9yIG9iamVjdHMgYmFzZWQgb24gdGhlaXIgcHJpb3JpdHlcbiAqIEBzdW1tYXJ5IFNvcnRzIGFuIGFycmF5IG9mIGRlY29yYXRvciBvYmplY3RzIGJ5IHRoZSBwcmlvcml0eSBvZiB0aGVpciBmaXJzdCBkYXRhIGVsZW1lbnRcbiAqIEBwYXJhbSB7RGVjb3JhdG9yT2JqZWN0W119IGRlY29yYXRvcnMgLSBUaGUgYXJyYXkgb2YgZGVjb3JhdG9yIG9iamVjdHMgdG8gc29ydFxuICogQHJldHVybiB7RGVjb3JhdG9yT2JqZWN0W119IFRoZSBzb3J0ZWQgYXJyYXkgb2YgZGVjb3JhdG9yIG9iamVjdHNcbiAqIEBmdW5jdGlvbiBzb3J0RGVjb3JhdG9yc1xuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RGVjb3JhdG9ycyhcbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yT2JqZWN0W11cbik6IERlY29yYXRvck9iamVjdFtdIHtcbiAgLy8gU29ydCBieSBncm91cFByaW9yaXR5XG4gIGRlY29yYXRvcnMuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IHByaW9yaXR5QSA9IGEuZGF0YVswXS5wcmlvcml0eSA/PyBkZWZhdWx0UHJpb3JpdHk7XG4gICAgY29uc3QgcHJpb3JpdHlCID0gYi5kYXRhWzBdLnByaW9yaXR5ID8/IGRlZmF1bHRQcmlvcml0eTtcbiAgICByZXR1cm4gcHJpb3JpdHlBIC0gcHJpb3JpdHlCOyAvLyBsb3dlciBudW1iZXIgPSBoaWdoZXIgcHJpb3JpdHlcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY29yYXRvcnM7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciBmb3IgaGFuZGxpbmcgY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGJlaGF2aW9yIHRvIGV4ZWN1dGUgZHVyaW5nIGJvdGggY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge0dlbmVyYWxPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT4gfCBHZW5lcmFsVXBkYXRlT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIG1ldGhvZCBjYWxsZWQgdXBvbiB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0ge1Z9IFtkYXRhXSAtIE9wdGlvbmFsIG1ldGFkYXRhIHRvIHBhc3MgdG8gdGhlIGhhbmRsZXJcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBvbkNyZWF0ZVVwZGF0ZVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uQ3JlYXRlVXBkYXRlPFYgPSBvYmplY3Q+KFxuICBoYW5kbGVyOlxuICAgIHwgR2VuZXJhbE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PlxuICAgIHwgR2VuZXJhbFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YT86IFYsXG4gIGdyb3Vwc29ydD86IEdyb3VwU29ydFxuKSB7XG4gIHJldHVybiBvbihEQk9wZXJhdGlvbnMuQ1JFQVRFX1VQREFURSwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciBmb3IgaGFuZGxpbmcgdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBiZWhhdmlvciB0byBleGVjdXRlIGR1cmluZyB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge1VwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueT59IGhhbmRsZXIgLSBUaGUgbWV0aG9kIGNhbGxlZCB1cG9uIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gW2RhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIG9uVXBkYXRlXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25VcGRhdGU8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueT4sXG4gIGRhdGE/OiBWLFxuICBncm91cHNvcnQ/OiBHcm91cFNvcnRcbikge1xuICByZXR1cm4gb24oREJPcGVyYXRpb25zLlVQREFURSwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciBmb3IgaGFuZGxpbmcgY3JlYXRlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBiZWhhdmlvciB0byBleGVjdXRlIGR1cmluZyBjcmVhdGUgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge0dlbmVyYWxPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgbWV0aG9kIGNhbGxlZCB1cG9uIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gW2RhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIG9uQ3JlYXRlXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25DcmVhdGU8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IEdlbmVyYWxPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT4sXG4gIGRhdGE/OiBWLFxuICBncm91cHNvcnQ/OiBHcm91cFNvcnRcbikge1xuICByZXR1cm4gb24oREJPcGVyYXRpb25zLkNSRUFURSwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIGZvciBoYW5kbGluZyByZWFkIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBiZWhhdmlvciB0byBleGVjdXRlIGR1cmluZyByZWFkIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtJZE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55Pn0gaGFuZGxlciAtIFRoZSBtZXRob2QgY2FsbGVkIHVwb24gdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBbZGF0YV0gLSBPcHRpb25hbCBtZXRhZGF0YSB0byBwYXNzIHRvIHRoZSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gb25SZWFkXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25SZWFkPFYgPSBvYmplY3Q+KFxuICBoYW5kbGVyOiBJZE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YTogVixcbiAgZ3JvdXBzb3J0PzogR3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuIG9uKERCT3BlcmF0aW9ucy5SRUFELCBoYW5kbGVyLCBkYXRhLCBncm91cHNvcnQpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3IgZm9yIGhhbmRsaW5nIGRlbGV0ZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgYmVoYXZpb3IgdG8gZXhlY3V0ZSBkdXJpbmcgZGVsZXRlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgbWV0aG9kIGNhbGxlZCB1cG9uIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gW2RhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIG9uRGVsZXRlXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25EZWxldGU8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YTogVixcbiAgZ3JvdXBzb3J0PzogR3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuIG9uKERCT3BlcmF0aW9ucy5ERUxFVEUsIGhhbmRsZXIsIGRhdGEsIGdyb3Vwc29ydCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciBmb3IgaGFuZGxpbmcgYWxsIG9wZXJhdGlvbiB0eXBlc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGJlaGF2aW9yIHRvIGV4ZWN1dGUgZHVyaW5nIGFueSBkYXRhYmFzZSBvcGVyYXRpb25cbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgbWV0aG9kIGNhbGxlZCB1cG9uIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gW2RhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIG9uQW55XG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25Bbnk8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YTogVixcbiAgZ3JvdXBzb3J0PzogR3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuIG9uKERCT3BlcmF0aW9ucy5BTEwsIGhhbmRsZXIsIGRhdGEsIGdyb3Vwc29ydCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgZGVjb3JhdG9yIGZvciBoYW5kbGluZyBkYXRhYmFzZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgYmVoYXZpb3IgdG8gZXhlY3V0ZSBkdXJpbmcgc3BlY2lmaWVkIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtPcGVyYXRpb25LZXlzW10gfCBEQk9wZXJhdGlvbnN9IFtvcD1EQk9wZXJhdGlvbnMuQUxMXSAtIE9uZSBvciBtb3JlIG9wZXJhdGlvbiB0eXBlcyB0byBoYW5kbGVcbiAqIEBwYXJhbSB7T3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIG1ldGhvZCBjYWxsZWQgdXBvbiB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0ge1Z9IFtkYXRhXSAtIE9wdGlvbmFsIG1ldGFkYXRhIHRvIHBhc3MgdG8gdGhlIGhhbmRsZXJcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBvblxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBleGFtcGxlXG4gKiAvLyBFeGFtcGxlIHVzYWdlOlxuICogY2xhc3MgTXlNb2RlbCB7XG4gKiAgIEBvbihEQk9wZXJhdGlvbnMuQ1JFQVRFLCBteUhhbmRsZXIpXG4gKiAgIG15UHJvcGVydHk6IHN0cmluZztcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uPFYgPSBvYmplY3Q+KFxuICBvcDogT3BlcmF0aW9uS2V5c1tdID0gREJPcGVyYXRpb25zLkFMTCxcbiAgaGFuZGxlcjogT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+LFxuICBkYXRhPzogVixcbiAgZ3JvdXBzb3J0PzogR3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuIG9wZXJhdGlvbihPcGVyYXRpb25LZXlzLk9OLCBvcCwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciBmb3IgaGFuZGxpbmcgcG9zdC1jcmVhdGUgYW5kIHBvc3QtdXBkYXRlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBiZWhhdmlvciB0byBleGVjdXRlIGFmdGVyIGJvdGggY3JlYXRlIGFuZCB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge1N0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+IHwgVXBkYXRlT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIG1ldGhvZCBjYWxsZWQgYWZ0ZXIgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBbZGF0YV0gLSBPcHRpb25hbCBtZXRhZGF0YSB0byBwYXNzIHRvIHRoZSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gYWZ0ZXJDcmVhdGVVcGRhdGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZnRlckNyZWF0ZVVwZGF0ZTxWID0gb2JqZWN0PihcbiAgaGFuZGxlcjpcbiAgICB8IFN0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+XG4gICAgfCBVcGRhdGVPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT4sXG4gIGRhdGE6IFYsXG4gIGdyb3Vwc29ydD86IEdyb3VwU29ydFxuKSB7XG4gIHJldHVybiBhZnRlcihEQk9wZXJhdGlvbnMuQ1JFQVRFX1VQREFURSwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIGZvciBoYW5kbGluZyBwb3N0LXVwZGF0ZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgYmVoYXZpb3IgdG8gZXhlY3V0ZSBhZnRlciB1cGRhdGUgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge1VwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55Pn0gaGFuZGxlciAtIFRoZSBtZXRob2QgY2FsbGVkIGFmdGVyIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gW2RhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIGFmdGVyVXBkYXRlXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWZ0ZXJVcGRhdGU8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YTogVixcbiAgZ3JvdXBzb3J0PzogR3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuIGFmdGVyKERCT3BlcmF0aW9ucy5VUERBVEUsIGhhbmRsZXIsIGRhdGEsIGdyb3Vwc29ydCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciBmb3IgaGFuZGxpbmcgcG9zdC1jcmVhdGUgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGJlaGF2aW9yIHRvIGV4ZWN1dGUgYWZ0ZXIgY3JlYXRlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtTdGFuZGFyZE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55Pn0gaGFuZGxlciAtIFRoZSBtZXRob2QgY2FsbGVkIGFmdGVyIHRoZSBvcGVyYXRpb25cbiAqIEBwYXJhbSB7Vn0gW2RhdGFdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIGFmdGVyQ3JlYXRlXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWZ0ZXJDcmVhdGU8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IFN0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+LFxuICBkYXRhOiBWLFxuICBncm91cHNvcnQ/OiBHcm91cFNvcnRcbikge1xuICByZXR1cm4gYWZ0ZXIoREJPcGVyYXRpb25zLkNSRUFURSwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIGZvciBoYW5kbGluZyBwb3N0LXJlYWQgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGJlaGF2aW9yIHRvIGV4ZWN1dGUgYWZ0ZXIgcmVhZCBvcGVyYXRpb25zXG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgZm9yIG1ldGFkYXRhLCBkZWZhdWx0cyB0byBvYmplY3RcbiAqIEBwYXJhbSB7U3RhbmRhcmRPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgbWV0aG9kIGNhbGxlZCBhZnRlciB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0ge1Z9IFtkYXRhXSAtIE9wdGlvbmFsIG1ldGFkYXRhIHRvIHBhc3MgdG8gdGhlIGhhbmRsZXJcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBhZnRlclJlYWRcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZnRlclJlYWQ8ViA9IG9iamVjdD4oXG4gIGhhbmRsZXI6IFN0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+LFxuICBkYXRhPzogVixcbiAgZ3JvdXBzb3J0PzogR3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuIGFmdGVyKERCT3BlcmF0aW9ucy5SRUFELCBoYW5kbGVyLCBkYXRhLCBncm91cHNvcnQpO1xufVxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIGZvciBoYW5kbGluZyBwb3N0LWRlbGV0ZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgYmVoYXZpb3IgdG8gZXhlY3V0ZSBhZnRlciBkZWxldGUgb3BlcmF0aW9uc1xuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge1N0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIG1ldGhvZCBjYWxsZWQgYWZ0ZXIgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBbZGF0YV0gLSBPcHRpb25hbCBtZXRhZGF0YSB0byBwYXNzIHRvIHRoZSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gYWZ0ZXJEZWxldGVcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZnRlckRlbGV0ZTxWID0gb2JqZWN0PihcbiAgaGFuZGxlcjogU3RhbmRhcmRPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT4sXG4gIGRhdGE/OiBWLFxuICBncm91cHNvcnQ/OiBHcm91cFNvcnRcbikge1xuICByZXR1cm4gYWZ0ZXIoREJPcGVyYXRpb25zLkRFTEVURSwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIGZvciBoYW5kbGluZyBwb3N0LW9wZXJhdGlvbiBmb3IgYWxsIG9wZXJhdGlvbiB0eXBlc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGJlaGF2aW9yIHRvIGV4ZWN1dGUgYWZ0ZXIgYW55IGRhdGFiYXNlIG9wZXJhdGlvblxuICogQHRlbXBsYXRlIFYgLSBUeXBlIGZvciBtZXRhZGF0YSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAcGFyYW0ge1N0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIG1ldGhvZCBjYWxsZWQgYWZ0ZXIgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBbZGF0YV0gLSBPcHRpb25hbCBtZXRhZGF0YSB0byBwYXNzIHRvIHRoZSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gYWZ0ZXJBbnlcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZnRlckFueTxWID0gb2JqZWN0PihcbiAgaGFuZGxlcjogU3RhbmRhcmRPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT4sXG4gIGRhdGE/OiBWLFxuICBncm91cHNvcnQ/OiBHcm91cFNvcnRcbikge1xuICByZXR1cm4gYWZ0ZXIoREJPcGVyYXRpb25zLkFMTCwgaGFuZGxlciwgZGF0YSwgZ3JvdXBzb3J0KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBkZWNvcmF0b3IgZm9yIGhhbmRsaW5nIHBvc3Qtb3BlcmF0aW9uIGJlaGF2aW9yc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGJlaGF2aW9yIHRvIGV4ZWN1dGUgYWZ0ZXIgc3BlY2lmaWVkIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtPcGVyYXRpb25LZXlzW10gfCBEQk9wZXJhdGlvbnN9IFtvcD1EQk9wZXJhdGlvbnMuQUxMXSAtIE9uZSBvciBtb3JlIG9wZXJhdGlvbiB0eXBlcyB0byBoYW5kbGVcbiAqIEBwYXJhbSB7T3BlcmF0aW9uSGFuZGxlcjxhbnksIGFueSwgViwgYW55LCBhbnk+fSBoYW5kbGVyIC0gVGhlIG1ldGhvZCBjYWxsZWQgYWZ0ZXIgdGhlIG9wZXJhdGlvblxuICogQHBhcmFtIHtWfSBbZGF0YV0gLSBPcHRpb25hbCBtZXRhZGF0YSB0byBwYXNzIHRvIHRoZSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gQSBkZWNvcmF0b3IgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAZnVuY3Rpb24gYWZ0ZXJcbiAqIEBjYXRlZ29yeSBQcm9wZXJ0eSBEZWNvcmF0b3JzXG4gKiBAZXhhbXBsZVxuICogLy8gRXhhbXBsZSB1c2FnZTpcbiAqIGNsYXNzIE15TW9kZWwge1xuICogICBAYWZ0ZXIoREJPcGVyYXRpb25zLkNSRUFURSwgbXlIYW5kbGVyKVxuICogICBteVByb3BlcnR5OiBzdHJpbmc7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZnRlcjxWID0gb2JqZWN0PihcbiAgb3A6IE9wZXJhdGlvbktleXNbXSA9IERCT3BlcmF0aW9ucy5BTEwsXG4gIGhhbmRsZXI6IE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YT86IFYsXG4gIGdyb3Vwc29ydD86IEdyb3VwU29ydFxuKSB7XG4gIHJldHVybiBvcGVyYXRpb24oT3BlcmF0aW9uS2V5cy5BRlRFUiwgb3AsIGhhbmRsZXIsIGRhdGEsIGdyb3Vwc29ydCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvcmUgZGVjb3JhdG9yIGZhY3RvcnkgZm9yIG9wZXJhdGlvbiBoYW5kbGVyc1xuICogQHN1bW1hcnkgQ3JlYXRlcyBkZWNvcmF0b3JzIHRoYXQgcmVnaXN0ZXIgaGFuZGxlcnMgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBmb3IgbWV0YWRhdGEsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHBhcmFtIHtPcGVyYXRpb25LZXlzLk9OIHwgT3BlcmF0aW9uS2V5cy5BRlRFUn0gYmFzZU9wIC0gV2hldGhlciB0aGUgaGFuZGxlciBydW5zIGR1cmluZyBvciBhZnRlciB0aGUgb3BlcmF0aW9uXG4gKiBAcGFyYW0ge09wZXJhdGlvbktleXNbXX0gW29wZXJhdGlvbj1EQk9wZXJhdGlvbnMuQUxMXSAtIFRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIHRvIGhhbmRsZVxuICogQHBhcmFtIHtPcGVyYXRpb25IYW5kbGVyPGFueSwgYW55LCBWLCBhbnksIGFueT59IGhhbmRsZXIgLSBUaGUgaGFuZGxlciBmdW5jdGlvbiB0byBleGVjdXRlXG4gKiBAcGFyYW0ge1Z9IFtkYXRhVG9BZGRdIC0gT3B0aW9uYWwgbWV0YWRhdGEgdG8gcGFzcyB0byB0aGUgaGFuZGxlclxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IEEgZGVjb3JhdG9yIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gY2xhc3MgcHJvcGVydGllc1xuICogQGZ1bmN0aW9uIG9wZXJhdGlvblxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IERlY29yYXRvciBhcyBAb3BlcmF0aW9uXG4gKiAgIHBhcnRpY2lwYW50IE9wZXJhdGlvbnMgYXMgT3BlcmF0aW9ucyBSZWdpc3RyeVxuICogICBwYXJ0aWNpcGFudCBIYW5kbGVyXG4gKlxuICogICBDbGllbnQtPj5EZWNvcmF0b3I6IEFwcGx5IHRvIHByb3BlcnR5XG4gKiAgIERlY29yYXRvci0+Pk9wZXJhdGlvbnM6IFJlZ2lzdGVyIGhhbmRsZXJcbiAqICAgRGVjb3JhdG9yLT4+RGVjb3JhdG9yOiBTdG9yZSBtZXRhZGF0YVxuICpcbiAqICAgTm90ZSBvdmVyIENsaWVudCxIYW5kbGVyOiBMYXRlciwgZHVyaW5nIG9wZXJhdGlvbiBleGVjdXRpb25cbiAqICAgQ2xpZW50LT4+T3BlcmF0aW9uczogRXhlY3V0ZSBvcGVyYXRpb25cbiAqICAgT3BlcmF0aW9ucy0+PkhhbmRsZXI6IENhbGwgcmVnaXN0ZXJlZCBoYW5kbGVyXG4gKiAgIEhhbmRsZXItLT4+T3BlcmF0aW9uczogUmV0dXJuIHJlc3VsdFxuICogICBPcGVyYXRpb25zLS0+PkNsaWVudDogUmV0dXJuIGZpbmFsIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gb3BlcmF0aW9uPFYgPSBvYmplY3Q+KFxuICBiYXNlT3A6IE9wZXJhdGlvbktleXMuT04gfCBPcGVyYXRpb25LZXlzLkFGVEVSLFxuICBvcGVyYXRpb246IE9wZXJhdGlvbktleXNbXSA9IERCT3BlcmF0aW9ucy5BTEwsXG4gIGhhbmRsZXI6IE9wZXJhdGlvbkhhbmRsZXI8YW55LCBhbnksIFYsIGFueSwgYW55PixcbiAgZGF0YVRvQWRkPzogVixcbiAgZ3JvdXBzb3J0OiBHcm91cFNvcnQgPSBEZWZhdWx0R3JvdXBTb3J0XG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHtcbiAgICBjb25zdCBuYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IG9wZXJhdGlvbi5yZWR1Y2UoKGFjY3VtOiBhbnlbXSwgb3ApID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvdW5kS2V5ID0gYmFzZU9wICsgb3A7XG4gICAgICBsZXQgZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgIE9wZXJhdGlvbnMua2V5KGNvbXBvdW5kS2V5KSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBwcm9wZXJ0eUtleVxuICAgICAgKTtcbiAgICAgIGlmICghZGF0YSlcbiAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICBvcGVyYXRpb246IG9wLFxuICAgICAgICAgIGhhbmRsZXJzOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgY29uc3QgaGFuZGxlcktleSA9IE9wZXJhdGlvbnMuZ2V0SGFuZGxlck5hbWUoaGFuZGxlcik7XG5cbiAgICAgIGxldCBtZXJnZURhdGEgPSBncm91cHNvcnQ7XG5cbiAgICAgIGlmIChkYXRhVG9BZGQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFUb0FkZCkuZmlsdGVyKChrZXkpID0+IGtleSBpbiBncm91cHNvcnQpLmxlbmd0aCA+IDApXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIG1lcmdlIGdyb3VwU29ydCBpbnRvIGRhdGFUb0FkZCBkdWUgdG8gb3ZlcmxhcGluZyBrZXlzYFxuICAgICAgICAgICk7XG5cbiAgICAgICAgbWVyZ2VEYXRhID0geyAuLi5ncm91cHNvcnQsIC4uLmRhdGFUb0FkZCB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICFkYXRhLmhhbmRsZXJzW25hbWVdIHx8XG4gICAgICAgICFkYXRhLmhhbmRsZXJzW25hbWVdW3Byb3BlcnR5S2V5XSB8fFxuICAgICAgICAhKGhhbmRsZXJLZXkgaW4gZGF0YS5oYW5kbGVyc1tuYW1lXVtwcm9wZXJ0eUtleV0pXG4gICAgICApIHtcbiAgICAgICAgZGF0YS5oYW5kbGVyc1tuYW1lXSA9IGRhdGEuaGFuZGxlcnNbbmFtZV0gfHwge307XG4gICAgICAgIGRhdGEuaGFuZGxlcnNbbmFtZV1bcHJvcGVydHlLZXldID1cbiAgICAgICAgICBkYXRhLmhhbmRsZXJzW25hbWVdW3Byb3BlcnR5S2V5XSB8fCB7fTtcbiAgICAgICAgZGF0YS5oYW5kbGVyc1tuYW1lXVtwcm9wZXJ0eUtleV1baGFuZGxlcktleV0gPSB7XG4gICAgICAgICAgZGF0YTogbWVyZ2VEYXRhLFxuICAgICAgICB9O1xuXG4gICAgICAgIGFjY3VtLnB1c2goXG4gICAgICAgICAgaGFuZGxlKGNvbXBvdW5kS2V5IGFzIE9wZXJhdGlvbktleXMsIGhhbmRsZXIpLFxuICAgICAgICAgIHByb3BNZXRhZGF0YShPcGVyYXRpb25zLmtleShjb21wb3VuZEtleSksIGRhdGEpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBhcHBseSguLi5kZWNvcmF0b3JzKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgfTtcbn1cbiJdfQ==
384
+ /**
385
+ * @description
386
+ * Creates a higher-order function that attaches a metadata entry containing a handler
387
+ * and its execution parameters, to be conditionally evaluated later.
388
+ *
389
+ * @summary
390
+ * The `executeIf` function is a decorator factory designed to wrap a handler function
391
+ * and associate it with a specific metadata key. When invoked, it stores both the
392
+ * parameters passed and the handler reference inside the metadata system for deferred
393
+ * or conditional evaluation. This is particularly useful for dynamically applying logic
394
+ * or decorators only when certain conditions are met.
395
+ *
396
+ * @template P - Represents a tuple of any parameter types that the handler function accepts.
397
+ *
398
+ * @param {string} key - The metadata key used to store and later retrieve the handler and its parameters.
399
+ * @param {(...params: P) => boolean} handler - A predicate or handler function that receives the same parameters as the decorator
400
+ * and determines whether the associated logic should execute.
401
+ *
402
+ * @return {(...params: P) => ReturnType<typeof metadata>}
403
+ * Returns a function that, when invoked with the given parameters, stores a metadata object containing
404
+ * both the parameters and the handler reference under the provided key.
405
+ *
406
+ * @function storeHandlerMetadata
407
+ *
408
+ * @mermaid
409
+ * sequenceDiagram
410
+ * participant Dev as Developer
411
+ * participant executeIf as executeIf()
412
+ * participant ReturnedFn as Returned Function
413
+ * participant Metadata as metadata()
414
+ *
415
+ * Dev->>executeIf: Calls executeIf(key, handler)
416
+ * executeIf->>ReturnedFn: Returns function(...params)
417
+ * Dev->>ReturnedFn: Invokes returned function with (...params)
418
+ * ReturnedFn->>Metadata: Calls metadata(key, { args: params, handler })
419
+ * Metadata-->>ReturnedFn: Returns stored metadata reference
420
+ * ReturnedFn-->>Dev: Returns metadata response
421
+ *
422
+ */
423
+ export function storeHandlerMetadata(key, handler) {
424
+ return (...params) => {
425
+ return metadata(key, { args: params, handler });
426
+ };
427
+ }
428
+ /**
429
+ * @description
430
+ * Decorator factory that conditionally blocks specific CRUD operations
431
+ * from being executed on a model or controller.
432
+ *
433
+ * @summary
434
+ * The `BlockOperations` decorator integrates with the `executeIf` mechanism to
435
+ * associate metadata that defines which CRUD operations should be restricted.
436
+ * When applied, it registers a conditional handler that evaluates whether a given
437
+ * operation is included in the list of blocked operations. This enables dynamic,
438
+ * metadata-driven control over allowed operations in CRUD-based systems.
439
+ *
440
+ * @template CrudOperations - Enum or type representing valid CRUD operations.
441
+ *
442
+ * @param {CrudOperations[]} operations - An array of CRUD operations that should be blocked.
443
+ * The handler will later check if the requested operation is part of this list.
444
+ *
445
+ * Returns a decorator that stores metadata indicating which operations are blocked.
446
+ * The metadata can be inspected or enforced later within the application's lifecycle.
447
+ *
448
+ * @function BlockOperations
449
+
450
+ * @category decorators
451
+ */
452
+ export const BlockOperations = (operations) => storeHandlerMetadata(OperationKeys.REFLECT + OperationKeys.BLOCK, (operations, operation) => {
453
+ return operations.includes(operation);
454
+ })(operations);
455
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/operations/decorators.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,4 @@ export * from "./decorators.js";
3
3
  export * from "./Operations.js";
4
4
  export * from "./OperationsRegistry.js";
5
5
  export * from "./types.js";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBNEI7QUFDNUIsZ0NBQTZCO0FBQzdCLGdDQUE2QjtBQUM3Qix3Q0FBcUM7QUFDckMsMkJBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PcGVyYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PcGVyYXRpb25zUmVnaXN0cnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4iXX0=
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/operations/index.ts"],"names":[],"mappings":"AAAA,+BAA4B;AAC5B,gCAA6B;AAC7B,gCAA6B;AAC7B,wCAAqC;AACrC,2BAAwB"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlcmF0aW9ucy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSVJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvQ29udGV4dFwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0YWRhdGEgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGFuIG9wZXJhdGlvbiwgaXRzIGhhbmRsZXIsIGFuZCBhc3NvY2lhdGVkIG1ldGFkYXRhXG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgb2YgdGhlIG1ldGFkYXRhXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBPcGVyYXRpb25NZXRhZGF0YVxuICogQHByb3BlcnR5IHtPcGVyYXRpb25LZXlzfSBvcGVyYXRpb24gLSBUaGUgdHlwZSBvZiBvcGVyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBoYW5kbGVyIC0gVGhlIG5hbWUgb2YgdGhlIGhhbmRsZXIgZnVuY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Vn0gW21ldGFkYXRhXSAtIE9wdGlvbmFsIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3BlcmF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgT3BlcmF0aW9uTWV0YWRhdGE8Vj4gPSB7XG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5cztcbiAgaGFuZGxlcjogc3RyaW5nO1xuICBtZXRhZGF0YT86IFY7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVbmlvbiB0eXBlIGZvciBhbGwgb3BlcmF0aW9uIGhhbmRsZXIgdHlwZXNcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYW55IHR5cGUgb2Ygb3BlcmF0aW9uIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBNIC0gTW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gUmVwb3NpdG9yeSB0eXBlIGV4dGVuZGluZyBJUmVwb3NpdG9yeVxuICogQHRlbXBsYXRlIFYgLSBNZXRhZGF0YSB0eXBlLCBkZWZhdWx0cyB0byBvYmplY3RcbiAqIEB0ZW1wbGF0ZSBGIC0gUmVwb3NpdG9yeSBmbGFncyBleHRlbmRpbmcgUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIENvbnRleHQgdHlwZSBleHRlbmRpbmcgQ29udGV4dDxGPlxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIE9wZXJhdGlvbkhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWID0gb2JqZWN0LFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+ID1cbiAgfCBTdGFuZGFyZE9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz5cbiAgfCBVcGRhdGVPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+XG4gIHwgSWRPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+XG4gIHwgR3JvdXBPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+XG4gIHwgR3JvdXBVcGRhdGVPcGVyYXRpb25IYW5kbGVyPE0sIFIsIFYsIEYsIEM+O1xuXG5leHBvcnQgdHlwZSBTdGFuZGFyZE9wZXJhdGlvbkhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWID0gb2JqZWN0LFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+ID0gKFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDLFxuICBtZXRhZGF0YTogVixcbiAga2V5OiBrZXlvZiBNLFxuICBtb2RlbDogTVxuKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuZXhwb3J0IHR5cGUgSWRPcGVyYXRpb25IYW5kbGVyPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBJUmVwb3NpdG9yeTxNLCBGLCBDPixcbiAgViA9IG9iamVjdCxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPiA9IChcbiAgdGhpczogUixcbiAgY29udGV4dDogQyxcbiAgZGVjb3JhdG9yOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIGlkOiBzdHJpbmdcbikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWID0gb2JqZWN0LFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+ID0gKFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDLFxuICBkZWNvcmF0b3I6IFYsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE0sXG4gIG9sZE1vZGVsOiBNXG4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG5leHBvcnQgdHlwZSBHcm91cE9wZXJhdGlvbkhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiBleHRlbmRzIElSZXBvc2l0b3J5PE0sIEYsIEM+LFxuICBWID0gb2JqZWN0LFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICBDIGV4dGVuZHMgQ29udGV4dDxGPiA9IENvbnRleHQ8Rj4sXG4+ID0gKFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDLFxuICBtZXRhZGF0YTogVltdLFxuICBrZXlzOiAoa2V5b2YgTSlbXSxcbiAgbW9kZWw6IE1cbikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEdyb3VwVXBkYXRlT3BlcmF0aW9uSGFuZGxlcjxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gIFYgPSBvYmplY3QsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4gPSAoXG4gIHRoaXM6IFIsXG4gIGNvbnRleHQ6IEMsXG4gIGRlY29yYXRvcjogVltdLFxuICBrZXlzOiAoa2V5b2YgTSlbXSxcbiAgbW9kZWw6IE0sXG4gIG9sZE1vZGVsOiBNXG4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmFsIGhhbmRsZXIgdHlwZSBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgRnVuY3Rpb24gc2lnbmF0dXJlIGZvciBoYW5kbGVycyB0aGF0IHByb2Nlc3Mgb3BlcmF0aW9ucyBsaWtlIGNyZWF0ZSBhbmQgcmVhZFxuICogQHRlbXBsYXRlIE0gLSBNb2RlbCB0eXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIFIgLSBSZXBvc2l0b3J5IHR5cGUgZXh0ZW5kaW5nIElSZXBvc2l0b3J5XG4gKiBAdGVtcGxhdGUgViAtIE1ldGFkYXRhIHR5cGUsIGRlZmF1bHRzIHRvIG9iamVjdFxuICogQHRlbXBsYXRlIEYgLSBSZXBvc2l0b3J5IGZsYWdzIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3NcbiAqIEB0ZW1wbGF0ZSBDIC0gQ29udGV4dCB0eXBlIGV4dGVuZGluZyBDb250ZXh0PEY+XG4gKiBAdHlwZWRlZiB7RnVuY3Rpb259IEdlbmVyYWxPcGVyYXRpb25IYW5kbGVyXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+IHwgdm9pZH0gTm90aGluZyBvciBhIFByb21pc2UgcmVzb2x2aW5nIHRvIG5vdGhpbmdcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgdHlwZSBHZW5lcmFsT3BlcmF0aW9uSGFuZGxlcjxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gIFYgPSBvYmplY3QsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4gPVxuICB8IFN0YW5kYXJkT3BlcmF0aW9uSGFuZGxlcjxNLCBSLCBWLCBGLCBDPlxuICB8IEdyb3VwT3BlcmF0aW9uSGFuZGxlcjxNLCBSLCBWLCBGLCBDPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJhbCBoYW5kbGVyIHR5cGUgZm9yIGdyb3VwIHVwZGF0ZSBkYXRhYmFzZSBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBGdW5jdGlvbiBzaWduYXR1cmUgZm9yIGhhbmRsZXJzIHRoYXQgcHJvY2VzcyB1cGRhdGUgb3BlcmF0aW9ucyB3aXRoIGJvdGggbmV3IGFuZCBvbGQgbW9kZWwgc3RhdGVzXG4gKiBAdGVtcGxhdGUgTSAtIE1vZGVsIHR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gTWV0YWRhdGEgdHlwZSwgZGVmYXVsdHMgdG8gb2JqZWN0XG4gKiBAdGVtcGxhdGUgRiAtIFJlcG9zaXRvcnkgZmxhZ3MgZXh0ZW5kaW5nIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBDb250ZXh0IHR5cGUgZXh0ZW5kaW5nIENvbnRleHQ8Rj5cbiAqIEB0eXBlZGVmIHtGdW5jdGlvbn0gR2VuZXJhbFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgdHlwZSBHZW5lcmFsVXBkYXRlT3BlcmF0aW9uSGFuZGxlcjxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSIGV4dGVuZHMgSVJlcG9zaXRvcnk8TSwgRiwgQz4sXG4gIFYgPSBvYmplY3QsXG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4gPVxuICB8IFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz5cbiAgfCBHcm91cFVwZGF0ZU9wZXJhdGlvbkhhbmRsZXI8TSwgUiwgViwgRiwgQz47XG4iXX0=
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/operations/types.ts"],"names":[],"mappings":""}