@kubb/agent 4.37.8 → 4.37.9

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 (649) hide show
  1. package/.output/nitro.json +2 -2
  2. package/.output/server/chunks/nitro/nitro.mjs +35 -12
  3. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  4. package/.output/server/node_modules/.nitro/@readme/openapi-parser@6.1.2/dist/chunk-IYQ77VVR.js +25 -0
  5. package/.output/server/node_modules/.nitro/@readme/openapi-parser@6.1.2/dist/index.js +1147 -0
  6. package/.output/server/node_modules/.nitro/@readme/openapi-parser@6.1.2/package.json +82 -0
  7. package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/package.json +1 -1
  8. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/codegen/code.js +156 -0
  9. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/codegen/index.js +697 -0
  10. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/codegen/scope.js +143 -0
  11. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/errors.js +123 -0
  12. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/index.js +249 -0
  13. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/names.js +29 -0
  14. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/ref_error.js +12 -0
  15. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/resolve.js +155 -0
  16. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/rules.js +26 -0
  17. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/util.js +178 -0
  18. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/applicability.js +19 -0
  19. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/boolSchema.js +50 -0
  20. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/dataType.js +203 -0
  21. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/defaults.js +35 -0
  22. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/index.js +534 -0
  23. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/keyword.js +124 -0
  24. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/compile/validate/subschema.js +81 -0
  25. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/core.js +632 -0
  26. package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/draft4.js +2 -1
  27. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/refs/data.json +13 -0
  28. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/runtime/equal.js +7 -0
  29. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/runtime/ucs2length.js +24 -0
  30. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/runtime/uri.js +6 -0
  31. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/runtime/validation_error.js +11 -0
  32. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/additionalItems.js +49 -0
  33. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/additionalProperties.js +107 -0
  34. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/allOf.js +23 -0
  35. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/anyOf.js +12 -0
  36. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/contains.js +95 -0
  37. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/dependencies.js +85 -0
  38. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/if.js +66 -0
  39. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/index.js +44 -0
  40. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/items.js +52 -0
  41. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/items2020.js +30 -0
  42. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/not.js +26 -0
  43. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/oneOf.js +60 -0
  44. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/patternProperties.js +75 -0
  45. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/prefixItems.js +12 -0
  46. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/properties.js +55 -0
  47. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/propertyNames.js +38 -0
  48. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/applicator/thenElse.js +13 -0
  49. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/code.js +138 -0
  50. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/core/id.js +10 -0
  51. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/core/index.js +16 -0
  52. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/core/ref.js +132 -0
  53. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/discriminator/index.js +139 -0
  54. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/discriminator/types.js +9 -0
  55. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/format/format.js +92 -0
  56. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/format/index.js +6 -0
  57. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/metadata.js +26 -0
  58. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/oasContext.js +26 -0
  59. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/const.js +25 -0
  60. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/enum.js +48 -0
  61. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/index.js +37 -0
  62. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/limitItems.js +24 -0
  63. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/limitLength.js +27 -0
  64. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/limitNumber.js +27 -0
  65. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/limitProperties.js +24 -0
  66. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/multipleOf.js +26 -0
  67. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/pattern.js +33 -0
  68. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/readOnly.js +20 -0
  69. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/required.js +86 -0
  70. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/uniqueItems.js +64 -0
  71. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/dist/vocabularies/validation/writeOnly.js +20 -0
  72. package/.output/server/node_modules/.nitro/@redocly/ajv@8.18.3/package.json +130 -0
  73. package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/lib/constants.js +4 -0
  74. package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/lib/parse.js +301 -0
  75. package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/lib/picomatch.js +11 -3
  76. package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/package.json +2 -3
  77. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/add.js +2 -0
  78. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/addProp.js +2 -0
  79. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/allPass.js +2 -0
  80. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/anyPass.js +2 -0
  81. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/binarySearchCutoffIndex-CalebGhL.js +2 -0
  82. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/capitalize.js +2 -0
  83. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/ceil.js +2 -0
  84. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/chunk.js +2 -0
  85. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/clamp.js +2 -0
  86. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/clone.js +2 -0
  87. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/concat.js +2 -0
  88. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/conditional.js +2 -0
  89. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/constant.js +2 -0
  90. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/countBy.js +2 -0
  91. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/debounce.js +2 -0
  92. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/defaultTo.js +2 -0
  93. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/difference.js +2 -0
  94. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/differenceWith.js +2 -0
  95. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/divide.js +2 -0
  96. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/doNothing.js +2 -0
  97. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/drop.js +2 -0
  98. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/dropFirstBy.js +2 -0
  99. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/dropLast.js +2 -0
  100. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/dropLastWhile.js +2 -0
  101. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/dropWhile.js +2 -0
  102. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/endsWith.js +2 -0
  103. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/entries.js +2 -0
  104. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/evolve.js +2 -0
  105. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/filter.js +2 -0
  106. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/find.js +2 -0
  107. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/findIndex.js +2 -0
  108. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/findLast.js +2 -0
  109. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/findLastIndex.js +2 -0
  110. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/first.js +2 -0
  111. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/firstBy.js +2 -0
  112. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/flat.js +2 -0
  113. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/flatMap.js +2 -0
  114. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/floor.js +2 -0
  115. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/forEach.js +2 -0
  116. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/forEachObj.js +2 -0
  117. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/fromEntries.js +2 -0
  118. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/fromKeys.js +2 -0
  119. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/funnel.js +2 -0
  120. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/groupBy.js +2 -0
  121. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/groupByProp.js +2 -0
  122. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/hasAtLeast.js +2 -0
  123. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/hasProp.js +2 -0
  124. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/hasSubObject.js +2 -0
  125. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/heap-C8XIujMa.js +2 -0
  126. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/identity.js +2 -0
  127. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/index.js +1 -0
  128. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/indexBy.js +2 -0
  129. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/intersection.js +2 -0
  130. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/intersectionWith.js +2 -0
  131. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/invert.js +2 -0
  132. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isArray.js +2 -0
  133. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isBigInt.js +2 -0
  134. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isBoolean.js +2 -0
  135. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isDate.js +2 -0
  136. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isDeepEqual.js +2 -0
  137. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isDefined.js +2 -0
  138. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isEmpty.js +2 -0
  139. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isEmptyish.js +2 -0
  140. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isError.js +2 -0
  141. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isFunction.js +2 -0
  142. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isIncludedIn.js +2 -0
  143. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isNonNull.js +2 -0
  144. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isNonNullish.js +2 -0
  145. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isNot.js +2 -0
  146. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isNullish.js +2 -0
  147. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isNumber.js +2 -0
  148. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isObjectType.js +2 -0
  149. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isPlainObject.js +2 -0
  150. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isPromise.js +2 -0
  151. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isShallowEqual.js +2 -0
  152. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isStrictEqual.js +2 -0
  153. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isString.js +2 -0
  154. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isSymbol.js +2 -0
  155. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/isTruthy.js +2 -0
  156. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/join.js +2 -0
  157. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/keys.js +2 -0
  158. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/last.js +2 -0
  159. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/lazyDataLastImpl-DtF3cihj.js +2 -0
  160. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/length.js +2 -0
  161. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/map.js +2 -0
  162. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mapKeys.js +2 -0
  163. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mapToObj.js +2 -0
  164. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mapValues.js +2 -0
  165. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mapWithFeedback.js +2 -0
  166. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mean.js +2 -0
  167. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/meanBy.js +2 -0
  168. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/median.js +2 -0
  169. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/merge.js +2 -0
  170. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mergeAll.js +2 -0
  171. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/mergeDeep.js +2 -0
  172. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/multiply.js +2 -0
  173. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/nthBy-DCn3SK1l.js +2 -0
  174. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/objOf.js +2 -0
  175. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/omit.js +2 -0
  176. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/omitBy.js +2 -0
  177. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/once.js +2 -0
  178. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/only.js +2 -0
  179. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/partialBind.js +2 -0
  180. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/partialLastBind.js +2 -0
  181. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/partition.js +2 -0
  182. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/pathOr.js +2 -0
  183. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/pick.js +2 -0
  184. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/pickBy.js +2 -0
  185. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/pipe.js +2 -0
  186. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/piped.js +2 -0
  187. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/product.js +2 -0
  188. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/prop.js +2 -0
  189. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/pullObject.js +2 -0
  190. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/purry.js +2 -0
  191. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/purryFromLazy-DELFL6Wm.js +2 -0
  192. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/purryOn-BIRClT9Q.js +2 -0
  193. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/purryOrderRules-BaB5mcHH.js +2 -0
  194. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/randomBigInt.js +2 -0
  195. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/randomInteger.js +2 -0
  196. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/randomString.js +2 -0
  197. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/range.js +2 -0
  198. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/rankBy.js +2 -0
  199. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/reduce.js +2 -0
  200. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/reverse.js +2 -0
  201. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/round.js +2 -0
  202. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sample.js +2 -0
  203. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/set.js +2 -0
  204. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/setPath.js +2 -0
  205. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/shuffle.js +2 -0
  206. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sliceString.js +2 -0
  207. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sort.js +2 -0
  208. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sortBy.js +2 -0
  209. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sortedIndex.js +2 -0
  210. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sortedIndexBy.js +2 -0
  211. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sortedIndexWith.js +2 -0
  212. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sortedLastIndex.js +2 -0
  213. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sortedLastIndexBy.js +2 -0
  214. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/splice.js +2 -0
  215. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/split.js +2 -0
  216. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/splitAt.js +2 -0
  217. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/splitWhen.js +2 -0
  218. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/startsWith.js +2 -0
  219. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/stringToPath.js +2 -0
  220. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/subtract.js +2 -0
  221. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sum.js +2 -0
  222. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/sumBy.js +2 -0
  223. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/swapInPlace-Bb1dcddf.js +2 -0
  224. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/swapIndices.js +2 -0
  225. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/swapProps.js +2 -0
  226. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/take.js +2 -0
  227. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/takeFirstBy.js +2 -0
  228. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/takeLast.js +2 -0
  229. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/takeLastWhile.js +2 -0
  230. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/takeWhile.js +2 -0
  231. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/tap.js +2 -0
  232. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/times.js +2 -0
  233. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toCamelCase.js +2 -0
  234. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toKebabCase.js +2 -0
  235. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toLowerCase.js +2 -0
  236. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toSingle-1Si1O88f.js +2 -0
  237. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toSnakeCase.js +2 -0
  238. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toTitleCase.js +2 -0
  239. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/toUpperCase.js +2 -0
  240. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/truncate.js +2 -0
  241. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/uncapitalize.js +2 -0
  242. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/unique.js +2 -0
  243. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/uniqueBy.js +2 -0
  244. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/uniqueWith.js +2 -0
  245. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/utilityEvaluators-Cb8x6-JZ.js +2 -0
  246. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/values.js +2 -0
  247. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/when.js +2 -0
  248. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/withPrecision-7nvi8hnb.js +2 -0
  249. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/words-OcG39_Hp.js +3 -0
  250. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/zip.js +2 -0
  251. package/.output/server/node_modules/.nitro/remeda@2.37.0/dist/zipWith.js +2 -0
  252. package/.output/server/node_modules/.nitro/remeda@2.37.0/package.json +93 -0
  253. package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/permessage-deflate.js +6 -6
  254. package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/receiver.js +54 -0
  255. package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/sender.js +6 -1
  256. package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/websocket-server.js +13 -5
  257. package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/websocket.js +20 -6
  258. package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/package.json +4 -3
  259. package/.output/server/node_modules/.nitro/ws@8.21.0/wrapper.mjs +21 -0
  260. package/.output/server/node_modules/@redocly/config/lib-esm/index.js +1 -0
  261. package/.output/server/node_modules/@redocly/config/package.json +20 -5
  262. package/.output/server/node_modules/@redocly/openapi-core/lib/bundle/bundle-document.js +25 -10
  263. package/.output/server/node_modules/@redocly/openapi-core/lib/bundle/bundle-visitor.js +32 -29
  264. package/.output/server/node_modules/@redocly/openapi-core/lib/bundle/bundle.js +2 -2
  265. package/.output/server/node_modules/@redocly/openapi-core/lib/config/all.js +5 -0
  266. package/.output/server/node_modules/@redocly/openapi-core/lib/config/bundle-extends.js +1 -0
  267. package/.output/server/node_modules/@redocly/openapi-core/lib/config/config-resolvers.js +20 -22
  268. package/.output/server/node_modules/@redocly/openapi-core/lib/config/config.js +19 -3
  269. package/.output/server/node_modules/@redocly/openapi-core/lib/config/group-assertion-rules.js +1 -1
  270. package/.output/server/node_modules/@redocly/openapi-core/lib/config/index.js +1 -0
  271. package/.output/server/node_modules/@redocly/openapi-core/lib/config/minimal.js +5 -0
  272. package/.output/server/node_modules/@redocly/openapi-core/lib/config/plugins-cache.js +100 -0
  273. package/.output/server/node_modules/@redocly/openapi-core/lib/config/recommended-strict.js +5 -0
  274. package/.output/server/node_modules/@redocly/openapi-core/lib/config/recommended.js +5 -0
  275. package/.output/server/node_modules/@redocly/openapi-core/lib/config/spec.js +5 -0
  276. package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/common/filters/filter-helper.js +0 -1
  277. package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/common/info-override.js +2 -1
  278. package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/oas2/index.js +1 -1
  279. package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/oas2/remove-unused-components.js +63 -38
  280. package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/oas3/index.js +2 -2
  281. package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/oas3/remove-unused-components.js +70 -43
  282. package/.output/server/node_modules/@redocly/openapi-core/lib/errors/yaml-parse-error.js +4 -0
  283. package/.output/server/node_modules/@redocly/openapi-core/lib/format/format.js +4 -2
  284. package/.output/server/node_modules/@redocly/openapi-core/lib/index.js +2 -2
  285. package/.output/server/node_modules/@redocly/openapi-core/lib/lint-entity.js +1 -1
  286. package/.output/server/node_modules/@redocly/openapi-core/lib/lint.js +1 -1
  287. package/.output/server/node_modules/@redocly/openapi-core/lib/logger.js +1 -0
  288. package/.output/server/node_modules/@redocly/openapi-core/lib/ref-utils.js +9 -6
  289. package/.output/server/node_modules/@redocly/openapi-core/lib/resolve.js +41 -27
  290. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/ajv.js +2 -1
  291. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/arazzo/index.js +2 -0
  292. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/async2/index.js +2 -0
  293. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/async3/index.js +2 -0
  294. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/common/assertions/asserts.js +12 -0
  295. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/common/assertions/utils.js +1 -0
  296. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/common/no-http-verbs-in-paths.js +3 -1
  297. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/common/no-mixed-number-range-constraints.js +19 -0
  298. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/common/no-required-schema-properties-undefined.js +41 -55
  299. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/oas3/index.js +2 -0
  300. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/oas3/no-unused-components.js +29 -7
  301. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/oas3/spec-discriminator-defaultMapping.js +39 -18
  302. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/openrpc/no-unused-components.js +1 -3
  303. package/.output/server/node_modules/@redocly/openapi-core/lib/rules/utils.js +10 -1
  304. package/.output/server/node_modules/@redocly/openapi-core/lib/types/index.js +4 -6
  305. package/.output/server/node_modules/@redocly/openapi-core/lib/types/json-schema-draft7.shared.js +1 -1
  306. package/.output/server/node_modules/@redocly/openapi-core/lib/types/oas2.js +2 -1
  307. package/.output/server/node_modules/@redocly/openapi-core/lib/types/oas3.js +1 -1
  308. package/.output/server/node_modules/@redocly/openapi-core/lib/types/oas3_2.js +9 -3
  309. package/.output/server/node_modules/@redocly/openapi-core/lib/types/redocly-yaml.js +120 -3
  310. package/.output/server/node_modules/@redocly/openapi-core/lib/utils/dequal.js +1 -0
  311. package/.output/server/node_modules/@redocly/openapi-core/lib/utils/is-not-empty-array.js +1 -1
  312. package/.output/server/node_modules/@redocly/openapi-core/lib/utils/is-plain-object.js +1 -0
  313. package/.output/server/node_modules/@redocly/openapi-core/lib/walk.js +28 -16
  314. package/.output/server/node_modules/@redocly/openapi-core/package.json +6 -6
  315. package/.output/server/node_modules/empathic/package.json +1 -6
  316. package/.output/server/node_modules/fflate/esm/index.mjs +87 -56
  317. package/.output/server/node_modules/fflate/package.json +12 -11
  318. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/base.js +2 -2
  319. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +60 -1
  320. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +25 -17
  321. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js +2 -2
  322. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/helpers.js +3 -2
  323. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js +17 -12
  324. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/runtime.js +25 -18
  325. package/.output/server/node_modules/handlebars/package.json +5 -6
  326. package/.output/server/node_modules/oas-normalize/package.json +4 -4
  327. package/.output/server/node_modules/semver/classes/range.js +7 -0
  328. package/.output/server/node_modules/semver/functions/truncate.js +48 -0
  329. package/.output/server/node_modules/semver/index.js +2 -0
  330. package/.output/server/node_modules/semver/internal/re.js +1 -1
  331. package/.output/server/node_modules/semver/package.json +3 -3
  332. package/.output/server/node_modules/semver/ranges/subset.js +2 -2
  333. package/.output/server/node_modules/tinyexec/dist/main.mjs +213 -467
  334. package/.output/server/node_modules/tinyexec/package.json +14 -15
  335. package/.output/server/package.json +14 -14
  336. package/package.json +23 -23
  337. package/.output/server/node_modules/.nitro/ws@8.19.0/wrapper.mjs +0 -8
  338. package/.output/server/node_modules/@redocly/config/lib/asyncapi-config-schema.js +0 -53
  339. package/.output/server/node_modules/@redocly/config/lib/common.js +0 -103
  340. package/.output/server/node_modules/@redocly/config/lib/constants/config.js +0 -17
  341. package/.output/server/node_modules/@redocly/config/lib/constants/entities.js +0 -58
  342. package/.output/server/node_modules/@redocly/config/lib/constants/enum.js +0 -6
  343. package/.output/server/node_modules/@redocly/config/lib/constants/shared.js +0 -22
  344. package/.output/server/node_modules/@redocly/config/lib/default-theme-config-schema.js +0 -56
  345. package/.output/server/node_modules/@redocly/config/lib/entities-catalog-config-schema.js +0 -186
  346. package/.output/server/node_modules/@redocly/config/lib/entities-catalog-entity-file-schema.js +0 -283
  347. package/.output/server/node_modules/@redocly/config/lib/ex-theme-config-schemas.js +0 -683
  348. package/.output/server/node_modules/@redocly/config/lib/feedback-config-schema.js +0 -88
  349. package/.output/server/node_modules/@redocly/config/lib/graphql-config-schema.js +0 -157
  350. package/.output/server/node_modules/@redocly/config/lib/index.js +0 -41
  351. package/.output/server/node_modules/@redocly/config/lib/product-override-schema.js +0 -43
  352. package/.output/server/node_modules/@redocly/config/lib/redoc-config-schema.js +0 -120
  353. package/.output/server/node_modules/@redocly/config/lib/reference-docs-config-schema.js +0 -518
  354. package/.output/server/node_modules/@redocly/config/lib/remove-property-recursively.js +0 -28
  355. package/.output/server/node_modules/@redocly/config/lib/reunite-config-schema.js +0 -103
  356. package/.output/server/node_modules/@redocly/config/lib/root-config-schema.js +0 -558
  357. package/.output/server/node_modules/@redocly/config/lib/scorecards-config-schema.js +0 -242
  358. package/.output/server/node_modules/@redocly/config/lib/types/api-functions-types.js +0 -3
  359. package/.output/server/node_modules/@redocly/config/lib/types/catalog-entity-types.js +0 -3
  360. package/.output/server/node_modules/@redocly/config/lib/types/code-walkthrough-types.js +0 -3
  361. package/.output/server/node_modules/@redocly/config/lib/types/config-types.js +0 -3
  362. package/.output/server/node_modules/@redocly/config/lib/types/index.js +0 -21
  363. package/.output/server/node_modules/@redocly/config/lib/types/portal-shared-types.js +0 -18
  364. package/.output/server/node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js +0 -22
  365. /package/.output/server/node_modules/{@readme/openapi-parser → .nitro/@readme/openapi-parser@6.0.0}/dist/chunk-IYQ77VVR.js +0 -0
  366. /package/.output/server/node_modules/{@readme/openapi-parser → .nitro/@readme/openapi-parser@6.0.0}/dist/index.js +0 -0
  367. /package/.output/server/node_modules/{@readme/openapi-parser → .nitro/@readme/openapi-parser@6.0.0}/dist/lib/assertions.js +0 -0
  368. /package/.output/server/node_modules/{@readme/openapi-parser → .nitro/@readme/openapi-parser@6.0.0}/package.json +0 -0
  369. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/ajv.js +0 -0
  370. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/codegen/code.js +0 -0
  371. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/codegen/index.js +0 -0
  372. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/codegen/scope.js +0 -0
  373. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/errors.js +0 -0
  374. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/index.js +0 -0
  375. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/names.js +0 -0
  376. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/ref_error.js +0 -0
  377. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/resolve.js +0 -0
  378. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/rules.js +0 -0
  379. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/util.js +0 -0
  380. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/applicability.js +0 -0
  381. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/boolSchema.js +0 -0
  382. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/dataType.js +0 -0
  383. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/defaults.js +0 -0
  384. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/index.js +0 -0
  385. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/keyword.js +0 -0
  386. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/compile/validate/subschema.js +0 -0
  387. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/core.js +0 -0
  388. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/refs/data.json +0 -0
  389. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/refs/json-schema-draft-07.json +0 -0
  390. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/runtime/equal.js +0 -0
  391. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/runtime/ucs2length.js +0 -0
  392. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/runtime/uri.js +0 -0
  393. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/runtime/validation_error.js +0 -0
  394. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/additionalItems.js +0 -0
  395. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/additionalProperties.js +0 -0
  396. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/allOf.js +0 -0
  397. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/anyOf.js +0 -0
  398. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/contains.js +0 -0
  399. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/dependencies.js +0 -0
  400. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/if.js +0 -0
  401. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/index.js +0 -0
  402. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/items.js +0 -0
  403. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/items2020.js +0 -0
  404. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/not.js +0 -0
  405. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/oneOf.js +0 -0
  406. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/patternProperties.js +0 -0
  407. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/prefixItems.js +0 -0
  408. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/properties.js +0 -0
  409. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/propertyNames.js +0 -0
  410. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/applicator/thenElse.js +0 -0
  411. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/code.js +0 -0
  412. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/core/id.js +0 -0
  413. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/core/index.js +0 -0
  414. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/core/ref.js +0 -0
  415. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/discriminator/index.js +0 -0
  416. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/discriminator/types.js +0 -0
  417. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/draft7.js +0 -0
  418. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/format/format.js +0 -0
  419. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/format/index.js +0 -0
  420. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/metadata.js +0 -0
  421. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/oasContext.js +0 -0
  422. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/const.js +0 -0
  423. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/enum.js +0 -0
  424. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/index.js +0 -0
  425. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/limitItems.js +0 -0
  426. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/limitLength.js +0 -0
  427. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/limitNumber.js +0 -0
  428. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/limitProperties.js +0 -0
  429. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/multipleOf.js +0 -0
  430. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/pattern.js +0 -0
  431. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/readOnly.js +0 -0
  432. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/required.js +0 -0
  433. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/uniqueItems.js +0 -0
  434. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.1}/dist/vocabularies/validation/writeOnly.js +0 -0
  435. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/2020.js +0 -0
  436. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/index.js +0 -0
  437. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/applicator.json +0 -0
  438. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/content.json +0 -0
  439. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/core.json +0 -0
  440. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/format-annotation.json +0 -0
  441. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/meta-data.json +0 -0
  442. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/unevaluated.json +0 -0
  443. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/meta/validation.json +0 -0
  444. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-2020-12/schema.json +0 -0
  445. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/refs/json-schema-draft-04.json +0 -0
  446. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/applicator/dependentSchemas.js +0 -0
  447. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/draft2020.js +0 -0
  448. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/draft4.js +0 -0
  449. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/dynamic/dynamicAnchor.js +0 -0
  450. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/dynamic/dynamicRef.js +0 -0
  451. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/dynamic/index.js +0 -0
  452. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/dynamic/recursiveAnchor.js +0 -0
  453. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/dynamic/recursiveRef.js +0 -0
  454. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/next.js +0 -0
  455. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/unevaluated/index.js +0 -0
  456. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/unevaluated/unevaluatedItems.js +0 -0
  457. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/unevaluated/unevaluatedProperties.js +0 -0
  458. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/validation/dependentRequired.js +0 -0
  459. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/validation/draft04/limitNumber.js +0 -0
  460. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/validation/draft04/limitNumberExclusive.js +0 -0
  461. /package/.output/server/node_modules/{@redocly/ajv → .nitro/@redocly/ajv@8.18.3}/dist/vocabularies/validation/limitContains.js +0 -0
  462. /package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/index.js +0 -0
  463. /package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/lib/scan.js +0 -0
  464. /package/.output/server/node_modules/.nitro/{picomatch@4.0.3 → picomatch@4.0.4}/lib/utils.js +0 -0
  465. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/add.js +0 -0
  466. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/addProp.js +0 -0
  467. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/allPass.js +0 -0
  468. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/anyPass.js +0 -0
  469. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/binarySearchCutoffIndex-CLQRwIY1.js +0 -0
  470. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/capitalize.js +0 -0
  471. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/ceil.js +0 -0
  472. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/chunk.js +0 -0
  473. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/clamp.js +0 -0
  474. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/clone.js +0 -0
  475. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/concat.js +0 -0
  476. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/conditional.js +0 -0
  477. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/constant.js +0 -0
  478. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/countBy.js +0 -0
  479. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/debounce.js +0 -0
  480. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/defaultTo.js +0 -0
  481. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/difference.js +0 -0
  482. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/differenceWith.js +0 -0
  483. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/divide.js +0 -0
  484. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/doNothing.js +0 -0
  485. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/drop.js +0 -0
  486. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/dropFirstBy.js +0 -0
  487. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/dropLast.js +0 -0
  488. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/dropLastWhile.js +0 -0
  489. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/dropWhile.js +0 -0
  490. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/endsWith.js +0 -0
  491. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/entries.js +0 -0
  492. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/evolve.js +0 -0
  493. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/filter.js +0 -0
  494. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/find.js +0 -0
  495. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/findIndex.js +0 -0
  496. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/findLast.js +0 -0
  497. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/findLastIndex.js +0 -0
  498. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/first.js +0 -0
  499. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/firstBy.js +0 -0
  500. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/flat.js +0 -0
  501. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/flatMap.js +0 -0
  502. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/floor.js +0 -0
  503. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/forEach.js +0 -0
  504. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/forEachObj.js +0 -0
  505. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/fromEntries.js +0 -0
  506. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/fromKeys.js +0 -0
  507. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/funnel.js +0 -0
  508. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/groupBy.js +0 -0
  509. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/groupByProp.js +0 -0
  510. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/hasAtLeast.js +0 -0
  511. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/hasSubObject.js +0 -0
  512. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/heap-OOe_F8_z.js +0 -0
  513. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/identity.js +0 -0
  514. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/index.js +0 -0
  515. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/indexBy.js +0 -0
  516. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/intersection.js +0 -0
  517. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/intersectionWith.js +0 -0
  518. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/invert.js +0 -0
  519. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isArray.js +0 -0
  520. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isBigInt.js +0 -0
  521. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isBoolean.js +0 -0
  522. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isDate.js +0 -0
  523. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isDeepEqual.js +0 -0
  524. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isDefined.js +0 -0
  525. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isEmpty.js +0 -0
  526. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isEmptyish.js +0 -0
  527. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isError.js +0 -0
  528. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isFunction.js +0 -0
  529. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isIncludedIn.js +0 -0
  530. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isNonNull.js +0 -0
  531. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isNonNullish.js +0 -0
  532. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isNot.js +0 -0
  533. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isNullish.js +0 -0
  534. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isNumber.js +0 -0
  535. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isObjectType.js +0 -0
  536. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isPlainObject.js +0 -0
  537. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isPromise.js +0 -0
  538. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isShallowEqual.js +0 -0
  539. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isStrictEqual.js +0 -0
  540. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isString.js +0 -0
  541. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isSymbol.js +0 -0
  542. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/isTruthy.js +0 -0
  543. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/join.js +0 -0
  544. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/keys.js +0 -0
  545. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/last.js +0 -0
  546. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/lazyDataLastImpl-DtF3cihj.js +0 -0
  547. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/length.js +0 -0
  548. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/map.js +0 -0
  549. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mapKeys.js +0 -0
  550. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mapToObj.js +0 -0
  551. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mapValues.js +0 -0
  552. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mapWithFeedback.js +0 -0
  553. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mean.js +0 -0
  554. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/meanBy.js +0 -0
  555. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/median.js +0 -0
  556. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/merge.js +0 -0
  557. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mergeAll.js +0 -0
  558. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/mergeDeep.js +0 -0
  559. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/multiply.js +0 -0
  560. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/nthBy.js +0 -0
  561. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/objOf.js +0 -0
  562. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/omit.js +0 -0
  563. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/omitBy.js +0 -0
  564. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/once.js +0 -0
  565. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/only.js +0 -0
  566. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/partialBind.js +0 -0
  567. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/partialLastBind.js +0 -0
  568. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/partition.js +0 -0
  569. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/pathOr.js +0 -0
  570. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/pick.js +0 -0
  571. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/pickBy.js +0 -0
  572. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/pipe.js +0 -0
  573. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/piped.js +0 -0
  574. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/product.js +0 -0
  575. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/prop.js +0 -0
  576. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/pullObject.js +0 -0
  577. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/purry.js +0 -0
  578. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/purryFromLazy-B-_oTxzb.js +0 -0
  579. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/purryOn-D4wFIFMT.js +0 -0
  580. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/purryOrderRules-4JgY6z4X.js +0 -0
  581. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/quickSelect-B4eZ0JeB.js +0 -0
  582. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/randomBigInt.js +0 -0
  583. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/randomInteger.js +0 -0
  584. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/randomString.js +0 -0
  585. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/range.js +0 -0
  586. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/rankBy.js +0 -0
  587. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/reduce.js +0 -0
  588. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/reverse.js +0 -0
  589. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/round.js +0 -0
  590. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sample.js +0 -0
  591. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/set.js +0 -0
  592. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/setPath.js +0 -0
  593. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/shuffle.js +0 -0
  594. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sliceString.js +0 -0
  595. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sort.js +0 -0
  596. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sortBy.js +0 -0
  597. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sortedIndex.js +0 -0
  598. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sortedIndexBy.js +0 -0
  599. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sortedIndexWith.js +0 -0
  600. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sortedLastIndex.js +0 -0
  601. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sortedLastIndexBy.js +0 -0
  602. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/splice.js +0 -0
  603. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/split.js +0 -0
  604. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/splitAt.js +0 -0
  605. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/splitWhen.js +0 -0
  606. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/startsWith.js +0 -0
  607. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/stringToPath.js +0 -0
  608. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/subtract.js +0 -0
  609. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sum.js +0 -0
  610. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/sumBy.js +0 -0
  611. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/swapInPlace-BrVgf3c3.js +0 -0
  612. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/swapIndices.js +0 -0
  613. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/swapProps.js +0 -0
  614. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/take.js +0 -0
  615. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/takeFirstBy.js +0 -0
  616. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/takeLast.js +0 -0
  617. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/takeLastWhile.js +0 -0
  618. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/takeWhile.js +0 -0
  619. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/tap.js +0 -0
  620. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/times.js +0 -0
  621. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toCamelCase.js +0 -0
  622. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toKebabCase.js +0 -0
  623. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toLowerCase.js +0 -0
  624. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toSingle-qs9PC5sP.js +0 -0
  625. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toSnakeCase.js +0 -0
  626. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toTitleCase.js +0 -0
  627. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/toUpperCase.js +0 -0
  628. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/truncate.js +0 -0
  629. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/uncapitalize.js +0 -0
  630. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/unique.js +0 -0
  631. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/uniqueBy.js +0 -0
  632. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/uniqueWith.js +0 -0
  633. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/utilityEvaluators-BQqW5Ir5.js +0 -0
  634. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/values.js +0 -0
  635. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/when.js +0 -0
  636. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/withPrecision-CDZ-Oor7.js +0 -0
  637. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/words-Dv8LmnKC.js +0 -0
  638. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/zip.js +0 -0
  639. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/dist/zipWith.js +0 -0
  640. /package/.output/server/node_modules/{remeda → .nitro/remeda@2.33.6}/package.json +0 -0
  641. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/buffer-util.js +0 -0
  642. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/constants.js +0 -0
  643. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/event-target.js +0 -0
  644. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/extension.js +0 -0
  645. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/limiter.js +0 -0
  646. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/stream.js +0 -0
  647. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/subprotocol.js +0 -0
  648. /package/.output/server/node_modules/.nitro/{ws@8.19.0 → ws@8.21.0}/lib/validation.js +0 -0
  649. /package/.output/server/node_modules/@redocly/openapi-core/lib/decorators/{common → oas3}/media-type-examples-override.js +0 -0
@@ -49,8 +49,9 @@ function moveHelperToHooks(instance, helperName, keepHelper) {
49
49
  if (instance.helpers[helperName]) {
50
50
  instance.hooks[helperName] = instance.helpers[helperName];
51
51
  if (!keepHelper) {
52
- delete instance.helpers[helperName];
52
+ // Using delete is slow
53
+ instance.helpers[helperName] = undefined;
53
54
  }
54
55
  }
55
56
  }
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFOztBQUVmLGNBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO0tBQzFDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIC8vIFVzaW5nIGRlbGV0ZSBpcyBzbG93XG4gICAgICBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -8,7 +8,7 @@ exports.resetLoggedProperties = resetLoggedProperties;
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
10
10
 
11
- var _createNewLookupObject = require('./create-new-lookup-object');
11
+ var _utils = require('../utils');
12
12
 
13
13
  var _logger = require('../logger');
14
14
 
@@ -17,23 +17,28 @@ var _logger2 = _interopRequireDefault(_logger);
17
17
  var loggedProperties = Object.create(null);
18
18
 
19
19
  function createProtoAccessControl(runtimeOptions) {
20
- var defaultMethodWhiteList = Object.create(null);
21
- defaultMethodWhiteList['constructor'] = false;
22
- defaultMethodWhiteList['__defineGetter__'] = false;
23
- defaultMethodWhiteList['__defineSetter__'] = false;
24
- defaultMethodWhiteList['__lookupGetter__'] = false;
25
-
26
- var defaultPropertyWhiteList = Object.create(null);
20
+ // Create an object with "null"-prototype to avoid truthy results on
21
+ // prototype properties.
22
+ var propertyWhiteList = Object.create(null);
27
23
  // eslint-disable-next-line no-proto
28
- defaultPropertyWhiteList['__proto__'] = false;
24
+ propertyWhiteList['__proto__'] = false;
25
+ _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);
26
+
27
+ var methodWhiteList = Object.create(null);
28
+ methodWhiteList['constructor'] = false;
29
+ methodWhiteList['__defineGetter__'] = false;
30
+ methodWhiteList['__defineSetter__'] = false;
31
+ methodWhiteList['__lookupGetter__'] = false;
32
+ methodWhiteList['__lookupSetter__'] = false;
33
+ _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);
29
34
 
30
35
  return {
31
36
  properties: {
32
- whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
37
+ whitelist: propertyWhiteList,
33
38
  defaultValue: runtimeOptions.allowProtoPropertiesByDefault
34
39
  },
35
40
  methods: {
36
- whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
41
+ whitelist: methodWhiteList,
37
42
  defaultValue: runtimeOptions.allowProtoMethodsByDefault
38
43
  }
39
44
  };
@@ -70,4 +75,4 @@ function resetLoggedProperties() {
70
75
  delete loggedProperties[propertyName];
71
76
  });
72
77
  }
73
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMvQyxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7QUFDdkQsTUFBSSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELHdCQUFzQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM5Qyx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7QUFFbkQsTUFBSSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVuRCwwQkFBd0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRTlDLFNBQU87QUFDTCxjQUFVLEVBQUU7QUFDVixlQUFTLEVBQUUsNkNBQ1Qsd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxzQkFBc0IsQ0FDdEM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQyw2QkFBNkI7S0FDM0Q7QUFDRCxXQUFPLEVBQUU7QUFDUCxlQUFTLEVBQUUsNkNBQ1Qsc0JBQXNCLEVBQ3RCLGNBQWMsQ0FBQyxtQkFBbUIsQ0FDbkM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQywwQkFBMEI7S0FDeEQ7R0FDRixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRTtBQUN4RSxNQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtBQUNoQyxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDakUsTUFBTTtBQUNMLFdBQU8sY0FBYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztHQUNwRTtDQUNGOztBQUVELFNBQVMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLFlBQVksRUFBRTtBQUMvRCxNQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLEVBQUU7QUFDbkUsV0FBTyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0dBQ25FO0FBQ0QsTUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO0FBQ3hELFdBQU8seUJBQXlCLENBQUMsWUFBWSxDQUFDO0dBQy9DO0FBQ0QsZ0NBQThCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDN0MsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFlBQVksRUFBRTtBQUNwRCxNQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRTtBQUMzQyxvQkFBZ0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEMsd0JBQU8sR0FBRyxDQUNSLE9BQU8sRUFDUCxpRUFBK0QsWUFBWSxvSUFDSCxvSEFDMkMsQ0FDcEgsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxxQkFBcUIsR0FBRztBQUN0QyxRQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsWUFBWSxFQUFJO0FBQ3BELFdBQU8sZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7R0FDdkMsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoicHJvdG8tYWNjZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTmV3TG9va3VwT2JqZWN0IH0gZnJvbSAnLi9jcmVhdGUtbmV3LWxvb2t1cC1vYmplY3QnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5jb25zdCBsb2dnZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChydW50aW1lT3B0aW9ucykge1xuICBsZXQgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ2NvbnN0cnVjdG9yJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lU2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2xvb2t1cEdldHRlcl9fJ10gPSBmYWxzZTtcblxuICBsZXQgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvXG4gIGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdFsnX19wcm90b19fJ10gPSBmYWxzZTtcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHdoaXRlbGlzdDogY3JlYXRlTmV3TG9va3VwT2JqZWN0KFxuICAgICAgICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b1Byb3BlcnRpZXNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9Qcm9wZXJ0aWVzQnlEZWZhdWx0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCxcbiAgICAgICAgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvTWV0aG9kc1xuICAgICAgKSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b01ldGhvZHNCeURlZmF1bHRcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN1bHRJc0FsbG93ZWQocmVzdWx0LCBwcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkge1xuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wubWV0aG9kcywgcHJvcGVydHlOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLnByb3BlcnRpZXMsIHByb3BlcnR5TmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZSwgcHJvcGVydHlOYW1lKSB7XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKSB7XG4gIGlmIChsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gIT09IHRydWUpIHtcbiAgICBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gPSB0cnVlO1xuICAgIGxvZ2dlci5sb2coXG4gICAgICAnZXJyb3InLFxuICAgICAgYEhhbmRsZWJhcnM6IEFjY2VzcyBoYXMgYmVlbiBkZW5pZWQgdG8gcmVzb2x2ZSB0aGUgcHJvcGVydHkgXCIke3Byb3BlcnR5TmFtZX1cIiBiZWNhdXNlIGl0IGlzIG5vdCBhbiBcIm93biBwcm9wZXJ0eVwiIG9mIGl0cyBwYXJlbnQuXFxuYCArXG4gICAgICAgIGBZb3UgY2FuIGFkZCBhIHJ1bnRpbWUgb3B0aW9uIHRvIGRpc2FibGUgdGhlIGNoZWNrIG9yIHRoaXMgd2FybmluZzpcXG5gICtcbiAgICAgICAgYFNlZSBodHRwczovL2hhbmRsZWJhcnNqcy5jb20vYXBpLXJlZmVyZW5jZS9ydW50aW1lLW9wdGlvbnMuaHRtbCNvcHRpb25zLXRvLWNvbnRyb2wtcHJvdG90eXBlLWFjY2VzcyBmb3IgZGV0YWlsc2BcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldExvZ2dlZFByb3BlcnRpZXMoKSB7XG4gIE9iamVjdC5rZXlzKGxvZ2dlZFByb3BlcnRpZXMpLmZvckVhY2gocHJvcGVydHlOYW1lID0+IHtcbiAgICBkZWxldGUgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdO1xuICB9KTtcbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FCQUF1QixVQUFVOztzQkFDZCxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7OztBQUd2RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRTlDLG1CQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxnQkFBTyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7QUFFakUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxpQkFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxpQkFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLGlCQUFlLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDNUMsaUJBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM1QyxpQkFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzVDLGdCQUFPLGVBQWUsRUFBRSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs7QUFFNUQsU0FBTztBQUNMLGNBQVUsRUFBRTtBQUNWLGVBQVMsRUFBRSxpQkFBaUI7QUFDNUIsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLGVBQWU7QUFDMUIsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLHdCQUFPLEdBQUcsQ0FDUixPQUFPLEVBQ1AsaUVBQStELFlBQVksb0lBQ0gsb0hBQzJDLENBQ3BILENBQUM7R0FDSDtDQUNGOztBQUVNLFNBQVMscUJBQXFCLEdBQUc7QUFDdEMsUUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFlBQVksRUFBSTtBQUNwRCxXQUFPLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0dBQ3ZDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InByb3RvLWFjY2Vzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgLy8gQ3JlYXRlIGFuIG9iamVjdCB3aXRoIFwibnVsbFwiLXByb3RvdHlwZSB0byBhdm9pZCB0cnV0aHkgcmVzdWx0cyBvblxuICAvLyBwcm90b3R5cGUgcHJvcGVydGllcy5cbiAgY29uc3QgcHJvcGVydHlXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG9cbiAgcHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG4gIGV4dGVuZChwcm9wZXJ0eVdoaXRlTGlzdCwgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvUHJvcGVydGllcyk7XG5cbiAgY29uc3QgbWV0aG9kV2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgbWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVTZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG4gIG1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBTZXR0ZXJfXyddID0gZmFsc2U7XG4gIGV4dGVuZChtZXRob2RXaGl0ZUxpc3QsIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHMpO1xuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgd2hpdGVsaXN0OiBwcm9wZXJ0eVdoaXRlTGlzdCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b1Byb3BlcnRpZXNCeURlZmF1bHRcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgIHdoaXRlbGlzdDogbWV0aG9kV2hpdGVMaXN0LFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvTWV0aG9kc0J5RGVmYXVsdFxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIHByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSB7XG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5tZXRob2RzLCBwcm9wZXJ0eU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wucHJvcGVydGllcywgcHJvcGVydHlOYW1lKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdID09PSB0cnVlO1xuICB9XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlO1xuICB9XG4gIGxvZ1VuZXhwZWNlZFByb3BlcnR5QWNjZXNzT25jZShwcm9wZXJ0eU5hbWUpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGxvZ1VuZXhwZWNlZFByb3BlcnR5QWNjZXNzT25jZShwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSAhPT0gdHJ1ZSkge1xuICAgIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSA9IHRydWU7XG4gICAgbG9nZ2VyLmxvZyhcbiAgICAgICdlcnJvcicsXG4gICAgICBgSGFuZGxlYmFyczogQWNjZXNzIGhhcyBiZWVuIGRlbmllZCB0byByZXNvbHZlIHRoZSBwcm9wZXJ0eSBcIiR7cHJvcGVydHlOYW1lfVwiIGJlY2F1c2UgaXQgaXMgbm90IGFuIFwib3duIHByb3BlcnR5XCIgb2YgaXRzIHBhcmVudC5cXG5gICtcbiAgICAgICAgYFlvdSBjYW4gYWRkIGEgcnVudGltZSBvcHRpb24gdG8gZGlzYWJsZSB0aGUgY2hlY2sgb3IgdGhpcyB3YXJuaW5nOlxcbmAgK1xuICAgICAgICBgU2VlIGh0dHBzOi8vaGFuZGxlYmFyc2pzLmNvbS9hcGktcmVmZXJlbmNlL3J1bnRpbWUtb3B0aW9ucy5odG1sI29wdGlvbnMtdG8tY29udHJvbC1wcm90b3R5cGUtYWNjZXNzIGZvciBkZXRhaWxzYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0TG9nZ2VkUHJvcGVydGllcygpIHtcbiAgT2JqZWN0LmtleXMobG9nZ2VkUHJvcGVydGllcykuZm9yRWFjaChwcm9wZXJ0eU5hbWUgPT4ge1xuICAgIGRlbGV0ZSBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07XG4gIH0pO1xufVxuIl19
@@ -76,16 +76,14 @@ function template(templateSpec, env) {
76
76
  }
77
77
  partial = env.VM.resolvePartial.call(this, partial, context, options);
78
78
 
79
- var extendedOptions = Utils.extend({}, options, {
80
- hooks: this.hooks,
81
- protoAccessControl: this.protoAccessControl
82
- });
79
+ options.hooks = this.hooks;
80
+ options.protoAccessControl = this.protoAccessControl;
83
81
 
84
- var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
82
+ var result = env.VM.invokePartial.call(this, partial, context, options);
85
83
 
86
84
  if (result == null && env.compile) {
87
85
  options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
88
- result = options.partials[options.name](context, extendedOptions);
86
+ result = options.partials[options.name](context, options);
89
87
  }
90
88
  if (result != null) {
91
89
  if (options.indent) {
@@ -134,7 +132,7 @@ function template(templateSpec, env) {
134
132
  for (var i = 0; i < len; i++) {
135
133
  var result = depths[i] && container.lookupProperty(depths[i], name);
136
134
  if (result != null) {
137
- return depths[i][name];
135
+ return result;
138
136
  }
139
137
  }
140
138
  },
@@ -216,8 +214,9 @@ function template(templateSpec, env) {
216
214
 
217
215
  ret._setup = function (options) {
218
216
  if (!options.partial) {
219
- var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
220
- wrapHelpersToPassLookupProperty(mergedHelpers, container);
217
+ var mergedHelpers = {};
218
+ addHelpers(mergedHelpers, env.helpers, container);
219
+ addHelpers(mergedHelpers, options.helpers, container);
221
220
  container.helpers = mergedHelpers;
222
221
 
223
222
  if (templateSpec.usePartial) {
@@ -283,21 +282,21 @@ function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, d
283
282
  function resolvePartial(partial, context, options) {
284
283
  if (!partial) {
285
284
  if (options.name === '@partial-block') {
286
- partial = options.data['partial-block'];
285
+ partial = lookupOwnProperty(options.data, 'partial-block');
287
286
  } else {
288
- partial = options.partials[options.name];
287
+ partial = lookupOwnProperty(options.partials, options.name);
289
288
  }
290
289
  } else if (!partial.call && !options.name) {
291
290
  // This is a dynamic partial that returned a string
292
291
  options.name = partial;
293
- partial = options.partials[partial];
292
+ partial = lookupOwnProperty(options.partials, partial);
294
293
  }
295
294
  return partial;
296
295
  }
297
296
 
298
297
  function invokePartial(partial, context, options) {
299
298
  // Use the current closure context to save the partial-block if this partial
300
- var currentPartialBlock = options.data && options.data['partial-block'];
299
+ var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');
301
300
  options.partial = true;
302
301
  if (options.ids) {
303
302
  options.data.contextPath = options.ids[0] || options.data.contextPath;
@@ -339,6 +338,12 @@ function noop() {
339
338
  return '';
340
339
  }
341
340
 
341
+ function lookupOwnProperty(obj, name) {
342
+ if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
343
+ return obj[name];
344
+ }
345
+ }
346
+
342
347
  function initData(context, data) {
343
348
  if (!data || !('root' in data)) {
344
349
  data = data ? _base.createFrame(data) : {};
@@ -356,9 +361,10 @@ function executeDecorators(fn, prog, container, depths, data, blockParams) {
356
361
  return prog;
357
362
  }
358
363
 
359
- function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
360
- Object.keys(mergedHelpers).forEach(function (helperName) {
361
- var helper = mergedHelpers[helperName];
364
+ function addHelpers(mergedHelpers, helpers, container) {
365
+ if (!helpers) return;
366
+ Object.keys(helpers).forEach(function (helperName) {
367
+ var helper = helpers[helperName];
362
368
  mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
363
369
  });
364
370
  }
@@ -366,7 +372,8 @@ function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
366
372
  function passLookupPropertyOption(helper, container) {
367
373
  var lookupProperty = container.lookupProperty;
368
374
  return _internalWrapHelper.wrapHelper(helper, function (options) {
369
- return Utils.extend({ lookupProperty: lookupProperty }, options);
375
+ options.lookupProperty = lookupProperty;
376
+ return options;
370
377
  });
371
378
  }
372
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QUFDbkMsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ2xELENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGV4dGVuZGVkT3B0aW9ucyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBwcm90b0FjY2Vzc0NvbnRyb2w6IHRoaXMucHJvdG9BY2Nlc3NDb250cm9sXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGV4dGVuZGVkT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBlbnZcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHBhcnRpYWwgJyArXG4gICAgICAgICAgb3B0aW9ucy5uYW1lICtcbiAgICAgICAgICAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUsIGxvYykge1xuICAgICAgaWYgKCFvYmogfHwgIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqLCB7XG4gICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5KG9iaiwgbmFtZSk7XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24ocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGRlcHRoc1tpXSAmJiBjb250YWluZXIubG9va3VwUHJvcGVydHkoZGVwdGhzW2ldLCBuYW1lKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBmbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRlY2xhcmVkQmxvY2tQYXJhbXMsXG4gICAgICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICAgICAgZGVwdGhzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2VJZk5lZWRlZDogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9XG4gICAgICAgICAgY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXVxuICAgICAgICAgICAgPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKVxuICAgICAgICAgICAgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgJycgK1xuICAgICAgICB0ZW1wbGF0ZVNwZWMubWFpbihcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnMoXG4gICAgICB0ZW1wbGF0ZVNwZWMubWFpbixcbiAgICAgIG1haW4sXG4gICAgICBjb250YWluZXIsXG4gICAgICBvcHRpb25zLmRlcHRocyB8fCBbXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGxldCBtZXJnZWRIZWxwZXJzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuaGVscGVycywgb3B0aW9ucy5oZWxwZXJzKTtcbiAgICAgIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IoXG4gICAgICBwcm9nLFxuICAgICAgcHJvcHMsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkZXB0aHMgJiYgZGVwdGhzWzBdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgIGxldCBoZWxwZXIgPSBtZXJnZWRIZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV0gPSBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFzc0xvb2t1cFByb3BlcnR5T3B0aW9uKGhlbHBlciwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gd3JhcEhlbHBlcihoZWxwZXIsIG9wdGlvbnMgPT4ge1xuICAgIHJldHVybiBVdGlscy5leHRlbmQoeyBsb29rdXBQcm9wZXJ0eSB9LCBvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=
379
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3pFLENBQUMsQ0FBQztDQUNKOztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUNuRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ2hELFNBQU8sK0JBQVcsTUFBTSxFQUFFLFVBQUEsT0FBTyxFQUFJO0FBQ25DLFdBQU8sQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBQ3hDLFdBQU8sT0FBTyxDQUFDO0dBQ2hCLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucy5ob29rcyA9IHRoaXMuaG9va3M7XG4gICAgb3B0aW9ucy5wcm90b0FjY2Vzc0NvbnRyb2wgPSB0aGlzLnByb3RvQWNjZXNzQ29udHJvbDtcblxuICAgIGxldCByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgIGlmIChvcHRpb25zLmluZGVudCkge1xuICAgICAgICBsZXQgbGluZXMgPSByZXN1bHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmICghbGluZXNbaV0gJiYgaSArIDEgPT09IGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxpbmVzW2ldID0gb3B0aW9ucy5pbmRlbnQgKyBsaW5lc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBsaW5lcy5qb2luKCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdUaGUgcGFydGlhbCAnICtcbiAgICAgICAgICBvcHRpb25zLm5hbWUgK1xuICAgICAgICAgICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSwgbG9jKSB7XG4gICAgICBpZiAoIW9iaiB8fCAhKG5hbWUgaW4gb2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmosIHtcbiAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250YWluZXIubG9va3VwUHJvcGVydHkob2JqLCBuYW1lKTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSB7fTtcbiAgICAgIGFkZEhlbHBlcnMobWVyZ2VkSGVscGVycywgZW52LmhlbHBlcnMsIGNvbnRhaW5lcik7XG4gICAgICBhZGRIZWxwZXJzKG1lcmdlZEhlbHBlcnMsIG9wdGlvbnMuaGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMuZGF0YSwgJ3BhcnRpYWwtYmxvY2snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMucGFydGlhbHMsIG9wdGlvbnMubmFtZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMucGFydGlhbHMsIHBhcnRpYWwpO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IGxvb2t1cE93blByb3BlcnR5KG9wdGlvbnMuZGF0YSwgJ3BhcnRpYWwtYmxvY2snKTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGxvb2t1cE93blByb3BlcnR5KG9iaiwgbmFtZSkge1xuICBpZiAob2JqICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIG5hbWUpKSB7XG4gICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKFxuICAgICAgcHJvZyxcbiAgICAgIHByb3BzLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgZGVwdGhzICYmIGRlcHRoc1swXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcHJvZztcbn1cblxuZnVuY3Rpb24gYWRkSGVscGVycyhtZXJnZWRIZWxwZXJzLCBoZWxwZXJzLCBjb250YWluZXIpIHtcbiAgaWYgKCFoZWxwZXJzKSByZXR1cm47XG4gIE9iamVjdC5rZXlzKGhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IGhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgb3B0aW9ucy5sb29rdXBQcm9wZXJ0eSA9IGxvb2t1cFByb3BlcnR5O1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9KTtcbn1cbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "handlebars",
3
3
  "barename": "handlebars",
4
- "version": "4.7.8",
4
+ "version": "4.7.9",
5
5
  "description": "Handlebars provides the power necessary to let you build semantic templates effectively with no frustration",
6
- "homepage": "https://www.handlebarsjs.com/",
6
+ "homepage": "https://handlebarsjs.com/",
7
7
  "keywords": [
8
8
  "handlebars",
9
9
  "mustache",
@@ -30,7 +30,7 @@
30
30
  "uglify-js": "^3.1.4"
31
31
  },
32
32
  "devDependencies": {
33
- "@playwright/test": "^1.17.1",
33
+ "@playwright/test": "1.44.1",
34
34
  "aws-sdk": "^2.1.49",
35
35
  "babel-loader": "^5.0.0",
36
36
  "babel-runtime": "^5.1.10",
@@ -39,7 +39,6 @@
39
39
  "chai-diff": "^1.0.1",
40
40
  "concurrently": "^5.0.0",
41
41
  "dirty-chai": "^2.0.1",
42
- "dtslint": "^0.5.5",
43
42
  "dustjs-linkedin": "^2.0.2",
44
43
  "eco": "~1.1.0-rc-3",
45
44
  "eslint": "^6.7.2",
@@ -47,7 +46,7 @@
47
46
  "eslint-plugin-compat": "^3.13.0",
48
47
  "eslint-plugin-es5": "^1.4.1",
49
48
  "fs-extra": "^8.1.0",
50
- "grunt": "^1.0.4",
49
+ "grunt": "1.5.3",
51
50
  "grunt-babel": "^5.0.0",
52
51
  "grunt-cli": "^1",
53
52
  "grunt-contrib-clean": "^1",
@@ -87,7 +86,7 @@
87
86
  "lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:types",
88
87
  "lint:eslint": "eslint --max-warnings 0 .",
89
88
  "lint:prettier": "prettier --check '**/*.js'",
90
- "lint:types": "dtslint types",
89
+ "lint:types": "tsc --noEmit --project types",
91
90
  "test": "npm run test:mocha",
92
91
  "test:mocha": "grunt build && grunt test",
93
92
  "test:browser": "playwright test --config tests/browser/playwright.config.js tests/browser/spec.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oas-normalize",
3
- "version": "16.0.2",
3
+ "version": "16.0.4",
4
4
  "description": "Tooling for converting, validating, and parsing OpenAPI, Swagger, and Postman API definitions",
5
5
  "type": "module",
6
6
  "exports": {
@@ -67,14 +67,14 @@
67
67
  },
68
68
  "license": "MIT",
69
69
  "dependencies": {
70
- "@readme/openapi-parser": "^6.0.0",
70
+ "@readme/openapi-parser": "^6.0.1",
71
71
  "@readme/postman-to-openapi": "^4.1.0",
72
72
  "js-yaml": "^4.1.0",
73
73
  "openapi-types": "^12.1.3",
74
74
  "swagger2openapi": "^7.0.8"
75
75
  },
76
76
  "devDependencies": {
77
- "@readme/oas-examples": "^8.1.1",
77
+ "@readme/oas-examples": "^8.2.1",
78
78
  "@types/js-yaml": "^4.0.9",
79
79
  "@types/swagger2openapi": "^7.0.4",
80
80
  "nock": "^14.0.11",
@@ -83,5 +83,5 @@
83
83
  "vitest": "^4.0.8"
84
84
  },
85
85
  "prettier": "@readme/standards/prettier",
86
- "gitHead": "a83f1a686b809e94da1ba197344b45254aeb393f"
86
+ "gitHead": "766e5550ef968794a0d275bda5c47631a927da04"
87
87
  }
@@ -98,6 +98,9 @@ class Range {
98
98
  }
99
99
 
100
100
  parseRange (range) {
101
+ // strip build metadata so it can't bleed into the version
102
+ range = range.replace(BUILDSTRIPRE, '')
103
+
101
104
  // memoize range parsing for performance.
102
105
  // this is a very hot path, and fully deterministic.
103
106
  const memoOpts =
@@ -223,6 +226,7 @@ const debug = require('../internal/debug')
223
226
  const SemVer = require('./semver')
224
227
  const {
225
228
  safeRe: re,
229
+ src,
226
230
  t,
227
231
  comparatorTrimReplace,
228
232
  tildeTrimReplace,
@@ -230,6 +234,9 @@ const {
230
234
  } = require('../internal/re')
231
235
  const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')
232
236
 
237
+ // unbounded global build-metadata stripper used by parseRange
238
+ const BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g')
239
+
233
240
  const isNullSet = c => c.value === '<0.0.0-0'
234
241
  const isAny = c => c.value === ''
235
242
 
@@ -0,0 +1,48 @@
1
+ 'use strict'
2
+
3
+ const parse = require('./parse')
4
+ const constants = require('../internal/constants')
5
+ const SemVer = require('../classes/semver')
6
+
7
+ const truncate = (version, truncation, options) => {
8
+ if (!constants.RELEASE_TYPES.includes(truncation)) {
9
+ return null
10
+ }
11
+
12
+ const clonedVersion = cloneInputVersion(version, options)
13
+ return clonedVersion && doTruncation(clonedVersion, truncation)
14
+ }
15
+
16
+ const cloneInputVersion = (version, options) => {
17
+ const versionStringToParse = (
18
+ version instanceof SemVer ? version.version : version
19
+ )
20
+
21
+ return parse(versionStringToParse, options)
22
+ }
23
+
24
+ const doTruncation = (version, truncation) => {
25
+ if (isPrerelease(truncation)) {
26
+ return version.version
27
+ }
28
+
29
+ version.prerelease = []
30
+
31
+ switch (truncation) {
32
+ case 'major':
33
+ version.minor = 0
34
+ version.patch = 0
35
+ break
36
+ case 'minor':
37
+ version.patch = 0
38
+ break
39
+ }
40
+
41
+ return version.format()
42
+ }
43
+
44
+ const isPrerelease = (type) => {
45
+ return type.startsWith('pre')
46
+ }
47
+
48
+ module.exports = truncate
@@ -28,6 +28,7 @@ const gte = require('./functions/gte')
28
28
  const lte = require('./functions/lte')
29
29
  const cmp = require('./functions/cmp')
30
30
  const coerce = require('./functions/coerce')
31
+ const truncate = require('./functions/truncate')
31
32
  const Comparator = require('./classes/comparator')
32
33
  const Range = require('./classes/range')
33
34
  const satisfies = require('./functions/satisfies')
@@ -66,6 +67,7 @@ module.exports = {
66
67
  lte,
67
68
  cmp,
68
69
  coerce,
70
+ truncate,
69
71
  Comparator,
70
72
  Range,
71
73
  satisfies,
@@ -136,7 +136,7 @@ createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
136
136
  createToken('GTLT', '((?:<|>)?=?)')
137
137
 
138
138
  // Something like "2.*" or "1.2.x".
139
- // Note that "x.x" is a valid xRange identifer, meaning "any version"
139
+ // Note that "x.x" is a valid xRange identifier, meaning "any version"
140
140
  // Only the first item is strictly required.
141
141
  createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
142
142
  createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semver",
3
- "version": "7.7.4",
3
+ "version": "7.8.1",
4
4
  "description": "The semantic version parser used by npm.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "devDependencies": {
17
17
  "@npmcli/eslint-config": "^6.0.0",
18
- "@npmcli/template-oss": "4.29.0",
18
+ "@npmcli/template-oss": "5.0.0",
19
19
  "benchmark": "^2.1.4",
20
20
  "tap": "^16.0.0"
21
21
  },
@@ -52,7 +52,7 @@
52
52
  "author": "GitHub Inc.",
53
53
  "templateOSS": {
54
54
  "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
55
- "version": "4.29.0",
55
+ "version": "5.0.0",
56
56
  "engines": ">=10",
57
57
  "distPaths": [
58
58
  "classes/",
@@ -174,7 +174,7 @@ const simpleSubset = (sub, dom, options) => {
174
174
  if (higher === c && higher !== gt) {
175
175
  return false
176
176
  }
177
- } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
177
+ } else if (gt.operator === '>=' && !c.test(gt.semver)) {
178
178
  return false
179
179
  }
180
180
  }
@@ -192,7 +192,7 @@ const simpleSubset = (sub, dom, options) => {
192
192
  if (lower === c && lower !== lt) {
193
193
  return false
194
194
  }
195
- } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
195
+ } else if (lt.operator === '<=' && !c.test(lt.semver)) {
196
196
  return false
197
197
  }
198
198
  }